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:map_gen学习

Apollo:map_gen学习

Apollo:map_gen学习

自动驾驶 Apollo 源码分析系列,感知篇:车道线 Dark SCNN 算法简述及车道线后处理代码细节简述

自动驾驶 Apollo 源码分析系列,感知篇:车道线 Dark SCNN 算法简述及车道线后处理代码细节简述

自动驾驶 Apollo 源码分析系列,感知篇:车道线检测基本流程