It’s a dream come true: remote control of a real car. Besides being a lot of fun, a life-size RC vehicle has some practical applications, like performing rescue operations or delivering supplies to dangerous areas. For [Carter], [Dave], [Ryan], and [Sean], the dream became reality in the span of 24 caffeine-and-chicken-finger-fueled hours during an Ohio State University hackathon. They dubbed the system MagiKarpet because it sits in place of the floor mat and runs on pixies.
The plan was to control the throttle, brake, and steering of a Chevy Cobalt using a PlayStation controller. For added fun, a camera mounted high above the back bumper would provide a third-person view, and this feed would be displayed on a monitor in the backseat. Everything is controlled by an Arduino Mega. A beefy linear actuator works the brake and is attached temporarily with a band of Shapelock that slips around the pedal. The throttle is pushed by a lever attached to a car window motor. Another motor connects to the steering wheel with cables that can turn it 90° left and right. Although the build was successful, they ran into a couple of issues. But what’s a hackathon experience without a few problems?
The linear actuator was jammed for about an hour after some early testing, but they got it unstuck. The PS controller was borked, so they had to roll their own joysticks. The school wouldn’t let them actually drive it around because of safety (killjoys but we get it), so they put it up on a jack to demonstrate it for the judges. They took second place, though we can’t imagine what would have beat this. Check out the complete build video after the break.
You might remember these guys from last year around this time. They took first place at the same hackathon with Robottermilk Puncakes, a app-controlled pancake machine. Now that you’re hungry for pancakes, feast your eyes on this endless one.
One way to make this a bit safer (assuming there is any measurable safety as it currently stands) would be to have the brake depressed by a heavy spring, then use the linear actuator to push the spring back, releasing the brake. That way if there happaned to be some catastrophic failure, cutting power would cause the car to at least slam on the brakes.
The same thing could be done with the accellerator, but in reverse, by putting a spring behind the pedal that would cause it to fail with the throttle forcefully disengaged.
For the brakes, sure. Although I’m not sure what kind of accelerator your car has, but isn’t it already depressing when you let go of the pedal?
Yes, it should, but I am paranoid. :)
Slamming on the brakes in the event of a power-failure or other such emergency isn’t much of a fail-safe. To allow the machine to fail safely and gracefully, it ought to have a parallel electrical system providing steering, braking, emergency light flashing/signaling, & communications (but with an automated “Emergency Parking” feature based on sonar & machine-vision, programmed to:
1.) Release accelerator
2.) Flash lights to signal an emergency stop
3.) Apply brakes gently, slowing to safer speed
4.) Locate and maneuver into safe pullout area on shoulder
My 4 cents
Slamming the brakes is never the optimal solution, but if that’s all that’s left, it’s better than accelerating into a wreck.
There’s nothing that says you can’t have a secondary or ternary backup system that does all these automagical machine vision routines, but if the programming is locked and the car isn’t doing what you thought you programmed it to do, being able to cut power to the computer, having the car release the accelerator, and applying the brakes (while allowing direct remote control of the steering using a big servo or stepper or whatever if possible… or even just having it locked going straight ahead if that doesn’t work) is safer than just hoping that the accelerator isn’t stuck and letting it coast with no brakes.
At this point you are choosing between two things:
1. Risk of slamming the car into something by not braking hard enough.
2. Risk of having other cars slam behind the car by braking too hard.
There are limitations to this, even back up systems can fail, and you can’t expect the car to do everything magically.
I agree, a very hard braking isnt a great idea. If there’s a spring on the brake so as to brake by default if the electronics fails, then just don’t make it too strong, so it only brakes gently.
The thing about linear actuators is that they’re not really back-drivable though.
What I wad saying was that a spring should be pushing the brake pedal all the time. The actuator would press against the spring to let up on the brake. This would, in effect, make the brake’s state “normally closed” rather than a regular car’s state of “normally open.”
Too slow actuators. This is dangerous.
Yep- totally dangerous, we agree and would not drive this on roads or anything. That said, the actuators were all running at under 50% speed for testing.
I’ve always wondered when seeing these things, wouldn’t it be easier and more reliable (and therefore safer) to talk to the electronics which controls the car? Aren’t all these things drive-by-wire or at least servo assisted these days?
Anyone who knows more about cars able to comment?
At least the throttle is just a potentiometer connected to the ECU in almost every car built afer ~2000, but brake and steering are always directly mechanically connected for safety reasons and are only supported by ADAS systems like lane assist or emergency break assist.
Yeah. But lane-assist or auto-park will have control of the steering wheel. So you’d see the steering wheel move if you’d tap into the onboard electronics. So what?
Same thing for the brake. the anti-skid can lower brake-force that you’re applying to the pedal. The electronic traction control can apply brake. (before traction control the electronics may not have been able to apply MORE brake than requested from the pedal).
So from the on-board electronics you have control over everything you need.
True, but only on a few late-model cars. Definitely the exception rather than the rule.
Not just safety, most of the world requires a mechanical connection to the steering in a car.
Funny that a 300t+ airliner carrying up to 500 passengers is fly-by-wire and nobody seems to object :D
Sure, but there is also miles of regulation regarding the maintenance of that fly-by-wire system, where most states don’t have any maintenance regulations for personal vehicles. Even Virginia’s inspection regulations only touch on the most visible safety items. They aren’t going to have mechanics check all the wiring in your car every couple of years, and there is no way to legislate a “pre-drive checklist” that every person would have to go through (and maybe show documentation of?) to check that the wheels turn with the steering wheel equally in both directions (and any number of other things you’d need to check in a by-wire system).
The accelerator is the only drive by wire thing in nearly all modern cars. Breaks may be assisted, steering may have some form of feedback (unless you’re a volvo truck in which case you have drive by wire steering), but all in all these things are fed into the ECU but are still typically mechanically coupled.
Toyota uses an electric assist motor, so while the steering wheel is directly connected to the rack and pinion that moves the wheels, an electric high torque motor is directly connected and provides torque depending on the amount of force necessary to turn the wheel and the speed the vehicle is traveling. I bought 2016 Rav 4 limited hybrid and it has a lane assist feature that redirects the car back to the center lane if you drift too far or enter a curve at the wrong trajectory. The car basically sends power to the electric motor to turn it in the direction it wants to go, but the driver can override this by countering. This way it isn’t drive by wire but still allows the car to control things. I believe the brakes are operating in a similar electric assist fashion. Really cool stuff, love the car.
Every car that has park assist can physically turn the steering wheel and the same goes for anything with stability assist being able to control brakes.
And since many automakers are shifting towards electric power steering, it shouldn’t be very hard to hack it to be externally controlled.
It would not. The first problem is documentation. While most cars do have OBD II ports these days, it is only because of legislation demanding it, not because the manufacturers want you to be able to use the data there without buying their expensive tools. So the consequence is that only the bare minimum of the legally required commands and data are available through that port. The rest are either not available, not documented/trade secret or both. Also most cars have multiple CAN (and other) buses, which may not be all available.
Furthermore, most cars are not really “drive by wire” (in fact, it would be illegal in most places without getting a special waiver from the government). So things like steering and brakes need an actual physical actuator – the power steering and power brakes systems are not enough to actuate the controls alone. Throttle is often electronic in modern cars.
Because car makers are hostile to anyone trying to talk to these systems, so it would take a significant amount of time to reverse engineer those systems to control them. It’s not easy, the car makers do all kinds of things to protect revenue stream so you cant buy a used part from a junkyard and fix your own car. So electronic parts have a handshake that needs to talk to the BCM/ECM and refuse to talk if they were not married digitally with a handshake.
Lastly that car that was used does not have any of those features, you would have to do this to a very high end car to have the auto brake and auto park steering controls.
Fantastic, thanks guys!
That all makes sense.
Fill it up with explosives and drive it to the next DARPA office to claim your “weapon prize”of $103.000. :)
The Chevy Cobomb?
The Chevy Tricobalt ;)
http://memory-alpha.wikia.com/wiki/Tricobalt_device
I think this is little dangerous implementation. Actuators is too slow. No backups.
we were running our actuators at less than 50% speed, we wanted it to be slow enough to turn off if the code did anything weird.
Know your history:
https://www.youtube.com/watch?v=vURGKQinE0Q
Anyone else notice the 12AM mistake… broad daylight at 12 in the morning?
I can see this ending in tears . .