Archivo por meses: junio 2019

Descripción y funcionamiento del Bus I2C

Introducción

DEFINICIÓN DE I2C (I2C): Abreviatura de Inter-IC (inter integrated circuits), un tipo de bus diseñado por Philips Semiconductors a principios de los 80s, que se utiliza para conectar circuitos integrados (ICs). El I2C es un bus con múltiples maestros, lo que significa que se pueden conectar varios chips al mismo bus y que todos ellos pueden actuar como maestro, sólo con iniciar la transferencia de datos. Este bus se utiliza dentro de una misma placa de un dispositivo.

El bus I2C, un estándar que facilita la comunicación entre microcontroladores, memorias y otros dispositivos con cierto nivel de «inteligencia», sólo requiere de dos líneas de señal y un común o masa. Fue diseñado a este efecto por Philips y permite el intercambio de información entre muchos dispositivos a una velocidad aceptable, de unos 100 Kbits por segundo, aunque hay casos especiales en los que el reloj llega hasta los 3,4 MHz.

La metodología de comunicación de datos del bus I2C es en serie y sincrónica. Una de las señales del bus marca el tiempo (pulsos de reloj) y la otra se utiliza para intercambiar datos.

Descripción de las señales

  • SCL (System Clock) es la línea de los pulsos de reloj que sincronizan el sistema.
  • SDA (System Data) es la línea por la que se mueven los datos entre los dispositivos.
  • GND (Masa) común de la interconexión entre todos los dispositivos «enganchados» al bus.

Las líneas SDA y SCL son del tipo drenaje abierto, es decir, un estado similar al de colector abierto, pero asociadas a un transistor de efecto de campo (o FET). Se deben polarizar en estado alto (conectando a la alimentación por medio de resistores «pull-up») lo que define una estructura de bus que permite conectar en paralelo múltiples entradas y salidas.

El diagrama es suficientemente autoexplicativo. Las dos líneas del bus están en un nivel lógico alto cuando están inactivas. En principio, el número de dispositivos que se puede conectar al bus no tiene límites, aunque hay que observar que la capacidad máxima sumada de todos los dispositivos no supere los 400 pF. El valor de los resistores de polarización no es muy crítico, y puede ir desde 1K8 (1.800 ohms) a 47K (47.000 ohms). Un valor menor de resistencia incrementa el consumo de los integrados pero disminuye la sensibilidad al ruido y mejora el tiempo de los flancos de subida y bajada de las señales. Los valores más comunes en uso son entre 1K8 y 10K.

Protocolo de comunicación del bus I2C

Habiendo varios dispositivos conectados sobre el bus, es lógico que para establecer una comunicación a través de él se deba respetar un protocolo. Digamos, en primer lugar, lo más importante: existen dispositivos maestros y dispositivos esclavos. Sólo los dispositivos maestros pueden iniciar una comunicación.

La condición inicial, de bus libre, es cuando ambas señales están en estado lógico alto. En este estado cualquier dispositivo maestro puede ocuparlo, estableciendo la condición de inicio (start). Esta condición se presenta cuando un dispositivo maestro pone en estado bajo la línea de datos (SDA), pero dejando en alto la línea de reloj (SCL).

El primer byte que se transmite luego de la condición de inicio contiene siete bits que componen la dirección del dispositivo que se desea seleccionar, y un octavo bit que corresponde a la operación que se quiere realizar con él (lectura o escritura).

Si el dispositivo cuya dirección corresponde a la que se indica en los siete bits (A0-A6) está presente en el bus, éste contesta con un bit en bajo, ubicado inmediatamente luego del octavo bit que ha enviado el dispositivo maestro. Este bit de reconocimiento (ACK) en bajo le indica al dispositivo maestro que el esclavo reconoce la solicitud y está en condiciones de comunicarse. Aquí la comunicación se establece en firme y comienza el intercambio de información entre los dispositivos.

Si el bit de lectura/escritura (R/W) fue puesto en esta comunicación a nivel lógico bajo (escritura), el dispositivo maestro envía datos al dispositivo esclavo. Esto se mantiene mientras continúe recibiendo señales de reconocimiento, y el contacto concluye cuando se hayan transmitido todos los datos.

En el caso contrario, cuando el bit de lectura/escritura estaba a nivel lógico alto (lectura), el dispositivo maestro genera pulsos de reloj para que el dispositivo esclavo pueda enviar los datos. Luego de cada byte recibido el dispositivo maestro (quien está recibiendo los datos) genera un pulso de reconocimiento.

El dispositivo maestro puede dejar libre el bus generando una condición de parada (o detención; stop en inglés).

