-
-
Neuer Benutzer
Öfters hier
Hallo zusammen,
ich kann mich auch nur anschließen, tolles Projekt. Mich interessiert insb.
die Flugsteuerung, zur Simulation habe ich das ganze mal "nachgebaut",
hier findet man Beispielwerte in den [eckigen Klammern].
[php:1:b23af47a9c]Schleife
Schritt 1. "Get Analog"
// Differenz zum Ausgangswert errechnen
Gyro_nick [-14] = Getadc(7) [637] - Gyro_nick_init [646 - Mittel aus 100 Messungen]
Gyro_roll [-11] = Getadc(4) [594] - Gyro_roll_init [594 - Mittel aus 100 Messungen]
Gyro_yaw [20] = Getadc(5) [621] - Gyro_yaw_init [603 - Mittel aus 100 Messungen]
Besch_x [7] = Getadc(2) [376] - Besch_x_init [357 - Mittel aus 100 Messungen]
Besch_y [13] = Getadc(1) [355] - Besch_y_init [354 - Mittel aus 100 Messungen]
Besch_z [-17] = Getadc(3) [363] - Besch_z_init [~356 - Mittel aus Besch_x_init & Besch_y_init]
// Differenz zum Motorwerte hinzuaddieren
Gyro_nick_m [-9] += Gyro_nick [-14]
Gyro_roll_m [-24] += Gyro_roll [-11]
Gyro_yaw_m [44] += Gyro_yaw [20]
// Differenz zum Motorwerte hinzuaddieren
Besch_x_m [94] += Besch_x [101]
Besch_y_m [59] += Besch_y [13]
Besch_z_m [-45] += Besch_z [-17]
Schritt 2. "Fernsteuerung"
// Differenz zum Ausgangswert errechnen
Kanal_nick [19] = Puls(3) [276] - Kanal_nick_init [276]
Kanal_roll [3] = Puls(2) [332] - Kanal_roll_init [319]
Kanal_yaw [-8] = Puls(4) [511] - Kanal_yaw_init [496]
Kanal_pitch [9] = Puls(5) [768] - Kanal_pitch_init [783]
Schritt 3. "Mixer"
// Die Motor_soll Werte neu berechnen
// Pitch (plus 40?) vorab auf alle Motoren verteilen
Motor_soll_v [49] = Kanal_pitch [9] + 40
Motor_soll_r [49] = Kanal_pitch [9] + 40
Motor_soll_h [49] = Kanal_pitch [9] + 40
Motor_soll_l [49] = Kanal_pitch [9] + 40
// ggf. Maximalwerte abfangen (Motor_soll_v [24] > Motorbegrenzung [130] ...)
// Nicken.
// 1. Funke - Steuersignal Nick auf Motor vorne(- ab) und hinten (+ auf) verteilen
Motor_soll_v [30] -= Kanal_nick [19]
Motor_soll_h [68] += Kanal_nick [19]
// 2. Gyro - Gyro Differenz ebenfalls auf das Motor-Steuersignal verteilen
Motor_soll_v [21] += Gyro_nick_m [-9]
Motor_soll_h [77] -= Gyro_nick_m [-9]
// 3. Acc - Beschleunigungs Differenz letztlich auf das Motor-Steuer-Gyro Signal verteilen
Motor_soll_v [122] += Besch_x_m [101]
Motor_soll_h [-24] -= Besch_x_m [101]
// Rollen.
// roll
Motor_soll_r [46] -= Kanal_roll [3]
Motor_soll_l [52] += Kanal_roll [3]
// gyro roll
Motor_soll_r [70] -= Gyro_roll_m [-24]
Motor_soll_l [28] += Gyro_roll_m [-24]
// acc roll
Motor_soll_r [129] += Besch_y_m [59]
Motor_soll_l [-31] -= Besch_y_m [59]
// Vertikal drehen
// yaw
Motor_soll_v [130] -= Kanal_yaw [-8]
Motor_soll_l [-39] += Kanal_yaw [-8]
Motor_soll_r [93] += Kanal_yaw [-8]
Motor_soll_h [137] -= Kanal_yaw [-8]
// ggf. Minimalwerte abfangen Motor_soll_v [24] < 1 ...
Schritt 4. "Daten an die Motoren senden" [/php:1:b23af47a9c]
Ich hoffe das ist soweit exemplarisch korrekt.
Das eigentliche Stück Software ist ja das aufaddieren von
Funke / Gyro / ACC. Letztlich muß man vorab nur sicher
gehen, das die Signale richtig skaliert vorliegen.
(wenn ich es richtig verstanden hab...)
Wollte ich nur kurz posten, vielleicht für einige interessant.
Sobald ich etwas zum Kalmanfilter finde, poste ich das hier gleich,
sooo kompliziert kann es nicht sein....
Viele Grüße
ABSIMon
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen