Tag Archives: Robótica

Intel Realsense Robotic Kit con Upboard + ROS

17 Feb , 2017,
Jose Nunez
, , , , ,
No Comments

IMG_20170216_190038Recientemente publicamos un primer artículo sobre el kit de robótica de Intel que trae una cámara Real Sense y un Upboard.

Aunque esta segunda entrega es bastante corta, esperamos que abra las perspectivas de nuestros lectores sobre lo que se puede llegar a hacer con uno de estos kits y los sistemas de robótica ROS y las facilidades que tiene para el manejo de cámaras Real Sense.

Paso 1 (30 min)

Comenzaremos diciendo que instalar Ubuntu y ROS en el Upboard es una tarea súperfacil siguiendo las instrucciones en este enlace:

https://software.intel.com/realsense/robotic-devkit-quickstart

Esto incluye

  1. Una revisión de materiales incluidos en el kit
    (!) Van a necesitar un cable HDMI estándar para conectar el video del UP Board a un monitor, un teclado, un ratón y un adaptador WIFI USB.
  2. La descarga de Ubuntu 16.04.1 LTS
    (!) Hoy (FEB18) gracias a las pruebas que está haciendo el profesor Tomás de Camino, vimos que ya la versión de Ubuntu 16.04.1 no está disponible en el enlace oficial que trae la guía de quick start de Intel, sino que fue reemplazada por la 16.04.2. Aunque en la buena teoría deben funcionar igual, en caso de experimientar algun problema con el setup acá les dejamos el enlace oficial a esa versión: 
    http://old-releases.ubuntu.com/releases/xenial/ubuntu-16.04.1-desktop-amd64.iso
  3. La creación de un USB Stick de instalación
  4. La instalación del Ubuntu en el UP Board
  5. La actualización del sistema operativo incluyendo el KERNEL de linux optimizado para el Upboard
    (!) En este paso puede que se necesite configurar los servidores APT de Ubuntu para que use los servidores en Estados Unidos (no en Costa Rica) ya que en CR no están los paquetes de ROS. Para esto se abre el menú de búsqueda de Ubuntu y se digita “Software Updates” y en la casilla “Download From” se selecciona “Server from United States”image
  6. La actualización del software de Real Sense
  7. La instalación del sistema ROS en su versión Kinetic
    (!) ROS es un “meta-sistema operativo” de código abierto para robots, desarrollado por la fundación de robótica de código abierto. Para aprender más sobre ROS pueden seguir este enlace http://wiki.ros.org/ROS/Introduction
  8. Ejecución de un “Nodelet” de ROS para la cámara Realsense R200
  9. La ejecución del programa “RVIZ” para visualización 3D
  10. ¡a celebrar carajo!

Si, eso es todo por ahora.

Robot de dos llantas + acelerómetro/giroscópio > Una experiencia de Aprendizaje

13 Ene , 2017,
Jean Paul Jimenez
, , , , , , , , , , ,
No Comments

robot-willieResumen

Les confieso que esta es mi primera publicación; por pura insistencia de mi editor estamos acá escribiendo. En esta primera entrada discutiremos mi experiencia en Intel en la investigación de cómo programar un robot de dos ruedas mediante diversos micro-c0ntroladores, incluyendo el S4A-EDU, Arduino UNO, Aruduino 101 y Sparkfun Thing.

Detalle

A principios de este año 2017. tuve la bendición de poder pasar unos días en Intel en una experiencia “ad-hoc” de aprendizaje de tecnología, investiación, desarrollo, auspiciada por el Centro de Innovación de Intel y por José Núñez.

En esta experiencia pudimos explorar las diferentes reacciones que que tenia el robot cuando instalábamos diferentes programas (en ARDUINO IDE) con  diferente controladores para realizar rutinas como por ejemplo: movilidad hacia adelante y atrás, movimientos con giros con duración específica y también pudimos ver funcionar el acelerometro y giroscópio del chip Intel Curie.

En el fondo nos concentramos en tratar de entender cómo hacer que se mueva el robot (descrito acá) en distintas direcciones y cómo hacer que este pueda tener un movimiento rectilineo preciso, controlado utilizando el giroscopipo disponible en el Intel Curie.

Experiencia con el Acelerómetro de Intel Curie

Comenzamos aprendiendo sobre las diferentes funciones del Intel Curie. Para esto realizamos diversos experimentos descritos en este artículo de Jose Nunez acá en CostaRicaMakers.com.

La verdad me resultó sencillo de utilizar y muy útil para aprender a hacer las lecturas de los diferentes sensores (acelerómetro y giroscópio) y la utilización de las funciones de Blue Tooth Low Energy (BLE)

