4. Movimento del Robot

4.1. Jog (Movimento a scatti)

 1/**
 2* @brief Jog - Movimento a scatti
 3* @param [in] refType 0-Jog dei giunti, 2-Jog nel sistema di coordinate base, 4-Jog nel sistema di coordinate dello strumento, 8-Jog nel sistema di coordinate del pezzo
 4* @param [in] nb 1-Giunto1 (o asse x), 2-Giunto2 (o asse y), 3-Giunto3 (o asse z), 4-Giunto4 (o rotazione attorno all'asse x), 5-Giunto5 (o rotazione attorno all'asse y), 6-Giunto6 (o rotazione attorno all'asse z)
 5* @param [in] dir 0-Direzione negativa, 1-Direzione positiva
 6* @param [in] vel Percentuale di velocità, [0~100]
 7* @param [in] acc Percentuale di accelerazione, [0~100]
 8* @param [in] max_dis Angolo massimo per singolo movimento a scatti, unità [°] o distanza, unità [mm]
 9* @return Codice di errore
10*/
11int StartJOG(int refType, int nb, int dir, double vel, double acc, double max_dis);

4.2. Arresto decelerato del movimento Jog

1/**
2* @brief  Arresto decelerato del movimento Jog
3* @param  [in]  stopType  1-Arresto Jog dei giunti, 3-Arresto Jog nel sistema di coordinate base, 5-Arresto Jog nel sistema di coordinate dello strumento, 9-Arresto Jog nel sistema di coordinate del pezzo
4* @return  Codice di errore
5*/
6int StopJOG(int stopType);

4.3. Arresto immediato del movimento Jog

1/**
2* @brief Arresto immediato del movimento Jog
3* @return  Codice di errore
4*/
5int ImmStopJOG();

4.4. Esempio di codice per il controllo Jog del robot

 1public static  int TestJOG(Robot robot)
 2{
 3    for (int i = 0; i < 6; i++)
 4    {
 5        robot.StartJOG(0, i + 1, 0, 20.0, 20.0, 30.0);
 6        robot.Sleep(1000);
 7        robot.ImmStopJOG();
 8        robot.Sleep(1000);
 9    }
10
11    for (int i = 0; i < 6; i++)
12    {
13        robot.StartJOG(2, i + 1, 0, 20.0, 20.0, 30.0);
14        robot.Sleep(1000);
15        robot.ImmStopJOG();
16        robot.Sleep(1000);
17    }
18
19    for (int i = 0; i < 6; i++)
20    {
21        robot.StartJOG(4, i + 1, 0, 20.0, 20.0, 30.0);
22        robot.Sleep(1000);
23        robot.StopJOG(5);
24        robot.Sleep(1000);
25    }
26
27    for (int i = 0; i < 6; i++)
28    {
29        robot.StartJOG(8, i + 1, 0, 20.0, 20.0, 30.0);
30        robot.Sleep(1000);
31        robot.StopJOG(9);
32        robot.Sleep(1000);
33    }
34    return 0;
35}

4.5. Movimento nello spazio dei giunti

 1/**
 2* @brief  Movimento nello spazio dei giunti
 3* @param  [in] joint_pos  Posizione giunto target, unità deg
 4* @param  [in] desc_pos  Posizione cartesiana target
 5* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 6* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 7* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 8* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
10* @param  [in] epos  Posizione dell'asse esteso, unità mm
11* @param  [in] blendT [-1.0]-Movimento fino alla posizione (bloccante), [0~500.0]-Tempo di smoothing (non bloccante), unità ms
12* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
13* @param  [in] offset_pos  Quantità di offset della posa
14* @return  Codice di errore
15*/
16int MoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos);

