Ubuntu 22.04实战Autoware.universe环境搭建全攻略与避坑指南在自动驾驶开发领域Autoware.universe作为开源的自动驾驶全栈解决方案正受到越来越多开发者和研究机构的青睐。然而对于初次接触Autoware.universe的开发者来说在Ubuntu 22.04系统上搭建完整的开发环境往往是一场充满挑战的冒险。本文将带你系统性地解决从ROS2 Humble安装、CUDA配置到Autoware.universe编译运行全过程中的各类疑难杂症。1. 环境准备基础配置与ROS2安装在开始Autoware.universe的安装之前确保你的Ubuntu 22.04系统满足以下最低硬件要求CPU至少8核处理器推荐Intel i7或同等性能的AMD处理器内存16GB以上8GB勉强可用但编译过程会非常缓慢存储空间至少150GB可用空间建议分配200GB以上GPUNVIDIA显卡至少支持CUDA 11.71.1 系统更新与基础依赖首先更新系统并安装基础开发工具sudo apt update sudo apt upgrade -y sudo apt install -y build-essential cmake git wget curl software-properties-common提示建议在执行大规模安装前先创建系统快照以便在出现问题时快速回滚。1.2 ROS2 Humble安装与配置虽然一键安装脚本看似方便但手动安装能更好地控制过程并避免潜在问题。以下是推荐的ROS2 Humble安装步骤添加ROS2仓库和密钥sudo apt install -y software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install -y curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release echo $UBUNTU_CODENAME) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null安装完整版ROS2 Humblesudo apt update sudo apt install -y ros-humble-desktop ros-dev-tools python3-colcon-common-extensions设置环境变量echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc验证安装是否成功ros2 --help如果看到ROS2的帮助信息输出说明基础安装已完成。2. CUDA与cuDNN的正确安装姿势Autoware.universe对CUDA和cuDNN有特定版本要求错误的安装顺序或版本选择会导致后续编译失败。2.1 清理旧版NVIDIA驱动在安装新版驱动前建议彻底清理系统可能存在的旧驱动sudo apt purge -y *nvidia* *cuda* *cudnn* sudo apt autoremove -y sudo reboot2.2 安装NVIDIA驱动Ubuntu 22.04默认使用nouveau驱动需要先禁用sudo bash -c echo blacklist nouveau /etc/modprobe.d/blacklist-nvidia-nouveau.conf sudo bash -c echo options nouveau modeset0 /etc/modprobe.d/blacklist-nvidia-nouveau.conf sudo update-initramfs -u sudo reboot安装推荐版本的驱动sudo ubuntu-drivers autoinstall sudo reboot验证驱动安装nvidia-smi应能看到类似如下的输出显示GPU信息和驱动版本----------------------------------------------------------------------------- | NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 | |---------------------------------------------------------------------------2.3 CUDA Toolkit安装Autoware.universe推荐使用CUDA 11.7或11.8版本。以下是CUDA 11.7的安装步骤wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda-repo-ubuntu2204-11-7-local_11.7.1-515.65.01-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2204-11-7-local_11.7.1-515.65.01-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2204-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-11-7设置环境变量echo export PATH/usr/local/cuda-11.7/bin${PATH::${PATH}} ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}} ~/.bashrc source ~/.bashrc验证CUDA安装nvcc --version2.4 cuDNN安装下载对应版本的cuDNN需要NVIDIA开发者账号sudo dpkg -i libcudnn8_8.6.0.163-1cuda11.7_amd64.deb sudo dpkg -i libcudnn8-dev_8.6.0.163-1cuda11.7_amd64.deb sudo dpkg -i libcudnn8-samples_8.6.0.163-1cuda11.7_amd64.deb验证cuDNN安装cp -r /usr/src/cudnn_samples_v8/ $HOME cd $HOME/cudnn_samples_v8/mnistCUDNN make clean make ./mnistCUDNN如果看到测试通过信息说明cuDNN安装成功。3. Autoware.universe源码获取与依赖安装3.1 源码克隆建议使用SSH方式克隆仓库需提前配置GitHub SSH密钥mkdir -p ~/autoware_ws/src cd ~/autoware_ws/src git clone gitgithub.com:autowarefoundation/autoware.git cd autoware git checkout universe注意国内用户可能会遇到GitHub克隆速度慢的问题可以考虑使用镜像源或配置代理。3.2 依赖安装Autoware.universe提供了setup-dev-env.sh脚本但直接运行往往不会成功。建议分步安装安装系统级依赖sudo apt update sudo apt install -y python3-pip python3-rosdep2 python3-vcstool sudo pip3 install -U setuptools初始化rosdepsudo rosdep init rosdep update如果遇到rosdep update超时问题可以尝试以下解决方案sudo mkdir -p /etc/ros/rosdep/sources.list.d/ echo yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx-homebrew | sudo tee /etc/ros/rosdep/sources.list.d/20-default.list echo yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list echo yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list echo yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list echo yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte | sudo tee -a /etc/ros/rosdep/sources.list.d/20-default.list rosdep update安装Python依赖pip3 install -U -r ~/autoware_ws/src/autoware/requirements.txt安装ROS依赖rosdep install -y --from-paths ~/autoware_ws/src --ignore-src --rosdistro humble4. 编译Autoware.universe与常见问题解决4.1 基础编译命令使用以下命令开始编译cd ~/autoware_ws colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPERelease编译过程可能需要数小时取决于硬件配置。建议使用-j参数指定并行编译任务数colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPERelease --parallel-workers 84.2 常见编译错误与解决方案错误1cudnn_cmake_module缺失CMake Error at CMakeLists.txt:5 (find_package): By not providing Findcudnn_cmake_module.cmake in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by cudnn_cmake_module, but CMake did not find one.解决方案source /opt/ros/humble/setup.bash sudo apt update sudo apt upgrade rosdep update rosdep install -y --from-paths src --ignore-src --rosdistro humble错误2内存不足导致编译失败如果系统内存不足可以增加交换空间sudo fallocate -l 16G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab错误3特定包编译失败可以尝试单独重新编译失败的包colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPERelease --packages-select package_name4.3 编译优化技巧使用ccache加速后续编译sudo apt install -y ccache echo export PATH/usr/lib/ccache:$PATH ~/.bashrc source ~/.bashrc选择性编译如果只需要特定功能模块可以使用--packages-select参数colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPERelease --packages-select autoware_launch5. 运行Autoware.universe与Demo测试5.1 下载示例地图数据Autoware.universe提供了示例地图用于测试mkdir -p ~/autoware_map cd ~/autoware_map wget https://drive.google.com/uc?exportdownloadid1499_nsbUbIeturZaDj7jhUownh5fvXHd -O sample-map-planning.zip unzip sample-map-planning.zip5.2 启动Autowarecd ~/autoware_ws source install/setup.bash ros2 launch autoware_launch planning_simulator.launch.xml map_path:$HOME/autoware_map/sample-map-planning vehicle_model:sample_vehicle sensor_model:sample_sensor_kit5.3 基本操作指南地图导航左键拖动旋转视角Shift左键拖动平移地图滚轮缩放地图路径规划按P键后点击地图设置起点按G键后点击地图设置终点点击Auto按钮开始自动驾驶车辆控制按D键切换自动驾驶/手动模式在手动模式下使用方向键控制车辆5.4 性能优化建议如果运行时感觉卡顿可以尝试以下优化降低画面质量export RVIZ_CFG~/autoware_ws/src/autoware/autoware_launch/config/autoware_launch.rviz sed -i s/Quality: 9/Quality: 3/g $RVIZ_CFG关闭不必要的插件sed -i s/Enabledtrue/Enabledfalse/g $RVIZ_CFG使用轻量级窗口管理器sudo apt install -y xfce46. 开发环境配置与调试技巧6.1 VS Code配置对于使用VS Code的开发者推荐安装以下插件ROSC/CCMake ToolsPythonXML Tools配置.vscode/settings.json{ cmake.configureArgs: [ -DCMAKE_BUILD_TYPERelease ], C_Cpp.default.configurationProvider: ms-vscode.cmake-tools, ros.distro: humble }6.2 调试技巧查看ROS2节点ros2 node list查看话题列表ros2 topic list查看特定话题内容ros2 topic echo /topic_name录制与回放数据ros2 bag record -o autoware_bag /topic1 /topic2 ros2 bag play autoware_bag6.3 性能监控系统资源监控sudo apt install -y htop htopGPU监控watch -n 1 nvidia-smiROS2系统监控ros2 run rqt_graph rqt_graph ros2 run rqt_console rqt_console7. 进阶配置与自定义开发7.1 自定义车辆模型Autoware.universe支持自定义车辆模型基本步骤如下创建新的车辆模型包cd ~/autoware_ws/src ros2 pkg create --build-type ament_cmake my_vehicle_description定义URDF模型文件示例结构my_vehicle_description/ ├── CMakeLists.txt ├── launch/ │ └── my_vehicle.launch.py ├── meshes/ │ └── my_vehicle.stl ├── package.xml └── urdf/ └── my_vehicle.urdf.xacro修改autoware_launch配置使用新模型arg namevehicle_model defaultmy_vehicle /7.2 添加新传感器以添加Velodyne激光雷达为例安装驱动sudo apt install -y ros-humble-velodyne配置launch文件include file$(find velodyne_pointcloud)/launch/VLP16_points.launch arg namedevice_ip value192.168.1.201 / arg nameframe_id valuevelodyne / /include配置TF关系ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 base_link velodyne7.3 算法模块开发Autoware.universe采用模块化设计添加新算法模块的基本流程创建新包cd ~/autoware_ws/src ros2 pkg create --build-type ament_cmake my_planning_algorithm典型包结构my_planning_algorithm/ ├── CMakeLists.txt ├── include/ │ └── my_planning_algorithm/ │ └── algorithm.hpp ├── src/ │ ├── algorithm.cpp │ └── node.cpp ├── package.xml └── launch/ └── my_algorithm.launch.py集成到Autoware系统node pkgmy_planning_algorithm execmy_planning_node outputscreen remap frominput_topic to/planning/input / remap fromoutput_topic to/planning/output / /node8. 持续集成与自动化测试8.1 单元测试配置Autoware.universe使用gtest进行单元测试添加测试的基本方法在CMakeLists.txt中添加测试if(BUILD_TESTING) find_package(ament_cmake_gtest REQUIRED) ament_add_gtest(test_my_algorithm test/test_algorithm.cpp ) target_link_libraries(test_my_algorithm my_planning_algorithm ) endif()运行测试colcon test --packages-select my_planning_algorithm colcon test-result --verbose8.2 集成测试使用ROS2 launch系统进行集成测试import launch from launch_ros.actions import Node def generate_launch_description(): return launch.LaunchDescription([ Node( packagemy_planning_algorithm, executablemy_planning_node, nametest_node, parameters[{test_mode: True}] ), launch.actions.ExecuteProcess( cmd[ros2, bag, play, test_bag], outputscreen ) ])8.3 CI/CD配置示例GitHub Actions配置name: Autoware CI on: [push, pull_request] jobs: build: runs-on: ubuntu-22.04 steps: - uses: actions/checkoutv3 - name: Install dependencies run: | sudo apt update sudo apt install -y python3-pip python3-rosdep2 sudo pip3 install -U setuptools rosdep update rosdep install -y --from-paths src --ignore-src --rosdistro humble - name: Build run: | source /opt/ros/humble/setup.bash colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPERelease - name: Test run: | source install/setup.bash colcon test colcon test-result --verbose