7. Roboter-Sicherheitseinstellungen

7.1. Kollisionsstufe einstellen

1/**
2* @brief Kollisionsstufe einstellen
3* @param [in] mode 0 - Stufe, 1 - Prozent
4* @param [in] level Kollisionsschwellwert, Stufenbereich [1 - 10 entspricht Stufe 1-10, 100 - aus], Prozentbereich [0~10 entspricht 0% - 100%]
5* @param [in] config 0 - Konfigurationsdatei nicht aktualisieren, 1 - Konfigurationsdatei aktualisieren
6* @return Fehlercode
7*/
8int SetAnticollision(int mode, Object[] level, int config);

7.2. Strategie nach Kollision einstellen

1/**
2* @brief Strategie nach Kollision einstellen
3* @param [in] strategy 0 - Fehler melden und anhalten, 1 - Weiterlaufen
4* @param [in] safeTime Sicherheitsstopp-Zeit [1000 - 2000] ms
5* @param [in] safeDistance Sicherheitsstopp-Distanz [1-150] mm
6* @param [in] safetyMargin Sicherheitsfaktoren für J1-J6 [1-10]
7* @return Fehlercode
8*/
9int SetCollisionStrategy(int strategy, int safeTime, int safeDistance, int[] safetyMargin);

7.3. Benutzerdefinierte Kollisionserkennungsschwellwerte starten

Neu in Version Java: SDK-v1.0.3-3.8.0

1/**
2* @brief Benutzerdefinierte Kollisionserkennungsschwellwerte starten, Schwellwerte für Gelenk und TCP setzen
3* @param [in] flag 1 - Nur Gelenkerkennung aktivieren; 2 - Nur TCP-Erkennung aktivieren; 3 - Gelenk- und TCP-Erkennung gleichzeitig aktivieren
4* @param [in] jointDetectionThreshould Gelenk-Kollisionserkennungsschwellwerte J1-J6
5* @param [in] tcpDetectionThreshould TCP-Kollisionserkennungsschwellwerte, xyzabc
6* @param [in] block 0 - nicht blockierend; 1 - blockierend
7* @return Fehlercode
8*/
9public int CustomCollisionDetectionStart(int flag, double[] jointDetectionThreshould, double[] tcpDetectionThreshould, int block);

7.4. Benutzerdefinierte Kollisionserkennungsschwellwerte stoppen

Neu in Version Java: SDK-v1.0.3-3.8.0

1/**
2* @brief Benutzerdefinierte Kollisionserkennungsschwellwerte stoppen
3* @return Fehlercode
4*/
5public int CustomCollisionDetectionEnd();

7.5. Codebeispiel zum Einstellen der Roboter-Kollisionsstufe

 1public static int TestCollision(Robot robot)
 2{
 3    int mode = 0;
 4    int config = 1;
 5    Object[] level1 = new Object[]{ 1.0,2.0,3.0,4.0,5.0,6.0 };
 6    Object[] level2 = new Object[]{ 50.0,20.0,30.0,40.0,50.0,60.0 };
 7
 8    int rtn = robot.SetAnticollision(mode, level1, config);
 9    System.out.println("SetAnticollision mode 0 rtn is: "+ rtn);
10    mode = 1;
11    rtn = robot.SetAnticollision(mode, level2, config);
12    System.out.println("SetAnticollision mode 1 rtn is :"+ rtn);
13
14    JointPos p1Joint=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
15    JointPos p2Joint=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
16
17    DescPose p1Desc=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
18    DescPose p2Desc=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
19
20    ExaxisPos exaxisPos=new ExaxisPos(0.0, 0.0, 0.0, 0.0);
21    DescPose offdese=new DescPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
22    robot.MoveL(p2Joint, p2Desc, 0, 0, 100, 100, 100, 2,0, exaxisPos, 0, 0, offdese,0,10);
23    robot.ResetAllError();
24    int[] safety = new int[]{ 5,5,5,5,5,5 };
25    rtn = robot.SetCollisionStrategy(3, 1000, 150, 250, safety);
26    System.out.println("SetCollisionStrategy rtn is:"+ rtn);
27
28    double[] jointDetectionThreshould = new double[]{ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };
29    double[] tcpDetectionThreshould =new double[] { 60,60,60,60,60,60 };
30    rtn = robot.CustomCollisionDetectionStart(3, jointDetectionThreshould, tcpDetectionThreshould, 0);
31    System.out.println("CustomCollisionDetectionStart rtn is :"+ rtn);
32
33    robot.MoveL(p1Joint, p1Desc, 0, 0, 100, 100, 100, -1,0, exaxisPos, 0, 0, offdese,0,10);
34    robot.MoveL(p2Joint, p2Desc, 0, 0, 100, 100, 100, -1,0, exaxisPos, 0, 0, offdese,0,10);
35    rtn = robot.CustomCollisionDetectionEnd();
36    System.out.println("CustomCollisionDetectionEnd rtn is: "+ rtn);
37    return 0;
38}

7.6. Positiven Endanschlag einstellen

1/**
2* @brief Positiven Endanschlag (weiche Grenze) einstellen
3* @param [in] limit Positionen der sechs Gelenke, Einheit [°]
4* @return Fehlercode
5*/
6int SetLimitPositive(Object[] limit);

7.7. Negativen Endanschlag einstellen

1/**
2* @brief Negativen Endanschlag (weiche Grenze) einstellen
3* @param [in] limit Positionen der sechs Gelenke, Einheit [°]
4* @return Fehlercode
5*/
6int SetLimitNegative(Object[] limit);

7.8. Weiche Gelenk-Endanschläge (Winkel) abrufen

1/**
2* @brief Weiche Gelenk-Endanschläge (Winkel) abrufen
3* @param [in] flag 0 - blockierend, 1 - nicht blockierend
4* @param [out] negative Winkel der negativen Endanschläge [°]
5* @param [out] positive Winkel der positiven Endanschläge [°]
6* @return Fehlercode
7*/
8int GetJointSoftLimitDeg(int flag, Object[] negative, Object[] positive);

7.9. Codebeispiel zum Einstellen der Roboter-Endanschläge

 1public static int TestLimit(Robot robot)
 2{
 3    Object[] plimit =new Object[] { 170.0,80.0,150.0,80.0,170.0,160.0 };
 4    robot.SetLimitPositive(plimit);
 5    Object[] nlimit =new Object[] { -170.0,-260.0,-150.0,-260.0,-170.0,-160.0 };
 6    robot.SetLimitNegative(nlimit);
 7
 8    Object[] neg_deg =new Object[] {0, 0 , 0, 0, 0, 0}, pos_deg = new Object[]{0, 0 , 0, 0, 0, 0};
 9    robot.GetJointSoftLimitDeg(1,  neg_deg,  pos_deg);
10    System.out.println("neg limit deg:"+ neg_deg[0]+","+ neg_deg[1]+","+ neg_deg[2]+","+ neg_deg[3]+","+ neg_deg[4]+","+ neg_deg[5]);
11    System.out.println("pos limit deg:"+pos_deg[0]+","+ pos_deg[1]+","+ pos_deg[2]+","+ pos_deg[3]+","+ pos_deg[4]+","+pos_deg[5]);
12    return 0;
13}

7.10. Roboter-Kollisionserkennungsmethode einstellen

Geändert in Version Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Roboter-Kollisionserkennungsmethode einstellen
3* @param [in] method Kollisionserkennungsmethode: 0 - Strommodus; 1 - Doppel-Encoder; 2 - Strom und Doppel-Encoder gleichzeitig aktiviert
4* @param [in] thresholdMode Art des Kollisionsstufen-Schwellwerts: 0 - Fester Schwellwert der Kollisionsstufe; 1 - Benutzerdefinierter Kollisionserkennungsschwellwert
5* @return Fehlercode
6*/
7int SetCollisionDetectionMethod(int method, int thresholdMode)

7.11. Kollisionserkennung im Stillstand ein-/ausschalten

1/**
2* @brief Kollisionserkennung im Stillstand ein-/ausschalten
3* @param [in] status 0 - aus; 1 - ein
4* @return Fehlercode
5*/
6public int SetStaticCollisionOnOff(int status)

7.12. Codebeispiel zum Einstellen der Roboter-Kollisionserkennungsmethode

 1public static int TestCollisionMethod(Robot robot)
 2{
 3    int rtn = robot.SetCollisionDetectionMethod(0);
 4
 5    rtn = robot.SetStaticCollisionOnOff(1);
 6    System.out.println("SetStaticCollisionOnOff On rtn is:"+ rtn);
 7    robot.Sleep(5000);
 8    rtn = robot.SetStaticCollisionOnOff(0);
 9    System.out.println("SetStaticCollisionOnOff Off rtn is:"+ rtn);
10
11    robot.CloseRPC();
12    return 0;
13}

7.13. Gelenk-Drehmoment-/Leistungsüberwachung

1/**
2* @brief Gelenk-Drehmoment-/Leistungsüberwachung
3* @param [in] status 0 - aus; 1 - ein
4* @param [in] power Maximale eingestellte Leistung (W)
5* @return Fehlercode
6*/
7public int SetPowerLimit(int status, double power)

7.14. Codebeispiel für Gelenk-Drehmoment-/Leistungsüberwachung

 1public static int TestPowerLimit(Robot robot)
 2{
 3    robot.DragTeachSwitch(1);
 4    robot.SetPowerLimit(1, 200);
 5    List<Number> joint_toq=new ArrayList<>();
 6    joint_toq=robot.GetJointTorques(1);
 7
 8    int count = 100;
 9    robot.ServoJTStart(); // ServoJT starten
10    int error = 0;
11    while (count > 0)
12    {
13        count = count - 1;
14        robot.Sleep(1);
15    }
16    error = robot.ServoJTEnd();
17    robot.DragTeachSwitch(0);
18
19    robot.CloseRPC();
20    return 0;
21}

7.15. Sicherheitsgeschwindigkeitsparameter einstellen

1/**
2* @brief Sicherheitsgeschwindigkeitsparameter einstellen
3* @param enable 0-aus; 1-im manuellen Modus aktiviert; 2-in allen Modi aktiviert (automatische Geschwindigkeitsbegrenzung nicht unterstützt)
4* @param maxTCPVel Maximale TCP-Geschwindigkeitsbegrenzung; [0-1000] mm/s
5* @param strategy Strategie nach Überschreitung; 0-Stopp mit Alarm; 1-automatische Geschwindigkeitsbegrenzung; 2-Stopp mit Alarm und Deaktivierung
6* @return Fehlercode
7*/
8public int SetVelReducePara(int enable, double maxTCPVel, int strategy)

7.16. SDK-Codebeispiel zum Einstellen der Sicherheitsgeschwindigkeitsparameter

 1public static int TestSetVelReducePara(Robot robot) {
 2    int rtn = 0;
 3
 4    JointPos j1 = new JointPos(0, -90, 90, 0, 0, 0);
 5    JointPos j2 = new JointPos(90, -90, 90, 0, 0, 0);
 6    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 7    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 8
 9    robot.SetSpeed(80);
10    rtn = robot.SetVelReducePara(2, 30, 1);
11    System.out.printf("SetVelReducePara param error rtn is %d\n", rtn);
12
13    rtn = robot.SetVelReducePara(0, 30, 1);
14    System.out.printf("SetVelReducePara disable reduce vel rtn is %d\n", rtn);
15    robot.MoveJ(j1, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
16    robot.MoveJ(j2, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
17
18    rtn = robot.SetVelReducePara(1, 30, 1);
19    System.out.printf("SetVelReducePara reduce vel rtn is %d\n", rtn);
20    robot.MoveJ(j1, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
21    robot.MoveJ(j2, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
22
23    rtn = robot.SetVelReducePara(2, 30, 2);
24    System.out.printf("SetVelReducePara disable robot rtn is %d\n", rtn);
25    robot.MoveJ(j1, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
26    robot.MoveJ(j2, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
27
28    robot.Sleep(2000);
29    robot.ResetAllError();
30    robot.RobotEnable(1);
31    robot.Sleep(1000);
32
33    rtn = robot.SetVelReducePara(2, 30, 0);
34    System.out.printf("SetVelReducePara report error rtn is %d\n", rtn);
35    robot.MoveJ(j1, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
36    robot.MoveJ(j2, 0, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
37
38    robot.Sleep(1000);
39    return 0;
40}