Autonomous vehicles may seem to be a very noble concept for future mobility. But, in its essence, it involves a range of complexities. If one cast a critical look at the architecture and working principle of autonomous vehicles, nothing except complexity and artificial intelligence would be found. The general public may consider obstacle avoidance and path planning as just the advanced version of conventional vehicles. But those who are familiar with autonomous vehicles, they know that all this autonomy and intelligence comes at the cost of complexity. In its typical operations, the autonomous vehicle has to deal with the constant data feeding by the perception model, rigorous processing of information, and the intelligent decision making to forward commands to the vehicle control system.
The point to ponder directs to the question that what is the one thing that ensures coordination of such complex systems, and how is it ensured on such a vast scale? The simplest answer to it is Software Architecture. The main purpose to introduce software architectures in autonomous vehicles is to manage the complexities in the autonomous driving systems. It helps in the assessment of both the non-functional and functional attributes of the autonomous driving systems.
To have a better insight into software architectures, there is a need to look at what they offer and how can they help mitigate the complexity and safety-related issues of autonomous vehicles.
Software Architecture in Autonomous Vehicles
While the use of the software architecture in autonomous vehicles varies from company to company but for the sake of the overview, general considerations about AV software architecture will be discussed.
The software architecture in autonomous vehicles is recommended to be a sort of layered one. The foremost benefit of layered architecture resides in different layers where individual systems of the autonomous vehicle are mapped. These layers are responsible for fulfilling their respective responsibilities. By using this architecture, the division of different responsibilities is formed in the system, which consequently helps in better understanding and troubleshooting of the autonomous vehicle. Furthermore, such layers make the system more manageable and counter the system’s complexity. The general layer architecture can comprise of the input normalization layer, action planning layer, control layer, and output layer. Depending on the system’s constraints, these layers can further be divided into the sublayers. The general working mechanism of autonomous vehicle’s layered software architecture is as follow:
- Perceptions from the sensors and visual equipment such as the camera are passed on to the input normalization layer. This layer perceives this information and prepares it to be passed onto the action planning layer.
- The action planning layer receives the normalized inputs and begins semantic processing of the received information, such as acknowledgment of drivable lane. Now, based on the results of semantic processing, the action planning layer activates the path planning algorithm, which then determines the direction in which autonomous vehicle should head. The final output of the action planning layer, i.e., commands to decide the manoeuvre, is passed onto the control layer.
- The control layer decides that which commands shall be executed by the autonomous vehicle’s software, such as whether to active the acceleration algorithm or to trigger the turn left algorithm. The information about the selected command or algorithm is then passed to the output layer.
- The output layer is where the action part is involved. The output layer is responsible for the actuation of the system or in other words, hardware abstraction. For example, based on the outcomes of the input, action planning, and control layer, if it is decided that the steering system should be actuated, then based on this information, the output layer shall actuate steering as per defined steering angle and direction.
Given the autonomous vehicle models and features, it is possible to include the data logging and network layer too. While the network layer will assist in the communication and UI/UX interface, the data logging layer will help to maintain the logs of the itinerary and the overall operations of the autonomous vehicle.
Apart from focusing on the software architectures of the autonomous vehicles, it would be disastrous to ignore the safety considerations. When it comes to autonomous vehicles, reliability and safety are the two most sought features. There are multiple ways by which both safety and reliability can be ensured in autonomous vehicles.
Emergency Brake System
The emergency brake system should be made an essential part of the software architecture of autonomous vehicles. Given the importance of the emergency brake system, a separate layer can be defined in the software architecture of autonomous vehicles so that when triggered, it does not suffer any time lag.
Self-adaptation is another way by which the safety of the system can be ensured. Such mechanisms are capable of adapting to the required changes with the help of a feedback loop. With a feedback loop, the current status of autonomous vehicles can be incorporated in the ongoing computation so that computations related to steering angle and speed should be made more authentic and safer.
Besides both of these key safety considerations, a timeout mechanism can also be inducted in the action planning layer. This consideration proves to be helpful in the situation when no new image or data is being fed from the sensing environment and the vehicle needs to react reasonably.
The way complex systems operate in autonomous vehicles, the inclusion of software architectures is very much needed. With the use of layered architecture, not only do jobs have been segmented, but the system’s reliability is also expected to increase a lot. Each layer is responsible to do its job and then pass it on to the next layer. Another advantage of this layered architecture is the increase in processing power. From information processing to the control system, each segment will only do its designated job, thereby relieving them from the unnecessary burden. Along with all these considerations, safety should be prioritized. The acceptance of autonomous vehicles in the eyes of the general public is associated with the intense safety and reliability of autonomous vehicles.