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次下载
10MB
209K SLoC
Webots控制器在Rust中
状态:实验性
这是一个参考项目,展示了如何使用Rust编程语言为Webots机器人仿真器构建控制器。
入门
- 下载并安装适用于您的操作系统的Webots
- 如果您还没有安装,请安装Rust
- 递归地(带有子模块)克隆此仓库
- 运行
make
来编译Rust控制器并将其放置到正确的位置 - 在Webots中打开
sample_project/worlds/my_first_simulation.wbt
文件 - 运行仿真
您应该在Webots控制台中看到 "Rust控制器已启动"。
要修改控制器,您可以编辑 src/main.rs
然后再次运行 make
。您可能需要重置仿真(文件 > 重置仿真)或重启Webots才能使用更新的代码。
这是如何工作的
在编译时,我使用 bindgen 将Webots C头文件列表转换为Rust结构和类型。这些类型在基于Rust的控制器代码和执行与仿真引擎交互的艰难工作的Webots C库之间形成一个桥梁。有关更多详细信息,请参阅 build.rs
和 bindings.rs
。
贡献
欢迎改进。如果您有任何想法,请打开一个问题,以便我们可以讨论它。
待办事项
- 提高API安全性。虽然可以从Rust调用Webots C函数,但由于使用了原始指针,许多函数都标记为
unsafe
。我已经开始将其中一些封装在Rust函数中(请参阅lib.rs
),但鉴于API的大小,这种方法扩展性不佳。 - 更多示例控制器
- 以某种方式解决“不是FFI安全”的警告
许可证
MIT