This repository holds the code for the semantic SLAM algorithm created for a custom made robot that creates a semantic map using a 2D LiDAR and odometry sensors.
This project is dedicated to building a SLAM algorithm that utilises data from a 2D LiDAR sensor and odometry sensors. The LiDAR provides the outline of it's surroundings within a designated area. This data will be compiled to eventually create a floor plan for an entire room. The odometry sensors will track the movements of the robot within the environment, allowing the robot to localise itself within the environment, and gauge the distance between objects that are detected within a room. This will create the entire SLAM algorithm.
The SLAM algorithm will be complimented by a deep learning model that will classify objects it sees from a live camera feed. The camera module used is able to run a CNN on it, allowing the main system to bear the overhead of running a deep learning model at the same time. The deep learning model is trained on publicly found datasets of household objects, as the main environment this robot will be used in is a household.
This project can be built on any operating system supported by CMake.
Clone the repository and please install the CMake compiler before trying to build this project.
Use the commands to build the main SLAM algorithm:
cmake --build build
then
./build/slam
The entire Semantic SLAM pipeline can be started using
stdbuf -oL -eL ros2 launch launch.py 2>&1 | tee ~/pi/SemanticSLAM/master_session.log
to see all the logs associated for each output from the launch.py.
- Raspberry Pi 5 8GB
- Raspberry Pi Pico
- Mecanum MP Robot Chassis Kit
- Raspberry Pi Camera Module 2
- Uninterruptible Power Supply UPS HAT (B) for Raspberry Pi
- 4 DRV8871 Motor Drivers
- 4 TT Motors with Encoders Attached
- 7.2 Ni-MH Battery Pack
- OKDO Lidar Hat for the Raspberry PI
- Dollatek MPU-9250 10-DOF Inertial Measurement Unit
- 8-Channel Optocoupler Isolation Board
The results seen from the semantic pipeline are from an rviz2 instance showing the semantic map created. The results were not as expected as the assumption that the camera was parallel with the ground, due to no depth camera, was severely inhibiting the localisation of the items on the map. The map created and the robot moving where incredibly slow due to running a object detection model and a graph SLAM algorithm on the same CPU.
This project is licensed under the MiT License - see the LICENSE.md file for details.

