cmu-rss-lab / rosdiscover

Apache License 2.0
15 stars 1 forks source link

Gazebo structure is different in ROS2 #114

Open schmerl opened 4 years ago

schmerl commented 4 years ago

In ROS2, plugins to gazebo seem to start their own nodes.

For example, in the turtlebot for ROS1, the topics added by the diff_drive plugin are added as /odom, /cmd_vel on the node gazebo.

In ROS2, when loading the diff_drive plugin, a new node is created: /turtlebot3_diff_drive, and its info is:

/turtlebot3_diff_drive
  Subscribers:
    /clock: rosgraph_msgs/msg/Clock
    /cmd_vel: geometry_msgs/msg/Twist
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /odom: nav_msgs/msg/Odometry
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /tf: tf2_msgs/msg/TFMessage
  Service Servers:
    /turtlebot3_diff_drive/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /turtlebot3_diff_drive/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /turtlebot3_diff_drive/get_parameters: rcl_interfaces/srv/GetParameters
    /turtlebot3_diff_drive/list_parameters: rcl_interfaces/srv/ListParameters
    /turtlebot3_diff_drive/set_parameters: rcl_interfaces/srv/SetParameters
    /turtlebot3_diff_drive/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients:

So, loading a gazebo plugin now causes the creation of a new nodes. Passing an existing NodeContext into the model won't work now.

schmerl commented 4 years ago

@ChrisTimperley We need to discuss how to implement this now, and migrate gazebo in ROSDiscover to use a (more sophisticated) plugin mechanism.

schmerl commented 4 years ago

P.S. I think this might also be an issue with nav2.