Apollo使用方法;map_gen工具使用
Posted 小葵向前冲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apollo使用方法;map_gen工具使用相关的知识,希望对你有一定的参考价值。
apollo之高精地图
介绍
apollo的高精度地图采用了opendrive格式,opendrive是一个统一的地图标准,这样保证了地图的通用性。
apollo之map模块
代码目录结构:
├── data // 生成好的地图
│ └── demo
├── hdmap // 高精度地图
│ ├── adapter // 从xml文件读取地图(opendrive保存格式为xml)
│ │ └── xml_parser
│ └── test-data
├── pnc_map // 给规划控制模块用的地图
│ └── testdata
├── proto // 地图各元素的消息格式(人行横道,车道线等)
├── relative_map // 相对地图
│ ├── common
│ ├── conf
│ ├── dag
│ ├── launch
│ ├── proto
│ ├── testdata
│ │ └── multi_lane_map
│ └── tools
├── testdata // 测试数据?
│ └── navigation_dummy
└── tools // 工具
apollo 高精地图
Map()
message Header
optional bytes version = 1; //地图版本
optional bytes date = 2; //地图时间
optional Projection projection = 3; //投影方法
optional bytes district = 4; //区
optional bytes generation = 5; //
optional bytes rev_major = 6; //
optional bytes rev_minor = 7; //
optional double left = 8; //左
optional double top = 9; //上
optional double right = 10; //右
optional double bottom = 11; //底
optional bytes vendor = 12; //供应商
Lane()
车道结构:
message Lane
optional Id id = 1; //编号
optional Curve central_curve = 2; //中心曲线
optional LaneBoundary left_boundary = 3; //左边界
optional LaneBoundary right_boundary = 4; //右边界
optional double length = 5; //长度
optional double speed_limit = 6; //速度限制
repeated Id overlap_id = 7; //重叠区域id
repeated Id predecessor_id = 8; //前任id
repeated Id successor_id = 9; //继任者id
repeated Id left_neighbor_forward_lane_id = 10; //左边相邻前方车道id
repeated Id right_neighbor_forward_lane_id = 11; //右边相邻前方车道id
enum LaneType //车道类型
NONE = 1; //无
CITY_DRIVING = 2; //城市道路
BIKING = 3; //自行车
SIDEWALK = 4; //人行道
PARKING = 5; //停车
;
optional LaneType type = 12; //车道类型
enum LaneTurn
NO_TURN = 1; //直行
LEFT_TURN = 2; //左转弯
RIGHT_TURN = 3; //右转弯
U_TURN = 4; //掉头
;
optional LaneTurn turn = 13; //转弯类型
repeated Id left_neighbor_reverse_lane_id = 14; //左边相邻反方向车道id
repeated Id right_neighbor_reverse_lane_id = 15; //右边相邻反方向车道id
optional Id junction_id = 16;
repeated LaneSampleAssociation left_sample = 17; //中心点与最近左边界之间的关联
repeated LaneSampleAssociation right_sample = 18; //中心点与最近右边界之间的关联
enum LaneDirection
FORWARD = 1; //前
BACKWARD = 2; //后,潮汐车道借用的情况?
BIDIRECTION = 3; //双向
optional LaneDirection direction = 19; //车道方向
repeated LaneSampleAssociation left_road_sample = 20; //中心点与最近左路边界之间的关联
repeated LaneSampleAssociation right_road_sample = 21; //中心点与最近右路边界之间的关联
Road()
message RoadSection
optional Id id = 1;
// 本节所包含的车道
repeated Id lane_id = 2;
// 截面边界
optional RoadBoundary boundary = 3;
// 道路是车道、道路边界等交通要素的集合。
// 它提供道路的一般信息。
message Road
optional Id id = 1;
repeated RoadSection section = 2;
// 如果车道不在路口,路口id为空。
optional Id junction_id = 3;
具体生成方法
确保在docker容器中
先进入apollo目录下
1. 启动docker
bash docker/scripts/dev_start.sh
2. 开始docker
bash docker/scripts/dev_into.sh
3. 在docker中编译apollo源码
bash apollo.sh build_cpu
启动DreamView
./scripts/bootstrap.sh [start | stop | restart]
打开浏览器
:http://localhost:8888/
下载预录资源
python3 rosbag_helper.py demo_3.5.record
cyber_recorder play -f demo_3.5.record -l
界面显示如图
生成好的地图
查看当前轨迹
python modules/tools/map_gen/plot_path.py test.csv
生成地图
python modules/tools/map_gen/map_gen.py points
得到
查看地图
python modules/tools/mapshow/mapshow.py -m map_test.csv.txt
apollo 地图生成
base_map.bin
python modules/tools/create_map/convert_map_txt2bin.py -i mymap/map_test.csv.txt -o mymap/base_map.bin
-o:存放路径
sim_map.bin
./bazel-bin/modules/map/tools/sim_map_generator -map_dir=mymap/ -output_dir=mymap/
routing_map.bin
./bazel-bin/modules/routing/topo_creator/topo_creator -map_dir=mymap/ --flagfile=modules/routing/conf/routing.conf
生成地图另外一种方法
bash /apollo/scripts/create_map_from_xy.sh --xy test.csv --map_name test
/apollo/bazel-bin/modules/map/tools/bin_map_generator --map_dir=/apollo/modules/map/data/test --output_dir=/apollo/modules/map/data/test
其它
linux 文件解锁
sudo chmod -R 777 路径
pip install 豆瓣源
pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
以上是关于Apollo使用方法;map_gen工具使用的主要内容,如果未能解决你的问题,请参考以下文章
自动驾驶 Apollo 源码分析系列,感知篇:车道线 Dark SCNN 算法简述及车道线后处理代码细节简述