ubuntu20.04 手动配置docker下autoware.universe环境

news2024/12/23 13:52:33

  使用docker手动安装autoware环境,参考文章,中间踩过很多坑,特此记录一下。我电脑配置如下,有同样配置的小伙伴可以参考安装:

  • ubuntu20.04
  • cuda: cuda-11.6
  • ros2: foxy

一、手动安装ros2、cuda等

1.1 ROS2安装

  推荐使用鱼香ros一键安装,方便快捷。我之前主机上安装的是foxy版本,但是在后面配置autoware环境时发现好像ros2要求的是humble版,建议还没安装ros2的,直接按照命令安装humble版的。

wget http://fishros.com/install -O fishros && . fishros

1.2 git 安装

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

1.3 cuda安装

官方链接:autoware/ansible/roles/cuda at main · autowarefoundation/autoware · GitHub

    # 执行拉取命令
    wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env

    # Ubuntu20.04和Ubuntu22.04都可以使用以下代码
    if [[ "$(uname -m)" == "x86_64" ]]; then
      liburcu6_url=http://archive.ubuntu.com/ubuntu
    else
      liburcu6_url=http://ports.ubuntu.com/ubuntu-ports
    fi
    sudo echo "deb $liburcu6_url focal main restricted" > /etc/apt/sources.list.d/focal.list

    # Ubuntu20.04和Ubuntu22.04都可以使用以下代码
    os=ubuntu2004
    wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.0-1_all.deb
    sudo dpkg -i cuda-keyring_1.0-1_all.deb
    sudo apt-get update
    cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
    sudo apt-get -y install cuda-${cuda_version_dashed}

1.4 docker

这里提供两种方法,第一种就是最开始我参考的文章中所说的:

 # 移除旧版本
 sudo apt-get remove docker docker-engine docker.io containerd runc

 # 安装依赖
 sudo apt-get update

 sudo apt-get install \
     ca-certificates \
     curl \
     gnupg \
     lsb-release

 # 添加密钥
 sudo mkdir -p /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 # 安装依赖
 echo \
   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 # 安装 Docker Engine
 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 # 验证是否安装成功
 sudo docker run hello-world
 # Note: This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits.

第二种方式,是我之前安装的方法,使用鱼香ros一键安装,选择docker安装即可。

wget http://fishros.com/install -O fishros && . fishros

1.5 NVIDIA Container Toolkit

官方链接:autoware/ansible/roles/nvidia_docker at main · autowarefoundation/autoware · GitHub

# 安装功能包依赖和GPG密钥
 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
       && curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
       && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

 # 更新软件源并安装nvidia-docker2 软件包
 sudo apt-get update
 sudo apt-get install -y nvidia-docker2

1.6 rocker安装

官方链接:autoware/ansible/roles/rocker at main · autowarefoundation/autoware · GitHub

 # 在系统中加入ros2依赖
 sudo apt update && sudo apt install curl gnupg lsb-release
 
 # 报错(Failed to connect to raw.githubusercontent.com port 443: Connection refused),见下面解决方法
 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

 # 在sourse list中加入依赖
 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

 # 更新并安装
 sudo apt update
 sudo apt-get install python3-rocker

针对上述报错,在/etc/hosts文件中添加一行:

sudo vim /etc/hosts
# 进入hosts后
# 添加一行,参考:https://blog.csdn.net/qq_43531694/article/details/106862753
199.232.28.133 raw.githubusercontent.com

二、创建工作空间

2.1 clone autoware代码

# 从github中克隆代码
git clone https://github.com/autowarefoundation/autoware.git

# 进入文件夹
cd autoware

2.2 创建 autoware_map 文件夹

mkdir ~/autoware_map

2.3 拉取Docker(速度很慢)

docker pull ghcr.io/autowarefoundation/autoware-universe:latest-cuda

2.4 启动docker

# amd64构架的电脑配备NVIDIA GPU:
rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda

# 非NVIDIA GPU或者非amd64构架:
rocker -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda

  在执行上述命令启动镜像时报错:“docker could not select device driver”,根据文章,发现是我之前没有安装NVIDIA Container Toolkit才报的错,故根据最开始的参考文章中5.3安装nvidia-docker2后报错消失。

2.5 进入autoware文件夹

cd autoware

2.6 创建src目录并克隆依赖项

最开始我是根据博主提供的百度云链接下载的src文件夹,直接将其放到autoware目录下。继续往下执行时在:

rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

