Skip to content

Release/Flexiv ROS 2 Humble 2.1 - #110

Merged
munseng-flexiv merged 17 commits into
humblefrom
release/humble-v2.1
Jun 29, 2026
Merged

Release/Flexiv ROS 2 Humble 2.1#110
munseng-flexiv merged 17 commits into
humblefrom
release/humble-v2.1

Conversation

@munseng-flexiv

Copy link
Copy Markdown
Collaborator

COMPATIBILITY

  • Flexiv software package v4.1 (for Flexiv Enlight series only).
  • Flexiv RDK v2.1
  • ROS 2 Humble

ADD

  • Multi-model support for dual-arm and MICO models: Enlight-LL, MICO-Core, MICO-Plus, and MICO-Ultra, alongside the existing single-arm Enlight-L, all driven by a single unified FlexivHardwareInterface.
  • Topology-specific controller configs: flexiv_dual_controllers.yaml (14-joint dual arm) and flexiv_mico_controllers.yaml (16-joint dual arm + pan-tilt torso), with per-arm flexiv_robot_states_broadcaster.
  • Dual-arm gripper support in flexiv_gripper: one gripper node per arm group (ARM_1/ARM_2), with gripper_name_left/gripper_name_right launch arguments and serialized readiness gating.
  • MoveIt planning groups for dual-arm (left_arm, right_arm, both_arms) and the MICO pan-tilt <robot_sn>_torso, plus moveit_controllers_dual.yaml / moveit_controllers_mico.yaml and the required inter-link disable_collisions.
  • Add joint_group parameter on the robot_states_publisher test node to publish a chosen RDK joint group (ALL/ARM_1/ARM_2).

CHANGE

  • Updated the flexiv_rdk dependency to v2.1
  • Changed hardware interface joint control mode to real-time RT_JOINT_POSITION + StreamJointPosition (replacing NRT SendJointPosition)
  • Switched the supported ROS 2 middleware back to the default Fast DDS (rmw_fastrtps_cpp).
  • Refactored flexiv.launch.py and flexiv_moveit.launch.py to an OpaqueFunction structure that selects controllers, SRDF groups, and broadcasters by robot topology.
  • Bumped flexiv_hardware, flexiv_gripper, and flexiv_robot_states_broadcaster to C++20.
  • Updated flexiv_msgs/RobotStates to match the RDK v2.1 struct (removed tau_des)
  • Updated robot-state/GPIO documentation (GPIO corrected to 20 ports: 16 control-box + 2 per wrist connector).
  • Updated the robot_states_publisher test node for the v2.1 states() dict API and dropped the obsolete network_interface option removed from the RDK Robot constructor.

FIX

  • Fixed the hardware interface of the single-arm robot to use the commandable ARM_1 group (dual-arm uses ARM_1/ARM_2).
  • Added the missing gripper and torso↔arm-base disable_collisions in the SRDF to fix the self-collision errors.
  • Aligned flexiv_moveit.launch.py with flexiv.launch.py so dual-arm grippers, MICO topology, and the flexiv_arm_controller start correctly under MoveIt.

@munseng-flexiv

munseng-flexiv commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator Author

TODO:

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release update for Flexiv ROS 2 Humble “2.1”, aligning the stack with Flexiv RDK v2.1 and extending bringup/MoveIt support to multiple robot topologies (single-arm, dual-arm, and MICO variants) under a unified hardware interface.

Changes:

  • Added topology-aware launch/config selection (dual-arm + MICO), including per-arm robot-states broadcasters and dual gripper nodes.
  • Updated messaging/config to match RDK v2.1 (e.g., RobotStates struct change) and switched joint streaming to RT modes.
  • Expanded MoveIt SRDF/configs for dual-arm planning groups and MICO torso group, plus added topology-specific controller YAMLs.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
README.md Updates install/runtime guidance, robot types, examples, and GPIO port count.
flexiv.humble.repos Bumps flexiv_rdk reference to v2.1.
flexiv_test_nodes/README.md Updates test-node parameters (adds joint_group, removes network_interface).
flexiv_test_nodes/launch/robot_states_publisher.launch.py Updates launch args/params for v2.1 test node.
flexiv_test_nodes/flexiv_test_nodes/robot_states_publisher.py Adapts to RDK v2.1 states() dict API and removes obsolete network interface handling.
flexiv_test_nodes/flexiv_test_nodes/robot_states_monitor.py Updates default SN format and documents dash→underscore topic sanitization.
flexiv_msgs/msg/RobotStates.msg Removes tau_des field to match RDK v2.1.
flexiv_msgs/CMakeLists.txt Removes CycloneDDS-only ROSIDL generation workaround.
flexiv_moveit_config/srdf/flexiv.srdf.xacro Adds dual-arm/MICO SRDF structure, planning groups, and disable-collisions.
flexiv_moveit_config/config/ompl_planning.yaml Adds planner configs for dual-arm and torso groups.
flexiv_moveit_config/config/moveit_controllers.yaml Clarifies single-arm-only controller file usage.
flexiv_moveit_config/config/moveit_controllers_dual.yaml Adds dual-arm MoveIt controller mapping (arm + gripper).
flexiv_moveit_config/config/moveit_controllers_mico.yaml Adds MICO MoveIt controller mapping (arms+torso + gripper).
flexiv_moveit_config/config/kinematics.yaml Adds kinematics entries for left/right arm groups.
flexiv_moveit_config/config/joint_limits.yaml Adds left/right joint limits for dual-arm joint naming.
flexiv_hardware/src/flexiv_hardware_interface.cpp Adds joint-group layout handling (incl. EXT_AXIS), switches to RT modes and streaming APIs, updates activation and state-handle refresh.
flexiv_hardware/include/flexiv_hardware/flexiv_hardware_interface.hpp Updates command buffer types to RT command structs.
flexiv_hardware/CMakeLists.txt Bumps to C++20 for RDK compatibility.
flexiv_gripper/src/gripper_action_server.cpp Adds per-joint-group gripper control for dual-arm; updates RDK API usage.
flexiv_gripper/launch/flexiv_gripper.launch.py Adds joint_group launch arg and passes through to node.
flexiv_gripper/include/flexiv_gripper/gripper_action_server.hpp Stores selected joint group and updates stop behavior.
flexiv_gripper/CMakeLists.txt Bumps to C++20.
flexiv_controllers/flexiv_robot_states_broadcaster/include/flexiv_robot_states_broadcaster/flexiv_robot_states.hpp Removes tau_des mapping.
flexiv_controllers/flexiv_robot_states_broadcaster/CMakeLists.txt Bumps to C++20.
flexiv_bringup/launch/test_joint_trajectory_controller.launch.py Updates serial-number example formatting.
flexiv_bringup/launch/flexiv.launch.py Refactors bringup to OpaqueFunction and adds topology-aware controller/gripper/broadcaster orchestration.
flexiv_bringup/launch/flexiv_moveit.launch.py Mirrors bringup refactor for MoveIt (topology-aware configs + sequencing).
flexiv_bringup/config/flexiv_dual_controllers.yaml Adds ros2_control controller config for dual-arm topology.
flexiv_bringup/config/flexiv_mico_controllers.yaml Adds ros2_control controller config for MICO torso topology.
.github/workflows/humble-binary-build.yml Removes CycloneDDS pinning and installs, aligning CI with default middleware.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread flexiv_moveit_config/srdf/flexiv.srdf.xacro
Comment thread flexiv_moveit_config/srdf/flexiv.srdf.xacro
Comment thread flexiv_moveit_config/srdf/flexiv.srdf.xacro
Comment thread flexiv_gripper/src/gripper_action_server.cpp
Comment thread flexiv_moveit_config/config/moveit_controllers_dual.yaml
Comment thread flexiv_moveit_config/config/moveit_controllers_mico.yaml
Comment thread flexiv_moveit_config/config/moveit_controllers_mico.yaml Outdated
Comment thread flexiv_bringup/launch/flexiv.launch.py
Comment thread flexiv_bringup/launch/flexiv_moveit.launch.py
Comment thread flexiv_hardware/src/flexiv_hardware_interface.cpp Outdated
@munseng-flexiv
munseng-flexiv merged commit 56a7927 into humble Jun 29, 2026
1 check passed
@munseng-flexiv
munseng-flexiv deleted the release/humble-v2.1 branch June 29, 2026 04:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants