From MAE/ECE 148 - Introduction to Autonomous Vehicles
Jump to navigation Jump to search
Photo of the BroBots team, from left: Maria, Ibrahim, Eric, and Seph
The BroBots team. From left to right: Maria, Ibrahim, Eric, and Seph

Team Members

Eric Montejo

Major: Mechanical Engineering (spec. Controls and Robotics)     

Maria Santos

Major: Electrical Engineering (spec. Computer Design)     

Ibrahim Shalwani

Major: Mechanical Engineering (spec. Controls and Robotics)     

Seph Shia

Major: Mechanical Engineering (spec. Materials Science and Eng.)
Minor: Marine Sciences


We would like to thank these individuals for their support, without which this project would not have been possible:

Professor: Jack Silberman          

TA: Dominic Nightingale           

TA: Ivan Ferrier

We would also like to extend our thanks to the UCSD ECE Makerspace for their assistance and advice.

Robocar Design


The robocar assembly

The RoboCar was designed for accessibility and flexibility for fast prototyping, while maintaining optimal sensor suite placement. To optimize the functionality of the main sensors, the OakD stereo camera was mounted high on the back of the robocar to provide a wider field-of-view. The LiDAR was mounted low and near the front to provide an unobstructed 180° detection of obstacles.

The sensors, single-board computer (SBC), and other electronics were mounted to a custom chassis made of laser-cut acrylic and 3D-printed PLA plastic components. The acrylic baseplate is modeled on a pegboard system for flexibility in mounting components, and to allow for multiple cable tie-down locations. The entire chassis is mounted so that the baseplate can unlatch and pivot up on a hinge for easy accessibility to the underside of the baseplate, which allows for ease of maintenance and flexible prototyping. Since the LiPo batteries used must be maintained above a specific voltage level, the robocar was designed for easy monitoring of the battery charge level with an LED battery indicator that shows through the transparent baseplate, and allows for easy battery removal and attachment. For more on the 3D printed components, please see the Appendix.


The robocar was wired according to the following schematic, following a system where three major sections (the power supply section, sensor suite section, and the motor output section) were wired to the central Jetson Nano SBC.

Wiring diagram, depicted via Blender Nodes

Robocar Project


A more robust target-following system, that can tolerate loss of line-of-sight and continue functionality. Specifically, when line-of-sight is lost and the primary tracking protocol cannot be followed, the robocar will fall back on a secondary protocol (such as lane following)


  • The robocar shall follow a target
  • when the target is lost, the robot will fall back on a secondary protocol (following the track) until the target is visible again
  • After which the robot will continue to follow the target


Our team built upon the OpenCV-based lane-detection and navigation package by Dominic Nightingale. Our team created a modified target tracking protocol based on HSV color values within ROS2, and ran that in tandem with the original lane-detection and navigation protocol – and had the robocar preferentially select protocol between the target-tracking when available, and the secondary lane-following protocol. To do this, two ROS2 computer-vision target-tracking nodes were run in tandem (target tracking, and lane-detecting), and the python script would preferrentially select between which of the two nodes to follow. For optimal performance, both computer-vision nodes required PID tuning and calibration, so to improve the calibration experience, a system was included to save the calibration values to a file depending on which 'mode' the robocar was in.



The project was a success in that the robocar was able to perform according to all three requirements— tracking and following a target when visible, and falling back on the secondary (lane following) protocol when the target was not available.

The major challenges were due to troubleshooting, bug-fixing, and the limited timeframe. Since the scope of this project was limited to a proof-of-concept due to the available timeframe, this project has much potential for expansion. Our team has included several recommendations for future work to expand upon the intent of the project and improve functionality.


To build upon the intent of developing a more robust target-following system, future projects could incorporate the following recommendations:

  • While following the target:
    • Dynamic speed control
    • Passive obstacle avoidance
    • Active pathing/navigation to target via LiDAR mapping (ex. Dikjstra’s algorithm)
  • When line-of-sight to the target is lost:
    • Intelligently predict which direction to turn after rounding the corner (re-establish line-of-sight) via target motion before line-of-sight was lost
    • Target motion prediction via a Kalman Filter to predict where the target will appear on the other side of the obstacle, and move to that point direction



This project built upon the ucsd_robocar2 ROS2 package by Dominic Nightingale.
Our branch can be found here

Robocar CAD

All CAD files were modeled via Autodesk Fusion 360. 3D printed components were printed on a Lulzbot Mini with PLA filament, and acrylic was cut on a Universal Laser Systems ILS lasercutter. Equipment was courtesy of the UCSD ECE Makerspace.

Pivoting Baseplate

The baseplate was laser-cut in half-inch acrylic, and featured pegboard-style holes to allow for flexible and easy prototyping. The clear acrylic allowed for the battery indicator to be easily viewed from a top-down perspective. BroBot BasePlate.png

3D Printed Components

Stereocamera Mount

The stereocamera was mounted high and to the rear of the robocar for a better field of view. The mount utilizes the pre-existing mount points built-in on the OakD stereocamera to secure it. It also is reinforced at the base to mount to the robocar chassis with minimal wobbling. BroBot Stereocamera Mount2.png

Baseplate Hinge

The baseplate hinge was designed to attach to the stereocamera mount, while leaving clearance for the robocar's suspension system.
BroBot Hinge.png

Baseplate Tab

The baseplate tab was designed for ease of operation, and allows for one-handed use. When in the resting state, the baseplate rests on the bottom flange, and is secured down by the top lip of the tab. By pressing the tab inwards, the tab will flex, allowing the baseplate to be lifted with minimal effort.
BroBot baseplate tab.png

LiDAR Mount

The design for the LiDAR Mount was designed by Dominic Nightingale, and allows for the LiDAR to be easily removed and reattached via an included clip.
BroBot Lidar Mount.png

Jetson Nano Case

The design for the 3D printed Jetson Nano Case was the NanoBox sourced from Thingiverse, and was modified to allow for mounting to the baseplate.
BroBot JetsonNano Case.png