Autonoma drone som du redan har i din ficka! (5 / 6 steg)
Steg 5: Genomför grundläggande funktioner
Första tabellen visas värden från mottagaren, läsning är samma som i steg 3 i den här guiden. Du kan trimma din sändare till 1500 häxa är mellanposition (1ms är min, 2 MS är max, 1500 = 1,5ms häxa är center).
Status etikett visar om vi är anslutna till IOIO styrelsen och om vi är i läget beväpnade eller avväpnas. Det finns exempelkod där byta till beväpnade och avväpnade: } else om (ch3_val < throttle_min & & ch4_val > arm_pos) {
om (ch3_val < throttle_min & & ch4_val < disarm_pos) {
avväpna
beväpnade = false;
arm
beväpnade = sant;
}
ch3_val är värde från spjäll och ch4_val är ruddler (gir), beväpna visas på huvudbilden jag använder mode3 på mi sändare. throttle_min, arm_pos och disarm_pos är positioner där minnet måste vara att beväpna eller avväpna.
Andra tabellen visas utdata, värde är exakt puls längd skicka till utgångarna.
I det första steget jag försökte flyga utan PID (vi kommer att diskutera PID senare) var logik enkel:
-på grund av tricopter M1 och M2 (främre motorer) måste arbeta på halvfart än M3, eftersom M3 är ensam på baksidan.
-om jag vill gå till den framåt jag kommer att sätta mer gas till bakre M3 och mindre till främre M1 och M2 (bakåt är motsatt)
-om jag vill gå till höger jag lägger mer gas till M1 och mindre till M2 (vänster är motsatt)
-yaw - rotation styrs av servo
Min genomförandet ser ut så här (Använd inte det jag kommer att diskutera det senare): Throttle controll pitch controll rulla controll
//yaw servo controll
servo_val = ch4_val;
m1_val = 1000 + (ch3_val - 1000) / 2;
m2_val = 1000 + (ch3_val - 1000) / 2;
m3_val = ch3_val;
m1_val += - (ch2_val - 1500) / 2;
m2_val += - (ch2_val - 1500) / 2;
m3_val += + (ch2_val - 1500);
m1_val += + (ch1_val - 1500);
m2_val += - (ch1_val - 1500);
mx_val och servo_val är output värden beräknade från indatavärden. Problemet med detta genomförande är stick känslighet, om man drar in i hissen på framsidan i låg hastighet (gas) M1, M2 är minskade mer än gas är inställd, så slutar de. Känslan i provbänk är riktigt aggressiv, du kan inte flyga med detta genomförande. Så jag lägger till kryssrutan till GUI, som växla till läget endast inkrementella. Det innebär att programmet inte minska motorer på ena sidan, endast mellanskillnad på andra sidan. Uppförandet av dessa lägen visas i följande video:
Så som ni ser har jag inte kunnat flyga stabilt som i steg 4, när jag testar min stand med KK styrelse. Det korrekta sättet är att använda accelerometern och PID-reglering.