Please, get rid of these stupid USR waypoints

Just to be clear here, I am part of the Working Title team, not the FBW team, so I can’t speak to their efforts. I will describe what we’ve done though (this will be long):

The flight plan management system is entirely new, from the ground up. We now walk through the sim provided procedure data to generate the appropriate legs and terminators. The sim procedure legs data is actually really good (even with stock data), and has all the different legs types you would expect to find in standard ARINC data, like track to fix, course to DME distance, heading to intercept, heading to altitude, heading to manual termination, etc.

In real FMC data, there are many fixes that don’t have specific names but it’s left up to the FMC to generate a name for them. One example of that would be a heading to manual termination leg. These are basically the equivalent of the instruction “fly heading xxx until vectored by ATC” in the procedure chart. In the CJ4, this becomes a fix with the name (VECT) and then a discontinuity is added after that fix that the FMS will not sequence past, because it needs instructions from you in order to proceed. Another example of this is course to DME distance legs, which normally get something like the format D125J, where the numbers there are the course and the final letter is the distance in NM (A is 1NM, B is 2NM, etc). These fixes are not ICAO fixes that you could enter into the FMC by hand, but they are legs and they do have terminations, and will be parsed and pulled when that procedure is selected.

We’re doing the same thing with the provided procedure legs data, and generating the correct leg tracks and termination positions based on the data and a lot of spherical trig. In the stock flight plan system, you will often see USR or USER fixes for a couple of these leg types, but there are also a bunch of leg types that the stock flight plan manager completely skips, leading to the complaints you see about how the navdata is bad. It isn’t bad, actually, it just isn’t being used to the full extent it can be. USR fixes are not related to anticipated ATC instructions or flyover fixes. The stock flight plan manager just skips any manual termination legs completely (which is where you would be vectored).

There are other places that FMCs will normally place discontinuities, such as before the approach so you don’t accidentally sequence on to it before you’ve cleaned up and validated the legs. Finally, this revamped flight plan management system is already available as of Tuesday evening on the CJ4. So you can fly it now, it’s not just an idea or an implementation to be explored, it works today. You can modify the plan in any way that you want, do direct to any fix you desire, even change your approach when you’re already on the approach, all without any navigation interruptions whatsoever. The AP will not send you back to fixes that you’ve passed, you won’t get waylaid back to your origin airport, none of that stuff.

As to controlling the plane along this new, accurate route, we haven’t completely written a new AFCS control system (although it is planned), but we do have custom lateral and vertical navigation, which under the hood uses the heading lock and vertical speed hold modes of the stock AP to generate angular and vertical instructions for the aircraft to fly, which works actually extremely well. The limitations with the Asobo AP aren’t related so much to the actual flight control as they are with the underlying generated fixes. So, we’ve designed a full AP system over the top using those modes underneath, so the experience is seamless and correct to the actual aircraft, including all the correct FMA annunciations. Because the navdata is actually quite good and includes all the right altitude restrictions, we’ve also included a full VNAV implementation, and for good measure we also included the ability to actually fly real RNAV, with correct nav sensitivity changes in the terminal and approach regions, including LPV (with proper angular sensitivity).

Hopefully that lends some more insight into how it works right now, but I’m always happy to answer any more technical questions anyone might have!



I always get the WT and FBW group mixed up. Sorry.

You answered the question I was asking. We’re (any third parties or mod groups) are stuck waiting on Asobo core AP functionality fixes for things like heading changes and course intercepts. You can change the flight plan and change modes on the AP, but the way it flies – max bank angle, max bank angle hold time, roll-out behavior, etc. – we’re still at their mercy for those fixes.

So if Asobo fixes the AP flight behavior in the Dec 22 patch, and you guys have already fixed the flight planning bugs, it’s going to be a good Christmas break!

So what happens if there are discontinuities and you don’t link them up in FMC prior to starting flight? What is the behaviour once the aircraft reaches a discontinuity? Does it stop following the plan? Does it go to the next “definited” waypoint?

Yes and no. With some clever manipulation we’ve got the roll-out behavior a lot better. It now rolls out with 15 degrees left at about 10 degrees/sec, about as it should. Not everything is perfect, but I encourage you to try it out and see how you like it. :slight_smile:

In the CJ4 if the FMS sequences into (i.e. it actually reaches while flying in NAV) a discontinuity the plane will enter HDG mode with the current heading as the selected heading. As soon as you manually sequence past it by either clearing the discontinuity or going direct-to to a fix beyond it, you can re-engage NAV mode and it will continue on along the plan.



Thanks, Matt! Oh, hey! A fellow drummer!

1 Like

Yes indeed, for many many years professionally! Lead software architect now, though, but I still gig when I can. Definitely miss it a lot at times. :slight_smile:

1 Like

Nice, I am a Berklee-trained fusion cat.

1 Like

Lead SA. Nice.
Would have been hard pressed to get Lead Drummer. Good career move. :slight_smile:

How did you do that ?
PID adjustment, or custom programming ?

Custom programming.

In our LNAV loop, when we initiate a turn to a new desired track, we keep track of the direction of the turn and the desired track. While we’re in the turn, we keep the internal heading bug pegged at 45 degrees left or right of the current heading (depending on the turn direction) to keep the bank at max, and then when we get within 15 degrees of the desired track, we cancel the heading bug pegging and let our loop start calculating a standard intercept again. At that point the required intercept heading will be very close to the current plane heading and so you get a nice brisk roll-out to the desired track.


1 Like

Great post. USR points make sense and are there for a purpose - they just don’t always work as expected.

Thanks Matt … Is that JS custom programming ? I am wondering if it is an adaptable model for smaller GA, like the C712

That will be very nice to experience. As an oldtime pilot I generally fly stick and rudder but the mushy rollout on AP drive me nuts. Like having a student pilot that isn’t sure when to roll out. “Just turn and rollout! Stop with the 20 adjustments already!”

It is, yeah. We use mostly JS for the Working Title mods, with the exception of the FADEC for the CJ4, which is in C++/WASM due to needing SimConnect for intercepting and masking throttle events.


Nice workaround

Great … The C172 roll out is terrible, so from your experience, should one be able t o use your code design to improve the c172 AP.'s Roll… (if that is OK with you )

Why don’t you post this in the wishlist? :wink:

Oh yes, you most certainly can use the design, I don’t mind at all!

But there’s a pretty massive caveat, and that’s that our LNAV is using heading mode, but you need to not show the user that you’re really in heading mode. So the entire AP system has been rewired and the displays changed to support our new lateral and vertical guidance over the top. It’s no small change.


Please leave your vote here:

This is already known and need to get more attraction to the devs.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.