Spisu treści:

Roomba Projekt MATLAB: 5 kroków
Roomba Projekt MATLAB: 5 kroków

Wideo: Roomba Projekt MATLAB: 5 kroków

Wideo: Roomba Projekt MATLAB: 5 kroków
Wideo: MATLAB - Lekcja 4 - Proste aplikacje w MatLabie 2024, Listopad
Anonim
Projekt Roomba MATLAB
Projekt Roomba MATLAB

Obecny plan, jaki NASA ma dla łazika marsjańskiego, polega na tym, aby był zbieraczem danych i wędrował po Marsie, zbierając próbki gleby, aby sprowadzić je z powrotem na Ziemię, aby naukowcy mogli zobaczyć, czy na planecie były jakieś wcześniejsze formy życia. Dodatkowo łazik wysyła obrazy z powrotem do naukowców, aby mogli pomóc w nawigacji łazikiem i naprawiać wszelkie problemy, jakie może mieć.

Pomysł naszej grupy na nasz projekt polega na tym, aby łazik robił to samo, co łazik NASA, który opuści Ziemię w 2020 roku, ale także nakreślił geografię lądu. Roomba byłaby w stanie wyczuć klify i zatrzymać się, zanim spadnie, a następnie cofnąć się, zawrócić i zmienić kurs, aby nie spadła i nie została uszkodzona. Innym naszym pomysłem zintegrowanym z naszym projektem jest to, aby roomba mogła wykreślać punkty orientacyjne, które widzi, i pokazywać wykres za każdym razem, gdy pętla się zakończy i jej przebieg zostanie wykonany.

Ta instrukcja jest przeznaczona dla każdego, kto chciałby stworzyć ten sam typ kodu dla swojego Roomba.

Krok 1: Krok 1: Potrzebne materiały

Krok 1: Potrzebne materiały
Krok 1: Potrzebne materiały
Krok 1: Potrzebne materiały
Krok 1: Potrzebne materiały

Będziesz potrzebować:

  1. Pokój
  2. MATLAB
  3. Ten plik do uruchomienia Roomba
  4. Płaska powierzchnia
  5. Powierzchnia stołu pełniąca funkcję „klifu”

Krok 2: Krok 2: Konfiguracja/pobieranie kodu dla robota Roomba

Krok 2: Konfiguracja/uzyskanie kodu dla robota Roomba
Krok 2: Konfiguracja/uzyskanie kodu dla robota Roomba

Twój ekran będzie wyglądał tak po wprowadzeniu plików.

Krok 3: Krok 3: Konfiguracja czujników wysokości/lampek LED

Ten kod wskaże Twojemu Roombie dokładnie, o jaki kąt skręcić, sprawdzi informacje o akumulatorze, poinformuje Twojego Roomba, jak szybko ma jechać, i sprawdzi, czy nie ma osoby przez kamerę Roomby. Wyda również sygnał dźwiękowy, jeśli zidentyfikuje osobę i zatrzyma się przed zejściem z klifu.

% spróbuj rob.setLEDDigits('') x=0; y=0; theta=0; przeszkoda = ; cykl = 1; AngCorr = @(x)x + 3.059.*x.^0.4205; %Funkcja poprawiania kątów skrętu, gdy rob.getBatteryInfo.percent > 15 rob.setLEDDigits('') rob.setDriveVelocity(0.1) %Go %Sprawdź dla osoby, jeśli AA_checkperson(rob) rob.beep end %Sprawdź czujnik wysokości, jeśli AA_cliffcheck(rob) rob.stop rob.setLEDDigits('Cliff') pauza(0.5) przeszkoda(cykl) = 2; AA_cliffbeep(rob) % Back Up and Turn rob.moveDistance(-.15) rob.turnAngle(30) end

Krok 4: Krok 4: Sprawdzanie przeszkód

Ten kod spowoduje, że Roomba sprawdzi, czy nie ma wokół niego przedmiotów, i sprawdzi czujnik uderzeń, aby upewnić się, że zatrzymuje się, zanim sam się uszkodzi.

%Sprawdź czujnik światła, jeśli AA_lightcheck(rob) rob.stop rob.setLEDDigits('Ściana') pauza(0,5) przeszkoda(cykl) = 1; %Wall AA_wallbeep(rob) %Back Up And Turn rob.moveDistance(-.15) rob.turnAngle(30) end %Sprawdź czujnik uderzenia jeśli AA_bumpcheck(rob) rob.stop rob.setLEDDigits('Wall') pause(0.5) przeszkoda (cykl) = 1; %Wall AA_wallbeep(rob) %Wstecz i skręć rob.moveDistance(-.15) rob.turnAngle(30) end %Jeżeli żadna nie jest pusta (przeszkoda) przeszkoda(cykl) = 0; elseif długość(przeszkoda) < przeszkoda rowerowa(cykl) = 0; kończyć się

Krok 5: Krok 5: Wykres

Krok 5: Drukowanie
Krok 5: Drukowanie

Ten kod powie Twojemu Roombie, aby wykreślił, co napotka podczas swojej podróży. Działka taka jak ta pojawi się po zatrzymaniu Roomby.

% Pobierz pozycję d = rob.getDistance; jeśli cykl == 1 theta(cykl) = 0; x(cykl) = d.*cosd(theta(cykl)); % całkowitej odległości przebytej w x y(cykl) = d.*sind(theta(cykl)); % całkowitej odległości przebytej w ciągu y inaczej theta(cykl) = theta(cykl-1) + rob.getAngle; x(cykl) = d.*cosd(theta(cykl)) + x(cykl-1); % całkowitej odległości przebytej w x y(cykl) = d.*sind(theta(cykl)).*d + y(cykl-1); % całkowitej przebytej odległości na końcu y %Warunek przerwania, jeśli rob.getButtons.clean koniec przerwania %Cykl przyrostu cyklu = cykl + 1; end rob.stop for i = 1:cykl jeśli przeszkoda(i) == 1 %Wykres ściany(x(i), y(i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif przeszkoda (i) == 2 %Cliff plot(x(i), y(i), 'Marker', 'o', 'MarkerEdgeColor', 'k') end text(.9, 0.9, sprintf('Square = Wall \nOkrąg = Urwisko'), 'Jednostki', 'znormalizowane') wstrzymaj na końcu %Sygnał niebezpieczeństwa dopóki prawda rob.beep pauza(3) if rob.getButtons.clean break end end % catch % rob.stop % end

Zalecana: