Autonomous navigation, perception, and localization pipeline for the NUS ME5413 final project.
This workspace is built for ROS Noetic on Ubuntu 20.04 and includes simulation, sensor fusion, and global/ local localization components.
Top-level ROS packages in this workspace:
fast_gicp— fast Generalized ICP alignment and point cloud registrationhdl_global_localization— global localization service for point cloud matchinghdl_localization— local lidar-based localization and scan matchinginteractive_tools— RViz plugin tools and interactive panelsjackal_description— Jackal robot description for simulationme5413_world— world simulation, navigation, and perception pipeline for the projectndt_omp— NDT-based registration optimized with OpenMP
- Ubuntu 20.04
- ROS Noetic
- Gazebo with
gazebo_ros catkin_makebuild tool- Python 3 for ROS Python nodes and utilities
From the workspace root:
cd ~/ME5413_Final_Project
rosdep install --from-paths src --ignore-src -r -yAdditional simulation dependencies may be required:
sudo apt update
sudo apt install -y \
ros-noetic-sick-tim \
ros-noetic-lms1xx \
ros-noetic-velodyne-description \
ros-noetic-pointgrey-camera-description \
ros-noetic-jackal-controlIf you use the number detector node, install the Python OCR dependency:
python3 -m pip install --user easyocrcd ~/ME5413_Final_Project
catkin_make
source devel/setup.bashThe simulation expects Gazebo models to be available under ~/.gazebo/models.
mkdir -p ~/.gazebo/models
git clone https://github.com/osrf/gazebo_models.git
cp -r gazebo_models/* ~/.gazebo/models
cp -r ~/ME5413_Final_Project/src/me5413_world/models/* ~/.gazebo/modelsStart the simulated world:
source ~/ME5413_Final_Project/devel/setup.bash
roslaunch me5413_world world.launchRun the navigation and perception stack:
source ~/ME5413_Final_Project/devel/setup.bash
roslaunch me5413_world navigation.launchsrc/me5413_world/launch/world.launch— starts the Gazebo environment and robot simulationsrc/me5413_world/launch/navigation.launch— launches the full navigation pipeline
- ROS-based autonomous navigation using
move_baseand Jackal robot simulation - 3D localization support with global and local lidar registration
- Waypoint navigation via
src/me5413_world/scripts/waypoint_nav.py - Visual number detection pipeline via
src/me5413_world/scripts/visual.py - RViz support for visualization and interactive tool panels
Waypoints are defined in src/me5413_world/config/waypoints.yaml.
The workspace is structured as a catkin workspace with a top-level src/ directory containing all ROS packages.
MIT License. See LICENSE for details.