Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged sm_cl_px4_mr_test_2 at Robotics Stack Exchange
Package Summary
| Version | 3.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-09-24 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
State Machine Diagram
Description
Test state machine for the cl_px4_mr PX4 multirotor client library in Gazebo. Exercises the
second batch of behaviors added to the client: hold position, relative yaw rotation, altitude
change, multi-waypoint following, an expanding spiral, a figure-eight, and return-to-home, with a
3 s CbHoldPosition settle between each manoeuvre. The mission runs at 15-20 m and stays within
30 m of the takeoff point. StConnectMicroROSAgent waits for the micro-ROS agent’s node and a
healthy PX4 estimate before proceeding, so the agent must be started first.
Uses two orthogonals:
-
OrPx4 -
cl_px4_mr::ClPx4Mrclient for all PX4 vehicle control -
OrTimer -
cl_ros2_timer::ClRos2Timerfor the readiness wait
Build Instructions
First, source your ROS 2 installation.
source /opt/ros/jazzy/setup.bash
Then build with colcon build…
colcon build --packages-select cl_px4_mr sm_cl_px4_mr_test_2
Operating Instructions
Requires four processes, started in this order.
Terminal 1 - PX4 SITL:
cd ~/workspaces/PX4-Autopilot
make px4_sitl gz_x500
Terminal 2 - QGroundControl (required for GCS heartbeat so PX4 allows arming)
./QGroundControl-x86_64.AppImage
Terminal 3 - micro-ROS agent (XRCE-DDS bridge to PX4):
ros2 run micro_ros_agent micro_ros_agent udp4 -p 8888 2>&1 | tee /tmp/xrce_agent.log
Terminal 4 - State Machine:
source install/setup.bash
ros2 launch sm_cl_px4_mr_test_2 sm_cl_px4_mr_test_2.launch.py
Mission Flow
| State | Mode State | Behavior | Action |
|---|---|---|---|
| StConnectMicroROSAgent | MsDisarmedOnGround | CbConnectMicroRosAgent(30) | Wait for the XRCE agent node and a healthy PX4 estimate |
| StWaitForReady | MsDisarmedOnGround | CbTimerCountdownOnce(5 s) | Let PX4 topics settle |
| StArmPx4 | MsArmedOnGround | CbArmPX4 | Arm (5 retries, force-arm after 2) |
| StTakeoff | MsTakeoff | CbTakeOff(15) | Offboard takeoff to 15 m |
| StHoldPosition | MsInFlight | CbHoldPosition(3 s) | Settle |
| StYawRotate | MsInFlight | CbYawRotate(+90 deg, relative) | Rotate a quarter turn |
| StHoldPosition2 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StChangeAltitude | MsInFlight | CbChangeAltitude(20) | Climb to 20 m |
| StHoldPosition3 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StSpiralPattern | MsInFlight | CbSpiralPattern(0, 0, 20, r 15, spacing 3, 2 m/s) | Expanding spiral about the origin |
| StHoldPosition4 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFollowWaypoints | MsInFlight | CbFollowWaypoints | (30,0) -> (30,-30) -> (0,-30) at 20 m |
| StHoldPosition5 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StFigureEight | MsInFlight | CbFigureEight(5, 5, 20, size 5, 0.5 rad/s, 3 loops) | Three figure-eights |
| StHoldPosition6 | MsInFlight | CbHoldPosition(3 s) | Settle |
| StReturnToHome | MsInFlight | CbReturnToHome(0, 0, -15, 0) | Back to the origin at 15 m |
| StLand | MsLanding | CbLand | Land and wait for auto-disarm |
| StLanded | MsLanded | (none) | Mission complete |
Log File Locations
| Component | Location |
|---|---|
| State Machine (ROS 2) |
~/.ros/log/ (latest node log: sm_cl_px4_mr_test_2_node_*.log) |
| PX4 SITL (.ulg) | ~/workspaces/PX4-Autopilot/build/px4_sitl_default/rootfs/log/ |
| micro_ros_agent | /tmp/xrce_agent.log |
Viewer Instructions
If you have the SMACC2 Runtime Analyzer installed then type…
ros2 run smacc2_rta smacc2_rta
If you don’t have the SMACC2 Runtime Analyzer click here.
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 | |
| cl_px4_mr | |
| cl_ros2_timer | |
| px4_msgs | |
| rclcpp |