Discussion - Changes for running mobile robot on Humble/Jammy

Blog post coming soon

This is the discussion topic for the video and blog post linked above. Please keep all replies relevant to the content, otherwise create a new topic.

I have a question about using the new Gazebo Sim vs existing Ignition Gazebo. As you are probably aware, Open Robotics is encouraging migrating applications to Gazebo Sim, with warnings that only one or the other be installed on a machine. I observed that your existing tutorials mostly in Foxy , all extremely informative I should add, are written to use Ignition Gazebo platform. As I am just getting started learning to use Gazebo on my Humble based robot experimenting, I should install and use Gazebo Sim. But I cannot use the many written code examples on a Gazebo Sim machine. So have you researched what changes might be required, and thought about specific procedures to migrate existing Ignition Gazebo code examples to run in the current released Gazebo Sim Garden. I suspect this is a royal pain in the neck ! While there are several examples, including a diff-drive in the Gazebo Sim GitHub - gazebosim/ros_gz: Integration between ROS (1 and 2) and Gazebo simulation repositories which could assist a code migration, the work seems like a daunting task. There are a few of us I am in dialog with are similarly exploring this and would appreciate any thoughts.

So, may I add some results of a discussion in a Forum today with another experimenter researching this Ignition gazebo_ros_packages to ros_gz migration process. We believe the key operative Articubot gazebo_ros file to migrate is /launch/launch_sim.launch.py that launches the Ignition “gazebo_ros gazebo.launch.py” and other Nodes. Other scripts may require revision too. A comparable “gz_sim ros_gz” example launch file repository is (ros_gz_project_template/diff_drive.launch.py at main · gazebosim/ros_gz_project_template · GitHub) . This launches "gz_sim.launch.py and other relevant Nodes , such as rviz and robot_state_publisher. We are thinking to Fork the articubot_one to my repository ARLunan, create a new Branch “humble-gz-sim” and try migration the code to simulate the Articubot Robot. From there we each have other Robot projects to apply what we learn. Appreciate thoughts.

Hey, thanks for your great question!
The whole Ignition/Gazebo thing has been a mess of confusion, so I just want to clear up a few things (source here).

  • My tutorials have been using what is usually called “Gazebo Classic” (version 11)
  • The “new” simulator was called Ignition Gazebo as part of a broader set of “Ignition” tools
  • Due to a name conflict, that set of tools has now been renamed “Gazebo” with the simulator being “Gazebo Sim”

I had actually expected that Gazebo Classic wouldn’t run on Jammy and so I expected to upgrade the simulator as part of this tutorial, but I was pleasantly surprised to find…everything worked ok.
I do still plan to upgrade to Gazebo Sim, but the priority has dropped for me as there are some other projects coming up I want to focus on.

Your comments in the second post are correct! So that example you’ve linked is roughly equivalent to my launch_sim.launch.py, the key element being that it includes ros_gz_sim/launch/gz_sim.launch.py rather than the old Gazebo one that I include. I haven’t really used Gazebo Sim, but most things should work the same. One thing that may (hopefully won’t) require tweaking is ros2_control. That’s actually the reason I didn’t use Ignition for these tutorials from the start - when I was writing them the ros2_control support in Ignition was pretty rough. I believe that is all working now though.

I hope that helps and if you do finish the upgrade please report back here so others and myself can learn from it! :smiley:

Thanks for the informative response that will guide me for my next actions. The critical package difference between Classic Ignition and Gazebo Sim (Garden) platforms is no ros-simulation/gazebo_ros_packages and gazebo_ros packages in Classic. Gazebo Sim Platform has gazebosim/ros_gz package - different package names and underlying scrips, though a careful look inside shows similar algorithms. The thing that forced the migration issue for me was that I’m using a Mac M1 with Parallels Virtual UB22 Desktop, fast but its an arm64 (aarch64) cpu with no Classic Gazebo packages released :frowning_face: So I believe a cautious plan is to get the Gazebo Sim ros_gz diff_drive template working, fork it with a new branch, and carefully modify & copy the articubot code elements (Worlds, Descriptions, ros_control, joystick and other hardware elements) one at a time, and develop a new sim launch script that has same functionality - sounds like a good spring project. BTW: I just bought the Waveshare Touchscreen demonstrated in a recent video-like it already . My other project is refurbishing a 12 year old Turtlebot with Jammy running on a Raspberry Pi which works great thanks to your RPLidar other tutorials. Now I can add \cmd_vel controlled googly eyes.

Interesting, yeah I am vaguely aware of the lack of arm64 Gazebo from people who are trying to run it on a Pi. I hadn’t even thought about it affecting ARM Macs, although I feel like that whole platform is pretty experimental (with a lot of potential though). I believe tier 1 support for ROS on Mac OS has been dropped though? (could be wrong).

I wasn’t aware of those package naming differences as I haven’t really looked into it myself, so I’m keen to hear how you go with it all!

And I’m glad you like the screen, hopefully you can bring some life to an old robot :wink:

Thanks: Little clarification: My Development Desktop is not native Mac M1 OS. It’s a Ubuntu 22.04 VM running on the MAC M1, meaning that the CPU is a arm64/aarch64 like a Jason Tx2 or Nano and Raspberry Pi 4. So I should be able and can run ROS2 and most packages (except Ignition Gazebo ;( ) installed from arm64 binaries. So on this matter, I’ve posted a Classic Gazebo to gazebo sim question on “answers.gazebosim.org” asking for ideas to migrate from gazebo_ros_packages / gazebo_ros. No response yet.

Ah yes sorry I missed that detail in your original post.
Have you had any luck getting it to work since?

After a couple weeks, no answers to install and run Gazebo Garden and associated gazebosim/ros_gz install and run from the community . But I was able to get a procedure from the leader of a Meetup forum I regularly call into [ROS 2 to Nav2 with a dash of Simulation)] (Artificial Intelligence and Machine Learning for Robotics (Houston, TX) | Meetup). On a Ubuntu 22.04/ROS 2 Humble system , best to remove any existing gz-garden, ignition-fortress, or ros_gz previously installed by the ROS 2 Desktop Installation, and install a clean Gazebo Fortress from the available Binaries and follow tutorials here: Gazebo Fortress Getting Started . Install Fortress . Load ros_gz: $ source /opt/ros/humble/setup.sh , sudo apt install https://sudo apt-get install ros-humble-ros-gz) . Try running thru the steps Setting up a Robot Simulator . This starts up ign gazebo GUI, configures ROS 2 and teleop, Visualizes lidar data in ROS 2 with the ros_gz_bridge . I have not yet run the diffdrive template example