Tabla de contenido:
- Paso 1: Piezas y materiales
- Paso 2: Archivo de base de datos de Roomba
- Paso 3: Conexión a Roomba
- Paso 4: el código
- Paso 5: Conclusión
Video: Roomba controlado por MATLAB: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
El objetivo de este proyecto es utilizar MATLAB y un robot programable iRobot modificado. Nuestro grupo combinó nuestras habilidades de codificación para crear un script MATLAB que utiliza muchas funciones del iRobot, incluidos los sensores de desnivel, los sensores de parachoques, los sensores de luz y la cámara. Usamos estas lecturas de sensores y cámaras como entradas, lo que nos permite crear ciertas salidas que queremos usando funciones de código MATLAB y bucles. También usamos el dispositivo móvil MATLAB y el giroscopio como una forma de conectarnos al iRobot y controlarlo.
Paso 1: Piezas y materiales
MATLAB 2018a
-La versión 2018 de MATLAB es la versión más preferida, principalmente porque funciona mejor con el código que se conecta al dispositivo móvil. Sin embargo, la mayor parte de nuestro código se puede interpretar en la mayoría de las versiones de MATLAB.
Dispositivo iRobot Create
-Este dispositivo es un dispositivo de fabricación especial cuyo único propósito es la programación y la codificación. (No es un vacío real)
Raspberry Pi (con cámara)
- Esta es una placa de computadora económica que funciona como el cerebro del iRobot. Puede ser pequeño, pero es capaz de muchas cosas. La cámara es un complemento adicional. También utiliza la raspberry pi para obtener todas sus funciones y comandos. La cámara que se muestra arriba está montada en un soporte impreso en 3D, creado por los departamentos de Fundamentos de Ingeniería de la Universidad de Tennessee.
Paso 2: Archivo de base de datos de Roomba
Hay un archivo principal que necesitará para utilizar las funciones y los comandos adecuados para su roomba. Este archivo es el lugar de donde escribió el código y extrae las funciones para que el funcionamiento de su roomba sea más manejable.
Puede descargar el archivo en este enlace o el archivo descargable a continuación
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Paso 3: Conexión a Roomba
Primero, debe asegurarse de que su robot esté conectado a su placa raspberry pi mediante un conector micro USB. Luego, debe conectar correctamente su computadora y robot al mismo WiFi. Una vez hecho esto, puede encender su robot y conectarse a él usando el comando dado en el archivo de la base de datos del robot. (Siempre reinicie su robot antes y después de usarlo). Por ejemplo, usamos el comando "r.roomba (19)" para conectarnos a nuestro robot, asignando la variable r a nuestro dispositivo. Esto se refiere al archivo de la base de datos, que configura nuestra variable como una estructura a la que podemos hacer referencia en cualquier momento.
Paso 4: el código
Hemos adjuntado el código completo a continuación, pero aquí hay una breve descripción general que destaca los elementos importantes de nuestro script. Utilizamos todos los sensores, así como la cámara, para maximizar al máximo el potencial de nuestro robot. También incluimos un código que nos permitió conectar un dispositivo móvil a nuestro robot y usar su grioscopio para controlarlo manualmente.
Comenzamos con el comando simple "r.setDriveVelocity (.06)" que establece la velocidad de avance del robot en.06 m / s. Esto es solo para que el robot se mueva de antemano
Luego, nuestro script principal comienza con un bucle while que recupera los datos del robot dado mediante la creación de estructuras que podemos hacer referencia y usar en las declaraciones condicionales a continuación, lo que nos permite decirle al robot que ejecute un comando determinado basado en los datos de la estructura. el robot lee con sus sensores. Lo configuramos para que el robot lea sus sensores de acantilado y siga un camino negro
while true% while ciclo continúa hasta que ocurre algo "falso" (en este caso continúa infinitamente) data = r.getCliffSensors; data2 = r.getBumpers;% recupera datos continuamente sobre los valores del sensor de desnivel y los asigna a una variable% img = r.getImage; % Toma una imagen de la cámara montada% imagen (img); % Muestra la imagen que se tomó% red_mean = mean (mean (img (:,:, 1)));% Toma el valor promedio del color verde si data.rightFront <2000 r.turnAngle (-2); % gira el Roomba aproximadamente.2 grados CW una vez que el valor de los sensores de desnivel delantero derecho cae por debajo de 2000 r.setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % le dice al Roomba que siga avanzando a aproximadamente 0,2 m / s si ambos valores de los sensores delantero derecho e izquierdo caen por debajo del 2000% r.turnAngle (0); % le dice al Roomba que no gire si se cumplen las condiciones mencionadas anteriormente
elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);
Luego de este bucle while, ingresamos a otro bucle while que dispara los datos obtenidos a través de la cámara. Y usamos una declaración if dentro de este bucle while que reconoce una imagen usando un programa específico (alexnet), y una vez que identifica la imagen, inmediatamente activa el control remoto del dispositivo móvil
anet = alexnet; % Asigna el aprendizaje profundo de alexnet a una variable mientras es verdadero% Infinito while loop img = r.getImage; img = imresize (img, [227, 227]); etiqueta = clasificar (anet, img); if label == "toalla de papel" || label == "refrigerador" label = "water"; imagen final (img); título (char (etiqueta)); sacar ahora;
El bucle while que nos permite controlar el dispositivo con nuestro teléfono recupera esos datos del giroscopio del teléfono y lo conectamos a una matriz que transmite datos continuamente a MATLAB en la computadora. Usamos una declaración if que lee los datos de la matriz y da una salida que mueve el dispositivo en función de ciertos valores del giroscopio del teléfono. Es importante saber que utilizamos los sensores de Orientación del dispositivo móvil. La matriz de uno por tres mencionada anteriormente está categorizada por cada elemento de los sensores de orientación del teléfono, que es azimut, paso y lateral. Las declaraciones if crearon condiciones que indicaron que cuando el lado excede los valores 50 o cae por debajo de -50, entonces el robot se mueve una cierta distancia hacia adelante (50 positivo) o hacia atrás (50 negativo). Y lo mismo ocurre con el valor del tono. Si el valor de inclinación excede el valor de 25 o cae por debajo de -25, el robot gira en un ángulo de 1 grado (25 positivo) o 1 grado negativo (25 negativo)
while true pause (.1)% Pausa de.5 segundos antes de que se tome cada valor Controller = iphone. Orientation; % Asigna la matriz para los valores de la orientación del iPhone a una variable Azimutal = Controlador (1); % Asigna el primer valor de la matriz a una variable Pitch = Controller (2); % Asigna el segundo valor de la matriz a una variable (inclinar hacia adelante y hacia atrás cuando el iPhone se sostiene de lado) Lado = Controlador (3); % Asigna el tercer valor de la matriz a una variable (inclinar hacia la izquierda y hacia la derecha cuando el iPhone se sostiene de lado)% Provoca una salida basada en la orientación del teléfono si Side> 130 || Side 25 r.moveDistance (-. 1)% Mueve el Roomba hacia atrás aproximadamente 0,1 metros si el iPhone está inclinado hacia atrás al menos 25 grados si no Side 25 r.turnAngle (-1)% Gira el Roomba aproximadamente 1 grado en sentido antihorario si el iPhone está inclinado hacia la izquierda al menos 25 grados en caso contrario si Pitch <-25 r.turnAngle (1)% Gira el Roomba aproximadamente 1 grado en sentido horario si el iPhone está inclinado al menos 25 grados al final
Estos son solo los aspectos más destacados de las partes principales de nuestro código, que incluimos si necesita copiar y pegar rápidamente una sección para su beneficio. Sin embargo, nuestro código completo se adjunta a continuación si es necesario
Paso 5: Conclusión
Este código que escribimos está diseñado específicamente para nuestro robot, así como para nuestra visión general del proyecto. Nuestro objetivo era utilizar todas nuestras habilidades de codificación de MATLAB para crear un script de diseño de pozo que utiliza la mayoría de las funciones del robot. Usar el controlador del teléfono no es tan difícil como podría pensar, y esperamos que nuestro código pueda ayudarlo a comprender mejor el concepto detrás de la codificación de un iRobot.
Recomendado:
Sistema de riego por goteo conectado a Internet controlado por retroalimentación de humedad del suelo (ESP32 y Blynk): 5 pasos
Sistema de riego por goteo conectado a Internet controlado por retroalimentación de humedad del suelo (ESP32 y Blynk): preocúpese por su jardín o sus plantas cuando se vaya de vacaciones, u olvídese de regar su planta a diario. Bueno, aquí está la solución Es un sistema de riego por goteo controlado por la humedad del suelo y conectado globalmente controlado por ESP32 en la parte frontal del software i
Sistema de riego controlado por WiFi 'inteligente' alimentado por energía solar: 6 pasos (con imágenes)
Sistema de riego controlado por WiFi `` inteligente '' con energía solar: este proyecto utiliza piezas solares de bricolaje estándar y piezas de 12v de eBay, junto con dispositivos Shelly IoT y algo de programación básica en openHAB para crear una red de energía de jardín inteligente y casera, totalmente solar, y riego. Aspectos destacados del sistema: Fu
Control WIFI ESP8266 RGB LED STRIP - NODEMCU como mando a distancia por infrarrojos para tira de led controlado por wifi - Control de teléfono inteligente RGB LED STRIP: 4 pasos
Control WIFI ESP8266 RGB LED STRIP | NODEMCU como mando a distancia por infrarrojos para tira de led controlado por wifi | Control de teléfono inteligente con tiras de LED RGB: Hola chicos, en este tutorial aprenderemos a usar nodemcu o esp8266 como control remoto IR para controlar una tira de LED RGB y Nodemcu será controlado por teléfono inteligente a través de wifi. Entonces, básicamente, puedes controlar la TIRA LED RGB con tu teléfono inteligente
Microcontrolador controlado MATLAB (Arduino MKR1000): 4 pasos
Microcontrolador controlado MATLAB (Arduino MKR1000): El objetivo de nuestro proyecto era utilizar MATLAB y Arduino MKR1000 lo mejor que pudiéramos. Nuestro objetivo era crear un script que permitiera que ciertas características del arduino realizaran una determinada salida basada en una entrada específica. Usamos muchos
Robot Roomba controlado por navegador con Raspberry Pi Model 3 A +: 6 pasos (con imágenes)
Robot Roomba controlado por navegador con Raspberry Pi Model 3 A +: descripción general Este Instructable se centrará en cómo darle a un Roomba muerto un nuevo cerebro (Raspberry Pi), ojos (cámara web) y una forma de controlar todo desde un navegador web. Hay muchos trucos de Roomba que permiten el control a través de la interfaz en serie. Yo no tengo