ego-planner开源代码之ego_planner_node数据流分析
1. 源由
ego-planner开源代码之数据流分析工作的延续。
2. 源代码
这里分析主要源代码,至于算法逻辑、细节实现不在此展开。
2.1 main
main
├──> EGOReplanFSM::init
└──> ros::spin()
2.2 EGOReplanFSM::init
EGOReplanFSM::init
├──> 初始化状态变量
├──> 获取 FSM 参数 (nh.param)
├──> 初始化主要模块 (planner_manager_, visualization_)
├──> 注册定时器回调函数
│ ├──> exec_timer_ --> EGOReplanFSM::execFSMCallback
│ └──> safety_timer_ --> EGOReplanFSM::checkCollisionCallback
├──> 注册订阅者和发布者
│ ├──> odom_sub_ --> "/odom_world" --> EGOReplanFSM::odometryCallback
│ ├──> bspline_pub_ --> "/planning/bspline"
│ ├──> data_disp_pub_ --> "/planning/data_display"
│ ├──> waypoint_sub_ --> "/waypoint_generator/waypoints" --> EGOReplanFSM::waypointCallback
└──> <target_type_>
├──> [MANUAL_TARGET] waypointCallback
└──> [PRESET_TARGET] planGlobalTrajbyGivenWps
3. 数据流
ego_planner/ego_planner_node/ego_planner_node
nav_msgs::OdometryConstPtr +---------------------------------------------+
IN.1 "/odom_world" ----> | odometryCallback |
| | |
nav_msgs::PathConstPtr | v |
IN.2 "/waypoint_generator/waypoints" ----> | waypointCallback(MANUAL_TARGET) |
| planGlobalTrajbyGivenWps(PRESET_TARGET) |
| exec_timer_ --> execFSMCallback --|--+--+
| | | |
| safety_timer_ --> checkCollisionCallback --|--+ |
+---------------------------------------------+ | |
| |
ego_planner::Bspline | |
OUT.1 "/planning/bspline" <-------------------------------------------------------+ |
ego_planner::DataDisp |
OUT.2 "/planning/data_display" <----------------------------------------------------------+