Skip to main content
Resume
← All projects

Autonomous systems

PreRunner

A self-contained ROS 2 research platform for autonomous navigation and future learning-based racing.

The physical PreRunner vehicle: a 1/18-scale RC platform converted into a self-contained ROS 2 research vehicle
The current PreRunner hardware: Raspberry Pi 5, LD19 LiDAR, IMU, and drive electronics onboard a LaTrax Prerunner chassis.
Status Active research platform · 2026 — ongoing
Technologies
  • ROS 2 Jazzy
  • Nav2
  • SLAM Toolbox
  • Robot Localization EKF
  • Python
  • C++
  • Raspberry Pi 5
  • LiDAR
  • IMU
  • Foxglove

Overview

PreRunner converts a stock LaTrax Prerunner into a self-contained autonomous research vehicle. A Raspberry Pi 5 runs Ubuntu 24.04 and ROS 2 Jazzy with all sensing and compute onboard.

The platform is the current evolution of the hardware first developed for AutoNav. Its present focus is dependable mapping, localization, state estimation, and autonomous route execution; iterative racing control is the next phase.

Problem and context

Future racing experiments depend on localization and control infrastructure that can be measured without motion capture, fixed anchors, or offboard compute. Commodity sensors also introduce practical failure modes: variable LiDAR scan cardinality, motion distortion, encoder quantization, actuator deadband, and incomplete observability.

The engineering work therefore treats navigation as a system problem. Sensor ownership, transform ownership, command arbitration, diagnostics, launch composition, and repeatable bag analysis are designed alongside the planner and controller.

Technical approach

SLAM Toolbox builds maps and provides fixed-map localization. An extended Kalman filter combines the available motion estimates, while Nav2 plans and executes point-to-point and multi-waypoint routes using a regulated pure-pursuit controller.

Custom ROS 2 packages handle the BNO085 IMU, hall-effect wheel encoder, motor interface, telemetry, command adaptation, scan canonicalization, and operator goal management. Hardware-owning services are kept separate from application launch files so each resource has one owner.

Key engineering details

Localization pipeline

An LD19 LiDAR feeds separate scan paths for laser odometry, SLAM Toolbox, and Nav2 costmaps. Fixed-bin scan rebinning prevents the mapper from silently rejecting variable-length scans.

State estimation

RF2O laser odometry, BNO085 inertial data, and the vehicle model are fused through an EKF with an explicit map → odom → base_link transform chain.

Drive interface

A drive adapter converts Nav2 SI-unit commands into the normalized steering and throttle interface, including steering geometry, bounded speed control, watchdog behavior, and teleoperation pre-emption.

Measurement and validation

ROS bags and typed diagnostics — visualized live in Foxglove — are used to validate localization cadence, pose corrections, yaw behavior, encoder estimates, actuator response, and configuration changes before later phases depend on them.

Foxglove Studio showing live PreRunner telemetry: map, LiDAR scan, and navigation state
Foxglove telemetry during an autonomous navigation run — map, LiDAR scan, and transform tree.
Close-up of the PreRunner onboard compute stack: Raspberry Pi 5, IMU, and wiring mounted to the chassis
Onboard compute and sensor mounting: Raspberry Pi 5, IMU, and drive electronics.

Results and outcomes

The vehicle currently performs autonomous point-to-point and multi-waypoint navigation in a cluttered indoor environment, including U-turns and tight-clearance routes.

Bring-up, SLAM localization, and the first fixed-map Nav2 phase are functionally complete. Racing with Pure Pursuit, model-predictive control, and learning-based control remains ongoing and is not presented as a completed result.