11. Periféricos do Robô

11.1. Configurar Garra

1/**
2* @brief  Configura a garra
3* @param  [in] config .company   Fabricante da garra, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing
4* @param  [in] config .device   Número do dispositivo, Robotiq(0-2F-85 series), Huiling(0-NK series,1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20)
5* @param  [in] config .softvesion   Número da versão do software, não usado no momento, padrão 0
6* @param  [in] config .bus  Posição do barramento onde o dispositivo está montado, não usado no momento, padrão 0
7* @return  Código de erro
8*/
9int SetGripperConfig(DeviceConfig config);

11.2. Obter Configuração da Garra

1/**
2* @brief  Obtém a configuração da garra
3* @param  [out] config .company   Fabricante da garra, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing
4* @param  [out] config .device   Número do dispositivo, Robotiq(0-2F-85 series), Huiling(0-NK series,1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20)
5* @param  [out] config .softvesion   Número da versão do software, não usado no momento, padrão 0
6* @param  [out] config .bus  Posição do barramento onde o dispositivo está montado, não usado no momento, padrão 0
7* @return  Código de erro
8*/
9int GetGripperConfig(DeviceConfig config);

11.3. Ativar Garra

1/**
2* @brief  Ativa a garra
3* @param  [in] index   Número da garra
4* @param  [in] act  0-reset, 1-ativar
5* @return  Código de erro
6*/
7int ActGripper(int index, int act);

11.4. Controlar Garra

 1/**
 2* @brief  Controla a garra
 3* @param  [in] index   Número da garra
 4* @param  [in] pos   Porcentagem de posição, faixa [0~100]
 5* @param  [in] vel   Porcentagem de velocidade, faixa [0~100]
 6* @param  [in] force   Porcentagem de torque, faixa [0~100]
 7* @param  [in] max_time   Tempo máximo de espera, faixa [0~30000], unidade ms
 8* @param  [in] block  0-bloqueado, 1-não bloqueado
 9* @param  [in] type  Tipo de garra, 0-garra paralela; 1-garra rotativa
10* @param  [in] rotNum  Número de rotações
11* @param  [in] rotVel  Porcentagem de velocidade de rotação [0-100]
12* @param  [in] rotTorque  Porcentagem de torque de rotação [0-100]
13* @return Código de erro
14*/
15int MoveGripper(int index, int pos, int vel, int force, int max_time, int block, int type, double rotNum, int rotVel, int rotTorque);

11.5. Obter Estado de Movimento da Garra

1/**
2* @brief  Obtém o estado de movimento da garra
3* @return List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]: status  0-movimento não concluído, 1-movimento concluído
4*/
5List<Integer> GetGripperMotionDone();

11.6. Obter Estado de Ativação da Garra

1/**
2* @brief  Obtém o estado de ativação da garra
3* @return  List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]: status  bit0~bit15 correspondem aos números das garras 0~15, bit=0 não ativado, bit=1 ativado
4*/
5List<Number> GetGripperActivateStatus()

11.7. Obter Posição da Garra

1/**
2* @brief  Obtém a posição da garra
3* @return  List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]: position   Porcentagem de posição, faixa 0~100%
4*/
5List<Number> GetGripperCurPosition()

11.8. Obter Velocidade da Garra

1/**
2* @brief  Obtém a velocidade da garra
3* @return  List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]: speed   Porcentagem de velocidade, faixa 0~100%
4*/
5List<Number> GetGripperCurSpeed()

11.9. Obter Corrente da Garra

1/**
2* @brief  Obtém a corrente da garra
3* @return  List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]: current   Porcentagem de corrente, faixa 0~100%
4*/
5List<Number> GetGripperCurCurrent()

11.10. Obter Tensão da Garra

1/**
2* @brief  Obtém a tensão da garra
3* @return List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]:voltage   Tensão, unidade 0.1V
4*/
5List<Number> GetGripperVoltage()

11.11. Obter Temperatura da Garra

1/**
2* @brief  Obtém a temperatura da garra
3* @return List[0]: Código de erro; List[1] : fault  0-sem erro, 1-com erro; List[2]:temp   Temperatura, unidade ℃
4*/
5List<Number> GetGripperTemp()

11.12. Calcular Ponto de Pré-Captura - Visão

1/**
2* @brief Calcula o ponto de pré-captura - Visão
3* @param [in] desc_pos   Pose cartesiana do ponto de captura
4* @param [in] zlength   Deslocamento no eixo Z
5* @param [in] zangle    Deslocamento de rotação em torno do eixo Z
6* @param [out] pre_pos  Ponto de pré-captura
7* @return Código de erro
8*/
9int ComputePrePick(DescPose desc_pos, double zlength, double zangle, DescPose pre_pos);

11.13. Calcular Ponto de Retirada - Visão

1/**
2* @brief Calcula o ponto de retirada - Visão
3* @param [in] desc_pos   Pose cartesiana do ponto de captura
4* @param [in] zlength   Deslocamento no eixo Z
5* @param [in] zangle    Deslocamento de rotação em torno do eixo Z
6* @param [out] post_poss  Ponto de retirada
7* @return Código de erro
8*/
9int ComputePostPick(DescPose desc_pos, double zlength, double zangle, DescPose post_pos);

11.14. Exemplo de Código para Operações com a Garra do Robô

 1public static int TestGripper(Robot robot)
 2{
 3    int company = 4;
 4    int device = 0;
 5    int softversion = 0;
 6    int bus = 2;
 7    int index = 2;
 8    int act = 0;
 9    int max_time = 30000;
10    int block = 0;
11
12    int current_pos = 0;
13    int current = 0;
14    int voltage = 0;
15    int temp = 0;
16    int speed = 0;
17
18    DeviceConfig cnn=new DeviceConfig(company,device,softversion,bus);
19    robot.SetGripperConfig(cnn);
20    robot.GetGripperConfig(cnn);
21
22    robot.ActGripper(index, act);
23    robot.Sleep(1000);
24    act = 1;
25    robot.ActGripper(index, act);
26    robot.Sleep(1000);
27
28    robot.MoveGripper(index, 100, 50, 50, max_time, block, 0, 0, 0, 0);
29    robot.Sleep(1000);
30    robot.MoveGripper(index, 0, 50, 0, max_time, block, 0, 0, 0, 0);
31
32    List<Integer> stat=new ArrayList<>();
33    stat=robot.GetGripperMotionDone();
34
35    List<Number> list=new ArrayList<>();
36    list=robot.GetGripperActivateStatus();
37
38    list=robot.GetGripperCurPosition();
39
40    list=robot.GetGripperCurCurrent();
41
42    list=robot.GetGripperVoltage();
43
44    list=robot.GetGripperTemp();
45
46    list=robot.GetGripperCurSpeed();
47
48    int retval = 0;
49    DescPose prepick_pose = new DescPose(){};
50    DescPose postpick_pose = new DescPose(){};
51
52    DescPose p1Desc=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
53    DescPose p2Desc=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
54
55    retval = robot.ComputePrePick(p1Desc, 10, 0, prepick_pose);
56
57    retval = robot.ComputePostPick(p2Desc, -10, 0, postpick_pose);
58    return 0;
59}

11.15. Obter Número de Rotações da Garra Rotativa

1/**
2* @brief  Obtém o número de rotações da garra rotativa
3* @return List[0]: Código de erro List[1]: 0-sem erro, 1-com erro List[2]: Número de rotações
4*/
5List<Number> GetGripperRotNum();

11.16. Obter Porcentagem de Velocidade de Rotação da Garra Rotativa

1/**
2* @brief  Obtém a porcentagem de velocidade de rotação da garra rotativa
3* @return List[0]: Código de erro List[1]: 0-sem erro, 1-com erro List[2]: Porcentagem de velocidade de rotação
4*/
5List<Number> GetGripperRotSpeed();

11.17. Obter Porcentagem de Torque de Rotação da Garra Rotativa

1/**
2* @brief  Obtém a porcentagem de torque de rotação da garra rotativa
3* @return List[0]: Código de erro List[1]: 0-sem erro, 1-com erro List[2]: Porcentagem de torque de rotação
4*/
5List<Number> GetGripperRotTorque();

11.18. Exemplo de Código para Obter Estado da Garra Rotativa

 1public static int TestRotGripperState(Robot robot)
 2{
 3    int fault = 0;
 4    List<Number> rotNum=new ArrayList<>();
 5    List<Number> rotSpeed=new ArrayList<>();
 6    List<Number> rotTorque=new ArrayList<>();
 7
 8    rotNum=robot.GetGripperRotNum();
 9    rotSpeed=robot.GetGripperRotSpeed();
10    rotTorque=robot.GetGripperRotTorque();
11    System.out.println("gripper rot num :"+rotNum.get(2)+ ", gripper rotSpeed :"+rotSpeed.get(2)+",gripper rotTorque : "+rotTorque.get(2));
12
13    return 0;
14}

