Brushless Gimbal Controller - SOFTWARE

Status
Nicht offen für weitere Antworten.

Lonestar78

Erfahrener Benutzer
#1
In diesem Thread soll über Software und Algorithmen zur Brushless Gimbal Controller Hardware von Ludwig/RCFAN2 diskutiert werden (http://fpv-community.de/showthread.php?19252-Brushless-Gimbal-Controller).

Software Updates gibts dann zentral:
http://code.google.com/p/brushless-gimbal/downloads/list

Themen:
- Motoransteuerung
- Regelstrategie und Regelgüte
- Sensoransteuerung, Auswertung, Filterung....
- Code Optimierungen

Warum das Ganze?
1) Es bekommen jetzt deutlich mehr Beta-Tester Platinen. Hier hoffe ich auf rege mitentwicklung der Software. Da liegt noch ein langer Weg vor uns.
2) Mehr Köpfe = mehr Ideen :)



UPDATE:
043 A:
- introduce RC Channel input :)
Use A1 and A2 as PWM input pins for Pitch and Roll, DO NOT CONNECT +5V from REC-Receiver to Controller
- add RC input config to serial protocol
Type HE in terminal to see additional Protocol stuff (min max Angles per Axis)
- start Code optimization: atan2 now runs ~2 times faster

http://code.google.com/p/brushless-gimbal/downloads/detail?name=_043_A.rar&can=2&q=#makechanges


UPDATE:
042 ALPHA (!!!!)


42 A:
- memory optimizations
- reintroduce a way to control max motor power: PWM from 1 to 255 for each Motor seperately
http://code.google.com/p/brushless-gimbal/downloads/detail?name=_042_A.rar&can=2&q=#makechanges
 
Zuletzt bearbeitet:

fritz99

Erfahrener Benutzer
#4
Hallo !

Könnte Jemand von den Softwareleuten eine Liste posten in der alle Variablen gelistet sind an denen man "drehen" kann und die Erklärung was die Variable soll. Und in welchem Sourcefile sie sind.
Das würde das Testen wesentlich vereinfachen

Danke.
Fritz
 

fritz99

Erfahrener Benutzer
#5
Firmware 036A :

Warum dreht sich hier der Motor nur um einen bestimmten Winkel der offenbar proportional zum Winkel des Sensorboards ist ?
Bei den alten Versionen drehte sich der Motor so lange bis das Sensorboard wieder horizontal war.
Und der Motor wird extremst heiss !!!!!!!!!

Fritz
 

fritz99

Erfahrener Benutzer
#6
036A Mit dem DMP mode dreht sich überhaupt kein Motor. ( Was immer die beiden modes bedeuten..........)

Fritz
 
Zuletzt bearbeitet:

Lonestar78

Erfahrener Benutzer
#7
Kleines Zitat:
036 ALPHA (!!!!)

Kurze Erklärungen:
- Variablen, an denen man drehen kann: config.h, ein Blick in den source code verrät überraschend, dass da sogar Kommentare drinstehen.

- grob: im DMP-Modus wird mit 100 oder 200 Hz aus den Quaternionen, die die MPU im digital motion processing modus abgibt, die Winkelausrichtung im Raum bestimmt, diese gegen Sollwinkel verglichen und daraus mittels PID-Kontroller eine Motorgeschwindigkeit in grad/s berechnet, mit der gegengesteuert wird. Wenn der Motor gar nicht dreht (überrascht mich, bei mir tut er das), P-Wert hochstellen? Was im Moment fest verdrahtet im Code ist: Welche Sensorrichtung physikalisch welchem Motor zugeordnet wird. Das hängt ja auch von der Ausrichtung des Boards am Gimbal ab. Änderungen im Hauptfile in der Prozedur "updatePositionFromDmpFast".

- grob: im Raw Gyro Modus wird das Gyro-Signal mit ~1kHz ausgelesen in grad/s, genau, in grad/s. Wenn der Gyro ideal arbeiten würde (was er NIE tun wird), wärs das schon.... . in der Alpha Version wird in diesem Modus KEIN Bezugspunkt verglichen. Eigentlich sollte von Gyro-Drift mal abgesehen einfach die Kamera etwa die Startposition halten. Den Modus hab ich eingebaut, weil edge mich drum gebeten hat und weil alexmos das ähnlich handhabt mit den Gyrodaten, natürlich nur viel ausgefeilter.



