Autoware


Autoware is a Japanese open-source software operating system for autonomous vehicles. It is based on Linux and the Robot Operating System.

Overview

Autoware was jointly developed by Shinpei Kato while he was an associate professor at Nagoya University, in collaboration with Nagasaki University and the National Institute of Advanced Industrial Science and Technology. It is designed for the purpose of autonomous driving on public roads in urban areas.
Its design philosophy is modeled after Linux, with an emphasis placed on being open-source from the beginning of its development. As of 2018, development is led by The Autoware Foundation and.
The software stack provides a complete set of self-driving modules, including localization, detection, prediction, planning, and control. It is designed for urban driving rather than highway driving, inspired by the achievements of the DARPA Urban Challenge.

Architecture

Autoware relies on the Robot Operating System for its component-based middleware framework, using a publish/subscribe model for communication between software nodes. The system abstracts autonomous driving into three main phases: sensing, computing, and actuation. The platform uses Data Distribution Service as its middleware for data transmission, which creates sockets between publishers and subscribers and serializes data packets.
  • Sensing: Supports input from LiDAR scanners, cameras, GNSS, and IMUs. It uses Point Cloud Library for managing 3D data and CUDA for GPU acceleration.
  • Computing:
  • * Localization: Estimates position using satellite signals and LiDAR-based normal distributions transform. It employs an Extended Kalman filter to fuse sensor outputs for accuracy.
  • * Perception: Uses algorithms like NDT for localization and scan matching with 3D maps. For object detection, it employs deep learning frameworks like Caffe and SSD, alongside traditional methods using OpenCV. It utilizes model-based approaches combined with data-driven techniques.
  • * Decision & Planning: Implements state machines for decision-making and uses algorithms like hybrid-state A* and lattice-based planners for trajectory generation. The planning module generates routes and executes lane and parking scenarios in parallel, activating specific scenarios based on proximity to the destination.
  • Actuation: Generates steering and throttle commands using a pure pursuit algorithm and PID controllers to follow generated paths. The control module provides separate lateral and longitudinal controllers.
A specific profile called "Autoware on Board" has been developed to enable the software on embedded systems, such as the NVIDIA Drive PX2, optimizing for ARM-based processing cores.

Adoptions and projects