Ubuntu20.04安装Autoware.universe并与Awsim联调

news2024/11/17 5:48:49

文章目录

  • 引言
  • 一、安装依赖
    • 1.1 安装git
    • 1.2 克隆Autoware到本地
    • 1.3 自动安装相关依赖
    • 1.4 安装显卡驱动
    • 1.5 安装ROS2 Galactic
    • 1.6 安装ros2_dev_tools
    • 1.7 安装rmw_implementation
    • 1.8 安装pacmod
    • 1.9 安装autoware_core
    • 1.10 安装autoware universe dependencies
    • 1.11 安装pre_commit
    • 1.12 安装CUDA
    • 1.13 安装cuDNN and TensorRT
  • 二、编译源码
    • 2.1 下载Universe代码库
    • 2.2 安装 Autoware ROS依赖包
    • 2.3 编译工作空间
  • 三、安装Awsim
  • 四、Autoware与Awsim联调


引言

本文介绍Autoware.universe在Ubuntu20.04中的详细安装步骤,基于ROS2 Galactic,其官方网站:Autoware Documentation
在这里插入图片描述

注意:左上角选择Galactic版本
最终运行效果:
在这里插入图片描述

一、安装依赖

在第3步自动安装依赖时,可以将ROS2 Galactic一并安装,也可以提前自己手动安装。

1.1 安装git

sudo apt-get -y update
sudo apt-get -y install git

1.2 克隆Autoware到本地

mkdir autoware_universe
cd autoware_universe/
git clone https://github.com/autowarefoundation/autoware.git -b galactic

1.3 自动安装相关依赖

cd autoware
./setup-dev-env.sh

在这里插入图片描述

试了一下这个不太行,接下来再全部手动安装,按照官方给定的每一步骤链接进入获得安装命令(注意:进入之后要选择Galactic版本,如下图左上角,但是官方给的实际上有一点点问题,可以参考我下面的步骤):
在这里插入图片描述
在这里插入图片描述

1.4 安装显卡驱动

查看推荐显卡

ubuntu-drivers devices

在这里插入图片描述

安装recommend推荐显卡版本,这里推荐的是535版本

sudo apt-get install nvidia-driver-535

要选择版本不然会自动更新内核。 但是我安装535会黑屏,只能安装了510,由于是刚安装的系统,更新了内核也没太大的影响,另外安装版本太低的话也不行,因为下面安装CUDA要求最小版本

1.5 安装ROS2 Galactic

鱼香ros一键安装:

wget http://fishros.com/install -O fishros && . fishros
  • 选择[1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
  • 选择[1]:更换系统源再继续安装,若是已经换过源可以选择[2]不更换源
  • 选择[2]:更换系统源并清理第三方源
  • 选择[3]:galactic(ROS2)
  • 选择[1]:galactic(ROS2)桌面版
    在这里插入图片描述

1.6 安装ros2_dev_tools

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-pip \
  python3-pytest-cov \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool \
  wget
python3 -m pip install -U \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  setuptools

在这里插入图片描述

如果报以上的错误,就安装依赖:

sudo apt install python3-testresources

下面命令若是遇到问题可以参考文章:Ubuntu20.04同时安装ROS1和ROS2共存,或者使用鱼香ROS rosdepc

sudo rosdep init
rosdep update

1.7 安装rmw_implementation

# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env
# 注意官网给的是mian,humble的,需要改成galactic
wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env

如果第一句报以下问题:拒绝连接,有两种解决办法(推荐第二种
(1)科学上网
(2)amd64.env是一些软件对应版本的环境变量,我们其实在1.2节已经下载了,source一下就好了

cd autoware_universe/
source amd64.env

在这里插入图片描述

# For details: https://docs.ros.org/en/galactic/How-To-Guides/Working-with-multiple-RMW-implementations.html
sudo apt update
rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}")
sudo apt install ros-${rosdistro}-${rmw_implementation_dashed}

# (Optional) You set the default RMW implementation in the ~/.bashrc file.
echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc

下面这句报以下错误,将ROS版本变量改成galactic(报这个错是因为下载了main-对应humble的amd.env,上面改成galactic版本理论上就不会报这个错)
在这里插入图片描述

1.8 安装pacmod

# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
cd autoware_universe/
source amd64.env

# Taken from https://github.com/astuff/pacmod3#installation
sudo apt install apt-transport-https
sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list'
sudo apt update
sudo apt install ros-${rosdistro}-pacmod3

wget上面已经处理过一次了,这里可以只source(找不到就再复制一次)

1.9 安装autoware_core

pip3 install gdown

1.10 安装autoware universe dependencies

sudo apt install geographiclib-tools

# Add EGM2008 geoid grid to geographiclib
# 下面过程很慢,耐心等待
sudo geographiclib-get-geoids egm2008-1

1.11 安装pre_commit

clang_format_version=14.0.6
pip3 install pre-commit clang-format==${clang_format_version}

# Install Golang (Add Go PPA for shfmt)
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt install golang

1.12 安装CUDA

# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
cd autoware_universe/
source amd64.env

# Modified from:
# https://developer.nvidia.com/cuda-11-4-4-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
sudo apt install cuda-${cuda_version_dashed} --no-install-recommends

一般来说以上过程会安装成功,但是安装最后一步的时候可能报下面的错,有以下两种解决办法(推荐第二种):
在这里插入图片描述

(1)使用aptitude能调整依赖版本(慎用,建议用第二种方法)

sudo apt-get install aptitude
sudo aptitude install cuda-${cuda_version_dashed}

--no-install-recommends 参数是用于在安装软件包时禁止安装推荐的附加软件包,只安装 CUDA 11.6 的核心组件,可以帮助减少安装的软件包数量,节省磁盘空间并降低系统中的冗余,不需要可以取消。
选择Y会重装显卡驱动(我的会重装535,但是会黑屏,因此没有用这个办法)
(2)使用手动安装方法:

nvidia-smi

查看显卡驱动支持最高CUDA版本是12.1, 到cuda-toolkit-archive,选择需要的CUDA(最好是env中写的11.6.2)版本下载,如下图,选择runfile(local),并使用生成的指令进行下载和安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回车取消安装显卡驱动,然后选择最后的安装:
在这里插入图片描述
在这里插入图片描述

安装成功之后环境配置,在.bashrc文件末尾添加环境变量:

sudo gedit ~/.bashrc
# 添加以下内容:
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}} 
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

或者终端输入以下命令添加:

# Taken from: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
echo 'export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc

验证是否安装成功

nvcc -V

在这里插入图片描述

1.13 安装cuDNN and TensorRT

# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
cd autoware_universe/
source amd64.env

# Taken from: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing
sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version}
sudo apt-mark hold libcudnn8 libcudnn8-dev
sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version}
sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev

二、编译源码

2.1 下载Universe代码库

(1)创建 src 文件夹

cd autoware_universe/
mkdir src

(2)修改 autoware.repos 文件

sudo gedit autoware.repos

在autoware.repos 文件中,28行位置加入以下内容

universe/external/open_planner:
    type: git
    url: https://github.com/ZATiTech/open_planner.git
    version: main

(3)下载代码库到本地

vcs import src < autoware.repos

在这里插入图片描述

2.2 安装 Autoware ROS依赖包

(1)安装rosdep

wget http://fishros.com/install -O fishros && . fishros
# 选择[3]:一键配置:rosdep(小鱼的rosdepc,又快又好用)
rosdep update --include-eol-distros  # 科学上网或者多试几次

(2)安装ROS依赖

source /opt/ros/galactic/setup.bash
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

安装ROS依赖时报错:

/usr/bin/pip3:6: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import load_entry_point

在这里插入图片描述

参考https://blog.csdn.net/yuteng12138/article/details/130123995:

pip install --upgrade --user setuptools==58.3.0

安装时依赖版本太高:

ros-galactic-tvm-vendor : Depends: ocl-icd-opencl-dev but it is not going to be installed

在这里插入图片描述
使用aptitude可以对依赖降级,:保持原状N,接下来全输入y

sudo aptitude install ros-galactic-tvm-vendor

在这里插入图片描述

安装ROS依赖时,安装open3d速度慢,报错问题可以参考:https://blog.csdn.net/yuteng12138/article/details/130123620

pip install open3d

在这里插入图片描述

2.3 编译工作空间

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

在编译过程中卡死或者崩溃,或者其他问题,可以多试几次或者参考官方:build-issues
简单运行Universe,$HOME/autoware_map/sample-map-planning为从官方下载的地图:

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_kitre_launch/launch/autoware.launch.xml map_path:=/home/universe/autoware_universe/op_carla/Town01 vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit

在这里插入图片描述

三、安装Awsim

参考官方教程AWSIM v1.0.1,安装依赖:

sudo apt update
sudo apt install libvulkan1

下载Awsim二进制文件:AWSIM_v1.0.1.zip,解压之后运行:

./<path to AWSIM folder>/AWSIM.x86_64

在这里插入图片描述

目前官方的模拟器功能还比较少,只有下方进度条可以调节渲染频率
开启后可以看到模拟器输出的传感器消息以及接收的底盘控制消息:

ros2 topic list

在这里插入图片描述

四、Autoware与Awsim联调

首先下载模拟器地图:nishishinjuku_autoware_map.zip,包括高精地图以及点云地图。
同时启动Awsim和Autoware,注意更换为你下载的地图地址

./<path to AWSIM folder>/AWSIM.x86_64

# 新开一个终端
cd autoware_universe
source install/setup.bash
ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehicle sensor_model:=awsim_sensor_kit map_path:=<your mapfile location>

利用RViz手动设置2D Pose Estimate,使用RViz手动设置2D Goal Pose,设置2d Checkpoint Pose(可选),路径生成。
在这里插入图片描述

新启动一个终端,发布以下消息(或者点击RVIZ中的Engage),开启自动驾驶:

ros2 topic pub /autoware/engage autoware_auto_vehicle_msgs/msg/Engage '{engage: True}' -1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(2)Gymnasium--CartPole的测试

1、主要参考 &#xff08;1&#xff09; CartPole 强化学习详解1 - DQN_Oxalate-c的博客-CSDN博客 &#xff08;2&#xff09;官方文档&#xff0c;推荐&#xff01;&#xff01;&#xff01;&#xff01; Cart Pole - Gymnasium Documentation 2、相关说明 2.1 动作空间 …

DP-GAN-生成器代码

在train文件中&#xff0c;对生成器和判别器分别进行更新&#xff0c;根据loss的不同&#xff0c;分别计算对于的损失&#xff1a; loss_G, losses_G_list model(image, label, "losses_G", losses_computer)loss_D, losses_D_list model(image, label, "los…

环形链表 II(JS)

环形链表 II 题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;…

企业数字化转型失败率达80%,面临哪些挑战?应该如何规划?

随着数字化在社会的飞速发展&#xff0c;人们的生活工作娱乐等方方面面都已经被数字化占领&#xff0c;数字化所衍生出的数字经济更是成为高速增长的国民经济支柱&#xff0c;而数据作为“副产品”也成功进化为第五大生产要素&#xff0c;发挥出巨大的价值&#xff0c;变成了个…

智慧展馆展厅人员定位系统解决方案:提升参观体验与管理效率

随着数字化时代的到来&#xff0c;展馆和展厅逐渐成为人们了解文化、艺术、科技等领域的重要窗口。 然而&#xff0c;传统的展馆和展厅存在着一些问题&#xff0c;例如参观者迷路、信息获取不及时、管理效率低下等。 为了提升参观体验和管理效率&#xff0c;研发智慧展馆展厅…

测试|Selenium之WebDriver常见API使用

测试|Selenium之WebDriver常见API使用 文章目录 测试|Selenium之WebDriver常见API使用1.定位对象&#xff08;findElement&#xff09;css定位xpath定位css选择器语法&#xff1a;xpath语法:校验结果 2.操作对象鼠标点击对象在对象上模拟按键输入clear清除对象输入的文本内容su…

TCP三次握手和四次挥手以及11种状态(一)

1、三次握手 置位概念&#xff1a;根据TCP的包头字段&#xff0c;存在3个重要的标识ACK、SYN、FIN ACK&#xff1a;表示验证字段 SYN&#xff1a;位数置1&#xff0c;表示建立TCP连接 FIN&#xff1a;位数置1&#xff0c;表示断开TCP连接 三次握手过程说明&#xff1a; 1、…

【自动化剧本】Role角色

目录 一、Roles模块1.1roles的目录结构1.2roles 内各目录含义解释1.3在一个 playbook 中使用 roles 的步骤 二、使用Role编写LNMP剧本2.1 搭建Nginx角色2.2搭建Mysql角色2.3搭建php角色2.4lnmp剧本 一、Roles模块 roles用于层次性、结构化地组织playbook。roles能够根据层次型结…

实战!聊聊工作中使用了哪些设计模式

实战&#xff01;聊聊工作中使用了哪些设计模式 策略模式 业务场景 假设有这样的业务场景&#xff0c;大数据系统把文件推送过来&#xff0c;根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码&#xff1a; if(type"A"){//按照A格式解析}else if(t…

力扣468 验证IP地址

ipv4地址&#xff1a;1.必须是四个非空子串 2.每个非空子串不含前导零 3.子串里字符只能是0~255 ipv6地址&#xff1a;1.必须是八个非空子串 2。每段非空串得长度是否在1~4之间&#xff0c;且不含0-9&#xff0c;a-f&#xff0c;A-F之外得字符。 3.同时0-9也不允许含前导零 cl…

HTML5+CSS3小实例:带标题的3D多米诺人物卡片

实例:带标题的3D多米诺人物卡片 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content…

vue关闭ESlint

在 vue.config.js里边写上这一句代码 lintOnsave:false

Maven如何创建Java web项目(纯干货版)!!!

1.创建Maven项目。 2.创建完成后会来到这个界面。 3.在src/main目录下&#xff0c;建立webapp / WEB-INF/web.xml文件&#xff0c;并在web.xml文件中写入以下内容&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http…

AI技术快讯:清华开源ChatGLM2双语对话语言模型

ChatGLM2-6B是一个开源项目&#xff0c;提供了ChatGLM2-6B模型的代码和资源。根据提供的搜索结果&#xff0c;以下是对该项目的介绍&#xff1a; 论文&#xff1a;https://arxiv.org/pdf/2103.10360.pdf ChatGLM2-6B是一个开源的双语对话语言模型&#xff0c;是ChatGLM-6B模…

批量生成ChunJun json任务脚本

最近在研究chunjun&#xff0c;它是一款稳定、易用、高效、批流一体的数据集成框架。一直在用chunjun做数据抽取测试&#xff0c;json任务重复地在写&#xff0c;感觉十分浪费时间&#xff0c;于是想写个自动生成json脚本。 1.设计模板 模板通过excel设计&#xff0c;主要记录…

【phaser微信抖音小游戏开发004】往画布上增加文本以及文本的操作

我们在states中创建st004.js的类&#xff0c;或者将states中的index.js直接重命名为st004.js&#xff0c;把里面的类名也修改为st004.如下图 在main.js中&#xff0c;引入st004,并设置启用的state为st004。如下图 接下来到states/st004里面&#xff0c;在create里面将文本修改一…

为什么不推荐用 index 做 key

之所以添加key属性&#xff0c;究其根本是因 diff算法。而在业务开发过程中特别是使用map, forEach 等遍历函数的时候往往随手就将index做为组件的key. 那么:key 到底有什么用&#xff1f; 当 Vue.js 用 v-for 正在更新已渲染过的元素列表时&#xff0c;它默认用就地复用策略 …

IP 工具

什么是IP 工具 IP 工具是用于轻松扫描和排除网络 IP 地址空间故障的网络工程工具。IP 工具使网络管理员能够审核、跟踪和监视 IP 地址、子网以及使用 IP 的设备和主机的性能。这个全面的网络工程工具集包括高级 IP 工具&#xff0c;如 Ping、系统资源管理器、MAC 地址解析器和…

看表情包学C语言 ——局部优先原则

&#x1f517; 【C语言趣味教程】专栏介绍&#x1f448; 猛戳了解&#xff01;&#xff01;&#xff01; Ⅰ. 作用域&#xff08;Scope&#xff09; 0x00 引入&#xff1a;什么是作用域&#xff1f; 变量和常量在程序中都是有作用范围的&#xff0c;这个范围我们称之为变量的 …

40k的offer拿到手!爽歪歪~

据说周一和就业喜报更配&#xff1f;快跟着我一起来看看2023上半年黑马软件测试学科的就业喜报&#xff1a; 从黑马软件测试学科的就业中&#xff0c;我们也能看到软件测试对于企业的重要性&#xff0c;一点也不比程序员差&#xff0c;他们拿到的薪资也能和程序员的高薪媲美&am…