APM Arducopter Tuning Guide - Teil 3

#1
**** UPDATE 28.7.2013: grafische Verdeutlichung der magnetischen Einflüsse durch Ströme ****

Tipps zum Aufbau von APM-basierten Coptern finden sich in APM Arducopter Tuning Guide - Teil 1
Das Einstellen der PID-Werte beschreibt APM Arducopter Tuning Guide - Teil 2
In diesem Teil geht es um das Trimmen, sowie den Alt-Hold und Loiter-Mode.

[size=+1]Trimmen des Copters[/size]

Jetzt, da die PID-Regelung soweit eingestellt ist, kann man noch eine Trimmung des Copters vornehmen. Details dazu gibts im Arducopter Wiki. Ich persönlich bevorzuge die AutoTrim-Variante, da man hierzu nichts extra programmieren/konfigurieren muß.
Einfach einen windstillen Ort suchen, den Copter 15sec lang armen, die blaue, rote und gelbe LED blinken abwechselnd.
Jetzt für etwa 30sek lang versuchen möglichst an einer Stelle zu schweben.
Landen, Gas auf Null und gut ist.
Ab sofort verwendet Arducopter die Korrektur-Werte entsprechend der gerade eben ermittelten Werte.

[size=+1]ALT-HOLD Höhe halten - Fein-Einstellen[/size]

Zuerst mal sollte man sicherstellen, daß INS_MPU6K_FILTER=20 ist (findet man unter Advanced Params, Adv. Parameter List). Der Default-Wert hat sich in den letzten Copterversionen entsprechend geändert.



Weiters sind
für ALT_HOLD hauptsächlich 2 Werte interessant; Zum einen THR_MID (ebenfalls in der Adv. Parameter List zu finden) , zum anderen "Höhe Halten" P.

Zum Testen legt man sich "Altitude Hold kP" wieder auf die Ch6. Opt.
Wertebereich ca. 50% +/- vom Default.
Jetzt den Copter auf sichere Höhe bringen, für ca. 20sec schweben (so lernt das APM das Schwebegas) und dann aktiviert man vorsichtig den ALT_HOLD mode. Sofern der THR_MID Wert passt kann man nun mit dem Throttle-Stick ausserhalb der Dead-Zone im Mittelbereich nach oben und unten korrigieren und der Copter steigt oder sinkt.

Sollte sich hier nichts verändern und der Copter steigt oder sinkt unaufhörlich, sollte man sofort wieder in den STABILIZE-Mode zurückwechseln und entstprechend wieder eine stabile Flughöhe einnehmen und sicher landen.
In diesem Fall liegt der THR_MID Wert zu niedrig (Copter sinkt unaufhörlich), bzw. zu hoch (Copter steigt andauernd).
Default ist hier ein Wert von 500.
Den genauen Wert kann man mittels RAW-Sensor-Logs ermitteln:
Randy Mackay zeigt in diesem Video einige recht gute Hinweise und erste Schritte für das Tuning sowie log-Analyse der Sensor-Daten um beispielsweise einen Hinweis auf Vibrationen zu bekommen, oder auch um das Schwebegas zu ermitteln.
Grundsätzlich aktiviert man die Raw-Sensor-Logs, schwebt dann ein wenig herum, landet und liest dann aus den Logs den Throttle-Wert aus, den man während des Schwebens hatte.
Stimmt dann natürlich nur für das aktuelle Gewicht des Copters.
Mit anderen Akkus/Kameras/Gimbals/... ändert sich das Schwebegas (so wie vermutlich die komplette PID-Einstellung)

Hat man einen passenden THR_MID gefunden, kommt es max. zu einem kurzen Ruck sobald man ALT_HOLD aktiviert und der Copter sollte soweit die Höhe halten.
Mittels Throttle-Stick kann man nun den Copter langsam steigen oder sinken lassen, während der mittlere Gasbereich - relativ großzügig gehalten - zu einer fixen Höhe führt.

Kommt es zu einem YoYo-Effekt, so kann man diesen meist durch Reduzierung des Altitute Hold P Wertes in den Griff bekommen. Dieser Wert muß wie auch alle anderen PID-Werte über den Kanal 6 ermittelt werden. Wie immer führt ein zu hoher P-Wert zu einem Übersteuern der Regelung und somit zu einem Aufschwingen.


Kommt man dennoch zu keinem stabilen Schwebezustand hat man vermutlich Probleme mit Vibrationen am APM. Details zur bestmöglichen Montage habe ich im Teil 1 des APM Tuning Guide beschrieben.

[size=+1]LOITER:[/size]

Hat man erst mal ALT_HOLD eingestellt, kann man sich an LOITER heranwagen. Loiter baut grundsätzlich auf ALT_HOLD auf, nimmt dann jedoch noch ACC_X, ACC_Y, Compass sowie GPS zur Hilfe.

Ein stabiler Loiter-Mode erfordert ein möglichst sauberes Magnetfeld.
Hat man Störeinflüsse durch die Motor-Regler-Zuleitungen kann der Copter die Himmelsrichtung im Schwebezustand kaum feststellen und korrigierende Manöver durch die Regelung enden dann meistens in einem kreisförmigen Flug (Toilet Bowl Effekt), anstatt gezielter Nick/Roll oder Yaw-Korrekturen und einem stabil in der Luft stehenden Copter.

Obwohl mit Arducopter 3.x der Loiter-Mode immens verbessert wurde, werden manche Piloten paradoxerweise im ersten Schritt - oberflächlich betrachtet - sogar feststellen, daß Loiter auf ihren Coptern mit 3.x schlechter funktioniert als zuvor.
Das liegt daran, daß bei Arducopter 3.x der magnetische Kompass im Vergleich zu früheren Versionen eine weit wichtigere Rolle spielt und viel sensibler auf Störeinflüsse reagiert als das vorher der Fall war.
Man kann schon im Vorfeld ohne noch im Loiter-Mode zu fliegen schon mal einige Daten auswerten, die einen guten Hinweis geben, ob der Kompass ausreichend genaue Daten liefert.

Compass Offset
Beim manuellen Kalibrieren vom Kompass wird die Beeinflussung des Copter-Rahmens in den unterschiedlichen Bewegungs-Achsen ermittelt.
Werte zwischen -150 und +150 sind OK, je näher bei 0 besser.
Hierbei handelt es sich um eine mehr oder weniger statische Verschiebung/Beeinflussung der Magnet-Werte.
Bei höheren Werten ist ein Höhersetzen des APMs bzw. ein externer Kompass ratsam (siehe unten)

magfield vs. throttle/current
Durch Ströme welche für den Antrieb der Motoren benötigt werden entstehen ebenfalls Magnetfelder. D.h. Akku, Zuleitung, Stromverteiler, ESCs, Motoren verursachen im Betrieb zusätzliche Störeinflüsse, die sich wiederum abhängig vom Strom der fließt verändern.
Man kann sich über ein einfaches tlog (Telemetrie-Log) die Entwicklung des magfield-Wertes gegenüber dem Throttle ansehen. Hier bekommt man rasch einen Eindruck, wie stark sich das Magnetfeld in Abhängigkeit der Ströme ändert.

Zur Vedeutlichung der Situation, zuerst ein Diagramm, bei dem man sehr stark die Beeinflussung des Magnetfeldes durch den Throttle-Input sieht:


Durch Einsatz eines um 30mm höher gesetzten externen Kompass für etwa 3 EUR sieht die Sache schon bedeutend besser aus:



compassmot-Kompensation
die im vorigen Punkt erwähnte Beeinflussung des Magnetfelds durch Ströme im Betrieb können - bis zu einem gewissen Grad - rechnerisch kompensiert werden.
Hierzu gibt es seit Arducopter 3.x die sogenannte compassmot-Kompensation.
Hat man einen Stromsensor wie z.B. den AttoPilot oder auch das 3DR Powermodule wird der Strom mit dem Magnetfeld verglichen. Ohne Stromsensor wird der Throttle-Wert dem Magnetfeld gegenübergestellt, was zwar ungenauer ist, aber dennoch gute Ergebnisse liefert.

Die notwendigen Werte können leider nicht im Flug ermittelt werden, sondern bedürfen einen geringen Zusatzaufwand:
Man montiert die Propeller reihum versetzt und verkehrt rum.
D.h. der Prop, der zuerst links vorne war, kommt mit der Oberseite nach unten nach rechts vorne. Der von rechts vorne nach rechts hinten. Der von rechts hinten nach links hinten und der von links hinten wiederum nach links vorne. Alle Propeller mit der Oberseite nach unten.

