Tabla de contenido:

Roomba con asistencia de astronautas: 4 pasos
Roomba con asistencia de astronautas: 4 pasos

Video: Roomba con asistencia de astronautas: 4 pasos

Video: Roomba con asistencia de astronautas: 4 pasos
Video: Osasuna nunca se rinde 2024, Mes de julio
Anonim
Roomba asistido por astronautas
Roomba asistido por astronautas

Este proyecto se realiza utilizando la Raspberry Pi 3 a bordo del iRobot Create Versión 2. MATLAB se utiliza para programar el robot para que siga instrucciones específicas utilizando sus sensores y cámara. Los sensores y las cámaras se utilizan para realizar tareas específicas que seguirían a un astronauta y le brindarían la capacidad de comunicarse con su base de operaciones si algo sale mal.

Paso 1: piezas necesarias

Piezas necesarias
Piezas necesarias
Piezas necesarias
Piezas necesarias
Piezas necesarias
Piezas necesarias
Piezas necesarias
Piezas necesarias

1. iRobot Create Versión 2

El iRobot Create es la parte más esencial de este proyecto, ya que es programable y puede ser una gran representación para un rover real que sigue a los astronautas y los asiste en el futuro

2. Raspberry Pi 3

La Raspberry Pi fue el programable utilizado para este proyecto. El código está diseñado para el Pi y la versión del Pi adjunta es la 3 (modelo B). Se pueden utilizar otras placas programables como arduino, sin embargo, arduino y la mayoría de las otras placas requerirán una codificación diferente a la descrita en otro paso

3. Módulo de cámara Raspberry Pi

La única conexión extraña a la Raspberry Pi necesaria para este proyecto es el módulo de la cámara. El módulo de la cámara es la parte integral de este proyecto, ya que roomba solo realizará tareas en función de lo que ve en la cámara

4. MATLAB 2018a

La segunda versión más reciente de MATLAB, 2018a, se utilizó para la codificación involucrada en esta configuración. Es probable que muchas otras versiones de MATLAB funcionen con esto, ya que la programación de Roomba ha existido por un tiempo

Paso 2: Configuración de archivos y cámara

Configuración de archivos y cámara
Configuración de archivos y cámara

1. Conexiones de la cámara y la Raspberry Pi al roomba

  • El Pi se puede conectar al iRobot directamente con un micro USB. Eso es todo lo que necesita para estar listo para usar. Sin embargo, se recomienda que se coloque de forma segura en el roomba, como se muestra en las imágenes a lo largo de la presentación hasta ahora.
  • La cámara tiene una conexión directa a la Raspberry Pi y es muy recomendable que se compre o se fabrique algo para sostener la cámara directamente hacia arriba. La cámara no tiene ningún sentido si no se puede sostener en su lugar para mostrar lo que ve el roomba.

2. Archivos

  • Después de configurar y conectar todo, asegúrese de que el robot esté reiniciado y listo para funcionar manteniendo presionados los botones "Spot" y "Dock" durante 10 segundos juntos.
  • Aquí es donde se necesita MATLAB por primera vez. Los archivos para roomba deben instalarse primero y todo lo que se necesita para que estos archivos se ejecuten es el código que se proporciona en este enlace:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Paso 3: Prueba inicial de Roomba

Se deben realizar muchas comprobaciones iniciales en el roomba para asegurarse de que funciona.

1. Asegúrese de estar conectado a la misma red WiFi que el roomba. Sin esto, nunca se conectará a través de MATLAB.

2. Averigüe a qué número está asignado su roomba para que pueda conectarse específicamente al roomba que eligió. Por ejemplo, si el número de su roomba es 30, se conectaría escribiendo roomba (30) en la ventana de comandos en MATLAB.

3. Roomba se puede controlar mediante estructuras en MATLAB. Por ejemplo, si configura su código para roomba (30) en la variable 'r', el robot se puede mover hacia adelante con el comando r.moveDistance (0.2, 0.1).

4. Hay muchos comandos diferentes que se pueden comunicar al roomba y se pueden ver escribiendo 'doc roomba' en la ventana de comandos.

5. Los sensores para lecturas de luz, golpes y acantilados se pueden leer usando los comandos que se ven en 'doc roomba', pero una forma de tener un menú constante y ordenado para ver los datos del sensor se puede ver usando 'r.testSensors '.

