Skip to main content

HoloBrain General Object Grasping

HoloBrain is a lightweight VLA foundation model from Horizon Robotics. It introduces an "embodied perception" architecture that fuses multi-view visual information with robot kinematics priors for stronger 3D spatial understanding and reasoning. A unified hybrid relative action space supports single-arm, dual-arm, and mobile manipulation platforms, breaking barriers across heterogeneous hardware. With only 0.2B parameters, it achieves industry-leading performance and SOTA results on benchmarks such as RoboTwin 2.0 and LIBERO, and supports complex long-horizon tasks including grasping, cloth folding, and deformable-object manipulation. Combined with the high-compute RDK S600 platform, HoloBrain enables real-time edge inference and a low-latency perception–decision–control loop, accelerating embodied AI applications. This document uses a general grasping task as an example and walks through environment setup, model deployment, and task execution of HoloBrain on RDK S600.

PlatformRDK S600 Ubuntu 24.04
ROS VersionROS 2 Jazzy
ModelHoloBrain_v0.0_GD
TaskGeneral object grasping
Performance (DECODE = 5)wall=116.823ms
text=9.3007ms
enc=40.2941ms
dec=54.6188ms

Hardware Setup

Equipment List

DeviceQuantityImage
RDK S600 development kit1S600
AgileX Piper robotic arm2AgileX Piper robotic arm
RealSense D435i3Realsense D435i
Robotic Arm Stand1Robotic arm stand
Wrist Camera 3D-Printed Mount2Wrist camera 3D-printed mount
Head Camera 3D-Printed Mount1Head camera 3D-printed mount
Small Basket Prop1Small basket prop

Assembly Result

Assembly result

Camera Check

Check USB Device Recognition

# Check whether USB devices are recognized
lsusb
lsusb camera recognition

Query Serial Number

# Source the ROS 2 environment before querying the serial number
source /opt/ros/jazzy/setup.bash

# Query Serial Number; this serial will be used in the HoloBrain project config launch.yaml
rs-enumerate-devices | grep Serial
RealSense Serial Number

Adjust the Middle Camera Position

The transform between the middle camera and the left arm is shown below. To ensure good results, adjust the middle camera so that the transform (position) is as close as possible to the figure. To determine the actual transform, see the calibration tutorial in FAQ.

Transform between the middle camera and the left arm

Configure Robotic Arm CAN Devices

List Existing CAN Devices

# List existing CAN devices
ip link show

Rename CAN Devices

# Rename CAN devices; adjust the commands to match the actual left/right arms. The arm names should be can_left and can_right
sudo ip link set canx name can_left
sudo ip link set canx name can_right

Configure CAN Baud Rate

# After renaming the CAN devices, configure the CAN baud rate
sudo ip link set can_left type can bitrate 1000000
sudo ip link set can_right type can bitrate 1000000
DevicePurposeBaud Rate
can_leftLeft arm1Mbps
can_rightRight arm1Mbps

Bring Up CAN Devices

# Bring up the CAN devices for the left and right arms
sudo ifconfig can_left up
sudo ifconfig can_right up

You can verify whether the CAN devices are up with the ifconfig command:

# Check whether the CAN devices are up
ifconfig
info

The ip link configuration above is typically valid only for the current system session. After reboot, reconfigure it, or set it to start automatically via systemd.

Environment Setup

Install System Dependencies

tip

If apt reports that a package cannot be located, run sudo apt update first and then retry the install.

sudo apt update
sudo apt install tmux \
python3-colcon-common-extensions \
ros-jazzy-rosidl-default-generators \
ros-jazzy-ament-cmake-auto \
ros-jazzy-ament-lint-auto \
ros-jazzy-ros2launch \
ros-jazzy-foxglove-bridge \
ros-jazzy-rosbridge-server \
ros-jazzy-realsense2-camera
PackagePurpose
tmuxTerminal multiplexer for managing multiple background sessions
python3-colcon-common-extensionsCommon colcon extensions for ROS 2 builds
ros-jazzy-rosidl-default-generatorsDefault generators for ROS interface definitions
ros-jazzy-ament-cmake-autoCMake auto-configuration for the ament build system
ros-jazzy-ament-lint-autoAuto-configuration for ament lint checks
ros-jazzy-ros2launchROS 2 launch file tool
ros-jazzy-foxglove-bridgeFoxglove visualization bridge
ros-jazzy-rosbridge-serverROS 2 WebSocket bridge service
ros-jazzy-realsense2-cameraIntel RealSense depth camera driver

Clone the RoboOrchard Repository

git clone https://github.com/wunuo1/RoboOrchard

# Enter the RoboOrchard root directory
cd RoboOrchard

