Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port gazebo_ros_pkgs to ROS 2.0 #512

Open
j-rivero opened this issue Nov 29, 2016 · 25 comments

Comments

@j-rivero
Copy link
Contributor

commented Nov 29, 2016

Interest into porting gazebo_ros_pkgs to ROS 2.0 is starting to appear within the ROS Community, this post tries to server a tracker for suggestion, status and discussions on how to do it.

Update 29 Nov 2016
The ROS team currently warns about implementations at this point since the API is still unstable an future changes could require a big amount of work to update the code. Even with API instability a possible suggestion to start the works could be some time after the Beta1 (release planned in the next weeks), late January if the feedback regarding to the Beta1 is good at that moment.

Update 2nd Jun 2018
The branch ros2 is ready in this repository to start merging changes related to port the code to ROS2.

Update 19 July 2018
Written by @ironmig
Some packages have been ported and plans/designs for the remaining features will be tracked on this wiki page. If you are interested in gazebo_ros_pkgs in ROS2, please read the plans on that page and comment if you have other ideas or approve.

Update 19 July 2018
Written by @chapulina

📈 Status

Package Status
gazebo_dev ✔️ #770
gazebo_msgs ✔️ #769
gazebo_plugins
gazebo_ros_block_laser ⚠️ Deprecated, use ray_sensor
gazebo_ros_bumper ✔️ #943
gazebo_ros_camera ✔️ #827
gazebo_ros_camera_utils ✔️ #827
gazebo_ros_depth_camera ✔️ #932
gazebo_ros_diff_drive ✔️ #806
gazebo_ros_elevator ✔️ #945
gazebo_ros_f3d ✔️ #921
gazebo_ros_force ✔️ #784
gazebo_ros_ft_sensor ✔️ #921
gazebo_ros_gpu_laser ⚠️ Deprecated, use ray_sensor
gazebo_ros_hand_of_god ✔️ #957
gazebo_ros_harness ✔️ #944
gazebo_ros_imu ⚠️ Deprecated, use imu_sensor
gazebo_ros_imu_sensor ✔️ #793
gazebo_ros_joint_pose_trajectory ✔️ #955
gazebo_ros_joint_state_publisher ✔️ #795
gazebo_ros_joint_trajectory ⚠️ Deprecated, use joint_pose_trajectory
gazebo_ros_laser ⚠️ Deprecated, use ray_sensor
gazebo_ros_multicamera ✔️ #939
gazebo_ros_openni_kinect ⚠️ Deprecated, use depth_camera
gazebo_ros_p3d ✔️ #845
gazebo_ros_planar_move ✔️ #958
gazebo_ros_projector ✔️ #956
gazebo_ros_prosilica ⚠️ Deprecated, use camera
gazebo_ros_range ⚠️ Deprecated, use ray_sensor
gazebo_ros_skid_steer_drive ✔️ #927
🆕 gazebo_ros_ray_sensor ✔️ #785
gazebo_ros_template ✔️ #783
gazebo_ros_tricycle_drive ✔️ #917
gazebo_ros_triggered_camera ✔️ #827
gazebo_ros_triggered_multicamera ✔️ #939
gazebo_ros_utils ⚠️ Deprecated
gazebo_ros_vacuum_gripper ✔️ #960
gazebo_ros_video ✔️ #899
MultiCameraPlugin ✔️ #939
PubQueue
vision_reconfigure
gazebo_model ⚠️ Deprecated, use spawn_entity
set_pose
set_wrench
gazebo_ros
🆕 node ✔️ #771
🆕 executor ✔️ #771
🆕 conversions ✔️ #784
🆕 utils ✔️ #787
gazebo_ros_api_plugin
├── 🆕 gazebo_ros_init ✔️ #776 #794 #866
├── 🆕 gazebo_ros_factory ✔️ #808
├── 🆕 gazebo_ros_properties 🚧 #868 #973
├── 🆕 gazebo_ros_state ✔️ #839 #968 #969
├── 🆕 gazebo_ros_force_system ✔️ #941
└── 🆕 ...
gazebo_ros_paths_plugin ✔️ #925
gazebo_interface.py
elevator_world.launch ⚠️ Deprecated, use gazebo.launch
empty_world.launch(.py) ✔️ #776 (args missing due to ros2/launch#107)
mud_world.launch ⚠️ Deprecated, use gazebo.launch
range_world.launch ⚠️ Deprecated, use gazebo.launch
rubble_world.launch ⚠️ Deprecated, use gazebo.launch
shapes_world.launch ⚠️ Deprecated, use gazebo.launch
willowgarage_world.launch ⚠️ Deprecated, use gazebo.launch
debug ✔️ #962
gazebo ✔️ #962
gdbrun ✔️ #962
gzclient ✔️ #962
gzserver ✔️ #962
libcommon.sh ⚠️ Deprecated
perf ✔️ #962
spawn_model ✔️ #948
gazebo_ros_control 🚫 Blocked by ros-controls/ros2_control#1
default_robot_hw_sim
gazebo_ros_control_plugin
robot_hw_sim
gazebo_ros_pkgs ✔️ #777
vdiluoffo added a commit to vdiluoffo/gazebo_ros_pkgs that referenced this issue Jan 9, 2017
vdiluoffo added a commit to vdiluoffo/gazebo_ros_pkgs that referenced this issue Jan 9, 2017
vdiluoffo added a commit to vdiluoffo/gazebo_ros_pkgs that referenced this issue Jan 9, 2017
vdiluoffo added a commit to vdiluoffo/gazebo_ros_pkgs that referenced this issue Jan 9, 2017
vdiluoffo added a commit to vdiluoffo/gazebo_ros_pkgs that referenced this issue Jan 9, 2017
@richmattes

