Autoware System Designer is a comprehensive toolset designed to define, build, and deploy Autoware systems in a modular and structured way. It allows developers to describe the software architecture using configuration files (YAML) and automatically generates system artifacts such as ROS 2 launch files, visualization diagrams, and parameter templates.
Traditional ROS 2 launch files can become complex and hard to manage as a system grows. Autoware System Designer solves this by introducing a higher-level abstraction layer that separates system design from deployment details.
- Modular Architecture: Define systems using reusable Nodes and Modules.
- Automatic Launch Generation: Generate correct-by-construction ROS 2 XML launch files.
- System Visualization: Automatically generate diagrams (node graphs, sequence diagrams) to visualize the system structure and data flow.
- Parameter Management: Manage parameters efficiently using Parameter Sets and schema validation.
- Deployment Configuration: Easily switch between different hardware configurations or simulation modes using Deployments.
The system is built upon four main entity types:
Represents a single ROS 2 node. It defines:
- Package: Package name and provider information.
- Launch: Node execution configuration (plugin, executable, container settings, etc.).
- Inputs/Outputs: Ports (topics) with message types, QoS settings, and remap targets.
- Parameters: Configuration variables (inline or via parameter files).
- Processes: Internal logic flow with trigger conditions and outcomes.
A container for grouping nodes and other sub-modules. It defines:
- Instances: Nodes/modules contained within.
- Connections: Wiring between internal components.
- External Interfaces: Ports exposed to the outside world.
The top-level description of a complete autonomous driving system. It defines:
- Variables: System-wide configuration variables and variable files.
- Components: Top-level nodes/modules with compute unit assignment, namespaces, and parameter sets.
- Node Groups: Group nodes by listing their node paths (currently ROS 2 component containers are implemented).
- Connections: Data flow between components.
- Modes: Operation modes (e.g., Runtime, Simulation) with mode-specific overrides.
A collection of parameter overrides that can be applied to specific nodes in a system, allowing for flexible configuration management without modifying the core node definitions.
To use Autoware System Designer in your ROS 2 package, organize your files as follows:
src/<package_name>/
├── design/
│ ├── node/ # *.node.yaml
│ ├── module/ # *.module.yaml
│ ├── system/ # *.system.yaml
│ └── parameter_set/ # *.parameter_set.yaml
├── deployment/ # *.deployment.yaml (System instantiation)
├── schema/ # *.schema.json (Parameter schemas)
├── CMakeLists.txt
└── package.xml
Autoware System Designer integrates directly into the CMake build process. Select the appropriate macros based on your package type.
In your CMakeLists.txt:
find_package(autoware_system_designer REQUIRED)
# 1. Generate standalone node launchers (Optional)
# Use this if your package defines nodes and you want individual launch files.
autoware_system_designer_generate_launcher()
# 2. Generate parameter files from schemas (Optional)
# Use this if your package contains JSON schemas in the schema/ directory.
autoware_system_designer_parameter()
# 3. Build a full system deployment (Deployment Packages Only)
# Use this only in the package responsible for building the full system configuration.
autoware_system_designer_build_deploy(
${PROJECT_NAME}
vehicle_x.system
PRINT_LEVEL=WARNING
STRICT=AUTO # AUTO|ON|OFF (AUTO follows AUTOWARE_SYSTEM_DESIGNER_BUILD_DEPLOY_STRICT)
)# make workspace and git clone
cd ~/workspace
git clone git@github.com:autowarefoundation/autoware_system_designer.git autoware_system_designer/src
cd autoware_system_designer
# set dependency
source /opt/ros/$ROS_DISTRO/setup.bash
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
# build
colcon build
# open visualization page (use your web browser)
firefox install/systems.html
google-chrome install/systems.html- System: The complete software stack.
- Module: A reusable group of nodes/modules.
- Node: An atomic software unit (process).
- Parameter Set: Configuration overrides.
- Port: An interface for data exchange (Input/Output).
- Connection: A link between ports.
- Topic: The resolved ROS 2 topic name.
- Process: A logical unit of execution within a node (e.g., a callback).
- Event: A runtime occurrence of a process.
- Deployment: A specific instance of a System tailored for an environment/vehicle.
- Component: A top-level instance within a System.

