安装故障诊断 [Alyssa@6086]

安装故障排除技术按其应用的平台排序。 [小鱼@6087]

综述

通用故障诊断工具技术适用于所有平台。

启用多播

为了通过DDS成功通信,使用的网络接口必须启用多播。我们在过去的经验中已经看到,默认情况下使用回环网卡(Loopback adaptor)时,(在Ubuntu或OSX上) 不一定启用此功能。见 issue来源 或 ` 在ros-answers的讨

在1号终端: [小鱼@6093]

ros2 multicast receive

在2号终端: [小鱼@6094]

ros2 multicast send

如果第一个命令未返回类似于以下内容的响应:

Received from xx.xxx.xxx.xx:43751: 'Hello World!'

然后,您需要更新防火墙配置,以允许使用 ufw 进行多播。

sudo ufw allow in proto udp to 224.0.0.0/4
sudo ufw allow in proto udp from 224.0.0.0/4

您可以使用: 代码: ifconfig 工具检查是否为您的网络接口启用了多播标志,并在标志部分查找: 代码: MULITCAST :

eno1: flags=4163<...,MULTICAST>
   ...

导入失败,系统上没有库

有时无法导入 rclpy ,因为找不到预期的C扩展库。如果是这样,请将目录中存在的库与错误消息中提到的库进行比较。假设存在一个名称相似的文件 (前缀与 _rclpy. 相同,后缀与 .so 相同,但Python版本/体系结构不同) 您使用的Python解释器与用于构建C扩展的Python解释器不同。确保使用与构建二进制文件相同的Python解释器。 [待校准@6099]

例如,这种不匹配可能会在操作系统更新后出现。然后,重建工作区可以解决此问题。

Linux [待校准@6101]

内部编译器错误 [待校准@6102]

如果您在尝试在内存受限的平台 (如树莓派形式发票) 上进行com形式发票时遇到ICE,您可能希望构建单线程 (在构建调用前加上 MAKEFLAGS=-j1 )。 [待校准@6103]

内存不足 [待校准@6104]

当前形式的 ros1_bridge 需要4Gb的可用内存来编译。如果你't have that amount of RAM available it's建议使用 COLCON_IGNORE 文件夹中跳过汇编。 [待校准@6105]

多主机干扰 [待校准@6106]

如果您在同一网络上运行多个实例,则可能会受到干扰。为避免这种情况,您可以将环境变量 ROS_DOMAIN_ID 设置为不同的整数,默认值为零。这将为您的系统定义DDS域账号。 [待校准@6107]

异常采购设置.bash [待校准@6108]

如果遇到异常时源文件环境后从源文件,尝试升级 colcon 相关包使用 [待校准@6109]

colcon version-check  # check if newer versions available
sudo apt install python3-colcon* --only-upgrade  # upgrade installed colcon packages to latest version

macOS [待校准@6110]

使用 pyenv 时的分段错误 [待校准@6111]

pyenv seems to default to building Python with .a files, but that causes issues with rclpy, so it's recommended to build Python with Frameworks enabled on macOS when using pyenv: [待校准@6112]

https://github.com/pyenv/pyenv/wiki# 如何在os-x上构建带有帧支持的cpython [待校准@6113]

未加载库; 未找到图像 [待校准@6114]

如果您在运行时 (运行测试或运行节点) 看到库加载问题,例如: [待校准@6115]

ImportError: dlopen(.../ros2_<distro>/ros2-osx/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-darwin.so, 2): Library not loaded: @rpath/librcl_interfaces__rosidl_typesupport_c.dylib
  Referenced from: .../ros2_<distro>/ros2-osx/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-darwin.so
  Reason: image not found

然后,您可能启用了系统完整性保护。按照 these instructions _ 禁用系统完整性保护 (SIP)。 [待校准@6116]

Qt构建错误: “未知类型名称'Q_ENUM'” [待校准@6117]

如果您看到与Qt相关的构建错误,例如: [待校准@6118]

In file included from /usr/local/opt/qt/lib/QtGui.framework/Headers/qguiapplication.h:46:
/usr/local/opt/qt/lib/QtGui.framework/Headers/qinputmethod.h:87:5: error:
      unknown type name 'Q_ENUM'
    Q_ENUM(Action)
    ^

你可能使用qt4而不是qt5: 看到https://github.com/ros2/问题/441 [待校准@6119]

在使用自制软件安装tcl (以及libjpeg、libtiff和libpng) 时缺少符号 [待校准@6120]

如果您安装了opencv,则可能会得到以下信息: [待校准@6121]

dyld: Symbol not found: __cg_jpeg_resync_to_restart
  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /usr/local/lib/libJPEG.dylib
 in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
/bin/sh: line 1: 25274 Trace/BPT trap: 5       /usr/local/bin/cmake

如果是这样,要构建,您必须执行以下操作: [待校准@6122]

$ brew unlink libpng libtiff libjpeg

但这将破坏opencv,因此您还需要对其进行更新以继续工作: [待校准@6123]

$ sudo install_name_tool -change /usr/local/lib/libjpeg.8.dylib /usr/local/opt/jpeg/lib/libjpeg.8.dylib /usr/local/lib/libopencv_highgui.2.4.dylib
$ sudo install_name_tool -change /usr/local/lib/libpng16.16.dylib /usr/local/opt/libpng/lib/libpng16.16.dylib /usr/local/lib/libopencv_highgui.2.4.dylib
$ sudo install_name_tool -change /usr/local/lib/libtiff.5.dylib /usr/local/opt/libtiff/lib/libtiff.5.dylib /usr/local/lib/libopencv_highgui.2.4.dylib
$ sudo install_name_tool -change /usr/local/lib/libjpeg.8.dylib /usr/local/opt/jpeg/lib/libjpeg.8.dylib /usr/local/Cellar/libtiff/4.0.4/lib/libtiff.5.dylib

第一个命令是必要的,以避免在/usr/local/lib中获取版本而针对系统libjpeg (等) 构建的内容。其他人正在更新自制软件构建的东西,这样他们就可以找到libjpeg的版本 (等等),而不用在/usr/local/lib中找到它们。 [待校准@6124]

Unix-select错误: 工具 xcodebuild 需要unix,但活动开发人员目录是一个命令行实例 [待校准@6125]

如果您最近安装了Xcode,则可能会遇到以下错误: [待校准@6126]

Xcode: xcode-select: error: tool 'xcodebuild' requires Xcode,
but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

要解决此错误,您需要: [待校准@6127]

  1. 仔细检查您是否已安装命令行工具: [待校准@6128]

$ xcode-select --install
  1. 通过在终端中输入: [待校准@6129]

$ sudo xcodebuild -license accept
  1. 确保Xcode应用程序位于 /Applications 目录中 (不是 “/Users/{user}/applications'”) [待校准@6130]

  2. 使用以下命令将 xcode-select 指向Xcode app开发者目录: [待校准@6131]

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

qt_gui_cpp错误: SIP绑定生成器不可用 [待校准@6132]

构建qt_gui_cpp时,可能会出现如下错误: [待校准@6133]

--- stderr: qt_gui_cpp

CMake Error at src/CMakeLists.txt:10 (message):
  No Python binding generator found.

---
Failed   <<< qt_gui_cpp [ Exited with code 1 ]

要解决此问题,请按照 these steps 安装RQt的依赖项。 [待校准@6134]

rosdep安装错误 “自制软件: 无法检测到 [qt5] 的成功安装” [待校准@6135]

在遵循 Creating a workspace 教程时,您可能会遇到以下错误,说明 rosdep 安装qt5失败。 [待校准@6136]

$ rosdep install -i --from-path src --rosdistro foxy -y
executing command [brew install qt5]
Warning: qt 5.15.0 is already installed and up-to-date
To reinstall 5.15.0, run `brew reinstall qt`
ERROR: the following rosdeps failed to install
  homebrew: Failed to detect successful installation of [qt5]

此错误似乎源于 linking issue ,可以通过运行以下命令来解决。 [待校准@6137]

$ cd /usr/local/Cellar
$ sudo ln -s qt qt5

运行 rosdep 命令现在应该正常执行: [待校准@6138]

$ rosdep install -i --from-path src --rosdistro foxy -y
#All required rosdeps installed successfully

Windows [待校准@6139]

即使系统上存在库,导入也失败 [待校准@6140]

有时,由于系统中缺少一些dll,因此无法导入 rclpy 。如果,确保安装所有依赖项所列 "Installing prerequisites" 的 installation instructions )。 [待校准@6141]

如果从二进制文件安装,则可能需要更新依赖项: 它们必须与用于构建二进制文件的版本相同。 [待校准@6142]

如果您仍然有问题,您可以使用 Dependencies 工具来确定您的系统中缺少哪些依赖项。使用工具加载相应的 .pyd 文件,它应该报告不可用的 DLL 模块。在执行该工具之前,请确保当前工作区为源文件d,否则将存在未解析的ROS DLL文件。使用此信息可安装其他依赖项或根据需要调整路径。 [待校准@6143]

CMake错误设置修改时间 [待校准@6144]

如果你遇到CMake错误 file INSTALL cannot set modification time on ... 安装文件可能是防病毒软件或Windows Defender干扰生成。例如,对于Windows卫士,您可以列出要排除的工作区位置,以防止其扫描这些文件。 [待校准@6145]

260字符路径限制 [待校准@6146]

The input line is too long.
The syntax of the command is incorrect.

根据您的目录层次结构,从源文件或您自己的库构建ROS 2时,您可能会看到路径长度限制错误。 [待校准@6147]

允许更深的路径长度: [待校准@6148]

运行 regedit.exe ,导航到 “计算机 HKEY_LOCAL_MACHINE 系统 当前控制集 控制 文件系统”,并将 LongPathsEnabled 设置为0x00000001 (1)。 [待校准@6149]

点击窗口键,键入 Edit Group Policy 。导航到本地计算机策略> 计算机配置> 管理模板> 系统> 文件系统。右击 Enable Win32 long paths ,点击编辑。在对话框中,选择Enabled,然后单击OK。 [待校准@6150]

关闭并打开终端以重置环境,然后再次尝试构建。 [待校准@6151]

CMake包找不到asio、tinyxml2、tinyxml、eigen或log4cxx [待校准@6152]

我们已经看到,有时用于 asiotinyxml2 等的巧克力包不会添加重要的注册表项,CMake在构建ROS 2时将无法找到它们。我们还不能确定根本原因,但是卸载巧克力包 (如果第一次卸载失败,用 -n ),然后重新安装它们将解决问题。 [待校准@6153]

patch.exe打开一个新的命令窗口并要求管理员 [待校准@6154]

这也将导致需要使用补丁的包的构建失败,即使您允许它使用管理员权限。 [待校准@6155]

  • [需手动修复的语法]``choco uninstall patch; colcon build --cmake-clean-cache`` -- 这是 GNU Patch For Windows package 中的一只虫子。如果未安装此包,则构建过程将使用随git分发的补丁版本。 [待校准@6156]

无法加载快速RTPS共享库 [待校准@6157]

快速RTPS需要 msvcr20.dll ,它是 “Visual Studio 2013的Visual c re可再发行包” 的一部分。尽管它通常默认安装在Windows 10中,但我们知道某些类似Windows 10的版本默认情况下没有安装它 (例如: Windows Server 2019)。如果你没有安装它,你可以从 here 下载。 [待校准@6158]

特定于二进制安装 [待校准@6159]

  • 如果您的示例由于缺少dll而没有启动,请验证来自外部依赖项 (如OpenCV) 的所有库都位于您的 PATH 变量内。 [待校准@6160]

  • 如果您忘记从终端调用 local_setup.bat 文件,例程程序很可能会立即崩溃。 [待校准@6161]