-
Notifications
You must be signed in to change notification settings - Fork 0
/
mode_avoid_adsb.cpp
38 lines (33 loc) · 1.25 KB
/
mode_avoid_adsb.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "Copter.h"
/*
* control_avoid.cpp - init and run calls for AP_Avoidance's AVOID flight mode
*
* This re-uses GUIDED mode functions but does not interfere with the GCS or companion computer's
* use of guided mode because the velocity requests arrive from different sources (i.e MAVLink messages
* for GCS and Companion Computers vs the AP_Avoidance_Copter class for adsb avoidance) and inputs from
* each source are only accepted and processed in the appropriate flight mode.
*/
// initialise avoid_adsb controller
bool ModeAvoidADSB::init(const bool ignore_checks)
{
// re-use guided mode
return ModeGuided::init(ignore_checks);
}
bool ModeAvoidADSB::set_velocity(const Vector3f& velocity_neu)
{
// check flight mode
if (copter.control_mode != Mode::Number::AVOID_ADSB) {
return false;
}
// re-use guided mode's velocity controller
ModeGuided::set_velocity(velocity_neu);
return true;
}
// runs the AVOID_ADSB controller
void ModeAvoidADSB::run()
{
// re-use guided mode's velocity controller
// Note: this is safe from interference from GCSs and companion computer's whose guided mode
// position and velocity requests will be ignored while the vehicle is not in guided mode
ModeGuided::run();
}