11.19. Iniciar/Parar Esteira Transportadora

1/**
2* @brief  Inicia/para a esteira transportadora
3* @param  [in] status Estado, 1-iniciar, 0-parar
4* @return  Código de erro
5*/
6int ConveyorStartEnd(int status);

11.20. Registrar Ponto de Detecção IO

1/**
2* @brief  Registra o ponto de detecção IO
3* @return  Código de erro
4*/
5int ConveyorPointIORecord();

11.21. Registrar Ponto A

1/**
2* @brief  Registra o ponto A
3* @return  Código de erro
4*/
5int ConveyorPointARecord();

11.22. Registrar Ponto de Referência

1/**
2* @brief  Registra o ponto de referência
3* @return  Código de erro
4*/
5int ConveyorRefPointRecord();

11.23. Registrar Ponto B

1/**
2* @brief  Registra o ponto B
3* @return Código de erro
4*/
5int ConveyorPointBRecord();

11.24. Detecção IO de Peça na Esteira

1/**
2* @brief Detecção IO de peça na esteira
3* @param [in] max_t Tempo máximo de detecção, unidade ms
4* @return Código de erro
5*/
6int ConveyorIODetect(int max_t);

11.25. Obter Posição Atual do Objeto

1/**
2* @brief Obtém a posição atual do objeto
3* @param [in] mode 1-captura com rastreamento, 2-movimento com rastreamento, 3-rastreamento TPD
4* @return Código de erro
5*/
6int ConveyorGetTrackData(int mode);

11.26. Iniciar Rastreamento da Esteira

1/**
2* @brief Inicia o rastreamento da esteira
3* @param [in] status Estado, 1-iniciar, 0-parar
4* @return Código de erro
5*/
6int ConveyorTrackStart(int status);

11.27. Parar Rastreamento da Esteira

1/**
2* @brief Para o rastreamento da esteira
3* @return Código de erro
4*/
5int ConveyorTrackEnd();

11.28. Configurar Parâmetros da Esteira

Alterado na versão Java: SDK-v1.0.4-3.8.1

 1/**
 2* @brief  Configura os parâmetros da esteira
 3* @param [in] encChannel Canal do encoder 1~2
 4* @param [in] resolution Número de pulsos do encoder por rotação
 5* @param [in] lead Distância percorrida pela esteira por rotação do encoder
 6* @param [in] wpAxis Número do sistema de coordenadas da peça (para movimento de rastreamento, escolha o número do sistema de coordenadas; para captura com rastreamento e rastreamento TPD, defina como 0)
 7* @param [in] vision Se usa visão  0-não usa  1-usa
 8* @param [in] speedRadio Relação de velocidade (para a opção de captura com rastreamento da esteira [1-100]; para outras opções, padrão 1)
 9* @param [in] followType Tipo de movimento de rastreamento, 0-movimento de rastreamento; 1-movimento de verificação
10* @param [in] startDis Necessário para captura com verificação, distância inicial de rastreamento, -1: cálculo automático (a verificação começa automaticamente quando a peça chega abaixo do robô), unidade mm, valor padrão 0
11* @param [in] endDis Necessário para captura com verificação, distância final de rastreamento, unidade mm, valor padrão 100
12* @return Código de erro
13*/
14int ConveyorSetParam(int encChannel, int resolution, double lead, int wpAxis, int vision, double speedRadio, int followType, int startDis, int endDis);

11.29. Definir Compensação do Ponto de Captura da Esteira

1/**
2* @brief Define a compensação do ponto de captura da esteira
3* @param [in] cmp Compensação de posição double[3]{x, y, z}
4* @return Código de erro
5*/
6int ConveyorCatchPointComp(Object[] cmp);

11.30. Movimento Linear com Rastreamento da Esteira

 1/**
 2* @brief Movimento linear com rastreamento da esteira
 3* @param [in] name Nome do ponto de movimento
 4* @param [in] tool Número da ferramenta, faixa [0~14]
 5* @param [in] wobj Número da peça, faixa [0~14]
 6* @param [in] vel Porcentagem de velocidade, faixa [0~100]
 7* @param [in] acc Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 8* @param [in] ovl Fator de escala de velocidade, faixa [0~100]
 9* @param [in] blendR [-1.0]-movimento concluído (bloqueado), [0~1000.0]-raio de suavização (não bloqueado), unidade mm
10* @return Código de erro
11*/
12int ConveyorTrackMoveL(String name, int tool, int wobj, double vel, double acc, double ovl, double blendR);

11.31. Detecção de Entrada de Comunicação da Esteira

Novo na versão Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Detecção de entrada de comunicação da esteira
3* @param [in] timeout Tempo limite de espera ms
4* @return Código de erro
5*/
6int ConveyorComDetect(int timeout);

11.32. Acionamento da Detecção de Entrada de Comunicação da Esteira

Novo na versão Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Acionamento da detecção de entrada de comunicação da esteira
3* @param [in] timeout Tempo limite de espera ms
4* @return Código de erro
5*/
6int ConveyorComDetectTrigger();

11.33. Exemplo de Programa de Operação da Esteira do Robô

 1public static int TestConveyor(Robot robot)
 2{
 3    int retval = 0;
 4
 5    retval = robot.ConveyorStartEnd(1);
 6
 7    retval = robot.ConveyorPointIORecord();
 8
 9    retval = robot.ConveyorPointARecord();
10
11    retval = robot.ConveyorRefPointRecord();
12
13    retval = robot.ConveyorPointBRecord();
14
15    retval = robot.ConveyorStartEnd(0);
16
17    retval = 0;
18
19    retval = robot.ConveyorSetParam(1,10000,200,0,0,20,0,0,100);
20
21    Object[] cmp = new Object[]{ 0.0, 0.0, 0.0 };
22    retval = robot.ConveyorCatchPointComp(cmp);
23
24    int index = 1;
25    int max_time = 30000;
26    int block = 0;
27    retval = 0;
28
29    DescPose p1Desc=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
30    DescPose p2Desc=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
31
32
33    retval = robot.MoveCart(p1Desc, 1, 0, 100.0, 100.0, 100.0, -1.0, -1);
34
35    retval = robot.WaitMs(1);
36
37    retval = robot.ConveyorTrackStart(1);
38
39    retval = robot.ConveyorTrackMoveL("cvrCatchPoint", 1, 0, 100, 100, 100, -1.0);
40
41    retval = robot.MoveGripper(index, 51, 40, 30, max_time, block, 0, 0, 0, 0);
42
43    retval = robot.ConveyorTrackMoveL("cvrRaisePoint", 1, 0, 100, 100, 100, -1.0);
44
45    retval = robot.ConveyorTrackEnd();
46
47    robot.MoveCart(p2Desc, 1, 0, 100.0, 100.0, 100.0, -1.0, -1);
48
49    retval = robot.MoveGripper(index, 100, 40, 10, max_time, block, 0, 0, 0, 0);
50
51    return 0;
52}

11.34. Configurar Sensor de Extremidade

1/**
2* @brief Configura o sensor de extremidade
3* @param [in] config idCompany Fabricante, 18-JUNKONG;25-HUIDE
4* @param [in] config idDevice Tipo, 0-JUNKONG/RYR6T.V1.0
5* @param [in] config idSoftware Versão do software, 0-J1.0/HuiDe1.0 (temporariamente não disponível)
6* @param [in] config idBus Posição de montagem, 1-porta 1 da extremidade; 2-porta 2 da extremidade...8-porta 8 da extremidade (temporariamente não disponível)
7* @return Código de erro
8*/
9int AxleSensorConfig(DeviceConfig config);

11.35. Obter Configuração do Sensor de Extremidade

1/**
2* @brief Obtém a configuração do sensor de extremidade
3* @param [out] config idCompany Fabricante, 18-JUNKONG;25-HUIDE
4* @param [out] config idDevice Tipo, 0-JUNKONG/RYR6T.V1.0
5* @return Código de erro
6*/
7int AxleSensorConfigGet(DeviceConfig config);

11.36. Ativar Sensor de Extremidade

1/**
2* @brief Ativa o sensor de extremidade
3* @param [in] actFlag 0-reset; 1-ativar
4* @return Código de erro
5*/
6int AxleSensorActivate(int actFlag);

11.37. Escrita no Registrador do Sensor de Extremidade

 1/**
 2* @brief Escrita no registrador do sensor de extremidade
 3* @param [in] devAddr  Endereço do dispositivo 0-255
 4* @param [in] regHAddr 8 bits altos do endereço do registrador
 5* @param [in] regLAddr 8 bits baixos do endereço do registrador
 6* @param [in] regNum  Número de registradores 0-255
 7* @param [in] data1 Valor 1 a ser escrito no registrador
 8* @param [in] data2 Valor 2 a ser escrito no registrador
 9* @param [in] isNoBlock 0-bloqueado; 1-não bloqueado
10* @return Código de erro
11*/
12int AxleSensorRegWrite(int devAddr, int regHAddr, int regLAddr, int regNum, int data1, int data2, int isNoBlock);

11.38. Exemplo de Código do Sensor de Extremidade

 1public static int TestAxleSensor(Robot robot)
 2{
 3    DeviceConfig con=new DeviceConfig(18,0,0,1);
 4    robot.AxleSensorConfig(con);
 5    int company = -1;
 6    int type = -1;
 7    robot.AxleSensorConfigGet(con);
 8
 9    int rtn = robot.AxleSensorActivate(1);
10
11    robot.Sleep(1000);
12
13    rtn = robot.AxleSensorRegWrite(1, 4, 6, 1, 0, 0, 0);
14    return 0;
15}

11.39. Obter Protocolo de Periféricos do Robô

1/**
2* @brief Obtém o protocolo de periféricos do robô
3* @return List[0]: Código de erro; List[1] : int protocol  Número do protocolo de periféricos do robô 4096-placa de controle do eixo de extensão; 4097-ModbusSlave; 4098-ModbusMaster
4*/
5List<Integer> GetExDevProtocol();

11.40. Definir Protocolo de Periféricos do Robô

1/**
2* @brief Define o protocolo de periféricos do robô
3* @param [in] protocol Número do protocolo de periféricos do robô 4096-placa de controle do eixo de extensão; 4097-ModbusSlave; 4098-ModbusMaster
4* @return Código de erro
5*/
6int SetExDevProtocol(int protocol);

11.41. Exemplo de Programa para Definir Protocolo de Periféricos do Robô

1public static int TestExDevProtocol(Robot robot)
2{
3    int protocol = 4096;
4    int rtn = robot.SetExDevProtocol(protocol);
5    List<Integer> integer=new ArrayList<>();
6    integer = robot.GetExDevProtocol();
7
8    return 0;
9}

11.42. Obter Parâmetros de Comunicação da Extremidade

1/**
2* @brief Obtém os parâmetros de comunicação da extremidade
3* @param [out] param Parâmetros de comunicação da extremidade
4* @return Código de erro
5*/
6int GetAxleCommunicationParam(AxleComParam param)

11.43. Definir Parâmetros de Comunicação da Extremidade

1/**
2* @brief Define os parâmetros de comunicação da extremidade
3* @param [in] param Parâmetros de comunicação da extremidade
4* @return Código de erro
5*/
6int SetAxleCommunicationParam(AxleComParam param)

11.44. Definir Tipo de Transferência de Arquivo da Extremidade

1/**
2* @brief Define o tipo de transferência de arquivo da extremidade
3* @param [in] type 1-arquivo de atualização MCU; 2-arquivo LUA
4* @return  Código de erro
5*/
6public int SetAxleFileType(int type)

11.45. Ativar Execução LUA na Extremidade

1/**
2* @brief Ativa a execução LUA na extremidade
3* @param [in] enable 0-desativar; 1-ativar
4* @return  Código de erro
5*/
6public int SetAxleLuaEnable(int enable)

11.46. Recuperação de Erro de Arquivo LUA na Extremidade

1/**
2* @brief Recuperação de erro de arquivo LUA na extremidade
3* @param [in] status 0-não recuperar; 1-recuperar
4* @return  Código de erro
5*/
6public int SetRecoverAxleLuaErr(int status)

11.47. Obter Estado de Ativação da Execução LUA na Extremidade

1/**
2* @brief Obtém o estado de ativação da execução LUA na extremidade
3* @param [out] status[0]: 0-desativado; 1-ativado
4* @return  Código de erro
5*/
6int GetAxleLuaEnableStatus(int[] status)

11.48. Definir os tipos de dispositivo de extremidade habilitados para LUA

1/**
2* @brief Define os tipos de dispositivo de extremidade habilitados para o LUA
3* @param forceSensorEnable Status de habilitação do sensor de força, 0-desabilitado; 1-habilitado
4* @param gripperEnable Status de habilitação da garra, 0-desabilitado; 1-habilitado
5* @param IOEnable Status de habilitação do dispositivo IO, 0-desabilitado; 1-habilitado
6* @param dexhandEnable Status de habilitação da mão destra, 0-desabilitado; 1-habilitado
7* @return  Código de erro
8*/
9public int SetAxleLuaEnableDeviceType(int forceSensorEnable, int gripperEnable, int IOEnable, int dexhandEnable)

11.49. Obter os tipos de dispositivo de extremidade habilitados para LUA

1/**
2 * @brief Obtém os tipos de dispositivo de extremidade habilitados para o LUA
3 * @param enable enable[0]:forceSensorEnable Status de habilitação do sensor de força, 0-desabilitado; 1-habilitado
4 * @param enable enable[1]:gripperEnable Status de habilitação da garra, 0-desabilitado; 1-habilitado
5 * @param enable enable[2]:IOEnable Status de habilitação do dispositivo IO, 0-desabilitado; 1-habilitado
6 * @param enable enable[3]:dexhandEnable Status de habilitação da mão destra, 0-desabilitado; 1-habilitado
7 * @return  Código de erro
8 */
9public int GetAxleLuaEnableDeviceType(int[] enable)

11.50. Obter os dispositivos de extremidade atualmente configurados

1/**
2 * @brief Obtém os dispositivos de extremidade atualmente configurados
3 * @param forceSensorEnable Número do dispositivo de sensor de força habilitado, 0-desabilitado; 1-habilitado
4 * @param gripperEnable Número do dispositivo de garra habilitado, 0-desabilitado; 1-habilitado
5 * @param IODeviceEnable Número do dispositivo IO habilitado, 0-desabilitado; 1-habilitado
6 * @param dexhandEnable Status de habilitação da mão destra, 0-desabilitado; 1-habilitado
7 * @return  Código de erro
8 */
9public int GetAxleLuaEnableDevice(int[] forceSensorEnable, int[] gripperEnable, int[] IODeviceEnable, int[] dexhandEnable)

11.51. Definir as funções de controle de ação da garra habilitadas

 1/**
 2 * @brief Define as funções de controle de ação da garra habilitadas
 3 * @param id Número do dispositivo da garra
 4 * @param func func[0]-habilitação da garra; func[1]-inicialização da garra; func[2]-definição de posição; func[3]-definição de velocidade; func[4]-definição de torque; func[6]-leitura do estado da garra;
 5    func[7]-leitura do estado de inicialização; func[8]-leitura do código de falha; func[9]-leitura da posição; func[10]-leitura da velocidade; func[11]-leitura do torque; func[12]-definição do número de rotações para garra rotativa;
 6    func[13]-definição da velocidade de rotação para garra rotativa; func[14]-definição do torque de rotação para garra rotativa; func[15]-leitura do estado da garra rotativa; func[16]-leitura do estado de inicialização da garra rotativa;
 7    func[17]-leitura do número de rotações da garra rotativa; func[18]-leitura da velocidade da garra rotativa; func[19]-leitura do torque da garra rotativa; func[20]-definição de movimento síncrono multi-eixo; func[21]-comando de limpeza de falhas;
 8    func[22]-estado de operação de eixo único; func[23]-estado de operação de todos os eixos;
 9 * @return  Código de erro
10 */
11public int SetAxleLuaGripperFunc(int id, int[] func)

11.52. Obter as funções de controle de ação da garra habilitadas

 1/**
 2 * @brief Obtém as funções de controle de ação da garra habilitadas
 3 * @param id Número do dispositivo da garra
 4 * @param func func[0]-habilitação da garra; func[1]-inicialização da garra; func[2]-definição de posição; func[3]-definição de velocidade; func[4]-definição de torque; func[6]-leitura do estado da garra;
 5    func[7]-leitura do estado de inicialização; func[8]-leitura do código de falha; func[9]-leitura da posição; func[10]-leitura da velocidade; func[11]-leitura do torque; func[12]-definição do número de rotações para garra rotativa;
 6    func[13]-definição da velocidade de rotação para garra rotativa; func[14]-definição do torque de rotação para garra rotativa; func[15]-leitura do estado da garra rotativa; func[16]-leitura do estado de inicialização da garra rotativa;
 7    func[17]-leitura do número de rotações da garra rotativa; func[18]-leitura da velocidade da garra rotativa; func[19]-leitura do torque da garra rotativa; func[20]-definição de movimento síncrono multi-eixo; func[21]-comando de limpeza de falhas;
 8    func[22]-estado de operação de eixo único; func[23]-estado de operação de todos os eixos;
 9 * @return  Código de erro
10 */
11public int GetAxleLuaGripperFunc(int id, int[] func)

