3 个版本
0.1.0-alpha-3 | 2021年6月9日 |
---|---|
0.1.0-alpha-2 | 2021年3月13日 |
0.1.0-alpha | 2021年3月3日 |
#121 in 模拟
在 franka-interface 中使用
18MB
769K SLoC
鲁棒子弹
鲁棒子弹是 PyBullet 的 Rust 实现。换句话说,它使用 Bullet3 C API 来公开与 PyBullet 类似的功能。开发正在进行中,功能目前有限。
状态
目前鲁棒子弹应该涵盖大多数基本用例。它可以
- 在直接、Gui 或其他模式中创建 PhysicsClient
- 从 URDF、SDF、MuJoCo 或 Bullet 文件加载模型
- 在模拟中创建自己的模型
- 以位置、速度或扭矩模式控制机器人
- 计算逆动力学、逆运动学、雅可比矩阵和质心矩阵
- 渲染相机图像
- 读取关于连接和关节的信息
- 改变物体的动力学特性
- 创建 GUI 滑块、按钮或在模拟中放置调试文本或线条
- 获取键盘和鼠标事件
- 创建和管理约束
- 日志记录
- 保存和加载状态
- 设置物理引擎参数
- 碰撞检测查询
- 可变形体和布
尚未实现的功能
- 所有与多自由度相关的功能
- 虚拟现实
- 插件
API 不稳定,可能会更改。
示例
use std::{thread, time::Duration};
use anyhow::Result;
use nalgebra::{Isometry3, Vector3};
use rubullet::*;
fn main() -> Result<()> {
let mut physics_client = PhysicsClient::connect(Mode::Gui)?;
physics_client.set_additional_search_path("../rubullet-sys/bullet3/libbullet3/data")?;
physics_client.set_gravity(Vector3::new(0.0, 0.0, -10.0));
let _plane_id = physics_client.load_urdf("plane.urdf", Default::default())?;
let cube_start_position = Isometry3::translation(0.0, 0.0, 1.0);
let box_id = physics_client.load_urdf(
"r2d2.urdf",
UrdfOptions {
base_transform: cube_start_position,
..Default::default()
},
)?;
for _ in 0..10000 {
physics_client.step_simulation()?;
thread::sleep(Duration::from_micros(4167));
}
let cube_transform = physics_client.get_base_transform(box_id)?;
println!("{}", cube_transform);
Ok(())
}
错误报告和合并请求
当前开发是作为 Marco Boneberger 的硕士学位论文的一部分进行的。因此,合并请求将在 2021 年 7 月 5 日之前不接受。我们将在此期间禁用合并请求,遗憾的是这也禁用了问题。如果您发现任何错误或有建议,请给维护者之一发送电子邮件。
许可证
鲁棒子弹受 MIT 许可证保护
依赖项
~16MB
~123K SLoC