Está en la página 1de 34

Nati8

www.wuolah.com/student/Nati8

938

Practicas_Robot_Montoya_Pacheco_Laura.pdf
Trabajo con el manipulador

3º Fundamentos de Robótica

Grado en Ingeniería Electrónica, Robótica y Mecatrónica

Escuela de Ingenierías Industriales


Universidad de Málaga

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su
totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

2016
Responsable:

Laura Natalia Montoya Pacheco


PRÁCTICAS CON EL ROBOT
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

ÍNDICE
1 PRÁCTICA PICK & PLACE ........................................................................................................ 2
2 PRÁCTICA PALETIZADO.......................................................................................................... 7
3 PRACTICA MOVIMIENTOS ESFÉRICOS ................................................................................. 14

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
4 PRACTICA PROCESADO DE PIEZAS ...................................................................................... 26

¿Has participado ya en el Giveaway? En www.wuolah.com


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

PRACTICAS CON EL ROBOT


1 PRÁCTICA PICK & PLACE

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.

El que está sentado a tu lado no conoce Wuolah, explícaselo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 START:

<Program name="start" access="private" >


<Code><![CDATA[

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
begin
// Staubli tx60
// Llama a la funcion inicio y crea las tareas de la aplicacion
call Inicio()
taskCreate "Movimiento",100,Movimiento()
taskCreate "Interfaz",100,Interfaz()
end
end]]></Code>
</Program>

 INICIO:

<Program name="Inicio" access="public" >


<Code>
begin
// Staubli tx60
// Inicialización el valor de las variables de tipo bool
bEnd=false
bQuit=false
bCicle=false

// Inicializa el valor de las variables tipo num


nX=1
nX2=1
end
</Code>
</Program>

 INTERFAZ:

<Program name="Interfaz" access="public" >


<Code><![CDATA[
begin
// Asignamos un titulo a la interfaz de usuario
title("Practica 3")
userPage()

// Ciclo que mantendra la tarea en ejecucion siempre y cuando bEnd no cambie


su valor
3
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

while !bEnd
cls()

//Impresion en pantalla conforme a la ubicacion deseada


gotoxy(0,13)
put("P1")

gotoxy(5,13)
put("P2")

gotoxy(10,13)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
put("P3")

gotoxy(36,13)
put("Quit")

// Lectura de tecla pulsada y asignacion de accion a realizar


// Cada case corresponde a una tecla por ende a una ubicacion predefinida para el
intercambio de la pieza
nKey=getKey()
switch nKey
case 271
if nX2 != 1
nX=nX2
nX2=1
bCicle=true
endIf
break

case 272
if nX2 != 2
nX=nX2
nX2=2
bCicle=true
endIf
break

case 273
if nX2 != 3
nX=nX2
nX2=3
bCicle=true
endIf
break
4

Esto es un recordatorio de Wuolah: ERES UN CRACK.


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

case 278
bQuit=true
break
endSwitch
delay(0)
endWhile
// Fin del ciclo
end]]></Code>
</Program>

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 MOVIMIENTO:

<Program name="Movimiento" access="public" >


