Senaste nedladdning av 2 gis för Android. "2GIS" är en elektronisk karta och katalog i en smartphone. Entré till byggnaden, diagram och kontaktuppgifter


2 GISär både en uppslagsbok och en som fungerar utan tillgång till Internet. Ladda bara ner kartan över den önskade staden i förväg och en enorm databas med användbar information kommer att dyka upp på din telefon! Du kan ladda ner 2 GIS för Android gratis i apk-format genom att använda direktlänken nedan.

2 GIS-mobilapplikationen är inte på något sätt sämre än den stationära datorversionen och vet absolut allt om stadens infrastruktur. Han kommer att visa dig hur du tar dig till närmaste bensinstation, bankomat eller kafé utan trafikstockningar, hjälper dig att hitta en notarie, frisör, apotek, moské, bilservicecenter, köpcentrum, livsmedelsbutik öppen 24 timmar om dygnet. För turister innehåller applikationen en stadsguide som känner till de mest intressanta platserna och de mest populära anläggningarna.

Funktioner i 2 GIS-navigator för Android:
- 9 länder och 330 ryska städer: Moskva, Jekaterinburg, Tyumen, Novosibirsk, Kazan, Perm, Lipetsk, Izhevsk, Saratov, Krasnodar, etc.;
- Stabilt arbete utan internet och utan att kompromissa med funktionaliteten vid roaming, på ett flygplan, i tunnelbanan - det finns en utväg överallt;
- Skapa gångvägar med kollektivtrafik (buss, trolleybuss, tunnelbana, spårvagn) med eller utan transfer;
- När du kör bil beaktas vägens verkliga tillstånd, vilket visar trafikstockningar, fartkameror, farthinder och genomsnittlig restid;
- Ta reda på nödvändig information om en specifik byggnad, husnummer, telefonnummer för kontakt, på vilken sida ingången är belägen;
- Bekväma filter, sök efter nyckelord och kategorier.

Till skillnad från konventionella navigatorer får du med 2 GIS på Android en uppdaterad karta över Ryssland och en enorm katalog med kontakter, adresser och fotografier av många byggnader. Utvecklarna uppdaterar programmet varje månad, lägger till den senaste relevanta informationen och lägger till nya funktioner. Till exempel kan du nyligen jämföra priser för taxitjänster och beställa dem omedelbart.

2GIS-applikationen har nu en navigator. Vi har lärt oss att "köra" längs en bana, röstmanövrera, automatiskt lägga om rutten, beräkna restid, guida användaren till entrén till en byggnad eller organisation, med hänsyn till staket och barriärer - och allt detta i en ärlig offlinemiljö . Vi har tagit hänsyn till trafikstockningar (om de inte kräver internet), öppna broar och stängda gator under lång tid. För närvarande innehåller vår navigator det minimum som krävs. Lite senare kommer vi att lära den att varna för för höga hastigheter, farthinder och trafikkameror, ställa in ett nattläge och göra rutter på tull- och grusvägar valfria. För att använda den måste du uppdatera 2GIS på din smartphone eller ladda ner den från AppStore eller Windows Store. För Android släpps uppdateringen gradvis, med start den 22 augusti (kommer att vara tillgänglig för hela publiken i september).

Och idag kommer vi att berätta hur 2GIS-navigatorn förutsäger bilens position och smidigt flyttar pilen längs rutten. När allt kommer omkring är det kvaliteten på att guida användaren längs rutten som bestämmer ergonomin för gränssnittet för alla moderna navigatorer, den lätta orienteringen på marken och aktualiteten för manövrar.

För det mesta tvingas föraren av en bil att övervaka vägen, så även en snabb blick på skärmen på en enhet med ett navigatorprogram borde räcka för att få den mest exakta och aktuella informationen om sin egen plats i förhållande till rutt och omgivande föremål. Denna till synes enkla funktionalitet kräver att man löser många tekniska problem att implementera. Vi kommer att överväga några av dem.

GPS-markör och rutt

För att ange användarens plats på kartan använder många navigatörer (och vår var inget undantag) en speciell GPS-markör i form av en pilspets eller helt enkelt en triangel, som intuitivt indikerar rörelseriktningen. Dessutom måste markören vara tydligt synlig på kartan, så dess färg skiljer sig vanligtvis mycket från bakgrunden, kanterna är dessutom konturerade, etc.

I det enklaste fallet kan du visa enhetens position på marken genom att läsa av koordinater från en GPS-sensor och placera en markör på motsvarande plats på kartan. Redan här står vi inför det första problemet - mätfelet, som även under förhållanden med bra signal lätt kan nå 20–30 meter.

För att svara på den vanliga frågan "Var är jag?" Denna visningsmetod kommer att vara ganska tillräcklig, särskilt om du också ritar en noggrannhetscirkel runt markören med en radie lika med feluppskattningen. Men för navigering måste du komma på något bättre, eftersom en förare som rör sig längs en stadsgata sannolikt inte kommer att vara nöjd med en GPS-markör placerad inuti ett närliggande hus eller, ännu värre, på någon passage inom blocket.

