Low Cost Headtracker mit Arduino und Magnetometer

Rangarid

Erfahrener Benutzer
#21
So...PPM scheint jetzt zu stimmen, der Servo läuft komplett flüssig, genauso wie wenn der Trainer abgeschaltet wird.

Irgendwie scheint die Wfly nicht wirklich die selben PPM-Impulse auszusenden wie andere Fernsteuerungen.
Die Impulslänge die ich ausgeben muss liegt um die 430us, damit ich mit Trainer on das selbe Ergebnis habe wie bei Trainer off. Normaerweise ist die Impulslänge 300us oder 500us (je nach Quelle, habe beides im Internet gefunden...was ist nun richtig???). Aber naja...Erlebt man ja oft, dass standardisierte Verfahren nicht komplett so implementiert werden wie sie sollten, vielleicht liegt es einfach daran.

Jedenfalls ist jetzt das Einlesen und das Ausgeben der PPM-Werte funktionsfähig. Somit fehlt jetzt nurnoch der Compass (blöder Briefträger....)

Achso ich vergaß fast...du hattest ja ein paar Fragen gestellt...
Sledge hat gesagt.:
Respekt, ziemlich cooles Projekt. Wenn das so klappt dürfte das alles in den Schatten stellen was es so an Headtrackern gibt. Und ehrlich gesagt habe ich mich immer gefragt warum man bei magnetischen HTs immer eine fixe Ausrichtung braucht. Das kann eigentlich nur an der Programmierfaulheit liegen.
Das kann gut sein, ich kann es dir nicht genau sagen, da ja mein Modul noch nicht da ist. Aber theoretisch sollte es wirklich so sein, dass du von einem genullten Punkt aus genauso gut den Winkel berechnen kannst wie von Norden aus gesehen.

Hast Du auch schon Routinen um den Kompass initial zu konfigurieren? Wenn ich es richtig verstanden habe funktioniert das angelernte Setup nur innerhalb der Längen/Breitengrade in der das Setup gemacht wurde.
Was meinst du mit den Kompass initial zu konfigurieren?
Zum Rest...Der HeadTracker sollte überall funktionieren, zumindest wenn man nich gerade auf dem Nordpol steht...Dem Kompass ist es ja egal, ob du andere Längen- und Breitengrade hast, der richtet sich ja immer nur nach Norden. Und den Winkel wieviel man von Norden abweicht kann man theoretisch von jedem Punkt der Erde aus berechnen (außer man steht auf dem Nordpol).

Wenn Du an Deiner Wfly scheiterst würde ich so einen HT gegen eine Turnigy 9x mit Er9x Software tauschen. Dann hast Du Einzelkanalübergabe und kannst auch Dinge wie Servoweg/Richtung einfach an der Funke einstellen. Bei Interesse schreib mir ne PN. Wenn nicht, hoffe ich dass Du eine schöne detaillierte Nachbauanleitung bereit stellst.
Da meine Wfly nun doch zu funktionieren scheint (ich glaube das Signal am Trainerport ist einfach invertiert...) werde ich zunächst erstmal bei meiner Wfly bleiben, bis ich den HT zum Laufen gebracht habe.

Eine Nachbauanleitung und Quellcode wird es warscheinlich auch geben und wenn alles funktioniert wie es soll wird es vielleicht auch ein fertiges Trackermodul geben, hier muss ich aber erstma kucken was das kostet...

Momentan macht mir die Stromversorgung auch noch etwas Kummer, ich brauch ja 5V für den Arduino. Mal kucken wo ich die herhole.
 
#22
Cooles Projekt, aber ich frage mich wie Du die Tilt Ebene auslesen willst. Ein Kompass hat nunmal nur eine Ebene. Soweit ich das verstanden habe, heißt diese 3-Achs Kompass Sache ja nur dass er in jeder Lage Norden bestimmen kann, ein normaler Kompass versagt dabei wenn man Ihn aus der Horizontalen kippt ...

Edit: Dazu mal dieser Satz:
Ein 3 Achsen Kompass mißt das Erdmagnetfeld und man kann die Nordrichtung in einem Raumwinkel messen. Dadurch ist die Messung unabhängig von Neigungswinkel des Sensors.
Gefunden per Google

Wenn günstig nachzubauen ist, wäre es zumindest einen Nachbau für Pan wert ...
 

Rangarid

Erfahrener Benutzer
#23
Ja das hab ich mir auch schon gedacht, aber in der Regel hast du den Kompass ja auf dem Kopf, wenn du ihn also kippst sind andere Achsen dafür verantwortlich, Norden zu finden. Man sollte also erkennen, wenn eine andere Achse mehr magnetkraft bekommt und je nachdem welche Achse da ist sollte man dann auch ein Nicken berechnen können. Das werde ich prüfen sobald der Kompass da ist. Falls das mit einem Kompass alleine nicht geht muss ich den HeadTracker eben erweitern.
 

Rangarid

Erfahrener Benutzer
#25
Die einzelnen Achsen kann ich mir definitv ausgeben lassen:
https://www.loveelectronics.co.uk/Tutorials/8/hmc5883l-tutorial-and-arduino-library

