Apollo learning notes for beginners.
百度Apollo|无人驾驶|图解传感器地球之间的坐标关系以及如何转换 - 知乎
protobuf
类型对照(c++ & python )
proto 文件基本概念
syntax = "proto2";
package tutorial;
message Person {
optional string name = 1;
optional int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
optional string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phones = 4;
}
message AddressBook {
repeated Person people = 1;
}
每个字段必须有三个允许的修饰符之一: required, optional, repeated.
required:应该很少使用, 因为它可能会损害消息格式未来的可移植性.
repeated:是指数据字段可能连续出现几次,类似动态数组.
optional:表示可设置,也不设置. 当从未设置的字段中检索值时,返回系统默认值: 整数为0, 字符串为空
-
编译为 c++文件对应名称为
xxx.pb.h
和xxx.pb.cc
-
编译为 python 文件对应名称为
xxx_pb2.py
插件
buildtool create --namespace perception --template plugin modules/perception/fp_filter
分布式调试配置
两台设备如何实现通信,都在docker中跑Apollo,例如一台设备上放包,另外一台设备上用cyber_monitor看相应的消息。
这个可以通过配置CYBER_IP这个环境变量实现,两个设备需要同处一个网段内
比如机器A的IP是 192.168.0.1 机器B的IP是 192.168.0.2
那么对于机器A配置export CYBER_IP=192.168.0.1 对于机器B配置 export CYBER_IP=192.168.0.2
代码下载
aem enter 容器内运行 buildtool install 包名,其中包名可以在github代码库中对应的cyberfile.xml文件中找到。
高精地图(语义地图)
关于高精地图和语义apollo园区版本提供了编辑和采集工具,需要和apollo进行申请使用权限,此部分为付费项。
仿真
自带的仿真部分不能仿控制部分,没法进行动力学的一些验证。比如自己写控制算法想去验证暂时不行,carla可以和apollo仿真但目前存在大大小小的问题,官方说后考虑续会支持。
定位
园区版主要有RTK定位和SLAM组合定位
园区版部署安装
# aem 安装
sudo apt install apollo-neo-env-manager-dev --reinstall
# 园区版本功能包
unzip apollo-park-generic.zip
cd apollo-park-generic
# 环境配置:会识别主机系统是x86_64还是aarch64修改对应的.env 和 .workspace.json配置
bash setup.sh
# 拉取并启动docker容器,只有第一次容器不存在的时候需要,以后包括系统重启后直接aem enter即可
aem start_gpu
# 进入容器: 注意后续进入容器请先到cd apollo-park-generic目录下
aem enter
# 账号登录:使用apollo团队提供的用户名和密码,每次aem start_gpu创建容器后输入一次即可
# 把下面的user换成您的用户名,password换成您的密码
buildtool login user password
# 下载安装依赖包: 会拉取安装park-generic/cyberfile.xml里面所有的依赖包
# 不输入帐号密码,会提示无法进行buildtool build编译
buildtool build --gpu --opt
常用命令
# 切换车型配置 (可能会报错提示,通常忽略即可)
aem profile use sample
# 启动dreamview_plus
aem bootstrap restart --plus
# 打开dreamview,推荐chrome浏览器;其他可能会出现显示不正常情况
http://localhost:8888