Overview
The Autoware Safety Island is an actuation module that runs Autoware’s trajectory follower on an Arm safety-class processor. It consumes planning, localization, and vehicle-state topics from the Autoware main compute, runs MPC lateral and PID longitudinal control, and publishes control commands back out over DDS. No changes to the upstream Autoware codebase are required.
The module supports Zephyr and FreeRTOS runtime targets for both local
validation and S32Z hardware development. A platform abstraction layer
(actuation_module/include/platform/) keeps the controller logic shared
between runtime backends.
Runtime |
Local validation |
S32Z hardware |
|---|---|---|
Zephyr |
|
|
FreeRTOS |
|
|
zephyr-fvp and freertos-posix are validated local development targets.
zephyr-fvp also covers AVH workflows. zephyr-s32z is the existing S32Z
Zephyr hardware target.
freertos-s32z2 is hardware-specific and requires NXP-licensed SDK inputs.
The main compute and the safety island run on separate DDS domains. A domain bridge on the main compute forwards the relevant topics between them, which isolates the real-time controller from the rest of the Autoware graph.
Workflow
See DDS topics for the full list of DDS topics with message types and domain IDs, and Architecture for the runtime design.
Main Components
Component |
Version |
|---|---|
Zephyr RTOS |
|
CycloneDDS |
|
Autoware |
|
Autoware.Universe |
|
Autoware.msgs |
Autoware Components
The following Autoware packages are vendored into actuation_module/src/autoware/
and compiled as part of the safety island application.
Component |
Role |
|---|---|
autoware_msgs |
Message definitions (IDL) |
autoware_osqp_interface |
OSQP solver wrapper for MPC |
autoware_universe_utils |
General utilities |
autoware_motion_utils |
Motion primitives |
autoware_interpolation |
Trajectory interpolation |
autoware_vehicle_info_utils |
Vehicle model parameters |
autoware_trajectory_follower_base |
Controller base classes |
autoware_mpc_lateral_controller |
MPC lateral controller |
autoware_pid_longitudinal_controller |
PID longitudinal controller |
autoware_trajectory_follower_node |
Controller node entry point |
ROS RCL abstraction mapping
Autoware code is written against ROS 2’s rcl layer. In this project the
equivalents are built directly on runtime primitives, so no ROS 2 runtime is
needed on the safety island runtime target.
ROS 2 (rcl) |
Safety-island equivalent |
|---|---|
Logging |
Custom logger ( |
Node |
POSIX-style thread wrapper with platform-provided stacks
( |
Timers |
Runtime timer wrapper ( |
Publisher / Subscriber |
CycloneDDS ( |