Serghei Lonchakov a dat seama rapid codului disponibil și a scris o mulțime de algoritmi pentru stabilizare, care până acum erau lipsite de sens. De asemenea, el a descoperit defecte în cablare, ducând la o pierdere de comunicare cu senzorii cu rotație intensă a motoarelor datorită interferențelor electromagnetice. A devenit clar modul de modificare a tabloului. Până la sfârșitul lunii mai, Serghei a reușit să lanseze algoritmul de sărituri, care ar putea fi realizat dacă reduceți gravitatea și faceți o stabilizare artificială a poziției Z-Hopper-ului cu o contragreutate. Și robotul a sărit.
În toamna Serghei Lonchakov a continuat să lucreze la robot, dar cu o rată scăzută și puțin s-au făcut. A devenit clar că avem nevoie de un alt picior de primăvară, iar pentru stabilizare avem nevoie de roți pe axa motoarelor. Este timpul să stăpânească fabricarea pieselor.
Rezultatul este un robot:
Ca primul algoritm pentru stabilizarea unui robot într-o lume virtuală, a fost ales un controler PID. Tiltul necesar a fost modificat prin joystick. Datorită motoarelor insuficiente, robotul avea nevoie de câteva secunde pentru a porni și a ocupa poziția indicată. De la sfârșitul primăverii a fost cursul de protecție, lucrările suplimentare privind stabilizarea robotului au decis să amâne căderea.
În timpul primăverii, a fost elaborat un curs despre tema "Dezvoltarea unui robot autonom cu un singur suport și a unui principiu de deplasare". Din păcate, până la momentul protecției, robotul nu a fost adus în stare de lucru.
Aproximativ jumătatea toamnei, am schimbat numărul de motoare. Acum motoarele sunt 3 bucăți și ele formează baza:
În termeni generali, cum funcționează algoritmul: se bazează pe quaternioane. Este cu ajutorul quaternionilor că obțin vectorul rezidual, pe care îl descompun pe axa motoarelor, folosind matricele de rotație. În plus, regulatorii PID intră în joc. Nimic complicat)))
Quaternionele sunt, de asemenea, folosite pentru a determina orientarea în spațiu.
Pentru simulare, am creat un model 3d al robotului în SolidWorks. Pentru sistemul de reglare a înclinării, am luat motoarele BLDC EC 45 plate de 70W de la Maxon Motor. Au avut o mare selecție în catalog, deci nu a fost greu să găsești ceva mai puțin potrivit:
Fabricarea tuturor pieselor poate fi comandată în orice fabrică unde se efectuează tăierea și îndoirea cu laser. De asemenea, Solidworks mi-a dat o masă, un tensor de inerție și alte date necesare pentru efectuarea unei simulări corecte. Fotografie a ansamblului de la SolidWorks:
În simulare, acest algoritm a funcționat bine, dar trebuie să se înțeleagă că în lumea reală, datele de la orice senzori, inclusiv senzorii de viteză unghiulară, vor conține zgomot. Și acest lucru duce în cele din urmă la acumularea erorii și, ca o consecință, la definirea greșită a orientării în spațiu.
După cum puteți vedea din simulare, chiar și fără zgomote, robotul cade după un timp. Acest lucru se datorează faptului că nu există nici o considerație pentru vectorul de viteză. De exemplu, în cazul în care robotul își îndreaptă în mod ideal sprijinul, atunci datorită prezenței vitezei orizontale în timpul fiecărei decolări, robotul se va înclina din cauza momentului pulsului. În acest caz, revenirea în sine nu mai este pe verticală, dar ușor spre lateral. Acest lucru crește și viteza orizontală, iar înălțimea saltului scade. Dacă în timpul toamnei înclinați ușor robotul în direcția opusă, puteți scăpa de acest efect. Acest lucru confirmă faptul că este nevoie de un alt sistem - un sistem de corectare a orientării dorite de-a lungul vectorului de viteză. Acesta a fost sfârșitul semestrului următor și am susținut cursul de lucru pentru al 5-lea an.
Inițial, scopul acestui proiect nu a fost acela de a dezvolta un model robot virtual, ci de a crea un prototip deplin. Și prototipul, care ar avea o mare manevrabilitate și viteză de mișcare. Prin urmare, când a devenit clar că sistemul de control al înclinării funcționează așa cum ar trebui, a apărut întrebarea cu privire la selectarea motoarelor normale.
După reconsiderarea unui număr mare de motoare disponibile, sa decis să se comande pentru testarea GM7008H:
După ce am primit motorul, mi-am măsurat cuplul și alți parametri la fel de importanți.
Acest motor nu a fost ales din întâmplare. Pentru aceasta, este posibil să fixați un volant deodată șuruburi, fără adaptoare o axă - un volant, așa cum a fost în ultimul ansamblu al robotului. Mai puține noduri, fiabilitate mai mare. Acest motor nu are senzori încorporați pentru hală sau codificator, prin urmare au fost aleși codificatoarele optice AEDR-8300K de la Avago (două canale).
În timpul verii și începutul toamnei, a fost creat un nou model de robot pentru aceste motoare, deoarece sa dovedit că am avut prea multe pentru a remake în cele deja disponibile. Sa dovedit destul de bine:
În paralel, am citit mai multe lucrări pe teme similare privind dezvoltarea de roboți de sărituri cu un singur suport, unde am găsit o descriere a modului de a corecta orientarea dorită de-a lungul vectorului de viteză:
Dispozitivul și sistemul de control al robotului nostru nu aveau aproape nimic de-a face cu ceea ce era descris în acea lucrare, deci nu era posibil să luăm totul gata. Dar imaginea poate face cu ușurință un sistem de corecție pentru robotul nostru:
În toamnă, piesele au fost comandate în fabrică.
În plus față de piesele metalice, prototipul necesită o placă de control și controale pentru motoare. Controlorii au fost luați de cei care au fost dezvoltați în laborator timp de mai mulți ani:
Aceste controlere sunt folosite în principal pentru controlul motoarelor stepper, dar pot răsuci motoarele de curent continuu și pot roti potențial bldc. Pentru câteva seri, am terminat firmware-ul pentru a rula motoarele bldc pe encoder.
Controlul robotului a fost realizat de mine în Altium Designer și am comandat:
Microcontrolerul stm32f415GT6 este utilizat pentru a controla robotul. Pentru a determina orientarea în spațiu - două mpu6050 (puteți instala atât pe placă, cât și la orice loc convenabil cu ajutorul firelor).
După primirea cartelei de comandă, robotul a fost asamblat:
După asamblarea robotului, a apărut o problemă - codificatorii optici nu doresc să lucreze cu lovituri imprimate pe hârtie cu o imprimantă laser. Această problemă a fost încercată să fie rezolvată prin efectuarea unei "plăți" cu piste acoperite cu aur de imersie, dar producătorul a eșuat. Ei nu au putut suporta grosimea necesară a șinelor de 0,17 mm și au făcut de 1,4 ori mai gros, deși au promis că vor face până la 0,15 mm. Din acest motiv, encoderele nu funcționează așa cum ar trebui. Stânga de sus așa cum ar trebui să fie, în dreapta așa cum sa dovedit:
Nu cred că vom avea timp să re-emise driverele pentru encodere, pentru că înainte de apărarea diplomei, nu mai este aproape nici un timp.
Descrierea proiectului
Punem în aplicare un mecanism fundamental nou pentru mișcarea roboților prin salturi constante, cu acumularea de energie cinetică când cad într-un corp elastic (primăvară). În loc să susțină mai multe roți sau picioare, se utilizează un punct de contact. Prin urmare, pentru stabilitate, este suficientă orientarea punctului de tangență al platformei în jos și mișcarea de abatere la un unghi controlat. În plus față de simplitatea abordării mișcării, devine posibilă depășirea obstacolelor, cum ar fi pereții, prin simpla sări peste ele. Astfel, mutarea se apropie de posibilitățile de depășire a obstacolelor, manevrabilității și vitezei de deplasare la mașinile de zbor cu elicopter, menținând în același timp un consum redus de energie și un nivel scăzut de zgomot inerent roboților de sol.