Taula de continguts:

Roomba que ajuda als astronautes: 4 passos
Roomba que ajuda als astronautes: 4 passos

Vídeo: Roomba que ajuda als astronautes: 4 passos

Vídeo: Roomba que ajuda als astronautes: 4 passos
Vídeo: SpaceX Orbital Starship Rises, Booster 7 Thrust Simulator Testing, Crew 4, SLS, Rocket Lab Updates 2024, Desembre
Anonim
Roomba que ajuda als astronautes
Roomba que ajuda als astronautes

Aquest projecte es fa utilitzant el Raspberry Pi 3 a bord de l’iRobot Create Version 2. MATLAB s’utilitza per programar el robot per seguir instruccions específiques mitjançant els seus sensors i la seva càmera. Els sensors i les càmeres s’utilitzen per realitzar tasques específiques que seguirien un astronauta i li proporcionarien la possibilitat de comunicar-se amb la seva base natal si alguna cosa surt malament.

Pas 1: peces necessàries

Peces necessàries
Peces necessàries
Peces necessàries
Peces necessàries
Peces necessàries
Peces necessàries
Peces necessàries
Peces necessàries

1. iRobot Crea la versió 2

L'iRobot Create és la part més essencial d'aquest projecte, ja que és programable i pot ser una gran representació per a un rover real que segueix els astronautes i els ajudi en el futur

2. Raspberry Pi 3

El Raspberry Pi va ser el programable utilitzat per a aquest projecte. El codi està dissenyat per al Pi i la versió del Pi adjunta és la 3 (model B). Es poden utilitzar altres plaques programables com ara arduino, no obstant això, arduino i la majoria de les altres plaques requeriran una codificació diferent a la descrita en un altre pas

3. Mòdul de càmera Raspberry Pi

L'única connexió externa al Raspberry Pi necessària per a aquest projecte és el mòdul de càmera. El mòdul de càmera és la part integral d’aquest projecte, ja que roomba només realitzarà tasques en funció del que vegi a la càmera

4. MATLAB 2018a

La segona versió més recent de MATLAB, 2018a, es va utilitzar per a la codificació implicada en aquesta configuració. És probable que moltes altres versions de MATLAB funcionin amb això, ja que la programació roomba existeix des de fa un temps

Pas 2: Configuració de fitxers i càmera

Configuració de fitxers i càmera
Configuració de fitxers i càmera

1. Raspberry Pi i connexions de càmera a roomba

  • El Pi es pot connectar a l'iRobot directament amb un micro USB. Això és tot el que necessita per estar a punt per utilitzar-se. Tanmateix, es recomana col·locar-lo de manera segura a la sala, tal com es mostra fins ara a la presentació.
  • La càmera té una connexió directa amb el Raspberry Pi i es recomana comprar o fabricar alguna cosa per mantenir la càmera directament cap amunt. La càmera no té cap punt real si no es pot mantenir al seu lloc per mostrar el que veu la roomba.

2. Fitxers

  • Després de configurar i connectar tot, assegureu-vos que el robot es restableixi i estigui a punt mantenint els botons "Spot" i "Dock" durant 10 segons junts.
  • Aquí és on primer es necessita MATLAB. Els fitxers de roomba s’han d’instal·lar primer i tot el que es necessita per executar-los és el codi que es proporciona en aquest enllaç:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Pas 3: proves inicials de Roomba

Hi ha moltes comprovacions inicials que cal fer a la sala per assegurar-se que funciona.

1. Assegureu-vos que esteu connectat a la mateixa xarxa WiFi que roomba. Sense això, mai no us connectareu a través de MATLAB.

2. Esbrineu a quin número està assignat el vostre roomba perquè pugueu connectar-vos específicament al roomba que trieu. Per exemple, si el número de roomba és 30, us connectareu escrivint roomba (30) a la finestra d'ordres de MATLAB.

3. El roomba es pot controlar mitjançant estructures a MATLAB. Per exemple, si configureu el codi per roomba (30) a la variable 'r', el robot es pot moure cap endavant amb l'ordre r.moveDistance (0.2, 0.1).

4. Hi ha moltes ordres diferents que es poden comunicar a roomba i es poden veure escrivint "doc roomba" a la finestra d'ordres.

5. Els sensors per a lectures de llum, cops i penya-segats es poden llegir utilitzant les ordres que es veuen a "doc roomba", però es pot veure una manera de tenir un menú constant i ordenat per veure les dades del sensor mitjançant "r.testSensors". '.

6. Després de provar tot això, es pot utilitzar el programari de captura d’imatges del robot per llegir i veure fotografies preses. El codi bàsic per a això seria img = r.getImage i imshow (img);.

7. Els valors RGB de la imatge es poden trobar amb els codis red_mean = mean (mean (img (:,:, 1)));

green_mean = mitjana (mitjana (img (:,:, 2)))); i blue_mean = mean (mitjana (img (:,:, 3))));.

Pas 4: Exemple de codi MATLAB

Exemple de codi MATLAB
Exemple de codi MATLAB

En aquest moment, ja esteu preparats per utilitzar els sensors i el programari de presa d’imatges per crear el vostre propi gir en un prototip Mars-Rover d’assistència humana. El nostre exemple és seguir l’astronauta rastrejant el color blanc i avançant cap a ell. El robot emetrà un so si els seus sensors estan llegint valors elevats, de manera que l’astronauta pot restablir el robot si està encallat o anar a recollir-lo i restablir-lo si està encallat a un penya-segat. Tot i això, només llegeix aquests errors sempre que vegi blanc. Sense poder veure el color blanc, el robot entrarà en mode d'error. Està programat per enviar dos tipus de missatges de correu electrònic diferents a la base d’origen en funció del que vegi. Si veu el color de la pell de l'astronauta, òbviament no és bo, de manera que avisarà la base de casa si l'astronauta té la pell que mostra un mal funcionament del vestit. L’altre missatge es prepara si l’astronauta simplement desapareix de la vista. Si no apareix cap color blanc o de pell a les càmeres, el robot girarà i enviarà un altre correu electrònic, però diferent. Les imatges on el roomba no pot veure l’astronauta s’enviaran juntament amb el missatge dels correus electrònics. A continuació es mostra el codi del nostre projecte:

per a i = 1:.1: 3 img = r.getImage; imatge (img) red_mean = mitjana (mitjana (img (:,:, 1)))); green_mean = mitjana (mitjana (img (:,:, 2)))); blue_mean = mitjana (mitjana (img (:,:, 3)))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || cliff.leftFront <10 || cliff.rightFront <10 || penya-segat.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else for i = 1: 2 r.moveDistance (0.2, 0.1) r. setDriveVelocity (.3,.2) r.stop end end end if green_mean <35 && blue_mean <35% que mostra el color de la pell (cal ajustar-lo en funció del color de la pell de l'astronauta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; % envia correus electrònics mostrant que el vestit està desactivat psswd = 'sí'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjecte'; m_text = 'prova'; setpref ('Internet', 'E-mail', correu); setpref ('Internet', 'SMTP_Server', amfitrió); setpref ('Internet', 'SMTP_Username', correu); setpref ('Internet', 'SMTP_Password', psswd); atrezzo = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', correu); props.setProperty ('mail.smtp.host', amfitrió); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'L'uniforme dels astronautes està apagat!', img); acabar si significa vermell 135 || green_mean 135 || blue_mean 135 per a j = 1: 2% si el robot no el pot trobar de blanc r.turnAngle (360) mail = '[email protected]'; psswd = 'sí'; host = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_subject = 'subjecte'; m_text = 'prova'; setpref ('Internet', 'E-mail', correu); setpref ('Internet', 'SMTP_Server', amfitrió); setpref ('Internet', 'SMTP_Username', correu); setpref ('Internet', 'SMTP_Password', psswd); atrezzo = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', correu); props.setProperty ('mail.smtp.host', amfitrió); props.setProperty ('mail.smtp.port', port); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', port); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'No es pot trobar l'astronauta!', img); r.stop extrem final extrem

Viouslybviament, aquí està desordenat, però hauria d’esborrar-se un cop copiat. Les contrasenyes i correus electrònics per a això han de ser proporcionats pels que fan aquest projecte, òbviament.

Tanmateix, el nostre exemple és només una de les moltes maneres de desordenar-se amb aquest robot perquè sigui adequat per a tothom. Hi ha moltes coses diferents per fer, que podeu adaptar-vos a vosaltres mateixos.

Recomanat: