Open Platform for Autonomous VEhicle Systems

Similar projects worth following
O’PAVES aims at providing an open source/open hardware platform for the prototyping and development of autonomous vehicles. For the first step of this project, the goal is not to develop a fully autonomous car, but rather a framework that will open the field to a broader audience by tackling the electronic and real-time control software.


  • 1 × STM32F405 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 6 × Pololu VL53L0x Time-of-Flight Distance Sensor
  • 1 × BNO055 IMU
  • 1 × RN4871 BLE module
  • 1 × TB6612FNG DC motor driver

View all 12 components

  • O'PAVES at FOSDEM 2018

    AdaCore01/30/2018 at 12:45 0 comments

    Every year, free and open source enthusiasts gather at Brussels (Belgium) for two days of FLOSS-related conferences. FOSDEM organizers setup several “developer rooms”, which are venues that host talks on specific topics.

    This year, we will present the O'PAVES project in the Embedded, mobile and automotive room at noon Sunday the 4th of February.

    If you happen to be in the area, please come and say hi!

  • The build instructions are on GitHub

    AdaCore11/29/2017 at 11:30 0 comments

    The build instructions are now available on GitHub: here. This means you can start making your own O'PAVES car right now!

  • New version of the hardware (based on the Crazyflie 2.0)

    AdaCore11/16/2017 at 17:11 0 comments

    Instead of having our own STM32F4 micro-controller circuit, this new design uses the Crazyflie 2.0 nano drone from Bitcraze. The drone is plugged on the O'PAVES board using its extension port. This means that the board is really easy to build (no SMT soldering). Here's a picture of the first iteration of this new design:

    You can also see that the motor is different. The pervious version used a single motor with the two rear wheels fixed on the same shaft. This means the two wheels have to turn at the same speed which results it poor cornering. That's why cars have differential. It's difficult to have a differential on such a small car, it would increase a lot the complexity of the design. For this new version we use a dual motor gear box, which means that each wheel has it's own motor and can turn at a different speed than the other. This improved a lot the cornering as you can see here:

    The dual motor configuration might also allow us to implement active differential, where we can increase the power in one of the two motors to make the car turn tighter.

  • First hardware prototype

    AdaCore07/21/2017 at 13:49 0 comments

    We just finished the assembly of the first hardware prototype and we would like to take this opportunity to walk you through the design.

    The main and most remarkable element is the PCB. Inspired by the Crazyflie flying PCB or the FR4 CNC mill, we are using the circuit board as mechanical and structural element of the design. Not only it holds the electronic circuits, it’s also the frame of the car where the mechanical parts (steering, motor, bumper) are attached.

    Some of the advantages of using the PCB as a frame are:

    • Clean design: We can cleanly route electronic signals to every part of the vehicle without having a mess of wires.

    • Simple and cheap to manufacture: Nowadays, PCB manufacturing is available to everyone for a relatively cheap price.

    The remaining mechanical components are either off the shelf parts (RC servo, DC motor and gearbox) or 3D printed parts in PLA (steering assembly, rims) and NinjaFlex (tires).

    For the electronic we have an ARM Cortex-M4F (STM32F405) as the main processing unit, five VL53L0x distance sensor to detect obstacles around the car, an inertial measurement unit (BNO055), a Bluetooth Low Energy module for remote control (RN4871), a DC motor driver (TB6612FNG) and two step-up/step-down converter from Pololu (5V and 3.3V).

    Even if the assembly requires some solid soldering skills for the LQFN package of the microcontroller, we think that this design meets the goal of providing a platform that is affordable and easy to reproduce. The total cost of all the components is below 200 euros.

  • Quick status update

    AdaCore06/14/2017 at 16:07 0 comments

    Here's a quick update on the status of the O'PAVES project.

    On the hardware side, the first prototype is 95% a success (see the picture attached). The micro-controller is running fine, the car can move and turn, the different sensors are providing data.

    A second version of the electronic board is on the way, with a couple of fixes and the battery moved to the front to put more weight on the front tires and therefore improve cornering.

    Of course there are still a ton of problems that might occur when we turn on everything together. Like noise coming from the electric motor that would interfere with sensors signals. But this is a good first step.

    On the software side, we've started the development. Here's an overview of the different "modules" of the system:

    • Communication
      • Talk via Bluetooth with a smartphone app that will allow us to remotely drive the car.
      • Talk with an external computer (probably Raspberry Pi mounted on the car) that will provide - eventually - the computer vision and artificial intelligence for autonomous driving.
    • System value database and logging
      This part will allow to share data between the micro-controller and the external computer and it will also provide logging of the data over time.
    • Sensors
      We have various sensors on board to know the distance of obstacles around the car, the speed of the wheels, the battery level or the motion of the car (IMU). This part is responsible for acquiring the sensors data and processing it.
    • Advanced Driver Assistance Systems (ADAS)
      This module will use sensor data to predict a potential collision and provide guidance on how to avoid it. Given the sensors that we have, the avoidance will be limited to emergency braking, i.e. stop the car before crashing into something.
    • Control
      This module drives the motor and steering according to the pilot's command, or ADAS command in case of the emergency braking.
    • Monitor
      Watches the system and handles errors or faults report. For instance stopping the car if the connection with the remote control is lost for too long.

    The GitHub repository is now public:

    You will find all the hardware and software sources there.

  • The repository is now public

    Fabien-Chouteau04/14/2017 at 08:42 0 comments

    Just a quick update to say that the GitHub repository is now public.

    Fork me on GitHub

  • Demonstrator requirements

    AdaCore12/22/2016 at 15:59 0 comments

    Autonomous vehicle challenges

    O’PAVES aims at providing an open source/open hardware platform for the prototyping and development of autonomous vehicles. For the first step of this project, the goal is not to develop a fully autonomous car, but rather a framework that will open the field to a broader audience by tackling the electronic and real-time control software.

    Inspired by the different autonomous vehicle competitions around the world, we identified three main challenges that should be addressable by the platform:

    • Lane following
    • Obstacle avoidance
    • Autonomous parking

    During the design of the platform, it will be important to keep those challenges in mind to make sure that we provide the tools (sensors, interfaces, computation power, etc.) that will allow users of O’PAVES to develop algorithms addressing them. However, we do not plan to actually implement lane following and obstacle avoidance as part of this one year project, the time frame being too short.

    Active Safety Subsystems

    To use the car to its maximum performance while keeping it in a safe state, the O’PAVES platform will provide three active safety subsystems operating between the driver and the car.

    These systems will make sure to keep the car in a safe and controlled state, potentially by overriding the driver's commands. The driver could be a human operator or an artificial intelligence, both will benefit from this extra safety and control.

    Anti-lock Braking System

    During an emergency braking, the force applied to the brake discs might be so strong that the wheels stop turning while the car is still in movement. The wheels then skid on the road surface, reducing control of the vehicle while increasing braking distance. The Anti-lock Braking System (ABS) will override the driver's command and lower the braking force until the wheels regain traction. This is now a common and unavoidable safety feature of modern cars, it’s even mandatory for all passenger car sold in the European union since 2004.

    Requirements for the O’PAVES platform:

    To implement ABS in our platform, we have to be able to control the braking force applied to the wheels and measure the rotation speed to detect a blockage.

    Traction Control System

    While ABS avoids loss of traction during braking, Traction Control System (TCF) does the same during acceleration. This allows for maximum performance while keeping fine control of the vehicle’s trajectory.

    Requirements for the O’PAVES platform:

    To implement TCS in our platform, we have to be able to control the acceleration force applied to the wheels and measure the rotation speed of the wheels.

    Emergency braking

    Emergency braking is a safety system detects an imminent collision and automatically brakes to avoid the collision. The detection is done by measuring relative distance from the car a surrounding objects.

    Requirements for the O’PAVES platform:

    To implement the emergency braking system in our platform, we have to be able to know the distance of obstacles to the front and rear of the car.

    Hardware requirements


    For the O'PAVES project we want to develop a platform that is as close as possible to a consumer car to demonstrate the relevance of the tools and technology that we are going to use. On the other hand we want to keep the cost low and the platform easy to reproduce/make.

    To satisfy those two very different constraints, we will use a scale model car (1/10th, 1/12th or 1/18th) with rear-wheel drive and two front steering wheels. Whether we will use an off-the-shelf remote controlled car or use 3D printed parts is to be determined during the hardware development phase.

    Drivetrain and encoders

    Direct drive, no differential

    In order to make the base platform easy to create, we chose to keep the drivetrain simple, and thus use a direct drive with no differential. This direct drive with no differential is a simple component that is composed on an axis (on which the rear wheels are fixed) and either a central motor or a gearing mechanism allowing the motor...

    Read more »