4.6. Movimento nello spazio dei giunti (calcolo cinematico diretto automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento nello spazio dei giunti (calcolo cinematico diretto automatico)
 3* @param  [in] joint_pos  Posizione giunto target, unità deg
 4* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
 9* @param  [in] epos  Posizione dell'asse esteso, unità mm
10* @param  [in] blendT [-1.0]-Movimento fino alla posizione (bloccante), [0~500.0]-Tempo di smoothing (non bloccante), unità ms
11* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
12* @param  [in] offset_pos  Quantità di offset della posa
13* @return Codice di errore
14*/
15int MoveJ(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos)

4.7. Movimento lineare nello spazio cartesiano

Cambiato nella versione Java: SDK-v1.0.5-3.8.2

 1/**
 2* @brief  Movimento Lineare nello Spazio Cartesiano (Funzione Sovraccarica 1 con blendMode)
 3* @param  joint_pos  Posizioni target dei giunti, unità: deg
 4* @param  desc_pos   Posa target cartesiana
 5* @param  tool  Indice del sistema di coordinate utensile, intervallo [1~15]
 6* @param  user  Indice del sistema di coordinate pezzo/utente, intervallo [1~15]
 7* @param  vel  Percentuale di velocità, intervallo [0~100]
 8* @param  acc  Percentuale di accelerazione, intervallo [0~100], attualmente non disponibile
 9* @param  ovl  Fattore di scala velocità [0~100] / Velocità fisica (mm/s)
10* @param  blendR  [-1.0]-Blocca fino al completamento del movimento (bloccante), [0~1000.0]-Raggio di transizione (non bloccante), unità: mm
11* @param  blendMode  Metodo di transizione; 0-Transizione tangente; 1-Transizione a spigolo
12* @param  epos  Posizione dell'asse esteso, unità: mm
13* @param  search  0-Nessuna ricerca filo, 1-Ricerca filo
14* @param  offset_flag  0-Nessuno scostamento, 1-Scostamento nel sistema di coordinate base/pezzo, 2-Scostamento nel sistema di coordinate utensile
15* @param  offset_pos  Valore di scostamento della posa
16* @param  oacc  Fattore di scala accelerazione [0-100] / Accelerazione fisica (mm/s²)
17* @param  velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) e accelerazione (mm/s²)
18* @param  overSpeedStrategy  Strategia di gestione sovravelocità; 1-Standard; 2-Ferma con errore in caso di sovravelocità; 3-Riduzione adattiva della velocità, default 0
19* @param  speedPercent  Percentuale di soglia di riduzione velocità consentita [0-100], default 10%
20* @return  Codice di errore
21*/
22public int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, double oacc,int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.8. Movimento lineare nello spazio cartesiano (calcolo cinematico inverso automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento lineare nello spazio cartesiano (calcolo cinematico inverso automatico)
 3* @param [in] desc_pos  Posizione cartesiana target
 4* @param [in] tool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 5* @param [in] user  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 6* @param [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param [in] ovl  Fattore di scala della velocità, intervallo [0~100]
 9* @param [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
10* @param [in] blendMode Modalità di transizione; 0-Transizione tangente; 1-Transizione a spigolo
11* @param [in] epos  Posizione dell'asse esteso, unità mm
12* @param [in] search  0-Nessuna ricerca del filo, 1-Ricerca del filo
13* @param [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
14* @param [in] offset_pos  Quantità di offset della posa
15* @param [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
16* @param [in] overSpeedStrategy  Strategia di gestione della sovravelocità, 1-Standard; 2-Arresto con errore in caso di sovravelocità; 3-Decelerazione adattativa, predefinito 0
17* @param [in] speedPercent  Soglia percentuale consentita per la decelerazione [0-100], predefinito 10%
18* @return  Codice di errore
19*/
20int MoveL(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int config, int overSpeedStrategy, int speedPercent)

4.9. Movimento lineare nello spazio cartesiano (aggiunto parametro velAccParamMode per modalità parametri velocità/accelerazione)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento lineare nello spazio cartesiano (aggiunto parametro velAccParamMode per modalità parametri velocità/accelerazione)
 3* @param  [in] joint_pos  Posizione giunto target, unità deg
 4* @param  [in] desc_pos  Posizione cartesiana target
 5* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 6* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 7* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 8* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
10* @param  [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
11* @param  [in] epos  Posizione dell'asse esteso, unità mm
12* @param  [in] search  0-Nessuna ricerca del filo, 1-Ricerca del filo
13* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
14* @param  [in] offset_pos  Quantità di offset della posa
15* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
16* @param  [in] overSpeedStrategy  Strategia di gestione della sovravelocità, 1-Standard; 2-Arresto con errore in caso di sovravelocità; 3-Decelerazione adattativa, predefinito 0
17* @param  [in] speedPercent  Soglia percentuale consentita per la decelerazione [0-100], predefinito 10%
18* @return  Codice di errore
19*/
20public int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.10. Movimento lineare nello spazio cartesiano (funzione sovraccaricata 1, aggiunto blendMode)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento lineare nello spazio cartesiano (funzione sovraccaricata 1, aggiunto blendMode)
 3* @param  [in] joint_pos  Posizione giunto target, unità deg
 4* @param  [in] desc_pos  Posizione cartesiana target
 5* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 6* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 7* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 8* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
10* @param  [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
11* @param  [in] blendMode Modalità di transizione; 0-Transizione tangente; 1-Transizione a spigolo
12* @param  [in] epos  Posizione dell'asse esteso, unità mm
13* @param  [in] search  0-Nessuna ricerca del filo, 1-Ricerca del filo
14* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
15* @param  [in] offset_pos  Quantità di offset della posa
16* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
17* @param  [in] overSpeedStrategy  Strategia di gestione della sovravelocità, 1-Standard; 2-Arresto con errore in caso di sovravelocità; 3-Decelerazione adattativa, predefinito 0
18* @param  [in] speedPercent  Soglia percentuale consentita per la decelerazione [0-100], predefinito 10%
19* @return  Codice di errore
20*/
21public int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.11. Movimento lineare nello spazio cartesiano (funzione sovraccaricata 2, non richiede posizione giunto in input)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento lineare nello spazio cartesiano (funzione sovraccaricata 2, non richiede posizione giunto in input)
 3* @param  [in] desc_pos  Posizione cartesiana target
 4* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 5* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 6* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
 9* @param  [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
10* @param  [in] blendMode Modalità di transizione; 0-Transizione tangente; 1-Transizione a spigolo
11* @param  [in] epos  Posizione dell'asse esteso, unità mm
12* @param  [in] search  0-Nessuna ricerca del filo, 1-Ricerca del filo
13* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
14* @param  [in] offset_pos  Quantità di offset della posa
15* @param  [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
16* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
17* @param  [in] overSpeedStrategy  Strategia di gestione della sovravelocità, 1-Standard; 2-Arresto con errore in caso di sovravelocità; 3-Decelerazione adattativa, predefinito 0
18* @param  [in] speedPercent  Soglia percentuale consentita per la decelerazione [0-100], predefinito 10%
19* @return  Codice di errore
20*/
21public int MoveL(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int config, int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.12. Movimento circolare nello spazio cartesiano

 1/**
 2* @brief  Movimento ad Arco Circolare nello Spazio Cartesiano
 3* @param  joint_pos_p  Posizioni dei giunti del punto di percorso, unità: deg
 4* @param  desc_pos_p   Posa cartesiana del punto di percorso
 5* @param  ptool  Indice del sistema di coordinate utensile, intervallo [1~15]
 6* @param  puser  Indice del sistema di coordinate pezzo/utente, intervallo [1~15]
 7* @param  pvel  Percentuale di velocità, intervallo [0~100]
 8* @param  pacc  Percentuale di accelerazione, intervallo [0~100], attualmente non disponibile
 9* @param  epos_p  Posizione dell'asse esteso, unità: mm
10* @param  poffset_flag  0-Nessuno scostamento, 1-Scostamento nel sistema di coordinate base/pezzo, 2-Scostamento nel sistema di coordinate utensile
11* @param  offset_pos_p  Valore di scostamento della posa
12* @param  joint_pos_t  Posizioni dei giunti del punto target, unità: deg
13* @param  desc_pos_t   Posa cartesiana del punto target
14* @param  ttool  Indice del sistema di coordinate utensile, intervallo [1~15]
15* @param  tuser  Indice del sistema di coordinate pezzo/utente, intervallo [1~15]
16* @param  tvel  Percentuale di velocità, intervallo [0~100]
17* @param  tacc  Percentuale di accelerazione, intervallo [0~100], attualmente non disponibile
18* @param  epos_t  Posizione dell'asse esteso, unità: mm
19* @param  toffset_flag  0-Nessuno scostamento, 1-Scostamento nel sistema di coordinate base/pezzo, 2-Scostamento nel sistema di coordinate utensile
20* @param  offset_pos_t  Valore di scostamento della posa
21* @param  ovl  Fattore di scala velocità [0~100] / Velocità fisica (mm/s)
22* @param  blendR [-1.0]-Blocca fino al completamento del movimento (bloccante), [0~1000.0]-Raggio di transizione (non bloccante), unità: mm
23* @param  oacc Fattore di scala accelerazione [0-100] / Accelerazione fisica (mm/s²)
24* @param  velAccParamMode Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) e accelerazione (mm/s²)
25* @return  Codice di errore
26*/
27public int MoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, double oacc, int velAccParamMode)

4.13. Movimento circolare nello spazio cartesiano (calcolo cinematico inverso automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento circolare nello spazio cartesiano (calcolo cinematico inverso automatico)
 3* @param [in] desc_pos_p  Posa cartesiana del punto di percorso
 4* @param [in] ptool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 5* @param [in] puser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 6* @param [in] pvel  Percentuale di velocità, intervallo [0~100]
 7* @param [in] pacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param [in] epos_p  Posizione dell'asse esteso, unità mm
 9* @param [in] poffset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
10* @param [in] offset_pos_p  Quantità di offset della posa
11* @param [in] desc_pos_t  Posa cartesiana del punto target
12* @param [in] ttool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
13* @param [in] tuser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
14* @param [in] tvel  Percentuale di velocità, intervallo [0~100]
15* @param [in] tacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
16* @param [in] epos_t  Posizione dell'asse esteso, unità mm
17* @param [in] toffset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
18* @param [in] offset_pos_t  Quantità di offset della posa
19* @param [in] ovl  Fattore di scala della velocità, intervallo [0~100]
20* @param [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
21* @param [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
22* @return  Codice di errore
23*/
24int MoveC(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int config)

4.14. Movimento circolare nello spazio cartesiano (aggiunto parametro velAccParamMode per modalità parametri velocità/accelerazione)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento circolare nello spazio cartesiano (aggiunto parametro velAccParamMode per modalità parametri velocità/accelerazione)
 3* @param  [in] joint_pos_p  Posizione giunto del punto di percorso, unità deg
 4* @param  [in] desc_pos_p  Posa cartesiana del punto di percorso
 5* @param  [in] ptool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 6* @param  [in] puser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 7* @param  [in] pvel  Percentuale di velocità, intervallo [0~100]
 8* @param  [in] pacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param  [in] epos_p  Posizione dell'asse esteso, unità mm
10* @param  [in] poffset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
11* @param  [in] offset_pos_p  Quantità di offset della posa
12* @param  [in] joint_pos_t  Posizione giunto del punto target, unità deg
13* @param  [in] desc_pos_t  Posa cartesiana del punto target
14* @param  [in] ttool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
15* @param  [in] tuser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
16* @param  [in] tvel  Percentuale di velocità, intervallo [0~100]
17* @param  [in] tacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
18* @param  [in] epos_t  Posizione dell'asse esteso, unità mm
19* @param  [in] toffset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
20* @param  [in] offset_pos_t  Quantità di offset della posa
21* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
22* @param  [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
23* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
24* @return  Codice di errore
25*/
26public int MoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int velAccParamMode)

4.15. Movimento circolare nello spazio cartesiano (funzione sovraccaricata 1, non richiede posizione giunto in input)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento circolare nello spazio cartesiano (funzione sovraccaricata 1, non richiede posizione giunto in input)
 3* @param  [in] desc_pos_p  Posa cartesiana del punto di percorso
 4* @param  [in] ptool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 5* @param  [in] puser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 6* @param  [in] pvel  Percentuale di velocità, intervallo [0~100]
 7* @param  [in] pacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param  [in] epos_p  Posizione dell'asse esteso, unità mm
 9* @param  [in] poffset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
10* @param  [in] offset_pos_p  Quantità di offset della posa
11* @param  [in] desc_pos_t  Posa cartesiana del punto target
12* @param  [in] ttool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
13* @param  [in] tuser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
14* @param  [in] tvel  Percentuale di velocità, intervallo [0~100]
15* @param  [in] tacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
16* @param  [in] epos_t  Posizione dell'asse esteso, unità mm
17* @param  [in] toffset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
18* @param  [in] offset_pos_t  Quantità di offset della posa
19* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
20* @param  [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
21* @param  [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
22* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
23* @return  Codice di errore
24*/
25public int MoveC(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int config, int velAccParamMode)

4.16. Movimento circolare completo nello spazio cartesiano

Cambiato nella versione Java: SDK-v1.0.6-3.8.3

 1/**
 2* @brief  Movimento Circolare Completo nello Spazio Cartesiano
 3* @param  joint_pos_p  Posizioni dei giunti del punto di percorso 1, unità: deg
 4* @param  desc_pos_p   Posa cartesiana del punto di percorso 1
 5* @param  ptool  Indice del sistema di coordinate utensile, intervallo [1~15]
 6* @param  puser  Indice del sistema di coordinate pezzo/utente, intervallo [1~15]
 7* @param  pvel  Percentuale di velocità, intervallo [0~100]
 8* @param  pacc  Percentuale di accelerazione, intervallo [0~100], attualmente non disponibile
 9* @param  epos_p  Posizione dell'asse esteso, unità: mm
10* @param  joint_pos_t  Posizioni dei giunti del punto di percorso 2, unità: deg
11* @param  desc_pos_t   Posa cartesiana del punto di percorso 2
12* @param  ttool  Indice del sistema di coordinate utensile, intervallo [1~15]
13* @param  tuser  Indice del sistema di coordinate pezzo/utente, intervallo [1~15]
14* @param  tvel  Percentuale di velocità, intervallo [0~100]
15* @param  tacc  Percentuale di accelerazione, intervallo [0~100], attualmente non disponibile
16* @param  epos_t  Posizione dell'asse esteso, unità: mm
17* @param  ovl  Fattore di scala velocità [0~100] / Velocità fisica (mm/s)
18* @param  offset_flag  0-Nessuno scostamento, 1-Scostamento nel sistema di coordinate base/pezzo, 2-Scostamento nel sistema di coordinate utensile
19* @param  offset_pos  Valore di scostamento della posa
20* @param  oacc Fattore di scala accelerazione [0-100] / Accelerazione fisica (mm/s²)
21* @param  blendR -1: Bloccante; 0~1000: Raggio di transizione
22* @param  velAccParamMode Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) e accelerazione (mm/s²)
23* @return  Codice di errore
24*/
25public int Circle(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR, int velAccParamMode)

4.17. Movimento circolare completo nello spazio cartesiano (calcolo cinematico inverso automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2 * @brief  Movimento circolare completo nello spazio cartesiano (calcolo cinematico inverso automatico)
 3 * @param  [in] desc_pos_p  Posa cartesiana del punto di percorso 1
 4 * @param  [in] ptool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5 * @param  [in] puser  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6 * @param  [in] pvel  Percentuale di velocità, intervallo [0~100]
 7 * @param  [in] pacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8 * @param  [in] epos_p  Posizione dell'asse esteso, unità mm
 9 * @param  [in] desc_pos_t  Posa cartesiana del punto di percorso 2
10 * @param  [in] ttool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
11 * @param  [in] tuser  Numero del sistema di coordinate del pezzo, intervallo [0~14]
12 * @param  [in] tvel  Percentuale di velocità, intervallo [0~100]
13 * @param  [in] tacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
14 * @param  [in] epos_t  Posizione dell'asse esteso, unità mm
15 * @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
16 * @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
17 * @param  [in] offset_pos  Quantità di offset della posa
18 * @param  [in] oacc  Percentuale di accelerazione
19 * @param  [in] blendR -1: Bloccante; 0~1000: Raggio di smoothing
20 * @param  [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
21 * @return  Codice di errore
22 */
23int Circle(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR,int config)

4.18. Movimento circolare completo nello spazio cartesiano (aggiunto parametro velAccParamMode per modalità parametri velocità/accelerazione)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento circolare completo nello spazio cartesiano (aggiunto parametro velAccParamMode per modalità parametri velocità/accelerazione)
 3* @param  [in] joint_pos_p  Posizione giunto del punto di percorso 1, unità deg
 4* @param  [in] desc_pos_p  Posa cartesiana del punto di percorso 1
 5* @param  [in] ptool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
 6* @param  [in] puser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
 7* @param  [in] pvel  Percentuale di velocità, intervallo [0~100]
 8* @param  [in] pacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param  [in] epos_p  Posizione dell'asse esteso, unità mm
10* @param  [in] joint_pos_t  Posizione giunto del punto di percorso 2, unità deg
11* @param  [in] desc_pos_t  Posa cartesiana del punto di percorso 2
12* @param  [in] ttool  Numero del sistema di coordinate dello strumento, intervallo [1~15]
13* @param  [in] tuser  Numero del sistema di coordinate del pezzo, intervallo [1~15]
14* @param  [in] tvel  Percentuale di velocità, intervallo [0~100]
15* @param  [in] tacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
16* @param  [in] epos_t  Posizione dell'asse esteso, unità mm
17* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
18* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
19* @param  [in] offset_pos  Quantità di offset della posa
20* @param  [in] oacc  Percentuale di accelerazione
21* @param  [in] blendR -1: Bloccante; 0~1000: Raggio di smoothing
22* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
23* @return  Codice di errore
24*/
25public int Circle(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR, int velAccParamMode)

4.19. Movimento circolare completo nello spazio cartesiano (funzione sovraccaricata 1, non richiede posizione giunto in input)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento circolare completo nello spazio cartesiano (funzione sovraccaricata 1, non richiede posizione giunto in input)
 3* @param  [in] desc_pos_p  Posa cartesiana del punto di percorso 1
 4* @param  [in] ptool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5* @param  [in] puser  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6* @param  [in] pvel  Percentuale di velocità, intervallo [0~100]
 7* @param  [in] pacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param  [in] epos_p  Posizione dell'asse esteso, unità mm
 9* @param  [in] desc_pos_t  Posa cartesiana del punto di percorso 2
10* @param  [in] ttool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
11* @param  [in] tuser  Numero del sistema di coordinate del pezzo, intervallo [0~14]
12* @param  [in] tvel  Percentuale di velocità, intervallo [0~100]
13* @param  [in] tacc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
14* @param  [in] epos_t  Posizione dell'asse esteso, unità mm
15* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
16* @param  [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
17* @param  [in] offset_pos  Quantità di offset della posa
18* @param  [in] oacc  Percentuale di accelerazione
19* @param  [in] blendR -1: Bloccante; 0~1000: Raggio di smoothing
20* @param  [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
21* @param  [in] velAccParamMode  Modalità parametri velocità/accelerazione; 0-Percentuale; 1-Velocità fisica (mm/s) accelerazione (mm/s2)
22* @return  Codice di errore
23*/
24public int Circle(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR, int config, int velAccParamMode)

4.20. Movimento punto a punto nello spazio cartesiano

 1/**
 2* @brief Movimento punto a punto nello spazio cartesiano
 3* @param [in] desc_pos  Posa cartesiana target o incremento di posa
 4* @param [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5* @param [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6* @param [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param [in] ovl  Fattore di scala della velocità, intervallo [0~100]
 9* @param [in] blendT [-1.0]-Movimento fino alla posizione (bloccante), [0~500.0]-Tempo di smoothing (non bloccante), unità ms
10* @param [in] config  Configurazione dello spazio dei giunti, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Calcolo di riferimento a una specifica configurazione dello spazio dei giunti, predefinito -1
11* @return Codice di errore
12*/
13int MoveCart(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendT, int config);

4.21. Esempio di codice per le istruzioni di movimento di base del robot

 1public static int TestMove(Robot robot)
 2{
 3    int rtn=-1;
 4    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 5    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 6    JointPos j3=new JointPos(-29.777, -84.536, 109.275, -114.075, -86.655, 74.257);
 7    JointPos j4=new JointPos(-31.154, -95.317, 94.276, -88.079, -89.740, 74.256);
 8    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 9    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
10    DescPose desc_pos3=new DescPose(-487.434, 154.362, 308.576, 176.600, 0.268, -14.061);
11    DescPose desc_pos4=new DescPose(-443.165, 147.881, 480.951, 179.511, -0.775, -15.409);
12    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
13    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
14    int tool = 0;
15    int user = 0;
16    double vel = 100.0;
17    double acc = 100.0;
18    double ovl = 100.0;
19    double oacc = 100.0;
20    double blendT = 0.0;
21    double blendR = 0.0;
22    int flag = 0;
23    int search = 0;
24    int blendMode = 0;
25    int velAccMode = 0;
26    robot.SetSpeed(20);
27    rtn = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
28    System.out.printf("movej errcode:%d\n", rtn);
29    rtn = robot.MoveL(j2, desc_pos2, tool, user, vel, acc, ovl, blendR, blendMode, epos, search, flag, offset_pos, oacc, velAccMode,0,10);
30    System.out.printf("movel errcode:%d\n", rtn);
31    rtn = robot.MoveC(j3, desc_pos3, tool, user, vel, acc, epos, flag, offset_pos, j4, desc_pos4, tool, user, vel, acc, epos, flag, offset_pos, ovl, blendR, oacc, velAccMode);
32    System.out.printf("movec errcode:%d\n", rtn);
33    rtn = robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
34    System.out.printf("movej errcode:%d\n", rtn);
35    rtn = robot.Circle(j3, desc_pos3, tool, user, vel, acc, epos, j1, desc_pos1, tool, user, vel, acc, epos, ovl, flag, offset_pos, oacc, -1, velAccMode);
36    System.out.printf("circle errcode:%d\n", rtn);
37    rtn = robot.MoveCart(desc_pos4, tool, user, vel, acc, ovl, blendT, -1);
38    System.out.printf("MoveCart errcode:%d\n", rtn);
39    rtn = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
40    System.out.printf("movej errcode:%d\n", rtn);
41    rtn = robot.MoveL(desc_pos2, tool, user, vel, acc, ovl, blendR, blendMode, epos, search, flag, offset_pos, -1, velAccMode,0,10);
42    System.out.printf("movel errcode:%d\n", rtn);
43    rtn = robot.MoveC(desc_pos3, tool, user, vel, acc, epos, flag, offset_pos, desc_pos4, tool, user, vel, acc, epos, flag, offset_pos, ovl, blendR, -1, velAccMode);
44    System.out.printf("movec errcode:%d\n", rtn);
45    rtn = robot.MoveJ(j2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
46    System.out.printf("movej errcode:%d\n", rtn);
47    rtn = robot.Circle(desc_pos3, tool, user, vel, acc, epos, desc_pos1, tool, user, vel, acc, epos, ovl, flag, offset_pos, oacc, blendR, -1, velAccMode);
48    System.out.printf("circle errcode:%d\n", rtn);
49    return 0;
50}

4.22. Movimento a spirale nello spazio cartesiano

 1/**
 2* @brief Movimento a spirale nello spazio cartesiano
 3* @param [in] joint_pos  Posizione giunto target, unità deg
 4* @param [in] desc_pos  Posa cartesiana target
 5* @param [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 6* @param [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 7* @param [in] vel  Percentuale di velocità, intervallo [0~100]
 8* @param [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param [in] epos  Posizione dell'asse esteso, unità mm
10* @param [in] ovl  Fattore di scala della velocità, intervallo [0~100]
11* @param [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
12* @param [in] offset_pos  Quantità di offset della posa
13* @param [in] spiral_param  Parametri della spirale
14* @return Codice di errore
15*/
16int NewSpiral(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, ExaxisPos epos, double ovl, int offset_flag, DescPose offset_pos, SpiralParam spiral_param);

4.23. Movimento a spirale nello spazio cartesiano (calcolo cinematico inverso automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Movimento a spirale nello spazio cartesiano (calcolo cinematico inverso automatico)
 3* @param [in] desc_pos  Posa cartesiana target
 4* @param [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5* @param [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6* @param [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param [in] epos  Posizione dell'asse esteso, unità mm
 9* @param [in] ovl  Fattore di scala della velocità, intervallo [0~100]
10* @param [in] offset_flag  0-Nessun offset, 1-Offset nel sistema di coordinate base/del pezzo, 2-Offset nel sistema di coordinate dello strumento
11* @param [in] offset_pos  Quantità di offset della posa
12* @param [in] spiral_param  Parametri della spirale
13* @param [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
14* @return Codice di errore
15*/
16int NewSpiral(DescPose desc_pos, int tool, int user, double vel, double acc, ExaxisPos epos, double ovl, int offset_flag, DescPose offset_pos, SpiralParam spiral_param,int config)

4.24. Esempio di codice per il movimento a spirale

 1public static int TestSpiral(Robot robot)
 2{
 3    int rtn=-1;
 4    JointPos j=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 5    DescPose desc_pos=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 6    DescPose offset_pos1=new DescPose(50, 0, 0, -30, 0, 0);
 7    DescPose offset_pos2=new DescPose(50, 0, 0, -5, 0, 0);
 8    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
 9    SpiralParam sp=new SpiralParam(1,5.0,50.0,10.0,10.0,0);
10
11    int tool = 0;
12    int user = 0;
13    double vel = 100.0;
14    double acc = 100.0;
15    double ovl = 100.0;
16    double blendT = 0.0;
17    int flag = 2;
18
19    rtn = robot.MoveJ(j, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos1);
20    System.out.println("movej errcode:"+ rtn);
21
22    rtn = robot.NewSpiral(desc_pos, tool, user, vel, acc, epos, ovl, flag, offset_pos2, sp,-1);
23    System.out.println("newspiral errcode:"+ rtn);
24
25    return 0;
26}

4.25. Avvio Movimento Servo

1/**
2* @brief Avvia il movimento servo, utilizzato con i comandi ServoJ e ServoCart
3* @param comType Tipo di invio comando; 0-xmlrpc; 1-UDP (corrisponde alla porta 20007 del robot)
4* @return Codice di errore
5*/
6public int ServoMoveStart (int comType)

4.26. Fine Movimento Servo

1/**
2* @brief Termina il movimento servo, utilizzato con i comandi ServoJ e ServoCart
3* @param comType Tipo di invio comando; 0-xmlrpc; 1-UDP (corrisponde alla porta 20007 del robot)
4* @return Codice di errore
5*/
6public int ServoMoveEnd (int comType)

4.27. Movimento in Modalità Servo nello Spazio dei Giunti

Cambiato nella versione Java: SDK-v1.0.6-3.8.3

 1/**
 2* @brief Movimento in modalità servo nello spazio dei giunti
 3* @param joint_pos Posizione giunto target, unità deg
 4* @param axisPos Posizione assi esterni, unità mm
 5* @param acc Percentuale di accelerazione, intervallo [0~100], temporaneamente non aperta, default 0
 6* @param vel Percentuale di velocità, intervallo [0~100], temporaneamente non aperta, default 0
 7* @param cmdT Periodo di invio comando, unità s, intervallo consigliato [0.001~0.0016]
 8* @param filterT Tempo di filtro, unità s, temporaneamente non aperto, default 0
 9* @param gain Amplificatore proporzionale per la posizione target, temporaneamente non aperto, default 0
10* @param id ID comando ServoJ, default 0
11* @param comType Tipo di invio comando; 0-xmlrpc; 1-UDP (corrisponde alla porta 20007 del robot)
12* @return Codice di errore
13*/
14public int ServoJ(JointPos joint_pos, ExaxisPos axisPos, float acc, float vel, float cmdT, float filterT, float gain, int id, int comType)

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

 1public static int TestServoJ(Robot robot)
 2{
 3    robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 4        System.out.println("\n[Risposta UDP ricevuta dal robot]");
 5        System.out.println("srcType: " + srcType);
 6        System.out.println("count: " + count);
 7        System.out.println("cmdID: " + cmdID);
 8        System.out.println("dataLen: " + dataLen);
 9        System.out.println("contenuto: " + content);
10        return 0;
11    });
12    int rtn=-1;
13
14    JointPos j=new JointPos(0, 0, 0, 0, 0, 0);
15    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
16
17    double vel = 0.0;
18    double acc = 0.0;
19    double cmdT = 0.016;
20    double filterT = 0.0;
21    double gain = 0.0;
22    int flag = 0;
23    int count = 300;
24    double dt = 0.1;
25    int cmdID = 0;
26    int comType = 1;
27    int ret = robot.GetActualJointPosDegree(j);
28    if (ret == 0)
29    {
30        robot.ServoMoveStart(comType);
31        count = 300;
32        while (count>0)
33        {
34            robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID, comType);
35            j.J1 += dt;
36            j.J2 += dt;
37            j.J4 += dt;
38            j.J5 += dt;
39            j.J6 += dt;
40            epos.axis1 += dt;
41            count -= 1;
42            robot.Sleep(10);
43        }
44        robot.ServoMoveEnd(comType);
45
46        robot.Sleep(1000);
47        robot.ServoMoveStart(comType);
48        count = 300;
49        while (count>0)
50        {
51            robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID, comType);
52            j.J1 -= dt;
53            j.J2 -= dt;
54            j.J4 -= dt;
55            j.J5 -= dt;
56            j.J6 -= dt;
57            epos.axis1 -= dt;
58            count -= 1;
59            robot.Sleep(10);
60        }
61        robot.ServoMoveEnd(comType);
62    }
63    else
64    {
65        System.out.println("GetActualJointPosDegree errcode:"+ ret);
66    }
67}

4.29. Esempio di programma per il movimento in modalità servo nello spazio dei giunti

 1public static void TestServoJ()
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true,20,500);//Imposta numero di tentativi di riconnessione, intervallo
 5    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 6    int rtn = robot.RPC("192.168.58.2");
 7    if(rtn == 0)
 8    {
 9        System.out.println("connessione rpc successo");
10    }
11    else
12    {
13        System.out.println("connessione rpc fallita");
14        return ;
15    }
16    JointPos j5 = new JointPos();
17    ExaxisPos ePos=new ExaxisPos();
18    int ret = robot.GetActualJointPosDegree(j5);
19    if (ret == 0)
20    {
21        int count = 200;
22        while (count > 0)
23        {
24            robot.ServoJ(j5, ePos,100, 100, 0.008, 0, 0);
25            j5.J1 += 0.2;//Incrementa la posizione del giunto 1
26            count -= 1;
27            robot.WaitMs((int)(8));
28        }
29    }
30}

4.30. Avvio Controllo di Coppia dei Giunti

1/**
2* @brief Avvia il controllo di coppia dei giunti
3* @param comType Tipo di invio comando; 0-xmlrpc; 1-UDP (corrisponde alla porta 20007 del robot)
4* @return Codice di errore
5*/
6public int ServoJTStart (int comType)

4.31. Controllo di Coppia dei Giunti

 1/**
 2* @brief Controllo di coppia dei giunti
 3* @param torque Coppia giunti j1~j6, unità Nm
 4* @param interval Periodo del comando, unità s, intervallo [0.001~0.008]
 5* @param checkFlag Strategia di rilevamento 0-nessuna limitazione; 1-limitazione potenza; 2-limitazione velocità; 3-limitazione simultanea potenza e velocità
 6* @param jPowerLimit Limite massimo potenza giunto (W)
 7* @param jVelLimit Velocità massima giunto (°/s)
 8* @param comType Tipo di invio comando; 0-xmlrpc; 1-UDP (corrisponde alla porta 20007 del robot)
 9* @return Codice di errore
10*/
11public int ServoJT(double[] torque, double interval, int checkFlag, double[] jPowerLimit, double[] jVelLimit, int comType)

4.32. Fine Controllo di Coppia dei Giunti

1/**
2* @brief Termina il controllo di coppia dei giunti
3* @param comType Tipo di invio comando; 0-xmlrpc; 1-UDP (corrisponde alla porta 20007 del robot)
4* @return Codice di errore
5*/
6public int ServoJTEnd (int comType)

4.33. Esempio di programma per il movimento in modalità servo nello spazio dei giunti

 1public static int TestServoJT(Robot robot)
 2{
 3
 4    robot.DragTeachSwitch(1);
 5    List<Number> joint_toq=new ArrayList<>();
 6    joint_toq=robot.GetJointTorques(1);
 7
 8    int count = 100;
 9    robot.ServoJTStart(); //   #inizio servoJT
10    int error = 0;
11    while (count > 0)
12    {
13        error = robot.ServoJT(torques, 0.001);
14        count = count - 1;
15        robot.Sleep(1);
16    }
17    error = robot.ServoJTEnd();
18    robot.DragTeachSwitch(0);
19
20    robot.CloseRPC();
21    return 0;
22}

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

 1public static void ServoJTWithSafety(Robot robot)
 2{
 3    robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 4        System.out.println("\n[Risposta UDP ricevuta dal robot]");
 5        System.out.println("srcType: " + srcType);
 6        System.out.println("count: " + count);
 7        System.out.println("cmdID: " + cmdID);
 8        System.out.println("dataLen: " + dataLen);
 9        System.out.println("contenuto: " + content);
10        return 0;
11    });
12    while (true) {
13        robot.ResetAllError();
14        robot.Sleep(500);
15        List<Number> torques;
16        torques=robot.GetJointTorques(1);
17        robot.ServoJTStart(1); //   #avvio servoJT
18        ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
19        robot.DragTeachSwitch(1);
20        int checkFlag = 3;//-1,3
21        double[] jPowerLimit = { 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 };
22        double[] jVelLimit = { 50, 50, 50, 50, 50, 50};//180.1,-1
23        int count = 800000;
24        int error = 0;
25        int comType = 1;
26
27        double[] tor=new double[]{(double)torques.get(1),(double)torques.get(2),(double)torques.get(3),(double)torques.get(4),(double)torques.get(5),(double)torques.get(6)};
28
29        while (true) {
30            tor[0] = 0.08;//  #Aumenta coppia asse 1 di 0,01 Nm ogni volta, 100 movimenti
31            error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit, comType);  //# Movimento in modalità servo nello spazio dei giunti
32            System.out.printf("ServoJT rtn is %d\n", error);
33            count = count - 1;
34            robot.Sleep(1);
35            pkg = robot.GetRobotRealTimeState();
36            System.out.printf("maincode %d, subcode %d\n", pkg.main_code, pkg.sub_code);
37            if (pkg.jt_cur_pos[0] > 30)
38                break;
39        }
40
41        tor = new double[]{(double) torques.get(1), (double) torques.get(2), (double) torques.get(3), (double) torques.get(4), (double) torques.get(5), (double) torques.get(6)};
42        while (true) {
43            tor[0] = -0.08;//  #Riduce coppia asse 1 di 0,01 Nm ogni volta, 100 movimenti
44            error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit, 1);  //# Movimento in modalità servo nello spazio dei giunti
45            System.out.printf("ServoJT rtn is %d\n", error);
46            count = count - 1;
47            robot.Sleep(1);
48            pkg = robot.GetRobotRealTimeState();
49            System.out.printf("maincode %d, subcode %d\n", pkg.main_code, pkg.sub_code);
50            if (pkg.jt_cur_pos[0] < 0)
51                break;
52        }
53
54        robot.DragTeachSwitch(0);
55
56        error = robot.ServoJTEnd(1);  //#Fine movimento servo
57    }
58}

4.35. Esempio di codice per il controllo coppia giunti con protezione sovravelocità

 1public static void ServoJTWithSafety(Robot robot)
 2{
 3    robot.ResetAllError();
 4    robot.Sleep(500);
 5    List<Number> torques;
 6    torques=robot.GetJointTorques(1);
 7    robot.ServoJTStart(); //   #inizio servoJT
 8    ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
 9    robot.DragTeachSwitch(1);
10    int checkFlag = 3;//-1,3
11    //double[] jPowerLimit = {1.0,1.0,1.0,1.0,1.0,1.0};//5001
12    double[] jPowerLimit = { 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 };
13    double[] jVelLimit = { 50, 50, 50, 50, 50, 50};//180.1,-1
14    int count = 800000;
15    int error = 0;
16    double[] tor=new double[]{(double)torques.get(1),(double)torques.get(2),(double)torques.get(3),(double)torques.get(4),(double)torques.get(5),(double)torques.get(6)};
17    while (count > 0)
18    {
19        tor[2] = tor[2]+0.01;//  #incrementa di 0.01NM l'asse 1 ogni volta, movimento per 100 volte
20        error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit);  //# movimento in modalità servo nello spazio dei giunti
21        System.out.printf("ServoJT rtn è %d\n", error);
22        count = count - 1;
23        robot.Sleep(1);
24        pkg=robot.GetRobotRealTimeState();
25        System.out.printf("codice principale %d, sottocodice %d\n", pkg.main_code, pkg.sub_code);
26    }
27    robot.DragTeachSwitch(0);
28    error = robot.ServoJTEnd();  //#fine movimento servo
29}

4.36. Movimento in Modalità Servo Spazio Cartesiano

 1/**
 2* @brief Movimento in modalità servo spazio cartesiano
 3* @param mode 0-Movimento assoluto (sistema coordinate base), 1-Movimento incrementale (sistema coordinate base), 2-Movimento incrementale (sistema coordinate utensile)
 4* @param desc_pose Posa cartesiana target o incremento di posa
 5* @param exaxis Posizione asse esteso
 6* @param pos_gain Coefficiente proporzionalità incremento posa, effettivo solo nel movimento incrementale, intervallo [0~1]
 7* @param acc Percentuale accelerazione, intervallo [0~100], temporaneamente non disponibile, predefinito 0
 8* @param vel Percentuale velocità, intervallo [0~100], temporaneamente non disponibile, predefinito 0
 9* @param cmdT Periodo trasmissione comando, unità s, intervallo consigliato [0.001~0.016]
10* @param filterT Tempo filtro, unità s, temporaneamente non disponibile, predefinito 0
11* @param gain Amplificatore proporzionale posizione target, temporaneamente non disponibile, predefinito 0
12* @return Codice errore
13*/
14public int ServoCart(int mode, DescPose desc_pose, ExaxisPos exaxis, double[] pos_gain, double acc, double vel, double cmdT, double filterT, double gain)

4.37. Esempio Codice Movimento in Modalità Servo Spazio Cartesiano

 1public static void TestServoCart1(Robot robot)
 2{
 3    DescPose desc_pos_dt = new DescPose(83.00800, 50.525000 , 29.246 , 179.629 , -7.138 , -166.975 );
 4    ExaxisPos exaxis = new ExaxisPos( 100.0, 0.0, 0.0, 0.0 );
 5    double[] pos_gain = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
 6    int mode = 0;
 7    double vel = 0.0;
 8    double acc = 0.0;
 9    double cmdT = 0.001;
10    double filterT = 0.0;
11    double gain = 0.0;
12    int flag = 0;
13    int count = 5000;
14    robot.SetSpeed(20);
15    while (count>0)
16    {
17        int rtn = robot.ServoCart(mode, desc_pos_dt, exaxis, pos_gain, acc, vel, cmdT, filterT, gain);
18        System.out.printf("ServoCart rtn is %d\n", rtn);
19        count -= 1;
20        desc_pos_dt.tran.x += 0.01;
21        exaxis.axis1 += 0.01;
22    }
23    robot.CloseRPC();
24}

4.38. Inizio movimento spline

1/**
2* @brief  Inizio movimento spline
3* @return  Codice di errore
4*/
5int SplineStart();

4.39. Movimento PTP (Punto a Punto) nello spazio dei giunti

 1/**
 2* @brief  Movimento spline nello spazio dei giunti
 3* @param  [in] joint_pos  Posizione giunto target, unità deg
 4* @param  [in] desc_pos  Posa cartesiana target
 5* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 6* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 7* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 8* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
10* @return  Codice di errore
11*/
12int SplinePTP(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl);

4.40. Movimento spline nello spazio dei giunti (calcolo cinematico diretto automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento spline nello spazio dei giunti (calcolo cinematico diretto automatico)
 3* @param  [in] joint_pos  Posizione giunto target, unità deg
 4* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
 9* @return  Codice di errore
10*/
11int SplinePTP(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl)

4.41. Fine movimento spline

1/**
2* @brief  Fine movimento spline
3* @return  Codice di errore
4*/
5int SplineEnd();

4.42. Esempio di codice per il movimento spline

 1public static int TestSpline(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5    JointPos j3=new JointPos(-61.954, -84.409, 108.153, -116.316, -91.283, 74.260);
 6    JointPos j4=new JointPos(-89.575, -80.276, 102.713, -116.302, -91.284, 74.267);
 7    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
 8    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
 9
10    int tool = 0;
11    int user = 0;
12    double vel = 100.0;
13    double acc = 100.0;
14    double ovl = 100.0;
15    double blendT = -1.0;
16    int flag = 0;
17
18    int err1 = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
19    System.out.println("movej errcode:"+ err1);
20    robot.SplineStart();
21    robot.SplinePTP(j1, tool, user, vel, acc, ovl);
22    robot.SplinePTP(j2, tool, user, vel, acc, ovl);
23    robot.SplinePTP(j3, tool, user, vel, acc, ovl);
24    robot.SplinePTP(j4, tool, user, vel, acc, ovl);
25    robot.SplineEnd();
26    return 0;
27}

4.43. Inizio nuovo movimento spline

1/**
2* @brief Inizio nuovo movimento spline
3* @param [in] type   0-Transizione circolare, 1-I punti dati sono punti di percorso
4* @param [in] averageTime  Tempo medio di transizione globale (ms) (10 ~ ), predefinito 2000
5* @return Codice di errore
6*/
7int NewSplineStart(int type, int averageTime);

4.44. Punto di comando spline

 1/**
 2* @brief Aggiunge un punto di comando per il movimento spline
 3* @param [in] joint_pos  Posizione giunto target, unità deg
 4* @param [in] desc_pos  Posa cartesiana target
 5* @param [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 6* @param [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 7* @param [in] vel  Percentuale di velocità, intervallo [0~100]
 8* @param [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 9* @param [in] ovl  Fattore di scala della velocità, intervallo [0~100]
10* @param [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
11* @param [in] lastFlag Indica se è l'ultimo punto, 0-No, 1-Sì
12* @return Codice di errore
13*/
14int NewSplinePoint(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int lastFlag);

4.45. Punto di comando spline (calcolo cinematico inverso automatico)

Nuovo nella versione Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Punto di comando spline (calcolo cinematico inverso automatico)
 3* @param  [in] desc_pos  Posa cartesiana target
 4* @param  [in] tool  Numero del sistema di coordinate dello strumento, intervallo [0~14]
 5* @param  [in] user  Numero del sistema di coordinate del pezzo, intervallo [0~14]
 6* @param  [in] vel  Percentuale di velocità, intervallo [0~100]
 7* @param  [in] acc  Percentuale di accelerazione, intervallo [0~100], non ancora disponibile
 8* @param  [in] ovl  Fattore di scala della velocità, intervallo [0~100]
 9* @param  [in] blendR [-1.0]-Movimento fino alla posizione (bloccante), [0~1000.0]-Raggio di smoothing (non bloccante), unità mm
10* @param  [in] lastFlag Indica se è l'ultimo punto, 0-No, 1-Sì
11* @param  [in] config  Configurazione dello spazio dei giunti per la soluzione inversa, [-1]-Calcolo di riferimento alla posizione attuale dei giunti, [0~7]-Soluzione basata su una specifica configurazione dello spazio dei giunti
12* @return  Codice di errore
13*/
14int NewSplinePoint(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int lastFlag,int config)

4.46. Fine nuovo movimento spline

1/**
2* @brief Fine nuovo movimento spline
3* @return Codice di errore
4*/
5int NewSplineEnd();

4.47. Esempio di codice per il nuovo movimento spline

 1public static int TestNewSpline(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 5    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 6    DescPose desc_pos3=new DescPose(-327.622, 402.230, 320.402, -178.067, 2.127, -46.207);
 7    DescPose desc_pos4=new DescPose(-104.066, 544.321, 327.023, -177.715, 3.371, -73.818);
 8    DescPose desc_pos5=new DescPose(-33.421, 732.572, 275.103, -177.907, 2.709, -79.482);
 9    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
10    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
11
12
13    int tool = 0;
14    int user = 0;
15    double vel = 100.0;
16    double acc = 100.0;
17    double ovl = 100.0;
18    double blendT = -1.0;
19    int flag = 0;
20
21
22    int err1 = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
23    System.out.println("movej errcode:"+ err1);
24    robot.NewSplineStart(1, 2000);
25    robot.NewSplinePoint(desc_pos1, tool, user, vel, acc, ovl, -1, 0,-1);
26    robot.NewSplinePoint(desc_pos2, tool, user, vel, acc, ovl, -1, 0,-1);
27    robot.NewSplinePoint(desc_pos3, tool, user, vel, acc, ovl, -1, 0,-1);
28    robot.NewSplinePoint(desc_pos4, tool, user, vel, acc, ovl, -1, 0,-1);
29    robot.NewSplinePoint(desc_pos5, tool, user, vel, acc, ovl, -1, 0,-1);
30    robot.NewSplineEnd();
31    return 0;
32}

4.48. Interruzione movimento

1/**
2* @brief Interruzione movimento
3* @return  Codice di errore
4*/
5int StopMotion();

4.49. Pausa movimento

1/**
2* @brief Pausa movimento
3* @return Codice di errore
4*/
5int PauseMotion();

4.50. Ripresa movimento

1/**
2* @brief Ripresa movimento
3* @return Codice di errore
4*/
5int ResumeMotion();

4.51. Esempio di codice per pausa, ripresa, interruzione movimento

 1public static int TestPause(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j5=new JointPos(-95.228, -54.621, 73.691, -112.245, -91.280, 74.268);
 5    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 6    DescPose desc_pos5=new DescPose(-33.421, 732.572, 275.103, -177.907, 2.709, -79.482);
 7    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
 8    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
 9
10    int tool = 0;
11    int user = 0;
12    double vel = 100.0;
13    double acc = 100.0;
14    double ovl = 100.0;
15    double blendT = -1.0;
16    int flag = 0;
17
18    robot.SetSpeed(20);
19    int rtn=-1;
20    rtn = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
21    rtn = robot.MoveJ(j5, desc_pos5, tool, user, vel, acc, ovl, epos, 1, flag, offset_pos);
22    robot.Sleep(1000);
23    robot.PauseMotion();
24
25    robot.Sleep(1000);
26    robot.ResumeMotion();
27
28    robot.Sleep(1000);
29    robot.StopMotion();
30
31    robot.Sleep(1000);
32
33    return 0;
34}

4.52. Inizio offset globale dei punti

1/**
2* @brief  Inizio offset globale dei punti
3* @param  [in]  flag  0-Offset nel sistema di coordinate base o del pezzo, 2-Offset nel sistema di coordinate dello strumento
4* @param  [in]  offset_pos  Quantità di offset della posa
5* @return  Codice di errore
6*/
7int PointsOffsetEnable(int flag, DescPose offset_pos);

4.53. Fine offset globale dei punti

1/**
2* @brief  Fine offset globale dei punti
3* @return  Codice di errore
4*/
5int PointsOffsetDisable();

4.54. Esempio di codice per l’offset dei punti

 1public static int TestOffset(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
10    DescPose offset_pos1=new DescPose(0, 0, 50, 0, 0, 0);
11    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
12
13    int tool = 0;
14    int user = 0;
15    double vel = 100.0;
16    double acc = 100.0;
17    double ovl = 100.0;
18    double blendT = -1.0;
19    int flag = 0;
20
21    robot.SetSpeed(20);
22
23    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
24    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
25    robot.Sleep(1000);
26    robot.PointsOffsetEnable(0, offset_pos1);
27    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
28    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
29    robot.PointsOffsetDisable();
30
31    return 0;
32}

4.55. Inizio acquisizione in volo tramite AO del cabinet di controllo

1/**
2* @brief Inizio acquisizione in volo tramite AO del cabinet di controllo
3* @param [in] AONum Numero AO del cabinet di controllo
4* @param [in] maxTCPSpeed Valore massimo velocità TCP [1-5000mm/s], predefinito 1000
5* @param [in] maxAOPercent Percentuale AO corrispondente al valore massimo velocità TCP, predefinito 100%
6* @param [in] zeroZoneCmp Valore di compensazione zona morta percentuale AO, intero, predefinito 20%, intervallo [0-100]
7* @return Codice di errore
8*/
9int MoveAOStart(int AONum, int maxTCPSpeed, int maxAOPercent, int zeroZoneCmp);

4.56. Arresto acquisizione in volo tramite AO del cabinet di controllo

1/**
2* @brief Arresto acquisizione in volo tramite AO del cabinet di controllo
3* @return Codice di errore
4*/
5int MoveAOStop();

4.57. Inizio acquisizione in volo tramite AO dell’utensile

1/**
2* @brief Inizio acquisizione in volo tramite AO dell'utensile
3* @param [in] AONum Numero AO dell'utensile
4* @param [in] maxTCPSpeed Valore massimo velocità TCP [1-5000mm/s], predefinito 1000
5* @param [in] maxAOPercent Percentuale AO corrispondente al valore massimo velocità TCP, predefinito 100%
6* @param [in] zeroZoneCmp Valore di compensazione zona morta percentuale AO, intero, predefinito 20%, intervallo [0-100]
7* @return Codice di errore
8*/
9int MoveToolAOStart(int AONum, int maxTCPSpeed, int maxAOPercent, int zeroZoneCmp);

4.58. Arresto acquisizione in volo tramite AO dell’utensile

1/**
2* @brief Arresto acquisizione in volo tramite AO dell'utensile
3* @return Codice di errore
4*/
5int MoveToolAOStop();

4.59. Esempio di codice per l’acquisizione in volo tramite AO

 1public static int TestMoveAO(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
10    DescPose offset_pos1=new DescPose(0, 0, 50, 0, 0, 0);
11    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
12
13    int tool = 0;
14    int user = 0;
15    double vel = 20.0;
16    double acc = 20.0;
17    double ovl = 100.0;
18    double blendT = -1.0;
19    int flag = 0;
20
21    robot.SetSpeed(20);
22
23    robot.MoveAOStart(0, 100, 100, 20);
24    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
25    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
26    robot.MoveAOStop();
27
28    robot.Sleep(1000);
29
30    robot.MoveToolAOStart(0, 100, 100, 20);
31    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
32    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
33    robot.MoveToolAOStop();
34
35    return 0;
36}

4.60. Inizio filtraggio FIR per movimento Ptp

Cambiato nella versione Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Inizio filtraggio FIR per movimento Ptp
3* @param [in] maxAcc Valore massimo di accelerazione (deg/s2)
4* @param [in] maxJek Valore massimo uniforme di strappo del giunto (deg/s3)
5* @return Codice di errore
6*/
7int PtpFIRPlanningStart(double maxAcc,double maxJek);

4.61. Fine filtraggio FIR per movimento Ptp

1/**
2* @brief Fine filtraggio FIR per movimento Ptp
3* @return Codice di errore
4*/
5int PtpFIRPlanningEnd();

4.62. Inizio filtraggio FIR per movimento LIN, ARC

1/**
2* @brief Inizio filtraggio FIR per movimento LIN, ARC
3* @param [in] maxAccLin Valore massimo di accelerazione lineare (mm/s2)
4* @param [in] maxAccDeg Valore massimo di accelerazione angolare (deg/s2)
5* @param [in] maxJerkLin Valore massimo di strappo lineare (mm/s3)
6* @param [in] maxJerkDeg Valore massimo di strappo angolare (deg/s3)
7* @return Codice di errore
8*/
9int LinArcFIRPlanningStart(double maxAccLin, double maxAccDeg, double maxJerkLin, double maxJerkDeg);

4.63. Fine filtraggio FIR per movimento LIN, ARC

1/**
2* @brief Fine filtraggio FIR per movimento LIN, ARC
3* @return Codice di errore
4*/
5int LinArcFIRPlanningEnd();

4.64. Esempio di codice per il filtraggio FIR

 1public static int TestFIR(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos midjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5    JointPos endjointPos=new JointPos(-29.777, -84.536, 109.275, -114.075, -86.655, 74.257);
 6
 7    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 8    DescPose middescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 9    DescPose enddescPose=new DescPose(-487.434, 154.362, 308.576, 176.600, 0.268, -14.061);
10
11    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
12    DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
13
14    int rtn = robot.PtpFIRPlanningStart(1000, 1000);
15    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
16    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
17    robot.PtpFIRPlanningEnd();
18
19    robot.LinArcFIRPlanningStart(1000, 1000, 1000, 1000);
20    robot.MoveL(startjointPos, startdescPose, 0, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 1, 1);
21    robot.MoveC(midjointPos, middescPose, 0, 0, 100, 100, exaxisPos, 0, offdese, endjointPos, enddescPose, 0, 0, 100, 100, exaxisPos, 0, offdese, 100, -1);
22    robot.LinArcFIRPlanningEnd();
23    return 0;
24}

4.65. Attivazione smoothing accelerazione

Nuovo nella versione Java: SDK-v1.0.4-3.8.1

1/**
2 * @brief Attivazione smoothing accelerazione
3 * @param [in] saveFlag Indica se salvare dopo lo spegnimento
4 * @return  Codice di errore
5 */
6public int AccSmoothStart(boolean saveFlag)

4.66. Disattivazione smoothing accelerazione

Nuovo nella versione Java: SDK-v1.0.4-3.8.1

1/**
2 * @brief Disattivazione smoothing accelerazione
3 * @param [in] saveFlag Indica se salvare dopo lo spegnimento
4 * @return  Codice di errore
5 */
6public int AccSmoothEnd(boolean saveFlag)

4.67. Esempio di codice per lo smoothing dell’accelerazione

 1public static int TestAccSmooth(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos endjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose enddescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese=new DescPose(0,0,0,0,0,0);
11    int rtn = robot.AccSmoothStart(false);
12    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
14    rtn = robot.AccSmoothEnd(false);
15
16    robot.CloseRPC();
17    return 0;
18}

4.68. Attivazione velocità orientamento specificata

1/**
2 * @brief Attivazione velocità orientamento specificata
3 * @param [in] ratio Percentuale velocità orientamento [0-300]
4 * @return  Codice di errore
5 */
6int AngularSpeedStart(int ratio)

4.69. Disattivazione velocità orientamento specificata

1/**
2 * @brief Disattivazione velocità orientamento specificata
3 * @return  Codice di errore
4 */
5int AngularSpeedEnd();

4.70. Esempio di codice per la velocità orientamento specificata del robot

 1public static int TestAngularSpeed(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos endjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose enddescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
11    int rtn = robot.AngularSpeedStart(50);
12    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
14    rtn = robot.AngularSpeedEnd();
15
16    return 0;
17}

4.71. Inizio protezione configurazioni singolari

1/**
2* @brief  Inizio protezione configurazioni singolari
3* @param  [in]  protectMode Modalità protezione singolare, 0: Modalità giunto; 1-Modalità cartesiana
4* @param  [in]  minShoulderPos Intervallo di regolazione singolarità spalla (mm), predefinito 100
5* @param  [in]  minElbowPos Intervallo di regolazione singolarità gomito (mm), predefinito 50
6* @param  [in]  minWristPos Intervallo di regolazione singolarità polso (°), predefinito 10
7* @return  Codice di errore
8*/
9int SingularAvoidStart(int protectMode, double minShoulderPos, double minElbowPos, double minWristPos);

4.72. Fine protezione configurazioni singolari

1/**
2* @brief  Fine protezione configurazioni singolari
3* @return  Codice di errore
4*/
5int SingularAvoidEnd();

4.73. Esempio di codice per la protezione configurazioni singolari del robot

 1public static int TestAngularSpeed(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos endjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose enddescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
11    int rtn = robot.AngularSpeedStart(50);
12    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
14    rtn = robot.AngularSpeedEnd();
15
16    return 0;
17}

4.74. Svuota coda istruzioni movimento

1/**
2* @brief Svuota coda istruzioni movimento
3* @return Codice di errore
4*/
5public int MotionQueueClear()

4.75. Movimento verso punto di inizio linea di intersezione

 1/**
 2* @brief Movimento verso punto di inizio linea di intersezione
 3* @param [in] mainPoint Pose cartesiane dei 6 punti insegnati del tubo principale
 4* @param [in] mainExaxisPos Posizioni assi estesi dei 6 punti insegnati del tubo principale
 5* @param [in] piecePoint Pose cartesiane dei 6 punti insegnati del tubo ausiliario
 6* @param [in] pieceExaxisPos Posizioni assi estesi dei 6 punti insegnati del tubo di giunzione
 7* @param [in] extAxisFlag Indica se attivare l'asse esteso; 0-Disattivato; 1-Attivato
 8* @param [in] exaxisPos Posizione asse esteso del punto di partenza
 9* @param [in] tool Numero del sistema di coordinate dello strumento
10* @param [in] wobj Numero del sistema di coordinate del pezzo
11* @param [in] vel Percentuale di velocità
12* @param [in] acc Percentuale di accelerazione
13* @param [in] ovl Fattore di scala della velocità
14* @param [in] oacc Fattore di scala dell'accelerazione
15* @param [in] moveType Tipo di movimento; 0-PTP; 1-LIN
16* @param [in] moveDirection Direzione del movimento; 0-Senso orario; 1-Senso antiorario
17* @param [in] offset Offset
18* @return Codice di errore
19*/
20public int MoveToIntersectLineStart(DescPose[] mainPoint, ExaxisPos[] mainExaxisPos, DescPose[] piecePoint, ExaxisPos[] pieceExaxisPos, int extAxisFlag, ExaxisPos exaxisPos, int tool, int wobj, double vel, double acc, double ovl, double oacc, int moveType, int moveDirection, DescPose offset);

4.76. Movimento linea di intersezione

 1/**
 2* @brief Movimento linea di intersezione
 3* @param [in] mainPoint Pose cartesiane dei 6 punti insegnati del tubo principale
 4* @param [in] mainExaxisPos Posizioni assi estesi dei 6 punti insegnati del tubo principale
 5* @param [in] piecePoint Pose cartesiane dei 6 punti insegnati del tubo ausiliario
 6* @param [in] pieceExaxisPos Posizioni assi estesi dei 6 punti insegnati del tubo di giunzione
 7* @param [in] extAxisFlag Indica se attivare l'asse esteso; 0-Disattivato; 1-Attivato
 8* @param [in] exaxisPos Posizioni assi estesi del punto di partenza
 9* @param [in] tool Numero del sistema di coordinate dello strumento
10* @param [in] wobj Numero del sistema di coordinate del pezzo
11* @param [in] vel Percentuale di velocità
12* @param [in] acc Percentuale di accelerazione
13* @param [in] ovl Fattore di scala della velocità
14* @param [in] oacc Fattore di scala dell'accelerazione
15* @param [in] moveDirection Direzione del movimento; 0-Senso orario; 1-Senso antiorario
16* @param [in] offset Offset
17* @return Codice di errore
18*/
19public int MoveIntersectLine(DescPose[] mainPoint, ExaxisPos[] mainExaxisPos, DescPose[] piecePoint, ExaxisPos[] pieceExaxisPos, int extAxisFlag, ExaxisPos[] exaxisPos, int tool, int wobj, double vel, double acc, double ovl, double oacc, int moveDirection, DescPose offset);

4.77. Esempio di codice per il movimento linea di intersezione del robot

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

4.78. Movimento Aereo Stazionario

1/**
2* @brief Movimento Aereo Stazionario
3* @return Codice di errore
4*/
5public int MoveStationary()

4.79. Esempio di Codice Movimento Aereo Stazionario

 1public static void test_RecordandReplay(Robot robot)
 2{
 3    int rtn = robot.LaserSensorRecordandReplay(0, 10, 1, 0, 0.1, 1, 1, 10, 100);
 4    System.out.printf("LaserSensorRecordandReplay rtn is %d\n", rtn);
 5    rtn = robot.MoveStationary();
 6    System.out.printf("MoveStationary rtn is %d\n", rtn);
 7    rtn = robot.LaserSensorRecord1(0, 10);
 8    System.out.printf("LaserSensorRecordandReplay rtn is %d\n", rtn);
 9    robot.CloseRPC();
10    robot.Sleep(9999999);
11}

4.80. Avvio Oscillazione a Punto Fisso

1/**
2* @brief Avvia l'oscillazione a punto fisso
3* @param [in] weaveNum Numero di oscillazione [0-7]
4* @param [in] mode 0-Sistema di coordinate utensile; 1-Punto di riferimento
5* @param [in] refPoint Coordinate cartesiane del punto di riferimento [x,y,z,a,b,c]
6* @param [in] weaveTime Tempo di oscillazione [s]
7* @return Codice di errore
8*/
9public int OriginPointWeaveStart(int weaveNum, int mode, DescPose refPoint, double weaveTime)

4.81. Fine Oscillazione a Punto Fisso

1/**
2* @brief Termina l'oscillazione a punto fisso
3* @return Codice di errore
4*/
5public int OriginPointWeaveEnd();

4.82. Esempio di Codice SDK per Oscillazione a Punto Fisso

 1public static int TestOriginPointWeave(Robot robot) {
 2    JointPos j = new JointPos(39.886, -98.580, -124.032, -47.393, 90.000, 40.842);
 3    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 4    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 5
 6    DescPose refPoint = new DescPose(400.021, 300.022, 299.996, 179.997, -0.003, -90.956);
 7    robot.MoveJ(j, 1, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
 8
 9    robot.OriginPointWeaveStart(0, 0, refPoint, 3);
10    robot.MoveStationary();
11    robot.OriginPointWeaveEnd();
12
13    robot.Sleep(2000);
14
15    robot.MoveJ(j, 1, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
16    robot.OriginPointWeaveStart(0, 1, refPoint, 3);
17    robot.MoveStationary();
18    robot.OriginPointWeaveEnd();
19
20    robot.Sleep(1000);
21    return 0;
22}

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

 1public static int TestOriginPointWeave(Robot robot) {
 2    JointPos j = new JointPos(39.886, -98.580, -124.032, -47.393, 90.000, 40.842);
 3    ExaxisPos epos1 = new ExaxisPos(0, 0, 0, 0);
 4    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 5    ExaxisPos epos2 = new ExaxisPos(5, 0, 0, 0);
 6    DescPose refPoint = new DescPose(400.021, 300.022, 299.996, 179.997, -0.003, -90.956);
 7
 8    int rtn = 0;
 9    robot.LaserTrackingSensorConfig("192.168.58.20", 5020);
10    robot.LaserTrackingSensorSamplePeriod(20);
11    robot.LoadPosSensorDriver(101);
12
13    // Carica driver UDP
14    robot.ExtDevLoadUDPDriver();
15
16    // Imposta tempo di completamento del posizionamento per assi di estensione
17    rtn = robot.SetExAxisCmdDoneTime(5000.0);
18    System.out.println("SetExAxisCmdDoneTime rtn is " + rtn);
19    // Abilita assi di estensione 1 e 2
20    rtn = robot.ExtAxisServoOn(1, 1);
21    System.out.println("ExtAxisServoOn axis id 1 rtn is " + rtn);
22    rtn = robot.ExtAxisServoOn(2, 1);
23    System.out.println("ExtAxisServoOn axis id 2 rtn is " + rtn);
24    robot.Sleep(2000);
25
26    // Imposta homing per asse di estensione
27    robot.ExtAxisSetHoming(1, 0, 10, 2);
28    robot.LaserTrackingLaserOnOff(1,0);
29
30
31    // 1---Senza asse di estensione
32    robot.LaserTrackingTrackOnOff(1, 4);
33    robot.Sleep(200);
34    // Avvia oscillazione a punto fisso
35    robot.OriginPointWeaveStart(0, 0, refPoint, 10);
36    robot.MoveStationary();   // Esegui movimento stazionario (supponendo che questo metodo esista)
37    robot.OriginPointWeaveEnd();
38    robot.LaserTrackingTrackOnOff(0, 4);
39
40    robot.Sleep(2000);         // Attendi 2 secondi
41
42    // 2----Con asse di estensione
43    robot.ExtAxisMove(epos1, 100, -1);
44    robot.LaserTrackingTrackOnOff(1, 4);
45    // Avvia oscillazione a punto fisso
46    robot.OriginPointWeaveStart(0, 0, refPoint, 20);
47    robot.ExtAxisMove(epos2, 100, -1);
48    robot.OriginPointWeaveEnd();
49    robot.LaserTrackingTrackOnOff(0, 4);
50
51    robot.Sleep(1000);
52    return 0;
53}

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

 1/**
 2* @brief  Movimento in modo servo velocità nello spazio dei giunti
 3* @param   joint_vel  6 velocità target dei giunti, unità deg/s
 4* @param   exis_vel  4 velocità degli assi esterni, unità deg/s
 5* @param   acc  Percentuale di accelerazione, intervallo [0~100], non ancora aperto, predefinito 0
 6* @param   vel  Percentuale di velocità, intervallo [0~100], non ancora aperto, predefinito 0
 7* @param   cmdT  Periodo del ciclo di comando, unità s, intervallo consigliato [0.001~0.0016]
 8* @param   filterT Tempo di filtro, unità s, non ancora aperto, predefinito 0
 9* @param   gain  Guadagno proporzionale per la posizione target, non ancora aperto, predefinito 0
10* @param   id  ID comando servoJ, predefinito 0
11* @param   comType Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)
12* @return  Codice di errore
13*/
14public int ServoJV(double[] joint_vel, double[] exis_vel, double acc, double vel, double cmdT, double filterT, double gain, int id, int comType)

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

 1public static int ServoJVtest(Robot robot)
 2{
 3    double[] joint_vel = new double[] { 10, 0, 0, 0, 0, 0 };
 4    double[] exis_vel = new double[] { 0, 0, 0, 0 };
 5    double acc = 0.0;
 6    double vel = 0.0;
 7    double cmdT = 0.008;
 8    double filterT = 0.0;
 9    double gain = 0.0;
10    int cnt = 0;
11    while (cnt < 200)
12    {
13        int error = robot.ServoJV(joint_vel, exis_vel, acc, vel, cmdT, filterT, gain);
14        System.out.println("MAIN ServoJV rtn is " + error);
15//            robot.Sleep(10);
16        cnt++;
17    }
18
19    return 0;
20}

4.86. Avvio Controllo MIT Giunti

1/**
2* @brief Avvio controllo MIT giunti
3* @param  comType Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)
4* @return Codice di errore
5*/
6errno_t ServoMITStart(int comType = 0);

4.87. Fine Controllo MIT Giunti

1/**
2* @brief Fine controllo MIT giunti
3* @param  comType Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)
4* @return Codice di errore
5*/
6public int ServoMITEnd(int comType);

4.88. Controllo MIT Giunti

 1/**
 2* @brief Controllo MIT giunti
 3* @param  posGain Guadagni di posizione giunti j1~j6
 4* @param  desPos Posizioni desiderate giunti j1~j6, unità: deg
 5* @param  velGain Guadagni di velocità giunti j1~j6
 6* @param  desVel Velocità desiderate giunti j1~j6, unità: deg/s
 7* @param  torque_ff Coppie feedforward j1~j6, unità: Nm
 8* @param  interval Periodo del ciclo di comando, unità s, intervallo [0.001~0.008]
 9* @param  comType Tipo di comando; 0-xmlrpc; 1-UDP (corrispondente alla porta 20007 del robot)
10* @return Codice di errore
11*/
12public int ServoMIT(double[] posGain, double[] desPos, double[] velGain, double[] desVel, double[] torque_ff, double interval, int comType)

4.89. Esempio di Codice Controllo MIT Giunti del Robot

 1public static int ServoMITtest(Robot robot)
 2{
 3        robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 4        System.out.println("\n[Received UDP reply from robot]");
 5        System.out.println("srcType: " + srcType);
 6        System.out.println("count: " + count);
 7        System.out.println("cmdID: " + cmdID);
 8        System.out.println("dataLen: " + dataLen);
 9        System.out.println("content: " + content);
10        return 0;
11    });
12    while (true)
13    {
14        robot.ResetAllError();
15        robot.Sleep(500);
16
17        double[] posGain = new double[] { 0, 0, 0, 0, 0, 0 };
18        double[] desPos = new double[] { 0, 0, 0, 0, 0, 0 };
19        double[] velGain = new double[] { 0, 0, 0, 0, 0, 0 };
20        double[] desVel = new double[] { 0, 0, 0, 0, 0, 0 };
21
22        List<Number> joint_toq=new ArrayList<>();
23        joint_toq=robot.GetJointTorques(1);
24        double[] torques=new double[]{(double)joint_toq.get(1),(double)joint_toq.get(2),(double)joint_toq.get(3),(double)joint_toq.get(4),(double)joint_toq.get(5),(double)joint_toq.get(6)};
25        System.out.println("111111");
26
27        robot.ServoMITStart(0);
28        System.out.println("ServoMITStart");
29
30        ROBOT_STATE_PKG pkg = robot.GetRobotRealTimeState();
31        robot.DragTeachSwitch(1);
32        System.out.println("DragTeachSwitch");
33
34        double intev = 0.008;
35        int error = 0;
36
37        while (true)
38        {
39            torques[5] = 0.03;
40            System.out.println("ServoMIT call");
41            error = robot.ServoMIT(posGain, desPos, velGain, desVel, torques, intev, 0);
42
43            System.out.println("ServoMIT111111 rtn is " + error);
44            robot.Sleep(1);
45
46            pkg = robot.GetRobotRealTimeState();
47            System.out.println("pkg.jt_cur_pos[5]:" + pkg.jt_cur_pos[5]);
48            if (pkg.jt_cur_pos[5] > 30)
49            {
50                break;
51            }
52        }
53
54        while (true)
55        {
56            torques[5] = -0.03;
57            error = robot.ServoMIT(posGain, desPos, velGain, desVel, torques, intev, 0);
58
59            System.out.println("ServoJT222222 rtn is " + error);
60            robot.Sleep(1);
61
62            pkg = robot.GetRobotRealTimeState();
63            System.out.println("pkg.jt_cur_pos[5]:" + pkg.jt_cur_pos[5]);
64            if (pkg.jt_cur_pos[5] < 0)
65            {
66                break;
67            }
68        }
69
70        robot.DragTeachSwitch(0);
71        error = robot.ServoMITEnd(0);
72    }
73    // return 0;
74}