TrajectoryDynamicCosts.h 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /// \file TrajectoryDynamicCosts.h
  2. /// \brief Calculate collision costs for roll out trajectory for free trajectory evaluation for OpenPlanner local planner version 1.5+
  3. /// \author Hatem Darweesh
  4. /// \date Jan 14, 2018
  5. #ifndef TRAJECTORYDYNAMICCOSTS_H_
  6. #define TRAJECTORYDYNAMICCOSTS_H_
  7. #include "RoadNetwork.h"
  8. #include "PlannerCommonDef.h"
  9. #include "PlanningHelpers.h"
  10. using namespace std;
  11. namespace PlannerHNS
  12. {
  13. class TrajectoryDynamicCosts
  14. {
  15. public:
  16. TrajectoryDynamicCosts();
  17. virtual ~TrajectoryDynamicCosts();
  18. TrajectoryCost DoOneStep(const vector<vector<vector<WayPoint> > >& rollOuts, const vector<vector<WayPoint> >& totalPaths,
  19. const WayPoint& currState, const int& currTrajectoryIndex, const int& currLaneIndex, const PlanningParams& params,
  20. const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState, const std::vector<PlannerHNS::DetectedObject>& obj_list);
  21. TrajectoryCost DoOneStepStatic(const vector<vector<WayPoint> >& rollOuts, const vector<WayPoint>& totalPaths,
  22. const WayPoint& currState, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
  23. const std::vector<PlannerHNS::DetectedObject>& obj_list, const int& iCurrentIndex = -1);
  24. TrajectoryCost DoOneStepDynamic(const vector<vector<WayPoint> >& rollOuts, const vector<WayPoint>& totalPaths,
  25. const WayPoint& currState, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState,
  26. const std::vector<PlannerHNS::DetectedObject>& obj_list, const int& iCurrentIndex = -1);
  27. public:
  28. int m_PrevCostIndex;
  29. int m_PrevIndex;
  30. vector<TrajectoryCost> m_TrajectoryCosts;
  31. PlanningParams m_Params;
  32. PolygonShape m_SafetyBorder;
  33. vector<WayPoint> m_AllContourPoints;
  34. vector<WayPoint> m_CollisionPoints;
  35. double m_WeightPriority;
  36. double m_WeightTransition;
  37. double m_WeightLong;
  38. double m_WeightLat;
  39. double m_WeightLaneChange;
  40. double m_LateralSkipDistance;
  41. double m_CollisionTimeDiff;
  42. private:
  43. bool ValidateRollOutsInput(const vector<vector<vector<WayPoint> > >& rollOuts);
  44. vector<TrajectoryCost> CalculatePriorityAndLaneChangeCosts(const vector<vector<WayPoint> >& laneRollOuts, const int& lane_index, const PlanningParams& params);
  45. void NormalizeCosts(vector<TrajectoryCost>& trajectoryCosts);
  46. void CalculateLateralAndLongitudinalCosts(vector<TrajectoryCost>& trajectoryCosts, const vector<vector<vector<WayPoint> > >& rollOuts, const vector<vector<WayPoint> >& totalPaths, const WayPoint& currState, const vector<WayPoint>& contourPoints, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState);
  47. void CalculateLateralAndLongitudinalCostsStatic(vector<TrajectoryCost>& trajectoryCosts, const vector<vector<WayPoint> >& rollOuts, const vector<WayPoint>& totalPaths, const WayPoint& currState, const vector<WayPoint>& contourPoints, const PlanningParams& params, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState);
  48. void CalculateTransitionCosts(vector<TrajectoryCost>& trajectoryCosts, const int& currTrajectoryIndex, const PlanningParams& params);
  49. void CalculateIntersectionVelocities(const std::vector<WayPoint>& path, const DetectedObject& obj, const WayPoint& currPose, const CAR_BASIC_INFO& carInfo, const double& c_lateral_d, WayPoint& collisionPoint, TrajectoryCost& trajectoryCosts);
  50. int GetCurrentRollOutIndex(const std::vector<WayPoint>& path, const WayPoint& currState, const PlanningParams& params);
  51. void InitializeCosts(const vector<vector<WayPoint> >& rollOuts, const PlanningParams& params);
  52. void InitializeSafetyPolygon(const WayPoint& currState, const CAR_BASIC_INFO& carInfo, const VehicleState& vehicleState, const double& c_lateral_d, const double& c_long_front_d, const double& c_long_back_d);
  53. void CalculateLateralAndLongitudinalCostsDynamic(const std::vector<PlannerHNS::DetectedObject>& obj_list, const vector<vector<WayPoint> >& rollOuts, const vector<WayPoint>& totalPaths,
  54. const WayPoint& currState, const PlanningParams& params, const CAR_BASIC_INFO& carInfo,
  55. const VehicleState& vehicleState, const double& c_lateral_d, const double& c_long_front_d, const double& c_long_back_d );
  56. };
  57. }
  58. #endif /* TRAJECTORYDYNAMICCOSTS_H_ */