View all 7 project logs

Enjoy this project?



VolksValconry wrote 12/10/2018 at 11:42 point me the tools your project

  Are you sure? yes | no

malvasio.christophe wrote 04/15/2018 at 16:00 point

why doing a car ?

a 4x4 or a 6x6 ... 1 motor to turn all the wheels in the same direction; 1 motor for for/back/ward

no need of differential......

  Are you sure? yes | no

AdaCore wrote 04/16/2018 at 09:19 point

Hi Christophe, we decided to have a vehicle that is representative of what you see on the road today.

  Are you sure? yes | no

aogrcs wrote 04/29/2017 at 15:42 point

I'm using macOS 10.12.3, gnat-gpl-2016-x86_64-darwin-bin, when I build the project opaves_mki.gpr, it always said that no compiler specified for language ada ignoring all its sources, how could I resolve it? Thanks

  Are you sure? yes | no

Yannick Moy wrote 05/09/2017 at 02:29 point

The message with the most recent native compiler is more explicit:

Error: no compiler found for language 'ada', target = arm-eabi, default runtime

This is because the project file includes (through a sub-project file) the following line:

for Target use "arm-eabi";

so you need to install the corresponding cross compiler for ARM, from Although we only build and distribute versions of this cross compiler for Linux and Windows, not for Mac.

  Are you sure? yes | no

AdaCore wrote 05/09/2017 at 09:15 point

That's right, thanks Yannick. I also want to mention that we barely started the software development so there's almost nothing to see at the moment :)

  Are you sure? yes | no

aogrcs wrote 05/14/2017 at 15:17 point

Thanks, Yannick. I did it for Windows

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates