9. Reprodução de Trajetória do Robô

9.1. Definir Parâmetros de Gravação de Trajetória

Protótipo

SetTPDParam(name, period_ms, type=1, di_choose=0, do_choose=0)

Descrição

Define os parâmetros de gravação de trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória;

  • period_ms: Período de amostragem, valor fixo, 2ms ou 4ms ou 8ms;

Parâmetros padrão

  • type: Tipo de dado, 1-posição articular;

  • di_choose: Seleção DI, bits 0~7 correspondem a DI0~DI7 da caixa de controle, bits 8~9 correspondem a DI0~DI1 da extremidade, 0-não selecionar, 1-selecionar, padrão 0;

  • do_choose: Seleção DO, bits 0~7 correspondem a DO0~DO7 da caixa de controle, bits 8~9 correspondem a DO0~DO1 da extremidade, 0-não selecionar, 1-selecionar, padrão 0

Valor de retorno

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

9.2. Iniciar Gravação de Trajetória

Protótipo

SetTPDStart(name, period_ms, type=1, di_choose=0, do_choose=0)

Descrição

Inicia a gravação de trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória;

  • period_ms: Período de amostragem, valor fixo, 2ms ou 4ms ou 8ms;

Parâmetros padrão

  • type: Tipo de dado, 1-posição articular, padrão 1;

  • di_choose: Seleção DI, bits 0~7 correspondem a DI0~DI7 da caixa de controle, bits 8~9 correspondem a DI0~DI1 da extremidade, 0-não selecionar, 1-selecionar, padrão 0;

  • do_choose: Seleção DO, bits 0~7 correspondem a DO0~DO7 da caixa de controle, bits 8~9 correspondem a DO0~DO1 da extremidade, 0-não selecionar, 1-selecionar, padrão 0

Valor de retorno

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

9.3. Parar Gravação de Trajetória

Protótipo

SetWebTPDStop()

Descrição

Para a gravação de trajetória

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

9.4. Excluir Gravação de Trajetória

Protótipo

SetTPDDelete(name)

Descrição

Exclui a gravação de trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória

Parâmetros padrão

Nenhum

Valor de retorno

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

9.5. Exemplo de Código

 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')
 5type = 1
 6name = "tpd2025"
 7period_ms = 4
 8di_choose = 0
 9do_choose = 0
10robot.SetTPDParam(name, period_ms)
11robot.Mode(1)
12time.sleep(1)
13robot.DragTeachSwitch(1)
14robot.SetTPDStart(name, period_ms)
15print("SetTPDStart")
16time.sleep(10)
17robot.SetWebTPDStop()
18robot.DragTeachSwitch(0)
19robot.CloseRPC()

9.6. Pré-carregamento de Trajetória

Protótipo

LoadTPD(name)

Descrição

Pré-carregamento de trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória

Parâmetros padrão

Nenhum

Valor de retorno

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

9.7. Reprodução de Trajetória

Protótipo

MoveTPD(name, blend, ovl)

Descrição

Reprodução de trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória

  • blend: Se suaviza, 0-não suaviza, 1-suaviza

  • ovl: Fator de escala de velocidade, intervalo [0~100]

Parâmetros padrão

Nenhum

Valor de retorno

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

9.8. Obter Pose Inicial da Trajetória

Protótipo

GetTPDStartPose(name)

Descrição

Obtém a pose inicial da trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória

Parâmetros padrão

Nenhum

Valor de retorno

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

  • desc_pose=[x,y,z,rx,ry,rz]: Pose inicial da trajetória

9.9. Exemplo de Código de Gravação de Trajetória TPD 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')
 5type = 1
 6name = "tpd2025"
 7period_ms = 4
 8di_choose = 0
 9do_choose = 0
