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}