Raspberry Pi Software
This project runs on a Raspberry Pi (Ubuntu + ROS 2 Humble) and acts as the high-level HW wrapper of the robot. The Pi hosts ROS 2 nodes that handle lidar, camera, I2C sensors (and the Arduino), RGB LEDs, and buttons. In effect, it gathers all the sensory data, publish them via ROS 2 topics, which makes it easy to read and make decisions and later on it accepts topic for motor speeds.
For sensors, the Pi runs specialized ROS 2 nodes: one for the lidar to scan the environment, one for the camera to capture images or video, and drivers for I2C sensors (ADC, IMU, magnetometer, etc.) and the Arduino (which itself controls motors and encoders, line sensors and ultrasounds). There are also nodes (or scripts) to manage RGB LEDs (for status or feedback) and buttons (for user interaction or emergency stop). All sensor inputs are published into the ROS 2 ecosystem so other nodes (e.g. navigation, mapping, control) can subscribe and act on them.
In addition, the repository includes helper scripts for setting up the Raspberry Pi environment (installing required packages, configuring ROS 2, setting up node launch files, calibrations, etc.). These scripts make it easier to initialize a fresh Pi with all dependencies, and to launch the full ROS 2 system smoothly. So overall, the Raspberry Pi side is responsible for integrating sensors, executing high-level logic, and coordinating with the Arduino via I2C, all within the ROS 2 framework on Ubuntu.