tracker - kompass HMC5883L - arduino

Dneska se procesory objevují všude, pokud máte nějaký nápad, či udělát, tak se neváhejte pochlubit.
Odpovědět
Zpráva
Autor
Uživatelský avatar
jaroslav.falcon
Příspěvky: 1528
Registrován: pon 08.10.2012 22:15
Bydliště: Kladno

tracker - kompass HMC5883L - arduino

#1 Příspěvek od jaroslav.falcon »

Cao,
nemáte prosím radu ?

mám tento kompas s arduinem, code dle webu. Čtení stupňů nějak funguje. Problém je , nastavím směr kompasu na sever tj 0°. otočím o 90 a na display je 120, otočím o -90 na display je 280, otočím o 180 a je to cca OK. žádnou kalibraci jsem nedělal, nevím ani jak. takto se chová samotný senzor i deska APM do které nahraji pouze čtení kompasu. Pokud nahraji plné APM tak to chodí naprosto přesně.

úheh se počítá pouze ze dvou os. nemělo by to být ze 3 ?


MagnetometerRaw raw = compass.ReadRawAxis();
MagnetometerScaled scaled = compass.ReadScaledAxis();

int MilliGauss_OnThe_XAxis = scaled.XAxis;// (or YAxis, or ZAxis)

// Calculate heading when the magnetometer is level, then correct for signs of axis.
float heading = atan2(scaled.YAxis, scaled.XAxis);

float declinationAngle = 0.0457;
heading += declinationAngle;

// Correct for when signs are reversed.
if(heading < 0)
heading += 2*PI;

// Check for wrap due to addition of declination.
if(heading > 2*PI)
heading -= 2*PI;

// Convert radians to degrees for readability.
float headingDegrees = heading * 180/M_PI;

// Output the data via the serial port.
Output(raw, scaled, heading, headingDegrees);
Naposledy upravil(a) jaroslav.falcon dne úte 08.11.2016 8:55, celkem upraveno 1 x.
Maxipes
Příspěvky: 1130
Registrován: ned 15.07.2007 0:00
Bydliště: Praha 6, ČR

Re: kompass HMC5883L - arduino

#2 Příspěvek od Maxipes »

Ahoj, magnetometr (kompas) bez kalibrace už z principu nebude fungovat správně. Musíš udělat kalibrační kruh a vypočítat kalibrační konstanty a nebo implementovat automatickou kalibraci (náročnější). To, že se čtou jenom dvě osy je správně, ale před tím bys měl udělat transformaci (rotační matice) dat z magnetometru do vodorovna, tedy z akcelerometru zjistit natočení a podle této polhy transformovat magnetometr. APM bude pravděpodobně už nakalibrované přímo v programu. Ale aby byla kalibrace přesná, je nutno ji udělat ve finálním použití, tedy včetně všech kovových dílů okolo magnetometru. To co potřebuješ je kompletní úloha inerciální jednotky (IMU), zkus k tomu něco pohledat na webu, není to úplně snadné.

Třeba tady http://measure.feld.cvut.cz/cs/system/f ... locked.pdf bys moh najít nějaké info, ale číst se mi to nechce... :)
T-Rex 600N Spirit, Tx Aurora.
Uživatelský avatar
jaroslav.falcon
Příspěvky: 1528
Registrován: pon 08.10.2012 22:15
Bydliště: Kladno

Re: kompass HMC5883L - arduino

#3 Příspěvek od jaroslav.falcon »

myslel jsem si to po mích experimentech. Chtěl jsem to do trackeru ghetto station. V tomto případě se s tím dále zabývat nebudu a jednoduší je zadat uhel ručně z mobilu, nebo ho načtu z koptéry, která má dané algoritmy implementovány.

Další varianta je implementovat tracker přímo na APM .

Díky za info.
Uživatelský avatar
OK2BUH
Příspěvky: 3515
Registrován: úte 19.11.2013 18:22
Bydliště: Olomouc, ČR

Re: tracker - kompass HMC5883L - arduino

#4 Příspěvek od OK2BUH »

Já myslím, že by šlo využívat jenom dvě osy pro výpočet azimutu ale bude tam jedno omezení. Problém je v tom, že magnetická siločára u nás není horizontální ale má blíž k vertikále, inklinace je kolem 65 stupňů. Musel bys zaručit aby kompas byl na trackeru vždy přesně vodorovně a musel bys to ověřovat bublinkou vodováhy. Při náklonech by se otáčel. Při náklonu 25 stupňů k jihu by se točil jak holub na báni a nevěděl by směr, při překročení 25 stupňů by se otočil opačně. (90-65=25).
Uživatelský avatar
jaroslav.falcon
Příspěvky: 1528
Registrován: pon 08.10.2012 22:15
Bydliště: Kladno

