zlsa / atc

https://openscope.co/
342 stars 107 forks source link

SID/STAR not sensitive to runways #324

Closed erikquinn closed 8 years ago

erikquinn commented 8 years ago

image The above behavior for the OFFSH9 is undesirable, and stems from the sid being defined simply as a list of fixes, "SEPDY, SENZY, WAMMY, SEGUL", when the reality is infinitely more complex. Though not all of that complexity is necessary to capture for our purposes, it seems now to be a good time to take a step closer.


offsh9 This is the chart for this particular sid out of SFO, and you can see based on the arrows that come out of the airport that the behavior is different based on the runway an aircraft departs from, and logically so.


north dep Now, having the a/c follow the sid AS PUBLISHED would result in something that looked more like this^ (he would also turn in line with the dashes that extend SE of WAMMY). Sadly, this accurate and "correct" behavior is not in confirmity with the clear implications made by the dashed lines that show the SID path, and could surely confuse some users. Whether it's worth going to the realism of intercepting radials/fixes I'm not sure; maybe it's a more attractive compromise to just make them go to the right fixes for each runway. Looking for feedback on that topic.

I'd like to start work on this issue today... feedback anybody? :smiley:

sixeyeco commented 8 years ago

Assigning that SID sometimes results in cfit, though I'm not sure if it was issued before or after t/o.. I'd prefer if the a/c departing wb simply follow SENZY WAMMY SEGUL. As it is now I have to direct them to all three. Wish I could use the SID.

erikquinn commented 8 years ago

