fetch_gazebo
fetch_gazebo copied to clipboard
[feature] Migrating to ROS2
Our research lab is in the progress of migrating our software stack to ROS2, and we like to start by testing out these infrastructure changes in simulation when doing so. I'd like to ask if there are any ongoing plans or current progress in updating the fetch ecosystem to use ROS2, be it in general for the hardware platform, or just for gazebo simulation, as we'd like to avoid duplicate efforts. We'd like to reach out to not only to Fetch, but any end user/developers to pool together any contributions.
We are also exploring the use of the ros2/ros1_bridge , but to me that's a short term solution.
What ever happened to this effort? Did you upgrade your fetch to ROS2?
I tried to dive into migrating the gazebo simulation and controllers about the time I made the first post so that we'd have something to debug with that wouldn't hog so much physical lab hardware, but got blocked by the state of ros2_control and gazebo_ros_pkgs. My hunch is that those two packages have greatly matured since then, but I now no longer have the lab time to devote to this, so we've been making due with ros1_bridge. I'm not sure if fetch has open sourced there motor controller nodes, so I'm not sure how much further this could be done without Fetch migrating on their end.
Also interested in using this for ROS2 in a book!
@SteveMacenski , @mkhansenbot , I recently revisited this, as I was helping @aefrank with getting at least a simulation of the Fetch research platform working in Gazebo with ROS2 (w/ or w/o bridging):
https://github.com/fetchrobotics/power_msgs/pull/13 https://github.com/fetchrobotics/fetch_msgs/pull/19 https://github.com/CogRob/fetch_ros/pull/3 https://github.com/CogRob/fetch_gazebo/pull/2
But I don't really feel up to committing to a ROS2 port of the original codebase if Fetch Robotics Inc isn't initiating it themselves. As mentioned, the original code base for the fetch gazebo plugin is rather relient on robot_controllers which is specific to Fetch, and I'm not sure who else is familiar with it:
https://github.com/fetchrobotics/robot_controllers
So I was thinking we could try and re-use the same URDFs and model files and make use of the recently developed gazebo_ros2_control package that has more active maintainers:
https://github.com/ros-simulation/gazebo_ros2_control
The example demos for which seem a lot simpler to write and compose together:
https://github.com/ros-simulation/gazebo_ros2_control/tree/master/gazebo_ros2_control_demos/examples
CC @jacobjj
In addition to being the primary author of robot_controllers, I've actually ported robot_controllers to ROS2 and am a maintainer of the ROS2 port - it's fully working on 3 of my personal robots and I see no reason it wouldn't work on the Fetch Simulation: https://github.com/fetchrobotics/robot_controllers/tree/ros2 - it's also released into foxy (but not yet in rolling or galactic)
While I don't have the time to port the Fetch simulation to ROS2, if any issues came up with robot_controllers, I can certainly help with those.
I should also point out that I forked the depth_layer plugin from fetch_ros and ported it to ros2/navigation2 for my UBR-1 robot: https://github.com/mikeferguson/ubr_reloaded/blob/ros2/ubr1_navigation/src/depth_layer.cpp
@mikeferguson This is great to hear, very grateful that someone has already tackled this! I will likely be working on using this with Fetch in simulation in the coming weeks, so I will let you know if I have any issues or questions.
@aefrank please update the thread if you get a working ROS 2 simulation of fetch_gazebo. Maybe we can get @velveteenrobot to merge it int this repo for everyone to use.
@mkhansenbot Sadly I haven't been able to get much working. After trying to work out all the dependencies that would potentially need to be updated to work with ROS 2, I think this is a bit over my head. I haven't done enough work with ROS 2 and unfortunately I don't have the time to do the amount of digging required. I will certainly post back here if I go back to it or have any flash of insight, but for now I'm just going to be working in ROS 1.