iRobotEducation / create3_sim

ROS 2 Simulation for the iRobot® Create® 3 Educational Robot
BSD 3-Clause "New" or "Revised" License
110 stars 58 forks source link

Release for Humble and Rolling? #195

Open SteveMacenski opened 1 year ago

SteveMacenski commented 1 year ago

As part of https://github.com/ros-planning/navigation2/issues/2997, we want to migrate away from the TB3 to the TB4 (or iCreate) and Gazebo to Ignition. To do so, we need them to be available in the distribution so users can pull it in with a Nav2 install and CI can turn over without adding more packages to our underlay list.

Are there plans to release binaries in the near-term future? This would allow us to make a relatively high-visibility integration.

alsora commented 1 year ago

Hi Steve, please note that my answer is only related to the Create3 side of the house (you should reach out to Clearpath Robotics for the TB4 part)

For what concerns ROS 2 Humble:

For what concerns ROS 2 Rolling:

SteveMacenski commented 1 year ago

I don't really care too much about the firmware to be honest. This is fully for simulation for CI testing and default bringups for folks to have nice demos to start off with :smile: . I believe this is the simulation repo as well! I still don't have a TB4/iCreate3 :cry:

It's not clear if all the simulator dependencies (in particular those related to ROS 2 control) have a rolling release, but we could have a branch that can be built from sources and it's compatible with Rolling.

This is a minimum requirement for us in Nav2-land to use it. We need binaries. If I can help unblock or have things released that you rely on, let me know. I suspect they are released in Rolling though, moveit2 is in rolling and they rely on ROS 2 control.

alsora commented 1 year ago

Okok perfect.

Let me first focus on the ROS 2 Humble release and then I will get back to you with more details about ROS 2 Rolling and potentially missing packages.

SteveMacenski commented 1 year ago

Ok! Thanks!

alsora commented 1 year ago

@SteveMacenski, quick update on the ROS 2 Humble release. We have a fully functional gazebo-classic simulation, but there are several problems in the ignition simulation due to the ROS 2 control libraries.

SteveMacenski commented 1 year ago

Ugh OK. I was hoping to do these all in the same thrust. Lets see if our comments will spark some movement. I'm surprised given Ignition's "the simulator of ROS 2" with Gazebo deprecated that this could still be an issue

alsora commented 1 year ago

I did a quick test for a ROS 2 rolling release. The rolling debian package for ign_ros2_control seems broken and it causes a segmentation fault in Gazebo. I opened the following ticket https://github.com/ros-controls/gz_ros2_control/issues/105

Building from sources using master branch seems to fix the problem (at least the simulation does not immediately crash), but I didn't test it thoroughly.

We may release the Create 3 simulator regardless (Gazebo classic works just fine), and add a disclaimer that users will have to build ign_ros2_control from sources. Eventually, when those issues are fixed, no changes will be needed on our side.

splouisliu commented 1 year ago

@alsora Is it currently possible to use the simulator on Gazebo classic by building from the humble branch or do we have to wait for a release? So far, building is running into errors for me.

alsora commented 1 year ago

Hi @splouisliu, I just created an official humble branch. I tested it locally and gazebo classics builds and runs without problems for me

ruffsl commented 1 year ago

Sounds like https://github.com/turtlebot/turtlebot4_simulator/issues/32#issuecomment-1458331570 is getting close to cutting a release for humble. Would that of course now be the case for create3_sim as well?

alsora commented 1 year ago

We already did a first humble release of the package. We should do another one now that we fixed some additional bugs/errors

ruffsl commented 1 year ago

We should do another one now that we fixed some additional bugs/errors

When you do end up having the chance to do that for humble, could it be released into rolling as well? That would help with our gazebo migration for the Nav2 system tests as well, as mentioned earlier.

alsora commented 1 year ago

At the moment, Rolling builds fine but I haven't verified if the runtime issues have been resolved. I can still release it if needed.

alsora commented 1 year ago

I realized that before releasing this repo for rolling, we need also to release its dependency. I opened PR here https://github.com/ros/rosdistro/pull/36434

SteveMacenski commented 6 months ago

@alsora reviving this - can we get Jazzy/Rolling support? This is blocking the Nav2 release or we'll need to find another robot platform to base from

alsora commented 6 months ago

I'll look into doing a Jazzy release.

martincerven commented 6 months ago

