Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Ce am făcut?
● Un robot care poate fi antrenat să meargă (să avanseze) pe diferite suprafețe. Botul descrie o creatură simplă cu 4 picioare „fără genunchi” care se luptă să avanseze. Știe că poate orienta fiecare dintre picioare numai în 3 moduri posibile. Acum trebuie să descopere cele mai bune măsuri posibile pe care le poate face pentru a continua să te miști. Deoarece mișcarea sa depinde și de fricțiunea cu suprafața, credem că pentru fiecare suprafață diferită pe care o parcurge, va exista un set diferit (nu neapărat unic, dar cel mai probabil similar) de pași pentru a-și maximiza efortul de a merge mai departe.
Pentru ce se folosește?
● Este cel mai bine folosit pentru vizualizarea tiparelor de mers pe jos pentru un ROBOT AI.
Pasul 1: Diagrama fluxului
Iată o defalcare a întregului proiect. În linii mari, proiectul este format din 2 părți electronice cu structură mecanică a robotului, iar cealaltă este algoritmul care rulează pe computer și codul care rulează pe arduino.
Pasul 2: COMPONENTE MAJORI IMPLICATE:
Electronică
Arduino UNO (!)
Senzor cu ultrasunete
Servomotoare
Modul Bluetooth
Codificare
IDE Arduino
Teraterm
Notebook Jupyter
Q- algoritm de învățare
Pasul 3: MODULUL V1:
Învățarea prin întărire: folosind ANN (rețea neuronală artificială) am planificat să ne antrenăm robotul și am venit cu două metode posibile.
Constrângeri: Fiecare picior (servomotor) este constrâns să ia doar 3 poziții posibile de 60, 90 și 120 de grade. Ipoteze: considerăm că mișcarea botului va constitui 4 stări (o stare este o anumită orientare a tuturor celor patru servouri), adică vor exista 4 stări diferite ale robotului pe care le vom considera ca fiind 4 pași, respectiv, oferindu-ne un ciclu de mișcare, în pe care robotul se va deplasa oarecum înainte. Acest ciclu va fi repetat ad infinitum pentru a menține robotul în mișcare.
Dar singura problemă a fost numărul de iterații care trebuie evaluat - Avem 3 orientări posibile pentru fiecare motor și există 4 motoare diferite care îl fac 3 ^ 4 = 81 de stări în care robotul poate exista într-un singur pas sau stare. Trebuie să facem 4 pași diferiți pentru a finaliza o mișcare complexă, ceea ce înseamnă 81 ^ 4 = 43, 046, 721 combinații posibile care trebuie verificate pentru eficiență maximă pentru un ciclu de mișcare. Să presupunem că durează 5 secunde pentru a pregăti o singură stare ar dura 6,8250 de ani pentru a finaliza antrenamentul!
Pasul 4: MODULUL V2:
Algoritm Q-learning
Un algoritm de învățare a întăririi timpurii dezvoltat pentru instruirea lucrurilor cu stare finită și găsirea celor mai scurte căi. sursa:
Math of Algorithm: Există 81 de stări posibile pentru fiecare pas în care poate fi botul, numim aceste stări ca numere de la 1 la 81 și acum ceea ce vrem să știm este valoarea de tranziție, adică schimbarea poziției robotului (distanța mutată) în timp ce se deplasează de la o stare aleatorie s1 la o altă stare s2 (s1, s2 din acele 81 de stări). O putem vedea ca o matrice care are 81 de rânduri și 81 de coloane în care un element al matricei va fi egal cu valoarea distanței de la care s-a mutat corespunzător numărului său de rând și coloană. Aceste valori pot fi pozitive sau negative în funcție de acțiunea robotului într-un cuvânt real. Acum vom găsi o buclă închisă de stări în care distanța pe care o parcurge este întotdeauna pozitivă. Vom evalua valorile matricei 81x81 care sunt 81 ^ 2 = 6561, acum, dacă luăm 5 secunde pentru a obține aceste valori stocate în matrice, atunci va fi luați 9.1125 de ore doar pentru a face o întreagă matrice și apoi o buclă de pași pentru a maximiza eficiența de deplasare ar putea fi calculată cu ușurință.
Pasul 5: PROBLEME IMPLICATE -
- Pentru unele stări, mișcarea botului a fost foarte inegală și afectează valoarea senzorului ultrasonic, botul se va înclina și va lua distanța de la un perete îndepărtat.
- Problema deconectării de la laptop și a repornirii arduino a făcut ca antrenamentul de la valoarea 0 să fie foarte iritant.
- Urmărirea trenului robotului timp de 5 ore a fost foarte exhaustivă.
Pasul 6: MODULUL A1 și A2:
- Piesa mecanică include placa șasiului cu patru servouri fixate pe aceasta. Am folosit bastoane de înghețată pentru a face picioare.
- Sarcina noastră principală - să urmărim distanța dintre bot de poziția sa inițială.
- Prima noastră abordare a fost să folosim senzorul giroscopic și să folosim accelerația botului în timp ce acesta se deplasează pentru a-și extrage viteza și ulterior poziția.
- Problemă - S-a dovedit a fi prea complicat de implementat! Alternativă - Am restricționat mișcarea botului la o singură dimensiune și am folosit senzor cu ultrasunete pentru a măsura distanța de la un perete drept înainte în față.
- Modulul HC05-Bluetooth a fost utilizat în timpul perioadei de antrenament pentru a transmite rata de tranziție la distanță între doi pași către PC și acolo datele au fost stocate într-o matrice.
Pasul 7: Link către videoclipuri:
Pași pentru bebeluși:
Plan de antrenament:
Aproape drept:
Video robot de dans:
Vide0 final: