使用命令ros2 run 包名 节点; RMW中间件报错

报错信息:

[ERROR] [1710409122.654417300] [rcl]: Error getting RMW implementation identifier / RMW implementation not installed (expected identifier of 'rmw_fastdds_cpp'), with error message 'failed to load shared library 'rmw_fastdds_cpp.dll' due to LoadLibrary error: 126, at C:\ci\ws\src\ros2\rcutils\src\shared_library.c:159, at C:\ci\ws\src\ros2\rmw_implementation\rmw_implementation\src\functions.cpp:67', exiting with 1., at C:\ci\ws\src\ros2\rcl\rcl\src\rcl\rmw_implementation_identifier_check.c:145

可能是由以下几个原因造成的:

  1. rmw_fastdds_cpp没有正确安装:确保您已经正确安装了包含rmw_fastdds_cpp的ROS 2包。这通常涉及到从源代码构建ROS 2,并且确保启用了FastDDS的支持。

  2. 环境变量未设置:确保ROS 2相关的环境变量(如RMW_IMPLEMENTATION)已经正确设置,并且指向了rmw_fastdds_cpp。

  3. 路径问题:确保rmw_fastdds_cpp.dll文件的路径已经添加到了系统的PATH环境变量中,或者该文件位于系统能够搜索到的目录(如Windows的System32目录或当前工作目录)。

  4. 依赖的DLL缺失:rmw_fastdds_cpp.dll可能依赖于其他DLL文件,这些文件可能没有安装或配置正确。使用工具(如Dependency Walker)检查rmw_fastdds_cpp.dll的依赖,并确保所有依赖项都已满足。

如果环境变量设置为未安装支持的 RMW 实现,则在仅安装一个实现时,将看到类似于以下内容的错误消息:

Expected RMW implementation identifier of 'rmw_connext_cpp' but instead found 'rmw_fastrtps_cpp', exiting with 102.

如果您安装了对多个 RMW 实现的支持,并且请求使用未安装的实现,您将看到类似于以下内容的内容:

Error getting RMW implementation identifier / RMW implementation not installed (expected identifier of 'rmw_connext_cpp'), exiting with 1.

如果发生这种情况,请仔细检查您的 ROS 2 安装是否包含对您在环境变量中指定的 RMW 实现的支持。

如果要在 RMW 实现之间切换,请验证 ROS 2 守护进程是否未与以前的 RMW 实现一起运行,以避免节点和命令行工具

首先在PowerShell层,输入:

$env:RMW_IMPLEMENTATION="rmw_connext_cpp"

ros2 run demo_nodes_cpp talker

ros2 node list

它将生成一个具有Fast RTPS 实现的守护进程:

21318 22.0  0.6 535896 55044 pts/8    Sl   16:14   0:00 /usr/bin/python3 /opt/ros/foxy/bin/_ros2_daemon --rmw-implementation rmw_fastrtps_cpp --ros-domain-id 0

即使您使用正确的 RMW 实现再次运行命令行工具,守护进程的 RMW 实现也不会更改,并且 ROS 2 命令行工具将失败

要解决此问题,只需停止守护进程:

ros2 daemon stop

并使用正确的 RMW 实现重新运行 ROS 2 命令行工具。

还有一点:

当你使用CMD时,用bat文件,

使用PowerShell时,用ps1文件。

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值