In persönlicher Sache: Ich mach das hier als Hobby, bekomm keinen Cent Kohle dafür, arbeite mit Ludwig zusammen, der mich freundlicherweise sogar mit Leihgaben versorgt (nochmal: SUPER!!!) und ich bin kein "Softwareleut" der mal was postet, wenn man ihm das sagt. Nebenbei hab ich sogar noch einen Job, der mir mehr Zeit abverlangt als manch Anderem.....
Natürlich reagiere ich über...das braucht mir hier jetzt niemand zu sagen.
Das Ganze hier ist ein Open Source Projekt und lebt davon, dass Leute arbeiten und teilen. Dieser Thread soll dem Austausch dienen, im Idealfall schauen mal mehr Leute in den Code und entwickeln den weiter...
 
Zuletzt bearbeitet:

fritz99

Erfahrener Benutzer
#8
Kleines Zitat:
036 ALPHA (!!!!)

Kurze Erklärungen:
- Variablen, an denen man drehen kann: config.h, ein Blick in den source code verrät überraschend, dass da sogar Kommentare drinstehen.

- grob: im DMP-Modus wird mit 100 oder 200 Hz aus den Quaternionen, die die MPU im digital motion processing modus abgibt, die Winkelausrichtung im Raum bestimmt, diese gegen Sollwinkel verglichen und daraus mittels PID-Kontroller eine Motorgeschwindigkeit in grad/s berechnet, mit der gegengesteuert wird. Wenn der Motor gar nicht dreht (überrascht mich, bei mir tut er das), P-Wert hochstellen? Was im Moment fest verdrahtet im Code ist: Welche Sensorrichtung physikalisch welchem Motor zugeordnet wird. Das hängt ja auch von der Ausrichtung des Boards am Gimbal ab. Änderungen im Hauptfile in der Prozedur "updatePositionFromDmpFast".

- grob: im Raw Gyro Modus wird das Gyro-Signal mit ~1kHz ausgelesen in grad/s, genau, in grad/s. Wenn der Gyro ideal arbeiten würde (was er NIE tun wird), wärs das schon.... . in der Alpha Version wird in diesem Modus KEIN Bezugspunkt verglichen. Eigentlich sollte von Gyro-Drift mal abgesehen einfach die Kamera etwa die Startposition halten. Den Modus hab ich eingebaut, weil edge mich drum gebeten hat und weil alexmos das ähnlich handhabt mit den Gyrodaten, natürlich nur viel ausgefeilter.



In persönlicher Sache: Ich mach das hier als Hobby, bekomm keinen Cent Kohle dafür, arbeite mit Ludwig zusammen, der mich freundlicherweise sogar mit Leihgaben versorgt (nochmal: SUPER!!!) und ich bin kein "Softwareleut" der mal was postet, wenn man ihm das sagt. Nebenbei hab ich sogar noch einen Job, der mir mehr Zeit abverlangt als manch Anderem.....
Natürlich reagiere ich über...das braucht mir hier jetzt niemand zu sagen.
Das Ganze hier ist ein Open Source Projekt und lebt davon, dass Leute arbeiten und teilen. Dieser Thread soll dem Austausch dienen, im Idealfall schauen mal mehr Leute in den Code und entwickeln den weiter...
@Lonestar78 :
Meine Kommentare sind nicht als Kritik zu verstehen.
Ich bin Betatester und gebe hier meine Ergebnisse der Test wieder.
Sonst nichts.
"Softwareleute" bedeutet bei uns in Österreich Nichts Negatives.
Ich spreche damit nur die Leute an, die an der Software beteiligt sind .
Ich bin auch allen aktiven Leuten hier sehr dankbar für ihre Arbeit.


Fritz
 
Zuletzt bearbeitet:

Lonestar78

Erfahrener Benutzer
#9
OK :D, alles wieder grün.
Genau um das Feedback gehts uns ja.

Zur Temperatur: Kann sein, dass der Motor im Gyro-Modus mehr arbeitet, weil da immer ein Rauschen bei eigentlich keiner Bewegung ist.

Wahrscheinlich liegts daran, dass ich gerade an ner Präsi für Montag powerpointe.....
 

Lonestar78

Erfahrener Benutzer
#10
So, ich glaub ich hab was gegen das Schwingen.
Absenkung der Phasenbestromung durch limitierung des PWM-Signals scheint zu helfen.
 

Lonestar78

Erfahrener Benutzer
#12
Hast du mal 15sek gewartet? da ist ein delay drin, damit sich der DMP einregeln kann.

achja, und interrupt pin angeschlossen?
 
Zuletzt bearbeitet:

RC FAN2

Erfahrener Benutzer
#13
man man man , hier gehts ja richtig voran :) Daumen hoch !
Und ich idiot hab auchnoch mein Controller verliehen , kann also nichtmal testen :(

Weiter so jungs !
 

Lonestar78

Erfahrener Benutzer
#14
Mal ne Frage in den Raum: Hat irgend jemand ne Idee, wie ich die standardmäßige MPU6050-DMP Konfiguration für das FIFO-Paket ändern kann? Und Zwar so, dass nur Quarternionen, und GyroX und GyroY drin stehen?
 
#15
Hi ,
zunächst einmal Glückwunsch zu dem tollen Projekt.
Da ich mich auch schon seit ein paar Jahren mit Gimbals beschäftige und baue, jedoch nicht die nötigen elektronischen Kentnisse besitze, freue ich mich, das da ein paar fähige Jungs drüber sind ;-)

Da ich mich auf der mechanischen Seite besser auskenne hier meine Anregungen bzw. Fragen:

1. Warum Brushless und keine eisenlose gleichstrom Motoren (weniger Rastmoment)
2. Kann im Code ein untersetzungsverhältniss gewählt werden?
2a. Wenn ja, welche untersetzung könnte oder kann die Hardware bzw momentane Software verabeiten.

Grund der Fragen ist der, da ich mit Harmonic Drive Getrieben meinen absolut spielfreien Antrieb habe, wäre es interessant zu wissen, bei welcher untersetzung die HArd oder Software nicht mehr schnell genug ist.

Sinn ist es, aufgrund von Antriebsuntersetzung einen höheren Drehmoment für größere Kameras zu bekommen, vorausgesetzt die Geschwindigkeit der Regelung macht mit.
 

rc-action_de

Erfahrener Benutzer
#16
Hallo Photocopter,

ich nutze zwar eine andere Software aber ich habe Heute auch die 36 getestet. Mit einer kleinen Änderung lässt sich auch hier natürlich eine Untersetzung einstellen.

Wenn ich das schnell mal richtog überflogen habe, dann kann man "DIR_MOTOR_PITCH 1" dazu missbrauchen eine Untersetzung einzustellen.



Viele Grüße
Henry
 
#18
Hi Herry,

vielen Dank.
Das heist, bei einer untersetztung von 1:10 musste der Wert folgend geändert werden?
DIR_MOTOR_PITCH 10 bzw.
DIR_MOTOR_PITCH -10

Wenn ja, bis zu welcher Untersetztung macht es sinn bzw. kommt die Regelung nach?
 

rc-action_de

Erfahrener Benutzer
#19
Ja ganz genau ;-)

Ich habe es bisher bis zu einer 1:5 Untersetzung getestet und die Regelung war schnell genug (je nach Motor), allerdings bekomme ich nach wie vor keinen ruhigen Lauf auf der Rollachse hin.

Ich bin wieder zurück bis auf eine 1/3 Untersetzung. Alles andere war etwas übertrieben für die Hero und die Zahlen wurden zu groß ;-)

@superkuku i try download 032---036 but only 032 the moto can move.

do you have changed the adress of the mpu6050 - High or Low ?
#define MPU6050_DEFAULT_ADDRESS MPU6050_ADDRESS_AD0_HIGH


Viele Grüße
Henry
 
#20
Nochmals Danke Henry,

kann die max. Untersetzungs berechnet werden, d.h. bis welche max.Untersetzung macht es die Software stelltechnisch mit.
Dementsprechend kann der Motor ja schneller laufen und die Stellkräfte werden höher.
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten