Академический Документы
Профессиональный Документы
Культура Документы
un robot para determinar los parmetros comunes que proporcionan una posicin
deseada del efector final. Especificacin del movimiento de un robot de manera
que su extremo efector logra una tarea deseada es conocido como planificacin
de movimientos.La cinemtica inversa transforma el plan de movimiento en
trayectorias del actuador en conjuntos para el robot. El movimiento de una cadena
cinemtica si se trata de un robot o un personaje animado es modelada por las
ecuaciones cinemticas de la cadena. Estas ecuaciones definen la configuracin
de la cadena en trminos de sus parmetros conjuntos. Delantero cinemtica
utiliza los parmetros comunes para calcular la configuracin de la cadena, y la
cinemtica inversa invierte este clculo para determinar los parmetros de
conjuntos que logra una configuracin deseada.
Una figura articulada consta de un conjunto de segmentos rgidos conectados
mediante articulaciones. Los mltiples ngulos que pueden adoptar estas
articulaciones permiten un nmero indefinido de configuraciones o posiciones de
la figura. La solucin al problema cinemtico inverso consiste en encontrar los
valores que deben adoptar las coordenadas articulares del robot q = [q1, q2, . . . ,
qn] para que su extremo se posicione y oriente segn una determinada
configuracin deseada.
Para nuestro objetivo de simular un robot de 4 grados de libertad primero con los
datos de la longitud de las articulaciones y el angulo de cabeceo del efector,
debemos encontrar todos los angulos del brazo robot
PROYECTO ROBOTICA
EjeD=( 0)
Dim Shared As Integer EjeX, EjeY, EjeZ,
EjeV, EjeW, EjeD
EscenaX=-0
Dim Shared As String Tecla EscenaY=15
LBrazo = LongBrazo/100
'-----------------------------------------Carga de LAntBr = LongAntBr/100
Variables------------------------------------------------
----- LMunec = LongMunec/100
LDedos = LongDedos/100
Pi = Atn(1) * 4 Espacio = LBrazo+LAntBr
Rad = Pi / 180
If LCase(Tecla)="s" Then
glViewport 0, 0, 800, 600 EjeY=EjeY-1
Else
glShadeModel GL_FLAT
If MultiKey(FB.SC_E) Then
glBlendFunc GL_SRC_ALPHA, GL_ONE
EjeZ=EjeZ-1
glEnable GL_TEXTURE_2D
If MultiKey(FB.SC_Q) Then
EjeZ=EjeZ+1
'-=-=-=-=-=-=-=-=-=-Programa Principal-=--=-
=-=-=-=-=-=-=-=-=-=-=-=-
If LCase(Tecla)="x" Then
While Tecla<>Chr(27) EjeV=EjeV-1
If LCase(Tecla)="z" Then
EjeV=EjeV+1
Tecla=InKey
If LCase(Tecla)="c" Then
EjeW=EjeW-1
If LCase(Tecla)="a" Then
EjeX=EjeX-1
If LCase(Tecla)="n" Then
EjeD=EjeD-1
EndIf End
EndIf
If EjeD<40 Then
If MultiKey(FB.SC_RIGHT) Then
EscenaX=EscenaX+.5
Modulo =
If MultiKey(FB.SC_UP) Then Sqr((EjeX*EjeX)+(EjeY*EjeY))
EscenaY=EscenaY+.5
AngGiro = Atan2(EjeY, EjeX)*Grad
If MultiKey(FB.SC_DOWN) Then
EscenaY=EscenaY-.5
If MultiKey(FB.SC_PAGEUP) Xprima=Modulo
Then Distancia=Distancia+.1
Yprima=EjeZ
If MultiKey(FB.SC_PAGEDOWN)
Then Distancia=Distancia-.1
Afx=Cos(Rad*EjeV)*Terminal
EndIf LadoB=Xprima-Afx
Close LadoA=Yprima-Afy-AlturaH
End
EndIf Hipotenusa=Sqr((LadoA^2)+(LadoB^
2))
InverseK
Alfa=Atan2(LadoA,LadoB)
DibujaBrazo
Beta=Acos(((LongBrazo^2)- Vaux=EjeV
(LongAntBr^2)+(Hipotenusa^2))/(2*LongBraz
o*Hipotenusa))
End Sub
AngBrazo= (Alfa+Beta)*Grad
' Ang BRAZO (en Radianes).
Sub DibujaBrazo
Gamma=Acos(((LongBrazo^2)+(Long
AntBr^2)- Dim As Double ContX, ContY
(Hipotenusa^2))/(2*LongBrazo*LongAntBr))
AngAntBr=(-((180*Rad)-
Gamma))*Grad ' Ang ANTEBRAZO ' ----------------------Animacin OpenGL--
(en Radianes). ------------------
glDisable GL_BLEND
If (Str(AngBrazo)="-1.#IND") Or
(Str(AngAntBr)= "-1.#IND") Or
(Str(AngMunecA)= "-1.#IND") Then '--------------------------Plano Base--------
------------
glBegin(GL_LINE_LOOP)
Xaux=EjeX
glColor3f 1.0, 1.0, 1.0
Yaux=EjeY
glVertex3f contx, -LHombro-
Zaux=EjeZ .01, conty
glVertex3f -contx, -LHombro- glVertex3f 0.4, -LHombro, 0.6
.01, conty
glEnd()
glEnd()
glBegin(GL_QUADS)
glColor3f 0.0, 0.2, 0.6
glColor3f 0.0, 0.6, 0.5
glVertex3f LDedos, 0.1, -0.1
glVertex3f LDedos, 0.1, -0.1
glVertex3f LDedos, 0.1, 0.1
glVertex3f 0.0, 0.1, -0.1
glVertex3f LDedos, -0.1, 0.1
glVertex3f 0.0, 0.1, 0.1
glVertex3f LDedos, -0.1, -0.1
glVertex3f LDedos, 0.1, 0.1
glEnd()
glEnd()
Next
End Sub
End Sub
Sub BuildFont
Sub glPrint(ByVal x As Integer, ByVal y As
Integer, ByVal glstring As String, ByVal gset
As Integer)
Static cx As Single
If gset>1 Then gset=1
Static cy As Single
glBindTexture GL_TEXTURE_2D,
texture
glPushMatrix
glNewList gbase+gloop, glLoadIdentity
GL_COMPILE
glTranslated x, y, 0
glBegin GL_QUADS
glListBase gbase-
glTexCoord2f cx, 1- 32+(128*gset)
cy-0.0625
glCallLists
glVertex2i 0, 0 Len(glstring),GL_BYTE, StrPtr(glstring)
glTexCoord2f glMatrixMode
cx+0.0625, 1-cy-0.0625 GL_PROJECTION