Este documento describe cómo construir un robot angular en Matlab. Primero, se crea una interfaz gráfica con botones para controlar los ángulos alfa, beta y theta. Luego, en cada callback de botón, se actualiza el ángulo correspondiente y se llama a la función "dibuja". Esta función calcula las matrices de rotación para cada ángulo y las multiplica según la cinemática del robot para obtener la posición final, la cual se grafica. Esto permite simular de forma interactiva el movimiento del robot angular.
2. Introducción
● Este ejemplo de la construcción de un
robot angular no considera
conocimientos básicos sobre
morfologías, matrices etc. Solo hace
uso de ellas considerando que quien
las sigue ya tiene estos
conocimientos.
3. ● Diseñar una forma con varios botones en matlab ejecutando el
comando >guide en la terminal. Debe quedar algo parecido a
la siguiente imagen
4. ● Lo primero que se debe hacer es localizar la función
“_OpeningFcn” del proyecto y agregar el siguiente código
handles.output = hObject;
global alfa beta theta;
alfa=0; beta=0; theta=0;
dibuja;
set(gcf,'toolbar','figure')
guidata(hObject, handles);
5. ● En el callback de cada botón:
● El botón “<<” para el ángulo alfa debe disminuir en ciertos
grados, por ejemplo:
– global alfa; alfa=alfa-5; dibuja;
● El botón “>>” para el ángulo alfa debe aumentar en ciertos
grados, por ejemplo:
– global alfa; alfa=alfa+5; dibuja;
● Este mismo procedimiento se debe hacer para el ángulo beta y
theta.
6. ● En este ejemplo solo se actualizan los
valores de los angulos y luego se
llama a la clase “dibuja”.
● De aqui en adelante el código que se
use debe ir dentro de el script
“dibuja”
7. ● Primero se deben tener las variables de los angulos
global alfa beta theta;
● Luego se deben declarar las matrices de rotación para
cada uno de los ángulos
Rotx=
1 0 0 0
0 cosd(alfa) −sind (alfa) 0
0 sind (alfa) cosd(alfa) 0
0 0 0 1
Roty=
cosd(beta) 0 sind(beta) 0
0 1 0 0
sind(beta) 0 cosd(beta) 0
0 0 0 1
Rotz=
cosd(theta) −sind(theta) 0 0
sind(theta) cosd(theta) 0 0
0 0 1 0
0 0 0 1
8. ● Luego las matrices de rotación necesarias
● Esto significa que el primer eslabón del manipulador
mide 5 , el segundo 3 y el último eslabón 5. Se pueden
representar de muchas maneras, por ejemplo como uun
vector columna, sin embargo como se muestra a
continuación; si se representan como matrices se
disminuye la complejidad de las multiplicaciones y es
más fácil de interpretar.
trasP1=
1 0 0 0
0 1 0 0
0 0 1 5
0 0 0 1
trasP2=
1 0 0 0
0 1 0 0
0 0 1 3
0 0 0 1
trasP3=
1 0 0 0
0 1 0 0
0 0 1 5
0 0 0 1
9. p1=Rotz*trasP1;
p2=p1*Roty*trasP2;
p3=p2*Rotx*trasP3;
● Ahora se deben seguir las multiplicaciones de las matrices de
rotación de acuerdo a la cinemática y morfología del robot
angular.
– El primer eslabón rota theta grados en z;
– El segundo eslabón rota beta grados en y, pero tambien está afectado por
lo que haya rotado los eslabones que lo preceden en la cadena
cinemática.
– El tercero rota alfa grados en x y tambien está afectado por las rotaciones
anteriores.
10. ● Por último se debe gráficar.
hold of
plot3(p1(1,4),p1(2,4),p1(3,4),'ro')
line([0 p1(1,4)],[0 p1(2,4)],[0 p1(3,4)],'color','r','LineWidth',10)
line([p1(1,4) p2(1,4)],[p1(2,4) p2(2,4)],[p1(3,4) p2(3,4)],'color','b','LineWidth',5)
line([p2(1,4) p3(1,4)],[p2(2,4) p3(2,4)],[p2(3,4) p3(3,4)],'color','r','LineWidth',7)
axis([-15 15 -15 15 0 15]),grid on, xlabel('x'),ylabel('y'),zlabel('z')
● El origen de este robot de morfología angular se consideró el origen
[0,0,0], sin embargo este puede ser modificado facilmente. Además
cualquier otra configuración puede cambiarse fácilmente solo
modificando el orden de las multiplicaciones de las matrices.
● En este ejemplo, las restricciónes necesarias para cada caso deben
ser agregadas y falta agregar la cinemática inversa.
11. ● Si aún después de esto hay dudas, pueden
consultar el ejemplo de esta pequeña
presentación en:
https://github.com/luisalfredomoctezuma/rAngularMatlab