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

Closed
j-rivero opened this issue Nov 29, 2016 · 31 comments
Closed

Port gazebo_ros_pkgs to ROS 2.0 #512

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

Comments

@j-rivero
Copy link
Contributor

j-rivero 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 https://github.com/ros-simulation/gazebo_ros2_control
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
Copy link

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
Copy link
Contributor Author

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
Copy link

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
Copy link
Contributor Author

j-rivero 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
Copy link
Collaborator

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

@kev-the-dev
Copy link
Collaborator

kev-the-dev 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 gazebo_msgs: converted messages to ros2 format. #735)
  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
Copy link
Collaborator

kev-the-dev commented Jul 13, 2018

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

@chapulina
Copy link
Contributor

chapulina 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
@mkhansenbot
Copy link

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
Copy link
Contributor

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
Copy link
Contributor

bmagyar 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
Copy link
Contributor

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
Copy link

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

@chapulina
Copy link
Contributor

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

@mkhansenbot
Copy link

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
Copy link
Contributor

Is there a status update on gazebo_ros_depth_camera?

No work has started on it yet, AFAIK.

@mkhansenbot
Copy link

No work has started on it yet, AFAIK.

Any ETA on when?

@chapulina
Copy link
Contributor

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
Copy link

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

@bmagyar
Copy link
Contributor

bmagyar commented Mar 20, 2019

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

@yeshasvitirupachuri
Copy link

yeshasvitirupachuri 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
Copy link
Contributor

Crystal:

Dashing:

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

@yeshasvitirupachuri
Copy link

@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
Copy link
Contributor

@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.

@yeshasvitirupachuri
Copy link

@chapulina I opened a PR

@shivaang12
Copy link

@chapulina I read some where that gazebo/get_world_properties service will be ported in gazebo_ros_properties. But haven't seen this service in eloquent branch. Can you shed some light on it's update? Also, curious to know why gazebo_ros_properties is absent from ros2 branch?

Thanks!

@chapulina
Copy link
Contributor

I read some where that gazebo/get_world_properties service will be ported in gazebo_ros_properties

That seems to be missing on the migration guide. The new service is now get_model_list, provided by the gazebo_ros_factory plugin.

curious to know why gazebo_ros_properties is absent from ros2 branch?

I just made a pull request today forward-porting gazebo_ros_properties from dashing to eloquent, see #1049. Now someone needs to make a PR from eloquent to ros2 (i.e. foxy).

@guru-florida
Copy link

guru-florida commented Sep 27, 2020

What is the latest plans for porting gazebo_ros_control? I see in the Roadmap repo that it is showing "Blocked by ros-controls/ros2_control#1" which I believe is ready, yes? Has any work started on it that I can jump into?

If ros2_control is ready, briefly, what work would remain to complete the port?

  • Derive from ros_gazebo/Node
  • move existing code from ROS1 gazebo_ros_control over and convert the rclcpp pub/sub setup/callbacks
  • Are there any special simulated parts of ROS1 gazebo_ros_control that depend on parts of ros_control that have been overhauled? Such as trajectory computation, trapezoidal stuff, effort, position, velocity controllers, etc?

FYI Wrote a related post on ROS Answers.

@chapulina
Copy link
Contributor

@guru-florida , I updated the table with a link to the repository where that work is happening: https://github.com/ros-simulation/gazebo_ros2_control

@guru-florida
Copy link

Thanks @chapulina! I can't believe I didnt find that repo, it was right beside the gazebo_ros_pkgs..how!?!?! I'm blind. lol. I will check it out. 👍

@chapulina
Copy link
Contributor

With the release of gazebo_ros2_control into Foxy, I believe this issue can be closed 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests