[MOOC] Apollo Lesson 1: SDC Fundamentals

· 4 min read · 604 words

Authors

This is my note for lesson 1 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Identify the key parts of self-driving cars. The Apollo team and architecture.

Human vs Self-driving Car

HumanSelf-Driving Car
High traffic accident rateMore reliable driving
Learn to drive from scratchLearnable driving system
Parking troubleNo parking trouble

Six levels of self-driving car

  • Level 0: Base level - No autonomous task

  • Level 1: Driver assistance

    • Driver Fully Engaged
  • Level 2: Partial Automation

    • Automatic Cruise Control
    • Automatic Lane Keeping
  • Level 3: Conditional Automation

    • Human Take Over Whenever Necessary
  • Level 4: No Human Interference

    • Without Steering Wheel, Throttle or Brake
    • Restricted in Geofence
  • Level 5: Full Automation

Apollo platform

1. Hardware

Sensors feed an onboard computer, which drives the car only through the CAN bus
  • The Controller Area Network (CAN) cars is how the computer system connects to the car internal network to send signals for acceleration, braking and steering.

  • The Global Positioning System (GPS) receives signals from satellites, circling the earth. These signal help to determine our location.

  • The Inertial Measurement Unit (IMU) measure the vehicle movement and location by tracking the position, speed, acceleration and other factors.

  • LiDAR is an array of pulse layers. The LiDAR of Apollo can scan 360 degrees around the vehicle. The reflection of these lazer beams builds the point cloud that our software can use to understand the environment.

  • Cameras can be used to capture environment. For example because cameras can perceive color, they can be use to detect and understanding traffic lights.

  • Radar is also used for detecting obstacle. However, it's difficult to understand what kind of obstacle that radar has detected. Advantages: it's economical, it works in all weather and lighting condition.

2. Open Software Stack

Sublayers:

  • Real-time operating system (RTOS)
  • Runtime framework
  • Application modules

Real-time operating system (RTOS)

Ubuntu plus the Apollo kernel gives a real-time OS with bounded latency

Apollo RTOS is a combination of Ubuntu linux and the Apollo kernel.

  • Ubuntu is popular but not a RTOS.
  • Ubuntu + Apollo kernel -> RTOS.

Runtime framework: Customized ROS (Robot Operation System)

To adapt ROS for self-driving cars, the Apollo teams has:

  • Improve functionality
  • Improve performance for shared memory, decentralization and data comparability

Apollo uses shared memory

The LiDAR driver writes one copy to shared memory; every subscriber reads it in place

Apollo decentralize ROS architecture

Stock ROS routes every node registration through a single master. Lose the master and the graph stops forming, which is an unacceptable failure mode in a moving vehicle. Apollo replaces it with peer-to-peer discovery, so there is no broker left to lose.

Stock ROS routes every node through a central master; Apollo nodes discover each other directly

Apollo used Protobuf instead of native ROS Message for data comparability between different versions of the system

3 Apollo Cloud Service

  • HD Map
  • Simulation
  • Data platform
  • Security
  • OTA

Apollo Github

Link to Github repo: https://github.com/ApolloAuto/apollo.