Simultaneous Localization and Mapping (SLAM) is a core problem in mobile robotics, enabling robots to autonomously navigate and understand unknown environments by building a map of the environment while simultaneously estimating the robot's position within that map. This capability is crucial for applications ranging from robotic exploration and autonomous navigation to service robots in dynamic environments. The ability of the robot to navigate in its environment based on the map generated by SLAM will be useful in evaluating its ability to perform loop closure.
Robots deployed in environments like office building or houses similar to the house world simulated in Gazebo must deal with challenges such as dynamic obstacles (e.g., people moving around and various obstacles in the scene), varying environmental features, and complex layouts. Successfully navigating and mapping such an environment demonstrates the effectiveness of modern SLAM algorithms and sensor fusion techniques. The ability to localize in this environment will provide valuable insights into the deployment of autonomous robots in similar real-world environments, while giving us real world experience!
In this project, the goal was to implement and compare multiple SLAM algorithms on a TurtleBot - a mobile robot platform - to autonomously map and navigate a medium-sized, fairly complicated simulated world map provided via Gazebo. The TurtleBot was simulated with multiple sensors—including a LIDAR, RGB-D camera, and stereo vision—to gather data about its virtual environment. This project combined mapping and probabilistic localization techniques to allow the robot to create an accurate map while continuously updating its own position relative to its surroundings. Furthermore, during the navigation phase, which we used to evaluate the performance of the SLAM algorithm with respect to accuracy metrics, the localization of the the robot was probabilistically determined via an adaptive particle filter and a probabilistic planning algorithm used to determine trajectory to goal.
- sudo apt-get install ros-noetic-dwa-local-planner
- sudo apt install ros-noetic-slam-toolbox
- sudo apt install ros-noetic-turtlebot3
- sudo apt install ros-noetic-navigation2
- sudo apt install ros-noetic-gazebo-*
- sudo apt install ros-noetic-cartographer
- sudo apt install ros-noetic-gmapping
- sudo apt install ros-noetic-hector
Whenever you open a new terminal session, you should run the command export TURTLEBOT3_MODEL=burger or otherwise set it as an environment variable. Whenever changes are made to your launch file(s), you should run the command source devel/setup.bash from the folder catkin_src.