【Apollo源码分析】系列的第六部分【planning】

【Apollo源码分析】系列的第六部分【planning】

planning模块 代码大概有1000行左右。 这个模块仍然处于待完善的状态。 
和其他模块一样,这里只有框架,除了 RTKReplayPlanner,没有实用的算法。

planning模块的输入:

  • Localization
  • Perception (future work)
  • Prediction (future work)
  • Decision (future work)
  • Recorded RTK trajectory

planning模块的输出:

  • trajectory point

planning/main.cc

照例先看看main.cc

 
 
 
  1. int main(int argc, char **argv) {
  2. google::InitGoogleLogging(argv[0]);
  3. google::ParseCommandLineFlags(&argc, &argv, true);
  4. ros::init(argc, argv, "planning");
  5. ::apollo::planning::PlanningNode planning_node;
  6. planning_node.Run();
  7. return 0;
  8. }
  9. //与#define APOLLO_MAIN(APP) 大同小异。可能后期会改为一致。

planning/common/planning_gflags.h

.h文件和.cc文件,声明和定义planning模块的变量。 
主要的变量是:

 
 
 
  1. #include "modules/planning/common/planning_gflags.h"
  2. //发布运动规划planning的频率,单位是HZ。
  3. DEFINE_int32(planning_loop_rate, 5, "Loop rate for planning node");
  4. //用RTK定位算法得到的最近一段时间的历史轨迹
  5. DEFINE_string(rtk_trajectory_filename, "modules/planning/data/garage.csv",
  6. "Loop rate for planning node");
  7. //planning时,用于回退匹配的轨迹节点数量。
  8. DEFINE_uint64(rtk_trajectory_backward, 10,
  9. "The number of points to be included in RTK trajectory "
  10. "before the matched point");
  11. //前向匹配的轨迹节点数量
  12. DEFINE_uint64(rtk_trajectory_forward, 800,
  13. "The number of points to be included in RTK trajectory "
  14. "after the matched point");
  15. //重新规划planning的阈值,高于此值则重新planning
  16. DEFINE_double(replanning_threshold, 2.0,
  17. "The threshold of position deviation "
  18. "that triggers the planner replanning");
  19. //轨迹点之间的时间分辨率/间隔,0.01s
  20. DEFINE_double(trajectory_resolution, 0.01,
  21. "The time resolution of "
  22. "output trajectory.");

planning/planner/planner.h

Planner是纯虚基类。有一个公有的Plan(): 
纯虚函数。继承它的子类必须重写这个纯虚函数才能实例化。 
所有的路径规划的class都继承自这个类。 
目的:虚函数指针,运行时决断,父类指针指向子类对象,runtime时调用子类的成员函数。

具体到Planner 而言就是提供一个公有的接口 virtual bool Plan(). 
使得在运行时可以执行不同的planning算法。

 
 
 
  1. 参数1:planning起始点
  2. 参数2:路径规划结果集,由一系列离散的轨迹点组成。
  3. 目的:根据历史行驶的一系列轨迹节点,
  4. 并结合Perception模块+Prediction模块+Decision模块+
  5. Localization地图定位模块,来进行推算未来一段时间的行驶轨迹。
  6. 本质上是路径规划算法。
  7. virtual bool Plan
  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值