Autonomous Vehicle Control System

The self-driving car decides on the command signal to subsystems (throttle command, brake command, steering command) based on large collection of sensors. Each sub-system then would have its own closed or open loop local controllers to achieve the command signals. This requires the car to have an electronically controlled powertrain, and an electronically controlled steering system (which is called an “x-by-wire” control system). The biggest challenges in this technology is the accurate detection of other cars and objects around the car and road conditions.

This is referred to as the “perception” problem in autonomous driving. If we can accurately determine the actual road conditions, then in the software we can decide what to do. The intelligence of the self-driving car is the sensors and software running in the on-board embedded controllers (multiple embedded controllers with a local communication network, such as CAN bus) as well as the server software running in cloud computing platform on internet-connected supercomputers to assist and supervise millions of self-driving cars. It is important to note that the software involved in autonomous vehicle control involves software running on typically embedded controllers on the vehicle and software running on servers on the internet which communicates with the embedded controllers in real-time.

autonomous driver assistance systems

Current developments are grouped under the name of “autonomous driver assistance systems” (ADAS).

It is a huge challenge to develop sufficient confidence in embedded software to make completely autonomous control decisions and take control actions. Therefore, the current trend is to release these capabilities as autonomous (or automatic) driver assistance systems (ADAS). The ADAS software module are developed as real-time embedded signal processing algorithms that take the processed sensory data (GPS, camera, radar/lidar, ultrasonic sensors, etc.) and make decisions, then send control signals to the engine-transmission/EV motor-drive, brake, and steering sub-systems. Standardized approaches to software development are developed and practiced (i.e. AUTOSAR) in terms of communication between modules and software layers and are intended to increase reliability and reduce development costs by increasing reusability.