10ovl = 100.0
11blend = 0
12rtn = robot.LoadTPD(name)
13print(f"LoadTPD rtn is: {rtn}")
14error, start_pose = robot.GetTPDStartPose(name)
15print(f"start pose, xyz is: {start_pose[0]},{start_pose[1]},{start_pose[2]}. "
16      f"rpy is: {start_pose[3]},{start_pose[4]},{start_pose[5]}")
17robot.MoveCart(start_pose, 0, 0, 100, 100)
18time.sleep(1)
19rtn = robot.MoveTPD(name, blend, ovl)
20print(f"MoveTPD rtn is: {rtn}")
21time.sleep(5)
22robot.SetTPDDelete(name)
23robot.CloseRPC()

9.10. Pré-processamento de Trajetória

Protótipo

LoadTrajectoryJ(name, ovl, opt=1)

Descrição

Pré-processamento de trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória, ex: /fruser/traj/trajHelix_aima_1.txt;

  • ovl: Percentagem de escala de velocidade, intervalo [0~100];

Parâmetros padrão

  • opt: 1-ponto de controle, padrão 1

Valor de retorno

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

9.11. Reprodução de Trajetória

Protótipo

MoveTrajectoryJ()

Descrição

Reprodução de trajetória

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

9.12. Obter Pose Inicial da Trajetória

Protótipo

GetTrajectoryStartPose(name)

Descrição

Obtém a pose inicial da trajetória

Parâmetros obrigatórios

  • name: Nome da trajetória

Parâmetros padrão

Nenhum

Valor de retorno

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

  • desc_pose=[x,y,z,rx,ry,rz]: Pose inicial da trajetória

9.13. Obter Número do Ponto de Trajetória

Protótipo

GetTrajectoryPointNum()

Descrição

Obtém o número do ponto de trajetória

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

  • pnum: Número do ponto de trajetória

9.14. Definir Velocidade Durante a Execução da Trajetória

Protótipo

SetTrajectoryJSpeed(ovl, mode)

Descrição

Define a velocidade durante a execução da trajetória

Parâmetros Obrigatórios

  • ovl: Percentual de escala da velocidade, intervalo [0~100]

  • mode: 0-modo de redução de velocidade; 1-comutação direta

Parâmetros Padrão

Nenhum

Valor de Retorno

Código de erro Sucesso-0 Falha-errcode

9.15. Exemplo de Código para Definir Velocidade Durante a Execução da Trajetória

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Estabelecer conexão com o controlador do robô
 6robot = Robot.RPC('192.168.58.2')
 7
 8
 9def TestSetTrajectoryJSpeed(self):
10    # Carregar arquivo de trajetória
11    rtn = robot.TrajectoryJUpLoad("C://Users/lenovo/Desktop/trajHelix_aima_1.txt")
12    print(f"Upload TrajectoryJ A {rtn}")
13
14    traj_file_name = "/fruser/traj/trajHelix_aima_1.txt"
15    # Carregar arquivo de trajetória, parâmetros: nome do arquivo, percentual de velocidade, loop (1: loop)
16    rtn = robot.LoadTrajectoryJ(name=traj_file_name, ovl=100, opt=1)
17    print(f"LoadTrajectoryJ {traj_file_name}, rtn is: {rtn}")
18
19    # Obter pose inicial da trajetória
20    rtn, traj_start_pose = robot.GetTrajectoryStartPose(name=traj_file_name)
21    print(f"GetTrajectoryStartPose is: {rtn}")
22    print(
23        f"desc_pos:{traj_start_pose[0]},{traj_start_pose[1]},{traj_start_pose[2]},{traj_start_pose[3]},{traj_start_pose[4]},{traj_start_pose[5]}")
24
25    time.sleep(1)
26
27    # Definir velocidade base e mover para o ponto inicial da trajetória
28    robot.SetSpeed(50)
29    robot.MoveCart(desc_pos=traj_start_pose, tool=0, user=0, vel=100, acc=100, ovl=100, blendT=-1, config=-1)
30
31    # Obter número de pontos da trajetória
32    rtn, traj_num = robot.GetTrajectoryPointNum()
33    print(f"GetTrajectoryStartPose rtn is: {rtn}, traj num is: {traj_num}")
34
35    # Iniciar movimento da trajetória
36    rtn = robot.MoveTrajectoryJ()
37    print(f"MoveTrajectoryJ rtn is: {rtn}")
38
39    time.sleep(1)
40
41    # Obter estado em tempo real do robô
42    trajspeedMode = 0
43    while True:
44        rtn, pkg = robot.GetRobotRealTimeState()
45        if pkg.motion_done != 0:
46            break
47
48        # Definir velocidade da trajetória para 10%
49        rtn = robot.SetTrajectoryJSpeed(ovl=10.0, mode=trajspeedMode)
50        print(f"SetTrajectoryJSpeed is: {rtn}")
51
52        time.sleep(1)
53
54        # Definir velocidade da trajetória para 80%
55        rtn = robot.SetTrajectoryJSpeed(ovl=80.0, mode=trajspeedMode)
56        print(f"SetTrajectoryJSpeed is: {rtn}")
57
58        time.sleep(1)
59
60    # Fechar conexão
61    robot.CloseRPC()
62    time.sleep(1)
63
64
65# Chamar função de teste
66TestSetTrajectoryJSpeed(robot)

