3 个版本

0.1.0-alpha-32021年6月9日
0.1.0-alpha-22021年3月13日
0.1.0-alpha2021年3月3日

#121 in 模拟


franka-interface 中使用

MIT 许可证

18MB
769K SLoC

C++ 721K SLoC // 0.0% comments C 33K SLoC // 0.1% comments Rust 7.5K SLoC // 0.0% comments Lua 4.5K SLoC // 0.1% comments Objective-C 1K SLoC // 0.1% comments Python 659 SLoC // 0.1% comments GLSL 526 SLoC // 0.0% comments Shell 155 SLoC // 0.2% comments Batch 114 SLoC Automake 88 SLoC

GitHub Workflow Status crates.io crates.io crates.io docs.rs

鲁棒子弹

鲁棒子弹是 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