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. https://fosdem.org/2018/schedule/event/open_autonomous_vehicles/
If you happen to be in the area, please come and say hi!
The build instructions are now available on GitHub: here. This means you can start making your own O'PAVES car right now!
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.
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.
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:
The GitHub repository is now public: https://github.com/AdaCore/OPAVES
You will find all the hardware and software sources there.
Just a quick update to say that the GitHub repository is now public.
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:
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.
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.
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.
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 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.
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.
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 »