Diseño y contrucción de un robot Articular
Enviado por Lino Camacho • 26 de Febrero de 2021 • Tesis • 1.819 Palabras (8 Páginas) • 79 Visitas
[pic 1][pic 2][pic 3]
Descripción[pic 4]
El presente documento tiene como objetivo principal guiar al estudiante de ingeniería en la construcción, configuración y programación de un brazo robótico. Repasando y haciendo uso de las habilidades teóricas adquiridas durante la experiencia educativa de Robótica.
El alumno podrá utilizar este documento como guía para una integración entre el software y el hardware propuesto ya sea replicando el mismo robot o cualquier otro.
Para realizar este proyecto se han utilizado algunas herramientas de ingeniería como AutoCAD para el diseño del robot, Arduino IDE como la tarjeta de control del hardware y Matlab como la interfaz hacia el usuario y programa maestro para realizar tareas de cinemática inversa, cinemática directa, observación de singularidades y planeación de trayectorias que además de ser simuladas podrá observarse lo que sucede a nivel físico para un mejor aprendizaje y experiencia.
[pic 5]
Definiendo al Robot
Es importante definir la magnitud de los eslabones del robot a construir así como sus características de movilidad (grados de libertad), origen cartesiano y espacio de trabajo. Para este estudio hemos diseñado un robot llamado “SHOUBI V3”, 手臂 cuyo nombre significa brazo en Chino Mandarín.
Las magnitudes de los eslabones en milímetros son como se muestran en la figura:
[pic 6]
Escribe a ingenimundo@gmail.com para obtener el manual completo
//Programa desarrollado por Lino E. Camacho Tapia
#define DEBUG(a) Serial.println(a);
String data = "";
#include <Servo.h>
Servo servo4; //Teta 1
Servo servo5; //Teta 2
Servo servo6; //Teta 2 inv
Servo servo3; //Teta 3
Servo servo2; //Teta 4
Servo servo1; //Teta 5
void setup() {
Serial.begin(9600);
servo1.attach(2);
servo2.attach(3);
servo3.attach(4);
servo4.attach(5);
servo5.attach(6);
servo6.attach(7);
q1(90);
q2(9);
q3(107);
q4(107);
q5(90);
}
int tokens =1;
void loop()
{
//RUTINAS PROGRAMADAS
tokens=0;
if(tokens==0)
{
while (Serial.available())
{
char character = Serial.read();
if (character != '\n')
{
data.concat(character);
}
else
{
//Serial.println(data);
char a[25];
data.toCharArray(a, 25);
data = "";
//Aqui comienza el algoritmo de decodificación
if((a[0]=='A')&&(a[4]=='B')&&(a[8]=='C')&&(a[13]=='D')&&(a[18]=='E'))
{
//Serial.println("OK");
char ang1[5] = {a[1],a[2],a[3]};
int num1= atoi(ang1);
char ang2[5] = {a[5],a[6],a[7]};
int num2= atoi(ang2);
char ang3[5] = {a[9],a[10],a[11],a[12]};
int num3= atoi(ang3);
char ang4[5] = {a[14],a[15],a[16],a[17]};
int num4= atoi(ang4);
char ang5[5] = {a[19],a[20],a[21]};
int num5= atoi(ang5);
//TERMINA DECODIFICACIÓN Y COMIENZA ASIGNACION DE VALORES A LOS MOTORES
int teta1=num1;
int teta2=num2;
int teta3=num3;
int teta4=num4;
int teta5=num5;
//Calculamos cinemática Directa
//Reacomodamos eslabones el robot
q1(teta1);
q2(teta2+9);
q3(-teta3+107);
q4(teta4+107);
q5(teta5);
}
}
}
}
}
void q1(int a)
{servo4.write(a);}
void q2(int a)
{servo5.write(a);
servo6.write(180-a);}
void q3(int a)
{servo3.write(a);}
void q4(int a)
{servo2.write(a);}
void q5(int a) // de 90 a 180 segun torque deseado
{servo1.write(a);}
Programación Matlab
El acople entre Matlab y Python lo realizamos por medio del puerto serial y básicamente consiste en esto.
%Configuracion Serial para Arduino Mega
s = serial('COM6');
flag = 1;
set(s,'DataBits',8);
set(s,'StopBits',1);
set(s,'BaudRate',9600);
set(s,'Parity','none');
fopen(s);
pause(2)
Para después enviar por el puerto serial la instrucción concatenada con la clave que creamos anteriormente y binaria para que pueda ser interpretada por Arduino.
salida=strcat('A',dato1,'B',dato2,'C',dato3,'D+00E090\n')
fprintf(s, salida)
pause(.05)
pause(2);
fclose(s);
Obsérvese como se concatena la información con la función strcat(); Donde dato1,dato2,dato3 son los valores de los ángulos convertidos a strings, valores que deseamos que sean ejecutados por el robot.
...