Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Excerpt
hiddentrue

Usage patterns with rclpy.

...

Expand
titleCallback Groups

Currently exist two groups, MutuallyExclusive and Reentrant. The former is for making sure that members in the group never run at the same time as each other (even themselves) and the latter for permitting freedom to run concurrently (so long as you have a MultiThreadedExecutor). William has a great table for describing the permutations here.

...

In order of criticality...

  • Action Server Exceptions: hang and only report somewhat unusefully on CTRL-C (rclpy#296)
  • Contexts: is there a situtation when you would not want to use the default global context?
  • Latching: See also https://answers.ros.org/question/305795/ros2-latching/, also https://github.com/ros2/ros2/wiki/About-Quality-of-Service-Settings and https://github.com/ros2/ros2/issues/464 (open: latching needs decision)
      bouncy - connection is made (ros2 topic info) but no message coming through, no matter who is up and ready firstlooks like this is working on master!
    • ros2 topic echo has no way of setting it's own profile to be latched (TRANSIENT_LOCAL)
  • Unicode: strings are intended to support UTF-8 (design/WideStrings.md), but String.msg is only ASCII right now (refer to discussion in ros2cli#176)
  • Oneshot Timers: no implementation (rclpy #186), should be easy to implement, but how does anything know about the callback??? (rclpy/node.py#L302, rclpy/timer.py#l23, rclcpp/timer.hpp)
  • Non-Wall Timers: no implementation (rclpy/timer.py#L21)
  • Non-Wall Sleep: no implementation
  • Rate: no rclpy implementation (rclpy #186)
  • Node Shutdown Hooks: Seems to be missing, no workaround for it right now (rclpy #244)
  • Ros2Topic String Formatting: Ros1 formatted strings to stdout complete with newlines, shell color control sequences, etc.
    • Used this mechanism for writing descriptions/information on latched one-shot publishers (makes it very easy for someone to inspect and understand the runtime).
  • Ros2Service Not Formatting at all: doesn't even format line by line like ros2topic does
  • Coloured Log Levels: on stdout for warning/error using, e.g. node.get_logger().error("...")
  • Home: how to discover where 'home' is? e.g. ROS_HOME || rospkg.get_ros_home()
  • Resolved Names: convenience ROS1 style publisher.resolved_name instead of having to discover via 

...

Other (Non-Rclpy)

  • Overlays (sourcing install/setup.bash) no longer remember their dependent underlays? Have to source each and every one manually.....
    • This is the difference between install/setup.bash and install/local_setup.basht (there is a comment in the top of each file)