Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/libraries/AP_AHRS/AP_AHRS_External.h
9767 views
1
#pragma once
2
3
/*
4
This program is free software: you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation, either version 3 of the License, or
7
(at your option) any later version.
8
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
13
14
You should have received a copy of the GNU General Public License
15
along with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
/*
19
* External based AHRS (Attitude Heading Reference System) interface for
20
* ArduPilot
21
*
22
*/
23
24
#include "AP_AHRS_config.h"
25
26
#if AP_AHRS_EXTERNAL_ENABLED
27
28
#include "AP_AHRS_Backend.h"
29
30
class AP_AHRS_External : public AP_AHRS_Backend {
31
public:
32
33
using AP_AHRS_Backend::AP_AHRS_Backend;
34
35
/* Do not allow copies */
36
CLASS_NO_COPY(AP_AHRS_External);
37
38
// reset the current gyro drift estimate
39
// should be called if gyro offsets are recalculated
40
void reset_gyro_drift() override {}
41
42
// Methods
43
bool initialised() const override;
44
void update() override;
45
void get_results(Estimates &results) override;
46
void reset() override {}
47
48
// return a wind estimation vector, in m/s
49
bool wind_estimate(Vector3f &ret) const override {
50
return false;
51
}
52
53
// return a ground vector estimate in meters/second, in North/East order
54
Vector2f groundspeed_vector() override;
55
56
bool use_compass() override {
57
// this is actually never called at the moment; we use dcm's
58
// return value.
59
return true;
60
}
61
62
void estimate_wind(void);
63
64
// is the AHRS subsystem healthy?
65
bool healthy() const override;
66
67
// returns false if we fail arming checks, in which case the buffer will be populated with a failure message
68
// requires_position should be true if horizontal position configuration should be checked (not used)
69
bool pre_arm_check(bool requires_position, char *failure_msg, uint8_t failure_msg_len) const override;
70
71
// relative-origin functions for fallback in AP_InertialNav
72
bool get_origin(Location &ret) const override;
73
bool get_relative_position_NED_origin(Vector3p &vec) const override;
74
bool get_relative_position_NE_origin(Vector2p &posNE) const override;
75
bool get_relative_position_D_origin(postype_t &posD) const override;
76
77
bool get_filter_status(nav_filter_status &status) const override;
78
void send_ekf_status_report(class GCS_MAVLINK &link) const override;
79
80
void get_control_limits(float &ekfGndSpdLimit, float &controlScaleXY) const override;
81
};
82
83
#endif
84
85