4. Movimento del Robot

4.1. Jog Inching

Prototipo

StartJOG(ref,nb,dir,max_dis,vel=20.0,acc=100.0)

Descrizione

Jog inching

Parametri obbligatori

  • ref:0-joint inching,2-sistema base inching,4-sistema utensile inching,8-sistema pezzo inching;

  • nb:1-1° giunto(asse x),2-2° giunto(asse y),3-3° giunto(asse z),4-4° giunto(rx),5-5° giunto(ry),6-6° giunto(rz);

  • dir:0-direzione negativa,1-direzione positiva;

  • max_dis:angolo/distanza massimo singolo inching,unità ° o mm;

Parametri predefiniti

  • vel:percentuale velocità,[0~100] default 20;

  • acc:percentuale accelerazione,[0~100] default 100;

Valore restituito

Codice errore Successo-0 Fallimento- errcode

4.2. Arresto decelerazione jog inching

Prototipo

StopJOG(ref)

Descrizione

Arresto decelerazione jog inching

Parametri obbligatori

  • ref:1-arresto joint inching,3-arresto sistema base inching,5-arresto sistema utensile inching,9-arresto sistema pezzo inching

Parametri predefiniti

Nessuno

Valore restituito

Codice errore Successo-0 Fallimento- errcode

4.3. Arresto immediato jog inching

Prototipo

ImmStopJOG()

Descrizione

Arresto immediato jog inching

Parametri obbligatori

Nessuno

Parametri predefiniti

Nessuno

Valore restituito

Codice errore Successo-0 Fallimento- errcode

4.4. Esempio codice controllo inching robot

 1from fairino import Robot
 2import time
 3# Stabilire connessione con controller robot, restituisce oggetto robot se connesso con successo
 4robot = Robot.RPC('192.168.58.2')
 5for i in range(6):
 6    robot.StartJOG(0, i + 1, 0, 20.0, 20.0, 30.0)
 7    time.sleep(1)
 8    robot.ImmStopJOG()
 9    time.sleep(1)
10for i in range(6):
11    robot.StartJOG(2, i + 1, 0, 20.0, 20.0, 30.0)
12    time.sleep(1)
13    robot.ImmStopJOG()
14    time.sleep(1)
15for i in range(6):
16    robot.StartJOG(4, i + 1, 0, 20.0, 20.0, 30.0)
17    time.sleep(1)
18    robot.StopJOG(5)
19    time.sleep(1)
20for i in range(6):
21    robot.StartJOG(8, i + 1, 0, 20.0, 20.0, 30.0)
22    time.sleep(1)
23    robot.StopJOG(9)
24    time.sleep(1)
25robot.CloseRPC()

4.5. Movimento spazio giunti

Prototipo

MoveJ(joint_pos, tool, user, desc_pos = [0.0,0.0,0.0,0.0,0.0,0.0], vel = 20.0, acc = 0.0, ovl = 100.0, exaxis_pos = [0.0,0.0,0.0,0.0], blendT = -1.0, offset_flag = 0, offset_pos = [0.0,0.0,0.0,0.0,0.0,0.0])

Descrizione

Movimento spazio giunti

Parametri obbligatori

  • joint_pos: posizione giunti target,unità[°];

  • tool: numero utensile,[0~14];

  • user: numero pezzo,[0~14];

Parametri predefiniti

  • desc_pos: posa cartesiana target,unità [mm][°] default valore iniziale [0.0,0.0,0.0,0.0,0.0,0.0],valore default chiamata cinematica diretta restituisce valore;

  • vel: percentuale velocità,[0~100] default 20.0;

  • acc: percentuale accelerazione,[0~100],non aperto attualmente;

  • ovl: fattore scala velocità,[0~100] default 100.0;

  • exaxis_pos: asse esterno 1 posizione ~ asse esterno 4 posizione default [0.0,0.0,0.0,0.0];

  • blendT:[-1.0]-movimento a posizione (bloccante),[0~500.0]-tempo smooth (non bloccante),unità [ms] default -1.0;

  • offset_flag:[0]-nessun offset,[1]-offset sistema pezzo/base,[2]-offset sistema utensile default 0;

  • offset_pos: quantità offset posa,unità [mm][°] default [0.0,0.0,0.0,0.0,0.0,0.0];

Valore restituito

Codice errore Successo-0 Fallimento- errcode

4.6. Movimento Lineare nello Spazio Cartesiano

Nuovo nella versione python: SDK-v2.1.5

Prototipo

MoveL(desc_pos, tool, user, joint_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], vel=20.0, acc=0.0, ovl=100.0,blendR=-1.0, blendMode = 0,exaxis_pos=[0.0, 0.0, 0.0, 0.0], search=0, offset_flag=0,offset_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],oacc = 100.0,config=-1,velAccParamMode=0,overSpeedStrategy=0,speedPercent=10)

Descrizione

Movimento Lineare nello Spazio Cartesiano

Parametri Obbligatori

  • desc_pos: Posa cartesiana target, unità [mm][°];

  • tool: Numero utensile, [0~14];

  • user: Numero pezzo/utente, [0~14];

Parametri Predefiniti

  • joint_pos: Posizioni target dei giunti, unità [°] Valore iniziale predefinito è [0.0,0.0,0.0,0.0,0.0,0.0], valore predefinito è il risultato della cinematica inversa;

  • vel: Percentuale di velocità, [0~100] Predefinito 20.0;

  • acc: Percentuale di accelerazione, [0~100], attualmente non disponibile Predefinito 0.0;

  • ovl: Fattore di scala velocità, [0~100] Predefinito 100.0;

  • blendR:[-1.0]-Blocca fino al completamento del movimento (bloccante), [0~1000]-Raggio di transizione (non bloccante), unità [mm] Predefinito -1.0;

  • blendMode: Metodo di transizione; 0-Transizione tangente; 1-Transizione a spigolo, predefinito 0;

  • exaxis_pos: Posizione asse esterno 1 ~ Posizione asse esterno 4 Predefinito [0.0,0.0,0.0,0.0];

  • search:[0]-Nessuna ricerca filo, [1]-Ricerca filo;

  • offset_flag:[0]-Nessuno scostamento, [1]-Scostamento nel sistema di coordinate pezzo/base, [2]-Scostamento nel sistema di coordinate utensile Predefinito 0;

  • offset_pos: Valore di scostamento della posa, unità [mm][°] Predefinito [0.0,0.0,0.0,0.0,0.0,0.0];

  • oacc: Fattore di scala accelerazione [0-100] / Accelerazione fisica (mm/s²) Predefinito 100;

  • config: Configurazione spazio giunti per soluzione inversa, [-1]-Risolvi con riferimento alle posizioni correnti dei giunti, [0~7]-Risolvi secondo una specifica configurazione dello spazio giunti, predefinito -1

  • velAccParamMode: Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) e accelerazione (mm/s²) Predefinito 0

  • overSpeedStrategy: Strategia di gestione sovravelocità, 0-Strategia disabilitata; 1-Standard; 2-Ferma con errore in caso di sovravelocità; 3-Riduzione adattiva della velocità, predefinito 0

  • speedPercent: Percentuale di soglia di riduzione velocità consentita [0-100], predefinito 10%

Valore di Ritorno

Codice di errore 0-Successo Errore- errcode

4.7. Movimento ad Arco Circolare nello Spazio Cartesiano

Nuovo nella versione python: SDK-v2.1.5

Prototipo

MoveC(desc_pos_p, tool_p, user_p, desc_pos_t, tool_t, user_t, joint_pos_p=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], joint_pos_t=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],vel_p=20.0, acc_p=100.0, exaxis_pos_p=[0.0, 0.0, 0.0, 0.0], offset_flag_p=0,offset_pos_p=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],vel_t=20.0, acc_t=100.0, exaxis_pos_t=[0.0, 0.0, 0.0, 0.0], offset_flag_t=0,offset_pos_t=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],ovl=100.0, blendR=-1.0,oacc=100.0,config=-1,velAccParamMode=0)

Descrizione

Movimento ad Arco Circolare nello Spazio Cartesiano

Parametri Obbligatori

  • desc_pos_p: Posa cartesiana del punto di percorso, unità [mm][°];

  • tool_p: Numero utensile del punto di percorso, [0~14];

  • user_p: Numero pezzo/utente del punto di percorso, [0~14];

  • desc_pos_t: Posa cartesiana del punto target, unità [mm][°];

  • tool_t: Numero utensile, [0~14];

  • user_t: Numero pezzo/utente, [0~14];

