7. Ustawienia bezpieczeństwa robota

7.1. Ustawianie poziomu kolizji

Prototyp

SetAnticollision (mode,level,config)

Opis

Ustawianie poziomu kolizji

Parametry wymagane

  • mode: 0-poziom, 1-procent;

  • level=[j1,j2,j3,j4,j5,j6]: Próg kolizji;

  • config: 0-nie aktualizuj pliku konfiguracyjnego, 1-aktualizuj plik konfiguracyjny

Parametry domyślne

Brak

Wartość zwracana

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

7.2. Ustawianie strategii po kolizji

Prototyp

SetCollisionStrategy(strategy,safeTime,safeDistance,safeVel,safetyMargin)

Opis

Ustawianie strategii po kolizji

Parametry wymagane

  • strategy: 0-zatrzymaj z błędem, 1-kontynuuj działanie, 2-zatrzymaj z błędem, 3-tryb momentu grawitacyjnego, 4-tryb odpowiedzi oscylacyjnej, 5-tryb odbicia po kolizji

Parametry domyślne

  • safeTime: Czas bezpiecznego zatrzymania [1000-2000] ms, domyślnie: 1000

  • safeDistance: Bezpieczna odległość zatrzymania [1-150] mm, domyślnie: 100

  • safeVel: Bezpieczna prędkość zatrzymania [50-250] mm/s, domyślnie: 250

  • safetyMargin[6]: Współczynniki bezpieczeństwa [1-10], domyślnie: [10,10,10,10,10,10]

Wartość zwracana

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

7.3. Rozpoczęcie funkcji niestandardowego progu detekcji kolizji, ustawienie progów detekcji kolizji dla strony przegubów i strony TCP

Dodane w wersji python: SDK-v2.1.0

Prototyp

CustomCollisionDetectionStart(flag, jointDetectionThreshould, tcpDetectionThreshould, block)

Opis

Rozpoczęcie funkcji niestandardowego progu detekcji kolizji, ustawienie progów detekcji kolizji dla strony przegubów i strony TCP

Parametry wymagane

  • flag: 1-tylko detekcja przegubów włączona; 2-tylko detekcja TCP włączona; 3-detekcja przegubów i TCP włączone jednocześnie

  • jointDetectionThreshould: Próg detekcji kolizji przegubów j1-j6

  • tcpDetectionThreshould: Próg detekcji kolizji TCP, xyzabc

  • block: 0-nieblokujący; 1-blokujący

Parametry domyślne

Brak

Wartość zwracana

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

7.4. Zakończenie funkcji niestandardowego progu detekcji kolizji

Dodane w wersji python: SDK-v2.1.0

Prototyp

CustomCollisionDetectionEnd()

Opis

Zakończenie funkcji niestandardowego progu detekcji kolizji

Parametry wymagane

Brak

Parametry domyślne

Brak

Wartość zwracana

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

7.5. Przykład kodu ustawiania poziomu kolizji 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')
 5mode = 0
 6config = 1
 7level1 = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
 8level2 = [50.0, 20.0, 30.0, 40.0, 50.0, 60.0]
 9rtn = robot.SetAnticollision(mode, level1, config)
10print(f"SetAnticollision mode 0 rtn is {rtn}")
11mode = 1
12rtn = robot.SetAnticollision(mode, level2, config)
13print(f"SetAnticollision mode 1 rtn is {rtn}")
14p1Joint = [-11.904, -99.669, 117.473, -108.616, -91.726, 74.256]
15p2Joint = [-45.615, -106.172, 124.296, -107.151, -91.282, 74.255]
16p1Desc = [-419.524, -13.000, 351.569, -178.118, 0.314, 3.833]
17p2Desc = [-321.222, 185.189, 335.520, -179.030, -1.284, -29.869]
18exaxisPos = [0.0, 0.0, 0.0, 0.0]
19offdese = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
20robot.MoveL(desc_pos=p2Desc, tool=0, user=0, vel=100, blendR=2)
21robot.ResetAllError()
22safety = [5, 5, 5, 5, 5, 5]
23rtn = robot.SetCollisionStrategy(3, 1000, 150, 250, safety)
24print(f"SetCollisionStrategy rtn is {rtn}")
25jointDetectionThreshould = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
26tcpDetectionThreshould = [60, 60, 60, 60, 60, 60]
27rtn = robot.CustomCollisionDetectionStart(3, jointDetectionThreshould, tcpDetectionThreshould, 0)
28print(f"CustomCollisionDetectionStart rtn is {rtn}")
29robot.MoveL(desc_pos=p1Desc, tool=0, user=0, vel=100)
30robot.MoveL(desc_pos=p2Desc, tool=0, user=0, vel=100)
31rtn = robot.CustomCollisionDetectionEnd()
32print(f"CustomCollisionDetectionEnd rtn is {rtn}")
33robot.CloseRPC()

7.6. Ustawianie dodatniego ograniczenia

Prototyp

SetLimitPositive(p_limit)

Opis

Ustawianie dodatniego ograniczenia

Parametry wymagane

  • p_limit=[j1,j2,j3,j4,j5,j6]: Pozycje sześciu przegubów

Parametry domyślne

Brak

Wartość zwracana

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

7.7. Ustawianie ujemnego ograniczenia

Prototyp

SetLimitNegative(n_limit)

Opis

Ustawianie ujemnego ograniczenia

Parametry wymagane

  • n_limit=[j1,j2,j3,j4,j5,j6]: Pozycje sześciu przegubów

Parametry domyślne

Brak

Wartość zwracana

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

7.8. Pobieranie kątów miękkiego ograniczenia przegubów

Prototyp

GetJointSoftLimitDeg(flag=1)

Opis

Pobieranie kątów miękkiego ograniczenia przegubów

Parametry wymagane

Brak

Parametry domyślne

flag: 0-blokujący, 1-nieblokujący domyślnie 1

Wartość zwracana

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

  • [j1min,j1max,j2min,j2max,j3min,j3max, j4min,j4max,j5min, j5max, j6min,j6max]: Oś 1 ~ oś 6, ujemne i dodatnie ograniczenie przegubów, jednostka [mm]

7.9. Przykład kodu ustawiania ograniczeń 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')
 5plimit = [170.0, 80.0, 150.0, 80.0, 170.0, 160.0]
 6robot.SetLimitPositive(plimit)
 7nlimit = [-170.0, -260.0, -150.0, -260.0, -170.0, -160.0]
 8robot.SetLimitNegative(nlimit)
 9error,neg_deg = robot.GetJointSoftLimitDeg(0)
10print(f"pos limit deg: {neg_deg[1]}, {neg_deg[3]}, {neg_deg[5]}, {neg_deg[7]}, {neg_deg[9]}, {neg_deg[11]}")
11print(f"neg limit deg: {neg_deg[0]}, {neg_deg[2]}, {neg_deg[4]}, {neg_deg[6]}, {neg_deg[8]}, {neg_deg[10]}")
12robot.CloseRPC()

7.10. Ustawianie metody detekcji kolizji robota

Dodane w wersji python: SDK-v2.1.2

Prototyp

SetCollisionDetectionMethod(method, thresholdMode)

Opis

Ustawianie metody detekcji kolizji robota

Parametry wymagane

  • method: Metoda detekcji kolizji: 0-tryb prądowy; 1-podwójny enkoder; 2-tryb prądowy i podwójny enkoder włączone jednocześnie

  • thresholdMode: Sposób progu poziomu kolizji; 0-stały próg poziomu kolizji; 1-niestandardowy próg detekcji kolizji

Parametry domyślne

Brak

Wartość zwracana

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

7.11. Włączanie/wyłączanie detekcji kolizji w stanie statycznym

Dodane w wersji python: SDK-v2.0.5

Prototyp

SetStaticCollisionOnOff(status)

Opis

Włączanie/wyłączanie detekcji kolizji w stanie statycznym

Parametry wymagane

  • status: 0-wyłączone; 1-włączone

Parametry domyślne

Brak

Wartość zwracana

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

7.12. Przykład kodu ustawiania metody detekcji kolizji 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.SetCollisionDetectionMethod(0,0)
 6rtn = robot.SetStaticCollisionOnOff(1)
 7print(f"SetStaticCollisionOnOff On rtn is {rtn}")
 8time.sleep(5)
 9rtn = robot.SetStaticCollisionOnOff(0)
10print(f"SetStaticCollisionOnOff Off rtn is {rtn}")
11robot.CloseRPC()

7.13. Detekcja momentu obrotowego i mocy przegubów

Dodane w wersji python: SDK-v2.0.5

Prototyp

SetPowerLimit(status, power)

Opis

Detekcja momentu obrotowego i mocy przegubów

Parametry wymagane

  • status: 0-wyłączone; 1-włączone

  • power: Ustawiona maksymalna moc (W)

Parametry domyślne

Brak

Wartość zwracana

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

7.14. Przykład kodu detekcji momentu obrotowego i mocy przegubów

 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')
 5robot.DragTeachSwitch(1)
 6robot.SetPowerLimit(1, 200)
 7error,torques = robot.GetJointTorques(1)
 8count = 100
 9robot.ServoJTStart()
10while count > 0:
11    error = robot.ServoJT(torques, 0.001)
12    count -= 1
13    time.sleep(0.001)  # opóźnienie 1 ms
14error = robot.ServoJTEnd()
15robot.DragTeachSwitch(0)
16robot.CloseRPC()

7.15. Ustawianie parametrów bezpiecznej prędkości

Prototyp

SetVelReducePara(enable, maxTCPVel, strategy, maxJointVel=[45.0, 45.0, 45.0, 45.0, 45.0, 45.0])

Opis

Ustawia parametry prędkości bezpieczeństwa

