4-Inteligencia Artificial

Un poco de orden

Vamos a ver en general tres unidades

  1. MÁQUINAS “YA EDUCADAS”

    1. Reconocimiento de imágenes con mBlock

      1. Programa de reconocimiento imágenes

      2. Programa reconocimiento edad

    2. Reconocimiento de voz

      1. Traductor Con mBlock y Cybperpi

      2. Reconocimiento de órdenes Con mBot1 t mBot2

  2. MÁQUINAS EDUCABLES

    1. Máquina educable Teachable Learning y mBlock

    2. Máquina educable con CODE.ORG

    3. Máquina educable con Machne Learnng for kids y Scratch

  3. HARDWARE EDUCABLES

    1. SMARTCAM y mBot1

      1. Seguir pelota color

      2. Sigue líneas

kenny-eliason-5afenxnLDjs-unsplash.jpg
Photo by Kenny Eliason on Unsplash

 

Cognitive Services Servicios cognitivos.

Esta extensión pertenece al conjunto de extensiones de inteligencia artificial de mBlock

2024-03-30 20_50_56-mBlock v5.4.3.png

Instala un montón de instrucciones como

2024-03-30 21_02_27-WhatsApp.png

RECONOCIMIENTO DE EDAD

Para ver un vistazo rápido, vamos a utilizar un programa ya predeterminado, ir a Programas de ejemplo - AI - Age Analyzer (el del pulpo)

2024-03-31 21_02_50-mBlock v5.4.3.png

OJO, SI NO ESTAS LOGUEADO entonces NO FUNCIONA

novaai2.png

La verdad es que acierta bastante bien

2024-03-31 21_04_14-mBlock v5.4.3.png

Otro ejemplo de uso, reconocimiento de edad y traducción :

Traductor

En este programa, además de usar la extensión Servicios Cognitivos, instalaremos las extensiones :

2024-04-01 12_23_55-mBlock v5.4.3.png

El programa es muy sencillo, lo tienes aquí : https://planet.mblock.cc/project/3733312

traductor.png

Traductor con mBot2 (o mejor dicho con Cyberpi)

Esta tarjeta controladora es un ESP32 por lo tanto permite conexión a Internet y lo podemos usar para realizar el mismo script de traducción

El programa lo tienes aquí https://planet.mblock.cc/project/3587357

Lo primero es conectarse a la Wifi :

cyberpi-conexion.png

Y para traducir

cyberpi-traduccion.png

OJO: HASTA QUE NO ESTES
1.-LOGUEADO con tu usuario en mBlock
2.-CONECTADO CON CYBERPI 
(las dos condiciones y en ese orden) NO SE VISUALIZAN LAS INSTRUCCIONES DE INTELIGENCIA ARTIFICIAL

novaai.png

Reconocimiento de voz- órdenes a mBot1

Se hace con la misma extensión Cognitive Services Servicios cognitivos, podemos hacer que el panda reconozca la voz

El programa https://planet.mblock.cc/project/3733229

