Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz gazso75 #11198 üzenetére

    Pár gondolat így elsőre. Lehet, ezek számodra nem aktuálisak, fogadd kellő kritikával őket.

    1.) A TinyGPSPlusban van:
    double TinyGPSPlus::distanceBetween(double lat1, double long1, double lat2, double long2)
    Miért nem azt használod a
    if(abs(prev_lat - gps.location.lat()) < 1 && abs(prev_lon - gps.location.lng()) < 1)
    helyett?

    2.) Az osztály végez kontrollszumma ellenőrzést. Ezek szerint csak azokat a hibásakat veszi át, ami ezen átcsúszik, ezért viszonylag kevés a hibás adat, de a valóságban sokkal több, csak azt nem látjuk.

    3.) Milyen kontrolleren (lapon) futtatod? Mert ha egy kicsit korszerűbbön, mint az UNO, akkor nem célszerű a SoftwareSerial, hanem helyette a hardware megoldás.

    4.) Milyen GPS modult használsz? Nem tud paritásbittel küldeni? Bár - úgy tudom - a SoftwareSerial nem tud paritásbites olvasást :-(

  • DigitXT

    félisten

    válasz gazso75 #11198 üzenetére

    Az a baj a kódban, hogy az "előző értéknek" mindig eltárolod az aktuálisat.
    Akkor is, ha az egy hibás adatot tartalmazó mérés. Két ilyen egymás után,
    és már be is került a logba a hibás adat... Igaz, nem kétszer, csak egyszer.
    (Folyománya, hogy a hibás adat "elfogadása" után a jót is egyszer eldobja.)

    A másik, amit weiss is ír, hogy ha újra beolvasod, akkor már nem telejesen
    biztos, hogy ugyanazt kapod vissza, mint a korábbi olvasásnál... Változóba
    tenném, így csak egyszer olvasnám be, azon nézném a feltétel teljesülését.

    A harmadik, amire még gondoltam, hogy az hibás adathoz vezethet-e, ha túl
    sűrűn próbálod olvasni az aktuális értéket, bár ha ez az adott modul tudja az
    5 Hz-es frissítést is, akkor elvileg 4 Hz-en kérdezgetve nem lehet baj. De azt
    nem tudom, hogy hogyan működik a háttérben a könyvtár, ami kezeli...:R

    A negyedik ehhez lazán kapcsolódón: ha van 2 méteres szórása, akkor nem
    túl sok értelmét látom másodpercenként négyszer rákérdezni, hol a játékos.
    Szerintem sok-sok esetenként hibás koordinátából nehezebb távot számolni.

    Ha viszont ennyire behatárolt a felhasználás, akkor a hibás adat értelmezése
    is túlságosan megengedő (csillió km/h): elég az ha mondjuk 50 métert ugrott
    odébb egyetlen másodperc alatt, futva azt se követhette el => mérési hiba.:K

  • weiss

    addikt

    LOGOUT blog

    válasz gazso75 #11198 üzenetére

    Tippre az a baj, hogy mikor a végén lemented az adatokat:

    prev_lat = gps.location.lat();
    prev_lon = gps.location.lng();

    akkor új mérést csinálsz, amik már lehet mások, mint amiből eredetileg dolgoztál.

Új hozzászólás Aktív témák