出现错误:
在这里插入图片描述错误表示rosdep安装依赖时定位不到文件,经find查找发现,上面定位不到的文件全是src/文件夹下的,例如:
在这里插入图片描述
  首先我本机的ros2版本是foxy的,但我看教程说的ros2安装版本是humble。其次,src/文件夹是我在百度网络直接下载别人的,可能这里有问题,于是,我将原本的src文件夹删除,重新根据下列命令加载src文件夹:

mkdir src
# 第一次报错>timeout,再次执行成功加载
vcs import src < autoware.repos

  我估计还在是直接将src文件夹放进来,缺少一些依赖,或者我本机ros2是foxy版本,而autoware要求的是humble。因为在src文件夹加载完成后,查看ros路径,发现,docker下ros版本由foxy变为humble。

# 更新一下
source /opt/ros/humble/setup.bash

2.7 更新依赖

sudo apt update
rosdep update  # 报错
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

在执行rosdep update时报错:
在这里插入图片描述  更新超出时间限制,参考文章,将update时间设置的久一些。首先定位到rosdep2的文件路径,然后修改 sources_list.py 、 gbpdistro_support.py 、 rep3.py三个文件中DOWNLOAD_TIMEOUT的值,默认情况下DOWNLOAD_TIMEOUT = 15.0,此处设定如下 DOWNLOAD_TIMEOUT = 10000.0

sudo find / -name rosdep2

# sources_list.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2sources_list.py

# gbpdistro_support.py 
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py 

# rep3.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py

2.8 编译

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

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

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

相关文章

04-23 周二 shell环境下读取使用jq 读取json文件

04-23 周二 shell环境下读取使用jq 读取json文件 时间版本修改人描述04-23V0.1宋全恒新建文档 简介 工具列表 Shell脚本处理JSON数据工具jq jshon是另外一个读取json数据的工具 而且其支持XML和YAML格式文件 linux shell环境下处理yml文件 #!/bin/bash# 加载shyaml库 . /…

在java类前添加上文档注释

第一步&#xff1a; 第二步 第三步 将下面代码粘上 /** *Author Lnn *Date ${DATE}/${TIME} *ClassName ${NAME} *Description */

限量背包问题

问题描述 限量背包问题&#xff1a;从m个物品中挑选出最多v个物品放入容量为n的背包。 问题分析 限量背包问题&#xff0c;可以用来解决许多问题&#xff0c;例如要求从n个物品中挑选出最多v个物品放入容量为m的背包使得背包最后的价值最大&#xff0c;或者总共有多少种放法…

先进制造业数字化转型,为什么基于传统存储无法完成?

本文是 XSKY 智能存储方案助力先进制造数字化转型系列文章中的第一篇&#xff0c;重点分享先进制造行业数字化转型过程中&#xff0c;对于数据存储的需求&#xff0c;以及为何传统存储架构无法很好满足这些需求。 随着智能制造的发展&#xff0c;自动化、信息化、智能化等技术…

unity基础(二)

debug方法 Debug.Log(" 一般日志 ");Debug.LogWarning(" 警告日志 ");Debug.LogError(" 错误日志 ");// Player Informationstring strPlayerName "Peter";int iPlayerHpValue 32500;short shPlayerLevel 10;long lAdvantureExp 1…

k8s部署Kubeflow v1.7.0

文章目录 环境介绍部署访问kubeflow ui问题记录 环境介绍 K8S版本&#xff1a;v1.23.17&#xff0c;需要配置默认的sc 参考&#xff1a;https://github.com/kubeflow/manifests/tree/v1.7.0 部署 #获取安装包 wget https://github.com/kubeflow/manifests/archive/refs/tag…

【方法】如何创建RAR格式压缩文件?

为了方便存储或者传输文件&#xff0c;我们经常会把文件打包成不同格式的压缩包&#xff0c;那如果想创建的是RAR格式的压缩包&#xff0c;要如何做呢&#xff1f; RAR是WinRAR软件独有的压缩格式&#xff0c;所以我们可以通过WinRAR软件来创建RAR格式压缩包。下面分享两种创建…

5000亿参数来了:微软将推出 MAI-1 模型硬刚谷歌和OpenAI|TodayAI

美国的科技巨头微软公司&#xff0c;正在积极扩展其人工智能&#xff08;AI&#xff09;技术的领域。最新消息显示&#xff0c;微软将推出一款名为MAI-1的全新AI模型&#xff0c;其规模巨大&#xff0c;预计将拥有5000亿个可调参数。这一开发工作由Inflection AI的CEO穆斯塔法苏…

cmake进阶:变量的作用域说明三(从函数作用域方面)

一. 简介 前一篇文章从函数作用域方面学习了 变量的作用域。文章如下&#xff1a; cmake进阶&#xff1a;变量的作用域说明一&#xff08;从函数作用域方面&#xff09;-CSDN博客cmake进阶&#xff1a;变量的作用域说明二&#xff08;从函数作用域方面&#xff09;-CSDN博客…

在Node.js(express 框架)中使用 JWT 进行身份认证

文章目录 一、JWT 认证机制二、安装 JWT 相关的包三、基本使用1、生成 JWT 字符串2、添加中间件&#xff0c;解析 JWT 字符串3、获取管理员信息(admin) 一、JWT 认证机制 JWT 认证机制&#xff08;图片来源于网络&#xff0c;侵权删除&#xff09;&#xff1a; 关于 JWT 原理可…

Wish、Newegg、Allegro卖家如何做测评补单 快速提升产品权重与销量

大部分主流平台卖家都会使用测评补单来增加产品权重、提高销量。经常会有一些平台的卖家咨询我其他平台能否像亚马逊一样通过测评补单来提升曝光。 其实大部分跨境电商都是可以通过补单来增加店铺权重提升产品排名。其实亚马逊相对来说风控是最严的&#xff0c;风控点多达几十…

Pytorch基础:内置类type的用法

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 在python中&#xff0c;一切数据类型都是对象&#xff08;即类的实例&#xff09;&#xff0c;包括整数、浮点数、字符串、列表、元组、集合、字典、复数、布尔、函数、…

Telnet的三种配置和SSH配置

Telnet的三种配置 实验配置思路&#xff1a; 配置接口IP地址&#xff1a; R1——配置接口IP地址 R2——配置接口IP地址 认证模式为none的配置 R1——认证模式配置为none R2——测试Telnet连接R1设备 认证模式为passwrd的配置 R1——认证模式配置为password R2——测试Telnet连…

C语言例题35、判断一个数是否是回文数

题目要求&#xff1a;输入一个5位数&#xff0c;判断它是不是回文数。即12321是回文数 #include <stdio.h>int main() {int x;int ge, shi, qian, wan;printf("请输入一个5位数&#xff1a;");scanf("%d", &x);ge x % 10; //个sh…

嵌入式硬件中PCB走线与过孔的电流承载能力分析

简介 使用FR4敷铜板PCBA上各个器件之间的电气连接是通过其各层敷着的铜箔走线和过孔来实现的。 由于不同产品、不同模块电流大小不同,为实现各个功能,设计人员需要知道所设计的走线和过孔能否承载相应的电流,以实现产品的功能,防止过流时产品烧毁。 文中介绍设计和测试FR4敷…

图解HTTP(2、简单的 HTTP 协议)

HTTP 协议用于客户端和服务器端之间的通信 请求访问文本或图像等资源的一端称为客户端&#xff0c;而提供资源响应的一端称为服务器端。 通过请求和响应的交换达成通信 请求必定由客户端发出&#xff0c;而服务器端回复响应报文 请求报文是由请求方法、请求 URI、协议版本、…

Baidu Comate 智能编码助手:编程新伙伴,效率新飞跃

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 一、Baidu Comate智能编码助手简介…

vue快速入门(五十七) 作用域插槽

注释很详细&#xff0c;直接上代码 上一篇 新增内容 作用域插槽实现表格删除数据 源码 App.vue <template><div id"app"><!-- 向子组件传值 --><MyTable :tableData"tableData"><!-- 接收子组件的传值&#xff0c;默认是对象格…

金三银四面试题(二十四):享元模式知多少?

什么是享元模式 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享对象来减少内存使用&#xff0c;从而提高性能。它主要用于处理大量细粒度对象的情况&#xff0c;通过将这些对象的可共享部分&#xff08;内部状态&#xff09…

“A”分考试经验分享:云计算HCIE考试请注意这几点...

大家好&#xff0c;我是誉天云计算HCIE的王同学&#xff0c;于4月2日"A"分通过了云计算3.0 HCIE的认证考试。 首先感谢誉天教育对我的辅导&#xff0c;感谢苗苗老师和石老师对我的帮助&#xff0c;通过这次考试让我对华为云计算有了一定的了解。接下来我就与大家分享…