保姆级教程:在Ubuntu 16.04上从源码编译安装Autoware 1.10(含ROS Kinetic依赖安装全流程)

张开发
2026/4/21 15:12:15 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 16.04上从源码编译安装Autoware 1.10(含ROS Kinetic依赖安装全流程)
从零构建Autoware 1.10开发环境Ubuntu 16.04与ROS Kinetic深度配置指南当第一次接触自动驾驶开发框架时环境配置往往是最大的拦路虎。Autoware作为开源自动驾驶平台的代表其强大的功能背后是复杂的依赖关系。本文将带您穿越Ubuntu 16.04系统下从裸机到完整运行Autoware 1.10的完整历程特别针对ROS Kinetic环境进行优化解决那些官方文档未曾提及的坑。1. 系统基础环境准备在开始Autoware之旅前我们需要确保系统基础环境达到要求。Ubuntu 16.04 Xenial Xerus作为长期支持版本其稳定性已得到验证但默认配置仍需调整。关键系统参数检查# 检查系统版本 lsb_release -a # 确认内存大小(建议≥8GB) free -h # 检查磁盘空间(建议≥50GB可用) df -h对于国内用户首要任务是配置高效的软件源。除了常见的/etc/apt/sources.list修改外ROS和Autoware还需要特定配置备份原有源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak替换为国内镜像源如阿里云或清华源更新软件包索引sudo apt-get update sudo apt-get upgrade -y特别注意Ubuntu 16.04默认的Python版本为2.7而部分Autoware工具需要Python3支持。建议安装Python3.5并配置默认版本sudo apt-get install python3 python3-pip sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 12. ROS Kinetic完整安装与配置ROS Kinetic是Autoware 1.10的核心依赖其安装质量直接影响后续流程。以下是经过验证的完整安装步骤基础安装sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt-get update sudo apt-get install ros-kinetic-desktop-full环境变量配置 将以下内容添加到~/.bashrc文件末尾source /opt/ros/kinetic/setup.bash export ROS_PACKAGE_PATH${ROS_PACKAGE_PATH}:~/autoware.ai依赖工具安装sudo apt-get install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential sudo rosdep init rosdep update提示当遇到rosdep update失败时可尝试修改/etc/hosts添加151.101.84.133 raw.githubusercontent.com解决网络问题。常见问题解决方案问题现象解决方案原理说明rosdep初始化失败手动创建/etc/ros/rosdep/sources.list.d/20-default.list网络限制导致文件创建失败找不到ROS命令检查.bashrc中source命令位置环境变量未正确加载软件包依赖冲突使用aptitude替代apt-get提供更智能的依赖解决方案3. Autoware 1.10源码编译全流程Autoware的源码编译是个系统工程需要严格遵循步骤顺序。我们采用autoware.ai官方推荐的源码编译方式确保可调试性和灵活性。工作空间创建与源码获取mkdir -p ~/autoware.ai/src cd ~/autoware.ai/src git clone --branch 1.10.0 https://gitlab.com/autowarefoundation/autoware.ai/autoware.git依赖安装完整清单# 基础编译工具 sudo apt-get install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin # Python3工具链 sudo apt-get install -y python3-pip python3-colcon-common-extensions python3-setuptools # 图形界面依赖 sudo apt-get install -y gksu libgl1-mesa-dev libglew-dev libglfw3-dev # 特殊模块 pip3 install -U setuptools pip install --upgrade psutil编译过程优化技巧提前下载大文件依赖如CUDA相关使用-j参数控制编译线程数建议为CPU核心数1针对常见错误的预处理# 解决权限问题 sudo chmod -R x ~/autoware.ai/src # 处理缺失的Gazebo模型 mkdir -p ~/.gazebo/models完整编译命令cd ~/autoware.ai/src/ros rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO ./catkin_make_release注意编译过程可能持续2-4小时取决于硬件配置。建议使用tmux或screen保持会话。4. 典型问题诊断与解决即使按照步骤操作Autoware安装过程中仍可能遇到各种特色问题。以下是经过实战验证的解决方案库。CUDA版本冲突 Autoware 1.10仅支持CUDA 10.0与系统已有CUDA版本冲突时的处理方案# 查看当前CUDA版本 nvcc --version # 完全卸载现有CUDA sudo apt-get purge ^nvidia-.* sudo apt-get purge ^cuda-.* # 安装指定版本 sudo apt-get install cuda-10-0图形界面启动失败 当执行./run后界面无法正常显示时按以下步骤排查检查Qt版本兼容性qmake --version验证显示驱动glxinfo | grep OpenGL version尝试软件渲染模式export LIBGL_ALWAYS_SOFTWARE1 ./run内存不足处理 当系统内存不足导致编译失败时可采取以下措施创建交换空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile调整编译参数MAKEFLAGS-j2 ./catkin_make_release依赖关系图谱组件必需依赖可选依赖冲突组件核心功能ROS Kinetic, Qt5CUDA 10.0Qt4系列感知模块OpenCV 3.2TensorRTOpenCV 4.x定位模块PCL 1.7GPSD无可视化RVizRQT无5. 验证与性能调优成功编译后我们需要验证系统完整性和进行必要的性能优化。基础功能测试cd ~/autoware.ai/src/ros ./run正常启动后您应该看到包含以下核心组件的界面3D点云可视化窗口RViz配置界面车辆控制面板性能优化参数 在~/.bashrc中添加以下环境变量可提升运行效率# 限制点云处理线程 export OMP_NUM_THREADS4 # 优化内存分配 export MALLOC_MMAP_THRESHOLD_131072 export MALLOC_TRIM_THRESHOLD_131072硬件加速配置 如果使用NVIDIA显卡可启用CUDA加速编辑~/autoware.ai/src/ros/src/computing/perception/localization/lib/ndt_gpu/CMakeLists.txt确保以下选项开启find_package(CUDA REQUIRED) set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-O3;-use_fast_math)实时性调优 对于需要实时响应的应用建议调整Linux内核参数# 安装实时内核 sudo apt-get install linux-lowlatency # 调整进程优先级 sudo echo realtime - rtprio 99 /etc/security/limits.conf在Autoware的实际部署中我们发现合理配置ROS参数可以显著提升系统响应速度。修改~/autoware.ai/src/ros/src/rosbag/scripts/play.launch中的以下参数param namerate value1.0 / param namestart value0 / param nameloop valuefalse /

更多文章