12. Controle de Força do Robô

12.1. Configuração do Sensor de Força

Protótipo

FT_SetConfig(company, device, softversion=0, bus=0)

Descrição

Configuração do sensor de força

Parâmetros obrigatórios

  • company: Fabricante do sensor, 17-Kunwei Technology, 19-Instituto de Pesquisa 11 da Aeroespacial, 20-Sensor ATI, 21-Zhongke Midian, 22-Weihang Minxin, 23-NBIT, 24-Xin Jingcheng (XJC), 26-NSR;

  • device: Número do dispositivo, Kunwei (0-KWR75B), Instituto de Pesquisa 11 (0-MCS6A-200-4), ATI (0-AXIA80-M8), Zhongke Midian (0-MST2010), Weihang Minxin (0-WHC6L-YB-10A), NBIT (0-XLH93003ACS), Xin Jingcheng XJC (0-XJC-6F-D82), NSR (0-NSR-FTSensorA);

Parâmetros padrão

  • softversion: Número da versão do software, não utilizado no momento, padrão 0;

  • bus: Posição do barramento onde o dispositivo está conectado, não utilizado no momento, padrão 0;

Valor de retorno

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

12.2. Obter Configuração do Sensor de Força

Protótipo

FT_GetConfig()

Descrição

Obtém a configuração do sensor de força

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • [number, company, device, softversion, bus]: number Número do sensor; company Fabricante do sensor de força, 17-Kunwei Technology, 19-Instituto de Pesquisa 11 da Aeroespacial, 20-Sensor ATI, 21-Zhongke Midian, 22-Weihang Minxin; device Número do dispositivo, Kunwei (0-KWR75B), Instituto de Pesquisa 11 (0-MCS6A-200-4), ATI (0-AXIA80-M8), Zhongke Midian (0-MST2010), Weihang Minxin (0-WHC6L-YB10A); softversion Número da versão do software, não utilizado no momento, padrão 0

12.3. Ativar Sensor de Força

Protótipo

FT_Activate(state)

Descrição

Ativa o sensor de força

Parâmetros obrigatórios

  • state: 0-reset, 1-ativar

Parâmetros padrão

Nenhum

Valor de retorno

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

12.4. Calibrar Zero do Sensor de Força

Protótipo

FT_SetZero(state)

Descrição

Calibra o zero do sensor de força

Parâmetros obrigatórios

  • state: 0-remover zero, 1-corrigir zero

Parâmetros padrão

Nenhum

Valor de retorno

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

12.5. Definir Sistema de Coordenadas de Referência do Sensor de Força

Alterado na versão python: SDK-v2.0.5

Protótipo

FT_SetRCS(ref, coord=[0,0,0,0,0,0])

Descrição

Define o sistema de coordenadas de referência do sensor de força

Parâmetros obrigatórios

  • ref: 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas base

Parâmetros padrão

  • coord: [x,y,z,rx,ry,rz] Valores do sistema de coordenadas personalizado, padrão [0,0,0,0,0,0]

Valor de retorno

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

12.6. Definir Peso da Carga sob o Sensor de Força

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

Protótipo

SetForceSensorPayload(weight)

Descrição

Define o peso da carga sob o sensor de força

Parâmetros obrigatórios

  • weight: Peso da carga em kg

Parâmetros padrão

Nenhum

Valor de retorno

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

12.7. Definir Centro de Massa da Carga sob o Sensor de Força

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

Protótipo

SetForceSensorPayloadCog(x, y, z)

Descrição

Define o centro de massa da carga sob o sensor de força

Parâmetros obrigatórios

  • x: Centro de massa da carga x mm

  • y: Centro de massa da carga y mm

  • z: Centro de massa da carga z mm

Parâmetros padrão

Nenhum

Valor de retorno

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

12.8. Obter Peso da Carga sob o Sensor de Força

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

Protótipo

GetForceSensorPayload()

Descrição

Obtém o peso da carga sob o sensor de força

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • weight: Peso da carga em kg

12.9. Obter Centro de Massa da Carga sob o Sensor de Força

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

Protótipo

GetForceSensorPayloadCog()

Descrição

Obtém o centro de massa da carga sob o sensor de força

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • x: Centro de massa da carga x mm

  • y: Centro de massa da carga y mm

  • z: Centro de massa da carga z mm

12.10. Calibração Automática do Zero do Sensor de Força

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

Protótipo

ForceSensorAutoComputeLoad()

Descrição

Calibração automática do zero do sensor de força

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • weight: Massa do sensor em kg

  • pos=[x,y,z]: Centro de massa do sensor em mm

12.11. Obter Dados de Força/Torque no Sistema de Coordenadas de Referência

Protótipo

FT_GetForceTorqueRCS()

Descrição

Obtém dados de força/torque no sistema de coordenadas de referência

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • data=[fx,fy,fz,tx,ty,tz]: Dados de força/torque no sistema de coordenadas de referência

12.12. Obter Dados Brutos de Força/Torque do Sensor de Força

Protótipo

FT_GetForceTorqueOrigin()

Descrição

Obtém dados brutos de força/torque do sensor de força

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • data=[fx,fy,fz,tx,ty,tz]: Dados brutos de força/torque do sensor de força

12.13. Exemplo de Código de Configuração e Calibração Automática do Sensor de Força

 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')
 4company = 24
 5device = 0
 6softversion = 0
 7bus = 1
 8index = 1
 9robot.FT_SetConfig(company, device, softversion, bus)
