Table of Contents

Autonomous 360° Robot

Nume: Ceaușu Matei Călin
Grupa: 331CA

Introducere

Scopul proiectul este crearea unui robot autonom capabil să se miște în orice direcție fără a cauza coliziuni. Libertatea de a se mișca în orice direcție fără intoarceri este dată de roțiile mecanum, iar pentru a nu cauza coliziuni se folosește un senzor lidar care scanează împrejurimile.

Pe baza datelor de la senzor se va implementa un algoritm care să îi permită să se miște fără instrucțiuni din partea utilizatorului.

Descriere generală

Robotul va avea două moduri de funcționare:


Indiferent de modul de funcționare, robotul va scana în permanență împrejurimile și va menține o distanță adecvată față de orice obstacol.

Ideea modului autonom este de a reproduce comportamentul roboțiilor de tipul Roomba sau a mașinilor automate de tuns iarbă.


Una din imediatele provocări este reprezentate de fizica din spatele roțiilor mecanum. Pentru a justifica prezența senzorului lidar și pentru a îl folosi la capacitate maximă, am decis ca robotul să fie capabil să se miște în orice direcție indiferent de orientare. Această performanță poate fi ușor obținută folosind roțiile mecanum.
Prin compunerea mișcării celor 4 roți se pot obține mișcările clasice (față, spate, rotație dreapta, rotație stânga), dar și mișcări mai rare (dreapta, stânga, oblic, rotație față de un punct fix).

Hardware Design

Pentru a realiza acest proiect, am decis să folosesc următoarele componente:

Schema electrică:

În plus, pentru a conecta roțiile mecanum la motoare, a fost nevoie să proiectez și să printez un fel de adaptor.

Software Design

Pentru a dezvolta partea software am folosit Arduino IDE.

Pentru a controla robotul, am decis să folosesc biblioteca “DabbleESP32”. Aceasta transformă smartphone-ul într-un gamepad. Telefonul comunică cu modulul ESP32 prin BLE.

Pentru a folosi ecranul OLED, am folosit biblioteca “Adafruit_SSD1306.h”. Pe display am desenat niște ochișori, oferind astfel un strop de personalitate robotului. Ecranul comunică prin intermediul protocolului I2C cu modulul ESP32. Modulul ESP32 ciclează prin mai multe tipuri de fețe pe baza unui timer. Se schimbă o dată pe secundă. Această schimbare se face folosind un timer care declanșează o întrerupere ce incrementează un contor ce reprezintă tipul de față ce urmează a fi afișat. În momentul în care utilizatorul intră în modul autonom, ecranul se schimbă pentru a indica faptul că acesta nu mai este controlat.

În ceea ce privește controlul motoarelor, de fiecare dată când un buton de pe gamepad este apăsat, se va apela o funcție care pune motoarele pe starea high sau low în funcție de direcția în care se dorește să se deplaseze.

Pentru modulul Lidar, am decis să folosesc biblioteca funcțiile din biblioteca “LDS”(în cazul meu LDS_YDLIDAR_X2_X2L). Pentru acest model de lidar, modulul ESP32 comunică prin UART. Acesta are 2 pini, unul prin care primește date de la lidar și un PWM prin care se controlează viteza de rotație a senzorului.

Rezultate Obţinute

Montarea motoarelor

Testarea codului ce acționează motoarele

Expresiile faciale

Datele primite de la lidar

Pe serială pot fi vizualizate datele primite de la senzorul lidar. Primul este id-ul pachetului, al doilea număr este distanța, iar ultimul număr este unghiul la care a fost masurată acea distanță.

Demo

Link către un scurt demo al proiectului:

https://youtube.com/shorts/X2Ot9Cvt91s?feature=share

Concluzii

Proiectul are aplicabilitate în viața reală, însă nu în viața de zi cu zi. Acest robot se deosebește de alții prin gradul foarte mare de mobilitate și libertate. Totuși, folosind un senzor lidar, poate în continuare să evite coliziunile din orice direcție.

Niciodată să nu ai încredere oarbă în bibliotecile de arduino făcute de alte persoane și cu puține review-uri.

Exisă o forță magică și inexplicabilă care apropie cablurile nesupravegheate între care există o tensiune mare. Motiv pentru care am văzut fumul magic de 2 ori înainte de PM Fair!

Jurnal

03.05 - Adăugarea descrierii, a introducerii și a listei de componente hardware
26.05 - Finalizare pagină

Bibliografie/Resurse

Resurse Hardware
Fizica din spatele roțiilor mecanum: https://www.youtube.com/watch?v=gnSW2QpkGXQ
Resurse Software
https://www.arduino.cc/reference/en/libraries/dabbleesp32/
https://github.com/kaiaai/LDS

Codul sursă https://github.com/MathewColin/Proiect_PM

Export to PDF