Today, we're going to take a look at a company named comma.ai, and their recent talk that explains how they convert normal cars into autonomous vehicles.On August 1, Comma.ai released the third version of their self-driving car software Comma Three.
So, what is this Comma Three? If you take a look at the front mirror, you'll see a phone with the road displayed. This is the comma device. It's equipped with cameras, and AI software than can understand the road. This device is connected to compatible vehicles, such as Toyota cars, and converts it into an autonomous car.
To explain it, they released a 6 hour conference: the Comma Con.
Before I send you to watch the conference, I'd like to tell you what happened in the first 15 minutes, where their Hardware Engineer Robbe Derks explains how to actually take control of any vehicle and make it autonomous.
Comma is a company that fascinates, and I know it because everytime I write an email about them, I receive a lot of replies from my best readers telling me how excited they are.
So today, I'd like to share with you a few notes from this presentation where you'll learn how to make any car that has a Cruise Control and Lane Keeping Assistance features autonomous.
Let's take a look at Comma Three.
How Comma Three Works
In the summer 2021, I was in Ibiza experimenting a rented Peugeot 3008. While I was there, I noticed how it's very different from the Audi A1 that I drive when I'm in Paris. Somehow, I need to press the pedal differently on this car (yes, it wasn't all fully autonomous).
So the question naturally comes: How does Comma deal with taking control of over 100 different cars, without having the problem with each car being different from brand to brand, and sometimes model to model?Comma.ai's Hardware Engineer Robbe Derks explains how it works in 4 steps:
- Connect to the CAN BUSES
- Figure out which message is which
- Sending better control messages
- Make sure it's safe
1. Connect to the CAN Buses
The first obvious step is to connect your algorithms and computer to what's called the CAN buses.
👉 "CAN bus" means Controller Area Network and it's a way to allow microcontrollers and devices to communicate with eachother.In order to connect to ANY car, we must design an architecture that will work with ANY car. Here's comma's ECU graph, that works independently of the type of car used.
To connect to the car, Comma is plugged via the ADAS Camera and Gateway. They put their device right below the front mirror, where they can connect to most of the car.How does that work, more precisely? Here's the graph they use, to tell which component communicates with what.
As you can see, the camera is connected ot the rest of the car, and the OpenPilot to the CAN-TO-BUS interface.
- In the OpenPilot Device part, you're going to get all the fancy Machine Learning algorithms, such as lane following, object detection, tracking, and more...
- And the CAN-TO-USB interface is what you see on the right that connects the OpenPilot device with the car. Technically, it's an ODB II port with 3 CAN buses, and a USB connection to the OpenPilot Device.
- Now, fast forward a few years since the first version, and you have car harness connectors, built for every type of car.
In their experiments, they figured out that they can connect to any BOSCH car using the BOSCH harness, the TOYOTA with the TOYOTA harness, and so on.
Now, let's move to the second part; sending messages.
2. How to send a message?
Messages are the actual CAN values you send to the car. In every self-driving car algorithm, the Control part is supposed to generate an acceleration value and a steering angle.
But your car doesn't understand "turn right 30 degrees". It understand a series of CAN messages.
Here's the interface they came up with, called the Cabana, where you can see every CAN message on the left, and the actual event on the right.
To figure out how to send the right messages, they took the cars for a drive, and then started to display the CAN messages based on the events happening when they were doing an action, such as accelerating, braking, ...This led them to understanding how to convert degrees and m/s² into CAN values.
3. How to send the the "Control" message?
The next part is about the control messages generated by the OpenPilot software. OpenPilot is where all the Machine Learning happens, and it's divided into the following demons.
In a later article, I'll get in more details of how the OpenPilot works, but for now, let's consider that there are Machine Learning models running as I explain in my courses and that they generate values.
4. How to make sure it's safe?
Finally, we need a safety plan to prevent the car to spin the wheel like it's a casino roulette.Comma implemented two rules:
- The Driver needs to be attentive and ready all the time
- The Vehicle must not alter its trajectory too quickly for the driver to be able to take overFor that, they implement limit rules, like this acceleration example, where you can't accelerate outside of the range [-3 ; 1.5] m/s².
If any value calculated is in the red, the message is blocked.
👉 With these 4 steps, we're able to take control of any car that is drive-by wire!
I hope this introduction helps you understand better! Now, you can build a device that is plugged to any car, and actually take control of your grandma's new car!
Here's the 6 hour conference if you'd like to learn more about Comma 3, but I'll likely cover the most important parts in some future emails.