部署ROS2 Bouncy版本时遇到的一些问题

这是我在Mac上安装ROS2时遇到的一些问题及解决办法,寻找问题的思路就是多去github上耐心看issue

环境

  • 操作系统:macOS “High Sierra” 10.13.6
  • 安装方式:二进制包安装
  • ROS2版本:Bouncy
  • 安装参考教程:https://index.ros.org/doc/ros2/OSX-Install-Binary/

问题1

问题描述:

安装完成后,运行sudo ros2 run demo_nodes_cpp talker后提示:

pkg_resources.DistributionNotFound: The ‘ros2cli==0.5.4’ distribution was not found and is required by the application

运行. ~/ros2_install/ros2-osx/setup.zsh. ~/ros2_install/ros2-osx/local_setup.zsh后提示:

[connext_cmake_module] Warning: The location at which Connext was found when the workspace was built [[/Applications/rti_connext_dds-5.3.1]] does not point to a valid directory, and the NDDSHOME environment variable has not been set. Support for Connext will not be available.
[opensplice_cmake_module] Warning: The location at which OpenSplice was found when the workspace was built [[/Users/osrf/opensplice/HDE/x86_64.darwin10_clang]] does not point to a valid directory, and the OSPL_HOME environment variable has not been set. Support for OpenSplice will not be available.

解决办法: 去掉sudo后,不再显示ros2cli这个错误,不过显示了另一串特别长的错误:

最前边是:

Failed to load entry point ‘launch’: No module named ‘rclpy._rclpy’ _

Failed to load entry point ‘echo’: No module named ‘rclpy._rclpy’

>>> [rcutils|error_handling.c:155] rcutils_set_error_state()

This error state is being overwritten: failed to load shared library of rmw implementation…

with this new error message: failed to load library of rmw implementation…

rcutils_reset_error() should be called after error handling to avoid this.

<<<

解决办法: 对于ros2cli的问题,是因为没有运行setup.zsh的原因,由于我用的是zsh,所以必须运行setup.zsh才行,之后虽然有Warning,但是ros2cli的问题不存在了,每次新开一个终端都需要运行这个setup.zsh,之后应该把它写在.zshrc中。

解决办法: 对于rcutils_set_error_state()的问题,我发现可能是我之前安装辅助软件不完整,重新参考官方文档:https://index.ros.org/doc/ros2/OSX-Install-Binary/ 将所有相关的软件都安装了一遍,之后就不出现这个错误了。

另外,我最初时是执行过这个setup.zsh文件的,但是之所以没效果,那是因为我对点命令还不熟悉,官网上给出的是. ~/ros2_install/ros2-osx/setup.zsh,但是我可能是把点丢了,导致环境没有配置成功。经过学习,原来点命令就是source命令,可以等效通过执行source ~/ros2_install/ros2-osx/setup.zsh来实现。

问题2

问题描述: 将setup.zsh加入到.zshrc中以后,每次启动终端都会提示上边第二个现象:[connext_cmake_module][opensplice_cmake_module],如何解决?

解决办法: 这个问题是由于我们使用的ros2版本是Bouncy,这个版本开始,默认在二进制包中将三种RWM实现均编译进去,即rmw_fastrtps_cpprmw_connext_cpprmw_opensplice_cpp,RWM是指ros middleware interfaces,这是ROS2依赖的DDS层的实现接口(具体我还说不太清),这三个模块默认ROS2只包含第一个fastrtps,另外两个需要自己额外安装,所以当我们没有安装这两个DDS时,就会在初始化环境时告诉我们RWM是有的,但找不到对应的模块软件。我认为可以忽略这个问题。

有关于这块的知识,官网https://index.ros.org/doc/ros2/DDS-and-ROS-middleware-implementations/ 描述很详细。

问题3

问题描述:

输入:ros2 run demo_nodes_py listener

提示:

ModuleNotFoundError: No module named ‘rclpy._rclpy’

无法运行,同时对于其他Python写的nodes都无法运行。

解决办法:

这个问题的原因是Python版本的问题,我安装的ros2版本是18年7月发布的release-bouncy分支https://github.com/ros2/ros2/releases/tag/release-bouncy,这个版本要求Python应该是3.7,我检查了我的版本,之前是3.6版本的。

输入

brew upgrade python

将Python升级到3.7版本后,问题解决。

最初的原因应该是当时直接使用brew install python,然后brew检查到我安装过Python,就直接跳过了,而我当时安装的版本是3.6,从而导致了问题。

升级之后,可能会提示有些包没有安装或版本过低,按照要求安装或更新就可以。

参考:

https://github.com/ros2/ros2/issues/546

https://github.com/ros2/ros2/issues/526

你可能感兴趣的:(遇到的问题,ROS)