Si se desea seguir transmitiendo, el dispositivo maestro puede generar otra condición de inicio en lugar de una condición de parada. Esta nueva condición de inicio se denomina «inicio reiterado» y se puede emplear para direccionar un dispositivo esclavo diferente o para alterar el estado del bit de lectura/escritura.

Definición de términos:

  • Maestro (Master): Dispositivo que determina los tiempos y la dirección del tráfico en el bus. Es el único que aplica los pulsos de reloj en la línea SCL. Cuando se conectan varios dispositivos maestros a un mismo bus la configuración obtenida se denomina «multi-maestro».
  • Esclavo (Slave): Todo dispositivo conectado al bus que no tiene la capacidad de generar pulsos de reloj. Los dispositivos esclavos reciben señales de comando y de reloj generados desde el maestro.
  • Bus libre (Bus Free): Estado en el que ambas líneas (SDA y SCL) están inactivas, presentando un estado lógico alto. Es el único momento en que un dispositivo maestro puede comenzar a hacer uso del bus.
  • Comienzo (Start): Se produce cuando un dispositivo maestro ocupa el bus, generando la condición. La línea de datos (SDA) toma un estado bajo mientras que la línea de reloj (SCL) permanece alta.
  • Parada (Stop): Un dispositivo maestro puede generar esta condición, dejando libre el bus. La línea de datos y la de reloj toman un estado lógico alto.
  • Dato válido (Valid Data): Situación presente cuando un dato presente en la línea SDA es estable al tiempo que la línea SCL está a nivel lógico alto.
  • Formato de Datos (Data Format): La transmisión de un dato a través de este bus consiste de 8 bits de dato (1 byte). A cada byte transmitido al bus le sigue un noveno pulso de reloj durante el cual el dispositivo receptor del byte debe generar un pulso de reconocimiento.
  • Reconocimiento (Acknowledge): El pulso de reconocimiento, conocido como ACK (del inglés Acknowledge), se logra colocando la línea de datos a un nivel lógico bajo durante el transcurso del noveno pulso de reloj.
  • Dirección (Address): Todo dispositivo diseñado para funcionar en este bus posee su propia y única dirección de acceso, preestablecida por el fabricante. Hay dispositivos que permiten definir externamente parte de la dirección de acceso, lo que habilita que se pueda conectar en un mismo bus un conjunto de dispositivos del mismo tipo, sin problemas de identificación. La dirección 00 es la denominada «de acceso general»; a ésta responden todos los dispositivos conectados al bus.
  • Lectura/Escritura (Bit R/W): Cada dispositivo tiene una dirección de 7 bits. El octavo bit (el menos significativo) que se envía durante la operación de direccionamiento, completando el byte, indica el tipo de operación a realizar. Si este bit es alto el dispositivo maestro lee información proveniente de un dispositivo esclavo. Si este bit es bajo, el dispositivo maestro escribe información en un dispositivo esclavo.

La comunicación en más detalle

Cuando el dispositivo maestro quiere comunicarse con un esclavo, produce una secuencia de inicio en el bus. La secuencia de inicio es una de las dos secuencias especiales que se han definido en el bus I2C; la otra es la secuencia de parada. Las secuencias de inicio y la de parada son especiales porque son los dos únicos casos en que se permite que la línea de datos (SDA) cambie cuando la línea de reloj (SCL) está alta. Cuando se están transmitiendo datos, la línea SDA debe permanecer estable, y jamás cambiar, mientras la línea SCL está alta. Las secuencias de inicio y de parada señalan el comienzo y el final de una transacción con los dispositivos esclavos.

Los datos se transfieren en secuencias de 8 bits. Estos bits se colocan en la línea SDA comenzando por el bit de más peso (o más significativo). Una vez puesto un bit en SDA, se lleva la línea SCL a alto. Debemos recordar que el chip no puede llevar la línea a un estado alto, en realidad, lo que hace es «soltarla», y el que la pone en nivel lógico alto es el resistor de polarización. Por cada 8 bits que se transfieren, el dispositivo que recibe el dato envía de regreso un bit de reconocimiento, de modo que en realidad por cada byte de dato se producen 9 pulsos sobre la línea SCL (es decir, 9 pulsos de reloj por cada 8 bits de dato). Si el dispositivo que recibe envía un bit de reconocimiento bajo, indica que ha recibido el dato y que está listo para aceptar otro byte. Si retorna un alto, lo que indica es que no puede recibir más datos y el dispositivo maestro debería terminar la transferencia enviando una secuencia de parada.

Direccionamiento de dispositivos en el bus I2C