Parametry Wymagane

  • enable: 0-wyłączony; 1-włączony w trybie ręcznym; 2-włączony we wszystkich trybach (automatyczne ograniczenie prędkości nieobsługiwane)

  • maxTCPVel: Maksymalny limit prędkości TCP; [0-1000] mm/s

  • strategy: Strategia po przekroczeniu prędkości; 0-zatrzymaj i alarm; 1-automatyczne ograniczenie prędkości; 2-zatrzymaj i alarm z wyłączeniem

  • maxJointVel: Maksymalna prędkość dla 6 stawów (°/s), domyślnie [45.0, 45.0, 45.0, 45.0, 45.0, 45.0]

Parametry Domyślne

Brak

Wartość Zwracana

  • Kod błędu, 0-sukces; niezerowy-błąd

7.16. Przykład kodu SDK ustawiania parametrów bezpiecznej prędkości

 1from fairino import Robot
 2import time
 3
 4def main():
 5    robot = Robot.RPC('192.168.58.2')
 6    time.sleep(0.5)
 7
 8    j1 = [10.220, -11.121, -118.086, -46.739, 82.036, 131.503]
 9    j2 = [89.782, -11.122, -118.086, -46.740, 82.036, 131.504]
10
11    epos = [0.0, 0.0, 0.0, 0.0]
12    offset_pos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
13
14    robot.SetSpeed(20)
15
16    maxJointVel = [100.0, 100.0, 100.0, 100.0, 100.0, 100.0]
17
18    rtn = robot.SetVelReducePara(0, 200, 0, maxJointVel)
19    robot.MoveJ(joint_pos=j2, tool=1, user=2, vel=100, acc=100, ovl=100,
20                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
21
22    rtn = robot.SetVelReducePara(2, 200, 0, maxJointVel)
23    print(f"SetVelReduceParaA param error rtn is {rtn}")
24
25    robot.MoveJ(joint_pos=j1, tool=1, user=2, vel=100, acc=100, ovl=100,
26                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
27    robot.MoveJ(joint_pos=j2, tool=1, user=2, vel=100, acc=100, ovl=100,
28                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
29
30    maxJointVel = [20.0, 20.0, 20.0, 20.0, 20.0, 20.0]
31    rtn = robot.SetVelReducePara(2, 200, 0, maxJointVel)
32    print(f"SetVelReduceParaB reduce vel rtn is {rtn}")
33
34    robot.MoveJ(joint_pos=j1, tool=1, user=2, vel=100, acc=100, ovl=100,
35                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
36    robot.MoveJ(joint_pos=j2, tool=1, user=2, vel=100, acc=100, ovl=100,
37                exaxis_pos=epos, blendT=-1, offset_flag=0, offset_pos=offset_pos)
38
39    robot.CloseRPC()
40
41if __name__ == "__main__":
42    main()

7.17. Pobieranie Sumy Kontrolnej Parametrów Konfiguracji Bezpieczeństwa

Prototyp

GetSafetyParamsCheckSum(self)

Opis

Pobiera sumę kontrolną parametrów konfiguracji bezpieczeństwa

Parametry Wymagane

  • status: Status weryfikacji, 0-ważny, 1-w trakcie weryfikacji, 2-weryfikacja nieudana

  • checksum: Suma kontrolna, 8-cyfrowa liczba szesnastkowa (warstwa podstawowa zwraca uint32_t, wymaga ręcznej konwersji)

Parametry Domyślne

Brak

Wartość Zwracana

  • Kod błędu, 0-sukces; niezerowy-błąd

7.18. Weryfikacja Hasła Operacji Bezpieczeństwa

Prototyp

SafetyOPPasswordCheck(self,status,password)

Opis

Weryfikacja hasła operacji bezpieczeństwa

Parametry Wymagane

  • status: Weryfikacja, 0-włączona, 1-wyłączona

  • password: Hasło

Parametry Domyślne

Brak

Wartość Zwracana

  • Kod błędu, 0-sukces; niezerowy-błąd

7.19. Przykład Kodu Weryfikacji Hasła Parametrów Konfiguracji Bezpieczeństwa

 1from time import sleep
 2import time
 3from fairino import Robot
 4
 5# Nawiązanie połączenia z kontrolerem robota
 6robot = Robot.RPC('192.168.58.2')
 7
 8
 9def test(self):
10    error, status, hex_code = robot.GetSafetyParamsCheckSum()
11    print(f"GetSafetyParamsChecksum: error={error}, status={status}, hex_code={hex_code}")
12    time.sleep(3)
13    error = robot.SafetyOPPasswordCheck(0, "12345678")
14    print(f"SafetyOPPasswordCheck: error={error}")
15
16    if error == 0:
17        error = robot.SetAnticollision(mode=0, level=[2.0, 2.0, 2.0, 2.0, 2.0, 2.0], config=1)
18        print(f"SetAnticollision: error={error}")
19
20        error = robot.SetCollisionStrategy(strategy=0, safeTime=1000, safeDistance=150,
21                                        safetyMargin=[10, 10, 10, 10, 10, 10])
22        print(f"SetCollisionStrategy: error={error}")
23
24    time.sleep(1)
25
26    error, status, hex_code = robot.GetSafetyParamsCheckSum()
27    print(f"GetSafetyParamsChecksum(again): error={error}, status={status}, hex_code={hex_code}")
28
29
30test(robot)