BEHAVIOR Robot Suite: Streamlining Real-World Whole-Body Manipulation for Everyday Household Activities
Yunfan Jiang, Ruohan Zhang, Josiah Wong, Chen Wang, Yanjie Ze, Hang Yin, Cem Gokmen, Shuran Song, Jiajun Wu, Li Fei-Fei
Conference on Robot Learning (CoRL) 2025
[Website] [arXiv] [PDF] [Doc] [Algorithm Code] [Assembly Guide]
We introduce the BEHAVIOR Robot Suite (BRS), a comprehensive framework for learning whole-body manipulation to tackle diverse real-world household tasks. BRS addresses both hardware and learning challenges through two key innovations: JoyLo and WB-VIMA.
JoyLo provides a general, cost-effective approach to whole-body teleoperation by integrating multifunctional joystick controllers mounted on the ends of two 3D-printed arms. The mounting arms serve as scaled-down kinematic twins of the robot’s arms, enabling precise bilateral teleoperation. JoyLo also inherits key advantages of puppeteering devices, including intuitive operation, reduced singularities, and enhanced stability. By grasping the JoyCon controllers attached to the kinematic-twin arms, users can operate the arms, grippers, torso, and mobile base in unison. This significantly accelerates data collection by allowing users to perform bimanual coordination tasks, navigate safely and accurately, and guide the end-effectors to effectively reach various locations in 3D space.
Tip
🚀 Check out the doc for detailed installation and usage instructions!
To control the Galaxea R1 robot, simply do
from brs_ctrl.robot_interface import R1Interface
from brs_ctrl.robot_interface.grippers import GalaxeaR1Gripper
# Initialize the robot interface with grippers
robot = R1Interface(
left_gripper=GalaxeaR1Gripper(
left_or_right="left",
gripper_close_stroke=0.0,
gripper_open_stroke=100.0,
),
right_gripper=GalaxeaR1Gripper(
left_or_right="right",
gripper_close_stroke=0.0,
gripper_open_stroke=100.0,
),
)
# Control the robot
robot.control(
arm_cmd={
"left": left_arm_action, # np (6,)
"right": right_arm_action, # np (6,)
},
gripper_cmd={
"left": left_gripper_action, # float between 0.0 and 1.0
"right": right_gripper_action, # float between 0.0 and 1.0
},
torso_cmd=torso_action, # np (4,)
base_cmd=mobile_base_action, # np (3,)
)To run real-robot JoyLo control, simply run
python3 scripts/joylo/real_joylo.pyTo run data collection, simply run
python3 scripts/data_collection/start_data_collection.pyOur paper is posted on arXiv. If you find our work useful, please consider citing us!
@inproceedings{
jiang2025brs,
title={{BEHAVIOR} Robot Suite: Streamlining Real-World Whole-Body Manipulation for Everyday Household Activities},
author={Yunfan Jiang and Ruohan Zhang and Josiah Wong and Chen Wang and Yanjie Ze and Hang Yin and Cem Gokmen and Shuran Song and Jiajun Wu and Li Fei-Fei},
booktitle={9th Annual Conference on Robot Learning},
year={2025},
url={https://openreview.net/forum?id=v2KevjWScT}
}This codebase is released under the MIT License.

