A3XX: FMGC: Add proper NAV tracking with better waypoint turning/etc

This commit is contained in:
Joshua Davidson 2017-11-17 19:27:16 -05:00
parent 2414a1dc15
commit b9a82d9278
3 changed files with 36 additions and 6 deletions

View file

@ -80,6 +80,7 @@ var APinit = func {
setprop("/it-autoflight/internal/heading-error-deg", 0);
trkfpa_off();
ap_varioust.start();
lnavCalc.start();
thrustmode();
}
@ -550,6 +551,39 @@ var ap_various = func {
}
}
var lnavCalc = maketimer(0.05, func {
var f = flightplan();
var total_distance = getprop("/autopilot/route-manager/total-distance");
var distance = total_distance - getprop("/autopilot/route-manager/distance-remaining-nm");
var destination_elevation = getprop("/autopilot/route-manager/destination/field-elevation-ft");
var leg = f.currentWP();
if (leg == nil) {
setprop("/it-autoflight/input/lat", 3);
return;
}
var groundspeed = getprop("/velocities/groundspeed-kt");
var log_distance = getprop("/instrumentation/gps/wp/wp[1]/distance-nm");
var along_route = total_distance - getprop("/autopilot/route-manager/distance-remaining-nm");
var geocoord = geo.aircraft_position();
var referenceCourse = f.pathGeod(f.indexOfWP(f.destination_runway), -getprop("/autopilot/route-manager/distance-remaining-nm"));
var courseCoord = geo.Coord.new().set_latlon(referenceCourse.lat, referenceCourse.lon);
var CourseError = (geocoord.distance_to(courseCoord) / 1852) + 1;
var change_wp = abs(getprop("/autopilot/route-manager/wp/bearing-deg") - getprop("/orientation/heading-deg"));
if (change_wp > 180) {
change_wp = (360 - change_wp);
}
CourseError += (change_wp / 20);
var targetCourse = f.pathGeod(f.indexOfWP(f.destination_runway), (-getprop("autopilot/route-manager/distance-remaining-nm") + CourseError));
courseCoord = geo.Coord.new().set_latlon(targetCourse.lat, targetCourse.lon);
CourseError = (geocoord.course_to(courseCoord) - getprop("/orientation/heading-deg"));
if (CourseError < -180) {
CourseError += 360;
} else if (CourseError > 180) {
CourseError -= 360;
}
setprop("/it-autoflight/internal/lnav-error-deg", CourseError);
});
var flch_on = func {
setprop("/it-autoflight/output/appr-armed", 0);
setprop("/it-autoflight/output/vert", 4);

View file

@ -487,11 +487,7 @@
<value>1</value>
</equals>
</condition>
<property>/autopilot/settings/true-heading-deg</property>
<offset>
<property>/orientation/heading-deg</property>
<scale>-1.0</scale>
</offset>
<property>/it-autoflight/internal/lnav-error-deg</property>
</input>
<input>
<condition>

View file

@ -1 +1 @@
4009
4010