Tabla de contenido:
- Paso 1: inicialización y sensores
- Paso 2: obtener datos
- Paso 3: Finalización de la misión
- Paso 4: Conclusión
Video: Roomba Explorer: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Al utilizar MATLAB y el robot Create2 de iRobot, este proyecto explorará distintas áreas de una ubicación desconocida. Empleamos los sensores del robot para ayudar a maniobrar en un terreno peligroso. Al obtener fotografías y videos de una Raspberry Pi que está conectada, pudimos determinar los obstáculos que enfrentará el robot y se clasificarán.
Partes y materiales
Para este proyecto, necesitará
-un ordenador
-Versión más nueva de MATLAB (se utilizó MATLAB R2018b para este proyecto)
- roombaInstall caja de herramientas
-Robot Create2 de iRobot
-Raspberry Pi con cámara
Paso 1: inicialización y sensores
Antes de iniciar cualquier programación, descargamos la caja de herramientas roombaInstall, que permitía acceder a diferentes componentes del Robot.
Inicialmente, creamos una GUI para inicializar cualquier robot. Para hacer esto, debe ingresar el número del Robot como entrada. Esto permitirá el acceso para ejecutar nuestro programa en el Robot. Trabajamos para que el Robot maniobrara a través de los muchos terrenos que encontraría. Implementamos los sensores de desnivel, los sensores de golpes de luz y los sensores de golpes físicos, utilizando sus salidas para disparar el robot y cambiar su velocidad o dirección. Cuando cualquiera de los seis sensores de golpes de luz detecta un objeto, el valor que emiten disminuirá, lo que hará que la velocidad del robot disminuya para evitar una colisión a máxima velocidad. Cuando el robot finalmente choca con un obstáculo, los sensores de golpes físicos informarán un valor mayor que cero; Debido a esto, el Robot se detendrá, por lo que no habrá más colisiones y se pueden poner en acción más funciones. Para los sensores de acantilado, leerán el brillo del área que los rodea. Si el valor es mayor que 2800, determinamos que el Robot estaría en un terreno estable y seguro. Pero, si el valor es inferior a 800, los sensores de acantilado detectarán un acantilado y se detendrán inmediatamente para no caer. Se determinó que cualquier valor intermedio representa el agua y hará que el robot detenga su acción. Al usar los sensores anteriores, la velocidad del Robot cambia, lo que nos permite determinar mejor si hay algún peligro.
A continuación se muestra el código (de MATLAB R2018b)
%% inicialización
dlgPrompts = {'Número de Roomba'};
dlgTitle = 'Seleccione su Roomba';
dlgDefaults = {''};
opts. Resize = 'encendido';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Crea una ventana que solicita al usuario que ingrese su número de roomba
n = str2double (dlgout {1});
r = roomba (n); % Inicializa la determinación de velocidad de Roomba %% especificada por el usuario de los sensores de impacto de luz mientras que true s = r.getLightBumpers; % obtener sensores de golpes ligeros
lbumpout_1 = extractfield (s, 'izquierda'); % toma los valores numéricos de los sensores y los hace más utilizables lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = extractfield (s, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, 'rightFront');
lbumpout_6 = extractfield (s, 'derecha');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% convierte los valores en una matriz
sLbump = sort (lbout); % ordena la matriz al valor más bajo se puede extraer
lowLbump = sLbump (1); velocidad =.05 + (lowLbump) *. 005% usando el valor más bajo, que representa obstáculos cercanos, para determinar la velocidad, velocidad más alta cuando no se detecta nada
r.setDriveVelocity (velocidad, velocidad)
fin
% Parachoques físicos
b = r.getBumpers; % Salida verdadero, falso
bsen_1 = extractfield (b, 'izquierda')
bsen_2 = extractfield (b, 'derecha')
bsen_3 = extractfield (b, 'frente')
bsen_4 = extractfield (b, 'leftWheelDrop')
bsen_5 = extractfield (b, 'rightWheelDrop')
golpes = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = suma (vagabundos)
si tbump> 0 r.setDriveVelocity (0, 0)
fin
% Sensores de acantilado
c = r.getCliffSensors %% 2800 seguro, de lo contrario agua
csen_1 = extractfield (c, 'izquierda')
csen_2 = extractfield (c, 'derecha')
csen_3 = extractfield (c, 'leftFront')
csen_4 = extractfield (c, 'rightFront')
acantilados = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sort (acantilados)
si ordcliff (1) <2750
r.setDriveVelocity (0, 0)
si acantilado <800
disp 'acantilado'
demás
disp 'agua'
fin
r. TurnAngle (45)
fin
Paso 2: obtener datos
Después de que se activen los sensores de golpes físicos, el robot implementará su Raspberry Pi a bordo para tomar una fotografía del obstáculo. Después de tomar una fotografía, usando el reconocimiento de texto si hay texto en la imagen, el Robot determinará cuál es el obstáculo y qué dice el obstáculo.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
ocrResults = ocr (foto)
RecognizedText = ocrResults. Text;
figura;
imshow (foto) texto (220, 0, RecognizedText, 'BackgroundColor', [1 1 1]);
Paso 3: Finalización de la misión
Cuando el Robot determina que el obstáculo está EN CASA, completará su misión y se quedará en casa. Una vez completada la misión, el Robot enviará una alerta por correo electrónico de que ha regresado a casa y enviará las imágenes que tomó durante su viaje.
% De envío de correo electrónico
setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('Internet', 'Correo electrónico', '[email protected]'); % cuenta de correo para enviar desde setpref ('Internet', 'SMTP_Username', 'ingrese el correo electrónico del remitente'); % senders username setpref ('Internet', 'SMTP_Password', 'ingrese la contraseña del remitente'); % Contraseña de remitentes
props = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'verdadero'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('Ingrese el correo electrónico de recepción', 'Roomba', 'Roomba ha regresado a casa !!', 'imgfromcamera.jpg')% cuenta de correo a la que enviar
Entonces el robot está terminado.
Paso 4: Conclusión
El programa MATLAB incluido está separado de todo el script que se utilizó con el Robot. En el borrador final, asegúrese de poner todo el código, excepto el paso de inicialización, en un ciclo while para asegurarse de que los parachoques se estén ejecutando constantemente. Este programa se puede editar para adaptarse a las necesidades del usuario. Se muestra la configuración de nuestro Robot.
* Recordatorio: no olvide que la caja de herramientas roombaInstall es necesaria para que MATLAB interactúe con el robot y la Raspberry Pi integrada.
Recomendado:
Convirtiendo su Roomba en un Mars Rover: 5 pasos
Convirtiendo su Roomba en un Mars Rover:
Atajos de teclado para Internet Explorer !!: 4 pasos
Atajos de teclado para Internet Explorer !!: Este Instructable le mostrará algunos atajos de teclado útiles para Internet Explorer. Suscríbase a mi canal Gracias
Roomba Scout Explorer: 8 pasos
Roomba Scout Explorer: como uno de los proyectos estadounidenses más esperados y más investigados, los proyectos del rover de Marte se han convertido en logros humanos en la producción en constante avance de sistemas autónomos de alta tecnología con el único propósito de investigar e inte
¡De Roomba a Rover en solo 5 pasos !: 5 pasos
¡De Roomba a Rover en solo 5 pasos!: Los robots Roomba son una forma divertida y fácil de sumergirse en el mundo de la robótica. En este Instructable, detallaremos cómo convertir un Roomba simple en un móvil controlable que analiza simultáneamente su entorno. Lista de piezas1.) MATLAB2.) Habitación
Bus Pirate 3EEPROM Explorer Board: 5 pasos
Bus Pirate 3EEPROM Explorer Board: si tienes uno de los Bus Pirates de Hack a Day, ¿qué haces con él? Aprenda sobre EEPROM de 1 cable, I2C y SPI con la placa exploradora 3EEPROM (la llamamos THR-EE-PROM) .EEPROM es un tipo de chip de memoria que almacena datos sin una alimentación continua