材料总结源于apollo 开发者社区
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文件
-
进入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
安装项目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
注意: 调用脚本编译命令时,当前所在目录即为工作空间目录,请务必在工作空间下使用脚本编译命令
sudo apt install --reinstall apollo-neo-buildtool-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
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/
aem start
aem enter
aem bootstrap start
浏览器打开dreamview
打开simcontrol
打开planning routing prediction 模块
发送routing
插件 docker, bazelbuild, dev container
- source /apollo/cyber/setup.bash
-
-
- # 8.0 aem
- source /opt/apollo/neo/setup.sh
- ## 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
--loop 循环播放
cyber_visualizer
用于可视化channel 数据,类似rqt
dreamview
planning-dev 的配置文件位于 /apollo_workspace/modules/planning/conf
planning-dev 源码位于:/apollo/modules/planning中,开发者可以直接修改改文件夹下的代码,从而影响planning 行为。
编译planning, (cd /apollo_workspace)
buildtool build --packages modules/planning
云端实验室用的类型选择 “线上评测”
如果你装在自己电脑上的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 开发者社区