Apollo问答丨请问在Planning层的曲率约束方程怎么实现的?
我想问的是在Planning层的曲率约束方程怎么实现的,就是不是Controller层。
——@Bye Kobe
Apollo中分为多Scenario,每个Scenario包含多个Stage,每个Stage包含多个Task,每个Task包含Decider和Optimizer,Decider和Optimizer里又分为Path和Speed两部分。而题主所说的问题,应该在Piecewise Jerk Path Optimizer这个Task中。
代码实现主要在:
\modules\planning\tasks\optimizers\piecewise_jerk_path目录下,
\modules\planning\tasks\optimizers\piecewise_jerk_path\piecewise_jerk_path_optimizer.cc文件中310行左右bool success = piecewise_jerk_problem.Optimize(max_iter)语句,
为逻辑调用接口,跳进去发现实现在
\modules\planning\math\piecewise_jerk\piecewise_jerk_problem.cc文件中,这是个基类,会衍生速度与路径的二次规划相关逻辑,也就是说,速度路径优化一定程度上,是相通的代码逻辑。
基类实现了约束,派生类分别实现了代价构造函数。根据题主意思,我们回到Optimize(const int max_iter) 函数主体,发现出现了OSQP字样。这里调用FormulateProblem构造出二次规划,最后调用OSQP库进行求解,从而求出最优Path。进入FormulateProblem 这个函数用于构造最优化问题具体矩阵。FormulateProblem()调用CalculateKernel(&P_data, &P_indices, &P_indptr)构造P矩阵(代价函数),调用CalculateAffineConstraint(&A_data, &A_indices, &A_indptr, &lower_bounds,&upper_bounds)构造A矩阵(约束矩阵),这是两个优化相关度的核心,构造完后将矩阵都存储进OSQPData这个结构体里,后续直接调用OSQP库进行求解。OSQPData这个结构在这里:\modules\planning\math\piecewise_jerk\piecewise_jerk_problem.cc文件341行左右,感兴趣可以去看看。关于这两个函数细节公式,直接跳进去看就行了,网上也有大把解释,微信群里也不方便写公式,自己看就行了。处理后的结果,丢给下游控制模块,也有OSQP相关内容,MPC相关联的。希望能给你提供思路,谢谢。——@礼拜天老师们,我用的是Velodyne激光雷达和Ros系统,我想实现订阅Velodyne_points话题,因为阿波罗以前用的就是Ros系统,那么阿波罗的源码我可以用得上么?
——@咖啡
A1:应该可以,不过Ros本身就有Velodyne的驱动了。
——@王方浩
A2:感觉不如自己用Ros写。
——@咚咚
A3:Ros本来就有呀,一划拉一堆呢。
——@礼拜天
有大佬可以帮忙解释一下这两个函数具体是表达什么意思吗?
——@张世义
以lane_follow场景为例,配置在\planning\conf\scenario\lane_follow_config.pb.txt,文件中Task中,有相关速度优化的定义,主要为“SPEED_HEURISTIC_OPTIMIZER”字段,大约在16行附近,这个Task作用大致就是利用动态规划和回溯的方法。
在ST图中搜索出一系列可行的速度点集。回到题主问题,Cost2为一分割路段(整条路径分割的基本单位)内采样点间关系,也就是规划点与目标点的代价计算方式。Cost3就是前面提到的“回溯”,当前路段的代价总会依赖前一时刻最小代价,定义为最优,这样一直追溯到整条路径开始,采用链表遍历方法。最后交给其他Task进行进一步优化平滑。
————@礼拜天
如果只是自己学习学习代码,做做仿真不做部署的话,也是需要容器安装吗,还是源码编译安装?
——@新宇
容器是必须的。
——@王方浩
明白啦,看来还是必须得学习容器这一关。
——@新宇
容器只要会用就可以了,不需要专门学习。
——@王方浩
用虚拟机好多模块功能打不开是啥原因?和lgsvl联合仿真的时候,打开后自动又关掉了?
——@Sam
是不是和lgsvl之间消息没连接上,看下是不是收到lgsvl消息了。
——@窦子优
已经桥接上了,手动控制车辆在DreamView里是可以看到车辆运动的,但是Routing模块什么的都打不开,在考虑是不是因为用的是虚拟机的原因?
——@Sam
有可能的,没有显卡,感知模块跑不了。
——@王方浩
虚拟机安装不了显卡驱动,不是安不了,安装了好像也启动不了加速,显卡运算?
——@Sam
别用虚拟机,虚拟机不能用显卡,一些需要GPU加速的地方就不好办。
——@新宇
本周积分榜新鲜出炉,快看看自己有没有上榜吧,前三名记得找小哥哥领奖哦~
问答积分榜
微信昵称 | 提问积分 | 回答积分 | 总积分 |
礼拜天 | 70 | 70 | |
王方浩 | 60 | 60 | |
太阳好大啊! | 10 | 40 | 50 |
李可 | 10 | 40 | 50 |
牛肉咖喱饭 | 5 | 40 | 45 |
后天 | 5 | 40 | 45 |
钦星 | 10 | 10 | 20 |
向尚007 | 20 | 20 | |
一大群蜗牛 | 20 | 20 | |
朗拓科技 | 20 | 20 | |
Sam | 5 | 10 | 15 |
pumbaa | 15 | 15 | |
新宇 | 5 | 10 | 15 |
见龙在田 | 5 | 15 | 15 |
bye kobe | 10 | 10 | |
che. | 10 | 10 | |
天洋行空 | 10 | 10 | |
gluon | 10 | 10 | |
pxl | 10 | 10 | |
窦子优 | 10 | 10 | |
齐翔 | 10 | 10 | |
冯升 | 10 | 10 | |
鲁班八号 | 10 | 10 | |
11... | 10 | 10 | |
远方 | 10 | 10 | |
清风、腾云 | 10 | 10 | |
邱一丁 | 10 | 10 | |
Rolin | 5 | 5 | |
向北 | 5 | 5 | |
少年 | 5 | 5 | |
江间鱼 | 5 | 5 | |
Andy | 5 | 5 | |
小佚名 | 5 | 5 | |
径卫视觉-李工 | 5 | 5 | |
魔笛 | 5 | 5 | |
冰咖啡 | 5 | 5 | |
焦学健 | 5 | 5 | |
oxygen | 5 | 5 | |
咖啡 | 5 | 5 | |
jon | 5 | 5 | |
梁锋辽宁交通运输 | 5 | 5 | |
俟雨亭 | 5 | 5 | |
王冰 | 5 | 5 | |
jemmy-孙 | 5 | 5 | |
librarian | 5 | 5 | |
Colin_Existentialism | 5 | 5 | |
刘军政 | 5 | 5 | |
无压空间 | 5 | 5 | |
万象天引 | 5 | 5 | |
寻天涯 | 5 | 5 | |
feizaiQ | 5 | 5 | |
KL | 5 | 5 | |
任杰 | 5 | 5 | |
小治 | 5 | 5 | |
阿贵 | 5 | 5 | |
在鹿上 | 5 | 5 | |
汪全伍 | 5 | 5 | |
arclly | 5 | 5 | |
王悦宏 | 5 | 5 | |
刘铠睿 | 5 | 5 | |
风林火山 | 5 | 5 | |
李果果 | 5 | 5 | |
言五 | 5 | 5 | |
陈婧 | 5 | 5 | |
过风 | 5 | 5 | |
唐超 | 5 | 5 | |
张世义 | 5 | 5 |
报名可戳:社区布道师参与评选。