Skip to content
Main branch for BARC related code
JavaScript Python CSS Julia C C++ Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Berkeley Autonomous Race Car (barc) Repo

The Berkeley Autonomous Race Car is a development platform for autonomous driving to achieve complex maneuvers such as drifting, lane changes, and obstacle avoidance. A 1/10 scale RC car and an embedded Linux computer make up the hardware platform of the project. This project aims to be fully open-source. The data collection process is cloud-based and brings new dimensions to the Vehicle Dynamics and Control Theory teaching and research world.

This site is home to the repository. The main site for the project is here. Although several directories contain their own README files, all of this information has been consolidated in the Github Wiki.


The primary folders in this repository include

  • docs
    • Overview about the mechanical, electrical, and software deign of the vehicle. Descriptions of the vehicle models used for some control algorithms
  • CAD
    • DWX files for fabricating the deck and side brackets for the chassis, and STL files for fabricating the sensor mounts (e.g. hall effect sensor, camera, ultrasound) and the cover for the odroid.
  • Dator
    • Web server for cloud robotics. Provides a standard way to record data and events from one or more local computers for later analysis. Based on this repo from Bruce Wooton
  • arduino
    • Files to program the arduino to (1) send commands to the electronic speed control (ESC) unit and the servo, and to (2) acquire measurements from the encoders and ultrasound sensors
  • scripts
    • Bash programs that set up environment variables and launch the local server upon boot
    • Useful MATLAB scripts for processing ROS bag file. The bag files store all the message data (time stamped sensor measurements, actuator commands, etc) during an experiment
  • workspace
    • Robotic Operating System (ROS) workspace that contains the barc package. This package holds the source code to control the vehicle using the ROS framework

All software to control the vehicle resides in the Arduino and Workspace folders.

Getting started

  1. Get the parts, list
  2. Flash the odroid, instructions
  3. Assemble the car, instructions
  4. Charge the battery, instructions
  5. Connect to the RC remotely, instructions

You can also scroll through the material under our docs section to find other useful information

Useful resources

Recommended reading and resources

Student projects

Potential issues

Bad IMU magnetometer readings

The magnetic field around car, perhaps from the motor or aluminum deck, may interfere with the magnetometer readings, meaning the roll, pitch, yaw measurements may be off

Wrong internal clock time / date

The time and date settings on the odroid may be incorrect. This may be because the Real Time Clock (RTC) battery is not connected or has a loose connection. To update the date / time settings, ensure the RTC battery is firmly connected, and ensure you are connected to the Internet via wifi or ethernet. Next, open a terminal and run the following network time protocol (ntp) commands

sudo service ntp stop
sudo ntpdate -s
sudo service ntp start

If you have a "no server suitable for synchronization found", your hosting provider may be blocking ntp packets. Refer to this community question for more information

You can’t perform that action at this time.