En el los artículos Control de tareas en RobotC y Control de prioridades de tareas en RobotC vimos como manejar tareas en RobotC. En este artículo vamos a ver el manejo de tareas en LeJOS: clase Arbitrator. La mejor forma de manejar las tareas y sus prioridades en LeJOS es mediante la clase Arbitrator. Este método consiste en crear unas tareas denominadas comportamientos, no muy complejas, que en su conjunto crearán el programa que deseemos implementar. Seguir leyendo →
Tag Archives: programación
Sigue líneas con visión, usando cámara iPhone
Tras una buena cantidad de artículos sobre visión artificial llega por fin el esperado sigue líneas con visión. Las dificultades que implica el manejo de imágenes en tiempo real son muchas, sobre todo el retardo entre que la cámara capta la imagen y nosotros la procesamos y enviamos los datos por bluetooth. Estamos utilizando la cámara de un iPhone 3G conectada mediante wifi al ordenador, enviado imágenes gracias al programa Pocket Cam. Capturamos imágenes periódicamente gracias al programa Yawcam, y las procesamos con LabVIEW, que finalmente enviará las ordenes necesarias al NXT mediante Bluetooth. Seguir leyendo →
Kart NXT controlado remotamente con LeJOS
El objetivo de este artículo es realizar un vehículo NXT controlado remotamente con LeJOS a través de bluetooth. La novedad de este proyecto es que es el primero que realizamos cuya tracción no es diferencial (como los anteriores). Seguir leyendo →
Control de prioridad de tareas en RobotC
En el artículo anterior de RobotC vimos cómo manejar varias tareas, gestionando el uso de recursos compartidos como los motores. En este artículo ampliaré la información sobre el control de prioridad de tareas en RobotC, viendo cómo poner mayor o menor prioridad a una tarea, y el efecto que tiene sobre la ejecución del programa. También veremos en qué consiste la planificación de tareas Round Robin y al final pondré un par de programas de prueba con vídeos incluidos. Seguir leyendo →
Control de tareas en RobotC
El objetivo principal del procesador es ejecutar la secuencia de instrucciones de los programas de entre un posible conjunto de programas. Cuando es uno sólo el programa a ejecutar, podemos intuir fácilmente cuál es la secuencia de operaciones que se está ejecutando sin más que seguir la traza del proceso en curso. La ayuda de los entornos de programación puede ser de valor incalculable cuando nuestra aplicación se complica y son varios los procesos que deben ser procesados. Seguir leyendo →
Problema del viajante de comercio
Con el artículo de hoy iniciamos una serie de artículos en el que trataremos de resolver un problema típico de ingeniería computacional adaptándolo al NXT. Queremos hacer que nuestro robot recorra distintos puntos, en los que tendeá que realizar cierta operación. Nuestro objetivo es que hallar el camino ideal, o sea que encuentre el camino más corto que le permita visitar todos los puntos. Este problema que un principio puede parecer sencillo es ni más ni menos uno de los problemas más complejos de resolver y existen demostraciones que equiparan la complejidad de su solución a la de otros problemas aparentemente mucho más complejos que han retado a los matemáticos desde hace siglos… estamos hablando del problema del viajante de comercio (TSP). Seguir leyendo →
LabVIEW para usuarios del NXT (III)
En esta tercera entrega de los artículos tutoriales sobre LabVIEW para usuarios del NXT (III) vamos a ver nuevos sensores, como el de ultrasonido, nuevas estructuras, y otros métodos para usar los motores. Esto nos servirá para ampliar los conocimientos que ya tenemos y así poder crear programas más complejos. Seguir leyendo →
Problema de la deriva en NXT y LeJOS
Estudiamos hoy el problema de la deriva en NXT y LeJOS. Se trata de uno de los problemas que tienen cualquier sistema que tenga que desplazarse, y en particular un robot NXT móvil: la deriva en la navegación. La deriva es el desvío de la trayectoria real respecto de la trayectoria prevista, y se debe a diversos factores. Cuanto menos deriva tenga un robot más preciso será su desplazamiento y menos se desviará de su destino objetivo al finalizar el movimiento. Este problema es muy común con los LEGO Mindstorms NXT debido a que no son robots con una forma única, sino que hay muchos montajes diferentes de robots móviles. La forma en que estén implementados los programas también influye en esta deriva. Seguir leyendo →
LabVIEW para usuarios del NXT (II)
En el artículo LabVIEW para usuarios del NXT (I) vimos como crear un VI, y empezamos con un programa de prueba (el famoso “Hola Mundo”). En el artículo de hoy, LabVIEW para usuarios del NXT (II), vamos a ahondar un poco más en el manejo básico de LabVIEW, y ver manejo de motores y de algún sensor. Seguir leyendo →
Manejo de imagenes y shift register en LabVIEW
En el artículo del Lunes vimos como recorrer imágenes con LabVIEW. Para ello necesitábamos un bucle anidado que podíamos recorrer gracias a que teníamos la información de la altura, la anchura y el color de la imagen. A la hora de manejar bucles muchas veces nos interesa saber los resultados de operaciones en iteraciones anteriores para poder manejarlos y operar con ellos, aquí es donde entran los Shift Register, que guardan la información que queramos de una iteración anterior para que podamos usarla cuando queramos. En el artículo de hoy vamos a crear una nueva imagen a partir de la información que saquemos de una que ya tengamos. En resumen, manejo de imagenes y shift register en LabVIEW- Seguir leyendo →