00001
00002
00003
00004 #ifndef CAJUN_PATH_VERIFIER_H
00005 #define CAJUN_PATH_VERIFIER_H
00006
00007 #include "data_type.H"
00008 #include "world_state.H"
00009 #include "rndf.H"
00010
00011 #include "planner_defs.H"
00012 #include "task_planner.H"
00013
00014 #include "uc_planner_param.H"
00015
00016 namespace cajun
00017 {
00018 class path_verifier_t
00019 {
00020 public:
00021 path_verifier_t (world_state_t *ws_, rndf_t const *rndf_);
00022 ~path_verifier_t ()
00023 {}
00024 bool is_task_path_good (std::deque <task_planner_t *> &task_plan_,
00025 blocked_lane_data_t &blk_data_,
00026 unsigned &blk_tp_ind_, unsigned &path_index_,
00027 mobility_t mobility_, double &blk_speed_,
00028 unsigned check_till_tp_id,
00029 unsigned check_till_path_id);
00030 private:
00031 world_state_t *m_world_state;
00032 rndf_t const *m_rndf;
00033
00034 const uc_planner_param_t *m_uc_param;
00035 void get_all_possible_blockages (
00036 std::vector<blocked_lane_data_t> &blk_lanes,
00037 task_planner_t *task_plan_);
00038
00039 bool is_path_good (const path_t *path_,
00040 std::vector <blocked_lane_data_t> &blk_lanes,
00041 unsigned &break_p_, blocked_lane_data_t &blk_data_,
00042 mobility_t mobility_, double &blk_speed_);
00043
00044
00045 bool is_segment_tp (TP_type_t const tp_type_);
00046 };
00047 };
00048
00049 #endif