En rutt byggd av programmet till destinationspunkten och alltid närvarande i navigeringsskriptet hjälper till att lösa problemet. Med hjälp av några knep kan vi "dra" en punkt på kartan till rutten och utjämna en del av GPS-sensorns mätfel. Till en första approximation kan attraktionen betraktas som en projektion av en punkt på en ruttlinje. Beaktande av nyanserna, såväl som metoder för att upptäcka avgång från rutten, ligger tyvärr utanför ramen för denna artikel.

Genom att använda den angivna attraktionstekniken kan vi abstrahera från tvådimensionella geografiska koordinater (latitud-longitud eller någon annan) och gå vidare till en endimensionell koordinat - en förskjutning i förhållande till början av rutten, mätt till exempel, i meter. Denna övergång förenklar både teoretiska modeller och beräkningar utförda på användarenheter.

Visar geolokalisering över tid

Den diskreta karaktären hos data som tas emot från GPS-sensorn är ett annat problem vid implementering av användarvägledning. Idealiskt uppdateras koordinaterna en gång per sekund. Låt oss överväga flera alternativ för att visa geoposition i tid och välja den mest lämpliga för våra uppgifter.

1. Det enklaste sättet är att omedelbart knäppa till rutten vid mottagande av varje ny avläsning från sensorn och visa motsvarande plats på kartan. Bland fördelarna är det värt att notera den exceptionella lättheten att implementera, hög, i viss mening, noggrannhet (trots allt visar vi här helt enkelt satellitdata utan att göra några allvarliga ändringar i dem) och minimal beräkningskomplexitet. Den största nackdelen är att markören i det här fallet inte rör sig över kartan i vanlig mening, utan "teleporterar" från punkt till punkt. I huvudscenariot för navigering är kameran (virtuell observatör är en term från området datorgrafik) bunden till en GPS-markör, så sådana teleporteringar leder till en skarp "rullning" av kartan längs rutten och, som ett resultat, till desorientering av föraren, särskilt vid höga hastigheter, när bilen färdas ett betydande avstånd mellan geopositionsavläsningarna. Vårt mål är att hjälpa användaren, inte förvirra honom, så detta fel är redan tillräckligt för att utesluta detta alternativ från övervägande.

Det enda sättet att undvika desorientering är att flytta GPS-markören smidigt, utan "teleportering", vilket innebär att du behöver flytta den mycket oftare än vad geopositionsavläsningarna kommer fram. För att säkerställa en sådan rörelse är det nödvändigt att på något sätt beräkna mellanliggande punkter mellan verkliga avläsningar från sensorn och använda dem tills nästa avläsning tas emot. Det specifika tillvägagångssättet för att beräkna dessa mellanliggande punkter är värt att ägna särskild uppmärksamhet åt, eftersom det i slutändan i hög grad kommer att påverka navigatorprogrammets övergripande ergonomi.

2. Det andra sättet att visa användarens plats är associerat med den mest uppenbara metoden för att generera mellanliggande punkter - interpolation mellan de senaste riktiga GPS-avläsningarna. Poängen är att flytta markören från det näst sista provet till det sista under en viss specificerad tid, beräkna mellanliggande punkter med den erforderliga frekvensen med hjälp av en av de kända matematiska funktionerna (det enklaste alternativet är linjär interpolation). Att använda en navigator på detta sätt är mycket bekvämare, men det har också nackdelar.

En av de mest ofarliga är behovet av att ställa in interpolationstiden i förväg. Att ställa in den på en sekund fungerar bara bra i det ideala fallet som nämns ovan, när det är den tid som kommer att gå mellan GPS-avläsningarna. Om det går mindre tid spelar det ingen roll, du kan helt enkelt börja flytta från den nuvarande positionen till ett nytt mål. Men om det är mer måste markören stå stilla och vänta på nya koordinater från sensorn, även om användarens bil mycket väl kan röra sig vid denna tidpunkt.

Det finns ett allvarligare problem. I det ögonblick som ett nytt prov kommer, är markören i bästa fall vid den tidigare verkliga punkten. Ur användarens synvinkel introducerar vi ytterligare ett positioneringsfel, vars storlek inte är mindre än det avstånd som bilen tillryggalägger under tiden mellan avläsningarna. Vid en hastighet av 100 km/h når detta värde nästan 28 meter, vilket tillsammans med ett eventuellt mätfel gör informationen som ges till användaren, milt uttryckt, opålitlig.

Vi skulle kunna göra en enorm GPS-markör och blockera en fjärdedel av skärmen med den, noggrant maskera bristerna i den beskrivna positioneringsmetoden, men att gå på direkt förfalskning skulle vara respektlöst mot användarna och mot oss själva. Noggrannheten och aktualiteten hos de visade data är inte mindre viktigt kriterium när man utvecklar en navigator än den yttre skönheten och smidigheten i rörelsen.