This comment has been minimized.

Copy link

commented Aug 17, 2017

ROS 2 1.0 is currently slated to be released sometime before the beginning of next year - is gazebo working towards support in that timeframe? There's been some interest in ROS 2 support for gazebo early next year, but I don't see it anywhere on gazebo's roadmap.

CC @bponsler

@j-rivero

This comment has been minimized.

Copy link
Contributor Author

commented Aug 17, 2017

ROS 2 1.0 is currently slated to be released sometime before the beginning of next year - is gazebo working towards support in that timeframe? There's been some interest in ROS 2 support for gazebo early next year, but I don't see it anywhere on gazebo's roadmap.

As far as I know, there is no current plan at this moment to port gazebo_ros_pkgs to ROS 2 by the OSRF although some people, as you mention, has been doing some code to support it (the friends of Erle might have something working cc @vmayoral) . I did not receive any notification during these last months but many people tend far from the public scope.

@vmayoral

This comment has been minimized.

Copy link

commented Aug 18, 2017

Hello @j-rivero! We're indeed interested in this feature but haven't put time into it just yet. For now, all the tests we've done have made use of the bridges.

@j-rivero

This comment has been minimized.

Copy link
Contributor Author

commented Jun 2, 2018

Update: the branch ros2 (based on kinetic-devel) will be used to import the changes related to ROS2 port. The first pull request is #735.

@kev-the-dev

This comment has been minimized.

Copy link
Collaborator

commented Jul 10, 2018

As nothing has been merged in yet, I'm gonna reset ros2 to the latest melodic-devel

@kev-the-dev

This comment has been minimized.

Copy link
Collaborator

commented Jul 11, 2018

