【Apollo】阿波罗自动驾驶系统:驶向未来的智能出行(含源码安装)

在这里插入图片描述
前言

Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。
开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、成熟、安全的自动驾驶技术和数据开放给业界,旨在建立一个以合作为中心的生态体系,发挥百度在人工智能领域的技术优势,为合作伙伴赋能,共同促进自动驾驶产业的发展和创新。
Apollo 自动驾驶开放平台为开发者提供了丰富的车辆、硬件选择,强大的环境感知、高精定位、路径规划、车辆控制等自动驾驶软件能力以及高精地图、仿真、数据流水线等自动驾驶云服务,帮助开发者从 0 到 1 快速搭建一套自动驾驶系统。


📕作者简介:热爱跑步的恒川,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。
📗本文收录于Apollo的学习录系列,大家有兴趣的可以看一看
📘相关专栏C语言初阶、C语言进阶系列等,大家有兴趣的可以看一看
📙Python零基础入门系列,Java入门篇系列、docker技术篇系列正在发展中,喜欢Python、Java、docker的朋友们可以关注一下哦!

驶向未来的智能出行

  • 步骤一:安装 Linux 系统
  • (可选)步骤二:安装 NVIDIA GPU 驱动
  • 步骤三:安装 docker
  • (可选)步骤四:安装 NVIDIA Container Toolkit
  • 步骤五:下载并编译 Apollo 源码
  • 步骤六:运行 Dreamview 检验编译是否成功

步骤一:安装 Linux 系统

Apollo 软件系统依赖于 Linux 操作系统运行,而 Linux 操作系统种类繁多,且又分为服务器版本和桌面版本,这里我们选择当下比较流行的 Ubuntu 桌面操作系统的 64 位版本。安装 Ubuntu 18.04+ 的步骤,参见 官方安装指南。

(可选)步骤二:安装 NVIDIA GPU 驱动

Apollo 8.0 的一些模块的编译和运行需要依赖 NVIDIA GPU 环境(例如感知模块),如果您有编译和运行这类模块的需求,则需要安装 NVIDIA GPU 驱动。

您可以通过以下两种方式在 Ubuntu 上进行安装:

  • (推荐) apt-get 命令,参见 How to Install NVIDIA Driver。
  • 使用官方 runfile。

对于 Ubuntu 18.04+,只需执行以下命令即可:

sudo apt-get update
sudo apt-add-repository multiverse
sudo apt-get update
sudo apt-get install nvidia-driver-455

安装完毕后,可以输入 nvidia-smi来校验 NVIDIA GPU 驱动是否在正常运行(可能需要在安装后重启系统以使驱动生效)。如果成功,则会出现以下信息:

Prompt> nvidia-smi
Mon Jan 25 15:51:08 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.27.04    Driver Version: 460.27.04    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 3090    On   | 00000000:65:00.0  On |                  N/A |
| 32%   29C    P8    18W / 350W |    682MiB / 24234MiB |      7%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1286      G   /usr/lib/xorg/Xorg                 40MiB |
|    0   N/A  N/A      1517      G   /usr/bin/gnome-shell              120MiB |
|    0   N/A  N/A      1899      G   /usr/lib/xorg/Xorg                342MiB |
|    0   N/A  N/A      2037      G   /usr/bin/gnome-shell               69MiB |
|    0   N/A  N/A      4148      G   ...gAAAAAAAAA --shared-files      105MiB |
+-----------------------------------------------------------------------------+

步骤三:安装 docker

Apollo 8.0 依赖于 Docker 19.03+。要安装 Docker,参见 Install Docker Engine on Ubuntu。

Ubuntu 上的 Docker-CE 也可以通过 Docker 提供的官方脚本安装:

curl https://get.docker.com | sh
sudo systemctl start docker && sudo systemctl enable docker

您可以自由选择安装方式,安装之后,不要忘记执行 Linux 上的后续操作说明。更多内容,参见 使用非 root 权限运行 docker 和 配置开机启动 docker。

(可选)步骤四:安装 NVIDIA Container Toolkit

为了在容器内获得 GPU 支持,在安装完 docker 后需要安装 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

安装完成后,重启 Docker 以使改动生效。

sudo systemctl restart docker

安装完毕后,可以在APOLLO容器内输入nvidia-smi来校验 NVIDIA GPU 在容器内是否能正常运行(详见步骤五)。

步骤五:下载并编译 Apollo 源码

  1. 安装 git 并将源码 clone 下来:
cd ~/
sudo apt update
sudo apt install git -y
git init
git clone https://github.com/ApolloAuto/apollo.git

代码下载的时间视网速的快慢而有所区别,请耐心等待。

  1. 启动并进入 docker 容器,在终端输入以下命令:
cd ~/apollo
 bash docker/scripts/dev_start.sh

第一次进入 docker 时或者 image 镜像有更新时会自动下载 apollo 所需的 image 镜像文件,下载镜像文件的过程会很长,请耐心等待。

如果一切正常,则会见到以下信息:

[ OK ] Congratulations! You have successfully finished setting up Apollo Dev Environment.
[ OK ] To login into the newly created apollo_neo_dev_root container, please run the following command:
[ OK ]   bash scripts/edu_launcher.sh enter
[ OK ] Enjoy!

这个过程完成后,请输入以下命令以进入 docker 环境中:

bash docker/scripts/dev_into.sh

如果您在步骤二和步骤四分别安装了 NVIDIA GPU 驱动和 NVIDIA Container Toolkit,您可以输入nvidia-smi来校验 NVIDIA GPU 在容器内是否能正常运行,如果成功,则会出现以下信息:

root@in-dev-docker:/apollo_workspace# nvidia-smi 
Wed Sep 14 11:43:13 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  Off  | 00000000:03:00.0 Off |                    0 |
| N/A   31C    P0    38W / 300W |    153MiB / 32510MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      9962      C   nvidia-cuda-mps-server             29MiB |
+-----------------------------------------------------------------------------+
  1. 编译 Apollo 源码。

编译 Apollo,在终端输入以下命令,等待编译完成,编译过程耗时视机器配置的不同而有所区别,请耐心等待:

bash apollo.sh build

步骤六:运行 Dreamview 检验编译是否成功

进入 Apollo 容器环境。

 cd ~/apollo
 bash docker/scripts/dev_start.sh
 bash docker/scripts/dev_into.sh

注:如果您已在容器环境内,请忽略此步骤。

  1. 启动 dreamview。

在终端输入以下命令:

bash scripts/bootstrap.sh

如果启动成功,在终端会输出以下信息:

 nohup: appending output to 'nohup.out'
 Launched module monitor.
 nohup: appending output to 'nohup.out'
 Launched module dreamview.
 Dreamview is running at http://localhost:8888

在浏览器中输入以下地址访问 Dreamview:

http://localhost:8888
  1. 回放数据包。

在终端输入以下命令下载数据包:

wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record

输入以下命令可以回放数据包,在浏览器 DreamView 中应该可以看到回放画面:

cyber_recorder play -f demo_3.5.record --loop

如果成功在浏览器中看到类似以下画面,则表明您的 Apollo 系统已经编译并成功运行。

更全面的Apollo社区官网文档
  Apollo社区官网文档,主要为新手开发者提供Apollo相关介绍、以及上机场景和上车场景的实践说明,让新手开发者能快速了解Apollo并上手实操。在8.0中,我们优化了社区官网文档的结构,从开发者使用场景出发,针对不同场景提供应用实践案例指导以及扩展开发指导。
在这里插入图片描述
  社区官网文档:https://apollo.baidu.com/community/Apollo-Homepage-Document/Apollo_Doc_CN_8_0。
  另外还有活动任务《星火培训》:星火培训。
  Apollo 8.0从“新架构”、“新能力”两个重要层面进行了全面升级,从开发者的实际需求出发进行改良,帮助开发者更好、更快地熟悉和使用Apollo开放平台。此次Apollo开放平台8.0的推出,再次让Apollo开放平台在工程易用性上向前迈进一大步,降低操作难度、操作成本的门槛,让更多开发者可以简单方便地上手Apollo开放平台、投身自动驾驶技术领域。


如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞👍作为鼓励,并评论收藏一下,谢谢大家!!!
制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。

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

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

相关文章

异地访问Oracle数据库的解决方案:利用内网穿透实现PL/SQL远程连接的建议与步骤

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle ​ 小月糖糖主页 在强者的眼中,没有最…

uniapp 实现地图距离计算

在uniapp中实现地图距离计算可以借助第三方地图服务API来实现。以下是一种基本的实现方式: 注册地图服务API账号:你可以选择使用高德地图、百度地图等提供地图服务的厂商,注册一个开发者账号并获取API密钥。 安装相关插件或SDK:根…

VR智慧校园资中控管理平台综合提升了课堂教学质量

随着越来越多高校在课堂中引进VR虚拟仿真实训系统,为了方便老师对全班同学进行高效率地管理,VR中控平台应运而生。下面为您详细介绍VR中控平台在课堂教学中的应用优势。 VR中控系统安装在教师总控端,融合了课件、视频、3D动画等丰富的教学资源…

VScode中写Verilog时,iverilog语法自动纠错功能不起作用

VScode中编写Verilog时,iverilog语法自动纠错功能不起作用 问题:按照教程搭建vscode下Verilog编译环境,发现语法纠错功能一直无效,检查了扩展Verilog-HDL/SystemVerilog/Bluespec SystemVerilog的配置也没有任何问题。 错误原因&a…

软考:中级软件设计师:HTML

软考:中级软件设计师:HTML 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &#xff…

提升Java开发效率:掌握HashMap的常见方法与基本原理

文章目录 前言一、概述1. 认识HashMap2. HashMap 的作用和重要性3. 简要讲解 HashMap 的基本原理和实现方式 二、了解 HashMap 创建及其的常见操作方法1. HashMap的创建2. 添加元素 put()3. 访问元素 get()4. 删除元素 remove()5. 计算大小 size()6. 迭代 HashMap for-each7.判…

浏览器输入一个URL之后发生了什么?

URL解析DNS解析TCP连接TSL连接HTTP请求TCP挥手接收并解析响应 URL 解析 主要分为: 协议,eg http,https域名或者ip地址,eg www.baidu.com 域名相对于ip地址来说,更方便人们记忆,但是实际的网络传输中使用的是ip地址 端…

Redis 7 教程 数据持久化

总体 RDB 介绍 RDB 持久化以指定的时间间隔执行数据集的时间点快照 。 把某一时刻的数据和状态以文件的形式写到磁盘上,即使出现故障宕机,快照文件也不会丢失,数据的可靠性得到保证。快照文件就是RDB(Redis DataBase)文件(dump.rdb) 作用 在指定的时间间隔内将内存中的数…

leetcode304. 二维区域和检索 - 矩阵不可变(java)

前缀和数组 二维区域和检索 - 矩阵不可变题目描述前缀和代码演示 一维数组前缀和 二维区域和检索 - 矩阵不可变 难度 - 中等 原题链接 - 二维区域和检索 - 矩阵不可变 题目描述 给定一个二维矩阵 matrix,以下类型的多个请求: 计算其子矩形范围内元素的总…

FreeSWITCH 1.10.10 简单图形化界面3 - 阿里云NAT设置

FreeSWITCH 1.10.10 简单图形化界面3 - 阿里云NAT设置 0、 界面预览1、 查看IP地址2、 修改协议配置3、 开放阿里云安全组4、 设置ACL5、 设置协议中ACL,让PBX匹配内外网6、 重新加载SIP模块7、 查看状态8、 测试一下 0、 界面预览 http://myfs.f3322.net:8020/ 用…

面试之快速学习STL-常用算法

1. 排序算法 sort() 函数是基于快速排序实现的,故不保证相对位置,但是stable_sort (first, last)保证,它基于归并排序。sort()只适用于支持随机迭代器的容器(array, vector, deque),好理解,毕竟…

3d素材库素材资源平台大大节省老师备课时间

教育元宇宙相信大家有所耳闻,3D素材云库通过数字三维建模技术将现实中的物体、天气、灯光等1:1模拟还原到虚拟场景中,让人们在教育元宇宙平台中可视、可见、可感。 在元宇宙爆发的大背景下,3D互联网传播内容也将迎来一次全面升级&…

java八股文面试[java基础]——如何实现不可变的类

知识来源: 【23版面试突击】如何实现不可变的类?_哔哩哔哩_bilibili 【2023年面试】怎样声明一个类不会被继承,什么场景下会用_哔哩哔哩_bilibili

leetcode 567. 字符串的排列(滑动窗口-java)

滑动窗口 字符串的排列滑动窗口代码演示进阶优化版 上期经典 字符串的排列 难度 -中等 leetcode567. 字符串的排列 给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。 换句…

Focal Loss-解决样本标签分布不平衡问题

文章目录 背景交叉熵损失函数平衡交叉熵函数 Focal Loss损失函数Focal Loss vs Balanced Cross EntropyWhy does Focal Loss work? 针对VidHOI数据集Reference 背景 Focal Loss由何凯明提出,最初用于图像领域解决数据不平衡造成的模型性能问题。 交叉熵损失函数 …

用AI重构的钉钉,“钱”路在何方?

点击关注 文|郝 鑫,编|刘雨琦 钉钉2023年生态大会,离开了两年的无招,遇到了单飞9天的钉钉。 “做小钉钉、做好钉钉、做酷钉钉”,无招重申了钉钉的方向。 无招提到的三点,再加上“高质量增长”…

Doris异常处理

1、decimal 字段异常 修改为 2、连接超时 Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure The last packet successfully received from the server was 1,068 milliseconds ago. The last packet sent successfully to the ser…

Redis限流实践:实现用户消息推送每天最多通知2次的功能

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

Docker数据管理(数据卷与数据卷容器)

目录 一、数据卷(Data Volumes) 1、概述 2、原理 3、作用 4、示例:宿主机目录 /var/test 挂载同步到容器中的 /data1 二、数据卷容器(DataVolumes Containers) 1、概述 2、作用 3、示例:创建并使用…

AIGC ChatGPT 实现动态多维度分析雷达图制作

雷达图在多维度分析中是一种非常实用的可视化工具,主要有以下优势: 易于理解:雷达图使用多边形或者圆形的形式展示多维度的数据,直观易于理解。多维度对比:雷达图可以在同一张图上比较多个项目或者实体在多个维度上的表现。数据关系明显:通过雷达图,可以直观的看出各个数…