Newsflash: A Bunch of Arduinos is Not an Autonomous Car

Nobody’s perfect. Sometimes you’re up late at night writing a blog post and you stumble upon an incredible story. You write it up, and it ends up being, well, incredible. IEEE Spectrum took the bait on this video (embedded below) where [Keran McKenzie] claims to have built a self-driving car for under $1,000 AUS with Arduinos.

The video is actually pretty funny, and we don’t think it’s intended to be a mass-media hoax as much as a YouTube joke. After letting the car “take over” for a few seconds, it swerves and [Keran] pretends to have hit something. (He’s using his knees people!) There are lots of takes with him under the car, and pointing at a single wire that supposedly makes the whole thing work. Yeah, right.


home-built-autonomous-ford-focus-for-under-1000-li86hwunrfmmp4-shot0004We were a bit bummed, though. We don’t think you can even reliably interface a sensor system with the steering wheel, accelerator, and brakes for as little as one grand, but we would have been entirely happy to see it done. We’re not saying that the software to run an autonomous car is the easy part, but we’d love to have a hack at it if the hardware were affordable.

Anyway, if you’re looking for a real autonomous driving experience, we recommend starting by hacking RC cars and giving them substantially bigger brains than an Arduino. Once you’ve got that working, making progress to a real car is doable, but expensive. And it helps to be [geohot].

And lest you think we’re all holier-than-thou, check out our most embarrassing post ever. We could just curl up and die. Feel better soon, IEEE Spectrum!

Thanks [jpiat] for the tip!

