
Autonomous RC Vehicle Navigation
This project focused on creating a robust autonomy stack for a RC vehicle (with ackermann steering) that can navigate a course without human intervention. The system housed an ARM processor running a barebones linux OS and ROS2 to perform necessary computations and distribute control commands to motor controllers and steering servos. The vehicle was equipped with a COTS LIDAR and stereo-vision cameras to perceive the environment.
The system integrates multiple sensor inputs including visual odometry and LIDAR. The autonomy stack hinged on a SLAM algorithm running on an offboard computer and remotely communicating with the vehicle. The localization component of SLAM used an Extended Kalman Filter to fuse sensor estimates into a single state estimate within the environment. The LIDAR data was used to construct a map of the environment simultaneously.
Creating a functional autonomous requires a correct and efficient application of many different concepts from a wide range of disciplines. Many hours were spent tuning the dynamics model of the vehicle, tuning the PID controllers to follow a planned path in the environment, and tuning process noise characteristcs for the EKF. This project proved to be a great test of patience and a rewarding experience in
How It Works
Data Pipelines and Processing
The vehicle leverages an autonomy stack build using ROS2 to handle signal processing and delivering control commands. It does so through publisher-subscriber and client-server models. For example, the visual odometry is constantly being published to the vehicle so to garner the most amount of information about the environment. On the other hand, the LIDAR must be polled, so this is done through a client-server relationship. These are performed and timesynced to be used in the EKF implementation. Once an estimate of the vehicle's state is determined, a lightweight version of RRT is run to plan a short trajectory for the robot. Once this is done, control commands are made to regulate the vehicle to follow the trajectory via waypoints and heading control. Most of this processing is happening on an offboard computer, and then relayed to the vehicle via Wifi packets. This is due to the extremely limited compute on the onboard computer.
Fortunately, the vehicle was equipped with existing motor drivers, leaving much of the difficult work into implementing the autonomy stack instead of full stack control of the vehicle.
SLAM Implementation
Our Simultaneous Localization and Mapping (SLAM) algorithm builds a map of the environment while simultaneously estimatin the vehicle's state within it. Given the fidelity of the sensors, the SLAM implementation required a great deal of tuning to maintain stability and a usable map.
We used an EKF approach for sensor fusion and state estimation using the ICP model for the LIDAR and a homebrewed sensor model for the stereo cameras. Additionally, the bicycle model was used to represent the dynamics of the vehicle. The NEES and NIS tests were done to aid in tuning the Kalman Filter parameters.
Additionally, occasionally the vehicle would encounter difficult obstacles for its sensor package (Windows), so we added features for obstacle deconfliction in areas of large estimate uncertainty.

Key Achievements
- Implemented a SLAM algorithm leveraging LIDAR and visual odometry for use in path planning
- Implemented multi-sensor fusion algorithms for robust state estimation
- Overcame limited computational resources available on the vehicle
- Successfully deployed and tested on a track with numerous obstacles.
Challenges
- Limited computational resources available on this small autonomous platform
- High sensor noise due to low-cost components and variable conditions (windows....)
- Need for real-time decision making in dynamic and uncertain environments
- Tuning numerous parameters to make a robust autonomy stack
Solutions
- Developed optimized algorithms specifically for embedded hardware constraints (Simplified sensor models, etc.)
- Implemented filtering to reduce sensor noise and adjusted noise covariances to trust sensor measurements less when near windows
- Created a exploration based algorithm with a hueristic for navigating uncertain frontiers
- A lot of patience and time tuning paramters in the EKF (motion model, sensor model, process noise, sensor noise, initial state estimate covariance)
Results
- System successfully navigated through the course without human intervention
- Generated a reasonably accurate map of the environment through exploration
- Demonstrated robust (limited degradation) performance even with partial sensor dropout