当前位置: 首页 > news >正文

ubuntu22.04安装autoware.universe

一、系统版本说明

采用虚拟机安装22.04后,使用鱼香肉丝安装ROS2。

二、clone autoware 源码并安装依赖库

1.克隆并移动到目录。autowarefoundation/autoware

git clone https://github.com/autowarefoundation/autoware.git
cd autoware

2.如果您是第一次安装 Autoware,则可以使用提供的 Ansible 脚本自动安装依赖项。

./setup-dev-env.sh

第一次运行卡死【也许因为网速和文件太大,需要等待时间】,新启动一个终端,手动安装egm2008-1

sudo geographiclib-get-geoids egm2008-1

第二次运行报错

TASK [autoware.dev_env.pacmod : Install apt-transport-https] *******************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Failed to update apt cache: unknown reason"}

手动安装apt-transport-https

第三次运行报错

TASK [autoware.dev_env.spconv : Install the spconv package] ********************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Unable to install package: E:归档文件中成员文件头无效"}

查阅论坛,单独安装spconv,但其依赖cuda版本;尝试几个帖子不太行。

最终采用autoware官方网站指导,手动安装cuda。

wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.envos=ubuntu2204
wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
sudo apt-get -y install cuda-toolkit-${cuda_version_dashed}
sudo apt-get install -y cuda-drivers-550
echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
# Create Vulkan directory
sudo mkdir -p /etc/vulkan/icd.d
sudo chmod 0755 /etc/vulkan/icd.d# Create OpenGL directory
sudo mkdir -p /etc/glvnd/egl_vendor.d
sudo chmod 0755 /etc/glvnd/egl_vendor.d# Create OpenCL directory
sudo mkdir -p /etc/OpenCL/vendors
sudo chmod 0755 /etc/OpenCL/vendors# Download and set permissions for Vulkan GPU vendors JSON
sudo wget https://gitlab.com/nvidia/container-images/vulkan/raw/dc389b0445c788901fda1d85be96fd1cb9410164/nvidia_icd.json -O /etc/vulkan/icd.d/nvidia_icd.json
sudo chmod 0644 /etc/vulkan/icd.d/nvidia_icd.json# Download and set permissions for OpenGL GPU vendors JSON
sudo wget https://gitlab.com/nvidia/container-images/opengl/raw/5191cf205d3e4bb1150091f9464499b076104354/glvnd/runtime/10_nvidia.json -O /etc/glvnd/egl_vendor.d/10_nvidia.json
sudo chmod 0644 /etc/glvnd/egl_vendor.d/10_nvidia.json# Register and set permissions for OpenCL GPU vendors
sudo touch /etc/OpenCL/vendors/nvidia.icd
echo "libnvidia-opencl.so.1" | sudo tee /etc/OpenCL/vendors/nvidia.icd > /dev/null
sudo chmod 0644 /etc/OpenCL/vendors/nvidia.icd

第四次运行错误,与第三次一样
继续手动安装 installs TensorRT and cuDNN

# For the environment variables
wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.envsudo apt-get install -y \
libcudnn8=${cudnn_version} \
libnvinfer10=${tensorrt_version} \
libnvinfer-plugin10=${tensorrt_version} \
libnvonnxparsers10=${tensorrt_version} \
libcudnn8-dev=${cudnn_version} \
libnvinfer-dev=${tensorrt_version} \
libnvinfer-plugin-dev=${tensorrt_version} \
libnvinfer-headers-dev=${tensorrt_version} \
libnvinfer-headers-plugin-dev=${tensorrt_version} \
libnvonnxparsers-dev=${tensorrt_version}sudo apt-mark hold \
libcudnn8 \
libnvinfer10 \
libnvinfer-plugin10 \
libnvonnxparsers10 \
libcudnn8-dev \
libnvinfer-dev \
libnvinfer-plugin-dev \
libnvonnxparsers-dev \
libnvinfer-headers-dev \
libnvinfer-headers-plugin-dev

接着按照官方网站知道,安装 rviz
在这里插入图片描述

下载Artifacts

cd ~/autoware # The root directory of the cloned repository
ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml"
ansible-playbook autoware.dev_env.download_artifacts -e "data_dir=$HOME/autoware_data" --ask-become-pass

出现问题参考《https://blog.csdn.net/qq_56292484/article/details/139240612》

本人安装时,遇到tensorrt_rtmdet目录下的tensorrt_rtmdet_onnx_models.tar.gz下载报错,手动单独安装

