4. Movimento do Robô
4.1. Movimento Jog
1/**
2* @brief Movimento Jog
3* @param [in] refType 0-jog por junta, 2-jog no sistema de coordenadas base, 4-jog no sistema de coordenadas da ferramenta, 8-jog no sistema de coordenadas da peça
4* @param [in] nb 1-junta1 (ou eixo X), 2-junta2 (ou eixo Y), 3-junta3 (ou eixo Z), 4-junta4 (ou rotação em torno do eixo X), 5-junta5 (ou rotação em torno do eixo Y), 6-junta6 (ou rotação em torno do eixo Z)
5* @param [in] dir 0-direção negativa, 1-direção positiva
6* @param [in] vel Percentagem de velocidade, [0~100]
7* @param [in] acc Percentagem de aceleração, [0~100]
8* @param [in] max_dis Ângulo máximo por movimento jog, em [°] ou distância, em [mm]
9* @return Código de erro
10*/
11int StartJOG(int refType, int nb, int dir, double vel, double acc, double max_dis);
4.2. Parada Desacelerada do Movimento Jog
1/**
2* @brief Parada desacelerada do movimento jog
3* @param [in] stopType 1-parada de jog por junta, 3-parada de jog no sistema de coordenadas base, 5-parada de jog no sistema de coordenadas da ferramenta, 9-parada de jog no sistema de coordenadas da peça
4* @return Código de erro
5*/
6int StopJOG(int stopType);
4.3. Parada Imediata do Movimento Jog
1/**
2* @brief Parada imediata do movimento jog
3* @return Código de erro
4*/
5int ImmStopJOG();
4.4. Exemplo de Código de Controle de Movimento Jog do Robô
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 no Espaço Articular
1/**
2* @brief Movimento no espaço articular
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
6* @param [in] user Número da coordenada da peça, intervalo [0~14]
7* @param [in] vel Percentagem de velocidade, intervalo [0~100]
8* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] epos Posição do eixo estendido, em mm
11* @param [in] blendT [-1.0]-movimento até o final (bloqueante), [0~500.0]-tempo de suavização (não bloqueante), em ms
12* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
13* @param [in] offset_pos Deslocamento de pose
14* @return Código de erro
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 no Espaço Articular (com cálculo automático de cinemática direta)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento no espaço articular (com cálculo automático de cinemática direta)
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
5* @param [in] user Número da coordenada da peça, intervalo [0~14]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
9* @param [in] epos Posição do eixo estendido, em mm
10* @param [in] blendT [-1.0]-movimento até o final (bloqueante), [0~500.0]-tempo de suavização (não bloqueante), em ms
11* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
12* @param [in] offset_pos Deslocamento de pose
13* @return Código de erro
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 Linear no Espaço Cartesiano
Alterado na versão Java: SDK-v1.0.5-3.8.2
1/**
2* @brief Movimento linear no espaço cartesiano (sobrecarga 1 com blendMode)
3* @param joint_pos Posição articular alvo, em graus
4* @param desc_pos Pose cartesiana alvo
5* @param tool Número da coordenada da ferramenta, intervalo [1~15]
6* @param user Número da coordenada da peça, intervalo [1~15]
7* @param vel Percentagem de velocidade, intervalo [0~100]
8* @param acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param ovl Fator de escala de velocidade [0~100]/velocidade física (mm/s)
10* @param blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
11* @param blendMode Modo de transição; 0-transição tangente; 1-transição de canto
12* @param epos Posição do eixo estendido, em mm
13* @param search 0-sem busca de posição do arame, 1-com busca de posição do arame
14* @param offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
15* @param offset_pos Deslocamento de pose
16* @param oacc Fator de escala de aceleração [0-100]/aceleração física (mm/s2)
17* @param velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
18* @param overSpeedStrategy Estratégia de tratamento de excesso de velocidade, 1-padrão; 2-parar com erro em caso de excesso de velocidade; 3-redução adaptativa de velocidade, padrão 0
19* @param speedPercent Percentagem limite de redução de velocidade permitida [0-100], padrão 10%
20* @return Código de erro
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 Linear no Espaço Cartesiano (com cálculo automático de cinemática inversa)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento linear no espaço cartesiano (com cálculo automático de cinemática inversa)
3* @param [in] desc_pos Pose cartesiana alvo
4* @param [in] tool Número da coordenada da ferramenta, intervalo [1~15]
5* @param [in] user Número da coordenada da peça, intervalo [1~15]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
9* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
10* @param [in] blendMode Modo de transição; 0-transição tangente; 1-transição de canto
11* @param [in] epos Posição do eixo estendido, em mm
12* @param [in] search 0-sem busca de posição do arame, 1-com busca de posição do arame
13* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
14* @param [in] offset_pos Deslocamento de pose
15* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
16* @param [in] overSpeedStrategy Estratégia de tratamento de excesso de velocidade, 1-padrão; 2-parar com erro em caso de excesso de velocidade; 3-redução adaptativa de velocidade, padrão 0
17* @param [in] speedPercent Percentagem limite de redução de velocidade permitida [0-100], padrão 10%
18* @return Código de erro
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 Linear no Espaço Cartesiano (com parâmetro de modo de parâmetro de velocidade/aceleração velAccParamMode)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento linear no espaço cartesiano (com parâmetro de modo de parâmetro de velocidade/aceleração velAccParamMode)
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [1~15]
6* @param [in] user Número da coordenada da peça, intervalo [1~15]
7* @param [in] vel Percentagem de velocidade, intervalo [0~100]
8* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
11* @param [in] epos Posição do eixo estendido, em mm
12* @param [in] search 0-sem busca de posição do arame, 1-com busca de posição do arame
13* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
14* @param [in] offset_pos Deslocamento de pose
15* @param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
16* @param [in] overSpeedStrategy Estratégia de tratamento de excesso de velocidade, 1-padrão; 2-parar com erro em caso de excesso de velocidade; 3-redução adaptativa de velocidade, padrão 0
17* @param [in] speedPercent Percentagem limite de redução de velocidade permitida [0-100], padrão 10%
18* @return Código de erro
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 Linear no Espaço Cartesiano (sobrecarga 1 com blendMode)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento linear no espaço cartesiano (sobrecarga 1 com blendMode)
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [1~15]
6* @param [in] user Número da coordenada da peça, intervalo [1~15]
7* @param [in] vel Percentagem de velocidade, intervalo [0~100]
8* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
11* @param [in] blendMode Modo de transição; 0-transição tangente; 1-transição de canto
12* @param [in] epos Posição do eixo estendido, em mm
13* @param [in] search 0-sem busca de posição do arame, 1-com busca de posição do arame
14* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
15* @param [in] offset_pos Deslocamento de pose
16* @param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
17* @param [in] overSpeedStrategy Estratégia de tratamento de excesso de velocidade, 1-padrão; 2-parar com erro em caso de excesso de velocidade; 3-redução adaptativa de velocidade, padrão 0
18* @param [in] speedPercent Percentagem limite de redução de velocidade permitida [0-100], padrão 10%
19* @return Código de erro
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 Linear no Espaço Cartesiano (sobrecarga 2 sem necessidade de posição articular)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento linear no espaço cartesiano (sobrecarga 2 sem necessidade de posição articular)
3* @param [in] desc_pos Pose cartesiana alvo
4* @param [in] tool Número da coordenada da ferramenta, intervalo [1~15]
5* @param [in] user Número da coordenada da peça, intervalo [1~15]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
9* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
10* @param [in] blendMode Modo de transição; 0-transição tangente; 1-transição de canto
11* @param [in] epos Posição do eixo estendido, em mm
12* @param [in] search 0-sem busca de posição do arame, 1-com busca de posição do arame
13* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
14* @param [in] offset_pos Deslocamento de pose
15* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
16* @param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
17* @param [in] overSpeedStrategy Estratégia de tratamento de excesso de velocidade, 1-padrão; 2-parar com erro em caso de excesso de velocidade; 3-redução adaptativa de velocidade, padrão 0
18* @param [in] speedPercent Percentagem limite de redução de velocidade permitida [0-100], padrão 10%
19* @return Código de erro
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 Circular no Espaço Cartesiano
1/**
2* @brief Movimento circular no espaço cartesiano
3* @param joint_pos_p Posição articular do ponto de passagem, em graus
4* @param desc_pos_p Pose cartesiana do ponto de passagem
5* @param ptool Número da coordenada da ferramenta, intervalo [1~15]
6* @param puser Número da coordenada da peça, intervalo [1~15]
7* @param pvel Percentagem de velocidade, intervalo [0~100]
8* @param pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param epos_p Posição do eixo estendido, em mm
10* @param poffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
11* @param offset_pos_p Deslocamento de pose
12* @param joint_pos_t Posição articular do ponto alvo, em graus
13* @param desc_pos_t Pose cartesiana do ponto alvo
14* @param ttool Número da coordenada da ferramenta, intervalo [1~15]
15* @param tuser Número da coordenada da peça, intervalo [1~15]
16* @param tvel Percentagem de velocidade, intervalo [0~100]
17* @param tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
18* @param epos_t Posição do eixo estendido, em mm
19* @param toffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
20* @param offset_pos_t Deslocamento de pose
21* @param ovl Fator de escala de velocidade [0~100]/velocidade física (mm/s)
22* @param blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
23* @param oacc Fator de escala de aceleração [0-100]/aceleração física (mm/s2)
24* @param velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
25* @return Código de erro
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 Circular no Espaço Cartesiano (com cálculo automático de cinemática inversa)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento circular no espaço cartesiano (com cálculo automático de cinemática inversa)
3* @param [in] desc_pos_p Pose cartesiana do ponto de passagem
4* @param [in] ptool Número da coordenada da ferramenta, intervalo [1~15]
5* @param [in] puser Número da coordenada da peça, intervalo [1~15]
6* @param [in] pvel Percentagem de velocidade, intervalo [0~100]
7* @param [in] pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] epos_p Posição do eixo estendido, em mm
9* @param [in] poffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
10* @param [in] offset_pos_p Deslocamento de pose
11* @param [in] desc_pos_t Pose cartesiana do ponto alvo
12* @param [in] ttool Número da coordenada da ferramenta, intervalo [1~15]
13* @param [in] tuser Número da coordenada da peça, intervalo [1~15]
14* @param [in] tvel Percentagem de velocidade, intervalo [0~100]
15* @param [in] tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
16* @param [in] epos_t Posição do eixo estendido, em mm
17* @param [in] toffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
18* @param [in] offset_pos_t Deslocamento de pose
19* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
20* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
21* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
22* @return Código de erro
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 Circular no Espaço Cartesiano (com parâmetro de modo de parâmetro de velocidade/aceleração velAccParamMode)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento circular no espaço cartesiano (com parâmetro de modo de parâmetro de velocidade/aceleração velAccParamMode)
3* @param [in] joint_pos_p Posição articular do ponto de passagem, em graus
4* @param [in] desc_pos_p Pose cartesiana do ponto de passagem
5* @param [in] ptool Número da coordenada da ferramenta, intervalo [1~15]
6* @param [in] puser Número da coordenada da peça, intervalo [1~15]
7* @param [in] pvel Percentagem de velocidade, intervalo [0~100]
8* @param [in] pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] epos_p Posição do eixo estendido, em mm
10* @param [in] poffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
11* @param [in] offset_pos_p Deslocamento de pose
12* @param [in] joint_pos_t Posição articular do ponto alvo, em graus
13* @param [in] desc_pos_t Pose cartesiana do ponto alvo
14* @param [in] ttool Número da coordenada da ferramenta, intervalo [1~15]
15* @param [in] tuser Número da coordenada da peça, intervalo [1~15]
16* @param [in] tvel Percentagem de velocidade, intervalo [0~100]
17* @param [in] tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
18* @param [in] epos_t Posição do eixo estendido, em mm
19* @param [in] toffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
20* @param [in] offset_pos_t Deslocamento de pose
21* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
22* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
23* @param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
24* @return Código de erro
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 Circular no Espaço Cartesiano (sobrecarga 1 sem necessidade de posição articular)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento circular no espaço cartesiano (sobrecarga 1 sem necessidade de posição articular)
3* @param [in] desc_pos_p Pose cartesiana do ponto de passagem
4* @param [in] ptool Número da coordenada da ferramenta, intervalo [1~15]
5* @param [in] puser Número da coordenada da peça, intervalo [1~15]
6* @param [in] pvel Percentagem de velocidade, intervalo [0~100]
7* @param [in] pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] epos_p Posição do eixo estendido, em mm
9* @param [in] poffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
10* @param [in] offset_pos_p Deslocamento de pose
11* @param [in] desc_pos_t Pose cartesiana do ponto alvo
12* @param [in] ttool Número da coordenada da ferramenta, intervalo [1~15]
13* @param [in] tuser Número da coordenada da peça, intervalo [1~15]
14* @param [in] tvel Percentagem de velocidade, intervalo [0~100]
15* @param [in] tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
16* @param [in] epos_t Posição do eixo estendido, em mm
17* @param [in] toffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
18* @param [in] offset_pos_t Deslocamento de pose
19* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
20* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
21* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
22* @param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
23* @return Código de erro
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 Circular Completo no Espaço Cartesiano
Alterado na versão Java: SDK-v1.0.6-3.8.3
1/**
2*@brief Movimento circular completo no espaço cartesiano
3*@param joint_pos_p Posição articular do ponto de passagem 1, em graus
4*@param desc_pos_p Pose cartesiana do ponto de passagem 1
5*@param ptool Número da coordenada da ferramenta, intervalo [1~15]
6*@param puser Número da coordenada da peça, intervalo [1~15]
7*@param pvel Percentagem de velocidade, intervalo [0~100]
8*@param pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9*@param epos_p Posição do eixo estendido, em mm
10*@param joint_pos_t Posição articular do ponto de passagem 2, em graus
11*@param desc_pos_t Pose cartesiana do ponto de passagem 2
12*@param ttool Número da coordenada da ferramenta, intervalo [1~15]
13*@param tuser Número da coordenada da peça, intervalo [1~15]
14*@param tvel Percentagem de velocidade, intervalo [0~100]
15*@param tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
16*@param epos_t Posição do eixo estendido, em mm
17*@param ovl Fator de escala de velocidade [0~100]/velocidade física (mm/s)
18*@param offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
19*@param offset_pos Deslocamento de pose
20*@param oacc Fator de escala de aceleração [0-100]/aceleração física (mm/s2)
21*@param blendR -1: bloqueante; 0~1000: raio de suavização
22*@param velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
23*@return Código de erro
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 Circular Completo no Espaço Cartesiano (com cálculo automático de cinemática inversa)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2 * @brief Movimento circular completo no espaço cartesiano (com cálculo automático de cinemática inversa)
3 * @param [in] desc_pos_p Pose cartesiana do ponto de passagem 1
4 * @param [in] ptool Número da coordenada da ferramenta, intervalo [0~14]
5 * @param [in] puser Número da coordenada da peça, intervalo [0~14]
6 * @param [in] pvel Percentagem de velocidade, intervalo [0~100]
7 * @param [in] pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8 * @param [in] epos_p Posição do eixo estendido, em mm
9 * @param [in] desc_pos_t Pose cartesiana do ponto de passagem 2
10 * @param [in] ttool Número da coordenada da ferramenta, intervalo [0~14]
11 * @param [in] tuser Número da coordenada da peça, intervalo [0~14]
12 * @param [in] tvel Percentagem de velocidade, intervalo [0~100]
13 * @param [in] tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
14 * @param [in] epos_t Posição do eixo estendido, em mm
15 * @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
16 * @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
17 * @param [in] offset_pos Deslocamento de pose
18 * @param [in] oacc Percentagem de aceleração
19 * @param [in] blendR -1: bloqueante; 0~1000: raio de suavização
20 * @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
21 * @return Código de erro
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 Circular Completo no Espaço Cartesiano (com parâmetro de modo de parâmetro de velocidade/aceleração velAccParamMode)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2*@brief Movimento circular completo no espaço cartesiano (com parâmetro de modo de parâmetro de velocidade/aceleração velAccParamMode)
3*@param [in] joint_pos_p Posição articular do ponto de passagem 1, em graus
4*@param [in] desc_pos_p Pose cartesiana do ponto de passagem 1
5*@param [in] ptool Número da coordenada da ferramenta, intervalo [1~15]
6*@param [in] puser Número da coordenada da peça, intervalo [1~15]
7*@param [in] pvel Percentagem de velocidade, intervalo [0~100]
8*@param [in] pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9*@param [in] epos_p Posição do eixo estendido, em mm
10*@param [in] joint_pos_t Posição articular do ponto de passagem 2, em graus
11*@param [in] desc_pos_t Pose cartesiana do ponto de passagem 2
12*@param [in] ttool Número da coordenada da ferramenta, intervalo [1~15]
13*@param [in] tuser Número da coordenada da peça, intervalo [1~15]
14*@param [in] tvel Percentagem de velocidade, intervalo [0~100]
15*@param [in] tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
16*@param [in] epos_t Posição do eixo estendido, em mm
17*@param [in] ovl Fator de escala de velocidade, intervalo [0~100]
18*@param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
19*@param [in] offset_pos Deslocamento de pose
20*@param [in] oacc Percentagem de aceleração
21*@param [in] blendR -1: bloqueante; 0~1000: raio de suavização
22*@param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
23*@return Código de erro
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 Circular Completo no Espaço Cartesiano (sobrecarga 1 sem necessidade de posição articular)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento circular completo no espaço cartesiano (sobrecarga 1 sem necessidade de posição articular)
3* @param [in] desc_pos_p Pose cartesiana do ponto de passagem 1
4* @param [in] ptool Número da coordenada da ferramenta, intervalo [0~14]
5* @param [in] puser Número da coordenada da peça, intervalo [0~14]
6* @param [in] pvel Percentagem de velocidade, intervalo [0~100]
7* @param [in] pacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] epos_p Posição do eixo estendido, em mm
9* @param [in] desc_pos_t Pose cartesiana do ponto de passagem 2
10* @param [in] ttool Número da coordenada da ferramenta, intervalo [0~14]
11* @param [in] tuser Número da coordenada da peça, intervalo [0~14]
12* @param [in] tvel Percentagem de velocidade, intervalo [0~100]
13* @param [in] tacc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
14* @param [in] epos_t Posição do eixo estendido, em mm
15* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
16* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
17* @param [in] offset_pos Deslocamento de pose
18* @param [in] oacc Percentagem de aceleração
19* @param [in] blendR -1: bloqueante; 0~1000: raio de suavização
20* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
21* @param [in] velAccParamMode Modo de parâmetro de velocidade/aceleração; 0-percentagem; 1-velocidade física (mm/s) aceleração (mm/s2)
22* @return Código de erro
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 Ponto a Ponto no Espaço Cartesiano
1/**
2* @brief Movimento ponto a ponto no espaço cartesiano
3* @param [in] desc_pos Pose cartesiana alvo ou incremento de pose
4* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
5* @param [in] user Número da coordenada da peça, intervalo [0~14]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
9* @param [in] blendT [-1.0]-movimento até o final (bloqueante), [0~500.0]-tempo de suavização (não bloqueante), em ms
10* @param [in] config Configuração do espaço articular, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular, padrão -1
11* @return Código de erro
12*/
13int MoveCart(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendT, int config);
4.21. Exemplo de Código de Instruções Básicas de Movimento do Robô
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 Helicoidal no Espaço Cartesiano
1/**
2* @brief Movimento helicoidal no espaço cartesiano
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
6* @param [in] user Número da coordenada da peça, intervalo [0~14]
7* @param [in] vel Percentagem de velocidade, intervalo [0~100]
8* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] epos Posição do eixo estendido, em mm
10* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
11* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
12* @param [in] offset_pos Deslocamento de pose
13* @return Código de erro
14*/
15int 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 Helicoidal no Espaço Cartesiano (com cálculo automático de cinemática inversa)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento helicoidal no espaço cartesiano (com cálculo automático de cinemática inversa)
3* @param [in] desc_pos Pose cartesiana alvo
4* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
5* @param [in] user Número da coordenada da peça, intervalo [0~14]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] epos Posição do eixo estendido, em mm
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
11* @param [in] offset_pos Deslocamento de pose
12* @param [in] spiral_param Parâmetros da espiral
13* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
14* @return Código de erro
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. Exemplo de Código de Movimento Helicoidal
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. Início do Movimento Servo
1/**
2* @brief Início do movimento servo, para uso com instruções ServoJ e ServoCart
3* @param comType Tipo de envio de instrução; 0-xmlrpc; 1-UDP (porta 20007 do robô)
4* @return Código de erro
5*/
6public int ServoMoveStart(int comType)
4.26. Fim do Movimento Servo
1/**
2* @brief Fim do movimento servo, para uso com instruções ServoJ e ServoCart
3* @param comType Tipo de envio de instrução; 0-xmlrpc; 1-UDP (porta 20007 do robô)
4* @return Código de erro
5*/
6public int ServoMoveEnd(int comType)
4.27. Movimento no Modo Servo no Espaço Articular
Alterado na versão Java: SDK-v1.0.6-3.8.3
1/**
2* @brief Movimento no modo servo no espaço articular
3* @param joint_pos Posição articular alvo, em graus
4* @param axisPos Posição do eixo externo, em mm
5* @param acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível, padrão 0
6* @param vel Percentagem de velocidade, intervalo [0~100], temporariamente não disponível, padrão 0
7* @param cmdT Período de envio de instrução, em s, intervalo recomendado [0.001~0.0016]
8* @param filterT Tempo de filtro, em s, temporariamente não disponível, padrão 0
9* @param gain Amplificador proporcional da posição alvo, temporariamente não disponível, padrão 0
10* @param id ID da instrução ServoJ, padrão 0
11* @param comType Tipo de envio de instrução; 0-xmlrpc; 1-UDP (porta 20007 do robô)
12* @return Código de erro
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. Exemplo de Código SDK para ServoJ, ServoMoveStart, ServoMoveEnd com comunicação UDP
1public static int TestServoJ(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): " + 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. Programa de Exemplo de Movimento no Modo Servo no Espaço Articular
1public static void TestServoJ()
2{
3 Robot robot = new Robot();
4 robot.SetReconnectParam(true, 20, 500); // Define parâmetros de reconexão
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("Conexão RPC bem-sucedida");
10 }
11 else
12 {
13 System.out.println("Falha na conexão RPC");
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; // Aumenta a posição da junta 1
26 count -= 1;
27 robot.WaitMs((int) (8));
28 }
29 }
30}
4.30. Início do Controle de Torque Articular
1/**
2* @brief Início do controle de torque articular
3* @param comType Tipo de envio de instrução; 0-xmlrpc; 1-UDP (porta 20007 do robô)
4* @return Código de erro
5*/
6public int ServoJTStart(int comType)
4.31. Controle de Torque Articular
1/**
2* @brief Controle de torque articular
3* @param torque Torque das juntas j1~j6, em Nm
4* @param interval Período de instrução, em s, intervalo [0.001~0.008]
5* @param checkFlag Estratégia de detecção 0-sem limitação; 1-limitação de potência; 2-limitação de velocidade; 3-limitação simultânea de potência e velocidade
6* @param jPowerLimit Limite máximo de potência da junta (W)
7* @param jVelLimit Velocidade máxima da junta (°/s)
8* @param comType Tipo de envio de instrução; 0-xmlrpc; 1-UDP (porta 20007 do robô)
9* @return Código de erro
10*/
11public int ServoJT(double[] torque, double interval, int checkFlag, double[] jPowerLimit, double[] jVelLimit, int comType)
4.32. Fim do Controle de Torque Articular
1/**
2* @brief Fim do controle de torque articular
3* @param comType Tipo de envio de instrução; 0-xmlrpc; 1-UDP (porta 20007 do robô)
4* @return Código de erro
5*/
6public int ServoJTEnd(int comType)
4.33. Programa de Exemplo de Movimento no Modo Servo no Espaço Articular
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(); // # início do 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. Exemplo de Código SDK para ServoJT, ServoJTStart, ServoJTEnd com comunicação UDP
1public static void ServoJTWithSafety(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 robot.ResetAllError();
14 robot.Sleep(500);
15 List<Number> torques;
16 torques = robot.GetJointTorques(1);
17 robot.ServoJTStart(1); // # início do 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 0.01 Nm no eixo 1 a cada vez, realiza 100 movimentos
31 error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit, comType); // # movimento no modo servo no espaço articular
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; // # aumenta 0.01 Nm no eixo 1 a cada vez, realiza 100 movimentos
44 error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit, 1); // # movimento no modo servo no espaço articular
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); // # fim do movimento servo
57 }
58}
4.35. Exemplo de Código de Controle de Torque Articular com Proteção contra Excesso de Velocidade
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(); // # início do 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; // # aumenta 0.01 Nm no eixo 1 a cada vez, realiza 100 movimentos
20 error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit); // # movimento no modo servo no espaço articular
21 System.out.printf("ServoJT rtn is %d\n", error);
22 count = count - 1;
23 robot.Sleep(1);
24 pkg = robot.GetRobotRealTimeState();
25 System.out.printf("maincode %d, subcode %d\n", pkg.main_code, pkg.sub_code);
26 }
27 robot.DragTeachSwitch(0);
28 error = robot.ServoJTEnd(); // # fim do movimento servo
29}
4.36. Movimento no Modo Servo no Espaço Cartesiano
1/**
2*@brief Movimento no modo servo no espaço cartesiano
3*@param mode 0-movimento absoluto (sistema de coordenadas base), 1-movimento incremental (sistema de coordenadas base), 2-movimento incremental (sistema de coordenadas da ferramenta)
4*@param desc_pose Pose cartesiana alvo ou incremento de pose
5*@param exaxis Posição do eixo estendido
6*@param pos_gain Coeficiente de escala do incremento de pose, ativo apenas em movimento incremental, intervalo [0~1]
7*@param acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível, padrão 0
8*@param vel Percentagem de velocidade, intervalo [0~100], temporariamente não disponível, padrão 0
9*@param cmdT Período de envio de instrução, em s, intervalo recomendado [0.001~0.016]
10*@param filterT Tempo de filtro, em s, temporariamente não disponível, padrão 0
11*@param gain Amplificador proporcional da posição alvo, temporariamente não disponível, padrão 0
12*@return Código de erro
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. Exemplo de Código de Movimento no Modo Servo no Espaço 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. Início do Movimento Spline
1/**
2* @brief Início do movimento spline
3* @return Código de erro
4*/
5int SplineStart();
4.39. Movimento PTP Articular
1/**
2* @brief Movimento spline no espaço articular
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
6* @param [in] user Número da coordenada da peça, intervalo [0~14]
7* @param [in] vel Percentagem de velocidade, intervalo [0~100]
8* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @return Código de erro
11*/
12int SplinePTP(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl);
4.40. Movimento Spline no Espaço Articular (com cálculo automático de cinemática direta)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento spline no espaço articular (com cálculo automático de cinemática direta)
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
5* @param [in] user Número da coordenada da peça, intervalo [0~14]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
9* @return Código de erro
10*/
11int SplinePTP(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl)
4.41. Fim do Movimento Spline
1/**
2* @brief Fim do movimento spline
3* @return Código de erro
4*/
5int SplineEnd();
4.42. Exemplo de Código de 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. Início do Novo Movimento Spline
1/**
2* @brief Início do novo movimento spline
3* @param [in] type 0-transição circular, 1-pontos fornecidos são pontos de caminho
4* @param [in] averageTime Tempo médio global de transição (ms) (10 ~ ), padrão 2000
5* @return Código de erro
6*/
7int NewSplineStart(int type, int averageTime);
4.44. Ponto de Instrução do Novo Spline
1/**
2* @brief Adiciona ponto de instrução de movimento spline
3* @param [in] joint_pos Posição articular alvo, em graus
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
6* @param [in] user Número da coordenada da peça, intervalo [0~14]
7* @param [in] vel Percentagem de velocidade, intervalo [0~100]
8* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
11* @param [in] lastFlag Se é o último ponto, 0-não, 1-sim
12* @return Código de erro
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. Ponto de Instrução do Novo Spline (com cálculo automático de cinemática inversa)
Novo na versão Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Ponto de instrução do novo spline (com cálculo automático de cinemática inversa)
3* @param [in] desc_pos Pose cartesiana alvo
4* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
5* @param [in] user Número da coordenada da peça, intervalo [0~14]
6* @param [in] vel Percentagem de velocidade, intervalo [0~100]
7* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
8* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
9* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
10* @param [in] lastFlag Se é o último ponto, 0-não, 1-sim
11* @param [in] config Configuração do espaço articular para cinemática inversa, [-1]-resolver com base na posição articular atual, [0~7]-resolver com base em uma configuração específica do espaço articular
12* @return Código de erro
13*/
14int NewSplinePoint(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int lastFlag, int config)
4.46. Fim do Novo Movimento Spline
1/**
2* @brief Fim do novo movimento spline
3* @return Código de erro
4*/
5int NewSplineEnd();
4.47. Exemplo de Código do Novo 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 int tool = 0;
13 int user = 0;
14 double vel = 100.0;
15 double acc = 100.0;
16 double ovl = 100.0;
17 double blendT = -1.0;
18 int flag = 0;
19
20 int err1 = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
21 System.out.println("movej errcode:" + err1);
22 robot.NewSplineStart(1, 2000);
23 robot.NewSplinePoint(desc_pos1, tool, user, vel, acc, ovl, -1, 0, -1);
24 robot.NewSplinePoint(desc_pos2, tool, user, vel, acc, ovl, -1, 0, -1);
25 robot.NewSplinePoint(desc_pos3, tool, user, vel, acc, ovl, -1, 0, -1);
26 robot.NewSplinePoint(desc_pos4, tool, user, vel, acc, ovl, -1, 0, -1);
27 robot.NewSplinePoint(desc_pos5, tool, user, vel, acc, ovl, -1, 0, -1);
28 robot.NewSplineEnd();
29 return 0;
30}
4.48. Parar Movimento
1/**
2* @brief Parar movimento
3* @return Código de erro
4*/
5int StopMotion();
4.49. Pausar Movimento
1/**
2* @brief Pausar movimento
3* @return Código de erro
4*/
5int PauseMotion();
4.50. Retomar Movimento
1/**
2* @brief Retomar movimento
3* @return Código de erro
4*/
5int ResumeMotion();
4.51. Exemplo de Código de Pausa, Retomada e Parada de 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. Início do Deslocamento Global de Pontos
1/**
2* @brief Início do deslocamento global de pontos
3* @param [in] flag 0-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
4* @param [in] offset_pos Deslocamento de pose
5* @return Código de erro
6*/
7int PointsOffsetEnable(int flag, DescPose offset_pos);
4.53. Fim do Deslocamento Global de Pontos
1/**
2* @brief Fim do deslocamento global de pontos
3* @return Código de erro
4*/
5int PointsOffsetDisable();
4.54. Exemplo de Código de Deslocamento de Pontos
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. Início da Captura com AO da Caixa de Controle
1/**
2* @brief Início da captura com AO da caixa de controle
3* @param [in] AONum Número da AO da caixa de controle
4* @param [in] maxTCPSpeed Valor máximo da velocidade TCP [1-5000 mm/s], padrão 1000
5* @param [in] maxAOPercent Percentagem de AO correspondente ao valor máximo da velocidade TCP, padrão 100%
6* @param [in] zeroZoneCmp Valor de compensação da zona morta em percentagem de AO, inteiro, padrão 20%, intervalo [0-100]
7* @return Código de erro
8*/
9int MoveAOStart(int AONum, int maxTCPSpeed, int maxAOPercent, int zeroZoneCmp);
4.56. Parada da Captura com AO da Caixa de Controle
1/**
2* @brief Parada da captura com AO da caixa de controle
3* @return Código de erro
4*/
5int MoveAOStop();
4.57. Início da Captura com AO da Extremidade
1/**
2* @brief Início da captura com AO da extremidade
3* @param [in] AONum Número da AO da extremidade
4* @param [in] maxTCPSpeed Valor máximo da velocidade TCP [1-5000 mm/s], padrão 1000
5* @param [in] maxAOPercent Percentagem de AO correspondente ao valor máximo da velocidade TCP, padrão 100%
6* @param [in] zeroZoneCmp Valor de compensação da zona morta em percentagem de AO, inteiro, padrão 20%, intervalo [0-100]
7* @return Código de erro
8*/
9int MoveToolAOStart(int AONum, int maxTCPSpeed, int maxAOPercent, int zeroZoneCmp);
4.58. Parada da Captura com AO da Extremidade
1/**
2* @brief Parada da captura com AO da extremidade
3* @return Código de erro
4*/
5int MoveToolAOStop();
4.59. Exemplo de Código de Captura com 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. Início do Filtro FIR para Movimento Ptp
Alterado na versão Java: SDK-v1.0.5-3.8.2
1/**
2* @brief Início do filtro FIR para movimento Ptp
3* @param [in] maxAcc Valor extremo máximo de aceleração (deg/s2)
4* @param [in] maxJek Valor extremo de jerk uniforme das juntas (deg/s3)
5* @return Código de erro
6*/
7int PtpFIRPlanningStart(double maxAcc, double maxJek);
4.61. Desligar o Filtro FIR para Movimento Ptp
1/**
2* @brief Desligar o filtro FIR para movimento Ptp
3* @return Código de erro
4*/
5int PtpFIRPlanningEnd();
4.62. Início do Filtro FIR para Movimento LIN e ARC
1/**
2* @brief Início do filtro FIR para movimento LIN e ARC
3* @param [in] maxAccLin Valor extremo de aceleração linear (mm/s2)
4* @param [in] maxAccDeg Valor extremo de aceleração angular (deg/s2)
5* @param [in] maxJerkLin Valor extremo de jerk linear (mm/s3)
6* @param [in] maxJerkDeg Valor extremo de jerk angular (deg/s3)
7* @return Código de erro
8*/
9int LinArcFIRPlanningStart(double maxAccLin, double maxAccDeg, double maxJerkLin, double maxJerkDeg);
4.63. Desligar o Filtro FIR para Movimento LIN e ARC
1/**
2* @brief Desligar o filtro FIR para movimento LIN e ARC
3* @return Código de erro
4*/
5int LinArcFIRPlanningEnd();
4.64. Exemplo de Código de Filtro 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. Ativar Suavização de Aceleração
Novo na versão Java: SDK-v1.0.4-3.8.1
1/**
2 * @brief Ativar suavização de aceleração
3 * @param [in] saveFlag Se salvar após desligamento
4 * @return Código de erro
5 */
6public int AccSmoothStart(boolean saveFlag)
4.66. Desativar Suavização de Aceleração
Novo na versão Java: SDK-v1.0.4-3.8.1
1/**
2 * @brief Desativar suavização de aceleração
3 * @param [in] saveFlag Se salvar após desligamento
4 * @return Código de erro
5 */
6public int AccSmoothEnd(boolean saveFlag)
4.67. Exemplo de Código de Suavização de Aceleração
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. Ativar Velocidade de Postura Especificada
1/**
2 * @brief Ativar velocidade de postura especificada
3 * @param [in] ratio Percentagem da velocidade de postura [0-300]
4 * @return Código de erro
5 */
6int AngularSpeedStart(int ratio)
4.69. Desativar Velocidade de Postura Especificada
1/**
2 * @brief Desativar velocidade de postura especificada
3 * @return Código de erro
4 */
5int AngularSpeedEnd();
4.70. Exemplo de Código de Velocidade de Postura Especificada do Robô
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. Iniciar Proteção contra Pose Singular
1/**
2* @brief Iniciar proteção contra pose singular
3* @param [in] protectMode Modo de proteção contra singularidade, 0: modo articular; 1-modo cartesiano
4* @param [in] minShoulderPos Faixa de ajuste da singularidade do ombro (mm), padrão 100
5* @param [in] minElbowPos Faixa de ajuste da singularidade do cotovelo (mm), padrão 50
6* @param [in] minWristPos Faixa de ajuste da singularidade do pulso (°), padrão 10
7* @return Código de erro
8*/
9int SingularAvoidStart(int protectMode, double minShoulderPos, double minElbowPos, double minWristPos);
4.72. Parar Proteção contra Pose Singular
1/**
2* @brief Parar proteção contra pose singular
3* @return Código de erro
4*/
5int SingularAvoidEnd();
4.73. Exemplo de Código de Proteção contra Pose Singular do Robô
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. Limpar Fila de Instruções de Movimento
1/**
2* @brief Limpar fila de instruções de movimento
3* @return Código de erro
4*/
5public int MotionQueueClear()
4.75. Mover para Ponto Inicial da Linha de Interseção
1/**
2* @brief Mover para ponto inicial da linha de interseção
3* @param [in] mainPoint Poses cartesianas dos 6 pontos de ensino do tubo principal
4* @param [in] mainExaxisPos Posições dos eixos estendidos dos 6 pontos de ensino do tubo principal
5* @param [in] piecePoint Poses cartesianas dos 6 pontos de ensino do tubo auxiliar
6* @param [in] pieceExaxisPos Posições dos eixos estendidos dos 6 pontos de ensino do tubo de junção
7* @param [in] extAxisFlag Se habilita o eixo estendido; 0-não habilita; 1-habilita
8* @param [in] exaxisPos Posição do eixo estendido inicial
9* @param [in] tool Número do sistema de coordenadas da ferramenta
10* @param [in] wobj Número do sistema de coordenadas da peça
11* @param [in] vel Percentagem de velocidade
12* @param [in] acc Percentagem de aceleração
13* @param [in] ovl Fator de escala de velocidade
14* @param [in] oacc Fator de escala de aceleração
15* @param [in] moveType Tipo de movimento; 0-PTP; 1-LIN
16* @param [in] moveDirection Direção do movimento; 0-horário; 1-anti-horário
17* @param [in] offset Deslocamento
18* @return Código de erro
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 na Linha de Interseção
1/**
2* @brief Movimento na linha de interseção
3* @param [in] mainPoint Poses cartesianas dos 6 pontos de ensino do tubo principal
4* @param [in] mainExaxisPos Posições dos eixos estendidos dos 6 pontos de ensino do tubo principal
5* @param [in] piecePoint Poses cartesianas dos 6 pontos de ensino do tubo auxiliar
6* @param [in] pieceExaxisPos Posições dos eixos estendidos dos 6 pontos de ensino do tubo de junção
7* @param [in] extAxisFlag Se habilita o eixo estendido; 0-não habilita; 1-habilita
8* @param [in] exaxisPos Posição do eixo estendido inicial
9* @param [in] tool Número do sistema de coordenadas da ferramenta
10* @param [in] wobj Número do sistema de coordenadas da peça
11* @param [in] vel Percentagem de velocidade
12* @param [in] acc Percentagem de aceleração
13* @param [in] ovl Fator de escala de velocidade
14* @param [in] oacc Fator de escala de aceleração
15* @param [in] moveDirection Direção do movimento; 0-horário; 1-anti-horário
16* @param [in] offset Deslocamento
17* @return Código de erro
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. Exemplo de Código de Movimento na Linha de Interseção do Robô
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 is %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 is %d\n", rtn);
50 robot.CloseRPC();
51 return;
52}
4.78. Movimento Estacionário no Local
1/**
2* @brief Movimento estacionário no local
3* @return Código de erro
4*/
5public int MoveStationary()
4.79. Exemplo de Código de Movimento Estacionário no Local
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. Início da Oscilação em Ponto Fixo
1/**
2* @brief Início da oscilação em ponto fixo
3* @param [in] weaveNum Número da oscilação [0-7]
4* @param [in] mode 0-sistema de coordenadas da ferramenta; 1-ponto de referência
5* @param [in] refPoint Coordenadas cartesianas do ponto de referência [x, y, z, a, b, c]
6* @param [in] weaveTime Tempo de oscilação [s]
7* @return Código de erro
8*/
9public int OriginPointWeaveStart(int weaveNum, int mode, DescPose refPoint, double weaveTime)
4.81. Fim da Oscilação em Ponto Fixo
1/**
2* @brief Fim da oscilação em ponto fixo
3* @return Código de erro
4*/
5public int OriginPointWeaveEnd();
4.82. Exemplo de Código SDK de Oscilação em Ponto Fixo
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. Exemplo de Código SDK de Oscilação em Ponto Fixo (incluindo laser e eixo estendido)
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 // Carregar driver UDP
14 robot.ExtDevLoadUDPDriver();
15
16 // Definir tempo de conclusão do comando do eixo externo
17 rtn = robot.SetExAxisCmdDoneTime(5000.0);
18 System.out.println("SetExAxisCmdDoneTime rtn is " + rtn);
19 // Habilitar eixos externos 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 // Definir retorno à origem do eixo externo
27 robot.ExtAxisSetHoming(1, 0, 10, 2);
28 robot.LaserTrackingLaserOnOff(1, 0);
29
30 // 1---sem eixo estendido
31 robot.LaserTrackingTrackOnOff(1, 4);
32 robot.Sleep(200);
33 // Iniciar oscilação em ponto fixo
34 robot.OriginPointWeaveStart(0, 0, refPoint, 10);
35 robot.MoveStationary(); // Executar movimento fixo
36 robot.OriginPointWeaveEnd();
37 robot.LaserTrackingTrackOnOff(0, 4);
38
39 robot.Sleep(2000); // Aguardar 2 segundos
40
41 // 2----com eixo estendido
42 robot.ExtAxisMove(epos1, 100, -1);
43 robot.LaserTrackingTrackOnOff(1, 4);
44 // Iniciar oscilação em ponto fixo
45 robot.OriginPointWeaveStart(0, 0, refPoint, 20);
46 robot.ExtAxisMove(epos2, 100, -1);
47 robot.OriginPointWeaveEnd();
48 robot.LaserTrackingTrackOnOff(0, 4);
49
50 robot.Sleep(1000);
51 return 0;
52}