Apollo 8.0教程
环境搭建
按照apollo.baidu.com中的教程进行创建
git clone https://github.com/ApolloAuto/apollo.git
bashdocker/scripts/dev_start.sh
进入到环境中
bash docker/scripts/dev_into.sh
编译apollo源码
bash apollo.sh build
提示下列信息则代表成功编译
基础使用
所有功能都必须保证在apollo的容器中执行
cd /data/Project/apollo/
bash docker/scripts/dev_start.sh
bash docker/scripts/dev_into.sh
Dreamview
启动命令
bash scripts/bootstrap.sh
显示下方图片信息则代表成功启动
使用Tabby将远程8888代理到本地
点击端口->本地->将0.0.0.0:8888 代理到本机的127.0.0.1:8888
通过浏览器进入Dreamview
cyber_recorder
使用官方demo数据包
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record
数据包信息(Topic)查看
cyber_recorder info demo_3.5.record
数据包播放
循环播放命令-l
cyber_recorder play -f demo_3.5.record -l
此时可以在view中查看实时视图
Topic记录(record)
record分离(split)
record恢复
cyber_monitor
监控仿真中的Topic流信息,按➡️键查看Topic详细信息,按FN+⬆️或者FN+⬇️键翻页
详细信息
cyber_channel
使用Sim control仿真自动驾驶
- 在右上角选择仿真车辆为Mikz Example,高精地图为San Mateo
- 打开左下角的Sim Control 开关
- 在左侧菜单中选择Module Controller,打开Planning和Routing,打开后会看到在车身位置生成了一个规划障碍墙(如果未显示则代表开启失败,需要重新开启)
- 在左侧菜单中选择Route Editing,接着在地图中点击鼠标左键添加起点与终点,同样可以添加途径点
- 添加完毕后 点击上方菜单 Send Routing Request
- 点击send后后跳转到首页视图,此时后显示红色线(route搜索路径)、蓝色线(Planning规划路径)
定速巡航场景仿真调试
- 修改配置文件
cd /apollo/modules/planning/conf/
vim planning.conf
--planning_upper_speed_limit=80.00
- 修改下方两个参数更改定速巡航的最高限速和加速度m/s
- 尝试修改成最高限速80、加速度22.22m/s(80km/h)
- 保存文件后,在Module Controller中关闭并再次打开Planning
5.选择新的规划路线,并Send,发现最高限速没超过40km/h
NDT高精地图制作
主要使用:https://github.com/daohu527/ndt_mapping
- 下载样例数据并解压
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_sensor_data_for_vision.tar.xz
tar -xvf demo_sensor_data_for_vision.tar.xz
- 查看demo中的topic信息,找到点云topic名称
cyber_recorder info demo_sensor_data_for_vision.record
- 编译localization模块
./apollo.sh build localization
- 提取点云数据
激光雷达点云信息与车辆姿态信息(注意cloud_topic参数名称为数据包中的名称)
./bazel-bin/modules/localization/msf/local_tool/data_extraction/cyber_record_parser --bag_file=./demo_sensor_data_for_vision.record --out_folder=data --
cloud_topic=/apollo/sensor/velodyne64/compensator/PointCloud2
提取后的目录信息
- 根据激光雷达的外部参数和时间戳对姿态进行插值。校正后的姿势保存在
-output_poses_path
中
./bazel-bin/modules/localization/msf/local_tool/map_creation/poses_interpolator --input_poses_path=data/pcd/odometry_loc.txt --ref_timestamps_path=data
/pcd/pcd_timestamp.txt --extrinsic_path=modules/localization/msf/params/velodyne_params/velodyne64_novatel_extrinsics_example.yaml --output_poses_path=data/pcd/poses.txt
- 下载并编译ndt-mapping工具
sudo apt update
sudo apt install libgflags-dev libpcl-dev libeigen3-dev
sudo ln -s /usr/include/pcl-1.8/pcl /usr/include/pcl
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
sudo ln -s /usr/include/eigen3/unsupported /usr/include/unsupported
git clone https://github.com/daohu527/ndt_mapping.git
cd ndt_mapping
bazel build src/ndt_mapping
- 使用ndt-mapping工具生成融合PCD地图
cd /apollo/
./ndt_mapping/bazel-bin/src/ndt_mapping
融合完成后会生成./data/output.pcd
可以使用软件查看该文件( CloudCompare)
- 构建地图
最终会保存在/apollo/data/ndt_map/output_pcd/中(手动创建创建)
cd /apollo/data
mkdir ndt_map
mkdir output_pcd
./bazel-bin/modules/localization/ndt/map_creation/ndt_map_creator --pcd_folders=/apollo/data/pcd --pose_files=/apollo/data/pcd/poses.txt --resolution_type=single --resolution=1 --zone_id=10 --map_folder=/apollo/data/ndt_map/output_pcd/
生成完毕后查看目录
NDT融合定位
NDT(先验地图)模块介绍
- 修改数据配置信息中的地图路径为刚才生成的路径
vim /apollo/modules/common/data/global_flagfile.txt
改为:/apollo/data/
- 设置地图的UTM zone id,修改激光雷达的外参文件和topic,要与数据包中实际发布的一致。同时还需要修改local_map的名称为output_pcd
vim /apollo/modules/localization/conf/localization.conf
接着修改zone_id与topic信息
- 启动NDT模块
cyber_launch start /apollo/modules/localization/launch/ndt_localization.launch
- 新起一个bash,播放数据包中指定的Topic
cyber_recorder play -f demo_sensor_data_for_vision.record -c /apollo/sensor/gnss/odometry /apollo/sensor/velodyne64/compensator/PointCloud2 /apollo/sensor/gnss/ins_stat -l
- 使用cyber_monitor查看结果
输入数据:
/apollo/sensor/gnss/odometry #里程计数据
/apollo/sensor/velodyne64/compensator/PointCloud2 # lidar数据
/apollo/sensor/gnss/ins_stat # ins_stat 数据
输出数据:
/apollo/localization/pose
/apollo/localization/ndt_lidar
/apollo/localization/msf_status
查看msf融合结果的状态 Error代表点云数据状态错误,导致定位信息不正确
最后:
如果要启动dreamView请恢复之前修改的配置信息
Lgsvl仿真环境下制作高精地图
- Lgsvl下载
wget https://github.com/lgsvl/simulator/releases/download/2021.3/svlsimulator-linux64-2021.3.zip
unzip svlsimulator-linux64-2021.3.zip
cd svlsimulator-linux64-2021.3
./simulator
- SLV本地云环境搭建
git clone https://github.com/YuqiHuai/SORA-SVL
- 下载地图资源文件并导入云
https://drive.google.com/drive/folders/1bv02d29z4lSB9SWzCBTUt0GjAb876oSR?usp=sharing
下载总是失败,暂时不继续搭建
Carla仿真环境下制作高精地图
- 下载并启动Carla
https://carla.readthedocs.io/en/latest/build_linux/
https://www.cnblogs.com/ppqppl/articles/17087930.html
或者使用docker
git clone git@github.com:guardstrikelab/carla_apollo_bridge.git
cd carla_apollo_bridge/carla_scripts/
./docker_run_carla.sh
- 配置carla_bridge
cd carla_apollo_bridge/
docker cpcarla_bridge apollo_dev_lixiang:/apollo/modules/carla_bridge
- 在apollo容器中配置
cd /apollo/modules/carla_bridge
chmod +x install.sh
./install.sh
source ~/.bashrc
python -m pip install carla
- 修改mkz_standard_debug.pb.txt中的localization从msf改为rtk模式
vim modules/dreamview/conf/hmi_modes/mkz_standard_debug.pb.txt
- 重编译apollo
./scripts/bootstrap.sh stop
./apollo.sh build_gpu
- 重启Dreamview,同时确保
/apollo/modules/map/data
路径下存在carla的地图信息
./scripts/bootstrap.sh stop
./scripts/bootstrap.sh start
确保地图存在过程:
- 启动
python main.py
- 选择地图为Carla Town01,并且点击Setup(点击后会启动planning等其他模块)
- 在Tasks->Others中打开Camera Sensor,并且在右侧视图中选择摄像头信息即可查看实时画面,
- 在Module Controller中开启Routing、Planning、Control(如果控制不好使,可以多次打开Control)
- 打开激光雷达视图,打开后会在车身可视化雷达点云数据
- 运行录制命令
cyber_recorder record -a -o map_gen_test.record
- 在Route Editing中选择需要跑的路段,并发送信息(此处存在问题:选择起点时,需要Route图中车辆后方,实际这里是车辆前方)
- 接着路径规划完毕后会同步apollo的车辆行驶信息和carla中
- 等待车辆行驶完毕后,ctr-c关闭录制,并提取数据中的路径信息
/apollo/bazel-bin/modules/tools/map_gen/extract_path test.csv map_gen_test.record.00000 map_gen_test.record.00001 map_gen_test.record.00002 map_gen_tes
t.record.00003
- 生成 base_map
./bazel-bin/modules/tools/map_gen/map_gen test.csv
生成后会得到一个map_test.csv.txt文件
- 创建地图文件夹,并将base_map文件复制进去
mkdir modules/map/data/test_map
cp map_test.csv.txt modules/map/data/test_map/base_map.txt
- 高精地图生成
./bazel-bin/modules/map/tools/sim_map_generator --map_dir=modules/map/data/test_map/ --output_dir=modules/map/data/test_map/
此时后生成sim_map.bin和sim_map.txt
./scripts/generate_routing_topo_graph.sh --map_dir modules/map/data/test_map
执行后生成routing_map.bin和routing_map.txt
至此高精地图生成完毕
- 配置并加载高精地图
vim /apollo/modules/common/data/global_flagfile.txt
./scripts/bootstrap.sh stop
./scripts/bootstrap.sh start
添加一个map_dir为test_map
重启dreamview
发现列表中已经有了我们的test_map了
- 启动sim control,并在route中对比生成的地图
生成后的地图:
生成前的地图(红线部分!):