8. Zapytanie o stan robota
8.1. Pobieranie bieżącej pozycji przegubów (kąt)
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącej pozycji przegubów (kąt) |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.2. Pobieranie bieżącej pozycji przegubów (radian)
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącej pozycji przegubów (radian) |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.3. Pobieranie prędkości sprzężenia zwrotnego przegubów - deg/s
Prototyp |
|
|---|---|
Opis |
Pobieranie prędkości sprzężenia zwrotnego przegubów - deg/s |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.4. Pobieranie przyspieszenia sprzężenia zwrotnego przegubów - deg/s^2
Prototyp |
|
|---|---|
Opis |
Pobieranie przyspieszenia sprzężenia zwrotnego przegubów - deg/s^2 |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.5. Pobieranie prędkości wypadkowej zadanej TCP
Prototyp |
|
|---|---|
Opis |
Pobieranie prędkości wypadkowej zadanej TCP |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.6. Pobieranie prędkości wypadkowej sprzężenia zwrotnego TCP
Prototyp |
|
|---|---|
Opis |
Pobieranie prędkości wypadkowej sprzężenia zwrotnego TCP |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.7. Pobieranie prędkości zadanej TCP
Prototyp |
|
|---|---|
Opis |
Pobieranie prędkości zadanej TCP |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.8. Pobieranie prędkości sprzężenia zwrotnego TCP
Prototyp |
|
|---|---|
Opis |
Pobieranie prędkości sprzężenia zwrotnego TCP |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.9. Pobieranie bieżącej pozy narzędzia
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącej pozy narzędzia |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.10. Pobieranie bieżącego numeru układu narzędzia
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego numeru układu narzędzia |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.11. Pobieranie bieżącego numeru układu przedmiotu
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego numeru układu przedmiotu |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.12. Pobieranie bieżącej pozy kołnierza końcowego
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącej pozy kołnierza końcowego |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.13. Pobieranie bieżącego momentu obrotowego przegubów
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego momentu obrotowego przegubów |
Parametry wymagane |
Brak |
Parametry domyślne |
|
Wartość zwracana |
|
8.14. Pobieranie czasu systemowego
Prototyp |
|
|---|---|
Opis |
Pobieranie czasu systemowego |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.15. Synchronizacja Czasu Systemowego z Robotem
Prototyp |
|
|---|---|
Opis |
Pobiera bieżący czas systemowy komputera hosta i wysyła go do robota w celu synchronizacji czasu systemowego (ze względu na ograniczenia systemu QNX, dokładność synchronizacji jest na poziomie minut) |
Parametry Wymagane |
Brak |
Parametry Domyślne |
Brak |
Wartość Zwracana |
|
8.16. Przykład Kodu Synchronizacji Czasu Systemowego z Robotem
1from fairino import Robot
2import time
3from datetime import datetime, timedelta
4
5
6def main():
7 # Nawiązanie połączenia z kontrolerem robota
8 robot = Robot.RPC('192.168.58.2')
9 time.sleep(0.5)
10
11 print("========== Set and Get Robot Time Test ==========")
12
13 # Pobranie czasu systemowego przed ustawieniem
14 ret, t_ms = robot.GetSystemClock()
15 if ret == 0 and t_ms is not None:
16 print(f"system clock : {t_ms}")
17 # Robot przechowuje UTC+8, konwersja do czasu PC (odejmij 8 godzin)
18 robot_time = datetime.fromtimestamp(t_ms / 1000.0) - timedelta(hours=8)
19 print(f"BEFORE Robot Time: {robot_time.strftime('%Y-%m-%d %H:%M:%S')}")
20 else:
21 print(f"GetSystemClock failed, ret:{ret}")
22
23 # Ustawienie czasu robota na czas PC
24 ret = robot.SetRobottime()
25 print(f"SetRobottime ret: {ret}")
26
27 # Pobranie czasu robota po ustawieniu
28 ret, t_ms_after = robot.GetSystemClock()
29 if ret == 0 and t_ms_after is not None:
30 print(f"system clock : {t_ms_after}")
31 # Robot przechowuje UTC+8, konwersja do czasu PC (odejmij 8 godzin)
32 robot_time = datetime.fromtimestamp(t_ms_after / 1000.0) - timedelta(hours=8)
33
34 # Czas PC - wyświetl lokalny czas systemowy
35 pc_time = datetime.now()
36
37 # Obcięcie obu czasów do minut
38 pc_minute = pc_time.replace(second=0, microsecond=0)
39 robot_minute = robot_time.replace(second=0, microsecond=0)
40
41 # Porównanie spójności
42 is_consistent = (pc_minute == robot_minute)
43 if is_consistent:
44 print(f"Consistent | PC time: {pc_minute.strftime('%Y-%m-%d %H:%M')} | Robot time: {robot_minute.strftime('%Y-%m-%d %H:%M')}")
45 else:
46 print(f"Inconsistent | PC time: {pc_minute.strftime('%Y-%m-%d %H:%M')} | Robot time: {robot_minute.strftime('%Y-%m-%d %H:%M')}")
47 else:
48 print(f"GetSystemClock failed, ret:{ret}")
49
50 # Zamknięcie połączenia
51 robot.CloseRPC()
52
53
54if __name__ == "__main__":
55 main()
8.17. Sprawdzanie, czy ruch robota został zakończony
Prototyp |
|
|---|---|
Opis |
Sprawdzanie, czy ruch robota został zakończony |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.18. Sprawdzanie długości bufora kolejki ruchu robota
Prototyp |
|
|---|---|
Opis |
Sprawdzanie długości bufora kolejki ruchu robota |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.19. Pobieranie stanu zatrzymania awaryjnego robota
Prototyp |
|
|---|---|
Opis |
Pobieranie stanu zatrzymania awaryjnego robota |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.20. Pobieranie stanu komunikacji SDK z robotem
Prototyp |
|
|---|---|
Opis |
Pobieranie stanu komunikacji SDK z robotem |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.21. Pobieranie sygnału bezpiecznego zatrzymania
Prototyp |
|
|---|---|
Opis |
Pobieranie sygnału bezpiecznego zatrzymania |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.22. Pobieranie bieżącej temperatury sterownika przegubu (℃)
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącej temperatury sterownika przegubu (℃) |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.23. Pobieranie bieżącego momentu obrotowego sterownika przegubu (Nm)
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego momentu obrotowego sterownika przegubu (Nm) |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.24. Pobieranie stanu robota
Prototyp |
|
|---|---|
Opis |
Pobieranie stanu robota |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.25. Przykład kodu zapytania o stan robota
1from fairino import Robot
2# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
3robot = Robot.RPC('192.168.58.2')
4error,[yangle, zangle] = robot.GetRobotInstallAngle()
5print(f"yangle:{yangle},zangle:{zangle}")
6error,j_deg = robot.GetActualJointPosDegree(0)
7print(f"joint pos deg:{j_deg[0]},{j_deg[1]},{j_deg[2]},{j_deg[3]},{j_deg[4]},{j_deg[5]}")
8error,jointSpeed = robot.GetActualJointSpeedsDegree(0)
9print(f"joint speeds deg:{jointSpeed[0]},{jointSpeed[1]},{jointSpeed[2]},{jointSpeed[3]},{jointSpeed[4]},{jointSpeed[5]}")
10error,jointAcc = robot.GetActualJointAccDegree(0)
11print(f"joint acc deg:{jointAcc[0]},{jointAcc[1]},{jointAcc[2]},{jointAcc[3]},{jointAcc[4]},{jointAcc[5]}")
12error,[tcp_speed, ori_speed] = robot.GetTargetTCPCompositeSpeed(0)
13print(f"GetTargetTCPCompositeSpeed tcp {tcp_speed}; ori {ori_speed}")
14error,[tcp_speed, ori_speed] = robot.GetActualTCPCompositeSpeed(0)
15print(f"GetActualTCPCompositeSpeed tcp {tcp_speed}; ori {ori_speed}")
16error,targetSpeed = robot.GetTargetTCPSpeed(0)
17print(f"GetTargetTCPSpeed {targetSpeed[0]},{targetSpeed[1]},{targetSpeed[2]},{targetSpeed[3]},{targetSpeed[4]},{targetSpeed[5]}")
18error,actualSpeed = robot.GetActualTCPSpeed(0)
19print(f"GetActualTCPSpeed {actualSpeed[0]},{actualSpeed[1]},{actualSpeed[2]},{actualSpeed[3]},{actualSpeed[4]},{actualSpeed[5]}")
20error,tcp = robot.GetActualTCPPose(0)
21print(f"tcp pose:{tcp[0]},{tcp[1]},{tcp[2]},{tcp[3]},{tcp[4]},{tcp[5]}")
22error,flange = robot.GetActualToolFlangePose(0)
23print(f"flange pose:{flange[0]},{flange[1]},{flange[2]},{flange[3]},{flange[4]},{flange[5]}")
24error,id = robot.GetActualTCPNum(0)
25print(f"tcp num:{id}")
26error,id = robot.GetActualWObjNum(0)
27print(f"wobj num:{id}")
28error,jtorque = robot.GetJointTorques(0)
29print(f"torques:{jtorque[0]},{jtorque[1]},{jtorque[2]},{jtorque[3]},{jtorque[4]},{jtorque[5]}")
30error,t_ms = robot.GetSystemClock()
31print(f"system clock:{t_ms}")
32error,config = robot.GetRobotCurJointsConfig()
33print(f"joint config:{config}")
34error,motionDone = robot.GetRobotMotionDone()
35print(f"GetRobotMotionDone:{motionDone}")
36error,len = robot.GetMotionQueueLength()
37print(f"GetMotionQueueLength:{len}")
38error,emergState = robot.GetRobotEmergencyStopState()
39print(f"GetRobotEmergencyStopState:{emergState}")
40error,comstate = robot.GetSDKComState()
41print(f"GetSDKComState:{comstate}")
42error,[si0_state, si1_state] = robot.GetSafetyStopState()
43print(f"GetSafetyStopState:{si0_state} {si1_state}")
44error,temp = robot.GetJointDriverTemperature()
45print(f"Temperature:{temp[0]},{temp[1]},{temp[2]},{temp[3]},{temp[4]},{temp[5]}")
46error,torque = robot.GetJointDriverTorque()
47print(f"torque:{torque[0]},{torque[1]},{torque[2]},{torque[3]},{torque[4]},{torque[5]}")
48error,pkg = robot.GetRobotRealTimeState()
49robot.CloseRPC()
8.26. Rozwiązanie kinematyki odwrotnej
Prototyp |
|
|---|---|
Opis |
Kinematyka odwrotna, rozwiązanie pozycji przegubów na podstawie pozy kartezjańskiej |
Parametry wymagane |
|
Parametry domyślne |
|
Wartość zwracana |
|
8.27. Rozwiązanie kinematyki odwrotnej - z określoną pozycją odniesienia
Prototyp |
|
|---|---|
Opis |
Kinematyka odwrotna, rozwiązanie pozycji przegubów na podstawie pozy narzędzia, z określoną pozycją odniesienia przegubów |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.28. Rozwiązanie kinematyki odwrotnej, przestrzeń kartezjańska z uwzględnieniem pozycji osi rozszerzenia
Prototyp |
|
|---|---|
Opis |
Rozwiązanie kinematyki odwrotnej, przestrzeń kartezjańska z uwzględnieniem pozycji osi rozszerzenia |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.29. Przykład kodu rozwiązania kinematyki odwrotnej z uwzględnieniem pozycji osi rozszerzenia
1from fairino import Robot
2import time
3robot = Robot.RPC('192.168.58.2')
4desc = [99.957, -0.002, 29.994, -176.569, -6.757, -167.462]
5exaxis = [100.0, 0.0, 0.0, 0.0]
6jointPos = [0.0] * 6
7offsetPos = [0.0] * 6
8rtn,pkg = robot.GetRobotRealTimeState()
9toolnum = pkg.tool
10workPcsNum = pkg.user
11rtn, jointPos = robot.GetInverseKinExaxis(0, desc, exaxis, toolnum, workPcsNum)
12print(f"GetInverseKinExaxis joint is {jointPos[0]},{jointPos[1]},{jointPos[2]},{jointPos[3]},{jointPos[4]},{jointPos[5]}")
13robot.ExtAxisMove(exaxis, 100, -1)
14robot.MoveJ(joint_pos=jointPos, desc_pos=desc, tool=toolnum, user=workPcsNum, vel=100.0, acc=100.0, ovl=100.0, exaxis_pos=exaxis, blendT=-1, offset_flag=0, offset_pos=offsetPos)
15robot.CloseRPC()
16return 0
8.30. Sprawdzanie, czy kinematyka odwrotna ma rozwiązanie
Prototyp |
|
|---|---|
Opis |
Sprawdzanie, czy kinematyka odwrotna (rozwiązanie pozycji przegubów na podstawie pozy narzędzia) ma rozwiązanie |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.31. Pobieranie 8 zestawów rozwiązań odwrotnych dla robota
Prototyp |
|
|---|---|
Opis |
Pobierz 8 zestawów rozwiązań odwrotnych |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.32. Przykład kodu pobierania 8 zestawów rozwiązań odwrotnych dla robota
1from fairino import Robot
2import time
3
4def main():
5 # Establish connection with the robot controller
6 robot = Robot.RPC('192.168.58.2')
7 time.sleep(0.5) # Wait for connection and data reception
8
9 # Get current TCP pose
10 ret, curTcp = robot.GetActualTCPPose(1)
11 if ret != 0:
12 print(f"GetActualTCPPose failed, ret:{ret}")
13 robot.CloseRPC()
14 return
15
16 print(f"Current TCP pose: x={curTcp[0]:.3f}, y={curTcp[1]:.3f}, z={curTcp[2]:.3f}, "
17 f"a={curTcp[3]:.3f}, b={curTcp[4]:.3f}, c={curTcp[5]:.3f}")
18
19 # Exaxis position, all zeros here
20 exPos = [0.0, 0.0, 0.0, 0.0]
21
22 # Call TCFToAllJoint to get 8 inverse solutions, tool=0, workpiece=0
23 rtn, allJoints = robot.TCFToAllJoint(curTcp, 0, 0, exPos)
24 if rtn != 0:
25 print(f"TCFToAllJoint failed, rtn:{rtn}")
26 robot.CloseRPC()
27 return
28
29 # Verify each solution with forward kinematics
30 for i in range(8):
31 joint = allJoints[i]
32
33 print(f"JOINT{i + 1}: j1={joint[0]:.3f}, j2={joint[1]:.3f}, j3={joint[2]:.3f}, "
34 f"j4={joint[3]:.3f}, j5={joint[4]:.3f}, j6={joint[5]:.3f}")
35
36 # Forward kinematics to get cartesian pose of the i-th solution
37 rtn, pos = robot.GetForwardKin(joint)
38 if rtn != 0:
39 # Skip this solution if forward kinematics fails
40 continue
41
42 print(f"POS{i + 1}: x={pos[0]:.3f}, y={pos[1]:.3f}, z={pos[2]:.3f}, "
43 f"a={pos[3]:.3f}, b={pos[4]:.3f}, c={pos[5]:.3f}")
44
45 # Close connection
46 robot.CloseRPC()
47
48if __name__ == "__main__":
49 main()
8.33. Rozwiązanie kinematyki prostej
Prototyp |
|
|---|---|
Opis |
Kinematyka prosta, rozwiązanie pozy narzędzia na podstawie pozycji przegubów |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.34. Przykład kodu obliczeń kinematyki prostej i odwrotnej robota
1from fairino import Robot
2# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
3robot = Robot.RPC('192.168.58.2')
4j1 = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
5desc_pos1 = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
6error, inverseRtn = robot.GetInverseKin(0, desc_pos=desc_pos1, config=-1)
7print(f"dcs1 GetInverseKin rtn is {inverseRtn[0]}, {inverseRtn[1]}, {inverseRtn[2]}, "
8 f"{inverseRtn[3]}, {inverseRtn[4]}, {inverseRtn[5]}")
9error, inverseRtn = robot.GetInverseKinRef(0, desc_pos=desc_pos1, joint_pos_ref=j1)
10print(f"dcs1 GetInverseKinRef rtn is {inverseRtn[0]}, {inverseRtn[1]}, {inverseRtn[2]}, "
11 f"{inverseRtn[3]}, {inverseRtn[4]}, {inverseRtn[5]}")
12error, hasResult = robot.GetInverseKinHasSolution(0, desc_pos=desc_pos1, joint_pos_ref=j1)
13print(f"dcs1 GetInverseKinRef result {hasResult}")
14error, forwordResult = robot.GetForwardKin(j1)
15print(f"jpos1 forwordResult rtn is {forwordResult[0]}, {forwordResult[1]}, {forwordResult[2]}, "
16 f"{forwordResult[3]}, {forwordResult[4]}, {forwordResult[5]}")
17robot.CloseRPC()
8.35. Zapytanie o dane punktu zarządzania nauczaniem robota
Prototyp |
|
|---|---|
Opis |
Zapytanie o dane punktu zarządzania nauczaniem robota |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.36. Pobieranie parametrów kompensacji DH
Dodane w wersji python: SDK-v2.0.1
Prototyp |
|
|---|---|
Opis |
Pobieranie parametrów kompensacji DH |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.37. Pobieranie numeru SN skrzynki kontrolnej
Dodane w wersji python: SDK-v2.1.1
Prototyp |
|
|---|---|
Opis |
Pobieranie numeru SN skrzynki kontrolnej |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.38. Przykład kodu zapytania o dane punktu zarządzania nauczaniem robota
1from fairino import Robot
2# Połączenie z kontrolerem robota, po pomyślnym połączeniu zwraca obiekt robota
3robot = Robot.RPC('192.168.58.2')
4name = "P1"
5rtn, data = robot.GetRobotTeachingPoint(name)
6print(f"{rtn} name is: {name}")
7for i in range(20):
8 print(f"data is: {data[i]}")
9rtn,que_len = robot.GetMotionQueueLength()
10print(f"GetMotionQueueLength rtn is: {rtn}, queue length is: {que_len}")
11retval,dh = robot.GetDHCompensation()
12print(f"retval is: {retval}")
13print(f"dh is: {dh[0]} {dh[1]} {dh[2]} {dh[3]} {dh[4]} {dh[5]}")
14error,sn = robot.GetRobotSN()
15print(f"robot SN is {sn[0]}")
16robot.CloseRPC()
8.39. Pobieranie Układu Współrzędnych Narzędzia według ID
Zmienione w wersji python: SDK-V3.9.8
Prototyp |
|
|---|---|
Opis |
Pobiera układ współrzędnych narzędzia według ID |
Parametry Wymagane |
|
Parametry Domyślne |
Brak |
Wartość Zwracana |
|
8.40. Pobieranie Układu Współrzędnych Przedmiotu według ID
Zmienione w wersji python: SDK-V3.9.8
Prototyp |
|
|---|---|
Opis |
Pobiera układ współrzędnych przedmiotu według ID |
Parametry Wymagane |
|
Parametry Domyślne |
Brak |
Wartość Zwracana |
|
8.41. Pobieranie Zewnętrznego Układu Współrzędnych Narzędzia według ID
Zmienione w wersji python: SDK-V3.9.8
Prototyp |
|
|---|---|
Opis |
Pobiera zewnętrzny układ współrzędnych narzędzia według ID |
Parametry Wymagane |
|
Parametry Domyślne |
Brak |
Wartość Zwracana |
|
8.42. Pobieranie Układu Współrzędnych Osi Rozszerzonej według ID
Dodane w wersji python: SDK-v2.1.6
Prototyp |
|
|---|---|
Opis |
Pobiera układ współrzędnych osi rozszerzonej według ID |
Parametry Wymagane |
|
Parametry Domyślne |
Brak |
Wartość Zwracana |
|
8.43. Pobieranie masy i środka ciężkości obciążenia według numeru
Dodane w wersji python: SDK-v2.1.6
Prototyp |
|
|---|---|
Opis |
Pobieranie masy i środka ciężkości obciążenia według numeru |
Parametry wymagane |
|
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.44. Pobieranie bieżącego układu narzędzia
Dodane w wersji python: SDK-v2.1.6
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego układu narzędzia |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.45. Pobieranie bieżącego układu przedmiotu
Dodane w wersji python: SDK-v2.1.6
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego układu przedmiotu |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.46. Pobieranie bieżącego zewnętrznego układu narzędzia
Dodane w wersji python: SDK-v2.1.6
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego zewnętrznego układu narzędzia |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.47. Pobieranie bieżącego układu osi rozszerzenia
Dodane w wersji python: SDK-v2.1.6
Prototyp |
|
|---|---|
Opis |
Pobieranie bieżącego układu osi rozszerzenia |
Parametry wymagane |
Brak |
Parametry domyślne |
Brak |
Wartość zwracana |
|
8.48. Przykład kodu układów współrzędnych robota i obciążenia
1from fairino import Robot
2import time
3
4def main():
5 robot = Robot.RPC('192.168.58.2')
6 time.sleep(0.5)
7
8 time.sleep(2)
9
10 id = 1
11 rtn, toolCoord, type_val, install, toolID, loadNo = robot.GetToolCoordWithID(id)
12 print(f"GetToolCoordWithID {id}, {toolCoord[0]:.6f} {toolCoord[1]:.6f} {toolCoord[2]:.6f} {toolCoord[3]:.6f} {toolCoord[4]:.6f} {toolCoord[5]:.6f}, type = {type_val}, install = {install}, toolID = {toolID}, loadNo = {loadNo}")
13 rtn, wobjCoord, refFrame = robot.GetWObjCoordWithID(id)
14 print(f"GetWObjCoordWithID {id}, {wobjCoord[0]:.6f} {wobjCoord[1]:.6f} {wobjCoord[2]:.6f} {wobjCoord[3]:.6f} {wobjCoord[4]:.6f} {wobjCoord[5]:.6f}, refFrame = {refFrame}")
15 rtn, extoolCoord, exworkpieceCoord = robot.GetExToolCoordWithID(21)
16 print(f"GetExToolCoordWithID {id}, {extoolCoord[0]:.6f} {extoolCoord[1]:.6f} {extoolCoord[2]:.6f} {extoolCoord[3]:.6f} {extoolCoord[4]:.6f} {extoolCoord[5]:.6f}, {exworkpieceCoord[0]:.6f} {exworkpieceCoord[1]:.6f} {exworkpieceCoord[2]:.6f} {exworkpieceCoord[3]:.6f} {exworkpieceCoord[4]:.6f} {exworkpieceCoord[5]:.6f}")
17 rtn, exAxisCoord, axisCoordNum, calibFlag = robot.GetExAxisCoordWithID(id)
18 print(f"GetExAxisCoordWithID {id}, {exAxisCoord[0]:.6f} {exAxisCoord[1]:.6f} {exAxisCoord[2]:.6f} {exAxisCoord[3]:.6f} {exAxisCoord[4]:.6f} {exAxisCoord[5]:.6f}, axisCoordNum = {axisCoordNum}, calibFlag = {calibFlag}")
19 rtn, weight, cog = robot.GetTargetPayloadWithID(id)
20 print(f"GetTargetPayloadWithID {id}, {weight:.6f} {cog[0]:.6f} {cog[1]:.6f} {cog[2]:.6f}")
21 rtn, toolCoord = robot.GetCurToolCoord()
22 print(f"GetCurToolCoord {toolCoord[0]:.6f} {toolCoord[1]:.6f} {toolCoord[2]:.6f} {toolCoord[3]:.6f} {toolCoord[4]:.6f} {toolCoord[5]:.6f}")
23 rtn, wobjCoord = robot.GetCurWObjCoord()
24 print(f"GetCurWObjCoord {wobjCoord[0]:.6f} {wobjCoord[1]:.6f} {wobjCoord[2]:.6f} {wobjCoord[3]:.6f} {wobjCoord[4]:.6f} {wobjCoord[5]:.6f}")
25 rtn, extoolCoord = robot.GetCurExToolCoord()
26 print(f"GetCurExToolCoord {extoolCoord[0]:.6f} {extoolCoord[1]:.6f} {extoolCoord[2]:.6f} {extoolCoord[3]:.6f} {extoolCoord[4]:.6f} {extoolCoord[5]:.6f}")
27
28 rtn, exAxisCoord = robot.GetCurExAxisCoord()
29 print(f"GetCurExAxisCoord {exAxisCoord[0]:.6f} {exAxisCoord[1]:.6f} {exAxisCoord[2]:.6f} {exAxisCoord[3]:.6f} {exAxisCoord[4]:.6f} {exAxisCoord[5]:.6f}")
30 rtn, weightT = robot.GetTargetPayload(0)
31 rtn, cogT = robot.GetTargetPayloadCog(0)
32 print(f"GetTargetPayload {weightT:.6f} {cogT[0]:.6f} {cogT[1]:.6f} {cogT[2]:.6f}")
33 coordSet = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0]
34
35 rtn = robot.SetToolCoord(1, coordSet, 0, 0, 1, 0)
36 print(f"SetToolCoord rtn is {rtn}")
37
38 rtn = robot.SetWObjCoord(1, coordSet, 0)
39 print(f"SetWObjCoord rtn is {rtn}")
40
41 rtn = robot.SetLoadWeight(1, 1.3)
42 print(f"SetLoadWeight rtn is {rtn}")
43
44 rtn = robot.SetLoadCoord(10.0, 20.0, 30.0,1)
45 print(f"SetLoadCoord rtn is {rtn}")
46
47 etcp = [0.0, 0.0, 100.0, 0.0, 0.0, 0.0]
48 etool = [0.0, 0.0, 50.0, 0.0, 0.0, 0.0]
49 rtn = robot.SetExToolCoord(21, etcp, etool)
50 print(f"SetExToolCoord rtn is {rtn}")
51
52 rtn = robot.ExtAxisActiveECoordSys(1, 1, coordSet, 1)
53 print(f"ExtAxisActiveECoordSys rtn is {rtn}")
54
55 robot.CloseRPC()
56
57if __name__ == "__main__":
58 main()