10time.sleep(1)
11error, [company, device, softversion, bus] = robot.FT_GetConfig()
12print(f"FT config:{company},{device},{softversion},{bus}")
13time.sleep(1)
14robot.FT_Activate(0)
15time.sleep(1)
16robot.FT_Activate(1)
17time.sleep(1)
18time.sleep(1)
19robot.FT_SetZero(0)
20time.sleep(1)
21error, ft = robot.FT_GetForceTorqueOrigin()
22print(f"ft origin:{ft[0]},{ft[1]},{ft[2]},{ft[3]},{ft[4]},{ft[5]}")
23robot.FT_SetZero(1)
24time.sleep(1)
25ftCoord = [0, 0, 0, 0, 0, 0]
26robot.FT_SetRCS(0, ftCoord)
27robot.SetForceSensorPayload(0.824)
28robot.SetForceSensorPayloadCog(0.778, 2.554, 48.765)
29error, weight = robot.GetForceSensorPayload()
30error, x, y, z = robot.GetForceSensorPayloadCog()
31print(f"the FT load is {weight}, {x} {y} {z}")
32robot.SetForceSensorPayload(0)
33robot.SetForceSensorPayloadCog(0, 0, 0)
34error, computeWeight, tran = robot.ForceSensorAutoComputeLoad()
35print(f"the result is weight {computeWeight} pos is {tran[0]} {tran[1]} {tran[2]}")
36robot.CloseRPC()

12.14. Registro de Identificação do Peso da Carga

Protótipo

FT_PdIdenRecord(tool_id)

Descrição

Registro de identificação do peso da carga

Parâmetros obrigatórios

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

Parâmetros padrão

Nenhum

Valor de retorno

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

12.15. Cálculo da Identificação do Peso da Carga

Protótipo

FT_PdIdenCompute()

Descrição

Cálculo da identificação do peso da carga

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • weight: Peso da carga, em kg

12.16. Registro de Identificação do Centro de Massa da Carga

Protótipo

FT_PdCogIdenRecord(tool_id, index)

Descrição

Registro de identificação do centro de massa da carga

Parâmetros obrigatórios

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

  • index: Número do ponto [1~3]

Parâmetros padrão

Nenhum

Valor de retorno

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

12.17. Cálculo da Identificação do Centro de Massa da Carga

Protótipo

FT_PdCogIdenCompute()

Descrição

Cálculo da identificação do centro de massa da carga

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • cog=[cogx, cogy, cogz]: Centro de massa da carga, em mm

12.18. Exemplo de Código de Identificação da Carga do Sensor de Força

 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')
 4company = 24
 5device = 0
 6softversion = 0
 7bus = 1
 8index = 1
 9robot.FT_SetConfig(company, device, softversion, bus)
10time.sleep(1)
11error, [company, device, softversion, bus] = robot.FT_GetConfig()
12print(f"FT config:{company},{device},{softversion},{bus}")
13time.sleep(1)
14robot.FT_Activate(0)
15time.sleep(1)
16robot.FT_Activate(1)
17time.sleep(1)
18robot.FT_SetZero(0)
19time.sleep(1)
20error, ft = robot.FT_GetForceTorqueOrigin()
21print(f"ft origin:{ft[0]},{ft[1]},{ft[2]},{ft[3]},{ft[4]},{ft[5]}")
22robot.FT_SetZero(1)
23time.sleep(1)
24tcoord = [0, 0, 35.0, 0, 0, 0]
25robot.SetToolCoord(10, tcoord, 1, 0, 0, 0)
26robot.FT_PdIdenRecord(10)
27time.sleep(1)
28error, weight = robot.FT_PdIdenCompute()
29print(f"payload weight:{weight}")
30desc_p1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
31desc_p2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
32desc_p3 = [-327.622, 402.230, 320.402, -178.067, 2.127, -46.207]
33robot.MoveCart(desc_p1, 0, 0, 100.0)
34time.sleep(1)
35robot.FT_PdCogIdenRecord(10, 1)
36robot.MoveCart(desc_p2, 0, 0, 100.0)
37time.sleep(1)
38robot.FT_PdCogIdenRecord(10, 2)
39robot.MoveCart(desc_p3, 0, 0, 100.0)
40time.sleep(1)
41robot.FT_PdCogIdenRecord(10, 3)
42time.sleep(1)
43error, cog = robot.FT_PdCogIdenCompute()
44print(f"FT_PdCogIdenCompute return {error}")
45print(f"cog:{cog[0]},{cog[1]},{cog[2]}")
46robot.CloseRPC()

12.19. Proteção contra Colisão

Protótipo

FT_Guard(flag, sensor_num, select, force_torque, max_threshold, min_threshold)

Descrição

Proteção contra colisão

Parâmetros obrigatórios

  • flag: 0-desativar proteção contra colisão, 1-ativar proteção contra colisão;

  • sensor_num: Número do sensor de força;

  • select: Seis graus de liberdade detectam colisão [fx,fy,fz,mx,my,mz], 0-não ativo, 1-ativo;

  • force_torque: Força/torque de detecção de colisão, em N ou Nm;

  • max_threshold: Limiar máximo;

  • min_threshold: Limiar mínimo;

  • Faixa de detecção de força/torque: (force_torque - min_threshold, force_torque + max_threshold)

Parâmetros padrão

Nenhum

Valor de retorno

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

12.20. Exemplo de Código de Proteção contra Colisão

 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')
 4company = 24
 5device = 0
 6softversion = 0
 7bus = 1
 8index = 1
 9robot.FT_SetConfig(company, device, softversion, bus)
