source: flair-dev/trunk/include/FlairMeta/Uav.h @ 9

Last change on this file since 9 was 9, checked in by Sanahuja Guillaume, 5 years ago

lic

File size: 3.2 KB
Line 
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
18namespace 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
38namespace flair {
39namespace 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
Note: See TracBrowser for help on using the repository browser.