Auf libSDL basierende kleine GCS für Raspberry-Pi

meister

Erfahrener Benutzer
#1
Hi,
programmiere gerade ein GCS auf Basis von libSDL,
alles Lowlevel, damit das Ganze auf einem Raspberry pi (oder anderen Embedded-Systemen) läuft.

Geplante Features:
  • MavLink v1.0 Support
  • Bearbeiten von MavLink-Variablen (z.B. PID-Werte)
  • Google-Maps und OpenStreetmap (mit Offline-Support !)
  • Planen von Missionen
  • Sprachausgabe
  • Antennen-Tracking (mit GPS und IMU in der Ground-Station)
  • Linux-Only :D
  • wenige abhängigkeiten (sdl, curl)



Das Ganze (Rasp. & Soft) soll dann zusammen mit einem RC-Sender in ein gemeinsammes Gehäuse wandern.
Mit rein kommt auch noch ein 7Zoll TFT, 433Mhz-3DR-Telemetrie und 5.8Ghz-Video.

Hätte das Video-Bild am liebsten hinter dem HUD, aber das werde ich wohl so schnell nicht hin bekommen, daher erstmal nur umschaltbar (Live-Video/GCS).

MavLink, Maps, Sprachausgabe und HUD funktionieren schon, die Missions-Planung ist in Arbeit und das GUI wird noch überarbeitet.

Für das Antennen-Tracking hängt am Raspberry über SPI ein Arduino-Mini der die Ansteurung der Servos übernimmt,
die Daten dazu liefert die GCS.

Die IMU für das GCS/Tracking muss ich mir noch Überlegen, entweder per I2C (MPU6050) oder mit meiner alten Razor-9DOF über Seriell, das GPS hängt am internen Seriell-Port des Raspberry's

MavLink-Variablen/PID-Werte will ich mir auf Hardware-Regler legen können (Encoder) damit man alles schnell, einfach und präzise einstellen kann.

Hoffe das Gehäuse wird nicht zu globig mit dem 7Zoll-TFT und dem Antennen-Tracking, aber ich versuch mein Bestes :eek:

Getestet wird mit Autoquad und später auch mit der APM2.

Code und Schaltpläne werde ich als OpenSource frei geben!




Gruß,
Olli
 

meister

Erfahrener Benutzer
#6
kleines Update,
Arduino ist weg und durch einem vernünftigen STM32f4 ersetzt worden (http://www.watterott.com/de/STM32F4Discovery).
So läuft dann auch gleich noch die komplette RC-Software mit auf dem STM32-Board und ich kann 2 Projekte miteinander kombinieren (http://fpv-community.de/entry.php?214-Neues-RC-Sender-Konzept-(RcFlow)).

Per Mavlink kann ich nun alle Werte anfordern und vergessene/verlorene werden auch noch nachgezogen (bei Verbindungs-Proplemen).

Param-Files vom QGroundControl können eingelesen werden und komplett ans Autoquad übertragen werden (damit hatte ich Probleme im QGroundControl).

Lokale GPS-Daten werden gelesen und das Icon in der MAP entsprechend Positioniert.

...


Es wird :)

Gruß,
Olli

PS: Was mich stört ist die Größe des STM32f4-Boards (einen Tick größer als der Rasp.),
aber das Arduino-Board ist mir zu klein und zu schwach (ich brauch mehr Seriell-Ports und Leistung)

EDIT: ich will die Oberfläche in einzelne Screens aufteilen, damit es auch auf kleinen Displays nutzbar bleibt
 

meister

Erfahrener Benutzer
#7
So, nach viel hin und her:
libSDL ist zu Lahm auf der Hardware,
OpenGL (OldScoolStyle / glBegin..) lief nicht,
OpenCV geht mag ich aber nicht,
daher hab ich nun alles auf OpenGL-ES umgebaut.

Hab erstmal wieder eien Arduino-ProMini über I2C angeschlossen um ein paar Steuerelemente zu bekommen (Dreh-Encoder/Taster).

Hir mal ein erstes Video (Sorry, schlechte Qualität):

http://www.youtube.com/watch?v=7aAYQ9t8W90

Gruß,
Olli

PS: Das Gehäuse ist nur ein umgebautes Test-Gehäuse, wird noch :)
 

meister

Erfahrener Benutzer
#11
Erste RaspberryPI-GCS Test-Version, zum mal rein schauen:

Debian-Wheezy(RaspberryPI / armv6l):
http://www.multixmedia.org/test/Auto...gcs_0.01-1.deb


Hoffe es fehlen keine abhängigkeiten.
Serial-Port steht auf: /dev/ttyUSB0 @ 57600Baud
Kann aber über das Setup-File: /usr/share/gles-gcs/setup.cfg
umgestellt werden:
Code:
mavlink_port /dev/ttyUSB0
mavlink_baud 57600
Hier noch meine /boot/config.txt einstellungen, falls es probleme mit dem Display gibt:
Code:
hdmi_safe=0
disable_overscan=1
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0
hdmi_group=2
hdmi_mode=16
arm_freq=700
core_freq=250
sdram_freq=400
over_voltage=0
 

meister

Erfahrener Benutzer
#12
Hi,
Das GCS kann nun auch mit MultiWii2.1 umgehen (zumindest das HUD, PID und WP kommt noch).
Und als kleines RC-Sender Backend hab ich nun einen LPC1343 genommen,
da der so schön klein war und noch bei mir rum flog (http://www.watterott.com/de/LPC1343-QuickStart-Board).
Die Konfiguration des RC-Senders läuft ebenfalls über das GCS-Frontend (Dualrate, Expo, Rev, ...).
Das LPC-Board bietet 8ADC's, 6 Schalter und 2 Dreh-Encoder sowie ein I2C-Bus für erweiterungen.

Die GCS-Software habe ich auch noch auf 'echtes' OpenGL portiert damit es auf normalen Linux-PC's mit Hardware-Beschleunigung läuft.

Die Bedienung läuft nun komplett über Touchscreen oder Maus.

Gruß,
Olli
 
#14
Wann gehts hier weiter, ich will den PI in der GS haben (Arduplane jedoch). ;)
 

meister

Erfahrener Benutzer
#15
#17
Du trägst deinen Nick zu Recht. Echt gute Arbeit bisher. Wird es eine Möglichkeit geben, auch die Arduplane PIDs einzustellen? Die sind ja etwas anders, als Arducopter / AQ und MWii.

Ich möchte den PI nämlich auch in meiner GS haben, zum einstellen / Telemetrie verfolgen.
Dann brauch ich ja auchn GPS am Pi, damit die GCS weiss, wo die GS in Relation zum Flieger steht - und Internet, wegen der Karten....aaarrrggggg....das wird doch etwas schwieriger. Alles fetchen kann man ja auch nicht - leider bietet die APM GCS ja leider nur an, in bestimmten Zoomstufen zu fetchen, zum Offline Karten anschaun....
 

meister

Erfahrener Benutzer
#18
Hi,
GPS im GCS ist nicht umbedingt nötig, kann man auch per Hand setzen.
Maps kann man vorher runterladen, oder bessergesagt, geladene Maps bleiben gespeichert, allerdings hab ich keine Funktion um bestimmte bereiche in verschiedenen Zoom-Stufen vor zu laden, könnte ich aber noch einbauen.

Arduplane PIDs einzustellen geht denke ich mal, da diese Listen vom Controller runtergeladen werden und somit nichts fest vorgegeben ist.
MWI Pids funktionieren noch nicht, nur das HUD, kommt aber noch.

Gruß,
Olli
 
FPV1

Banggood

Oben Unten