#ros2 #bindings #build #integration #ros #async #robot

r2r

简单易用,运行时无关,适用于ROS2的异步Rust绑定

22个版本

0.9.0 2024年5月17日
0.8.4 2024年3月19日
0.8.3 2024年1月14日
0.8.2 2023年12月11日
0.5.3 2021年9月20日

#18 in 过程宏

Download history 2281/week @ 2024-05-02 2861/week @ 2024-05-09 2375/week @ 2024-05-16 2435/week @ 2024-05-23 2348/week @ 2024-05-30 2064/week @ 2024-06-06 2213/week @ 2024-06-13 2103/week @ 2024-06-20 1335/week @ 2024-06-27 1720/week @ 2024-07-04 1949/week @ 2024-07-11 2355/week @ 2024-07-18 2677/week @ 2024-07-25 2369/week @ 2024-08-01 2490/week @ 2024-08-08 1700/week @ 2024-08-15

9,585 每月下载次数
3 crates 中使用

MIT AND Apache-2.0

4MB
69K SLoC

R2R - 简单易用,运行时无关,异步Rust绑定用于ROS2。

适用于ROS2的简单易用绑定,无需挂钩到ROS2构建基础设施 - cargo build 就足够了。通过调用c插口库创建方便的Rust类型。这通过依赖已生成的C代码来绕过ROS2 .msg/.idl管道。默认情况下,行为是构建绑定到RCL和当前源ros环境中可找到的所有消息类型,但可以更具体地构建以节省构建时间(见下文说明)。

当希望与colcon构建系统集成时,可以使用CMakeLists.txt文件来限制绑定生成的范围,仅包括特定的(idl)依赖项。这是通过额外的环境变量来完成的。这里提供了一个colcon集成的最小示例:https://github.com/m-dahl/r2r_minimal_node

此库在风格上与rclpy和rclcpp略有不同,因为它消除了所有同步回调,转而使用rust futures和streams。结合rust的await语法,这使得在单线程设置中(例如service.rs示例)使用ROS服务和动作变得非常愉快。该库故意不选择异步运行时 - 这意味着用户需要负责任何任务创建。这也限制了API到futures-rs提供的。

文档可在docs.rs上找到: https://docs.rs/r2r/latest/r2r

这些绑定是根据我的和其他人的需求自然编写的,因此请注意,API将会更改。到目前为止,我没有任何意图仅为了完整性而封装所有的RCL。然而,如果您需要一些特定的功能,请随时打开一个问题或PR!

如何使用

  1. 请确保您已安装libclang。(例如,在ubuntu上安装libclang-dev)
  2. 在Cargo.toml中依赖此包:r2r = "0.9.0"
  3. 在构建/运行之前,您需要设置ROS2安装。
  4. 如果您设置了工作区,绑定将自动重新构建。
  5. 如果您修改了现有的消息类型,请在下一次构建时强制重新编译Rust消息类型,请运行cargo clean -p r2r_msg_gen

如何使用此包的示例包含在examples/中

. /opt/ros/humble/setup.sh
cargo build
cargo run --example subscriber
# In other shell
ros2 topic pub /topic std_msgs/msg/String "data: 'Hello, world'"

关于构建时间的说明

由于默认行为是构建所有源消息类型,对于较大的工作区,构建时间可能会迅速成为问题。为了避免构建所有内容,可以使用环境变量IDL_PACKAGE_FILTER仅声明所需的消息包。为了方便起见,可以在.cargo/config.toml中设置此变量,例如https://github.com/m-dahl/r2r_minimal_node/blob/master/r2r_minimal_node/.cargo/config.toml。注意,嵌套消息类型没有自动依赖关系解析,因此需要显式包含所有使用的消息包。

什么工作?

  • 与ROS2 Dashing Eloquent Foxy Galactic Humble Iron
  • 构建Rust类型
  • 发布/订阅
  • 服务
  • 动作
  • 参数处理
  • 模拟时间(确保在构建时设置rosgraph_msgs以启用)
  • 在Linux、OSX和Windows上运行。

变更日志

[未发布]

[0.9.0] - 2024-05-17

[0.8.4] - 2024-03-19

[0.8.3] - 2024-01-14

[0.8.2] - 2023-12-11

[0.8.1] - 2023-11-30

[0.8.0] - 2023-10-05

[0.7.5] - 2023-06-27

[0.7.4] - 2023-06-26

[0.7.3] - 2023-06-20

  • 修复文档生成中的错误。

[0.7.2] - 2023-06-20

[0.7.1] - 2023-05-21

[0.7.0] - 2023-03-21

[0.6.7] - 2023-02-20

TODO

  • 文档不足。 (目前,请参阅示例。)

授权

除非源文件中指定了其他许可证,否则所有代码均受 MIT 许可证的约束。此存储库中包含 rclrust (https://github.com/rclrust/rclrust) 软件包的一些部分,并受 Apache 2.0 许可证的约束。


rosin_logo

由 ROSIN 支持的 - ROS-Industrial 质量保证机器人软件组件。更多信息: rosin-project.eu

eu_flag

该项目已从欧盟的 Horizon 2020 研究和创新计划获得资金,资助协议号 732287。

依赖项

~13MB
~232K SLoC