Bílý vrch
icon TrekBuddy
www.trekbuddy.net
Outdoor companion.
  • internal / bluetooth / simulator GPS
  • offline raster maps
  • smart GPX / raw NMEA logs
  • waypoints and simple navigation
  • custom views
  • MIDP and Symbian phones
  • Blackberry
  • Android
Visit wiki to see all features, guides and howtos. Project tracker.

Partners:    (Polish/Polski)(Polski) Compass mapy      (Polish/Polski)(Polski) Galileos mapy      (Polish/Polski)(Polski) CartoMedia      (Czech/Èesky)(Èesky) Eaglesoft trasy      (Polish/Polski)(Polski) ExpressMap     

 FAQFAQ   SearchSearch   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
Ukladanie bodov a vykreslenie trasy

 
Post new topic   Reply to topic    TrekBuddy Forum Index -> Česky-Slovensky
View previous topic :: View next topic  
Author Message
Bic0



Joined: 21 Sep 2006
Posts: 6

PostPosted: Fri Sep 22, 2006 12:17 am    Post subject: Ukladanie bodov a vykreslenie trasy Reply with quote

Cital som o "problemoch" ktore mala GPSka (alebo j2n1?) s vykreslovanim trasy ked stal clovek na jednom mieste - v dosledku "kolisania" pozicie tam vznikla machula. Bohuzial momentalne nemam telefon na ktorom by som mohol skusat TrekBuddy takze neviem presne ako teraz funguje. Myslim ze ty prejdenu trasu zatial nevykreslujes, ale moj napad by sa dal vyuzit aj na to aby si zbytocne neukladal kopec WayPointov ked stojis na mieste.

Riesenie:
Da sa priblizne odhadnut/otestovat (kalibracia pri prvom spusteni aplikacie?) rozptyl o kolko moze pozicia kolisat ked stojis na mieste. Vznikne kruznica okolo aktualnej polohy s polomerom r = (maxGPS - minGPS) / 2 (maxGPS a minGPS su namerane/odhadnute suradnice). Pre istotu sa moze definovat nejaka "magicka" konstanta x >= 1.
Ak sa stanovia podmienky ze vzdialenost v noveho a predosleho bodu je:
1) x*r >= v - tak stojim na mieste (stale v kruznici) a tento posun ignorujem
2) x*r < v - tak sa hybem, mozem posunut kurzor pozicie a ulozit/vykreslit bod

Co ty na to?
Back to top
View user's profile Send private message
kruch
Site Admin


Joined: 02 Jul 2006
Posts: 5665

PostPosted: Mon Sep 25, 2006 9:34 pm    Post subject: Reply with quote

Je fakt ze soucasny filtr, ktery mam pro ukladani tracku do GPX, nefunguje moc dobre pri stani.

Jeden problem ktery ma, a ktery vidim i u tveho navrhu je, jaky bod povazovat za aktuani polohu, pro vypocet v. Pokud by se pouzil nejaky maly ustrel, mohlo by filtr zabranit zobrazeni presnejsi polohy.

Jinak vykreslovat trasu jsem kdysi zavrhnul, ale uz nevim proc - mozna jenom kvuli "tancovani" gps-ky? Ale s tou kruznici me neco napadlo, zkusim to promyslet, a kdyz neco napisu...
Back to top
View user's profile Send private message
Bic0



Joined: 21 Sep 2006
Posts: 6

PostPosted: Tue Sep 26, 2006 12:25 am    Post subject: Filter Reply with quote

Mojim cielom je pouzit princip zo statickej navigacie - ak sa nemylim tak ignoruje zmeny ktore su menej ako cca 4km/h. Len som si nie celkom isty ci ked pojdem naozaj velmi pomaly, ci bude stale ukazovat na ten prvy bod kde som ju zapol.

Mohli by tam fungovat 4 rezimy aby si mohol kazdy zvolit co mu vyhovuje (2 polozky na zapnutie a vypnutie v menu). Medzi tymito rezimami by sa dalo prepinat zmenou nastaveni cez menu:
1) filtrovany menej presny s ukladanim bodov (standard pre zaznam cesty)
2) filtrovany bez ukladania bodov (standard pre info o pozicii)
3) nefiltrovany, presny ale zato "rozhadzany" s ukladanim bodov (geocaching, neodporuca sa kvoli moznym "nezmyslom")
4) nefiltrovany, bez ukladania (geocaching faza "hladania skryse")