Hier gibs die Bibliothek für den Magnetometer. In dem tutorial wird folgendes Beispiel gezeigt:
Code:
MagnetometerRaw raw = compass.ReadRawAxis();  
  int xAxis = raw.XAxis;
  int yAxis = raw.YAxis;
  int zAxis = raw.ZAxis;
Ich bekomme also definitv Werte für die einzelne Achse, die ich selber noch umrechnen kann. Dadurch kann ich theoretisch sehen welche Achse die höchste Anziehungskraft hat.
 
#26
Jo, das hatte ich auch gelesen dass man an die einzelnen Feldstärken kommt. Haste Dir denn schon über die Formel gedanken gemacht? Ich stelle mir das grad nicht so einfach vor ;)
 

Sledge

lonesome Cowboy
#27
Rangarid hat gesagt.:
Was meinst du mit den Kompass initial zu konfigurieren?
Zum Rest...Der HeadTracker sollte überall funktionieren, zumindest wenn man nich gerade auf dem Nordpol steht...Dem Kompass ist es ja egal, ob du andere Längen- und Breitengrade hast, der richtet sich ja immer nur nach Norden. Und den Winkel wieviel man von Norden abweicht kann man theoretisch von jedem Punkt der Erde aus berechnen (außer man steht auf dem Nordpol).
Ich kanns Dir nicht genau sagen. Vom Mikrokopter kenn ich das so, dass man den mk3mag erst mal auf die Feldlinien an denen man sich befindet kalibrieren muss. Wenn man von der Nordhalbkugel zur Südhalbkugel reist sollte man die Kalibrierung wiederholen. Siehe MK-Wiki Von dort aus gibts auch einen Link ins SVN. Du kannst Dir ja mal den Code vom mk3mag ansehen. Es müssten sogar in irgend einem branch Routinen für einen HT geben. Allerdings nur für den mk3mag mit integriertem ACC (leider nicht mehr lieferbar) und leider gibt der dann auch nur serielle Kommandos zum steuern über Wi.232 Modul raus.

Ich drück Dir ganz doll die Daumen, dass Tilt auch ohne Acc funktioniert. Läuft Dein Tracker auch ohne PpmIn? Also ohne ppm Manipulation, so dass man einfach Kanal 7+8 als PPM in eine Funke mit Einzelkanalübergabe einspeißen kann?

Wenn Du so weit bist, tests mit einer 9x zu machen dann schick mir mal deine Adresse per PM. Ich schicke Dir die Funke dann zum ausgiebigen testen zu.

gruß Patrick
 

Rangarid

Erfahrener Benutzer
#28
Das mit der Einzelkanalübergabe muss ich testen. Rein theoretisch wäre es möglich ein PPM-Signal mit nur 2 Kanälen zu erzeugen. Ich weiß halt nicht wie das Signal bei ner Funke mit Einzelkanalübergabe aussehen muss, aber das lässt sich mit Sicherheit schnell herausfinden.

Das mit dem kalibrieren werd ich mir mal durch den Kopf gehen lassen und eine Erklärung finden, hab da schon ne Idee woran es liegt.
 

Rangarid

Erfahrener Benutzer
#29
jjk hat gesagt.:
Jo, das hatte ich auch gelesen dass man an die einzelnen Feldstärken kommt. Haste Dir denn schon über die Formel gedanken gemacht? Ich stelle mir das grad nicht so einfach vor ;)
Mit dem tangens kommt man auf den Winkel wenn man die Werte von X und Y hat. Ich denke irgendwie mit Z und dem Wert von X und Y kann man dann auch einen Vektor auf der Z-Ebene erzeugen, der dann fürs Tilt zu gebrauchen ist.

Ich weiß wie man den Magnetometer benutzt und wie man die Nord-Richtung ausliest. Die entsprechenden Formeln für Pan/Tilt usw. bastel ich mir zusammen, wenn ich sehe, dass es funktioniert.
 
#30
Rangarid hat gesagt.:
Ich weiß halt nicht wie das Signal bei ner Funke mit Einzelkanalübergabe aussehen muss, aber das lässt sich mit Sicherheit schnell herausfinden.
Das wiederum ist ja einfach, Du mußt nur die ersten Kanäle mit Mittelstellung übertragen und Deine Kanäle 7+8 mit den Pan/Tilt Stellungen. In der Funke sagt man dann ja dass man Kanal 7 für Servo X und Kanal 8 für Servo Y nehmen will. DIe restlichen Kanäle werden ignoriert.

Gruß
Jens
 

Rangarid

Erfahrener Benutzer
#31
Ahja so einfach ist das. Dann kann ich das ganze natürlich auch ohne PPM-in machen. Werde dann in der config.h eine Option hinzufügen, in der man einstellen kann ob der Arduino als Mixer benutzt wird oder nur PPM ausgibt.
 