Parametri Predefiniti

  • joint_pos_p: Posizioni dei giunti del punto di percorso, unità [°] Valore iniziale predefinito è [0.0,0.0,0.0,0.0,0.0,0.0], valore predefinito è il risultato della cinematica inversa;

  • joint_pos_t: Posizioni dei giunti del punto target, unità [°] Valore iniziale predefinito è [0.0,0.0,0.0,0.0,0.0,0.0], valore predefinito è il risultato della cinematica inversa;

  • vel_p: Percentuale di velocità del punto di percorso, [0~100] Predefinito 20.0;

  • acc_p: Percentuale di accelerazione del punto di percorso, [0~100] Attualmente non disponibile, predefinito 0.0;

  • exaxis_pos_p: Posizione asse esterno 1 del punto di percorso ~ Posizione asse esterno 4 Predefinito [0.0,0.0,0.0,0.0];

  • offset_flag_p: Se il punto di percorso è scostato [0]-Nessuno scostamento, [1]-Scostamento nel sistema di coordinate pezzo/base, [2]-Scostamento nel sistema di coordinate utensile Predefinito 0;

  • vel_t: Percentuale di velocità del punto target, [0~100] Predefinito 20.0;

  • acc_t: Percentuale di accelerazione del punto target, [0~100] Attualmente non disponibile predefinito 0.0;

  • exaxis_pos_t: Posizione asse esterno 1 del punto target ~ Posizione asse esterno 4 Predefinito [0.0,0.0,0.0,0.0];

  • offset_flag_t: Se il punto target è scostato [0]-Nessuno scostamento, [1]-Scostamento nel sistema di coordinate pezzo/base, [2]-Scostamento nel sistema di coordinate utensile Predefinito 0;

  • offset_pos_t: Valore di scostamento della posa del punto target, unità [mm][°] Predefinito [0.0,0.0,0.0,0.0,0.0,0.0];

  • ovl:: Fattore di scala velocità, [0~100] Predefinito 100.0;

  • blendR:[-1.0]-Blocca fino al completamento del movimento (bloccante), [0~1000]-Raggio di transizione (non bloccante), unità [mm] Predefinito -1.0;

  • oacc: Fattore di scala accelerazione [0-100] / Accelerazione fisica (mm/s²) Predefinito 100;

  • config: Configurazione spazio giunti per soluzione inversa, [-1]-Risolvi con riferimento alle posizioni correnti dei giunti, [0~7]-Risolvi secondo una specifica configurazione dello spazio giunti, predefinito -1;

  • velAccParamMode: Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) e accelerazione (mm/s²) Predefinito 0

Valore di Ritorno

Codice di errore 0-Successo Errore- errcode

4.8. Movimento Circolare Completo nello Spazio Cartesiano

Nuovo nella versione python: SDK-v2.1.5

Prototipo

Circle(desc_pos_p, tool_p, user_p, desc_pos_t, tool_t, user_t, joint_pos_p=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],joint_pos_t=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],vel_p=20.0, acc_p=0.0, exaxis_pos_p=[0.0, 0.0, 0.0, 0.0], vel_t=20.0, acc_t=0.0,exaxis_pos_t=[0.0, 0.0, 0.0, 0.0],ovl=100.0, offset_flag=0, offset_pos=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], oacc=100.0, blendR=-1,config=-1,velAccParamMode=0)

Descrizione

Movimento Circolare Completo nello Spazio Cartesiano

Parametri Obbligatori

  • desc_pos_p: Posa cartesiana del punto di percorso, unità [mm][°];

  • tool_p: Numero utensile, [0~14];

  • user_p: Numero pezzo/utente, [0~14];

  • desc_pos_t: Posa cartesiana del punto target, unità [mm][°];

  • tool_t: Numero utensile, [0~14];

  • user_t: Numero pezzo/utente, [0~14];

Parametri Predefiniti

  • joint_pos_p: Posizioni dei giunti del punto di percorso, unità [°] Valore iniziale predefinito è [0.0,0.0,0.0,0.0,0.0,0.0], valore predefinito è il risultato della cinematica inversa;

  • joint_pos_t: Posizioni dei giunti del punto target, unità [°] Valore iniziale predefinito è [0.0,0.0,0.0,0.0,0.0,0.0], valore predefinito è il risultato della cinematica inversa;

  • vel_p: Percentuale di velocità, [0~100] Predefinito 20.0;

  • acc_p: Percentuale di accelerazione del punto di percorso, [0~100] Attualmente non disponibile predefinito 0.0;

  • exaxis_pos_p: Posizione asse esterno 1 del punto di percorso ~ Posizione asse esterno 4 Predefinito [0.0,0.0,0.0,0.0];

  • vel_t: Percentuale di velocità del punto target, [0~100] Predefinito 20.0;

  • acc_t: Percentuale di accelerazione del punto target, [0~100] Attualmente non disponibile predefinito 0.0;

  • exaxis_pos_t: Posizione asse esterno 1 del punto target ~ Posizione asse esterno 4 Predefinito [0.0,0.0,0.0,0.0]

  • ovl: Fattore di scala velocità, [0~100] Predefinito 100.0;

  • offset_flag: Se scostare [0]-Nessuno scostamento, [1]-Scostamento nel sistema di coordinate pezzo/base, [2]-Scostamento nel sistema di coordinate utensile Predefinito 0;

  • offset_pos: Valore di scostamento della posa, unità [mm][°] Predefinito [0.0,0.0,0.0,0.0,0.0,0.0]

  • oacc: Fattore di scala accelerazione [0-100] / Accelerazione fisica (mm/s²), predefinito: 100;

  • blendR:-1:Bloccante;0~1000:Raggio di transizione, predefinito: -1;

  • config: Configurazione spazio giunti per soluzione inversa, [-1]-Risolvi con riferimento alle posizioni correnti dei giunti, [0~7]-Risolvi secondo una specifica configurazione dello spazio giunti, predefinito -1;

  • velAccParamMode: Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) e accelerazione (mm/s²) Predefinito 0

Valore di Ritorno

Codice di errore 0-Successo Errore- errcode

4.9. Movimento punto a punto spazio cartesiano

Prototipo

MoveCart(desc_pos, tool, user, vel = 20.0, acc = 0.0, ovl = 100.0, blendT = -1.0, config = -1)

Descrizione

Movimento punto a punto spazio cartesiano

Parametri obbligatori

  • desc_pos: posizione cartesiana target;

  • tool: numero utensile,[0~14];

  • user: numero pezzo,[0~14];

Parametri predefiniti

  • vel: velocità,range [0~100],default 20.0;

  • acc: accelerazione,range [0~100],non aperto attualmente, default 0.0;

  • ovl: fattore scala velocità,[0~100],default 100.0;

  • blendT:[-1.0]-movimento a posizione (bloccante),[0~500]-tempo smooth (non bloccante),unità [ms] default -1.0;

  • config: configurazione giunti,[-1]-soluzione riferimento posizione giunti corrente,[0~7]-soluzione basata configurazione giunti default -1

Valore restituito

Codice errore Successo-0 Fallimento- errcode

4.10. Esempio codice comandi movimento base robot

 1from fairino import Robot
 2import time
 3robot = Robot.RPC('192.168.58.2')
 4j1 = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5j2 = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 6j3 = [-29.777, -84.536, 109.275, -114.075, -86.655, 74.257]
 7j4 = [-31.154, -95.317, 94.276, -88.079, -89.740, 74.256]
 8desc_pos1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 9desc_pos2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
10desc_pos3 = [-487.434, 154.362, 308.576, 176.600, 0.268, -14.061]
11desc_pos4 = [-443.165, 147.881, 480.951, 179.511, -0.775, -15.409]
12offset_pos = [0.0] * 6
13epos = [0.0] * 4
14tool = 0
15user = 0
16vel = 100.0
17acc = 100.0
18ovl = 100.0
19oacc = 100.0
20blendT = 0.0
21blendR = 0.0
22flag = 0
23search = 0
24blendMode = 0
25velAccMode = 0
26robot.SetSpeed(20)
27rtn = robot.MoveJ(joint_pos=j1, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
28print(f"movej errcode:{rtn}")
29rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, blendR=blendR, blendMode=blendMode, exaxis_pos=epos, search=search, offset_flag=flag, offset_pos=offset_pos,oacc=oacc, velAccParamMode=velAccMode)
30print(f"movel errcode:{rtn}")
31rtn = robot.MoveC(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, offset_flag_p=flag, offset_pos_p=offset_pos, desc_pos_t=desc_pos4, tool_t=tool, user_t=user, vel_t=vel,acc_t=acc, exaxis_pos_t=epos, offset_flag_t=flag, offset_pos_t=offset_pos, ovl=ovl, blendR=blendR, oacc=oacc, velAccParamMode=velAccMode)
32print(f"movec errcode:{rtn}")
33rtn = robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
34print(f"movej errcode:{rtn}")
35rtn = robot.Circle(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, desc_pos_t=desc_pos1, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc, exaxis_pos_t=epos, ovl=ovl,offset_flag=flag, offset_pos=offset_pos, oacc=oacc, blendR=-1, velAccParamMode=velAccMode)
36print(f"circle errcode:{rtn}")
37rtn = robot.MoveCart(desc_pos=desc_pos4, tool=tool, user=user, vel=vel, acc=acc,ovl=ovl, blendT=blendT, config=-1)
38print(f"MoveCart errcode:{rtn}")
39rtn = robot.MoveJ(joint_pos=j1, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
40print(f"movej errcode:{rtn}")
41rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, blendR=blendR, blendMode=blendMode, exaxis_pos=epos, search=search, offset_flag=flag, offset_pos=offset_pos, config=-1,velAccParamMode=velAccMode)
42print(f"movel errcode:{rtn}")
43rtn = robot.MoveC(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, offset_flag_p=flag, offset_pos_p=offset_pos, desc_pos_t=desc_pos4, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc,exaxis_pos_t=epos, offset_flag_t=flag, offset_pos_t=offset_pos, ovl=ovl, blendR=blendR, config=-1, velAccParamMode=velAccMode)
44print(f"movec errcode:{rtn}")
45rtn = robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
46print(f"movej errcode:{rtn}")
47rtn = robot.Circle(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, desc_pos_t=desc_pos1, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc, exaxis_pos_t=epos, ovl=ovl, offset_flag=flag,offset_pos=offset_pos, oacc=oacc, blendR=-1, velAccParamMode=velAccMode)
48print(f"circle errcode:{rtn}")
49robot.CloseRPC()
50return 0

4.11. Movimento spirale spazio cartesiano

Nuovo nella versione python: SDK-v2.1.7

Prototipo

NewSpiral(desc_pos, tool, user, param, joint_pos = [0.0,0.0,0.0,0.0,0.0,0.0], vel = 20.0, acc = 0.0, exaxis_pos = [0.0,0.0,0.0,0.0], ovl = 100.0, offset_flag = 0, offset_pos = [0.0,0.0,0.0,0.0,0.0,0.0], config = -1)