Lo más común en los dispositivos para el bus I2C es que utilicen direcciones de 7 bits, aunque existen dispositivos de 10 bits. Este último caso es raro.

Una dirección de 7 bits implica que se pueden poner hasta 128 dispositivos sobre un bus I2C, ya que un número de 7 bits puede ir desde 0 a 127. Cuando se envían las direcciones de 7 bit, de cualquier modo la transmisión es de 8 bits. El bit extra se utiliza para informarle al dispositivo esclavo si el dispositivo maestro va a escribir o va a leer datos desde él. Si el bit de lectura/escritura (R/W) es cero, el dispositivo maestro está escribiendo en el esclavo. Si el bit es 1 el maestro está leyendo desde el esclavo. La dirección de 7 bit se coloca en los 7 bist más significativos del byte y el bit de lectura/escritura es el bit menos significativo.

El hecho de colocar la dirección de 7 bits en los 7 bits más significativos del byte produce confusiones entre quienes comienzan a trabajar con este bus. Si, por ejemplo, se desea escribir en la dirección 21 (hexadecimal), en realidad se debe enviar un 42, que es un 21 desplazado un bit hacia arriba. También se pueden tomar las direcciones del bus I2C como direcciones de 8 bit, en las que las pares son de sólo escritura y las impares son de sólo lectura. Para dar un ejemplo, el integrado de brújula magnética CMPS03 es fijado en fábrica en la dirección 0xC0 ($C0). La dirección 0xC0 se utiliza para escribir en él y la dirección 0xC1 es para leer de él.

Protocolo de programación para el bus I2C

Lo primero que ocurre en un bus I2C es que el dispositivo maestro envía una secuencia de inicio. Esto alerta a los dispositivos esclavos, poniéndolos a la espera de una transacción. Éstos quedan atentos para ver si se trata de una solicitud para ellos. A continuación el dispositivo maestro envía la dirección de dispositivo. El dispositivo esclavo que posee esa dirección continuará con la transacción, y los otros ignorarán el resto de los intercambios, esperando la próxima secuencia de inicio.

Habiendo direccionado ya el dispositivo esclavo, lo que debe hacer ahora el maestro es enviar la ubicación interna o número de registro desde el que desea leer o al que va a escribir. La cantidad depende, obviamente, de qué dispositivo es y de cuántos registros internos posee. Algunos dispositivos muy simples no tienen ninguno, pero la mayoría sí los poseen.

Siguiendo con el ejemplo del CMPS03, éste posee 16 ubicaciones internas, numeradas desde el 0 al 15. Otro dispositivo, el medidor ultrasónico de distancia SRF08, tiene 36 registros.

Una vez que el maestro ha enviado la dirección del dispositivo en el bus I2C y la dirección del registro interno del dispositivo, puede enviar ahora el byte o bytes de datos. El dispositivo maestro puede seguir enviando bytes al esclavo, que normalmente serán puestos en registros con direcciones sucesivas, ya que el esclavo incrementa automáticamente la dirección del registro interno después de recibir cada byte. Cuando el maestro ha terminado de escribir datos en el esclavo, envía una secuencia de parada que concluye la transacción.

Escritura en un dispositivo esclavo:

  • 1. Enviar una secuencia de inicio
  • 2. Enviar la dirección de dispositivo con el bit de lectura/escritura en bajo
  • 3. Enviar el número de registro interno en el que se desea escribir
  • 4. Enviar el byte de dato
  • 5. [Opcionalmente, enviar más bytes de dato]
  • 6. Enviar la secuencia de parada

Como ejemplo, veamos un SRF08, que tiene una dirección de bus fijada en fábrica de 0xE0. Para comenzar una medición de distancia con el SRF08 se debe escribir 0x51 en el registro de comando, ubicado en la dirección interna 0x00. La secuencia es la que sigue:

  • 1. Enviar una secuencia de inicio
  • 2. Enviar 0xE0 (La dirección de dispositivo del SRF08 con el bit de lectura/escritura en bajo)
  • 3. Enviar 0x00 (dirección interna del registro de comando)
  • 4. Enviar 0x51 (el comando para comenzar la medición del SRF08)
  • 5. Enviar la secuencia de parada

Lectura desde un dispositivo esclavo:

Esta operación es algo más complicada, pero no demasiado. Antes de leer datos desde el dispositivo esclavo, primero se le debe informar desde cuál de sus direcciones internas se va a leer. De manera que una lectura desde un dispositivo esclavo en realidad comienza con una operación de escritura en él. Es igual a cuando se desea escribir en él: Se envía la secuencia de inicio, la dirección de dispositivo con el bit de lectura/escritura en bajo y el registro interno desde el que se desea leer. Ahora se envía otra secuencia de inicio nuevamente con la dirección de dispositivo, pero esta vez con el bit de lectura/escritura en alto. Luego se leen todos los bytes necesarios y se termina la transacción con una secuencia de parada.

