Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_px4_mr at Robotics Stack Exchange
Package Summary
| Version | 0.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-18 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
PX4 Multirotor Client (cl_px4_mr)
SMACC2 client library for PX4 multirotor control via ROS 2 XRCE-DDS.
Architecture
The cl_px4_mr follows a pure component-based architecture where the client orchestrates seven specialized components:
ClPx4Mr (Client - Orchestrator)
├── CpVehicleCommand - Sends vehicle commands (arm, disarm, mode, land, takeoff)
├── CpVehicleStatus - Monitors arming state, landing, and nav mode
├── CpVehicleLocalPosition - Tracks vehicle position in NED frame
├── CpTrajectorySetpoint - Publishes position setpoints for offboard control
├── CpOffboardKeepAlive - Maintains offboard mode via periodic heartbeat
├── CpVehicleCommandAck - Monitors command acknowledgement responses
└── CpGoalChecker - Detects when vehicle reaches target position
Components
CpVehicleCommand
Responsibility: Sends PX4 vehicle commands via /fmu/in/vehicle_command
-
arm()/forceArm()/disarm()- Vehicle arming control -
setOffboardMode()- Switch to offboard control mode -
takeoff(altitude)/land()- Flight commands -
sendCommand(...)- Generic 7-parameter command interface
Signals: None
CpVehicleStatus
Responsibility: Monitors vehicle state from /fmu/out/vehicle_status_v1
- Tracks arming state and navigation mode transitions
- Detects armed/disarmed and landed state changes
Signals: onArmed_, onDisarmed_, onModeChanged_, onLanded_
CpVehicleLocalPosition
Responsibility: Tracks position from /fmu/out/vehicle_local_position
- Provides NED position (x, y, z) and heading
- Thread-safe accessors with validity checking
Signals: onPositionReceived_
CpTrajectorySetpoint
Responsibility: Publishes position commands to /fmu/in/trajectory_setpoint
-
setPositionNED(x, y, z, yaw)- Set target position -
hold()- Hold current position -
republishLast()- Re-send last setpoint - Thread-safe with cached last setpoint
Signals: None
CpOffboardKeepAlive
Responsibility: Publishes offboard control mode heartbeat to /fmu/in/offboard_control_mode
- Inherits from
ISmaccUpdatablefor periodic ~20Hz updates -
enable()/disable()- Toggle heartbeat publishing - PX4 requires continuous offboard heartbeat to stay in offboard mode
Signals: None
CpVehicleCommandAck
Responsibility: Monitors command responses from /fmu/out/vehicle_command_ack
- Tracks last command ID and result code
Signals: onAckReceived_
CpGoalChecker
Responsibility: Monitors position and fires when goal is reached
- Inherits from
ISmaccUpdatablefor periodic distance checking -
setGoal(x, y, z, xy_tolerance, z_tolerance)- Set target with tolerances -
clearGoal()- Deactivate goal checking - Default tolerances: 0.5m XY, 0.3m Z
Signals: onGoalReached_
Signal Flow
PX4 SITL (via XRCE-DDS)
↓ (subscriptions)
CpVehicleStatus → onArmed_ / onDisarmed_ / onLanded_
CpVehicleLocalPosition → onPositionReceived_
CpVehicleCommandAck → onAckReceived_
CpGoalChecker (update) → onGoalReached_
↓ (signal connections)
Client Behaviors (CbArmPX4, CbTakeOff, CbLand, etc.)
↓ (postSuccessEvent / postFailureEvent)
State Machine Transitions
``` Client Behaviors
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_px4_mr_test_1 |