| Crates.io | rsbullet-core |
| lib.rs | rsbullet-core |
| version | 0.3.2 |
| created_at | 2025-10-15 02:10:25.341112+00 |
| updated_at | 2026-01-19 14:05:17.612056+00 |
| description | Compiles bullet3 and exposes rust bindings to the C API |
| homepage | https://github.com/Robot-Exp-Platform/rsbullet |
| repository | |
| max_upload_size | |
| id | 1883541 |
| size | 324,585 |
This project is a fork of the rubullet project. As the original repository has not been updated for over five years, further maintenance, updates, and customization requirements are being carried out here. The readme file of the original warehouse can be found README_ORIGIN.md.
Compared to the 100 APIs implemented in the original library, we have additionally implemented all the APIs in pybullet 3.2.7. This enables you to smoothly migrate from pybullet to rsbullet, simply by changing the API names to snake_case. you can read API documentation in the RSBULLET_API_REFERENCE.md.
PhysicsClient : do everything PyBullet can doIn Rsbullet you can use the PhysicsClient to get features similar to those in PyBullet:
We have prepared a series of examples which can be referred to examples.Some of the examples are exactly the same as those in pubullet, which can serve as a standard reference for your migration.
Rsbullet : more features. User-friendly, Simple-interface, Abstraction and More RustlyFurthermore, we have provided RsBullet to achieve functions that Pybullet does not have, in order to fully adapt to the features and convenience brought by Rust.
A examples of Rsbullet features:
use libjaka::JakaMini2;
use robot_behavior::behavior::*;
use rsbullet::{Mode, RsBullet};
fn main() -> Result<()> {
let mut physics = RsBullet::new(Mode::Gui)?;
physics
.set_additional_search_path("E:\\yixing\\code\\Robot-Exp\\drives\\asserts")?
.set_gravity([0., 0., -10.])?
.set_step_time(Duration::from_secs_f64(1. / 240.))?;
let mut robot_1 = physics
.robot_builder::<JakaMini2>("robot_1")
.base([0.0, 0.2, 0.0])
.base_fixed(true)
.load()?;
// a s-curve motion
robot_1
.with_velocity(&[5.; 6])
.with_acceleration(&[2.; 6])
.move_joint(&[0.; 6])?;
loop {
physics.step()?;
sleep(Duration::from_secs_f64(0.01));
}
}
In Pybullet, to control a robot, you need to get the robot's unique ID first, and then call various functions with the ID as a parameter. In Rsbullet, you can directly create a robot object through the robot_builder method of Rsbullet, and then call the robot's methods in robot_behavior to control it. The robot object will automatically manage its own ID internally, making it more convenient to use.
Enjoy it!