3. Med hänsyn till det framväxande kravet på positioneringsnoggrannhet är det värt att notera att vi nu måste, kort innan en ny GPS-avläsning kommer, placera markören på en punkt så nära denna nya avläsning som möjligt. Det vill säga i huvudsak att se in i framtiden, om än bara för en kort tid. Även om det för närvarande ser väldigt illa ut för mänskligheten med tidsmaskinens uppfinning, finns det fortfarande räddning för oss. Bilens rörelse är inert, så hastigheten och riktningen för dess rörelse kan inte ändras omedelbart, och i så fall kan vi försöka förutsäga med viss noggrannhet var användaren kommer att befinna sig i intervallet mellan den senaste positionsreferensen och framtiden. Om vi ​​lyckas säkerställa att prognosfelet i de flesta fall kommer att vara mindre än felet för den andra metoden, kommer vi att göra livet för våra navigatoranvändare mycket enklare.

Denna typ av prognoser inom de exakta vetenskaperna kallas extrapolation. Detta är den väg vi kommer att ta i ett försök att utveckla en tredje metod för vägledning som uppfyller alla kriterier som anges ovan. Därefter måste vi tillgripa ett mer formellt presentationsspråk, eftersom vi kommer att prata om matematiska modeller.

Vägledning med positionsextrapolering

Det nämndes tidigare att tack vare attraktionen av användarens geoposition till navigeringsvägen kan vi gå från tvådimensionella geografiska koordinater till en endimensionell koordinat - en förskjutning i förhållande till början av rutten (för korthets skull kommer vi att fortsätta använda termen "offset" utan förtydligande).

Låt oss komma ihåg uppgifterna som kommer till oss och introducera notationen för det:

Verkliga förskjutningsavläsningar erhållna genom att dra GPS-positionen till ruttlinjen;
- ankomsttid för motsvarande förskjutningsprover.
Det är här listan med indata slutar. Du kommer att behöva klämma ut så mycket användbar information som möjligt från dem.

I slutändan måste vi bygga en försom kommer att ligga nära bilens verkliga dynamik och samtidigt säkerställa en smidig rörelse av GPS-markören längs hela vår rutt (dess längd kommer inte att påverka någonting, eftersom slutförandet av rutten behandlas separat, så vi kommer villkorligt att betrakta rutten som oändlig). För att säkerställa god visuell jämnhet kommer jämnhetsvillkoret att vara tillräckligt, det vill säga varken positionen eller hastigheten för markören bör ändras abrupt. Med andra ord måste funktionen vara kontinuerlig tillsammans med sin förstaderivata (hädanefter - i tiden) genom hela definitionsdomänen.

Låt oss notera att varje verkligt förskjutningsprov bär avsevärt ny information om rörelsen. Till exempel, om en bil körde jämnt under en lång tid och sedan började accelerera, kommer navigatorn att kunna "känna" accelerationen först med ankomsten av nästa nedräkning. Eftersom vi inte kan se in i framtiden hur länge som helst, kommer alla inkommande nya GPS-avläsningar i det allmänna fallet att ändra beteendet hos den önskade funktionen, vilket inte tillåter oss att specificera den i ett analytiskt uttryck. Låt oss istället försöka definiera funktionen bitvis. För att göra detta, låt oss först lösa ett enklare problem.

Direkt bitvis extrapolering

Låt oss konstruera en förså att efter det e provet dess värden förutsäger användarens faktiska plats under en tillräcklig tid innan det th provet kommer. All användbar data vi har är en sekvens av räkningar upp till – inklusive, tillsammans med tidpunkten för mottagandet av var och en av dem.

När vi minns om ändliga skillnader, noterar vi att vi har möjlighet att uppskatta bilens hastighet vid det första ögonblicket genom att dividera längden på segmentet mellan den sista och näst sista förskjutningen med motsvarande tidsintervall:


, var är hastighetsuppskattningen från proverna, och är derivatan av extrapolationsfunktionen som vi försöker konstruera.

På samma sätt för högre ordningsderivat - acceleration, ryck, etc.:


Som framgår av dessa formler, för att få en uppskattning av allt högre derivator av förskjutningen, är det nödvändigt att ta hänsyn till fler och fler prover som föregår den nuvarande: för att bestämma hastigheten behövs två prover, för acceleration - tre, för ryck - fyra osv. Å ena sidan, ju mer dynamiska rörelseegenskaper vi tar hänsyn till i vår prognos, desto större modelleringsförmåga kommer vi att få; å andra sidan förlorar användbar information i allt mer "äldre" läsningar dramatiskt relevans. Till exempel, det faktum att vi körde i en hastighet av 30 km/h för en minut sedan kommer inte att hjälpa oss på något sätt för närvarande: sedan dess kunde vi ha accelererat, saktat ner eller till och med stannat flera gånger. Av denna anledning blir uppskattningar av allt högre derivator av förskjutningen längre och längre från verkligheten; dessutom ökar bidraget av felet vid beräkning av en viss derivata till den allmänna analytiska modellen för förskjutning också med ökande ordning för denna derivata. Om så är fallet, med utgångspunkt från en viss ordning, kommer de dynamiska egenskaperna uppskattade med ändliga skillnader, istället för förfining, bara att förstöra vår modell.

