Autonomous Cart Robot
A self-navigating cart built to move parts and equipment between lab benches without a human pushing it.
Implementation
The cart is a differential-drive platform carrying a 2D LiDAR, an IMU, and a Raspberry Pi 4 running ROS2. It builds a map of the lab floor with SLAM Toolbox on first run, then localizes against that map for subsequent trips. Route requests currently come from a fixed set of named waypoints entered over SSH — there's no app or UI yet. The motor controller is a separate STM32 board that takes velocity commands over UART and closes the loop on wheel encoders.
Architecture
Nav2 handles global/local planning and obstacle avoidance on top of the SLAM Toolbox occupancy grid. Sensor fusion (LiDAR + IMU + wheel odometry) runs through robot_localization's EKF node before being fed to the planner. The STM32 motor controller is treated as a black box behind a thin ROS2 driver node that translates Twist messages into UART packets.
Technologies
Known limitations
- No dynamic obstacle re-planning faster than ~2 Hz — fast-moving people can cause the cart to stop rather than smoothly avoid them.
- Waypoints are hardcoded per building floor; moving the cart to a new room requires a manual remap.
- No payload weight sensing, so the cart doesn't know if it's actually carrying anything.
Members
- Jiho Park
- Sujin Oh
- Daniel Cho