VectorRobotics

    • Documentation
    • Gallery
    • Project Management
      • Issues Log
      • Risk Management
      • Schedule
    • System Design
    • System Implementation
      • Control Sub-system
      • Navigation Sub-system
      • PCB Design
      • Perception Sub-system
      • System Interface
    • Team
    • Video Demos

System Interface

Fall 2026 Updates

Unitree Interface (updated):

The ROS 2 control bridge over the Unitree SDK drives the 29-DoF G1 with Dex3 hands. Commands are exposed as ~/cmd_vel, ~/cmd_arm and ~/cmd_low, and robot setup is exposed as services: ~/change_mode, ~/ready_locomotion (damp → stand → start), ~/release_arms, ~/set_profile (motor gains), ~/set_hand_pose (Dex3 poses) and ~/reset_integral_error. The application-side control loop switches between High-level, Low-level, Idle and Emergency modes.

Unitree interface: ROS 2 commands, services and application-side control modes.
Fig: Unitree interface: ROS 2 commands, services and application-side control modes.

Distributed Systems & Communication:

The stack is split across three onboard computers so that VLM inference, real-time tracking, and planning/control/navigation run on separate devices, each in its own isolated runtime. This keeps heavy model dependencies away from the control loop and removes the dependence on external Wi-Fi.

  • Thor (aarch64, ROS 2 Jazzy): LLM/VLM inferencing.
  • Orin (aarch64, ROS 2 Jazzy, inside the G1): object tracking and perception.
  • NUC (x86_64, ROS 2 Jazzy): arm planning and control, navigation, LiDAR driver.
Distributed system architecture across Thor, Orin and NUC.
Fig: Distributed system architecture across Thor, Orin and NUC.

Universal Stack Manager (deployment tool):

A single ./scripts/deploy.sh entry point provisions and operates every target over SSH: install, update, assets, build, status, launch, stop and logs, with --dry-run support. The workflow is provision (repositories and Pixi environment) → sync assets (models and checkpoints) → build (colcon) → operate (launch, stop and logs in tmux).

Universal Stack Manager: one deployment script for every onboard target.
Fig: Universal Stack Manager: one deployment script for every onboard target.

Skill Library:

Robot capabilities are wrapped as reusable skills for the task executor.

  • Base skills (8): navigate_to, turn_to, stop, localize, track(text), ground(text), move_arm_to, press(target).
  • Composed skills (5): go_to_place(name), call_elevator, enter_elevator, ride, exit_elevator.
Skill library: base skills and composed elevator skills.
Fig: Skill library: base skills and composed elevator skills.

Hardware:

Sharing the robot with the sponsor exposed the team to frequent hardware failures: over the fall the team repaired more than ten Dex3 hands and recovered the G1 after a breakdown, followed by a break-in period. The catch-up plan combined repairing the existing robot, provisioning an additional robot, and testing the task executor in simulation during downtime.

Hardware maintenance: more than ten Dex3 hands repaired this fall.
Fig: Hardware maintenance: more than ten Dex3 hands repaired this fall.

Spring 2026

Unitree Interface:

The unitree_interface package is a ROS 2 (Jazzy) bridge for the Unitree G1 humanoid robot that abstracts away DDS communication behind standard ROS topics and services. It’s split into two components: UnitreeInterface, which handles the ROS-facing API including subscriptions, publishers, services, and a control mode state machine, and UnitreeSDKWrapper, which manages all the underlying SDK/DDS communication. Both share CycloneDDS domain 0, so no domain ID separation is needed. The node operates as a state machine cycling through Monostate, Idle, HighLevel, LowLevel, and Emergency modes. HighLevelMode exposes velocity and arm commands via the locomotion client and arm SDK respectively, while LowLevelMode (compile-time gated) allows direct per-joint motor control with CRC-32 checksums. Joint topology is defined at compile time in topology.hpp, mapping all 29 joints by URDF name to index with gearbox-based default gains. Mode transitions are validated and exposed via a service, joint state feedback is published at ~500Hz, and an estop subscription in both active modes triggers a terminal damping state.

Fig : Modes and Transitions.

VectorRobotics

Proudly powered by WordPress