Baserat på verkliga tester verkar det som om ryckuppskattning, särskilt i fall av "genomsnittlig" GPS-signalkvalitet, redan är tillräckligt dålig för att göra mer skada än nytta. Å andra sidan, lyckligtvis, är de vanligaste bildynamikscenarierna vila, enhetlig och enhetlig rörelse, beskrivna med polynomekvationer av 0:e, 1:a och 2:a graden i tiden, respektive.

Det visar sig att den kvadratiska modellen av likformigt variabel rörelse kommer att vara ganska tillräcklig för att vi ska kunna beskriva de flesta vägsituationer, och för den har vi bara tillräckligt med mer eller mindre högkvalitativa uppskattningar av de dynamiska egenskaperna - hastighet och acceleration. Med tanke på skolfysikkursen kan vi redan grovt rita upp ett analytiskt uttryck för den önskade extrapolationsfunktionen:


Det finns bara ett steg kvar att ta: definitionsdomänen börjar från tidpunkten, så det är bekvämare att räkna tid i beräkningar från samma ögonblick.

Som ett resultat kommer funktionen att ta formen:


En anmärkningsvärd egenskap hos denna funktion är dess smidighet över hela definitionsdomänen, som, som tidigare nämnts, ingår i formuleringen av vårt problem.

Låt oss nu ta flera verkliga förskjutningsprover från enheten och försöka extrapolera dem vid varje intervall (även om det bestämts tidigare, i det ögonblick som provet anländer kommer vi omedelbart att gå vidare till nästa funktion, eftersom den har nyare data):

Låt oss reservera att för tydlighetens skull togs data med en GPS-signal av relativt låg kvalitet, men situationen i figuren är ganska verklig och kan uppstå för alla användare.

Jämnheten för varje extrapolationspolynom är perfekt synlig på motsvarande tidsintervall, men problemet är att vid korsningarna av intervallen lider den allmänna grå kurvan av diskontinuiteter, ibland mycket märkbara.

Låt oss kalla storleken på gapet vid det första ögonblicket för extrapolationsfelet. Det är faktiskt detta värde som visar hur inexakta var och en av våra prognoser är vid slutet av sitt tidsintervall. Du kan beräkna felvärdet med hjälp av följande uttryck:


Tyvärr kan vi inte reducera felet till noll genom att variera själva funktionerna, eftersom detta skulle motsvara hundra procents noggrannhet i framtidsvisionen. Detta innebär att för att lösa vårt initiala problem med att konstruera en enda funktion, måste vi på något sätt "limma" ihop de bitvisa extrapolationspolynomen, det vill säga korrigera de fel som uppstår vid lederna.

Tillvägagångssätt för felkorrigering

I enlighet med notationen som valts ovan kan vi informellt säga att när en ny referens kommer fram är vi vid punkt , dvs. skiftat relativt den reella positionen med mängden fel som ackumulerats av det tidigare extrapolationspolynomet.

Å ena sidan, ur synvinkeln av data som ges till användaren med verkligheten, skulle det bästa sättet att korrigera felet vara att bryta funktionen vid startpunkten för nästa polynom, men vi kan inte göra detta, för i det här fallet kommer vi återigen att "teleportera" markören på kartan och desorientera föraren.

Uppenbarligen, om en momentan förändring i värde är oacceptabel, kommer felkorrigering att ta lite tid än noll. Det är också tydligt att det är tillrådligt att slutföra felkorrigeringen innan nästa räkning kommer för att förhindra felackumulering.

På grund av den stokastiska karaktären hos tidsintervallen mellan offsetavläsningar är det inte möjligt att på ett tillförlitligt sätt bestämma den exakta korrigeringstiden. Därför kommer vi, som en första approximation, att fixa felkorrigeringstiden i form av något konstant värde, vars specifika värde kommer att väljas experimentellt i framtiden.

När du talar på ett informellt språk igen, för att korrigera ett fel, måste du smidigt "återvända" från en punkt till nästa extrapoleringspolynom - en kurva.

För att beskriva felkorrigeringsprocessen är det bekvämt att introducera individuella korrigeringsfunktioner på ett sådant sätt att den motsvarande korrigeringsfunktionen vid tidpunkten antar värdet , och från det ögonblick som det blir lika med noll:


Om vi ​​lägger till en sådan korrigeringsfunktion med motsvarande interpolationspolynom, kommer vi vid nyckelpunkter att tillhandahålla offsetfelkorrigering:
Låt oss kalla den justerade förskjutningsfunktionen summan av extrapolationspolynomet och motsvarande korrektionsfunktion:
Observera att tack vare egenskaperna hos korrigeringsfunktionerna som beskrivs ovan har vi fått en mycket viktig egenskap hos funktionerna - de är redan "sydda med offset", dvs. tolerera inte pauser vid punkter:
Uppsättningen av korrigerade funktioner kan låtsas vara den önskade förskjutningsmodellen, definierad vid alla tillfällen, om inte för en omständighet: trots frånvaron av förskjutningsdiskontinuiteter vid punkter, är derivatorna av denna uppsättning funktioner i det allmänna fallet fortfarande diskontinuerliga.

Specifikt är vi intresserade av diskontinuiteten hos den första derivatan - hastighet, eftersom de initiala kraven innehåller villkoret för universell jämnhet, d.v.s. villkor för universell hastighetskontinuitet. Med hänsyn till detta är det nödvändigt att utöka kraven för korrigeringsfunktioner för att också "sy" derivatorna av de korrigerade funktionerna:


Denna ekvation är villkoret för jämnheten hos uppsättningen av korrigerade funktioner. Genom att ersätta definitionen av justerade funktioner på båda sidor av ekvationen får vi
Vi nämnde tidigare att efter att korrigeringstiden har gått ut, tar korrigeringsfunktionen noll värden. Låt oss lägga till ytterligare ett krav till korrigeringsfunktionen - låt dess derivata också ta nollvärden efter att korrigeringstiden har gått ut:
Sedan, under antagandet att korrigeringstiden alltid är mindre än intervallet mellan sampel, kan vi anta att derivatan av den e korrigeringsfunktionen redan kommer att vara noll när nästa sampel anländer. När vi sedan återgår till jämnhetstillståndet får vi:
Låt oss uttrycka det härifrån:

Observera att detta är en uppskattning av hastigheten som görs med ändliga skillnader, låt oss ersätta det:


Den högra sidan representerar hastighetsextrapolationsfelet - skillnaden mellan hastigheten erhållen från föregående extrapolationspolynom och den "riktiga" hastighetsavläsningen. Nu kan vi sätta ihop randvillkoren för korrigeringsfunktionerna:
De kan beskrivas med ord så här: du måste hitta en korrigeringsfunktion så att:
  • i början av korrigeringsintervallet sammanföll dess värde med förskjutningsextrapolationsfelet;
  • i början av korrigeringsintervallet sammanföll värdet av dess derivata med hastighetsextrapolationsfelet;
  • i slutet av korrigeringsintervallet och vidare var värdet på själva funktionen och dess derivata noll.

Välja en felkorrigeringsfunktion

Det är värt att notera att det är mycket svårt att få ett enda analytiskt uttryck för korrigeringsfunktionerna som exakt uppfyller ovanstående fyra villkor. Problemet ligger i den del av definitionsdomänen som kommer efter att korrigeringstiden har gått ut - du måste uppnå nollvärden för funktionen och dess derivata på hela resten av den numeriska axeln. För att förenkla problemet kommer vi att reducera definitionsdomänen för det önskade analytiska uttrycket för korrigeringsfunktionen till korrigeringsintervallet, och efter dess övre gräns kommer vi att betrakta värdet av funktionen och dess derivata som trivialt noll (lyckligtvis kl. programkodnivån har vi en sådan möjlighet på grund av närvaron av filialer).

Formellt, med hänsyn till denna teknik, är den bitvisa korrigeringsfunktionen ett uttryck för korrigeringsintervallet och konstanten 0 under, men om gränsvillkoren är uppfyllda vid punkten kommer det inte att finnas någon diskontinuitet i vare sig korrigeringsfunktionen i sig eller dess första derivatan. Eftersom diskontinuiteter för högre derivator inte är av intresse för oss (de kommer inte att förstöra jämnheten hos den önskade funktionen), kommer vi i framtiden inte att nämna noll-"svansen" av korrigeringsfunktionen, och vi kommer att omformulera randvillkoren i en mer bekväm form:


Låt oss beteckna hastighetsextrapolationsfelet med:
Nu måste vi definiera ett analytiskt uttryck för . På grund av de ergonomiska kraven på programmet är det, utöver randvillkoren, nödvändigt att korrigeringsfunktionen har så få ytterligheter och veck som möjligt under korrigeringsintervallet - så att GPS-markören inte "rycker".

Den enklaste funktionen som uppfyller dessa krav är återigen ett polynom - ett polynom av minsta möjliga grad i tid (teoretiskt sett, bland elementära funktioner, har sinus, till exempel, också liknande egenskaper, men att beräkna dess värde är dyrare när det gäller processortid ).

Eftersom randvillkoren är ett system av fyra icke-triviala ekvationer, är den minsta graden av polynomet som ger tillräcklig parametrisering av korrigeringsfunktionen den tredje. Med tanke på att när man konstruerar ett analytiskt uttryck för att det är bekvämare att räkna tiden från ögonblicket för den th räkningen (exakt samma som i definitionen), kommer det erforderliga polynomet att ha följande form:


Genom att ersätta detta uttryck i systemet av randvillkor och lösa det med avseende på konstanterna och , får vi följande värden:
Som ett resultat, om vi definierar korrigeringsfunktionerna på det beskrivna sättet, smälter de korrigerade funktionerna samman till en enda extrapoleringsfunktion, jämn hela tiden. Vi kommer inte att ge det fullständiga uttrycket för på grund av dess krånglighet.

Notera: den sista felaktigheten kvarstod i antagandet när man valde korrigeringstiden - vårt resonemang baserades på villkoret att det alltid kommer att vara mindre än intervallet mellan avläsningarna:


En trevlig egenskap med den konstruerade modellen är att vi bara behöver välja på ett sådant sätt att den inte överstiger den genomsnittliga tiden mellan proverna: om individuella intervall är mindre än , så är en del av felet som vi inte hann rätta till kl. ett för kort intervall kommer att korrigeras med ett av följande. För att göra detta räcker det med att beräkna extrapolationsfelet inte från den vanliga extrapolationsfunktionen, utan från den justerade:
Figuren nedan visar ett exempel på en graf över den slutliga extrapolationsfunktionen, byggd med hjälp av verkliga data:

Det formella problemet är löst, den resulterande kurvan uppfyller alla angivna villkor och det ser ganska snyggt ut. Man skulle kunna slappna av på detta, men egenskaperna i den verkliga världen innebär vissa svårigheter för det konstruerade idealiserade systemet.

Låt oss titta på några av dem mer i detalj, med reservation för att alla beslut som fattas nedan implementeras direkt i programkoden utanför den matematiska modellen.

Anpassning av den matematiska modellen till verkliga förhållanden

Förbud mot markörrörelse i motsatt riktning

I den sista grafen kan man se att funktionen i vissa fall börjar minska, även när användaren enligt verkliga mätningar uteslutande kör framåt längs rutten. Detta händer när vår prognos kraftigt överskattar rörelsehastigheten. Å andra sidan, i verkligheten, rör sig en bil i motsatt riktning av bara två skäl: föraren lade faktiskt bilen i backväxeln och gick tillbaka (ett mycket sällsynt fall), eller gjorde en U-sväng.

Vid en U-sväng förändras vägsituationen avsevärt, vilket kräver omstrukturering av navigeringsvägen; detta är ett separat ämne och passar inte in i denna artikels omfattning.

Om vi ​​använder resultaten av extrapolering av positionen direkt, kommer en försvinnande minoritet av alla markörens rörelser mot början av rutten att motsvara bilens verkliga rörelse i samma riktning. Mot bakgrund av detta beslutades att helt förbjuda markören att röra sig bakåt utan att ändra rutten, för att inte vilseleda användarna.

Ett så strikt villkor är svårt att beskriva i matematiskt språk, men det är relativt enkelt att implementera i programkod. Till att börja med, låt oss ta hänsyn till modelltidens diskreta natur - på grund av särdragen hos datorernas funktion kommer vi i alla fall att få extrapoleringsresultat vid vissa utvalda tidpunkter.

Om så är fallet kommer det inte att vara svårt att säkerställa att den extrapolerade förskjutningen inte minskar: det räcker att jämföra det nya erhållna värdet med det tidigare, och om det nuvarande visar sig vara mindre, ersätt det med det tidigare ett. Trots den uppenbara grovheten i denna teknik kommer vi inte att störa extrapolationsfunktionens jämnhet, för för att börja röra sig bakåt längs en jämn funktion måste du först stoppa helt.
I framtiden kommer driftsättet när vi ersätter matematiskt korrekta värden med äldre för att förhindra rörelse tillbaka att kallas forcerat stoppläge.

Extrapolationsfelen är för stora och intervallen mellan sampel är för långa

Trots att vi har konstruerat en kvalitativ funktion i viss mening kan ibland extrapoleringsfel nå oacceptabla värden. I dessa fall bör programmet sluta försöka korrigera fel med standardmetoder. En annan situation där extrapolerad data förlorar sin relevans uppstår om en ny förskjutningsavläsning av någon anledning inte kommer fram för länge - modelleringsförmågan sjunker dramatiskt sedan den senaste avläsningen togs emot. För att undvika att gå över gränsen mellan försök till prognoser och skamlösa lögner, kostar det vanligtvis inte mer än tre sekunder att förlita sig på en modell.

För enkelhetens skull kommer vi att kalla den första negativa situationen för ett okorrigerbart förskjutningsfel, och den andra - ett okorrigerbart tidsfel.

Vi kan arbeta med var och en av dessa typer av fel på två sätt:

  • Gå in i ovan nämnda tvångsstoppläge. Fördelen med detta tillvägagångssätt är att det bevarar den mjuka rörelsen av geopositionsmarkören på terrängkartan. Men ju längre vi är i tvångsstoppläge, desto sämre informerar vi användaren om hans verkliga plats;
  • Teleportera GPS-markören direkt till den sista referensplatsen. Här offrar vi tvärtom ergonomin för tillförlitligheten i den information som ges till användaren.
För vår applikation valdes den första metoden, eftersom särskild uppmärksamhet ägnas åt smidigheten i rörelsen.

Förlängt tvångsstoppläge

Varje inträde i det påtvingade stoppläget är associerat med produktion av mindre exakta platsdata för att förbjuda omvänd rörelse av GPS-markören. För att inte felinformera användaren i särskilt ogynnsamma fall är vår modell dessutom utrustad med möjligheten att avbryta det forcerade stoppläget genom att "teleportera" markören till den sista verkliga positionen efter en viss tidsperiod, oavsett anledningen till att gå in läget (matematiskt resultat av extrapolering eller okorrigerbara offset-/tidsfel) . I detta ögonblick måste till och med jämnheten i rörelser offras för "resterna" av noggrannhet.

Slutsatser

Som ett resultat av det utförda arbetet kunde vi förbättra vägledningen för att ge en bra balans mellan noggrannheten i de tillhandahållna uppgifterna och den visuella ergonomin på deras display. Användaren kommer att känna sig ganska bekväm, särskilt när högkvalitativ data tas emot från GPS-sensorn på grund av en bra signal.

Det beskrivna extrapolationssystemet kan användas i andra applikationer som använder geopositionering. Där begreppet en rutt, och därför en förskjutning i förhållande till dess början, inte existerar, kan den matematiska modellen från en endimensionell skalär generaliseras till en flerdimensionell vektor. Att implementera själva modellen i kod är inte ett problem i något av de populära programmeringsspråken - det kräver bara enkla aritmetiska operationer.

När det gäller vidare utvecklingsvägar är det värt att uppmärksamma mätfelet i "rå" positionsdata från sensorn som nämns i början av artikeln. Om vi ​​redan försöker rätta till felen i vår prognos, så är kampen mot mätfel ett separat lager av arbete för framtiden, svårt, men inte mindre intressant för detta. Fördelarna med potentiell framgång inom detta område för noggrannheten hos den visade informationen kan inte överskattas.

Taggar: Lägg till taggar

"2GIS: katalog och navigator" är en bekväm mobilapplikation för att söka rutter, visa kartor och organisationer i din stad. Hitta en restaurang, apotek eller däckaffär? Inga problem. 2GIS vet allt om din stad. Han kommer att rekommendera närmaste bank, butik eller taxikontor och hjälpa dig att bestämma valet av hotell eller köpcentrum. Det räcker med att ange namnet på gatan, det ungefärliga namnet på företaget eller dess verksamhetsområde i sökningen.

Sök och vägbeskrivning

Android-applikationen har ett enkelt söksystem som låter dig spara dina favoritplatser och täta rutter. Kartan "2GIS: referensbok och navigator" laddas ner till en mobil enhet och kan fungera utan tillgång till 3G eller GPS. Utan tillgång till Internet förblir kvaliteten på applikationen hög.

Android-programmet bygger rutter för fotgängare, bilägare och de som åker kollektivt. Den beräknar det exakta avståndet från en punkt till en annan och visar den ungefärliga restid. Samtidigt tar 2GIS hänsyn till trafikstockningar, trasiga trafikljus och vägreparationer. Kartan låter dig hitta din plats och guidar dig längs rutten och visar svängar och vägbeskrivningar.

Entré till byggnaden, diagram och kontaktuppgifter

Hittar du inte ingången till byggnaden? 2GIS hjälper dig. Klicka bara på önskat objekt på kartan så visar applikationen dig vart du ska gå. Försvunnen i köpcentret? Applikationen kommer inte att vägra hjälpa här heller: layouten på stormarknaden med alla affärer, toaletter, hissar, trappor kommer att vara precis framför dina ögon.

Det finns ingen taxitelefon eller fitnesscenter framför dina ögon - inga problem. 2GIS för Android kommer att förse dig med denna information. Samt webbadresser, företagets öppettider och betalningsmetoder.

De viktigaste fördelarna med "2GIS: referensbok och navigator":

  • enkel användning;
  • tydligt och trevligt gränssnitt;
  • förmåga att arbeta utan internet;
  • faktisk information;
  • de kortaste, mest bekväma vägarna;
  • rösthjälp för förare.

Ett stort plus med applikationen är möjligheten att ladda ner kartor över länder som Cypern, Italien, Tjeckien, Kazakstan, Ukraina, Förenade Arabemiraten. Du behöver inte spendera pengar på roaming för att använda någon annan navigator eller onlinekarta. Sökandet efter kollektivtrafikleder försvinner inte. Du kan alltid komma till rätt plats i ett främmande land.

Röstvägledning längs rutten har dykt upp i 2GIS. Nu kan applikationen användas som en navigator: den guidar dig till ingången till organisationen, med hänsyn till trafikstockningar, staket och öppna broar. Navigatorn finns redan på iOS och Windows Phone, och från 22 augusti – i den nya versionen av 2GIS för Android med fräsch design.

Navigatorläget hjälper dig att ta dig till en plats längs den optimala rutten, med hänsyn till trafiksituationen. Enhetens skärm visar den exakta vägen och avståndet till nästa manöver, och röstmeddelanden gör att föraren inte distraheras från vägen. Om föraren missar en sväng kommer navigatorn omedelbart att ändra rutten.

”2GIS uppdaterar ständigt kartor och vägnät. Vi känner till många interna passager, vilka hus är omgivna av staket, där ingångar och ingångar till organisationer finns. Vår navigator leder dig exakt till önskad ingång.”

Säger Pavel Mochalkin, chef för forsknings- och utvecklingsavdelningen för 2GIS.

Precis som själva applikationen fungerar navigatorn utan internetanslutning i alla städer i Ryssland och CIS där 2GIS är tillgängligt. Den beräknar den ungefärliga restid och visar vilken tid användaren kommer till platsen. Tar hänsyn till trafikstockningar, tidtabeller för broöppning och avstängningar av vägar där det är känt. Om det finns två sätt att ta sig dit kommer navigatorn att erbjuda ett val.

2GIS-navigatorn fungerar på iPhone med iOS 8.0 och senare, Windows Phone 8.1 och senare. För att använda den måste du uppdatera 2GIS på din smartphone eller ladda ner den gratis från AppStore eller Windows Store.

"Eftersom den månatliga publiken för 2GIS på Android länge har varit mer än 8 miljoner användare kommer vi att släppa den nya versionen för Android gradvis, under flera veckor från och med den 22 augusti. Detta är längre än på andra plattformar, för förutom utseendet på navigatorn i Android-applikationen förändras designen helt. Den första möjligheten att ladda ner den uppdaterade 2GIS kommer att ges till 5% av slumpmässiga Android-användare som redan har den tidigare versionen. Sedan ytterligare 5%, sedan ytterligare en. Om du vill använda den nya 2GIS just nu kan du ladda ner betaversionen på Google Play genom att söka efter "2GIS beta,"

Pavel Mochalkin rapporterar.

Beskrivning av funktionsprincipen för 2GIS-navigatorn

2GIS-navigatorn bygger en väg till ingången till den önskade organisationen och erbjuder upp till två optimala ruttalternativ (1 foto - exempel på Android, 2 foton - exempel på iOS).

2GIS-navigatorn tar hänsyn till trafikstockningar och bygger en rutt runt dem (1 foto - exempel på Android, 2 foton - exempel på iOS).


2GIS-navigatorn guidar dig längs vägen, berättar hur många meter senare du behöver göra nästa manöver och beräknar ankomsttiden till din destination. Om användaren avviker från den avsedda kursen kommer navigatorn omedelbart att bygga om rutten (1 foto - exempel på Android, 2 foton - exempel på iOS).


2GIS-navigatorn känner till vägarna inom kvarteret och bygger en rutt runt staket och bommar direkt till önskad infart. Fungerar offline (1 foto - exempel på Android, 2 foton - exempel på iOS).


På alla smartphones baserade på Android 4.1 och högre kommer 2GIS i ny design och med navigator att finnas tillgänglig i början av september.

Beskrivning:

En navigationsapplikation som ger olika information om hur man tar sig till önskad plats, organisationers placering, ruttplanering och mycket mer. All denna information finns i 2GIS-applikationen. Utvecklarna har implementerat i applikationen stöd för ryska, italienska och engelska språk, mycket information: (dessa är butiker, bensinstationer, apotek). Det är också möjligt att se 3D-modeller av byggnader och se deras antal våningar. Mycket hög detaljnivå, du kan se garage och staket. Applikationen har ett offlineläge. Idag kan "2GIS" användas i mer än 212 städer i Ryska federationen.

Efter att ha startat "2GIS"-applikationen presenteras vi med en "huvudskärm" där det finns bokmärken (företag, karta, vägbeskrivningar, favoriter). Även högst upp på skärmen kan vi söka efter den valda staden. I den nedre högra delen av skärmen kan du öppna fliken "inställningar".

När du klickar på fliken "företag" öppnas ett fönster där du kan välja ett objekt enligt följande kategorier:
- Ät
- Barer, klubbar
- Hotell
- Bilservice
- Apotek
- Bankomater
- Banker
- bensinstation
- Taxi

När du klickar på "karta"-fliken öppnas en stadskarta där du kan ändra skalan och ta reda på din plats. Kartan är mycket bra, detaljerad, alla gränder, husnummer och gatunamn är synliga. När du väljer en byggnad kan du se de organisationer som finns i den (mycket bekvämt).

När du klickar på fliken "hur kommer du dit" öppnas ett fönster där du kan bygga en rutt från din plats till slutpunkten. Du kan lägga till vad du vill till dina favoriter.


Det finns fyra flikar i inställningarna (kataloger, navigering, allmänt, om programmet). Katalogerna innehåller information om platsen för 2GIS-programfilerna på din enhet. I navigering kan du välja två typer av kartor (3D eller 2D), skärmsläckning, platsbestämning. På fliken "Allmänt" måste vi välja applikationsspråk, användning av systemtangentbordet etc.

På fliken Om programmet kan du se den senaste versionen om programmet, skriva till utvecklarna och hitta länkar till annonsering på 2GIS.