hello robot stretch 3 joint-position control
hello robot stretch 3 joint-position control. Bounded simulated joint offsets from the original reset pose; not locomotion or object-task validation.
mujoco-hello-robot-stretch-3-joint-control | Record version: 1.0.0
Record JSON | Markdown recipe | Complete search index
Fetch and prepare
curl -fsSL https://hub.superfastrobotics.com/skills/mujoco-hello-robot-stretch-3-joint-control/skill.json
curl -fsSL https://hub.superfastrobotics.com/skills/mujoco-hello-robot-stretch-3-joint-control/README.md
python /PATH_TO_SKILL/scripts/rsh.py inspect mujoco-hello-robot-stretch-3-joint-control --json
python /PATH_TO_SKILL/scripts/rsh.py prepare mujoco-hello-robot-stretch-3-joint-control --project ./experiment --expected-source-commit 62ab00f2bc44f6f20c1c9b7a13f3fb1dd41a4e35 --expected-record-version 1.0.0 --plan --json
Inspect the requirements, then remove --plan to prepare a project. Preparation verifies the archive SHA256 and preserves exact source pins. --install-deps explicitly installs dependencies. Run the returned simulation command separately.
Environment
- Runtime
- mujoco 3.3.7
- Robot
- hello_robot_stretch_3
- Controller
- native_position_actuators
- Observation
- joint_state
- OS / architecture
- linux / x86_64
- Python
- >=3.10,<3.11
Compatibility status: hub_verified
Privileged simulator state and declared goals; no perception or real sensor validation.
Requirements
- Linux x86_64; CPU simulation; see retained receipt for the exact host environment
Headless. EGL libraries are required for MuJoCo imports; PushT uses SDL dummy video. No interactive display.
Packages: mujoco==3.3.7, numpy==1.26.4
Direct runtime versions are pinned and measured. The receipt retains the complete environment freeze; prepare records the installed environment. System drivers are separate host requirements.
External API keys: none.
Invocation
Executable interface
{
"version": "1",
"kind": "controller",
"abstraction_level": 1,
"execution_domain": "simulation",
"language": "python",
"input_transport": "json_file_or_inline",
"output_transport": "json_stdout",
"output_selector": "outputs",
"conventions": {
"linear_unit": "m",
"angular_unit": "rad",
"time_unit": "s",
"coordinate_frame": "right_handed_world_xyz; +z_up",
"joint_order": "joint_wrist_yaw,joint_wrist_pitch,joint_wrist_roll,joint_head_pan,joint_head_tilt",
"quaternion_order": "not_used"
},
"input_schema": {
"type": "object",
"required": [
"seed",
"joint_offset_rad"
],
"properties": {
"seed": {
"type": "integer",
"minimum": 0,
"maximum": 10000
},
"joint_offset_rad": {
"type": "number",
"minimum": -0.15,
"maximum": 0.15,
"x-unit": "rad"
}
},
"additionalProperties": false
},
"output_schema": {
"type": "object",
"required": [
"joint_positions_rad",
"target_joint_positions_rad",
"max_error_rad",
"movement_rad"
],
"properties": {
"joint_positions_rad": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"items": {
"type": "number",
"minimum": -20,
"maximum": 20
},
"x-unit": "rad",
"x-frame": "named_model_joint_coordinates",
"x-order": [
"joint_wrist_yaw",
"joint_wrist_pitch",
"joint_wrist_roll",
"joint_head_pan",
"joint_head_tilt"
]
},
"target_joint_positions_rad": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"items": {
"type": "number",
"minimum": -20,
"maximum": 20
},
"x-unit": "rad",
"x-frame": "named_model_joint_coordinates",
"x-order": [
"joint_wrist_yaw",
"joint_wrist_pitch",
"joint_wrist_roll",
"joint_head_pan",
"joint_head_tilt"
]
},
"max_error_rad": {
"type": "number",
"minimum": 0,
"maximum": 50,
"x-unit": "rad"
},
"movement_rad": {
"type": "number",
"minimum": 0,
"maximum": 50,
"x-unit": "rad"
}
},
"additionalProperties": false
},
"preconditions": [
"Use the exact recorded source, Linux Python 3.10 environment and pinned direct packages.",
"No physical robot, network actuation or external robot credentials."
],
"postconditions": [
"All reported checks must be true and all output numbers finite.",
"Success covers the declared goal and frozen cases, not arbitrary tasks or physical hardware."
],
"failure_codes": [
"invalid_input_or_environment",
"execution_failed",
"task_failed"
],
"composition": {
"depends_on": [],
"automatic_frame_conversion": false,
"automatic_hardware_execution": false
},
"origin_reference_ids": [
"mujoco-menagerie-artifact-hello-robot-stretch-3-scene-xml"
],
"origin_relationship": "prepared_from_the_same_pinned_model; inspect the declared controller and goal; no physical compatibility is inferred"
}
Entrypoint: python run.py
{
"argv": [
"{python}",
"{recipe_dir}/run.py",
"--source-dir",
"{source_dir}",
"--example"
],
"inputs": {
"seed": 0,
"joint_offset_rad": 0.08
},
"outputs": {
"format": "single JSON object",
"payload_selector": "outputs",
"schema": {
"type": "object",
"required": [
"joint_positions_rad",
"target_joint_positions_rad",
"max_error_rad",
"movement_rad"
],
"properties": {
"joint_positions_rad": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"items": {
"type": "number",
"minimum": -20,
"maximum": 20
},
"x-unit": "rad",
"x-frame": "named_model_joint_coordinates",
"x-order": [
"joint_wrist_yaw",
"joint_wrist_pitch",
"joint_wrist_roll",
"joint_head_pan",
"joint_head_tilt"
]
},
"target_joint_positions_rad": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"items": {
"type": "number",
"minimum": -20,
"maximum": 20
},
"x-unit": "rad",
"x-frame": "named_model_joint_coordinates",
"x-order": [
"joint_wrist_yaw",
"joint_wrist_pitch",
"joint_wrist_roll",
"joint_head_pan",
"joint_head_tilt"
]
},
"max_error_rad": {
"type": "number",
"minimum": 0,
"maximum": 50,
"x-unit": "rad"
},
"movement_rad": {
"type": "number",
"minimum": 0,
"maximum": 50,
"x-unit": "rad"
}
},
"additionalProperties": false
}
}
}
Success: All declared goal and finite-state checks pass; exit 0 with task_complete. Move the named actuated hinge joints by a bounded offset from the reset/settled pose; max residual <0.035 rad and nonzero actual motion. This is not end-effector planning, balance, locomotion or hardware control.
Timeout: 180 seconds. Terminate the adapter at the recorded timeout. No physical hardware is opened.
Failure modes
- Invalid input or source checksum
- Different pinned package version
- Unavailable runtime/driver
- Goal not reached within bounded steps
Source and license
- Repository
- https://github.com/google-deepmind/mujoco_menagerie
- Authors
- MuJoCo Menagerie contributors and the pinned model licensors
- Commit
62ab00f2bc44f6f20c1c9b7a13f3fb1dd41a4e35- Archive SHA256
6866543ef9f07fd24f3fa4d134c06b30f5276f48daf412022b6edbaf6b2f0152- License
- Apache-2.0
- Hub commit
ede75c00118e9808e5099da43c26f4619cc3bc37
- hello_robot_stretch_3/CHANGELOG.md
- hello_robot_stretch_3/LICENSE
- hello_robot_stretch_3/README.md
- hello_robot_stretch_3/assets/arm_inner_wrist_aruco_sticker.png
- hello_robot_stretch_3/assets/arm_top_wrist_aruco_sticker.png
- hello_robot_stretch_3/assets/base_link_0.obj
- hello_robot_stretch_3/assets/base_link_1.obj
- hello_robot_stretch_3/assets/base_link_2.obj
- hello_robot_stretch_3/assets/base_link_3.obj
- hello_robot_stretch_3/assets/base_link_4.obj
- hello_robot_stretch_3/assets/base_link_5.obj
- hello_robot_stretch_3/assets/base_link_6.obj
- hello_robot_stretch_3/assets/base_link_7.obj
- hello_robot_stretch_3/assets/base_link_8.obj
- hello_robot_stretch_3/assets/base_link_casterless.stl
- hello_robot_stretch_3/assets/gripper_cam_aruco_sticker.png
- hello_robot_stretch_3/assets/hand_crush.png
- hello_robot_stretch_3/assets/hand_pinch.png
- hello_robot_stretch_3/assets/laser.obj
- hello_robot_stretch_3/assets/left_finger_aruco.png
- hello_robot_stretch_3/assets/link_DW3_wrist_pitch.stl
- hello_robot_stretch_3/assets/link_DW3_wrist_quick_connect.stl
- hello_robot_stretch_3/assets/link_DW3_wrist_roll.stl
- hello_robot_stretch_3/assets/link_DW3_wrist_yaw_bottom.stl
- hello_robot_stretch_3/assets/link_SE3_head_nav_cam.stl
- hello_robot_stretch_3/assets/link_SG3_aruco_d405.obj
- hello_robot_stretch_3/assets/link_SG3_aruco_d405.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_body.mtl
- hello_robot_stretch_3/assets/link_SG3_gripper_body.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_body.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_fingertip_collision.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_inner_finger.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_left_finger_0.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_left_finger_1.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_left_finger_aruco.mtl
- hello_robot_stretch_3/assets/link_SG3_gripper_left_finger_aruco.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_left_finger_aruco.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_left_fingertip.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_left_inner_finger.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_right_finger_0.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_right_finger_1.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_right_finger_aruco.mtl
- hello_robot_stretch_3/assets/link_SG3_gripper_right_finger_aruco.obj
- hello_robot_stretch_3/assets/link_SG3_gripper_right_finger_aruco.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_right_fingertip.stl
- hello_robot_stretch_3/assets/link_SG3_gripper_right_inner_finger.stl
- hello_robot_stretch_3/assets/link_arm_l0_0.obj
- hello_robot_stretch_3/assets/link_arm_l0_1.obj
- hello_robot_stretch_3/assets/link_arm_l0_2.obj
- hello_robot_stretch_3/assets/link_arm_l1_0.obj
- hello_robot_stretch_3/assets/link_arm_l1_1.obj
- hello_robot_stretch_3/assets/link_arm_l2_0.obj
- hello_robot_stretch_3/assets/link_arm_l2_1.obj
- hello_robot_stretch_3/assets/link_arm_l3_0.obj
- hello_robot_stretch_3/assets/link_arm_l3_1.obj
- hello_robot_stretch_3/assets/link_arm_l4_0.obj
- hello_robot_stretch_3/assets/link_arm_l4_1.obj
- hello_robot_stretch_3/assets/link_aruco_inner_wrist.obj
- hello_robot_stretch_3/assets/link_aruco_left_base.obj
- hello_robot_stretch_3/assets/link_aruco_right_base.obj
- hello_robot_stretch_3/assets/link_aruco_shoulder.obj
- hello_robot_stretch_3/assets/link_aruco_top_wrist.obj
- hello_robot_stretch_3/assets/link_d405.stl
- hello_robot_stretch_3/assets/link_d405_front_plate.stl
- hello_robot_stretch_3/assets/link_d405_lens.stl
- hello_robot_stretch_3/assets/link_gripper_0.obj
- hello_robot_stretch_3/assets/link_gripper_1.obj
- hello_robot_stretch_3/assets/link_gripper_finger_left_0.obj
- hello_robot_stretch_3/assets/link_gripper_finger_left_1.obj
- hello_robot_stretch_3/assets/link_gripper_finger_right_0.obj
- hello_robot_stretch_3/assets/link_gripper_finger_right_1.obj
- hello_robot_stretch_3/assets/link_gripper_fingertip_left.stl
- hello_robot_stretch_3/assets/link_gripper_fingertip_right.stl
- hello_robot_stretch_3/assets/link_head_0.obj
- hello_robot_stretch_3/assets/link_head_1.obj
- hello_robot_stretch_3/assets/link_head_10.obj
- hello_robot_stretch_3/assets/link_head_11.obj
- hello_robot_stretch_3/assets/link_head_2.obj
- hello_robot_stretch_3/assets/link_head_3.obj
- hello_robot_stretch_3/assets/link_head_4.obj
- hello_robot_stretch_3/assets/link_head_5.obj
- hello_robot_stretch_3/assets/link_head_6.obj
- hello_robot_stretch_3/assets/link_head_7.obj
- hello_robot_stretch_3/assets/link_head_8.obj
- hello_robot_stretch_3/assets/link_head_9.obj
- hello_robot_stretch_3/assets/link_head_pan_0.obj
- hello_robot_stretch_3/assets/link_head_pan_1.obj
- hello_robot_stretch_3/assets/link_head_tilt_0.obj
- hello_robot_stretch_3/assets/link_head_tilt_1.obj
- hello_robot_stretch_3/assets/link_left_wheel_0.obj
- hello_robot_stretch_3/assets/link_left_wheel_1.obj
- hello_robot_stretch_3/assets/link_lift_0.obj
- hello_robot_stretch_3/assets/link_lift_1.obj
- hello_robot_stretch_3/assets/link_lift_2.obj
- hello_robot_stretch_3/assets/link_lift_3.obj
- hello_robot_stretch_3/assets/link_lift_4.obj
- hello_robot_stretch_3/assets/link_lift_5.obj
- hello_robot_stretch_3/assets/link_lift_6.obj
- hello_robot_stretch_3/assets/link_lift_7.obj
- hello_robot_stretch_3/assets/link_lift_8.obj
- hello_robot_stretch_3/assets/link_lift_9.obj
- hello_robot_stretch_3/assets/link_mast.obj
- hello_robot_stretch_3/assets/link_right_wheel_0.obj
- hello_robot_stretch_3/assets/link_right_wheel_1.obj
- hello_robot_stretch_3/assets/link_wrist_yaw.obj
- hello_robot_stretch_3/assets/link_wrist_yaw.stl
- hello_robot_stretch_3/assets/mobile_base_left_corner_aruco_sticker.png
- hello_robot_stretch_3/assets/mobile_base_right_corner_aruco_sticker.png
- hello_robot_stretch_3/assets/respeaker_base.obj
- hello_robot_stretch_3/assets/right_finger_aruco.png
- hello_robot_stretch_3/assets/serial.png
- hello_robot_stretch_3/assets/shoulder_aruco_sticker.png
- hello_robot_stretch_3/assets/wood.png
- hello_robot_stretch_3/scene.xml
- hello_robot_stretch_3/stretch.png
- hello_robot_stretch_3/stretch.xml
Evidence
Runtime: task_complete / task_complete
All 3 frozen cases completed against this exact adapter and source.
Reviewer: Hub finite-case Lambda execution harness | 2026-10-20
- python tools/verify_runtime_expansion.py --backend menagerie --source-cache SOURCE_CACHE --output OUTPUT
Submitter reports and hub verification remain separate. Source review does not establish task success.