9. Odtwarzanie trajektorii robota

9.1. Ustawianie parametrów rejestracji trajektorii

Prototyp

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

Opis

Ustawianie parametrów rejestracji trajektorii

Parametry wymagane

  • name: Nazwa trajektorii;

  • period_ms: Okres próbkowania, stała wartość, 2 ms, 4 ms lub 8 ms;

Parametry domyślne

  • type: Typ danych, 1-pozycja przegubów;

  • di_choose: Wybór DI, bit0~bit7 odpowiadają DI0~DI7 skrzynki kontrolnej, bit8~bit9 odpowiadają DI0~DI1 końcówki, 0-nie wybieraj, 1-wybierz, domyślnie 0;

  • do_choose: Wybór DO, bit0~bit7 odpowiadają DO0~DO7 skrzynki kontrolnej, bit8~bit9 odpowiadają DO0~DO1 końcówki, 0-nie wybieraj, 1-wybierz, domyślnie 0

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.2. Rozpoczęcie rejestracji trajektorii

Prototyp

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

Opis

Rozpoczęcie rejestracji trajektorii

Parametry wymagane

  • name: Nazwa trajektorii;

  • period_ms: Okres próbkowania, stała wartość, 2 ms, 4 ms lub 8 ms;

Parametry domyślne

  • type: Typ danych, 1-pozycja przegubów, domyślnie 1;

  • di_choose: Wybór DI, bit0~bit7 odpowiadają DI0~DI7 skrzynki kontrolnej, bit8~bit9 odpowiadają DI0~DI1 końcówki, 0-nie wybieraj, 1-wybierz, domyślnie 0;

  • do_choose: Wybór DO, bit0~bit7 odpowiadają DO0~DO7 skrzynki kontrolnej, bit8~bit9 odpowiadają DO0~DO1 końcówki, 0-nie wybieraj, 1-wybierz, domyślnie 0

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.3. Zatrzymanie rejestracji trajektorii

Prototyp

SetWebTPDStop()

Opis

Zatrzymanie rejestracji trajektorii

Parametry wymagane

Brak

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.4. Usunięcie zarejestrowanej trajektorii

Prototyp

SetTPDDelete(name)

Opis

Usunięcie zarejestrowanej trajektorii

Parametry wymagane

  • name: Nazwa trajektorii

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.5. Przykład kodu

 1from fairino import Robot
 2import time
 3# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
 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. Wstępne ładowanie trajektorii

Prototyp

LoadTPD(name)

Opis

Wstępne ładowanie trajektorii

Parametry wymagane

  • name: Nazwa trajektorii

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.7. Odtwarzanie trajektorii

Prototyp

MoveTPD(name,blend,ovl)

Opis

Odtwarzanie trajektorii

Parametry wymagane

  • name: Nazwa trajektorii

  • blend: Czy wygładzać, 0-nie, 1-tak

  • ovl: Współczynnik skalowania prędkości, zakres [0~100]

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.8. Pobieranie początkowej pozy trajektorii

Prototyp

GetTPDStartPose(name)

Opis

Pobieranie początkowej pozy trajektorii

Parametry wymagane

  • name: Nazwa trajektorii

Parametry domyślne

Brak

Wartość zwracana

  • Kod błędu sukces-0 błąd- errcode

  • desc_pose=[x,y,z,rx,ry,rz]: Początkowa poza trajektorii

9.9. Przykład kodu rejestracji trajektorii TPD robota

 1from fairino import Robot
 2import time
 3# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
 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. Wstępne przetwarzanie trajektorii

Prototyp

LoadTrajectoryJ(name,ovl,opt=1)

Opis

Wstępne przetwarzanie trajektorii

Parametry wymagane

  • name: Nazwa trajektorii, np. trajHelix_aima_1.txt, dopuszczalna również pełna ścieżka, np. /fruser/traj/trajHelix_aima_1.txt;

  • ovl: Procent skalowania prędkości, zakres [0~100];

Parametry domyślne

  • opt: 1-punkt kontrolny, domyślnie 1

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.11. Odtwarzanie trajektorii

Prototyp

MoveTrajectoryJ()

Opis

Odtwarzanie trajektorii

Parametry wymagane

Brak

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.12. Pobieranie początkowej pozy trajektorii

Prototyp

GetTrajectoryStartPose(name)

Opis

Pobieranie początkowej pozy trajektorii

Parametry wymagane

name: Nazwa trajektorii

Parametry domyślne

Brak

Wartość zwracana

  • Kod błędu sukces-0 błąd- errcode

  • desc_pose=[x,y,z,rx,ry,rz]: Początkowa poza trajektorii

9.13. Pobieranie numeru punktu trajektorii

Prototyp

GetTrajectoryPointNum()

Opis

Pobieranie numeru punktu trajektorii

Parametry wymagane

Brak

Parametry domyślne

Brak

Wartość zwracana

  • Kod błędu sukces-0 błąd- errcode

  • pnum: Numer punktu trajektorii

9.14. Ustawianie prędkości podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJSpeed(ovl,mode)

Opis

Ustawianie prędkości podczas odtwarzania trajektorii

Parametry wymagane

  • ovl: Procent skalowania prędkości, zakres [0~100]

  • mode: 0-tryb zmniejszania prędkości; 1-bezpośrednie przełączanie

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.15. Przykład kodu ustawiania prędkości podczas odtwarzania trajektorii

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Połączenie z kontrolerem robota
 6robot = Robot.RPC('192.168.58.2')
 7
 8
 9def TestSetTrajectoryJSpeed(self):
10    # Przesłanie pliku trajektorii
11    rtn = robot.TrajectoryJUpLoad("C://Users/lenovo/Desktop/trajHelix_aima_1.txt")
12    print(f"Upload TrajectoryJ A {rtn}")
13
14    traj_file_name = "trajHelix_aima_1.txt"
15    # Załadowanie pliku trajektorii, parametry: nazwa pliku, procent prędkości, czy zapętlić (1: zapętlenie)
16    rtn = robot.LoadTrajectoryJ(name=traj_file_name, ovl=100, opt=1)
17    print(f"LoadTrajectoryJ {traj_file_name}, rtn is: {rtn}")
18
19    # Pobranie początkowej pozy trajektorii
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    # Ustawienie prędkości podstawowej i przejście do punktu początkowego trajektorii
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    # Pobranie liczby punktów trajektorii
32    rtn, traj_num = robot.GetTrajectoryPointNum()
33    print(f"GetTrajectoryStartPose rtn is: {rtn}, traj num is: {traj_num}")
34
35    # Rozpoczęcie odtwarzania trajektorii
36    rtn = robot.MoveTrajectoryJ()
37    print(f"MoveTrajectoryJ rtn is: {rtn}")
38
39    time.sleep(1)
40
41    # Pobranie stanu robota w czasie rzeczywistym
42    trajspeedMode = 0
43    while True:
44        rtn, pkg = robot.GetRobotRealTimeState()
45        if pkg.motion_done != 0:
46            break
47
48        # Ustawienie prędkości trajektorii na 10%
49        rtn = robot.SetTrajectoryJSpeed(ovl=10.0, mode=trajspeedMode)
50        print(f"SetTrajectoryJSpeed is: {rtn}")
51
52        time.sleep(1)
53
54        # Ustawienie prędkości trajektorii na 80%
55        rtn = robot.SetTrajectoryJSpeed(ovl=80.0, mode=trajspeedMode)
56        print(f"SetTrajectoryJSpeed is: {rtn}")
57
58        time.sleep(1)
59
60    # Zamknięcie połączenia
61    robot.CloseRPC()
62    time.sleep(1)
63
64
65# Wywołanie funkcji testowej
66TestSetTrajectoryJSpeed(robot)

9.16. Ustawianie siły i momentu obrotowego podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJForceTorque(ft)

Opis

Ustawianie siły i momentu obrotowego podczas odtwarzania trajektorii

Parametry wymagane

ft=[fx,fy,fz,tx,ty,tz]: jednostka N i Nm

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.17. Ustawianie siły w kierunku X podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJForceFx(fx)

Opis

Ustawianie siły w kierunku X podczas odtwarzania trajektorii

Parametry wymagane

ft: Siła w kierunku X, jednostka N

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.18. Ustawianie siły w kierunku Y podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJForceFx(fy)

Opis

Ustawianie siły w kierunku Y podczas odtwarzania trajektorii

Parametry wymagane

fy: Siła w kierunku Y, jednostka N

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.19. Ustawianie siły w kierunku Z podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJForceFx(fz)

Opis

Ustawianie siły w kierunku Z podczas odtwarzania trajektorii

Parametry wymagane

fz: Siła w kierunku Z, jednostka N

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.20. Ustawianie momentu obrotowego wokół osi X podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJTorqueTx(tx)

Opis

Ustawianie momentu obrotowego wokół osi X podczas odtwarzania trajektorii

Parametry wymagane

tx: Moment obrotowy wokół osi X, jednostka Nm

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.21. Ustawianie momentu obrotowego wokół osi Y podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJTorqueTx(ty)

Opis

Ustawianie momentu obrotowego wokół osi Y podczas odtwarzania trajektorii

Parametry wymagane

ty: Moment obrotowy wokół osi Y, jednostka Nm

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.22. Ustawianie momentu obrotowego wokół osi Z podczas odtwarzania trajektorii

Prototyp

SetTrajectoryJTorqueTx(tz)

Opis

Ustawianie momentu obrotowego wokół osi Z podczas odtwarzania trajektorii

Parametry wymagane

  • tz: Moment obrotowy wokół osi Z, jednostka Nm

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.23. Przesyłanie pliku trajektorii J

Nowe w wersji python: SDK-v2.0.7

Prototyp

TrajectoryJUpLoad(filePath)

Opis

Przesyłanie pliku trajektorii J

Parametry wymagane

  • filePath: Pełna ścieżka przesyłanego pliku trajektorii, C://test/testJ.txt

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.24. Usuwanie pliku trajektorii J

Nowe w wersji python: SDK-v2.0.7

Prototyp

TrajectoryJDelete(filePath)

Opis

Usuwanie pliku trajektorii J

Parametry wymagane

  • filePath: Pełna ścieżka usuwalnego pliku trajektorii, C://test/testJ.txt

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.25. Przykład kodu odtwarzania pliku trajektorii J robota

 1from fairino import Robot
 2import time
 3# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
 4robot = Robot.RPC('192.168.58.2')
 5rtn = robot.TrajectoryJUpLoad("D://zUP/traj.txt")
 6print(f"Upload TrajectoryJ A {rtn}")
 7traj_file_name = "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. Wstępne przetwarzanie trajektorii (Look-Ahead)

Nowe w wersji python: SDK-v2.1.4

Prototyp

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

Opis

Wstępne przetwarzanie trajektorii (Look-Ahead)

Parametry wymagane

  • name: Nazwa pliku trajektorii

  • mode: Tryb próbkowania, 0-bez próbkowania; 1-równomierne próbkowanie odstępów danych; 2-próbkowanie z ograniczeniem błędu

  • errorLim: Ograniczenie błędu, obowiązuje przy użyciu aproksymacji liniowej

  • type: Sposób wygładzania, 0-wygładzanie Beziera

  • precision: Dokładność wygładzania, obowiązuje przy użyciu wygładzania Beziera

  • vamx: Ustawiona maksymalna prędkość, mm/s

  • amax: Ustawione maksymalne przyspieszenie, mm/s2

  • jmax: Ustawione maksymalne zryw, mm/s3

  • flag: Przełącznik włączania Look-Ahead ze stałą prędkością 0-niewłączony; 1-włączony

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.27. Odtwarzanie trajektorii (Look-Ahead)

Nowe w wersji python: SDK-v2.1.0

Prototyp

MoveTrajectoryLA()

Opis

Odtwarzanie trajektorii (Look-Ahead)

Parametry wymagane

Brak

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.28. Przykład kodu odtwarzania trajektorii (Look-Ahead)

 1from fairino import Robot
 2import time
 3# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
 4robot = Robot.RPC('192.168.58.2')
 5rtn = robot.TrajectoryJUpLoad("D://zUP/traj.txt")
 6print(f"Upload TrajectoryJ A {rtn}")
 7traj_file_name = "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. Ruch do punktu początkowego rejestracji trajektorii TPD

Prototyp

MoveToTPDStart(name, moveType, ovl)

Opis

Ruch do punktu początkowego rejestracji trajektorii TPD

Parametry wymagane

  • name: Nazwa pliku trajektorii

  • moveType: Typ ruchu; 0-PTP; 1-LIN

  • ovl: Procent skalowania prędkości, zakres [0~100]

Parametry domyślne

Brak

Wartość zwracana

Kod błędu sukces-0 błąd- errcode

9.30. Przykład kodu SDK ruchu do punktu początkowego rejestracji trajektorii TPD

 1from time import sleep
 2from fairino import Robot
 3from ctypes import sizeof
 4# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
 5robot = Robot.RPC('192.168.58.2')
 6import time
 7
 8def TestTPD(self):
 9    type = 1
10    name = "tpd2025"
11    period_ms = 4
12    di_choose = 0
13    do_choose = 0
14
15    robot.SetTPDParam(type=type, name=name, period_ms=period_ms, di_choose=di_choose, do_choose=do_choose)
16
17    robot.Mode(1)
18    time.sleep(1)
19    robot.DragTeachSwitch(1)
20    robot.SetTPDStart(type=type, name=name, period_ms=period_ms, di_choose=di_choose, do_choose=do_choose)
21    time.sleep(3)
22    robot.SetWebTPDStop()
23    robot.DragTeachSwitch(0)
24
25    time.sleep(1)
26    ovl = 100.0
27    blend = 0
28    start_pose = [0.0] * 6
29    rtn = robot.LoadTPD(name)
30    print(f"LoadTPD rtn is: {rtn}")
31
32    rtn, start_pose = robot.GetTPDStartPose(name)
33    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]}")
34    # robot.MoveCart(desc_pos=start_pose, tool=0, user=0, vel=100, acc=100, ovl=ovl, blendT=-1, config=-1)
35    # time.sleep(1)
36
37    rtn = robot.MoveToTPDStart(name, 0, 100)
38    print(f"MoveToTPDStart rtn is: {rtn}")
39
40    rtn = robot.MoveTPD(name, blend, ovl)
41    print(f"MoveTPD rtn is: {rtn}")
42    time.sleep(5)
43
44    robot.SetTPDDelete(name)
45
46    robot.CloseRPC()
47    return 0
48
49TestTPD(robot)