How many computers are in your car? One? Three? Five?
Closer to 40. That’s for a mid-range vehicle. A higher-end car might have 100 computers, says UNC computer scientist Jim Anderson. Computers control a car’s ignition, transmission, brakes, cruise control, thermostat, air bags, and other functions that have switched from mechanical to electronic interfaces over the past 20 years.
If it takes 40 computers to run a normal vehicle or 100 to run a fancy one, imagine how many more it takes to run a car that drives itself. “Trunkfuls,” Anderson says. Some of these driverless vehicles exist in test versions—cars whose trunks you pop and see a pile of computer hardware.
The U.S. military once set a goal of making a third of its vehicles self-driving by 2015. Now that the year has arrived, the main problem with that goal is money, Anderson explains. Even if driverless cars worked perfectly, all those computer systems make them too expensive to mass-produce.
To get driverless cars on the road, you have to do more with less hardware. That’s why General Motors asked UNC to help simplify cars’ computing needs. This year, faculty and students will design new computing systems to do the data-intensive work of sensing the world around a vehicle and responding.
Computer science department chair Kevin Jeffay pulls up Activity Monitor on his office Macintosh. (On a Windows machine, this would be Task Manager.) On screen is a list of dozens of programs his computer is running all at once. The computer has to decide how much processing power to allot, and for how long, to each program.
You don’t have to be a scientist to know that how fast a computer performs can be unpredictable. Sometimes the cursor onscreen moves the moment you touch the mouse—sometimes it lags a little. But the computer has a great feature, Jeffay says: the person sitting at the keyboard. You, the user, wait for the computer to catch up.
You can’t have that kind of unpredictability in a car or a plane. When you design the computer systems in a machine that puts people’s lives on the line, you have to be able to promise the computer programs will run on a precise schedule, so brakes will brake on time and wings will deploy when needed.
At UNC and other computer science programs, researchers like Anderson, Jeffay, and their colleague Sanjoy Baruah have written algorithms that show how to prioritize programs for reliable performance in systems that must deliver on time. Companies now use some of those same UNC-designed algorithms to control electronics in cars, planes, and cell phones. Students trained here to build such algorithms go on to work at companies like Tesla, the electric-car maker.
But as vehicles and gadgets get more complicated, their internal activity monitors get more complicated as well, with lots of different programs needing to run in sync and on time. To create something like a vehicle that drives itself, Anderson says, designers usually add a separate computer for every different thing the vehicle has to do. “That way you don’t have to worry about the computations interfering with each other,” he explains.
But to bring the price down, you have to run more programs on fewer computers. So a big part of the team’s work is trying to build super-reliable systems out of mass-produced processors. Is that even possible?
“Sure,” Baruah says, without hesitating. “You have to accurately characterize the behavior of the components, and figure out what kinds of statements you can make about multiple devices running at the same time.” For example, one processor might fail, but you might find you can guarantee that several of them won’t fail all at once.
The scientists have to make sure they don’t overpromise how well processors will perform. You don’t want to claim that a car can sense an obstacle and brake more quickly than it actually can, for example. So when they’re designing systems, Anderson and Baruah’s team make conservative predictions about how fast programs will be able to run.
“The way you make up for those predictions is to have faster hardware,” Anderson says. “Computers are always evolving to be better, cheaper, faster.” Some of the computing requirements of driverless cars will get easier to meet in the future, simply because processors are becoming more powerful, he predicts.
One day, the roads will be full of self-driving cars, Anderson says. It’s not just a question of how fast the technology is ready, but of how quickly the law can answer questions of liability when the driver behind the wheel isn’t necessarily controlling the car.
“The major auto companies are predicting to have fully autonomous cars on the road by 2020,” Anderson says. “Are the laws going to evolve to let that happen? I don’t know.”