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

news2025/6/24 15:49:37

在这里插入图片描述
前言

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开放平台、投身自动驾驶技术领域。


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

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

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

相关文章

VMware 助力企业轻松驾驭生成式 AI 的力量

在 8 月 23 日的 VMware Explore 2023 大会上,VMware(NYSE:VMW)推出全新 Private AI 产品,助力企业采用生成式 AI 并挖掘可信数据的价值。Private AI 是一种架构方案,可解锁 AI 商业效益并满足企业实际隐私…

【实用黑科技】息声后的元宇宙踪迹——“创世界社区“,普通人构建游戏世界将会越来越容易

在这里插入图片描述 👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于…

基于Java swing和mysql实现学生信息管理系统(源码+数据库+运行指导视频)

一、项目简介 本项目是一套基于Java swing和mysql实现学生信息管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过…

Nginx+Tomcat的动静分离与负载均衡

目录 前言 一、案例 二、Nginx的高级用法 三、tomcat部署 四、Nginx部署 五、测试 总结 前言 通常情况下,一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等情况,不能单独应用于生产环境下,所以我们需要一套更…

展会动态 | 迪捷软件邀您参加【AUTOSEMO“恒以致远,共创共赢”主题研讨会】

大会简介 2023年,中国汽车工业迎来70年华诞,仅用70年,中国就已建成全球规模最大、品类最齐全、配套最完整的汽车工业体系。 中国汽车工业协会软件分会中国汽车基础软件生态标准专委会(China Automotive Basic Software Ecosyste…

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶(AD)任务通常分为感知、预测和规划。在传统范式中,AD中的每个学习模块分别使用自己的主干,独立地学习任务。 以前,基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

19- 富文本tinymce 和 二进制模型BLOB(表情存储)

富文本tinymce 中文文档: TinyMCE中文文档中文手册 (1). 下载(5.2.2版本) -> 解压放到 static 文件下 (2). static / js / tiny.js 设置富文本 二进制模型BLOB(表情存储) (1). 定义模型类型 # 两种方式: # 1. 定义模型类为Text,直接修改数据库类型为BLOBcontent db.Colum…

KalmanFilter卡尔曼滤波

预测(prediction) 状态变量 x k A x k − 1 B u k − 1 w k − 1 x_k Ax_{k-1} Bu_{k-1} w_{k-1} xk​Axk−1​Buk−1​wk−1​ 其中n维向量 x k x_k xk​为k时刻的系统状态变量,n维向量 x k − 1 x_{k−1} xk−1​是k-1时刻的系统状…

Docker容器学习:搭建私有镜像仓库Harbor操作

目录 系统环境: 安装Docker-Compose 下载并安装Harber 启动Harbor 使用Harbor 上传下载镜像到harbor仓库 系统环境: Centos7.9Docker-ce:24 安装Docker-Compose curl -L "https://github.com/docker/compose/releases/download/v2.20.3/do…

【JUC系列-03】熟练掌握Atomic原子系列基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

Gossip协议

Gossip协议 一、Gossip协议1.1 工作原理1.2 Gossip优点1.3 Gossip传播方式1.3.1 Anti-Entropy(反熵)1.3.2 Rumor-Mongering(谣言传播)1.3.3 结合 1.4 Gossip协议的通信方式1.4.1 Push1.4.2 Pull1.4.3 Push&Pull 二、手撸简易版…

媒介盒子:医疗软文怎么写才能实现营销效果?

随着互联网的快速发展,医疗行业也逐渐意识到了网络营销的重要性。而作为网络营销的一种形式,医疗软文在传播医疗知识、宣传医疗品牌方面具有独特的优势。本文将从选题、内容、形式等多个方面进行探讨,如何写一篇有效的医疗营销软文? 1、选题非常关键 首…

Python“牵手”天猫商品列表数据,关键词搜索天猫API接口数据,天猫API接口申请指南

天猫平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范,天猫API接口是指通过编程的方式,让开发者能够通过HTTP协议直接访问天猫平台的数据,包括商品信息、店铺信息、物流信息等,从而实现天猫平台…

MySql014——分组的GROUP BY子句排序ORDER BYSELECT子句顺序

前提:使用《MySql006——检索数据:基础select语句(使用products表、查询单列、多列、所有列、DISTINCT去除重复行、LIMIT限制返回结果的行数、了解完全限定)》中创建的products表 一、GROUP BY子句基础用法 SELECT vend_id, COU…

【Debug】解决RecursionError: maximum recursion depth exceeded in comparison报错

🚀Debug专栏 目录 🚀Debug专栏 ❓❓问题: 🔧🔧分析: 🎯🎯解决方案: ❓❓问题: 循环中报错RecursionError: maximum recursion depth exceeded in compari…

IC设计各岗位收入水平对比,看看哪个更适合你?

根据人才招聘平台对于2023年已有数据统计,芯片工程师岗位均薪为26012元,位列全行业第一。 这里需要说明一下,这里的“芯片工程师”涵盖了设计、制造、封测等多环节岗位。并非只有芯片设计岗。 从行业招聘薪酬同比增速来看,电子技…

Bigemap在路桥行业是怎么应用的?

选择Bigemap的原因: 奥维下架了,后来了解到的bigemap,于是测试了这款软件 使用场景: 下载影像、矢量路网做前期策划,下载完数据后导出cad ,做一些标注,最终出图下载等高线,作为前期选址依据 …

Linux环境下SVN服务器的搭建与公网访问:使用cpolar端口映射的实现方法

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

在日本做程序员能攒到钱吗?

如果你就是无欲无求,和人合租,自己做饭,不买高级食材,没有业余爱好,那我可以肯定告诉你一定能攒下钱,问题你是吗?能不能攒下钱丰俭由人,拿的少也有人能攒下钱,拿的多的也…

安防视频监控平台EasyNVR视频监控汇聚平台页面无法上传授权文件的问题解决方案

TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端…