Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |
Launch files
Messages
Services
Plugins
Recent questions tagged ackermann_mux at Robotics Stack Exchange
Package Summary
| Version | 0.0.0 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Dockerized ROS2 stack for the WATonomous Autonomous Driving Software Pipeline |
| Checkout URI | https://github.com/watonomous/wato_monorepo.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- WATonomous
Authors
Ackermann Mux
Priority-based multiplexer for Ackermann drive commands. Handles multiple input sources (e.g., joystick, action planning) and selects the highest priority active input to forward to the vehicle control system.
Features
- Priority-based arbitration: Higher priority inputs take precedence over lower priority ones
- Input masking: Enable/disable inputs dynamically via boolean mask topics
- Safety gating: Automatically triggers emergency stop if safety-gated inputs stop sending commands within a configurable timeout
- Emergency fallback: Publishes a safe emergency command when no eligible inputs are available or safety conditions are tripped
Configuration
The node is configured via a YAML file (see config/ackermann_mux_config.yaml). Key parameters:
-
safety_threshold: Time in seconds before a safety-gated input triggers emergency (default: 0.5s) -
publish_rate_hz: Rate at which output commands are published (default: 50.0 Hz) -
emergency: Emergency command to publish when no eligible inputs or safety trip occurs-
steering_angle: Emergency steering angle (default: 0.0) -
speed: Emergency speed (default: -0.5)
-
-
inputs: List of input sources, each with:-
topic: ROS topic subscribing toackermann_msgs/msg/AckermannDriveStamped -
priority: Priority level (higher number = higher priority) -
has_mask: Whether this input uses a mask topic (default: false) -
mask_topic: Topic publishingstd_msgs/msg/Boolto enable/disable this input (required ifhas_mask: true) -
safety_gating: Whether to enable safety timeout for this input (default: false)
-
Usage
Launch the node with the default configuration:
ros2 launch ackermann_mux ackermann_mux.launch.yaml
The node publishes multiplexed commands to /ackermann as ackermann_msgs/msg/AckermannDriveStamped.
How It Works
-
Safety Check: If any input with
safety_gating: truehasn’t received a command withinsafety_thresholdseconds, the emergency command is published immediately. -
Arbitration: Among all eligible inputs (have received at least one command and are not masked), the one with the highest priority is selected.
-
Output: The latest command from the selected input is published with an updated timestamp. If no eligible inputs exist, the emergency command is published.
Example Configuration
ackermann_mux:
ros__parameters:
safety_threshold: 0.5
publish_rate_hz: 50.0
emergency:
steering_angle: 0.0
speed: -0.5
inputs:
joystick:
topic: /joystick/ackermann
priority: 100 # Highest priority
has_mask: true
mask_topic: /joystick/is_idle
safety_gating: true # Will trigger emergency if joystick stops sending commands
action:
topic: /action/ackermann
priority: 10 # Lower priority than joystick
has_mask: true
mask_topic: /action/is_idle
safety_gating: false
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| wato_test | |
| rclcpp | |
| rclcpp_components | |
| rclcpp_lifecycle | |
| lifecycle_msgs | |
| ackermann_msgs | |
| std_msgs |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| f1tenth_stack |