材料总结源于apollo 开发者社区
apollo 8.0 版本特殊性
apollo 8.0 增加了软件包管理,不需要全量代码下载,支持二进制安装, 大大方便了安装,以及某一个模块源码方式的安装开发调试学习。
本文从PNC 开发者角度出发。
安装前
### 硬件要求
cpu 4核 以上
mem 8G 以上
硬盘60G
PNC 暂时忽略GPU
系统要求
原生 Ubuntu18.04.5
安装docker, 或者使用docker 脚本
## 下载docker 安装脚本
wget http://apollo-pkg-beta.bj.bcebos.com/docker_install.sh
## 安装
bash docker_install.sh
## 安装完成后,会看到提示,要求再执行一次第二步
bash docker_install.sh
## docker 容器常用命令
docker stop $(docker ps -a -q) ## 停止容器
docker ps -a ## 查看所有容器状态
docker rm $(docker ps -a -q) ## 删除所有容器
## docker 镜像常用命令
docker images ## 查看所有镜像
docker rmi <> ## 删除镜像
## stop 容器 -> 删除容器 -> 删除镜像
docker rmi -f <> ## 强制删除镜像,即使容器在运行中
docker exec -it <> bash ## bash 终端进入容器, 交互形式
安装apollo 环境管理工具aem
Apollo 环境管理工具是一个帮忙管理和启动 Apollo 环境容器的命令行工具。
## 增加源
sudo bash -c "echo 'deb https://apollo-pkg-beta.cdn.bcebos.com/neo/beta bionic main' >> /etc/apt/sources.list"
wget -O - https://apollo-pkg-beta.cdn.bcebos.com/neo/beta/key/deb.gpg.key | sudo apt-key add -
sudo apt update
## 安装
sudo apt install apollo-neo-env-manager-dev
## help
aem -h
aem start ## 检查是否启动了容器,未启动: 启动新容器; 已启动: 不操作
aem start -f ## 强制删除现有的容器, 并启动新的容器
aem enter ## 进入已启动的容器
aem stop
aem bootstrap ## 启动dreamview
aem setup_host
aem build ## build package in workspace
aem install ## install source code of specified package of workspace
创建目录,并进入容器
## 创建工作空间 (废弃,直接git clone)
## mkdir application_demo
## cd application_demo
## 上一步骤可以clone 官方仓库
git clone git@github.com:ApolloAuto/application-demo.git
## 宿主机application-demo 是docker 内部对应的目录/apollo_workspace
## 同样也是工作空间,内有WORKSPACE文件
## docker 内部 ${WORKSPACE} 代表的就是 /apollo_workspace
## 启动容器
aem start ## application_demo目录下内容会自动挂载进容器, 类似-v 作用
## aem 应该绑定了云端的apollo docker 某个版本, 所以第一次会自动下载docker 镜像
## 进入容器
aem enter
#### user_name@in-dev-docker:/apollo_workspace#
#### 工作空间文件夹将被挂载到容器的 /apollo_workspace 中。
## 初始化
aem init ## 生成WORKSPACE文件
QuickStart
01. 播包
进入docker 后安装dreamview [docker 内部, 而不是宿主机]
## docker 内安装 dreamview
sudo apt install apollo-neo-dreamview-dev apollo-neo-monitor-dev
## docker 内启动 dreamview
aem bootstrap start
## 停止dreamview
aem bootstrap stop
## 浏览器打开
http://localhost:8888
## 下载演示包
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record
## 播放
cyber_recorder play -f demo_3.5.record --loop # -f 指定文件 --loop 循环播放
## docker 内部 关闭dreamview
02. 安装cyberrt example component
安装项目pkg application_demo, 包含了example_component 和 planning_customization
退出容器,git 下载到宿主机application-demo 目录下, 这个目标不要有WORKSPACE, 不能是工作空间,因为git下载的本身是个workspace, 如果是,可能和前面aem init 有关,进行删除
aem enter 进入docker后,cd application_demo/
buildtool build --packages example_commponent
注意: 调用脚本编译命令时,当前所在目录即为工作空间目录,请务必在工作空间下使用脚本编译命令
03. buildtool 安装(docker)
sudo apt install --reinstall apollo-neo-buildtool-dev
04 如何安装一个模块, 以routing-dev 为例
4.1 apt (二进制安装)
apt install apollo-neo-routing-dev
4.2 buildtool (源码安装)
buildtool install routing-dev
-
buildtool 会将安装后的包的源码拷贝至工作空间中,routing-dev 的源码会被拷贝到
${WORKSPACE}/modules/routing
中。
注意: apollo 8.0 模块名字是 planning-dev, routing-dev, 见planning_customization 中cyberfile
03. 源码安装planning
planning_customization 模块是一个 End-2-End 的场景解决方案(即可以在仿真环境内跑通 Routing Request 的全部内容),但是其中并没有包含任何源码,只包含一个 cyberfile.xml 文件,描述该场景下依赖的所有组件包(planning-dev、dreamview-dev,routing-dev,task_manager 和 monitor-dev)以及其引入的方式。因为需要对 planning 源码进行修改扩展,所以其中 planning-dev 包是因 “src” 的方式引入,在编译该模块时会自动下载 planning 源码,并复制到工作空间中。
buildtool 安装时遇到报错
https://files.pythonhosted.org/packages/dd/bf/4138e7bfb757de47d1f4b6994648ec67a51efe58fa907c1e11e350cddfca/six-1.12.0.tar.gz
10:52:47) WARNING: Download from https://files.pythonhosted.org/packages/dd/bf/4138e7bfb757de47d1f4b6994648ec67a51efe58fa907c1e11e350cddfca/six-1.12.0.tar.gz failed: class java.io.IOException connect timed out
(10:52:47) ERROR: An error occurred during the fetch of repository 'six':换个网络可能就好了
使用debug模式编译代码,例如buildtool build --dbg -j 2 -m 0.5 -p modules/planning/
快速跑demo
aem start
aem enter
aem bootstrap start
浏览器打开dreamview
打开simcontrol
打开planning routing prediction 模块
发送routing
vscode 插件开发设置
插件 docker, bazelbuild, dev container
apollo cyber 环境
source /apollo/cyber/setup.bash
# 8.0 aem
source /opt/apollo/neo/setup.sh
apollo8.0 aem package 安装位置
## buildtool 编译会install 到如下目录中
## package 目录,类似share
/opt/apollo/neo/packages/
## package 执行文件目录,类似lib
/opt/apollo/neo/lib
/opt/apollo/neo/packages/planning_dev/local/lib
APOLLO_PATH="/opt/apollo/neo"
APOLLO_ROOT_DIR=${APOLLO_PATH}/packages
export APOLLO_ROOT_DIR=${APOLLO_PATH}/packages
export CYBER_PATH=${APOLLO_ROOT_DIR}/cyber
export APOLLO_SYSROOT_DIR=/opt/apollo/sysroot
export CYBER_DOMAIN_ID=80
export CYBER_IP=127.0.0.1
export GLOG_log_dir=${APOLLO_PATH}/data/log
工具
cyber_monitor
-h help
-c 检测某一个channel, cyber_monitor -c <CHANNEL_NAME>
--loop 循环播放
cyber_visualizer
用于可视化channel 数据,类似rqt
dreamview
planning配置文件
planning-dev 的配置文件位于 /apollo_workspace/modules/planning/conf
planning-dev 源码位于:/apollo/modules/planning
中,开发者可以直接修改改文件夹下的代码,从而影响planning 行为。
编译planning, (cd /apollo_workspace)
buildtool build --packages modules/planning
sim-control 仿真
场景集插件
云端实验室用的类型选择 “线上评测”
如果你装在自己电脑上的apollo8.0 aem 版本,切记选择 “线下仿真”
如何手动起planning
# docker workspace
cd /apollo/
# whereis mainboard
# cyber_launch 启动
cyber_launch start modules/planning/launch/planning.launch
# gdb 启动
gdb -q --args /opt/apollo/neo/bin/mainboard -d /apollo/modules/planning/dag/planning.dag
# 打断点, 应该是相对目录的逻辑
b modules/planning/planning_component.cc:50
对应目录
[xxx@in-dev-docker:/apollo/modules/planning]$ ll conf
lrwxrwxrwx 1 uisee uisee 49 Oct 24 15:19 conf -> /opt/apollo/neo/packages/planning-dev/latest/conf/
[xxx@in-dev-docker:/apollo/modules/planning]$ vim conf/discrete_points_smoother_config.pb.txt
[xxx@in-dev-docker:/apollo/modules/planning]$ pwd
/apollo/modules/planning
[xxx@in-dev-docker:/apollo/modules/planning]$ ls
conf dag data launch testdata
[xxx@in-dev-docker:/apollo/modules/planning]$ ll conf
lrwxrwxrwx 1 uisee uisee 49 Oct 24 15:19 conf -> /opt/apollo/neo/packages/planning-dev/latest/conf/
//apollo 8.0 vscode 调试 - csdn
技术文档丨使用VSCode构建、调试Apollo项目 - apollo 开发者社区