48 thoughts on “Newsflash: A Bunch of Arduinos is Not an Autonomous Car

  1. You do realize automated car all it does is senses with supersonic sensors and cameras to steer and accelerate, right? It is totally doable with arduinos, you just need proper hardware to controll the hydraulic steering and brakes, and some clever code to map the way around objects, maybe you will keed more than an arduino for the cameras to do the image processing, but mostly is still doable with arduinos

    1. This is laughable at best. Have you ever even heard of a real-time system? What makes a system real-time? I don’t even know what a “supersonic” sensor is, but if you want to collect data from 1000 of them, filter the data points, and then compile all those data points into a usable data structure for steering and control inferencing only using arduinos, then good luck. How many would it take? How would you interface them all together? Look up the Google Car. It has FAR more than some array of distance sensors on it. Ever heard of lidar? Does Arduino even have the CPU cycles or the memory to even read-in all that data? Let alone do all the state space maths to determine control outputs? Does Arduino have CAN controllers? A deterministic kernel?

      Totally NOT doable with Arduinos. Look up control systems and autonomous robotics 101 textbooks and papers. Then you might see that Arduinos do not belong on a 3,000 lb machine.

      1. I’m going to argue that while it would be very unpractical, it would be possible to use an 8-bit 16Mhz atmega328 arduino (although using real C/assembly coding not the arduino IDE) for an autonomous car provided you had supporting hardware. Most things done in code can be done with dedicated circuits. The Appollo 8 mission used a 16bit processor effectively running at just over 1MHz to send a spaceship initially weighing about 30,000kg with fuel to the moon and back (https://en.wikipedia.org/wiki/Apollo_Guidance_Computer). Arguing semantics, I think it WOULD be doable.

        1. you forgot to take all the computers in the mission control room on the ground into account. you know, the room full of displays and people sitting around them ? this is where the heavy computational stuff was done.
          Also, there are not so many other traffic users in space that could suddenly pop up in front of the vessel. playing children ? rain ? wet roads ? summer/winter ? different lighting conditions during day/night ? brids, deers and other pesky critters ? braches/trees on the street during stormy days… the task is simply not comparable with flying in space.

          1. AND do not forget all the engineers and technicians sitting in front of all this screens in the control room and the astronauts themselves. I would consider this mission nearly the opposite of “autonomous”: A lot of human “drivers” and navigators, the computers had to do, what even highly trained humans were not able to do sufficiently fast or accurate.

            But i think, theoretically the autonomous driving could be done with a “bunch” of arduinos – if you consider a five figure number as “a bunch”. :-) Image processing can be done highly parallel. But of course this is totally unpractical and the amount of communication would be enormous. The power consumption probably also :-)

        2. If, by supporting hardware, you mean a multi-camera image recognition engine, radar sensor processor, deep learning engine, mapping and navigation engine etc, and all the ATMEGA was there for was to boot them in the right order then you might be right.
          The Apollo system didn’t have to worry about traffic, relied on pre-computed data generated by ground based mainframes and first time out couldn’t handle the workload.

        3. Well I used the apollo and lunar lander as examples of you can do wuite a lot with a relatively stupid computer, BUUUUUT…. what they did would be the equivalent of hooking your GPS up to the throttle steering and brake and letting it “have at it” regardless of what else was on the road, or in the way. or unplanned road closures etc.

      2. Define “Arduino” The Due has a CAN bus controller but needs a transceiver, I know for a fact there is a CAN bus shield and I’ll be slapped stupid if there isn’t SOMETHING that you can code for in the Arduino IDE that has a controller and transceiver either on chip or on board.
        Having established that an arduino can talk to the CAN bus, you are right a single 8-bit arduino is probably at it’s limit just acting as a bridge for a drive by wire system (though that would still be a hell of a thing to see)

    2. This is actually not as silly as it first sounds. If you could get enough information about the power steering and engine control systems (by, e.g., having worked for a car company), interfacing an Arduino to it should be possible. And yeah, you could make it work like those a typical small robotic car, running forward and changing direction when it hits something.

      Now someone should actually do this, let it run in a safe area and it would be an immediate youtube hit :)

  2. Good way to go!
    Actually I’ve done exactly the same thing on my father’s helicopter, but of course with a few more arduinos and cameras! I’ll be posting it on youtube asap! :D

  3. arduino (8 bit mcus anyway) is terrible for any kind of complex real time control system. i implemented kalman filtering for an inertial reference and got a blistering 4 updates a second.

    1. Just imagine that almost all the Multirotor’s aka quadcopters used and still use a measly atmega to do everything(decode PPM signals, read acc, gyro, magnetometer/compass, generate PPM for the ESC’s, even gps waypoints), search for Multiwii and aeroquad and go read some decent code please.

    1. Look at the gearstick, it’s in reverse. He’s filmed whatever ford call their auto parking mode and played it backwards.
      As for interfacing an arduino with the brakes, stearing etc. that would be fairly easy if you have access to the CAN database. Modern power stearing is electric, accelerators are now fly by wire and abs is capable of stopping a car without driver input.
      However the self driving prototype i’ve seen requires 4 x i7 processors to operate.

  4. This car as auto-parking. This means it have automated steering and transmission control, so should not cost that much to make it auto-drive, but I don’t believe he did it with a few cameras and Arduino.

    1. You’re right! That’s how [geohot] is doing it as well — parking assist + traction control = steering, gas, and brakes. I stand corrected. Maybe it _is_ just the software that’s interesting. Very cool.

      No way it’s Arduinos all the way down.

  5. My brother was modifying his car with a replacement steering rack from the same model one year later. The mechanics fit fine, but the CAN bus control addresses were changed.
    So he wedged an Arduino in between the plugs and did the recompute on the fly. This was only a temporary fix until a moded ECU was installed
    Yes you can “drive” a car with Arduino pretty easily. Should you? No.

  6. “We don’t think you can even reliably interface a sensor system with the steering wheel, accelerator, and brakes for as little as one grand, …”

    I was under the impression that this is doable in certain models that are 100% drive by wire. All you have to do is tap the primary data bus (CAN, yes?) and do considerable reverse engineering.

  7. Never mind the Arduinos – an “Autonomous Car” today (regardless of technology used) is not (functionally) that at all! Why? Regulation and Corruption: Even if Autonomous Car technology is possible, a truly autonomous vehicle will take years (if not decades – or forever) to get past Greedy Trial Lawyers, Labor Unions, a corrupt and dysfunctional government-run Patent Office, and Big Government Tax Fiends – before they are real (not to mention affordable).

    1. Trial lawyers don’t make any money unless there’s a load of wrongful death suits, auto unions don’t make as much money to stop it as the case when every current car is made obsolete overnight, so I see neither of those having incentive to drag it out. Manufacturers work around the patent office all the time so not seeing why that’s a bigger than usual problem…. and government should be happy that they’re getting purchase tax on a 40k car instead of a 25k one.

      Though going with the socialism only for people with means school of thought that’s been prevalent here recently, maybe undertakers could sue the gov due to 3000 less customers a year from highway accidents. Because the world owes you a living, unless you’re poor, then it doesn’t.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s