安装故障排除 [371]
安装故障排除技巧根据适用的平台进行了分类。 [372]
通用 [374]
通用故障排除技巧适用于所有平台。 [375]
启用多播 [376]
为了通过DDS成功通信,使用的网络接口必须启用组播功能。在过去的经验中,我们发现当使用环回适配器(在Ubuntu或OSX上)时,默认情况下可能未启用组播功能。请参阅 原始问题 或 ros-answers 上的讨论。您可以使用ROS 2工具验证您当前的设置是否允许组播: [377]
在终端1中: [378]
ros2 multicast receive
在终端2中: [379]
ros2 multicast send
如果第一个命令没有返回类似以下内容的响应 [380]
Received from xx.xxx.xxx.xx:43751: 'Hello World!'
如果需要使用多播,您需要更新防火墙配置以允许多播,使用 ufw 命令。 [381]
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
工具检查您的网络接口是否启用了多播标志,在 flags 部分查找 MULTICAST
: [382]
eno1: flags=4163<...,MULTICAST>
...
Linux [366]
macOS [368]
使用``pyenv``时出现分段错误 [394]
pyenv``似乎默认使用
.a``文件构建Python,但这会导致``rclpy``出现问题,因此建议在使用``pyenv``时在macOS上启用Frameworks构建Python: [395]
https://github.com/pyenv/pyenv/wiki#how-to-build-cpython-with-framework-support-on-os-x [396]
无法加载库文件;找不到图像 [397]
如果您在运行时(无论是运行测试还是运行节点)遇到库加载问题,例如以下情况: [398]
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
那么您可能已启用系统完整性保护(System Integrity Protection)。按照 这些说明 禁用系统完整性保护(SIP)。 [399]
Qt构建错误:unknown type name 'Q_ENUM'
[400]
如果您遇到与Qt相关的构建错误,例如: [401]
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/ros2/issues/441 [402]
当使用Homebrew安装opencv(因此也安装了libjpeg、libtiff和libpng)时出现缺少符号的情况 [403]
如果您已安装opencv,可能会出现以下情况: [404]
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
如果是这样,要构建,你需要执行以下步骤: [405]
$ brew unlink libpng libtiff libjpeg
但这将会破坏OpenCV,所以你还需要更新它以继续工作: [406]
$ 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
第一个命令是为了避免使用系统libjpeg(等等)构建的内容获取到/usr/local/lib中的版本。其他命令是为了更新由Homebrew构建的内容,使其能够找到libjpeg(等等)的版本,而不必将它们放在/usr/local/lib中。 [407]
Xcode-select错误:工具``xcodebuild``需要Xcode,但活动开发人员目录是一个命令行实例 [408]
如果您最近安装了Xcode,可能会遇到此错误: [409]
Xcode: xcode-select: error: tool 'xcodebuild' requires Xcode,
but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
要解决此错误,您需要执行以下操作: [410]
请仔细检查是否安装了命令行工具: [411]
$ xcode-select --install
在终端中输入以下命令接受Xcode的条款和条件: [412]
$ sudo xcodebuild -license accept
确保 Xcode 应用程序位于
/Applications
目录下(而不是/Users/{user}/Applications
) [413]使用以下命令将
xcode-select
指向 Xcode 应用程序的开发者目录: [414]
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
qt_gui_cpp 错误:SIP 绑定生成器不可用 [415]
构建 qt_gui_cpp 时可能会出现以下类似的错误: [416]
--- 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 ]
rosdep 安装错误 homebrew: Failed to detect successful installation of [qt5]
[418]
在遵循 创建工作空间 教程时,您可能会遇到以下错误,指出 rosdep
无法安装 Qt5。 [419]
$ rosdep install -i --from-path src --rosdistro humble -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]
此错误似乎源于 链接问题,可以通过运行以下命令来解决。 [420]
$ cd /usr/local/Cellar
$ sudo ln -s qt qt5
现在执行 rosdep
命令应该正常运行: [421]
$ rosdep install -i --from-path src --rosdistro humble -y
#All required rosdeps installed successfully
Windows [369]
即使系统中存在该库,导入仍然失败 [422]
有时候由于系统上缺少某些 DLL 文件,导致无法导入 rclpy
。如果出现这种情况,请确保安装了 安装指南 中“安装先决条件”部分列出的所有依赖项。 [423]
如果您正在使用二进制文件进行安装,则可能需要更新您的依赖项:它们必须与用于构建二进制文件的版本相同。 [424]
如果您仍然遇到问题,您可以使用 Dependencies 工具来确定您的系统缺少哪些依赖项。使用该工具加载相应的 .pyd
文件,它将报告不可用的 DLL
模块。在执行工具之前,请确保当前的工作空间已被激活,否则将出现未解决的 ROS DLL 文件。根据这些信息安装额外的依赖项或根据需要调整您的路径。 [425]
CMake 错误设置修改时间 [426]
如果在安装文件时遇到 CMake 错误 file INSTALL cannot set modification time on ...
,很可能是由于杀毒软件或 Windows Defender 干扰了构建过程。例如,对于 Windows Defender,您可以将工作空间位置列入排除列表,以防止其扫描这些文件。 [427]
260 字符路径限制 [428]
The input line is too long.
The syntax of the command is incorrect.
根据您的目录层次结构,在从源代码构建ROS 2或您自己的库时,可能会出现路径长度限制错误。 [429]
要允许更深的路径长度: [430]
运行 regedit.exe
,导航至 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
,并将 LongPathsEnabled
设置为 0x00000001(1)。 [431]
按下 Windows 键并输入 Edit Group Policy
。导航至 Local Computer Policy > Computer Configuration > Administrative Templates > System > Filesystem。右键单击 Enable Win32 long paths
,点击编辑。在对话框中,选择已启用并点击确定。 [432]
关闭并重新打开终端以重置环境,并尝试重新构建。 [433]
CMake软件包无法找到asio、tinyxml2、tinyxml或eigen。 [434]
我们发现有时候``asio``、tinyxml2``等的chocolatey软件包没有添加重要的注册表项,导致在构建ROS 2时CMake无法找到它们。我们还没有找到根本原因,但是卸载chocolatey软件包(如果首次卸载失败,则使用
-n``参数),然后重新安装它们可以解决这个问题。 [435]
patch.exe会打开一个新的命令窗口并要求管理员权限。 [436]
即使您允许使用管理员权限,这也会导致需要使用补丁的软件包构建失败。 [437]
choco uninstall patch; colcon build --cmake-clean-cache
- 这是 GNU Patch For Windows package 中的一个错误。如果未安装此软件包,构建过程将使用与 git 分发的 Patch 版本。 [438]