A Rust SDK for controlling Booster robots based on Booster Robotics C++ SDK.
This library is currently in early development. The core architecture and types are defined, but none of it has been tested on an actual robot yet. The DDS transport layer is implemented using RustDDS.
use booster_sdk::client::BoosterClient;
use booster_sdk::types::{RobotMode, Hand};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize and create client
let client = BoosterClient::new()?;
// Change to walking mode
client.change_mode(RobotMode::Walking).await?;
// Move forward
client.move_robot(0.5, 0.0, 0.0).await?;
// Wave hand
// Publish gripper commands if needed (DDS topic-based control)
client.publish_gripper_command(&booster_sdk::client::GripperCommand::open(Hand::Right))?;
// Lie down when done
client.lie_down().await?;
Ok(())
}Python bindings for the SDK are available using PyO3. These bindings are very experimental!
- Python 3.10 or higher
- Rust toolchain (for building from source)
The Python package can be built using pixi:
pixi run py-build-wheelThis will create a wheel file in booster_sdk_py/dist/ that can be installed with pip install booster_sdk_py/dist/*.whl.
Note: Python bindings are intentionally minimal and expose a subset of the Rust API.
from booster_sdk import BoosterClient, GripperCommand, Hand, RobotMode
client = BoosterClient()
# Change to walking mode
client.change_mode(RobotMode.WALKING)
# Move forward
client.move_robot(0.5, 0.0, 0.0)
# Open right gripper
client.publish_gripper_command(GripperCommand.open(Hand.RIGHT))The Python bindings currently cover basic mode changes, locomotion, and gripper control.
The Rust SDK communicates directly over DDS (RustDDS). Please refer to the DDS Setup Guide for detailed instructions.
This SDK is currently in early development. Contributions are welcome! Please open issues or pull requests for bug fixes, features, or documentation improvements.