故障排除#
设置问题#
CUDA 相关错误#
安装 CUDA 时,可能会因版本冲突而出现错误.要解决这些类型的错误,请尝试以下方法之一:
-
取消保留所有与 CUDA 相关的库,然后重新运行设置脚本.
sudo apt-mark unhold \ "cuda*" \ "libcudnn*" \ "libnvinfer*" \ "libnvonnxparsers*" \ "libnvparsers*" \ "tensorrt*" \ "nvidia*" ./setup-dev-env.sh
-
卸载所有与 CUDA 相关的库,然后重新运行安装脚本.
sudo apt purge \ "cuda*" \ "libcudnn*" \ "libnvinfer*" \ "libnvonnxparsers*" \ "libnvparsers*" \ "tensorrt*" \ "nvidia*" sudo apt autoremove ./setup-dev-env.sh
警告
请注意,这可能会破坏您的系统并谨慎运行.
-
在不安装 CUDA 相关库的情况下运行安装脚本.
./setup-dev-env.sh --no-nvidia
警告
请注意,Autoware Universe 中的某些组件需要 CUDA,目前仅支持 env file 中的 CUDA 版本. Autoware 可能适用于其他 CUDA 版本,但这些版本不受支持,并且无法保证功能.
构建问题#
内存不足#
构建 Autoware 需要大量内存,如果在构建过程中内存耗尽,您的计算机可能会冻结或崩溃.为避免此问题,应配置 16-32GB 的交换空间.
# Optional: Check the current swapfile
free -h
# Remove the current swapfile
sudo swapoff /swapfile
sudo rm /swapfile
# Create a new swapfile
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Optional: Check if the change is reflected
free -h
有关更详细的配置步骤以及交换的说明,请参阅 Digital Ocean 的 如何在 Ubuntu 20.04 上添加交换空间 教程
如果计算机中的 CPU 内核过多(超过 64 个),则可能需要更大的内存. 此处的解决方法是在构建时限制作业编号.
MAKEFLAGS="-j4" colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
您可以根据您的系统将 -j4 调整为任意数字.
有关更多详细信息,请参见 GNU make 手册页.
通过减少并行构建的包的数量,您还可以减少使用的内存量.
在下面的示例中,并行构建的包数设置为 1, make 使用的作业数限制为 1.
MAKEFLAGS="-j1" colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --parallel-workers 1
注意
通过减少并行构建的包的数量和 make 使用的作业数量,你可以减少内存使用.
但是,这也意味着构建过程需要更长的时间.
使用最新版本的 Autoware 时出错#
如果您使用的是最新版本的 Autoware,则可能会因软件过时或内部版本文件过时而出现问题.
要解决这些类型的问题,请首先尝试清理构建构件并重新构建:
rm -rf build/ install/ log/
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
如果错误未解决,请删除 src/ 并根据安装类型 (Docker / 来源).
警告
在删除 src/ 之前,请确认您的本地环境中没有要保留的修改!
如果在尝试上述步骤后错误仍然存在,请删除整个工作区,再次克隆存储库,然后重新启动安装过程.
rm -rf autoware/
git clone https://github.com/autowarefoundation/autoware.git
使用固定版本的 Autoware 时出错#
原则上,使用固定版本时不应出现错误.也就是说,可能的原因包括:
- ROS 2 已更新,其中包含重大更改.
- 要确认,请检查 ROS Discourse 上的 Packaging and Release Management 标签.
- 您的本地环境已损坏.
- 确认您的
.bashrc文件、环境变量和库版本.
- 确认您的
除了上面列出的原因外,关于使用固定版本还有两个常见的误解.
-
您仅对
autowarefoundation/autoware使用了修复版本. 必须指定.repos文件中的所有存储库版本,才能使用完全修复的版本. -
更改
autowarefoundation/autoware的分支后,您没有更新工作区. 更改autowarefoundation/autoware的分支不会影响src/下的文件.您必须运行vcs import命令来更新它们.
构建 python 包时报错#
在构建过程中,可能会出现以下问题
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: `0.23ubuntu1`
该错误是由于 66.0.0 和 67.5.0 之间的版本, setuptools 强制将 python 包强制为
PEP-440 一致性.
从 67.5.1 版本开始,setuptools 有一个 fallback,可以再次使用旧的软件包.
解决方案是使用以下命令将 setuptools 更新到最新版本
pip install --upgrade setuptools
Docker/rocker 问题#
如果在使用 Docker 或 rocker 运行 Autoware 时出现任何错误,请首先通过运行以下命令确认您的 Docker 安装是否正常工作:
docker run --rm -it hello-world
docker run --rm -it ubuntu:latest
接下来,确认您能够访问存储在 GitHub Packages 网站上的基本 Autoware 映像
docker run --rm -it ghcr.io/autowarefoundation/autoware-universe:latest
运行时问题#
性能相关问题#
症状:
- Autoware 的运行速度比预期的要慢
- 消息在 RViz2 中显示较晚
- 点云滞后
- 相机图像滞后
- RViz2 上的点云或标记闪烁
- 当多个订阅者使用相同的发布者时,消息速率会下降
如果您有任何这些症状,请到 性能故障排除 页面.
运行 Planning Simulator 时不显示 Map#
运行 Planning Simulator 时,地图未显示在 RViz 中的最常见原因是 未在启动命令中正确指定地图路径.您可以通过在日志中搜索 Could not find lanelet map under {path-to-map-dir}/lanelet2_map.osm 错误来确认是否是这种情况.
另一个可能的原因是由于 DDS 性能不佳,地图加载需要很长时间.为此,请访问 性能故障排除 页面.
Dead 进程问题#
某些模块可能无法在运行时正确启动,并且您可能会在终端中看到 process has died .
您可以使用 gdb 工具查找问题发生的位置.
调试 在 autoware 工作区下构建要分析的模块
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug --packages-up-to <the modules you wish to analyze> --catkin-skip-building-tests --symlink-install
在此状态下,当您再次运行 autoware 时出现 dead 进程时,将创建一个核心文件. 请删除核心转储文件的大小限制.
ulimit -c unlimited
将核心转储文件重命名为 core.<PID>.
echo core | sudo tee /proc/sys/kernel/core_pattern
echo -n 1 | sudo tee /proc/sys/kernel/core_uses_pid
再次启动 autoware.当 Dead 进程发生时,将创建一个核心文件.
ll -ht 可以帮助你检查它是否被创建.
调用 gdb 工具.
gdb <executable file> <core file>
#You can find the `<executable file>` in the error message.
bt 回溯进程终止的回调堆栈.
f <帧编号> 显示帧的详细信息,l 显示代码.