Dadurch erreicht man einen Luftstrom, der den Kopter dann auf den Boden drückt anstatt diesen in die Lüfte zu heben.
Das Landegestell sollte dem entstehenden Druck standhalten.

Als nächstes stellt man den Copter am besten auf einer Grasfläche ab oder fixiert ihn damit dieser nicht verrutschen kann. Nun wird der Akku angeschlossen und mittels Telemetrielink eine Terminal-Verbindung aufgebaut (die aktuelle Mission Planner Version unterstützt die compassmot-Kompensation noch nicht über die GUI).
jetzt die beiden Commands:
setup
compassmot

und schon gehts los.
Man gibt langsam Gas und erhöht bis etwa 50% Gas, bleibt dort für etwa 5sek und reduziert dann rasch wieder auf 0.
Dann die Return-Taste drücken und fertig.

sieht dann in etwa so aus:

ArduCopter V3.0.1]*
ArduCopter V3.0.1] setup
Setup Mode


setup] compassmot
This records the impact on the compass of running the motors. The motors will spin!
Hold throttle low, then raise to mid for 5 sec, then quickly back to low.
At any time you may press any key to exit.

measuring compass vs THROTTLE
thr:130 cur:0.00 mot x:-0.1 y:-0.2 z: 1.9 comp x:0.01 y:0.02 z:-0.14
thr:130 cur:0.00 mot x:-0.1 y: 2.8 z: 0.8 comp x:0.01 y:-0.20 z:-0.21
thr:130 cur:0.00 mot x:-2.7 y:-2.7 z:-2.2 comp x:0.08 y:0.39 z:3.06
thr:210 cur:0.00 mot x: 0.3 y: 8.3 z:-9.2 comp x:-0.71 y:-2.32 z:20.70
thr:280 cur:0.00 mot x: 2.3 y: 1.3 z:-23.2 comp x:-3.20 y:-9.20 z:36.67
thr:345 cur:0.00 mot x: 5.3 y: 8.3 z:-29.2 comp x:-7.30 y:-16.13 z:52.60
thr:415 cur:0.00 mot x: 8.3 y:21.3 z:-49.2 comp x:-12.37 y:-26.17 z:69.81
thr:486 cur:0.00 mot x:13.3 y:19.3 z:-78.2 comp x:-18.05 y:-38.67 z:90.56
thr:539 cur:0.00 mot x:16.3 y:52.3 z:-54.2 comp x:-24.13 y:-49.82 z:113.23
thr:588 cur:0.00 mot x:26.3 y:50.3 z:-116.2 comp x:-30.86 y:-60.02 z:139.49
thr:639 cur:0.00 mot x:34.3 y:40.3 z:-155.2 comp x:-37.54 y:-72.46 z:167.68
thr:677 cur:0.00 mot x:35.3 y:78.3 z:-156.2 comp x:-44.04 y:-84.96 z:186.60
thr:680 cur:0.00 mot x:37.3 y:74.3 z:-137.2 comp x:-48.24 y:-93.20 z:202.68
thr:680 cur:0.00 mot x:33.3 y:70.3 z:-158.2 comp x:-50.40 y:-96.69 z:211.60
thr:0 cur:0.00 mot x:20.3 y:29.3 z:-77.2 comp x:-51.97 y:-99.83 z:216.90

Interference at full throttle is 74% of mag field

Compass
----------------------------------------
enabled
Mag Dec: 3.3805
Mag off: -185.4770, 126.6670, -3.2290
Motor Comp: Throttle
Comp Vec: -51.97, -99.83, 216.90

setup]

____________________________________________
Es wird empfohlen daß compassmot für Abweichungen bis zu 30% verwendet werden kann. Alles darüber (wie auch das Beispiel oben) erfordert ein Höhersetzen des APMs oder einen externen Kompass. Zum Kompensieren der restlich verbleibenden Abweichung kann dann "zum Drüberstreuen" noch die compassmot Kompensation verwendet werden. Im Idealfall hat man hier noch Abweichungen zwischen 1-10% die compassmot dann noch wett macht.