10time.sleep(1)
11error, [company, device, softversion, bus] = robot.FT_GetConfig()
12print(f"FT config:{company},{device},{softversion},{bus}")
13time.sleep(1)
14robot.FT_Activate(0)
15time.sleep(1)
16robot.FT_Activate(1)
17time.sleep(1)
18robot.FT_SetZero(0)
19time.sleep(1)
20sensor_id = 1
21select = [1, 1, 1, 1, 1, 1]
22max_threshold = [10.0, 10.0, 10.0, 10.0, 10.0, 10.0]
23min_threshold = [5.0, 5.0, 5.0, 5.0, 5.0, 5.0]
24ft = None
25desc_p1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
26desc_p2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
27desc_p3 = [-327.622, 402.230, 320.402, -178.067, 2.127, -46.207]
28error = robot.FT_Guard(1, sensor_id, select, [0.0,0.0,0.0,0.0,0.0,0.0], max_threshold, min_threshold)
29robot.MoveCart(desc_p1, 0, 0, 100.0)
30robot.MoveCart(desc_p2, 0, 0, 100.0)
31robot.MoveCart(desc_p3, 0, 0, 100.0)
32robot.FT_Guard(0, sensor_id, select, [0.0,0.0,0.0,0.0,0.0,0.0], max_threshold, min_threshold)
33robot.CloseRPC()

12.21. Controle de Força Constante

Protótipo

FT_Control(flag, sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang, M=None, B=None, threshold=[0.2,0.2], adjustCoeff=[1.0,1.0], polishRadio=0, filter_Sign=0, posAdapt_sign=0, isNoBlock=0)

Descrição

Controle de força constante

Parâmetros obrigatórios

  • flag: Flag de ativação do controle de força constante, 0-desativar, 1-ativar;

  • sensor_id: Número do sensor de força;

  • select: Seis graus de liberdade são detectados [fx,fy,fz,mx,my,mz], 0-não ativo, 1-ativo;

  • ft: Força/torque detectado, em N ou Nm;

  • ft_pid: [f_p,f_i,f_d,m_p,m_i,m_d], parâmetros PID de força, parâmetros PID de torque;

  • adj_sign: Estado de ativação da adaptação, 0-desativar, 1-ativar;

  • ILC_sign: Estado de ativação do controle ILC, 0-parar, 1-treinar, 2-praticar;

  • max_dis: Distância máxima de ajuste;

  • max_ang: Ângulo máximo de ajuste;

Parâmetros padrão

  • M: Parâmetro de massa;

  • B: Parâmetro de amortecimento;

  • threshold: Limiares de ativação rx, ry [0-10], padrão 0.2;

  • adjustCoeff: Coeficientes de ajuste de torque rx, ry [0-1], padrão 1;

  • polishRadio: Raio do disco de polimento, em mm;

  • filter_Sign: Flag de ativação do filtro 0-desativar; 1-ativar, padrão 0-desativar;

  • posAdapt_sign: Flag de ativação da adaptação de postura 0-desativar; 1-ativar, padrão 0-desativar;

  • isNoBlock: Flag de bloqueio, 0-bloqueante; 1-não bloqueante, padrão 0-bloqueante;

Valor de retorno

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

12.22. Exemplo de Código de Controle de Força Constante com Amortecimento

 1from fairino import Robot
 2import time
 3robot = Robot.RPC('192.168.58.2')
 4sensor_id = 10
 5select = [0, 0, 1, 0, 0, 0]
 6ft_pid = [0.0008, 0.0, 0.0, 0.0, 0.0, 0.0]
 7adj_sign = 0
 8ILC_sign = 0
 9max_dis = 1000.0
10max_ang = 20.0
11ft = [0.0] * 6
12epos = [0.0] * 4
13j1 = [80.765, -98.795, 106.548, -97.734, -89.999, 94.842]
14j2 = [43.067, -84.429, 92.620, -98.175, -90.011, 57.144]
15desc_p1 = [5.009, -547.463, 262.053, -179.999, -0.019, 75.923]
16desc_p2 = [-347.966, -547.463, 262.048, -180.000, -0.019, 75.923]
17offset_pos = [0.0] * 6
18M = [2.0, 2.0]
19B = [15.0, 15.0]
20threshold = [1.0, 1.0]
21adjustCoeff = [1.0, 0.8]
22polishRadio = 0.0
23filter_Sign = 0
24posAdapt_sign = 1
25isNoBlock = 0
26ft[2] = -10.0
27while True:
28    rtn = robot.FT_Control(1, sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang, M, B, threshold, adjustCoeff, 0, 0, 1, 0)
29    print(f"FT_Control start rtn is {rtn}")
30    rtn = robot.MoveL(desc_pos=desc_p1, tool=1, user=0, vel=100, acc=100, ovl=100, blendR=-1, blendMode=0, exaxis_pos=epos, search=0, offset_flag=0, offset_pos=offset_pos)
31    rtn = robot.MoveL(desc_pos=desc_p2, tool=1, user=0, vel=100, acc=100, ovl=100, blendR=-1, blendMode=0, exaxis_pos=epos, search=0, offset_flag=0, offset_pos=offset_pos)
32    rtn = robot.FT_Control(0, sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang, M, B, threshold, adjustCoeff, 0, 0, 1, 0)
33    print(f"FT_Control end rtn is {rtn}")
34robot.CloseRPC()
35return 0

12.23. Busca em Espiral

Protótipo

