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.
In a different terminal, run the ros2 lidar node so it can be read by the SLAM program:
ros2 launch ldlidar_stl_ros2 ld06.launch.py
Afterwards, use the commands to run the main SLAM algorithm:
cmake --build build
then
./build/slam
Also run slam toolbox with the slam.yaml file using the command
ros2 launch slam_toolbox online_async_launch.py slam_params_file:=./slam.yaml
- Raspberry Pi 5 8GB
- Mecanum MP Robot Chassis Kit
- Raspberry Pi AI Camera Module
- 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
- 8-Channel Logic Level Converter Bi-directional Converter
- Dollatek MPU-6050 Inertial Measurement Unit
This project is licensed under the MiT License - see the LICENSE.md file for details.
