Introduction
I’m Satvik, Software Engineer and studying Mechanical Engineering at RPI (graduating May 2028). Strong background in Java and TypeScript, and building proficiency in C++. Development environment is Windows 11 with WSL2 (Ubuntu 22.04). No prior ROS2 experience.
Introducing my LiDAR Robot project. This robot is a differential drive robot built on the Raspberry Pi 4 and an STM32 microcontroller that uses a 360 degree LiDAR sensor to avoid obstacles, programmed in C++.
How does it work?
The robot uses a LiDAR sensor (RPLIDAR C1) to detect obstacles and uses an algorithm to change course to avoid it. It has a goal location set, and will do its best to navigate to that goal. The software is built on ROS2, an open-source popular robotics operating system. ROS2 uses a pub-sub architecture, using “nodes” that accomplish specific, individual tasks. Nodes communicate by publishing messages to named topics. Any node can subscribe to any topic.
More details can be viewed on the Git README
Progress
So far, I have created the workspace for the system in WSL using Ubuntu 22.04, and created a simulation for the robot using ROS2, Gazebo, Nav2, and RViz. This has allowed me to simulate and execute software-in-loop (SIL) testing before HIL testing. The simulation demonstrates the robot’s ability to identify the goal, create a navigation path to it, and avoid obstacles along the way.

The control-loop for the avoider algorithm.
Next Steps
The next steps are to migrate this code from simulations onto hardware, and execute hardware-in-loop testing to ensure the code works, while installing mechanical parts together and building a prototype.

A screenshot of Gazebo running a simulation