Robots · Simulation · humanoid robots

HECTOR humanoid Gazebo simulation

HECTOR humanoid Gazebo simulation, adapted from drcl-usc/hector_simulation. It reads read_model_states; runs send_left_hip_command, send_left_hip2_command, send_left_thigh_command, send_left_calf_command and 6 more. send_left_hip_command: publish one unitree_legged_msgs/MotorCmd for the simulated left_hip joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable. A simulator: the market serves it with a stand-in that needs no simulator install.

simulatedRisk R2BSD-3-Clausecontract_checkedserved on the fake backend
openai4s lab add robots/drcl-usc__hector_simulation

Install

Three ways to run this device. Each one serves its fake backend: no instrument, no simulator install and no upstream checkout.

OpenAI4S (one command)

shell
openai4s lab add robots/drcl-usc__hector_simulation

Installs the device into the OpenAI4S Lab on its fake backend and starts it. First time? See setup below.

Or, in the workbench, open the Lab tab → Market → Install.

Standalone MHS endpoint

shell
git clone --depth 1 https://github.com/PKU-YuanGroup/OpenMHS.git && cd OpenMHS
PYTHONPATH=MHS/sdk/src python3 -m mhs serve robots/drcl-usc__hector_simulation --port 7400
# in a second terminal, from the same directory:
PYTHONPATH=MHS/sdk/src python3 -m mhs describe --endpoint http://127.0.0.1:7400

Serves the device as an MHS endpoint on port 7400 from an OpenMHS clone (Python 3.10 or later, standard library only); describe prints what it offers.

Any MCP host (Claude Desktop, Cursor, …)

mcp configuration
{
  "mcpServers": {
    "hector-simulation": {
      "command": "python3",
      "args": [
        "-m",
        "mhs",
        "serve",
        "robots/drcl-usc__hector_simulation",
        "--mcp"
      ],
      "env": {
        "PYTHONPATH": "/path/to/OpenMHS/MHS/sdk/src"
      }
    }
  }
}

Add this server to the host's MCP configuration and replace /path/to/OpenMHS with the path of your OpenMHS clone. The host starts the server and talks to it on stdin and stdout.

What it does

Measures

  • read_model_states

Adjusts

Nothing declared.

Actions

send_left_hip_command
Publish one unitree_legged_msgs/MotorCmd for the simulated left_hip joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_left_hip2_command
Publish one unitree_legged_msgs/MotorCmd for the simulated left_hip2 joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_left_thigh_command
Publish one unitree_legged_msgs/MotorCmd for the simulated left_thigh joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_left_calf_command
Publish one unitree_legged_msgs/MotorCmd for the simulated left_calf joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_left_toe_command
Publish one unitree_legged_msgs/MotorCmd for the simulated left_toe joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_right_hip_command
Publish one unitree_legged_msgs/MotorCmd for the simulated right_hip joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_right_hip2_command
Publish one unitree_legged_msgs/MotorCmd for the simulated right_hip2 joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_right_thigh_command
Publish one unitree_legged_msgs/MotorCmd for the simulated right_thigh joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_right_calf_command
Publish one unitree_legged_msgs/MotorCmd for the simulated right_calf joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.
send_right_toe_command
Publish one unitree_legged_msgs/MotorCmd for the simulated right_toe joint. The receipt proves only that rosbridge accepted the publication; it does not prove that the controller applied it, that the joint moved, or that the robot is stable.

Names as the driver declares them. Units, limits and the safety declaration are in the package's REFERENCE.md.

First-time setup

The OpenAI4S workbench with the OpenMHS lab, from a source checkout:

shell
# OpenAI4S workbench with the OpenMHS lab (source checkout)
git clone --recursive https://github.com/PKU-YuanGroup/OpenAI4S.git
cd OpenAI4S && ./setup.sh && source .venv/bin/activate
openai4s lab add robots/drcl-usc__hector_simulation
openai4s serve        # open the Lab tab

The standalone endpoint and the MCP server need only an OpenMHS clone and Python 3.10 or later. More in the market's getting-started guide and on the OpenAI4S host page.

Source and evidence

Pinned commit
edfdc7b1a985
Licence
BSD-3-Clause
Stars
534
Evidence
contract_checked on the fake backend
Backends
fake

The driver package MHS/drivers/robots/drcl-usc__hector_simulation wraps the upstream code at the pinned commit. Its REFERENCE.md documents the full contract: every value, action, unit, limit and the safety declaration.