Spisu treści:
- Krok 1: Inicjalizacja i czujniki
- Krok 2: Uzyskiwanie danych
- Krok 3: Zakończenie misji
- Krok 4: Wniosek
Wideo: Roomba Explorer: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Wykorzystując MATLAB i robota Create2 firmy iRobot, projekt ten zbada różne obszary nieznanej lokalizacji. Zastosowaliśmy czujniki robota, aby pomóc manewrować niebezpiecznym terenem. Pobierając zdjęcia i przekaz wideo z podłączonego Raspberry Pi, byliśmy w stanie określić przeszkody, z jakimi będzie musiał się zmierzyć Robot, i zostaną one sklasyfikowane.
Części i materiały
Do tego projektu będziesz potrzebować
-komputer
-najnowsza wersja MATLAB (do tego projektu użyto MATLAB R2018b)
- roombaZainstaluj zestaw narzędzi
- Robot Create2 firmy iRobot
-Raspberry Pi z kamerą
Krok 1: Inicjalizacja i czujniki
Przed rozpoczęciem jakiegokolwiek programowania pobraliśmy zestaw narzędzi roombaInstall, który umożliwiał dostęp do różnych komponentów Robota.
Początkowo stworzyliśmy GUI do inicjalizacji dowolnego robota. W tym celu należy wpisać numer Robota jako dane wejściowe. Umożliwi to dostęp do uruchomienia naszego programu do Robota. Pracowaliśmy nad tym, aby Robot poruszał się po wielu napotkanych terenach. Wdrożyliśmy czujniki urwiska, czujniki lekkiego uderzenia i czujniki fizycznego uderzenia, wykorzystując ich wyjścia do wyzwalania robota w celu zmiany jego prędkości lub kierunku. Gdy którykolwiek z sześciu czujników świetlnych uderzeń wykryje obiekt, wyprowadzana przez nie wartość zmniejszy się, powodując zmniejszenie prędkości robota, aby uniknąć kolizji pełnej prędkości. Gdy robot w końcu zderzy się z przeszkodą, czujniki fizycznego uderzenia zgłoszą wartość większą od zera; z tego powodu Robot zatrzyma się, więc nie będzie dalszych kolizji i będzie można uruchomić więcej funkcji. Czujniki klifu odczytają jasność otaczającego ich obszaru. Jeśli wartość jest większa niż 2800, ustaliliśmy, że Robot będzie na stabilnym podłożu i bezpieczny. Ale jeśli wartość jest mniejsza niż 800, czujniki klifu wykryją urwisko, natychmiast się zatrzymają, aby nie spaść. Każda wartość pomiędzy nimi została określona jako reprezentująca wodę i spowoduje, że Robot zatrzyma swoje działanie. Korzystając z powyższych czujników, zmienia się prędkość Robota, co pozwala nam lepiej określić, czy istnieje jakieś niebezpieczeństwo.
Poniżej znajduje się kod (z MATLAB R2018b)
%% inicjalizacji
dlgPrompts = {'Numer pokoju'};
dlgTitle = 'Wybierz swoją Roombę';
dlgDefaults = {''};
opts. Resize = 'włączone';
dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Utwórz okno, które prosi użytkownika o wprowadzenie numeru Roomba
n=str2double(dlgout{1});
r=pokójba(n); % Inicjuje określone przez użytkownika Roomba %% Określanie prędkości z czujników świetlnych uderzeń, podczas gdy true s=r.getLightBumpers; % uzyskaj lekkie czujniki uderzeniowe
lbumpout_1=pole(a) wyodrębnienia, 'po lewej'; % pobiera wartości liczbowe czujników i czyni je bardziej użytecznymi lbumpout_2=extractfield(s, 'leftFront');
lbumpout_3=pole(a) ekstrakcji, 'leftCenter';
lbumpout_4=pole(a) ekstrakcji, 'rightCenter';
lbumpout_5=pole(a) ekstrakcji, 'rightFront';
lbumpout_6=pole(a) wyodrębniania, 'prawo';
lbout=[lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % konwertuje wartości na macierz
sLbump=sortuj(lbout); % sortuje macierz do najniższej wartości, którą można wyodrębnić
lowLbump=sLbump(1); speed=0,05+(lowLbump)*0,005 %używając najniższej wartości, która reprezentuje bliskie przeszkody, w celu określenia prędkości, wyższa prędkość, gdy nic nie wykryto
r.setDriveVelocity(prędkość, prędkość)
kończyć się
% fizycznych przerywników
b=r.getBumpery; % Wyjście prawda, fałsz
bsen_1=pole wyodrębnienia(b, 'po lewej')
bsen_2=pole wyodrębnienia(b, 'prawo')
bsen_3=pole ekstrakcji(b, 'przód')
bsen_4=pole wyodrębnienia(b, 'spadek lewego koła')
bsen_5=pole wyodrębniania(b, 'rightWheelDrop')
wstrząsy=[bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump=suma(bums)
if tbump>0 r.setDriveVelocity(0, 0)
kończyć się
% Czujniki urwiska
c=r.getCliffSensors %% 2800 bezpieczne, w przeciwnym razie woda
csen_1=pole wyodrębnienia(c, 'po lewej')
csen_2=pole wyodrębnienia(c, 'prawo')
csen_3=pole wyodrębnienia(c, 'lewy przód')
csen_4=pole wyodrębnienia(c, 'rightFront')
klify=[csen_1, csen_2, csen_3, csen_4]
ordcliff=sortuj(klify)
jeśli ordcliff(1) < 2750
r.setDriveVelocity(0, 0)
jeśli klif <800
disp 'klif'
w przeciwnym razie
wylej "wodę"
kończyć się
r. Kąt skrętu(45)
kończyć się
Krok 2: Uzyskiwanie danych
Po wyzwoleniu fizycznych czujników uderzeń robot zaimplementuje na pokładzie Raspberry Pi, aby zrobić zdjęcie przeszkody. Po wykonaniu zdjęcia, wykorzystując rozpoznawanie tekstu, jeśli na zdjęciu jest tekst, Robot określi, czym jest przeszkoda i co mówi przeszkoda.
img = r.getImage; imshow(img);
imwrite(img, 'imgfromcamera.jpg')
zdjęcie = imread('imgfromcamera.jpg')
ocrResults = ocr(zdjęcie)
rozpoznanyTekst = ocrResults. Tekst;
postać;
imshow(zdjęcie) text(220, 0, rozpoznany tekst, 'Kolor tła', [1 1 1]);
Krok 3: Zakończenie misji
Gdy Robot stwierdzi, że przeszkodą jest DOM, zakończy swoją misję i pozostanie w domu. Po zakończeniu misji Robot wyśle e-mail z powiadomieniem, że wrócił do domu, a także wyśle zdjęcia, które zrobił podczas swojej podróży.
% Wysyłać email
setpref('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref('Internet', 'E_mail', '[email protected]'); % konto pocztowe do wysłania z setpref('Internet', 'SMTP_Username', 'enter sender email'); % senders username setpref('Internet', 'SMTP_Password', 'wprowadź hasło nadawcy'); % Hasło nadawców
rekwizyty = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'prawda'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');
sendmail('Wpisz e-mail odbierający', 'Roomba', 'Roomba wróciła do domu!!', 'imgfromcamera.jpg') % konto pocztowe do wysłania
Robot jest wtedy gotowy.
Krok 4: Wniosek
Dołączony program MATLAB jest oddzielony od całego skryptu, który był używany z Robotem. W ostatecznej wersji upewnij się, że cały kod, z wyjątkiem kroku inicjalizacji, został umieszczony w pętli while, aby upewnić się, że przerywniki są stale uruchomione. Program ten można edytować w celu dostosowania do potrzeb użytkownika. Pokazana jest konfiguracja naszego Robota.
*Przypomnienie: Nie zapomnij, że zestaw narzędzi roombaInstall jest potrzebny do interakcji MATLAB z robotem i wbudowanym Raspberry Pi.
Zalecana:
Projekt Mars Roomba UTK: 4 kroki
Projekt Mars Roomba UTK: OŚWIADCZENIE: TO DZIAŁA TYLKO JEŚLI ROOMBA JEST KONFIGUROWANA W BARDZO SZCZEGÓLNY SPOSÓB, TA INSTRUKCJA ZOSTAŁA STWORZONA I PRZEZNACZONA DO UŻYWANIA PRZEZ STUDENTÓW I WYDZIAŁÓW NA UNIWERSYTECIE TENESSEE Ten kod służy do konfigurowania robota Roomba do lokalnego działania napisane i s
Robot Roomba ze wspomaganiem astronautów: 4 kroki
Astronaut-Assisting Roomba: Ten projekt jest realizowany przy użyciu Raspberry Pi 3 na pokładzie iRobot Create Version 2. Program MATLAB służy do programowania robota, aby wykonywał określone instrukcje za pomocą czujników i kamery. Czujniki i kamery są wykorzystywane do wykonywania określonych zadań
Roomba Scout Explorer: 8 kroków
Roomba Scout Explorer: Jako jeden z najbardziej oczekiwanych i intensywnie zbadanych projektów amerykańskich, projekty łazika marsjańskiego stały się ludzkim osiągnięciem w stale postępującej produkcji zaawansowanych technologicznie systemów autonomicznych, których jedynym celem jest badanie i analiza
Localino śledzi robota Roomba IRobot, mapuje środowisko i umożliwia sterowanie.: 4 kroki
Localino śledzi robota Roomba IRobot, odwzorowuje środowisko i umożliwia sterowanie.: Ta instrukcja wyjaśnia procedurę śledzenia i sterowania robotem Roomba iRobot w pomieszczeniu za pomocą systemu lokalizacyjnego Localino, mostka WiFi-UART i aplikacji komputerowej. Szczegółowy opis tego instruktażu, wyjaśniający kontrolę HIL
ROOMBA Driven by ARDUINO YUN Via Wifi App by STEFANO DALL'OLIO: 4 kroki (ze zdjęciami)
ROOMBA Driven by ARDUINO YUN Via Wifi App by STEFANO DALL'OLIO: Dzięki temu przewodnikowi udostępniam kod, aby połączyć ARDUINO YUN z Roombą w celu prowadzenia Roomby przez Wi-Fi. Kod i aplikacja są w pełni stworzone i opracowane przeze mnie Stefano Dall” Olio.Mój Roomba to Roomba 620, ale możesz użyć tego samego kodu dla innego Roomba