From 3b4b36daa32baa598b9e2345df167e48e223a256 Mon Sep 17 00:00:00 2001 From: YoungWook0533 Date: Wed, 21 Oct 2026 05:55:14 +0000 Subject: [PATCH 1/5] Added support for F2 --- README.md | 15 +++++++ robotis_vuer/launch/vr.launch.py | 14 +++++- robotis_vuer/package.xml | 2 + robotis_vuer/robotis_vuer/vr_publisher_f2.py | 43 +++++++++++++++++++ robotis_vuer/robotis_vuer/vr_publisher_sg2.py | 6 +-- robotis_vuer/setup.py | 1 + 6 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 robotis_vuer/robotis_vuer/vr_publisher_f2.py diff --git a/README.md b/README.md index d83abbb..7efcf36 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,21 @@ or shortcut: vr model:=sg2 ``` +Run F2: + +```bash +ros2 launch robotis_vuer vr.launch.py model:=f2 +``` + +or shortcut: +```bash +vr model:=f2 +``` + +Use `model:=f2 controller_type:=vr` in the Cyclo Control launch as well. +See [F2 setup and safety checks](robotis_vuer/README.md#f2-vr-setup) +before enabling robot motion. F1 VR is not supported. + Run HX5: ```bash diff --git a/robotis_vuer/launch/vr.launch.py b/robotis_vuer/launch/vr.launch.py index c68ff18..93dc72f 100755 --- a/robotis_vuer/launch/vr.launch.py +++ b/robotis_vuer/launch/vr.launch.py @@ -27,7 +27,8 @@ def generate_launch_description(): model_arg = DeclareLaunchArgument( 'model', default_value='sh5', - description='VR model to run: hx5, sg2, or sh5', + choices=['sg2', 'sh5', 'hx5', 'f2'], + description='VR model to run: sg2, sh5, hx5, or f2', ) model = LaunchConfiguration('model') @@ -41,6 +42,16 @@ def generate_launch_description(): PythonExpression(["'true' if '", model, "' == 'sg2' else 'false'"]) ), ) + f2_node = Node( + package='robotis_vuer', + executable='vr_publisher_f2', + name='vr_publisher_f2', + output='screen', + emulate_tty=True, + condition=IfCondition( + PythonExpression(["'", model, "' == 'f2'"]) + ), + ) sh5_node = Node( package='robotis_vuer', executable='vr_publisher_sh5', @@ -65,6 +76,7 @@ def generate_launch_description(): return LaunchDescription([ model_arg, sg2_node, + f2_node, sh5_node, hx5_node, ]) diff --git a/robotis_vuer/package.xml b/robotis_vuer/package.xml index 12611a1..becc261 100644 --- a/robotis_vuer/package.xml +++ b/robotis_vuer/package.xml @@ -14,6 +14,8 @@ Yeonguk Kim geometry_msgs + launch + launch_ros nav_msgs rclpy robotis_interfaces diff --git a/robotis_vuer/robotis_vuer/vr_publisher_f2.py b/robotis_vuer/robotis_vuer/vr_publisher_f2.py new file mode 100644 index 0000000..6f81abf --- /dev/null +++ b/robotis_vuer/robotis_vuer/vr_publisher_f2.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +# +# Copyright 2026 ROBOTIS CO., LTD. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Authors: Yeonguk Kim + +import rclpy +from robotis_vuer.vr_publisher_sg2 import VRTrajectoryPublisher + + +class F2VRTrajectoryPublisher(VRTrajectoryPublisher): + """Use SG2 VR controls with the F2 HX2-D1 gripper range.""" + + def __init__(self): + super().__init__(gripper_max_position=1.1) + + +def main(args=None): + rclpy.init(args=args) + node = F2VRTrajectoryPublisher() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.destroy_node() + rclpy.shutdown() + + +if __name__ == '__main__': + main() diff --git a/robotis_vuer/robotis_vuer/vr_publisher_sg2.py b/robotis_vuer/robotis_vuer/vr_publisher_sg2.py index 7ae611a..f42c0ea 100644 --- a/robotis_vuer/robotis_vuer/vr_publisher_sg2.py +++ b/robotis_vuer/robotis_vuer/vr_publisher_sg2.py @@ -54,7 +54,7 @@ class VRTrajectoryPublisher(Node): - def __init__(self): + def __init__(self, gripper_max_position=1.3): super().__init__('vr_trajectory_publisher') self.get_logger().set_level(rclpy.logging.LoggingSeverity.INFO) self.declare_parameter('left_wrist_offset_x', 0.0) @@ -73,8 +73,8 @@ def __init__(self): self.declare_parameter('right_trigger_offset', 0.0) self.declare_parameter('left_trigger_scale', 1.0) self.declare_parameter('right_trigger_scale', 1.0) - self.declare_parameter('left_gripper_max_position', 1.3) - self.declare_parameter('right_gripper_max_position', 1.3) + self.declare_parameter('left_gripper_max_position', gripper_max_position) + self.declare_parameter('right_gripper_max_position', gripper_max_position) self.declare_parameter('goal_pose_position_scale', 1.1) self.declare_parameter('stream_fps', 30) self.declare_parameter('pose_publish_hz', 30.0) diff --git a/robotis_vuer/setup.py b/robotis_vuer/setup.py index e7282f7..574d4f6 100644 --- a/robotis_vuer/setup.py +++ b/robotis_vuer/setup.py @@ -35,6 +35,7 @@ 'console_scripts': [ 'vr_publisher_hx5 = robotis_vuer.vr_publisher_hx5:main', 'vr_publisher_sg2 = robotis_vuer.vr_publisher_sg2:main', + 'vr_publisher_f2 = robotis_vuer.vr_publisher_f2:main', 'vr_publisher_sh5 = robotis_vuer.vr_publisher_sh5:main', ], }, From 0ba10dc5a243fde750ff44dfc25fe21117dd8e98 Mon Sep 17 00:00:00 2001 From: YoungWook0533 Date: Thu, 22 Oct 2026 02:52:50 +0000 Subject: [PATCH 2/5] update README --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 7efcf36..fc5f33e 100644 --- a/README.md +++ b/README.md @@ -73,10 +73,6 @@ or shortcut: vr model:=f2 ``` -Use `model:=f2 controller_type:=vr` in the Cyclo Control launch as well. -See [F2 setup and safety checks](robotis_vuer/README.md#f2-vr-setup) -before enabling robot motion. F1 VR is not supported. - Run HX5: ```bash From bc7d4241306e5dc4e49f0df294a2c49aee68d036 Mon Sep 17 00:00:00 2001 From: YoungWook0533 Date: Thu, 22 Oct 2026 05:42:54 +0000 Subject: [PATCH 3/5] Bump --- docker/docker-compose.yml | 2 +- robotis_applications/package.xml | 2 +- robotis_vuer/package.xml | 2 +- robotis_vuer/setup.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 62d0f29..93240a7 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,7 +1,7 @@ services: robotis_applications: container_name: robotis-applications - image: robotis/robotis-applications:1.0.1 + image: robotis/robotis-applications:1.1.0 tty: true build: context: . diff --git a/robotis_applications/package.xml b/robotis_applications/package.xml index dba529b..f36a187 100644 --- a/robotis_applications/package.xml +++ b/robotis_applications/package.xml @@ -2,7 +2,7 @@ robotis_applications - 1.0.1 + 1.1.0 Meta package for Robotis Applications Pyo Apache License 2.0 diff --git a/robotis_vuer/package.xml b/robotis_vuer/package.xml index becc261..588b8a6 100644 --- a/robotis_vuer/package.xml +++ b/robotis_vuer/package.xml @@ -2,7 +2,7 @@ robotis_vuer - 1.0.1 + 1.1.0 VR Publisher for Robotis Pyo Apache License 2.0 diff --git a/robotis_vuer/setup.py b/robotis_vuer/setup.py index 574d4f6..abfe819 100644 --- a/robotis_vuer/setup.py +++ b/robotis_vuer/setup.py @@ -12,7 +12,7 @@ setup( name=package_name, - version='1.0.1', + version='1.1.0', packages=find_packages(exclude=['test']), data_files=[ ('share/ament_index/resource_index/packages', From 441d25fcc373dab83ca4baa89d3f8ff7ffa2f2c9 Mon Sep 17 00:00:00 2001 From: YoungWook0533 Date: Thu, 22 Oct 2026 05:43:08 +0000 Subject: [PATCH 4/5] update CHANGELOG --- robotis_applications/CHANGELOG.rst | 5 +++++ robotis_vuer/CHANGELOG.rst | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/robotis_applications/CHANGELOG.rst b/robotis_applications/CHANGELOG.rst index 347d9a6..c1953c4 100644 --- a/robotis_applications/CHANGELOG.rst +++ b/robotis_applications/CHANGELOG.rst @@ -2,6 +2,11 @@ Changelog for package robotis_applications ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.1.0 (2026-10-22) +------------------ +* Added F2 support for VR teleoperation +* Contributors: Yeonguk Kim + 1.0.1 (2026-08-20) ------------------ * Routed SG2 gripper commands to the raw joint trajectory topics diff --git a/robotis_vuer/CHANGELOG.rst b/robotis_vuer/CHANGELOG.rst index 7b5c249..0122a7d 100644 --- a/robotis_vuer/CHANGELOG.rst +++ b/robotis_vuer/CHANGELOG.rst @@ -2,6 +2,12 @@ Changelog for package robotis_vuer ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.1.0 (2026-10-22) +------------------ +* Added F2 VR publisher with HX2-D1 gripper limits +* Added F2 model selection and launch dependencies +* Contributors: Yeonguk Kim + 1.0.1 (2026-08-20) ------------------ * Routed SG2 gripper commands to the raw joint trajectory topics From 3eb9b3c41db3c7931310bf47bd87e71db7928b99 Mon Sep 17 00:00:00 2001 From: Taehun Lim Date: Wed, 28 Oct 2026 09:24:25 +0900 Subject: [PATCH 5/5] feat: add release workflow Signed-off-by: Taehun Lim --- .github/workflows/release.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a9d7ce7 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,18 @@ +name: Release + +on: + pull_request: + branches: [jazzy] + types: [opened, synchronize, edited, reopened, ready_for_review, closed] + +permissions: + contents: read + +jobs: + release: + permissions: + contents: write + uses: ROBOTIS-GIT/github-workflows/.github/workflows/release.yml@main + with: + source_branch: main + target_branch: jazzy