12#ifndef WSFSIXDOFROUTE_HPP
13#define WSFSIXDOFROUTE_HPP
15#include "wsf_six_dof_export.h"
21#include "UtLLAPos.hpp"
52 double earthNED[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
64 const UtLLAPos& aCurrentPos_lla,
65 const UtVec2d& aCurrentVel_mps,
67 double aTurnRollInMultiplier,
68 double aRouteAllowableAngleError_rad,
71 double aMaxBankAngle_rad,
72 double aMaxBankRate_rad_s,
75 bool& aAchievedWaypoint);
83 const UtLLAPos& aCurrentPos_lla,
84 const UtVec2d& aCurrentVel_mps,
86 double aRouteAllowableAngleError_rad,
91 bool& aAchievedWaypoint);
99 const UtLLAPos& aCurrentPos_lla,
100 const UtVec2d& aCurrentVel_mps,
103 double aTurnRadius_ft,
105 bool& aAchievedWaypoint);
113 static double GetTurnRadius_m(
double aSpeed_mps,
double aBankAngle_rad);
123 const UtLLAPos& aEndLLA,
124 double& aStartHdg_rad,
125 double& aEndHdg_rad);
164 const std::vector<std::unique_ptr<Waypoint>>&
GetRoute()
const {
return mRoute; }
167 void ComputeSegmentMap();
170 void AddSegment(
Waypoint* aWaypoint, std::unique_ptr<sRouteSegment>& aSegment);
175 sRouteSegment* GetRouteSegment(
const Waypoint* aWaypoint)
const;
184 std::vector<std::unique_ptr<Waypoint>> mRoute;
189 std::map<Waypoint*, std::unique_ptr<sRouteSegment>> mSegments;
Definition WsfSixDOF_Route.hpp:32
static void CalcYawAimHeadingAngle(const Waypoint *aPrevWpt, const Waypoint *aCurrWpt, const Waypoint *aNextWpt, const sRouteSegment *aCurrSegment, const sRouteSegment *aNextSegment, const UtLLAPos &aCurrentPos_lla, const UtVec2d &aCurrentVel_mps, CommonController::WaypointNavData &aNavData, double aRouteAllowableAngleError_rad, double aHeading_rad, double aSpeed_mps, double aMaxG_g, double aDeltaT_sec, bool &aAchievedWaypoint)
Definition WsfSixDOF_Route.cpp:390
size_t GetNumberOfWaypoints() const
Definition WsfSixDOF_Route.cpp:899
static double GetTurnRadiusFromLateralG_m(double aSpeed_mps, double aLateralG_g)
Definition WsfSixDOF_Route.cpp:872
static void CalcAimHeadingAndBankAngle(const Waypoint *aPrevWpt, const Waypoint *aCurrWpt, const Waypoint *aNextWpt, const sRouteSegment *aCurrSegment, const sRouteSegment *aNextSegment, const UtLLAPos &aCurrentPos_lla, const UtVec2d &aCurrentVel_mps, CommonController::WaypointNavData &aNavData, double aTurnRollInMultiplier, double aRouteAllowableAngleError_rad, double aHeading_rad, double aSpeed_mps, double aMaxBankAngle_rad, double aMaxBankRate_rad_s, double aMaxG_g, double aDeltaT_sec, bool &aAchievedWaypoint)
Definition WsfSixDOF_Route.cpp:164
const Waypoint * GetWaypointAtIndex(size_t aIndex) const
Definition WsfSixDOF_Route.cpp:84
const Waypoint * GetFirstElement() const
Definition WsfSixDOF_Route.cpp:904
Route * Clone() const
Definition WsfSixDOF_Route.cpp:37
static void CalcTaxiAimHeadingAngle(const Waypoint *aPrevWpt, const Waypoint *aCurrWpt, const Waypoint *aNextWpt, const sRouteSegment *aCurrSegment, const sRouteSegment *aNextSegment, const UtLLAPos &aCurrentPos_lla, const UtVec2d &aCurrentVel_mps, CommonController::WaypointNavData &aNavData, float aHeading_rad, double aTurnRadius_ft, double aDeltaT_sec, bool &aAchievedWaypoint)
Definition WsfSixDOF_Route.cpp:595
const Waypoint * GetNextWaypoint(const Waypoint *aWaypoint) const
Definition WsfSixDOF_Route.cpp:42
static std::unique_ptr< sRouteSegment > CalcSegmentGeometry(const Waypoint *aPrevWpt, const Waypoint *aCurrWpt)
Definition WsfSixDOF_Route.cpp:117
static double GetTurnRadius_m(double aSpeed_mps, double aBankAngle_rad)
Definition WsfSixDOF_Route.cpp:867
static bool AchievedWaypoint(float aDT, const CommonController::WaypointNavData &aNavData, const Waypoint *aWaypoint, const Waypoint *aNextWaypoint)
Definition WsfSixDOF_Route.cpp:820
void AddWaypointToRouteStart(std::unique_ptr< Waypoint > &aWaypoint)
Definition WsfSixDOF_Route.cpp:963
static bool PassedWaypoint(float aDT, const CommonController::WaypointNavData &aNavData)
Definition WsfSixDOF_Route.cpp:804
size_t GetWaypointIndex(const Waypoint *aWaypoint) const
Definition WsfSixDOF_Route.cpp:96
static void CalcVerticalSpeed(CommonController::WaypointNavData &aNavData)
Definition WsfSixDOF_Route.cpp:788
static double GetDistanceBetweenWaypoints_m(const UtLLAPos &aStartLLA, const UtLLAPos &aEndLLA, double &aStartHdg_rad, double &aEndHdg_rad)
Definition WsfSixDOF_Route.cpp:882
const std::vector< std::unique_ptr< Waypoint > > & GetRoute() const
Definition WsfSixDOF_Route.hpp:164
static double GetTurnLeadDistance_m(double aTurnAngle_rad, double aTurnRadius_m)
Definition WsfSixDOF_Route.cpp:877
static double GetInitialHeading_rad(const UtLLAPos &aLLAStart, const UtLLAPos &aLLAEnd)
Definition WsfSixDOF_Route.cpp:844
void AddWaypointToRouteEnd(std::unique_ptr< Waypoint > &aWaypoint)
Definition WsfSixDOF_Route.cpp:947
Definition WsfSixDOF_Waypoint.hpp:26
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfSixDOF_CommonController.hpp:65
Definition WsfSixDOF_Route.hpp:45
UtVec3d trackVector
Definition WsfSixDOF_Route.hpp:55
UtVec3d prevWptVector
Definition WsfSixDOF_Route.hpp:54
UtVec3d currWptVector
Definition WsfSixDOF_Route.hpp:53
double slope_rad
Definition WsfSixDOF_Route.hpp:50
double rangeTrack_m
Definition WsfSixDOF_Route.hpp:51
double earthNED[3][3]
Definition WsfSixDOF_Route.hpp:52
double slantRange_m
Definition WsfSixDOF_Route.hpp:49
double trackStartHdg_rad
Definition WsfSixDOF_Route.hpp:48
double trackDistance_m
Definition WsfSixDOF_Route.hpp:46
double trackEndHdg_rad
Definition WsfSixDOF_Route.hpp:47