Flair
Framework Libre Air
Uav.h
Go to the documentation of this file.
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}
13 #ifndef HDSUAV_H
14 #define HDSUAV_H
15 
16 #include <Object.h>
17 #include <UsRangeFinder.h>
18 
19 namespace flair {
20  namespace filter {
21  class Ahrs;
22  class UavMultiplex;
23  }
24  namespace actuator {
25  class Bldc;
26  }
27  namespace sensor {
28  class UsRangeFinder;
29  class BatteryMonitor;
30  class Imu;
31  class Camera;
32  class NmeaGps;
33  class PressureSensor;
34  }
35 }
36 
37 namespace flair {
38 namespace meta {
39 class MetaUsRangeFinder;
40 
48 class Uav : public core::Object {
49 public:
50 
51  Uav(std::string name,
52  filter::UavMultiplex *multiplex = NULL);
53  ~Uav();
54 
55  virtual void StartSensors(void)=0;
56  void UseDefaultPlot(void);
57  actuator::Bldc *GetBldc(void) const;
58  filter::UavMultiplex *GetUavMultiplex(void) const;
59  sensor::Imu *GetImu(void) const;
60  filter::Ahrs *GetAhrs(void) const;
61  MetaUsRangeFinder *GetMetaUsRangeFinder(void) const;
62  sensor::UsRangeFinder *GetUsRangeFinder(void) const;
63  sensor::BatteryMonitor *GetBatteryMonitor(void) const;
64  sensor::Camera *GetVerticalCamera(void) const;
65  sensor::Camera *GetHorizontalCamera(void) const;
66  sensor::NmeaGps *GetGps(void) const;
67  sensor::PressureSensor *GetPressureSensor(void) const;
68  virtual std::string GetDefaultVrpnAddress(void) const{return "127.0.0.1:3883";}
69  virtual bool isReadyToFly(void) const { return true;}
70  virtual std::string GetType(void) const=0;
71 
72 protected:
73  void SetBldc(const actuator::Bldc *bldc);
74  void SetMultiplex(const filter::UavMultiplex *multiplex);
75  void SetAhrs(const filter::Ahrs *ahrs);//also sets imu (retrieved from the ahrs)
76  void SetUsRangeFinder(const sensor::UsRangeFinder *us);
77  void SetBatteryMonitor(const sensor::BatteryMonitor *battery);
78  void SetVerticalCamera(const sensor::Camera *verticalCamera);
79  void SetHorizontalCamera(const sensor::Camera *verticalCamera);
80  void SetGps(const sensor::NmeaGps *gps);
81  void SetPressureSensor(const sensor::PressureSensor *pressureSensor);
82 
83 private:
84  sensor::Imu *imu;
85  sensor::NmeaGps *gps;
86  filter::Ahrs *ahrs;
87  actuator::Bldc *bldc;
88  filter::UavMultiplex *multiplex;
90  MetaUsRangeFinder *meta_us;
91  sensor::BatteryMonitor *battery;
92  sensor::Camera *verticalCamera,*horizontalCamera;
93  sensor::PressureSensor *pressureSensor;
94 };
95 
101 Uav *GetUav(void);
102 
103 } // end namespace meta
104 } // end namespace flair
105 #endif // HDSUAV_H
Base class for Camera.
Definition: Camera.h:39
Base class for all Framework's classes.
Definition: Object.h:83
namespace of the flair Framework
Definition: Ahrs.h:19
Base class for PressureSensor.
Definition: PressureSensor.h:40
Base class for UsRangeFinder.
Definition: UsRangeFinder.h:40
Base class for Imu.
Definition: Imu.h:44
Base class for GPS using NMEA sentances.
Definition: NmeaGps.h:45
Base class for UsRangeFinder.
Abstract class for AHRS.
Definition: Ahrs.h:44
Uav * GetUav(void)
get Uav
Class defining uav multiplexing.
Definition: UavMultiplex.h:37
Classe haut niveau pour capteur à ultra son.
Definition: MetaUsRangeFinder.h:40
Base class for all Framework's classes.
Base class for battery monitor.
Definition: BatteryMonitor.h:35
Base class to construct sensors/actuators depending on uav type. The Object is created with the Frame...
Definition: Uav.h:48
Base class for brushless motors drivers.
Definition: Bldc.h:37