#32
Einzelkanalübergabe hat schon Vorteile :).
Leider kann man bei meiner Funke die Kanäle nur auf bestimmte Funktionen, nicht aber Kanäle legen. Von daher wäre ich an der PPM-In Lösung mit Konfigurierbarer Kanalanzahl (9 wäre für mich besser) interessiert. 1-7 normale Kanäle und 8 & 9 dann der HT. Aber 7 & 8 ginge ja eigentlich auch, dann muß der 9te halt OSD oder so sein

Also ich bin auf jedenfall dabei. Falls Du n Prototypen-Board beätzt/gefräst brauchst, kannste DIch auch bei mir melden ;) ...

Jens
 

Rangarid

Erfahrener Benutzer
#33
So...der Postbote kam heut leider nicht. Dafür hab ich jetzt Einzelkanalübergabe eingebaut...Alle Kanäle auf Mittelstellung, außer der Pan&Tilt Kanal, die werden ganz normal berechnet.
 

Rangarid

Erfahrener Benutzer
#35
So...Zurück zum Thema geht Pan&Tilt mit dem Magnetischen Headtracker. Die Antwort ist ja:
http://www.youtube.com/watch?v=QcyFSkUr4HI
Hier handelt es sich um den Magtrack, desweiteren gibt es noch den MHT (Magnetic Head Tracker, hierzu lieder nur Infos auf spanisch...) und den SkyEye HeadTracker.

Diese haben anscheinend alle Pan/Tilt. Es sollte also definitiv machbar sein, da alle mit einem 3-Achsen Sensor arbeiten. Im Video sieht man ganz gut, wie schön sanft das Pan/Tilt sich bewegt, hoffe mal dass ich das auch so hinbekomme.

Zum Thema warum nach Norden ausrichten? Ich denke ich habe die Antwort gefunden und sie ist relativ einfach. Wenn du den festen Bezugspunkt Norden hast dann weist du genau in welcher Lage sich der Sensor befindet, wenn sich die X-, Y- oder Z-Achse bewegt. Du hast also ein vollständig bekanntes Koordinatensystem.
Wenn du aber einfach was nullst weiß er zwar wo Norden ist, müsste sich aber aus umständlichen Berechnungen das neue Koordinatensystem errechnen. Das sollte eigentlich mit ner Vektormatrix funktionieren. Muss ich mal kucken ob ich da noch ne einfach zu implementierende Idee finde. Hatte damit schonmal was in Java mit Grafiken vergrößern, verkleinern, verschieben usw. gemacht.

Könnte mir schon vorstellen, dass man im Endeffekt aus jeder Position heraus den Nullpunkt umrechnen kann, das ist ja quasi eine Verschiebung in ein anderes Koordinatensystem. Muss ich mir den ganzen Vektorkrams nochmal angucken *würg*...Denke ich werde dann erstmal die unschöne Version mit nach Norden gucken implementieren (nur um zu gucken wie es funktioniert), damit 1-2 Testflüge machen (gucken wie sich die PPM-Methode bewährt) und danach bei erfolgreichem Test das ganze erweitern mit dem Nullen-wo-auch-immer-du-gerade-sitzt.
 

Sledge

lonesome Cowboy
#36
Ich schätze mal die machen sich gar nicht die Mühe mit einem Koordinatensystem zu arbeiten sondern rechnen irgend eine Konstante auf das PWM Signal des Magnetsensors und erzeugen damit die Pulsweite fürs PPM. Wenn dem so wäre, dann ist die tatsächliche Position, also die Abweichung zum Norden, doch nur ein offset das aufaddiert/subtrahiert wird oder bin ich gerade völlig auf dem Holzweg?
 

Rangarid

Erfahrener Benutzer
#37
Ich glaub so einfach ist das nicht, sonst würden die Servos voll rumspacken wenn du dich zu sehr drehst. Du musst halt schon Begrenzungen mit einbauen, aber im Grunde könnte man den Tracker so bauen wie du sagst...Man muss ihn nach Norden ausrichten und guckt sich einfach die Anziehungskräfte der einzelnen Achsen an. Wenn es an Achse Y weniger wird und an X mehr schwenkt Achse X Richtung Norden, man merkt also ne Drehung und könnte einfach was zum PWM addieren.
Aber die meisten Tracker haben ja noch eine Stellwegkonfiguration mit drin. Naja ich denke so groß wird der Aufwand nicht sein.

Ich hab schon ne Idee, die ich gern ausprobieren würde...Aber ich sag noch nichts dazu ;)
 

VikiN

Flying Wing Freak
#39
Rangarid hat gesagt.:
So...ich warte noch immer...Ich hasse ebay Shops, die sagen sie wären in DE, sind es aber nicht...
joa geht mir auch so...
trotzdem ein link dazu ?

hört sich alles sehr vielversprechend an was du da machst
*daumendrück*
 

Rangarid

Erfahrener Benutzer
#40
http://www.ebay.de/itm/HMC5883L-HMC5883-Triple-Axis-Magnetometer-Sensor-board-/260770948278

Hier hatte ich mir den bestellt...bin mal gespannt wo er nachher nun herkommt...
 
FPV1

Banggood

Oben Unten