Volviendo al ejemplo del módulo de brújula CMPS03, veamos cómo se lee el registro de ángulo:

  • 1. Enviar una secuencia de inicio
  • 2. Enviar 0xC0 (La dirección de dispositivo del CMPS03 con el bit de lectura/escritura en bajo)
  • 3. Enviar 0x01 (dirección interna del registro de ángulo en valor 0-255)
  • 4. Enviar una secuencia de inicio (inicio reiterado)
  • 5. Enviar 0xC1 (La dirección de dispositivo del CMPS03 con el bit de lectura/escritura en alto)
  • 6. Leer un byte de dato desde el CMPS03
  • 7. Enviar la secuencia de parada

La secuencia se verá así:


Un caso un poco más complicado

Esto es todo cuando se trata de comunicaciones simples, pero debemos considerar una posible complicación: Cuando el dispositivo maestro está leyendo desde el esclavo, quien pone los datos en la línea SDA del bus es el dispositivo esclavo, y el maestro es el que controla el pulso de reloj. ¿Qué pasa si el esclavo no está listo para enviar un dato? Con dispositivos como una EEPROMs esto no sería problema, pero si el dispositivo esclavo es un microprocesador, que tiene otras tareas que realizar, pueden surgir inconvenientes.

Para atender la transacción, el microprocesador debe pasar a una rutina de interrupción, guardar sus registros de trabajo, determinar qué dirección desea leer el dispositivo maestro, obtener el dato y ponerlo en su registro de transmisión. Esto puede llevar varios microsegundos, lo que implica que el dispositivo maestro podría estar enviando pulsos de reloj ciegamente por la línea SCL sin que el dispositivo esclavo pueda responderle. El protocolo I2C ofrece una solución para esto: el esclavo puede mantener la línea SCL en bajo. A esto se le llama estiramiento del reloj. Cuando el esclavo recibe el comando de lectura lo primero que hace es poner la línea de reloj en bajo. Entonces sí, obtiene el dato solicitado, lo pone en el registro de transmisión, y recién entonces libera la línea de reloj, que pasará de inmediato a alto debido al nivel que aporta el resistor de polarización.

Desde el punto de vista del dispositivo maestro, éste tratará de enviar el primer pulso de reloj para la lectura de datos liberando la línea SCL para que pase a alto, pero antes de continuar comprobará que ésta realmente haya ido al nivel lógico 1. Si la línea SCL permanece en bajo, el dispositivo maestro interpreta que el esclavo la mantiene así y espera a que SCL vaya a alto antes de continuar. Por suerte, la mayoría de los puertos I2C de los microprocesadores manejan esto de manera automática.

Sin embargo, a veces el manejo de I2C en el dispositivo maestro no está implementado por circuito, sino que es un juego de subrutinas que maneja dos líneas de un puerto. Algunas implementaciones ignoran este estiramiento del reloj. Estas soluciones trabajarán bien con dispositivos tales como las EEPROM, pero no podrán intercambiar datos correctamente con microprocesadores esclavos que utilizan el estiramiento del pulso de reloj. Como resultado, se obtendrán datos erróneos.

Especificaciones de Philips sobre el bus I2C (PDF)



Pez robot se mueve alimentado con “sangre” falsa

La historia comienza a centenares de metros de altura con las aves migratorias, y termina con un pez robótico nadando en el agua debajo. Para prepararse para sus viajes, las aves engordan mucho, hasta casi duplicar su peso, lo que las convierte en baterías emplumadas. Queman esa reserva de energía para impulsar sus alas a lo largo de muchos días y muchos kilómetros, y para evitar morir de hambre y congelarse. Finalmente, llegan extenuadas a sus destinos.

Una buena idea, pensaron los ingenieros de Cornell y de la Universidad de Pennsylvania, para un nuevo sistema de alimentación de potencia para máquinas. Les hizo pensar: la grasa es una batería genial, pero no es muy factible replicarla en un robot. ¿Pero… y la sangre? En un ser humano, la sangre distribuye oxígeno y energía para las células en todo el cuerpo. Y algunos robots, ya se mueven en base a fluidos, en forma de hidráulica. Entonces, ¿por qué no modificar ese fluido para transportar energía, ya que nuestra sangre alimenta nuestros músculos?

