Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F88851644
kite.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Oct 21, 00:13
Size
3 KB
Mime Type
text/x-c++
Expires
Wed, Oct 23, 00:13 (2 d)
Engine
blob
Format
Raw Data
Handle
21829165
Attached To
R1517 test_package
kite.h
View Options
#ifndef KITE_H
#define KITE_H
#include "casadi/casadi.hpp"
#include "yaml-cpp/yaml.h"
#include "kitemath.h"
#include <chrono>
struct PlaneGeometry
{
double WingSpan;
double MAC;
double AspectRatio;
double WingSurfaceArea;
double TaperRatio;
double HTailsurface;
double TailLeverArm;
double FinSurfaceArea;
double FinLeverArm;
double AerodynamicCenter;
};
struct PlaneInertia
{
double Mass;
double Ixx;
double Iyy;
double Izz;
double Ixz;
};
struct PlaneAerodynamics
{
double CL0;
double CL0_tail;
double CLa_total;
double CLa_wing;
double CLa_tail;
double e_oswald;
double CD0_total;
double CD0_wing;
double CD0_tail;
double CYb;
double CYb_vtail;
double Cm0;
double Cma;
double Cn0;
double Cnb;
double Cl0;
double Clb;
double CLq;
double Cmq;
double CYr;
double Cnr;
double Clr;
double CYp;
double Clp;
double Cnp;
double CLde;
double CYdr;
double Cmde;
double Cndr;
double Cldr;
double CDde;
};
struct TetherProperties
{
double length;
double Ks;
double Kd;
};
struct KiteProperties
{
std::string Name;
PlaneGeometry Geometry;
PlaneInertia Inertia;
PlaneAerodynamics Aerodynamics;
TetherProperties Tether;
};
struct AlgorithmProperties
{
IntType Integrator;
double sampling_time;
};
namespace kite_utils
{
KiteProperties LoadProperties(const std::string &filename);
typedef std::chrono::time_point<std::chrono::system_clock> time_point;
time_point get_time();
}
class KiteDynamics
{
public:
//constructor
KiteDynamics(const KiteProperties &KiteProps, const AlgorithmProperties &AlgoProps);
virtual ~KiteDynamics(){}
/** public methods */
casadi::SX getSymbolicState(){return this->State;}
casadi::SX getSymbolicControl(){return this->Control;}
casadi::SX getSymbolicDynamics(){return this->SymDynamics;}
casadi::SX getSymbolicIntegrator(){return this->SymIntegartor;}
casadi::SX getSymbolicJacobian(){return this->SymJacobian;}
casadi::Function getNumericDynamics(){return this->NumDynamics;}
casadi::Function getNumericIntegrator(){return this->NumIntegrator;}
casadi::Function getNumericJacobian(){return this->NumJacobian;}
private:
//state variables
casadi::SX State;
//control variables
casadi::SX Control;
//symbolic equations of motion
casadi::SX SymDynamics;
//symbolic equations of integartor
casadi::SX SymIntegartor;
//symbolic expression for system jacobian
casadi::SX SymJacobian;
//numerical dynamics evaluation
casadi::Function NumDynamics;
//numerical integral evaluation
casadi::Function NumIntegrator;
//numerical jacobian evaluation
casadi::Function NumJacobian;
};
/** 6-DoF Kinematics of a Rigid Body */
class RigidBodyKinematics
{
public:
RigidBodyKinematics(const AlgorithmProperties &AlgoProps);
virtual ~RigidBodyKinematics(){}
casadi::Function getNumericIntegrator() {return NumIntegartor;}
casadi::Function getNumericJacobian() {return NumJacobian;}
casadi::Function getNumericDynamcis() {return NumDynamics;}
private:
casadi::SX state;
AlgorithmProperties algo_props;
/** numerical integrator */
casadi::Function NumIntegartor;
/** numerical evaluation of Jacobian */
casadi::Function NumJacobian;
/** numerical evaluation of system dynamics */
casadi::Function NumDynamics;
};
#endif // KITE_H
Event Timeline
Log In to Comment