Skip to content

故障排除#

设置问题#

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 已更新,其中包含重大更改.
  • 您的本地环境已损坏.
    • 确认您的 .bashrc 文件、环境变量和库版本.

除了上面列出的原因外,关于使用固定版本还有两个常见的误解.

  1. 您仅对 autowarefoundation/autoware 使用了修复版本. 必须指定 .repos 文件中的所有存储库版本,才能使用完全修复的版本.

  2. 更改 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 显示代码.