0. Allemeine Hinweise Bevor Mission Cockpit verwendet werden kann müssen einige Vorbereitungen gewissenhaft durchgeführt werden. Das kann einige Zeit in Anspruch nehmen. Nehmt euch die Zeit oder lasst es gleich bleiben ;-) Aber glaubt mir, der Zeitaufwand ist es wert! Also bitte die folgenden Punkte unbedingt durchlesen, verstehen und gewissenhaft umsetzen! Beachte die Regeln für den Betrieb von ferngesteuerten Flugmodellen! 1. Update von früheren Programm-Versionen Einstellungen werden in der Datei mkcockpit.xml gespeichert. Mit neueren Programmversionen sind neue Konfigurationseinträge dazugekommen, für die es momentan keine Default-Einstellungen gibt, die aber vom Programm unbedingt benötigt werden. Deswegen muss eine vorhandene mkcockpit.xml mit der bei der jeweiligen Programmversion beiliegenden mkcockpit.xml manuell gemerged werden. Das kann mit einem beliebigen Editor erfolgen, komfortabel geht es mit WinMerge (www.winmerge.org). 2. Perl Interpreter Mission Cockpit ist in der Scriptsprache Perl/Tk programmiert. Zur Ausführung des Programms wird Perl Version 5.10.0 benoetigt. Mit Version 5.8. hat das Packet "thread::Queue" nicht richtig funktioniert. Mission Cockpit ist nicht als EXE-File verfuegbar. Den Perl Interpreter fuer Windows bekommt man z.B. hier: http://www.activestate.com/activeperl Mission Cockpit benoetigt folgende Perl-Packete: Tk Tk::Balloon Tk::Dialog Tk::Notebook; Math::Trig XML::Simple # http://search.cpan.org/dist/XML-Simple-2.18 Geo::Ellipsoid # http://search.cpan.org/dist/Geo-Ellipsoid-1.12 threads # http://search.cpan.org/~jdhedden/threads-1.72 threads::shared # http://search.cpan.org/~jdhedden/threads-shared-1.28 Thread::Queue # http://search.cpan.org/dist/Thread-Queue-2.11 Time::HiRes # http://search.cpan.org/~jhi/Time-HiRes-1.9719 Win32::SerialPort # http://search.cpan.org/dist/Win32-SerialPort Die Packete liegen, bis auf Tk, in der Mission Cockpit Umgebung im Verzeichnis "perl" Sie werden verwendet, falls sie im standard Perl-Verzeichnis nicht existieren. Die Packete kann man sich alternativ auch aus dem CPAN beschaffen. Tk kann man mit dem Perl-Packet-Manager PPM.EXE installieren, z.B. "ppm install Tk" 3. Unterstuetzte Betriebssysteme Das Programm wurde unter Windows Vista und Windows XP entwickelt. Bis auf das verwendete Packet "Win32::SerialPort" sollte das Mission Cockpit auch unter Linux funktionieren. Fuer Linux gibt es das Packet "Device::Serialport" mit der gleichen Schnittstelle. mkcomm.pl und track.pl sind fuer "Device::Serialport" vorbereitet, sollte theoretisch auch unter Linux laufen. Ausprobiert habe ich das allerdings nicht!! 4. Programmstart mkcockpit.pl bzw. perl mkcockpit.pl 5. Voraussetzung Flight-Ctr und Navi-Ctrl Entwickelt wurde mit FC 0.73d und NC 0.15c NC-Versionen kleiner als 0.15c funktionieren nicht, wegen der ständig inkompatiblen Änderungen des Debug- und Navidata-Datensatzes der NC. 6. Karte fuer das Flugfeld definieren Die Karte fuer das Flugfeld muss als GIF-Datei vorliegen. Sie kann eine beliebige Größe haben. Die Karten werden im Verzeichnis "map" abgelegt. Die Karte kann eine beliebige Ausrichtung haben. Norden muss nicht oben sein. Als Quelle eignet sich z.B. ein Screenschot von Google Earth. In map/map.pl koennen ein oder mehrere Karten definiert werden. Die Auswahl der gewuenschten Karte erfolgt im Konfigurations-Dialog, Reiter "Karte" Fuer jede Karte wird in map.pl eine Sektion angelegt, z.B.: Hemhofen => { 'Name' => "Hemhofen", 'Size_X' => '800', 'Size_Y' => '600', 'File' => 'hemhofen-800.gif', 'P1_x' => '66', # calibration P1, P2 'P1_y' => '62', 'P2_x' => '778', 'P2_y' => '488', 'P1_Lat' => '49.685333', 'P1_Lon' => '10.950134', 'P2_Lat' => '49.682949', 'P2_Lon' => '10.944580', 'Offset_x' => 5, # Optional Pixel offset MK to right 'Offset_y' => 10, # Optional pixel offset MK to top 'Border' => [ 555, 430, # airfield border 516, 555, 258, 555, 100, 300, 580, 260, 530, 94, 627, 130, 735, 300, 680, 400, 757, 470, 720, 515, 575, 420, ], }, Unbedingt auf die richtige Syntax achten (Kommata, geschweifte Klammern, eckige Klammern), sonst gibt es Syntax-Fehler beim Programmstart. 'Border' ist ein Polygon, der als Flugfeldbegrenzung auf der Karte angezeigt wird. Die Koordinaten sind Pixel-Koordinaten bezogen auf das GIF-Hintergrundbild. Der Ursprung 0/0 ist links oben. Der Border-Polygon kann auch komplett weggelassen werden. Später möchte ich noch eine Logik programmieren, die das Setzen der Wegpunkte nur innerhalb des Polygons erlaubt. 7. Kalibirieren der Karte Die Karte muss gewissenhaft kalibiriert werden! Dazu werden bei der zu kalibrierenden Karte in "map/map.pl" fuer zwei markante Punkte P1, P2 die Pixel-Koordinaten und die dazugehoerigen GPS-Koordinaten eingetragen. P1 und P2 sollten moeglichst weit auseinader liegen, z.B. P1 links oben und P2 rechts unten. Man kann zunaechst beliebige Werte eintragen und dann das Programm starten. Die Pixel-Koordinaten werden in der Statuszeile angezeigt, wenn man mit der linken Maustaste auf die Karte klickt. Die entsprechnden GPS-Koordinaten kann man z.B. im Google Earth ermitteln. Mit 'Offset_x' und 'Offset_y' kann man die Kalibrierung korrigieren, d.h. den MK auf der Karte pixelweise verschieben. Anmerkung: Da ist scheinbar ein kleiner Bug in der Kalibrierung. Der Punkt P1 muss oberhalb und links von P2 liegen. 8. Daten-Link zum MK Das Programm benoetigt unbedingt einen stabilen Daten-Link zum Debug-Port der Navi-Ctrl. Das WI.232 Modul hat sich bei mir auch bei grosser Entfernung (250 m) als zuverlaessig erwiesen. Kommuniziert wird ausschliesslich mit der Navi-Ctrl. Es werden OSD- und Debug-Datensatz von der NC, Target- und Waypoint-Datensatz zur NC verwendet. 9. Konfiguration Die Konfiguration wird in mkcockpit.xml gespeichert. Konfigurieren kann man im Mission Cockpit, Menu "Datei -> Einstellungen". ALternativ kann man die XML-Datei auch direkt editieren. Bei Konfiguration im Mission Cockpit ist zu beachten, dass die meisten Einstellungen erst bei Programm-Neustart wirksam werden! Um einen guten Kontrast zwischen der Karte und den auf die Karte gezeichneten Objekte zu erhalten kann es erforderlich sein, die Farbe der Objekte umzudefinieren. Die Farben koennen im Konfigurations-Dialog eingestellt werden. Gueltige Werte sind: - Namen, z.B. red, green, blue, ... - RGB Hex-Werte, z.B. #ff0000 (= rot) 10. Waypoint-Fliegen - Klassische Art von der NC gesteuert Waypoints werden per rechter Maustaste gesetzt und sofort an den MK uebertragen. Waypoints kann man per Drag/Drop mit der linken Maustaste verschieben. Die Waypoint-Verbindungslinien werden dann rot angezeigt. Das bedeutet, dass die angezeigten Wegpunkte nicht mehr mit den bereits zum MK uebertragenen Wegpunkten uebereistimmen. Die Waypoints muessen dann per rechtem Maustaste-Menue "Alle Wegpunkte erneut senden" an den MK uebertragen werden. Der MK beginnt die Waypoints abzufliegen, wenn per RC-Fernsteuerung der "Coming Home" Modus aktiviert wird. Nach dem letzten Wegpunkt fliegt der MK automatisch zur Home-Position zurueck. Die Navi-Ctrl kann max. 20 Wegpunkte aufnehmen. Das Wegpunkt-Fliegen kann unterbrochen werden, indem per RC von "Coming Home" auf "Position Hold" geschaltet wird. Wenn dann wieder auf Coming Home" geschaltet wird faengt der MK wieder von vorne mit dem ersten Waypoint an. 11. Waypoint Player - Die innovative Art vom Mission Cockpit gesteuert Das klassische vom NC gesteuerte Waypoint-Fliegen ist relativ unflexibel und wird relativ schnell langweilig. Deswegen habe ich einen vom Mission Cockpit gesteuerten Waypoint-Player implementiert. Der Waypoint-Player sendet ständig Target-Datensätze an den MK, ähnlich wie beim Follow-Me oder Follow-Bär. Damit hat man wesentlich mehr Möglichkeiten: - Beliebig viele Waypoints - Die Steuerung des Wp-Players erfolgt wie bei einem CD-Player: > Starten des Waypoint-Players Key: Leertaste || Pause - Der MK bleibt an der momentanen Position stehen. Mit ">" kann der WP-Flug fortgesetzt werden Key: Leertaste >> Anfliegen des nächsten Wegpunktes Key: n << Anfliegen des vorherigen Wegpunktes Key: p |<< Anfliegen des ersten Wegpunktes Key: f >>| Anfliegen des letzten Wegpunktes Key: l Home Anfliegen der Home-Position Key: h Stop Beenden des Waypoint-Players. Der klassische Waypoint-Modus wird wieder aktiviert. Key: s Die Steuerung erfolgt entweder mit: - Maus und die am unteren Bildschirmrand eingeblendeten Symbole - Tastatur - Tastenbelegung siehe oben - Einer programmierbaren PC-Fernbedienung, die Tastatureingaben simuliert. Ich verwende z.B. eine X10-Fernbedienung, die oft Medion-PCs zur Steuerung des MediaCenter beiliegt, in Verbindung mit EventGhost (www.eventghost.org). Zum Fliegen mit dem Waypoint-Player muss sich der MK im "Coming Home"-Modus befinden, so wie auch beim normalen WP-Fliegen, und zusätzlich mit ">" gestartet werden. Der Waypoint-Player arbeitet, wenn in der Modus-Anzeige "Play" oder "Pause" angezeigt wird. Der Waypoint-Player kann bereits im PH-Modus mit ">" gestartet werden. Nach Umschalten auf CH fängt der Waypoint-Player an die Zielkoordinaten zu senden und abzufliegen. Da der Waypoint-Player immer nur den nächsten Waypoint an den MK überträgt kann die Waypoint-Liste noch geändert werden oder neue Waypoints hinzugefügt werden, während der MK bereits die Liste abfliegt. Eine erneute Übertragung der WP-Liste an den MK wie beim "normalen" WP-Fliegen ist nicht erforderlich. Ärgerlich ist, dass der MK bei Empfang eines Target-Datensatzes kurz piept. Da die Target-Datensätze 2x pro Sekunde übertragen werden ist das sehr nervig. Ich habe deswegen den Piepser mit einem Stück Klebeband abgeklebt. Er ist dadurch im Flug zwar nicht mehr zu höhren, aber eigentlich braucht man das auch nicht, weil die relevanten Daten im Mission Cockpit angezeigt werden. Da der MK im Waypoint-Player Modus die Zielkoordinaten ständig neu gesendet bekommt ist eine stabile Datenübertragung umso wichtiger! Falls der Daten-Link doch einmal versagen sollte kehrt der MK nach 60 sec Holdtime automatiosch zur Home-Position zurück. Der Waypoint-Player verwendet die gleichen Waypoint-Listen wie beim normalen WP-Fliegen. 12. Wegpunkte von Datei Laden/Speichern Wegpunkte können als XML-Datei gespeichert und wieder geladen werden. Die x/y Pixelkoordinaten werden nun relativ bezogen auf die Größe des Bildes als Fließkommazahlen im Bereich 0..1 gespeichert. Damit ist es möglich, eine Waypoint-Liste auch auf einer größeren oder kleineren Karte zu laden. Beim Laden werden die GPS-Koordinaten für die aktuelle Karte aus den x/y Pixelkoordinaten neu berechnet. Somit kann man die für eine Karte erstellten Wegpunkte auch auf einer anderen Karte laden, ohne die GPS-Koordinaten der Wegpunkte anpassen zu müssen. 13. Follow "Bär" Das "Bärchen" kann per Drag/Drop mit der linken Maustaste auf der Karte rumgeschoben werden. Der MK fliegt hinterher, wenn er per RC in den "Coming-Home" Modus geschaltet ist. Solange der Bär verschoben wird, wird ein mal pro Sekunde ein Target-Datensatz zum MK geschickt. 14. Tracking Antenne Im Mission Cockpit ist die Ansteuerung fuer eine horizontale 180 Grad Antennennachfuehrung implementiert. Damit kann z.B. die Richtantenne einer Video-Uebertragungsstecke nachgefuehrt werden. Dazu wird benoetigt: - Pololu Mikro-Servoboard, z.B. http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=65&products_id=118 Das Board wird an eine serielle Schnittstelle am PC angeschlossen. - Ein Servo, welches mechanisch einen 180 Grad Drehwinkel zulaesst, z.B. MPX Polo Digi 4 / Hitec HS85 oder aehnlich. Das Servo wird ausserhalb der ueblichen Impulslängen angesteuert, um den 180 Grad Drehwinkel zu erreichen. Momentan ist lediglich eine horizontale Nachfuehrung implementiert. Die Tracking-Antenne wird im Konfgurations-Dialog, Reiter "Tracking Antenne", aktiviert: (Yes/No). Bei aktivierter Tracking-Antenne wird links unten ein Richtungsanzeiger der Antenne eingeblendet. Mission Cockpit benötigt die GPS-Koordinaten und Kompass-Richtung fuer die Mittelstellung der Antenne. Dazu stellt man den MK vor die Antenne, der MK zeigt dabei in die gleiche Richtung wie die Antenne. Beim Start der MK-Motore werden die GPS- und Kompass-Daten vom MK als Koordinaten der Groundstation übernommen. 15. Hinweise zum Waypoint Fliegen Der MK muss im Free-Modus einwandfrei fliegen. Bei wenig Wind und eingeschaltetem Höhensensor darf der MK nur ganz wenig abdriften. Der MK muss im Free-Modus sicher beherrscht werden, bevor man sich ans WP-Fliegen wagt. Der MK fliegt zwar (fast) von selber, aber in brenzligen Situationen muss man sicher eingreifen können und den MK evtl. auch aus großen Entfernungen sicher zurückholen können. Meine Erfahrung zeigt, dass 6 Satelliten für einen stabilen PositionHold oder Waypoint-Flug nicht ausreichen. Es sollten schon 8 oder mehr Satelliten empfangen werden. 16. Mikrokopter Forum http://forum.mikrokopter.de/topic-8404.html Feedback könnt ihr gerne ins Form schreiben. Viel Spass mit dem Mission Cockpit Rainer