Re: tracker - kompass HMC5883L - arduino

#5 Příspěvek od jaroslav.falcon »

to právě není pravda, ten magnetometr není lineární, prostě jeho otočení fyzické neodpovídá magnetickému a v různých místech se to liší. třeba ve směru server-jinch je to +-3st ale v ve směru vychod-západ je to treba +-20st takže to ho otočíš fyzicky o 90 a on ukáže třeba jen o 60.
Uživatelský avatar
OK2BUH
Příspěvky: 3515
Registrován: úte 19.11.2013 18:22
Bydliště: Olomouc, ČR

Re: tracker - kompass HMC5883L - arduino

#6 Příspěvek od OK2BUH »

Musí se zkalibrovat, ale klasická kalibrace potřebuje akcelerometry aby kompas věděl jak je otočený ve 3 osách. Ale mám takové hodinky které akcelerometry nemají a kalibruji je ve 2 osách otáčením naplacato na stole. Ale netvrdím, že to bude fungovat s tím tvým kompasem.
Uživatelský avatar
jaroslav.falcon
Příspěvky: 1528
Registrován: pon 08.10.2012 22:15
Bydliště: Kladno

Re: tracker - kompass HMC5883L - arduino

#7 Příspěvek od jaroslav.falcon »

ja mam take hodinky a o proti mobilu jsou nepřesné. Mel jsem i SW s kalibraci jak řikáš, ale to spočítá nějaký offset. Myslím, že kdyš máš ten offset tak dobrý, ale pokud to není lineární tak musíš mít tu rotační matici. Takto si to aspoň myslím na základě selského rozumu, ale na inerci na to selský rozum nestačí :-) Kdysi jsem se na to dívál a ta matematika je docela hustá.
Uživatelský avatar
jaroslav.falcon
Příspěvky: 1528
Registrován: pon 08.10.2012 22:15
Bydliště: Kladno

Re: tracker - kompass HMC5883L - arduino

#8 Příspěvek od jaroslav.falcon »

jestě mne napadlo rotovat s tím po 1st a odečítat hodnotu. nebo po uhlů, které dá servo jako min . tím bych znal změnu úhlu a naměřenou hodnotu a z toho bych udělal matici. Problém je, že to servo se otočí jen o 180st anavíc si nejsem jist zda by to byla správná cesta.
Uživatelský avatar
OK2BUH
Příspěvky: 3515
Registrován: úte 19.11.2013 18:22
Bydliště: Olomouc, ČR

Re: tracker - kompass HMC5883L - arduino

#9 Příspěvek od OK2BUH »

Tam jde o to, že ty osy jsou sice přesně kolmé ale z výroby nemají nikdy stejnou citlivost. Tak se musí kalibrací srovnat. A do toho ještě kecají okolní železa.
Uživatelský avatar
jaroslav.falcon
Příspěvky: 1528
Registrován: pon 08.10.2012 22:15
Bydliště: Kladno

Re: tracker - kompass HMC5883L - arduino

#10 Příspěvek od jaroslav.falcon »

to by znamenalo, že ta nelinearita je pouze na "stole" a po kalibraci OK, ale ja mam tu nelinearitu i na zahradě. Jestě tedy zkusím udělat externí na kablík a dám ho dál od trackeru. Ted jsem to měla si 10cm .
Maxipes
Příspěvky: 1130
Registrován: ned 15.07.2007 0:00
Bydliště: Praha 6, ČR

Re: tracker - kompass HMC5883L - arduino

#11 Příspěvek od Maxipes »

Jestli chces jednoduchou kalibraci, tak si vycti hodnoty X a Y pro alespon 8 ruznych orientaci (rovnomerne) a vykresli si to do grafu, dostanes neco jako na obrazku v priloze (modra barva). To co potrebujes je na obrazku cervenou barvou, takze si snadno spocitas kolik pricist do te konkretni osy. Citlivos obou os se lisi jenom malo, to pro zacatek neni potreba resit. Vytahovat magnetometr dal od elektroniky neni spatny napad, ale bude to fungovat i pobliz.
Přílohy
mag.png
T-Rex 600N Spirit, Tx Aurora.
Odpovědět

Zpět na „Procesory a jiné vychytávky“