Tu primer robot MARK

Esquivador de Objetos

Objetivo

Construir un robot que funcione todo el tiempo, detectando si hay objetos frente a él y esquivándolos para seguir su camino.

Componentes

Necesitarás las siguientes piezas para ensamblar el robot:

  1. 1 x Cerebro
  2. 2 x Módulos básicos
  3. 1 x Módulo 2 patrones
  4. 2 x Actuadores Motores
  5. 2 x Ruedas
  6. 1 x Rueda Omnidireccional
  7. 1 x Sensor de Distancia
  8. 3 x Cables RJ25
  9. 7 x Tornillos M5 x 15 mm 

Secuencia de ensamblado

Esquivador de objetos

Imagen: Despiece de componentes

Separa todas las piezas para ensamblar el robot

paso 01

Esquivador de objetos

Imagen: Motores

  1. Deberás colocar el eje en la rueda presionando hasta que haga tope,
    (los ejes tienen una muesca que debes hacer coincidir en la pieza plástica)
  2. Luego ajusta los tornillos comenzando con el que tiene la muesca, de esta manera la rueda quedará fija.
  3. En el encapsulado de los motores encontrarás dos patrones para conectar módulos de construcción. Para esta configuración usaremos el que se encuentra debajo de la rueda.
    Presenta uno de los módulos básicos con el lado cónico (donde va el tornillo) mirando haca la rueda y en esta configuración lo usaremos girado 22.5° en sentido antihorario respecto al plano del piso para que los motores queden verticales.
  4. Ahora deberás usar 1 tornillo para asegurar el módulo de construcción y la rueda cuenta con un orificio donde puedes guiarlo hasta la pieza. Luego ajústalo para que quede fijo.
  5. Deberás repetir el proceso con el segundo motor y colocar ambos motor al cerebro como se muestra en la imagen 5 usando tornillos M5 de 15 mm.
    El módulo básico estará girado 22.5° en sentido antihorario respecto al plano del piso como puedes ver en la imagen.

paso 02

Esquivador de objetos

Imagen: Rueda omnidireccional

  1. Coloca el acople de la rueda omnidireccional en el riel vertical
  2. Podrás posicionar la rueda a distintas alturas, haciendo uso de la pieza de acople (posee 2 piezas de fijación que puedas usar en cualquiera de los patrones del sistema constructivo), elevando la rueda omnidireccional del piso desde los 47 mm hasta los 97 mm (50 mm en total).
    Usando 1 tornillo M5 de 15 mm posiciona el acople lo más arriba posible, esto dejará al cerebro paralelo al piso.
  3. A su vez puedes combinarla con otros módulos para ajustarla a otro tipo de proyectos… En esta primer guía usaremos el método más sencillo para comenzar.

paso 03

Esquivador de objetos

Imagen: Sensor de distancia

  1. Ajusta un módulo de 2 patrones al sensor. Usaremos la parte cónica del módulo para asegurar el sensor con 1 tornillo M5 de 15 mm.
  2. Luego coloca el ensamble anterior sobre el cerebro y une con 1 tornillo M5 de 15 mm las piezas (en este caso el tornillo ingresará por la zona hexagonal del módulo)

paso 04

Esquivador de objetos

Imagen: Cables

  1. Conecta los motores en los puertos MA y MB, luego el sensor de distancia en el puerto A0.
    (Encontrarás todos los puertos nombrados en el cerebro).

paso 05

Esquivador de objetos

Imagen: Robot completo

Felicitaciones, has ensamblado el esquivador.

Pasemos a definir la programación…

Software de Programación

Programación

Para comenzar, utilizaremos la extensión de MARK Robots para el software mBlock.

Si aún no lo has instalado puedes ver el siguiente video:

Está todo pronto

Es hora de programar el Esquivador de Objetos.

Para programar, debemos pensar como dar órdenes para el robot y debemos pensar en como se debe comportar en distintas situaciones.

Objetivo:

Nuestro objetivo será hacer que el robot se mueva constantemente y cambie de dirección cuando encuentre un objeto a una distancia de digamos… 20 cm.

Entonces podemos deducir que se trata de una acción que se va a repetir infinitamente, midiendo todo el tiempo distancias menores a 20 cm frente al sensor. El robot estará en constante movimiento usando 2 motores y si el valor del sensor es inferior a 20 cm entonces girará para evitar el obstáculo.

Esto ya nos da una buena idea de como armar el código:

paso 01

Comenzaremos por el bloque MARK. Lo usaremos al comienzo de cada robot.

Lo puedes encontrar en la etiqueta.

Robots – MARK Extension – MARK

Habilita la comunicación con la placa Arduino y se asegura que las salidas y entradas se correspondan con el Shield de MARK.

paso 02

Ahora… mencionamos que nuestro robot repetiría infinitamente una acción.

Para ello usaremos el bloque “por siempre” de la paleta “Control” (la puedes encontrar en la parte izquierda del mBlock).

Control – Por siempre

Se trata de un contenedor donde colocaremos una secuencia de bloques, que una vez lleguen a su fin, se repetirán “por siempre”.

