Post

Week 1 - Coding Period Begins! (June 2 ~ 9)

Week 1 - Coding Period Begins! (June 2 ~ 9)

Hey everyone! This week officially kicked off the GSoC 2025 coding period! I’m thrilled to be contributing to JdeRobot through the project:
“Robotics-Academy: Support for Solutions Directly Using ROS 2 Topics.”


Objectives for the Week

  • Understand how the RAM backend handles user code execution (on_run_application() and prepare_RA_code())
  • Run ROS 2-native code inside the Follow Line exercise
  • Verify if the robot responds correctly using native ROS logic

What I Worked On

Started the week with a Q&A meeting with all GSoC contributors and the GSoC team.

Community Meeting
GSoC Q&A Session

After the call, I dove into understanding how the current system runs submitted code.
I explored the backend of RAM (Robotics Academy Manager) and how it manages Docker containers and code injection through:

  • on_run_application()
  • prepare_RA_code()

Then, I moved on to testing if ROS 2-native code could run inside the Follow Line exercise. I set up a simple publisher using rclpy to move the car forward.
The good news, it worked! This confirmed that ROS 2 logic is executable within the current Robotics Academy flow.

Demo
ROS 2 logic in action!

Currently, the node still requires a while loop. My next step is to refactor it to use rclpy.spin() for a proper ROS 2 event-driven structure and implement frequency control logic — possibly with user-configurable options (need to check with mentors on that!).


Key Learnings

  • Understood RAM’s internal lifecycle and how it injects and runs user code
  • Confirmed that ROS 2-native logic can work without HAL
  • Identified a path forward to restructure execution logic using callbacks and rclpy.spin()

If you’re familiar with running ROS 2 nodes inside restricted Docker environments and have tips, feel free to share!


Thanks for reading! I’ll be working on replacing the loop and cleaning up the ROS 2 integration next week.
Stay tuned — exciting stuff ahead!

Until next week—
Ashish

This post is licensed under CC BY 4.0 by the author.