11.53. Escrita de Arquivo no Escravo Ethercat do Robô

1/**
2 * @brief Escrita de arquivo no escravo Ethercat do robô
3 * @param type Tipo de arquivo do escravo, 1-arquivo de atualização do escravo; 2-arquivo de configuração do escravo
4 * @param slaveID Número do escravo
5 * @param fileName Nome do arquivo a ser enviado
6 * @return  Código de erro
7 */
8public int SlaveFileWrite(int type, int slaveID, String fileName)

11.54. Enviar Arquivo de Protocolo Aberto LUA da Extremidade

1/**
2 * @brief Envia arquivo de protocolo aberto LUA da extremidade
3 * @param filePath Caminho do arquivo lua local ".../AXLE_LUA_End_DaHuan.lua"
4 * @return Código de erro
5 */
6public int AxleLuaUpload(String filePath)

11.55. Entrar no Modo Boot do Escravo Ethercat do Robô

1/**
2 * @brief Entrar no modo boot do escravo Ethercat do robô
3 * @return  Código de erro
4 */
5public int SetSysServoBootMode()

11.56. Exemplo de Código para Operações com Arquivos LUA da Extremidade do Robô

 1public static int TestAxleLua(Robot robot)
 2{
 3    robot.AxleLuaUpload("D://zUP/AXLE_LUA_End_DaHuan.lua");
 4
 5    AxleComParam param=new AxleComParam(7, 8, 1, 0, 5, 3, 1);
 6    robot.SetAxleCommunicationParam(param);
 7
 8    robot.GetAxleCommunicationParam(param);
 9
10    robot.SetAxleLuaEnable(1);
11    int[] luaEnableStatus = new int[]{0};
12    robot.GetAxleLuaEnableStatus(luaEnableStatus);
13    robot.SetAxleLuaEnableDeviceType(0, 1, 0);
14
15    int forceEnable = 0;
16    int gripperEnable = 0;
17    int ioEnable = 0;
18    int [] enable=new int[]{0,0,0};
19    robot.GetAxleLuaEnableDeviceType(enable);
20
21    int[] func = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
22    robot.SetAxleLuaGripperFunc(1, func);
23    int[] getFunc = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
24    robot.GetAxleLuaGripperFunc(1, getFunc);
25    int[] getforceEnable = { 0,0,0,0,0,0,0,0};
26    int[] getgripperEnable = { 0,0,0,0,0,0,0,0};
27    int[] getioEnable = { 0,0,0,0,0,0,0,0};
28    robot.GetAxleLuaEnableDevice(getforceEnable, getgripperEnable, getioEnable);
29    for (int i = 0; i < 8; i++)
30    {
31        System.out.println(getforceEnable[i]);
32    }
33    System.out.println("getgripperEnable status : ");
34    for (int i = 0; i < 8; i++)
35    {
36        System.out.println(getgripperEnable[i]);
37    }
38    System.out.println("getioEnable status : ");
39    for (int i = 0; i < 8; i++)
40    {
41        System.out.println(getioEnable[i]);
42    }
43    robot.ActGripper(1, 0);
44    robot.Sleep(2000);
45    robot.ActGripper(1, 1);
46    robot.Sleep(2000);
47    robot.MoveGripper(1, 90, 10, 100, 50000, 0, 0, 0, 0, 0);
48    int pos = 0;
49    while (true)
50    {
51        ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
52        pkg=robot.GetRobotRealTimeState();
53        System.out.println("gripper pos is:"+pkg.gripper_position);
54        robot.Sleep(100);
55    }
56
57}

11.57. Obter Estado dos Botões do SmartTool

Novo na versão Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Obtém o estado dos botões do SmartTool
3* @param [out] state Estado dos botões do SmartTool; (bit0:0-comunicação normal; 1-comunicação perdida; bit1-operação de desfazer; bit2-limpar programa; bit3-tecla A; bit4-tecla B; bit5-tecla C; bit6-tecla D; bit7-tecla E; bit8-tecla IO; bit9-manual/automático; bit10-iniciar)
4* @return Código de erro
5*/
6int GetSmarttoolBtnState(int[] state)

11.58. Exemplo de Código do Botão SmartTool

 1public static void main(String[] args)
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true, 100, 500);//Definir número de tentativas de reconexão, intervalo
 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        System.out.println("Conexão RPC bem-sucedida");
 9    } else {
10        System.out.println("Falha na conexão RPC");
11        return;
12    }
13
14    int[] state = {0};
15    while (true)
16    {
17        robot.GetSmarttoolBtnState(state);
18
19        String binaryString = String.format("%32s", Integer.toBinaryString(state[0])).replace(' ', '0');
20        System.out.println("GetSmarttoolBtnState:"+binaryString);
21        robot.Sleep(100);
22    }
23}

11.59. Enviar Arquivo Lua de Protocolo Aberto

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Envia arquivo Lua de protocolo aberto
3* @param  filePath Caminho do arquivo lua de protocolo aberto local
4* @return Código de erro
5*/
6public int OpenLuaUpload(String filePath)

11.60. Obter Parâmetros da Placa Escrava

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Obtém os parâmetros da placa escrava
3* @param  type  0-Ethercat, 1-CClink, 3-Ethercat, 4-EIP
4* @param  version  Versão do protocolo
5* @param  connState  0-desconectado 1-conectado
6* @return  Código de erro
7*/
8public int GetFieldBusConfig(int[] type, int[] version, int[] connState)

11.61. Escrever DO no Escravo

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Escreve DO no escravo
3* @param   DOIndex  Número do DO
4* @param   wirteNum  Número a ser escrito
5* @param   status Valor a ser escrito, máximo de 8
6* @return  Código de erro
7*/
8public int FieldBusSlaveWriteDO(int DOIndex, int wirteNum, int[] status)

11.62. Escrever AO no Escravo

Novo na versão Java: SDK-v1.0.8-3.8.5

1/*
2* @brief  Escrever AO no Escravo
3* @param  AOIndex Número AO
4* @param  writeNum Número de valores a escrever
5* @param  status Matriz de valores a escrever (máximo 8), AO0~AO15 são do tipo inteiro, AO16~AO31 são do tipo ponto flutuante
6* @return  Código de erro
7*/
8public int FieldBusSlaveWriteAO(int AOIndex, int writeNum, double[] status)

11.63. Ler DI do Escravo

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Lê DI do escravo
3* @param  DOIndex  Número do DI
4* @param  readNum  Número a ser lido
5* @param  status Valor lido, máximo de 8
6* @return  Código de erro
7*/
8public int FieldBusSlaveReadDI(int DOIndex, int readNum, int[] status)

11.64. Ler AI do Escravo

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Lê AI do escravo
3* @param  AIIndex  Número do AI
4* @param  readNum  Número a ser lido
5* @param  status Valor lido, máximo de 8
6* @return  Código de erro
7*/
8public int FieldBusSlaveReadAI(int AIIndex, int readNum, double[] status)

11.65. Aguardar Entrada DI de Extensão

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Aguarda entrada DI de extensão
3* @param  DIIndex Número do DI
4* @param  status 0-nível baixo; 1-nível alto
5* @param  waitMs Tempo máximo de espera (ms)
6* @return Código de erro
7*/
8public int FieldBusSlaveWaitDI(int DIIndex, int status, int waitMs)

11.66. Aguardar Entrada AI de Extensão

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Aguarda entrada AI de extensão
3* @param  AIIndex Número do AI
4* @param  waitType 0-maior que; 1-menor que
5* @param  value Valor do AI
6* @param  waitMs Tempo máximo de espera (ms)
7* @return Código de erro
8*/
9public int FieldBusSlaveWaitAI(int AIIndex, int waitType, double value, int waitMs)