paso 03

Como nuestras acciones dependen de si el sensor de distancia registra medidas mayores o menores a 20 cm, comenzaremos programándolo con el condicional “Si – Entonces – Si no”

Lo encontrarás en la etiqueta

Control – “Si – Entonces – Si no”

Lo que hará el bloque es verificar si una condición se da o no, para luego continuar con las ordenes dependiendo de éstas dos situaciones.

paso 04

Varios bloques tiene el siguiente símbolo.
Esto quiere decir que espera que le ingresemos una operación.

Podrás encontrarlas en la sección de “operadores”con bloques que tienen la misma forma.

En nuestro caso necesitamos que una medida del sensor sea menor que una distancia fija, por lo tanto nuestro bloque será el siguiente:

Operadores – Menor que

paso 05

Nuestro objetivo es verificar si el sensor de distancia encuentra medidas menores a 20 cm, entonces, luego del “menor que” ingresamos 20 en el campo de texto (el sensor está configurado para medir centímetros por defecto).

A la izquierda del “menor que” necesitamos la medida del sensor de distancia, para ello usaremos el bloque “distancia” y puedes colocarlo en el espacio del operador “menor que”.

Robots – MARK Extension – Distancia

Los bloques se unen desde la izquierda, no de donde se hizo click, en caso que te sea difícil poder colocar el bloque en su contened.

paso 06

Ahora le diremos al robot que hacer en cada situación:

Si no hay nada a menos de 20 cm, entonces el robot debería de avanzar.

Para esto usaremos el bloque “mover hacia”.

Robots – MARK Extension – Mover hacia

El bloque mueve los motores hacia atrás o hacia adelante, usando la velocidad que le ingresemos.
La velocidad es un valor de 0 a 100 %.

Comenzaremos diciendo que el robot se mueva hacia adelante, a una velocidad de 80%.

Si el sensor encuentra algo a menos de 20 cm, el robot deberá girar y luego retomar la marcha.

Entonces primero le diremos que gire, para eso usaremos el bloque “girar”.

Robots – MARK Extension – Girar

El bloque hace que las ruedas se muevan en sincronía para poder hacer un giro, podemos definir hacia donde será: izquierda“ o “derecha”. Por último debemos decirle a que velocidad queremos que gire, para comenzar usemos 80%.

paso 07

Probemos el robot….

Deberás conectar a MARK usando el puerto USB.

Ahora en el software debemos decirle al programa que placa y puerto de comunicación estamos usando en la computadora.
En el menú placas / selecciona Arduino UNO (ésta es parte del cerebro junto al shield de MARK).

Ahora en conectar / puerto serie, selecciona el puerto que aparece allí.

(Usualmente verás solo 1, si es el único dispositivo que tienes conectado a la computadora).

Su nombres COM + ”número de puerto”

Solo queda pulsar “subir Arduino” y esperar la confirmación del software.

paso 08

Ahora desconecta el cable USB y enciende el robot con el botón de encendido.

Que puedes ver?

Analiza como está funcionado?

paso 09

Pensemos como mejorar el comportamiento de MARK…

El robot no retoma la marcha siempre igual y es que, siempre estamos midiendo una distancia < 20 cm. Al girar, esa distancia frente a un objeto va a cambiar, por lo que el robot pasa a marchar nuevamente. Por eso necesitamos que siga girando hasta que la distancia sea un poco mayor y asegurarnos que no volveremos a una situación de < 20 cm enseguida.

También podríamos hacer que una vez que se detecte al objeto, antes de girar, el robot retroceda un poco para evitar chocar contra el objeto (en el diseño de los robots te darás cuenta que dependiendo de como los armes, los comportamientos serán distintos)

paso 10

Haremos los cambios basados en las observaciones del paso 09.

Usaremos “mover hacia” para decirle al robot que se mueva hacia “atrás” a 80% de velocidad.

Luego usaremos lo que aprendimos y le daremos a la acción un tiempo de espera de 0.2 segundos, así nos aseguraremos que recorrerá algo de distancia.

Encontrarás el bloque “Esperar” en la etiqueta:

Control – “Esperar”

paso 11

Por último usaremos el bloque “Esperar hasta que”en la etiqueta:

Control – “Esperar hasta que”

A diferencia del esperar segundos, este bloque esperará hasta que se de consiga una condición. En nuestro caso queremos que espere hasta que el sensor de distancia registre una medida segura para avanzar. Probemos con “mayor que” 40 cm….

Operadores – Mayor que

Utiliza en el otro extremo del operador, el mismo bloque de sensor de distancia, ya que seguiremos usando sus medidas.

paso 12

Ya está listo…. probemos el robot….

Deberás conectar a MARK usando el puerto USB y presionar el botón de “subir a Arduino” nuevamente.

Felicitaciones !!

Tu primer MARK !!!

En este ejemplo utilizamos varias herramientas para hacer que el robot se adapte a nuestras necesidades y fuimos probando hasta conseguir el resultado que esperábamos.

Hemos utilizado conceptos básicos de lógica y matemática y los hemos puesto en práctica.