-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Initial support to the new Gazebo #3634
Initial support to the new Gazebo #3634
Conversation
@ahcorde, your PR has failed to build. Please check CI outputs and resolve issues. |
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
ad975c0
to
c52b2b0
Compare
Thanks! The screen cap looks great ❤️ |
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
@ahcorde, your PR has failed to build. Please check CI outputs and resolve issues. |
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Otherwise, beyond the other open item LGTM
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
Check CI for linting errors, I think when you adjusted the copyright you misformatted it a little |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Otherwise LGTM.
I want to have someone else take a look for me as well on this one since there's alot of small subtle things that could cause problems + I know someone that's been working with new-gazebo alot recently. @bperseghetti could you do the honors? |
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
Huh? |
it's weird, but this one is fixed, I'm trying to fix the other turtlebot3 model in the |
Sorry, I read this one before the simple commander one 😄 |
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
The min range cannot be zero? Why is that? |
it's an OGRE(2) restriction: what(): OGRE EXCEPTION(2:InvalidParametersException): Near clip distance must be greater than zero. in Frustum::setNearClipDistance at ./OgreMain/src/OgreFrustum.cpp (line 127) |
Co-authored-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]>
@azeey any thoughts on the Edit Looking at the job, its looking for gazebo ros pkgs which it'll never find: https://build.ros2.org/job/Rbin_uN64__turtlebot3_gazebo__ubuntu_noble_amd64__binary/38/console |
I reached out to the maintainers two weeks ago about migrating to the new Gazebo, but no word so far. We've already created issues (ROBOTIS-GIT/turtlebot3_simulations#196, ROBOTIS-GIT/turtlebot3_simulations#179) and PRs (ROBOTIS-GIT/turtlebot3_simulations#180) to help make the transition, but there has been no updates. |
Any thoughts about moving to the TB4? I know there's no Iron/Jazzy/Rolling versions yet, but I believe their humble is based on Ignition-Gazebo so it should be relatively less of a lift. I actually emailed Ryan at CPR today asking him about providing some engineering support to getting the TB4 for Jazzy/Rolling for this purpose. That could cut this problem out and upgrade to the more modern robot option which I prefer greatly and is still a 'community standard' / OSRF affiliated. or do you know of another robot with a new-gazebo simulation that could be lifted to Jazzy/Rolling for our use here? Another option is that I can create a "simplified" TB4 that we control in the I suppose we also need a new simulation environment since the sandbox is tied to TB3. We discussed some warehouses, I think that's a good move and I just need to look into the 'how's and refamiliarize myself with the threads on that. Edit: good sign, CI is happy on this PR minus a test that is unrelated to this I need to look into. That's on 24.04/Rolling and was able to resolve all the dependencies then fine. |
I was curious if it were possible to use a Fuel world as part of a description file and remove some element from it. The AWS warehouse world model is great, but the manual forklift in the aisle isn't what I'd want for a default bringup to do more traditional demos. I actually prefer the Depot model, but the trusses and fan in the ceiling make it difficult for a user to see what's going on if they're setting the gazebo client on to watch the robot in simulation from above - so I'd want to remove those. I don't recall any subtractive-operations in the SDF format, but maybe there are (or can override existing object names with new ones that I set its color properties to transparent?) |
It is possible to include a model (only works with models not worlds) and remove some elements from it in SDFormat. The feature to do this is under an experimental XML namespace even though it's been around for a while. It should become a permanent feature, we just haven't gotten around to it yet. If you are okay with using that, then I can switch to the Depot model and remove the trusses and fan.
I'm willing to provide support to make that happen. I looked to see if it would be quick but I realized it requires changes in https://github.com/iRobotEducation/create3_sim as well. In the meantime, I have a fork of turtlebot3 that works on Rolling. We can build that from source if you'd like. |
I realized the same thing which is what led me to: 'maybe we can just make a minimum nav2_tb4_description package that's self contained.' Too many cooks in the kitchen and too few have interest in keeping up with the latest in ROS 2. Doesn't need to be nav2 specific even, but figured I'd just open a new repo in
That's a good interim solution, I will test that after I get this comment out. I wonder if its better not to just replace it all in the first salvo, but this PR would be done if we could have that built with CI and workable. Then someone in parallel can work on using that for the system tests while I work on updating the robot model / world (or I'll get to it too). If you add your fork to https://github.com/ros-navigation/navigation2/blob/main/tools/underlay.repos (uncommented) then it'll be grabbed and built for CI. The major question with that is: is that fork going to be able to make it upstream + released for Jazzy/Rolling? If so, good solution, lets do it. We can use that for our system tests so it has real value not to have rewrite those. If this won't get out in binary format for TB3, then its probably just worth stripping out TB3 up front since adding it here now won't really buy us anything in terms of unblocking Nav2's release in binary format. This PR gets merged (which isn't nothing for sure), but it seems more organizational since we'd immediately need to strip it out again for something that can be released. |
@azeey I'm unable to get it to build with the following error:
|
That's really strange. I tried building it multiple times both on rolling and jazzy, but could not reproduce what you're getting. |
I’m in a docker container based on ros-rolling-desktop-full & obtained gazebo from the ROS 2 integration instructions via |
Okay, I tracked it down to a missing dependency, What's strange is that if you start with a Either way, gz-transport should declare a direct dependency on |
It turns out cppzmq-dev is a new package in Ubuntu Noble. Potential rosdep fix in ros/rosdistro#41413 |
My docker image does the following as I'm dog fooding the Docker development tutorial on docs.nav2.org during this exercise
A quick google search shows that in use all over the place in ROS-Docker-World and I never had reason before to question it. Should I remove that from my tutorial? OK - I assume that new key will be added to some package(s) that will hit jazzy/rolling for the next sync? That did make things work! I'm taking a look now and seeing the following:
I think the 105-120% on the server is fine enough not worth nitpicking, but I was surprised to see the GUI be 5x as consuming with these configs. Is there a way to reduce that to even just 2x? I'll be keeping this up for a bit, sending goals, relaunching, etc to check stability but I don't expect to find anything to report. Mostly just for my own education.
I don't love the crashing on shutdown, but I'm sure this is something the GZ team is aware of so I don't need to belabor it. Thoughts on the steps forward for your TB3 fork? I think the path here boils down to if you think there's a reasonable chance that binaries will be possible. If so, then we can add this to our repos file and unlock the work for updating our system tests to use your work to get that part of our CI up and running. I'll probably still want to replace the default bringup before releasing to Jazzy with a new robot platform / environment, but that's non-blocking for this PR and squarely in the "Steve's problem" camp (though would love your reviews). The TB4 is the direction I think is most sensible unless anyone has a better idea. |
The But the root cause of the issue is that the C++ headers were removed from
I think we'll need to profile the GUI to figure out what's happening. I don't see a quick fix for this.
This is caused by a bug in
Maybe @clalancette can chime in on this. I'm not sure if we are at the point of replacing the upstream package, but if we decide to go that route, we should probably move that repo into an OSRF org. Honestly, the easiest thing to do would be to put the bits we need from |
Good point. I'd be fine with that. Want to do that? That would then unblock re-enabling the system tests using it + GZ Harmonic. I don't love owning all of TB3 stack for Nav2 Bringup, but the systems test package is a little ... messy to begin with and as you point out we already have a bunch of files anyway. I'm not commiting you to updating all our system tests with Harmonic in this PR or ever, but certainly if you were willing to, I wouldn't object. Our bringup still needs some work for getting a robot that is distributed in binary format, but I'm actively working on that now. I've created a set of minimal TB4 description + simulation files for Nav2 based on the CPR + iRobot files and your work here. Their repos have a bunch of other stuff we don't need which are blocking updates + releases for Jazzy/Rolling so I figure stripping out to just the bare minimum will help make it easy to forward port things in a distribution-agnostic way. Its in https://github.com/ros-navigation/nav2_min_tb4_sim and my plan is to release these in binary format then we can dep on that for This way in the future, we're not dependent on companies supporting the bleeding edge, we can just have these packages in rolling and should always work (unless launch / URDF format changes). |
@azeey what do you think? Should we replace all the existing TB3 files with your fork in the system tests and possibly port ~1 over to it as an example? Then I think we can merge this in and I or other community members can come in to work on porting the rest of the system tests + update the bringup package with a robot in binary format. |
@ahcorde @azeey merging. I'm pretty far into a TB4 analog with the TB3 for both options in modern GZ One thing I've noticed is that the simulation takes a long time to initialize with the depot world and the TB4. I haven't looked into it, but after the migration is done, that is worth me/someone looking into. Path forward:
|
I refactored the TB4 into an independent simulation package in the minimal repository linked above. I also took the TB3 work done here and refactored that + the Now we can ship both, in binary form, without issues waiting for either of the turtlebot vendors! Phew, this was a lot of refactoring for a day... |
Is there an example on how to run this yet?, so I can start porting the system tests too. |
If you clone the nav2 minimal turtlebot repo into your workspace and build them, the TB3/4 demos should work! |
I am able to run as is, I will start porting the system test and open the pr when its ready |
Great! I just finished up the simple commander migration today, if you could even open a PR once you have a couple of them ported over, I could use those as a template for jumping in to help! The simple commander may help you as well: #4417 The things to look out for:
|
* Initial support to the new Gazebo Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed build Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feeback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix copyright and urdf Signed-off-by: Alejandro Hernández Cordero <[email protected]> * min range cannot be zero Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Simplify files Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Try to reduce load Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed cast shadows Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use Gazebo plugins instead of gz_ros2_control Signed-off-by: Alejandro Hernández Cordero <[email protected]> * update dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed ros2_control and use ogre Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use param file to configure bridge Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use sdf model and change to ogre instead of ogre2 for sensors Signed-off-by: Addisu Z. Taddese <[email protected]> * Support Garden and later, performance improvements Signed-off-by: Addisu Z. Taddese <[email protected]> * Use xacro for world file (ros-navigation#2) Signed-off-by: Addisu Z. Taddese <[email protected]> * Reviewer feedback Signed-off-by: Addisu Z. Taddese <[email protected]> * Add comment explaining temp file Signed-off-by: Addisu Z. Taddese <[email protected]> * Fix linter Signed-off-by: Addisu Z. Taddese <[email protected]> * Update nav2_bringup/worlds/gz_world_only.sdf.xacro Co-authored-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> --------- Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Steve Macenski <[email protected]>
* Initial support to the new Gazebo Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed build Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feeback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix copyright and urdf Signed-off-by: Alejandro Hernández Cordero <[email protected]> * min range cannot be zero Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Simplify files Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Try to reduce load Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed cast shadows Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use Gazebo plugins instead of gz_ros2_control Signed-off-by: Alejandro Hernández Cordero <[email protected]> * update dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed ros2_control and use ogre Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use param file to configure bridge Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use sdf model and change to ogre instead of ogre2 for sensors Signed-off-by: Addisu Z. Taddese <[email protected]> * Support Garden and later, performance improvements Signed-off-by: Addisu Z. Taddese <[email protected]> * Use xacro for world file (ros-navigation#2) Signed-off-by: Addisu Z. Taddese <[email protected]> * Reviewer feedback Signed-off-by: Addisu Z. Taddese <[email protected]> * Add comment explaining temp file Signed-off-by: Addisu Z. Taddese <[email protected]> * Fix linter Signed-off-by: Addisu Z. Taddese <[email protected]> * Update nav2_bringup/worlds/gz_world_only.sdf.xacro Co-authored-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> --------- Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Steve Macenski <[email protected]>
* Initial support to the new Gazebo Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed build Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feeback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix copyright and urdf Signed-off-by: Alejandro Hernández Cordero <[email protected]> * min range cannot be zero Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Simplify files Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Try to reduce load Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed cast shadows Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use Gazebo plugins instead of gz_ros2_control Signed-off-by: Alejandro Hernández Cordero <[email protected]> * update dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed ros2_control and use ogre Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use param file to configure bridge Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use sdf model and change to ogre instead of ogre2 for sensors Signed-off-by: Addisu Z. Taddese <[email protected]> * Support Garden and later, performance improvements Signed-off-by: Addisu Z. Taddese <[email protected]> * Use xacro for world file (ros-navigation#2) Signed-off-by: Addisu Z. Taddese <[email protected]> * Reviewer feedback Signed-off-by: Addisu Z. Taddese <[email protected]> * Add comment explaining temp file Signed-off-by: Addisu Z. Taddese <[email protected]> * Fix linter Signed-off-by: Addisu Z. Taddese <[email protected]> * Update nav2_bringup/worlds/gz_world_only.sdf.xacro Co-authored-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> --------- Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Steve Macenski <[email protected]>
* Initial support to the new Gazebo Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed build Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feeback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fixed physics tag Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix copyright and urdf Signed-off-by: Alejandro Hernández Cordero <[email protected]> * min range cannot be zero Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Simplify files Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Added feedback Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Fix Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Try to reduce load Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed cast shadows Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use Gazebo plugins instead of gz_ros2_control Signed-off-by: Alejandro Hernández Cordero <[email protected]> * update dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed dependency Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Removed ros2_control and use ogre Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use param file to configure bridge Signed-off-by: Alejandro Hernández Cordero <[email protected]> * Use sdf model and change to ogre instead of ogre2 for sensors Signed-off-by: Addisu Z. Taddese <[email protected]> * Support Garden and later, performance improvements Signed-off-by: Addisu Z. Taddese <[email protected]> * Use xacro for world file (ros-navigation#2) Signed-off-by: Addisu Z. Taddese <[email protected]> * Reviewer feedback Signed-off-by: Addisu Z. Taddese <[email protected]> * Add comment explaining temp file Signed-off-by: Addisu Z. Taddese <[email protected]> * Fix linter Signed-off-by: Addisu Z. Taddese <[email protected]> * Update nav2_bringup/worlds/gz_world_only.sdf.xacro Co-authored-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> --------- Signed-off-by: Alejandro Hernández Cordero <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Addisu Z. Taddese <[email protected]> Signed-off-by: Steve Macenski <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Addisu Z. Taddese <[email protected]> Co-authored-by: Steve Macenski <[email protected]>
Basic Info
Description of contribution in a few bullet points
Modified
tb3_simulation_launch.py
launch file to use the new Gazebo. It includes some new dependencies:gz_ros_bridge
,gz_ros_sim
andgz_ros2_control
withdiff_drive_controller
andjoint_state_broadcaster
controllersTest it