First there was [Geohot]’s lofty goal to build a hacker’s version of the self-driving car. Then came comma.ai and a whole bunch of venture capital. After that, a letter from the Feds and a hasty retreat from the business end of things. The latest development? comma.ai’s openpilot project shows up on GitHub!
If you’ve got either an Acura ILX or Honda Civic 2016 Touring addition, you can start to play around with this technology on your own. Is this a good idea? Are you willing to buy some time on a closed track?
A quick browse through the code gives some clues as to what’s going on here. The board files show just how easy it is to interface with these cars’ driving controls: there’s a bunch of CAN commands and that’s it. There’s some unintentional black comedy, like a (software) crash-handler routine named crash.py.
What’s shocking is that there’s nothing shocking going on. It’s all pretty much straightforward Python with sprinklings of C. Honestly, it looks like something you could get into and start hacking away at pretty quickly. Anyone want to send us an Acura ILX for testing purposes? No promises you’ll get it back in one piece.
If you missed it, read up on our coverage of the rapid rise and faster retreat of comma.ai. But we don’t think the game is over yet: comma.ai is still hiring. Are open source self-driving cars in our future? That would be fantastic!
Via Endagadget. Thanks for the tip, [FaultyWarrior]!
The most important part, IMHO, is the computer vision code. And that part is not open source, as there’s only a binary in the repository, called “visiond”. I even opened an issue there, and here is the response from geohot:
“At comma.ai, our goal is to be as open as possible without killing the company. For now, for business model purposes, we have decided to keep visiond closed. Just like how parts of Android are closed. This may change in the future. At least it’s free.”
source: https://github.com/commaai/openpilot/issues/4
Can you really call this open source when the github has binary files for the interesting parts :
https://github.com/commaai/openpilot/tree/master/selfdrive/visiond
What bothers me the most about this is the ease with which malevolent entitys are able to take complete control of the car.
That is why I will hopefully never need to drive anything with more than an ecu and maybe ABS in it.
You and me both, but I’m afraid the day is coming where we won’t have that option and even if we do we would be sharing the road with a significant number of these things.
Look into home built vehicles, i dont know about the US, but in Canada it is legal to build your own vehicle and even register it for the road. Yess there are hoops to jump through but this is hack-a-day, you can do it!
also if thats a bit too much, just get a kit car. if i had the funds i would go with the FF 818C.
Europe is ramping up on cities denying access to older cars, especially diesels but also some petrols.
It’s going to spread world wide with time.
Meanwhile VW are faking the emissions standards.
It’s a risk for sure. But so is letting a human drive a car. It comes down to which is more likely to cause you to crash.
It comes down to how much freedom you’re willing to give up for safety.
A car that can be controlled by a computer will eventually have the ability to be pulled over by a computer, stolen with a with a computer, tracked and profiled by insurance companies and law enforcement by a computer. Replace your own control with a computer’s and it will surely be taken from you one day.
I could care less either way because I probably won’t live long enough to see it happen.. But I hope my comment survives the test of time so I can say, “I told you so” from the grave! lol
Somewhere someone has on their gravestone, “I told you so, but you didn’t listen”.
CAN bus hacking has been going on for a long time, my 2006 Ford can have it’s ECU programmed over the CAN bus using a hand held controller (which gave a nice little gain of 30+kW)… what I think will happen next is car ECU’s (and other modules on the CAN bus) will become encrypted requiring a key exchange before any communications can take place.
John Deere tractors use the CAN bus for communications, and several of the units have required security codes for a long time. Especially the displays.
At a quick glance I thought the car was being controlled by a Nintendo DS.
Maybe I need to play tetris.
In that photo, it looks like there’s a triangular cut out for a lane departure warning system that has been removed.
2016 Touring edition,
“2016 Turing edition.”, you mean?
What you did there (%)
A ██████████
B ▏
A: Things I see
B: Things I do not see
Yet another project on github that is not actually open source. Thanks to luciocorrea and Jonathan P for pointing this out before someone gets suckered into this trap.
After all the gushing about hacker credz and badmouthing of firmware engineers at traditional car manufactures, I wait for HAD to take closer look at the quality of this safety critical piece of software and hardware that was supposed to be sold to consumers before the end of this year.
Read the comments on Ars Technica for a few starting points.
If you’d actually like to talk safety and self-driving vehicles, there’s a much more interesting benchmark with a lot more known about it. Article slotted for Monday morning.
I’ve been thinking a lot about self-driving and safety lately.
Looking forward to it.
The next product will interface with a Commodore 64 disc drive. Its name will be “comma eight comma one”.
What’s shocking is that they’re writing hard-realtime safety critical code in python. I wouldn’t trust my life to a software system with as many moving pieces as the python interpreter.
+1
I know this would be controversial to some, but Python is _not_ a language for mission critical transportation software. I worked in aerospace software and would never use a language like that. Some people will never understand the difference between crap programming and real software engineering. Python may be great for hacking, but lives shouldn’t depend on hacks.
Not that I agree with you, but either way, if the logic is sound, it would be trivial to convert the code to a different programming language.
Same here heck I’d even be a little weary of trusting it in simple process control applications such as controlling industrial refrigeration or tank heaters.
The Code that he’s using to interface with the CAN bus doesn’t do any sort of sanity checks other than checking to see if the brakes or accelerator is depressed.
https://youtu.be/PsLDLa0zPvU
Read SAFETY.md in openpilot, many of these things are addressed.
It is addressed, but not to the level that’s actual safe.
His rational behind not doing any hard safety on the steering is that it can only apply small amounts of tourqe, But if you were to continually send packets in a way that caused the car to shake, you’d end up with a “Death wobble” situation.
Also, applying 1/4 of the breaks on and off in rapid succession could cause an accident as well.
I think it boils down to trusing the closed visiond blob or not. It may do all the checks you can imagine there, or not. Even if it does, you have to fully trust it won’t purposefully crash into a tree or something, and no amount of defensive programming will save you or your car from that. It is simply allowed full control over the car and you have to trust it.
So I don’t buy parts of this guys’ rant.
And I say it is defensive programming that he (Charles Laing) wants to see, because he wants the code to basically check on itself, i.e. have main.c check on visiond. Sure, defensive programming is kind of the analogy of the full redundancy of all the systems in avionincs, and it may be a good idea (are there many famous incidents where the systems redundancy has saved aircraft? How about specifically electronics and software redundancy related incidentes? Or is that too low level for such data to be available?) But… he assumes that visiond is all way higher layers of processing than main.c which we can’t know, we don’t know how defensive visiond is.
It’s not self driving it’s driver assist enhancement which basically fails everywhere but interstate lanes and even there about 40% of the time..