Taula de continguts:

Projecte Roomba MATLAB: 5 passos
Projecte Roomba MATLAB: 5 passos

Vídeo: Projecte Roomba MATLAB: 5 passos

Vídeo: Projecte Roomba MATLAB: 5 passos
Vídeo: MATLAB Toolbox iRobot implementada com redes neurais artificiais MLP e RBF 2024, Juliol
Anonim
Projecte Roomba MATLAB
Projecte Roomba MATLAB

El pla actual que la NASA té per al rover de Mart és que sigui un recopilador de dades i vagi al voltant de Mart, recollint mostres del sòl per tornar a la Terra perquè els científics puguin veure si hi havia alguna forma de vida anterior al planeta. A més, el rover envia imatges als científics perquè puguin ajudar-lo a navegar i solucionar qualsevol problema que pugui tenir.

La idea del nostre grup per al nostre projecte és que el rover faci el mateix que el rover de la NASA que deixarà la terra el 2020, però que també mapegi la geografia del país. El roomba seria capaç de detectar penya-segats i aturar-se abans que caigui, i després fer una còpia de seguretat, girar i canviar el rumb perquè no caigui i es faci malbé. La nostra altra idea integrada al nostre projecte és que roomba pugui traçar les fites que veu i mostrar una trama cada vegada que s’acaba el bucle i s’ha executat el seu recorregut.

Aquesta instrucció és per a qualsevol altra persona que vulgui crear el mateix tipus de codi per a la seva roomba.

Pas 1: pas 1: materials necessaris

Pas 1: materials necessaris
Pas 1: materials necessaris
Pas 1: materials necessaris
Pas 1: materials necessaris

Necessitarà:

  1. A roomba
  2. MATLAB
  3. Aquest fitxer per executar el roomba
  4. Una superfície plana
  5. Una superfície de taula per fer de "penya-segat"

Pas 2: Pas 2: Configuració / Obtenció de codi per Roomba

Pas 2: Configuració / Obtenció de codi per Roomba
Pas 2: Configuració / Obtenció de codi per Roomba

La pantalla tindrà aquest aspecte un cop hàgiu introduït els fitxers.

Pas 3: Pas 3: Configuració de sensors de penya-segat / llums LED

Aquest codi us indicarà exactament quin angle gireu a roomba, comprovarà la informació de la bateria, indicarà a roomba la velocitat d’anar i buscarà una persona a través de la càmera de roomba. També sonarà si identifica una persona i s’aturarà abans de sortir d’un penya-segat.

% prova rob.setLEDDigits ('') x = 0; y = 0; theta = 0; obstacle = ; cicle = 1; AngCorr = @ (x) x + 3.059. * X. ^ 0,4205; % Funció per corregir els angles de gir mentre rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0,1)% Anar% Consulta de persona si AA_checkperson (rob) rob.beep end% Comprova el sensor de penya-segat si AA_cliffcheck (rob) rob.stop rob.setLEDDigits ('Cliff') pausa (0,5) obstacle (cicle) = 2; AA_cliffbeep (rob)% Fer una còpia de seguretat i girar rob.moveDistance (-. 15) rob.turnAngle (30) end

Pas 4: Pas 4: Comprovació d'obstacles

Aquest codi obtindrà el roomba per comprovar si hi ha elements al voltant i comprovarà el sensor de cops per assegurar-se que s’atura abans que es faci malbé.

% Comproveu el sensor de llum si AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') pausa (0,5) obstacle (cycle) = 1; % Wall AA_wallbeep (rob)% Fes una còpia de seguretat i gira rob.moveDistance (-. 15) rob.turnAngle (30) end% Comprova el sensor Bump si AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') es posa en pausa (0,5) obstacle (cicle) = 1; % Wall AA_wallbeep (rob)% Back Up and Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Si no n'hi ha cap si buit (obstacle) obstacle (cycle) = 0; elseif length (obstacle) <cycle obstacle (cycle) = 0; final

Pas 5: Pas 5: Traçat

Pas 5: trama
Pas 5: trama

Aquest codi indicarà a roomba que traça el que troba en el seu viatge. Una trama com aquesta apareixerà després que la roomba s'hagi aturat.

% Obtén la posició d = rob.getDistance; si cicle == 1 theta (cicle) = 0; x (cicle) = d. * cosd (theta (cicle)); % dist total recorregut en x y (cicle) = d. * sind (theta (cicle)); % de distància total recorreguda en un altre cas theta (cicle) = theta (cicle-1) + rob.getAngle; x (cicle) = d. * cosd (theta (cicle)) + x (cicle-1); % de distància total recorreguda en x y (cicle) = d. * sind (theta (cicle)). * d + y (cicle-1); % distància total recorreguda al final de l'any% Condició de trencament si rob.getButtons.clean final de trencament% Cicle de cicle d'increment = cicle + 1; end rob.stop for i = 1: cycle if obstacle (i) == 1% Parcel gràfic (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif obstacle (i) == 2% Plot plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') text final (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') hold on end% Distress Signal while true rob.beep pause (3) if rob.getButtons.clean break end end% catch% rob.stop% end

Recomanat: