[AUTOWARE] Autoware Basic part.2

SpringCloud
SpringCloud.Official
5 min readMar 21, 2023

Autorware.universe 아키텍처

Autoware.universe는 자율주행 소프트웨어 스택을 구성하는 모듈화된 구성요소들로 이루어져 있습니다. 이러한 구성 요소들은 각각의 기능을 수행하며, ROS 2를 기반으로 상호 작용하고 통신합니다. Autoware.universe의 상위 레벨 아키텍처는 주요 구성 요소와 기능에 따라 다음과 같이 분류될 수 있습니다.

1.센싱 (Sensing) : 센서 드라이버 및 인터페이스가 포함되어 있으며, 레이더, 카메라, 라이다 등 다양한 센서로부터 데이터를 수집합니다. 센서 데이터를 전처리하여 후속 단계에서 사용하기 적합한 형식으로 변환합니다.

2. 로컬맵 생성 및 전역 맵 통합 (Local Map Creation & Global Map Integration) : 센서 데이터와 지각 결과를 기반으로 로컬 맵을 생성하고, 전역 맵과 통합합니다. SLAM (Simultaneous Localization and Mapping) 기술을 사용하여 차량의 위치와 주변 환경의 지도를 동시에 추정합니다.

3. Localization : Propose a system that can estimate vehicle pose, velocity, and acceleration for as long as possible. Propose a system that can diagnose the stability of estimation and send a warning message to the error-monitoring system if the estimation result is unreliable.

— 3D-LiDAR + PointCloud Map
— 3D-LiDAR or Camera + Vector Map
— GNSS/imu
— Camera (Visual Odometry, Visual SLAM)
— Wheel speed sensor
— Geomagnetic sensor
— Magnetic markers

Pose Estimator
— Estimates the vehicle pose on the map coordinate by matching external sensor observation to the map
— Provides the obtained pose and its covariance to PoseTwistFusionFilter

Twist-Accel Estimator
— Produces the vehicle velocity, angular velocity, acceleration, angular acceleration, and their covariances
— It is possible to create a single module for both twist and acceleration or to create two separate modules — the choice of architecture is up to the developer
— The twist estimator produces velocity and angular velocity from internal sensor observation
— The accel estimator produces acceleration and angular acceleration from internal sensor observations

Kinematics Fusion Filter
— Produces the likeliest pose, velocity, acceleration, and their covariances, computed by fusing two kinds of information: The pose obtained from the pose estimator. The velocity and acceleration obtained from the twist-accel estimator
— Produces tf of map to base_link according to the pose estimation result

Localization Diagnostics
— Monitors and guarantees the stability and reliability of pose estimation by fusing information obtained from multiple localization modules
— Reports error status to the error monitor

4. 인지 (Perception) : 센싱 단계에서 수집된 데이터를 기반으로 주변 환경을 인식하고 분석합니다. 객체 탐지, 추적, 분류, 차선 인식, 장애물 감지 등의 기능을 수행합니다.

5. 경로 계획 (Path Planning) : 목적지까지 최적의 경로를 계획하며, 동적 및 정적 장애물을 피해 안전하게 이동할 수 있는 경로를 생성합니다. 글로벌 경로 계획과 로컬 경로 계획을 수행하여 전체적인 이동 경로와 상황에 맞는 장애물 회피 경로를 결정합니다.

  1. mission_planner: calculate route from start to goal based on the map information.
  2. behavior_path_planner: calculates path and drivable area based on the traffic rules.
    — lane_following
    — lane_change
    — avoidance
    — pull_over
    — pull_out
    — side_shift
  3. behavior_velocity_planner: calculates max speed based on the traffic rules.
    — detection_area
    — blind_spot
    — cross_walk
    — stop_line
    — traffic_light
    — intersection
    — no_stopping_area
    — virtual_traffic_light
    — occlusion_spot
    — run_out
  4. obstacle_avoidance_planner: calculate path shape under obstacle and drivable area constraints
  5. surround_obstacle_checker: keeps the vehicle being stopped when there are obstacles around the ego-vehicle. It works only when the vehicle is stopped.
  6. obstacle_stop_planner: When there are obstacles on or near the trajectory, it calculates the maximum velocity of the trajectory points depending on the situation: stopping, slowing down, or adaptive cruise (following the car).
    — stop
    — slow_down
    — adaptive_cruise
  7. costmap_generator: generates a costmap for path generation from dynamic objects and lane information.
  8. freespace_planner: calculates trajectory considering the feasibility (e.g. curvature) for the freespace scene. Algorithms are described here.
  9. scenario_selector : chooses a trajectory according to the current scenario.
  10. external_velocity_limit_selector: takes an appropriate velocity limit from multiple candidates.
  11. motion_velocity_smoother: calculates final velocity considering velocity, acceleration, and jerk constraints.

Autoware.universe 지원 기능

6. 차량 제어 (Vehicle Control) : 계획된 경로를 따라 차량을 제어하며, 속도, 조향, 가감속 등의 명령을 발행합니다. 차량의 하드웨어 인터페이스와 통신하여 명령을 실제 차량의 동작으로 변환합니다.

7. Vehicle interface : The Vehicle Interface component provides an interface between Autoware and a vehicle that passes control signals to the vehicle’s drive-by-wire system and receives vehicle information that is passed back to Autoware.

차량인터페이스 아키텍처 구성

  1. A Raw Vehicle Command Converter component that will pass through vehicle commands from the Control component if velocity/acceleration control is supported by the drive-by-wire system. Otherwise, the Control commands will be modified according to the control method (eg: converting a target acceleration from the Control component to a vehicle specific accel/brake pedal value through the use of an acceleration map)
  2. A Vehicle Interface component (vehicle specific) that acts as an interface between Autoware and a vehicle to communicate control signals and to obtain information about the vehicle (steer output, tyre angle etc)

Autoware.universe의 상위 레벨 아키텍처는 이러한 구성 요소들로 구성되어 있으며, 각 요소가 서로 상호 작용하고 통신하여 자율주행 차량의 안전한 운행을 지원합니다.

ROS 2를 기반으로 한 모듈화된 설계 덕분에, 개발자는 Autoware.universe의 각 구성 요소를 독립적으로 개발, 테스트 및 최적화할 수 있으며, 쉽게 새로운 기능을 추가하거나 기존 기능을 업데이트할 수 있습니다. 이렇게 유연한 아키텍처는 자율주행 소프트웨어의 빠른 발전과 적용을 가능하게 합니다.

--

--