Diferencia entre revisiones de «Cinemática de brazos robóticos simples con Octave/Matlab»

De WikiRobotics
Saltar a: navegación, buscar
(Robot 1)
(Ejemplo en Octave)
 
(No se muestran 62 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
[[Archivo:Robot3-kinematics.png|thumb|right|300px| Cinemática de un brazo robot de 3 grados de libertad (''click para ampliar'')]]
 
== Introducción ==
 
== Introducción ==
Se muestran ejemplos de cómo resolver la '''cinemática directa''' de tres brazos robóticos sencillos, de 1, 2 y 3 grados de libertad usando '''transformadas homogéneas''' y la herramienta [http://www.gnu.org/software/octave/ Octave] , corriendo en una máquina con Ubuntu Linux (10.04)
+
Se muestran ejemplos de cómo resolver la '''cinemática directa''' de tres brazos robóticos sencillos, de 1, 2 y 3 grados de libertad usando '''transformadas homogéneas''' y la herramienta [http://www.gnu.org/software/octave/ Octave] , corriendo en una máquina con Ubuntu Linux (11.10)
 +
 
 +
Los ejemplos se hicieron originalmente para los estudiantes de la asignatura de '''Control y Programación de Robots''', Ingeniería Industrial, Universidad Carlos III de Madrid (UC3M)
  
 
== Instalación ==
 
== Instalación ==
  
Instalación de octave en Ubuntu 10.04:
+
Instalación de octave en Ubuntu 11.10:
  
 
   sudo apt-get install octave3.2
 
   sudo apt-get install octave3.2
  
Descargar el paquete XXX con los ejemplos y descomprimirlo
+
Descargar el paquete [http://www.iearobotics.com/downloads/2010-10-12-ArmRobotKinematics/ArmRobotKinematics-v1.2.zip ArmRobotKinematics-v1.2.zip] con los ejemplos y descomprimirlo
  
 
== Robot 1 ==
 
== Robot 1 ==
 
El primer ejemplo es un '''robot con un grado de libertad''' (<math>q_1</math>). Sólo es necesario usar una transformación homogénea determinada por una rotación de <math>q_1</math> grados alrededor del eje <math>x_1</math> y una traslación de <math>l_1</math> sobre el eje <math>y_1</math>:
 
El primer ejemplo es un '''robot con un grado de libertad''' (<math>q_1</math>). Sólo es necesario usar una transformación homogénea determinada por una rotación de <math>q_1</math> grados alrededor del eje <math>x_1</math> y una traslación de <math>l_1</math> sobre el eje <math>y_1</math>:
  
<math>A_1=Rotz(q_1)Trasy(l_1)</math> donde:
+
<math>A_1=Rotx(q_1)Trasy(l_1)</math> donde:
  
<math>Rotz(q_1)=\left(\begin{array}{cccc}
+
<math>Rotx(a)=\left(\begin{array}{cccc}
 
1 & 0 & 0 & 0\\
 
1 & 0 & 0 & 0\\
0 & ca & -sa & 0\\
+
0 & cos(a) & -sin(a) & 0\\
0 & sa & ca & 0\\
+
0 & sin(a) & cos(a) & 0\\
 
0 & 0 & 0 & 1\end{array}\right)</math>, <math>Trasy(l_1)=\left(\begin{array}{cccc}
 
0 & 0 & 0 & 1\end{array}\right)</math>, <math>Trasy(l_1)=\left(\begin{array}{cccc}
 
1 & 0 & 0 & 0\\
 
1 & 0 & 0 & 0\\
Línea 34: Línea 37:
 
En la '''Figura 1''' se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la '''figura 2''' se puede ver un pantallazo de la ejecución del programa para Octave.
 
En la '''Figura 1''' se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la '''figura 2''' se puede ver un pantallazo de la ejecución del programa para Octave.
  
=== Probando el robot con octave ===
+
=== Ejemplo ===
 +
 
 +
Arrancar octave y ejecutar el siguiente comando
 +
 
 
  octave:1> robot1(45)
 
  octave:1> robot1(45)
 +
 +
Se le pasa como parámetro el ángulo <math>q_1</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.
  
 
== Robot 2 ==
 
== Robot 2 ==
 +
Este segundo ejemplo es un brazo robot de '''2 grados de libertad''' (<math>q_1</math> y <math>q_2</math>). Las dos matrices de transformación son:
 +
 +
* <math>A_1=Rotx(q_1)Trasy(l_1)</math>
 +
* <math>A_2=Rotx(q_2)Trasy(l_2)</math>
 +
 +
donde: Rotx y Trasy son las mismas matrices del ejemplo 1
  
 
{| {{tablabonita}}
 
{| {{tablabonita}}
| [[Archivo:Robot2-kinematics.png|thumb|300px|Cinemática del robot 2 (''click para ampliar'')]]
+
| [[Archivo:Robot2-kinematics.png|thumb|300px|'''Fig 3''': Cinemática del robot 2 (''click para ampliar'')]]
| [[Archivo:Robot2-pantallazo.png|thumb|300px|Captura de pantalla de la ejecución de Robot2 en Octave(''click para ampliar'') ]]
+
| [[Archivo:Robot2-pantallazo.png|thumb|300px|'''Fig 4''': Captura de pantalla de la ejecución de Robot2 en Octave(''click para ampliar'') ]]
 
|}
 
|}
  
* Probando el robot en octave:
+
En la '''Figura 3''' se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la '''figura 4''' se puede ver un pantallazo de la ejecución del programa para Octave.
 +
 
 +
=== Ejemplo ===
 +
 
 +
Arrancar octave y ejecutar el siguiente comando
  
 
  octave:1> robot2(45,-55)
 
  octave:1> robot2(45,-55)
 +
 +
Se le pasa como parámetros los ángulos <math>q_1</math> y <math>q_2</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.
 +
 +
== Robot 2 + 1 ==
 +
Robot con '''2 grados de libertad para posicionamiento''' del manipulador y '''1 para su orientación'''. La nueva matriz de transformación es:
 +
 +
* <math>A_3=Rotx(q_3)</math>
 +
 +
{| {{tablabonita}}
 +
| [[Archivo:Robot2 1-kinematics.png|thumb|300px|'''Fig 4''': Cinemática del robot 2+1 (''click para ampliar'')]]
 +
| [[Archivo:Robot2 1-pantallazo.png|thumb|300px|'''Fig 5''': Captura de pantalla de la ejecución de Robot2+1 en Octave(''click para ampliar'') ]]
 +
|}
 +
 +
En la '''Figura 4''' se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la '''figura 5''' se puede ver un pantallazo de la ejecución del programa para Octave.
 +
 +
=== Ejemplo ===
 +
 +
Arrancar octave y ejecutar el siguiente comando
 +
 +
octave:1> robot2_1(45,-55,60);
 +
 +
Se le pasa como parámetros los ángulos <math>q_1</math>, <math>q_2</math> y <math>q_2</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.
  
 
== Robot 3 ==
 
== Robot 3 ==
 +
 +
Este ejemplo es un '''brazo robot de 3 grados de libertad''' (<math>q_0</math>, <math>q_1</math> y <math>q_2</math>). Las matrices de transformación homogéneas son:
 +
 +
* <math>A_0=Rotz(g_0)</math>
 +
* <math>A_1=Rotx(q_1)Trasy(l_1)</math>
 +
* <math>A_2=Rotx(q_2)Trasy(l_2)</math>
 +
 +
donde las matrices Rotx y Trasy son las mismas de los ejemplos 1 y 2, y Rotz es:
 +
 +
<math>Rotz(a)=\left(\begin{array}{cccc}
 +
cos(a) & -sin(a) & 0 & 0\\
 +
sin(a) & cos(a) & 0 & 0\\
 +
0 & 0 & 1 & 0\\
 +
0 & 0 & 0 & 1\end{array}\right)</math>
  
 
{| {{tablabonita}}
 
{| {{tablabonita}}
| [[Archivo:Robot3-kinematics.png|thumb|300px|Cinemática del Robot 3 (''click para ampliar'')]]
+
| [[Archivo:Robot3-kinematics.png|thumb|300px|'''Fig 6''': Cinemática del Robot 3 (''click para ampliar'')]]
| [[Archivo:Robot3-captura1.png|thumb|300px|Captura de pantalla de la ejecución de Robot3 en Octave (''Click para ampliar'')]]
+
| [[Archivo:Robot3-captura1.png|thumb|300px|'''Fig 7''': Captura de pantalla de la ejecución de Robot3 en Octave (''Click para ampliar'')]]
 
|}
 
|}
  
* Probando el robot en Octave:
+
En la '''Figura 6''' se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la '''figura 7''' se puede ver un pantallazo de la ejecución del programa para Octave.
 +
 
 +
=== Ejemplo ===
 +
 
 +
Arrancar octave y ejecutar el siguiente comando
 +
 
 
  octave:1> robot3(-10,45,-60)
 
  octave:1> robot3(-10,45,-60)
 +
 +
Se le pasa como parámetros los ángulos <math>q_0</math>, <math>q_1</math> y <math>q_2</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.
 +
 +
== Robot 3+1 ==
 +
Robot de '''4 grados de libertad''', 3 para posicionamiento del manipulador y 1 para su orientación.
 +
Las matrices de transformación homogéneas son:
 +
 +
* <math>A_0=Rotz(q_0)</math>
 +
* <math>A_1=Rotx(q_1)Trasy(l_1)</math>
 +
* <math>A_2=Rotx(q_2)Trasy(l_2)</math>
 +
* <math>A_3=Rotx(q_3)</math>
 +
 +
{| {{tablabonita}}
 +
| [[Archivo:Robot3 1-kinematics.png|thumb|300px|'''Fig 8''': Cinemática del Robot 3+1 (''click para ampliar'')]]
 +
| [[Archivo:Robot3 1-pantallazo.png|thumb|300px|'''Fig 9''': Captura de pantalla de la ejecución de Robot3+1 en Octave (''Click para ampliar'')]]
 +
|}
 +
 +
En la '''Figura 8''' se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la '''figura 9''' se puede ver un pantallazo de la ejecución del programa para Octave.
 +
 +
=== Ejemplo ===
 +
 +
Arrancar octave y ejecutar el siguiente comando
 +
 +
octave:1> robot3_1(-10,45,-60,60);
 +
 +
Se le pasa como parámetros los ángulos <math>q_0</math>, <math>q_1</math>, <math>q_2</math> y <math>q_3</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.
  
 
== Descargas ==
 
== Descargas ==
 +
 +
{| {{tablabonita}}
 +
| [http://www.iearobotics.com/downloads/2010-10-12-ArmRobotKinematics/ArmRobotKinematics-v1.2.zip ArmRobotKinematics-v1.2.zip]
 +
| Ejemplos para octave/Matlab. Versión 1.2
 +
|------------
 +
| [http://www.iearobotics.com/downloads/2010-10-12-ArmRobotKinematics/ArmRobotKinematics-1.1.zip ArmRobotKinematics-1.1.zip]
 +
| Ejemplos para octave. Versión 1.1
 +
|------------
 +
| [http://www.iearobotics.com/downloads/2010-10-12-ArmRobotKinematics/ArmRobotKinematics-1.0.zip ArmRobotKinematics-1.0.zip]
 +
| Ejemplos para Octave. Versión 1.0 ('''Obsoleta''')
 +
|}
  
 
== Autor ==
 
== Autor ==
 +
[[Juan Gonzalez:Main|Juan González Gómez]]
 +
 +
== Licencia ==
 +
{|{{tablabonita}}
 +
| [[Imagen:Cc logo.png]] This work is licensed under a [http://creativecommons.org/licenses/by-sa/3.0/es/ Creative Commons Attribution-ShareAlike 3.0 Spain License].
 +
|--------
 +
| [[Imagen:GPLv3-logo-red.png|left|150px]] El código está liberado bajo licencia GPLv3
 +
|}
  
 
== Repositorio SVN ==
 
== Repositorio SVN ==
  
 
* [http://svn.iearobotics.com/ArmRobotKinematics http://svn.iearobotics.com/ArmRobotKinematics]
 
* [http://svn.iearobotics.com/ArmRobotKinematics http://svn.iearobotics.com/ArmRobotKinematics]
 +
 +
== Enlaces ==
 +
* [[Cuadernos Técnicos|Índice de cuadernos técnicos]]
  
 
== Noticias ==
 
== Noticias ==
 +
* '''28/Abril/2012''':
 +
** Version 1.2 liberada: Modificados los ejemplos para funcionar en Matlab (además de octave)
 +
* '''20/Octubre/2010''':
 +
** Añadidos los ejemplos Robot2+1 y Robot3+1
 +
** Versión 1.1 liberada
 +
* '''12/Octubre/2010''':
 +
** Primera versión de esta página
 +
** Versión 1.0 liberada
 
* '''07/Octubre/2010''': Comenzada esta página
 
* '''07/Octubre/2010''': Comenzada esta página

Revisión actual del 07:25 28 abr 2012

Cinemática de un brazo robot de 3 grados de libertad (click para ampliar)

Introducción

Se muestran ejemplos de cómo resolver la cinemática directa de tres brazos robóticos sencillos, de 1, 2 y 3 grados de libertad usando transformadas homogéneas y la herramienta Octave , corriendo en una máquina con Ubuntu Linux (11.10)

Los ejemplos se hicieron originalmente para los estudiantes de la asignatura de Control y Programación de Robots, Ingeniería Industrial, Universidad Carlos III de Madrid (UC3M)

Instalación

Instalación de octave en Ubuntu 11.10:

 sudo apt-get install octave3.2

Descargar el paquete ArmRobotKinematics-v1.2.zip con los ejemplos y descomprimirlo

Robot 1

El primer ejemplo es un robot con un grado de libertad (<math>q_1</math>). Sólo es necesario usar una transformación homogénea determinada por una rotación de <math>q_1</math> grados alrededor del eje <math>x_1</math> y una traslación de <math>l_1</math> sobre el eje <math>y_1</math>:

<math>A_1=Rotx(q_1)Trasy(l_1)</math> donde:

<math>Rotx(a)=\left(\begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & cos(a) & -sin(a) & 0\\ 0 & sin(a) & cos(a) & 0\\ 0 & 0 & 0 & 1\end{array}\right)</math>, <math>Trasy(l_1)=\left(\begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & l_1\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\end{array}\right) </math>


Fig 1: Cinemática del robot 1 (click para ampliar)
Fig 2: Captura de pantalla de la ejecución de Robot1 en Octave(click para ampliar)

En la Figura 1 se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la figura 2 se puede ver un pantallazo de la ejecución del programa para Octave.

Ejemplo

Arrancar octave y ejecutar el siguiente comando

octave:1> robot1(45)

Se le pasa como parámetro el ángulo <math>q_1</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.

Robot 2

Este segundo ejemplo es un brazo robot de 2 grados de libertad (<math>q_1</math> y <math>q_2</math>). Las dos matrices de transformación son:

  • <math>A_1=Rotx(q_1)Trasy(l_1)</math>
  • <math>A_2=Rotx(q_2)Trasy(l_2)</math>

donde: Rotx y Trasy son las mismas matrices del ejemplo 1

Fig 3: Cinemática del robot 2 (click para ampliar)
Fig 4: Captura de pantalla de la ejecución de Robot2 en Octave(click para ampliar)

En la Figura 3 se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la figura 4 se puede ver un pantallazo de la ejecución del programa para Octave.

Ejemplo

Arrancar octave y ejecutar el siguiente comando

octave:1> robot2(45,-55)

Se le pasa como parámetros los ángulos <math>q_1</math> y <math>q_2</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.

Robot 2 + 1

Robot con 2 grados de libertad para posicionamiento del manipulador y 1 para su orientación. La nueva matriz de transformación es:

  • <math>A_3=Rotx(q_3)</math>
Fig 4: Cinemática del robot 2+1 (click para ampliar)
Fig 5: Captura de pantalla de la ejecución de Robot2+1 en Octave(click para ampliar)

En la Figura 4 se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la figura 5 se puede ver un pantallazo de la ejecución del programa para Octave.

Ejemplo

Arrancar octave y ejecutar el siguiente comando

octave:1> robot2_1(45,-55,60);

Se le pasa como parámetros los ángulos <math>q_1</math>, <math>q_2</math> y <math>q_2</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.

Robot 3

Este ejemplo es un brazo robot de 3 grados de libertad (<math>q_0</math>, <math>q_1</math> y <math>q_2</math>). Las matrices de transformación homogéneas son:

  • <math>A_0=Rotz(g_0)</math>
  • <math>A_1=Rotx(q_1)Trasy(l_1)</math>
  • <math>A_2=Rotx(q_2)Trasy(l_2)</math>

donde las matrices Rotx y Trasy son las mismas de los ejemplos 1 y 2, y Rotz es:

<math>Rotz(a)=\left(\begin{array}{cccc} cos(a) & -sin(a) & 0 & 0\\ sin(a) & cos(a) & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\end{array}\right)</math>

Fig 6: Cinemática del Robot 3 (click para ampliar)
Fig 7: Captura de pantalla de la ejecución de Robot3 en Octave (Click para ampliar)

En la Figura 6 se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la figura 7 se puede ver un pantallazo de la ejecución del programa para Octave.

Ejemplo

Arrancar octave y ejecutar el siguiente comando

octave:1> robot3(-10,45,-60)

Se le pasa como parámetros los ángulos <math>q_0</math>, <math>q_1</math> y <math>q_2</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.

Robot 3+1

Robot de 4 grados de libertad, 3 para posicionamiento del manipulador y 1 para su orientación. Las matrices de transformación homogéneas son:

  • <math>A_0=Rotz(q_0)</math>
  • <math>A_1=Rotx(q_1)Trasy(l_1)</math>
  • <math>A_2=Rotx(q_2)Trasy(l_2)</math>
  • <math>A_3=Rotx(q_3)</math>
Fig 8: Cinemática del Robot 3+1 (click para ampliar)
Fig 9: Captura de pantalla de la ejecución de Robot3+1 en Octave (Click para ampliar)

En la Figura 8 se muestra la geometría del robot y la nomenclatura empleada para los sistemas de referencia. En la figura 9 se puede ver un pantallazo de la ejecución del programa para Octave.

Ejemplo

Arrancar octave y ejecutar el siguiente comando

octave:1> robot3_1(-10,45,-60,60);

Se le pasa como parámetros los ángulos <math>q_0</math>, <math>q_1</math>, <math>q_2</math> y <math>q_3</math> en grados. El programa calcula los puntos del robot y los dibuja en pantalla.

Descargas

ArmRobotKinematics-v1.2.zip Ejemplos para octave/Matlab. Versión 1.2
ArmRobotKinematics-1.1.zip Ejemplos para octave. Versión 1.1
ArmRobotKinematics-1.0.zip Ejemplos para Octave. Versión 1.0 (Obsoleta)

Autor

Juan González Gómez

Licencia

Cc logo.png This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Spain License.
150px El código está liberado bajo licencia GPLv3

Repositorio SVN

Enlaces

Noticias

  • 28/Abril/2012:
    • Version 1.2 liberada: Modificados los ejemplos para funcionar en Matlab (además de octave)
  • 20/Octubre/2010:
    • Añadidos los ejemplos Robot2+1 y Robot3+1
    • Versión 1.1 liberada
  • 12/Octubre/2010:
    • Primera versión de esta página
    • Versión 1.0 liberada
  • 07/Octubre/2010: Comenzada esta página