Hirdetés

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

  • tonermagus

    aktív tag

    Sziasztok!

    Teljesen elakadtam egy projektben. Autopilot rendszert építek egy távirányítós autó számára.
    Mindent sikerült leprogramoznom már, gyakorlatilag 99%-on áll a dolog, de a digitális iránytű kifogott rajtam....

    Ahhoz hogy az autó tudja hogy merre kell elindulnia kell az iránytű, tudni kell hogy az autó orra pontosan hány fokra néz északtól. Ezt pedig a Heading értékkel tudom meg amit az iránytűtől kérdezek le.

    HMC5883L iránytűt használok. Ugyebár alapból eléggé rossz értékeket ad vissza, így nyilván kalibrálni kell. Megadom a "Mágneses deklarációm" és egy gombnyomásra lefuttatom a főprogramomban egy voidként meghívva a kalibrációs programot.

    ----------------------------------------------------------------------------------------------------
    void calibration() {

    Vector mag = compass.readRaw();


    // Min/Max értékek meghatározása

    if (mag.XAxis < minX) minX = mag.XAxis;
    if (mag.XAxis > maxX) maxX = mag.XAxis;
    if (mag.YAxis < minY) minY = mag.YAxis;
    if (mag.YAxis > maxY) maxY = mag.YAxis;
    // offset kiértékelés

    offX = (maxX + minX)/2;
    offY = (maxY + minY)/2;
    }

    ----------------------------------------------------------------------------------------------------
    Ezt egy loopban futtatom egészen addig míg a távirányítón ki nem kapcsolom az kalibrációs módot. Itt a végén kapok egy OffX és OffY értéket. Miután kilépek a kalibrációból a compass offsetjét átírom a kapott értékekre:

    compass.setOffset(OffX, OffY);

    De valahogy nem akar sikerülni. Ha kiíratom az iránytű értékeit akkor szinte csak 200 feletti szögek vannak. 200 és 360 között mozog az érték, és borzasztó pici tartományban van csak jelen a 200 alatti, és az is pillanatok alatt átugrik ~30-ról 200-ra. Tehát teljesen torz az irányérzékelés.

    Kérdések:
    1.
    Működik-e ez a módszer? Hogy programfutás közben kalibrálok, majd visszatérek és az offset értékkel és felülírom a compass.setOffset(OffX, OffY);-el?

    2.
    A kalibrálást hogy kell elvégezni? Én egy helyben állva forgatom az iránytűt. Nagyobb köröket kellene mennem? Sétálgatnom kellene vele?

    3.
    Minden irányba, minden tengelyen körbe kell-e forgatnom hogy jó legyen? Kicsit ettől félek, mert az autóval csak jobbra-balra tudok forogni. Fel-le, a tengely körül forogva nem igazán. ÉS nekem ugye csak a vízszintes irány kellene. Illetve elég lenne ha az az egy tengely jól be lenne lőve.


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