Experiencia con el Robot de dos llantas y el controlador S4-EDU

La verdad es que comencé con esta experiencia con altas expectativas de lo que podría aprender y hacer. Al principio el primer problema que enfrenté fue aprender un poco de programación, creo que tengo un largo camino por recorrer en esta área.

El robot en sí permite realizar movimientos de manera muy versatil gracias a su sistema de dos llantas independientes sobre las que podemos controlar dirección individual y velocidad.

Como mencioné antes fuimos probando diversos controladores, comenzando por el original del kit del robot (el S4A-EDU) que cuenta con un circuito muy interesante denominado “Puente H” (H-Bridge) que nos permite controlar la dirección y velocidad de los motores.

Una vez que pudimos hacerlo moverse usando el controlador original (S4A-EDU) nos dimos a la tarea de reemplazar dicho controlador (parcialmente) con un ARDUINO101 que como dijimos tiene sensores de movimiento (acelerómetro y giroscopio). Para esto pudimos facilmente desconectar el puente H del S4A-EDU y conectarlo al ARDUINO 101.

Como dije antes, el principal reto que enfrentamos fue la programación. Realizamos diferentes tipos de programa usando el ambiente integrado de desarrollo (IDE) de ARDUINO.

Una vez controlado por el ARDUINO 101 para realizar los movimientos básicos, el siguiente reto era comenzar a utilizar el giroscopio para leer cuanto se desviaba hacia un lado u otro el robot al caminar en una misma dirección. Para poder extraer los datos (que son muchos) de las lecturas del giroscopio, tratamos inicialmente de subirlos por WiFi a un servidor en Internet. Pare este fin introducimos un controlador más: el SPARKFUN THING.

La programación del SPARKFUN THING es algo “truculenta” ya que requiere una interfase serial para conectar la laptop donde uno escribe el programa y subirla al micro-controlador. Intentamos con un cable tipo FTDI, pero no tuvimos suerte. En resumen no funcionó por que el cable que teníamos no cuenta con línea DTR… (eso me queda pendiente de entenderlo mejor). Al día siguiente conseguimos otra interfase denomiada “FOCA V1.2” la cual permite comunicación serial con diversas opciones, con y sin línea DTR, a diferentes voltajes (3V, 5V) etc.

Ahora bien, subir datos por via WiFi a un servidor en Internet, el tiempo minimo que toma son 3 o 4 segundos… y el giroscopio generaba datos cada 200ms o menos… o sea, no nos servía la opción del WiFi… fue entonces cuando decidimos cambiar la solución. En vez de guardar los datos en Internet nos avocamos a graficarlos en mi celular usando una conexion Bluetooth Low Energy (del ARUDINO 101). Para esto fue necesario instalar una app en mi celular denominada nRF Toolbox descrita en el artículo mencionado sobre ARDUINO 101.

En este punto logramos que el robot se moviera en una misma dirección durante dos segundos y graficar durante ese tiempo las lecturas del giroscópio cada 200ms.

Control de Velocidad

Aprendí que la velocidad del robot se puede controlar mediante un método que se llama PWM (Pulse Width Modulation) y la idea es utilizar ese principio para ajustar la velocidad de cada rueda para compensar micro-desviaciones del movimiento rectilineo que queriamos lograr. Desafortunadamente no nos dio tiempo de implementar esa parte correctiva.

Conceptos Relacionados

Quiero listar acá algiunos conceptos que me parece importante profundizar en el futuro para mi propio aprendizaje en el área de robótica, tecnología y mecatrónica:

  • Variables y Constantes
  • Funciones y Métodos
  • Pasos e Instrucciones
  • Condicionales
  • Vibración
  • Frecuencia
  • Ancho de Pulso
  • Voltaje
  • Corriente/Amperaje

Agradecimientos

Quiero agradecer a el Señor Jose Núñez por permitirme esta oportunidad de estar en Intel aprendiendo mediante estos experimentos. Sinceramente me ha servido de mucho, tanto para mis estudios como para mi futuro.

Robot de dos llantas y un micro-controlador S4A-EDU

13 Jul , 2016,
Jose Nunez
, , , ,
one comments

Descripción

En este experimento vamos a montar un pequeño robot de dos ruedas que controla su trayectoria mediante la diferencia de velocidad de cada rueda. Para esto utilizaremos un micro-controlador denominado S4A-EDU (Sketch 4 Arduino EDUCATION). El cual implementa la circuitería necesaria para controlar dos motores DC incluyendo la implementación de dos circuitos de “Puente H” que se utilizan para controlar la dirección en la que gira cada motor manipulando la polaridad a la que son expuestos.

