mirror of https://github.com/ArduPilot/ardupilot
39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
#include "Tracker.h"
|
|
|
|
/*
|
|
* Scan control mode
|
|
*/
|
|
|
|
/*
|
|
* update_scan - runs the scan controller
|
|
* called at 50hz while control_mode is 'SCAN'
|
|
*/
|
|
void Tracker::update_scan(void)
|
|
{
|
|
if (!nav_status.manual_control_yaw) {
|
|
float yaw_delta = g.scan_speed_yaw * 0.02f;
|
|
nav_status.bearing += yaw_delta * (nav_status.scan_reverse_yaw?-1:1);
|
|
if (nav_status.bearing < 0 && nav_status.scan_reverse_yaw) {
|
|
nav_status.scan_reverse_yaw = false;
|
|
}
|
|
if (nav_status.bearing > 360 && !nav_status.scan_reverse_yaw) {
|
|
nav_status.scan_reverse_yaw = true;
|
|
}
|
|
nav_status.bearing = constrain_float(nav_status.bearing, 0, 360);
|
|
}
|
|
|
|
if (!nav_status.manual_control_pitch) {
|
|
float pitch_delta = g.scan_speed_pitch * 0.02f;
|
|
nav_status.pitch += pitch_delta * (nav_status.scan_reverse_pitch?-1:1);
|
|
if (nav_status.pitch < g.pitch_min && nav_status.scan_reverse_pitch) {
|
|
nav_status.scan_reverse_pitch = false;
|
|
}
|
|
if (nav_status.pitch > g.pitch_max && !nav_status.scan_reverse_pitch) {
|
|
nav_status.scan_reverse_pitch = true;
|
|
}
|
|
nav_status.pitch = constrain_float(nav_status.pitch, -g.pitch_min, g.pitch_max);
|
|
}
|
|
|
|
update_auto();
|
|
}
|