From 9f1a53d531fd210b7f9d839d8b396bc5858a67e5 Mon Sep 17 00:00:00 2001 From: Sebastian Castro <4603398+sea-bass@users.noreply.github.com> Date: Sat, 11 Jan 2025 23:52:37 -0500 Subject: [PATCH 01/10] Update packages table in README (#3232) * Update packages table in README * Fix Rolling entry for moveit_runtime --- README.md | 89 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 48 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index fd6e7f973d..b6169c4c63 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ MoveIt Logo -The [MoveIt Motion Planning Framework for ROS 2](http://moveit.ros.org). For the ROS 1 repository see [MoveIt 1](https://github.com/moveit/moveit). For the commercially supported version see [MoveIt Pro](http://picknik.ai/pro). +The [MoveIt Motion Planning Framework for ROS 2](http://moveit.ros.org). +For the ROS 1 repository see [MoveIt 1](https://github.com/moveit/moveit). +For the commercially supported version see [MoveIt Pro](http://picknik.ai/pro). *Easy-to-use open source robotics manipulation platform for developing commercial applications, prototyping designs, and benchmarking algorithms.* ## Continuous Integration Status [![Formatting (pre-commit)](https://github.com/moveit/moveit2/actions/workflows/format.yaml/badge.svg?branch=main)](https://github.com/moveit/moveit2/actions/workflows/format.yaml?query=branch%3Amain) -[![CI (Rolling and Humble)](https://github.com/moveit/moveit2/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/moveit/moveit2/actions/workflows/ci.yaml?query=branch%3Amain) +[![CI (Rolling, Jazzy, and Humble)](https://github.com/moveit/moveit2/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/moveit/moveit2/actions/workflows/ci.yaml?query=branch%3Amain) [![Code Coverage](https://codecov.io/gh/moveit/moveit2/branch/main/graph/badge.svg?token=QC1O0VzGpm)](https://codecov.io/gh/moveit/moveit2) ## Getting Started @@ -56,42 +58,47 @@ research and innovation programme under grant agreement no. 732287. See [How To Generate API Doxygen Reference Locally](https://moveit.picknik.ai/main/doc/how_to_guides/how_to_generate_api_doxygen_locally.html). # Buildfarm -| Package | Humble Binary | Iron Binary | Rolling Binary | Jazzy Binary | -|:---:|:---:|:---:|:---:|:---:| -| geometric_shapes | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__geometric_shapes__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__geometric_shapes__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__geometric_shapes__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__geometric_shapes__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary) | -| moveit | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit__ubuntu_noble_amd64__binary) | -| moveit_common | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_common__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_common__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_common__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_common__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_common__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_common__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_common__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_common__ubuntu_noble_amd64__binary) | -| moveit_core | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_core__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_core__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_core__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_core__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_core__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_core__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_core__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_core__ubuntu_noble_amd64__binary) | -| moveit_hybrid_planning | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_hybrid_planning__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_hybrid_planning__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_hybrid_planning__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_hybrid_planning__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary) | -| moveit_kinematics | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_kinematics__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_kinematics__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_kinematics__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_kinematics__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary) | -| moveit_msgs | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_msgs__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_msgs__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_msgs__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_msgs__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary) | -| moveit_planners | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_planners__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_planners__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners__ubuntu_noble_amd64__binary) | -| moveit_planners_ompl | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners_ompl__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners_ompl__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_planners_ompl__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_planners_ompl__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary) | -| moveit_planners_stomp | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners_stomp__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners_stomp__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_planners_stomp__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_planners_stomp__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary) | -| moveit_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary) | -| moveit_resources | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_resources__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_resources__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_resources__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_resources__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_resources__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_resources__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_resources__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_resources__ubuntu_noble_amd64__binary) | -| moveit_ros | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros__ubuntu_noble_amd64__binary) | -| moveit_ros_benchmarks | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_benchmarks__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_benchmarks__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_benchmarks__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_benchmarks__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary) | -| moveit_ros_move_group | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_move_group__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_move_group__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_move_group__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_move_group__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary) | -| moveit_ros_occupancy_map_monitor | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_occupancy_map_monitor__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_occupancy_map_monitor__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_occupancy_map_monitor__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_occupancy_map_monitor__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary) | -| moveit_ros_perception | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_perception__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_perception__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_perception__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_perception__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary) | -| moveit_ros_planning | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_planning__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_planning__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_planning__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_planning__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary) | -| moveit_ros_planning_interface | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_planning_interface__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_planning_interface__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_planning_interface__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_planning_interface__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary) | -| moveit_ros_robot_interaction | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_robot_interaction__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_robot_interaction__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_robot_interaction__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_robot_interaction__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary) | -| moveit_ros_visualization | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_visualization__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_visualization__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_visualization__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_visualization__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary) | -| moveit_ros_warehouse | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_warehouse__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_warehouse__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_ros_warehouse__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_ros_warehouse__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary) | -| moveit_runtime | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_runtime__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_runtime__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_runtime__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_runtime__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_runtime__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_runtime__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_runtime__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_runtime__ubuntu_noble_amd64__binary) | -| moveit_servo | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_servo__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_servo__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_servo__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_servo__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_servo__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_servo__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_servo__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_servo__ubuntu_noble_amd64__binary) | -| moveit_setup_app_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_app_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_app_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_setup_app_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_setup_app_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary) | -| moveit_setup_assistant | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_assistant__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_assistant__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_setup_assistant__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_setup_assistant__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary) | -| moveit_setup_controllers | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_controllers__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_controllers__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_setup_controllers__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_setup_controllers__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary) | -| moveit_setup_core_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_core_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_core_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_setup_core_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_setup_core_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary) | -| moveit_setup_framework | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_framework__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_framework__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_setup_framework__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_setup_framework__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary) | -| moveit_setup_srdf_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_srdf_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_srdf_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_setup_srdf_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_setup_srdf_plugins__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary) | -| moveit_simple_controller_manager | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_simple_controller_manager__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_simple_controller_manager__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__moveit_simple_controller_manager__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__moveit_simple_controller_manager__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary) | -| pilz_industrial_motion_planner | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__pilz_industrial_motion_planner__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__pilz_industrial_motion_planner__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__pilz_industrial_motion_planner__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__pilz_industrial_motion_planner__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary) | -| pilz_industrial_motion_planner_testutils | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__pilz_industrial_motion_planner_testutils__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__pilz_industrial_motion_planner_testutils__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__pilz_industrial_motion_planner_testutils__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__pilz_industrial_motion_planner_testutils__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary) | -| random_numbers | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__random_numbers__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__random_numbers__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__random_numbers__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__random_numbers__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__random_numbers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__random_numbers__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__random_numbers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__random_numbers__ubuntu_noble_amd64__binary) | -| srdfdom | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__srdfdom__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__srdfdom__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__srdfdom__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__srdfdom__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__srdfdom__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__srdfdom__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__srdfdom__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__srdfdom__ubuntu_noble_amd64__binary) | -| warehouse_ros | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__warehouse_ros__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__warehouse_ros__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__warehouse_ros__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__warehouse_ros__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary) | -| warehouse_ros_sqlite | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__warehouse_ros_sqlite__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__warehouse_ros_sqlite__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uJ64__warehouse_ros_sqlite__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uJ64__warehouse_ros_sqlite__ubuntu_jammy_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary) | +| Package | Rolling Binary | Jazzy Binary | Humble Binary | +|:---:|:---:|:---:|:---:| +| geometric_shapes | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__geometric_shapes__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__geometric_shapes__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__geometric_shapes__ubuntu_jammy_amd64__binary) | +| moveit | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit__ubuntu_jammy_amd64__binary) | +| moveit_common | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_common__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_common__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_common__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_common__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_common__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_common__ubuntu_jammy_amd64__binary) | +| moveit_configs_utils | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_configs_utils__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_configs_utils__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_configs_utils__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_configs_utils__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_configs_utils__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_configs_utils__ubuntu_jammy_amd64__binary) | +| moveit_core | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_core__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_core__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_core__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_core__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_core__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_core__ubuntu_jammy_amd64__binary) | +| moveit_hybrid_planning | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_hybrid_planning__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_hybrid_planning__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_hybrid_planning__ubuntu_jammy_amd64__binary) | +| moveit_kinematics | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_kinematics__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_kinematics__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_kinematics__ubuntu_jammy_amd64__binary) | +| moveit_msgs | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_msgs__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_msgs__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_msgs__ubuntu_jammy_amd64__binary) | +| moveit_planners | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners__ubuntu_jammy_amd64__binary) | +| moveit_planners_chomp | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners_chomp__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners_chomp__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners_chomp__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners_chomp__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners_chomp__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners_chomp__ubuntu_jammy_amd64__binary) | +| moveit_planners_ompl | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners_ompl__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners_ompl__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners_ompl__ubuntu_jammy_amd64__binary) | +| moveit_planners_stomp | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_planners_stomp__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_planners_stomp__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_planners_stomp__ubuntu_jammy_amd64__binary) | +| moveit_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_plugins__ubuntu_jammy_amd64__binary) | +| moveit_py | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_py__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_py__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_py__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_py__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_py__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_py__ubuntu_jammy_amd64__binary) | +| moveit_resources | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_resources__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_resources__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_resources__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_resources__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_resources__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_resources__ubuntu_jammy_amd64__binary) +| moveit_ros | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros__ubuntu_jammy_amd64__binary) | +| moveit_ros_benchmarks | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_benchmarks__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_benchmarks__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_benchmarks__ubuntu_jammy_amd64__binary) | +| moveit_ros_move_group | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_move_group__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_move_group__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_move_group__ubuntu_jammy_amd64__binary) | +| moveit_ros_occupancy_map_monitor | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_occupancy_map_monitor__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_occupancy_map_monitor__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_occupancy_map_monitor__ubuntu_jammy_amd64__binary) | +| moveit_ros_perception | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_perception__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_perception__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_perception__ubuntu_jammy_amd64__binary) | +| moveit_ros_planning | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_planning__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_planning__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_planning__ubuntu_jammy_amd64__binary) | +| moveit_ros_planning_interface | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_planning_interface__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_planning_interface__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_planning_interface__ubuntu_jammy_amd64__binary) | +| moveit_ros_robot_interaction | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_robot_interaction__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_robot_interaction__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_robot_interaction__ubuntu_jammy_amd64__binary) | +| moveit_ros_tests | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_tests__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_tests__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_tests__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_tests__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_tests__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_tests__ubuntu_jammy_amd64__binary) | +| moveit_ros_trajectory_cache | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_trajectory_cache__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_trajectory_cache__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_trajectory_cache__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_trajectory_cache__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_trajectory_cache__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_trajectory_cache__ubuntu_jammy_amd64__binary) | +| moveit_ros_visualization | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_visualization__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_visualization__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_visualization__ubuntu_jammy_amd64__binary) | +| moveit_ros_warehouse | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_ros_warehouse__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_ros_warehouse__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_ros_warehouse__ubuntu_jammy_amd64__binary) | +| moveit_runtime | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_runtime__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_runtime__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_runtime__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_runtime__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_runtime__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_runtime__ubuntu_jammy_amd64__binary) | +| moveit_servo | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_servo__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_servo__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_servo__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_servo__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_servo__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_servo__ubuntu_jammy_amd64__binary) | +| moveit_setup_app_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_app_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_app_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_app_plugins__ubuntu_jammy_amd64__binary) | +| moveit_setup_assistant | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_assistant__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_assistant__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_assistant__ubuntu_jammy_amd64__binary) | +| moveit_setup_controllers | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_controllers__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_controllers__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_controllers__ubuntu_jammy_amd64__binary) | +| moveit_setup_core_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_core_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_core_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_core_plugins__ubuntu_jammy_amd64__binary) | +| moveit_setup_framework | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_framework__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_framework__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_framework__ubuntu_jammy_amd64__binary) | +| moveit_setup_srdf_plugins | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_setup_srdf_plugins__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_setup_srdf_plugins__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_setup_srdf_plugins__ubuntu_jammy_amd64__binary) | +| moveit_simple_controller_manager | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__moveit_simple_controller_manager__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__moveit_simple_controller_manager__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__moveit_simple_controller_manager__ubuntu_jammy_amd64__binary) | +| pilz_industrial_motion_planner | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__pilz_industrial_motion_planner__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__pilz_industrial_motion_planner__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__pilz_industrial_motion_planner__ubuntu_jammy_amd64__binary) | +| pilz_industrial_motion_planner_testutils | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__pilz_industrial_motion_planner_testutils__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__pilz_industrial_motion_planner_testutils__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__pilz_industrial_motion_planner_testutils__ubuntu_jammy_amd64__binary) | +| random_numbers | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__random_numbers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__random_numbers__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__random_numbers__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__random_numbers__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__random_numbers__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__random_numbers__ubuntu_jammy_amd64__binary) | +| srdfdom | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__srdfdom__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__srdfdom__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__srdfdom__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__srdfdom__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__srdfdom__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__srdfdom__ubuntu_jammy_amd64__binary) | +| warehouse_ros | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__warehouse_ros__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__warehouse_ros__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__warehouse_ros__ubuntu_jammy_amd64__binary) | +| warehouse_ros_sqlite | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Rbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Jbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary)](https://build.ros2.org/job/Jbin_uN64__warehouse_ros_sqlite__ubuntu_noble_amd64__binary) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uJ64__warehouse_ros_sqlite__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uJ64__warehouse_ros_sqlite__ubuntu_jammy_amd64__binary) | From 3ec75aba17d29ed815ab5946787e2e17350b608b Mon Sep 17 00:00:00 2001 From: Dongya Jiang <1983534+patrickKXMD@users.noreply.github.com> Date: Mon, 13 Jan 2025 01:39:36 +0800 Subject: [PATCH 02/10] move TrajectoryExecutionManager::clear() to private (#3226) * move TrajectoryExecutionManager::clear() to private Signed-off-by: Dongya Jiang <1983534+patrickKXMD@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Robert Haschke --------- Signed-off-by: Dongya Jiang <1983534+patrickKXMD@users.noreply.github.com> Co-authored-by: Robert Haschke --- .../trajectory_execution_manager.cpp | 5 ----- .../execute_trajectory_action_capability.cpp | 1 - moveit_ros/planning/plan_execution/src/plan_execution.cpp | 1 - .../trajectory_execution_manager.hpp | 6 +++--- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/moveit_py/src/moveit/moveit_ros/trajectory_execution_manager/trajectory_execution_manager.cpp b/moveit_py/src/moveit/moveit_ros/trajectory_execution_manager/trajectory_execution_manager.cpp index 1c0693e638..e74260e6a0 100644 --- a/moveit_py/src/moveit/moveit_ros/trajectory_execution_manager/trajectory_execution_manager.cpp +++ b/moveit_py/src/moveit/moveit_ros/trajectory_execution_manager/trajectory_execution_manager.cpp @@ -200,11 +200,6 @@ void initTrajectoryExecutionManager(py::module& m) Stop whatever executions are active, if any. )") - .def("clear", &trajectory_execution_manager::TrajectoryExecutionManager::clear, - R"( - Clear the trajectories to execute. - )") - .def("enable_execution_duration_monitoring", &trajectory_execution_manager::TrajectoryExecutionManager::enableExecutionDurationMonitoring, py::arg("flag"), diff --git a/moveit_ros/move_group/src/default_capabilities/execute_trajectory_action_capability.cpp b/moveit_ros/move_group/src/default_capabilities/execute_trajectory_action_capability.cpp index ff7959e439..602b16a6ee 100644 --- a/moveit_ros/move_group/src/default_capabilities/execute_trajectory_action_capability.cpp +++ b/moveit_ros/move_group/src/default_capabilities/execute_trajectory_action_capability.cpp @@ -106,7 +106,6 @@ void MoveGroupExecuteTrajectoryAction::executePath(const std::shared_ptrtrajectory_execution_manager_->clear(); if (context_->trajectory_execution_manager_->push(goal->get_goal()->trajectory, goal->get_goal()->controller_names)) { setExecuteTrajectoryState(MONITOR, goal); diff --git a/moveit_ros/planning/plan_execution/src/plan_execution.cpp b/moveit_ros/planning/plan_execution/src/plan_execution.cpp index bfbc2c37ac..173bceccad 100644 --- a/moveit_ros/planning/plan_execution/src/plan_execution.cpp +++ b/moveit_ros/planning/plan_execution/src/plan_execution.cpp @@ -401,7 +401,6 @@ moveit_msgs::msg::MoveItErrorCodes plan_execution::PlanExecution::executeAndMoni plan.plan_components[component_idx].trajectory->getRobotTrajectoryMsg(msg); if (!trajectory_execution_manager_->push(msg, plan.plan_components[component_idx].controller_name)) { - trajectory_execution_manager_->clear(); RCLCPP_ERROR(logger_, "Apparently trajectory initialization failed"); execution_complete_ = true; result.val = moveit_msgs::msg::MoveItErrorCodes::CONTROL_FAILED; diff --git a/moveit_ros/planning/trajectory_execution_manager/include/moveit/trajectory_execution_manager/trajectory_execution_manager.hpp b/moveit_ros/planning/trajectory_execution_manager/include/moveit/trajectory_execution_manager/trajectory_execution_manager.hpp index b305371d54..86c190b3ca 100644 --- a/moveit_ros/planning/trajectory_execution_manager/include/moveit/trajectory_execution_manager/trajectory_execution_manager.hpp +++ b/moveit_ros/planning/trajectory_execution_manager/include/moveit/trajectory_execution_manager/trajectory_execution_manager.hpp @@ -186,9 +186,6 @@ class MOVEIT_TRAJECTORY_EXECUTION_MANAGER_EXPORT TrajectoryExecutionManager /// Stop whatever executions are active, if any void stopExecution(bool auto_clear = true); - /// Clear the trajectories to execute - void clear(); - /// Enable or disable the monitoring of trajectory execution duration. If a controller takes /// longer than expected, the trajectory is canceled void enableExecutionDurationMonitoring(bool flag); @@ -286,6 +283,9 @@ class MOVEIT_TRAJECTORY_EXECUTION_MANAGER_EXPORT TrajectoryExecutionManager bool executePart(std::size_t part_index); bool waitForRobotToStop(const TrajectoryExecutionContext& context, double wait_time = 1.0); + /// Clear the trajectories to execute + void clear(); + void stopExecutionInternal(); void receiveEvent(const std_msgs::msg::String::ConstSharedPtr& event); From 6595deea41fedbad9710084d629cb4f4c999a50e Mon Sep 17 00:00:00 2001 From: Dongya Jiang <1983534+patrickKXMD@users.noreply.github.com> Date: Mon, 13 Jan 2025 02:42:42 +0800 Subject: [PATCH 03/10] [moveit_ros] fix race condition when stopping trajectory execution (#3198) Co-authored-by: Sebastian Castro <4603398+sea-bass@users.noreply.github.com> --- .../src/trajectory_execution_manager.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/moveit_ros/planning/trajectory_execution_manager/src/trajectory_execution_manager.cpp b/moveit_ros/planning/trajectory_execution_manager/src/trajectory_execution_manager.cpp index fd913c7960..00fa65ea17 100644 --- a/moveit_ros/planning/trajectory_execution_manager/src/trajectory_execution_manager.cpp +++ b/moveit_ros/planning/trajectory_execution_manager/src/trajectory_execution_manager.cpp @@ -1271,12 +1271,13 @@ void TrajectoryExecutionManager::clear() { if (execution_complete_) { + std::scoped_lock slock(execution_state_mutex_); for (TrajectoryExecutionContext* trajectory : trajectories_) delete trajectory; trajectories_.clear(); } else - RCLCPP_ERROR(logger_, "Cannot push a new trajectory while another is being executed"); + RCLCPP_FATAL(logger_, "Expecting execution_complete_ to be true!"); } void TrajectoryExecutionManager::executeThread(const ExecutionCompleteCallback& callback, @@ -1312,7 +1313,13 @@ void TrajectoryExecutionManager::executeThread(const ExecutionCompleteCallback& // only report that execution finished successfully when the robot actually stopped moving if (last_execution_status_ == moveit_controller_manager::ExecutionStatus::SUCCEEDED) - waitForRobotToStop(*trajectories_[i - 1]); + { + std::scoped_lock slock(execution_state_mutex_); + if (!execution_complete_) + { + waitForRobotToStop(*trajectories_[i - 1]); + } + } RCLCPP_INFO(logger_, "Completed trajectory execution with status %s ...", last_execution_status_.asString().c_str()); From b5eb4deb355bda2770e822f833b8fd38ea38f985 Mon Sep 17 00:00:00 2001 From: Paul Gesel Date: Mon, 13 Jan 2025 14:30:35 -0700 Subject: [PATCH 04/10] Remove plugins from export set (#3227) * Remove plugins from export set Signed-off-by: Paul Gesel * move more plugins to different export set Signed-off-by: Paul Gesel * run pre-commit Signed-off-by: Paul Gesel * remove plugins from moveit_kinematics export Signed-off-by: Paul Gesel * do not link base interface to plugin in kinematics Signed-off-by: Paul Gesel --------- Signed-off-by: Paul Gesel Co-authored-by: Sebastian Jahr --- moveit_core/CMakeLists.txt | 24 ++++++++++++------- moveit_kinematics/CMakeLists.txt | 20 +++++++++++----- .../CMakeLists.txt | 2 +- moveit_ros/move_group/CMakeLists.txt | 10 ++++++-- 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/moveit_core/CMakeLists.txt b/moveit_core/CMakeLists.txt index 608babbebc..ca30488f79 100644 --- a/moveit_core/CMakeLists.txt +++ b/moveit_core/CMakeLists.txt @@ -69,13 +69,7 @@ add_subdirectory(utils) add_subdirectory(version) install( - TARGETS collision_detector_bullet_plugin - collision_detector_fcl_plugin - moveit_acceleration_filter - moveit_acceleration_filter_parameters - moveit_butterworth_filter - moveit_butterworth_filter_parameters - moveit_collision_detection + TARGETS moveit_collision_detection moveit_collision_detection_bullet moveit_collision_detection_fcl moveit_collision_distance_field @@ -92,8 +86,6 @@ install( moveit_robot_model moveit_robot_state moveit_robot_trajectory - moveit_ruckig_filter - moveit_ruckig_filter_parameters moveit_smoothing_base moveit_test_utils moveit_trajectory_processing @@ -104,6 +96,20 @@ install( ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) +install( + TARGETS collision_detector_bullet_plugin + collision_detector_fcl_plugin + moveit_acceleration_filter + moveit_acceleration_filter_parameters + moveit_butterworth_filter + moveit_butterworth_filter_parameters + moveit_ruckig_filter + moveit_ruckig_filter_parameters + EXPORT moveit_core_pluginTargets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin) + ament_export_targets(moveit_coreTargets HAS_LIBRARY_TARGET) ament_export_dependencies( angles diff --git a/moveit_kinematics/CMakeLists.txt b/moveit_kinematics/CMakeLists.txt index 21b03dfb14..a453674aba 100644 --- a/moveit_kinematics/CMakeLists.txt +++ b/moveit_kinematics/CMakeLists.txt @@ -28,12 +28,11 @@ set(THIS_PACKAGE_INCLUDE_DIRS cached_ik_kinematics_plugin/include) set(THIS_PACKAGE_LIBRARIES - cached_ik_kinematics_parameters - moveit_cached_ik_kinematics_base - moveit_cached_ik_kinematics_plugin - kdl_kinematics_parameters - moveit_kdl_kinematics_plugin - srv_kinematics_parameters + cached_ik_kinematics_parameters moveit_cached_ik_kinematics_base + kdl_kinematics_parameters srv_kinematics_parameters) + +set(THIS_PACKAGE_PLUGINS + moveit_cached_ik_kinematics_plugin moveit_kdl_kinematics_plugin moveit_srv_kinematics_plugin) set(THIS_PACKAGE_INCLUDE_DEPENDS @@ -74,6 +73,15 @@ install( INCLUDES DESTINATION include/moveit_kinematics) +install( + TARGETS ${THIS_PACKAGE_PLUGINS} + EXPORT ${PROJECT_NAME}PluginTargets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin + INCLUDES + DESTINATION include/moveit_kinematics) + ament_export_targets(${PROJECT_NAME}Targets HAS_LIBRARY_TARGET) ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) diff --git a/moveit_kinematics/cached_ik_kinematics_plugin/CMakeLists.txt b/moveit_kinematics/cached_ik_kinematics_plugin/CMakeLists.txt index f281644753..5ce836e33a 100644 --- a/moveit_kinematics/cached_ik_kinematics_plugin/CMakeLists.txt +++ b/moveit_kinematics/cached_ik_kinematics_plugin/CMakeLists.txt @@ -21,7 +21,7 @@ generate_parameter_library( target_link_libraries( moveit_cached_ik_kinematics_base PUBLIC cached_ik_kinematics_parameters - moveit_kdl_kinematics_plugin) + kdl_kinematics_parameters) add_library(moveit_cached_ik_kinematics_plugin SHARED src/cached_ik_kinematics_plugin.cpp) diff --git a/moveit_ros/move_group/CMakeLists.txt b/moveit_ros/move_group/CMakeLists.txt index bd48293e7a..2cdebb6ee9 100644 --- a/moveit_ros/move_group/CMakeLists.txt +++ b/moveit_ros/move_group/CMakeLists.txt @@ -79,13 +79,19 @@ install(TARGETS move_group list_move_group_capabilities RUNTIME DESTINATION lib/moveit_ros_move_group) install( - TARGETS moveit_move_group_default_capabilities - moveit_move_group_capabilities_base + TARGETS moveit_move_group_capabilities_base EXPORT moveit_ros_move_groupTargets LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) +install( + TARGETS moveit_move_group_default_capabilities + EXPORT moveit_move_group_default_capabilitiesTargets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin) + install(DIRECTORY include/ DESTINATION include/moveit_ros_move_group) install(PROGRAMS scripts/load_map scripts/save_map From 415a4a2c867bee01a65f1921502350373e4b00ad Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Tue, 14 Jan 2025 16:10:34 +0100 Subject: [PATCH 05/10] Fix passing different types to std::min in cost_functions.hpp (#3244) --- moveit_planners/stomp/include/stomp_moveit/cost_functions.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moveit_planners/stomp/include/stomp_moveit/cost_functions.hpp b/moveit_planners/stomp/include/stomp_moveit/cost_functions.hpp index b910cd3393..97350bec21 100644 --- a/moveit_planners/stomp/include/stomp_moveit/cost_functions.hpp +++ b/moveit_planners/stomp/include/stomp_moveit/cost_functions.hpp @@ -168,7 +168,7 @@ CostFn getCostFunctionFromStateValidator(const StateValidatorFn& state_validator const long kernel_start = mu - static_cast(sigma) * 4; const long kernel_end = mu + static_cast(sigma) * 4; const long bounded_kernel_start = std::max(0l, kernel_start); - const long bounded_kernel_end = std::min(values.cols() - 1, kernel_end); + const long bounded_kernel_end = std::min(static_cast(values.cols()) - 1, kernel_end); for (auto j = bounded_kernel_start; j <= bounded_kernel_end; ++j) { costs(j) = std::exp(-std::pow(j - mu, 2) / (2 * std::pow(sigma, 2))) / (sigma * std::sqrt(2 * M_PI)); From 2b9173b372b4e33559104d0afdb99f32b98eb01e Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Mon, 20 Jan 2025 18:00:34 +0100 Subject: [PATCH 06/10] Explicit convert from std::filesystem::path to std::string for Windows compatibility (#3249) --- .../src/collisions_updater.cpp | 4 ++-- .../src/setup_assistant_widget.cpp | 2 +- .../configuration_files.hpp | 2 +- .../src/configuration_files_widget.cpp | 8 ++++---- .../moveit_setup_core_plugins/src/start_screen.cpp | 2 +- .../src/start_screen_widget.cpp | 6 +++--- .../moveit_setup_framework/data/srdf_config.hpp | 2 +- .../moveit_setup_framework/src/srdf_config.cpp | 2 +- .../moveit_setup_framework/src/urdf_config.cpp | 14 +++++++------- .../moveit_setup_framework/src/utilities.cpp | 2 +- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/moveit_setup_assistant/moveit_setup_assistant/src/collisions_updater.cpp b/moveit_setup_assistant/moveit_setup_assistant/src/collisions_updater.cpp index d8963e1be1..f99e493ac8 100644 --- a/moveit_setup_assistant/moveit_setup_assistant/src/collisions_updater.cpp +++ b/moveit_setup_assistant/moveit_setup_assistant/src/collisions_updater.cpp @@ -100,7 +100,7 @@ int main(int argc, char* argv[]) auto package_settings = config_data->get("package_settings"); try { - package_settings->loadExisting(config_pkg_path); + package_settings->loadExisting(config_pkg_path.string()); } catch (const std::runtime_error& e) { @@ -113,7 +113,7 @@ int main(int argc, char* argv[]) RCLCPP_ERROR_STREAM(node->get_logger(), "Please provide config package or URDF and SRDF path"); return 1; } - else if (rdf_loader::RDFLoader::isXacroFile(srdf_path) && output_path.empty()) + else if (rdf_loader::RDFLoader::isXacroFile(srdf_path.string()) && output_path.empty()) { RCLCPP_ERROR_STREAM(node->get_logger(), "Please provide a different output file for SRDF xacro input file"); return 1; diff --git a/moveit_setup_assistant/moveit_setup_assistant/src/setup_assistant_widget.cpp b/moveit_setup_assistant/moveit_setup_assistant/src/setup_assistant_widget.cpp index 2d56b5e404..bab1ec0949 100644 --- a/moveit_setup_assistant/moveit_setup_assistant/src/setup_assistant_widget.cpp +++ b/moveit_setup_assistant/moveit_setup_assistant/src/setup_assistant_widget.cpp @@ -71,7 +71,7 @@ SetupAssistantWidget::SetupAssistantWidget(const rviz_common::ros_integration::R // Setting the window icon auto icon_path = getSharePath("moveit_ros_visualization") / "icons/classes/MotionPlanning.png"; - setWindowIcon(QIcon(icon_path.c_str())); + setWindowIcon(QIcon(icon_path.string().c_str())); // Basic widget container ----------------------------------------- QHBoxLayout* layout = new QHBoxLayout(); diff --git a/moveit_setup_assistant/moveit_setup_core_plugins/include/moveit_setup_core_plugins/configuration_files.hpp b/moveit_setup_assistant/moveit_setup_core_plugins/include/moveit_setup_core_plugins/configuration_files.hpp index bfca1e8d62..3d3f3ab386 100644 --- a/moveit_setup_assistant/moveit_setup_core_plugins/include/moveit_setup_core_plugins/configuration_files.hpp +++ b/moveit_setup_assistant/moveit_setup_core_plugins/include/moveit_setup_core_plugins/configuration_files.hpp @@ -80,7 +80,7 @@ class ConfigurationFiles : public SetupStep bool shouldGenerate(const GeneratedFilePtr& file) const { - std::string rel_path = file->getRelativePath(); + std::string rel_path = file->getRelativePath().string(); auto it = should_generate_.find(rel_path); if (it == should_generate_.end()) { diff --git a/moveit_setup_assistant/moveit_setup_core_plugins/src/configuration_files_widget.cpp b/moveit_setup_assistant/moveit_setup_core_plugins/src/configuration_files_widget.cpp index a9ef9bf85b..9e4c3484ab 100644 --- a/moveit_setup_assistant/moveit_setup_core_plugins/src/configuration_files_widget.cpp +++ b/moveit_setup_assistant/moveit_setup_core_plugins/src/configuration_files_widget.cpp @@ -294,7 +294,7 @@ void ConfigurationFilesWidget::changeCheckedState(QListWidgetItem* item) } // Enable/disable file - setup_step_.setShouldGenerate(gen_file->getRelativePath(), generate); + setup_step_.setShouldGenerate(gen_file->getRelativePath().string(), generate); } // ****************************************************************************************** @@ -303,7 +303,7 @@ void ConfigurationFilesWidget::changeCheckedState(QListWidgetItem* item) void ConfigurationFilesWidget::focusGiven() { // Pass the package path from start screen to configuration files screen - stack_path_->setPath(setup_step_.getPackagePath()); + stack_path_->setPath(setup_step_.getPackagePath().string()); setup_step_.loadFiles(); @@ -352,7 +352,7 @@ void ConfigurationFilesWidget::showGenFiles() auto gen_file = gen_files[i]; // Create a formatted row - QListWidgetItem* item = new QListWidgetItem(QString(gen_file->getRelativePath().c_str()), action_list_, 0); + QListWidgetItem* item = new QListWidgetItem(QString(gen_file->getRelativePath().string().c_str()), action_list_, 0); // Checkbox item->setCheckState(setup_step_.shouldGenerate(gen_file) ? Qt::Checked : Qt::Unchecked); @@ -480,7 +480,7 @@ bool ConfigurationFilesWidget::generatePackage() // Error occurred QMessageBox::critical(this, "Error Generating File", QString("Failed to generate folder or file: '") - .append(gen_file->getRelativePath().c_str()) + .append(gen_file->getRelativePath().string().c_str()) .append("' at location:\n") .append(absolute_path.c_str())); return false; diff --git a/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen.cpp b/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen.cpp index ff6827d6ff..b0550b1e90 100644 --- a/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen.cpp +++ b/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen.cpp @@ -70,7 +70,7 @@ std::filesystem::path StartScreen::getPackagePath() void StartScreen::loadExisting(const std::filesystem::path& package_path) { - package_settings_->loadExisting(package_path); + package_settings_->loadExisting(package_path.string()); } bool StartScreen::isXacroFile() diff --git a/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen_widget.cpp b/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen_widget.cpp index aef1b0f2f1..edd73eb3c9 100644 --- a/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen_widget.cpp +++ b/moveit_setup_assistant/moveit_setup_core_plugins/src/start_screen_widget.cpp @@ -205,7 +205,7 @@ void StartScreenWidget::focusGiven() std::filesystem::path pkg_path = setup_step_.getPackagePath(); if (!pkg_path.empty()) { - stack_path_->setPath(pkg_path); + stack_path_->setPath(pkg_path.string()); select_mode_->btn_exist_->click(); return; } @@ -213,7 +213,7 @@ void StartScreenWidget::focusGiven() std::filesystem::path urdf_path = setup_step_.getURDFPath(); if (!urdf_path.empty()) { - urdf_file_->setPath(urdf_path); + urdf_file_->setPath(urdf_path.string()); select_mode_->btn_new_->click(); } } @@ -324,7 +324,7 @@ bool StartScreenWidget::loadPackageSettings(bool show_warnings) try { - setup_step_.loadExisting(package_path_input); + setup_step_.loadExisting(package_path_input.string()); return true; } catch (const std::runtime_error& e) diff --git a/moveit_setup_assistant/moveit_setup_framework/include/moveit_setup_framework/data/srdf_config.hpp b/moveit_setup_assistant/moveit_setup_framework/include/moveit_setup_framework/data/srdf_config.hpp index 92508e0251..5b7fed77dd 100644 --- a/moveit_setup_assistant/moveit_setup_framework/include/moveit_setup_framework/data/srdf_config.hpp +++ b/moveit_setup_assistant/moveit_setup_framework/include/moveit_setup_framework/data/srdf_config.hpp @@ -263,7 +263,7 @@ class SRDFConfig : public SetupConfig bool write(const std::filesystem::path& path) { - return srdf_.writeSRDF(path); + return srdf_.writeSRDF(path.string()); } std::filesystem::path getPath() const diff --git a/moveit_setup_assistant/moveit_setup_framework/src/srdf_config.cpp b/moveit_setup_assistant/moveit_setup_framework/src/srdf_config.cpp index d19bdbfa50..69002a3ec7 100644 --- a/moveit_setup_assistant/moveit_setup_framework/src/srdf_config.cpp +++ b/moveit_setup_assistant/moveit_setup_framework/src/srdf_config.cpp @@ -88,7 +88,7 @@ void SRDFConfig::loadSRDFFile(const std::filesystem::path& srdf_file_path, const loadURDFModel(); std::string srdf_string; - if (!rdf_loader::RDFLoader::loadXmlFileToString(srdf_string, srdf_path_, xacro_args)) + if (!rdf_loader::RDFLoader::loadXmlFileToString(srdf_string, srdf_path_.string(), xacro_args)) { throw std::runtime_error("SRDF file not found: " + srdf_path_.string()); } diff --git a/moveit_setup_assistant/moveit_setup_framework/src/urdf_config.cpp b/moveit_setup_assistant/moveit_setup_framework/src/urdf_config.cpp index 72d9bf4af8..eab6823260 100644 --- a/moveit_setup_assistant/moveit_setup_framework/src/urdf_config.cpp +++ b/moveit_setup_assistant/moveit_setup_framework/src/urdf_config.cpp @@ -120,13 +120,13 @@ void URDFConfig::setPackageName() void URDFConfig::loadFromPackage(const std::filesystem::path& package_name, const std::filesystem::path& relative_path, const std::string& xacro_args) { - const std::filesystem::path package_path = getSharePath(package_name); + const std::filesystem::path package_path = getSharePath(package_name.string()); if (package_path.empty()) { throw std::runtime_error("URDF/COLLADA package not found: ''" + package_name.string()); } - urdf_pkg_name_ = package_name; + urdf_pkg_name_ = package_name.string(); urdf_pkg_relative_path_ = relative_path; xacro_args_ = xacro_args; @@ -139,12 +139,12 @@ void URDFConfig::load() RCLCPP_DEBUG_STREAM(*logger_, "URDF Package Name: " << urdf_pkg_name_); RCLCPP_DEBUG_STREAM(*logger_, "URDF Package Path: " << urdf_pkg_relative_path_); - if (!rdf_loader::RDFLoader::loadXmlFileToString(urdf_string_, urdf_path_, xacro_args_vec_)) + if (!rdf_loader::RDFLoader::loadXmlFileToString(urdf_string_, urdf_path_.string(), xacro_args_vec_)) { throw std::runtime_error("URDF/COLLADA file not found: " + urdf_path_.string()); } - if (urdf_string_.empty() && rdf_loader::RDFLoader::isXacroFile(urdf_path_)) + if (urdf_string_.empty() && rdf_loader::RDFLoader::isXacroFile(urdf_path_.string())) { throw std::runtime_error("Running xacro failed.\nPlease check console for errors."); } @@ -154,7 +154,7 @@ void URDFConfig::load() { throw std::runtime_error("URDF/COLLADA file is not a valid robot model."); } - urdf_from_xacro_ = rdf_loader::RDFLoader::isXacroFile(urdf_path_); + urdf_from_xacro_ = rdf_loader::RDFLoader::isXacroFile(urdf_path_.string()); // Set parameter parent_node_->set_parameter(rclcpp::Parameter("robot_description", urdf_string_)); @@ -164,7 +164,7 @@ void URDFConfig::load() bool URDFConfig::isXacroFile() const { - return rdf_loader::RDFLoader::isXacroFile(urdf_path_); + return rdf_loader::RDFLoader::isXacroFile(urdf_path_.string()); } bool URDFConfig::isConfigured() const @@ -182,7 +182,7 @@ void URDFConfig::collectVariables(std::vector& variables) std::string urdf_location; if (urdf_pkg_name_.empty()) { - urdf_location = urdf_path_; + urdf_location = urdf_path_.string(); } else { diff --git a/moveit_setup_assistant/moveit_setup_framework/src/utilities.cpp b/moveit_setup_assistant/moveit_setup_framework/src/utilities.cpp index 3625d94594..43ade4b276 100644 --- a/moveit_setup_assistant/moveit_setup_framework/src/utilities.cpp +++ b/moveit_setup_assistant/moveit_setup_framework/src/utilities.cpp @@ -63,7 +63,7 @@ bool extractPackageNameFromPath(const std::filesystem::path& path, std::string& // Default package name to folder name package_name = sub_path.filename().string(); tinyxml2::XMLDocument package_xml_file; - auto is_open = package_xml_file.LoadFile((sub_path / "package.xml").c_str()); + auto is_open = package_xml_file.LoadFile((sub_path / "package.xml").string().c_str()); if (is_open == tinyxml2::XML_SUCCESS) { auto name_potential = From e11cabbadf895c421c9c7018f974d786ec80cad8 Mon Sep 17 00:00:00 2001 From: Sebastian Castro <4603398+sea-bass@users.noreply.github.com> Date: Tue, 21 Jan 2025 20:16:41 -0500 Subject: [PATCH 07/10] Update includes for generate_parameter_library 0.4.0 (#3255) * Update includes for generate_parameter_library 0.4.0 * Fix header prefix in IKFast template --- .../moveit/online_signal_smoothing/acceleration_filter.hpp | 2 +- .../moveit/online_signal_smoothing/butterworth_filter.hpp | 2 +- .../include/moveit/online_signal_smoothing/ruckig_filter.hpp | 2 +- .../cached_ik_kinematics_plugin.hpp | 2 +- .../templates/ikfast61_moveit_plugin_template.cpp | 2 +- .../moveit/kdl_kinematics_plugin/kdl_kinematics_plugin.hpp | 2 +- .../moveit/srv_kinematics_plugin/srv_kinematics_plugin.hpp | 2 +- .../pilz_industrial_motion_planner/command_list_manager.hpp | 2 +- .../pilz_industrial_motion_planner/limits_container.hpp | 2 +- .../pilz_industrial_motion_planner.hpp | 2 +- .../src/command_list_manager.cpp | 2 +- .../src/pilz_industrial_motion_planner.cpp | 2 +- .../unit_tests/src/unittest_trajectory_generator_common.cpp | 2 +- .../include/stomp_moveit/stomp_moveit_planning_context.hpp | 2 +- moveit_planners/stomp/src/stomp_moveit_planning_context.cpp | 2 +- .../src/prbt_manipulator_ikfast_moveit_plugin.cpp | 2 +- .../src/hybrid_planning_manager.cpp | 2 +- .../local_planner_component/src/local_planner_component.cpp | 2 +- .../moveit_servo/include/moveit_servo/collision_monitor.hpp | 2 +- moveit_ros/moveit_servo/include/moveit_servo/servo.hpp | 2 +- moveit_ros/moveit_servo/include/moveit_servo/utils/common.hpp | 2 +- .../kinematics_plugin_loader/kinematics_plugin_loader.hpp | 2 +- .../include/moveit/planning_pipeline/planning_pipeline.hpp | 2 +- .../src/check_for_stacked_constraints.cpp | 2 +- .../src/check_start_state_bounds.cpp | 2 +- .../src/check_start_state_collision.cpp | 2 +- .../src/validate_workspace_bounds.cpp | 2 +- .../src/add_time_optimal_parameterization.cpp | 2 +- .../src/display_motion_path.cpp | 2 +- .../planning_response_adapter_plugins/src/validate_path.cpp | 3 ++- 30 files changed, 31 insertions(+), 30 deletions(-) diff --git a/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/acceleration_filter.hpp b/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/acceleration_filter.hpp index def9fa48ec..8a542983ba 100644 --- a/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/acceleration_filter.hpp +++ b/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/acceleration_filter.hpp @@ -78,7 +78,7 @@ c --------x--- v | #include #include #include -#include +#include #include #include diff --git a/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/butterworth_filter.hpp b/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/butterworth_filter.hpp index aa7d4af124..ae153fbba8 100644 --- a/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/butterworth_filter.hpp +++ b/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/butterworth_filter.hpp @@ -41,9 +41,9 @@ #include -#include #include #include +#include namespace online_signal_smoothing { diff --git a/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/ruckig_filter.hpp b/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/ruckig_filter.hpp index db523cfa2e..f5fddba4d0 100644 --- a/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/ruckig_filter.hpp +++ b/moveit_core/online_signal_smoothing/include/moveit/online_signal_smoothing/ruckig_filter.hpp @@ -42,7 +42,7 @@ Description: Applies jerk/acceleration/velocity limits to online motion commands #include #include -#include +#include #include diff --git a/moveit_kinematics/cached_ik_kinematics_plugin/include/moveit/cached_ik_kinematics_plugin/cached_ik_kinematics_plugin.hpp b/moveit_kinematics/cached_ik_kinematics_plugin/include/moveit/cached_ik_kinematics_plugin/cached_ik_kinematics_plugin.hpp index a0cce0ab4b..dca7185a75 100644 --- a/moveit_kinematics/cached_ik_kinematics_plugin/include/moveit/cached_ik_kinematics_plugin/cached_ik_kinematics_plugin.hpp +++ b/moveit_kinematics/cached_ik_kinematics_plugin/include/moveit/cached_ik_kinematics_plugin/cached_ik_kinematics_plugin.hpp @@ -55,8 +55,8 @@ #include #include #include -#include #include +#include namespace cached_ik_kinematics_plugin { diff --git a/moveit_kinematics/ikfast_kinematics_plugin/templates/ikfast61_moveit_plugin_template.cpp b/moveit_kinematics/ikfast_kinematics_plugin/templates/ikfast61_moveit_plugin_template.cpp index 49f506b420..c50f3a7804 100644 --- a/moveit_kinematics/ikfast_kinematics_plugin/templates/ikfast61_moveit_plugin_template.cpp +++ b/moveit_kinematics/ikfast_kinematics_plugin/templates/ikfast61_moveit_plugin_template.cpp @@ -47,8 +47,8 @@ #include #include #include -#include #include +#include <_PACKAGE_NAME_/ikfast_kinematics_parameters.hpp> using namespace moveit::core; diff --git a/moveit_kinematics/kdl_kinematics_plugin/include/moveit/kdl_kinematics_plugin/kdl_kinematics_plugin.hpp b/moveit_kinematics/kdl_kinematics_plugin/include/moveit/kdl_kinematics_plugin/kdl_kinematics_plugin.hpp index f6bb09f0e5..710e560d33 100644 --- a/moveit_kinematics/kdl_kinematics_plugin/include/moveit/kdl_kinematics_plugin/kdl_kinematics_plugin.hpp +++ b/moveit_kinematics/kdl_kinematics_plugin/include/moveit/kdl_kinematics_plugin/kdl_kinematics_plugin.hpp @@ -39,7 +39,6 @@ // ROS #include #include -#include // ROS msgs #include @@ -58,6 +57,7 @@ #include #include #include +#include #include diff --git a/moveit_kinematics/srv_kinematics_plugin/include/moveit/srv_kinematics_plugin/srv_kinematics_plugin.hpp b/moveit_kinematics/srv_kinematics_plugin/include/moveit/srv_kinematics_plugin/srv_kinematics_plugin.hpp index 84b2289ad3..6a2f11da4a 100644 --- a/moveit_kinematics/srv_kinematics_plugin/include/moveit/srv_kinematics_plugin/srv_kinematics_plugin.hpp +++ b/moveit_kinematics/srv_kinematics_plugin/include/moveit/srv_kinematics_plugin/srv_kinematics_plugin.hpp @@ -43,7 +43,6 @@ // ROS2 #include -#include // System #include @@ -56,6 +55,7 @@ // MoveIt #include #include +#include namespace srv_kinematics_plugin { diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.hpp b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.hpp index a3a64b6dfe..213cb3b5ad 100644 --- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.hpp +++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/command_list_manager.hpp @@ -48,7 +48,7 @@ #include #include -#include +#include namespace pilz_industrial_motion_planner { diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/limits_container.hpp b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/limits_container.hpp index e26a52e276..42e2df3f88 100644 --- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/limits_container.hpp +++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/limits_container.hpp @@ -37,7 +37,7 @@ #include #include -#include "cartesian_limits_parameters.hpp" +#include namespace pilz_industrial_motion_planner { diff --git a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/pilz_industrial_motion_planner.hpp b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/pilz_industrial_motion_planner.hpp index 535fbd9644..bacb5f559e 100644 --- a/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/pilz_industrial_motion_planner.hpp +++ b/moveit_planners/pilz_industrial_motion_planner/include/pilz_industrial_motion_planner/pilz_industrial_motion_planner.hpp @@ -45,7 +45,7 @@ #include #include -#include +#include namespace pilz_industrial_motion_planner { diff --git a/moveit_planners/pilz_industrial_motion_planner/src/command_list_manager.cpp b/moveit_planners/pilz_industrial_motion_planner/src/command_list_manager.cpp index d222dd1e7c..03083f3ae5 100644 --- a/moveit_planners/pilz_industrial_motion_planner/src/command_list_manager.cpp +++ b/moveit_planners/pilz_industrial_motion_planner/src/command_list_manager.cpp @@ -44,7 +44,7 @@ #include #include -#include "cartesian_limits_parameters.hpp" +#include #include #include #include diff --git a/moveit_planners/pilz_industrial_motion_planner/src/pilz_industrial_motion_planner.cpp b/moveit_planners/pilz_industrial_motion_planner/src/pilz_industrial_motion_planner.cpp index fbf19bf372..c3c3e83034 100644 --- a/moveit_planners/pilz_industrial_motion_planner/src/pilz_industrial_motion_planner.cpp +++ b/moveit_planners/pilz_industrial_motion_planner/src/pilz_industrial_motion_planner.cpp @@ -40,7 +40,7 @@ #include #include -#include "cartesian_limits_parameters.hpp" +#include #include #include diff --git a/moveit_planners/pilz_industrial_motion_planner/test/unit_tests/src/unittest_trajectory_generator_common.cpp b/moveit_planners/pilz_industrial_motion_planner/test/unit_tests/src/unittest_trajectory_generator_common.cpp index fbc31afa11..9c491789c3 100644 --- a/moveit_planners/pilz_industrial_motion_planner/test/unit_tests/src/unittest_trajectory_generator_common.cpp +++ b/moveit_planners/pilz_industrial_motion_planner/test/unit_tests/src/unittest_trajectory_generator_common.cpp @@ -53,7 +53,7 @@ #include -#include "cartesian_limits_parameters.hpp" +#include const std::string PARAM_MODEL_NO_GRIPPER_NAME{ "robot_description" }; const std::string PARAM_MODEL_WITH_GRIPPER_NAME{ "robot_description_pg70" }; diff --git a/moveit_planners/stomp/include/stomp_moveit/stomp_moveit_planning_context.hpp b/moveit_planners/stomp/include/stomp_moveit/stomp_moveit_planning_context.hpp index a5add5e515..dcce1be46c 100644 --- a/moveit_planners/stomp/include/stomp_moveit/stomp_moveit_planning_context.hpp +++ b/moveit_planners/stomp/include/stomp_moveit/stomp_moveit_planning_context.hpp @@ -41,7 +41,7 @@ #include -#include +#include // Forward declaration namespace stomp diff --git a/moveit_planners/stomp/src/stomp_moveit_planning_context.cpp b/moveit_planners/stomp/src/stomp_moveit_planning_context.cpp index 4d37e61de6..52a5413588 100644 --- a/moveit_planners/stomp/src/stomp_moveit_planning_context.cpp +++ b/moveit_planners/stomp/src/stomp_moveit_planning_context.cpp @@ -47,7 +47,7 @@ #include #include #include -#include +#include #include #include diff --git a/moveit_planners/test_configs/prbt_ikfast_manipulator_plugin/src/prbt_manipulator_ikfast_moveit_plugin.cpp b/moveit_planners/test_configs/prbt_ikfast_manipulator_plugin/src/prbt_manipulator_ikfast_moveit_plugin.cpp index 4ea25702de..b1929ff008 100644 --- a/moveit_planners/test_configs/prbt_ikfast_manipulator_plugin/src/prbt_manipulator_ikfast_moveit_plugin.cpp +++ b/moveit_planners/test_configs/prbt_ikfast_manipulator_plugin/src/prbt_manipulator_ikfast_moveit_plugin.cpp @@ -52,7 +52,7 @@ #include #include #include -#include +#include using namespace moveit::core; diff --git a/moveit_ros/hybrid_planning/hybrid_planning_manager/hybrid_planning_manager_component/src/hybrid_planning_manager.cpp b/moveit_ros/hybrid_planning/hybrid_planning_manager/hybrid_planning_manager_component/src/hybrid_planning_manager.cpp index ec1e3a2f95..44c0f0f26c 100644 --- a/moveit_ros/hybrid_planning/hybrid_planning_manager/hybrid_planning_manager_component/src/hybrid_planning_manager.cpp +++ b/moveit_ros/hybrid_planning/hybrid_planning_manager/hybrid_planning_manager_component/src/hybrid_planning_manager.cpp @@ -34,7 +34,7 @@ #include #include -#include +#include #include namespace moveit::hybrid_planning diff --git a/moveit_ros/hybrid_planning/local_planner/local_planner_component/src/local_planner_component.cpp b/moveit_ros/hybrid_planning/local_planner/local_planner_component/src/local_planner_component.cpp index f9914f2ee9..cff465afe7 100644 --- a/moveit_ros/hybrid_planning/local_planner/local_planner_component/src/local_planner_component.cpp +++ b/moveit_ros/hybrid_planning/local_planner/local_planner_component/src/local_planner_component.cpp @@ -33,7 +33,7 @@ *********************************************************************/ #include -#include +#include #include #include diff --git a/moveit_ros/moveit_servo/include/moveit_servo/collision_monitor.hpp b/moveit_ros/moveit_servo/include/moveit_servo/collision_monitor.hpp index 9752e5feb6..91c1dfdb9a 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/collision_monitor.hpp +++ b/moveit_ros/moveit_servo/include/moveit_servo/collision_monitor.hpp @@ -41,9 +41,9 @@ #pragma once -#include #include #include +#include namespace moveit_servo { diff --git a/moveit_ros/moveit_servo/include/moveit_servo/servo.hpp b/moveit_ros/moveit_servo/include/moveit_servo/servo.hpp index d0331c650d..c9a99151d4 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/servo.hpp +++ b/moveit_ros/moveit_servo/include/moveit_servo/servo.hpp @@ -41,8 +41,8 @@ #pragma once -#include #include +#include #include #include #include diff --git a/moveit_ros/moveit_servo/include/moveit_servo/utils/common.hpp b/moveit_ros/moveit_servo/include/moveit_servo/utils/common.hpp index 6d44c18298..1da9fd7e5e 100644 --- a/moveit_ros/moveit_servo/include/moveit_servo/utils/common.hpp +++ b/moveit_ros/moveit_servo/include/moveit_servo/utils/common.hpp @@ -41,7 +41,7 @@ #pragma once -#include +#include #include #include #include diff --git a/moveit_ros/planning/kinematics_plugin_loader/include/moveit/kinematics_plugin_loader/kinematics_plugin_loader.hpp b/moveit_ros/planning/kinematics_plugin_loader/include/moveit/kinematics_plugin_loader/kinematics_plugin_loader.hpp index e7494cf73c..968beae2f6 100644 --- a/moveit_ros/planning/kinematics_plugin_loader/include/moveit/kinematics_plugin_loader/kinematics_plugin_loader.hpp +++ b/moveit_ros/planning/kinematics_plugin_loader/include/moveit/kinematics_plugin_loader/kinematics_plugin_loader.hpp @@ -39,8 +39,8 @@ #include #include #include -#include #include +#include namespace kinematics_plugin_loader { diff --git a/moveit_ros/planning/planning_pipeline/include/moveit/planning_pipeline/planning_pipeline.hpp b/moveit_ros/planning/planning_pipeline/include/moveit/planning_pipeline/planning_pipeline.hpp index 18abda399b..f5681eeb19 100644 --- a/moveit_ros/planning/planning_pipeline/include/moveit/planning_pipeline/planning_pipeline.hpp +++ b/moveit_ros/planning/planning_pipeline/include/moveit/planning_pipeline/planning_pipeline.hpp @@ -49,7 +49,7 @@ #include #include #include -#include +#include namespace planning_pipeline { diff --git a/moveit_ros/planning/planning_request_adapter_plugins/src/check_for_stacked_constraints.cpp b/moveit_ros/planning/planning_request_adapter_plugins/src/check_for_stacked_constraints.cpp index e0b60847c1..08727ab521 100644 --- a/moveit_ros/planning/planning_request_adapter_plugins/src/check_for_stacked_constraints.cpp +++ b/moveit_ros/planning/planning_request_adapter_plugins/src/check_for_stacked_constraints.cpp @@ -43,7 +43,7 @@ #include #include -#include +#include namespace default_planning_request_adapters { diff --git a/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_bounds.cpp b/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_bounds.cpp index 4b22eee85a..b0e29a46aa 100644 --- a/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_bounds.cpp +++ b/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_bounds.cpp @@ -53,7 +53,7 @@ #include #include -#include +#include namespace default_planning_request_adapters { diff --git a/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_collision.cpp b/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_collision.cpp index 99ccf820d7..5843dde8dc 100644 --- a/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_collision.cpp +++ b/moveit_ros/planning/planning_request_adapter_plugins/src/check_start_state_collision.cpp @@ -45,7 +45,7 @@ #include #include -#include +#include namespace default_planning_request_adapters { diff --git a/moveit_ros/planning/planning_request_adapter_plugins/src/validate_workspace_bounds.cpp b/moveit_ros/planning/planning_request_adapter_plugins/src/validate_workspace_bounds.cpp index a21dffe61e..df87b43326 100644 --- a/moveit_ros/planning/planning_request_adapter_plugins/src/validate_workspace_bounds.cpp +++ b/moveit_ros/planning/planning_request_adapter_plugins/src/validate_workspace_bounds.cpp @@ -44,7 +44,7 @@ #include #include -#include +#include namespace default_planning_request_adapters { diff --git a/moveit_ros/planning/planning_response_adapter_plugins/src/add_time_optimal_parameterization.cpp b/moveit_ros/planning/planning_response_adapter_plugins/src/add_time_optimal_parameterization.cpp index b5097dce5f..fd2a764c0b 100644 --- a/moveit_ros/planning/planning_response_adapter_plugins/src/add_time_optimal_parameterization.cpp +++ b/moveit_ros/planning/planning_response_adapter_plugins/src/add_time_optimal_parameterization.cpp @@ -39,7 +39,7 @@ #include #include -#include +#include namespace default_planning_response_adapters { diff --git a/moveit_ros/planning/planning_response_adapter_plugins/src/display_motion_path.cpp b/moveit_ros/planning/planning_response_adapter_plugins/src/display_motion_path.cpp index bc6fa5f605..0c25d552ae 100644 --- a/moveit_ros/planning/planning_response_adapter_plugins/src/display_motion_path.cpp +++ b/moveit_ros/planning/planning_response_adapter_plugins/src/display_motion_path.cpp @@ -42,7 +42,7 @@ #include #include -#include +#include namespace default_planning_response_adapters { diff --git a/moveit_ros/planning/planning_response_adapter_plugins/src/validate_path.cpp b/moveit_ros/planning/planning_response_adapter_plugins/src/validate_path.cpp index 1284ba821b..25384fc704 100644 --- a/moveit_ros/planning/planning_response_adapter_plugins/src/validate_path.cpp +++ b/moveit_ros/planning/planning_response_adapter_plugins/src/validate_path.cpp @@ -42,7 +42,8 @@ #include #include -#include +#include + namespace default_planning_response_adapters { /** From f47ecb5d43b963cbe5e1fb035751eec0035356d1 Mon Sep 17 00:00:00 2001 From: Marq Rasmussen Date: Wed, 22 Jan 2025 10:15:36 -0700 Subject: [PATCH 08/10] Parallel gripper controller (#3246) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add ParallelGripperCommand controller * only use max velocity/effor when specified * else if * clean up author and copyright comments * address review * single joint control, remove allow_stalling --------- Co-authored-by: Jafar Uruç --- .../CMakeLists.txt | 13 +- .../moveit_ros_control_interface_plugins.xml | 9 +- ... => gripper_command_controller_plugin.cpp} | 10 +- ...llel_gripper_command_controller_plugin.cpp | 63 +++++++ ... => gripper_command_controller_handle.hpp} | 20 +- .../gripper_controller_handle.h | 4 +- ...llel_gripper_command_controller_handle.hpp | 178 ++++++++++++++++++ .../src/moveit_simple_controller_manager.cpp | 55 ++++-- 8 files changed, 318 insertions(+), 34 deletions(-) rename moveit_plugins/moveit_ros_control_interface/src/{gripper_controller_plugin.cpp => gripper_command_controller_plugin.cpp} (88%) create mode 100644 moveit_plugins/moveit_ros_control_interface/src/parallel_gripper_command_controller_plugin.cpp rename moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/{gripper_controller_handle.hpp => gripper_command_controller_handle.hpp} (92%) create mode 100644 moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/parallel_gripper_command_controller_handle.hpp diff --git a/moveit_plugins/moveit_ros_control_interface/CMakeLists.txt b/moveit_plugins/moveit_ros_control_interface/CMakeLists.txt index 38a203fe27..a23dac9f96 100644 --- a/moveit_plugins/moveit_ros_control_interface/CMakeLists.txt +++ b/moveit_plugins/moveit_ros_control_interface/CMakeLists.txt @@ -38,7 +38,7 @@ ament_target_dependencies(moveit_ros_control_interface_trajectory_plugin ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) add_library(moveit_ros_control_interface_gripper_plugin SHARED - src/gripper_controller_plugin.cpp) + src/gripper_command_controller_plugin.cpp) set_target_properties( moveit_ros_control_interface_gripper_plugin PROPERTIES VERSION "${moveit_ros_control_interface_VERSION}") @@ -47,6 +47,16 @@ target_include_directories(moveit_ros_control_interface_gripper_plugin ament_target_dependencies(moveit_ros_control_interface_gripper_plugin ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) +add_library(moveit_ros_control_interface_parallel_gripper_plugin SHARED + src/parallel_gripper_command_controller_plugin.cpp) +set_target_properties( + moveit_ros_control_interface_parallel_gripper_plugin + PROPERTIES VERSION "${moveit_ros_control_interface_VERSION}") +target_include_directories(moveit_ros_control_interface_parallel_gripper_plugin + PRIVATE include) +ament_target_dependencies(moveit_ros_control_interface_parallel_gripper_plugin + ${THIS_PACKAGE_INCLUDE_DEPENDS} Boost) + add_library(moveit_ros_control_interface_empty_plugin SHARED src/empty_controller_plugin.cpp) set_target_properties( @@ -65,6 +75,7 @@ set(TARGET_LIBRARIES moveit_ros_control_interface_plugin moveit_ros_control_interface_trajectory_plugin moveit_ros_control_interface_gripper_plugin + moveit_ros_control_interface_parallel_gripper_plugin moveit_ros_control_interface_empty_plugin) # Mark executables and/or libraries for installation diff --git a/moveit_plugins/moveit_ros_control_interface/moveit_ros_control_interface_plugins.xml b/moveit_plugins/moveit_ros_control_interface/moveit_ros_control_interface_plugins.xml index fc6777c13c..928be71cc3 100644 --- a/moveit_plugins/moveit_ros_control_interface/moveit_ros_control_interface_plugins.xml +++ b/moveit_plugins/moveit_ros_control_interface/moveit_ros_control_interface_plugins.xml @@ -10,10 +10,15 @@ - + - + + + + + + diff --git a/moveit_plugins/moveit_ros_control_interface/src/gripper_controller_plugin.cpp b/moveit_plugins/moveit_ros_control_interface/src/gripper_command_controller_plugin.cpp similarity index 88% rename from moveit_plugins/moveit_ros_control_interface/src/gripper_controller_plugin.cpp rename to moveit_plugins/moveit_ros_control_interface/src/gripper_command_controller_plugin.cpp index 8d6e9fafad..ba0e0cefd9 100644 --- a/moveit_plugins/moveit_ros_control_interface/src/gripper_controller_plugin.cpp +++ b/moveit_plugins/moveit_ros_control_interface/src/gripper_command_controller_plugin.cpp @@ -36,27 +36,27 @@ #include #include -#include +#include #include #include namespace moveit_ros_control_interface { /** - * \brief Simple allocator for moveit_simple_controller_manager::FollowJointTrajectoryControllerHandle instances. + * \brief Simple allocator for moveit_simple_controller_manager::GripperCommandControllerHandle instances. */ -class GripperControllerAllocator : public ControllerHandleAllocator +class GripperCommandControllerAllocator : public ControllerHandleAllocator { public: moveit_controller_manager::MoveItControllerHandlePtr alloc(const rclcpp::Node::SharedPtr& node, const std::string& name, const std::vector& /* resources */) override { - return std::make_shared(node, name, "gripper_cmd"); + return std::make_shared(node, name, "gripper_cmd"); } }; } // namespace moveit_ros_control_interface -PLUGINLIB_EXPORT_CLASS(moveit_ros_control_interface::GripperControllerAllocator, +PLUGINLIB_EXPORT_CLASS(moveit_ros_control_interface::GripperCommandControllerAllocator, moveit_ros_control_interface::ControllerHandleAllocator); diff --git a/moveit_plugins/moveit_ros_control_interface/src/parallel_gripper_command_controller_plugin.cpp b/moveit_plugins/moveit_ros_control_interface/src/parallel_gripper_command_controller_plugin.cpp new file mode 100644 index 0000000000..9666cb11dc --- /dev/null +++ b/moveit_plugins/moveit_ros_control_interface/src/parallel_gripper_command_controller_plugin.cpp @@ -0,0 +1,63 @@ +/********************************************************************* + * Software License Agreement (BSD License) + * + * Copyright (c) 2025, Marq Rasmussen + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Marq Rasmussen nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *********************************************************************/ + +/* Author: Marq Rasmussen */ + +#include +#include +#include +#include +#include + +namespace moveit_ros_control_interface +{ +/** + * \brief Simple allocator for moveit_simple_controller_manager::ParallelGripperCommandControllerHandle instances. + */ +class ParallelGripperCommandControllerAllocator : public ControllerHandleAllocator +{ +public: + moveit_controller_manager::MoveItControllerHandlePtr alloc(const rclcpp::Node::SharedPtr& node, + const std::string& name, + const std::vector& /* resources */) override + { + return std::make_shared(node, name, + "gripper_cmd"); + } +}; + +} // namespace moveit_ros_control_interface + +PLUGINLIB_EXPORT_CLASS(moveit_ros_control_interface::ParallelGripperCommandControllerAllocator, + moveit_ros_control_interface::ControllerHandleAllocator); diff --git a/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/gripper_controller_handle.hpp b/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/gripper_command_controller_handle.hpp similarity index 92% rename from moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/gripper_controller_handle.hpp rename to moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/gripper_command_controller_handle.hpp index 6f2dc9a21b..2284e81e3d 100644 --- a/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/gripper_controller_handle.hpp +++ b/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/gripper_command_controller_handle.hpp @@ -47,12 +47,12 @@ namespace moveit_simple_controller_manager * This is an interface for a gripper using control_msgs/GripperCommandAction * action interface (single DOF). */ -class GripperControllerHandle : public ActionBasedControllerHandle +class GripperCommandControllerHandle : public ActionBasedControllerHandle { public: /* Topics will map to name/ns/goal, name/ns/result, etc */ - GripperControllerHandle(const rclcpp::Node::SharedPtr& node, const std::string& name, const std::string& ns, - const double max_effort = 0.0) + GripperCommandControllerHandle(const rclcpp::Node::SharedPtr& node, const std::string& name, const std::string& ns, + const double max_effort = 0.0) : ActionBasedControllerHandle( node, name, ns, "moveit.simple_controller_manager.gripper_controller_handle") , allow_failure_(false) @@ -98,23 +98,23 @@ class GripperControllerHandle : public ActionBasedControllerHandle gripper_joint_indexes; + std::vector gripper_joint_indices; for (std::size_t i = 0; i < trajectory.joint_trajectory.joint_names.size(); ++i) { if (command_joints_.find(trajectory.joint_trajectory.joint_names[i]) != command_joints_.end()) { - gripper_joint_indexes.push_back(i); + gripper_joint_indices.push_back(i); if (!parallel_jaw_gripper_) break; } } - if (gripper_joint_indexes.empty()) + if (gripper_joint_indices.empty()) { RCLCPP_WARN(logger_, "No command_joint was specified for the MoveIt controller gripper handle. \ - Please see GripperControllerHandle::addCommandJoint() and \ - GripperControllerHandle::setCommandJoint(). Assuming index 0."); - gripper_joint_indexes.push_back(0); + Please see GripperCommandControllerHandle::addCommandJoint() and \ + GripperCommandControllerHandle::setCommandJoint(). Assuming index 0."); + gripper_joint_indices.push_back(0); } // goal to be sent @@ -126,7 +126,7 @@ class GripperControllerHandle : public ActionBasedControllerHandle +#pragma message(".h header is obsolete. Please use the gripper_command_controller_handle.hpp header instead.") +#include diff --git a/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/parallel_gripper_command_controller_handle.hpp b/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/parallel_gripper_command_controller_handle.hpp new file mode 100644 index 0000000000..4df57ecacc --- /dev/null +++ b/moveit_plugins/moveit_simple_controller_manager/include/moveit_simple_controller_manager/parallel_gripper_command_controller_handle.hpp @@ -0,0 +1,178 @@ +/********************************************************************* + * Software License Agreement (BSD License) + * + * Copyright (c) 2025, Marq Rasmussen + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the Marq Rasmussen nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *********************************************************************/ +/* Design inspired by gripper_command_controller_handle.hpp */ +/* Author: Marq Rasmussen */ + +#pragma once + +#include +#include +#include + +namespace moveit_simple_controller_manager +{ +/* + * This is an interface for a gripper using the control_msgs/ParallelGripperCommand action interface. + */ +class ParallelGripperCommandControllerHandle + : public ActionBasedControllerHandle +{ +public: + /* Topics will map to name/ns/goal, name/ns/result, etc */ + ParallelGripperCommandControllerHandle(const rclcpp::Node::SharedPtr& node, const std::string& name, + const std::string& ns, const double max_effort = 0.0, + const double max_velocity = 0.0) + : ActionBasedControllerHandle( + node, name, ns, "moveit.simple_controller_manager.parallel_gripper_controller_handle") + , max_effort_(max_effort) + , max_velocity_(max_velocity) + { + } + + bool sendTrajectory(const moveit_msgs::msg::RobotTrajectory& trajectory) override + { + RCLCPP_DEBUG_STREAM(logger_, "Received new trajectory for " << name_); + + if (!controller_action_client_) + return false; + + if (!isConnected()) + { + RCLCPP_ERROR_STREAM(logger_, "Action client not connected to action server: " << getActionName()); + return false; + } + + if (!trajectory.multi_dof_joint_trajectory.points.empty()) + { + RCLCPP_ERROR(logger_, "%s cannot execute multi-dof trajectories.", name_.c_str()); + return false; + } + + if (trajectory.joint_trajectory.points.empty()) + { + RCLCPP_ERROR(logger_, "%s requires at least one joint trajectory point, but none received.", name_.c_str()); + return false; + } + + if (trajectory.joint_trajectory.joint_names.empty()) + { + RCLCPP_ERROR(logger_, "%s received a trajectory with no joint names specified.", name_.c_str()); + return false; + } + + // goal to be sent + control_msgs::action::ParallelGripperCommand::Goal goal; + auto& cmd_state = goal.command; + + auto& joint_names = trajectory.joint_trajectory.joint_names; + auto it = std::find(joint_names.begin(), joint_names.end(), command_joint_); + if (it != joint_names.end()) + { + cmd_state.name.push_back(command_joint_); + std::size_t gripper_joint_index = std::distance(joint_names.begin(), it); + // send last trajectory point + if (trajectory.joint_trajectory.points.back().positions.size() <= gripper_joint_index) + { + RCLCPP_ERROR(logger_, "ParallelGripperCommand expects a joint trajectory with one \ + point that specifies at least the position of joint \ + '%s', but insufficient positions provided.", + trajectory.joint_trajectory.joint_names[gripper_joint_index].c_str()); + return false; + } + cmd_state.position.push_back(trajectory.joint_trajectory.points.back().positions[gripper_joint_index]); + // only set the velocity or effort if the user has specified a positive non-zero max value + if (max_velocity_ > 0.0) + { + cmd_state.velocity.push_back(max_velocity_); + } + if (max_effort_ > 0.0) + { + cmd_state.effort.push_back(max_effort_); + } + } + else + { + RCLCPP_ERROR(logger_, "Received trajectory does not include a command for joint name %s.", command_joint_.c_str()); + return false; + } + + rclcpp_action::Client::SendGoalOptions send_goal_options; + // Active callback + send_goal_options.goal_response_callback = + [this](const rclcpp_action::Client::GoalHandle::SharedPtr& + /* unused-arg */) { RCLCPP_DEBUG_STREAM(logger_, name_ << " started execution."); }; + // Send goal + auto current_goal_future = controller_action_client_->async_send_goal(goal, send_goal_options); + current_goal_ = current_goal_future.get(); + if (!current_goal_) + { + RCLCPP_ERROR(logger_, "%s goal was rejected by server.", name_.c_str()); + return false; + } + + done_ = false; + last_exec_ = moveit_controller_manager::ExecutionStatus::RUNNING; + return true; + } + + void setCommandJoint(const std::string& name) + { + command_joint_ = name; + } + +private: + void controllerDoneCallback( + const rclcpp_action::ClientGoalHandle::WrappedResult& wrapped_result) + override + { + finishControllerExecution(wrapped_result.code); + } + + /* + * The ``max_effort`` used in the ParallelGripperCommand message. + */ + double max_effort_ = 0.0; + + /* + * The ``max_velocity_`` used in the ParallelGripperCommand message. + */ + double max_velocity_ = 0.0; + + /* + * The joint to command in the ParallelGripperCommand message + */ + std::string command_joint_; +}; // namespace moveit_simple_controller_manager + +} // end namespace moveit_simple_controller_manager diff --git a/moveit_plugins/moveit_simple_controller_manager/src/moveit_simple_controller_manager.cpp b/moveit_plugins/moveit_simple_controller_manager/src/moveit_simple_controller_manager.cpp index 394765c8cb..b38c84a596 100644 --- a/moveit_plugins/moveit_simple_controller_manager/src/moveit_simple_controller_manager.cpp +++ b/moveit_plugins/moveit_simple_controller_manager/src/moveit_simple_controller_manager.cpp @@ -36,7 +36,8 @@ /* Author: Michael Ferguson, Ioan Sucan, E. Gil Jones */ #include -#include +#include +#include #include #include #include @@ -147,14 +148,10 @@ class MoveItSimpleControllerManager : public moveit_controller_manager::MoveItCo if (type == "GripperCommand") { double max_effort; - const std::string& max_effort_param = makeParameterName(PARAM_BASE_NAME, controller_name, "max_effort"); - if (!node->get_parameter(max_effort_param, max_effort)) - { - RCLCPP_INFO_STREAM(getLogger(), "Max effort set to 0.0"); - max_effort = 0.0; - } + node_->get_parameter_or(makeParameterName(PARAM_BASE_NAME, controller_name, "max_effort"), max_effort, 0.0); + RCLCPP_INFO_STREAM(getLogger(), controller_name << " will command a max effort of: " << max_effort); - new_handle = std::make_shared(node_, controller_name, action_ns, max_effort); + new_handle = std::make_shared(node_, controller_name, action_ns, max_effort); bool parallel_gripper = false; if (node_->get_parameter(makeParameterName(PARAM_BASE_NAME, controller_name, "parallel"), parallel_gripper) && parallel_gripper) @@ -165,27 +162,57 @@ class MoveItSimpleControllerManager : public moveit_controller_manager::MoveItCo << controller_joints.size() << " are specified"); continue; } - static_cast(new_handle.get()) + static_cast(new_handle.get()) ->setParallelJawGripper(controller_joints[0], controller_joints[1]); } else { std::string command_joint; - if (!node_->get_parameter(makeParameterName(PARAM_BASE_NAME, controller_name, "command_joint"), - command_joint)) - command_joint = controller_joints[0]; + node_->get_parameter_or(makeParameterName(PARAM_BASE_NAME, controller_name, "command_joint"), command_joint, + controller_joints[0]); - static_cast(new_handle.get())->setCommandJoint(command_joint); + static_cast(new_handle.get())->setCommandJoint(command_joint); } bool allow_failure; node_->get_parameter_or(makeParameterName(PARAM_BASE_NAME, controller_name, "allow_failure"), allow_failure, false); - static_cast(new_handle.get())->allowFailure(allow_failure); + static_cast(new_handle.get())->allowFailure(allow_failure); RCLCPP_INFO_STREAM(getLogger(), "Added GripperCommand controller for " << controller_name); controllers_[controller_name] = new_handle; } + else if (type == "ParallelGripperCommand") + { + double max_effort; + node_->get_parameter_or(makeParameterName(PARAM_BASE_NAME, controller_name, "max_effort"), max_effort, 0.0); + if (max_effort > 0.0) + { + RCLCPP_INFO_STREAM(getLogger(), controller_name << " will command a max effort of: " << max_effort); + } + + double max_velocity; + node_->get_parameter_or(makeParameterName(PARAM_BASE_NAME, controller_name, "max_velocity"), max_velocity, + 0.0); + if (max_effort > 0.0) + { + RCLCPP_INFO_STREAM(getLogger(), controller_name << " will command a max velocity of: " << max_velocity); + } + + new_handle = std::make_shared(node_, controller_name, action_ns, + max_effort, max_velocity); + + if (controller_joints.size() > 1) + { + RCLCPP_WARN_STREAM(getLogger(), "ParallelGripperCommand controller only supports commanding a single joint " + "and multiple joint names were specified. Assuming control of joint: " + << controller_joints[0]); + } + static_cast(new_handle.get())->setCommandJoint(controller_joints[0]); + + RCLCPP_INFO_STREAM(getLogger(), "Added ParallelGripperCommand controller for " << controller_name); + controllers_[controller_name] = new_handle; + } else if (type == "FollowJointTrajectory") { new_handle = std::make_shared(node_, controller_name, action_ns); From b91e529779e113a92d956b6acf9e6ee89667bd8b Mon Sep 17 00:00:00 2001 From: Henning Kayser Date: Wed, 22 Jan 2025 23:28:47 +0100 Subject: [PATCH 09/10] Reduce mutex scope in Servo thread (#3259) Fixes occasional main thread starvation caused by repeatedly creating a lock_guard in the servo loop. Fairness is improved by removing the thread sleep rate from the lock scope. --- moveit_ros/moveit_servo/src/servo_node.cpp | 116 +++++++++++---------- 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/moveit_ros/moveit_servo/src/servo_node.cpp b/moveit_ros/moveit_servo/src/servo_node.cpp index 06a2d716d3..05fd6f4d64 100644 --- a/moveit_ros/moveit_servo/src/servo_node.cpp +++ b/moveit_ros/moveit_servo/src/servo_node.cpp @@ -326,76 +326,78 @@ void ServoNode::servoLoop() continue; } - std::lock_guard lock_guard(lock_); - const bool use_trajectory = servo_params_.command_out_type == "trajectory_msgs/JointTrajectory"; - const auto cur_time = node_->now(); + { // scope for mutex-protected operations + std::lock_guard lock_guard(lock_); + const bool use_trajectory = servo_params_.command_out_type == "trajectory_msgs/JointTrajectory"; + const auto cur_time = node_->now(); - if (use_trajectory && !joint_cmd_rolling_window_.empty() && joint_cmd_rolling_window_.back().time_stamp > cur_time) - { - current_state = joint_cmd_rolling_window_.back(); - } - else - { - // if all joint_cmd_rolling_window_ is empty or all commands in it are outdated, use current robot state - joint_cmd_rolling_window_.clear(); - current_state = servo_->getCurrentRobotState(false /* block for current robot state */); - current_state.velocities *= 0.0; - } + if (use_trajectory && !joint_cmd_rolling_window_.empty() && joint_cmd_rolling_window_.back().time_stamp > cur_time) + { + current_state = joint_cmd_rolling_window_.back(); + } + else + { + // if all joint_cmd_rolling_window_ is empty or all commands in it are outdated, use current robot state + joint_cmd_rolling_window_.clear(); + current_state = servo_->getCurrentRobotState(false /* block for current robot state */); + current_state.velocities *= 0.0; + } - // update robot state values - robot_state->setJointGroupPositions(joint_model_group, current_state.positions); - robot_state->setJointGroupVelocities(joint_model_group, current_state.velocities); + // update robot state values + robot_state->setJointGroupPositions(joint_model_group, current_state.positions); + robot_state->setJointGroupVelocities(joint_model_group, current_state.velocities); - next_joint_state = std::nullopt; - const CommandType expected_type = servo_->getCommandType(); + next_joint_state = std::nullopt; + const CommandType expected_type = servo_->getCommandType(); - if (expected_type == CommandType::JOINT_JOG && new_joint_jog_msg_) - { - next_joint_state = processJointJogCommand(robot_state); - } - else if (expected_type == CommandType::TWIST && new_twist_msg_) - { - next_joint_state = processTwistCommand(robot_state); - } - else if (expected_type == CommandType::POSE && new_pose_msg_) - { - next_joint_state = processPoseCommand(robot_state); - } - else if (new_joint_jog_msg_ || new_twist_msg_ || new_pose_msg_) - { - new_joint_jog_msg_ = new_twist_msg_ = new_pose_msg_ = false; - RCLCPP_WARN_STREAM(node_->get_logger(), "Command type has not been set, cannot accept input"); - } + if (expected_type == CommandType::JOINT_JOG && new_joint_jog_msg_) + { + next_joint_state = processJointJogCommand(robot_state); + } + else if (expected_type == CommandType::TWIST && new_twist_msg_) + { + next_joint_state = processTwistCommand(robot_state); + } + else if (expected_type == CommandType::POSE && new_pose_msg_) + { + next_joint_state = processPoseCommand(robot_state); + } + else if (new_joint_jog_msg_ || new_twist_msg_ || new_pose_msg_) + { + new_joint_jog_msg_ = new_twist_msg_ = new_pose_msg_ = false; + RCLCPP_WARN_STREAM(node_->get_logger(), "Command type has not been set, cannot accept input"); + } - if (next_joint_state && (servo_->getStatus() != StatusCode::INVALID) && - (servo_->getStatus() != StatusCode::HALT_FOR_COLLISION)) - { - if (use_trajectory) + if (next_joint_state && (servo_->getStatus() != StatusCode::INVALID) && + (servo_->getStatus() != StatusCode::HALT_FOR_COLLISION)) { - auto& next_joint_state_value = next_joint_state.value(); - updateSlidingWindow(next_joint_state_value, joint_cmd_rolling_window_, servo_params_.max_expected_latency, - cur_time); - if (const auto msg = composeTrajectoryMessage(servo_params_, joint_cmd_rolling_window_)) + if (use_trajectory) + { + auto& next_joint_state_value = next_joint_state.value(); + updateSlidingWindow(next_joint_state_value, joint_cmd_rolling_window_, servo_params_.max_expected_latency, + cur_time); + if (const auto msg = composeTrajectoryMessage(servo_params_, joint_cmd_rolling_window_)) + { + trajectory_publisher_->publish(msg.value()); + } + } + else { - trajectory_publisher_->publish(msg.value()); + multi_array_publisher_->publish(composeMultiArrayMessage(servo_->getParams(), next_joint_state.value())); } + last_commanded_state_ = next_joint_state.value(); } else { - multi_array_publisher_->publish(composeMultiArrayMessage(servo_->getParams(), next_joint_state.value())); + // if no new command was created, use current robot state + updateSlidingWindow(current_state, joint_cmd_rolling_window_, servo_params_.max_expected_latency, cur_time); + servo_->resetSmoothing(current_state); } - last_commanded_state_ = next_joint_state.value(); - } - else - { - // if no new command was created, use current robot state - updateSlidingWindow(current_state, joint_cmd_rolling_window_, servo_params_.max_expected_latency, cur_time); - servo_->resetSmoothing(current_state); - } - status_msg.code = static_cast(servo_->getStatus()); - status_msg.message = servo_->getStatusMessage(); - status_publisher_->publish(status_msg); + status_msg.code = static_cast(servo_->getStatus()); + status_msg.message = servo_->getStatusMessage(); + status_publisher_->publish(status_msg); + } servo_frequency.sleep(); } From 524ca4f15bb449e1f8d25223d9725ca7868c32ee Mon Sep 17 00:00:00 2001 From: Zhong Jin Date: Fri, 24 Jan 2025 20:44:58 +0800 Subject: [PATCH 10/10] Fix: misleading error logs in RobotState::setFromIKSubgroups() (#3263) * Fix: misleading error logs misleading log message for RobotState::setFromIKSubgroups() when checking consistency_limits size * fix clang-format --- moveit_core/robot_state/src/robot_state.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/moveit_core/robot_state/src/robot_state.cpp b/moveit_core/robot_state/src/robot_state.cpp index ff847bcb54..d24a19b371 100644 --- a/moveit_core/robot_state/src/robot_state.cpp +++ b/moveit_core/robot_state/src/robot_state.cpp @@ -2039,8 +2039,8 @@ bool RobotState::setFromIKSubgroups(const JointModelGroup* jmg, const EigenSTL:: { if (consistency_limits[i].size() != sub_groups[i]->getVariableCount()) { - RCLCPP_ERROR(getLogger(), "Number of joints in consistency_limits is %zu but it should be should be %u", i, - sub_groups[i]->getVariableCount()); + RCLCPP_ERROR(getLogger(), "Number of joints in consistency_limits[%zu] is %lu but it should be should be %u", i, + consistency_limits[i].size(), sub_groups[i]->getVariableCount()); return false; } }