Este es un experimento resumido que require un nivel de conocimiento medio en Arduino y Electrónica.


Referencias Externas

  1. Manual Introductorio del Microcontrolador (en inglés): S4AIntroduction
  2. Sketch for Arduino: http://s4a.cat

Advertencia y Condiciones de Uso

(!) Antes de seguir estas instrucciones asegúrese de entender las Condiciones de Uso de nuestro sitio.


Materiales


Pasos Resumidos

A. Montaje y Prueba Inicial

  1. Ensamble el chasis con las ruedas y los motores (siguiendo las instrucciones del fabricante)
  2. Agregue  el microcontrolador S4A-EDU al chasis
  3. Asegúrese de que el interruptor on/off del micro-controlador S4A-EDU está colocado en la posición de OFF
  4. Conecte el micro-controlador S4A-EDU al computador usando un cable de USB a Mini-USB
  5. Windows:
    1. Instale el “controlador de windows” para el puerto USB del microcontrolador CP210x (nosotros lo descargamos de este enlace)
  6. Arduino IDE:
    1. Instale y seleccione la tarjeta “Amtel atmega328p xplained mini“. La encontramos buscando “328p” en Tools > Boards > Boards Manager
    2. Configure  el puerto correspondiente. Para nuestro caso aparece  en el “Device Manager” como “Silicon Labs CP210x USB to UART Bridge en COMxx
    3. Abra el ejemplo  “Blink” (File > Examples > 01.Basics > Blink) y subirlo al microcontrolador.
    4. En este punto la luz (azul en nuestro caso) del S4A-EDU parpadea cada segundo. Nótese que el interruptor on/off del micro-controlador está todavía en la posición OFF.
    5. (!) En este punto tenemos un chasis de robot con dos ruedas, con un micro-controlador S4A-EDU montado sobre el chasis el cual podemos programar utilizando el ARDUINO IDE.

B. Trabajando en los motores

En esta etapa vamos a conectar los motores al micro-controlador S4A-EDU y vamos a utilizar un programa básico para hacer que el robot “gire sobre su propio eje”. Esto es, hacer que una de las llantas se mueva en una dirección y la otra llanta en la dirección opuesta, ambas a la misma velocidad.

  1. Conexiones:
    1. Asegúrese de que el interruptor on/off del micro-controlador S4A-EDU está colocado en la posición de OFF
    2. Conecte el positivo de cada motor (cable rojo) y el negativo (cable negro) de cada motor según se indica en la parte inferior derecha de la siguente imagen.robot_rotate
    3. En nuestro caso, vamos a alimentar el sistema mediante una batería LIPO 3.7V de 2500MAh.  (!) Nótese que el circuito funciona con 6-9V según las especificaciones. Nosotros en este experimento usamos un convertidor de 3V a 5V el cual parece funcionar perfectamente.
  2. Arduino IDE:
    1. Abra un nuevo programa en el ARDUINO IDE, y pegue en él el código de este archivo: https://github.com/janunezc/robotics/blob/master/_02_s4a_edu_rotate/_02_s4a_edu_rotate.ino
    2. Cárguelo al S4A EDU
  3. Funcionamiento del Programa:
    1. En la función “setup()” se definen los pines del controlador utilizados para manipular los motores junto con el pin 13 que se utiliza para ilumnar el LED integrado en el micro-controlador S4A-EDU; que nos va a servir de medio para ver la ejecución del programa.
    2. Una vez definidos los pines de salida se hace una llamada a la función doBlink la cual hace parpadear rápidamente el LED integrado como indicativo del que el Setup está completado.
    3. Seguidamente se configuran la velocidad y dirección de cada motor. Es en este momento que el robot comienza a girar.
    4. La función loop() permanece vacía en este caso.
    5. La función setMotor() se encarga de manipular los pines de velocidad y dirección para el motor solicitado.
    6. La función doBlink() se encarga de hacer parpadear el LED del micro-controlador un numero de veces determinado con una espera entre transiciones tambien determinado en los parámetros.
  4. (!) En este punto. Al desconectar el cable USB del micro-controlador S4A-EDU y poner el interruptor a la posición ON, el sistema parpadea 10 veces el LED indicador y comienza a girar sobre su propio eje.

Agradecimientos

Queremos expresar nuestro agradecimiento a nuestro colega Gerardo Mora y al estudiante Jean Paul Jimenez por acompañarnos en esta aventura de descubrir el funcionamiento de los diferentes componentes de este robot.