#bindings #controllers #robot

webots

Webots的Rust绑定

8个版本 (重大更新)

0.8.0 2023年7月4日
0.7.0 2023年1月29日
0.6.0 2022年11月27日
0.5.0 2022年9月27日
0.1.3 2021年12月12日

#106 in 仿真

每月26次下载

MIT 许可证

10MB
209K SLoC

C++ 160K SLoC // 0.1% comments C 39K SLoC // 0.1% comments JavaScript 3.5K SLoC // 0.0% comments Python 3.5K SLoC // 0.2% comments Rust 1K SLoC SWIG 889 SLoC // 0.1% comments Objective-C 820 SLoC Shell 91 SLoC // 0.1% comments Batch 22 SLoC

Webots控制器在Rust中

状态:实验性

这是一个参考项目,展示了如何使用Rust编程语言为Webots机器人仿真器构建控制器。

入门

  1. 下载并安装适用于您的操作系统的Webots
  2. 如果您还没有安装,请安装Rust
  3. 递归地(带有子模块)克隆此仓库
  4. 运行 make 来编译Rust控制器并将其放置到正确的位置
  5. 在Webots中打开 sample_project/worlds/my_first_simulation.wbt 文件
  6. 运行仿真

您应该在Webots控制台中看到 "Rust控制器已启动"。

要修改控制器,您可以编辑 src/main.rs 然后再次运行 make。您可能需要重置仿真(文件 > 重置仿真)或重启Webots才能使用更新的代码。

这是如何工作的

在编译时,我使用 bindgen 将Webots C头文件列表转换为Rust结构和类型。这些类型在基于Rust的控制器代码和执行与仿真引擎交互的艰难工作的Webots C库之间形成一个桥梁。有关更多详细信息,请参阅 build.rsbindings.rs

贡献

欢迎改进。如果您有任何想法,请打开一个问题,以便我们可以讨论它。

待办事项

  • 提高API安全性。虽然可以从Rust调用Webots C函数,但由于使用了原始指针,许多函数都标记为 unsafe。我已经开始将其中一些封装在Rust函数中(请参阅 lib.rs),但鉴于API的大小,这种方法扩展性不佳。
  • 更多示例控制器
  • 以某种方式解决“不是FFI安全”的警告

许可证

MIT

依赖项