1 | // %flair:license{ |
---|
2 | // This file is part of the Flair framework distributed under the |
---|
3 | // CECILL-C License, Version 1.0. |
---|
4 | // %flair:license} |
---|
5 | /*! |
---|
6 | * \file Uav.h |
---|
7 | * \brief Base class to construct sensors/actuators depending on uav type |
---|
8 | * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253 |
---|
9 | * \date 2014/01/22 |
---|
10 | * \version 3.4 |
---|
11 | */ |
---|
12 | |
---|
13 | #ifndef HDSUAV_H |
---|
14 | #define HDSUAV_H |
---|
15 | |
---|
16 | #include <Object.h> |
---|
17 | |
---|
18 | namespace flair { |
---|
19 | namespace core { |
---|
20 | class FrameworkManager; |
---|
21 | } |
---|
22 | namespace filter { |
---|
23 | class Ahrs; |
---|
24 | class UavMultiplex; |
---|
25 | } |
---|
26 | namespace actuator { |
---|
27 | class Bldc; |
---|
28 | } |
---|
29 | namespace sensor { |
---|
30 | class UsRangeFinder; |
---|
31 | class BatteryMonitor; |
---|
32 | class VrpnClient; |
---|
33 | class Imu; |
---|
34 | class Camera; |
---|
35 | } |
---|
36 | } |
---|
37 | |
---|
38 | namespace flair { |
---|
39 | namespace meta { |
---|
40 | class MetaUsRangeFinder; |
---|
41 | class MetaVrpnObject; |
---|
42 | |
---|
43 | /*! \class Uav |
---|
44 | * |
---|
45 | * \brief Base class to construct sensors/actuators depending on uav type |
---|
46 | */ |
---|
47 | class Uav: public core::Object { |
---|
48 | public: |
---|
49 | /* |
---|
50 | typedef enum { |
---|
51 | None, |
---|
52 | Auto,//rt serial if hds x4 ou x8, auto ip sinon |
---|
53 | AutoIP, |
---|
54 | UserDefinedIP, |
---|
55 | AutoSerialPort, |
---|
56 | } VRPNType_t; |
---|
57 | */ |
---|
58 | //uav_name: for optitrack |
---|
59 | Uav(core::FrameworkManager* parent,std::string name,filter::UavMultiplex *multiplex=NULL); |
---|
60 | ~Uav(); |
---|
61 | void SetupVRPN(std::string optitrack_address,std::string name); |
---|
62 | //vrpn serial: broken, need to add serial port in uav specific code |
---|
63 | //void SetupVRPNSerial(core::SerialPort *vrpn_port,std::string name,int VRPNSerialObjectId); |
---|
64 | virtual void SetupVRPNAutoIP(std::string name); |
---|
65 | |
---|
66 | virtual void StartSensors(void); |
---|
67 | void UseDefaultPlot(void); |
---|
68 | actuator::Bldc* GetBldc(void) const; |
---|
69 | filter::UavMultiplex* GetUavMultiplex(void) const; |
---|
70 | sensor::Imu* GetImu(void) const; |
---|
71 | filter::Ahrs* GetAhrs(void) const; |
---|
72 | MetaUsRangeFinder* GetMetaUsRangeFinder(void) const; |
---|
73 | sensor::UsRangeFinder* GetUsRangeFinder(void) const; |
---|
74 | sensor::BatteryMonitor* GetBatteryMonitor(void) const; |
---|
75 | sensor::VrpnClient* GetVrpnClient(void) const; |
---|
76 | meta::MetaVrpnObject* GetVrpnObject(void) const; |
---|
77 | sensor::Camera* GetVerticalCamera(void) const; |
---|
78 | |
---|
79 | protected: |
---|
80 | void SetBldc(const actuator::Bldc *bldc); |
---|
81 | void SetMultiplex(const filter::UavMultiplex *multiplex); |
---|
82 | void SetAhrs(const filter::Ahrs *ahrs); |
---|
83 | void SetUsRangeFinder(const sensor::UsRangeFinder *us); |
---|
84 | void SetBatteryMonitor(const sensor::BatteryMonitor *battery); |
---|
85 | void SetVerticalCamera(const sensor::Camera *verticalCamera); |
---|
86 | |
---|
87 | private: |
---|
88 | sensor::Imu* imu; |
---|
89 | filter::Ahrs* ahrs; |
---|
90 | actuator::Bldc* bldc; |
---|
91 | filter::UavMultiplex *multiplex; |
---|
92 | sensor::UsRangeFinder* us; |
---|
93 | MetaUsRangeFinder* meta_us; |
---|
94 | sensor::VrpnClient *vrpnclient; |
---|
95 | MetaVrpnObject* uav_vrpn; |
---|
96 | sensor::BatteryMonitor* battery; |
---|
97 | sensor::Camera* verticalCamera; |
---|
98 | }; |
---|
99 | } // end namespace meta |
---|
100 | } // end namespace flair |
---|
101 | #endif // HDSUAV_H |
---|