Grundsätzlich kann man sagen, je höher die Motorströme sind, desto weiter entfernt (höher) sollte das APM samt Magnet-Kompass montiert werden.

Hier nochmal die compassmot-Kompensation nachdem anstatt des internen Kompass ein externes Kompassmodul um etwa 3EUR ca. 30mm höher gesetzt wurde:

setup] compassmot
This records the impact on the compass of running the motors. The motors will spin!
Hold throttle low, then raise to mid for 5 sec, then quickly back to low.
At any time you may press any key to exit.

measuring compass vs THROTTLE
thr:133 cur:0.00 mot x:-0.9 y:-1.0 z:-0.2 comp x:0.07 y:0.08 z:0.01
thr:174 cur:0.00 mot x:-0.9 y: 2.0 z:-2.2 comp x:-0.51 y:-2.60 z:0.31
thr:241 cur:0.00 mot x: 0.1 y: 3.0 z:-0.2 comp x:-1.04 y:-6.16 z:2.35
thr:338 cur:0.00 mot x: 3.1 y: 3.0 z:-3.2 comp x:-3.78 y:-8.14 z:4.23
thr:450 cur:0.00 mot x: 8.1 y: 4.0 z:-4.2 comp x:-7.37 y:-9.08 z:7.04
thr:554 cur:0.00 mot x:13.1 y: 6.0 z:-12.2 comp x:-12.08 y:-10.55 z:9.95
thr:737 cur:0.00 mot x:23.1 y:19.0 z:-11.2 comp x:-18.57 y:-13.70 z:15.26
thr:794 cur:0.00 mot x:29.1 y:21.0 z:-27.2 comp x:-25.27 y:-17.89 z:20.64
thr:794 cur:0.00 mot x:27.1 y:18.0 z:-21.2 comp x:-29.46 y:-20.62 z:24.30
thr:795 cur:0.00 mot x:30.1 y:22.0 z:-16.2 comp x:-31.86 y:-21.90 z:25.86
thr:794 cur:0.00 mot x:26.1 y:21.0 z:-27.2 comp x:-32.99 y:-22.77 z:27.19
thr:794 cur:0.00 mot x:27.1 y:15.0 z:-27.2 comp x:-33.82 y:-23.14 z:27.62
thr:794 cur:0.00 mot x:28.1 y:17.0 z:-28.2 comp x:-34.21 y:-23.76 z:28.35
thr:0 cur:0.00 mot x:10.1 y:10.0 z:-13.2 comp x:-34.28 y:-23.72 z:28.65

Interference at full throttle is 15% of mag field

Compass
----------------------------------------
enabled
Mag Dec: 3.3805
Mag off: -104.5236, 27.1404, 22.0873
Motor Comp: Throttle
Comp Vec: -34.28, -23.72, 28.65


Wie man sieht, konnte somit der magnetische Einfluss von 74% auf 15% reduziert werden. Noch immer nicht optimal, aber ausreichend.

Vergleicht man die Kompass-Vektoren:
Vorher:
Comp Vec: -51.97, -99.83, 216.90

Nachher:
Comp Vec: -34.28, -23.72, 28.65

so sieht man, daß die Z-achse den Löwenanteil ausmacht. Für diese Achse ist der Kompass wohl am unwichtigsten.
Die Verbesserung in der X-Achse ist marginal, allerdings konnte die Y-Achse um gut 75% verbessert werden, also ein voller Erfolg.

[size=+1]externer Kompass:[/size]

Manchmal geht das jedoch nicht. In diesem Fall kann man den integrierten Kompass deaktivieren und statt dessen einen externen verwenden.
Im Gegensatz zu dem relativ kosten-intensiven Sensor von 3DRobotics findet man auf ebay schon Magnet-Sensor-Module um etwa 3 EUR, einfach mal nach "HMC5883L" suchen...
es gibt unterschiedliche Module, manche mit allerhand anderen Sensoren drauf, aber ich empfehle ein Modul, das rein auf den Kompass beschränkt ist zu nehmen.
Grundsätzlich sind die Module alle gleich aufgebaut. Neben dem eigentlichen Kompass-Baustein HMC5883L ist dann noch ein wenig Vogelfutter zwecks Spannungsregelung drauf. Im Zusammenspiel mit dem APM liegen am I2C-Bus passenderweise 3.3V an dem dafür vorgesehenen Port.

