6. Configurações Comuns do Robô

6.1. Definir Ponto de Referência da Ferramenta - Método dos Seis Pontos

Protótipo

SetToolPoint(point_num)

Descrição

Define o ponto de referência da ferramenta - método dos seis pontos

Parâmetros obrigatórios

  • point_num: Número do ponto, intervalo [1~6]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.2. Calcular Sistema de Coordenadas da Ferramenta - Método dos Seis Pontos

Protótipo

ComputeTool()

Descrição

Calcula o sistema de coordenadas da ferramenta - método dos seis pontos (após definir os seis pontos de referência da ferramenta)

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • tcp_pose=[x,y,z,rx,ry,rz]: Sistema de coordenadas da ferramenta

6.3. Definir Ponto de Referência da Ferramenta - Método dos Quatro Pontos

Protótipo

SetTcp4RefPoint(point_num)

Descrição

Define o ponto de referência da ferramenta - método dos quatro pontos

Parâmetros obrigatórios

  • point_num: Número do ponto, intervalo [1~4]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.4. Calcular Sistema de Coordenadas da Ferramenta - Método dos Quatro Pontos

Protótipo

ComputeTcp4()

Descrição

Calcula o sistema de coordenadas da ferramenta - método dos quatro pontos (após definir os quatro pontos de referência da ferramenta)

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • tcp_pose=[x,y,z,rx,ry,rz]: Sistema de coordenadas da ferramenta

6.5. Calcular Sistema de Coordenadas da Ferramenta com Base em Informações de Pontos

Novo na versão python: SDK-v2.0.8

Protótipo

ComputeToolCoordWithPoints(method, pos)

Descrição

Calcula o sistema de coordenadas da ferramenta com base em informações de pontos

Parâmetros obrigatórios

  • method: Método de cálculo; 0-método dos quatro pontos; 1-método dos seis pontos

  • pos: Grupo de posições das juntas, comprimento do array é 4 para o método dos quatro pontos e 6 para o método dos seis pontos

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • tcp_offset=[x,y,z,rx,ry,rz]: Sistema de coordenadas da ferramenta calculado com base nas informações dos pontos, unidades [mm][°]

6.6. Definir Sistema de Coordenadas da Ferramenta

Protótipo

SetToolCoord(id, t_coord, type, install, toolID, loadNum)

Descrição

Define o sistema de coordenadas da ferramenta

Parâmetros obrigatórios

  • id: Número do sistema de coordenadas, intervalo [1~15];

  • t_coord: Pose do ponto central da ferramenta em relação ao centro do flange da extremidade, unidades [mm][°];

  • type: 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas do sensor;

  • install: Posição de instalação, 0-extremidade do robô, 1-externo ao robô

  • toolID: ID da ferramenta

  • loadNum: Número da carga

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.7. Definir Lista de Sistemas de Coordenadas da Ferramenta

Protótipo

SetToolList(id, t_coord, type, install, loadNum)

Descrição

Define a lista de sistemas de coordenadas da ferramenta

Parâmetros obrigatórios

  • id: Número do sistema de coordenadas, intervalo [1~15];

  • t_coord: [x,y,z,rx,ry,rz] Pose do ponto central da ferramenta em relação ao centro do flange da extremidade, unidades [mm][°];

  • type: 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas do sensor;

  • install: Posição de instalação, 0-extremidade do robô, 1-externo ao robô

  • loadNum: Número da carga

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.8. Obter Sistema de Coordenadas da Ferramenta Atual

Protótipo

GetTCPOffset(flag=1)

Descrição

Obtém o sistema de coordenadas da ferramenta atual

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

  • flag: 0-bloqueante, 1-não bloqueante, padrão 1

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • tcp_offset=[x,y,z,rx,ry,rz]: Pose relativa do sistema de coordenadas da ferramenta atual, unidades [mm][°]

6.9. Exemplo de Código para Operações do Sistema de Coordenadas da Ferramenta do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6p1Desc = [186.331, 487.913, 209.850, 149.030, 0.688, -114.347]
 7p2Desc = [69.721, 535.073, 202.882, -144.406, -14.775, -89.012]
 8p3Desc = [146.861, 578.426, 205.598, 175.997, -36.178, -93.437]
 9p4Desc = [136.284, 509.876, 225.613, 178.987, 1.372, -100.696]
