ios

Apollo 8.0教程

N 人看过

环境搭建

按照apollo.baidu.com中的教程进行创建

git clone https://github.com/ApolloAuto/apollo.git
bashdocker/scripts/dev_start.sh

Untitled

进入到环境中

bash docker/scripts/dev_into.sh

Untitled

编译apollo源码

bash apollo.sh build

Untitled

提示下列信息则代表成功编译

Untitled

基础使用

所有功能都必须保证在apollo的容器中执行

 cd /data/Project/apollo/
 bash docker/scripts/dev_start.sh
 bash docker/scripts/dev_into.sh

Dreamview

启动命令

 bash scripts/bootstrap.sh

显示下方图片信息则代表成功启动

Untitled

使用Tabby将远程8888代理到本地

点击端口->本地->将0.0.0.0:8888 代理到本机的127.0.0.1:8888

Untitled

通过浏览器进入Dreamview

Untitled

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

Untitled

数据包播放

循环播放命令-l

cyber_recorder play -f demo_3.5.record -l

Untitled

此时可以在view中查看实时视图

Untitled

Topic记录(record)

record分离(split)

record恢复

cyber_monitor

监控仿真中的Topic流信息,按➡️键查看Topic详细信息,按FN+⬆️或者FN+⬇️键翻页

Untitled

详细信息

Untitled

cyber_channel

使用Sim control仿真自动驾驶

  1. 在右上角选择仿真车辆为Mikz Example,高精地图为San Mateo
  2. 打开左下角的Sim Control 开关

Untitled

  1. 在左侧菜单中选择Module Controller,打开Planning和Routing,打开后会看到在车身位置生成了一个规划障碍墙(如果未显示则代表开启失败,需要重新开启)

Untitled

  1. 在左侧菜单中选择Route Editing,接着在地图中点击鼠标左键添加起点与终点,同样可以添加途径点
  2. 添加完毕后 点击上方菜单 Send Routing Request

Untitled

  1. 点击send后后跳转到首页视图,此时后显示红色线(route搜索路径)、蓝色线(Planning规划路径)

Untitled

定速巡航场景仿真调试

  1. 修改配置文件
cd /apollo/modules/planning/conf/
vim planning.conf
--planning_upper_speed_limit=80.00

  1. 修改下方两个参数更改定速巡航的最高限速和加速度m/s

Untitled

  1. 尝试修改成最高限速80、加速度22.22m/s(80km/h)

Untitled

  1. 保存文件后,在Module Controller中关闭并再次打开Planning

Untitled

5.选择新的规划路线,并Send,发现最高限速没超过40km/h

Untitled

NDT高精地图制作

主要使用:https://github.com/daohu527/ndt_mapping

  1. 下载样例数据并解压
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

Untitled

  1. 查看demo中的topic信息,找到点云topic名称
cyber_recorder info demo_sensor_data_for_vision.record

Untitled

  1. 编译localization模块
./apollo.sh build localization

Untitled

  1. 提取点云数据

激光雷达点云信息与车辆姿态信息(注意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

Untitled

提取后的目录信息

Untitled

  1. 根据激光雷达的外部参数和时间戳对姿态进行插值。校正后的姿势保存在 -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

Untitled

  1. 下载并编译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

Untitled

  1. 使用ndt-mapping工具生成融合PCD地图
cd /apollo/
./ndt_mapping/bazel-bin/src/ndt_mapping

Untitled

融合完成后会生成./data/output.pcd

Untitled

可以使用软件查看该文件( CloudCompare

Untitled

  1. 构建地图

最终会保存在/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/

Untitled

生成完毕后查看目录

Untitled

NDT融合定位

NDT(先验地图)模块介绍

Untitled

  1. 修改数据配置信息中的地图路径为刚才生成的路径
vim /apollo/modules/common/data/global_flagfile.txt

改为:/apollo/data/

  1. 设置地图的UTM zone id,修改激光雷达的外参文件和topic,要与数据包中实际发布的一致。同时还需要修改local_map的名称为output_pcd
vim /apollo/modules/localization/conf/localization.conf

Untitled

接着修改zone_id与topic信息

Untitled

  1. 启动NDT模块
cyber_launch start /apollo/modules/localization/launch/ndt_localization.launch

Untitled

  1. 新起一个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

Untitled

  1. 使用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

Untitled

查看msf融合结果的状态 Error代表点云数据状态错误,导致定位信息不正确

Untitled

最后:

如果要启动dreamView请恢复之前修改的配置信息

Lgsvl仿真环境下制作高精地图

  1. 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

  1. SLV本地云环境搭建
git clone https://github.com/YuqiHuai/SORA-SVL

  1. 下载地图资源文件并导入云
https://drive.google.com/drive/folders/1bv02d29z4lSB9SWzCBTUt0GjAb876oSR?usp=sharing

下载总是失败,暂时不继续搭建

Carla仿真环境下制作高精地图

  1. 下载并启动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

  1. 配置carla_bridge
cd carla_apollo_bridge/
docker cpcarla_bridge apollo_dev_lixiang:/apollo/modules/carla_bridge

  1. 在apollo容器中配置
cd /apollo/modules/carla_bridge
chmod +x install.sh
./install.sh
source ~/.bashrc
python -m pip install carla

Untitled

  1. 修改mkz_standard_debug.pb.txt中的localization从msf改为rtk模式
vim modules/dreamview/conf/hmi_modes/mkz_standard_debug.pb.txt

Untitled

  1. 重编译apollo
./scripts/bootstrap.sh stop
./apollo.sh build_gpu

  1. 重启Dreamview,同时确保/apollo/modules/map/data 路径下存在carla的地图信息
./scripts/bootstrap.sh stop
./scripts/bootstrap.sh start

Untitled

确保地图存在过程:

Untitled

  1. 启动
python main.py

Untitled

  1. 选择地图为Carla Town01,并且点击Setup(点击后会启动planning等其他模块)

https://li.feishu.cn/space/api/box/stream/download/asynccode/?code=MDA0OGI3YWY0ZWRhNDU1YjliNjgwYmM2M2YxMzcxNDNfSDgzNWl1WWs2UVZHQ09UdTl4aDN2RWp3NURXcFVJZlNfVG9rZW46RFI4d2JGWVpEb1VuUTh4Z0JBVGNnTlFtbnJiXzE3MDQzNjEzODg6MTcwNDM2NDk4OF9WNA

  1. 在Tasks->Others中打开Camera Sensor,并且在右侧视图中选择摄像头信息即可查看实时画面,
  2. 在Module Controller中开启Routing、Planning、Control(如果控制不好使,可以多次打开Control)

Untitled

  1. 打开激光雷达视图,打开后会在车身可视化雷达点云数据

Untitled

  1. 运行录制命令
cyber_recorder record -a -o map_gen_test.record

Untitled

  1. 在Route Editing中选择需要跑的路段,并发送信息(此处存在问题:选择起点时,需要Route图中车辆后方,实际这里是车辆前方)

Untitled

  1. 接着路径规划完毕后会同步apollo的车辆行驶信息和carla中

Untitled

  1. 等待车辆行驶完毕后,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

Untitled

  1. 生成 base_map
./bazel-bin/modules/tools/map_gen/map_gen test.csv

生成后会得到一个map_test.csv.txt文件

  1. 创建地图文件夹,并将base_map文件复制进去
mkdir modules/map/data/test_map
cp map_test.csv.txt modules/map/data/test_map/base_map.txt

  1. 高精地图生成
./bazel-bin/modules/map/tools/sim_map_generator --map_dir=modules/map/data/test_map/ --output_dir=modules/map/data/test_map/

Untitled

此时后生成sim_map.bin和sim_map.txt

Untitled

./scripts/generate_routing_topo_graph.sh --map_dir modules/map/data/test_map

执行后生成routing_map.bin和routing_map.txt

Untitled

至此高精地图生成完毕

  1. 配置并加载高精地图
vim /apollo/modules/common/data/global_flagfile.txt
./scripts/bootstrap.sh stop
./scripts/bootstrap.sh start

添加一个map_dir为test_map

Untitled

重启dreamview

Untitled

发现列表中已经有了我们的test_map了

Untitled

  1. 启动sim control,并在route中对比生成的地图

生成后的地图:

Untitled

生成前的地图(红线部分!):

Untitled