Andy B. Posted June 19, 2021 Report Posted June 19, 2021 Hi, Our application needs to build a network of taxiways at the airport where a pilot is currently located. As they taxi, the application needs to keep in mind the following points: * Announce with a screen reader such as NVDA, the current taxiway as the pilot moves onto it. * Keep track of the pilot's movements along the taxiways, then announce the new taxiway in front of them. * Provide directional guidance on the upcoming taxiway such as 'taxiway alpha to the left and right.', or 'taxiway bravo 1 O' clock to the right.'. * Announce to the pilot when they have strayed off of the taxiway such as veering into the grass. * Announce runways as they appear as intersections to the current taxiway in the event the pilot doesn't have RAS professional installed. * Automatically announce the distance in feet to the next intersection when they are 500 feet or less from that intersection. I know the .net library has a taxiways database. However, I am not clear on how to start implementing these features. If anyone has any starter points to try, it would be appreciated. Announcing with speech isn't a problem, as long as I can get the taxiway network built and understand how it works.
Paul Henty Posted June 25, 2021 Report Posted June 25, 2021 Hi Andy, Sorry for the delay in replying. I've been away. I've looked through your bullet point requirements. Items 1 & 4 can be done with FsTaxiway object at the moment as it tells you if the player is on a particular taxiway or not. The others all rely on intersections of taxiways. These are not currently in the FsTaxiway object but I think it's fairly simple to calculate these and add them to the class. Each taxiway will have a list of intersections. Each intersection will include the position of the intersection and a pointer to the taxiway/runway it intersects with. This will give you a network of taxiways rather than a flat list like it is now. Going through the remaining bullet points, these all seem possible if you know the intersection points. It's just a case of testing how far they are from the player and in which direction. I'll add this over the next week or 2. Paul
Paul Henty Posted July 5, 2021 Report Posted July 5, 2021 Hi Andy, Version 3.2.7 is now on NuGet. There is a new feature that add TaxiwayIntersection objects to Taxiways, Runways, Gates and Helipads. You can use these intersections to find which taxiways are connected and where they go (e.g. gate, runway). Each intersection also has a Lat/Lon point identifying where the junction is. Hopefully this will enable you to do most of what you want. Here is some sample code explaining how it works: C# // Setup AirportsDatabase DB = FSUIPCConnection.AirportsDatabase; DB.LoadTaxiways = true; DB.Load(); // To use intersections you must first calculate them for the airport you are interested in FsAirport EGJJ = DB.Airports["EGJJ"]; EGJJ.CalculateTaxiwayIntersections(); // Now each Taxiway has a number of collections of FsTaxiwayIntersections. // e.g.: // Get taxiway B FsTaxiway taxiwayB = EGJJ.Taxiways["B"]; FsTaxiwayIntersectionCollection<FsTaxiway> connectedTaxiways = taxiwayB.TaxiwayIntersections; FsTaxiwayIntersectionCollection<FsGate> connectedGates = taxiwayB.GateIntersections; FsTaxiwayIntersectionCollection<FsRunway> connectedRunways = taxiwayB.RunwayIntersections; FsTaxiwayIntersectionCollection<FsHelipad> connectedHelipads = taxiwayB.HelipadIntersections; // For each of these collections you can step through and get the information about the intersection // This example works on the gates connected to this taxiway: foreach(FsTaxiwayIntersection<FsGate> gateIntersection in connectedGates) { // Get the location where the taxiway connects to the gate FsLatLonPoint intersectionLocation = gateIntersection.Location; // The object property points to the gate itself string gateName = gateIntersection.Object.ID; } // FsGate. FsHelipad and FsRunway objects also have a collection of taxiway intersections // e.g. get all taxiways that join with runway 27 FsRunway rw27 = EGJJ.Runways["27"]; foreach (FsTaxiwayIntersection<FsTaxiway> taxiwayIntersection in rw27.TaxiwayIntersections) { FsLatLonPoint location = taxiwayIntersection.Location; string taxiwayName = taxiwayIntersection.Object.Name; } VB.NET ' Setup Dim DB As AirportsDatabase = FSUIPCConnection.AirportsDatabase DB.LoadTaxiways = True DB.Load() ' To use intersections you must first calculate them for the airport you are interested in Dim EGJJ As FsAirport = DB.Airports("EGJJ") EGJJ.CalculateTaxiwayIntersections() ' Now each Taxiway has a number of collections of FsTaxiwayIntersections. ' e.g.: ' Get taxiway B Dim taxiwayB As FsTaxiway = EGJJ.Taxiways("B") Dim connectedTaxiways As FsTaxiwayIntersectionCollection(Of FsTaxiway) = taxiwayB.TaxiwayIntersections Dim connectedGates As FsTaxiwayIntersectionCollection(Of FsGate) = taxiwayB.GateIntersections Dim connectedRunways As FsTaxiwayIntersectionCollection(Of FsRunway) = taxiwayB.RunwayIntersections Dim connectedHelipads As FsTaxiwayIntersectionCollection(Of FsHelipad) = taxiwayB.HelipadIntersections ' For each of these collections you can step through and get the information about the intersection ' This example works on the gates connected to this taxiway: For Each gateIntersection As FsTaxiwayIntersection(Of FsGate) In connectedGates ' Get the location where the taxiway connects to the gate Dim intersectionLocation As FsLatLonPoint = gateIntersection.Location ' The object property points to the gate itself Dim gateName As String = gateIntersection.Object.ID Next ' FsGate. FsHelipad and FsRunway objects also have a collection of taxiway intersections ' e.g. get all taxiways that join with runway 27 Dim rw27 As FsRunway = EGJJ.Runways("27") For Each taxiwayIntersection As FsTaxiwayIntersection(Of FsTaxiway) In rw27.TaxiwayIntersections Dim Location As FsLatLonPoint = taxiwayIntersection.Location Dim taxiwayName As String = taxiwayIntersection.Object.Name Next Paul
Andy B. Posted July 6, 2021 Author Report Posted July 6, 2021 Hi, Thanks for the great additions. I will find them quite useful. Do you know if every taxiway has a name? When I took a look at ones at KJFK for example, the majority of them didn't have a name.
Paul Henty Posted July 6, 2021 Report Posted July 6, 2021 I think all taxiways have name in real life, but the scenery (BGL) files built into FSX have only a few named taxiways. I don't know if this is any better in later versions of flight sim, but I would think most commercial add-on scenery would be better at this. There are ICAO rules for naming taxiways and now we know which are connected it should be possible to automatically name the missing ones in a realistic way. It's unlikely to get the names the same as real life, but at least they'll have names. Let me know if that's a feature that would be useful and I'll look into it. Paul
Andy B. Posted July 6, 2021 Author Report Posted July 6, 2021 Hi, Having realistic names to the taxiways would be nice, especially when flying on vatsim. In that case, we would need to know the taxiway names when a controller gives us a taxi route to follow.
Paul Henty Posted July 9, 2021 Report Posted July 9, 2021 If I generate the taxiway names in the DLL they are unlikely to match the real-world names. Vatsim controllers will be using the real world names so it would be very confusing for you to have different names. It's probably not a good idea. Paul
Andy B. Posted July 9, 2021 Author Report Posted July 9, 2021 Hi, Is there any other ideas to help our users be able to follow a taxi routing given by vatsim controllers?
Paul Henty Posted July 9, 2021 Report Posted July 9, 2021 If you want the voice prompts as you previously described then you need the taxiway names. I can only suggest using free or commercial scenery that includes the correct names in the BGL files. These will then be extracted into the Airports Database via MakeRunways.exe. An alternative would be to your application to find a route to the runway and just give 'turn left/right/hold short' voice instructions (no need for taxiway names). This would not necessarily be the route given by the VATSIM controllers. Maybe they can make allowances for blind pilots by either allowing self-navigation to the runway, or giving step-by-step instructions during the taxiing over the radio to guide the pilot to the runway. Paul
Andy B. Posted July 9, 2021 Author Report Posted July 9, 2021 Hi, Do you know of any freeware scenery that includes the proper taxiway names? Even if payware, we are just trying to figure something out.
Paul Henty Posted July 9, 2021 Report Posted July 9, 2021 I don't sorry. Maybe try downloading some free ones and see. Or ask in the support forums of popular commercial scenery like Orbx. Paul
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now