A lo que han llegado no es un ave robot (demasiado complicada y con intensa necesidad de energía) sino a un pez león robot que utiliza un sistema vascular rudimentario y «sangre» para energizarse y alimentar hidráulicamente sus aletas. Esta tecnología aún está en sus primeros días, y de hecho este pez es extremadamente lento, pero quizás algunas máquinas del mañana podrían deshacerse de las baterías y los cables y alimentarse como organismos biológicos.

Inflexiblemente, los robots actuales están segmentados. Tienen una batería de iones de litio, que distribuye la energía por medio de cables a los motores de sus extremidades, a los que se conoce como actuadores. Este nuevo pez león robótico tiene baterías, pero están esparcidas por todo su cuerpo y funcionan en conjunto con dos bombas, una para alimentar las aletas pectorales y otra para la cola. Juntas, las baterías y las bombas actúan más como corazones biológicos que como una batería de ion litio en un robot tradicional.

El primer componente es la «sangre», en esencia un fluido hidráulico cargado con iones disueltos, lo que le da potencial químico para alimentar la electrónica. «El fluido hidráulico transmite fuerza, y solo fuerza», dice Robert Shepherd, el robotista de Cornell, coautor de un nuevo artículo en Nature que describe el sistema. «En nuestro fluido, estamos transmitiendo fuerza y estamos transmitiendo energía eléctrica».




Este líquido cargado fluye a través de las células de la batería en el abdomen y las aletas del pez. Cada celda tiene dos piezas de metal opuestas: un cátodo y un ánodo. A medida que el fluido fluye más allá de estos, crea un desequilibrio de carga o voltaje que hace que los electrones fluyan a través de la electrónica que alimenta las dos bombas. Estos a su vez mantienen el bombeo del fluido. Finalmente las celdas de la batería se agotarán, ya que el líquido pierde iones y dejará de circular. En ese momento es posible recargar el líquido para que los peces sigan funcionando. «En realidad, podrían drenar el fluido e inyectar más fluido cargado», dice Shepherd, «algo así como llenar su tanque de combustible en la estación de servicio».

El fluido, entonces, energiza a los peces. Pero también actúa como un fluido hidráulico tradicional, ya que transmite fuerza a la cola y las aletas pectorales. Cuando las bombas empujan el fluido hacia las aletas, se doblan hacia atrás y hacia delante para impulsar el robot. Las aletas pectorales funcionan de la misma manera para guiar a los peces hacia la izquierda y hacia la derecha.

Esto no mueve al robot de manera particularmente rápida: los peces pueden cubrir aproximadamente 1,5 veces la longitud de su cuerpo por minuto. «Definitivamente se lo comerían si estuviera en el océano», dice Shepherd.

Pero la velocidad del robot mejorará, ya que Shepherd y su equipo pueden aumentar el área de superficie de los ánodos y cátodos para mejorar la densidad de potencia. A diferencia de un robot tradicional de cuerpo duro, pueden llenar con celdas de batería donde lo deseen y dejar que la forma blanda del robot se adapte a los componentes adicionales. De este modo, se construye un sistema circulatorio robótico extendido: bombas y baterías que transportan el líquido por todo el robot.

Este sistema tiene algunas limitaciones importantes, especialmente teniendo en cuenta el estado avanzado de la tecnología de iones de litio. «La densidad de potencia es de 30 a 150 veces menos en lo que se observa en comparación con la capacidad de una batería de ión litio», dice el robotista del MIT CSAIL Robert Katzschmann, cuyo pez robot utiliza una batería de ión litio tradicional. Eso significa que el robot de Katzschmann puede moverse 20 veces más rápido que este nuevo pez.

Además, la naturaleza distribuida de este nuevo sistema de energía en los peces implica que no es posible cambiar con facilidad una batería sobre la marcha. «Cada vez que iba al océano, simplemente reemplazaba la batería por una nueva, así que no tengo que esperar para recargar mi prototipo», dice Katzschmann.

Aún así, podría haber un lugar para esta nueva visión de la robótica, junto con los sistemas tradicionales de iones de litio. Hay un montón de peces en el mar, después de todo.



Un robot del MIT monitorea los bíceps para aprender a manipular cosas

Aprender a moverse: los investigadores del MIT han creado un robot que monitorea de cerca nuestros bíceps mientras levantamos y movemos las cosas. Pero no se limita a admirar nuestros músculos, la idea consiste en desarrollar un sistema capaz de colaborar con las personas de forma más efectiva.

Aprender a controlar sus músculos: el robot, bautizado como RoboRaise, monitorea los músculos de una persona a través de unos sensores electromiográficos a los que está conectada. El aprendizaje automático compara las señales captadas por esos sensores con una representación del movimiento del brazo que hace la persona. Con esta información, el robot aprende repetir esa acción.