FT_SpiralSearch(rcs, ft, dr=0.7, max_t_ms=60000, max_vel=5)

Descrição

Busca em espiral

Parâmetros obrigatórios

  • rcs: Sistema de coordenadas de referência, 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas base

  • ft: Limiar de força ou torque (0~100), em N ou Nm;

Parâmetros padrão

  • dr: Avanço do raio por volta, em mm, padrão 0.7;

  • max_t_ms: Tempo máximo de busca, em ms, padrão 60000;

  • max_vel: Velocidade linear máxima, em mm/s, padrão 5

Valor de retorno

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

12.24. Inserção Rotativa

Protótipo

FT_RotInsertion(rcs, ft, orn, angVelRot=3, angleMax=45, angAccmax=0, rotorn=1, strategy=0)

Descrição

Inserção rotativa

Parâmetros obrigatórios

  • rcs: Sistema de coordenadas de referência, 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas base;

  • ft: Limiar de força ou torque (0~100), em N ou Nm;

  • orn: Direção da força/torque, 1-ao longo do eixo Z, 2-em torno do eixo Z;

Parâmetros padrão

  • angVelRot: Velocidade angular de rotação, em °/s, padrão 3;

  • angleMax: Ângulo máximo de rotação, em °, padrão 45;

  • angAccmax: Aceleração angular máxima, em °/s², não utilizado no momento, padrão 0;

  • rotorn: Direção de rotação, 1-horário, 2-anti-horário, padrão 1;

  • strategy: Estratégia de tratamento quando força/torque não são detectados, 0-reportar erro; 1-avisar, continuar movimento

Valor de retorno

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

12.25. Exemplo de Código de Instruções de Busca em Espiral, Inserção Linear, etc.

 1from fairino import Robot
 2import time
 3robot = Robot.RPC('192.168.58.2')
 4j1 = [-11.904,-99.669,117.473,-108.616,-91.726,74.256]
 5j2 = [-45.615,-106.172,124.296,-107.151,-91.282,74.255]
 6j3 = [-29.777,-84.536,109.275,-114.075,-86.655,74.257]
 7j4 = [-31.154,-95.317,94.276,-88.079,-89.740,74.256]
 8desc_pos1 = [-419.524,-13.000,351.569,-178.118,0.314,3.833]
 9desc_pos2 = [-321.222,185.189,335.520,-179.030,-1.284,-29.869]
10desc_pos3 = [-487.434,154.362,308.576,176.600,0.268,-14.061]
11desc_pos4 = [-443.165,147.881,480.951,179.511,-0.775,-15.409]
12offset_pos = [0.0]*6
13epos = [0.0]*4
14tool = 0
15user = 0
16vel = 100.0
17acc = 100.0
18ovl = 100.0
19oacc = 100.0
20blendT = 0.0
21blendR = 0.0
22flag = 0
23search = 0
24blendMode = 0
25velAccMode = 0
26robot.SetSpeed(20)
27rtn = robot.MoveJ(joint_pos=j1, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
28print(f"movej errcode:{rtn}")
29rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, blendR=blendR, blendMode=blendMode, exaxis_pos=epos, search=search, offset_flag=flag, offset_pos=offset_pos, oacc=oacc, velAccParamMode=velAccMode)
30print(f"movel errcode:{rtn}")
31rtn = robot.MoveC(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, offset_flag_p=flag, offset_pos_p=offset_pos, desc_pos_t=desc_pos4, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc, exaxis_pos_t=epos, offset_flag_t=flag, offset_pos_t=offset_pos, ovl=ovl, blendR=blendR, oacc=oacc, velAccParamMode=velAccMode)
32print(f"movec errcode:{rtn}")
33rtn = robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
34print(f"movej errcode:{rtn}")
35rtn = robot.Circle(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, desc_pos_t=desc_pos1, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc, exaxis_pos_t=epos, ovl=ovl, offset_flag=flag, offset_pos=offset_pos, oacc=oacc, blendR=-1, velAccParamMode=velAccMode)
36print(f"circle errcode:{rtn}")
37rtn = robot.MoveCart(desc_pos=desc_pos4, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, blendT=blendT, config=-1)
38print(f"MoveCart errcode:{rtn}")
39rtn = robot.MoveJ(joint_pos=j1, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
40print(f"movej errcode:{rtn}")
41rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, blendR=blendR, blendMode=blendMode, exaxis_pos=epos, search=search, offset_flag=flag, offset_pos=offset_pos, config=-1, velAccParamMode=velAccMode)
42print(f"movel errcode:{rtn}")
43rtn = robot.MoveC(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, offset_flag_p=flag, offset_pos_p=offset_pos, desc_pos_t=desc_pos4, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc, exaxis_pos_t=epos, offset_flag_t=flag, offset_pos_t=offset_pos, ovl=ovl, blendR=blendR, config=-1, velAccParamMode=velAccMode)
44print(f"movec errcode:{rtn}")
45rtn = robot.MoveJ(joint_pos=j2, tool=tool, user=user, vel=vel, acc=acc, ovl=ovl, exaxis_pos=epos, blendT=blendT, offset_flag=flag, offset_pos=offset_pos)
46print(f"movej errcode:{rtn}")
47rtn = robot.Circle(desc_pos_p=desc_pos3, tool_p=tool, user_p=user, vel_p=vel, acc_p=acc, exaxis_pos_p=epos, desc_pos_t=desc_pos1, tool_t=tool, user_t=user, vel_t=vel, acc_t=acc, exaxis_pos_t=epos, ovl=ovl, offset_flag=flag, offset_pos=offset_pos, oacc=oacc, blendR=-1, velAccParamMode=velAccMode)
48print(f"circle errcode:{rtn}")
49robot.CloseRPC()
50return 0

12.26. Inserção Linear

Protótipo

FT_LinInsertion(rcs, ft, disMax, linorn, lin_v=1.0, lin_a=1.0)

Descrição

Inserção linear

Parâmetros obrigatórios

  • rcs: Sistema de coordenadas de referência, 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas base;

  • ft: Limiar de força ou torque (0~100), em N ou Nm;

  • disMax: Distância máxima de inserção, em mm;

  • linorn: Direção de inserção: 0-direção negativa, 1-direção positiva

Parâmetros padrão

  • lin_v: Velocidade linear, em mm/s, padrão 1;

  • lin_a: Aceleração linear, em mm/s², não utilizado no momento, padrão 1

Valor de retorno

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

12.27. Exemplo de Código de Instruções de Busca em Espiral, Inserção Linear, etc.

 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')
 4company = 24
 5device = 0
 6softversion = 0
 7bus = 1
 8index = 1
 9robot.FT_SetConfig(company, device, softversion, bus)
10time.sleep(1)
11error, [company, device, softversion, bus] = robot.FT_GetConfig()
12print(f"FT config:{company},{device},{softversion},{bus}")
13time.sleep(1)
14robot.FT_Activate(0)
15time.sleep(1)
16robot.FT_Activate(1)
17time.sleep(1)
18robot.FT_SetZero(0)
19time.sleep(1)
20status = 1
21sensor_num = 1
22gain = [0.0001, 0.0, 0.0, 0.0, 0.0, 0.0]
23adj_sign = 0
24ILC_sign = 0
25max_dis = 100.0
26max_ang = 5.0
27ft = [0.0,0.0,-10.0,0.0,0.0,0.0]
28rcs = 0
29dr = 0.7
30fFinish = 1.0
31t = 60000.0
32vmax = 3.0
33force_goal = 20.0
34lin_v = 0.0
35lin_a = 0.0
36disMax = 100.0
37linorn = 1
38angVelRot = 2.0
39forceInsertion = 1.0
40angleMax = 45
41orn = 1
42angAccmax = 0.0
43rotorn = 1
44select1 = [0, 0, 1, 1, 1, 0]
45robot.FT_Control(status, sensor_num, select1, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
46rtn = robot.FT_SpiralSearch(rcs, dr, fFinish, t, vmax)
47print(f"FT_SpiralSearch rtn is {rtn}")
48robot.FT_Control(0, sensor_num, select1, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
49select2 = [1, 1, 1, 0, 0, 0]
50gain[0] = 0.00005
51ft[2] = -30.0
52robot.FT_Control(1, sensor_num, select2, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
53rtn = robot.FT_LinInsertion(rcs, force_goal, lin_v, lin_a, disMax, linorn)
54print(f"FT_LinInsertion rtn is {rtn}")
55robot.FT_Control(0, sensor_num, select2, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
56select3 = [0, 0, 1, 1, 1, 0]
57ft[2] = -10.0
58gain[0] = 0.0001
59robot.FT_Control(1, sensor_num, select3, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
60rtn = robot.FT_RotInsertion(rcs, angVelRot, forceInsertion, angleMax, orn, angAccmax, rotorn)
61print(f"FT_RotInsertion rtn is {rtn}")
62robot.FT_Control(0, sensor_num, select3, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
63select4 = [1, 1, 1, 0, 0, 0]
64ft[2] = -30.0
65robot.FT_Control(1, sensor_num, select4, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
66rtn = robot.FT_LinInsertion(rcs, force_goal, lin_v, lin_a, disMax, linorn)
67print(f"FT_LinInsertion rtn is {rtn}")
68robot.FT_Control(0, sensor_num, select4, ft, gain, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
69robot.CloseRPC()

12.28. Localização de Superfície

Protótipo

FT_FindSurface(rcs, dir, axis, disMax, ft, lin_v=3.0, lin_a=0.0)

Descrição

Localização de superfície

Parâmetros obrigatórios

  • rcs: Sistema de coordenadas de referência, 0-sistema de coordenadas da ferramenta, 1-sistema de coordenadas base;

  • dir: Direção do movimento, 1-direção positiva, 2-direção negativa;

  • axis: Eixo de movimento, 1-x, 2-y, 3-z;

  • disMax: Distância máxima de busca, em mm;

  • ft: Limiar de força para terminar o movimento, em N;

Parâmetros padrão

  • lin_v: Velocidade linear de busca, em mm/s, padrão 3;

  • lin_a: Aceleração linear de busca, em mm/s², padrão 0;

Valor de retorno

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

12.29. Iniciar Cálculo da Posição do Plano Médio

Protótipo

FT_CalCenterStart()

Descrição

Iniciar cálculo da posição do plano médio

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

12.30. Finalizar Cálculo da Posição do Plano Médio

Protótipo

FT_CalCenterEnd()

Descrição

Finalizar cálculo da posição do plano médio

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

Código de erro: sucesso-0, falha-código de erro - pos=[x,y,z,rx,ry,rz]: Posição do plano médio

12.31. Exemplo de Código de Localização de Superfície

 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')
 5company = 24
 6device = 0
 7softversion = 0
 8bus = 1
 9index = 1
10robot.FT_SetConfig(company, device, softversion, bus)
11time.sleep(1)
12error, [company, device, softversion, bus] = robot.FT_GetConfig()
13print(f"FT config:{company},{device},{softversion},{bus}")
14time.sleep(1)
15robot.FT_Activate(0)
16time.sleep(1)
17robot.FT_Activate(1)
18time.sleep(1)
19robot.FT_SetZero(0)
20time.sleep(1)
21rcs = 0
22dir = 1
23axis = 1
24lin_v = 3.0
25lin_a = 0.0
26maxdis = 50.0
27ft_goal = 2.0
28desc_pos = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
29xcenter = [0, 0, 0, 0, 0, 0]
30ycenter = [0, 0, 0, 0, 0, 0]
31ft = [-2.0, 0.0, 0.0, 0.0, 0.0, 0.0]
32robot.MoveCart(desc_pos, 9, 0, 100.0)
33robot.FT_CalCenterStart()
34robot.FT_FindSurface(rcs, dir, axis, lin_v, lin_a, maxdis, ft_goal)
35robot.MoveCart(desc_pos, 9, 0)
36robot.WaitMs(1000)
37dir = 2
38robot.FT_FindSurface(rcs, dir, axis, lin_v, lin_a, maxdis, ft_goal)
39error, xcenter = robot.FT_CalCenterEnd()
40print(f"xcenter:{xcenter[0]},{xcenter[1]},{xcenter[2]},{xcenter[3]},{xcenter[4]},{xcenter[5]}")
41robot.MoveCart(xcenter, 9, 0, 60.0)
42robot.FT_CalCenterStart()
43dir = 1
44axis = 2
45lin_v = 6.0
46maxdis = 150.0
47robot.FT_FindSurface(rcs, dir, axis, lin_v, lin_a, maxdis, ft_goal)
48robot.MoveCart(desc_pos, 9, 0, 100.0)
49robot.WaitMs(1000)
50dir = 2
51robot.FT_FindSurface(rcs, dir, axis, lin_v, lin_a, maxdis, ft_goal)
52error, ycenter = robot.FT_CalCenterEnd()
53print(f"ycenter:{ycenter[0]},{ycenter[1]},{ycenter[2]},{ycenter[3]},{ycenter[4]},{ycenter[5]}")
54robot.MoveCart(ycenter, 9, 0, 60.0)
55robot.CloseRPC()

12.32. Ativar Controle de Compliance

Protótipo

FT_ComplianceStart(p, force)

Descrição

Ativar controle de compliance

Parâmetros obrigatórios

  • p: Coeficiente de ajuste de posição ou coeficiente de compliance

  • force: Limiar de força para ativação do compliance, em N

Parâmetros padrão

Nenhum

Valor de retorno

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

12.33. Desativar Controle de Compliance

Protótipo

FT_ComplianceStop()

Descrição

Desativar controle de compliance

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

12.34. Exemplo de Código de Controle de Compliance

 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')
 5company = 24
 6device = 0
 7softversion = 0
 8bus = 1
 9index = 1
10robot.FT_SetConfig(company, device, softversion, bus)
11time.sleep(1)
12error, [company, device, softversion, bus] = robot.FT_GetConfig()
13print(f"FT config:{company},{device},{softversion},{bus}")
14time.sleep(1)
15robot.FT_Activate(0)
16time.sleep(1)
17robot.FT_Activate(1)
18time.sleep(1)
19robot.FT_SetZero(0)
20time.sleep(1)
21flag = 1
22sensor_id = 1
23select = [1, 1, 1, 0, 0, 0]
24ft_pid = [0.0005, 0.0, 0.0, 0.0, 0.0, 0.0]
25adj_sign = 0
26ILC_sign = 0
27max_dis = 100.0
28max_ang = 0.0
29ft = [-10.0, -10.0, -10.0, 0.0, 0.0, 0.0]
30offset_pos = [0.0,0.0,0.0,0.0,0.0,0.0]  # Alternativa para DescPose(0, 0, 0, 0, 0, 0)
31epos = [0.0,0.0,0.0,0.0]  # Alternativa para ExaxisPos(0, 0, 0, 0)
32j1 = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]  # JointPos
33j2 = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
34desc_p1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]  # DescPose
35desc_p2 = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
36robot.FT_Control(flag, sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
37p = 0.00005
38force = 30.0
39rtn = robot.FT_ComplianceStart(p, force)
40print(f"FT_ComplianceStart rtn is {rtn}")
41count = 3
42while count > 0:
43    robot.MoveL(desc_pos=desc_p1, tool=0, user=0, vel=100.0)
44    robot.MoveL(desc_pos=desc_p2, tool=0, user=0, vel=100.0)
45    count -= 1
46robot.FT_ComplianceStop()
47print(f"FT_ComplianceStop rtn is {rtn}")
48flag = 0
49robot.FT_Control(flag, sensor_id, select, ft, ft_pid, adj_sign, ILC_sign, max_dis, max_ang, 0, 0, 0)
50robot.CloseRPC()

12.35. Inicialização do Filtro de Identificação da Carga

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

Protótipo

LoadIdentifyDynFilterInit()

Descrição

Inicialização do filtro de identificação da carga

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

12.36. Inicialização das Variáveis de Identificação da Carga

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

Protótipo

LoadIdentifyDynVarInit()

Descrição

Inicialização das variáveis de identificação da carga

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

12.37. Programa Principal de Identificação da Carga

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

Protótipo

LoadIdentifyMain(joint_torque, joint_pos, t)

Descrição

Programa principal de identificação da carga

Parâmetros obrigatórios

  • joint_torque: Torque das juntas j1-j6;

  • joint_pos: Posição das juntas j1-j6

  • t: Período de amostragem

Parâmetros padrão

Nenhum

Valor de retorno

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

12.38. Obter Resultado da Identificação da Carga

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

Protótipo

LoadIdentifyGetResult(gain)

Descrição

Obtém o resultado da identificação da carga

Parâmetros obrigatórios

  • gain: Coeficiente do termo gravitacional double[6], coeficiente do termo centrífugo double[6]

Parâmetros padrão

Nenhum

Valor de retorno

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

  • weight: Peso da carga

  • cog=[x,y,z]: Coordenadas do centro de massa da carga

12.39. Exemplo de Código de Identificação da Carga 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')
 5retval = robot.LoadIdentifyDynFilterInit()
 6print(f"LoadIdentifyDynFilterInit retval is: {retval}")
 7retval = robot.LoadIdentifyDynVarInit()
 8print(f"LoadIdentifyDynVarInit retval is: {retval}")
 9error, posJ = robot.GetActualJointPosDegree(0)
10posJ[1] += 10  # Modificar junta 2
11error, joint_toq = robot.GetJointTorques(0)
12joint_toq[1] += 2  # Modificar torque na junta 2
13tmpTorque = joint_toq.copy()
14retval = robot.LoadIdentifyMain(tmpTorque, posJ, 1)
15print(f"LoadIdentifyMain retval is: {retval}")
16gain = [0, 0.05, 0, 0, 0, 0, 0, 0.02, 0, 0, 0, 0]
17weight = [0.0]
18load_pos = [0.0, 0.0, 0.0]
19retval, weight, load_pos = robot.LoadIdentifyGetResult(gain)
20print(f"LoadIdentifyGetResult retval is: {retval} ; weight is {weight}  cog is {load_pos[0]} {load_pos[1]} {load_pos[2]}")
21robot.CloseRPC()

12.40. Arrasto Assistido por Sensor de Força

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

Protótipo

EndForceDragControl(status, asaptiveFlag, interfereDragFlag, ingularityConstraintsFlag, M, B, K, F, Fmax, Vmax, forceCollisionFlag=0)

Descrição

Arrasto assistido por sensor de força

Parâmetros obrigatórios

  • status: Estado de controle, 0-desativar; 1-ativar

  • asaptiveFlag: Flag de ativação de adaptação, 0-desativar; 1-ativar

  • interfereDragFlag: Flag de arrasto em zona de interferência, 0-desativar; 1-ativar

  • ingularityConstraintsFlag: Estratégia de ponto singular, 0-evitar; 1-atravessar

  • forceCollisionFlag: Flag de detecção de colisão do robô durante arrasto assistido; 0-desativar; 1-ativar

  • M=[m1,m2,m3,m4,m5,m6]: Coeficiente de inércia

  • B=[b1,b2,b3,b4,b5,b6]: Coeficiente de amortecimento

  • K=[k1,k2,k3,k4,k5,k6]: Coeficiente de rigidez

  • F=[f1,f2,f3,f4,f5,f6]: Limiar de força de arrasto 6D

  • Fmax: Limite máximo de força de arrasto

  • Vmax: Limite máximo de velocidade das juntas

Parâmetros padrão

Nenhum

Valor de retorno

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

12.41. Obter Estado do Interruptor de Arrasto do Sensor de Força

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

Protótipo

GetForceAndTorqueDragState()

Descrição

Obtém o estado do interruptor de arrasto do sensor de força

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • dragState: Estado de controle de arrasto assistido por sensor de força, 0-desativar; 1-ativar

  • sixDimensionalDragState: Estado de controle de arrasto assistido por força 6D, 0-desativar; 1-ativar

12.42. Ativação Automática do Sensor de Força Após Limpeza de Erro

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

Protótipo

SetForceSensorDragAutoFlag(status)

Descrição

Ativação automática do sensor de força após limpeza de erro

Parâmetros obrigatórios

  • status: Estado de controle, 0-desativar; 1-ativar

Parâmetros padrão

Nenhum

Valor de retorno

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

12.43. Exemplo de Código de Arrasto Assistido por Sensor de Força

 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')
 5robot.SetForceSensorDragAutoFlag(1)
 6M = [15.0, 15.0, 15.0, 0.5, 0.5, 0.1]
 7B = [150.0, 150.0, 150.0, 5.0, 5.0, 1.0]
 8K = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 9F = [10.0, 10.0, 10.0, 1.0, 1.0, 1.0]
10robot.EndForceDragControl(1, 0, 0, 0, M, B, K, F, 50, 100)
11time.sleep(5)
12drag_state = 0
13six_dimensional_drag_state = 0
14error, drag_state, six_dimensional_drag_state = robot.GetForceAndTorqueDragState()
15print(f"the drag state is {drag_state} {six_dimensional_drag_state}")
16robot.EndForceDragControl(0, 0, 0, 0, M, B, K, F, 50, 100)
17robot.CloseRPC()

12.44. Definir Interruptor e Parâmetros do Arrasto Híbrido de Força 6D e Impedância Articular

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

Protótipo

ForceAndJointImpedanceStartStop(status, impedanceFlag, lamdeDain, KGain, BGain, dragMaxTcpVel, dragMaxTcpOriVel)

Descrição

Define o interruptor e parâmetros do arrasto híbrido de força 6D e impedância articular

Parâmetros obrigatórios

  • status: Estado de controle, 0-desativar; 1-ativar

  • impedanceFlag: Flag de ativação de impedância, 0-desativar; 1-ativar

  • lamdeDain: [D1,D2,D3,D4,D5,D6] Ganho de arrasto

  • KGain: [K1,K2,K3,K4,K5,K6] Ganho de rigidez

  • BGain: [B1,B2,B3,B4,B5,B6] Ganho de amortecimento

  • dragMaxTcpVel: Velocidade linear máxima do TCP durante arrasto

  • dragMaxTcpOriVel: Velocidade angular máxima do TCP durante arrasto

Parâmetros padrão

Nenhum

Valor de retorno

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

12.45. Exemplo de Código de Arrasto Híbrido de Força 6D e Impedância Articular

 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')
 5robot.DragTeachSwitch(1)
 6lamde_dain = [3.0, 2.0, 2.0, 2.0, 2.0, 3.0]
 7k_gain = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 8b_gain = [150.0, 150.0, 150.0, 5.0, 5.0, 1.0]
 9rtn = robot.ForceAndJointImpedanceStartStop(1, 0, lamde_dain, k_gain, b_gain, 1000, 180)
10print(f"ForceAndJointImpedanceStartStop rtn is {rtn}")
11time.sleep(5)
12robot.DragTeachSwitch(0)
13rtn = robot.ForceAndJointImpedanceStartStop(0, 0, lamde_dain, k_gain, b_gain, 1000, 180)
14print(f"ForceAndJointImpedanceStartStop rtn is {rtn}")
15robot.CloseRPC()

12.46. Controle de Ativação/Desativação de Impedância

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

Protótipo

ImpedanceControlStartStop(status, workSpace, forceThreshold, m, b, k, maxV, maxVA, maxW, maxWA)

Descrição

Controle de ativação/desativação de impedância

Parâmetros obrigatórios

  • status: 0-desativar; 1-ativar

  • workSpace: 0-espaço articular; 1-espaço cartesiano

  • forceThreshold: Limiar de força de ativação (N)

  • m: Parâmetro de massa

  • b: Parâmetro de amortecimento

  • k: Parâmetro de rigidez

  • maxV: Velocidade linear máxima (mm/s)

  • maxVA: Aceleração linear máxima (mm/s²)

  • maxW: Velocidade angular máxima (°/s)

  • maxWA: Aceleração angular máxima (°/s²)

Parâmetros padrão

Nenhum

Valor de retorno

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

12.47. Exemplo de Código de Controle de Ativação/Desativação de Impedância

 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')
 4j1 = [102.622, -135.990, 120.769, -73.950, -90.848, 35.507]
 5j2 = [93.674, -80.062, 82.947, -92.199, -90.967, 26.559]
 6desc_pos1 = [136.552, -149.799, 449.532, 179.817, -1.172, 157.123]
 7desc_pos2 = [136.540, -561.048, 449.542, 179.819, -1.172, 157.122]
 8offset_pos = [0.0] * 6
 9epos = [0.0] * 4
10tool = 0
11user = 0
12vel = 100.0
13acc = 200.0
14ovl = 100.0
15blendT = -1.0
16blendR = -1.0
17flag = 0
18search = 0
19robot.SetSpeed(20)
20company = 17
21device = 0
22softversion = 0
23bus = 1
24robot.FT_SetConfig(company, device, softversion, bus)
25time.sleep(1)
26rnt, [company, device, softversion, bus] = robot.FT_GetConfig()
27print(f"FT config:{company},{device},{softversion},{bus}")
28time.sleep(1)
29robot.FT_Activate(0)
30time.sleep(1)
31robot.FT_Activate(1)
32time.sleep(1)
33time.sleep(1)
34robot.FT_SetZero(0)
35time.sleep(1)
36robot.FT_SetZero(1)
37time.sleep(1)
38forceThreshold = [30.0, 30.0, 30.0, 5.0, 5.0, 5.0]
39m = [0.1, 0.1, 0.1, 0.02, 0.02, 0.02]
40b = [1.0, 1.0, 1.0, 0.08, 0.08, 0.08]
41k = [0.0] * 6
42rtn = robot.ImpedanceControlStartStop(1, 1, forceThreshold, m, b, k, 1000, 500, 100, 100)
43print(f"ImpedanceControlStartStop errcode:{rtn}")
44rtn = robot.MoveL(desc_pos=desc_pos1, tool=tool, user=user, vel=vel, speedPercent=1)
45rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, speedPercent=1)
46rtn = robot.MoveL(desc_pos=desc_pos1, tool=tool, user=user, vel=vel, speedPercent=1)
47rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, speedPercent=1)
48rtn = robot.MoveL(desc_pos=desc_pos1, tool=tool, user=user, vel=vel, speedPercent=1)
49rtn = robot.MoveL(desc_pos=desc_pos2, tool=tool, user=user, vel=vel, speedPercent=1)
50print(f"movel errcode:{rtn}")
51robot.ImpedanceControlStartStop(0, 1, forceThreshold, m, b, k, 1000, 500, 100, 100)
52robot.CloseRPC()

12.48. Ativar Função de Compensação de Torque e Coeficientes de Compensação

Protótipo

SetCoderCompenParams(status, torqueCoeff)

Descrição

Ativa a função de compensação de torque e coeficientes de compensação

Parâmetros obrigatórios

  • status: Interruptor, 0-desativar; 1-ativar

  • torqueCoeff: Coeficientes de compensação de torque J1-J6 [0-1]

Parâmetros padrão

Nenhum

Valor de retorno

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