Descrizione

Movimento spirale spazio cartesiano

Parametri obbligatori

  • desc_pos: posa cartesiana target,unità[mm][°];

  • tool: numero utensile,[0~14];

  • user: numero pezzo,[0~14];

  • param=[circle_num, circle_angle, rad_init, rad_add, rotaxis_add, rot_direction, velAccMode]:circle_num: numero giri spirale;circle_angle: angolo inclinazione spirale;rad_init: raggio iniziale spirale;rad_add: incremento raggio;rotaxis_add: incremento direzione asse rotazione;rot_direction: direzione rotazione,0-orario,1-antiorario, velAccMode modalità parametri velocità accelerazione:0-velocità angolare costante,1-velocità lineare costante;

Parametri predefiniti

  • joint_pos: posizione giunti target,unità [°] default valore iniziale [0.0,0.0,0.0,0.0,0.0,0.0],valore default chiamata cinematica inversa restituisce valore;

  • vel: percentuale velocità,[0~100] default 20.0;

  • acc: percentuale accelerazione,[0~100] default 100.0;

  • exaxis_pos: asse esterno 1 posizione ~ asse esterno 4 posizione default [0.0,0.0,0.0,0.0];

  • ovl: fattore scala velocità,[0~100] default 100.0;

  • offset_flag:[0]-nessun offset,[1]-offset sistema pezzo/base,[2]-offset sistema utensile default 0;

  • offset_pos: quantità offset posa,unità [mm][°] default [0.0,0.0,0.0,0.0,0.0,0.0]

  • config: configurazione spazio giunti cinematica inversa,[-1]-calcolo riferimento posizione giunti corrente,[0~7]-soluzione basata specifica configurazione spazio giunti,default -1

Valore restituito

Codice errore Successo-0 Fallimento- errcode

4.12. Esempio codice

 1from fairino import Robot
 2# Stabilire connessione con controller robot, restituisce oggetto robot se connesso con successo
 3robot = Robot.RPC('192.168.58.2')
 4j = [67.957, -81.482, 87.595, -95.691, -94.899, -9.727]
 5desc_pos = [-123.142, -551.735, 430.549, 178.753, -4.757, 167.754]
 6offset_pos1 = [50.0, 0.0, 0.0, -30.0, 0.0, 0.0]
 7offset_pos2 = [50.0, 0.0, 0.0, -30.0, 0.0, 0.0]
 8epos = [0.0] * 4
 9sp = [2, 30.0, 50.0, 10.0, 10.0, 0, 1]  # [circle_num, circle_angle, rad_init, rad_add, rotaxis_add, rot_direction, velAccMode]
10tool = 0
11user = 0
12vel = 30.0
13acc = 60.0
14ovl = 100.0
15blendT = -1.0
16flag = 2
17robot.SetSpeed(20)
18rtn = robot.MoveJ(joint_pos=j, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos1)
19print(f"movej errcode:{rtn}")
20rtn = robot.NewSpiral(desc_pos=desc_pos, tool=tool, user=user, vel=vel, acc=acc, exaxis_pos=epos, ovl=ovl, offset_flag=flag, offset_pos=offset_pos2, param=sp)
21print(f"newspiral errcode:{rtn}")
22robot.CloseRPC()
23return 0

4.13. Avvio Movimento Servo

Prototipo

ServoMoveStart(cmdType=0)

Descrizione

Avvia il movimento servo, utilizzato con i comandi ServoJ e ServoCart

Parametri Obbligatori

  • cmdType: Tipo di trasmissione comando, 0=XML-RPC, 1=Trasmissione trasparente UDP

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.14. Fine Movimento Servo

Prototipo

ServoMoveEnd(cmdType=0)

Descrizione

Termina il movimento servo, utilizzato con i comandi ServoJ e ServoCart

Parametri Obbligatori

  • cmdType: Tipo di trasmissione comando, 0=XML-RPC, 1=Trasmissione trasparente UDP

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.15. Movimento in Modalità Servo nello Spazio dei Giunti

Prototipo

ServoJ(joint_pos, axisPos, acc = 0.0, vel = 0.0, cmdT = 0.008, filterT = 0.0, gain = 0.0, id=0, cmdType=0)

Descrizione

Movimento in modalità servo nello spazio dei giunti

Parametri Obbligatori

  • joint_pos: Posizione giunto target, unità [°];

  • axisPos: Posizione assi esterni, unità mm;

Parametri Predefiniti

  • acc: Accelerazione, intervallo [0~100], temporaneamente non aperta, default 0.0;

  • vel: Velocità, intervallo [0~100], temporaneamente non aperta, default 0.0;

  • cmdT: Periodo di invio comando, unità s, intervallo consigliato [0.001~0.0016], default 0.008;

  • filterT: Tempo di filtro, unità [s], temporaneamente non aperto, default 0.0;

  • gain: Amplificatore proporzionale per la posizione target, temporaneamente non aperto, default 0.0;

  • id: ID comando ServoJ, default 0;

  • cmdType: Tipo di trasmissione comando, 0=XML-RPC, 1=Trasmissione trasparente UDP;

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.16. Esempio di Codice SDK per ServoJ, ServoMoveStart, ServoMoveEnd basato su Comunicazione UDP

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Stabilire la connessione con il controller del robot
 6robot = Robot.RPC('192.168.58.2')
 7
 8def TestServoJUDP(self):
 9    # Imposta callback
10    def callback(src_type, count, cmd_id, data_len, content):
11        print("Funzione callback: cmd_id={} count={} data_len={} content={}".format(cmd_id, count, data_len, content))
12        return 0
13
14    robot.SetUDPCmdRpyCallback(callback)
15    # # Inizializza posizione giunto e posizione assi esterni
16    j= [105, -108, 74, -66, -88.893, -1.621]
17    offset_pos = [0, 0, 0, 0, 0, 0]
18    epos = [0, 0, 0, 0]
19    # # Spostati nella posizione iniziale
20    result=robot.MoveJ(joint_pos=j, tool=0, user=0, vel=100, acc=100, ovl=100,exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
21    print("Risultato MoveJ: {}".format(result))
22    vel = 0.0
23    acc = 0.0
24    cmdT = 0.016
25    filterT = 0.0
26    gain = 0.0
27    flag = 0
28    dt = 0.1
29    cmdID = 0
30
31    # Ottieni posizione giunto corrente
32    ret, j = robot.GetActualJointPosDegree(flag)
33    if ret != 0:
34        print(f"GetActualJointPosDegree errcode:{ret}")
35    while 1:
36        count = 300
37        result = robot.ServoMoveStart(cmdType=1)
38        print("Risultato ServoMoveStart: {}".format(result))
39        while count > 0:
40            result = robot.ServoJ(joint_pos=j, axisPos=epos, acc=acc, vel=vel, cmdT=cmdT,filterT=filterT, gain=gain, id=cmdID, cmdType=1)
41            j[0] += dt
42            j[1] += dt
43            j[2] += dt
44            j[3] += dt
45            j[4] += dt
46            j[5] += dt
47            count -= 1
48            time.sleep(0.01)
49        result = robot.ServoMoveEnd(cmdType=1)
50        print("Risultato ServoMoveEnd: {}".format(result))
51
52        count = 300
53        result = robot.ServoMoveStart(cmdType=1)
54        print("Risultato ServoMoveStart: {}".format(result))
55        while count > 0:
56            result = robot.ServoJ(joint_pos=j, axisPos=epos, acc=acc, vel=vel, cmdT=cmdT,filterT=filterT, gain=gain, id=cmdID, cmdType=1)
57            j[0] -= dt
58            j[1] -= dt
59            j[2] -= dt
60            j[3] -= dt
61            j[4] -= dt
62            j[5] -= dt
63            count -= 1
64            time.sleep(0.01)
65        result = robot.ServoMoveEnd(cmdType=1)
66        print("Risultato ServoMoveEnd: {}".format(result))
67    robot.CloseRPC()
68    return 0
69TestServoJUDP(robot)

4.17. Esempio codice movimento modalità servo spazio giunti

 1from fairino import Robot
 2# Stabilire connessione con controller robot, restituisce oggetto robot se connesso con successo
 3robot = Robot.RPC('192.168.58.2')
 4j = [0.0] * 6
 5epos = [0.0] * 4
 6vel = 0.0
 7acc = 0.0
 8cmdT = 0.008
 9filterT = 0.0
10gain = 0.0
11flag = 0
12count = 500
13dt = 0.1
14cmdID = 0
15ret, j = robot.GetActualJointPosDegree(flag)
16if ret == 0:
17    cmdID += 1
18    robot.ServoMoveStart()
19    while count:
20        robot.ServoJ(joint_pos=j,axisPos= epos,acc= acc,vel= vel, cmdT=cmdT, filterT=filterT, gain=gain, id=cmdID)
21        j[4] += dt
22        count -= 1
23        time.sleep(cmdT)
24        rtn,pkg = robot.GetRobotRealTimeState()
25        print(f"Servoj Count {pkg.servoJCmdNum}; last pos is {pkg.lastServoTarget[0]},{pkg.lastServoTarget[1]},{pkg.lastServoTarget[2]},{pkg.lastServoTarget[3]},{pkg.lastServoTarget[4]},{pkg.lastServoTarget[5]}")
26
27        if count < 50:
28            robot.MotionQueueClear()
29            print(f"After queue clear, Servoj Count {pkg.servoJCmdNum}; last pos is {pkg.lastServoTarget[0]},{pkg.lastServoTarget[1]},{pkg.lastServoTarget[2]},{pkg.lastServoTarget[3]},{pkg.lastServoTarget[4]},{pkg.lastServoTarget[5]}")
30            break
31    robot.ServoMoveEnd()
32else:
33    print(f"GetActualJointPosDegree errcode:{ret}")
34robot.CloseRPC()

4.18. Avvio Controllo di Coppia dei Giunti

Prototipo

ServoJTStart(cmdType=0)

Descrizione

Avvia il controllo di coppia dei giunti

Parametri Obbligatori

  • cmdType: Tipo di trasmissione comando, 0=XML-RPC, 1=Trasmissione trasparente UDP

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.19. Controllo di Coppia dei Giunti

Prototipo

ServoJT(torque, interval, checkFlag=0, jPowerLimit=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],jVelLimit=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], cmdType=0)

