Futuristic cars have long been a staple of science fiction -- from the flying cars of the Back to the Future trilogy to the ever-popular Bumblebee of the Transformers franchise. For anyone who has taken road trips, commuted regularly, or just never felt comfortable behind the wheel of a car or truck, the idea of a machine that can do the driving for you has countless benefits and appeals.
So it is not surprising that the recent initiatives by Google, Tesla, Ford, and others in tech and the automotive industry around creating fully functional self-driving cars have been met with such enthusiasm from the public. While highways fully populated by self-driving cars are still a ways down the road, self-driving vehicles have been advancing at a stunning pace due to initiatives from these companies and others around the world.
But how do self-driving cars work? What technology can account for weather conditions, human error, and the variables that require split-second decisions on every trip down the highway? And what kinds of skills and experiences are needed for anyone interested in trying to become a part of this exciting new wave of tech innovation? In this guide, we explore the basics behind how self-driving cars work, and some of the trends you can expect to see over the coming years.
Autonomous vs Automated vs Self-Driving Cars: What’s the difference?
Some of the confusion around self-driving cars are the various labels that are often used, interchangeably, to describe them. However, there are subtle but significant differences between the terms. A fully autonomous car would be self-aware -- capable of its own decision-making and functioning independently from human command. For example, if you command an autonomous car to “drive me to work”, the car could make its own decision and drive you to a friend’s house instead. A fully automated car, however, would follow orders and then drive itself, which is the trend that’s been making headlines over the past decade.
With this in mind, self-driving cars are actually not autonomous. A self-driving car has the ability to drive itself in some situations (and with some improvements, in every situation), but as the technology stands right now a human passenger must always be present to take control if needed. One of the most widely available examples of this tech for consumers right now are “lane recognition” and automated cruise control features widely included in new automobiles for public consumption. These allow human drivers to cede significant control during highway driving, for example, but are not practical for city driving or roads without clear and distinguished lanes.
OK, so how do self-driving cars work then?
Similar to virtual reality or augmented reality systems, which you can learn more about here, self-driving cars rely on sensors, actuators, complex algorithms, machine learning systems, and powerful processors to execute software. The main difference between these two emerging technologies are the complexities (and obviously, the inherent dangers) of successfully integrating these elements into a massive moving piece of metal.
At the basic level, self-driving cars create and constantly update a map of physical surroundings based on a variety of sensors located throughout the physical structure of the vehicle. Radar sensors monitor the position of nearby vehicles to assist with lane changes or speed control. Video cameras detect traffic lights, read road signs, track other vehicles, and look for pedestrians, mimicking the decision-making of a normal human driver. Lidar (short for light detection and ranging) sensors literally shoot pulses of light off the car’s surroundings and respond to the signals bouncing back to measure distances, detect road edges, and identify lane markings. Finally, ultrasonic sensors in the wheels detect curbs and other vehicles when parking.
But the sensors are only as useful as the software and integrated system that rapidly processes all of this data, organizes it, and responds to it (through guiding the steering and speed of the car itself). Obviously, this involves intensive calculations and machine responses that must match a human’s rapid reaction to changing road conditions and unexpected challenges (such as a child running into a road after a ball).
In a more technical sense, the software programs process the various sensory input, plots a path, and then communicates instantaneous instructions to the car’s actuators, which control the machinery providing acceleration, braking, and steering. Hard-coded rules, obstacle avoidance algorithms, predictive modeling, and object recognition help the software follow traffic rules and navigate obstacles.
What Challenges Do Self-Driving Cars Face Right Now
Now that you have a basic understanding of how self-driving cars work, you are probably wondering what’s keeping them from surrounding you on the highway or on your commute into a nearby city. Well, given the complexities and intensive processing needs listed above, there are several key areas where challenges still exist that require new advances in both the hardware and software components of the vehicles.
Lidar and Radar
Lidar is expensive and is still being designed to more accurately measure and report range and resolution. There are other issues with networking and processing the data -- for example, if multiple autonomous cars were driving next to each other, how do you avoid the cars interfering with each other (or misreporting another car’s readings as your own)? Likewise, security of the radio signals is only one challenge -- how do manufacturers ensure that the radio signals are powerful enough to avoid natural interference?
One of the biggest issues with existing technology on self-driving cars is the inability to account for changing weather conditions, some of which are distinct to certain geographical areas. Since so much of the existing tech is based on reading signs, curbs, and lane markings, what happens during heavy snow or rain that might obscure these features? While a human can use intuition and experience to navigate these conditions (even with difficulty), how can machine learning mimic that decision-making?
Regulations and Legal Enforcement Issues
Thus far, the federal government has largely left regulation and enforcement of self-driving cars to the states to decide. This has naturally led to significant conflicts between different states’ focus on what safety and operational rules are needed. For example, emissions requirements and taxation of existing automobiles are already significantly varied from state to state. So what happens if self-driving cars become ubiquitous -- will your car be legal in your state but not meet regulations when you drive to visit family?
Teaching Machines to Mimic Human Intelligence and Reasoning
Human drivers rely on intuition, implicit cues and non-verbal communication methods, such as eye contact or reading facial expressions, to make split-second judgement calls and predict behaviors. Anyone who has had a near miss with a pedestrian or irresponsible driver knows just how fast these decisions need to be made in order to safely operate a vehicle. While machine learning continues to make vast strides, at the moment teaching cars to truly think like humans is still largely in the realm of the theoretical. Can advances be made that help them achieve this level of reasoning and human intuition? Time will tell.
Limits of Existing Programming Languages
While modern programming languages like Python, Ruby, C++, Swift, and others have all proven able to operate systems and machines in ways that seemed impossible even a decade ago, the massive processing demands of self-driving cars are pushing these languages to their limit. Of course, as new languages emerge or experienced programmers continue to push these languages in new directions, some of the existing problems may be solved. But a lack of experienced developers (and the demands of other industries encroaching on the developers of self-driving cars) mean even more experienced programmers are needed.
So How Do I Get To Work In The Self-Driving Car Industry?
Obviously, with such a demanding set of needs and existing issues, technical knowledge and expertise is essential for anyone who wants to pursue a career working on bringing self-driving cars into the mainstream. But, even if you are a new programmer just beginning your programming career, don’t worry! The ever-increasing demand in this field means that if you can learn and gain hands-on experience, jobs will be out there waiting. Here are a few good tips to get started on that path:
- Take an online coding class -- there are some great options for taking online coding courses and building your knowledge of in-demand languages like Python that are becoming more and more common for developing data processing software like the programs that power self-driving cars.
- See what programs are available at a nearby college or university - Most major research universities and many trade schools have expanded their mechanical engineering, data science, and programming offerings to account for new industry verticals like self-driving cars. Explore the academic catalogue of the school you are attending or one you might want to attend to see if there is a program you can enroll in to build your knowledge base.
- Pursue an internship or read trade publications - the beauty of the modern Internet is the multitude of resources and opportunities available in fields like self-driving cars, with just a few clicks of the mouse. Consider pursuing an internship with some of the leading self-driving auto manufacturers to gain valuable hands-on experience and learn from the experts firsthand.