7. IA Hardware educable 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