This repository contains ROS2 packages for exploring SLAM (Simultaneous Localization and Mapping) with a 4-wheel differential mecanum drive robot. The robot is built using:
- Chassis: Basic robot chassis with a 4-wheel mecanum drive system.
- Motors: Four TT motors for precise movement and control.
- Odometry: Four photo-interruptors to capture encoder data for accurate odometry.
- IMU: MPU9250 providing 9 Degrees of Freedom (DOF) inertial measurement data.
- Lidar: Luna Lidar for environmental scanning and mapping.
- Arduino Uno was programmed with Arduino sketch (using PlatformIO) described here Motor_Driver, where:
- Motor Controller that accepts serial communication with basic ASCII characters. - STM32 Microcontroller firmware described here STM32_Drivers, where:
- I2C communication with the Lidar and IMU.
- IRQ (interrupt requests) for the 4 photo-interuptor encoders.
This repository includes ROS2 packages that integrate these components to enable SLAM functionality.
-
Robot_control node: CLI control with simple wasd control to move robot forward/backward/lefter/righter.
-
Robot_gui node: Graphical interface that handles more omnidirectional control.
-
Uno_Serial node: handles serial communication of the Arduino Uno Rev3. Microros is too alrge to use with the Arduino Uno, and ROSSERIAl is deprecated in ROS2, so needed to create my own serialization. Check out the correpsonding arduino motor controller here (using PlatofrmIO): Arduino_Motor_Driver_Slambot
Planned improvements:
- Complete the SLAM, Sensor fusion, etc.
- Enhancing path planning algorithms for smoother performance.
https://www.matec-conferences.org/articles/matecconf/pdf/2021/12/matecconf_mse21_08003.pdf