01_搭建百度apollo环境实操可用

2023-05-16

搭建百度apollo环境

  • 0-前言
  • 1-目标
  • 2-方法
  • 3-Apollo环境搭建
    • 3.1-CPU版
      • 3.1.1前置依赖硬件条件
      • 3.2-GPU版
      • 前置依赖软件
        • 1.安装 Ubuntu 18.04
        • 2.安装 GIT
        • 3.安装 Docker 引擎
      • 3.1.3克隆 Apollo 源码
      • 3.1.4启动 Apollo Docker 开发容器
      • 3.1.4进入 Apollo Docker 开发容器
      • 3.1.5容器中构建 Apollo
      • 3.1.6运行 Apollo
        • 1 启动 Apoll
      • 2.选择驾驶模式和地图
        • 3.回放 Demo 数据
  • 参考

0-前言

为什么要这件事

无人驾驶行业涉及范围很广,应用到的往往是前言技术,资料又比较零散,少有成体系的讲理论与实战。我将要做的事情就是通过仿真的方式,带你通过可视的方法理解无人驾驶。

1-目标

项目的目标是给想要了解,转行无人驾驶或者,想要从事无人驾驶某个专项深耕的人,简历一个无人驾驶的知识星球。建立一个无人驾驶领域的业务体系,搭建出一套可debug的仿真环境,实战学习相关算法,提高个人能力提高专项技能。

2-方法

项目将以百度开源apollo项目为项目的开端,带你如何搭建一套可debug的环境,从实践入手,摆脱纯理论阶段。

一点点的通过仿真的方式,了解规控算法,感知算法等。一点点的深耕其实现原理和业务设计理论(业务上为什么要这么做)。

3-Apollo环境搭建

如果你还你点不了解无人驾驶,没关系。我们先搭建一套apollo环境,从实践的角度,跑起来看看怎末玩。

3.1-CPU版

3.1.1前置依赖硬件条件

特点是cpu要新,内存和存储要大

|CPU:Intel 11代酷睿i9 11900(八核十六线程,最大睿频5.2GHz)

|内存:威刚DDR4 32G 3200(可根据需求扩展至128G)

|硬盘:西数黑盘500G

3.2-GPU版

|CPU:Intel 11代酷睿i9 11900(八核十六线程,最大睿频5.2GHz)

|内存:威刚DDR4 32G 3200(可根据需求扩展至128G)

|硬盘:西数黑盘500G

|显卡:NVIDIA GeForce RTX2060 12G

安装 NVIDIA 显卡驱动

可以通过界面的方式安装

随后,可以通过在终端中执行 nvidia-smi 命令来查看 NVIDIA 显卡工作是否正常(完成驱动安装后可能需要重启),正常情况下终端将显示下面的信息:

Sun Mar 27 10:35:07 2022
±----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 CUDA Version: 11.4 |
|-------------------------------±---------------------±---------------------+
| 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 NVIDIA GeForce … Off | 00000000:01:00.0 On | N/A |
| 0% 37C P8 20W / 184W | 553MiB / 12026MiB | 7% Default |
| | | N/A |
±------------------------------±---------------------±---------------------+

±----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1113 G /usr/lib/xorg/Xorg 215MiB |
| 0 N/A N/A 1343 G /usr/bin/gnome-shell 61MiB |
| 0 N/A N/A 2819 G /usr/lib/firefox/firefox 226MiB |
| 0 N/A N/A 5156 G …404678048605711115,131072 8MiB |
| 0 N/A N/A 24499 G …AAAAAAAAA= --shared-files 33MiB |
| 0 N/A N/A 25945 G /usr/lib/firefox/firefox 1MiB |
±----------------------------------------------------------------------------+

安装 NVIDIA 容器工具包

如果是在物理机中安装的 Ubuntu,且机器配有 NVIDIA 显卡,在安装了驱动的前提下,还需要安装 NVIDIA 容器工具包以运行 Apollo Docker 镜像中的 CUDA:

distribution=$(. /etc/os-release;echo I D ID IDVERSION_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

前置依赖软件

  • 安装 Ubuntu 18.04
  • 安装 Git
  • 安装 Docker 引擎

1.安装 Ubuntu 18.04

系统的安装参考网上教程;

2.安装 GIT

为什么要安装git,因为要从仓库上拉取代码;由于代码较大,所以使用ssh的方式最稳妥,不会中途断掉;所以要有一个github账号.

  • ubuntu安装git
  • 生成git ssh key
  • 添加key 到GitHub上

参考链接

https://www.cnblogs.com/zxlovenet/p/4571850.html

3.安装 Docker 引擎

安装Docker 19.03 及以上版本,在终端中直接执行下述命令即可完成 Docker 社区版的安装:

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

重启 Docker 守护进程以使改动生效:

sudo systemctl restart docker

3.1.3克隆 Apollo 源码

推荐使用过 SSH 方式克隆 Apollo 源码仓库:

# 使用 SSH 的方式
git clone git@github.com:ApolloAuto/apollo.git

3.1.4启动 Apollo Docker 开发容器

进入到 Apollo 源码根目录,打开终端,执行下述命令以启动 Apollo Docker 开发容器:

sudo ./docker/scripts/dev_start.sh

不出意外得话,启动成功后将得到下面信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0XioVjk-1651472623736)(
在这里插入图片描述

3.1.4进入 Apollo Docker 开发容器

启动 Apollo Docker 开发容器后,执行下述命令进入容器:

sudo ./docker/scripts/dev_into.sh

可以发现,进入容器后终端信息发生了相应变化,后面的操作都将在容器中进行:

![进入 Apollo docker 开发容器
在这里插入图片描述
若提示 [WARNING] nvidia-smi not found. CPU will be used. 请确认是否要用gpu编译,不是则忽略。若是,请检查NVIDIA 容器工具包 是否安装,重新执行sudo ./docker/scripts/dev_start.sh可解决。

3.1.5容器中构建 Apollo

进入 Apollo Docker 开发容器后,在容器终端中执行下述命令构建 Apollo:sudo ./apollo.sh build 自动适配用cpu编译还是gpu

sudo ./apollo.sh build 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UuFJZO8l-1651472623738)(D:\自动驾驶\AutoDriving\note\picture\image-20220327104702662.png)]
用时739秒编译成功后如下 Enjoy!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rLUV3CEH-1651472623738)(D:\自动驾驶\AutoDriving\note\picture\image-20220327104521869.png)]

3.1.6运行 Apollo

1 启动 Apoll

完成 Apollo 构建后,在容器终端中执行下述命令:

./scripts/bootstrap.sh start

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hPHNXOY8-1651472623739)(D:\自动驾驶\AutoDriving\note\picture\image-20220302214849969.png)]
上述命令会启动 DreamView 并使能模块监控机制,在浏览器中访问 http://localhost:8888 来显示 DreamView 界面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1EHpIhG-1651472623739)(D:\自动驾驶\AutoDriving\note\picture\image-20220302215021865.png)]

2.选择驾驶模式和地图

在 DreamView 界面的对应下拉框中选择驾驶模式为“Mkz Example,选择地图为“Sunnyvale with Two Offices”:
DreamView 中选择驾驶模式和地图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ensksG3q-1651473530660)(D:\自动驾驶\AutoDriving\note\picture\image-20220302215221384.png)]

3.回放 Demo 数据

在容器终端中执行下述命令下载 demo 数据:

source cyber/setup.bash # 回放包需要设置下环境变量
cd docs/demo_guide/
python3 record_helper.py demo_3.5.record

由于网络原因,下载可能失败,可以点击这里手动下载并将数据放到 apollo/docs/demo_guide/ 目录下。继续在容器终端中执行下述命令来播放数据,-l 表示循环播放(loop):

cyber_recorder play -f demo_3.5.record -l

至此,DreamView 界面中将呈现出自车规划轨迹、他车预测轨迹、路网等各种信息:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nS316uQq-1651472623740)(D:\自动驾驶\AutoDriving\note\picture\1646231298454.gif)]

参考

https://blog.shipengx.com/archives/e4b9c8ad.html

https://blog.csdn.net/weixin_45929038/article/details/120113008

感兴趣点我blibli

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

01_搭建百度apollo环境实操可用 的相关文章

  • freertos入门之EventGroup

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • freertos入门之Timer

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • freertos入门之StreamBuffer

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 设置cpp-httplib 服务器模式模式下的线程池大小 以及如何增加默认处理函数 以便能够实现http请求转发

    先说说默认的创建的线程池数量 原因是某天调试在gdb调试下 一启动程序发现 开启了好多线程 如下图 因为我们程序 没几个线程 数了下 居然有60多个线程 不需要那么多 所以看下 httplib的源码 构造函数的时候 设置了最大线程池数量 看
  • freertos入门之StreamBuffer

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • arduino-esp32 入门之wifi连接热点

    参考 xff1a https github com espressif arduino esp32 blob master libraries WiFi examples WiFiClient WiFiClient ino span cla
  • esp32-arduino入门之点亮led

    参考 xff1a https learncplusplus org how to program arduino with c span class token macro property span class token directi
  • stm32 学习资料汇总

    外设库以及example xff1a Google 搜索 STM32 Standard Peripheral Libraries
  • HttpClient学习研究---第四章:HTTP authenticationHTTP身份验证

    第四章 HTTP authentication HTTP身份验证 HttpClient provides full support for authentication schemes defined by the HTTP standar
  • Linux系统下常用的3个网络测试工具!

    在Linux系统中 xff0c 有很多用于管理和监测网络连接的命令 xff0c 其中ping traceroute和nslookup是比较常用的网络命令 xff0c 可以用来测试网络 诊断网络故障等等 xff0c 以下是详细的内容 xff1
  • TCP.02.SELECT模型

    文章目录 SELECT模型简介SELECT模型流程SELECT原理SELECT代码实现fd set 数组及基本操作SELECT函数参数2 xff08 重点 xff09 参数3参数4 关闭所有SOCKET句柄处理控制台窗口关闭事件整体代码思考
  • Node.js http 模块详解:request 对象

    前言 前文介绍了 http 模块的基本用法 xff0c 主要就是调用 createServer 和 listen 方法来创建和启动服务 要处理具体的 HTTP 请求 xff0c 就要在 createServer 方法中写点什么 本文来介绍处
  • 如何确认串口波特率

    文章目录 1 盲扫一遍2 示波器测量1bit时间3 逻辑分析仪确认 背景 xff1a 手上有一个模块使用串口通信但是不知道其波特率 xff0c 如何确认它的波特率呢 xff1f 1 盲扫一遍 波特率有常用的配置9600 115200 230
  • curl命令常用参数

    curl命令常用参数 curl简介常用方法将远程文件下载到本地 o并指定名称指定请求方式 X显示响应结果 v携带用户名 密码 u携带请求头 H查看服务端响应头 i只显示http response的头信息 I自动跳转 L模拟dns解析 res
  • 学习ZLmediaKit流媒体服务器时候遇到的问题

    照zlmediakit的源码 自己复制了一份 然后有的地方编译不过修改了部分 测试的时候发现有两个问题 第一是 ffmpeg的ffplay 能播放 vlc不能播放 第二个问题是directProxy设置为0的时候 推流的时候 然后用ffpl
  • 如何在C/C++中使用pi (π) 值

    在math h有一个宏定义M PI if defined USE MATH DEFINES amp amp defined MATH DEFINES DEFINED define MATH DEFINES DEFINED Definitio
  • 关于#include<bits/stdc++.h>

    偶然发现 span class hljs preprocessor include lt bits stdc 43 43 h gt span 包括了C 43 43 几乎所有的头文件 xff0c 感觉以后可以返璞归真了 回顾自己不长的竞赛历程
  • 单片机STM32直连电调控制航模涵道电机的方法总结

    单片机STM32直连电调控制航模涵道电机的方法总结 文章目录 单片机STM32直连电调控制航模涵道电机的方法总结前言一 硬件情况二 涵道电机两种常见的驱动方式1 有线控制方式2 无线控制方案 解决方案 前言 由于项目需要 xff0c 我需要
  • PX4之常用函数解读

    PX4Firmware 经常有人将Pixhawk PX4 APM还有ArduPilot弄混 这里首先还是简要说明一下 xff1a Pixhawk是飞控硬件平台 xff0c PX4和ArduPilot都是开源的可以烧写到Pixhawk飞控中的
  • PX4项目学习::(七)飞控栈:commander

    PX4的飞行控制程序通过模块来实现 xff0c 与飞控相关的模块主要有commander xff0c navigator xff0c pos control xff0c att control这几个 xff0c 分别可以在src modul

随机推荐

  • PX4项目学习::(五)模块代码启动流程

    54条消息 PX4 模块代码启动流程 zhao23333的博客 CSDN博客
  • TX2指南(一)TX2接显示器的问题

    TX2开发板一定要适配HDMI显示器 xff0c 使用转接头在VGA显示器会显示 input signal out of range xff01 所以目前来看手上的这套TX2只能适配HDMI显示器 xff0c 目前还不清楚是不是所有的TX2
  • 推荐定位信息(GPRMC)

    推荐定位信息 GPRMC GPRMC lt 1 gt lt 2 gt lt 3 gt lt 4 gt lt 5 gt lt 6 gt lt 7 gt lt 8 gt lt 9 gt lt 10 gt lt 11 gt lt 12 gt hh
  • linux中使用shell命令打开指定文件夹(Nautilus@GNOME)

    在GNOME中是Nautilus 鹦鹉螺 xff0c 而KDE中是Konqueror nautilus 图形化桌面包括了一个叫做 Nautilus 的文件管理器 它给你提供了系统和个人文件的图形化显示 然而 xff0c Nautilus 不
  • 在ubuntu20.4下安装ardupilot 4.3.6

    这次重新安装真的是遇到了好多坑啊 xff01 从github上靠过来按照之前的那篇文章流程做完之后 xff0c 还会有一些别的问题 首先是module里面的包都没有拷过来 xff0c 所以需要用git add将文件都添加过来 之后进行编译时
  • Visual Studio 2022 搭建GLFW OpenGL开发环境

    最近工作需要 需要写一个全景的视频播放器 网上搜了下大概解决方案是 ffmpeg 43 opengl b站有很多视频 按照视频 搭建了OpenGL的开发环境 先去GLFW的网站下载 windows平台的库文件 为什么使用GLFW 因为GLF
  • Pixhawk原生固件PX4之自定义MAVLink消息

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 本着想在PX4基础上加点什么东西的我又开始折腾了 xff0c 先尝试用串口加传感器通过QGC查看 xff0c 要是能在原固件上加点内容就棒哉了 先立Flag 自定义u
  • Pixhawk原生固件PX4之MAVLink协议解析

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a PX4 对Mavlink 协议提供了良好的原生支持 该协议既可以用于地面站 Ground ControlStation GCS 对无人机 UAV 的控制 xff0c
  • GPS和RTK的基本知识

    RTK的基本原理介绍 xff0c RTK一般由基站 移动站以及数据链路组成 下文摘自天宝 Trimble 官网 原文链接 xff1a http www trimble com OEM ReceiverHelp V4 44 en What i
  • freeRTOS系统栈与任务栈

    中断过来之后 xff0c 由任务栈切换到main stack xff08 系统栈 xff09 任务栈保存 系统栈的地址范围为0xfede8000 4K xff0c 向下生长 xff0c 所以按照ld的定义 xff0c 0xfede9000
  • ROS下上位机和stm32单片机通信

    1 需要实例化串口节点建立监听者listener和发布之publisher 2 上位机通过游戏手柄发布自定义消息类型control int64 mode 手柄模式切换 int64 lidar 雷达数据 int64 gamePad x 控制前
  • 奇偶校验码

    偶校验为例 xff1a 例图中 xff0c 下划线为校验位 xff0c 其余为信息位 检错步骤如下 xff1a 1 根据信息位算出校验位 xff08 通过异或运算 xff1a 相同为0 xff0c 不同为1 xff09 xff1a 得出校验
  • C++中#define和const的区别

    一 define是预处理指令 xff08 pre processor directive xff09 而const是关键字 define用于给一些值定义名称 字符串 xff0c 这样定义的字符串在C C 43 43 中称为宏定义 xff0c
  • select函数实现tcp服务器与客户端随时收发

    服务器 include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt neti
  • STM32F10X库函数逻辑

    define PERIPH BASE unsigned int 0x40000000 定义外围总线基地址 define APB1PERIPH BASE PERIPH BASE xff09 APB1总线开始与外围总线基地址 define AP
  • STM32F10x外部中断EXTI

    目录 一 EXTI是什么 xff1f 二 使用方法 1 功能框图及寄存器 2 库函数编程 总结 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 EXTI是什么 xff1f EXTI External interr
  • QT + OpenGL + FFmpeg写的一个全景视频播放器

    临时被分配了一个任务 写一个C 43 43 版本的全景视频播放器 网上搜了搜 基于前辈的基础上 写的差不多了 测试视频源是用ffmpeg拉RTSP的流 最终是要嵌入到别的一个视频播放器模块 所以解码这块我不用太关注 只要实现渲染就可以了 效
  • 15 侥幸:在随机性面前处变不惊

    引言 之前讲过的量化思维 xff0c 已经有概率思维的影子了 xff0c 开始学着用数字提高认识世界的分辨率 现在将继续加深对概率的理解 xff0c 来探讨随机性 它解决的人生难题是 xff1a 我们时常因为心存侥幸而失败 在随机的世界里
  • 【无人驾驶】自动驾驶领域有哪些岗位可选?

    导读 想要进入自动驾驶这个领域 xff0c 便首先去调查了下这个领域的岗位 xff0c 希冀能从中找出自己最感兴趣且匹配度也比较高的方向 废话不多说 xff0c 见下 下图为自动驾驶方向的所有岗位 xff0c 总量的来说 xff0c 方向可
  • 01_搭建百度apollo环境实操可用

    搭建百度apollo环境 0 前言1 目标2 方法3 Apollo环境搭建3 1 CPU版3 1 1前置依赖硬件条件3 2 GPU版前置依赖软件1 安装 Ubuntu 18 042 安装 GIT3 安装 Docker 引擎 3 1 3克隆