<Code><![CDATA[
begin
// Staubli tx60
// Ciclo que mantendra la tarea en ejecucion siempre y cuando bQuit no
cambie su valor
while !bQuit

// Movimiento de la pieza de un punto a otro


// Mediante el if nos aseguramos que mediante la interfaz se ha especificado un
movimiento y bien
// se realizaron los cambios en las variables para realizar el movimiento

if bCicle == true
open(tTool1)
movej(appro(pPuntos[nX],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movel(pPuntos[nX],tTool1,mLowSpeed)
close(tTool1)
movel(appro(pPuntos[nX],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
movej(appro(pPuntos[nX2],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movel(pPuntos[nX2],tTool1,mLowSpeed)
open(tTool1)
movel(appro(pPuntos[nX2],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
movej(pPuntos[0],tTool1,mNomSpeed)
waitEndMove()
bCicle=false

endIf

delay(0)
endWhile
5

Aquí no, pero en Instagram ponemos memes: @Wuolah_apuntes


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

bEnd=true
end
end]]></Code>
</Program>

 STOP:

<Program name="stop" access="private" >


<Code>

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
begin
// Staubli tx60
//Movimiento que posiciona en home el brazo
movej(jHome,tTool1,mNomSpeed)
waitEndMove()
end
//Fin de la aplicación
</Code>
</Program>

¿Qué estará pasando en Twitter? Síguenos: @Wuolah


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

2 PRÁCTICA PALETIZADO

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 START:

<Code><![CDATA[
begin
// Staubli tx60
// Llama a la funcion inicio y crea las tareas de la aplicación
call inicio()
taskCreate "Interfaz",100,Interfaz()
taskCreate "Cinta",100,Cinta()
taskCreate "Movimiento",100,Movimiento()

end
]]></Code>

7
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 INICIO:

<Code><![CDATA[
begin
Ref=here(tTool1,world) //Guardar localizacion inicial de la herramienta tTool1
en el plano world

Ref.trsf.rx=0 // Transforma el angulo en Rx


Ref.trsf.ry=180 // Transforma el angulo en Ry
Ref.trsf.rz=-90 // Transforma el angulo en Rz

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
//Asigna la referencia a una base nueva en fBase, para crear un sistema de
cordenadas al final de la herramienta

fBase.trsf=Ref.trsf fBase.trsf.z=-285 //Altura a la que iniciara la torre


//dioLink(diSensor,io:bIn0) //Asignar al puerto de entrada el sensor
//dioLink(doMotor,io:bOut0) //Asigna el puerto de salida al motor

//Declaracion de variable booleanas true o false


bDes=false
bBoton=false
bEnd=false
bQuit=false
bCicle=false
bTorre=false
bMedida=false
bCinta=false
doMotor=true

//Variable numericas
nKey=0
nX=0
nY=0
nZ=0
nPiezas=-1
nEsc=0
nA=0
nCount=0
end
]]></Code>

¿Qué estará pasando en Instagram? Síguenos: @Wuolah_apuntes


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 INTERFAZ:

<Program name="Interfaz" access="private" >


<Code><![CDATA[
begin
title("Practica 4 - Paletizado I") //Titulo de practica
userPage() //Inicia aplicacion y se va a la interfaz

if !bMedida //Si bMedida s falso me pedira las medidas de la pieza


gotoxy(5,5)
put("Dimension de la pieza Y (Largo)")

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
nEsc=get(nY)
cls()
gotoxy(5,5)
put("Dimension de la pieza X (Alto)")
nEsc=get(nX)
cls()
gotoxy(5,5)
put("Dimension de la pieza Z (Ancho)")
nEsc=get(nZ)
bMedida=true
endIf

while !bEnd
cls()
gotoxy(0,13)
put("Paletizado")
gotoxy(10,13)
put("Despaletizado")
gotoxy(36,13)
put("Quit")
nKey=getKey() //Lee la tecla presionada
switch nKey
case 271
bBoton=true
break
case 273
if bBoton==true
doMotor=true
bBoton=false
bDes=true
bTorre=false
endIf
9

Aquí no puedes quejarte, pero puedes hacerlo en Twitter: @Wuolah


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

break
case 278
bQuit=true
break
endSwitch
delay(0)
endWhile
end]]></Code>
</Program>

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
 CINTA

<Program name="Cinta" access="private" >


<Code><![CDATA[
begin
while !bQuit and !bDes
//Si el sensor detecta algo, detiene el motor y activa los ciclos de paletizado
if diSensor==true and !bCinta
doMotor=false
bCicle=true
bCinta=true
endIf
endWhile
end]]></Code>
</Program>

 MOVIMIENTO:

<Program name="Movimiento" access="private" >


<Code><![CDATA[
begin
while !bQuit
//Asigna las coordenadas de donde se tomara la pieza de la cinta
pPunto[0].trsf={(nY-nZ)/2,0,-(nX*nA),0,0,90}
pPunto[1].trsf={-(nY-nZ)/2,0,-(nX*nA),0,0,90}
pPunto[2].trsf={0,-(nY-nZ)/2,-(nX*nA),0,0,0}
pPunto[3].trsf={0,(nY-nZ)/2,-(nX*nA),0,0,0}

//Paletizado
if bBoton and bCicle
call APieza()
waitEndMove()
endIf
10

¿Has participado ya en el Giveaway? En www.wuolah.com


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

//Despaletizado
if !bBoton and bDes
call QPieza()
waitEndMove()

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
//Realiza calculos para saber cuantas piezas tenemor y en que posicion
if nPiezas>=1
nPiezas=nPiezas-1
elseIf nPiezas==0 and nCount>=1
nPiezas=3
nCount=nCount-1
else
doMotor=false
bDes=false
bQuit=true
endIf

//Calculamos altura de la torre para el despaletizado


if nPiezas%2==1
nA=nA-1
endIf
endIf
delay(0)
endWhile

//Finaliza el programa
bEnd=true
end]]></Code>

 APieza:
//programa auxiliar que determina distintas variables necesarias para la
aplicacion para el paletizado

<Program name="APieza" access="private" >


<Code><![CDATA[

begin
nPiezas=nPiezas+1

//Variable auxiliar para modificar altura de la torre


if nPiezas%2==0
nA=nA+1
endIf

11
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

//Conteo de piezas
if nPiezas==4
nCount=nCount+1
nPiezas=0
endIf

//Lista de movimientos para tomar la pieza de la cinta


open(tTool1)
movej(appro(pCinta,{(11-nY/2),0,(-nZ/2)-100,0,0,0}),tTool1,mNomSpeed)

//Movimiento angular

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
movej(appro(pCinta,{(11-nY/2),0,-nZ/2,0,0,0}),tTool1,mLowSpeed)
close(tTool1)
movej(appro(pCinta,{0,0,-100,0,0,0}),tTool1,mLowSpeed)
waitEndMove()
doMotor=true
bCicle=false
bCinta=false

//Coloca la pieza en la torre


movej(appro(pPunto[nPiezas],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movel(pPunto[nPiezas],tTool1,mLowSpeed)
open(tTool1)
movel(appro(pPunto[nPiezas],{0,0,-100,0,0,0}),tTool1,mLowSpeed)

end]]></Code>
</Program>

 QPieza:
//programa auxiliar que determina distintas variables necesarias para la
aplicacion en el despaletizado

<Program name="QPieza" access="private" >


<Code><![CDATA[begin
//Toma pieza de la torre y la lleva a una posicion
movej(appro(pPunto[nPiezas],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movel(pPunto[nPiezas],tTool1,mLowSpeed)
close(tTool1)
movel(appro(pPunto[nPiezas],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
movej(appro(pCinta,{(nY+100),0,(-nZ/2)-200,0,0,0}),tTool1,mNomSpeed)
open(tTool1)
waitEndMove()
end]]></Code>
</Program>
12

El que está sentado a tu lado no conoce Wuolah, explícaselo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 STOP:

<Program name="stop" access="private" >


<Code><![CDATA[
begin
//Mueve el brazo a la posicion home
doMotor=false
movej(jHome,tTool1,mNomSpeed)
waitEndMove()
end]]></Code>
</Program>

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.

13

Esto es un recordatorio de Wuolah: ERES UN CRACK.


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

3 PRACTICA MOVIMIENTOS ESFÉRICOS

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.

14

Aquí no, pero en Instagram ponemos memes: @Wuolah_apuntes


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 START:

<programList xmlns="ProgramNameSpace" >


<program name="start" public="false" >

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
<description />
<paramSection/>
<localSection/>
<source>
<code><![CDATA[
begin
// La función Initialize contiene la inicialización de las variables de la aplicación
call Initialize()
// Se crean dos tareas, una encargada del interfaz de usuario y otra de los
movimientos del robot
// Ambas tareas poseen la misma prioridad
taskCreate &quot;robot&quot;,100,Motion()
taskCreate &quot;user&quot;,100,UserInterface()
end

end]]> </code>
</source>
</program>

 INITIALIZATE:

<program name="Initialize" public="false" >


<description />
<paramSection/>
<localSection/>
<source>
<code><![CDATA[
begin
//initialize global variables
// call by start
// will finish before we start other tasks
//numbers
nEsfDeseada[0]=0
nEsfDeseada[1]=0
nEsfDeseada[2]=0
nEsfActual[0]=0
nEsfActual[1]=0
nEsfActual[2]=0

15
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

//strings
sTitle=&quot;Movimientos Esféricos&quot;
//control signals
bEnd=false
bQuit=false
bExecuteCycle=false
// Joints
jHome={0,0,0,0,0,0}
//Points
pPosFulcro.trsf={-84.23,-661.33,-118.67,0,0,0}
//Frame

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Fulcro.trsf=pPosFulcro.trsf
// No empezará la aplicación hasta que la velocidad de mando manual
// se haya reducido al 25 por ciento
wait(getMonitorSpeed()&lt;26)
end

end]]></code>
</source>
</program>

 MOTION:

<program name="Motion" public="false" >


<description />
<paramSection/>
<localSection/>
<source>
<code><![CDATA[
begin
// main program for robot motion
// Se lleva al robot a la posición de reposo inicial
call Home(jReposo,2,tPinza,mSlow)
// Actualizamos la posición esférica en este punto
pPosAct=here(tPinza,Fulcro)
call Pos2Esf(pPosAct,nEsfActual)
//have been told to end?
while !bQuit
//do we have a run cycle?
if bExecuteCycle
// Se calcula la posición cartesiana deseada a partir de la
// posición esférica deseada
call Esf2Pos(1,pPosDes,nEsfDeseada)
//pPosAct=here(tPinza,Fulcro)
16

¿Qué estará pasando en Twitter? Síguenos: @Wuolah


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

//call Pos2Esf(pPosAct,nEsfActual)
// Se inicializa la variable esférica local correspondiente
// a la trayectoria que vamos a seguir. Irá avanzando de 0.1 en 0.1
nEsfTray[0]=nEsfActual[0]
nEsfTray[1]=nEsfActual[1]
nEsfTray[2]=nEsfActual[2]
// Este bucle se realiza hasta que estemos en una posición muy
// cercana a la final
while abs(nEsfActual[nTray]-nEsfTray[nTray])&gt;0.1
// Se actualiza la posición actual
pPosAct=here(tPinza,Fulcro)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
call Pos2Esf(pPosAct,nEsfActual)
// Calculamos la siguiente posición de la trayectoria
if nEsfActual[nTray]&lt;nEsfDeseada[nTray]
nEsfTray[nTray]=nEsfTray[nTray]+0.1
else
nEsfTray[nTray]=nEsfTray[nTray]-0.1
endIf
// Una vez calculada la posición esférica siguiente de la
// trayectoria, se calcula la correspondiente posición
// del efector final en cartesianas y su orientación en
// ángulos de Euler XYZ
call Esf2Pos(1,pPosDes,nEsfTray)
// Movemos al punto correspondiente
movel(pPosDes,tPinza,mSlow)
endWhile
// Una vez que estamos a menos de 0.1 de la posición deseada
// ya ordenamos el movimiento hasta el punto deseado. Previamente
// se transforma de coordenadas esféricas a cartesianas
call Esf2Pos(1,pPosDes,nEsfDeseada)
movel(pPosDes,tPinza,mSlow)
waitEndMove()
// Se actualiza la posición actual
pPosAct=here(tPinza,Fulcro)
call Pos2Esf(pPosAct,nEsfActual)
//turn off running
bExecuteCycle=false
endIf
delay(0)
endWhile
//when robot finishes, shut down everything else
bEnd=true
end

17

¿Qué estará pasando en Instagram? Síguenos: @Wuolah_apuntes


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

end]]></code>
</source>
</program>

 USERINTERFACE:

<program name="UserInterface" public="false" >


<description />
<paramSection/>
<localSection>

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
<local name="nKey" type="num" size="1" />
</localSection>
<source>
<code><![CDATA[
begin
// controls the MCP display
// based on the original &quot;2005-27 Example Application&quot; de Staubli,
S.A.
title(sTitle)
// set user page on MCP
userPage()
while !bEnd
// redraw screen each time
cls()
// system messages from monitor
// counter and timer
gotoxy(0,1)
put(&quot;Pos. del fulcro: x=&quot;)
put(pPosFulcro.trsf.x)
put(&quot; y=&quot;)
put(pPosFulcro.trsf.y)
put(&quot; z=&quot;)
putln(pPosFulcro.trsf.z)
putln(&quot;Posición esférica actual&quot;)
put(&quot;Alpha: &quot;)
putln(nEsfActual[0])
put(&quot;Beta: &quot;)
putln(90-nEsfActual[1])
put(&quot;Rho: &quot;)
putln(nEsfActual[2])
putln(&quot;Posición esférica deseada&quot;)
put(&quot;Alpha: &quot;)
putln(nEsfDeseada[0])
18

Aquí no puedes quejarte, pero puedes hacerlo en Twitter: @Wuolah


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

put(&quot;Beta: &quot;)
putln(nEsfDeseada[1])
put(&quot;Rho: &quot;)
putln(nEsfDeseada[2])

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
//add F buttons
call PutButton(1,&quot;Inicio&quot;)
call PutButton(2,&quot;Alpha&quot;)
call PutButton(3,&quot;Beta&quot;)
call PutButton(4,&quot;Rho&quot;)
call PutButton(5,&quot;Open&quot;)
call PutButton(6,&quot;Close&quot;)
call PutButton(7,&quot;Fulcro&quot;)
if !bQuit
//once we do quit don&apos;t display button
call PutButton(8,&quot;QUIT&quot;)
endIf
// compute the key pressed
nKey=getKey()
switch nKey
//F1. Ir a posición Inicial
case 271
nEsfDeseada[0]=90
nEsfDeseada[1]=60
nEsfDeseada[2]=250
bExecuteCycle=true
break
//F2. Cambiar el valor de la variable alpha
case 272
gotoxy(0,10)
put(&quot;Indique el valor deseado para Alpha:&quot;)
nEsfDeseada[1]=nEsfActual[1]
nEsfDeseada[2]=nEsfActual[2]
get(nEsfDeseada[0])
nTray=0
bExecuteCycle=true
break
//F3. Cambiar el valor de la variable beta
case 273
gotoxy(0,10)
put(&quot;Indique el valor deseado para Beta:&quot;)
nEsfDeseada[0]=nEsfActual[0]
nEsfDeseada[2]=nEsfActual[2]
get(nEsfDeseada[1])
nTray=1
19
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

bExecuteCycle=true
break
//F4. Cambiar el valor de la variable rho
case 274
gotoxy(0,10)
put(&quot;Indique el valor deseado para Rho:&quot;)
nEsfDeseada[0]=nEsfActual[0]
nEsfDeseada[1]=nEsfActual[1]
get(nEsfDeseada[2])
nTray=2
bExecuteCycle=true

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
break
//F5. Abrir la pinza
case 275
open(tPinza)
break
//F6. Cerrar la pinza
case 276
close(tPinza)
break
//F7. Modificar el punto de inserción
case 277
gotoxy(0,10)
put(&quot;Valor x de la posición del fulcro:&quot;)
get(pPosFulcro.trsf.x)
gotoxy(0,10)
put(&quot;Valor y de la posición del fulcro:&quot;)
get(pPosFulcro.trsf.y)
gotoxy(0,10)
put(&quot;Valor z de la posición del fulcro:&quot;)
get(pPosFulcro.trsf.z)
Fulcro.trsf=pPosFulcro.trsf
break
//F8. Terminar la aplicación
case 278
bQuit=true
break
endSwitch
// this delay prevents screen from blinkering
delay(0)
endWhile
end

end]]> </code>
20

¿Has participado ya en el Giveaway? En www.wuolah.com


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

</source>
</program>

 ATAN2:

<programList xmlns="ProgramNameSpace" >


<program name="atan2" public="false" >
<description />
<paramSection>
<param name="y" type="num" byVal="true" />
<param name="x" type="num" byVal="true" />

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
<param name="ang" type="num" byVal="false" />
</paramSection>
<localSection/>
<source>
<code><![CDATA[
begin
// Esta función calcula la arcotangente, situando el ángulo en el cuadrante
// adecuado. La solución vendrá dada entre -pi/2 y 3pi/4
if (abs(x)&lt;0) and (abs(y)&lt;0)
ang=0
elseIf abs(x)&lt;0
if y&lt;0
ang=-90
else
ang=90
endIf
else
ang=atan(y/x)
if x&lt;0
//and y&lt;0
//ang=ang-180
//elseIf x&lt;0 and y&gt;0
ang=ang+180
endIf
endIf
end

end]]></code>
</source>

21

El que está sentado a tu lado no conoce Wuolah, explícaselo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 PUTBOTTON

<program name="PutButton" public="false" >


<description />
<paramSection>
<param name="n" type="num" byVal="true" />
<param name="s" type="string" byVal="true" />
</paramSection>
<localSection/>
<source>
<code><![CDATA[

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
begin
// puts a label above a function key
// n : number of function key (1..8)
// s : label for function key
// labels greater than 4 will shorten to 4 characters
n=n-1
if (n&gt;=0) and (n&lt;=7)
gotoxy(n*5,13)
if len(s)&gt;4
s=left(s,3)+&quot;.&quot;
endIf
put(s)
endIf
end

end]]> </code>
</source>
</program>

 ESF2POS:

<program name="Esf2Pos" public="false" >


<description />
//parametros de la posicion de la esfera
<paramSection>
<param name="modo" type="num" byVal="true" />
<param name="pos" type="point" byVal="false" />
<param name="esf" type="num" byVal="false" />
</paramSection>
<localSection>
<local name="r11" type="num" size="1" />
<local name="r12" type="num" size="1" />
<local name="r13" type="num" size="1" />
22

Esto es un recordatorio de Wuolah: ERES UN CRACK.


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

<local name="r23" type="num" size="1" />


<local name="r33" type="num" size="1" />
</localSection>
<source>

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
<code><![CDATA[
begin
nY=esf[2]*cos(esf[1])*sin(esf[0])
nX=esf[2]*cos(esf[1])*cos(esf[0])
nZ=esf[2]*sin(esf[1])
pos.trsf.x=nX
pos.trsf.y=nY
pos.trsf.z=nZ
pos.trsf.rz=esf[0]
pos.trsf.ry=-(esf[1]+45)
end

end]]></code>
</source>
</program>

 POS2ESF:

<programList xmlns="ProgramNameSpace" >


<program name="Pos2Esf" public="false" >
<description />
<paramSection>
<param name="pos" type="point" byVal="true" />
<param name="esf" type="num" byVal="false" />
</paramSection>
<localSection/>
<source>
<code><![CDATA[
begin
nX=pos.trsf.x
nY=pos.trsf.y
nZ=pos.trsf.z
call atan2(nY,nX,esf[0])
call atan2(nZ,(sqrt(power(nX,2)+power(nY,2))),esf[1])
esf[1]=90-esf[1]
esf[2]=sqrt(power(nX,2)+power(nY,2)+power(nZ,2))
pos.trsf.rz=esf[0]
pos.trsf.ry=-(esf[1]+45)
end
23
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

end]]></code>
</source>
</program>

 HOME:

<program name="Home" public="false" >


<description />
<paramSection>
<param name="jHome" type="joint" byVal="true" />

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
<param name="n" type="num" byVal="true" />
<param name="tl" type="tool" byVal="true" />
<param name="m" type="mdesc" byVal="true" />
</paramSection>
<localSection>
<local name="jNow" type="joint" size="1" />
</localSection>
<source>
<code><![CDATA[
begin
//moves a robot to a home location
//where are we now
jNow=herej()
if !(abs(jHome-jNow)&lt;{n,n,n,n,n,n})
// if !(abs(jHome-jNow){n,n,n,n,n,n})
//too far from home do a reset motion
resetMotion(jHome)
popUpMsg(&quot;Press and hold the MOVE/HOLD button to home the
robot&quot;)
endIf
//move to home
movej(jHome,tl,m)
waitEndMove()
end

end]]></code>
</source>
</program>

24

Aquí no, pero en Instagram ponemos memes: @Wuolah_apuntes


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 STOP:

<program name="stop" public="false" >


<description />
<paramSection/>
<localSection/>
<source>
<code><![CDATA[
begin
// Una vez finalizada la aplicación, volvemos a la posición inicial con todas las
variables

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
// articulares iguales a cero
movej(jHome,tPinza,mSlow)
waitEndMove()
end

end]]></code>
</source>
</program>

25

¿Qué estará pasando en Twitter? Síguenos: @Wuolah


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

4 PRACTICA PROCESADO DE PIEZAS

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.

26

¿Qué estará pasando en Instagram? Síguenos: @Wuolah_apuntes


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

27
Montoya Pacheco, Laura Natalia
PRACTICAS CON EL ROBOT

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 START:

<programList xmlns="ProgramNameSpace">
<program name="start" public="false">
<description />
<paramSection />
<localSection />
<source>
<code><![CDATA[begin
call inicio()
taskCreate "Movimiento",100,Movimiento()

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
taskCreate "Interfaz",100,Interfaz()
end

end]]></code>
</source>
</program>

 INICIO:

programList xmlns="ProgramNameSpace">
<program name="inicio" public="false">
<description />
<paramSection />
<localSection />
<source>
<code><![CDATA[begin
nC=0
bPiezaA=false
bPiezaB=false
nD=0
bEnd=false
bQuit=false
bLleno=true
nTipoP=0
end

end]]></code>
</source>
</program>

28

Aquí no puedes quejarte, pero puedes hacerlo en Twitter: @Wuolah


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

 MOVIMIENTO:

<program name="Movimiento" public="false">


<description />
<paramSection />
<localSection />
<source>
<code><![CDATA[
begin
while !bQuit

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
if nC==3
while nC&gt;0
movej(appro(pC[nC],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movej(appro(pC[nC],{0,0,0,0,0,0}),tTool1,mLowSpeed)
open(tTool1)
movej(appro(pC[nC],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
movej(appro(pSal,{0,0,0,0,0,0}),tTool1,mNomSpeed)
close(tTool1)
nC=nC-1
endWhile
else
bLleno = false
endIf

if nD==3
while nD&gt;0
movej(appro(pC[nC],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movej(appro(pC[nC],{0,0,0,0,0,0}),tTool1,mLowSpeed)
open(tTool1)
movej(appro(pC[nC],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
movej(appro(pSal,{0,0,0,0,0,0}),tTool1,mNomSpeed)
close(tTool1)
nC=nC-1
endWhile
else
bLleno = false
endIf

if bPiezaA and !bLleno


movej(appro(pAB[1],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movej(appro(pAB[1],{0,0,0,0,0,0}),tTool1,mLowSpeed)
open(tTool1)
29

¿Has participado ya en el Giveaway? En www.wuolah.com


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

movej(appro(pAB[1],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
call ColocarPieza()
bLleno=true
bPiezaA=false

elseIf bPiezaB and !bLleno


movej(appro(pAB[0],{0,0,-100,0,0,0}),tTool1,mNomSpeed)
movej(appro(pAB[0],{0,0,0,0,0,0}),tTool1,mLowSpeed)
open(tTool1)
movej(appro(pAB[0],{0,0,-100,0,0,0}),tTool1,mLowSpeed)
call ColocarPieza()

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
bLleno=true
bPiezaB=false
endIf

endWhile
delay(0)
end]]></code>
</source>
</program>

 INTERFAZ:

<program name="Interfaz" public="false" >


<description />
<paramSection/>
<localSection/>
<source>
<code><![CDATA[begin
end
end]]></code>
</source>
</program>

 COLOCAR PIEZA:

<programList xmlns="ProgramNameSpace">
<program name="ColocarPieza" public="false">
<description />
<paramSection />
<localSection />
<source>
30

El que está sentado a tu lado no conoce Wuolah, explícaselo


a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1404288

PRACTICAS CON EL ROBOT


Montoya Pacheco, Laura Natalia

<code><![CDATA[
begin
if nTipoP == 0
movej(appro(pC[nC],{0,0,-150,0,0,0}),tTool1,mNomSpeed)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
movej(appro(pC[nC],{0,0,-17,0,0,0}),tTool1,mLowSpeed)
nC=nC+1
close(tTool1)
elseIf nTipoP == 1
movej(appro(pD[nD],{0,0,-150,0,0,0}),tTool1,mNomSpeed)
movej(appro(pD[nD],{0,0,-17,0,0,0}),tTool1,mLowSpeed)
nD=nD+1
close(tTool1)
else
movej(appro(pSal,{0,0,0,0,0,0}),tTool1,mNomSpeed)
close(tTool1)
endIf
end]]></code>
</source>
</program>

 STOP:

<programList xmlns="ProgramNameSpace" >


<program name="stop" public="false" >
<description />
<paramSection/>
<localSection/>
<source>
<code><![CDATA[begin
movej(jHome,tTool1,mNomSpeed)
waitEndMove()
end

end]]></code>
</source>
</program>

31

También podría gustarte