Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Papyrus/customizations/robotics/faq"

(Q: I've opened a CDT editor but it does not synchronize)
(Frequently asked questions)
Line 10: Line 10:
  
 
=== Q: Which ROS version is supported? ===
 
=== Q: Which ROS version is supported? ===
A: ROS2 is supported. we recommend to use ROS2 eloquent.
+
A: ROS2 is supported. We recommend to use ROS2 eloquent.
  
 
=== Q: Is it possible to use existing ROS2 packages and service definitions? ===
 
=== Q: Is it possible to use existing ROS2 packages and service definitions? ===
A: Yes, see [[Papyrus/customizations/robotics/reverse|ROS2 reverse]]
+
A: Yes, Papyrus for Robotics comes with a library of all base service definitions. You can find them via "registered pathmaps" when you create a port. If you want to obtain existing definition from your ROS2 projects, see [[Papyrus/customizations/robotics/reverse|ROS2 reverse]]
 +
 
 +
=== Q: During code generation, I get an error message that a handler is missing ===
 +
A: Handlers are callback functions that are invoked, if a message or response is received. For instance, a "Send" server port will invoke a handler, when a communication object is received. In order to associate a handler, add an activity, link the activity with the component-port via a connection to a port on the activity, and add a function to the activity. 
 +
 
 +
=== Q: When editing a function, I only see its name and description (not the code) ===
 +
A: there are two tabs at the bottom of the window, the "ID" and the "Function" tab. Activate the function tab in order to edit the code and kind of the function.
  
 
=== Q: I've opened a CDT editor but it does not synchronize ===
 
=== Q: I've opened a CDT editor but it does not synchronize ===
Line 21: Line 27:
  
 
=== Q: I've modeled a ROS2 component, generated code, but the component does not seem to start ===
 
=== Q: I've modeled a ROS2 component, generated code, but the component does not seem to start ===
A: All components are mapped to ROS2 life-cycle nodes. Therefore, they need to be configured and activated. Please find a bash script starting an application in the shell script below.
+
A: All components are mapped to ROS2 life-cycle nodes. Therefore, they need to be configured and activated. Please find a bash script starting an application in the shell script below. For instance, to start (and activate) the "subscriber" component of the shipped publish-subscribe  example, use
 +
 
 +
  ros2 launch publishsubscribe activate.subscriber.py
 +
 
  
 
=== Q: Reverse from file does not work ===
 
=== Q: Reverse from file does not work ===
 
A: Be sure that the CDT project hosting a ROS2 package is configured in a way that at least the standard includes are found (e.g. add /opt/ros/eloquent to the include directories).
 
A: Be sure that the CDT project hosting a ROS2 package is configured in a way that at least the standard includes are found (e.g. add /opt/ros/eloquent to the include directories).
  
=== Q: I cannot my service definitions during port creation ===
+
=== Q: I cannot find my service definitions during port creation ===
 
A: Make sure you understand [[Papyrus/customizations/robotics/references|references]].
 
A: Make sure you understand [[Papyrus/customizations/robotics/references|references]].
  
 
=== Q: I'm starting a client and a server (or a publisher and a subscriber), but they do not communicate ===
 
=== Q: I'm starting a client and a server (or a publisher and a subscriber), but they do not communicate ===
A: In order to achieve reusability and loose coupling, the components of a system are defined independently. While a publisher and a subscriber have to use the same service definition in order to communicate, they might use different port names (that are mapped to topic names). When two ports are connected in the system assembly, re-mappings assure that both can communication. These mappings are configured via the generated launch scripts, but of course not used, if a node is directly started via "ros2 run"
+
A: In order to achieve reusability and loose coupling, the components of a system are defined independently. While a publisher and a subscriber have to use the same service definition in order to communicate, they might use different port names (that are mapped to topic names). When two ports are connected in the system assembly, re-mappings assure that both can communication. These mappings are configured via the generated launch scripts, but of course not used, if a node is directly started via "ros2 run". Use the generated launch scripts instead.
 
+
The bash script shown in the sequel starts the client of the client server example, taking care of the required re-mappings.
+
 
+
startClient shell script
+
  echo ros2 run clientserver AddClient
+
  set -m
+
  ros2 run clientserver AddClient useAdd:=server/AddRequest/addSvc &
+
  sleep 1
+
  ros2 lifecycle set AddClient configure
+
  ros2 lifecycle set AddClient activate
+
  fg
+

Revision as of 06:13, 28 April 2020


Frequently asked questions

Q: How can I install example models?

A: Use File -> NEW -> Examples. Then choose "Robotic examples" in the Papyrus category.

Q: How do I reference other models, notably service definitions in other models?

A: See reference handling.

Q: Which ROS version is supported?

A: ROS2 is supported. We recommend to use ROS2 eloquent.

Q: Is it possible to use existing ROS2 packages and service definitions?

A: Yes, Papyrus for Robotics comes with a library of all base service definitions. You can find them via "registered pathmaps" when you create a port. If you want to obtain existing definition from your ROS2 projects, see ROS2 reverse

Q: During code generation, I get an error message that a handler is missing

A: Handlers are callback functions that are invoked, if a message or response is received. For instance, a "Send" server port will invoke a handler, when a communication object is received. In order to associate a handler, add an activity, link the activity with the component-port via a connection to a port on the activity, and add a function to the activity.

Q: When editing a function, I only see its name and description (not the code)

A: there are two tabs at the bottom of the window, the "ID" and the "Function" tab. Activate the function tab in order to edit the code and kind of the function.

Q: I've opened a CDT editor but it does not synchronize

A: You need to open a specific variant of the CDT editor that synchronizes with the model. This editor can be invoked via the context menu from the diagram (select the component or an activity). The synchronizing status is indicated by a side-bar on the left of the editor. If it is green, the editor is synchronizing, if it is orange, it has stopped synchronizing. The latter happens if Eclipse is restarted or the associated model editor is closed by the user.

If a "normal" CDT editor on the generated file is currently open, it will get activated instead of opening the synchronizing editor. You can recognize this situation by the absence of the orange or green side-bar. Close the normal CDT editor first, if you need synchronization.

Q: I've modeled a ROS2 component, generated code, but the component does not seem to start

A: All components are mapped to ROS2 life-cycle nodes. Therefore, they need to be configured and activated. Please find a bash script starting an application in the shell script below. For instance, to start (and activate) the "subscriber" component of the shipped publish-subscribe example, use

 ros2 launch publishsubscribe activate.subscriber.py


Q: Reverse from file does not work

A: Be sure that the CDT project hosting a ROS2 package is configured in a way that at least the standard includes are found (e.g. add /opt/ros/eloquent to the include directories).

Q: I cannot find my service definitions during port creation

A: Make sure you understand references.

Q: I'm starting a client and a server (or a publisher and a subscriber), but they do not communicate

A: In order to achieve reusability and loose coupling, the components of a system are defined independently. While a publisher and a subscriber have to use the same service definition in order to communicate, they might use different port names (that are mapped to topic names). When two ports are connected in the system assembly, re-mappings assure that both can communication. These mappings are configured via the generated launch scripts, but of course not used, if a node is directly started via "ros2 run". Use the generated launch scripts instead.

Back to the top