10p5Desc = [138.395, 505.972, 298.016, 179.134, 2.147, -101.110]
11p6Desc = [105.553, 454.325, 232.017, -179.426, 0.444, -99.952]
12p1Joint = [-127.876, -75.341, 115.417, -122.741, -59.820, 74.300]
13p2Joint = [-101.780, -69.828, 110.917, -125.740, -127.841, 74.300]
14p3Joint = [-112.851, -60.191, 86.566, -80.676, -97.463, 74.300]
15p4Joint = [-116.397, -76.281, 113.845, -128.611, -88.654, 74.299]
16p5Joint = [-116.814, -82.333, 109.162, -118.662, -88.585, 74.302]
17p6Joint = [-115.649, -84.367, 122.447, -128.663, -90.432, 74.303]
18exaxisPos = [0, 0, 0, 0]
19offdese = [0, 0, 0, 0, 0, 0]
20posJ = [p1Joint, p2Joint, p3Joint, p4Joint, p5Joint, p6Joint]
21rtn, coordRtn = robot.ComputeToolCoordWithPoints(1, posJ)
22print(f"ComputeToolCoordWithPoints    {rtn}  coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} {coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
23robot.MoveJ(joint_pos=p1Joint, tool=0, user=0, vel=100)
24robot.SetToolPoint(1)
25robot.MoveJ(joint_pos=p2Joint, tool=0, user=0, vel=100)
26robot.SetToolPoint(2)
27robot.MoveJ(joint_pos=p3Joint, tool=0, user=0, vel=100)
28robot.SetToolPoint(3)
29robot.MoveJ(joint_pos=p4Joint, tool=0, user=0, vel=100)
30robot.SetToolPoint(4)
31robot.MoveJ(joint_pos=p5Joint, tool=0, user=0, vel=100)
32robot.SetToolPoint(5)
33robot.MoveJ(joint_pos=p6Joint, tool=0, user=0, vel=100)
34robot.SetToolPoint(6)
35rtn, coordRtn = robot.ComputeTool()
36print(f"6 Point ComputeTool        {rtn}  coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} {coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
37robot.SetToolList(1, coordRtn, 0, 0, 0)
38robot.MoveJ(joint_pos=p1Joint, tool=0, user=0, vel=100)
39robot.SetTcp4RefPoint(1)
40robot.MoveJ(joint_pos=p2Joint, tool=0, user=0, vel=100)
41robot.SetTcp4RefPoint(2)
42robot.MoveJ(joint_pos=p3Joint, tool=0, user=0, vel=100)
43robot.SetTcp4RefPoint(3)
44robot.MoveJ(joint_pos=p4Joint, tool=0, user=0, vel=100)
45robot.SetTcp4RefPoint(4)
46rtn, coordRtn = robot.ComputeTcp4()
47print(f"4 Point ComputeTool        {rtn}  coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} {coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
48robot.SetToolCoord(2, coordRtn, 0, 0, 1, 0)
49rtn, getCoord = robot.GetTCPOffset(0)
50print(f"GetTCPOffset    {rtn}  coord is {getCoord[0]} {getCoord[1]} {getCoord[2]} {getCoord[3]} {getCoord[4]} {getCoord[5]}")
51robot.CloseRPC()

6.10. Definir Ponto de Referência da Ferramenta Externa - Método dos Três Pontos

Protótipo

SetExTCPPoint(point_num)

Descrição

Define o ponto de referência da ferramenta externa - método dos três pontos

Parâmetros obrigatórios

  • point_num: Número do ponto, intervalo [1~3]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.11. Calcular Sistema de Coordenadas da Ferramenta Externa - Método dos Três Pontos

Protótipo

ComputeExTCF(point_num)

Descrição

Calcula o sistema de coordenadas da ferramenta externa - método dos três pontos (após definir os três pontos de referência)

Parâmetros obrigatórios

  • point_num: Número do ponto, intervalo [1~3]

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • etcp=[x,y,z,rx,ry,rz]: Sistema de coordenadas da ferramenta externa

6.12. Definir Sistema de Coordenadas da Ferramenta Externa

Protótipo

SetExToolCoord(id, etcp, etool)

Descrição

Define o sistema de coordenadas da ferramenta externa

Parâmetros obrigatórios

  • id: Número do sistema de coordenadas, intervalo [0~14];

  • etcp: Sistema de coordenadas da ferramenta externa, unidades [mm][°];

  • etool: Sistema de coordenadas da ferramenta da extremidade, unidades [mm][°];

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.13. Definir Lista de Sistemas de Coordenadas da Ferramenta Externa

Protótipo

SetExToolList(id, etcp, etool)

Descrição

Define a lista de sistemas de coordenadas da ferramenta externa

Parâmetros obrigatórios

  • id: Número do sistema de coordenadas, intervalo [0~14];

  • etcp: Sistema de coordenadas da ferramenta externa, unidades [mm][°];

  • etool: Sistema de coordenadas da ferramenta da extremidade, unidades [mm][°];

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.14. Exemplo de Código para Operações do Sistema de Coordenadas da Ferramenta Externa do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6p1Desc = [-89.606, 779.517, 193.516, 178.000, 0.476, -92.484]
 7p1Joint = [-108.145, -50.137, 85.818, -125.599, -87.946, 74.329]
 8p2Desc = [-24.656, 850.384, 191.361, 177.079, -2.058, -95.355]
 9p2Joint = [-111.024, -41.538, 69.222, -114.913, -87.743, 74.329]
10p3Desc = [-99.813, 766.661, 241.878, -176.817, 1.917, -91.604]
11p3Joint = [-107.266, -56.116, 85.971, -122.560, -92.548, 74.331]
12exaxisPos = [0, 0, 0, 0]
13offdese = [0, 0, 0, 0, 0, 0]
14posTCP = [p1Desc, p2Desc, p3Desc]
15robot.MoveJ(joint_pos=p1Joint, tool=1, user=0, vel=50)
16robot.SetExTCPPoint(1)
17robot.MoveJ(joint_pos=p2Joint, tool=1, user=0, vel=50)
18robot.SetExTCPPoint(2)
19robot.MoveJ(joint_pos=p3Joint, tool=1, user=0, vel=50)
20robot.SetExTCPPoint(3)
21rtn, coordRtn = robot.ComputeExTCF()
22print(f"ComputeExTCF {rtn}  coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} {coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
23robot.SetExToolCoord(1, coordRtn, offdese)
24robot.SetExToolList(1, coordRtn, offdese)
25robot.CloseRPC()

6.15. Definir Ponto de Referência da Peça - Método dos Três Pontos

Protótipo

SetWObjCoordPoint(point_num)

Descrição

Define o ponto de referência da peça - método dos três pontos

Parâmetros obrigatórios

  • point_num: Número do ponto, intervalo [1~3]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.16. Calcular Sistema de Coordenadas da Peça - Método dos Três Pontos

Protótipo

ComputeWObjCoord(method, refFrame)

Descrição

Calcula o sistema de coordenadas da peça - método dos três pontos (após definir os três pontos de referência)

Parâmetros obrigatórios

  • method: Método de cálculo 0: origem-eixo x-eixo z, 1: origem-eixo x-plano xy

  • refFrame: Sistema de coordenadas de referência

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • wobj_pose=[x,y,z,rx,ry,rz]: Sistema de coordenadas da peça

6.17. Definir Sistema de Coordenadas da Peça

Protótipo

SetWObjCoord(id, coord, refFrame)

Descrição

Define o sistema de coordenadas da peça

Parâmetros obrigatórios

  • id: Número do sistema de coordenadas, intervalo [0~14];

  • coord: Pose do sistema de coordenadas da peça em relação ao centro do flange da extremidade, unidades [mm][°]

  • refFrame: Sistema de coordenadas de referência

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.18. Definir Lista de Sistemas de Coordenadas da Peça

Protótipo

SetWObjList(id, coord, refFrame)

Descrição

Define a lista de sistemas de coordenadas da peça

Parâmetros obrigatórios

  • id: Número do sistema de coordenadas, intervalo [0~14];

  • coord: Pose do sistema de coordenadas da peça em relação ao centro do flange da extremidade, unidades [mm][°]

  • refFrame: Sistema de coordenadas de referência

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.19. Calcular Sistema de Coordenadas da Peça com Base em Informações de Pontos

Novo na versão python: SDK-v2.0.8

Protótipo

ComputeWObjCoordWithPoints(method, pos, refFrame)

Descrição

Calcula o sistema de coordenadas da peça com base em informações de pontos

Parâmetros obrigatórios

  • method: Método de cálculo; 0: origem-eixo x-eixo z 1: origem-eixo x-plano xy

  • pos: Grupo de três posições TCP

  • refFrame: Sistema de coordenadas de referência

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • wobj_offset=[x,y,z,rx,ry,rz]: Sistema de coordenadas da peça calculado com base nas informações dos pontos, unidades [mm][°]

6.20. Obter Sistema de Coordenadas da Peça Atual

Protótipo

GetWObjOffset(flag=1)

Descrição

Obtém o sistema de coordenadas da peça atual

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

  • flag: 0-bloqueante, 1-não bloqueante, padrão 1

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • wobj_offset=[x,y,z,rx,ry,rz]: Pose relativa do sistema de coordenadas da peça atual, unidades [mm][°]

6.21. Exemplo de Código para Operações do Sistema de Coordenadas da Peça do Robô

 1from fairino import Robot
 2# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 3robot = Robot.RPC('192.168.58.2')
 4p1Desc = [-89.606, 779.517, 193.516, 178.000, 0.476, -92.484]
 5p2Desc = [-24.656, 850.384, 191.361, 177.079, -2.058, -95.355]
 6p3Desc = [-99.813, 766.661, 241.878, -176.817, 1.917, -91.604]
 7p1Joint = [-108.145, -50.137, 85.818, -125.599, -87.946, 74.329]
 8p2Joint = [-111.024, -41.538, 69.222, -114.913, -87.743, 74.329]
 9p3Joint = [-107.266, -56.116, 85.971, -122.560, -92.548, 74.331]
10exaxisPos = [0, 0, 0, 0]
11offdese = [0, 0, 0, 0, 0, 0]
12posTCP = [p1Desc, p2Desc, p3Desc]
13rtn, coordRtn = robot.ComputeWObjCoordWithPoints(1, posTCP, 0)
14print(f"ComputeWObjCoordWithPoints    {rtn}  coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} {coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
15robot.MoveJ(joint_pos=p1Joint, tool=1, user=0, vel=100)
16robot.SetWObjCoordPoint(1)
17robot.MoveJ(joint_pos=p2Joint, tool=1, user=0, vel=100)
18robot.SetWObjCoordPoint(2)
19robot.MoveJ(joint_pos=p3Joint, tool=1, user=0, vel=100)
20robot.SetWObjCoordPoint(3)
21rtn, coordRtn = robot.ComputeWObjCoord(1, 0)
22print(f"ComputeWObjCoord   {rtn}  coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} {coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
23robot.SetWObjCoord(1, coordRtn, 0)
24robot.SetWObjList(1, coordRtn, 0)
25rtn, getWobjDesc = robot.GetWObjOffset(0)
26print(f"GetWObjOffset    {rtn}  coord is {getWobjDesc[0]} {getWobjDesc[1]} {getWobjDesc[2]} {getWobjDesc[3]} {getWobjDesc[4]} {getWobjDesc[5]}")
27robot.CloseRPC()

6.22. Definir Velocidade Global

Protótipo

SetSpeed(vel)

Descrição

Define a velocidade global

Parâmetros obrigatórios

  • vel: Percentagem de velocidade, intervalo [0~100]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.23. Definir Aceleração do Robô

Novo na versão python: SDK-v2.0.4

Protótipo

SetOaccScale(acc)

Descrição

Define a aceleração do robô

Parâmetros obrigatórios

  • acc: Percentagem de aceleração do robô

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.24. Obter Velocidade Padrão

Protótipo

GetDefaultTransVel()

Descrição

Obtém a velocidade padrão

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • vel: Velocidade padrão, unidades [mm/s]

6.25. Definir Peso da Carga na Extremidade

Protótipo

SetLoadWeight(loadNum, weight)

Descrição

Define o peso da carga na extremidade. Uma configuração incorreta do peso da carga pode causar perda de controle do robô no modo de arrasto

Parâmetros obrigatórios

  • loadNum: Número da carga

  • weight: Unidade [kg]

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.26. Definir Coordenadas do Centro de Massa da Carga na Extremidade

Protótipo

SetLoadCoord(x, y, z, loadNum=0)

Descrição

Define as coordenadas do centro de massa da carga na extremidade. Uma configuração incorreta do centro de massa da carga pode causar perda de controle do robô no modo de arrasto

Parâmetros obrigatórios

  • x: Coordenada do centro de massa, unidade [mm]

  • y: Coordenada do centro de massa, unidade [mm]

  • z: Coordenada do centro de massa, unidade [mm]

Parâmetros padrão

  • loadNum: Número da carga, padrão 0

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.27. Obter Peso da Carga Atual

Protótipo

GetTargetPayload(flag=1)

Descrição

Obtém a massa da carga atual

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

  • flag: 0-bloqueante, 1-não bloqueante, padrão 1

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • weight: Peso da carga atual, unidade [kg]

6.28. Obter Centro de Massa da Carga Atual

Protótipo

GetTargetPayloadCog(flag=1)

Descrição

Obtém o centro de massa da carga atual

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

  • flag: 0-bloqueante, 1-não bloqueante, padrão 1

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • cog=[x,y,z]: Coordenadas do centro de massa atual, unidade [mm]

6.29. Definir Modo de Instalação do Robô - Instalação Fixa

Protótipo

SetRobotInstallPos(method)

Descrição

Define o modo de instalação do robô - instalação fixa. Uma configuração incorreta do modo de instalação pode causar perda de controle do robô no modo de arrasto

Parâmetros obrigatórios

  • method: 0-montagem normal, 1-montagem lateral, 2-montagem invertida

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.30. Definir Ângulo de Instalação do Robô - Instalação Livre

Protótipo

SetRobotInstallAngle(yangle, zangle)

Descrição

Define o ângulo de instalação do robô - instalação livre. Uma configuração incorreta do ângulo de instalação pode causar perda de controle do robô no modo de arrasto

Parâmetros obrigatórios

  • yangle: Ângulo de inclinação

  • zangle: Ângulo de rotação

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.31. Obter Ângulo de Instalação do Robô

Protótipo

GetRobotInstallAngle()

Descrição

Obtém o ângulo de instalação do robô

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • [yangle,zangle]: yangle-ângulo de inclinação, zangle-ângulo de rotação

6.32. Definir Valor de Variável do Sistema

Protótipo

SetSysVarValue(id, value)

Descrição

Define a variável do sistema

Parâmetros obrigatórios

  • id: Número da variável, intervalo [1~20];

  • value: Valor da variável

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.33. Obter Valor de Variável do Sistema

Protótipo

GetSysVarValue(id)

Descrição

Obtém o valor da variável do sistema

Parâmetros obrigatórios

  • id: Número da variável do sistema, intervalo [1~20]

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • var_value: Valor da variável do sistema

6.34. Exemplo de Código para Configurações Comuns do Robô

 1from fairino import Robot
 2# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 3robot = Robot.RPC('192.168.58.2')
 4for i in range(1, 100):
 5    robot.SetSpeed(i)
 6    robot.SetOaccScale(i)
 7    time.sleep(0.03)
 8error, defaultVel = robot.GetDefaultTransVel()
 9print(f"GetDefaultTransVel is {defaultVel}")
10for i in range(1, 21):
11    robot.SetSysVarValue(i, i + 0.5)
12    time.sleep(0.1)
13for i in range(1, 21):
14    value = robot.GetSysVarValue(i)
15    print(f"sys value {i} is: {value}")
16    time.sleep(0.1)
17robot.SetLoadWeight(0, 2.5)
18robot.SetLoadCoord(3.0, 4.0, 5.0)
19time.sleep(1)
20error, getLoad = robot.GetTargetPayload(0)
21error, getLoadTran = robot.GetTargetPayloadCog(0)
22print(f"get load is {getLoad}; get load cog is {getLoadTran[0]} {getLoadTran[1]} {getLoadTran[2]}")
23robot.SetRobotInstallPos(0)
24robot.SetRobotInstallAngle(15.0, 25.0)
25error, [anglex, angley] = robot.GetRobotInstallAngle()
26print(f"GetRobotInstallAngle x: {anglex}; y: {angley}")
27robot.CloseRPC()

6.35. Chave de Compensação de Atrito das Juntas

Protótipo

FrictionCompensationOnOff(state)

Descrição

Chave de compensação de atrito das juntas

Parâmetros obrigatórios

  • state: 0-desligar, 1-ligar

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.36. Definir Coeficiente de Compensação de Atrito das Juntas - Montagem Normal

Protótipo

SetFrictionValue_level(coeff)

Descrição

Define o coeficiente de compensação de atrito das juntas - instalação fixa - montagem normal

Parâmetros obrigatórios

  • coeff=[j1,j2,j3,j4,j5,j6]: Coeficientes de compensação das seis juntas

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.37. Definir Coeficiente de Compensação de Atrito das Juntas - Montagem Lateral

Protótipo

SetFrictionValue_wall(coeff)

Descrição

Define o coeficiente de compensação de atrito das juntas - instalação fixa - montagem lateral

Parâmetros obrigatórios

  • coeff=[j1,j2,j3,j4,j5,j6]: Coeficientes de compensação das seis juntas

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.38. Definir Coeficiente de Compensação de Atrito das Juntas - Montagem Invertida

Protótipo

SetFrictionValue_ceiling(coeff)

Descrição

Define o coeficiente de compensação de atrito das juntas - instalação fixa - montagem invertida

Parâmetros obrigatórios

  • coeff=[j1,j2,j3,j4,j5,j6]: Coeficientes de compensação das seis juntas

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.39. Definir Coeficiente de Compensação de Atrito das Juntas - Instalação Livre

Protótipo

SetFrictionValue_freedom(coeff)

Descrição

Define o coeficiente de compensação de atrito das juntas - instalação livre

Parâmetros obrigatórios

  • coeff=[j1,j2,j3,j4,j5,j6]: Coeficientes de compensação das seis juntas

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.40. Exemplo de Código para Configuração de Compensação de Atrito das Juntas do Robô

 1from fairino import Robot
 2# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 3robot = Robot.RPC('192.168.58.2')
 4lcoeff = [0.9, 0.9, 0.9, 0.9, 0.9, 0.9]
 5wcoeff = [0.4, 0.4, 0.4, 0.4, 0.4, 0.4]
 6ccoeff = [0.6, 0.6, 0.6, 0.6, 0.6, 0.6]
 7fcoeff = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
 8rtn = robot.FrictionCompensationOnOff(1)
 9print(f"FrictionCompensationOnOff rtn is {rtn}")
10rtn = robot.SetFrictionValue_level(lcoeff)
11print(f"SetFrictionValue_level rtn is {rtn}")
12rtn = robot.SetFrictionValue_wall(wcoeff)
13print(f"SetFrictionValue_wall rtn is {rtn}")
14rtn = robot.SetFrictionValue_ceiling(ccoeff)
15print(f"SetFrictionValue_ceiling rtn is {rtn}")
16rtn = robot.SetFrictionValue_freedom(fcoeff)
17print(f"SetFrictionValue_freedom rtn is {rtn}")
18robot.CloseRPC()

6.41. Consultar Código de Erro do Robô

Protótipo

GetRobotErrorCode()

Descrição

Consulta o código de erro do robô

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • [maincode subcode]: Código de erro do robô, maincode-código de erro principal, subcode-código de erro secundário

6.42. Limpar Estado de Erro

Protótipo

ResetAllError()

Descrição

Limpa o estado de erro, apenas erros reinicializáveis podem ser limpos

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.43. Exemplo de Código para Obter Estado de Falha e Limpar Erro do Robô

 1from fairino import Robot
 2import time
 3# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 4robot = Robot.RPC('192.168.58.2')
 5p1Joint = [-108.145, -50.137, 85.818, -125.599, -87.946, 74.329]
 6robot.MoveJ(joint_pos=p1Joint, tool=5, user=2, vel=50)
 7time.sleep(1)
 8error, [maincode, subcode] = robot.GetRobotErrorCode()
 9print(f"robot maincode is {maincode}; subcode is {subcode}")
10time.sleep(1)
11robot.ResetAllError()
12time.sleep(1)
13error, [maincode, subcode] = robot.GetRobotErrorCode()
14print(f"robot maincode is {maincode}; subcode is {subcode}")
15robot.CloseRPC()

6.44. Definir Parâmetros de Monitoramento de Temperatura e Velocidade da Ventoinha da Caixa de Controle de Larga Tensão

Novo na versão python: SDK-v2.1.3

Protótipo

SetWideBoxTempFanMonitorParam(enable, period)

Descrição

Define os parâmetros de monitoramento de temperatura e velocidade da ventoinha da caixa de controle de larga tensão

Parâmetros obrigatórios

  • enable: 0-desativar monitoramento; 1-ativar monitoramento

  • period: Período de monitoramento (s), intervalo 1-100

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.45. Obter Parâmetros de Monitoramento de Temperatura e Velocidade da Ventoinha da Caixa de Controle de Larga Tensão

Novo na versão python: SDK-v2.1.3

Protótipo

GetWideBoxTempFanMonitorParam()

Descrição

Obtém os parâmetros de monitoramento de temperatura e velocidade da ventoinha da caixa de controle de larga tensão

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • enable: 0-desativar monitoramento; 1-ativar monitoramento

  • period: Período de monitoramento (s), intervalo 1-100

6.46. Exemplo de Código para Obter Estado de Temperatura e Corrente da Ventoinha da Caixa de Controle de Larga Tensão

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6robot.SetWideBoxTempFanMonitorParam(1, 2)
 7error, enable, period = robot.GetWideBoxTempFanMonitorParam()
 8print(f"GetWideBoxTempFanMonitorParam enable is:{enable},period is:{period}")
 9for i in range(100):
10    error, pkg = robot.GetRobotRealTimeState()
11    print(f"robot ctrl box temp is:{pkg.wideVoltageCtrlBoxTemp},fan current is:{pkg.wideVoltageCtrlBoxFanCurrent}")
12    time.sleep(0.1)
13rtn = robot.SetWideBoxTempFanMonitorParam(0, 2)
14print(f"SetWideBoxTempFanMonitorParam rtn is:{rtn}")
15error, enable, period = robot.GetWideBoxTempFanMonitorParam()
16print(f"GetWideBoxTempFanMonitorParam enable is:{enable},period is:{period}")
17for i in range(100):
18    error, pkg = robot.GetRobotRealTimeState()
19    print(f"robot ctrl box temp is:{pkg.wideVoltageCtrlBoxTemp},fan current is:{pkg.wideVoltageCtrlBoxFanCurrent}")
20    time.sleep(0.1)
21robot.CloseRPC()

6.47. Definir Ponto de Calibração do Foco

Novo na versão python: SDK-v2.1.4

Protótipo

SetFocusCalibPoint(pointNum, point)

Descrição

Define o ponto de calibração do foco

Parâmetros obrigatórios

  • pointNum: Número do ponto de calibração do foco 1-8

  • point: Coordenadas do ponto de calibração

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.48. Calcular Resultado da Calibração do Foco

Novo na versão python: SDK-v2.1.4

Protótipo

ComputeFocusCalib(pointNum)

Descrição

Calcula o resultado da calibração do foco

Parâmetros obrigatórios

  • pointNum: Número de pontos de calibração

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • resultPos: Resultado da calibração XYZ

  • accuracy: Erro de precisão da calibração

6.49. Iniciar Rastreamento do Foco

Novo na versão python: SDK-v2.1.4

Protótipo

FocusStart(kp=50.0, kpredic=19.0, aMax=1440, vMax=180, type=0)

Descrição

Inicia o rastreamento do foco

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

  • kp: Parâmetro proporcional, padrão 50.0

  • kpredic: Parâmetro feedforward, padrão 19.0

  • aMax: Limite máximo de aceleração angular, padrão 1440°/s²

  • vMax: Limite máximo de velocidade angular, padrão 180°/s

  • type: Travar a direção do eixo X (0-vetor de entrada de referência; 1-horizontal; 2-vertical), padrão 0

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.50. Parar Rastreamento do Foco

Novo na versão python: SDK-v2.1.4

Protótipo

FocusEnd()

Descrição

Para o rastreamento do foco

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.51. Definir Coordenadas do Foco

Novo na versão python: SDK-v2.1.4

Protótipo

SetFocusPosition(pos)

Descrição

Define as coordenadas do foco

Parâmetros obrigatórios

  • pos: Coordenadas do foco XYZ

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.52. Exemplo de Código de Rastreamento do Foco do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6p1Desc = [186.331, 487.913, 209.850, 149.030, 0.688, -114.347]
 7p1Joint = [-127.876, -75.341, 115.417, -122.741, -59.820, 74.300]
 8p2Desc = [69.721, 535.073, 202.882, -144.406, -14.775, -89.012]
 9p2Joint = [-101.780, -69.828, 110.917, -125.740, -127.841, 74.300]
10p3Desc = [146.861, 578.426, 205.598, 175.997, -36.178, -93.437]
11p3Joint = [-112.851, -60.191, 86.566, -80.676, -97.463, 74.300]
12p4Desc = [136.284, 509.876, 225.613, 178.987, 1.372, -100.696]
13p4Joint = [-116.397, -76.281, 113.845, -128.611, -88.654, 74.299]
14p5Desc = [138.395, 505.972, 298.016, 179.134, 2.147, -101.110]
15p5Joint = [-116.814, -82.333, 109.162, -118.662, -88.585, 74.302]
16p6Desc = [105.553, 454.325, 232.017, -179.426, 0.444, -99.952]
17p6Joint = [-115.649, -84.367, 122.447, -128.663, -90.432, 74.303]
18exaxisPos = [0, 0, 0, 0]
19offdese = [0, 0, 100, 0, 0, 0]
20robot.MoveJ(joint_pos=p1Joint, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=exaxisPos, blendT=-1, offset_flag=0, offset_pos=offdese)
21robot.SetTcp4RefPoint(1)
22robot.MoveJ(joint_pos=p2Joint, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=exaxisPos, blendT=-1, offset_flag=0, offset_pos=offdese)
23robot.SetTcp4RefPoint(2)
24robot.MoveJ(joint_pos=p3Joint, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=exaxisPos, blendT=-1, offset_flag=0, offset_pos=offdese)
25robot.SetTcp4RefPoint(3)
26robot.MoveJ(joint_pos=p4Joint, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=exaxisPos, blendT=-1, offset_flag=0, offset_pos=offdese)
27robot.SetTcp4RefPoint(4)
28rtn, coordRtn = robot.ComputeTcp4()
29print(f"4 Point ComputeTool {rtn} coord is {coordRtn[0]} {coordRtn[1]} {coordRtn[2]} "
30      f"{coordRtn[3]} {coordRtn[4]} {coordRtn[5]}")
31robot.SetToolCoord(1, coordRtn, 0, 0, 1, 0)
32error, p1Desc = robot.GetForwardKin(p1Joint)
33error, p2Desc = robot.GetForwardKin(p2Joint)
34error, p3Desc = robot.GetForwardKin(p3Joint)
35robot.SetFocusCalibPoint(1, p1Desc)
36robot.SetFocusCalibPoint(2, p2Desc)
37robot.SetFocusCalibPoint(3, p3Desc)
38rtn, resultPos, accuracy = robot.ComputeFocusCalib(pointNum=3)
39print(f"ComputeFocusCalib coord is {rtn} {resultPos[0]} {resultPos[1]} {resultPos[2]} accuracy is {accuracy}")
40rtn = robot.SetFocusPosition(resultPos)
41error, p5Desc = robot.GetForwardKin(p5Joint)
42error, p6Desc = robot.GetForwardKin(p6Joint)
43robot.MoveL(desc_pos=p5Desc, tool=1, user=0, vel=10, acc=100, ovl=100, blendR=-1, blendMode=0, exaxis_pos=exaxisPos, search=0, offset_flag=1, offset_pos=offdese)
44robot.MoveL(desc_pos=p6Desc, tool=1, user=0, vel=10, acc=100, ovl=100, blendR=-1, blendMode=0, exaxis_pos=exaxisPos, search=0, offset_flag=1, offset_pos=offdese)
45robot.FocusStart(50, 19, 710, 90, 0)
46robot.MoveL(desc_pos=p5Desc, tool=1, user=0, vel=10, acc=100, ovl=100, blendR=-1, blendMode=0, exaxis_pos=exaxisPos, search=0, offset_flag=1, offset_pos=offdese)
47robot.MoveL(desc_pos=p6Desc, tool=1, user=0, vel=10, acc=100, ovl=100, blendR=-1, blendMode=0, exaxis_pos=exaxisPos, search=0, offset_flag=1, offset_pos=offdese)
48robot.FocusEnd()
49robot.CloseRPC()

6.53. Ativar Função de Calibração de Sensibilidade do Sensor de Torque das Juntas

Novo na versão python: SDK-v2.1.7

Protótipo

JointSensitivityEnable(status)

Descrição

Ativa a função de calibração de sensibilidade do sensor de torque das juntas

Parâmetros obrigatórios

  • status: 0-desativar; 1-ativar

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.54. Coleta de Dados de Sensibilidade do Sensor de Torque das Juntas

Novo na versão python: SDK-v2.1.7

Protótipo

JointSensitivityCollect()

Descrição

Coleta de dados de sensibilidade do sensor de torque das juntas

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.55. Obter Resultado da Calibração de Sensibilidade do Sensor de Torque das Juntas

Novo na versão python: SDK-v2.1.7

Protótipo

JointSensitivityCalibration()

Descrição

Obtém o resultado da calibração de sensibilidade do sensor de torque das juntas

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • calibResult: Sensibilidade das juntas j1~j6 [0-1]

  • linearityn: Linearidade das juntas j1~j6 [0-1]

6.56. Obter Erro de Histerese do Sensor de Torque das Juntas

Protótipo

JointHysteresisError()

Descrição

Obtém o erro de histerese do sensor de torque das juntas

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • hysteresisError: Erro de histerese das juntas j1~j6

6.57. Obter Repetibilidade do Sensor de Torque das Juntas

Protótipo

JointRepeatability()

Descrição

Obtém a repetibilidade do sensor de torque das juntas

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • repeatability: Repetibilidade das juntas j1~j6

6.58. Definir Parâmetros do Sensor de Força das Juntas

Protótipo

SetAdmittanceParams(M, B, K, threshold, sensitivity, setZeroFlag)

Descrição

Define os parâmetros do sensor de força das juntas

Parâmetros obrigatórios

  • M: Coeficientes de massa J1-J6 [0.001 ~ 10]

  • B: Coeficientes de amortecimento J1-J6 [0.001 ~ 10]

  • K: Coeficientes de rigidez J1-J6 [0.001 ~ 10]

  • threshold: Limiar de controle de força, Nm

  • sensitivity: Sensibilidade, Nm/V, [0 ~ 10]

  • setZeroFlag: Flag de ativação da função; 0-desativar; 1-ativar; 2-registrar ponto zero na posição 1; 3-registrar ponto zero na posição 2

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

6.59. Exemplo de Código para Calibração Automática de Sensibilidade do Sensor de Torque das Juntas

  1from fairino import Robot
  2import time
  3robot = Robot.RPC('192.168.58.2')
  4rtn = robot.JointSensitivityEnable(0)
  5rtn = robot.JointSensitivityEnable(1)
  6print(f"JointSensitivityEnable rtn is {rtn}")
  7curJPos = [0.0] * 6
  8rtn, curJPos = robot.GetActualJointPosDegree(0)
  9epos = [0.0] * 4
 10offset_pos = [0.0] * 6
 11jointPos1 = [curJPos[0], 0.0, 0.0, -90.0, 0.02, curJPos[5]]
 12descPos1 = [0.0] * 6
 13rtn, descPos1 = robot.GetForwardKin(jointPos1)
 14robot.MoveJ(joint_pos=jointPos1, desc_pos=descPos1, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 15time.sleep(0.2)
 16rtn = robot.JointSensitivityCollect()
 17print(f"JointSensitivityCollect 1 rtn is {rtn}")
 18time.sleep(0.1)
 19jointPos2 = [curJPos[0], -30.0, 0.0, -90.0, 0.02, curJPos[5]]
 20descPos2 = [0.0] * 6
 21rtn, descPos2 = robot.GetForwardKin(jointPos2)
 22robot.MoveJ(joint_pos=jointPos2, desc_pos=descPos2, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 23time.sleep(0.1)
 24rtn = robot.JointSensitivityCollect()
 25print(f"JointSensitivityCollect 2 rtn is {rtn}")
 26time.sleep(0.1)
 27jointPos3 = [curJPos[0], -60.0, 0.0, -90.0, 0.02, curJPos[5]]
 28descPos3 = [0.0] * 6
 29rtn, descPos3 = robot.GetForwardKin(jointPos3)
 30robot.MoveJ(joint_pos=jointPos3, desc_pos=descPos3, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 31time.sleep(0.1)
 32rtn = robot.JointSensitivityCollect()
 33print(f"JointSensitivityCollect 3 rtn is {rtn}")
 34time.sleep(0.1)
 35jointPos4 = [curJPos[0], -90.0, 0.0, -90.0, 0.02, curJPos[5]]
 36descPos4 = [0.0] * 6
 37rtn, descPos4 = robot.GetForwardKin(jointPos4)
 38robot.MoveJ(joint_pos=jointPos4, desc_pos=descPos4, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 39time.sleep(0.1)
 40rtn = robot.JointSensitivityCollect()
 41print(f"JointSensitivityCollect 4 rtn is {rtn}")
 42time.sleep(0.1)
 43jointPos5 = [curJPos[0], -120.0, 0.0, -90.0, 0.02, curJPos[5]]
 44descPos5 = [0.0] * 6
 45rtn, descPos5 = robot.GetForwardKin(jointPos5)
 46robot.MoveJ(joint_pos=jointPos5, desc_pos=descPos5, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 47time.sleep(0.1)
 48rtn = robot.JointSensitivityCollect()
 49print(f"JointSensitivityCollect 5 rtn is {rtn}")
 50time.sleep(0.1)
 51jointPos6 = [curJPos[0], -150.0, 0.0, -90.0, 0.02, curJPos[5]]
 52descPos6 = [0.0] * 6
 53rtn, descPos6 = robot.GetForwardKin(jointPos6)
 54robot.MoveJ(joint_pos=jointPos6, desc_pos=descPos6, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 55time.sleep(0.1)
 56rtn = robot.JointSensitivityCollect()
 57print(f"JointSensitivityCollect 6 rtn is {rtn}")
 58time.sleep(0.1)
 59jointPos7 = [curJPos[0], -180.0, 0.0, -90.0, 0.02, curJPos[5]]
 60descPos7 = [0.0] * 6
 61rtn, descPos7 = robot.GetForwardKin(jointPos7)
 62robot.MoveJ(joint_pos=jointPos7, desc_pos=descPos7, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 63time.sleep(0.1)
 64rtn = robot.JointSensitivityCollect()
 65print(f"JointSensitivityCollect 7 rtn is {rtn}")
 66time.sleep(0.1)
 67robot.MoveJ(joint_pos=jointPos6, desc_pos=descPos6, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 68time.sleep(0.1)
 69rtn = robot.JointSensitivityCollect()
 70print(f"JointSensitivityCollect 8 rtn is {rtn}")
 71time.sleep(0.1)
 72robot.MoveJ(joint_pos=jointPos5, desc_pos=descPos5, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 73time.sleep(0.1)
 74rtn = robot.JointSensitivityCollect()
 75print(f"JointSensitivityCollect 9 rtn is {rtn}")
 76time.sleep(0.1)
 77robot.MoveJ(joint_pos=jointPos4, desc_pos=descPos4, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 78time.sleep(0.1)
 79rtn = robot.JointSensitivityCollect()
 80print(f"JointSensitivityCollect 10 rtn is {rtn}")
 81time.sleep(0.1)
 82robot.MoveJ(joint_pos=jointPos3, desc_pos=descPos3, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 83time.sleep(0.1)
 84rtn = robot.JointSensitivityCollect()
 85print(f"JointSensitivityCollect 11 rtn is {rtn}")
 86time.sleep(0.1)
 87robot.MoveJ(joint_pos=jointPos2, desc_pos=descPos2, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 88time.sleep(0.1)
 89rtn = robot.JointSensitivityCollect()
 90print(f"JointSensitivityCollect 12 rtn is {rtn}")
 91time.sleep(0.1)
 92robot.MoveJ(joint_pos=jointPos1, desc_pos=descPos1, tool=0, user=0, vel=100, acc=100, ovl=100, exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 93time.sleep(0.2)
 94rtn = robot.JointSensitivityCollect()
 95print(f"JointSensitivityCollect 13 rtn is {rtn}")
 96time.sleep(0.1)
 97calibResult = [0.0] * 6
 98linearity = [0.0] * 6
 99rtn, calibResult, linearity = robot.JointSensitivityCalibration()
100print(f"JointSensitivityCalibration rtn is {rtn}")
101rtn = robot.JointSensitivityEnable(0)
102print(f"JointSensitivityEnable rtn is {rtn}")
103print(f"jointSensor Calib result is {calibResult[0]},{calibResult[1]},{calibResult[2]},{calibResult[3]},{calibResult[4]},{calibResult[5]}")
104print(f"jointSensor linearity is {linearity[0]},{linearity[1]},{linearity[2]},{linearity[3]},{linearity[4]},{linearity[5]}")
105hysteresisError = [0.0] * 6
106rtn, hysteresisError = robot.JointHysteresisError()
107print(f"JointHysteresisError result is {hysteresisError[0]},{hysteresisError[1]},{hysteresisError[2]},{hysteresisError[3]},{hysteresisError[4]},{hysteresisError[5]}")
108repeatability = [0.0] * 6
109rtn, repeatability = robot.JointRepeatability()
110print(f"JointRepeatability result is {repeatability[0]},{repeatability[1]},{repeatability[2]},{repeatability[3]},{repeatability[4]},{repeatability[5]}")
111M = [1.0] * 6
112B = [1.0] * 6
113K = [0.0] * 6
114threshold = [1.0] * 6
115setZeroFlag = 1
116rtn = robot.SetAdmittanceParams(M, B, K, threshold, calibResult, setZeroFlag)
117print(f"SetAdmittanceParams rtn is {rtn}")
118robot.CloseRPC()

6.60. Obter Número de Quadros com Erro nas 8 Portas Escravas do Robô

Novo na versão python: SDK-v2.1.7

Protótipo

GetSlavePortErrCounter()

Descrição

Obtém o número de quadros com erro nas 8 portas escravas do robô

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • inRecvErr: Número de quadros com erro de receção de entrada

  • inCRCErr: Número de quadros com erro CRC de entrada

  • inTransmitErr: Número de quadros com erro de transmissão de entrada

  • inLinkErr: Número de quadros com erro de ligação de entrada

  • outRecvErr: Número de quadros com erro de receção de saída

  • outCRCErr: Número de quadros com erro CRC de saída

  • outTransmitErr: Número de quadros com erro de transmissão de saída

  • outLinkErr: Número de quadros com erro de ligação de saída

6.61. Limpar Quadros com Erro nas Portas Escravas

Novo na versão python: SDK-v2.1.7

Protótipo

JointSensitivityEnable(slaveID)

Descrição

Limpa os quadros com erro nas portas escravas

Parâmetros obrigatórios

  • slaveID: ID da escrava 0~7

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.62. Exemplo de Código para Obter Quadros com Erro nas Portas Escravas

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6inRecvErr = [0] * 8
 7inCRCErr = [0] * 8
 8inTransmitErr = [0] * 8
 9inLinkErr = [0] * 8
10outRecvErr = [0] * 8
11outCRCErr = [0] * 8
12outTransmitErr = [0] * 8
13outLinkErr = [0] * 8
14rtn, inRecvErr, inCRCErr, inTransmitErr, inLinkErr, outRecvErr, outCRCErr, outTransmitErr, outLinkErr = robot.GetSlavePortErrCounter()
15for i in range(8):
16    if inRecvErr[i] != 0:
17        print(f"inRecvErr {i} is {inRecvErr[i]}")
18    if inCRCErr[i] != 0:
19        print(f"inCRCErr {i} is {inCRCErr[i]}")
20    if inTransmitErr[i] != 0:
21        print(f"inTransmitErr {i} is {inTransmitErr[i]}")
22    if inLinkErr[i] != 0:
23        print(f"inLinkErr {i} is {inLinkErr[i]}")
24    if outRecvErr[i] != 0:
25        print(f"outRecvErr {i} is {outRecvErr[i]}")
26    if outCRCErr[i] != 0:
27        print(f"outCRCErr {i} is {outCRCErr[i]}")
28    if outTransmitErr[i] != 0:
29        print(f"outTransmitErr {i} is {outTransmitErr[i]}")
30    if outLinkErr[i] != 0:
31        print(f"outLinkErr {i} is {outLinkErr[i]}")
32print("others has no err!")
33for i in range(8):
34    robot.SlavePortErrCounterClear(i)
35robot.CloseRPC()

6.63. Definir Coeficiente de Feedforward de Velocidade por Eixo

Novo na versão python: SDK-v2.1.7

Protótipo

SetVelFeedForwardRatio(radio)

Descrição

Define o coeficiente de feedforward de velocidade por eixo

Parâmetros obrigatórios

  • radio: Coeficiente de feedforward de velocidade por eixo

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro

6.64. Obter Coeficiente de Feedforward de Velocidade por Eixo

Novo na versão python: SDK-v2.1.7

Protótipo

GetVelFeedForwardRatio()

Descrição

Obtém o coeficiente de feedforward de velocidade por eixo

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • radio: Coeficiente de feedforward de velocidade por eixo

6.65. Exemplo de Código do Coeficiente de Feedforward de Velocidade do Robô

 1from fairino import Robot
 2import time
 3import threading
 4# Estabelece conexão com o controlador do robô, retorna um objeto robô se a conexão for bem-sucedida
 5robot = Robot.RPC('192.168.58.2')
 6setRadio = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
 7robot.SetVelFeedForwardRatio(setRadio)
 8getRadio = [0.0] * 6
 9rtn, getRadio = robot.GetVelFeedForwardRatio()
10print(f"{getRadio[0]},{getRadio[1]},{getRadio[2]},{getRadio[3]},{getRadio[4]},{getRadio[5]}")
11robot.CloseRPC()

6.66. Calibração TCP do Sensor Fotoelétrico - Calcular RPY da Ferramenta

Protótipo

TCPComputeRPY(Btool, Etool, sensor, radius, dz)

Descrição

Calibração TCP do sensor fotoelétrico - calcular RPY da ferramenta

Parâmetros obrigatórios

  • Btool: Posição cartesiana do robô

  • Etool: Valor atual do sistema de coordenadas da ferramenta

  • Btsenserool: Valor atual do sistema de coordenadas do sensor (não disponível no momento)

  • radius: Raio do movimento circular mm (não disponível no momento)

  • dz: Distância de movimento na direção negativa do eixo z do sistema de coordenadas base; quando dz = 10000, a função retorna diretamente o RPY da ferramenta

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

6.67. Calibração TCP do Sensor Fotoelétrico - Calcular XYZ da Ferramenta

Protótipo

TCPComputeXYZ(select, originDirection, pos1, pos2, pos3, pos4)

Descrição

Calibração TCP do sensor fotoelétrico - calcular XYZ da ferramenta

Parâmetros obrigatórios

  • select: 0-calcular TCP da ferramenta; 1-calcular origem do sensor; 2-calcular postura do sensor; 3-retornar diretamente o TCP da ferramenta; 4-registrar o sistema de coordenadas atual da peça e da ferramenta

  • originDirection: 0-Direção X; 1-Direção Y; 2-Direção Z

  • pos1: Posição cartesiana do robô 1

  • pos2: Posição cartesiana do robô 2

  • pos3: Posição cartesiana do robô 3

  • pos4: Posição cartesiana do robô 4

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • Valor de retorno (se a chamada for bem-sucedida) TCP: valor XYZ da ferramenta

6.68. Calibração TCP do Sensor Fotoelétrico - Iniciar Gravação da Posição do Centro do Flange da Extremidade

Protótipo

TCPRecordFlangePosStart()

Descrição

Calibração TCP do sensor fotoelétrico - iniciar gravação da posição do centro do flange da extremidade

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

6.69. Calibração TCP do Sensor Fotoelétrico - Parar Gravação da Posição do Centro do Flange da Extremidade

Protótipo

TCPRecordFlangePosEnd()

Descrição

Calibração TCP do sensor fotoelétrico - parar gravação da posição do centro do flange da extremidade

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

6.70. Calibração TCP do Sensor Fotoelétrico - Obter Posição do Centro da Ponta da Ferramenta

Protótipo

TCPGetRecordFlangePos()

Descrição

Calibração TCP do sensor fotoelétrico - obter posição do centro da ponta da ferramenta

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • Valor de retorno (se a chamada for bem-sucedida) TCP: posição do centro da ponta da ferramenta (x, y, z)

6.71. Calibração TCP do Sensor Fotoelétrico

Protótipo

PhotoelectricSensorTCPCalibration(self, luaFile, offsetX)

Descrição

Calibração TCP do sensor fotoelétrico

Parâmetros obrigatórios

  • luaFile: Caminho do programa lua para calibração automática: - “FR_CalibrateTheToolTcp.lua”;

  • offsetX: Deslocamento do ponto de ensino (x, y, z) mm

Parâmetros padrão

Nenhum

Valor de retorno

  • Código de erro: sucesso-0, falha-código de erro

  • Valor de retorno (se a chamada for bem-sucedida) TCP: valor XYZ da ferramenta

6.72. Exemplo de Código de Calibração TCP do Sensor Fotoelétrico

1from fairino import Robot
2import time
3robot = Robot.RPC('192.168.58.2')
4offset = [10.0, 10.0, 3.0]
5TCP = [0.0] * 6
6rtn, TCP = robot.PhotoelectricSensorTCPCalibration("FR_CalibrateTheToolTcp.lua", offset)
7print(f"PhotoelectricSensorTCPCalibration rtn is {rtn},{TCP[0]},{TCP[1]},{TCP[2]},{TCP[3]},{TCP[4]},{TCP[5]}")
8robot.CloseRPC()
9return 0

6.73. Definição de Velocidade em Tempo Real (Quadro de Comando, Baixa Latência)

Protótipo

SetSpeedInstant(self, vel)

Descrição

Definição de velocidade em tempo real (quadro de comando, baixa latência)

Parâmetros Obrigatórios

  • vel: Percentual de velocidade, intervalo [0~100]

Parâmetros Padrão

Nenhum

Valor de Retorno

  • Código de erro, 0-sucesso; diferente de zero-erro

6.74. Definir Deslocamento em Tempo Real da Oscilação

Protótipo

SetWeaveOffsetRT(self, offset)

Descrição

Define o deslocamento em tempo real da oscilação

Parâmetros Obrigatórios

  • offset: Deslocamento em tempo real [x,y,z,rx,ry,rz], unidade [mm, °]

Parâmetros Padrão

Nenhum

Valor de Retorno

  • Código de erro, 0-sucesso; diferente de zero-erro

6.75. Exemplo de Código de Teste de Velocidade e Deslocamento da Oscilação

  1from fairino import Robot
  2import time
  3import threading
  4
  5
  6def main():
  7    robot = Robot.RPC('192.168.58.2')
  8    time.sleep(0.5)
  9
 10    epos = [0.0, 0.0, 0.0, 0.0]
 11    offset_pos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 12
 13    j1 = [5.027, -84.331, -75.139, -103.690, 86.379, 20.794]
 14    d1 = [324.752, -83.339, 366.314, -172.321, -0.936, -106.047]
 15
 16    j2 = [-35.335, -117.598, -57.174, -95.234, 90.001, -19.560]
 17    d2 = [324.999, -355.439, 260.000, 179.995, 0.003, -105.775]
 18
 19    j3 = [59.787, -117.594, -57.183, -95.222, 90.006, 75.562]
 20    d3 = [324.998, 355.441, 260.002, 179.995, 0.003, -105.775]
 21
 22    rtn = 0
 23
 24    print("\nStep 1: MoveJ to start point")
 25    rtn = robot.MoveJ(joint_pos=j1, desc_pos=d1, tool=1, user=0, vel=100, acc=100, ovl=50,
 26                    exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 27    print(f"  MoveJ(j1) rtn={rtn}")
 28    time.sleep(0.5)
 29
 30    print("\nStep 2: MoveJ to weave entry point")
 31    rtn = robot.MoveJ(joint_pos=j2, desc_pos=d2, tool=1, user=0, vel=100, acc=100, ovl=50,
 32                    exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
 33    print(f"  MoveJ(j2) rtn={rtn}")
 34    time.sleep(0.5)
 35
 36    print("\nStep 3: WeaveStart + MoveL in background thread")
 37    robot.WeaveStart(0)
 38
 39    weave_running = True
 40    move_rtn = [0]
 41
 42    def weave_move_thread():
 43        rtn_val = robot.MoveL(joint_pos=j3, desc_pos=d3, tool=1, user=0, vel=100, acc=100, ovl=5,
 44                            blendR=-1, offset_flag=0, exaxis_pos=epos, search=0,
 45                            offset_pos=offset_pos, config=5, velAccParamMode=0, overSpeedStrategy=0, speedPercent=10)
 46        print(f"  MoveL(weave) thread finished, rtn={rtn_val}")
 47        move_rtn[0] = rtn_val
 48        nonlocal weave_running
 49        weave_running = False
 50
 51    weave_thread = threading.Thread(target=weave_move_thread)
 52    weave_thread.daemon = True
 53    weave_thread.start()
 54    time.sleep(0.5)
 55
 56    print("\nStep 4: SetSpeed test during weaving")
 57    speed_values = [20, 50, 80, 30, 60, 10]
 58    for speed in speed_values:
 59        if not weave_running:
 60            break
 61        rtn = robot.SetSpeedInstant(speed)
 62        print(f"  SetSpeed({speed}) -> rtn={rtn}")
 63        # rtn, pkg = robot.GetRobotRealTimeState()
 64        # print(f"target_TCP_CmpSpeed: [{', '.join([f'{x:.3f}' for x in pkg.target_TCP_CmpSpeed])}]")
 65        time.sleep(5)
 66
 67    time.sleep(5)
 68
 69    print("\nStep 5: SetWeaveOffsetRT test (50 iterations, delta=0.1)")
 70    accum_offset = 0.0
 71    for i in range(50):
 72        if not weave_running:
 73            break
 74        accum_offset += 1
 75        weave_offset = [0.0, 0.0, accum_offset, 0.0, 0.0, 0.0]
 76        rtn = robot.SetWeaveOffsetRT(weave_offset)
 77        rtn, pkg = robot.GetRobotRealTimeState()
 78        print(f"  [{i+1}/50] SetWeaveOffsetRT(x={accum_offset:.1f}) -> rtn={rtn}, "
 79            f"TCP_pos=({pkg.tl_cur_pos[0]:.2f},{pkg.tl_cur_pos[1]:.2f},{pkg.tl_cur_pos[2]:.2f})")
 80        time.sleep(0.1)
 81
 82    print("\nStep 6: Wait for weave MoveL, then WeaveEnd")
 83    weave_thread.join()
 84    robot.WeaveEnd(0)
 85    time.sleep(0.5)
 86
 87    print("\nStep 7: MoveL back to start")
 88    rtn = robot.MoveL(joint_pos=j1, desc_pos=d1, tool=1, user=0, vel=100, acc=100, ovl=50,
 89                    blendR=-1, offset_flag=0, exaxis_pos=epos, search=0,
 90                    offset_pos=offset_pos, config=50, velAccParamMode=0, overSpeedStrategy=0, speedPercent=10)
 91    print(f"  MoveL(back) rtn={rtn}")
 92
 93    rtn, pkg = robot.GetRobotRealTimeState()
 94    print(f"\n  Final robot state: main_code={pkg.main_code}, sub_code={pkg.sub_code}")
 95
 96    robot.CloseRPC()
 97
 98
 99if __name__ == "__main__":
100    main()