7. IA Hardware educable
- SmartCamera - Qué es
- SmartCamera - conexión con mBot
- Smart camera - seguimiento color - sencillo
- Smart camera seguimiento color avanzado
- Smart camera Piximon
- Smart Camera Código de barras
- SmartCamera - sigue líneas
SmartCamera - Qué es
Esta cámara se vende como accesorio de los robots de Makeblock por unos 140€ ,
ATENCIÓN, ESTE SENSOR NO SE SUMINISTRA CON EL KIT DE PRÉSTAMO DE CATEDU
Atención ESTA ESPECIALMENTE DISEÑADO PARA mBot1, no esta muy bien ajustado para mBot2
Por dentro es un PIXCAM https://pixycam.com/ que tiene integrado un firmware que puede trabajar de dos formas :
- Modo reconocer colores.
- Reconoce con IA hasta 7 colores distintos
- Salida I2C que facilita las coordenadas X e Y con respecto a un punto determinado (suele ser el centro) y por lo tanto servos o motores pueden realizar el seguimiento de color reconocido.
- Modo seguimiento de líneas/barras
- Reconocimiento de líneas
- Con IA toma decisiones de rumbo en las intersecciones
- Modo lectura códigos de barras Reconoce 15 códigos de barras verticales definidos de fábrica
Se ve mejor con un video:
El kit para Makeblock es la misma cámara pero encapsulado, y se añade
- batería
- cables de conexión para mbot1
- cable de conexión para mbo2
- pelotas de colores
- los códigos de barras que hemos comentado
NO ES LA ÚNICA:
HUSKYLENS
Se puede poner al robot Maqueen Plus de Microbit https://libros.catedu.es/books/microbit-car/page/cars-para-microbit
- Es barata aprox 55€
- Tiene más funciones, como reconocimiento facial
- Tiene una pantalla pequeña de 2 pulgadas OLED integrada para visualizar su funcionamiento.
- Su utilización es muy similar, entrar en el modo de operación que se desee (reconocimiento color, líneas, facial....) y dar al botón cuando es el objeto que se desea ver
- Necesita una placa complemento para la microbit (Robot Maqueen Plux o una tarjeta IO expansión...)
- Debido a su consumo 320mA necesitan una alimentación externa HAY QUE RECHAZAR TODA ALIMENTACIÓN CON LAS BATERÍAS 1860 QUE ESTEN ACCESIBLES ver peligros
- Hay que descartar las 18650 modelos https://www.dfrobot.com/search-maqueen%20plus.html
- Hay modelos con baterías AAA NiMh recargables aprox 105€
Ver ejemplo de uso :
Smart AI Lens kit ELECFREAKS
Ver ejemplos de uso Microbit+cutebot + AI LENS en https://libros.catedu.es/books/microbit-car/page/ai-lens-elecfreak
SmartCamera - conexión con mBot
Hardware
Para conectarlo con mBot1 hace falta la batería que se suministra en el pack, con su cable de conexión (punto 3 al 4 de la figura( y el cable de conexión del puerto I2C (punto 2) al RJ45 (punto 1).
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Una propuesta de montaje es este:
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón, Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Otra podría ser esta, utilizando también la misma pieza para que SmartCam tenga más visión :
En mBot2
En este robot, no tenemos puertos con clavija RJ45 pero sí puertos I2C que permiten comunicación de los diferentes módulos de sensores y actuadores en serie, en la figura vemos como se conectan el sensor sigue líneas con el sensor distancia ultrasonidos en serie.
Podemos no perder el sensor a distancia de ultrasonidos y conectarlo desde este sensor (1) al smartcamera (2) con el cable I2C que se suministra en el pack de smart cámera.
Por supuesto puedes prescindir el sensor de distancia de ultrasonidos y conectarlo al sensor sigue líneas. O incluso directamente a la placa y prescindir también del sigue líneas.
Con mBot2 NO hace falta conectar la batería. Smart cámera ya se alimenta a través del cable I2C. Pero si se pone no pasa nada, internamente las masas están conectadas.
Software
En mBlock
Tenemos que ir a bloques e instalar la extensión SMART CAMERA
Smart camera - seguimiento color - sencillo
Configuración reconocimiento de color
Método por software (recomendado)
Una forma de configurar la cámara en este modo, es insertar estas instrucciones al inicio del programa
La explicación es :
- Encenderemos el led para ser un poco independientes de la luz ambiental, esto es optativo.
- Iniciar smart cámera en el modo de seguimiento de color
- Luego le diremos a la cámara que aprenda el color. Para ello ponemos la pelota que queramos ENFRENTE DE LA CÁMARA, LO MOVEREMOS SUAVMENTE HASTA QUE EL LED TENGA EL MISMO COLOR QUE LA PELOTA. En ese momento pulsamos el botón LEARN.
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Se ve mejor con un vídeo
Método por hardware
Otro método es:
- pulsar en el botón de LEARN Y NO SOLTARLO
- el led empieza a parpadear en diferentes clores
- el led pregunta qué color quieres que aprenda, el código es el siguiente
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
- Ojo: NO SIGNIFICA QUE HAY QUE PONER ESOS COLORES es decir, si el led está en rojo, no significa que tienes que poner una pelota roja, sino que pregunta por el color 1
- Cuando está en el color que deseas (por ejemplo, queremos grabar el color número 1, entonces esperamos a que el led se ponga rojo) entonces en ese momento LO SOLTAMOS
- Ahora igual que antes:
- Ponemos la pelota del color que deseamos que aprenda, y cuando coincide hacemos una pulsación corta en LEARN
Programa en mBlock
El programa es sencillo
- Si el color se detecta arriba, avanza
- Si el color se detecta abajo, retrocede
- Si el color se detecta a la izquierda, gira a la izquierda
- Si el color se detecta a la derecha, gira a la derecha
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Lo añadimos en un bucle junto con el script anterior de configuración de la cámara, y se añaden unos avisadores de led para saber en qué estado está la cámara
El programa lo tienes aquí https://planet.mblock.cc/project/3664760
Si no quieres poner lo accesorio https://planet.mblock.cc/project/3719420
Aclárate ¿Qué potencia le doy? 50% o 90%?
R: Pues el que quieras, cuanto menos potencia, lo sigue mejor, pero si la bola va deprisa, lo "pierde"
Si la das más potencia, no lo sigue tan bién, hay a veces "oscilaciones" que no se estabilizan. Ver este vídeo
Smart camera seguimiento color avanzado
Kp, velocidad diferencial del motor.... ¿Eso qué es?
En la extensión CAMARA INTELIGENTE ESPECÍFICA PARA EVENTOS
Encontramos estas dos instrucciones
¿Qué significan?
Vamos a definir dos sistemas de coordenadas
- Las coordenadas del fondo de PixiCam
- Las coordenadas de la SmartCam asociadas al evento (en este caso el seguimiento del color) que en la instrucción se llama velocidad diferencial (no puedo llamarlo velocidad pues son coordenadas espaciales, como físico lo siento, no puedo 😫)
Las coordenadas de fondo de Pixicam son fijas, y van desde 0,0 a 320,240 y se pueden ver en la pantalla de PixiMon moviendo el ratón:
Las otras coordenadas "Las coordenadas de la SmartCam asociadas al evento" están asociadas al evento y están escalados según el valor de 100*Kp donde Kp tiene que ser un número de 0 a 1 por lo tanto el máximo es 100 y el centro de coordenadas lo fija el usuario en el número de la siguiente instrucción, ese número está referido a las coordenadas del fondo de Pixicam
Para entendernos mejor, si ponemos
El origen será 160,120, o sea lo normal, el centro del fondo de Pixicam, pero puede interesarte "acercar" la bola al robot por lo tanto ¿subirías y a más de 120 o bajarías de 120?
Para entenderlo mejor un dibujo,:
- Las coordenadas del fondo de PixiCam en rojo
- Las coordenadas de la SmartCam asociadas al evento en azul
Y para entenderlo mejor, vamos a ejecutar el siguiente programa test en mBot2 para que se vea en la pantalla del Cyberpi https://planet.mblock.cc/project/3657404
Al ejecutarlo vemos que muestra las coordenadas de la pelota roja (asociada al evento) y como Kp es 0.3 va desde -30 a +30 tanto para X como para Y
Kp, velocidad diferencial del motor.... ¿Eso para qué sirve?
Pues como son las coordenadas de lo que se "separa" la bola de tu origen, puedes darle velocidad a los motores según esas coordenadas
Desde el punto de vista de las Y (avanzar o retroceder) si hay más Y más tienen que ir los dos motores (hacia delante) si la Y es negativa los dos motores tienen que retroceder, luego desde el punto de vista de las Y :
- Velocidad motor izquierdo = Y
- Velocidad motor derecho = Y
Desde el punto de vista de las X (girar) si la X es positiva, tiene que girar a la derecha por lo tanto motor izquierdo avanzar (positiva) y el derecho retroceder (negativo) y si es negativo al revés por lo tanto
- Velocidad motor izquierdo = X
- Velocidad motor derecho = -X
Juntando los dos, tenemos:
- Velocidad motor izquierdo = Y + X
- Velocidad motor derecho = Y - X
Seguimiento del color utilizando Kp, velocidad diferencial
Podemos aumentar en un factor de 3 para darle más caña pues el máximo sería 30% al multiplicarlo por 3 conseguimos llegar al 90%. Ese factor de multiplicación de la potencia del motor tendría que ser más o menos 10*Kp
Es decir, Velocidad motor izquierdo = 10 Kp ( Y + X ) Velocidad motor derecho = 10 Kp (Y - X)
Cuánto más Kp, se sigue mejor a la pelota pero se consigue peor estabilización.
El programa https://planet.mblock.cc/project/3613286
¿Por qué el seguimiento del color utilizando Kp, velocidad diferencial es mejor que el simple?
Piénsalo bien, cuanto más se aleja, más potencia, mientras que el simple, si la pelota estaba en una zona determinada, va a una potencia fija.
+ Información
En estos PDFs tienes una explicación más formal de Kp y las velocidades diferenciales:
- En Inglés https://www.a4telechargement.fr/mBot/MB-P1100022_SmartCamera_StudentsBookSmartCamera_ANG.pdf
- En Español https://juegosrobotica.es/descargas/Tutorial-Smart-Camera-de-Makeblock.pdf
Smart camera Piximon
INSTALACIÓN DE PYXMON V2
No es un software obligatorio, pero viene muy bien qué está pasando y qué esta viendo la cámara. Además nos permite opciones avanzadas y configurar con más detalle sus posibilidades.
El software está en la página de https://pixycam.com/
ATENCIÓN NO CONECTAR LA CAMARA CON EL CABLE USB ANTES DE LA INSTALACIÓN DE PIXIMON
Pues Windows instalará unos drivers erróneos o dejará marcado como desconocido la cámara. Instalaremos PixyMon v2 y después conectaremos el cable USB del ordenador a l a cámara.
En el caso de que hayamos metido la pata, ir a Windows-Administrador de dispositivos, quitar a cámara, instalar PixyMon y conectar la cámara.
PARA QUE NOS SIRVE PIXIMON: PARA SABER QUÉ OCURRE EN LA DETECCIÓN DE COLOR
Si algo falla, podemos conectar la Smart Camera al ordenador y Piximon nos enseña qué ve y cómo lo hace, por ejemplo el siguiente vídeo se ve que está en modo de detección de color, y vemos que ha detectado el verde
Conecta el cable USB a la cámara
Más información
- En inglés https://docs.pixycam.com/wiki/doku.php?id=wiki:v2:pixymon_index
- En español https://juegosrobotica.es/descargas/Tutorial-Smart-Camera-de-Makeblock.pdf
PARA QUE NOS SIRVE PIXIMON: CONFIGURAR EL SIGUE-LINEAS
Podemos entrar en configuración y determinar el grosor de la línea, brillo, contraste...
Para más información de la configuración del sigue líneas
- En inglés https://docs.pixycam.com/wiki/doku.php?id=wiki:v2:line_pixymon
- En español https://juegosrobotica.es/descargas/Tutorial-Smart-Camera-de-Makeblock.pdf
Smart Camera Código de barras
En el modo de detección de código de barras, puede detectar 15 códigos de barras ya definidas.
Las puedes descargar aquí https://drive.google.com/file/d/1K28cD6o5csGg1_h7cnmsZ5Box02NTdUC/view?usp=sharing
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Y las tiene que detectar en la posición correcta, excepto la 15 que es simétrica, el resto no son invariantes bajo rotación
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
En mBlock las detecta desde el número 1 al 15. Pero observa que del 1 al 9 tiene ya unos nombres predefinidos
Esto no quiere decir que estés obligado a ejecutar la acción acorde al nombre de la etiqueta, puedes elegir perfectamente que si detecta la etiqueta 5(parar) que haga girar
Si quieres cambiar de nombres, dentro del software Piximon puedes renombrar estas etiquetas en Configure-Barcode labels
Un programa ejemplo sería
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
También puede detectar dada una posición, por ejemplo este programa
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Proyectos con Cyberpi
Caja registradora
El programa lo tenemos en este tutorial (hay que registrarse para verlo)
Color traductor. Aquí el tutorial (hay que registrarse)
SmartCamera - sigue líneas
mBot ya tiene un sigue-lineas https://libros.catedu.es/books/robotica-educativa-con-mbot/page/siguelineas pero no trabaja la inteligencia artificial. Es un sensor que nos detecta el brillo del suelo y sobre esa respuesta programamos la potencia de los motores para que sigan la línea.
Pero en este caso será la cámara la que detectará la línea y tomará la decisión de qué rumbo tomar, para ello montaremos la cámara con una visión horizontal utilizando la pieza de ángulo recto:
Y conectaremos la batería con la SmartCam y el puerto I2C con el Puerto 4 por ejemplo.
En este modo, la SmartCam reconoce las líneas que ve, y con el programa Piximon las marca con diferentes colores y decide de forma óptima el camino a seguir. El color rojo marca la decisión
Si el fondo,, contraste o grosor de las líneas no es el adecuado, con el programa PixiMon podemos cambiar la configuración para que lo detecte correctamente:
Si cargamos el programa siguiente https://planet.mblock.cc/project/3715899
El resultado es :
Explicado paso a paso
La decisión en una intersección con programación
Si queremos que no decida automáticamente, sino que por ejemplo el ángulo del cruce es menor de 45 que gire a la derecha, el código sería
https://planet.mblock.cc/project/3716895
También podríamos hacer la decisión en función si el cruce está más a la derecha o más a la izquierda, recuerda que las coordenadas x van desde el extremo izquierdo 0 al extremo derecho 320. Una opción sería :
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
La decisión de una intersección por código de barras
El modo sigue-lineas es también modo de etiquetas :
Esto nos permite que podemos utilizar las etiquetas para las decisiones de las intersecciones
Extraído del Tutorial Smart Camera de Makeblock”, creada por Susana Oubiña Falcón,
Licencia CC-BY-NC https://juegosrobotica.es/smart-camera-makeblock/
Extraído de https://arduiblog.com/2022/05/01/smart-camera-de-makeblock/ autor JCQuetin, licencia BY-NC-SA 3.0