Filtrovane by sa dali pouzivat napriklad by jazde autom alebo na bicykli kde staci "mensia" presnost je akceptovatelna, nefiltrovane napriklad pri Geocachingu kde potrebujes co najvyssiu presnost.

Moja idea vypoctu filtra by bola asi takato - nech posledna akceptovana pozicia je LAP. Potom je tu nova pozicia NP ktoru som prave dostal z GPS prijimaca. S kazdou poziciou by sa ukladal smer akym si do neho prisiel - napriklad do bodu LAP som siel na sever - dalsia "velicina" ktorou mozes filtrovat.

Pre filtrovany rezim by sa dala definovat minimalna pozadovana odchylka DIST - pri super signale napriklad 5 metrov. Tato hodnota by sa mohla prisposobovat podla poctu dostupnych satelitov kedze cim viac satelitov tym lepsia presnost a stabilnejsia pozicia (mozno je na to uz nejaka analyza urobena) - cim menej satelitov tym vacsia zmena pozicie by sa vyzadovala - zvacsila by sa kruznica a teda pocet "odmietanych" bodov.

Odchylka DIST by sa dala pocitat napriklad kalibraciou programu (analyza 30 merani za sebou) na poziadanie uzivatela.

Postup vypoctu bodov radsej skusim popisat v Java kode s "troskou" abstrakcie Smile

Code:
// Zapnute cez menu
boolean saveWayPoints = menu_value;
// Zapnute cez menu
boolean applyFilter = menu_value;
// d je zapnute cez menu alebo vypocitane
// deviation by vyjadrovalo moznu nepresnost podla poctu satelitov - pri super signale deviation=1
int minimalDistance = DIST * deviation;
// Na zaciatku ulozim aktualnu poziciu
Position LAP = gpsParser.getPosition();
// Nova pozicia
Position NP = null;
// Docasna pozicia
Position tempPos;

while(application_is_running)
{
    NP = gpsParser.getPosition();
    if (acceptNewPosition(LAP,NP)==false) // Neakceptuj novu poziciu
    {
        // Ignoruj novu poziciu
        continue;
    }
    else // Bod je v poriadku
    {
        if (saveWayPoints==true) save_way_point(LAP); // Ulozim LAP
        draw_way_point(LAP);
        if (tempPos!=null) // Docasny bod lezi medzi LAP a NP, tak ho tiez ulozim
        {
            if (saveWayPoints==true) save_way_point(tempPos);
            draw_way_point(tempPos);
            tempPos = null;
        }
        LAP = NP; // Nastavip NP ako LAP
    }
}

protected boolean acceptNewPosition(Position actPos, position newPos)
{
    // Akceptuj lebo filter je vypnuty
    if (applyFilter==false) return true;
    int distance = getDistance(actPos,newPos);
    // Mala zmena pohybu, zahod poziciu ale zaznac ho ako docasny
    if (distance<minimalDistance)
    {
        if (actPos.smer == newPos.smer ) // Ak smer suhlasi, uloz si novy do docasneho
        {
            tempPos = NP;
        }
        return false;
    }
    // Zmena je vacsia ako minimalna
    else
    {
         if (actPos.smer != newPos.smer ) // Zmena smeru - treba porozmyslat aka je tolerancia
         {
            boolean direction_changed = display_question_with_sound_and_vibration("Direction changed?");
            if (direction_changed==true) tempPos = null; // Ak som zmenil smer zahodim docasny ktory bol v predoslom smere
            return true; // A akceptujem NP
         }
         else // Rovnaky smer, akceptujem
         {
            return true;
         }
    }
}

protected int getDistance(Position pos1, Position pos2)
{
    return pos1_pos2_vector_size;
}
Back to top
View user's profile Send private message
kruch
Site Admin


Joined: 02 Jul 2006
Posts: 5665

PostPosted: Fri Oct 13, 2006 5:35 pm    Post subject: Reply with quote

Profily jsou rozhodne zajimavej a dobrej napad. V nejblizsi dobe se se chci podivat na vykreslovani trajektorie, je to casty podnet. Hlavne si ale musim sam pro sebe udelat vic pozorovani pro maly rychlosti, s mapou 1:25000, coz je predpokladam nejmensi meritko co 99% lidi muze pouzit....
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    TrekBuddy Forum Index -> Česky-Slovensky All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group