Robot Sharky kontrolowany kontrolerem PS4 + ESP32CAM z detekcją obiektów

Typ_projektu
Arduino
Zdjecie główne
Krótki opis projektu

Ze względu na utrudnienia z którymi spotkaliśmy się dopiero w trakcie wykonywania projektu, nasz zespół zrobił dwa oddzielne projekty w ramach jednego. Płytka ESP32 nie jest w stanie wysyłać i odbierać sygnał WIFI i Bluetooth na raz. Chcieliśmy z obu tych technologii skorzystać co okazało się bardzo trudne i skomplikowane do wykonania. Istniejące rozwiązania tego problemu spowodowałoby utratę płynności i duże opóźnienie.

Niezbędne elementy

1. Robot Sharky, albo jakikolwiek robot z dwoma serwomechanizmami, podłączony z płytką ESP32.

2. Kontroler yPS4

3. Do drugiej części projektu jest potrzebna kamerka do płytki ESP32 np OV2640

sharky

Opis projektu

Zdecydowaliśmy się na kontrolowanie naszego robota za pomocą Dualshock4, pada od PlayStation 4, ze względu na możliwość podłączenia go do innych urządzeń za pomocą Bluetooth, co było niemożliwe w przypadku naszego pierwszego wyboru, którym był kontroler od Xbox. Pierwszym etapem było uzyskanie adresu MAC płytki ESP32, co udało się osiągnąć prostym kodem arduino. Następnym krokiem, który stworzył nam najwięcej problemów w tej części zadania było ustawienie tego samego adresu MAC na kontrolerze. Większość kodów, czy aplikacji stworzonych do tego nie działała, bądź nie wykrywała naszego pada. Gdy już jednak udało nam się podłączyć kontroler do płytki, otworzyliśmy przykład z biblioteki stworzonej właśnie do DS4, która odczytywała sygnały przesyłane przez konkretne przyciski pada. Napisaliśmy bibliotekę z funkcjami jazdy w przód, skrętów oraz zatrzymania robota i zdecydowaliśmy się na sterowanie za pomocą prawego drążka, co daje największą płynność przy zmianie prędkości robota, oraz opcję przyspieszenia po wciśnięciu przycisku R2.

 

Drugą częścią projektu było wykrywanie obiektów za pomocą algorytmu AI. Tak jak wcześniej skorzystaliśmy z kamerki ESP32 w wersji z kamerką. Do wykonania naszego projektu wykorzystaliśmy algorytm YOLOv3, który jest dostępny na internecie (Link na dole). Żeby algorytm nam zadziałał, musimy wgrać kod arduino do płytki esp32, oraz urchomić kod w Pythonie. Właśnie tak, do drugiej części naszego projektu posłużyliśmy się Pythonem z biblioteką OpenCV który umożliwi nam uruchomienie wyżej wymienionego algorytmu. Skorzystaliśmy z wersji 3.12.3 Pythona. Jak zainstalować bibliotekę OpenCV:

Po zainstalowaniu Pythona wpisujemy poniższy kod w wierszu polecenia:

Usunięto obraz.

Na czym polego algorytm YOLO:
YOLOv3 to najnowocześniejszy algorytm wykrywania obiektów, który może dokładnie wykrywać i klasyfikować obiekty w czasie rzeczywistym. Działa poprzez dzielenie obrazu wejściowego na siatkę i przewidywanie ramek ograniczających oraz prawdopodobieństw klas dla każdej komórki siatki. YOLOv3 jest znany ze swojej szybkości i dokładności, dzięki czemu nadaje się do zastosowań wymagających wykrywania obiektów w czasie rzeczywistym, takich jak nadzór, robotyka lub systemy inteligentnego domu.

Do działania programu potrzebujemy plików yolov3.weights i yolov3.names dostępnych na stronie:

Usunięto obraz.

Pierwsza część projektu z kontrolerem uważamy za udaną, jednak przy drugiej został lekki niedosyt. Nasz projekt z wykrywaniem obiektów może posłużyć za przydatną bazę do zrobienia jakiegoś ciekawego systemu automatyki.

Zdjęcia
robot pad
robot objectD
kod programu
#ifdef ESP32
  #include <WiFi.h>
#else
  #include <ESP8266WiFi.h>
#endif

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("ESP Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
}
 
void loop(){

}
//kod do uzyskania adresu MAC płytki ESP
Youtube
Tagi
#sharky #robot #esp32_cam #esp32 #AI #Object #Detection
Odnośniki zewnętrzne
https://www.electroniclinic.com/esp32-cam-with-python-opencv-yolo-v3-for-object-detection-and-identification/,
https://www.youtube.com/watch?v=dRysvxQfVDw&ab_channel=hashincludeelectronics,
https://www.youtube.com/watch?v=npJsmbFZiMg&t=11s&ab_channel=ElectronicClinic,
https://pjreddie.com/darknet/yolo/