9.16. Definir Força e Torque Durante a Execução da Trajetória

Protótipo

SetTrajectoryJForceTorque(ft)

Descrição

Define a força e o torque durante a execução da trajetória

Parâmetros obrigatórios

  • ft=[fx,fy,fz,tx,ty,tz]: Unidades N e Nm

Parâmetros padrão

Nenhum

Valor de retorno

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

9.17. Definir Força na Direção X Durante a Execução da Trajetória

Protótipo

SetTrajectoryJForceFx(fx)

Descrição

Define a força na direção X durante a execução da trajetória

Parâmetros obrigatórios

  • ft: Força na direção X, unidade N

Parâmetros padrão

Nenhum

Valor de retorno

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

9.18. Definir Força na Direção Y Durante a Execução da Trajetória

Protótipo

SetTrajectoryJForceFx(fy)

Descrição

Define a força na direção Y durante a execução da trajetória

Parâmetros obrigatórios

  • fy: Força na direção Y, unidade N

Parâmetros padrão

Nenhum

Valor de retorno

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

9.19. Definir Força na Direção Z Durante a Execução da Trajetória

Protótipo

SetTrajectoryJForceFx(fz)

Descrição

Define a força na direção Z durante a execução da trajetória

Parâmetros obrigatórios

  • fz: Força na direção Z, unidade N

Parâmetros padrão

Nenhum

Valor de retorno

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

9.20. Definir Torque em Torno do Eixo X Durante a Execução da Trajetória

Protótipo

SetTrajectoryJTorqueTx(tx)

Descrição

Define o torque em torno do eixo X durante a execução da trajetória

Parâmetros obrigatórios

  • tx: Torque em torno do eixo X, unidade Nm

Parâmetros padrão

Nenhum

Valor de retorno

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

9.21. Definir Torque em Torno do Eixo Y Durante a Execução da Trajetória

Protótipo

SetTrajectoryJTorqueTx(ty)

Descrição

Define o torque em torno do eixo Y durante a execução da trajetória

Parâmetros obrigatórios

  • ty: Torque em torno do eixo Y, unidade Nm

Parâmetros padrão

Nenhum

Valor de retorno

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

9.22. Definir Torque em Torno do Eixo Z Durante a Execução da Trajetória

Protótipo

SetTrajectoryJTorqueTx(tz)

Descrição

Define o torque em torno do eixo Z durante a execução da trajetória

Parâmetros obrigatórios

  • tz: Torque em torno do eixo Z, unidade Nm

Parâmetros padrão

Nenhum

Valor de retorno

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

9.23. Upload de Arquivo de Trajetória J

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

Protótipo

TrajectoryJUpLoad(filePath)

Descrição

Upload de arquivo de trajetória J

Parâmetros obrigatórios

  • filePath: Caminho completo do arquivo de trajetória para upload, C://test/testJ.txt

Parâmetros padrão

Nenhum

Valor de retorno

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

9.24. Excluir Arquivo de Trajetória J

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

Protótipo

TrajectoryJDelete(filePath)

Descrição

