Final Report

Created in August 21, 2024

2024


Robotics-Academy: Migration to Gazebo Harmonic


Organization: JdeRobot
Student: Prajyot Jadhav (GitHub, LinkedIn)
Mentors: Pedro Arias Pérez, Pawan Wadhwani, Miguel Fernández Cortizas, Apoorv Garg
Link to GSoC Project Page: Robotics-Academy: Migration to Gazebo Harmonic

Hello everyone,

This summer, I had the opportunity to contribute to Robotics-Academy through the Google Summer of Code 2024 program. My project focused on upgrading the Robotics-Academy’s Docker-based framework by migrating it to Gazebo Harmonic from Gazebo Classic, ensuring the platform’s long-term compatibility. My project proposal can be found here.

About me

I have a Bachelor’s degree in Electronics and Communication Engineering from Visvesvaraya National Institute of Technology, India. My interests lie in robotics and control systems. Google Summer of Code 2024 marked my first substantial contribution to open source, and it was an amazing experience.

About the Project

JdeRobot’s Robotics-Academy provides exercises to learn robotics and AI while abstracting students from the complexities of the framework. The dockerized containers and web templates offer cross-platform functionality, simplifying the setup process. This allows beginners to focus on coding and testing their algorithms without dealing with extensive software installation.

Currently, Robotics-Academy uses Gazebo11 in the Robotics-Academy Docker Image (RADI) framework. The primary goal of my project was to migrate the RADI to Gazebo Harmonic and update exercises accordingly. Also, I replaced PX4 with the lighter Aerostack2 Gazebo platform for drone-based exercises, enhancing efficiency.

Contribution Summary


Stage 1: Modifying Models and World SDF Files

This stage involved updating the drone-based exercise models and creating new SDF files for the worlds to ensure compatibility with the latest version of Gazebo. For models that were challenging to migrate and for which new open-source alternatives were available, I incorporated these new models. Adjustments were made to plugins, parameters, and configurations in the SDF files to align with the updated Gazebo setup.

Stage 2: Installing Dependencies and Updating Files

In this stage, I installed Gazebo Harmonic within the Docker image to support the migration process. Given that most Robotics-Academy exercises are currently in Gazebo 11, I ensured compatibility by installing both Gazebo Harmonic and Gazebo 11. This approach allows exercises still using Gazebo 11 to remain operational. Additionally, I updated hooks for certain packages and modified files, such as the Robotics Application Manager file, to support the new Gazebo Sim exercises.

Stage 3: Modifying the Database and Adding New Fields for Gazebo Sim Exercises

In Robotics-Academy, each exercise is represented as a database entry, including fields such as “visualisation” and “world”. These fields determine the launch files used by the Robotics Application Manager. I updated the Django model to include new options for “visualisation” and “world” specific to Gazebo Sim exercises. A new entry was also created for the Rescue People exercise, which was migrated to Gazebo Harmonic.

Stage 4: Creating New Launchers for Gazebo Sim Exercises

For the newly added “visualisation” and “world” fields related to Gazebo Sim exercises, I developed new launchers within the Robotics Application Manager. These launchers facilitate the launch of the Gazebo Sim GUI and server, along with the Aerostack2 launch file. The Aerostack2 launcher was updated to support Gazebo Sim and to replace PX4 with the Aerostack2 Gazebo Platform.

On GitHub

Over the summer, I submitted 14 pull requests, all of which have been merged. These pull requests addressed 12 issues, and my contributions will be incorporated into the upcoming releases of JdeRobot’s Robotics-Academy.

Pull Request Solves Issue Description More
Robotics-Academy
#2542 #2540 New Robotics-Academy Docker Image including Gazebo Harmonic Week-1 Blog
#2602 #2569 Updated Dockerfiles for Gazebo11 installation along with Gazebo Harmonic Week-5, 6 Blog
#2635 #2634 Created a new database entry and added files for the Rescue People Gz Harmonic Exercise
New "visualisation" and "world" types for Gazebo Sim
Week-5, 6 Blog, Week-7 Blog
Robotics Infrastructure
#402 #401 Updated SDFFormat files of models used in drone exercises to be compatible with new Gazebo Sim Week-3 Blog
#400 - Updated launch files for testing new RAM launcher with a dummy client Week-4 Blog
#410, #419 #409, #415 New worlds for Rescue People and Follow Road exercises compatible with Gazebo Harmonic Week-5, 6 Blog
#412, #413 #403, #406 Updated CustomRobots Hooks and .env script for Gazebo Harmonic Week-5, 6 Blog
#423 #422 New Aerostack2 launcher for Gazebo Sim; PX4 replaced with Aerostack2 Gazebo Platform Week-7 Blog
Robotics Application Manager(RAM)
#136 #135 New RAM launcher for Gazebo Harmonic Week-2 Blog , Week-4 Blog
#143, #148 #142, #143 Added documentation for creating a new RAM launcher and a guide for using the dummy RAM client Week-8, 9 Blog
#138 - Modified and created launchers for new Gazebo Sim "visualisation" and "world" types
Updated play, pause, and reset functions for Gazebo Sim
Week-7 Blog , Week-8, 9 Blog, Week-10 Blog

Video

Future Work

It has been observed that the newly migrated Rescue People exercise, which uses Gazebo Harmonic, takes significantly longer to load compared to exercises based on Gazebo Classic. Also, the Docker container created from the new Docker files takes more time to close. Future work will involve identifying the cause of these delays and addressing them.

For the Rescue People exercise migrated to Gazebo Harmonic, the reset button does not function as expected. Although the drone’s position resets to the initial state, there are issues with entering takeoff mode after a reset. This problem arises because Aerostack2’s state machine is not updated when the exercise is reset. Further details can be found in the Week-11 and Week-12 blog post. Resolving this issue will be a key goal.

The previous Rescue People exercise based on Gazebo Classic has an issue where the gzclient is not launched correctly after the file modifications. It is essential to ensure that older drone-based exercises remain unaffected to provide a fallback option if issues arise with the newly migrated exercise. Identifying the exact cause and resolving this issue is essential.

Robotics-Academy features various types of exercises. The migrated drone-based exercise utilizes Aerostack2, which automatically creates topic bridges. Future work will explore migrating exercises where ROS-to-gz-transport topic bridges need to be created manually.

Conclusion

Participating in Google Summer of Code has been a highly valuable experience. Working with JdeRobot has significantly expanded my technical skills and understanding of open-source development. GSoC also introduced me to an amazing community at JdeRobot.

I would like to thank Prof. José María Cañas and the JdeRobot admins for providing this opportunity. Special thanks to my mentors, Pedro Arias Pérez, Pawan Wadhwani, Miguel Fernández Cortizas, and Apoorv Garg, for their invaluable guidance and support.