This project was developed for the ROB 550 course at the University of Michigan (Fall 2023). The focus of this lab is to build a full autonomy stack for a differential-drive robot using onboard sensors like LiDAR and odometry. The system includes modules for motion control, SLAM, path planning, and frontier-based exploration in a structured C++ framework.
Table of Contents
-
src – All source code organized by modules:
mbot/: Motion controller implementation for differential-drive and omnidirectional robots.slam/: SLAM components including particle filter, scan matching, and occupancy grid mapping.planning/: Path planning and exploration algorithms including A* and frontier-based exploration.utils/: Utility functions for geometry, timing, and LCM support.
-
include – Corresponding headers for all modules, separated by namespace.
-
assets – Contains visualizations and demo videos for checkpoint deliverables (e.g.,
FastRun.mp4,map.png). -
scripts – Installation and setup shell scripts.
install.sh: Installs dependencies and builds the workspace.
-
services – Systemd service files for robot deployment:
mbot-slam.service,mbot-motion-controller.service
-
build – Autogenerated folder by CMake after compilation (can be deleted and rebuilt).
-
CMakeLists.txt: Project-level build file using CMake.
-
Install LCM (Lightweight Communications and Marshalling) if not already installed:
sudo apt-get install liblcm-dev
-
Build the project using CMake:
mkdir build && cd build cmake .. make -j4
./build/mbot_slam./build/mbot_motion_controller./build/exploration
# or
./build/motion_planning_serverYou can also set these up as systemd services using files in the
services/directory for auto-start on boot.
- C++17
- CMake
- LCM
- Eigen3
- GStreamer
- Odometry & motion models
- Particle Filter SLAM
- LiDAR-based mapping
- A* path planning
- Frontier-based exploration
- Modular C++ software architecture
- Trushant Adeshara
- Collaborators from ROB 550 (Fall 2023)
This project is part of course-based work at the University of Michigan and follows the academic honor code for sharing.