An autonomous mobile robot project developed by a group of students at Hanoi University of Science and Technology, under the guidance of Prof. Assoc. Nguyễn Phạm Thục Anh
This project is an Autonomous Mobile Robot (AMR) capable of autonomously navigating a predefined environment, avoiding obstacles, and performing tasks such as transporting goods.
OmniBot is equipped with the following hardware components:
- Camera: RealSense Depth Camera D435
- Lidar: Hokuyo URG-04LX-UG01
- Microcontroller: STM32F407VGT6
- IMU: MPU9650
- Motor Driver: BTS7960
- DC Motors
- Python 3.8+
- ROS Noetic / Melodic
- OpenCV 4.2
- Install urg_node:
sudo apt-get install ros-<ros_distro>-urg-node
- Install the RealSense ROS package:
sudo apt-get install ros-<ros_distro>-realsense2-camera
- Install Hector-SLAM:
sudo apt-get install ros-<ros_distro>-hector-slam
- Install GMapping:
sudo apt-get install ros-<ros_distro>-gmapping
- Install dependencies:
sudo apt-get update sudo apt-get install -y python-wstool python-rosdep ninja-build
- Create a workspace and clone Cartographer:
mkdir -p ~/cartographer_ws/src cd ~/cartographer_ws wstool init src wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall wstool update -t src
- Install and build Cartographer:
src/cartographer/scripts/install_abseil.sh rosdep update rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y catkin_make_isolated --install --use-ninja
- Clone and build Pangolin:
git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. cmake --build . sudo make install
- Clone and build ORB-SLAM3:
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod +x build.sh ./build.sh
- Clone and build DBoW3:
git clone https://github.com/rmsalinas/DBow3.git cd DBoW3 mkdir build cd build cmake .. make sudo make install
- Install RTAB-Map:
sudo apt-get install ros-<ros_distro>-rtabmap ros-<ros_distro>-rtabmap-ros
- Create a catkin workspace:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src
- Clone the repo:
git clone https://github.com/PhamCongTrang/OmniBot.git cd ~/catkin_ws
- Build the workspace:
catkin build
- Source the workspace:
source devel/setup.bash
- To start the SLAM system with a specific method, use the following command:
Replace
roslaunch omni_slam omni_slam.launch slam_methods:=<method>
<method>
with the desired SLAM method. For example:- Cartographer:
roslaunch omni_slam omni_slam.launch slam_methods:=cartographer
- Hector-SLAM:
roslaunch omni_slam omni_slam.launch slam_methods:=hector
- GMapping:
roslaunch omni_slam omni_slam.launch slam_methods:=gmapping
- ORB-SLAM3:
roslaunch omni_slam omni_slam.launch slam_methods:=orb_slam3
- RTAB-Map:
roslaunch omni_slam omni_slam.launch slam_methods:=rtabmap
- Cartographer:
- To start the navigation system, use the following command:
roslaunch omni_navigation omni_navigation.launch
- To collect data for place recognition, run:
rosrun place_recognition collect_data.py
- To query the place recognition database, run:
rosrun place_recognition query_database.py