Exclui arquivo de trajetória J

Parâmetros obrigatórios

  • filePath: Caminho completo do arquivo de trajetória para exclusão, C://test/testJ.txt

Parâmetros padrão

Nenhum

Valor de retorno

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

9.25. Exemplo de Código de Reprodução de Arquivo de Trajetória J 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')
 5rtn = robot.TrajectoryJUpLoad("D://zUP/traj.txt")
 6print(f"Upload TrajectoryJ A {rtn}")
 7traj_file_name = "/fruser/traj/traj.txt"
 8rtn = robot.LoadTrajectoryJ(traj_file_name, 100, 1)
 9print(f"LoadTrajectoryJ {traj_file_name}, rtn is: {rtn}")
10rtn, traj_start_pose = robot.GetTrajectoryStartPose(traj_file_name)
11print(f"GetTrajectoryStartPose is: {rtn}")
12print(f"desc_pos:{traj_start_pose[0]},{traj_start_pose[1]},{traj_start_pose[2]},"
13      f"{traj_start_pose[3]},{traj_start_pose[4]},{traj_start_pose[5]}")
14time.sleep(1)
15robot.SetSpeed(50)
16robot.MoveCart(traj_start_pose, 0, 0, 50, 100, 100)
17rtn, traj_num = robot.GetTrajectoryPointNum()
18print(f"GetTrajectoryStartPose rtn is: {rtn}, traj num is: {traj_num}")
19rtn = robot.SetTrajectoryJSpeed(50.0)
20print(f"SetTrajectoryJSpeed is: {rtn}")
21traj_force = [0.0,0.0,0.0,0.0,0.0,0.0]
22traj_force[0] = 10  # fx = 10
23rtn = robot.SetTrajectoryJForceTorque(traj_force)
24print(f"SetTrajectoryJForceTorque rtn is: {rtn}")
25rtn = robot.SetTrajectoryJForceFx(10.0)
26print(f"SetTrajectoryJForceFx rtn is: {rtn}")
27rtn = robot.SetTrajectoryJForceFy(0.0)
28print(f"SetTrajectoryJForceFy rtn is: {rtn}")
29rtn = robot.SetTrajectoryJForceFz(0.0)
30print(f"SetTrajectoryJForceFz rtn is: {rtn}")
31rtn = robot.SetTrajectoryJTorqueTx(10.0)
32print(f"SetTrajectoryJTorqueTx rtn is: {rtn}")
33rtn = robot.SetTrajectoryJTorqueTy(10.0)
34print(f"SetTrajectoryJTorqueTy rtn is: {rtn}")
35rtn = robot.SetTrajectoryJTorqueTz(10.0)
36print(f"SetTrajectoryJTorqueTz rtn is: {rtn}")
37rtn = robot.MoveTrajectoryJ()
38print(f"MoveTrajectoryJ rtn is: {rtn}")
39robot.CloseRPC()

9.26. Pré-processamento de Trajetória (Antecipação de Trajetória)

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

Protótipo

LoadTrajectoryLA(name, mode, errorLim, type, precision, vamx, amax, jmax, flag)

Descrição

Pré-processamento de trajetória (antecipação de trajetória)

Parâmetros obrigatórios

  • name: Nome do arquivo de trajetória

  • mode: Modo de amostragem, 0-sem amostragem; 1-amostragem por intervalo igual de dados; 2-amostragem por limite de erro igual

  • errorLim: Limite de erro, ativo ao usar aproximação linear

  • type: Modo de suavização, 0-suavização de Bézier

  • precision: Precisão de suavização, ativo ao usar suavização de Bézier

  • vamx: Velocidade máxima definida, mm/s

  • amax: Aceleração máxima definida, mm/s²

  • jmax: Jerk máximo definido, mm/s³

  • flag: Interruptor de ativação da antecipação de velocidade constante, 0-não ativar; 1-ativar

Parâmetros padrão

Nenhum

Valor de retorno

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

9.27. Reprodução de Trajetória (Antecipação de Trajetória)

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

Protótipo

MoveTrajectoryLA()

