planning总结
一、问题与解决
1)planning/common/frame.cc作用是什么?
Frame框架 保存一个计划周期内的所有数据。包括:轨迹起始点、车辆状态、参考线信息、障碍物信息,是否变更车道
2)在哪里修改配置,可以更换算法来规划路线(EM、LATTICE、NAVI、RTK)?
在planning目录中的conf文件夹下:
planning_config.pb.txt 和planning_config_navi.pb.txt 配置文件可以改变使用哪一种算法来规划路线
如上图中,默认的算法使用EM来规划路线的;当我们使用RTK模式来规划路线时,可以把planning_config.pb.txt 和planning_config_navi.pb.txt 配置文件的EM改为RTK;
3)在planning 代码分析,有时候会遇到找不到定义或声明的变量?
这时可以在planning目录下的proto目录下寻找:
例如:在planning.cc中有ADCTrajectory* trajectory_pb ,但是我们又找不到ADCTrajectory在哪里定义了;
技巧:planning目录下的proto目录右键,在文件中寻找:
可以看到ADCTrajectory哪些文件中出现了
如下图,在proto目录出现了3次,找到它的定义了:
4)在导航模式下(FLAGS_use_navigation_mode),谁发布RelativeMap相对地图的?
是由 modules\map\relative_map\relative_map.cc 来发布的,
看一下relative_map 的适配器发布情况
思路过程:
使用python脚本navigator.py 发布参考线的信息到NAVIGATION主题;
在relative_map模块中,会订阅NAVIGATION主题;
整合信息后,最后发布RELATIVE_MAP主题。
5)如何查看planning订阅了哪些主题,发布了什么信息?
在每个模块中,基本有一个conf文件夹的,这里主要包含此模块的配置文件;其中adapter.conf文件这里会包括planning的适配器,能看到订阅了哪些主题,发布了什么信息:
- planning 不同模式仿真
- RTK模式仿真
1)在RTK模式下,replay和recore模式下是调用python脚本实现的,没有开启RTK模块;
2)#rtk_player.py #此程序,读取本地的csv文件数据,订阅chassis、localization/pose、control/pad主题,最后发布planning 信息;
3)#rtk_recorder.py #此程序订阅 chassis、localization/pose 主题 # 获取到的数据X,Y,Z,速度,加速度,曲率,曲率变化率,时间,theta,齿轮,S,油门,刹车,转向,写进csv文件中
2、Navigation模式仿真
navigation模式 和 standard模式 都会开启planning,进行执行相应的算法模块。
手动修改planning配置文件:planning_config_navi.pb.txt 和planning_config.pb.txt 把模式改为RTK 模式,在planning.INFO 可以看到有开启RTK模式
查看在planning.INFO 可以看到有开启RTK模式的:
代码中:FLAGS_use_navigation_mode 判断是否为导航模式
navi 加载相对地图
3、Standard模式仿真
navigation模式 和 standard模式 都会开启planning,进行执行相应的算法模块。
手动修改planning配置文件:planning_config_navi.pb.txt 和planning_config.pb.txt 把模式改为RTK 模式,在planning.INFO 可以看到有开启RTK模式
查看在planning.INFO 可以看到有开启RTK模式的
standard模式加载 HDMap
希望对你有帮助。