11.67. Exemplo de Código para Interfaces de Instrução do Modo Escravo

 1public static void testFieldBusBoard(Robot robot)
 2{
 3    //Carregar e enviar arquivo de protocolo aberto
 4    robot.OpenLuaUpload("D://zUP/1111/CtrlDev_field.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(3, "CtrlDev_field.lua");
 7    robot.UnloadCtrlOpenLUA(3);
 8    robot.LoadCtrlOpenLUA(3);
 9    robot.Sleep(8000);
10    int[] type=new int[1];
11    int[] version=new int[1];
12    int[] connState=new int[1];
13    //Obter tipo de protocolo da placa escrava, versão do software, status de conexão com CLP
14    robot.GetFieldBusConfig(type, version, connState);
15    System.out.println("type is: "+type[0]+", version is : "+version[0]+", connState is : "+connState[0]);
16    //Escrever DO0 = 1, DO1 = 0, DO2 = 1
17    int[] ctrl =new int[8];
18    ctrl[0] = 1;
19    ctrl[1] = 0;
20    ctrl[2] = 1;
21    robot.FieldBusSlaveWriteDO(0, 3, ctrl);
22    //Escrever AO2 = 0x1000
23    int[] ctrlAO =new int[8];
24    ctrlAO[0] = 0x1000;
25    robot.FieldBusSlaveWriteAO(2, 1, ctrlAO);
26    int[] DI=new int[4];
27    double[] AI=new double[3];
28    //Monitorar DI0~DI3 AI0~AI2 em loop
29    for (int i = 0; i < 100; i++)
30    {
31        robot.FieldBusSlaveReadDI(0, 4, DI);
32        System.out.println("DI0 is: "+DI[0]+", DI1 is: "+DI[1]+",DI2 is: "+DI[2]+",DI3 is: "+DI[3]);
33        robot.FieldBusSlaveReadAI(0, 3, AI);
34        System.out.println("AI0 is: "+AI[0]+ ",AI1 is: "+AI[1]+",AI2 is: "+AI[2]);
35        robot.Sleep(10);
36    }
37    //Aguardar DI0 ser igual a 1, tempo de espera 100ms, imprimir resultado
38    int ret = robot.FieldBusSlaveWaitDI(0, 1, 100);
39    System.out.println("FieldBusSlaveWaitDI result is: "+ ret);
40    //Aguardar AI0 ser maior que 400, tempo de espera 100ms, imprimir resultado
41    ret = robot.FieldBusSlaveWaitAI(0,0,400.00,100);
42    System.out.println("FieldBusSlaveWaitAI result is: "+ ret);
43    robot.CloseRPC();
44}

11.68. Controlar Matriz de Ventosas

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Controla a matriz de ventosas
3* @param  slaveID Número do escravo
4* @param  len Comprimento
5* @param  ctrlValue Valor de controle 1-sucção com vácuo máximo 2-sucção com vácuo definido 3-parar sucção
6* @return Código de erro
7*/
8public int SetSuckerCtrl(int slaveID, int len, int[] ctrlValue)

11.69. Obter Estado da Matriz de Ventosas

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Obtém o estado da matriz de ventosas
3* @param  slaveID Número do escravo
4* @param  state Estado de sucção 0-objeto solto 1-objeto detectado e sucção bem-sucedida 2-objeto não detectado 3-objeto desprendido
5* @param  pressValue Vácuo atual unidade kPa
6* @param  error Código de erro atual da ventosa
7* @return Código de erro
8*/
9public int GetSuckerState(int slaveID, int[] state, int[] pressValue, int[] error)

11.70. Aguardar Estado da Ventosa

Novo na versão Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Aguarda o estado da ventosa
3* @param  slaveID Número do escravo
4* @param  state Estado de sucção 0-objeto solto 1-objeto detectado e sucção bem-sucedida 2-objeto não detectado 3-objeto desprendido
5* @param  ms Tempo máximo de espera
6* @return Código de erro
7*/
8public int WaitSuckerState(int slaveID, int state, int ms)

11.71. Exemplo de Código para Instruções de Controle da Matriz de Ventosas

 1public static void testSucker(Robot robot)
 2{
 3    //Carregar e enviar arquivo de protocolo aberto
 4    robot.OpenLuaUpload("C://openlua/CtrlDev_sucker.lua");
 5    robot.Sleep(2000);
 6    robot.UnloadCtrlOpenLUA(1);
 7    robot.LoadCtrlOpenLUA(1);
 8    robot.Sleep(1000);
 9    //Controlar ventosa em modo broadcast com capacidade máxima de sucção
10    int[] ctrl = {1};
11    robot.SetSuckerCtrl(0, 1, ctrl);
12    int[] state=new int[1];
13    int[] pressVlaue=new int[1];
14    int[] error=new int[1];
15    //Monitorar estados da ventosa 1 e ventosa 12 em loop
16    for (int i = 0; i < 100; i++)
17    {
18        robot.GetSuckerState(1, state,pressVlaue, error);
19        System.out.println("sucker1 state is:"+state[0]+",pressVlaue is:"+pressVlaue[0]+",error num is"+error[0]);
20        robot.GetSuckerState(12, state, pressVlaue, error);
21        System.out.println("sucker12 state is :"+state[0]+", pressVlaue is:"+pressVlaue[0]+",error num is:"+error[0]);
22        robot.Sleep(100);
23    }
24    //Aguardar ventosa 1 atingir estado de objeto aderido, tempo de espera 100ms
25    int ret = robot.WaitSuckerState(1, 1, 100);
26    System.out.println("WaitSuckerState result is:"+ ret);
27    //Modo unicast para desligar ventosas 1 e 12
28    ctrl[0] = 3;
29    robot.SetSuckerCtrl(1, 1, ctrl);
30    robot.SetSuckerCtrl(12, 1, ctrl);
31    robot.CloseRPC();
32}

11.72. Função de Ligar/Desligar Periférico Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Função para ligar/desligar periférico laser
3 * @param [in] OnOff 0-desligar 1-ligar
4 * @param [in] weldId ID da solda, padrão 0
5 * @return Código de erro
6 */
7public int LaserTrackingLaserOnOff(int OnOff, int weldId)

11.73. Função de Iniciar/Parar Rastreamento a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Função para iniciar/parar rastreamento a laser
3 * @param [in] OnOff 0-parar 1-iniciar
4 * @param [in] coordId Número do sistema de coordenadas da ferramenta do periférico laser
5 * @return Código de erro
6 */
7public int LaserTrackingTrackOnOff(int OnOff, int coordId)

11.74. Busca de Posição a Laser - Direção Fixa

Novo na versão Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Busca de posição a laser - Direção fixa
 3 * @param [in] direction 0-x+ 1-x- 2-y+ 3-y- 4-z+ 5-z-
 4 * @param [in] vel Velocidade unidade %
 5 * @param [in] distance Distância máxima de busca unidade mm
 6 * @param [in] timeout Tempo limite de busca unidade ms
 7 * @param [in] posSensorNum Número do sistema de coordenadas da ferramenta calibrado para o laser
 8 * @return Código de erro
 9 */
10public int LaserTrackingSearchStart_xyz(int direction, int vel, int distance, int timeout, int posSensorNum)

11.75. Busca de Posição a Laser - Direção Arbitrária

Novo na versão Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Busca de posição a laser - Direção arbitrária
 3 * @param [in] directionPoint Coordenadas xyz do ponto de entrada da busca
 4 * @param [in] vel Velocidade unidade %
 5 * @param [in] distance Distância máxima de busca unidade mm
 6 * @param [in] timeout Tempo limite de busca unidade ms
 7 * @param [in] posSensorNum Número do sistema de coordenadas da ferramenta calibrado para o laser
 8 * @return Código de erro
 9 */
10public int LaserTrackingSearchStart_point(DescTran directionPoint, int vel, int distance, int timeout, int posSensorNum)

11.76. Fim da Busca de Posição a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief  Fim da busca de posição a laser
3 * @return Código de erro
4 */
5 public int LaserTrackingSearchStop()

11.77. Configuração de IP do Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1 /**
2  * @brief Configuração de IP do laser
3  * @param [in] ip Endereço IP do periférico laser
4  * @param [in] port Número da porta do periférico laser
5  * @return Código de erro
6  */
7 public int LaserTrackingSensorConfig(String ip, int port)

11.78. Configuração do Período de Amostragem do Periférico Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Configuração do período de amostragem do periférico laser
3 * @param [in] period Período de amostragem do periférico laser unidade ms
4 * @return Código de erro
5 */
6public int LaserTrackingSensorSamplePeriod(int period)

11.79. Carregar Driver do Periférico Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Carregar driver do periférico laser
3 * @param [in] type Tipo de protocolo do driver do periférico laser 101-Ruiniu 102-Chuangxiang 103-Quanshi 104-Tongzhou 105-Aotai
4 * @return Código de erro
5 */
6public int LoadPosSensorDriver(int type)

11.80. Descarregar Driver do Periférico Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Descarregar driver do periférico laser
3 * @return Código de erro
4 */
5public int UnLoadPosSensorDriver()

11.81. Gravação da Trajetória da Solda a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Gravação da trajetória da solda a laser
3 * @param [in] status 0-parar gravação 1-rastreamento em tempo real 2-iniciar gravação
4 * @param [in] delayTime Tempo de atraso unidade ms
5 * @return Código de erro
6 */
7public int LaserSensorRecord1(int status, int delayTime)

11.82. Reprodução da Trajetória da Solda a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Reprodução da trajetória da solda a laser
3 * @param [in] delayTime Tempo de atraso unidade ms
4 * @param [in] speed Velocidade unidade %
5 * @return Código de erro
6 */
7public int LaserSensorReplay(int delayTime, double speed)

11.83. Reprodução do Rastreamento a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Reprodução do rastreamento a laser
3 * @return Código de erro
4 */
5public int MoveLTR()

11.84. Reprodução da Trajetória da Solda a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

 1/**
 2* @brief Reprodução da trajetória da solda a laser
 3* @param delayMode Modo de atraso 0-tempo de atraso 1-distância de atraso
 4* @param delayTime Tempo de atraso unidade ms
 5* @param delayDisExAxisNum Número do eixo de extensão
 6* @param delayDis Distância de atraso unidade mm
 7* @param sensitivePara Coeficiente de sensibilidade de compensação
 8* @param trackMode Tipo de rastreamento pontual. 0-movimento assíncrono do eixo de extensão; 1-robô
 9* @param triggerMode Modo de acionamento do rastreamento pontual. 0-duração do rastreamento; 1-IO
10* @param runTime Duração do rastreamento pontual do robô (s)
11* @param speed Velocidade unidade %
12* @return Código de erro
13*/
14public int LaserSensorRecordandReplay(int delayMode, int delayTime, int delayDisExAxisNum, double delayDis, double sensitivePara, int trackMode, int triggerMode, double runTime, double speed)

11.85. Mover para o Início da Gravação da Solda

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Mover para o início da gravação da solda
3 * @param [in] moveType 0-PTP 1-LIN
4 * @param [in] ovl Velocidade unidade %
5 * @return Código de erro
6 */
7public int MoveToLaserRecordStart(int moveType, double ovl)

11.86. Mover para o Fim da Gravação da Solda

Novo na versão Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Mover para o fim da gravação da solda
3 * @param [in] moveType 0-PTP 1-LIN
4 * @param [in] ovl Velocidade unidade %
5 * @return Código de erro
6 */
7public int MoveToLaserRecordEnd(int moveType, double ovl)

11.87. Mover para o Ponto de Busca do Sensor a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Mover para o ponto de busca do sensor a laser
 3 * @param [in] moveFlag Tipo de movimento: 0-PTP; 1-LIN
 4 * @param [in] ovl Fator de escala de velocidade, 0-100
 5 * @param [in] dataFlag Seleção de dados de cache da solda: 0-executar dados planejados; 1-executar dados gravados
 6 * @param [in] plateType Tipo de placa: 0-placa ondulada; 1-placa corrugada; 2-placa de cerca; 3-barril de óleo; 4-aço de casco ondulado
 7 * @param [in] trackOffectType Tipo de deslocamento do sensor a laser: 0-sem deslocamento; 1-deslocamento no sistema de coordenadas base; 2-deslocamento no sistema de coordenadas da ferramenta; 3-deslocamento com base nos dados brutos do sensor a laser
 8 * @param [in] offset Valor de deslocamento
 9 * @return Código de erro
10 */
11public int MoveToLaserSeamPos(int moveFlag, double ovl, int dataFlag, int plateType, int trackOffectType, DescPose offset)

11.88. Obter Informações de Coordenadas do Ponto de Busca do Sensor a Laser

Novo na versão Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Obter informações de coordenadas do ponto de busca do sensor a laser
 3 * @param [in] trackOffectType Tipo de deslocamento do sensor a laser: 0-sem deslocamento; 1-deslocamento no sistema de coordenadas base; 2-deslocamento no sistema de coordenadas da ferramenta; 3-deslocamento com base nos dados brutos do sensor a laser
 4 * @param [in] offset Valor de deslocamento
 5 * @param [out] jPos Posição articular [°]
 6 * @param [out] descPos Posição cartesiana [mm]
 7 * @param [out] tool Sistema de coordenadas da ferramenta
 8 * @param [out] user Sistema de coordenadas da peça
 9 * @param [out] exaxis Posição do eixo de extensão [mm]
10 * @return Código de erro
11 */
12public int GetLaserSeamPos(int trackOffectType, DescPose offset, JointPos jPos, DescPose descPos, int[] tool, int[] user, ExaxisPos exaxis)

11.89. Exemplo de Código para Configuração e Depuração de Parâmetros do Periférico Laser

 1public static void testLaserConfig(Robot robot)
 2{
 3    robot.LaserTrackingSensorConfig("192.168.58.20", 5020);
 4
 5    robot.LaserTrackingSensorSamplePeriod(20);
 6
 7    robot.LoadPosSensorDriver(101);
 8    robot.LaserTrackingLaserOnOff(0,0);
 9
10    robot.Sleep(3000);
11
12    robot.LaserTrackingLaserOnOff(1, 0);
13
14    robot.CloseRPC();
15}

11.90. Exemplo de Código para Digitalização e Reprodução de Trajetória a Laser

 1public static void testLaserRecordAndReplay(Robot robot)
 2{
 3    //Carregar e enviar arquivo de protocolo aberto
 4    robot.OpenLuaUpload("D://zUP/CtrlDev_laser_ruiniu-0117.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(0, "CtrlDev_laser_ruiniu-0117.lua");
 7    robot.UnloadCtrlOpenLUA(0);
 8    robot.LoadCtrlOpenLUA(0);
 9    robot.Sleep(8000);
10
11    for (int i=0;i<10;++i){
12        JointPos startjointPos=new JointPos(56.205, -117.951, 141.872, -118.149, -94.217, -122.176);
13        DescPose startdescPose=new DescPose(-97.552, -282.855, 26.675, 174.182, -1.338, -91.707);
14        ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
15        DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
16        robot.MoveL(startjointPos, startdescPose, 1, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
17
18        robot.LaserSensorRecord1(2, 10);
19
20        JointPos endjointPos=new JointPos(68.809, -87.100, 121.120, -127.233, -95.038, -109.555);
21        DescPose enddescPose=new DescPose(-103.555, -464.234, 13.076, 174.179, -1.344, -91.709);
22        robot.MoveL(endjointPos, enddescPose, 1, 0, 50, 100, 100, -1,0, exaxisPos, 0, 0, offdese, 0,1, 1);
23
24        robot.LaserSensorRecord1(0, 10);
25
26        robot.MoveToLaserRecordStart(1, 30);
27
28        robot.LaserSensorReplay(10, 100);
29
30        robot.MoveLTR();
31
32        robot.LaserSensorRecord1(0, 10);
33    }
34
35    robot.CloseRPC();
36}

11.91. Exemplo de Código para Busca de Posição e Rastreamento em Tempo Real a Laser

 1public static void testLasertrack(Robot robot)
 2{
 3    //Carregar e enviar arquivo de protocolo aberto
 4    robot.OpenLuaUpload("D://zUP/CtrlDev_laser_ruiniu-0117.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(0, "CtrlDev_laser_ruiniu-0117.lua");
 7    robot.UnloadCtrlOpenLUA(0);
 8    robot.LoadCtrlOpenLUA(0);
 9    robot.Sleep(8000);
10    for(int i=0;i<10;++i){
11        JointPos startjointPos=new JointPos(56.205, -117.951, 141.872, -118.149, -94.217, -122.176);
12        DescPose startdescPose=new DescPose(-97.552, -282.855, 26.675, 174.182, -1.338, -91.707);
13        ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
14        DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
15        DescTran directionPoint=new DescTran();
16        robot.MoveL(startjointPos, startdescPose, 1, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
17
18        robot.LaserTrackingSearchStart_xyz(3, 100, 300, 1000, 3);
19        robot.LaserTrackingSearchStop();
20
21        //robot.GetRobotTeachingPoint(name, data);
22        robot.MoveToLaserSeamPos(1, 30, 0, 0, 0, offdese);
23        //printf("%f, %f, %f,%f, %f, %f,%f, %f, %f,%f, %f, %f\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11]);
24
25        robot.LaserTrackingTrackOnOff(1, 3);
26        //robot.LaserTrackingTrackOn(3);
27        JointPos endjointPos=new JointPos(68.809,-87.100,121.120,-127.233,-95.038,-109.555);
28        DescPose enddescPose=new DescPose(-103.555,-464.234,13.076,174.179,-1.344,-91.709);
29        robot.MoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
30
31        robot.LaserTrackingTrackOnOff(0, 3);
32        System.out.println("Execução atual: "+(i+1));
33    }
34    robot.CloseRPC();
35}

11.92. Exemplo de Código para Rastreamento a Laser Síncrono com Eixo de Extensão e Robô

 1public static void testLasertrackandExitAxis(Robot robot)
 2{
 3    ExaxisPos startexaxisPos =new ExaxisPos( 0,0,0,0 );
 4    ExaxisPos seamexaxisPos = new ExaxisPos(-10,0,0,0 );
 5    ExaxisPos endexaxisPos = new ExaxisPos(-30, 0, 0, 0);
 6    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0 );
 7    JointPos seamjointPos=new JointPos(0, 0, 0, 0, 0, 0);
 8    DescPose seamdescPose=new DescPose(0, 0, 0, 0, 0, 0);
 9
10    for(int i =0;i<10;++i) {
11        //Mover para o ponto inicial da busca de posição
12        JointPos startjointPos = new JointPos(58.337, -119.628, 146.037, -116.358, -92.224, -117.654);
13        DescPose startdescPose = new DescPose(-53.375, -255.363, 0.919, 178.054, 1.077, -94.026);
14        robot.ExtAxisSyncMoveJ(startjointPos, startdescPose, 1, 0, 100, 100, 100, startexaxisPos, -1, 0, offdese);
15
16        System.out.println("11111");
17        //Iniciar busca de posição ao longo da direção -y
18        int ret = robot.LaserTrackingSearchStart_xyz(3, 100, 300, 1000, 2);
19        robot.LaserTrackingSearchStop();
20        System.out.println("2222");
21        int[] tool = new int[1];
22        int[] user = new int[1];
23        robot.GetLaserSeamPos(0, offdese, seamjointPos, seamdescPose, tool, user, startexaxisPos);
24        System.out.println(seamjointPos.J1 + ", " + seamjointPos.J2 + ", " +
25                seamjointPos.J3 + ", " + seamjointPos.J4 + ", " +
26                seamjointPos.J5 + ", " + seamjointPos.J6 + ", " +
27                seamdescPose.tran.x + ", " + seamdescPose.tran.y + ", " +
28                seamdescPose.tran.z + ", " + seamdescPose.rpy.rx + ", " +
29                seamdescPose.rpy.ry + ", " + seamdescPose.rpy.rz);
30        //Se a busca de posição for bem-sucedida
31        if (ret == 0) {
32            //Robô e eixo de extensão se movem sincronizadamente para o ponto de busca
33            robot.ExtAxisSyncMoveJ(seamjointPos, seamdescPose, 1, 0, 100, 100, 100, seamexaxisPos, -1, 0, offdese);
34
35            //Iniciar rastreamento a laser ao longo do ponto de busca e movimento síncrono com o eixo de extensão
36            System.out.println("3333");
37            robot.LaserTrackingTrackOnOff(1, 2);
38            JointPos endjointPos = new JointPos(70.580, -90.918, 126.593, -125.154, -92.162, -105.403);
39            DescPose enddescPose = new DescPose(-53.375, -419.020, 0.920, 178.054, 1.076, -94.026);
40            robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, endexaxisPos, 0, offdese);
41            ;
42            //Parar rastreamento
43            robot.LaserTrackingTrackOnOff(0, 2);
44            System.out.println("44444");
45        }
46        System.out.println("Número de execuções: "+i);
47    }
48    robot.CloseRPC();
49}

11.93. Interface SDK para Ativar/Desativar Função de Passagem Direta na Extremidade

1/**
2* @brief Ativa/desativa a função de passagem direta na extremidade
3* @param  enable, 0-desativar, 1-ativar
4* @return Código de erro
5*/
6public int SetAxleGenComEnable(int mode)

11.94. Interface SDK para Transmissão e Recepção de Dados Aperiódicos na Função de Passagem Direta na Extremidade

1/**
2* @brief Envia dados aperiódicos na extremidade e aguarda resposta
3* @param lenSnd Comprimento do envio
4* @param sndBuff Dados a serem enviados
5* @param lenRcv Comprimento da recepção selecionada
6* @param [out] rcvData Dados de resposta
7* @return Código de erro
8*/
9public int SndRcvAxleGenComCmdData(int lenSnd, int[] sndBuff, int lenRcv, int[] rcvData)

11.95. Exemplo de Código para Comunicação de Dados Aperiódicos do Cabeçote de Moxabustão Beiyikang Baseado na Função de Passagem Direta na Extremidade

 1public static void testAxleGenCom(Robot robot) {
 2int[] led_on = {0xAB, 0xBA, 0x12, 0x01, 0x01, 0x79};
 3int[] led_off = {0xAB, 0xBA, 0x12, 0x01, 0x00, 0x78};
 4int[] version = {0xAB, 0xBA, 0x11, 0x00, 0x76};
 5int[] state = {0xAB, 0xBA, 0x1B, 0x01, 0xAA, 0x2B};
 6
 7int[] rcvdata = new int[16];
 8int ret = 0;
 9int cnt = 1;
10
11JointPos p1Joint = new JointPos(88.708, -86.178, 140.989, -141.825, -89.162, -49.879);
12DescPose p1Desc = new DescPose(188.007, -377.850, 260.207, 178.715, 2.823, -131.466);
13
14JointPos p2Joint = new JointPos(112.131, -75.554, 126.989, -139.027, -88.044, -26.477);
15DescPose p2Desc = new DescPose(368.003, -377.848, 260.211, 178.715, 2.823, -131.465);
16
17ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
18DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
19
20// Ativar função de passagem direta na extremidade
21robot.SetAxleGenComEnable(1);
22robot.SetAxleLuaEnable(1);
23
24while (cnt <= 10000) {
25    // Ler número da versão
26    ret = robot.SndRcvAxleGenComCmdData(5, version, 10, rcvdata);
27    if (ret == 0) {
28        System.out.printf(" hard version : %d,hard code:%d, soft version:%d %d, soft code:%d \n",
29                rcvdata[4], rcvdata[5], rcvdata[6], rcvdata[7], rcvdata[8]);
30    } else {
31        System.out.println("Falha no SndRcvAxleGenComCmdData version: " + ret);
32        break;
33    }
34    robot.Sleep(1000);
35
36    // Ler estado de presença do cabeçote de moxabustão
37    ret = robot.SndRcvAxleGenComCmdData(6, state, 6, rcvdata);
38    if (ret == 0) {
39        System.out.printf(" state : %d \n", rcvdata[4]);
40    }
41    robot.Sleep(1000);
42
43    // Ativar laser do cabeçote de moxabustão
44    ret = robot.SndRcvAxleGenComCmdData(6, led_on, 6, rcvdata);
45    if (ret == 0) {
46        System.out.printf("led on rcv data is: %d, %d, %d, %d, %d, %d\n",
47                rcvdata[0], rcvdata[1], rcvdata[2], rcvdata[3], rcvdata[4], rcvdata[5]);
48    }
49    robot.MoveJ(p1Joint, p1Desc, 0, 0, 100.0, 100.0, 100.0, exaxisPos, -1.0, 0, offdese);
50    robot.Sleep(4000);
51
52    // Desativar laser do cabeçote de moxabustão
53    ret = robot.SndRcvAxleGenComCmdData(6, led_off, 6, rcvdata);
54    if (ret == 0) {
55        System.out.printf("led off rcv data is: %d, %d, %d, %d, %d, %d \n",
56                rcvdata[0], rcvdata[1], rcvdata[2], rcvdata[3], rcvdata[4], rcvdata[5]);
57    }
58    robot.MoveJ(p2Joint, p2Desc, 0, 0, 100.0, 100.0, 100.0, exaxisPos, -1.0, 0, offdese);
59    robot.Sleep(1000);
60
61    System.out.println("***********************complete No. " + cnt + " SDK test*****************************");
62    cnt++;
63}
64}

11.96. Download do Arquivo Lua de Protocolo Aberto

1/**
2* @brief Download do arquivo Lua de protocolo aberto
3* @param fileName Nome do arquivo de protocolo aberto "CtrlDev_XXX.lua"
4* @param savePath Caminho para salvar o arquivo de protocolo aberto
5* @return Código de erro
6*/
7public int OpenLuaDownload(string fileName, string savePath)

11.97. Excluir Arquivo Lua de Protocolo Aberto

1/**
2* @brief Excluir arquivo Lua de protocolo aberto
3* @param [in] fileName Nome do arquivo lua de protocolo aberto a ser excluído "CtrlDev_XXX.lua"
4* @return Código de erro
5*/
6public int OpenLuaDelete(string fileName)

11.98. Excluir Todos os Arquivos Lua de Protocolo Aberto

1/**
2* @brief Excluir todos os arquivos Lua de protocolo aberto
3* @return Código de erro
4*/
5public int AllOpenLuaDelete()

11.99. Exemplo de Código para Upload, Download e Exclusão de Protocolo Aberto de Periférico do Controlador

 1public static int TestCtrlOpenLuaOperate(Robot robot) {
 2    int rtn;
 3    rtn = robot.OpenLuaUpload("D://zUP/openlua/CtrlDev_WELDING_A.lua");
 4    System.out.println("OpenLuaUpload rtn is " + rtn);
 5    rtn = robot.OpenLuaUpload("D://zUP/openlua/CtrlDev_SWDPOLISH.lua");
 6    System.out.println("OpenLuaUpload rtn is " + rtn);
 7    rtn = robot.OpenLuaDownload("CtrlDev_WELDING_A.lua", "D://zDOWN/");
 8    System.out.println("OpenLuaDownload rtn is " + rtn);
 9    rtn = robot.OpenLuaDownload("CtrlDev_SWDPOLISH.lua", "D://zDOWN/");
10    System.out.println("OpenLuaDownload rtn is " + rtn);
11
12    rtn = robot.SetCtrlOpenLUAName(0, "CtrlDev_WELDING_A.lua");
13    System.out.println("SetCtrlOpenLUAName rtn is " + rtn);
14    rtn = robot.SetCtrlOpenLUAName(1, "CtrlDev_SWDPOLISH.lua");
15    System.out.println("SetCtrlOpenLUAName rtn is " + rtn);
16
17    String[] names = new String[4];
18    rtn = robot.GetCtrlOpenLUAName(names);
19    System.out.println("GetCtrlOpenLUAName rtn is " + rtn + ", names: " +
20            names[0] + ", " + names[1] + ", " + names[2] + ", " + names[3]);
21
22    rtn = robot.LoadCtrlOpenLUA(1);
23    System.out.println("LoadCtrlOpenLUA rtn is " + rtn);
24    robot.Sleep(2000);
25    rtn = robot.UnloadCtrlOpenLUA(1);
26    System.out.println("UnloadCtrlOpenLUA rtn is " + rtn);
27
28    rtn = robot.OpenLuaDelete("CtrlDev_WELDING_A.lua");
29    System.out.println("OpenLuaDelete rtn is " + rtn);
30    rtn = robot.AllOpenLuaDelete();
31    System.out.println("AllOpenLuaDelete rtn is " + rtn);
32
33    robot.Sleep(1000);
34    return 0;
35}

11.100. Controlar o Movimento da Mão Destra

 1/**
 2* @brief Controlar o movimento da mão destra
 3* @param idstart Número da estação escrava inicial
 4* @param slaveNum Número de escravos
 5* @param pos Array de posições, comprimento 16, intervalo (-360~360)
 6* @param speed Array de percentuais de velocidade, comprimento 16, intervalo [0~100]
 7* @param force Array de percentuais de torque, comprimento 16, intervalo [0~100]
 8* @param max_time Tempo máximo de espera, intervalo [0~30000], unidade ms
 9* @return Código de erro
10*/
11public int SetDexterousHandsMove(int idstart, int slaveNum, double[] pos, int[] speed, int[] force, int max_time)

11.101. Controlar o Reset e Ativação da Mão Destra

1/**
2* @brief Controlar o reset e ativação da mão destra
3* @param id Número da estação escrava
4* @param act 0-reset 1-ativação
5* @return Código de erro
6*/
7public int SetDexterousHandsAct(int id, int act)

11.102. Limpar Erro da Mão Destra

1/**
2* @brief Limpar erro da mão destra
3* @return Código de erro
4*/
5public int ClearDexterousHandsError()

11.103. Definir as Funções de Controle de Ação da Mão Destra Habilitadas

1/**
2* @brief Define as funções de controle de ação da mão destra habilitadas
3* @param id Número da estação escrava da mão destra
4* @param func Array de funções, comprimento 32, Bit0-acionamento de aperto, Bit1-inicialização da garra, Bit2-definição de posição, Bit3-definição de velocidade, Bit4-definição de torque, Bit6-leitura do estado da garra, Bit7-leitura do estado de inicialização, Bit8-leitura do código de falha, Bit9-leitura da posição, Bit10-leitura da velocidade, Bit11-leitura do torque, Bit12-definição do número de rotações, Bit13-definição da velocidade de rotação, Bit14-definição do torque de rotação, Bit15-leitura do estado da garra rotativa, Bit16-leitura do estado de inicialização da rotação, Bit17-leitura do número de rotações, Bit18-leitura da velocidade de rotação, Bit19-leitura do torque de rotação, Bit20-definição de movimento síncrono multi-eixo, Bit21-comando de limpeza de falhas, Bit22-estado de operação de eixo único, Bit23-estado de operação de todos os eixos
5* @return Código de erro
6*/
7public int SetDexterousHandsFunc(int id, int[] func)

11.104. Obter as Funções de Controle de Ação da Mão Destra Habilitadas

1/**
2* @brief Obtém as funções de controle de ação da mão destra habilitadas
3* @param id Número do dispositivo da mão destra
4* @param func Array de parâmetros de saída, comprimento 32, Bit0-acionamento de aperto, Bit1-inicialização da garra, Bit2-definição de posição, Bit3-definição de velocidade, Bit4-definição de torque, Bit6-leitura do estado da garra, Bit7-leitura do estado de inicialização, Bit8-leitura do código de falha, Bit9-leitura da posição, Bit10-leitura da velocidade, Bit11-leitura do torque, Bit12-definição do número de rotações, Bit13-definição da velocidade de rotação, Bit14-definição do torque de rotação, Bit15-leitura do estado da garra rotativa, Bit16-leitura do estado de inicialização da rotação, Bit17-leitura do número de rotações, Bit18-leitura da velocidade de rotação, Bit19-leitura do torque de rotação, Bit20-definição de movimento síncrono multi-eixo, Bit21-comando de limpeza de falhas, Bit22-estado de operação de eixo único, Bit23-estado de operação de todos os eixos
5* @return Código de erro
6*/
7public int GetDexterousHandsFunc(int id, int[] func)

11.105. Exemplo de Código de Configuração e Movimento da Mão Destra no Efetuador Final

 1public static int TestDexterousHands(Robot robot) {
 2    int id = 1;
 3    int slaveNum = 4;
 4    int max_time = 8000;
 5    int[] speed = new int[16];
 6    int[] force = new int[16];
 7
 8    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 9    for (int i = 0; i < 16; i++) {
10        force[i] = (i < 4) ? 50 : 0;
11    }
12
13    final double[] pos = new double[16];
14
15    JointPos j1 = new JointPos(-91.876, -85.920, 109.279, -86.239, -96.664, -28.563);
16    JointPos j2 = new JointPos(-40.954, -85.920, 109.279, -86.239, -96.664, -28.563);
17    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
18    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
19
20    int ret = robot.ClearDexterousHandsError();
21    System.out.println("ClearDexterousHandsError -> " + ret);
22
23    int[] setFunc = new int[32];
24    setFunc[2] = 1;
25    setFunc[4] = 1;
26    setFunc[9] = 1;
27    setFunc[10] = 1;
28    setFunc[11] = 1;
29    setFunc[22] = 1;
30
31    ret = robot.SetDexterousHandsFunc(id, setFunc);
32
33    int[] getFunc = new int[32];
34    ret = robot.GetDexterousHandsFunc(id, getFunc);
35    System.out.println("GetDexterousHandsFunc -> " + ret);
36    if (ret == 0) {
37        for (int i = 0; i < getFunc.length; i++) {
38            System.out.print("  [" + i + "]=" + getFunc[i]);
39            if ((i + 1) % 8 == 0) {
40                System.out.println();
41            } else if (i < getFunc.length - 1) {
42                System.out.print(", ");
43            }
44        }
45        if (getFunc.length % 8 != 0) {
46            System.out.println();
47        }
48    }
49
50    ret = robot.SetDexterousHandsAct(id, 1);
51    if (ret != 0) {
52        return ret;
53    }
54
55    setPositions(pos, 20, 20, 20, 20);
56    ret = robot.SetDexterousHandsMove(id, slaveNum, pos, speed, force, max_time);
57    robot.Sleep(5000);
58
59    for (int iteration = 1; iteration <= 10; iteration++) {
60        robot.MoveJ(j1, 0, 0, 100, 100, 100, epos, -1, 0, offset_pos);
61
62        setPositions(pos, 10, 10, 10, 10);
63        ret = robot.SetDexterousHandsMove(id, slaveNum, pos, speed, force, max_time);
64        robot.Sleep(1000);
65
66        robot.MoveJ(j2, 0, 0, 100, 100, 100, epos, -1, 0, offset_pos);
67        setPositions(pos, 50, 50, 50, 50);
68        ret = robot.SetDexterousHandsMove(id, slaveNum, pos, speed, force, max_time);
69        robot.Sleep(1000);
70    }
71    return 0;
72}