Si te fijas TENEMOS QUE TRABAJAR EN VIVO pues la traducción la realiza el ordenador (mejor dicho el servidor de traducción y se lo comunica al ordenador y el ordenador a mBot1 pues mBot1 no tiene conexión de Internet

El programa en el Sprite oso Panda es :

ordenmblock1-1.png

Y mBot que ejecuta según la orden

ordenmblock1-2.png

Reconocimiento de voz- órdenes a mBot2

Aquí no trabajaremos en vivo SINO EN CARGA pues CibyerPi tiene conexión a Internet

La primera parte es el script de conexión de Wifi La siguiente orden es reconocer la voz, y según el resultado, que ejecuta.

Como puedes observar, la orden de reconocimiento de voz, añade un . al final que hay que tener en cuenta

El programa lo tienes aquí https://planet.mblock.cc/project/3733278

ordenesvozmbot2.png

Video Sensing: esto no es IA

El siguiente programa no interpreta las imágenes, simplemente estamos utilizando la webcam como sensor de vídeo

https://planet.mblock.cc/project/3730511

Extensión Video Sensing

2024-03-30 19_08_36-mBlock v5.4.3.png

mblock_block_1711822211532.png

2024-03-30 10_55_03-mBlock v5.4.3.png

+ info de esta extensión en https://barclayscodeplayground.co.uk/content/dam/barclayscodeplayground-co-uk/documents/scratch/SC_Using_Video_sensing_teachers_guide.pdf

Máquina Educable Teachable Machine

Esta extensión sí que pertenece al conjunto de inteligencia artificial

2024-03-30 19_37_15-mBlock Block-Based IDE- Coding for Beginners.png

En la extensión nos muestra la posibilidad de crear un nuevo modelo de entrenamiento

Al crear un nuevo modelo, Build a new model hay que definir las categorías mínimo son tres

2024-03-30 19_58_36-WhatsApp.png

2 - 3 - 4 .- Poner nombres a la categorías
5.- Poner la imagen (en mi caso pantallazos del móvil)
6.- Clicar a qué categoría pertenece, para que aprenda, darle click cuando la barra verde suba
Repetir pasos 5 y 6 tantas veces cuanto se desee, cuanto más, mejor
7.-Usar el modelo de aprendizaje

maquinaeducable.png

Una vez creado el modelo, nos pone unas instrucciones que podemos usar en nuestra programación

2024-03-30 20_04_20-mBlock Block-Based IDE- Coding for Beginners.png

Otro ejemplo parecido usando playmovil

 

Maquina educable con CODE ORG

Una manera muy didáctica de enseñar los conceptos de Inteligencia Artificial es con CODE.ORG tiene cursos y el funcionamiento es parecido a la Máquina Educable de mBlock

ia-codeorg2.png

El resultado es 

ia-codeorg.png

Maquina educable con Machine Learning for kids y Scratch

REGISTRO

Entramos en https://machinelearningforkids.co.uk/

machine1.jpg

Tenemos varias opciones:

  1. Registrarnos y tenemos dos opciones
    1. como Un profesor o responsable de un club de programación en este caso tenemos otras dos opcioens
      1. Clase No administrada tienes que rellenar un formulario típico y creas la clase
      2. Clase administrada donde tienes opciones de incorporar alumnos a tu clase, este registro es por correo electrónico y tienen que verificar que perteneces a un centro educativo.
    2. como Estudiante en ese caso es el profesor de una clase administrada el que te tiene que crear la cuenta
  2. Iniciar sesión pues nos hemos registrado con alguna de las opciones anteriores
  3. Probar sin registrarse

machine2.jpg

Vamos a probar "sin registrarnos" pues estamos aprendiendo. Si luego esta herramienta te convence, Te registras

CREAMOS UN PROYECTO

Empezamos un proyecto

machine3.jpg

Empezamos un proyecto, como puedes ver hay diferentes formas de reconocer, y permite hacer un almacenamiento local, o en la nube. Como es algo de pruebas puedes hacerlo local. Pero si luego estas registrado es interesante hacerlo en la nube para tener acceso en cualquier sitio.

Ojo al cerrar el navegador se borra todo el modelo con la opción In your web browser

machine4.jpg

Ya lo tenemos

machine5.jpg

ENTRENAR

Primero vamos a entrenar la máquina

machine6.jpg

Creamos dos etiquetas y vamos escribiendo situaciones (o añadir un fichero txt) donde nos apetece un refresco o no (pueden ser más de dos situaciones)

machine7.jpg

Volvemos al proyecto..

machine8.jpg

ENTRENAR

Si ves que has puesto suficientes ejemplos, pide a la máquina que entrene

machine9.jpg

Empieza el entrenamiento... y para que no te aburras, te pone unas preguntas !!!

machine10.jpg

Una vez acabado puedes probarlo

machine11.jpg

fíjate que bochorno no lo hemos puesto en el entrenamiento y ha acertado bastante bien

machine12.jpg

Volvemos al proyecto

machine8.jpg

CREAR

Y vamos a CREAR y nos ofrece varias herramientas de programación, elegimos SCRATCH

machine13.jpg

Le damos a Abrir en Scratch 3

machine14.jpg

Elegimos un nuevo objeto (quitamos el gato)

machine15.jpg

y elegimos glass water

machine16.jpg

Y ponemos el siguiente programa, no es perfecto... pero acierta bastante bien

machine17.jpg

¿UN POCO MÁS?

Ves al curso de IA con Scratch de Aularagón https://libros.catedu.es/books/inteligencia-artificial-con-scratch

Con diferentes vídeos del INTEF verás paso a paso esta herramienta

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

 

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