X86下一文带你构建Apollo9.0运行环境(基于Ubuntu20.04避坑版)

X86下一文带你构建Apollo9.0运行环境基于Ubuntu20.04避坑版

  • 前言
  • 准备
  • 安装基础软件
    • 1.安装Docker19.03+
    • 安装Nvidia驱动
    • 安装配置Nvidia container toolkit
  • 下载Apollo源码(笔者下载的是releases下9.0.0版本,大家可以参考)
  • 编译Apollo9.0
    • 下载资源包 (非40系显卡可以忽略,笔者显卡为RTX4060)
    • 启动Apollo环境容器
    • 进入Apollo环境容器
    • 编译
  • 编译过程中可能出现的问题
    • 出现Socket closed导致编译未完成
  • 总结

前言

书接上文,笔者历经九九八十难之后终于在VM虚拟机上成功将apollo部署成功,然而在用的时候发现VM没法调用虚拟机资源,于是推倒重干,在电脑上装WIN+Linux双系统把性能吃满,现在在x86上重新部署apollo,与虚拟机上有些区别,笔者也是踩了很多坑,现分享给诸位道友们,愿诸位少走点弯路,快速的进入到apollo的世界

准备

  • 一台已经安装ubuntu系统的电脑(Ubuntu系统的版本可以参考Apollo官方文档里面的配置表适配安装,我这里装的是Ubuntu20.04)

安装基础软件

1.安装Docker19.03+

  • 查看本机当前的docker版本
docker version

查询docker版本

  • 安装docker(如果已有docker且版本 > 19.03请忽略,否则需重新安装(如果docker版本小于19.03,则需先卸载当前版本再重新安装))
sudo apt-get update
sudo apt-get install docker.io
  • 安装完成之后可以通过下述命令查看是否安装成功
docker version

docker安装成功

  • docker配置
sudo systemctl start docker
sudo systemctl enable docker

通过上述命令对docker进行配置

安装Nvidia驱动

  • 打开Ubuntu自带的软件更新界面
  • 选择合适的显卡驱动安装显卡驱动(第一个即可)
    安装驱动

安装配置Nvidia container toolkit

  • 安装Nvidia container toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get -y update
sudo apt-get install -y nvidia-docker2
  • 确认Nvidia container toolkit是否安装成功:检测出版本号即为安装成功
    检测nvidia container toolkit 是否安装成功
  • 重启docker
sudo systemctl restart docker

下载Apollo源码(笔者下载的是releases下9.0.0版本,大家可以参考)

  • 执行以下命令克隆 Apollo 源码
# SSH 方式
git clone git@github.com:ApolloAuto/apollo.git
 
# HTTPS 方式
git clone https://github.com/ApolloAuto/apollo.git
  • 切换到最新分支:
cd apollo
git checkout master
git branch -a
  • 切换到最新分支:
cd apollo
git checkout master
git branch -a

切换分支
如上图所示*号在master前面即表示当前已切换到master分支

编译Apollo9.0

下载资源包 (非40系显卡可以忽略,笔者显卡为RTX4060)

链接: https://pan.baidu.com/s/1Z42Zsad8NMqOSScE9pO99w

提取码: r5cn

使用上述链接下载资源包

启动Apollo环境容器

  • 更换docker/scripts/dev_start.sh文件(非40系显卡可以忽略)
    更换刚才所下载的资源包里面的dev_start.sh
    替换dev_start.sh
  • 更换docker源
    修改/etc/docker/daemon.json文件:添加以下源
"registry-mirrors": ["https://dockerproxy.cn"]

更换docker源
然后再执行下面命令

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
  • 在 apollo 目录下输入以下命令来启动环境容器
bash docker/scripts/dev_start.sh

操作成功后将会有如下提示输出
启动环境容器成功

进入Apollo环境容器

  • 执行如下的命令进入到apollo容器
bash docker/scripts/dev_into.sh

在这里插入图片描述
如上图所示即为成功进入Apollo环境容器

编译

  • 替换modules/perception/common/inference/tensorrt/rt_legacy.h文件(非40系显卡可以忽略)
    替换刚才所下载的资源包里面的rt_legacy.h
    替换rt_legacy.h
  • 替换third_party/centerpoint_infer_op/workspace.bzl文件(非40系显卡可以忽略)
    替换刚才所下载的资源包里面的workspace.bzl
    替换workspace.bzl
  • 替换third_party/paddleinference/workspace.bzl文件(非40系显卡可以忽略)
    替换刚才所下载的资源包里面的paddleinference/workspace.bzl
    替换paddleinference/workspace.bzl
  • 在容器内的 /apollo 目录下输出以下命令编译整个工程
./apollo.sh build

编译成功
出现如上图所示即为编译成功

编译过程中可能出现的问题

出现Socket closed导致编译未完成

14, error message: 'Socket closed', log file: '/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/server/jvm.out')
  • 解决方案
    这是硬件资源耗尽导致OOM,可以自行修改脚本来控制编译使用的硬件资源:
    在scripts/apollo_base.sh中第755和757行做如下修改,然后重新编译
--jobs=${count} --local_ram_resources=HOST_RAM*0.7"

改为

--jobs=2 --local_ram_resources=HOST_RAM*0.5"

如下图所示
bug解决

总结

以上就是笔者的踩坑避坑经验之享,愿能帮到诸位道友!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue-cli,element-plus,axios,proxy

一、vue-cli vue-cli俗称vue脚手架,是vue官方提供的快速生成vue 工程化项目的工具。 1.官网:https://cn.vuejs.org/ 中文官网: https://cli.vuejs.org/zh/ 特点:基于webpack,功能丰富且易于扩展,支持创建vue2和vu…

对话总结:Scale AI的创始人兼CEO Alex Wang

AI的三大支柱 计算:主要由大公司如NVIDIA推动。算法:顶尖实验室如OpenAI主导。数据:Scale致力于推动数据进展。前沿数据的重要性 与人类智能相比较,前沿数据是AI发展的关键。互联网数据是机器与人类合作的结果。语言模型的发展 第一阶段:原始的Transformer论文和GPT的小规…

一书直接讲透自然语言处理《Getting Started with Google BERT_ Build and train》

《Getting Started with Google BERT: Build and Train》是一本面向初学者和中级读者的指南,旨在帮助他们理解和使用Google的BERT(Bidirectional Encoder Representations from Transformers)模型。BERT是近年来自然语言处理(NLP&…

Linux下的git开篇第一文:git的意义

目录 1.git版本控制器 2.git gitee&&github 3.Linux中gitee的使用 ( 三板斧 git add git commit -m " " git push ) 4.git log 查看之前的修改信息 (所有提交日志) 5.git status 查看工作目录与本地…

透传 vs 非透传|数据传输效率与安全性的权衡及应用指南

官方原文:一分钟搞懂透传和非透传的区别-成都纵横指控 在当今数字化时代,数据传输已经成为各行各业的关键环节。在数据通信和物联网应用中,"透传"和"非透传"是两个常见且重要的概念。了解它们的区别,对于选择合适的通信方式至关重要。 什么是…

【java】前端RSA加密后端解密

目录 1. 说明2. 前端示例3. 后端示例3.1 pom依赖3.2 后端结构图3.3 DecryptHttpInputMessage3.4 ApiCryptoProperties3.5 TestController3.6 ApiCryptoUtil3.7 ApiDecryptParamResolver3.8 ApiDecryptRequestBodyAdvice3.9 ApiDecryptRsa3.10 ApiCryptoProperties3.11 KeyPair3…

C++(Qt)软件调试---内存调试器Dr.Memory(21)

C(Qt)软件调试—内存调试器Dr. Memory(21) 文章目录 C(Qt)软件调试---内存调试器Dr. Memory(21)[toc]1、概述🐜2、安装Dr.Memory🪲3、命令行使用Dr.Memory🦗4、Qt Creator集成使用Dr.Memory&…

excel快速入门(二)

Excel的概念说明 文章目录 Excel的概念说明常见术语说明单元格/单元格区域活动单元格/单元格区域行或列单元格引用相对引用绝对引用混合引用 Excel的常见格式说明单元格格式数字格式 Excel 工作表编辑鼠标指针介绍1.白色十字状2.单向黑色箭头状3.双向单竖线箭头状4.双向双竖线箭…

AI新掌舵:智享AI直播系统:直播界的新浪潮还是真人主播的终结者?

AI新掌舵:智享AI直播系统:直播界的新浪潮还是真人主播的终结者? 在数字化浪潮的汹涌澎湃中,人工智能(AI)以其前所未有的速度渗透至各行各业,其中,直播领域正经历着一场前所未有的变革…

C# CS1612 尝试修改集合中值类型的情况

在C#中,发现尝试直接修改集合中值类型的中的值发生报错 提示“它不是变量”,通过官方索引的链接可知,尝试修改某一值类型,但是该值类型作为中间表达式的结果生成但不存储在变量中,会发生报错。 正确做法是将其赋值给局…

【湖南步联科技身份证】 身份证读取与酒店收银系统源码整合———未来之窗行业应用跨平台架构

一、html5 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><script type"text/javascript" src"http://51.onelink.ynwlzc.net/o2o/tpl/Merchant/static/js…

nginx 安装(Centos)

nginx 安装-适用于 Centos 7.x [rootiZhp35weqb4z7gvuh357fbZ ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.9.2009 (Core) Release: 7.9.2009 Codename: Core# 创建文件…

基于springboot vue网上摄影工作室系统设计与实现

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码

总目录&#xff1a;人脸检测与表情分类 https://blog.csdn.net/whiffeyf/category_12793480.html 目录 0 相关资料1 面部表情识数据集2 模型下载3 训练 0 相关资料 面部表情识别2&#xff1a;Pytorch实现表情识别(含表情识别数据集和训练代码)&#xff1a;https://blog.csdn.n…

Linux系统安装和配置 VNC 服务器

文章目录 1.安装 GNOME 桌面环境2.安装 VNC 服务器&#xff08;tigervnc-server&#xff09;3.为本地用户设置 VNC 密码4.设置 VNC 服务器配置文件5.启动 VNC 服务并允许防火墙中的端口 1.安装 GNOME 桌面环境 [rootserver6 ~]# dnf groupinstall "workstation" -y成…

Linux——k8s组件

kubernetes 使用1.31.1 版本搭建集群核心组件&#xff0c;选择flannel 网络插件为整体集群的运行提供网络通信功能。 flannel 网络插件 kube-flannel kube-flannel-ds-9fgml 1/1 Running 1 (18m ago) 2d21h kube-flannel kube-flannel-ds-ghwbq …

blender设置背景图怎么添加?blender云渲染选择

Blender是一款功能强大的3D建模软件&#xff0c;它以流畅的操作体验和直观的用户界面而闻名。使用Blender&#xff0c;你可以轻松地为你的3D模型添加背景图片。 以下是具体的操作步骤&#xff1a; 1、启动Blender&#xff1a;首先&#xff0c;打开Blender软件。访问添加菜单&a…

jQuery——offset 和 position

获取/设置标签的位置数据 offset&#xff08;&#xff09;&#xff1a;相对页面左上角的坐标 position&#xff08;&#xff09;&#xff1a;相对于父元素左上角的坐标 本文分享到此结束&#xff0c;欢迎大家评论区相互讨论学习&#xff0c;下一篇继续分享jQuery中scroll的学…

好用的电容笔有哪些推荐?2024盘点五款高性价比平替电容笔!

近几年&#xff0c;平板电脑等电子设备已经成为我们学习、工作和创作的重要工具。而电容笔作为这些设备的重要配件&#xff0c;更是受到了广泛地欢迎。然而&#xff0c;苹果原装电容笔价格较高&#xff0c;对于很多用户来说&#xff0c;寻找一款高性价比的平替电容笔成为了他们…

ClickHouse | 查询

1 ALL 子句 2 ARRAY JOIN 使用别名 :在使用时可以为数组指定别名&#xff0c;数组元素可以通过此别名访问&#xff0c;但数组本身则通过原始名称访问 3 DISTINCT子句 DISTINCT不支持当包含有数组的列 4 FROM子句 FROM 子句指定从以下数据源中读取数据: 1.表 2.子…