In summer 2025, I started learning ROS 2 to connect my mechanical design experience with robot software. I had seen the Zebracorns use it for simulation and autonomous behavior, and wanted to understand the system well enough to build my own experiments.
I set up a dual-boot Linux environment and worked through ROS 2 Jazzy and Gazebo Harmonic tutorials. ROS 2 handles communication between pieces of robot software; Gazebo supplies a simulated world where I could try those pieces without physical hardware.
Starting with motion and coordinate frames
My first experiments focused on nodes, messages, and coordinate frames: how one part of the software communicates with another, and how a robot keeps track of positions. A follower-turtle demo made that tangible by using TF2 transforms to track a leader’s pose.
I also drove an animated actor around a square path in Gazebo, using velocity commands and a simple behavior loop.
Giving the robot something to react to
Next, I wrote a C++ node that read simulated LiDAR range data and steered a vehicle away from nearby walls. It was a small exercise, but it connected the full loop: a sensor measurement, a decision in code, and a motion command back to the robot.
Building up to autonomous navigation
Using Nav2 and ROBOTIS TurtleBot tutorials, I assembled a TurtleBot3 navigation demo with mapping, localization, path planning, and obstacle avoidance. Getting it running involved plenty of troubleshooting around sensor topics, coordinate transforms, and process startup. Seeing the robot reach a goal on its own made those pieces feel like one system.
These were tutorial-based learning projects, with my own experiments built on top. They gave me a foundation in ROS 2, simulated sensors, and debugging that I now draw on in my robotics and simulation work. The original longer-term ideas included custom drivetrains, Isaac Sim, and integrating my cycloidal gearmotor concept into a simulation workflow.