1安装 Ubuntu linux
本教程采用Apollo 6.0版本,对应操作系统 Ubuntu 20.04或 18.04,详细安装步骤本文不做纠结
Ubuntu安装完成后,先执行更新软件
Sudo apt-get update
Sudo apt-get upgrade
2.安装 NVIDIA GPU驱动(可选)
如果是车上的Apollo运行环境需要依赖 NVIDIA GPU驱动(若不需要运行感知模块,只想播放数据包体验Apollo,则不需要安装NVIDIA驱动,只是体验cyber rt 也没有必要安装)
可以通过两种方式在Ubuntu上安装:
Sudo apt-get update
Sudo apt-add-repository multiverse
Sudo apt-get update
Sudo apt-get install nvidia-driver-455
输入 nvidia-smi 来校验nvidia Gpu驱动是否在正常运行
3.安装Docker
Apollo 6.0+ 依赖于Docker 19.03+。安装Docker引擎
Ubuntu上的Docker-CE也可以通过Docker提供的官方脚本安装
apt install curl
curl 错误!超链接引用无效。 sh
sudo systemctl start docker && sudo systemctl enable docker
注意:安装时,可能会抛出异常:
直接根据提示调用 sudo apt install curl 即可。
3.2 测试
在终端输入: sudo docker run hello-world
该指令会先检查你的本地有无hello world 的镜像,如果没有会先进行下载
运行结果如下:
3.3优化docker:
在测试过程中使用了 sudo权限才可以运行 Docker 对此可以优化添加Docker权限
创建Docker 用户组 $ sudo groupadd docker
添加当前用户到Docker组 $ sudo usermod -aG docker $USER
重启虚拟机或执行以下命令 $ newgrp docker
测试 $ docker run hello-world
此外,还可以配置docker开机自启动,执行以下命令:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
4安装NVIDA Container Toolkit
基于Apollp 的CUDA的docker 镜像需要依赖于NVIDIA Container Toolkit。运行以下命令安装NVIDIA Container Toolkit
添加源:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidiadocker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
安装并重启docker:
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
在官方CUDA镜像上测试 nvidia-smi:
sudo docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
Cyber RT安装
过程:
下载源码;
执行脚本启动docker容器
进入dockerrongqi
构建
下载源码:克隆Apollo源码仓库:
- git clone https://github.com/ApolloAuto/apollo.git
或者使用Gitee代替:
- git clone https://gitee.com/ApolloAuto/apollo.git
2.启动 Apollo Docker 开发容器
进入到 Apollo 源码根目录,执行以下命令以启动Apollo Docker :
- ./docker/scripts/dev_start.sh
如果只是使用Cyber RT可以执行:
- ./docker/scripts/cyber_start.sh
- ./docker/scripts/cyber_start.sh -g cn
出现问题
原因:需要添加权限
sudo bash docker/scripts/dev_start.sh
- 进入Apollo Docker 开发容器
启动 Apollo Docker 开发容器后,执行下述命令进入容器:
- ./docker/scripts/dev_into.sh
如果只是使用Cyber RT可以执行:
- ./docker/scripts/cyber_into.sh
注意:进入容器后,终端信息改变,后续的操作实在容器内展开
- 在容器中构建Apollo
进入 Apollo Docker 开发容器后,在容器终端执行以下命令构建Apollo:
./apollo.sh build //编译apollo下的所有框架
./apollo.sh build cyber //单独编译cyber
注意:编译比较耗时,虚拟机编译建议分配运存5g左右,不然有可能卡死,导致关机
6.VScode配置
下载VScode并下载以下插件
Bazel 为编译提供支持
Docker 和RC是用来配置容器的,使得Vscode与docker 远程连接
依赖插件(自动下载,找不到就主动下载)
Probuf:消息传递载体,用来传递信息
6. Cyber RT初体验(Hola_World)
默认情况下Cyber 的日志是写入磁盘的,为了方便在终端观察,需要对日志文件参数进行配置,用vi进入cyber/setup.bash修改 GLOG_alsologtostedrr = 1,修改完成后使用source cyber/setup.bash重新加载cyber
打开VScode连接Docker,可以见到如下界面:
可以看到在images 中存在 apollo镜像
选定镜像右击 run-interactive,这时会在containers中显示 aplloauto,右击 start进入attach vs code,此时可以在新的窗口中编辑Apollo
打开文件夹,路径进入apollo
可能会存在的bug,vscode插件中的部分组件并未被包含进去,按照提示进行重新。
在Aopllo/cyber目录下创建 Hola_World
创建cpp文件holaWorld.cpp
输入以下测试:
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
cout << "hello bazel !"<<endl;
return 0;
}
创建一个BUILD文件
cc_binary(
name = "hello",
srcs = ["hello_world.cc"],
)
下面进行编译
在终端输入 bazel build cyber/Hola_World/…
可以看到在文件里生成了我们的 holaWorld可执行文件
在终端中键入 ./holaWorld 终端输出 Hola World
Cyber RT 组成以及介绍
Apollo的细节介绍:
简介: Apollo 内的API主要是有python 和C++两种语言组成,大多数的功能既可以使用C++也可以使用python ,二者可以相互替换,这种设计增加了框架自身的灵活性,但在实际使用中,笔者建议算法类的开发使用c++,辅助性的开发使用python。因为算法类需要高速的运行效率,而辅助类插件旨在快速开发。
软件的开发流程本着以下顺序执行:
-
- 主程序文件
- 配置文件
- 编译文件
- 执行文件
Cyber文件夹略解
文件夹介绍:
Cyber文件夹: 大多数的cyber rt事件都在其中
Docker文件: 包含了进入docker的一些必要文件
Docs: 可以在其中找到帮助文档
Scripts: 脚本文件
Third_part: 第三方依赖
Tools: apollo中使用的部分工具
Modules: 包含百度提供的各类型模块,如定位,地图等等