Descrição

Reprodução de trajetória (antecipação de trajetória)

Parâmetros obrigatórios

Nenhum

Parâmetros padrão

Nenhum

Valor de retorno

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

9.28. Exemplo de Código de Reprodução de Trajetória (Antecipação de Trajetória)

 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')
 5rtn = robot.TrajectoryJUpLoad("D://zUP/traj.txt")
 6print(f"Upload TrajectoryJ A {rtn}")
 7traj_file_name = "/fruser/traj/traj.txt"
 8rtn = robot.LoadTrajectoryLA(traj_file_name, 1, 2, 0, 2, 50, 200, 1000, 0)
 9print(f"LoadTrajectoryLA {traj_file_name}, rtn is: {rtn}")
10rtn, traj_start_pose = robot.GetTrajectoryStartPose(traj_file_name)
11print(f"GetTrajectoryStartPose is: {rtn}")
12print(f"desc_pos: {traj_start_pose[0]},{traj_start_pose[1]},{traj_start_pose[2]},{traj_start_pose[3]},{traj_start_pose[4]},{traj_start_pose[5]}")
13time.sleep(1)
14robot.SetSpeed(50)
15robot.MoveCart(traj_start_pose, 0, 0, 100, 100, 100)
16rtn = robot.MoveTrajectoryLA()
17print(f"MoveTrajectoryLA rtn is: {rtn}")
18robot.CloseRPC()

9.29. Mover para o Ponto Inicial da Gravação da Trajetória TPD

Protótipo

MoveToTPDStart(name, moveType, ovl)

Descrição

Mover para o ponto inicial da gravação da trajetória TPD

Parâmetros obrigatórios

  • name: Nome do arquivo de trajetória

  • moveType: Tipo de movimento; 0-PTP; 1-LIN

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

Parâmetros padrão

Nenhum

Valor de retorno

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

9.30. Exemplo de Código SDK para Mover para o Ponto Inicial da Gravação da Trajetória TPD

 1from time import sleep
 2from fairino import Robot
 3from ctypes import sizeof
 4# A connection is established with the robot controller. A successful connection returns a robot object
 5# Estabelece conexão com o controlador do robô. Uma conexão bem-sucedida retorna um objeto robô
 6robot = Robot.RPC('192.168.58.2')
 7import time
 8
 9def TestTPD(self):
10    type = 1
11    name = "tpd2025"
12    period_ms = 4
13    di_choose = 0
14    do_choose = 0
15
16    robot.SetTPDParam(type=type, name=name, period_ms=period_ms, di_choose=di_choose, do_choose=do_choose)
17
18    robot.Mode(1)
19    time.sleep(1)
20    robot.DragTeachSwitch(1)
21    robot.SetTPDStart(type=type, name=name, period_ms=period_ms, di_choose=di_choose, do_choose=do_choose)
22    time.sleep(3)
23    robot.SetWebTPDStop()
24    robot.DragTeachSwitch(0)
25
26    time.sleep(1)
27    ovl = 100.0
28    blend = 0
29    start_pose = [0.0] * 6
30    rtn = robot.LoadTPD(name)
31    print(f"LoadTPD rtn is: {rtn}")
32
33    rtn, start_pose = robot.GetTPDStartPose(name)
34    print(f"start pose, xyz is: {start_pose[0]},{start_pose[1]},{start_pose[2]}. rpy is: {start_pose[3]},{start_pose[4]},{start_pose[5]}")
35    # robot.MoveCart(desc_pos=start_pose, tool=0, user=0, vel=100, acc=100, ovl=ovl, blendT=-1, config=-1)
36    # time.sleep(1)
37
38    rtn = robot.MoveToTPDStart(name, 0, 100)
39    print(f"MoveToTPDStart rtn is: {rtn}")
40
41    rtn = robot.MoveTPD(name, blend, ovl)
42    print(f"MoveTPD rtn is: {rtn}")
43    time.sleep(5)
44
45    robot.SetTPDDelete(name)
46
47    robot.CloseRPC()
48    return 0
49
50TestTPD(robot)