# Simulador de Cinemática Directa de Robots
## Introducción

El análisis cinemático de un robot consiste en estudiar la relación entre el valor asignado a los grados de libertad (coordenadas articulares) y la posición y orientación (pose) del efector final, así como su posición y aceleración. Este análisis puede responder a la resolución del problema cinemático directo o inverso, dependiendo de si los datos de entrada están referidos al espacio articular o al espacio del efector final (espacio de tarea).

En este simulador se implementa el problema cinemático directo. Para ello, primero se define la cadena cinemática del robot en estudio, a partir de los parámetros estándar de Denavit–Hartenberg. Para ejemplificar este procedimiento se muestra en la Figura (izquierda) un modelo CAD del robot ABB IRB 4600, mientras que a la derecha se muestra su esquema según esta convención. Los parámetros resultantes se resumen en la Tabla.

::::{grid} 2
:::{grid-item-card}  Modelo CAD
![open](figs/IRB4600.png)
:::
:::{grid-item-card}  Esquema
![closed](figs/IRB4600_DH.png)
:::
::::

Una vez que se dispone de la tabla de parámetros DH, esta debe guardarse en un archivo .txt como el que se puede descargar en este [enlace](../TMM-sphinx-EN/_static/00-IRB4600.txt "clic derecho y descargar"). Estos corresponden al ABB IRB 4600, y son los siguientes: 

| $a_i$ | $\alpha_i$ | $d_i$ | $\theta_i$ | Jt |
| ------ | ------ | ------ | ------ | ------ | 
| 0.175   | -90 | 0.495 | 0 |  1 |
| 1.095 | 0  | 0 | -90 | 1 |
| 0.175    | -90 | 0 | 0 | 1 |
| 0    | 90 | 1.2305 | 0 | 1 |
| 0    | 90 | 0 | 180 | 1 |
| 0    | 0 | 0.085 | 0 | 1 |

donde Jt es el tipo de articulación, siendo 1 para articulaciones de revolución y 2 para articulación prismática. A continuación, se puede ejecutar el simulador y cargar dicha tabla. Se generará automáticamente una vista 3D del robot analizado y se mostrarán los datos de la pose en la posición inicial. Para definir una nueva pose, se utilizarán los sliders correspondientes a cada una de las articulaciones de las que dispone el robot. En este caso, hay 6 articulaciones, todas de revolución. Se puede observar cómo los datos de la nueva pose se actualizan a medida que el robot se mueve, mientras se genera una traza con la trayectoria que describe el efector final.

## El simulador

El siguiente iframe corresponde al simulador RobotFKS. Para iniciar una sesión, haga clic en `Run` y luego cargue el archivo `.txt` con la tabla de parámetros DH. A continuación, utilice los sliders para definir nuevas configuraciones.

<iframe src="https://trinket.io/embed/glowscript/eb82067858?outputOnly=true" width="100%" height="600" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>

## Otros tipos de robots

Cuando se trabaja con articulaciones prismáticas, es necesario incluir una quinta columna en la tabla de parámetros DH que defina el tipo de articulación. Así, se debe establecer un valor de `2` para las articulaciones prismáticas, y `1` para las de revolución. En los siguientes enlaces puede descargar los archivos de configuración correspondientes a varios tipos de robots con diferentes tipos y número de articulaciones:

+ Robot concepto RPR [Tabla DH](../TMM-sphinx-EN/_static/01-RPR.txt "clic derecho y descargar")
+ KUKA LBR iiwa (7 GDL) [Tabla DH](../TMM-sphinx-EN/_static/02-iiwa.txt "clic derecho y descargar")
+ Schunk LWA 4P [Tabla DH](../TMM-sphinx-EN/_static/03-lw4p.txt "clic derecho y descargar")
+ Robot concepto PRR [Tabla DH](../TMM-sphinx-EN/_static/04-RRP.txt "clic derecho y descargar")
+ Robot concepto PPP [Tabla DH](../TMM-sphinx-EN/_static/05-PPP.txt "clic derecho y descargar")

Ejemplo de uso:

<video src="_static/RobotFKS.mp4" height="250" controls autoplay muted loop></video>

## Actualización

En el siguiente [enlace](https://customrobotics.es/) se puede encontrar una versión moderna de este simulador llamada Robodimm. Esta versión incluye el cálculo de la cinemática inversa, la programación, la capacidad e incluso el análisis dinámico, con gráficos renderizados. Como limitación, actualmente solo es posible trabajar con dos tipos de robots plantilla: un manipulador 6R con muñeca esférica, y un paletizador de 4 GDL. 

![Robodimm](figs/figura_robodimm.png "Software online Robodimm")

Para más información visite el [repositorio](https://github.com/ual-arm/robodimm) de GitHub de Robodimm.

## Conclusiones

La herramienta RobotFKS constituye una herramienta ligera y eficaz para la resolución del problema cinemático directo de robots compuestos por cadenas cinemáticas abiertas y articulaciones de revolución y prismáticas. Su interfaz minimalista y el hecho de que pueda ejecutarse directamente desde un navegador web [^1], sin necesidad de instalar ningún programa, la convierten en un complemento muy útil en el aprendizaje de la robótica. En concreto, puede ser de gran ayuda en la etapa inicial de modelado, para verificar la correcta asimilación de los conceptos relacionados con la implementación del método de Denavit–Hartenberg, y posteriormente, en el cálculo de la cinemática directa. Estas dos tareas resultan cruciales tanto en la programación como en el diseño de robots. Como trabajo futuro, puede considerarse la mejora de la representación de los eslabones, cuando existan articulaciones de tipo prismático seguidas de un valor no nulo del parámetro 'a', así como del efector final.

[^1]: Probado en Microsoft Edge bajo Windows 11 y Mozilla Firefox bajo Ubuntu 20.04.
