An open-source/open-data L3 highway autopilot system for modern cars. Initially being perfected on the Kia Soul EV
Branch: master
Clone or download
Latest commit cd123d7 Feb 3, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
data - Pytorch based model Feb 3, 2019
docs - Board BOM text files Jun 4, 2018
rviz - Switch transceiver to be multi process instead Aug 10, 2018
scripts - ROS2 no more Jan 29, 2019
.gitattributes - Working and tested feedforward control with test runs Aug 11, 2018
.gitignore - Pytorch based model Feb 3, 2019
.gitmodules - Get everything back up again Jan 29, 2019
LICENSE Initial commit Apr 17, 2018 Update Jun 13, 2018
requirements.txt - Sorta kinda working lateral control Jan 30, 2019


An opensource / opendata Level-3 Highway autopilot system for all modern cars. Think Tesla Autopilot but for your civic, corolla, kia. The idea is to initially perfect this on the Kia Soul EV (since Polysync graciously gives us a opensource/openhardware drive by wire kit) and then build open hardware drive by wire kits for other cars.

Getting started

Hardware requirements

Everything has been tested on real hardware. I know its possible to setup fake interfaces (like a vcan0) device but none of that has been tested.

Can to USB covertor

You need a CAN to USB convertor. I currently use the one from which is excellent if you flash the candlelight firmware onto it. The default SLCAN implementation wasn't usable for me. Once thats done you can start up the CAN interface on your system using:

sudo ip link set can0 up type can bitrate 500000

Toyota 2016-2017 Radar from Denso

You can pick these up on ebay. We will eventually support many radars but this one is easily available and known to work well!

Software Requirements

Opencaret is being developed and tested on:

  • ROS2 (master)
  • Ubuntu 16.04/18.04

Opencaret is built around ROS2. You need to get ROS2 from master since ardent has a bug with the launch system thats being worked on.


You also need to get all submodules after you pull:

git submodule update --init --recursive

to build:

ament build --simlink-install

then source the ros setup file:

. ./install/

The rest assumes that you have can0 up and running. The CAN setup is designed to start listening on all canX interfaces on your linux system.

launch the entire system. This currently means:

  • Working CAN bus controller
  • Working Radar controller

launch src/launch/all_launch.launch

you can observe radar topics with: ros2 topic echo /radar_tracks