B1 Software


B1 edu is intended for academic and research community. Unitree Robotics has provided an SDK for their robots in C++. A demo is available to the robots, however, it is recommended to directly contact support@mybotshop.de for the latest driver as the old ones are known to have issues.


Please follow the pre-requisite software section.

This driver requires a system setup with ROS. It is recommended to use Ubuntu 18.04/Ubuntu 20.04 with ROS melodic/noetic.

To make sure that robot control isn’t affected by system latencies, it is highly recommended to connect the robot via LAN of via 5G connection.


A script can be found below for automatic installation of all the required dependencies mentioned above and the provided software installation. After downloading and changing directory to the downloaded folder, installation script can be run by the following command:


For the B1 installation package please email support@mybotshop.de

You first have to give the script root permission via:

sudo chmod +x installer.bash

Now everything should be installed and built (assuming ROS and Gazebo installed prior to following this tutorial). If there is any issues please contact support@mybotshop.de.

B1 Base


B1 work in two modes:

  1. High level mode

  2. Low level mode

User can be in one of these modes and they can not be switched after running.

High level mode

High level mode is mainly for walking and running. This mode too has two modes normal and motion mode which can be distinguished from their ips (For more details see Quadruped software guide). At the moment this driver is working with default configuration.

In high level mode the robot can walk. To start the driver please run:

sudo su
source ~/catkin_ws/devel/setup.bash
roslaunch b1_base base.launch

To launch the b1_viz:

roslaunch b1_viz view_robot.launch

User can be in one of these modes and they can not be switched after running. With base.launch launches a communication channel between the robot and remote PC. Then later in /base_node/cmd_vel a ROS node is run.

Node [high_level_driver]

Publications: state [b1_legged_msgs/HighState]

Subscriptions: cmd_vel [geometry_msgs/Twist]

Services: set_body_pose [b1_legged_msgs/SetMode]

The robot pose can be set using the robot set_body_pose service. Robot state is published in state topic. This message contains a lot of information. For more information see high state message.

Using the driver

The node subscribes to base_cmd_vel topic. Here special attention needs to be paid. As the robot is holonimic so different Twist message fields determine different movement. A nice tool here would be teleop_twist_keyboard. Here in the teleop holonomic and non holonomic modes can be used (Be aware key strokes and their usage).

Low level mode

In development …

B1 Legged Msgs

This ros package contains custom ros messages used by the B1 Base.

B1 Camera

Coming soon …

B1 Control

This ros package enables teleop for the Logitech controller.

roslaunch b1_control controller.launch

Future updates will include localization files required for navigation.

B1 Description

This is a ros package that contains the 3D models of the B1. Additionally, the seperate 3D models are stitched together into a single entity via the universal robot description format (URDF). It contains the models for auxiliary components such as lidars as well. Additions to the robot’s 3D model can be made in the xacro/robot.urdf.xacro. To view the robot with simulated dummy drivers. You can run:

roslaunch b1_description check_joint.launch


It is ideal to run this on your own PC when the robot is not attached just to adjust the position of your auxiliary components.

The description is automatically launched with the base driver to show the perceived position of the legs with the robot.

roslaunch b1_description description.launch

B1 Gazebo


This ros package is used for controlling and operating the B1 in Gazebo simulation. The robot can be tele-operated and can be used further for slam and autonomous navigation. This package requires the Champ ROS repository.

To launch Gazebo run the following command:

roslaunch b1_gazebo bringup.launch rviz:=true

To tele-operate:

roslaunch champ_teleop teleop.launch

This can be used to create and test low-level drivers as well, more information on this is available on the Champ repository.

B1 Viz


This ros package is used for visualization of the robots current state both in simulation and in the real-hardware.

roslaunch b1_viz view_robot.launch