Aprender a trabajar en equipo: la mayoría de los robots de trabajo son tan torpes y peligrosos que es necesario ponerlos a trabajar aislados de los humanos, pero existe un creciente interés en que los robots colaboren con los trabajadores humanos. Este concepto, conocido como cobot, utiliza los avances en sensores y en algoritmos informáticos para volverlos más seguros y más inteligentes.

A observar cuidadosamente: el enfoque de RoboRaise resulta fascinante, y muestra cómo, en teoría, los robots podrían captar señales mucho más sutiles sobre el comportamiento de una persona. Esto podría crear máquinas que se coordinen mejor con nuestras acciones e intenciones.


Las personas saben instintivamente cómo trabajar juntas cuando llega el momento de levantar algo para lo que son necesarias dos personas. Las personas coordinan sus movimientos y trabajan para asegurarse de que cada lado de lo que se está llevando se mantenga a la misma altura. Si bien las tareas de este tipo son naturales para un humano, para los robots no es nada natural.
 
Los robots tienen que estar entrenados para trabajar bien con un humano y, por lo general, eso significa enseñar comandos de voz al robot de manera similar a cómo funciona un asistente de voz como Siri. Los investigadores del MIT han desarrollado un robot que puede colaborar con humanos sin necesidad de usar comandos hablados. El sistema robótico puede coordinar movimientos al monitorear sus movimientos musculares.

El sistema del MIT se llama RoboRaise, y requiere que los sensores se apliquen a los bíceps y tríceps del usuario para controlar su actividad muscular. Cuando los algoritmos detectan cambios en el nivel del brazo de la persona junto con gestos discretos con las manos hacia arriba y hacia abajo, el usuario puede hacer movimientos más finos.




El equipo pudo usar su sistema para tareas relacionadas con recoger cosas y ensamblar componentes simulados de aviones. El equipo dice que cuando el usuario y el robot trabajaron en estas tareas, aquel pudo controlar el robot a unos centímetros de la altura deseada. El sistema fue más preciso cuando se utilizaron gestos, respondiendo correctamente a aproximadamente el 70% de todos ellos.

Uno de los estudiantes del proyecto dice que puede imaginar a personas usando RoboRaise para fabricar, construir y ayudar en la casa. La nueva tecnología se basa en la tecnología anterior desarrollada en MIT, que permite a los usuarios corregir errores del robot con ondas cerebrales y gestos con las manos.

El equipo quiere desarrollar un sistema de asistencia robótica en el que el robot se adapte a lo humano, no al revés. El usuario puede comenzar a usar el robot rápidamente con una calibración mínima después de que los sensores están en su lugar.

Relacionados:
Guante lleno de sensores aprende las señales del tacto humano
Logran que los robots rastreen objetos en movimiento con una precisión sin precedentes
Piernas robóticas que se basan en la evolución animal para aprender a caminar
Creando robots que pueden ir a donde nosotros vamos
Una prótesis que restaura la sensación de dónde está tu mano



Guante lleno de sensores aprende las señales del tacto humano

Científicos del Instituto Tecnológico de Massachusetts (MIT) presentaron ayer un estudio en el que demostraban cómo un guante de bajo costo, recubierto con una red de sensores, podría reconocer objetos por medio de la presión, y ser utilizado en prótesis o robots, entre otros.

Se trata del proyecto Scalable TActile Glove (STAG), del Laboratorio de Ciencias de la Computación e Inteligencia Artificial, que creó este dispositivo de bajo costo, equipado con unos 550 sensores diminutos en casi toda la mano puede transmitir información en tiempo real.

En detalle, el guante capta cambios de presión por medio de una red de fibras conductoras —conocida técnicamente como una Red Neural Convolucional—, que procesan los datos con un algoritmo de sus sensores y buscan una coincidencia con objetos específicos para identificarlos.

“La información táctil recogida se proyecta sobre la forma de una mano humana, para que podamos entender fácilmente el contexto espacial”, explicó el director de la investigación, Subramanian Sundaraman a los medios. Y añadió: “Se podría considerar que el guante es como una cámara deformable que mide espacialmente las presiones o las fuerzas, lo que no es muy distinto a lo que ocurre en el mundo natural”.

En un artículo publicado en Nature, los investigadores describen un conjunto de datos que compilaron utilizando el STAG con 26 objetos comunes, entre ellos una lata de refresco, tijeras, una pelota de tenis, cuchara, bolígrafo y taza. Usando el conjunto de datos, el sistema predijo las identidades de los objetos con una precisión de hasta el 76 por ciento.

El guante, que sólo cuesta US$10 dólares, también puede predecir los pesos correctos de la mayoría de los objetos dentro de unos 60 gramos.