@sixeyeco yeah, it does... which rather defeats the point of SIDs (to create a departure flow that's safe from terrain and has minimal conflicts with arrival flow) so its insane to have a SID result in cfit haha

I THINK it actually has to do with speed... assigning 250kts before takeoff results in a wider turn and less time to climb, which I have had a theory is what was causing that. Regardless, speed on departure should automatically be unrestricted (aka max speed a/c can go, except not over 250 while under 10k ft), which is another thing I will eventually get around to correcting in addition to this.

I think I agree on the implementation. Simplifying to just using the right fixes should be good enough, and detail beyond that may be desirable later, but doesn't make a huge difference and would confuse people who aren't intimately familiar with SIDs. Sounds like a plan unless anybody else is opposed. :smiley:

tedrek commented 8 years ago

As implementation details, I would suggest looking at the SID as a set of waypoints for the FlightManagementSystem instead of plain fixes. There is code dealing with the arrivals which converts a fix list into a waypoint list for backwards compatability with existing airports. My initial instinct is that a SID is a set of common waypoints preceded by a runway specific set of waypoints.

I expect to radial intercept and tracking to be extracted from the ILS code into a more generic implementation in the FlightManagementSystem at some point. Then the OFFSH9 SID (and others) could be re-written in a fairly accurate manner.

tedrek commented 8 years ago

Oh, and I definitely think simplifying it to going to the right fixes based on runway is the right way to go for now, it's easy to understand and keeps the necessary change relatively small.

sixeyeco commented 8 years ago

Out of curiosity, I opened ksfo.json and found the offshore sid. I edited it so that this issue wouldn't divert any time away from the more important issues you guys are all working on. Hope it helps.

I removed the first waypoint so that SID OFFSHORE = SENZY, WAMMY SEGUL.

This would be a great improvement if it were implemented.

https://drive.google.com/file/d/0Bxun0nFsehDrMkk4WFpaVGw3c1E/view?usp=sharing

Update (01-18-16 12:22 p.m. PST) : I forked this project and edited the file. I had no idea it would impact anything here at ZLSA. If I overstepped, I apologize. I thought my edit would only affect my own forked copy. Sorry for my ignorance and for any trouble it may have caused.

tedrek commented 8 years ago

@sixeyeco, No overstep here, everything is working as you expected. It's just that Github is pretty smart about what was forked from where and then putting the references between various people's repositories like the commit.

sixeyeco commented 8 years ago

Thanks. I'm glad.

siyuanr commented 8 years ago

To continue the discussion on SIDs in #370:

For BEKOL SID the HKSIA has two charts outlining 4 routes with different names, BEKOL 3A, BEKOL 3C, BEKOL 2B, BEKOL 3D. I am not sure whether an SID clearance is given for just BEKOL, or an exact route BEKOL 3A. You can find the two charts here and here.

In fact, the variant names of BEKOL SID are just dependent on the runway. They can easily be called BEKOL 07L, BEKOL 07R etc. Therefore we could specify a mastersids array that contains the sids arrays for the variant routes. When the SID command is fed a mastersids array, it will first find the sids array within mastersids that matches the departing runway. The function drawing the SID names on the map would also need to be changed.

I believe the bigger problem is to implement radial intercepts. This could be difficult, but a workaround is just to plot the intercept points as fixes on the map. One obvious difficulty is to find the intercept locations, e.g. the chart for OFFSHORE SID provides none, but we could plot approximate ones. Intercept fixes would make the map too cluttered. One solution is that we add a hidden attribute to all fixes, with default value false. If a fix is hidden, then it will not be drawn on the map, or shown on airplane slip on the right. (Therefore the display function of the slip also needs to be changed: when the plane is navigating towards a hidden fix, its present heading, rather than the fix name, is shown.)

Sorry for talking too much like a coding theorist - only had a year of college programming course, and haven't coded for years now.

siyuanr commented 8 years ago

Another thing that may cause trouble (however probably not for US airports) is that the same SID for the opposite side of the runway may take a completely different route and therefore would not get the plane into the desired final handoff heading. For example, this is at VHHH, traveling the 07L LAKES SID (clockwise, plotted according to SID chart) vs 25R LAKES (anti-clockwise, programmed in vhhh.json):

(Somehow I cannot upload a photo; see it here.)

erikquinn commented 8 years ago

Made progress on this today. I have it set up to be able to execute a different set of instructions based on the runway the aircraft departs from. Will inevitably need tweaking and improvements (and is currently only working for KSFO while I test it).

Anyone who is interested can feel free to give it a try at erikquinn.github.io/atc/b/complex-SIDs. Code that feeds it is viewable from my 'complex-SIDs' branch. Looking forward to when this gets finished! It should make a big difference for a lot of airports.

Note that when testing, you will need to use the actual identifier for the sid command, eg OFFSH9 instead of OFFSHORE. Also, if using many runways, some SIDs are not used from one end of the runway, eg OFFSH9 is only valid for 28s and 1s, not 10s and 19s, so be sure to look up the appropriate chart if it tells you that you can't use a particular SID; that's probably why.

siyuanr commented 8 years ago

Just tested it out. Wonderful (start of a) job! I really like the idea of incorporating speed in the SID. The only bug I found was when I issued:

AIRCRAFT W 1L
AIRCRAFT SID OFFSH9 TO

... and then clicked on the plane, the plane disappeared and the whole map froze. This only happens to RWY 1L.

I noticed that you assign a random transition to each SID. If any part of a transition lies within the radar, it could be pretty problematic (well at least not the case at KSFO).

European SIDs do not have transition, as their names already denote the end fix of the route. We should also expect that their rwy portion of SID could be fairly long, while the body would consist of only 1-2 fixes.

I would suggest that the SID names to be drawn next to the last fix of body.

In the long run I would suggest that a separate sid navmode be created. This would enable us to incorporate maneuvers other than navigating to fixes, for example, turning after passing DME distances and intercepting a certain degree track to a fix. It could also be shown on the slip pane that the plane is in an SID procedure.

EDIT: Again, since European SIDs are named after the end fix of the transition, not the body, there is the big problem of the same SID from different runway not able to bring the plane to the same exit arc. See SID LAKES here for example.

screen shot 2016-01-30 at 08 39 31
erikquinn commented 8 years ago

@siyuanr Okay, got a workaround for the 1L issue I think. It's live at http://erikquinn.github.io/atc/b/complex-SIDs.

Appreciate the notes, I'll address them later on. :smile:

erikquinn commented 8 years ago

Got some more work done on this... now they can climb via the SID as well (cvs command), which is realistic but vastly different, especially considering the recently increased climb rates. I've been playing with it, and have a few more things to clean up, but it's coming together for the most part. Then just have to get to each of the airports.

Can also just enter caf for "cleared as filed", which will assign the SID that they filed for in their flightplan (as shown in the strip when they first pop up).

Again, still KSFO only at this stage.

http://erikquinn.github.io/atc

erikquinn commented 8 years ago

Hey @harp71, I'm working on converting the SIDs to work with this new setup here, and saw that you added them to EDDM. I've found various sets of charts for EDDM, but can't seem to find charts for some of the SIDs you had added. Could you point me to somewhere I could have a look at MAMOR, NIMDI, STAUB, TULSI, and VAVOR?

siyuanr commented 8 years ago

@erikquinn I could confirm that at least TULSI and VAVOR exist on the latest SID charts. You can go the EAD Basics website operated by Eurocontrol, register, click on "Applications" and find AIP. Search for German AD Charts in there.

harp71 commented 8 years ago

@erikquinn i got it here: http://www.rocketroute.com/airports/

But, as the title of this conversation points out, it would be great to have SIDs/STARs depending on runway! But first, i think, we need changing winds, in a range of directions and speeds, as proposed by some including me in #68 , e.g

"wind": {
  "angle": [[250, 280], [70, 105]],
  "speed": [5, 20] 
},
erikquinn commented 8 years ago

@harp71 @siyuanr Thanks. I actually really enjoyed looking them over... all these european/asian charts are very different and new to me, but I'm starting to see how they kinda make a LOT more sense than the way the FAA does them. Anyway, thanks for the links.

erikquinn commented 8 years ago

Created PR #386 for the work on this.

erikquinn commented 8 years ago

Anyone who was waiting for this to be resolved with #386, just continue your work for now using the old SID system. I have to make some changes to the work I did to make it better to avoid more work in the long-term. I'll make another sweep through the airports and get the SIDs implemented in the new system once I make a few more improvements. Just know that it could be another week or so.

Thanks, EQ :smile:

erikquinn commented 8 years ago

Iteration 2 complete. See #404 or visit the link:

http://erikquinn.github.io/atc/