Brushless Gimbal Controller - SOFTWARE

Status
Nicht offen für weitere Antworten.

nico_99

Erfahrener Benutzer
Hi.

würde hier das Calibrieren der wagerechten Position der IMU, ähnlich wie wir das mit Kopter Sensoren tun, nicht die Lösung bringen?
 

rc-action_de

Erfahrener Benutzer
So richtig kann ich das leider nicht auf mein Gimbal übertragen da es bei mir keine Schräglage im Ruhezustand gibt. Inkl. IMU ist das Ganze ausbalanciert und durch die Übersetzung in Richtung Motor hält dieser auch im unbestromten Zustand das Gimbal in Position.

Momentan ist das Ganze noch nicht 100% gerade da die IMU etwas schräg auf der Kamerahalterung sitzt. Das muss ich noch ändern. https://vimeo.com/58291966

Ich werde mir vorerst einmal eine Zugentlastung für das IMU Kabel bauen und damit nochmal testen. Es kann auf jeden Fall hilfreich sein.

Viele Grüße Henry
 
Hi.

würde hier das Calibrieren der wagerechten Position der IMU, ähnlich wie wir das mit Kopter Sensoren tun, nicht die Lösung bringen?
Doch, oder auch das Trimmen über die Fernsteuerung. Später muss Nick sowieso von der Fernsteuerung aus übersteuerbar sein und für Roll würde das auch nicht schaden. Das macht man ja im Moment bei den Servogimbals auch so. Das Verarbeiten der RC-Signale ist aber im Moment noch nicht Teil der Software, glaube ich...

Wer Lust und Zeit hat, das einzubauen, ich hätte hier einen Beispielcode der Ardu-IMU Gimbalsteuerung, die auch mit dem Atmega328 läuft :):
www.andreaskielb.de/Gimbal(500).rar
 
Zuletzt bearbeitet:

Lonestar78

Erfahrener Benutzer
Hmmm, ich glaube ich muss da widersprechen.
Das Gimbal darf keine Vorzugsausrichtung haben, heisst, es muss schwerpunktneutral um die Drehachsen sein.
Damit ist dann egal, was die Ausgangslage ist.
 

nico_99

Erfahrener Benutzer
Hmmm, ich glaube ich muss da widersprechen.
Das Gimbal darf keine Vorzugsausrichtung haben, heisst, es muss schwerpunktneutral um die Drehachsen sein.
Damit ist dann egal, was die Ausgangslage ist.
D.h. die IMU bestimmt was die Null-Lage ist? Ich meine ich kenne noch nicht den gesamten Hintergrund der Signale nach dem Einschalten, aber wenn ich das jetzt richtig verstanden habe, ist die wagerechte am Sensor die Referenz?

PS: keine Kalibrierug nötig?
 

nico_99

Erfahrener Benutzer
Ah, wie geil ist das denn!!!
 
Hmmm, ich glaube ich muss da widersprechen.
Das Gimbal darf keine Vorzugsausrichtung haben, heisst, es muss schwerpunktneutral um die Drehachsen sein.
Damit ist dann egal, was die Ausgangslage ist.
Meine Rede, dass das Gimbal schwerpunktneutral ausgerichtet sein muss und das IMU muss bei einen horizontalen Kamera- und Gimbalausrichtung ebenfalls Null ausgeben. Ich sage nur, das man ein System bei dem das elektronische Null der IMU nicht mit dem Schwerpunkt des Gimbals übereinstimmt, nicht ruhig bekommen kann und deshalb muss man vor dem Festlegung der PID-Werte prüfen, dass auch das Gimbal keine Drehrichtung an die Motoren ausgibt.

Könntest Du mir sagen, wo in dem von mir verwendeten Code der ermittelte Rollwinkel zu finden ist. Das Debug am seriellen Monitor gibt nur dies aus:

BLGC Starting Initialization ...
Calculating Sinus Array ...:
127 132 138 143 148 154 159 164 169 174 179 184 188 193 198 202 206 210 214 218 222 225 229 232 235 237 240 242 245 247 248 250 251 252 253 254 254 254 254 254 254 253 252 251 250 248 247 245 242 240 237 235 232 229 225 222 218 214 210 206 202 198 193 188 184 179 174 169 164 159 154 148 143 138 132 127 122 116 111 106 100 95 90 85 80 75 70 66 61 56 52 48 44 40 36 32 29 25 22 19 17 14 12 9 7 6 4 3 2 1 0 0 0 0 0 0 1 2 3 4 6 7 9 12 14 17 19 22 25 29 32 36 40 44 48 52 56 61 66 70 75 80 85 90 95 100 106 111 116 122
Init MPU done ...
Init DMP done ...
Init MPU6050 competely done ... :)
Init BL Control done ...

Eine fortlaufende Ausgabe des Winkels würde bei der Einrichtung helfen.
 
Zuletzt bearbeitet:

Lonestar78

Erfahrener Benutzer
@Andreas:

in der _034.ino, im void loop() Teil:

.....
if (mpuInterrupt == true)
{
sampleTimePID = (micros()-timer)/CC_FACTOR/1000000.0; // in Seconds!
timer = micros();

LEDPIN_SWITCH
updatePositionFromDmpFast(&PitchInput,&RollInput);

PitchOutput = ComputePID(sampleTimePID,PitchInput,PitchSetpoint,&PitchErrorSum,&PitchErrorOld,PitchKp,PitchKi,PitchKd,maxDegPerSecondPitch);
RollOutput = ComputePID(sampleTimePID,RollInput,RollSetpoint,&RollErrorSum,&RollErrorOld,RollKp,RollKi,RollKd,maxDegPerSecondRoll);

PitchDevider = constrain(maxDegPerSecondPitch / (PitchOutput + 0.000001), -10000,10000);
RollDevider = constrain(maxDegPerSecondRoll / (RollOutput + 0.000001), -10000,10000);

//Serial.println((micros()-timer)/CC_FACTOR);

Serial.print(PitchInput); Serial.print(" "); Serial.println(RollInput);
....
 
really nice the GUI, When will it be available? and is it directly connected to the controller or do you edit the Config.H with this and do you need to upload it using arduino afterwards?
 

Lonestar78

Erfahrener Benutzer
Update im ersten post:
039 A :)

Meiner Meinung nach meine beste Version bisher. Spiegelvideo gibts keins, weil Laptop mit Software im Eimer, Kinn nicht rasiert und noch leichtes Ruckeln, was ich noch nicht identifizieren konnte. Von aussen siehts schon sehr gut aus.

Raw Gyro mit reingemischtem ACC (das wird gut funktionieren, wenn sie der Copter nicht großartig bewegt, bei Kurven sieht das ggf. anders aus).
 
Oh... It does not work, my brushless motors seem to have the shakes. It reacts to the MPU but only a bit and the motors shake... A lot


Edit: It stops shaking when I set I and D for both channels to 0. I can only use P.
 
Zuletzt bearbeitet:

Lonestar78

Erfahrener Benutzer
Jupp, you have to play with the parameters and the motor power settings.

Start with low P and zero I/D. Increase P until you get the shakes, then go back a little bit ob P and slightly increase D. Also try to decrease the motor power wit the maxPWM setting. This helps here.
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten