-
künstlicher Horizont
Ich habe die letzten Tage mal versucht einen künstlichen Horizont zu programmieren.
Leider ohne Erfolg. Hab keine Ahnung wie ich das Bild um 2 Achsen drehen kann (Schräglage und Neigung).
Für die Schräglage könnte man das Bild ja einfach drehen , aber wie kann ich es dann bei Neigung zusätzlich verschieben ?
Ach ja , programmieren möchte ich das ganze in VB.
-
Die vertikale Skale ist i.d.R. linear. Das Bild wird dann erstmal vertikal verschoben und anschließend (um den neuen Mittelpunkt) gedreht. Nix mit 2 mal drehen oder so. Zumindest wäre es so wohl am einfachsten...
Hast du schon die passende Sensorik dafür?
-
Tony,
wie willst Du denn das Bild des künstlichen Horizonts erzeugen? Willst Du eine fertige Bitmap verwenden oder das Bild bei jeder Veränderung neu zeichnen?
Eine fertige Bitmap zu drehen und zu verschieben kostet viel Rechenzeit, weil Du bei jeder Veränderung jeden Bildpunkt einzeln neu ausrechnen musst. Wenn Du nur die Linien, Skalen und Zahlen darstellen willst, ist Neuzeichnen viel schneller.
Ciao,
mare_crisium
-
@dennisstrehl
Sensorik hab ich schon , ein 3 Achsen Accelerometer.
@mare_crisium
Ob ich das Bild drehe bzw verschiebe oder neu erzeuge ist mir eigentlich egal , was weniger Aufwand mit sich bringt.
-
Ich hab von VB an sich keine große Ahnung.
Nur vom Prinzip her:
Mal dir vielleicht erstmal einen einfachen künstlichen Horizont auf, der nur aus ein paar Linien besteht, der Einfachheit halber.
Mach dir dann eine Liste (Array?), die alle Linien enthält, die zu zeichnen sind, also mit Anfangs- und Endpunkten mit den jwlg. x- und y- Koordinaten.
Anschließend kannst du die Koordinaten im Array umrechnen. Für die Vertikale Verschiebung müssen nur alle x-Werte um einen bestimmten Betrag verändert werden.
Die Drehung wird etwas schwieriger, ich werd das aus Zeitgründen hier nicht ausführlich ausführen. http://de.wikipedia.org/wiki/Rotation_(Mathematik)#Rotation_in_kartesischen_Koo rdinaten könnte hilfreich sein, aber wahrscheinlich ist dir dasschon wieder zu kompliziert?
Man könnte auch die x-y-Werte in Polarkoordinaten umwandeln, dann ist die Drehung nicht mehr so kompliziert, anschließend in x-y-Werte zurücktransformieren.
Anschließend müsste die grafische Ausgabe folgen. Wie das in VB funktioneirt kann ich dir nicht sagen.
Ich hoffe du willst mit den Beschleunigungssensoren nicht in einem Flugzeug oder anderen 6DOF-Objekten die Lage messen. Das funktioniert nicht. Wenn du das willst, such mal nach "IMU", "INS", "Inertiales Navigationssystem", bei Google und im Forum...
Gruß
-
@dennisstrehl
ja, genauso so geht's.
@tony,
im pdf-Anhang ist genauer beschrieben, was dennisstrehl meint. In der Tabellenkalkulation ist das Beispiel aus dem Text zum 'Rumspielen nochmal dargestellt (wie immer bei mir: Hellgelb unterlegte Felder können gefahrlos verändert werden, alle anderen lieber nicht!).
Ich fürchte, VB ist für so eine Aufgabe zu langsam und zu umständlich. Ich programmiere solche Sachen in Delphi oder Free Pascal; mit C++ geht's aber auch. Vielleicht unterschätze ich VB aber auch nur ;-) !
Ciao,
mare_crisium
Edit: Anhänge gelöscht wg. Upload-Quota
-
Ich hatte eigentlich vor den Horizont aus einzelnen Images zusammen zu setzen und dieses dann in VB entsprechend zu drehen.
Werde aber die andere Methode mal versuchen umzusetzen, eventuell geht das ja besser.
-
Guten morgen,
ist so etwas gemeint?
http://www.youtube.com/watch?v=eHUivDM77gg
VB ist in keinster Weise dafür zu langsam. Das ganze Cockpit ist in VB6 programmiert und funktioniert hervorragend.
Peter
-
@ holzi,
das sieht aber schick aus :-) ! Ist das das Cockpit Deines Bodeneffekt-Fahrzeugs?
Du hast recht, offensichtlich ist VB nicht zu langsam. Ich nehme an, Du zeichnest die beweglichen Elemente bei jedem neuen Messwert neu?
Ciao,
mare_crisium
-
Hi,
genau das ist das Cockpit meines Groundeffect-Fahrzeuges. Ich setze ein Shape in die Ausgangsposition 0. Die Daten kommen per RS232 vom Neigungssensor ins Programm. Ich lege die Lage des Shapes ensprechend jeden Wertes neu an. Am Anfang dachte ich auch nicht, dass das so gut funktioniert. Ich habe da auch an Performance-Probleme gedacht. Aber wie jeder sehen kann, funktioniert das hervorragend. Dazu kommt ja nun auch noch, dass gleichzeitig der Kompass, Nick und Roll und dann noch das Radar hinzukommt. Der Rechner ist jedenfalls nicht überfordert. Es klappt.
Peter