FPV-Treff.de

Das unabhängige Forum von und für FPV-Piloten
Aktuelle Zeit: Di 12. Nov 2019, 22:59

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: LUA-Scripting in Arduplane
BeitragVerfasst: So 20. Okt 2019, 10:47 
Offline
Forengott
Benutzeravatar

Registriert: Mi 13. Jan 2016, 19:48
Beiträge: 1540
Wohnort: Rheinland
Name: Rolf
Angesichts der Möglichkeiten, welche sich durch LUA-Scripts auf dem Flightcontroller auf tun und weil die Scriptentwicklung bei Arduplane gerade seinen Kinderschuhen entwächst, habe ich schon mal einen Thread dazu aufgemacht und ein Versuchsscript laufen lassen.

Das Wiki ist noch sehr unvollständig und versteckt: http://ardupilot.org/dev/docs/lua-scripts.html
LUA Scripting geht noch nicht in einer finalen Version. Zum herumprobieren habe ich daher eine Master-Version auf einen Matek F-765 Wing geflasht.

Das LUA Scripting hat eine Einschränkung: Es läuft leider nur auf Boards mit mindestens 2 MB ! Ein nicht all zu alter Pixhawk mit bereits 2 MB müsste reichen, ein F-405 Wing hat aber leider nur 1 MB. Wen man sich unsicher ist, einfach nachschauen, ob der Parameter SCR_ENABLE vorhanden ist. Falls ja, SCR_ENABLE auf 1 setzen und neu booten. Nach dem Booten findet sich dann der Parameter SCR_HEAP_SIZE mit dem für die Ausführung des/der Scripts reservierten Speicherplatz. Der voreingestellte Wert von 32768 war bei mir zu gering, um das Minibeispielscript weiter unten laufen zu lassen. Es funktionierte erst, nachdem die HEAP_SIZE auf 131072 (1024x128) vergrößert war.

Als "Proof Of Concept" habe ich ein Mini Script erstellt, dass sinnfrei alle 10 Sekunden den Rollwinkel ausliest und davon abhängig ein Servo verstellt und eine Textmeldung mit hochzählender Variable an die GCS schickt. Mir kam es im Beispiel darauf an, grundsätzlich einen Wert aus dem Flightsystem auslesen zu können, eine Ausgabe an einem Servo zu erzeugen und eine Nachricht zum Piloten zu schicken. Die Nachricht erscheint ebenfalls im OSD und/oder im Yapuu-Script auf einer Taranis/Horus - eine eigentliche GCS ist nicht notwendig.

Dateianhang:
tfpv.jpg
tfpv.jpg [ 200.62 KiB | 212-mal betrachtet ]


Arduplane erwarte Scripts (*.lua) auf der SD-Karte im APM-Ordner in einem Unterordner namens "scripts". Servos werden angesteuert, indem man dem gewünschten Servoausgang als Funktion ein Script zuweist (ServoX_Function = 94 bis 109) und im Script "servo.set_output_pwm(94, 1500)" zB 94 die Servofunktion des ausgewählten Servos bezeichnet. So können von einem Script mehrere Servos angesprochen oder mehrere Scripts ihre eigenen Servos ansprechen.

Beispielscript:

Code:
local score = 0
function update ()
    local current_roll = ahrs:get_roll() -- fetch the current roll
    servo.set_output_pwm(94, 1500 + (100 * current_roll ))
    score = score + 1
    gcs:send_text(1, string.format("Got a point! %d total", score))
    return update, 10000
end
return update, 10000


Eine Übersicht über die derzeit möglichen Zugriffe auf die Flightcontroller-Daten:
https://github.com/ArduPilot/ardupilot/ ... dings.desc

LG Rolf


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: LUA-Scripting in Arduplane
BeitragVerfasst: Mo 28. Okt 2019, 07:48 
Offline
Forengott
Benutzeravatar

Registriert: Mi 13. Jan 2016, 19:48
Beiträge: 1540
Wohnort: Rheinland
Name: Rolf
Gerade ist die stable 4.0.0 plane und vorgestern die Copter-4.0.0-beta1 rausgekommen.
Beide beherrschen Onboard-Scripting. Man kann die Scripts sehr gut in der Mission-Planner Simulation prüfen, bevor man sie tatsächlich testet:

Im MP die Simulation aufrufen:
Dateianhang:
a1.JPG
a1.JPG [ 44.42 KiB | 129-mal betrachtet ]


Will man nicht in Australien fliegen, verschiebt man den HomePoint an einen anderen gewünschten Startort
Dateianhang:
a2.JPG
a2.JPG [ 85.52 KiB | 129-mal betrachtet ]


Als Flugzeug wähle ich meist einen Quadplane aus
Dateianhang:
a3.JPG
a3.JPG [ 51.29 KiB | 129-mal betrachtet ]


Dann auf das Flugzeugsymbol klicken:
Dateianhang:
a3a.JPG
a3a.JPG [ 51.84 KiB | 129-mal betrachtet ]


Das SITL-Programm wird dann aus dem Internet heruntergeladen und danach startet das Simulationsprogramm im Hintergrund , der MissionPlanner verbindet sich automatisch über TCP mit dem Simulationsprogramm.
Dateianhang:
a4.JPG
a4.JPG [ 203.57 KiB | 129-mal betrachtet ]


Man kann im MP am Simulationsflieger Parameter ändern oder Wegpunkte erstellen etc. Für das LUA-Scripting muss SCR_ENABLE eingeschaltet werden. Die geänderten Parameter bleiben auf dem Rechner gespeichert und sind beim nächsten Starten der Simulation unverändert.

Das LUA Script gehört in einen neu zu erstellenden Ordner "scripts" im Ordner ".../sitl/quadplane" des MP Dokumenteordners, normalerweise dort:
Dateianhang:
a7.JPG
a7.JPG [ 32.94 KiB | 129-mal betrachtet ]

Dateianhang:
a8.JPG
a8.JPG [ 23.35 KiB | 129-mal betrachtet ]


Ich habe ein Sript erstellt, was mir endlich meldet, wenn das AHRS System kalibriert ist und man armen kann. Nach dem Armen verstummen die Meldungen:

Code:
local score = 0
function update ()
   local fertig = ahrs:prearm_healthy()
   local res = arming:is_armed()
   if tostring(res) == "false" then
      score = score + 1
      if fertig then
         gcs:send_text(1, string.format("AHRS ok"))
      else
         gcs:send_text(1, string.format("AHRS noch NICHT fertig (%d)", score))
      end
   end
    return update, 10000
end
return update, 10000


LG Rolf


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Impressum und Kontakt

Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de