I've been doing some work on this and have some ideas for the design I'd like to put to the community for discussion:

  1. Port gazebo_msgs to ROS2 (see #735)
    • Add headers to messages #535 that we have been reluctant to change for API compatibility
  2. Create a base class (GazeboRosNode?), which inherits from rclcpp::Node but also adds itself to a global executor (callback threads) to provide parity to the ROS1 implementation where plugins don't worry about spinning.
    • GazeboRosNode can optionally be given an SDF element for construction (like for Model/World plugins), which will configure the Node based on the sdf. This will address the confusion over namespaces and lack of remapping functionality in the current repo
     <!-- Optional configurations for a plugin's Node -->
     <ros>
       <!-- Name of node, only use if plugin is one node -->
       <node_name></node_name>
       <!-- Namespace of the node -->
       <namespace></namespace>
       <!-- Command line arguments sent to Node's contructor for remappings -->
       <arguments>
          <argument>my_topic:=new_topic</argument>
          <argument>__name:=super_cool_node</argument>
       </arguments>
       <!-- Initial ROS params set for node -->
       <parameters>
          <parameter name="max_velocity">55</parameter>
          <parameter name="publish_odom">True</parameter>
       </parameters>
     </ros>
    
  3. Port gazebo_ros_api plugin (the one that does ModelStates, spawn model, /clock, etc), and initializes ROS
  4. Port gazebo_ros_paths_plugin (which adds ROS packages to the Gazebo paths for models/textures/etc)
  5. Port the scripts/launch files in gazebo_ros used to open gazebo with the above ROS plugins
  6. Port the other most used plugins (Camera, IMU, laser, DepthCamera)
    • Note the Camera plugins will be blocked until image_transport is ported to ROS2
  7. As plugins are ported over, follow ROS2 style guidelines including doxygen style commenting
  8. Lowest priority is porting gazebo_ros_control, as ros_control is not present in ROS2

Some early work on this is on my branch (beware: debug prints, uncommented sections, etc).

@kev-the-dev

This comment has been minimized.

Copy link
Collaborator

commented Jul 13, 2018

Implementations for (1) and (2), besides for the SDF configuration, are in #769

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Jul 19, 2018

The design is being placed on this wiki page, comments are welcome in this issue. We'll keep the status table above up-to-date.

@dhood dhood added the ros2 label Aug 22, 2018

@mkhansen-intel

This comment has been minimized.

Copy link

commented Oct 9, 2018

Is there an update on this, it looks like ros2_control is done, (ros-controls/ros2_control#1) so gazebo_ros_control should be unblocked, right?

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Oct 9, 2018

Is there an update on this, it looks like ros2_control is done, (ros-controls/ros2_control#1) so gazebo_ros_control should be unblocked, right?

There's currently no plan to port gazebo_ros_control. A pre-requisite would be to get ros_control into ros2.repos.

@bmagyar

This comment has been minimized.

Copy link
Contributor

commented Nov 12, 2018

I currently don't have time to maintain ros2_control. I'd be happy to welcome a maintainer onboard for moving the current proof of concept forward which should then enable proper gazebo integration.

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Dec 8, 2018

Added a wiki page with a few guidelines for peeps interested in helping migrating plugins to ROS 2: https://github.com/ros-simulation/gazebo_ros_pkgs/wiki/ROS-2-migration-contribution-guide

@DhruvKoolRajamani

This comment has been minimized.

Copy link

commented Mar 12, 2019

Redirected here from the GSoC osrf Wiki. Which plugins are still waiting to get ported?

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Mar 12, 2019

@DhruvKoolRajamani , I just updated this issue above, as well as #779. Thanks for the interest!

@mkhansen-intel

This comment has been minimized.

Copy link

commented Mar 18, 2019

Is there a status update on gazebo_ros_depth_camera? It doesn't look from this issue like it has been ported yet. If it has, great I'd like to use it.

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Mar 18, 2019

Is there a status update on gazebo_ros_depth_camera?

No work has started on it yet, AFAIK.

@mkhansen-intel

This comment has been minimized.

Copy link

commented Mar 19, 2019

No work has started on it yet, AFAIK.

Any ETA on when?

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Mar 19, 2019

Any ETA on when?

There's no one assigned to work on this right now. We may get a GSoC intern during the summer, but I could also review a PR if someone else works on it before that.

@shiveshkhaitan

This comment has been minimized.

Copy link

commented Mar 20, 2019

I would like to work on this. Will try to get it done as soon as possible.

@bmagyar

This comment has been minimized.

Copy link
Contributor

commented Mar 20, 2019

I can't really dedicate any time to porting the ros_control plugin but would be happy to review one!

@Yeshasvitvs

This comment has been minimized.

Copy link

commented Mar 30, 2019

@chapulina which is the current stable branch for gazebo_ros_pkgs for ros2 crystal?

I tried the branches crystal and ros2 as documented here against ros2 master but the gazebo_ros_pkgs could not be build.

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Mar 31, 2019

Crystal:

Dashing:

  • ros2.repos master branch + these extra repos (which include gazebo_ros_pkgs's ros2 branch)
@Yeshasvitvs

This comment has been minimized.

Copy link

commented Mar 31, 2019

@chapulina Thanks for the update.
It was a bit unclear with the current documentation available. I created installation notes that may help developers of GsoC2019 to get started with setting up the code base. Please review it and let me know if you notice some mistakes.

@chapulina

This comment has been minimized.

Copy link
Contributor

commented Apr 1, 2019

@Yeshasvitvs , that all looks right for me, thanks for taking the time to write it. You're welcome to add the detailed instructions to the installation tutorial.

@Yeshasvitvs

This comment has been minimized.

Copy link

commented Apr 1, 2019

@chapulina I opened a PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
You can’t perform that action at this time.