Descrizione

Controllo di coppia dei giunti

Parametri Obbligatori

  • torque: Coppia giunti j1~j6, unità Nm
    • interval: Periodo del comando, unità s, intervallo [0.001~0.008]

    • checkFlag: Strategia di rilevamento 0-nessuna limitazione; 1-limitazione potenza; 2-limitazione velocità; 3-limitazione simultanea potenza e velocità, default 0

    • jPowerLimit: Limite massimo potenza giunto (W), default [0.0,0.0,0.0,0.0,0.0,0.0]

    • jVelLimit: Velocità massima giunto (°/s), default [0.0,0.0,0.0,0.0,0.0,0.0]

    • cmdType: Tipo di trasmissione comando, 0=XML-RPC, 1=Trasmissione trasparente UDP

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.20. Fine Controllo di Coppia dei Giunti

Prototipo

ServoJTEnd(cmdType=0)

Descrizione

Termina il controllo di coppia dei giunti

Parametri Obbligatori

  • cmdType: Tipo di trasmissione comando, 0=XML-RPC, 1=Trasmissione trasparente UDP

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.21. Esempio di Codice SDK per ServoJT, ServoJTStart, ServoJTEnd basato su Comunicazione UDP

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Stabilire la connessione con il controller del robot
 6robot = Robot.RPC('192.168.58.2')
 7
 8def TestServoJTUDP(self):
 9    # Imposta callback
10    def callback(src_type, count, cmd_id, data_len, content):
11        print("Funzione callback: cmd_id={} count={} data_len={} content={}".format(cmd_id, count, data_len, content))
12        return 0
13
14    robot.SetUDPCmdRpyCallback(callback)
15    while True:
16        # Inizializza posizione giunto e posizione assi esterni
17        j = [0, -90, 90, 0, 0, 0]
18        epos = [0, 0, 0, 0]
19        offset_pos = [0, 0, 0, 0, 0, 0]
20
21        # Spostati nella posizione iniziale
22        robot.MoveJ(joint_pos=j, tool=0, user=0, vel=100, acc=100, ovl=100,
23                    exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
24        time.sleep(3)
25        # Abilita insegnamento a trascinamento
26        result=robot.DragTeachSwitch(1)
27        print("Risultato DragTeachSwitch: {}".format(result))
28        torques = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
29
30        # Ottieni coppie dei giunti
31        ret, torques = robot.GetJointTorques(flag=1)
32        if ret != 0:
33            print(f"GetJointTorques errcode:{ret}")
34
35        count = 100
36        result = robot.ServoJTStart(cmdType=1)
37        print("Risultato ServoJTStart: {}".format(result))
38        # Controllo coppia in avanti
39        while True:
40            torques[0] = 0.03
41            result = robot.ServoJT(
42                torque=torques,
43                interval=0.001,
44                checkFlag=0,
45                jPowerLimit=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
46                jVelLimit=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
47                cmdType=1
48            )
49            print("Risultato: {}".format(result))
50            time.sleep(1)
51
52            ret, pkg = robot.GetRobotRealTimeState()
53            if pkg.jt_cur_pos[0] > 30:
54                break
55
56        # Controllo coppia in retro
57        while True:
58            torques[0] = -0.03
59            result = robot.ServoJT(
60                    torque=torques,
61                    interval=0.001,
62                    checkFlag=0,
63                    jPowerLimit=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
64                    jVelLimit=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
65                    cmdType=1
66                )
67            print("Risultato: {}".format(result))
68            time.sleep(1)
69
70            ret, pkg = robot.GetRobotRealTimeState()
71            if pkg.jt_cur_pos[0] < 0:
72                break
73
74        # Termina controllo coppia e disabilita insegnamento a trascinamento
75        result = robot.ServoJTEnd(cmdType=1)
76        print("Risultato ServoJTEnd: {}".format(result))
77        result = robot.DragTeachSwitch(0)
78        print("Risultato DragTeachSwitch: {}".format(result))
79
80    robot.CloseRPC()
81    return 0
82TestServoJTUDP(robot)

4.22. Esempio Codice Controllo Coppia Giunti

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4robot.DragTeachSwitch(1)
 5# torques = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 6error,torques = robot.GetJointTorques(1)
 7robot.ServoJTStart()
 8count = 100
 9while count > 0:
10    error = robot.ServoJT(torques, 0.001)
11    count -= 1
12    time.sleep(0.001)
13error = robot.ServoJTEnd()
14robot.DragTeachSwitch(0)
15robot.CloseRPC()

4.23. Movimento in Modalità Servo Spazio Cartesiano

Prototipo

ServoCart(mode, desc_pos, exaxis, pos_gain=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], acc=0.0, vel=0.0, cmdT=0.008,filterT=0.0, gain=0.0)

Descrizione

Movimento in modalità servo spazio cartesiano

Parametri Obbligatori

  • mode:[0]-Movimento assoluto (sistema coordinate base), [1]-Movimento incrementale (sistema coordinate base), [2]-Movimento incrementale (sistema coordinate utensile);

  • exaxis:Posizione asse esteso;

  • desc_pos:Posizione cartesiana target/Incremento posizione cartesiana target;

Parametri Predefiniti

  • pos_gain:Coefficiente proporzionalità incremento posa, effettivo solo nel movimento incrementale, intervallo [0~1], predefinito [1.0, 1.0, 1.0, 1.0, 1.0, 1.0];

  • acc:Accelerazione, intervallo [0~100], temporaneamente non disponibile, predefinito 0.0;

  • vel:Velocità, intervallo [0~100], temporaneamente non disponibile, predefinito 0.0;

  • cmdT:Periodo trasmissione comando, unità s, intervallo consigliato [0.001~0.0016], predefinito 0.008;

  • filterT:Tempo filtro, unità [s], temporaneamente non disponibile, predefinito 0.0;

  • gain:Amplificatore proporzionale posizione target, temporaneamente non disponibile, predefinito 0.0;

Valore di Ritorno

Codice errore Successo-0 Fallimento- errcode

4.24. Esempio Codice Movimento in Modalità Servo Spazio Cartesiano

 1from fairino import Robot
 2import time
 3robot = Robot.RPC('192.168.58.2')
 4desc_pos_dt = [83.00800, 50.525000, 29.246, 179.629, -7.138, -166.975]
 5exaxis = [100.0, 0.0, 0.0, 0.0]
 6pos_gain = [0.0] * 6
 7mode = 0
 8vel = 0.0
 9acc = 0.0
10cmdT = 0.001
11filterT = 0.0
12gain = 0.0
13flag = 0
14count = 5000
15robot.SetSpeed(20)
16while count:
17    rtn = robot.ServoCart(mode, desc_pos_dt, exaxis, pos_gain, acc, vel, cmdT, filterT, gain)
18    print(f"ServoCart rtn is {rtn}")
19    count -= 1
20    desc_pos_dt[0] += 0.01
21    exaxis[0] += 0.01
22robot.CloseRPC()
23return 0

4.25. Inizio Movimento Spline

Prototipo

SplineStart()

Descrizione

Inizio movimento spline

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.26. Movimento Spline PTP

Prototipo

SplinePTP(joint_pos, tool, user, desc_pos = [0.0,0.0,0.0,0.0,0.0,0.0],  vel = 20.0,  acc = 100.0, ovl = 100.0)

Descrizione

Movimento spline PTP

Parametri Obbligatori

  • joint_pos:posizione target giunti, unità[°];

  • tool:numero utensile, [0~14];

  • user:numero pezzo, [0~14];

Parametri Predefiniti

  • desc_pos:posa target cartesiana, unità [mm][°] default valore iniziale [0.0,0.0,0.0,0.0,0.0,0.0], default chiama risultato calcolo cinematica diretta;

  • vel:velocità, range [0~100], default 20.0;

  • acc:accelerazione, range [0~100], default 100.0;

  • ovl:fattore scala velocità, [0~100], default 100.0

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.27. Fine Movimento Spline

Prototipo

SplineEnd()

Descrizione

Fine movimento spline

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.28. Esempio Codice Movimento Spline

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4joint_points = [
 5    [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256],  # j1
 6    [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255],  # j2
 7    [-61.954, -84.409, 108.153, -116.316, -91.283, 74.260],  # j3
 8    [-89.575, -80.276, 102.713, -116.302, -91.284, 74.267]  # j4
 9]
10cart_points = [
11    [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833],  # desc_pos1
12    [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869],  # desc_pos2
13    [-327.622, 402.230, 320.402, -178.067, 2.127, -46.207],  # desc_pos3
14    [-104.066, 544.321, 327.023, -177.715, 3.371, -73.818]  # desc_pos4
15]
16offset_pos = [0] * 6
17epos = [0] * 4
18tool = user = 0
19vel = acc = ovl = 100.0
20blendT = -1.0
21flag = 0
22robot.SetSpeed(20)
23err1 = robot.MoveJ(joint_pos=joint_points[0],tool=tool, user=user,vel=vel)
24print(f"MoveJ errore: {err1}")
25robot.SplineStart()
26robot.SplinePTP(joint_pos=joint_points[0],tool=tool, user=user)
27robot.SplinePTP(joint_pos=joint_points[1],tool=tool, user=user)
28robot.SplinePTP(joint_pos=joint_points[2],tool=tool, user=user)
29robot.SplinePTP(joint_pos=joint_points[3],tool=tool, user=user)
30robot.SplineEnd()
31robot.CloseRPC()

4.29. Inizio Nuovo Movimento Spline

Cambiato nella versione python: SDK-v2.0.3

Prototipo

NewSplineStart(type,averageTime=2000)

Descrizione

Inizio nuovo movimento spline

Parametri Obbligatori

  • type:0-transizione arco, 1-punti percorso dati

Parametri Predefiniti

  • averageTime:tempo medio transizione globale (ms) default 2000

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.30. Punto Istruzione Nuova Spline

Prototipo

NewSplinePoint(desc_pos,tool,user,lastFlag,joint_pos=[0.0,0.0,0.0,0.0,0.0,0.0], vel = 0.0, acc = 0.0, ovl = 100.0 ,blendR = 0.0 )

Descrizione

Punto istruzione nuova spline

Parametri Obbligatori

  • desc_pos:posa target cartesiana, unità [mm][°];

  • tool:numero utensile, [0~14];

  • user:numero pezzo, [0~14];

  • lastFlag:se ultimo punto, 0-no, 1-sì;

Parametri Predefiniti

  • joint_pos:posizione target giunti, unità [°] default valore iniziale [0.0,0.0,0.0,0.0,0.0,0.0], default chiama risultato calcolo cinematica inversa;

  • vel:velocità, range [0~100], non ancora disponibile, default 0.0;;

  • acc:accelerazione, range [0~100], non ancora disponibile, default 0.0;

  • ovl:fattore scala velocità, [0~100] default 100.0;

  • blendR: [0~1000]-raggio smoothing, unità [mm] default 0.0;

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.31. Fine Nuovo Movimento Spline

Prototipo

NewSplineEnd()

Descrizione

Fine nuovo movimento spline

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.32. Esempio Codice Nuovo Movimento Spline

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4j1 = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5j2 = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 6j3 = [-61.954, -84.409, 108.153, -116.316, -91.283, 74.260]
 7j4 = [-89.575, -80.276, 102.713, -116.302, -91.284, 74.267]
 8j5 = [-95.228, -54.621, 73.691, -112.245, -91.280, 74.267]
 9desc_pos1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
10desc_pos2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
11desc_pos3 = [-327.622, 402.230, 320.402, -178.067, 2.127, -46.207]
12desc_pos4 = [-104.066, 544.321, 327.023, -177.715, 3.371, -73.818]
13desc_pos5 = [-33.421, 732.572, 275.103, -177.907, 2.709, -79.482]
14offset_pos = [0, 0, 0, 0, 0, 0]
15epos = [0, 0, 0, 0]
16tool = 0
17user = 0
18vel = 100.0
19acc = 100.0
20ovl = 100.0
21blendT = -1.0
22flag = 0
23robot.SetSpeed(20)
24err1 = robot.MoveJ(joint_pos=j1, tool=tool, user=user, vel=vel)
25print(f"movej errore:{err1}")
26robot.NewSplineStart(1, 2000)
27robot.NewSplinePoint(desc_pos=desc_pos1, tool=tool, user=user, vel=vel, lastFlag=-1, blendR=0)
28robot.NewSplinePoint(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, lastFlag=-1, blendR=0)
29robot.NewSplinePoint(desc_pos=desc_pos3, tool=tool, user=user, vel=vel, lastFlag=-1, blendR=0)
30robot.NewSplinePoint(desc_pos=desc_pos4, tool=tool, user=user, vel=vel, lastFlag=-1, blendR=0)
31robot.NewSplinePoint(desc_pos=desc_pos5, tool=tool, user=user, vel=vel, lastFlag=-1, blendR=0)
32robot.NewSplineEnd()
33robot.CloseRPC()

4.33. Terminazione Movimento Robot

Prototipo

StopMotion()

Descrizione

Termina movimento, usare con istruzioni movimento non bloccanti

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.34. Pausa Movimento Robot

Prototipo

PauseMotion()

Descrizione

Pausa movimento, usare con istruzioni movimento non bloccanti

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.35. Ripresa Movimento Robot

Prototipo

ResumeMotion()

Descrizione

Riprende movimento, usare con istruzioni movimento non bloccanti

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.36. Esempio Codice Pausa, Ripresa, Stop Movimento

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4j1 =[-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5j5 =[-95.228, -54.621, 73.691, -112.245, -91.280, 74.268]
 6desc_pos1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 7desc_pos5 = [-33.421, 732.572, 275.103, -177.907, 2.709, -79.482]
 8offset_pos = [0, 0, 0, 0, 0, 0]
 9epos = [0, 0, 0, 0]
10tool = 0
11user = 0
12vel = 100.0
13acc = 100.0
14ovl = 100.0
15blendT = -1.0
16flag = 0
17robot.SetSpeed(20)
18rtn = robot.MoveJ(joint_pos=j1, tool=tool, user=user, vel=vel)
19rtn = robot.MoveJ(joint_pos=j5, tool=tool, user=user, vel=vel, blendT=1)
20time.sleep(1)
21robot.PauseMotion()
22time.sleep(1)
23robot.ResumeMotion()
24time.sleep(1)
25robot.StopMotion()
26time.sleep(1)
27robot.CloseRPC()

4.37. Inizio Offset Globale Punti

Prototipo

PointsOffsetEnable(flag,offset_pos)

Descrizione

Inizio offset globale punti

Parametri Obbligatori

  • flag:0-offset in sistema base o pezzo, 2-offset in sistema utensile;

  • offset_pos:valore offset, unità [mm][°].

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.38. Fine Offset Globale Punti

Prototipo

PointsOffsetDisable()

Descrizione

Fine offset globale punti

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.39. Esempio Codice Offset Punti

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4j1 = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5j2 = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 6desc_pos1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 7desc_pos2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
 8offset_pos = [0, 0, 0, 0, 0, 0]
 9offset_pos1 = [0, 0, 50, 0, 0, 0]
10epos = [0, 0, 0, 0]
11tool = 0
12user = 0
13vel = 100.0
14acc = 100.0
15ovl = 100.0
16blendT = -1.0
17flag = 0
18robot.SetSpeed(20)
19robot.MoveJ(joint_pos=j1,tool=tool, user=user, vel=vel)
20robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel)
21time.sleep(1)
22robot.PointsOffsetEnable(flag=0, offset_pos=offset_pos1)
23robot.MoveJ(joint_pos=j1,tool=tool, user=user, vel=vel)
24robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel)
25robot.PointsOffsetDisable()
26robot.CloseRPC()

4.40. Inizio Movimento AO Box Controllo

Nuovo nella versione python: SDK-v2.0.4

Prototipo

MoveAOStart(AONum,maxTCPSpeed=1000,maxAOPercent=100,zeroZoneCmp=20)

Descrizione

Inizio movimento AO box controllo

Parametri Obbligatori

  • AONum:numero AO box controllo

Parametri Predefiniti

  • maxTCPSpeed:valore massimo velocità TCP [1-5000mm/s], default 1000;

  • maxAOPercent:percentuale AO corrispondente valore massimo velocità TCP, default 100%;

  • zeroZoneCmp:valore compensazione zona morta percentuale AO, intero, default 20%, range [0-100].

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.41. Fine Movimento AO Box Controllo

Nuovo nella versione python: SDK-v2.0.4

Prototipo

MoveAOStop()

Descrizione

Fine movimento AO box controllo

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.42. Inizio Movimento AO Terminale

Nuovo nella versione python: SDK-v2.0.4

Prototipo

MoveToolAOStart(AONum,maxTCPSpeed=1000,maxAOPercent=100,zeroZoneCmp =20)

Descrizione

Inizio movimento AO terminale

Parametri Obbligatori

  • AONum:numero AO terminale

Parametri Predefiniti

  • maxTCPSpeed:valore massimo velocità TCP [1-5000mm/s], default 1000;

  • maxAOPercent:percentuale AO corrispondente valore massimo velocità TCP, default 100%;

  • zeroZoneCmp:valore compensazione zona morta percentuale AO, intero, default 20%, range [0-100].

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.43. Fine Movimento AO Terminale

Nuovo nella versione python: SDK-v2.0.4

Prototipo

MoveToolAOStop()

Descrizione

Fine movimento AO terminale

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.44. Esempio Codice AO Fly Shoot

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4j1 = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5j2 = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 6desc_pos1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 7desc_pos2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
 8offset_pos = [0, 0, 0, 0, 0, 0]
 9offset_pos1 = [0, 0, 50, 0, 0, 0]
10epos = [0, 0, 0, 0]
11tool = 0
12user = 0
13vel = 20.0
14acc = 20.0
15ovl = 100.0
16blendT = -1.0
17flag = 0
18robot.SetSpeed(20)
19robot.MoveAOStart(0, 100, 100, 20)
20robot.MoveJ(joint_pos=j1,tool=tool, user=user, vel=vel)
21robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel)
22robot.MoveAOStop()
23time.sleep(1)
24robot.MoveToolAOStart(0, 100, 100, 20)
25robot.MoveJ(joint_pos=j1,tool=tool, user=user, vel=vel)
26robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel)
27robot.MoveToolAOStop()
28robot.CloseRPC()

4.45. Inizio Filtro FIR Movimento Ptp

Nuovo nella versione python: SDK-v2.1.2

Prototipo

PtpFIRPlanningStart(maxAcc, maxJek)

Descrizione

Inizio filtro FIR movimento Ptp

Parametri Obbligatori

  • maxAcc:valore estremo accelerazione massima (deg/s2)

  • maxJek:valore estremo jerk giunti unificato (deg/s3)

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.46. Fine Filtro FIR Movimento Ptp

Nuovo nella versione python: SDK-v2.0.7

Prototipo

PtpFIRPlanningEnd()

Descrizione

Fine filtro FIR movimento Ptp

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.47. Inizio Filtro FIR Movimento LIN, ARC

Nuovo nella versione python: SDK-v2.0.7

Prototipo

LinArcFIRPlanningStart(maxAccLin,maxAccDeg,maxJerkLin,maxJerkDeg)

Descrizione

Inizio filtro FIR movimento LIN, ARC

Parametri Obbligatori

  • maxAccLin:valore estremo accelerazione lineare (mm/s2)

  • maxAccDeg:valore estremo accelerazione angolare (deg/s2)

  • maxJerkLin:valore estremo jerk lineare (mm/s3)

  • maxJerkDeg:valore estremo jerk angolare (deg/s3)

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.48. Fine Filtro FIR Movimento LIN, ARC

Nuovo nella versione python: SDK-v2.0.7

Prototipo

LinArcFIRPlanningEnd()

Descrizione

Fine filtro FIR movimento LIN, ARC

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.49. Esempio Codice Filtro FIR

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4startjointPos = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5startjointPos = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 6midjointPos = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 7endjointPos = [-29.777, -84.536, 109.275, -114.075, -86.655, 74.257]
 8startdescPose = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 9middescPose = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
10enddescPose = [-487.434, 154.362, 308.576, 176.600, 0.268, -14.061]
11exaxisPos = [0.0, 0.0, 0.0, 0.0]
12offdese = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
13rtn = robot.PtpFIRPlanningStart(1000.0, 1000.0)
14print(f"PtpFIRPlanningStart rtn is {rtn}")
15error = robot.MoveJ(joint_pos=startjointPos,tool= 0,user= 0,desc_pos=startdescPose,vel= 100,acc=100,ovl=100, blendT=-1.0, offset_flag=0)
16print(f"MoveJ rtn is {rtn}")
17error = robot.MoveJ(joint_pos=endjointPos,tool= 0,user= 0,desc_pos=enddescPose,vel= 100,acc=100,ovl=100, blendT=-1.0, offset_flag=0)
18print(f"MoveJ rtn is {rtn}")
19robot.PtpFIRPlanningEnd()
20print(f"PtpFIRPlanningEnd rtn is {rtn}")
21rtn = robot.LinArcFIRPlanningStart(1000, 1000, 1000, 1000)
22print(f"LinArcFIRPlanningStart rtn is {rtn}")
23error = robot.MoveL(desc_pos=startdescPose,tool= 0,user= 0, joint_pos=startjointPos,vel= 100,overSpeedStrategy=1,speedPercent=1)
24print(f"MoveL rtn is {rtn}")
25error = robot.MoveC(desc_pos_p=middescPose,tool_p= 0,user_p= 0, joint_pos_p=midjointPos,vel_p= 100,desc_pos_t=enddescPose,tool_t= 0,user_t= 0,joint_pos_t=endjointPos,vel_t= 100)
26print(f"MoveC rtn is {rtn}")
27robot.LinArcFIRPlanningEnd()
28print(f"LinArcFIRPlanningEnd rtn is {rtn}")
29robot.CloseRPC()

4.50. Attivazione Smoothing Accelerazione

Nuovo nella versione python: SDK-v2.1.1

Prototipo

AccSmoothStart(saveFlag_flag)

Descrizione

Attiva smoothing accelerazione

Parametri Obbligatori

  • saveFlag_flag:salvataggio dopo spegnimento

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.51. Disattivazione Smoothing Accelerazione

Nuovo nella versione python: SDK-v2.1.1

Prototipo

AccSmoothEnd(saveFlag_flag)

Descrizione

Disattiva smoothing accelerazione

Parametri Obbligatori

  • saveFlag_flag:salvataggio dopo spegnimento

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.52. Esempio Codice Smoothing Accelerazione

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4startjointPos = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5endjointPos = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 6startdescPose = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 7enddescPose = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
 8exaxisPos = [0.0, 0.0, 0.0, 0.0]
 9offdese = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
10rtn = robot.AccSmoothStart(0)
11print(f"AccSmoothStart rtn is {rtn}")
12robot.MoveJ(joint_pos=startjointPos,tool= 0,user= 0,vel= 100)
13robot.MoveJ(joint_pos=endjointPos,tool= 0,user= 0,vel= 100)
14rtn = robot.AccSmoothEnd(0)
15print(f"AccSmoothEnd rtn is {rtn}")

4.53. Attivazione Velocità Orientamento Specifica Robot

Nuovo nella versione python: SDK-v2.0.5

Prototipo

AngularSpeedStart(ratio)

Descrizione

Attiva velocità orientamento specifica

Parametri Obbligatori

  • ratio:percentuale velocità orientamento [0-300]

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.54. Disattivazione Velocità Orientamento Specifica

Nuovo nella versione python: SDK-v2.0.5

Prototipo

AngularSpeedEnd()

Descrizione

Disattiva velocità orientamento specifica

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

Codice errore successo-0 fallimento- errcode

4.55. Esempio Codice Velocità Orientamento Specifica Robot

 1from fairino import Robot
 2# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 3robot = Robot.RPC('192.168.58.2')
 4startjointPos = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 5endjointPos = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 6startdescPose = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 7enddescPose = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
 8exaxisPos = [0.0, 0.0, 0.0, 0.0]
 9offdese = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
10rtn = robot.AngularSpeedStart(50)
11print(f"AngularSpeedStart rtn is {rtn}")
12robot.MoveJ(joint_pos=startjointPos, tool=0,user= 0,vel= 100)
13robot.MoveJ(joint_pos=endjointPos, tool=0,user= 0,vel= 100)
14rtn = robot.AngularSpeedEnd()
15print(f"AngularSpeedEnd rtn is {rtn}")
16robot.CloseRPC()

4.56. Attivazione Protezione Posizioni Singolari

Nuovo nella versione python: SDK-v2.0.5

Prototipo

SingularAvoidStart(protectMode, minShoulderPos=100, minElbowPos=50, minWristPos=10)

Descrizione

Attiva protezione posizioni singolari

Parametri Obbligatori

  • protectMode:modalità protezione posizioni singolari: 0-modalità giunti; 1-modalità cartesiana

Parametri Predefiniti

  • minShoulderPos:intervallo regolazione singolarità spalla (mm), default 100.0

  • minElbowPos:intervallo regolazione singolarità gomito (mm), default 50.0

  • minWristPos:intervallo regolazione singolarità polso (°), default 10.0

Valore Ritorno

  • Codice errore successo-0 fallimento- errcode

4.57. Disattivazione Protezione Posizioni Singolari

Nuovo nella versione python: SDK-v2.0.5

Prototipo

SingularAvoidEnd()

Descrizione

Disattiva protezione posizioni singolari

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

  • Codice errore successo-0 fallimento- errcode

4.58. Esempio Codice Protezione Posizioni Singolari Robot

 1from fairino import Robot
 2import time
 3# Stabilire connessione con controller robot, connessione riuscita ritorna oggetto robot
 4robot = Robot.RPC('192.168.58.2')
 5startjointPos = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
 6endjointPos = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
 7startdescPose = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
 8enddescPose = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
 9exaxisPos = [0.0, 0.0, 0.0, 0.0]
10offdese = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
11rtn = robot.SingularAvoidStart(2, 10, 5, 5)
12print(f"SingularAvoidStart rtn is {rtn}")
13robot.MoveJ(joint_pos=startjointPos, tool=0,user= 0,vel= 100)
14robot.MoveJ(joint_pos=endjointPos, tool=0,user= 0,vel= 100)
15rtn = robot.SingularAvoidEnd()
16print(f"SingularAvoidEnd rtn is {rtn}")
17robot.CloseRPC()

4.59. Svuotamento Coda Istruzioni Movimento

Nuovo nella versione python: SDK-v2.1.7

Prototipo

MotionQueueClear()

Descrizione

Svuota coda istruzioni movimento

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore Ritorno

  • Codice errore successo-0 fallimento- errcode

4.60. Movimento a Inizio Linea Intersecante

Prototipo

MoveToIntersectLineStart(mainPoint, piecePoint, tool, wobj, vel, acc, ovl, oacc, moveType,mainExaxisPos=[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]],pieceExaxisPos=[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]],extAxisFlag=0,exaxisPos=[0.0,0.0,0.0,0.0],moveDirection=0,offset=[0.0,0.0,0.0,0.0,0.0,0.0])

Descrizione

Movimento a inizio linea intersecante

Parametri Obbligatori

  • mainPoint:6 pose cartesiane punti insegnamento tubo principale

  • piecePoint:6 pose cartesiane punti insegnamento tubo secondario

  • tool:numero sistema coordinate utensile

  • wobj:numero sistema coordinate pezzo

  • vel:percentuale velocità

  • acc:percentuale accelerazione

  • ovl:fattore scala velocità

  • oacc:fattore scala accelerazione

  • moveType:tipo movimento; 0-PTP; 1-LIN

  • mainExaxisPos:posizioni assi estesi 6 punti insegnamento tubo principale, default[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]]

  • pieceExaxisPos:posizioni assi estesi 6 punti insegnamento tubo secondario, default[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]]

  • extAxisFlag:abilita assi estesi; 0-disabilitato; 1-abilitato

  • exaxisPos:posizione assi estesi punto iniziale [0.0,0.0,0.0,0.0]

  • moveDirection:direzione movimento; 0-orario; 1-antiorario

  • offset:valore offset

Parametri Predefiniti

Nessuno

Valore Ritorno

  • Codice errore successo-0 fallimento- errcode

4.61. Movimento Linea Intersecante

Prototipo

MoveIntersectLine(mainPoint, piecePoint, tool, wobj, vel, acc, ovl, oacc, moveDirection,mainExaxisPos=[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]],pieceExaxisPos=[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]],extAxisFlag=0,exaxisPos=[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]],offset=[0.0,0.0,0.0,0.0,0.0,0.0])

Descrizione

Movimento linea intersecante

Parametri Obbligatori

  • mainPoint:6 pose cartesiane punti insegnamento tubo principale

  • piecePoint:6 pose cartesiane punti insegnamento tubo secondario

  • tool:numero sistema coordinate utensile

  • wobj:numero sistema coordinate pezzo

  • vel:percentuale velocità

  • acc:percentuale accelerazione

  • ovl:fattore scala velocità

  • oacc:fattore scala accelerazione

  • moveDirection:direzione movimento; 0-orario; 1-antiorario

  • mainExaxisPos:posizioni assi estesi 6 punti insegnamento tubo principale, default[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]]

  • pieceExaxisPos:posizioni assi estesi 6 punti insegnamento tubo secondario, default[[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]]

  • extAxisFlag:abilita assi estesi; 0-disabilitato; 1-abilitato

  • exaxisPos:posizione assi estesi punto iniziale [0.0,0.0,0.0,0.0]

  • offset:valore offset

Parametri Predefiniti

Nessuno

Valore Ritorno

  • Codice errore successo-0 fallimento- errcode

4.62. Esempio Codice Movimento Linea Intersecante Robot

 1from fairino import Robot
 2import time
 3robot = Robot.RPC('192.168.58.2')
 4mainPoint = [[0.0] * 6 for _ in range(6)]
 5piecePoint = [[0.0] * 6 for _ in range(6)]
 6mainExaxisPos = [[0.0] * 4 for _ in range(6)]
 7pieceExaxisPos = [[0.0] * 4 for _ in range(6)]
 8extAxisFlag = 1
 9exaxisPos = [[0.0] * 4 for _ in range(4)]
10offset = [0.0, 2.0, 30.0, -2.0, 0.0, 0.0]
11mainPoint[0] = [490.004, -383.194, 402.735, -9.332, -1.528, 69.594]
12mainPoint[1] = [444.950, -407.117, 389.011, -5.546, -2.196, 65.279]
13mainPoint[2] = [445.168, -463.605, 355.759, -1.544, -10.886, 57.104]
14mainPoint[3] = [507.529, -485.385, 343.013, -0.786, -4.834, 61.799]
15mainPoint[4] = [554.390, -442.647, 367.701, -4.761, -10.181, 64.925]
16mainPoint[5] = [532.552, -394.003, 396.467, -13.732, -13.592, 67.411]
17mainExaxisPos[0] = [-29.996, 0.000, 0.000, 0.000]
18mainExaxisPos[1] = [-29.996, 0.000, 0.000, 0.000]
19mainExaxisPos[2] = [-29.996, 0.000, 0.000, 0.000]
20mainExaxisPos[3] = [-29.996, 0.000, 0.000, 0.000]
21mainExaxisPos[4] = [-29.996, 0.000, 0.000, 0.000]
22mainExaxisPos[5] = [-29.996, 0.000, 0.000, 0.000]
23piecePoint[0] = [505.571, -192.408, 316.759, 38.098, 37.051, 139.447]
24piecePoint[1] = [533.837, -201.558, 332.340, 34.644, 42.339, 137.748]
25piecePoint[2] = [530.386, -225.085, 373.808, 35.431, 45.111, 137.560]
26piecePoint[3] = [485.646, -229.195, 383.778, 33.870, 45.173, 137.064]
27piecePoint[4] = [460.551, -212.161, 354.256, 28.856, 45.602, 135.930]
28piecePoint[5] = [474.217, -197.124, 324.611, 42.469, 41.133, 148.167]
29pieceExaxisPos[0] = [-29.996, -0.000, 0.000, 0.000]
30pieceExaxisPos[1] = [-29.996, -0.000, 0.000, 0.000]
31pieceExaxisPos[2] = [-29.996, -0.000, 0.000, 0.000]
32pieceExaxisPos[3] = [-29.996, -0.000, 0.000, 0.000]
33pieceExaxisPos[4] = [-29.996, -0.000, 0.000, 0.000]
34pieceExaxisPos[5] = [-29.996, -0.000, 0.000, 0.000]
35exaxisPos[0] = [-29.996, -0.000, 0.000, 0.000]
36exaxisPos[1] = [-44.994, 90.000, 0.000, 0.000]
37exaxisPos[2] = [-59.992, 0.002, 0.000, 0.000]
38exaxisPos[3] = [-44.994, -89.997, 0.000, 0.000]
39tool = 2
40wobj = 0
41vel = 100.0
42acc = 100.0
43ovl = 12.0
44oacc = 12.0
45moveType = 1
46moveDirection = 1
47rtn = robot.MoveToIntersectLineStart(mainPoint=mainPoint, mainExaxisPos=mainExaxisPos, piecePoint=piecePoint, pieceExaxisPos=pieceExaxisPos, extAxisFlag=extAxisFlag,exaxisPos=exaxisPos[0], tool=tool, wobj=wobj, vel=vel, acc=acc, ovl=ovl, oacc=oacc, moveType=moveType, moveDirection=moveDirection, offset=offset)
48print(f"MoveToIntersectLineStart rtn is {rtn}")
49rtn = robot.MoveIntersectLine(mainPoint=mainPoint, mainExaxisPos=mainExaxisPos, piecePoint=piecePoint, pieceExaxisPos=pieceExaxisPos, extAxisFlag=extAxisFlag, exaxisPos=exaxisPos, tool=tool,wobj=wobj, vel=vel, acc=acc, ovl=5.0, oacc=5.0, moveDirection=moveDirection, offset=offset)
50print(f"MoveIntersectLine rtn is {rtn}")
51robot.CloseRPC()

4.63. Movimento Aereo Stazionario

Prototipo

MoveStationary()

Descrizione

Movimento Aereo Stazionario

Parametri Richiesti

Nessuno

Parametri Predefiniti

Nessuno

Valore di Ritorno

  • Codice di errore. Successo - 0, Fallimento - errcode

4.64. Esempio Codice Movimento Aereo Stazionario

 1from fairino import Robot
 2import time
 3robot = Robot.RPC('192.168.58.2')
 4rtn = robot.LaserSensorRecordandReplay(0, 10, 1, 0, 0.1, 1, 0, 10, 100)
 5print(f"LaserSensorRecordandReplay rtn is {rtn}")
 6rtn = robot.MoveStationary()
 7print(f"MoveStationary rtn is {rtn}")
 8rtn = robot.LaserSensorRecord1(0, 10)
 9print(f"LaserSensorRecordandReplay rtn is {rtn}")
10robot.CloseRPC()
11return 0

4.65. Avvio Oscillazione a Punto Fisso

Prototipo

OriginPointWeaveStart(weaveNum, mode, refPoint, weaveTime)

Descrizione

Avvia l’oscillazione a punto fisso

Parametri Obbligatori

  • weaveNum: Numero di oscillazione [0-7]

  • mode: 0-Sistema di coordinate utensile; 1-Punto di riferimento

  • refPoint: Coordinate cartesiane del punto di riferimento [x,y,z,a,b,c]

  • weaveTime: Tempo di oscillazione [s]

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento-errcode

4.66. Fine Oscillazione a Punto Fisso

Prototipo

OriginPointWeaveEnd()

Descrizione

Termina l’oscillazione a punto fisso

Parametri Obbligatori

Nessuno

Parametri Predefiniti

Nessuno

Valore di Ritorno

  • Codice di errore Successo-0 Fallimento-errcode

4.67. Esempio di Codice SDK per Oscillazione a Punto Fisso

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Stabilire la connessione con il controller del robot
 6robot = Robot.RPC('192.168.58.2')
 7
 8def TestOriginPointWeave(self):
 9    time.sleep(2)
10    # Inizializza posizione giunto, assi esterni e offset
11    j = [39.886, -98.580, -124.032, -47.393, 90.000, 40.842]
12    epos = [0, 0, 0, 0]
13    offset_pos = [0, 0, 0, 0, 0, 0]
14
15    # Posizione punto di riferimento [x, y, z, rx, ry, rz]
16    refPoint = [400.021, 300.022, 299.996, 179.997, -0.003, -90.956]
17
18    # Spostati nella posizione iniziale
19    robot.MoveJ(joint_pos=j, tool=1, user=0, vel=100, acc=100, ovl=100,
20                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
21
22    # Prima oscillazione: sistema di coordinate assoluto (tool=0), modalità 0
23    robot.OriginPointWeaveStart(0, 0, refPoint, 3)
24    robot.MoveStationary()
25    robot.OriginPointWeaveEnd()
26
27    time.sleep(2)
28
29    # Spostati nuovamente nella posizione iniziale
30    robot.MoveJ(joint_pos=j, tool=1, user=0, vel=100, acc=100, ovl=100,
31                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
32
33    # Seconda oscillazione: sistema di coordinate assoluto (tool=0), modalità 1
34    robot.OriginPointWeaveStart(0, 1, refPoint, 3)
35    robot.MoveStationary()
36    robot.OriginPointWeaveEnd()
37
38    # Chiudi connessione
39    robot.CloseRPC()
40    time.sleep(1)
41
42TestOriginPointWeave(robot)

4.68. Esempio di Codice SDK per Oscillazione a Punto Fisso (con Laser e Asse di Estensione)

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Stabilire la connessione con il controller del robot
 6robot = Robot.RPC('192.168.58.2')
 7
 8def TestOriginPointWeave(self):
 9    time.sleep(2)
10    # Inizializza posizione giunto, assi esterni e offset
11    j = [39.886, -98.580, -124.032, -47.393, 90.000, 40.842]
12    epos1 = [0, 0, 0, 0]
13    offset_pos = [0, 0, 0, 0, 0, 0]
14    epos2 = [5, 0.000, 0.000, 0.000]
15    # Posizione punto di riferimento [x, y, z, rx, ry, rz]
16    refPoint = [400.021, 300.022, 299.996, 179.997, -0.003, -90.956]
17
18    rtn = 0
19    robot.LaserTrackingSensorConfig("192.168.58.20", 5020)
20    robot.LaserTrackingSensorSamplePeriod(20)
21    robot.LoadPosSensorDriver(101)
22
23    # Carica driver UDP
24    robot.ExtDevLoadUDPDriver()
25
26    # Imposta tempo di completamento del posizionamento per assi di estensione
27    rtn = robot.SetExAxisCmdDoneTime(5000.0)
28    print(f"SetExAxisCmdDoneTime rtn is {rtn}")
29
30    # Abilita assi di estensione 1 e 2
31    rtn = robot.ExtAxisServoOn(1, 1)
32    print(f"ExtAxisServoOn axis id 1 rtn is {rtn}")
33    rtn = robot.ExtAxisServoOn(2, 1)
34    print(f"ExtAxisServoOn axis id 2 rtn is {rtn}")
35    time.sleep(2)
36
37    # Imposta homing per asse di estensione
38    robot.ExtAxisSetHoming(1, 0, 10, 2)
39    robot.LaserTrackingLaserOnOff(1)
40
41    # 1---Senza asse di estensione
42    robot.LaserTrackingTrackOnOff(1, 4)
43    time.sleep(0.2)
44    # Avvia oscillazione a punto fisso
45    robot.OriginPointWeaveStart(0, 0, refPoint, 10)
46    robot.MoveStationary()  # Esegui movimento stazionario (supponendo che questo metodo esista)
47    robot.OriginPointWeaveEnd()
48    robot.LaserTrackingTrackOnOff(0, 4)
49
50    time.sleep(2)  # Attendi 2 secondi
51
52    # 2----Con asse di estensione
53    robot.ExtAxisMove(epos1, 100, -1)
54    robot.LaserTrackingTrackOnOff(1, 4)
55    # Avvia oscillazione a punto fisso
56    robot.OriginPointWeaveStart(0, 0, refPoint, 20)
57    robot.ExtAxisMove(epos2, 100, -1)
58    robot.OriginPointWeaveEnd()
59    robot.LaserTrackingTrackOnOff(0, 4)
60
61    # Chiudi connessione
62    robot.CloseRPC()
63    time.sleep(1)
64
65TestOriginPointWeave(robot)

4.69. Movimento in Modo Servo Velocità nello Spazio dei Giunti

Prototipo

ServoJV(self, joint_vel, exis_vel, acc=0.0, vel=0.0, cmdT=0.008, filterT=0.0, gain=0.0, id=0, comType=0)

Descrizione

Movimento in modo servo velocità nello spazio dei giunti

Parametri Obbligatori

  • joint_vel: 6 velocità target dei giunti, unità deg/s

  • exis_vel: 4 velocità degli assi esterni, unità deg/s

  • acc: Percentuale di accelerazione, intervallo [0~100], non ancora aperto, predefinito 0

  • vel: Percentuale di velocità, intervallo [0~100], non ancora aperto, predefinito 0

  • cmdT: Periodo del ciclo di comando, unità s, intervallo consigliato [0.001~0.0016]

  • filterT: Tempo di filtro, unità s, non ancora aperto, predefinito 0

  • gain: Guadagno proporzionale per la posizione target, non ancora aperto, predefinito 0

  • id: ID comando servoJ, predefinito 0

  • comType: Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento- errcode

4.70. Esempio di Codice Movimento in Modo Servo Velocità nello Spazio dei Giunti

 1from fairino import Robot
 2import time
 3
 4def main():
 5    # Stabilire connessione con il controller del robot
 6    robot = Robot.RPC('192.168.58.2')
 7    time.sleep(0.5)  # Attendi connessione e ricezione dati
 8
 9    # Inizializza array velocità giunti e array velocità assi esterni
10    joint_vel = [10.0, 0.0, 0.0, 0.0, 0.0, 0.0]
11    exis_vel = [0.0, 0.0, 0.0, 0.0]
12    acc = 0.0
13    vel = 0.0
14    cmdT = 0.008
15    filterT = 0.0
16    gain = 0.0
17    cnt = 0
18
19    # Chiama ServoJV in loop, totale 200 volte
20    while cnt < 200:
21        rtn = robot.ServoJV(joint_vel=joint_vel, exis_vel=exis_vel, acc=acc, vel=vel,
22                            cmdT=cmdT, filterT=filterT, gain=gain)
23        print(f"ServoJV rtn is {rtn}")
24        cnt += 1
25
26    # Chiudi connessione
27    robot.CloseRPC()
28
29
30# Chiamata funzione di test
31main()

4.71. Avvio Controllo MIT Giunti

Prototipo

ServoMITStart(self, comType=0)

Descrizione

Avvio controllo MIT giunti

Parametri Obbligatori

  • comType: Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento- errcode

4.72. Fine Controllo MIT Giunti

Prototipo

ServoMITEnd(self, comType=0)

Descrizione

Fine controllo MIT giunti

Parametri Obbligatori

  • comType: Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento- errcode

4.73. Controllo MIT Giunti

Prototipo

ServoMIT(self, posGain, desPos, velGain, desVel, torque_ff, interval, comType=0)

Descrizione

Controllo MIT giunti

Parametri Obbligatori

  • posGain: Guadagni di posizione giunti j1~j6

  • desPos: Posizioni desiderate giunti j1~j6, unità: deg

  • velGain: Guadagni di velocità giunti j1~j6

  • desVel: Velocità desiderate giunti j1~j6, unità: deg/s

  • torque_ff: Coppie feedforward j1~j6, unità: Nm

  • interval: Periodo del ciclo di comando, unità s, intervallo [0.001~0.008]

  • comType: Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)

Parametri Predefiniti

Nessuno

Valore di Ritorno

Codice di errore Successo-0 Fallimento- errcode

4.74. Esempio di Codice Controllo MIT Giunti del Robot

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Stabilire connessione con il controller del robot
 6robot = Robot.RPC('192.168.58.2')
 7
 8# Definisci funzione di callback
 9def udp_frame_callback(src_type, count, cmd_id, data_len, content):
10    """Funzione callback risposta comando UDP"""
11    print(f"Callback: cmd_id={cmd_id} count={count} data_len={data_len} content={content}")
12    return 0
13
14def ServoMITtest(self):
15    # Imposta callback risposta comando UDP
16    robot.SetUDPCmdRpyCallback(udp_frame_callback)
17
18    while True:
19        # Resetta tutti gli errori
20        robot.ResetAllError()
21        time.sleep(0.5)
22
23        # Inizializza array parametri
24        posGain = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
25        desPos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
26        velGain = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
27        desVel = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
28        torques = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
29
30        # Ottieni coppie dei giunti
31        rtn, torques = robot.GetJointTorques(flag=1)
32        print(f"GetJointTorques rtn: {rtn}")
33        print("111111")
34
35        # Avvia modalità Servo MIT
36        rtn = robot.ServoMITStart(0)
37        print(f"ServoMITStart rtn: {rtn}")
38
39        # Abilita drag teaching
40        rtn = robot.DragTeachSwitch(1)
41        print(f"DragTeachSwitch rtn: {rtn}")
42
43        intev = 0.008
44
45        # Movimento in avanti: coppia positiva sull'asse 6 fino a quando l'angolo supera 30 gradi
46        while True:
47            torques[5] = 0.03
48            rtn = robot.ServoMIT(posGain, desPos, velGain,
49                                desVel, torques, intev, comType=0)
50            print(f"ServoMIT call rtn is {rtn}")
51            time.sleep(0.001)  # 1ms
52
53            rtn, pkg = robot.GetRobotRealTimeState()
54            print(f"pkg.jt_cur_pos[5]: {pkg.jt_cur_pos[5]}")
55
56            if pkg.jt_cur_pos[5] > 30:
57                break
58
59        # Movimento inverso: coppia negativa sull'asse 6 fino a quando l'angolo è inferiore a 0 gradi
60        while True:
61            torques[5] = -0.03
62            rtn = robot.ServoMIT(posGain, desPos, velGain,
63                                desVel, torques, intev, comType=0)
64            print(f"ServoMIT call rtn is {rtn}")
65            time.sleep(0.001)  # 1ms
66
67            rtn, pkg = robot.GetRobotRealTimeState()
68            print(f"pkg.jt_cur_pos[5]: {pkg.jt_cur_pos[5]}")
69
70            if pkg.jt_cur_pos[5] < 0:
71                break
72
73        # Disabilita drag teaching
74        rtn = robot.DragTeachSwitch(0)
75        print(f"DragTeachSwitch off rtn: {rtn}")
76
77        # Termina modalità Servo MIT
78        rtn = robot.ServoMITEnd(0)
79        print(f"ServoMITEnd rtn: {rtn}")
80
81# Chiamata funzione di test
82ServoMITtest(robot)