zgl@zgl-virtual-machine:~/autoware$ cd ../autoware_data/
zgl@zgl-virtual-machine:~/autoware_data$ ls
bevfusion                           lidar_centerpoint  tensorrt_rtmdet
image_projection_based_fusion       lidar_transfusion  tensorrt_yolox
lidar_apollo_instance_segmentation  tensorrt_bevdet    yabloc_pose_initializer
zgl@zgl-virtual-machine:~/autoware_data$ cd tensorrt_rtmdet/
zgl@zgl-virtual-machine:~/autoware_data/tensorrt_rtmdet$ ls
zgl@zgl-virtual-machine:~/autoware_data/tensorrt_rtmdet$ wget https://autoware-files.s3.us-west-2.amazonaws.com/models/tensorrt_rtmdet_onnx_models.tar.gz

记住,需要重新运行ansible

ansible-playbook autoware.dev_env.download_artifacts -e "data_dir=$HOME/autoware_data" --ask-become-pass

这时显示,下载安装ok。

三、autoware编译

创建目录并将存储库克隆到其中。src,前面第一步已经下载autoware.universe的源码到autoware文件夹了,现在只需要进入该文件夹进行如下操作。

1.Autoware 使用 vcstool 构建工作区。

cd autoware
mkdir src
vcs import src < autoware.repos

2.安装依赖的 ROS 包。

除了核心组件之外,Autoware 还需要一些 ROS 2 软件包。 该工具允许自动搜索和安装此类依赖项。 依次在终端中输入以下命令:

zgl@zgl-virtual-machine:~/autoware$ source /opt/ros/humble/setup.bash
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
common_sensor_launch: Cannot locate rosdep definition for [autoware_velodyne_monitor]
autoware_launch: Cannot locate rosdep definition for [tier4_vehicle_launch]
single_lidar_sensor_kit_launch: Cannot locate rosdep definition for [autoware_vehicle_velocity_converter]
trt_batched_nms: Cannot locate rosdep definition for [autoware_tensorrt_common]
awsim_labs_sensor_kit_launch: Cannot locate rosdep definition for [autoware_vehicle_velocity_converter]
single_lidar_common_launch: Cannot locate rosdep definition for [autoware_velodyne_monitor]
sample_sensor_kit_launch: Cannot locate rosdep definition for [autoware_vehicle_velocity_converter]
awsim_sensor_kit_launch: Cannot locate rosdep definition for [autoware_vehicle_velocity_converter]
zgl@zgl-virtual-machine:~/autoware$ 

工具 rosdep 可自动搜索并安装此类依赖包。在使用rosdep install之前,需要运行rosdep update更新 rosdep 。

source /opt/ros/humble/setup.bash
# Make sure all previously installed ros-$ROS_DISTRO-* packages are upgraded to their latest versionsudo apt update && sudo apt upgrade 4|rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

3.构建工作区。

Autoware 使用 colcon 构建工作区。 命令如下

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
补充知识:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
# 只编译指定包
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select 包名
# 忽略指定包
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-ignore 包名
# 遇到编译错误继续编译其他模块
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --continue-on-error

注意:可能一次编译不成功,可以在终端中多次输入编译命令:colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release;或者换用编译命令:# 遇到编译错误继续编译其他模块colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --continue-on-error,最后看哪些包没编译成功,再使用colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select 包名。最后编译成功如下所示:

报错:

fatal error: lanelet2_io/io_handlers/OsmHandler.h: 没有那个文件或目录24 | #include <lanelet2_io/io_handlers/OsmHandler.h>

单独安装

sudo apt-get install ros-${ROS_DISTRO}-lanelet2
检查CMakeLists.txt配置‌,确保在CMakeLists.txt中正确添加了lanelet2_io的依赖1

我的文件存放目录在
在这里插入图片描述

打开CMakeLists.txt ,增加

find_package(lanelet2_io REQUIRED)
include_directories(${lanelet2_io_INCLUDE_DIRS})

在这里插入图片描述

继续编译,报错,跟上面方法一样,手动安装,修改CMakeLists.txt ;

find_package(range-v3 REQUIRED)
include_directories(${range-v3_INCLUDE_DIRS})

在这里插入图片描述
在CMakeLists.txt文档中增加
set(OSQP_DIR “/path/to/osqp/install/lib/cmake/osqp”)

# after find_package(osqp_vendor) in ament_auto_find_build_dependencies
set(OSQP_DIR "/path/to/osqp/install/lib/cmake/osqp")
find_package(osqp REQUIRED)
get_target_property(OSQP_INCLUDE_SUB_DIR osqp::osqp INTERFACE_INCLUDE_DIRECTORIES)
get_filename_component(OSQP_INCLUDE_DIR ${OSQP_INCLUDE_SUB_DIR} PATH)

安装osqp

git clone --recursive https://github.com/osqp/osqp
cd osqp && mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

报错:

Starting >>> tier4_system_msgs
--- stderr: autoware_osqp_interface      
CMake Error at /opt/ros/humble/share/ament_cmake_target_dependencies/cmake/ament_target_dependencies.cmake:77 (message):ament_target_dependencies() the passed package name 'osqp_vendor' was notfound before
Call Stack (most recent call first):CMakeLists.txt:38 (ament_target_dependencies)

安装依赖库

zgl@zgl-virtual-machine:~$ sudo apt install ros-humble-osqp-vendor
```:ml-citation{ref="2" data="citationList"}

还报错

/home/zgl/autoware/src/core/autoware_core/common/autoware_osqp_interface/include/autoware/osqp_interface/csc_matrix_conv.hpp:19:10: fatal error: osqp/glob_opts.h: 没有那个文件或目录19 | #include "osqp/glob_opts.h"  // for 'c_int' type ('long' or 'long long')|          ^~~~~~~~~~~~~~~~~~
compilation terminated.
echo 'export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include' >> ~/.bashrc
echo 'export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include' >> ~/.bashrc
source ~/.bashrc

修改CMakeLists.txt

# after find_package(osqp_vendor) in ament_auto_find_build_dependencies
set(OSQP_DIR "/path/to/osqp/install/lib/cmake/osqp")
include_directories(/usr/local/include)
find_package(osqp REQUIRED)
get_target_property(OSQP_INCLUDE_SUB_DIR osqp::osqp INTERFACE_INCLUDE_DIRECTORIES)
get_filename_component(OSQP_INCLUDE_DIR ${OSQP_INCLUDE_SUB_DIR} PATH)
find /usr -name "glob_opts.h" 2>/dev/null
/usr/local/share/osqp/codegen_files/inc/private/glob_opts.h

// 原写法
#include “osqp_configure.h”
// 修改为
#include <osqp/osqp_configure.h>

三、运行autoware.universe

1.先下载官方给出的地图实例

http://www.xdnf.cn/news/1273843.html

相关文章:

  • 进度、质量、安全的关系随笔
  • scala 样例类
  • 计算机视觉(CV)——图像相关基本概念
  • #C语言——刷题攻略:牛客编程入门训练(八):分支控制(二)
  • 7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序
  • scanpy单细胞转录组python教程(二):单样本数据分析之数据质控
  • Spring Boot 开发三板斧:POM 依赖、注解与配置管理
  • 第三章 向量
  • 锂电池SOH预测 | 第35讲 Matlab基于BiLSTM的锂电池健康状态估计(锂电池SOH预测),附锂电池最新文章汇集
  • Python高阶
  • spring-boot-starter-data-redis 与 org.redisson 区别 联系
  • vue如何监听localstorage
  • 嵌入式开发学习(第三阶段第四天 Linux系统开发)
  • 复现论文《基于深度强化学习的微能源网能量管理与优化策略研究》
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • 【每天一个知识点】深度领域对抗神经网络
  • WPFC#超市管理系统(5)商品布局、顾客登录、商品下单
  • 【C++详解】红黑树规则讲解与模拟实现(内附红黑树插入操作思维导图)
  • ES 调优帖:Gateway 批量写入性能优化实践
  • C语言基础05——指针
  • 计算机视觉全景指南:从OpenCV预处理到YOLOv8实战,解锁多模态AI时代(第五章)
  • MVC结构变种——第三章核心视图及控制器的整体逻辑
  • 机器学习——TF-IDF 衡量词语在文档中重要程度
  • Java 日常开发笔记(小程序页面交互传参-id)
  • ​LabVIEW键盘鼠标监控
  • 分享一个基于Python和Hadoop的的电信客户特征可视化分析平台 基于Spark平台的电信客服数据存储与处理系统源码
  • 【Python练习】086. 编写一个函数,实现简单的DHCP服务器功能
  • 刑法视野下的虚拟财产属性争议:法律风险与市场潜力解析
  • Delphi 中的字符串类型 string 详解
  • 【0基础PS】PS工具详解--缩放工具