This is an old revision of the document!


Saber

Introducere

Aceasta pagina documentează realizarea unui robot mini-sumo.

Autor : Darmaz Andrei-Sebastian 332AC

Descriere generală

Ca și în artele marțiale tradiționale japoneze, roboții încearcă să își împingă oponentul în afara ringului. Reguli:

  • Dimensiuni maxime: robotul trebuie să încapă într-un pătrat 10 cm x 10 cm (100 x 100 mm).
  • Masa maximă a robotului nu trebuie să depășească 0,50 kg ( 500,00 gr.).
  • Robotul după start se poate extinde. Nu este permis ca robotul să se separe în 2 sau mai multe bucăți. El trebuie sa rămână un singur robot centralizat. Roboţii care nu vor respecta aceste reguli vor pierde meciul.
  • Șuruburi, piulițe, șaibe sau alte parți cu masa sub 5 gr, care se desprind, nu vor determina pierderea meciului.
  • Toți roboţii trebuie să fie autonomi. Poate fi implementat orice sistem de control, atâta timp cât acesta este în interiorul robotului şi nu interacționează cu un sistem de control exterior (om, mașină sau oricare altul).

Schema bloc:

Hardware Design

Lista de componente: Microcontroller:

  • Raspberry Pi® RP2040

Senzori:

  • TFMini Plus Micro LiDAR Module
  • Sharp GP2Y0D810Z0F
  • IMU LSM6DSOXTR (6-axis)
  • MICROPHONE MP34DT05

Conectivitate:

  • Wi-Fi Nina W102 uBlox module
  • BLUETOOTH® Nina W102 uBlox module
  • SECURE ELEMENT ATECC608A-MAHDA-T Crypto IC

Alimentare:

  • LiPo Gens Ace 7V6 300mA 75C
  • Step down 3V3 DFR0570
  • LM7805

Mecanice:

  • Pololu 10:1 Micro Metal Gearmotor HPCB 6V
  • Solarbotics RW2i Wheel
  • Pololu TB6612FNG

Șasiul robotului a fost realizat manual din tabla de oțel de 1mm. Pe vârful acestuia, plug, voi lipi o lama din titan.

Software Design

Mediu de dezvoltare folosit a fost Arduino IDE.

Biblioteci folosite : MBED_RP2040_PWM, TFMPlus, WiFiNINA.

Deoarece am utilizat microcontrollerul ARM RP2040 care dispune de doua coruri codul este împărțit astfel :

Primul core :

  • initializeaza pinii ca INPUT/OUTPUT
  • initializeaza comunicația UART cu senzorul LiDAR
  • acționează motoarele generând semnale PWM pure hardware. Prin urmare semnalele nu sunt întrerupte de eventuale blocaje din cod
  • interpreteaza strategia inițiala a robotului prin citirea dipswitch-ului
  • selectează modul de cautare / atac al robotuli pentru runda curenta
  • se ocupa de întreruperile generate de TSOP

Al doilea core:

  • Comunica cu senzorul LiDAR și transmite către core 1 distanta fata de oponent
  • se ocupa de întreruperile generate de QTR

Am implementat mai multe metode de cautare :

  • robotul se învârte pana când găsește adversarul
  • robotul se mișcă random pana la marginea ringului după care se rotește înapoi spre centru
  • robotul avansează încet spre centrul ringului

Fiecare căutarea are avantajul ei :

  • rotirea conferă o viziune completa a ringului, dar face ca lama robotului sa trepideze deci robotul este mai vulnerabil. În plus dacă acesta nu reacționează rapid la detecția adversarului va pierde timp pana când va ajunge din nou cu fata la acesta.
  • miscarea către margine este o strategie clasica, robotul nu este staționar astfel nu este o ținta ușoară și acoperă o distanta destul de mare deci poate detecta adversarul relativ ușor. Insa, pentru ca robotul se mișcă lama nu este fixată în ring deci se poate intra mai usor sub ea.
  • robotii mini sumo folosesc ultima strategie când sunt siguri de acuratețea senzorilor principali. Pentru ca avansarea către centru, dar și către adversar este lenta lama robotului nu tremura foarte mult deci sunt șanse cât mai mari sa între sub cea a adversarului și sa îl ridice sciazandui aderența. Robotul este vulnerabil în laterale fiind destul de staționar. Acest defect poate fi evitat folosind senzorii laterali (sharp/laser omron) însă din experiență daca adversarul a ajuns deja în lateral o întoarcere brusca cu ±90 va destabiliza robotul și acesta va pierde în continuare.

Aceste căutări sunt implementate în funcții diferite din Arduino și sunt selectate prin determinarea strategiei de pe dipswitch. Tot înaintea meciului pe dipswitch se slecteaza și atacul principal pe care robotul o sa îl facă.

Atacul inițial oferă un avantaj robotului prin cunoașterea poziției fata de adversar. Pin selectarea strategiei 0-16 ii comunicam robotului în ce poziție sa se miște. Astfel am implementat câteva strategii clasice folosite în meciuri de sumo :

  • Rotire cu ± 90 fata de poziția inițială - dacă robotul adversar se afla în stânga/dreapta odată cu pornirea meciului vom ajunge cu fata către el fără sa îl mai căutăm în ring.
  • Arc stânga/dreapta - se folosește dacă credem ca robotul adversar o sa ajungă cu fata către noi. Prin descrierea unui arc vom puteam ajunge în spatele/lateralul acestuia.
  • 180 de grade - pentru meciurile spate - spate
  • etc alte strategii asemănătoare cu cele menționate anterior.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2022/cristip/saber.1653599277.txt.gz · Last modified: 2022/05/27 00:07 by andrei.darmaz
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0