Skip to content

combine hands and omy#370

Closed
mysteryholic wants to merge 40 commits into
mainfrom
feature-omy-both-hands
Closed

combine hands and omy#370
mysteryholic wants to merge 40 commits into
mainfrom
feature-omy-both-hands

Conversation

@mysteryholic

Copy link
Copy Markdown
Contributor

No description provided.

robotpilot and others added 30 commits April 10, 2025 07:33
Copilot AI review requested due to automatic review settings May 4, 2026 08:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR adds configuration and launch support for operating OMY arms with HX5 hands (including MoveIt config for an OMY-3M + HX5 right hand), plus several standalone URDF/ros2_control variants and teleoperation “leader → follower” trajectory bridge nodes.

Changes:

  • Add MoveIt launch + SRDF/controller/limits config for omy_3m_hands.
  • Add URDF/xacro + ros2_control definitions for HX5 hands and multiple F3M/OMY-END standalone test setups.
  • Add bringup launch files, controller manager configs, and trajectory-bridge/watchdog Python nodes for teleoperation and hardware testing.

Reviewed changes

Copilot reviewed 51 out of 69 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
open_manipulator_moveit_config/package.xml Adds runtime dependency for xacro loading in MoveIt launch.
open_manipulator_moveit_config/launch/omy_3m_hands_moveit.launch.py New MoveIt launch for OMY-3M + HX5 right hand.
open_manipulator_moveit_config/config/omy_3m_hands/omy_3m_hands.srdf New SRDF for OMY-3M + HX5 right hand planning groups/collisions.
open_manipulator_moveit_config/config/omy_3m_hands/moveit_controllers.yaml MoveIt controller mapping for arm + HX5 trajectory controllers.
open_manipulator_moveit_config/config/omy_3m_hands/joint_limits.yaml Joint limit overrides for arm + HX5 joints.
open_manipulator_description/urdf/omy_f3m/omy_f3m_hx5_left.urdf.xacro New combined F3M + HX5-left URDF with dual ros2_control systems.
open_manipulator_description/urdf/omy_f3m/omy_f3m_arm_only.urdf.xacro New “arm only” F3M URDF to avoid end-unit contention.
open_manipulator_description/urdf/omy_f3m/omy_end_hx5_right_standalone.urdf.xacro Standalone HX5-right + OMY-END ros2_control URDF for testing.
open_manipulator_description/urdf/omy_f3m/omy_end_hx5_ping_test.urdf.xacro Minimal URDF to test OMY-END → HX5 SyncTable relay connectivity.
open_manipulator_description/urdf/omy_f3m/omy_end_hx5_left_standalone.urdf.xacro Standalone HX5-left + OMY-END ros2_control URDF for testing.
open_manipulator_description/urdf/omy_f3m/omy_end_hx5_left_readonly_standalone.urdf.xacro Read-only standalone HX5-left URDF variant to avoid indirect-write overlap.
open_manipulator_description/urdf/omy_f3m/hx5_d20_left_stub.urdf.xacro Minimal stub macro for HX5-left visuals.
open_manipulator_description/urdf/omy_3m/omy_3m_hands.urdf.xacro New OMY-3M + HX5-right combined URDF (arm + end unit + hand).
open_manipulator_description/urdf/hx5_d20_rev2/hx5_d20_right.xacro New HX5-right wrapper xacro referencing robotis_hand packages + Gazebo plugin.
open_manipulator_description/urdf/hx5_d20_rev2/hx5_d20_right.urdf.xacro New HX5-right hand geometry (links/joints/inertials).
open_manipulator_description/urdf/hx5_d20_rev2/hx5_d20_left.xacro New HX5-left wrapper xacro referencing robotis_hand packages + Gazebo plugin.
open_manipulator_description/ros2_control/omy_l100_current.ros2_control.xacro Adjusts baud-rate param lines (commented out).
open_manipulator_description/ros2_control/omy_f3m_end_unit_hx5_left_readonly.ros2_control.xacro Adds read-only ros2_control system for HX5-left via OMY END.
open_manipulator_description/ros2_control/omy_f3m_end_unit_hx5_left.ros2_control.xacro.back Adds a backup/alternate ros2_control xacro (editor artifact).
open_manipulator_description/ros2_control/omy_end_hx5_ping_test.ros2_control.xacro Adds ros2_control system for OMY-END ping/relay testing.
open_manipulator_description/ros2_control/omy_3m_hx5_d20_right.ros2_control.xacro Adds ros2_control system for HX5-right on OMY-3M.
open_manipulator_description/ros2_control/omy_3m_hands_gz_ros2_control.yaml Adds Gazebo controller manager config for OMY-3M + HX5.
open_manipulator_description/gazebo/hx5_d20_right_omy_3m.gazebo.xacro Adds Gazebo contact + transmission settings for HX5-right on OMY-3M.
open_manipulator_bringup/setup.py Installs new configs and registers additional console scripts.
open_manipulator_bringup/open_manipulator_bringup/synctable_watchdog.py New watchdog node to keep OMY END SyncTable enables asserted.
open_manipulator_bringup/open_manipulator_bringup/omy_f3m_hx5_right_leader_trajectory_bridge.py New leader→HX5-right preset mapping trajectory bridge node.
open_manipulator_bringup/open_manipulator_bringup/omy_f3m_hx5_left_leader_trajectory_bridge.py New leader→HX5-left preset mapping trajectory bridge node.
open_manipulator_bringup/open_manipulator_bringup/omy_3m_hands_leader_trajectory_bridge.py New leader→(arm-only republish + HX5 presets) bridge for OMY-3M hands.
open_manipulator_bringup/launch/omy_f3m_hx5_right.launch.py New combined teleop launch (F3M follower + HX5-right + L100 leader).
open_manipulator_bringup/launch/omy_f3m_hx5_left.launch.py New combined teleop launch (F3M follower + HX5-left + L100 leader).
open_manipulator_bringup/launch/omy_f3m_follower_ai_hx5_left.launch.py New/updated follower AI launch for F3M + HX5-left.
open_manipulator_bringup/launch/omy_end_hx5_ping_test.launch.py New minimal hardware ping test launch for OMY END → HX5 relay.
open_manipulator_bringup/launch/omy_end_hx5_left_test.launch.py New end-only test launch (L100 leader + HX5-left end hardware only).
open_manipulator_bringup/launch/omy_end_hx5_left_l100.launch.py New follower-only HX5-left + leader composite launch.
open_manipulator_bringup/launch/omy_end_hx5_left_full_test.launch.py New full relay test launch for HX5-left via SyncTable.
open_manipulator_bringup/launch/omy_ai_hand.launch.py Updates AI teleoperation launch to include HX5-left follower/bridge.
open_manipulator_bringup/launch/omy_3m_hands_l100_leader_ai.launch.py New real-hardware composite launch for OMY-3M + HX5-right + L100 leader.
open_manipulator_bringup/launch/omy_3m_hands_gazebo_l100_leader_ai.launch.py New Gazebo composite launch for OMY-3M + HX5-right + L100 leader.
open_manipulator_bringup/launch/omy_3m_hands_gazebo.launch.py New Gazebo launch for OMY-3M + HX5-right setup.
open_manipulator_bringup/config/omy_f3m_follower_ai_hx5_left/hardware_controller_manager.yaml Adds controller manager config for F3M follower AI + HX5-left.
open_manipulator_bringup/config/omy_f3m/init_position_hx5.yaml Adds initial pose config for F3M arm in HX5 teleop flows.
open_manipulator_bringup/config/omy_end_hx5_right_l100/hardware_controller_manager.yaml Adds controller manager config for HX5-right end + leader flows.
open_manipulator_bringup/config/omy_end_hx5_ping_test/hardware_controller_manager.yaml Adds controller manager config for ping test.
open_manipulator_bringup/config/omy_end_hx5_left_test/initial_positions.yaml Adds initial pose trajectory config for HX5-left test.
open_manipulator_bringup/config/omy_end_hx5_left_test/hardware_controller_manager.yaml Adds controller manager config for HX5-left test.
open_manipulator_bringup/config/omy_end_hx5_left_l100/hardware_controller_manager.yaml Adds controller manager config for HX5-left end + leader flow.
open_manipulator_bringup/config/omy_end_hx5_left_full_test/hardware_controller_manager.yaml Adds controller manager config for full relay test.
open_manipulator_bringup/config/omy_3m_hands_gazebo_l100_leader_ai/initial_positions.yaml Adds Gazebo initial pose config for OMY-3M hands scenario.

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

Comment on lines +68 to +78
# No config/omy_3m_hands.urdf in this package; load hands xacro from description before
# to_moveit_configs() so MoveItConfigsBuilder does not warn or leave robot_description empty.
moveit_builder = MoveItConfigsBuilder(
robot_name='omy_3m_hands', package_name='open_manipulator_moveit_config'
)
moveit_builder._MoveItConfigsBuilder__moveit_configs.robot_description = {
'robot_description': load_xacro(
# HANDS_DESCRIPTION_XACRO, mappings={'use_sim': 'false'}
HANDS_DESCRIPTION_XACRO, mappings={'use_sim': 'true'}
)
}
Comment on lines +73 to +77
moveit_builder._MoveItConfigsBuilder__moveit_configs.robot_description = {
'robot_description': load_xacro(
# HANDS_DESCRIPTION_XACRO, mappings={'use_sim': 'false'}
HANDS_DESCRIPTION_XACRO, mappings={'use_sim': 'true'}
)
'console_scripts': [
'joint_trajectory_executor = open_manipulator_bringup.joint_trajectory_executor:main',
'omy_3m_hands_leader_trajectory_bridge = open_manipulator_bringup.omy_3m_hands_leader_trajectory_bridge:main',
'omy_f3m_hx5_left_leader_trajectory_bridge = open_manipulator_bringup.omy_f3m_hx5_left_leader_trajectory_bridge:main',
Comment on lines +105 to +106
# OMY 3M follower arm controller is remapped to /leader/joint_trajectory in omy_3m.launch.py.
{'arm_command_topic': '/leader/joint_trajectory'},
Comment on lines +8 to +33
<xacro:include filename="$(find open_manipulator_description)/urdf/hx5_d20_rev2/hx5_d20_right.urdf.xacro" />

<xacro:include filename="$(find robotis_hand_description)/gazebo/hx5_d20_right.gazebo.xacro" />

<xacro:include filename="$(find robotis_hand_description)/ros2_control/hx5_d20_rev2/hx5_d20_right.ros2_control.xacro" />

<link name="world"/>

<joint name="$(arg prefix)world_fixed" type="fixed">
<parent link="world"/>
<child link="$(arg prefix)hx5_d20_right_base"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</joint>

<xacro:hx5_d20_right prefix="$(arg prefix)" />
<xacro:robotis_hand_gazebo prefix="$(arg prefix)" />

<xacro:robotis_hand_system
name="RobotisHandSystem" prefix="$(arg prefix)" use_sim="$(arg use_sim)"
use_mock_hardware="$(arg use_mock_hardware)"
mock_sensor_commands="$(arg mock_sensor_commands)"/>

<gazebo>
<plugin filename="gz_ros2_control-system" name="gz_ros2_control::GazeboSimROS2ControlPlugin">
<parameters>$(find robotis_hand_bringup)/config/robotis_hand_hardware_controller_manager.yaml</parameters>
</plugin>
Comment on lines +8 to +33
<xacro:include filename="$(find open_manipulator_description)/urdf/hx5_d20_rev2/hx5_d20_left.urdf.xacro" />

<xacro:include filename="$(find robotis_hand_description)/gazebo/hx5_d20_left.gazebo.xacro" />

<xacro:include filename="$(find robotis_hand_description)/ros2_control/hx5_d20_rev2/hx5_d20_left.ros2_control.xacro" />

<link name="world"/>

<joint name="$(arg prefix)world_fixed" type="fixed">
<parent link="world"/>
<child link="$(arg prefix)hx5_d20_left_base"/>
<origin xyz="0 0 0" rpy="0 0 0"/>
</joint>

<xacro:hx5_d20_left prefix="$(arg prefix)" />
<xacro:robotis_hand_gazebo prefix="$(arg prefix)" />

<xacro:robotis_hand_system
name="RobotisHandSystem" prefix="$(arg prefix)" use_sim="$(arg use_sim)"
use_mock_hardware="$(arg use_mock_hardware)"
mock_sensor_commands="$(arg mock_sensor_commands)"/>

<gazebo>
<plugin filename="gz_ros2_control-system" name="gz_ros2_control::GazeboSimROS2ControlPlugin">
<parameters>$(find robotis_hand_bringup)/config/robotis_hand_hardware_controller_manager.yaml</parameters>
</plugin>
Comment on lines +1 to +5
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="omy_f3m_end_unit_hx5_left_system" params="name prefix port_name:=^|/dev/ttyAMA4 use_sim:=^|false use_mock_hardware:=^|false mock_sensor_commands:=^|false">
<ros2_control name="${name}" type="system" is_async="true">
<xacro:if value="$(arg use_sim)">
@gemini-code-assist

Copy link
Copy Markdown

Warning

Gemini is experiencing higher than usual traffic and was unable to create the review. Please try again in a few hours by commenting /gemini review.

2 similar comments
@gemini-code-assist

Copy link
Copy Markdown

Warning

Gemini is experiencing higher than usual traffic and was unable to create the review. Please try again in a few hours by commenting /gemini review.

@gemini-code-assist

Copy link
Copy Markdown

Warning

Gemini is experiencing higher than usual traffic and was unable to create the review. Please try again in a few hours by commenting /gemini review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants