虚拟机下安装Apollo 6.0并在VS code下运行

发布于:2023-01-17 ⋅ 阅读:(496) ⋅ 点赞:(0)

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源码仓库: 

  1. git clone https://github.com/ApolloAuto/apollo.git  

或者使用Gitee代替:

  1. git clone https://gitee.com/ApolloAuto/apollo.git  

2.启动 Apollo Docker 开发容器

进入到 Apollo 源码根目录,执行以下命令以启动Apollo Docker :

  1. ./docker/scripts/dev_start.sh  

如果只是使用Cyber RT可以执行:

  1. ./docker/scripts/cyber_start.sh  
  2. ./docker/scripts/cyber_start.sh -g cn  

出现问题

原因:需要添加权限

sudo bash docker/scripts/dev_start.sh

  1. 进入Apollo Docker 开发容器

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

  1. ./docker/scripts/dev_into.sh  

如果只是使用Cyber RT可以执行:

  1. ./docker/scripts/cyber_into.sh  

注意:进入容器后,终端信息改变,后续的操作实在容器内展开

  1. 在容器中构建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。因为算法类需要高速的运行效率,而辅助类插件旨在快速开发。

软件的开发流程本着以下顺序执行:

    1. 主程序文件
    2. 配置文件
    3. 编译文件
    4. 执行文件

Cyber文件夹略解

文件夹介绍:

Cyber文件夹: 大多数的cyber rt事件都在其中

Docker文件: 包含了进入docker的一些必要文件

Docs:          可以在其中找到帮助文档          

Scripts:         脚本文件

Third_part:       第三方依赖

Tools:          apollo中使用的部分工具

Modules:        包含百度提供的各类型模块,如定位,地图等等

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到