Skip to content
/ IPZ Public

Projekt studencki autonomicznego samochodu poruszającego się po ulicach miasta.

Notifications You must be signed in to change notification settings

AitenAndGo/IPZ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PROJEKT AUTONOMICZENGO SAMOCHODU:

kliknij aby obejrzeć

Projekt autonomicznego samochodu

Celem projektu będzie stworzenie autonomicznego modelu samochodu potrafiącego poruszać się po makiecie miasta ze skrzyżowaniem i światłami, samochód będzie w stanie sam poruszać się po drodze, odpowiednio reagować na światła drogowe, oraz podejmować decyzje o swojej trasie.


1. Wprowadzenie

W ramach kursu Interdyscyplinarny projekt zespołowy przez 15 tygodni w grupie 4 osób będziemy pracować nad stworzeniem automocznego pojazdu, potrafiącego poruszać się na stworzonej drodze i reagować na światła drogowe. Cały projekt jest udokumentowany a pliki będą dostępne tutaj. Rownież poniżej będzie dostępny i pokazany cały proces tworzenia projektu, więc chętne osoby będą mogły spróbować odtworzyć tą koncepcję. Samo stowrzenie takiego pojazdu wraz z całym systemem i makietą jest zadaniem wymagającym dużej wiedzy z zakresu programowania, elektroniki i mechaniki. Do dzieła!

2. Cele projektu

  • zbudowanie pojazdu mobilnego
  • stworzenie środowiska po którym będzie poruszał się pojazd
  • stowrzenie systemu świateł drogowych na skrzyżowaniu
  • implementacja oprogramowania z systemem wizyjnym
  • stworzenie bazy danych
  • stworzenie strony internetowej

3. Plan projektu

Szczegółowy plan projektu dostępny jest tutaj


Realizacja

Realizacja projektu skłądała się na 4 główne etapy:

  • Makieta skrzyżowania
  • Strona internetowa
  • Program strujący makietą miasta
  • samochód Wszystkie potrzebne kody i modele znajdują się na tutaj. Teraz opiszę każdy z etapów, aby przybliżyć sposób w jaki projekt został zrealizowany. Zaczynajmy!

Makieta

Makieta miała składać się ze skrzyżowania, które posiada 4 drogi wejściowe i wszystkie z dróg łączą się ze sobą tworząc zewnętrzy prostokątny pierścień. Na skrzyżowaniu są 4 światła drogowe, każde z nich osobne do kierowania ruchem przy danej drodze wejściowej. przed wjazdem na środek skrzyżowania na każdej z dróg jest również ustawiony czytnik RFID. Czytnik ten za każdym razem, gdy przejeżdza auto ze swoją kartą RFID zczytuje ją i informuje server o tym że dane auto znalazło się właśnie na danej drodze. Aby wszystko mogło działać potrzebny był mikrokontroler do sterowania światłąmi i RFID. Wybraliśmy esp32, które posiada modół bluetooth oraz wifi co ułatwi komunikację z samochodem. Wszystkie światła i czujniki trzebabyło połączyć z mikrokontrolerem co nie jest lada zadaniem. Ze względu na wielkość makiety i ilość potrzebnych połączeń (tutaj warto dodać że czujniki RFID było zkomunikowane za pomocą protokołu SPI), wykorzystaliśmy płytkę prototypową do dzięki której uzyskaliśmy uporządkowany i zchludny układ elektryczny makiety. Poniżej pewne zdjęcia i filmy przedstawiające proces powstawania makiety: makieta 435650640_2062892654094104_2510210449119449921_n 440818486_815108286667908_91705931173108030_n IMG_20240619_123124

Program sterujący makietą

Makieta zwana przez nas "miastem" pełni w tym projekcie wiele aspektów. Odpowiada ona za odpowiednie przełączanie świateł, komunikuje się z serverem i przesyła informacje o odczytanych przejazdach samochodu, oraz musi komunikować się z samochodem aby informować go w momencie gdy przejeżdża on przez skrzyżowanie czy aktualne światło mu na to zezwala. Wszelkie kody można znaleźć w katalogu projektu i powinny one wyjaśnić wszelkie niepewności.