I'll look into doing a Jazzy release.

I guess for Jazzy You'll need to use Gazebo Harmonic, which ditched ignition name, that means rewrite of few sources 😃

alsora commented 5 months ago

FYI:

It would be very appreciated if you could take a look and provide suggestions.

martincerven commented 5 months ago

@alsora I forgot to mention that there was already some work in Turtlebot4 repo.

One suggestion from me would be to tagret Gazebo Harmonic instead of Jazzy (maybe call the branch Jazzy, but it could run on Humble too). You can actually run Harmonic with Humble, but you have to build ros_gz from source.

One use case is Nvidia Jetson devices which are using now older Ubuntu (22.04) with Humble. My humble guess would be that a large share if not majority of roboticists using create3 would use Jetsons (Me included), so it would be beneficial if the Jazzy branch would run seamlessly with Humble using Gazebo Harmonic.

I know this is sim repo, but the Jetsons are able to run Gazebo simulations pretty fast even though they are embedded SoCs (they have good graphic drivers). I could test the sim on Humble & Harmonic & AGX Orin, my only 24.04 Jazzy device is RPi 5 which is totally slow for any simulation 😁

alsora commented 5 months ago

Thanks, I'll take a look as it seems that the user there already ported this repo to jazzy and harmonic.

About the naming and supported versions: the gazebo harmonic page recommends to use jazzy so I'm not going to advertise using a different version of ROS.

Note that the code builds without any ROS-specific changes, so I would expect that once the gazebo issues are fixed, you should be able to compile this "jazzy" branch from sources against humble ROS libraries

martincerven commented 5 months ago

Note that the code builds without any ROS-specific changes, so I would expect that once the gazebo issues are fixed, you should be able to compile this "jazzy" branch from sources against humble ROS libraries

Yeah I meant it like this. Of course there are recommended versions of Gazebo for each ROS version, but since they provide compatibility matrix at https://github.com/gazebosim/ros_gz/tree/humble for different ROS versions, they kinda expect people will going to mix the versions. (They also provide binaries for Humble+Harmonic, but at that point it's easier to build it from source I guess)

For me it would be jumping from Gazebo Classic to Harmonic without using Ignition at all.

Also 24.04 is not yet that stable, so more people would want to use Harmonic with 22.04 for example.

martincerven commented 5 months ago

Any updates @alsora ? I'd like to help & contribute, but I don't want to redo any work you already did in local/private git repo.

alsora commented 5 months ago

@martincerven no updates yet. I don't have any private/local repo; all the work I did so far is pushed to the branch jazzy of this repo.

Any help is really appreciated.

martincerven commented 4 months ago

I have started looking into it, there might be more bugs with Harmonic itself, but at least there is some progress

alsora commented 3 months ago

FYI, thanks to @civerachb-cpr, the jazzy branch is now ready for use. We'll keep testing it for a while and then I'll proceed with a release.

It would be great if you could give it a try (building from sources) and provide feedbacks.

martincerven commented 3 months ago

I built it inside 24.04 VM, and it runs normally, but since it's VM it doesn't have high OpenGL version so I have to change:

<!-- <engine>ogre2</engine> -->
<engine>ogre</engine> 

in gui.config and then I get these black & white colors 😃 (but everything runs fine)

Screenshot 2024-08-24 at 17 03 27

Also, I haven't been able to run Humble+Harmonic with this jazzy branch, I build all packages from source but, the robot doesn't move as with 24.04 VM, maybe diff_drive controller expects different topic, or there are too many breaking changes in other packages 😑

@civerachb-cpr Have you, by any chance, tried to use Humble + Harmonic with create3?

civerachb-cpr commented 3 months ago

@martincerven : between Humble and Jazzy there were some pretty significant changes from the ros_control community, the biggest of which was changing to stamped messages for teleop control. Instead of using geometry_msgs/Twist messages, the Jazzy branch is set up to use geometry_msgs/TwistStamped for the control inputs. If the rest of your environment is Humble, you may have other nodes that are publishing/subscribing to the unstamped messages. That could explain why the robot isn't driving.

I have not tried using Humble & Harmonic together. Officially that combination is classified as "Possible, but use with caution" (see: https://gazebosim.org/docs/latest/ros_installation/#summary-of-compatible-ros-and-gazebo-combinations). If you are using ROS 2 Humble, I would strongly recommend using Gazebo's Fortress release.