Am APM muß zunächst der integrierte Kompass deaktiviert werden. Das geht ganz einfach, indem man vorsichtig mit einem Skalpel eine Lötbrücke SJ6 (d.h. eigentlich eine Leiterbahn zwischen zwei Lötpads) durchtrennt.




Im Schaltplan sieht man, daß damit die SDA (Datenleitung) unterbrochen wird.




Achtung: wirklich nur diese Bahn durchtrennen, und aufpassen, daß man nicht abrutscht...
Danach empfiehlt es sich mittels Multimeter kurz mal zu checken, ob auch wirklich keine Verbindung mehr besteht.

Als nächstes benötigt man ein 4-poliges micro JST Kabel mit 1.25mm Pinabstand. Die bekommt man als DF13 auch bei diversen FPV-Händlern, für etwas weniger Geld auf ebay. Ich nehme einfach eins, das bei meinem Frsky-Empfänger dabei war.
In meinem Fall habe ich lediglich die einzelnen Adern getauscht, so daß rot für VCC und schwarz für GND verwendet wird. Ist grundsätzlich egal, aber es empfiehlt sich immer gewisse Konventionen einzuhalten.
Die Belegung sieht wie folgt aus:



Beim verlöten der Anschlüsse am Modul hat man verschiedene Möglichkeiten. Wichtig ist hierbei lediglich, auch wirklich den 3.3V nicht mit dem 5V-Anschluss zu verwechseln.
Ansonsten sollte man die Leitungen so kurz wie möglich halten um I2C-Errors so weit wie möglich zu vermeiden.

Das Modul sollte man möglichst stabil und natürlich erhöht montieren, so daß man die magnetischen Einflüsse aufgrund des erhöhten Abstandes minimiert. (schließlich gehts bei der ganzen Übung ja genau darum...)



Was die Ausrichtung angeht, sind oft auf den Modulen X und Y-Achsen/Pfeile aufgedruckt. Allerdings sind die im Falle meines Moduls irgendwie sinnbefreit.
Die sicherste Variante ist, man sieht sich den eigentlichen Chip (bzw. den Punkt links oben) selbst an und richtet das Modul entsprechend so aus wie der Chip auch am APM verlötet ist.



In Flugrichtung gesehen muß der Punkt zur rechten vorderen Ecke des APM zeigen.


Man kann den Kompass auch in eine beliebige andere Richtung verbauen, allerdings ist dann eine Software-Anpassung nötig.
Seit Arducopter 3.0 kann man im Hardware-Menü des Missionplanner die Ausrichtung einstellen, in früheren Versionen mußte man den Code mit bestimmten gesetzten Konstanten neu compilen. Wenn es sich vermeiden lässt, würde ich hier nichts ändern und stattdessen den Kompass entsprechend montieren.

Natürlich ist mit dem externen Kompass eine neue Kompass-Kalibrierung fällig.


Diese sollte dann mit weit besseren (=geringeren) COMPASS_OFS_X/Y/Z Werten und damit auch stabileren Loiter/Position Hold belohnt werden.


Ein stabil funktionierender Loiter-Mode ist die Voraussetzung für die nächste Stufe an Funktionen des APM wie RTL, Wegpunkte-Fliegen oder auch Geofence.

dazu hier demnächst mehr.
 

Atarix777

Erfahrener Benutzer
#2
Hab mir gerade alle drei Einträge durchgelesen und werde mir das für morgen wohl auf mein Handy ziehen. Denn dann gehe ich mit meinem frisch zusammen gebastelten Goliath + APM zum Maidenflight und ich habe irgendwie Angst... :eek:

Ps: Super Arbeit!
 

rose1203

Erfahrener Benutzer
#3
Tolle Anleitung !! Für die neue Version 3.0.0 stimmt das mit den Log Einstellungen nicht mehr, jetzt heißt es statt RAW Werten - IMU. Diese müssen hier dann aktiviert werden.
 
#7
Danke für die Ganze Arbeit um anderen zu helfen, super! Ich habe alle Kapitel gelesen. Ich möchte mir nun auch einen ext. Kompass anbauen den ich auch schon bestellt habe. Jetzt habe ich aber ein Problem mit dem Stecker, den kann ich nirgens finden! Gibt es einen Tipp von dir?
 

