Kinova Robotics diseña y fabrica productor innovadores de robótica para asistencia personal y funciones de servicio. Su buque insignia, el brazo robótico JACO, ahora en su segunda generación, enriquece la vida de las personas con mobilidad superior reducida permitiéndoles realizar tareas rutinarias con seguridad e independencia. Maple™, el producto principal de Maplesoft para el cálculo y la documentación técnica, fue utilizado por los ingenieros de Kinova para gestionar y derivar las ecuaciones de matrices complejas que están por debajo de los algoritmos avanzados que controlan el brazo robótico JACO, y que han llevado a una funcionalidad mejorada.

JACO dispone de seis segmentos interenlazados - el último de ellos es una mano con tres dedos- y funciona con seis grados de libertad. Con un alcance de 90 cm, puede montarse en una silla de ruedas motorizada o en una base fija. Utilizando un controlador tipo joystick, el usuario puede mover la mano del robot en un espacio tridimensional para agarrar y soltar objetos cuando lo desee, para realizar tareas rutinarias.

El equipo de control y algoritmos robóticos de Kinova se enfrentaron a un reto clave al diseñar el controlador del brazo. Para que el brazo robótico se pueda operar con seguridad necesitaron diseñar algoritmos avanzados que involucraban grandes ecuaciones matriciales para calcular la cinemética y las fuerzas aplicadadas en todo el brazo.

Una complejidad añadida es que esos cálculos, que corren en un microcontrolador, deben realizarse repetidamente, en intervalos de tiempo muy cortos. Por lo tanto, los algoritmos deben de ser refrescados continuamente a una alta velocidad, lo que crea una matriz muy grande de ecuaciones trigonométricas simultáneas.

En este tipo de reto matemático es donde Maple sobresale. El motor de cálculo simbólico de alto rendimiento de Maple permite describir, visualizar y resolver problemas matemáticos complejos. Maple dispone de algoritmos eficientes y herramientas para cálculo de alto rendimiento y resolución de problemas de gran escala, capacitándolo para resolver incluso aquellos problemas que están más allá del alcance de otros sistemas de software.

"Necesitábamos un software que fuera conocido por su robustez - uno que fuera capaz de manejar grandes ecuaciones y cálculos matriciales, y devolviera soluciones simbólicas. Lo más importante, necesitábamos un software que fuera muy intuitivo de utilizar. Maple era el software perfecto para ajustarse a esos requisitos," dice el Dr. Alexandre Lecours, director de proyecto en el Equipo de Control y Algoritmos Robóticos.

Utilizando Maple, el equipo se dedicó a la definición del problema y a la creación de un programa para resolverlo. El primer paso fue definir las entradas al programa - que incluían el número de enlaces, sus longitudes y los ángulos de las articulaciones. Después de definir las relaciones entre estas variables, fueron capaces de crear un sistema de ecuaciones trigonométricas que representaban el problema a resolver.

Entonces utilizaron el motor de cálculo simbólico de Maple para analizar y simplificar estas ecuaciones para genera la función de salida, que calculaba la posición de la mano.

Esta función de salida optimizada -todavía en su forma simbólica- se convirtió entonces en código C++ para utilizarla en simulación, y en los controladores embebidos en el brazo. El Dr. Lecours explicó las razones de utilizar esta aproximación. "Podríamos haber hecho los cálculos directamente en C++," dijo. "Sin embargo, existe una serie de cálculos dentro de las matrices que hubieran dado lugar a una multiplicación por cero. Maple nos permitió evaluarlas antes de tiempo y factorizarlas para llegar a un conjunto reducido de ecuaciones con menos cálculos."

Dado que estos cálculos son realizados continuamente con cada cambio en cualquiera de los motores, a medida que el brazo robótico se va moviendo alrededor, disponer del código en su forma más optimizada permite que el controlador corra más eficientemente. Al eliminar todas las ramas nulas de los cálculos, el controlador es capaz de determinar la posición de la mano más rápido, proporcionando un control más refinado y finalmente una mejor experiencia de usuario.

El Dr. Lecours y sus colegas siguen utilizando Maple para desarrollar controladores embebidos para sus otros productos robóticos. Concluye, "No había ningún otro software que nos pudiera ayudar a resolver este problema simbólicamente. Maple no solo era intuitivo de utilizar, sino que el código de Maple era mucho más fácil de comprender que el código C++. Esto nos permitió realizar el desarrollo rápidamente y depurar nusetro producto, reduciendo significativamente nuestro tiempo de desarrollo."