H1-2 E
H1 Overview
ROS2 drivers for the H1 platform include:
Domain Bridge
Joint State publisher
Robot Description
Arm and Leg High-Level Control
IMU Publisher
Sensor Fusion
Twist Mux
Depth Camera driver (D435i)
Lidar drivers (Livox / Ouster)
Drivers are managed via startup services or the webserver interface.
Auto Drivers Startup
Check driver status:
sudo service h1-platform status
sudo service h1-webserver status
Start drivers manually:
sudo service h1-platform start
Restart if required:
sudo service h1-platform restart
Modify startup jobs in:
h1_bringup/scripts/startup_installer.py
Apply changes:
ros2 run h1_bringup startup_installer.py
RViz2
Visualize robot state:
ros2 launch h1_viz view_robot.launch.py
Tele-Operation
Keyboard teleop:
ROS_DOMAIN_ID=10 ros2 run teleop_twist_keyboard teleop_twist_keyboard \
--ros-args --remap cmd_vel:=/h1_unit_0001/hardware/cmd_vel
Core Launch Files
Useful launch files:
ros2 launch h1_platform highlevel_ros.launch.py
ros2 launch h1_platform domain_bridge.launch.py
ros2 launch h1_platform h1_2_state_publisher.launch.py
ros2 launch h1_webserver webserver.launch.py
ros2 launch h1_control twistmux.launch.py
ros2 launch h1_lidar ouster.launch.py
ros2 launch h1_depth_camera realsense.launch.py
Arms (7-DoF):
ros2 launch h1_description h1_2_description.launch.py
ros2 launch h1_platform h1_2_arm_record.launch.py
SDK examples:
./h1_loco_client --network_interface=eth0 --shake_hand
Modes Selection
Posture & State Commands
damp— all motors damping modestart— begin locomotionsquat— transition to squatsit— sit downstand_up— stand upzero_torque— disable torquestop_move— stop motionhigh_stand— high posturelow_stand— low posturebalance_stand— active balance standshake_hand— perform handshake
Setter Commands
set_fsm_id=<id>set_balance_mode=<0/1>set_swing_height=<m>set_stand_height=<m>set_velocity="vx vy w dur"move="vx vy w"set_task_id=<id>set_speed_mode=<mode>
Getter Commands
get_fsm_idget_fsm_modeget_balance_modeget_swing_heightget_stand_heightget_phase
Example: Damp Mode
ROS_DOMAIN_ID=10 ros2 service call \
/h1_unit_0001/hardware_modes h1_interface/srv/H1Modes \
'{"request_data": "damp"}'
Dual Arm Control (H1-2)
Launch server:
ros2 launch h1_platform h1_2_arm_server.launch.py
Configuration file:
h1_platform/config/h1_2_dual_arm_controller.yaml
Example T-pose (trajectory):
ros2 action send_goal /h1_unit_1789/dual_arm/follow_joint_trajectory \
control_msgs/action/FollowJointTrajectory "{trajectory: {...}}"
(Full trajectories preserved in source document.)
Dual Arm Record (Experimental)
Launch:
ros2 launch h1_platform h1_2_arm_record.launch.py
Start recording:
ros2 service call /h1_unit_284/dual_arm/record std_srvs/srv/SetBool "data: true"
Stop:
ros2 service call /h1_unit_284/dual_arm/record std_srvs/srv/SetBool "data: false"
Playback latest:
ros2 service call /h1_unit_284/dual_arm/playback h1_interface/srv/H1Modes \
"request_data: ''"
Playback specific:
ros2 service call /h1_unit_284/dual_arm/playback h1_interface/srv/H1Modes \
"request_data: '/opt/mybotshop/h1_2_trajectories/<file>.csv'"
Additional ROS2 Packages
Located under:
/opt/mybotshop/src/mybotshop/
SLAM
Launch SLAM:
ros2 launch h1_navigation slam.launch.py
Save map:
ROS_DOMAIN_ID=10 ros2 run nav2_map_server map_saver_cli \
-f /opt/mybotshop/src/mybotshop/h1_navigation/maps/custom_map
Rebuild:
colcon build --symlink-install
source install/setup.bash
Auxiliary Sensors
Intel Realsense D435i
ros2 launch h1_depth_camera realsense.launch.py
Config file: h1_depth_camera/launch/realsense.launch.py
ZED2i
ros2 launch h1_depth_camera zed.launch.py
Config: params_zed_stereo.yaml
Ouster Lidar
ros2 launch h1_lidar ouster.launch.py
Config: ouster_params.yaml
GPS – Emlid M2
ros2 launch h1_gps emlid_m2.launch.py
Config: h1_gps/config/emlid_m2.yaml
Simulation
Gazebo Fortress
ros2 launch h1_gazebo h1_2_fortress_simulation.launch.py
Isaac Sim
See official Unitree / MYBOTSHOP guides.