STAG está laminado con un polímero eléctricamente conductor que cambia la resistencia a la presión aplicada. Los investigadores cosieron hilos conductores a través de orificios en la película de polímero conductor, desde la punta de los dedos hasta la base de la palma. Los hilos se superponen de una manera que los convierte en sensores de presión. Cuando alguien que usa el guante siente, levanta, sujeta y suelta un objeto, los sensores registran la presión en cada punto.

Los hilos se conectan desde el guante a un circuito externo que traduce los datos de presión en «mapas táctiles», que son esencialmente videos breves de puntos que crecen y se contraen en un gráfico de una mano. Los puntos representan la ubicación de los puntos de presión, y su tamaño representa la fuerza: cuanto más grande es el punto, mayor es la presión.

A partir de esos mapas, los investigadores compilaron un conjunto de datos de aproximadamente 135.000 cuadros de video de interacciones con 26 objetos. Esos marcos pueden ser utilizados por una red neuronal para predecir la identidad y el peso de los objetos, y proporcionar información sobre la comprensión humana.

Para identificar objetos, los investigadores diseñaron una red neuronal convolucional (CNN), que generalmente se usa para clasificar imágenes, para asociar patrones de presión específicos con objetos específicos. Pero el truco fue elegir marcos de diferentes tipos de agarres para obtener una imagen completa del objeto.

La idea era imitar la forma en que los humanos pueden sostener un objeto de diferentes maneras para reconocerlo, sin usar su vista. De manera similar, la red neuronal convolucional de los investigadores elige hasta ocho cuadros semi-aleatorios del video que representan las capturas más diferentes, por ejemplo, sosteniendo una taza desde la parte inferior, superior y del mango.

El sistema podría mejorar la comprensión del funcionamiento del tacto, y de esta manera cómo se controlan las manos; una información que para algunos investigadores podría utilizarse para incorporar sensores táctiles a miembros artificiales, o partes mecánicas, y así revolucionar el desarrollo de prótesis y manos robóticas.

La red nerviosa de los mamíferos, dicen algunos, es todo un prodigio. En ella miles de millones de sensores distribuidos por la piel envían mensajes a nuestro cerebro, discriminan qué es importante y qué no, siendo clave para nuestras experiencias e incluso para la supervivencia.

Artículos Relacionados:

Dando sentido del tacto a los robots
Una prótesis que restaura la sensación de dónde está tu mano
Ver a través de los ojos de un robot ayuda a personas con grandes deficiencias motoras
Crean piel electrónica resistente al agua, sensible y con capacidad de auto-reparación



El robot Slothbot hace monitoreo ambiental basado en su lentitud

Para el monitoreo ambiental, la agricultura de precisión, el mantenimiento de la infraestructura y ciertas aplicaciones de seguridad, una eficiencia lenta y de bajo consumo de energía puede ser mejor que algo rápido, que necesita una recarga continua. Ahí es donde tiene su lugar «SlothBot».

Impulsado por un par de paneles fotovoltaicos y diseñado para permanecer en el dosel del bosque funcionando durante meses, SlothBot (“Robot Perezoso”) se mueve solo cuando es necesario para medir cambios ambientales, como el clima y los factores químicos en el ambiente, que solo se pueden observar con una presencia a largo plazo. El prototipo de prueba del hipereficiente robot, descrito el 21 de mayo en la Conferencia Internacional sobre Robótica y Automatización (ICRA) en Montreal, pronto se encontrará entre los cables de los árboles en el Jardín Botánico de Atlanta.

«En robótica, parece que siempre estamos presionando por robots más rápidos, más ágiles y más extremos», dijo Magnus Egerstedt, Director de la Escuela de Ingeniería Eléctrica e Informática Steve W. Chaddick en el Instituto de Tecnología de Georgia e investigador principal de Slothbot. “Pero hay muchas aplicaciones donde no hay necesidad de ser rápido. Solo tiene que estar allí, persistiendo durante largos períodos de tiempo, observando lo que está ocurriendo».

Basado en lo que Egerstedt llamó la «teoría de la lentitud», el asistente de investigación graduado Gennaro Notomista diseñó SlothBot junto con su compañero, Yousef Emam, utilizando piezas impresas en 3D para los mecanismos de engranaje y de paso de cable a cable que son necesarios para rastrear a través de una red de cables en los árboles El mayor desafío para un robot de rastreo de cables es cambiar de un cable a otro sin caerse, dijo Notomista.

