UAV Simulator
Loading...
Searching...
No Matches
gnc.h
Go to the documentation of this file.
1
5#ifndef GNC_H
6#define GNC_H
7
8#include "waypoint_list.h"
9#include "aircraft/aircraft.h"
10#include <easy3d/core/vec.h>
11#include "common.h"
12
20class GNC
21{
22public:
23 GNC();
28 void setWaypoints(const WaypointList& waypoints);
38 void update(const Aircraft& aircraft, float dt);
39
40
41 // New additions: For Trim, linearisation etc
42 bool computeTrim(Aircraft& aircraft, double Va, double gamma, double R);
43 static double trimObjective(const std::vector<double>& angles, std::vector<double>& grad, void* data);
44 static Eigen::VectorXd computeXdot(Aircraft& ac);
45 bool linearizeAtTrim(Aircraft& drone);
46 void computeLinearModel(Aircraft& aircraft,
47 const Eigen::VectorXd& Xtrim,
48 const Eigen::VectorXd& Utrim,
49 Eigen::MatrixXd& A_full,
50 Eigen::MatrixXd& B_full,
51 Eigen::MatrixXd& A_lat,
52 Eigen::MatrixXd& B_lat,
53 Eigen::MatrixXd& A_lon,
54 Eigen::MatrixXd& B_lon);
55
56
57 struct TrimData
58 {
59 double Va;
60 double gamma;
61 double R;
62 double phi_fixed;
63 double beta_fixed;
65 };
66
67 const TrimData& getTrimData() const { return trimData; }
68 const Eigen::MatrixXd& getA() const { return A; }
69 const Eigen::MatrixXd& getB() const { return B; }
70 const Eigen::MatrixXd& getA_lat() const { return A_lat; }
71 const Eigen::MatrixXd& getB_lat() const { return B_lat; }
72 const Eigen::MatrixXd& getA_lon() const { return A_lon; }
73 const Eigen::MatrixXd& getB_lon() const { return B_lon; }
74
75
76
77private:
78 friend class Simviewer;
80
82 Eigen::MatrixXd A, B, A_lat, B_lat, A_lon, B_lon;
83};
84
85#endif // GNC_H
Declaration of the Aircraft class for the UAV Simulator.
Represents a fixed‑wing UAV including its dynamics and 3D rendering.
Definition aircraft.h:41
Guidance, Navigation, and Control system for the aircraft.
Definition gnc.h:21
void computeLinearModel(Aircraft &aircraft, const Eigen::VectorXd &Xtrim, const Eigen::VectorXd &Utrim, Eigen::MatrixXd &A_full, Eigen::MatrixXd &B_full, Eigen::MatrixXd &A_lat, Eigen::MatrixXd &B_lat, Eigen::MatrixXd &A_lon, Eigen::MatrixXd &B_lon)
Definition gnc.cpp:326
const Eigen::MatrixXd & getB_lon() const
Definition gnc.h:73
static Eigen::VectorXd computeXdot(Aircraft &ac)
Definition gnc.cpp:240
Eigen::MatrixXd B_lon
Definition gnc.h:82
Eigen::MatrixXd B
Definition gnc.h:82
TrimData trimData
Definition gnc.h:81
Eigen::MatrixXd A_lat
Definition gnc.h:82
void setWaypoints(const WaypointList &waypoints)
Set the waypoints for the navigation system.
Definition gnc.cpp:18
bool linearizeAtTrim(Aircraft &drone)
Definition gnc.cpp:299
const TrimData & getTrimData() const
Definition gnc.h:67
static double trimObjective(const std::vector< double > &angles, std::vector< double > &grad, void *data)
Definition gnc.cpp:144
const Eigen::MatrixXd & getA_lon() const
Definition gnc.h:72
const Eigen::MatrixXd & getB_lat() const
Definition gnc.h:71
const Eigen::MatrixXd & getA() const
Definition gnc.h:68
const Eigen::MatrixXd & getB() const
Definition gnc.h:69
GNC()
Definition gnc.cpp:10
WaypointList waypoints_
Current list of waypoints for navigation.
Definition gnc.h:79
Eigen::MatrixXd A
Definition gnc.h:82
void update(const Aircraft &aircraft, float dt)
Update the GNC system state.
Definition gnc.cpp:33
Eigen::MatrixXd A_lon
Definition gnc.h:82
Eigen::MatrixXd B_lat
Definition gnc.h:82
friend class Simviewer
Definition gnc.h:78
const Eigen::MatrixXd & getA_lat() const
Definition gnc.h:70
bool computeTrim(Aircraft &aircraft, double Va, double gamma, double R)
Definition gnc.cpp:53
Stores and manages a list of 3D waypoints for trajectory following or mission execution.
Definition waypoint_list.h:25
Common definitions and aliases for Easy3D types.
Definition gnc.h:58
double gamma
Definition gnc.h:60
double phi_fixed
Definition gnc.h:62
double R
Definition gnc.h:61
double Va
Definition gnc.h:59
Aircraft * aircraft
Definition gnc.h:64
double beta_fixed
Definition gnc.h:63
Defines the WaypointList class that manages a sequence of 3D waypoints for navigation or mission plan...