Detección de números: descripción general
Antes de lanzarnos a crear nuestro bot de entrega de inteligencia artificial con Quarky, hay algunos conceptos que debe comprender relacionados con la detección de objetos.
Todos los robots de reparto necesitan una forma de identificar dónde se encuentran o si han llegado a su destino o no. Eso lo haremos usando la detección de números.
Como puede ver, en la arena tenemos 3 puntos de control, hemos etiquetado cada punto de control con un número, como 1, 2 y 3. Y para identificar los puntos de control, hemos utilizado las tarjetas de números. Usaremos este método para identificar dónde está el robot.
Pero como habrás notado, identificaremos los números usando nuestro teléfono inteligente montado en el robot. Veamos cómo hacerlo.
- Monte el soporte para teléfono inteligente en el borde frontal de Quarky.
- Una vez que el soporte del teléfono inteligente esté fijo en la parte delantera, presione en la parte trasera.
- Monte el bloqueo del soporte del teléfono inteligente horizontalmente a través de los soportes.
- Coloque su teléfono inteligente en los soportes.
Ahora veamos cómo podemos detectar las tarjetas usando la cámara trasera del teléfono.
Configurar la cámara
Siga los pasos para configurar su cámara para la detección de números:
- Abra PictoBlox en su teléfono móvil. Haga clic en el botón de configuración.
- Haga clic en la pestaña Video. Permita que la aplicación PictoBlox tome fotografías y grabe videos.
- De forma predeterminada, tendrá la cámara frontal como cámara seleccionada. Debe hacer clic en el menú desplegable para obtener la lista de todas las cámaras disponibles en el dispositivo.
- Seleccione la cámara trasera.
- Haga clic en la parte posterior y vuelva a PictoBlox. Haga clic en Agregar extensión y agregue la extensión de conducción autónoma .
- Agregue un bloque al hacer clic en la bandera de la paleta Eventos en el área de secuencias de comandos.
- Luego, agregue un video turn () en el escenario con un bloque de transparencia ()% de la extensión Autonomous Driving y seleccione volteado en el menú desplegable. Esto encenderá la cámara trasera de su teléfono inteligente.
Haga clic en la bandera verde y su cámara trasera debería comenzar. Asegúrese de que esta parte funcione antes de seguir adelante.
Detección de números: comprensión de la lógica
Usaremos la cámara de nuestro teléfono inteligente para detectar los números. La lógica aquí es bastante simple. Traeremos un número aleatorio frente a la cámara y luego PictoBlox detectará qué número es. La precisión con la que detectará el número depende de algo llamado confianza .
La confianza nos dice qué tan segura está la máquina del objeto que ha detectado. Por ejemplo, digamos que PictoBlox ha detectado el número 1 y su confianza es 0,6. Esto significa que hay un 60% de seguridad de que el objeto detectado es el número 1. La precisión de la detección de objetos depende del valor de confianza. Cuanto más alto sea. mayor será la confianza.
La desventaja de establecer un valor de confianza alto es que la detección de los objetos se vuelve difícil, especialmente si está lejos de la cámara.
Pero tampoco podemos mantener el valor de confianza demasiado bajo. En ese caso, la máquina puede detectar algún otro objeto o varios objetos a la vez.
Por tanto, debemos elegir un valor que no sea ni demasiado bajo ni demasiado alto. Para este proyecto, usaremos la confianza como 0.6.
Ahora, hagamos un guión para detectar números.
¡Codifiquemos!
Usaremos la aplicación PictoBlox para hacer este script.
- Continúe con el último guión.
- Agregue un bloque de cuadro delimitador () . Esto dibujará un cuadro cuadrado cada vez que se detecte una tarjeta numérica.
- A continuación, agregue un umbral de detección establecido al bloque () . El valor predeterminado es 0.8. Vamos a establecerlo en 0.6.
- La parte restante del guión será para detectar los números. Por lo tanto, queremos que se ejecute de forma continua. Para eso, usaremos un bloque para siempre . Desde la paleta Control, agregue un bloque indefinido .
- Dentro del bloque por siempre , agregue una imagen de análisis del bloque () . Este bloque detectará y analizará los objetos que ve la cámara.
- Ahora, agregue un bloque decir () de la paleta apariencia y dentro de su espacio, agregue un bloque () of object () de la extensión Autonomous Driving . Este bloque nos dirá qué número se ha detectado.
- Ahora, agreguemos un sistema de retroalimentación para verificar si se ha detectado el número 1. Agregue un bloque si-si no de la paleta Control y dentro del espacio en blanco del bloque, agregue un is number () detectado? de la extensión Autonomous Driving . Seleccione el número 1 del menú desplegable.
- Si PictoBlox detecta el número correcto, entonces queremos que el LED de Quarky se ilumine en verde. Agregue una matriz de visualización como bloque () debajo del brazo si de la paleta Visualización y establezca el color como verde.
- Si PictoBlox detecta un número incorrecto, entonces queremos que el LED de Quarky se ilumine en rojo. Agregue otra matriz de visualización como bloque () debajo del brazo si no y establezca el color en rojo.
- Ahora, ejecute el script haciendo clic en la bandera verde.
También puede probar otras condiciones, como donde el robot detecta el número 1 cuando hay varias tarjetas presentes, como esta:
Asegúrese de tener esto funcionando antes de pasar al siguiente tema.