«El desafío es sujetar suavemente un cable mientras se agarra a otro», dijo. «Es una maniobra difícil y tienes que hacerlo bien para proporcionar una transición a prueba de fallos. Asegurarse de que los traspasos funcionen bien durante largos períodos de tiempo es realmente el mayor desafío».

Mecánicamente, SlothBot consiste en dos cuerpos conectados por una bisagra controlada. Cada cuerpo aloja un motor de accionamiento conectado a una llanta en la que se monta un neumático. El uso de ruedas para la locomoción es simple, eficiente en energía y más seguro que otros tipos de locomoción por cable, según los investigadores.

SlothBot ha operado hasta ahora en una red de cables en el campus de Georgia Tech. A continuación, una nueva carcasa impresa en 3D, que hace que el robot se vea más como un perezoso, protegerá los motores, engranajes, actuadores, cámaras, computadoras y otros componentes de la lluvia y el viento. Eso establecerá las bases para estudios a más largo plazo en el dosel de los árboles en el Jardín Botánico de Atlanta, donde Egerstedt espera que los visitantes vean pronto las condiciones de monitoreo de SlothBot, en el próximo otoño boreal.

El nombre de SlothBot no es una coincidencia. Los perezosos de la vida real son pequeños mamíferos que viven en los doseles de la selva de América del Sur y Central. Se mantienen comiendo hojas de árboles, y estos animales pueden sobrevivir con el equivalente calórico diario de una papa pequeña. Con su metabolismo lento, los perezosos descansan tanto como 22 horas al día y rara vez descienden de los árboles, donde pueden pasar toda su vida.

«La vida de un perezoso es bastante lenta y no hay mucha emoción a nivel diario», dijo Jonathan Pauli, profesor asociado en el Departamento de Ecología de Bosques y Vida Silvestre de la Universidad de Wisconsin-Madison, quien ha consultado con el equipo de Georgia Tech sobre el proyecto. «Lo bueno de una vida llevada con lentitud es que realmente no se necesita mucha energía. Puede tener una larga duración y persistencia en un área limitada, con muy pocas entradas de energía durante un largo tiempo».

Eso es exactamente lo que los investigadores esperan de SlothBot, cuyo desarrollo ha sido financiado por la Oficina de Investigación Naval de los Estados Unidos.

«Hay mucho que no sabemos sobre lo que realmente sucede en áreas densas cubiertas de árboles», dijo Egerstedt. «La mayoría de las veces, SlothBot solo se quedará colgado, y de vez en cuando se moverá a un lugar soleado para recargar la batería».

Los investigadores también esperan probar SlothBot en una plantación de cacao en Costa Rica, que ya es hogar de perezosos reales. «Los cables utilizados para mover el cacao se han convertido en una autopista de perezosos porque a los animales les resulta útil moverse», dijo Egerstedt. «Si todo va bien, desplegaremos SlothBots a lo largo de los cables para monitorear a los perezosos».




Egerstedt es conocido por los algoritmos que manejan enjambres de pequeños robots con ruedas o voladores. Pero durante una visita a Costa Rica, se interesó por los perezosos y comenzó a desarrollar lo que él llama «una teoría de la lentitud» junto con el profesor Ron Arkin en la Escuela de Computación Interactiva de Georgia Tech. La teoría aprovecha los beneficios de la eficiencia energética.

«Si estás haciendo cosas como el monitoreo ambiental, quieres estar en el bosque durante meses», dijo Egerstedt. «Eso cambia tu forma de pensar acerca de los sistemas de control a un alto nivel».

Ya se usan robots voladores para monitoreo ambiental, pero sus necesidades de alta energía implican que no pueden quedarse por mucho tiempo. Los robots con ruedas pueden arreglárselas con menos energía, pero pueden quedar atrapados en el lodo o ser obstaculizados por las raíces de los árboles, y no puede obtener una vista de gran detalle desde el suelo.

«Lo que cuesta energía más que cualquier otra cosa es el movimiento», dijo Egerstedt. “Moverse es mucho más costoso que sentir o pensar. Para los robots ambientales, solo debes moverte cuando es absolutamente necesario. Teníamos que pensar en cómo sería eso».

Para Pauli, que estudia una variedad de vida silvestre, ha sido gratificante trabajar con Egerstedt para ayudar a SlothBot a cobrar vida.

«Es genial ver a un robot inspirado en la biología de los perezosos», dijo. “Ha sido divertido compartir cómo viven los perezosos y otros organismos que viven en estos ecosistemas durante largos períodos de tiempo. Será interesante ver a los robots reflejando lo que vemos en las comunidades ecológicas naturales”.

Esta investigación fue patrocinada por la Oficina de Investigación Naval de los EE. UU. A través de la concesión N00014-15-2115.