62 EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
65 const double * DesiredPosition(
const double T,
const double*
const X);
66 const double * DesiredVelocity(
const double T,
const double *
const X);
67 const double * DesiredHeading(
const double T,
const double *
const X);
68 const double * DesiredYawRate(
const double T,
const double *
const X);
70 void OdeFcn(
const double T,
const double *
const X,
double *
const XDot)
const;
72 void InitialConditionSetup(
const double T,
const double *
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
74 std::vector<Eigen::Vector3d,Eigen::aligned_allocator<Eigen::Vector3d> > m_waypoints;
75 std::vector<Eigen::Vector3d,Eigen::aligned_allocator<Eigen::Vector3d> > straightStart;
76 std::vector<Eigen::Vector3d,Eigen::aligned_allocator<Eigen::Vector3d> > straightEnd;
78 std::vector<Eigen::Vector3d,Eigen::aligned_allocator<Eigen::Vector3d> > circleCenter;
79 std::vector<double> circleRadius;
80 std::vector<double> circleArcRadians;
82 std::vector<double> cummulativeLength;
83 std::vector<double> segmentLength;
84 std::vector<double> straightSegmentSpeed;
86 unsigned int GetSegmentNumber(
const double T,
const double *
const X)
const;
88 Eigen::Vector3d GetCurrentTrackDirection(
const double T,
const double *
const X)
const;
89 Eigen::Vector3d GetCurrentTrackNormal(
const double T,
const double *
const X)
const;
90 double GetCurrentYawDesired(
const double T,
const double *
const X)
const;
91 double GetCurrentYawRateDesired(
const double T,
const double *
const X)
const;
93 Eigen::Vector3d GetCurrentTargetPoint(
const double T,
const double *
const X)
const;
95 ISignalPort *m_currentPosition;
96 ISignalPort *m_currentVelocity;
98 double m_desiredPosition[3];
99 double m_desiredHeading;
100 double m_desiedVelocity;
101 double m_desiredYawRate;
103 unsigned int m_trackState;
104 double m_lookaheadDistance;
106 int circleNoFromSegmentNo(
int no)
const {
return no/2-1;}
107 int straightNoFromSegmentNo(
int no)
const {
return (no-1)/2;}
109 #ifdef FH_VISUALIZATION
115 C3DLine *removedlines;
117 Ogre::SceneNode ** m_legNodes;
118 Ogre::SceneNode ** m_circleNodes;
119 Ogre::SceneNode *m_targetNode;
120 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
121 void RenderUpdate(
const double T,
const double*
const X);