Este semestre tuve la fortuna de asistir a unas clases de Robótica, presididas por el profesor John Nicolls, en donde a parte de otras cosas he podido, al fin, jugar un poco con Arduino, algo que habÃa querido hacer siempre pero para lo cual no se habÃa presentado oportunidad.
Aún mejor, tuve la oportunidad de trabajar con una plataforma relativamente nueva llamada ADK (Accessory Development Kit), presentada en el Google I/O 2011 (en Mayo), la cual permite controlar dispositivos externos de hardware mediante un terminal Android. Asà pues con esta quimera: Android y Arduino, me divertà bastante durante un par de semanas y en este artÃculo pretendo documentar un poco lo aprendido. No se trata de un tutorial paso a paso; más bien un punto de partida para los que quieran profundizar en el tema.
Antes que nada, aclaremos algunos conceptos:
Por supuesto, debemos contar con un terminal Android. Lo ideal es que sea un tablet corriendo Android Honeycomb. Según este artÃculo escrito por Dan Noguerol, las siguientes tablets soportan ADK: Motorola XOOM, Acer Iconia A100, ASUS Eee Pad Transfomer TF101 y Samsung Galaxy Tab 10.1. En mi caso, tengo una Acer Iconia A100, que es lo más barato que pude conseguir en Amazon ![]()
El soporte oficial para el ADK se encuentra desde la versión Honeycomb de Android, en donde se pueden utilizar las clases del paquete android.hardware.usb. Sin embargo, el equipo de Android proporciona un paquete de compatibilidad, que permite utilizar dichas clases en dispositivos corriendo Android 2.3.4 (Gingerbread) o superior, lo cual quiere decir que no solo funciona en tablets sino también en dispositivos móviles.
No voy a entrar en detalles acerca de cómo configurar el IDE de Arduino y de Android, puesto que eso ya está muy bien detallado en la documentación oficial: Installing the Arduino software and necessary libraries. De hecho, me parece que Alex de BricoGeek lo explica de una manera muy directa y fácil de seguir en su artÃculo: El ADK de Google en Arduino UNO, que además incluye el esquema de hardware que hay que montar:
Puesto que los de Google y BricoGeek ya documentaron la parte de la configuración, solo voy a aportar un poco de información acerca de un problema que, al parecer, es bastante común al momento de preparar nuestro Android para usar el ADK (asumo de antemano que ya tienen un dispositivo corriendo Gingerbread). Esto puede aparecer al momento de instalar la aplicación:
Este es un mensaje que aparece cuando el dispositivo no tiene instaladas las librerÃas necesarias para usar el ADK (o no están configuradas correctamente).
Lo primero que debemos constatar en este caso es que el archivo com.android.future.usb.accessory.jar se encuentre en el directorio /system/framework/ del dispositivo. Este es la librerÃa que contiene las clases del ADK. Además, debe existir el archivo android.hardware.usb.accessory.xml en el directorio /etc/permissions/ con el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- This is the standard feature indicating that the device supports USB accessories. -->
<permissions>
<feature name="android.hardware.usb.accessory" />
<library name="com.android.future.usb.accessory"
file="/system/framework/com.android.future.usb.accessory.jar" />
</permissions>
La solución la leà de hpsaturn, un entusiasta Colombiano de Android y el software libre, que al parecer tuvo este problema hace tiempo.
El ejemplo incluÃdo en el ADK utiliza prácticamente todos los aspectos de la API (sensores de luz, servo motores, análogos, etc), y luce asÃ:
[ http://www.youtube.com/embed/3MrKLBtEjtc ]
Sin embargo, creo que es un poco complejo, lo cual hace que difÃcil de entender para las personas que hasta ahora están comenzando. Como alternativa, me gustarÃa compartir con ustedes un ejemplo mucho más sencillo en donde básicamente se utiliza el ADK para controlar un brazo Scara desde una tablet. El resultado es el siguiente (ignorar el introito del video; no estaba en mis cabales ese dÃa):
Este ejemplo me parece un poco más práctico y fácil de montar. Lo único que se necesita, obviando el brazo, son 3 servo motores. El código se puede descargar desde este repositorio Git (en el README está el sketch de Arduino).
La idea es bastante simple; desde el tablet se hacen los cálculos de la cinemática inversa (es decir, calcular el ángulo que deben tener los servos a partir del punto en el cual queremos que el brazo ponga la mano). Posteriormente, se envÃa al Arduino los ángulos calculados y este a su vez actualiza la posición de los servos.
Lo importante aquÃ, y para concluir esta entrada, es reflexionar un poco sobre la manera tan fácil y rápida con la que se pueden desarrollar aplicaciones de robótica usando las librerÃas mencionadas. No hace falta ser un gurú de la electrónica ni mucho menos de la programación… la parte difÃcil ya está hecha, solo queda la parte más divertida: dejar que nuestra imaginación guÃe los proyectos.
13 Comentarios | deja el tuyo
Este es un pequeño video en donde aclaro algunas dudas que surgieron a partir del último post, asà como algunos tips para los que quieran departir como freelances en oDesk.com:
[ http://www.youtube.com/embed/iYsFeVQrRhs?hd=1 ]
Espero les sea de ayuda y si tienen dudas o sugerencias no duden en comentar.
72 Comentarios | deja el tuyo
Hace ya más de 8 meses que trabajo como freelance y quisiera compartir con ustedes mi punto de vista respecto a este tipo de trabajos. Primero veremos las herramientas existentes para convertirse en freelance sin salir de casa (e incluso, sin tener contactos previos), y posteriormente mencionaré los pros y los contras. Asà que si quieres ser freelance y eres estudiante o simplemente no eres tan bueno con las relaciones sociales, este artÃculo te podrÃa servir.
Existen sitios en Internet que se dedican exclusivamente a eso: servir como puente entre contratistas freelance (programadores, diseñadores, traductores, etc.) y empresas o personas que requieren de dichos servicios. Las más importantes actualmente que recuerdo son: oDesk, elance.com, Freelancer, GetACoder, entre otras. Actualmente trabajo usando oDesk, asà que es la herramienta bajo la cual voy a dar mi punto de vista.
Este tipo de empresas son ideales para iniciar en el mundo del freelancing, puesto que no es necesario tener ningún tipo de experiencia previa y hace mucho más fácil la búsqueda de clientes. Antes que nada, ¿cómo funcionan este tipo de empresas? bueno, es básicamente una bolsa de empleo online:
Hay aún muchos temas por tratar al respecto, sin embargo no quiero sobrecargar este artÃculo. Dependiendo de la respuesta que tenga podrÃa publicar en detalle cómo funciona oDesk, además de dar algunos consejos para sacarle el mejor provecho y aclarar más dudas.
105 Comentarios | deja el tuyo
You are viewing a mobilized version of this site...
View original page here