afri

FlugAutist
#9
Alle 3 Teile Deines Tuning Guides sind großartig ! Vielen Dank für die super Erläuterungen. Insbesondere Deinen externen Kompass Mod werde ich definitiv nutzen !
 

gervais

Ich brauche mehr Details
#10
Prima. Danke für den Hinweis auf den Punkt;-). Zu ergänzen wäre, dass man den Kompass bei gleich gutem Ergebnis auch weit unten am Landegestell anbringen kann, was je nach Anbringungspunkt / Art mechanisch sicherer ist als ein Mast.

Hier noch zwei derzeit gängige HMC5883L Module, von denen das rechte Modell mit 5 Pins von 3-5V VCC funktioniert, ohne dass man den Anschluß umlöten muß. bei beiden Versionen weist Y bezogen auf die APM Montagerichtung nach hinten.

 

Biafra

Neuer Benutzer
#11
Super Tutorial. Danke für die Arbeit.
Mal eine kurze Frage zum Durchtrennen der Lötbrücke. Auf dem Bild sind ja quasi
zwei Lötbrücken zu sehen. Werden beide durchtrennt oder nur eine von beiden?
 
#15
Hmm, MPNG fliege ich schon lange nicht mehr. Da allerdings der Code von AC stammt, behaupte ich mal, daß sich der Vorgang des Tunings nicht unterscheidet.
Ich würde in dem Fall mal die Default-Werte als Ausgangswerte verwenden und entsprechend für die Limits mit der jeweiligen CH6-Option diese Werte nach oben und unten für den Beginn um 30% erweitern.
D.h. xxx_MIN = xxx_Default -30%
xxx_MAX = xxx_Default + 30%

dann beim Tuning, falls notwendig einfach den Wertebereich entsprechend vergrößern/verschieben...

Der Ablauf selbst sollte gleich sein wie hier beschrieben.
PS: Halt uns bitte auf dem Laufenden, denke es fliegen doch so einige MPNG...

Danke und Gruß,
Christian
 

afri

FlugAutist
#17
@kornetto: Moin, Habe soeben die Lötbrücke durchtrennt und einen externen Kompass mit VCC 3,3V, GND, SCL und SDA entsprechend Deiner Vorgabe angelötet. Wenn ich den APM dann via USB mit dem MissionPlanner verbinde und im Terminal_mode den Compass Test mache, bekomme ich die Meldung "Compass initialisation failed".
Wo kann der Fehler liegen ??? Wird der DRDY Breakout auf dem externen Compass benötigt ?

@Selber: Habe wieder auf 2.9.1b downgegraded und siehe da: externer Kompass läuft?! Irgendwie komme ich mit der 3.0er Version nicht wirklich klar ...
 
Zuletzt bearbeitet:

aargau

Erfahrener Benutzer
#18
Kann mir jemand kurz bestätigen:
Auch wenn die Brücke durchgetrennt ist (mit MM getestet) funktioniert der interne Kompass wenn kein externer vorhanden ist?
Nicht das ich da plötzlich Daten von zwei habe und der APM gar nicht mehr weis was nun Sache ist...
 
#19
Wenn Du die Brücke durchtrennst, mußt Du einen externen Kompass anschließen.
Wenn Du den externen entfernst und den internen verwenden möchtest, mußt Du die Brücke wieder mit einem Mini-Tropfen Lötzinn schließen.
 

Robocop592

Neuer Benutzer
#20
HiHo,
habe mich bemüht die Pid Einstellungen über Ch6 durchzuführen.
Bei mir gibt es über den Poti nur 3 Einstellungen (egal mit welcher % Zahl ich den Poti belege):
Den minimal Wert.
Den mittel Wert.
Den maximal Wert.
Nichts dazwischen oder drüber.
Muss es nicht so sein das man sich zwischen den Min. und Max. Wert frei bewegen kann, dank des Potis?
Momentan ist der Poti bei mir nur ein drehbarer Schalter.
Meine Funke ist die Turnigy 9XR.
Mache ich etwas falsch?
Bis denn, Ich.

Ps.: sehr guter Block!
 
FPV1

Banggood

Oben Unten