6. Después de probar todo esto, el software de recolección de imágenes del robot se puede utilizar para leer y ver las fotografías tomadas. El código básico para esto sería img = r.getImage e imshow (img);.

7. Los valores RGB de la imagen se pueden encontrar con los códigos red_mean = mean (mean (img (:,:, 1)));

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

Paso 4: Ejemplo de código MATLAB

Ejemplo de código MATLAB
Ejemplo de código MATLAB

En este punto, ya está listo para utilizar los sensores y el software de toma de imágenes para crear su propio giro en un prototipo de Mars Rover de asistencia humana. Nuestro ejemplo es seguir al astronauta siguiendo el color blanco y moviéndonos hacia él. El robot emitirá un pitido si sus sensores están leyendo valores altos para que el astronauta pueda reiniciar el robot si está atascado o ir a recogerlo y reiniciarlo si está atascado en un acantilado. Sin embargo, solo lee estos errores mientras ve blanco. Sin poder ver el color blanco, el robot entrará en modo de error. Está programado para enviar dos tipos diferentes de correos electrónicos a la base de operaciones dependiendo de lo que vea. Si ve el color de la piel del astronauta, obviamente no es bueno, por lo que alertará a la base de operaciones si el astronauta tiene la piel visible con un mal funcionamiento del traje. El otro mensaje se prepara si el astronauta simplemente desaparece de la vista. Si no se muestra el color blanco o de piel de las cámaras, el robot girará y enviará otro correo electrónico diferente. Las imágenes donde el roomba no puede ver al astronauta se enviarán junto con el mensaje en los correos electrónicos. El código de nuestro proyecto se muestra a continuación:

para i = 1:.1: 3 img = r.getImage; imagen (img) red_mean = mean (mean (img (:,:, 1))); green_mean = mean (mean (img (:,:, 2))); blue_mean = mean (mean (img (:,:, 3))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.izquierda> 0 || bump.front> 0 r.beep () r.beep () r.beep () r.stop elseif cliff.left <10 || acantilado.izquierdaFrente <10 || acantilado.derechaFrente <10 || cliff.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 si green_mean <35 && blue_mean <35% se muestra el color de la piel (debe ajustarse según el color de la piel del astronauta) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; % envía un correo electrónico que muestra que el traje está desactivado psswd = 'yeah'; host = 'smtp.gmail.com'; puerto = '465'; emailto = '[email protected]'; m_subject = 'sujeto'; m_text = 'prueba'; setpref ('Internet', 'E_mail', correo); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', correo); setpref ('Internet', 'Contraseña_SMTP', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', correo); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', puerto); props.setProperty ('mail.smtp.starttls.enable', 'verdadero'); props.setProperty ('mail.smtp.debug', 'verdadero'); props.setProperty ('mail.smtp.auth', 'verdadero'); props.setProperty ('mail.smtp.socketFactory.port', puerto); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'falso'); sendmail (emailto, '¡Ayuda!', '¡Se quitó el uniforme de astronauta!', img); end if red_mean 135 || green_mean 135 || blue_mean 135 para j = 1: 2% si el robot no puede encontrar el blanco r.turnAngle (360) mail = '[email protected]'; psswd = 'sí'; host = 'smtp.gmail.com'; puerto = '465'; emailto = '[email protected]'; m_subject = 'sujeto'; m_text = 'prueba'; setpref ('Internet', 'E_mail', correo); setpref ('Internet', 'SMTP_Server', host); setpref ('Internet', 'SMTP_Username', correo); setpref ('Internet', 'Contraseña_SMTP', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', correo); props.setProperty ('mail.smtp.host', host); props.setProperty ('mail.smtp.port', puerto); props.setProperty ('mail.smtp.starttls.enable', 'verdadero'); props.setProperty ('mail.smtp.debug', 'verdadero'); props.setProperty ('mail.smtp.auth', 'verdadero'); props.setProperty ('mail.smtp.socketFactory.port', puerto); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'falso'); sendmail (emailto, '¡Ayuda!', '¡No se puede encontrar al astronauta!', img); r.stop end end end

Obviamente, aquí es complicado, pero debería mejorar una vez copiado. Las contraseñas y los correos electrónicos para esto deben ser proporcionados por aquellos que realizan este proyecto, obviamente.

Sin embargo, nuestro ejemplo es solo una de las muchas formas de jugar con este robot para que se adapte a todos. Hay muchas cosas diferentes por hacer, que puede adaptarse a usted mismo.

Recomendado: