Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
0545763
Update comm ports for the gripper
eholum-nasa Dec 10, 2025
1801ac7
Merge pull request #15 from NASA-JSC-Robotics/latest-hw-updates
mtobia-nasa Dec 15, 2025
8a70dd8
updated clr_mujoco_config initial positions to match other demos' hom…
mtobia-nasa Dec 16, 2025
014ec21
updated clr_mujoco_config initial positions to match other demos' hom…
mtobia-nasa Dec 16, 2025
0733a1b
added latch model to mujoco sim, needs more tuning, but works well en…
mtobia-nasa Jan 8, 2026
f5a6a84
Use sim time in PC republisher for mujoco
eholum-nasa Jan 9, 2026
afe627e
Merge pull request #16 from NASA-JSC-Robotics/humble-feature/update-m…
eholum-nasa Jan 9, 2026
0d4f7d9
Added citation to readme and uploaded citation file.
zbashir-nasa Jan 12, 2026
5cba1a0
making the latch more snappy and forceful
mtobia-nasa Jan 12, 2026
bca1417
Merge branch 'humble-devel' into sim_hatch_latch
mtobia-nasa Jan 12, 2026
0b6517a
Formatting.
zbashir-nasa Jan 13, 2026
1c798ac
editing hatch latch spring joint, removed joint limit solver params a…
mtobia-nasa Jan 15, 2026
d05970b
moved sim lorge hatch latch up to avoid contact with the lorge hatch …
mtobia-nasa Jan 21, 2026
764848d
pre-commit
zbashir-nasa Jan 22, 2026
766636c
added chonkur_comm.launch.py to launch ur gui along with the contents…
mtobia-nasa Jan 23, 2026
b1ea4ff
cleaning up
mtobia-nasa Jan 23, 2026
4e0dc0b
Update mujoco package and plugin name
eholum-nasa Jan 26, 2026
dfa945a
Add a name to the freejoint for the ctb
eholum-nasa Jan 26, 2026
528b35f
Formatting correction.
zbashir-nasa Jan 26, 2026
0e709ef
Pre-commit check.
zbashir-nasa Jan 26, 2026
628ffd9
Update references to sim drivers
eholum-nasa Jan 26, 2026
c050ad7
Make mjcf generation script runnable
eholum-nasa Jan 26, 2026
affcde6
Format fixes
eholum-nasa Jan 26, 2026
98a4325
Merge pull request #19 from NASA-JSC-Robotics/bump-sim-drivers
mtobia-nasa Jan 27, 2026
e8235f6
Merge pull request #20 from NASA-JSC-Robotics/add-citation
eholum-nasa Jan 27, 2026
d84517e
Merge pull request #17 from NASA-JSC-Robotics/sim_hatch_latch
mtobia-nasa Jan 28, 2026
7525567
Merge branch 'humble-devel' into add-ur-gui
mtobia-nasa Jan 29, 2026
b3dc9b8
readme changes, chonkur_comm.launch.py replacing ur_tools.launch.py
mtobia-nasa Jan 29, 2026
4ff7c47
formatting
mtobia-nasa Jan 29, 2026
467b785
generated apriltag successfully, missing greater scene apriltag texture
crainen-nasa Feb 13, 2026
65d72cd
Address PR feedback, no more script interface
eholum-nasa Feb 13, 2026
42b3aec
Specify where to launch ur comms run for the hand-e node
eholum-nasa Feb 13, 2026
3561f35
added apriltag manually to greater scene
crainen-nasa Feb 13, 2026
b6c003a
deleted extra apriltag object
crainen-nasa Feb 13, 2026
7ba306d
removed extra file from converter
crainen-nasa Feb 13, 2026
0818132
Pre-commit
eholum-nasa Feb 13, 2026
585db32
Merge pull request #22 from NASA-JSC-Robotics/add-apriltag-mujoco
eholum-nasa Feb 13, 2026
ed8f1a6
Merge branch 'humble-devel' into add-ur-gui
eholum-nasa Feb 13, 2026
d56ce44
removed gui from chonkur_comm and gave it a separate launch so it can…
mtobia-nasa Feb 18, 2026
c5e07a4
format
mtobia-nasa Feb 18, 2026
ed9fe7f
more format
mtobia-nasa Feb 18, 2026
e01783e
Merge pull request #21 from NASA-JSC-Robotics/add-ur-gui
mtobia-nasa Feb 18, 2026
bc046f0
Merge remote-tracking branch 'origin/humble-devel' into jazzy-devel
eholum-nasa Mar 5, 2026
e988614
Use standard SPDX short names for licenses
eholum-nasa Mar 6, 2026
b4128cd
Update node name
eholum-nasa Mar 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,4 @@ repos:
hooks:
- id: codespell
exclude: \.(svg|stl|dae)$
args: ["--ignore-words-list", "hande"]
args: ["--ignore-words-list", "hande, Hart"]
24 changes: 24 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
cff-version: 1.2.0
message: "If you use this software in your own work, please cite the following paper."
preferred-citation:
type: conference-paper
authors:
- family-names: "Dunkelberger"
given-names: "Nathan"
- family-names: "Sheetz"
given-names: "Emily"
- family-names: "Rainen"
given-names: "Connor"
- family-names: "Graf"
given-names: "Jodi"
- family-names: "Hart"
given-names: "Nikki"
- family-names: "Zemler"
given-names: "Emma"
- family-names: "Azimi"
given-names: "Shaun"
title: "Design of the iMETRO Facility: A Platform for Intravehicular Space Robotics Research"
doi: 10.1109/UR65550.2025.11077983
collection-title: "2025 22nd International Conference on Ubiquitous Robots (UR)"
year: 2025
pages: {390-397}
32 changes: 27 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,15 @@ ros2 launch clr_deploy clr_sim.launch.py model_env:=true
For hardware we run the UR pendantless, which is a two part launch process:

```bash
# To launch the hardware robot, first deploy the UR tools to activate the dashboard client
# in its own long-lived shell.
ros2 launch chonkur_deploy ur_tools.launch.py
# To launch the hardware robot, first deploy chonkur communications to activate the dashboard client
# in its own long-lived shell on the controls machine.
ros2 launch chonkur_deploy chonkur_comm.launch.py

# Start the hardware interfaces for the rail, lift, and ChonkUR.
# On the console machine, launch the UR GUI, which handles most operations that normally occur on the UR pendant
ros2 launch chonkur_deploy chonkur_gui.launch.py

# Back on the controls machine, after reading the UR arm
# Start the hardware interfaces for the rail, lift, and ChonkUR
ros2 launch clr_deploy clr_hw.launch.py
```

Expand All @@ -43,7 +47,7 @@ ros2 launch clr_moveit_config clr_moveit.launch.py model_env:=true
```

A MuJoCo simulation including the environment is available in [clr_mujoco_config](./clr_mujoco_config/README.md).
Note that it requires the [MuJoCo ROS 2 simulation hardware interface](https://github.com/NASA-JSC-Robotics/mujoco_ros2_simulation) to run.
Note that it requires the [MuJoCo ROS 2 simulation hardware interface](https://github.com/ros-controls/mujoco_ros2_control) to run.

```bash
# Start the mujoco ros2 control-based simulation
Expand All @@ -52,3 +56,21 @@ ros2 launch clr_mujoco_config clr_mujoco.launch.py
# In another shell launch the moveit interface with sim parameters set
ros2 launch clr_moveit_config clr_moveit.launch.py include_mockups_in_description:=true use_sim_time:=true
```

## Citation

This project falls under the purview of the iMETRO project.
If you use this in your own work, please cite the following paper:

```bibtex
@INPROCEEDINGS{imetro-facility-2025,
author={Dunkelberger, Nathan and Sheetz, Emily and Rainen, Connor and Graf, Jodi and Hart, Nikki and Zemler, Emma and Azimi, Shaun},
booktitle={2025 22nd International Conference on Ubiquitous Robots (UR)},
title={Design of the iMETRO Facility: A Platform for Intravehicular Space Robotics Research},
year={2025},
volume={},
number={},
pages={390-397},
keywords={NASA;Moon;Seals;Maintenance engineering;Maintenance;Robots;Standards;Open source software;Testing;Logistics},
doi={10.1109/UR65550.2025.11077983}}
```
4 changes: 2 additions & 2 deletions chonkur/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ For hardware we run the UR pendantless, which is a two part launch process:

```bash
# To launch the hardware robot, first deploy the UR tools to activate the dashboard client
# in its own long-lived shell.
ros2 launch chonkur_deploy ur_tools.launch.py
# in its own long-lived shell on the controls machine.
ros2 launch chonkur_deploy chonkur_comm.launch.py

# Then start the hardware interface.
ros2 launch chonkur_deploy chonkur_hw.launch.py
Expand Down
14 changes: 14 additions & 0 deletions chonkur/chonkur_deploy/config/drt_ur_gui_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
drt_ur_gui:
ros__parameters:
program: "ext_ctrl.urp"
window.name: "DRT UR Remote Commander: Single Arm Testing Configuration"
window.stylesheet: |
QMainWindow {
background-color: darkgrey;
color: #000000;
}
QPlainTextEdit {
background-color: lightgrey;
color: #000000;
font-size: 8px;
}
110 changes: 110 additions & 0 deletions chonkur/chonkur_deploy/launch/chonkur_comm.launch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
#!/usr/bin/env python3
#
# Copyright (c) 2025, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# This software is 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.

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node


def generate_launch_description():

# Declare arguments
declared_arguments = []
declared_arguments.append(
DeclareLaunchArgument(
"namespace",
default_value="",
description="Namespace for the robot.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"headless_mode",
default_value="true",
description="Enable headless mode for robot control",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"robot_ip",
default_value="192.168.1.102",
description="IP address by which the robot can be reached.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"hande_dev_name",
default_value="/tmp/ttyUR",
description="File descriptor that will be generated for the tool communication device. "
"The user has be be allowed to write to this location. ",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"tool_tcp_port",
default_value="54321",
description="Remote port that will be used for bridging the tool's serial device.",
)
)

# Initialize Arguments
namespace = LaunchConfiguration("namespace")
headless_mode = LaunchConfiguration("headless_mode")
robot_ip = LaunchConfiguration("robot_ip")
hande_dev_name = LaunchConfiguration("hande_dev_name")
tool_tcp_port = LaunchConfiguration("tool_tcp_port")

robot_state_helper_node = Node(
package="ur_robot_driver",
executable="robot_state_helper",
name="ur_robot_state_helper",
output="both",
parameters=[
{"headless_mode": headless_mode},
{"robot_ip": robot_ip},
],
)

ur_dashboard_client = Node(
package="ur_robot_driver",
executable="dashboard_client",
name="dashboard_client",
output="both",
parameters=[{"robot_ip": robot_ip}],
)

hande_comm_node = Node(
name="ur_tool_communication_hande",
package="ur_robot_driver",
executable="tool_communication.py",
namespace=namespace,
output="both",
parameters=[
{
"robot_ip": robot_ip,
"tcp_port": tool_tcp_port,
"device_name": hande_dev_name,
}
],
)

nodes = [robot_state_helper_node, ur_dashboard_client, hande_comm_node]

return LaunchDescription(declared_arguments + nodes)
57 changes: 57 additions & 0 deletions chonkur/chonkur_deploy/launch/chonkur_gui.launch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/env python3
#
# Copyright (c) 2025, United States Government, as represented by the
# Administrator of the National Aeronautics and Space Administration.
#
# All rights reserved.
#
# This software is 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.

import os

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from chonkur_deploy.launch_helpers import include_launch_file
from ament_index_python.packages import get_package_share_directory


def generate_launch_description():

# Declare arguments
declared_arguments = []
declared_arguments.append(
DeclareLaunchArgument(
"namespace",
default_value="",
description="Namespace for the robot.",
)
)

# Initialize Arguments
namespace = LaunchConfiguration("namespace")

gui_config_path = os.path.join(get_package_share_directory("chonkur_deploy"), "config", "drt_ur_gui_config.yaml")

ur_gui = include_launch_file(
package_name="drt_ur_gui",
launch_file="one_arm.launch.py",
launch_arguments={
"ns": namespace,
"config_file_path": gui_config_path,
}.items(),
)

nodes = [ur_gui]

return LaunchDescription(declared_arguments + nodes)
2 changes: 1 addition & 1 deletion chonkur/chonkur_deploy/launch/control.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def generate_launch_description():
declared_arguments.append(
DeclareLaunchArgument(
"hande_dev_name",
default_value="/dev/robotiq",
default_value="/tmp/ttyUR",
description="File descriptor that will be generated for the tool communication device. "
"The user has be be allowed to write to this location. ",
)
Expand Down
2 changes: 1 addition & 1 deletion chonkur/chonkur_deploy/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
Deploy package for chonkur
</description>
<maintainer email="emma.zemler@nasa.gov">Emma Zemler</maintainer>
<license>Apache License, Version 2.0</license>
<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>
<buildtool_depend>ament_cmake_python</buildtool_depend>
Expand Down
2 changes: 1 addition & 1 deletion chonkur/chonkur_description/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
URDF description for ChonkUR
</description>
<maintainer email="emma.zemler@nasa.gov">Emma Zemler</maintainer>
<license>Apache License, Version 2.0</license>
<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>

Expand Down
2 changes: 1 addition & 1 deletion chonkur/chonkur_description/urdf/chonkur.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<xacro:arg name="marker_opacity" default="0.5"/>
<xacro:arg name="finger_xacro" default="fngr_v6"/>
<xacro:arg name="robot_ip" default="192.168.1.102"/>
<xacro:arg name="com_port_hande" default="/dev/robotiq"/>
<xacro:arg name="com_port_hande" default="/tmp/ttyUR"/>

<xacro:include filename="$(find chonkur_description)/urdf/chonkur_macro.xacro"/>

Expand Down
2 changes: 1 addition & 1 deletion chonkur/chonkur_moveit_config/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
An automatically generated package with all the configuration and launch files for using the chonkur with the MoveIt Motion Planning Framework
</description>
<maintainer email="erik.holum@nasa.gov">Erik Holum</maintainer>
<license>Apache License, Version 2.0</license>
<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>

Expand Down
3 changes: 2 additions & 1 deletion clr_deploy/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
Deploy package for ChonkUR L. Rail-E
</description>
<maintainer email="emma.zemler@nasa.gov">Emma Zemler</maintainer>
<license>Apache License, Version 2.0</license>
<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>
<buildtool_depend>ament_cmake_python</buildtool_depend>
Expand All @@ -20,6 +20,7 @@
<exec_depend>ewellix_liftkit_deploy</exec_depend>
<exec_depend>launch</exec_depend>
<exec_depend>launch_ros</exec_depend>
<!-- Pending https://github.com/RoboStack/ros-jazzy/pull/177 -->
<exec_depend>realsense2_camera</exec_depend>
<exec_depend>vention_rail_deploy</exec_depend>

Expand Down
2 changes: 1 addition & 1 deletion clr_description/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
URDF description for ChonkUR L. Rail-E
</description>
<maintainer email="michael.e.tobia@nasa.gov">Michael Tobia</maintainer>
<license>Apache License, Version 2.0</license>
<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>

Expand Down
6 changes: 3 additions & 3 deletions clr_description/urdf/clr_macro.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@
sim_gazebo:=false
sim_ignition:=false
chonkur_ip:=192.168.1.102
com_port_hande:=/dev/robotiq
com_port_hande:=/tmp/ttyUR
finger_xacro:=fngr_v6
add_grasp_push_frames:=true
marker_opacity:=0.5
rail_ip:=192.168.7.2
rail_port:=9999
rail_position_limit:=2.0
rail_velocity_limit:=0.15
safety_com_port:=/dev/safety_com_port
ewellix_com_port:=/dev/ewellix
safety_com_port:=/dev/ttyACM0
ewellix_com_port:=/dev/ttyUSB0
ewellix_height_limit:=0.7
ewellix_omit_plates:=true
generate_ros2_control_tag:=true
Expand Down
2 changes: 1 addition & 1 deletion clr_imetro_environments/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<maintainer email="michael.e.tobia@nasa.gov">Mike Tobia</maintainer>

<license>Apache License, Version 2.0</license>
<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,11 @@
<xacro:property name="external_handle_3" default="true"/>
<xacro:property name="internal_handle_1" default="false"/>
<xacro:property name="internal_handle_2" default="true"/>
<xacro:property name="latch" default="true"/>
<xacro:include filename="$(find hatch_4060)/urdf/hatch_4060.xacro"/>
<xacro:hatch_4060 prefix="lorge/" parent="lorge/hatch_frame"
external_handle_1="${external_handle_1}" external_handle_2="${external_handle_2}" external_handle_3="${external_handle_3}"
internal_handle_1="${internal_handle_1}" internal_handle_2="${internal_handle_2}">
internal_handle_1="${internal_handle_1}" internal_handle_2="${internal_handle_2}" latch="${latch}">
<!-- <origin xyz="${0.678 + 0.012} 0.057 ${0.716 - 0.013}" rpy="0 0 0"/> -->
<origin xyz="0.678 0.057 0.716" rpy="0 0 0"/>
</xacro:hatch_4060>
Expand Down
Loading
Loading