ROS 2 RMW Zenoh实施指南
ROS 2 RMW Zenoh是一款基于Zenoh中间件并利用zenoh-c绑定编写的RMW实现。此文档旨在引导用户安装、配置并有效使用该库于ROS 2环境中。
安装指南
-
初始化工作空间:
mkdir -p ~/ws_rmw_zenoh/src && cd ~/ws_rmw_zenoh/src git clone https://github.com/ros2/rmw_zenoh.git cd ~/ws_rmw_zenoh
-
依赖安装: 替换
<DISTRO>
为您的ROS 2发行版,执行以下命令来安装依赖。rosdep install --from-paths src --ignore-src --rosdistro <DISTRO> -y source /opt/ros/<DISTRO>/setup.bash
-
构建工作空间: 使用
colcon
以释放模式构建。colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
使用说明
设置环境
在使用之前,确保源用了刚构建的工作区。
source install/setup.bash
启动Zenoh路由器(临时步骤)
目前,需要手动启动Zenoh路由器。
ros2 run rmw_zenoh_cpp rmw_zenohd
终止其他RMW的ROS 2守护进程
避免因使用不同RMW导致的问题。
pkill -9 -f ros && ros2 daemon stop
示例运行
运行Talker和Listener节点
设置环境变量指定使用rmw_zenoh_cpp,并分别运行Talker与Listener节点。
export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run demo_nodes_cpp talker &
ros2 run demo_nodes_cpp listener
此时,Listener应能接收到来自Talker的消息。
配置详情
Zenoh路由器检查
通过ZENOH_ROUTER_CHECK_ATTEMPTS
环境变量控制连接行为:
- 不设置或设为0,将无限等待路由器连接。
- 小于0,跳过路由器检查。
- 大于0,按设定次数尝试连接,每次尝试间隔1秒。
自定义配置文件
若需自定义Zenoh路由器和会话配置,可设置:
- 对于路由器:使用
ZENOH_ROUTER_CONFIG_URI
指向自定义配置。 - 对于会话:使用
ZENOH_SESSION_CONFIG_URI
。 例如,设置自定义路由器配置路径:
export ZENOH_ROUTER_CONFIG_URI=$HOME/MY_ZENOH_ROUTER_CONFIG.json5
跨主机连接
修改路由器配置,添加远程路由器端点,如:
{
"connect": {
"endpoints": ["tcp/192.168.1.1:7447"]
}
}
确保所有参与通信的路由器间相互配置。
日志配置
通过RUST_LOG
环境变量调整Zenoh的日志级别,例:
RUST_LOG=zenoh=debug
查看更多日志配置信息,请参考env_logger库文档。
本指南涵盖了ROS 2 RMW Zenoh的基本操作流程,从安装到运行示例应用,以及配置和日志管理的基础知识,旨在帮助用户快速上手。对于更深入的开发或特定场景的应用,建议详细阅读官方设计文档和源代码注释。