Strona internetowa

Projekt miał być tak zrobiony, że w teorii można by było wiele samochodów puścić po podobnej makiecie, tylko większej. W związku z tym na serwerze python-anywhere postawiono bardzo prostą stronę internetową (Flask + HTML) oraz podłączono do niej relacyjną bazę danych (MySQL). Baza ta ma 3 tabele: Car, Server oraz City_Trafic. W pierwszej tabeli są wszystkie samochody, które mogą jeździć po makiecie - każdy ma swoje ID oraz status isDriving (czy aktualnie ejst w trakcie jazdy). Dodatkowo przy każdy są przyciski START i STOP - samochody maja być autonomiczne i można nimi sterowac z poziomu strony internetowej, klikając w przycisk Start samochód o danym ID startuje. Druga tabela Server przechowuje informacje o tym, o której godzinie zaczął i skończył jazdę samochód o danym ID w mieście o danym ID. Trzecia tabela to jest kontrola, o której godzinie samochód o danym ID przejechał przez światła (w naszym projekcie były 4: Północ, Południe, Wschód i Zachód).

image

Screenshot 2024-06-22 20-27-15

Samochód

Na samochód składają się w sumie 4 części:

  • model 3D
  • elektronika
  • model do rozpoznawania znaków
  • program sterujący Pliki .stl do wydrukowania modelu samochodu można znaleźć w repozytrium projektu. Składa się z dwóch warst, pomiędze znajduje się powerbank, który głównie determinuje wymiary samochodu. Zawera specjalny uchwyt na kamerę a sterowanie kołami przednimi odbywa się przy pomocy micro-serva. W kontekście elektroniki samochód jest napędzany dwoma silnikami na tylnej osi. Silniki są kontrolowane sygnałąmi PWM z drivera LN289. Zasilanie silników jest z pakietu Li-Po 3s i przetwornicy zmniejszającej napięcie do 6V. Głównym komponentem jest RaspberryPi 4 które pełni funkcję sterowania całym samochodem. Złożony samohchód wygląda następująco: IMG20240527121051 Do rozpoznawania znaków użyto biblioteki fastAi, która kożysta z PyTorch. Zostało zrobione łącznie 400 zdjęć o 4 różnych etykietach tj. prawo, lewo, prosto i bez znaku. Następnie wytrenowano model zgodnie z kodem dostępnym w repozytorium projektu. Całość została wykonany w google colab więc w łatwy sposób można prześledzić tok postępowania. Gotowy model posiadał błąd w wysokości 1%. Najtrudniejszym zadaniem było stworzenie programu do sterowania. Aby przygotować program jeszcze przed stworzeniem samochodu i dostępem do mikrokomputera została stworzona symulacja w środowisu Unity. Symulacja pozwalała na przygotowanie podstaw skryptu. Działanie skryptu i symulacji przedstawia poniższe nagranie:

SIMULATION VIDEO:

FirstSimulationWithIntersection.mp4

Następnie gdy samochód był gotowy należało przygotować środowisko na raspberry. W celu instalacji wszystkich bibliotek zaleca się skorzystanie z minicondy i następnie na stworzonym wirtualnym środowisku zainstalować wszystkie wszystkie biblioteki. Ważne jest również aby system był odpowiedi do zainstalowania PyTorch (potrzebny system 64-bitowy). Program składa się z lokalnej strony na której można mieć podgląd na żywo z widoku kamery co jest bardzo pomocne do debugowania błędów.

REMOTLY CONTROLLED CAMERA TEST

CAMERA_TEST.mp4

Gdy wszystko było przygotowane możnabyło przetestować kod na stowrzonym testowtm torze. Po wielu próbach osiągnięto pozytywne rezultaly co prezentuje poniższy film:

VID_20240608215514.mp4

Całość już połączonego systmu wszytskich elementó można zobaczyć na głównym filmie przedstawiającym cały projekt!.

About

Projekt studencki autonomicznego samochodu poruszającego się po ulicach miasta.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published