7. IA Hardware educable


SmartCamera - Qué es

Esta cámara se vende como accesorio de los robots de Makeblock por unos 140€ ,

smartcamera1.jpg

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 :

Se ve mejor con un video:

El kit para Makeblock es la misma cámara pero encapsulado, y se añade

2024-03-16 10_35_58-Tutorial Smart Camera de Makeblock.png

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

2024-05-06 19_04_45-micromaqueen-plus-v2-advanced-stem-education-robot-18650-battery-version-7_600x..png

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). 

smartcamera2.png

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: 

smartcamera3.png

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 :

2024-04-01 12_46_55-WhatsApp.png

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.

smartcamera7.png

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.

smartcamera6.png

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

smartcamera8.png

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

smartcamera.png

La explicación es :

smartcamera10.png
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:

smartcamera22.jpg
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/

Programa en mBlock

El programa es sencillo

smartcamera21.jpg
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

blocks.png

Si no quieres poner lo accesorio https://planet.mblock.cc/project/3719420

smartcam79.png

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 

smartcam30.jpg

Encontramos estas dos instrucciones

smartcam31.jpg

¿Qué significan?

Vamos a definir dos sistemas de coordenadas

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:

smartcam32.jpg

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 

smartcam33.jpg

Para entendernos mejor, si ponemos 

smartcam34.jpg

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,:

smartcam36.jpg

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

smartcam37.jpg

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 :

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

Juntando los dos, tenemos:

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

smartcam77.png

¿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:

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/

smartcamera9.png

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

PARA QUE NOS SIRVE PIXIMON: CONFIGURAR EL SIGUE-LINEAS

Podemos entrar en configuración y determinar el grosor de la línea, brillo, contraste...

image.png

Para más información de la configuración del sigue líneas 

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.

smartcamera52.png

Las puedes descargar aquí https://drive.google.com/file/d/1K28cD6o5csGg1_h7cnmsZ5Box02NTdUC/view?usp=sharing

smarcamera50.png
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

smartcamera51.png
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

smartcamera53.png

Un programa ejemplo sería

smartcamera54.png

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

smartcamera55.png

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:

detallesmartcamsiguelineasconexion.png.png

Y conectaremos la batería con la SmartCam y el puerto I2C con el Puerto 4 por ejemplo.

angulosmartcamsiguelineas.png.png

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

siguelineas4.png

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:

siguelineas5.png

Si cargamos el programa siguiente https://planet.mblock.cc/project/3715899

siguelineas3.png

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

smartcam89.png

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 :

siguelineas68.png
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 :

siguelineas69.png

Esto nos permite que podemos utilizar las etiquetas para las decisiones de las intersecciones

image.png
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/

smartcamera47.jpg

Extraído de https://arduiblog.com/2022/05/01/smart-camera-de-makeblock/  autor JCQuetin, licencia BY-NC-SA 3.0