Create a Python Virtual Environment

Run the following commands in the RoboOrchard root directory.

# Make sure the Python version is 3.12 before creating the environment
python3 -m venv venv/roboorchard-venv

# Activate the virtual environment and load ROS 2 Jazzy
source venv/roboorchard-venv/bin/activate
source /opt/ros/jazzy/setup.bash

If everything is set up correctly, the prompt should look like:

(roboorchard-venv) root@drobot:~/VLA/holobrain/RoboOrchard#

To load them automatically, you can also add the source commands to ~/.bashrc.

Install RoboOrchard Development Dependencies

Run the following commands in the RoboOrchard root directory.

# Install RoboOrchard Python development dependencies, plus ROS 2 development, build, and related system dependencies
make dev-env
make ros2-dev-env

# Install the CPU version of PyTorch
pip install torch --index-url https://download.pytorch.org/whl/cpu

# Install the RoboOrchard application
cd python/robo_orchard_inference_app
pip install .

Build ROS 2 Packages

Run the following commands in the RoboOrchard root directory.

# Make sure the related environments are sourced
source venv/roboorchard-venv/bin/activate
source /opt/ros/jazzy/setup.bash

# Suppress Python warnings
export PYTHONWARNINGS="ignore"

# Build ROS 2 packages
make ros2-build

# Source the ROS 2 workspace after the build completes
source ros2_package/install/setup.bash
tip

If make ros2-build reports missing dependencies, run the following command first:

make ros2-dev-env

Then run again:

make ros2-build

HoloBrain Project Configuration

# Enter the HoloBrain project directory
cd projects/HoloBrain

# Install HoloBrain launch dependencies
pip install -r launch/requirements.txt

Edit the launch.yaml configuration as needed. Focus on the three camera serial numbers XXX_CAMERA_SERIAL_NO. For how to query the serial numbers, see Hardware Setup - Camera Check.

vim projects/HoloBrain/launch/launch.yaml

Directory Structure

After deployment, the main directory structure is as follows:

RoboOrchard
|-- LICENSE
|-- Makefile
|-- README.md
|-- projects
| |-- HoloBrain
|-- pyproject.toml
|-- python
| |-- robo_orchard_inference_app
|-- ros2_package
| |-- Makefile
| |-- README.md
| |-- build
| |-- install
| |-- log
| |-- requirements.txt
| |-- robo_orchard_data_msg_ros2
| |-- robo_orchard_data_ros2
| |-- robo_orchard_deploy_ros2
| |-- robo_orchard_handeye_calib_ros2
| |-- robo_orchard_image_tools
| |-- robo_orchard_pico_msg_ros2
| |-- robo_orchard_piper_msg_ros2
| |-- robo_orchard_piper_ros2
| |-- robo_orchard_teleop_msg_ros2
| |-- robo_orchard_teleop_ros2
| |-- robo_orchard_wuji_glove_msg_ros2
| |-- robo_orchard_wuji_glove_ros2
|-- scm
| |-- lint
| |-- qac
| |-- requirements.txt
|-- venv
|-- roboorchard-venv

Start/Stop HoloBrain

HoloBrain launch architecture

Start the BPU Inference Service

cd ~
wget https://sdk.d-robotics.cc/downloads/rdk_demo/rdk_s600_demo/holobrain_runtime_S600.tar.gz
tar -xvf holobrain_runtime_S600.tar.gz

# Enter the script directory
cd ./holobrain_runtime_S600/cpp_hbm_ucp/runtime/script

# Run
DECODER_STEPS=5 sh run_hbm_http_server.sh

Start holobrain_app

This script covers multiple functions such as ros_bridge, camera_service, robot_control, and inference; see launch.yaml for details.

  1. Open a new terminal and run the following commands to start holobrain_app:

    # Enter RoboOrchard
    cd RoboOrchard

    # Make sure all environments are sourced before launch
    source venv/roboorchard-venv/bin/activate
    source /opt/ros/jazzy/setup.bash
    source ros2_package/install/setup.bash

    # Enter projects/HoloBrain
    cd projects/HoloBrain

    # Start
    ./launch/start.sh
  2. After launch, you should see the following UI. Click the window numbers at the bottom to inspect each function, and make sure every function is running normally.

    HoloBrain tmux runtime UI
  3. Open http://localhost:8501/ in a browser on the board.

  4. Create a user, a task, and a description, then select the corresponding options on the right.

    Horizon Robotics Lab Info UI
  5. After making your selections, click Start to start the task, Stop to stop the task, and Reset to return the robotic arm to the zero position.

Stop holobrain_app

In the tmux terminal, press Ctrl+B, then press D to detach from the tmux session.

# Kill all processes
./launch/stop.sh