Fully Autonomous ROS2 Kid's Electric Jeep

UC San Diego — MAE 148 · Fall Quarter 2025 (September – December)

Code


Overview

The goal of this project was to transform a full-size kid's electric Jeep into a ROS2-controlled autonomous robot platform, providing a larger robot car base for future MAE 148 final projects. All stock electronics besides the drive motors and batteries were replaced with custom robotics components. The result is a vehicle that is fully controllable via ROS2, with closed-loop steering, skid steering, forward/reverse drive, and a hardware emergency stop.

RoboJeep full car
The completed RoboJeep platform.

Team


Accomplishments


Hardware

⚠ Warning: Charge the battery regularly — there is no undervoltage protection. It should always stay above 22.5 V. Pull out a power cable at the 24 V splitter and use a multimeter to check.
ℹ E-Stop: The emergency stop is the top-right button on the remote; the green light indicates it is triggered. All H-Bridges require a 5 V enable signal to move. If nothing moves, check that the E-stop is not triggered (red LED on relay board = triggered). All enable wires are yellow.

Electronics

Wiring

RoboJeep wiring diagram
Full wiring diagram for the RoboJeep platform.

Mechanical

Custom 3D-printed brackets were designed to mount all electronics. A printed steering spacer was also added to take up manufacturing tolerances in the steering assembly, significantly improving steering accuracy and repeatability.


Software

Quick Start

1. SSH into the Jetson

ssh -Y jetson@ucsdrobojeep-148-01.local

2. Start Docker container

docker start test_container
docker exec -it test_container bash

3. Build and launch (custom bash functions pre-loaded in ~/.bashrc)

# Build the workspace
build_robojeep

# Launch all nodes
launch_robojeep

The left joystick controls steering; the right joystick controls throttle and skid steering.

ROS2 Package Structure

robojeep_ws/
├── src/
│   ├── robojeep_msgs/            # Custom message definitions
│   ├── robojeep_base/            # Control logic, Ackermann + tank steering
│   ├── robojeep_arduino_bridge/  # Serial communication with Arduinos
│   └── robojeep_bringup/         # Launch files and robojeep.yaml config

Debugging Topics

ros2 topic echo /joy              # Raw joystick input
ros2 topic echo /cmd_vel          # Velocity commands
ros2 topic echo /steering_cmd     # Steering angle commands
ros2 topic echo /wheel_cmd        # Wheel velocity commands
ros2 topic echo /serial_status    # Formatted serial commands to Arduino

Challenges


Demo Videos

Full system demo

Steering closed-loop control


Gallery

Front electronics

Front electronics (without battery)

Rear electronics

Rear electronics

Wheel encoder

AS5600 wheel encoder mount

Steering encoder

REV absolute steering encoder


Future Work


← Back to Portfolio