9. Roboter-Trajektorienwiedergabe

9.1. TPD-Trajektorienaufzeichnungsparameter einstellen

 1/**
 2* @brief TPD-Trajektorienaufzeichnungsparameter einstellen
 3* @param [in] type Datentyp für die Aufzeichnung, 1 - Gelenkpositionen
 4* @param [in] name Name der Trajektoriendatei
 5* @param [in] period_ms Datenabtastperiode, feste Werte: 2ms, 4ms oder 8ms
 6* @param [in] di_choose DI-Auswahl, Bit0~Bit7 für Steuerkasten DI0~DI7, Bit8~Bit9 für Endeffektor DI0~DI1, 0 - nicht ausgewählt, 1 - ausgewählt
 7* @param [in] do_choose DO-Auswahl, Bit0~Bit7 für Steuerkasten DO0~DO7, Bit8~Bit9 für Endeffektor DO0~DO1, 0 - nicht ausgewählt, 1 - ausgewählt
 8* @return Fehlercode
 9*/
10int SetTPDParam(int type, String name, int period_ms, int di_choose, int do_choose);

9.2. TPD-Trajektorienaufzeichnung starten

 1/**
 2* @brief TPD-Trajektorienaufzeichnung starten
 3* @param [in] type Datentyp für die Aufzeichnung, 1 - Gelenkpositionen
 4* @param [in] name Name der Trajektoriendatei
 5* @param [in] period_ms Datenabtastperiode, feste Werte: 2ms, 4ms oder 8ms
 6* @param [in] di_choose DI-Auswahl, Bit0~Bit7 für Steuerkasten DI0~DI7, Bit8~Bit9 für Endeffektor DI0~DI1, 0 - nicht ausgewählt, 1 - ausgewählt
 7* @param [in] do_choose DO-Auswahl, Bit0~Bit7 für Steuerkasten DO0~DO7, Bit8~Bit9 für Endeffektor DO0~DO1, 0 - nicht ausgewählt, 1 - ausgewählt
 8* @return Fehlercode
 9*/
10int SetTPDStart(int type, String name, int period_ms, int di_choose, int do_choose);

9.3. TPD-Trajektorienaufzeichnung stoppen

1/**
2* @brief TPD-Trajektorienaufzeichnung stoppen
3* @return Fehlercode
4*/
5int SetWebTPDStop();

9.4. TPD-Trajektoriendatei löschen

1/**
2* @brief TPD-Trajektoriendatei löschen
3* @param [in] name Name der Trajektoriendatei
4* @return Fehlercode
5*/
6int SetTPDDelete(String name);

9.5. TPD-Trajektorie vorladen

1/**
2* @brief TPD-Trajektorie vorladen
3* @param [in] name Name der Trajektoriendatei
4* @return Fehlercode
5*/
6int LoadTPD(String name);

9.6. TPD-Trajektorie wiedergeben

1/**
2* @brief TPD-Trajektorie wiedergeben
3* @param [in] name Name der Trajektoriendatei
4* @param [in] blend 0 - keine Glättung, 1 - Glättung
5* @param [in] ovl Geschwindigkeitsskalierungsprozentsatz, Bereich [0~100]
6* @return Fehlercode
7*/
8int MoveTPD(String name, int blend, double ovl);

9.7. Startpose einer TPD-Trajektorie abrufen

1/**
2* @brief Startpose einer TPD-Trajektorie abrufen
3* @param [in] name TPD-Dateiname (ohne Dateiendung)
4* @param [out] desc_pose Startpose der Trajektorie
5* @return Fehlercode
6*/
7int GetTPDStartPose(String name, DescPose desc_pose);

9.8. Codebeispiel für Roboter-TPD-Trajektorienaufzeichnung

 1public static int TestTPD(Robot robot)
 2{
 3    int type = 1;
 4    String name = "tpd2025";
 5    int period_ms = 4;
 6    int di_choose = 0;
 7    int do_choose = 0;
 8
 9    robot.SetTPDParam(type, name, period_ms, di_choose, do_choose);
10
11    robot.Mode(1);
12    robot.Sleep(1000);
13    robot.DragTeachSwitch(1);
14    robot.SetTPDStart(type, name, period_ms, di_choose, do_choose);
15    robot.Sleep(10000);
16    robot.SetWebTPDStop();
17    robot.DragTeachSwitch(0);
18
19    double ovl = 100.0;
20    int blend = 0;
21
22    DescPose start_pose =new DescPose() {};
23
24    int rtn = robot.LoadTPD(name);
25    System.out.println("LoadTPD rtn is:"+ rtn);
26
27    robot.GetTPDStartPose(name, start_pose);
28    robot.MoveCart(start_pose, 0, 0, 100, 100, ovl, -1, -1);
29    robot.Sleep(1000);
30
31    rtn = robot.MoveTPD(name, blend, ovl);
32    System.out.println("MoveTPD rtn is: "+ rtn);
33    robot.Sleep(5000);
34
35    robot.SetTPDDelete(name);
36    return 0;
37}

9.9. Trajektorie vorverarbeiten

1/**
2* @brief Externe Trajektoriendatei vorverarbeiten
3* @param [in] name Name der Trajektoriendatei
4* @param [in] ovl Geschwindigkeitsskalierungsprozentsatz, Bereich [0~100]
5* @param [in] opt 1 - Kontrollpunkt, Standard = 1
6* @return Fehlercode
7*/
8int LoadTrajectoryJ(String name, double ovl, int opt);

9.10. Trajektorie wiedergeben (für MoveTrajectoryJ)

1/**
2* @brief Externe Trajektoriendatei wiedergeben (für MoveTrajectoryJ)
3* @return Fehlercode
4*/
5int MoveTrajectoryJ();

9.11. Startpose einer Trajektorie abrufen

1/**
2* @brief Startpose einer Trajektorie abrufen
3* @param [in] name Name der Trajektoriendatei
4* @param [out] desc_pose Startpose der Trajektorie
5* @return Fehlercode
6*/
7int GetTrajectoryStartPose(String name, DescPose desc_pose);

9.12. Nummer des aktuellen Trajektorienpunkts abrufen

1/**
2* @brief Nummer des aktuellen Trajektorienpunkts abrufen
3* @param [out] pnum Punktnummer (als Array der Länge 1 übergeben)
4* @return Fehlercode
5*/
6public int GetTrajectoryPointNum(int[] pnum);

9.13. Geschwindigkeit während der Trajektorienausführung einstellen

1/**
2* @brief Geschwindigkeit während der Trajektorienausführung einstellen
3* @param [in] ovl Geschwindigkeitsprozentsatz
4* @return Fehlercode
5*/
6public int SetTrajectoryJSpeed(double ovl);

9.14. Kraft und Drehmoment während der Trajektorienausführung einstellen

1/**
2* @brief Kraft und Drehmoment während der Trajektorienausführung einstellen
3* @param [in] ft Objekt der Klasse ForceTorque mit Kräften und Momenten in drei Richtungen (N und Nm)
4* @return Fehlercode
5*/
6public int SetTrajectoryJForceTorque(ForceTorque ft);

9.15. Kraft in X-Richtung während der Trajektorienausführung einstellen

1/**
2* @brief Kraft in X-Richtung während der Trajektorienausführung einstellen
3* @param [in] fx Kraft in X-Richtung (N)
4* @return Fehlercode
5*/
6int SetTrajectoryJForceFx(double fx);

9.16. Kraft in Y-Richtung während der Trajektorienausführung einstellen

1/**
2* @brief Kraft in Y-Richtung während der Trajektorienausführung einstellen
3* @param [in] fy Kraft in Y-Richtung (N)
4* @return Fehlercode
5*/
6int SetTrajectoryJForceFy(double fy);

9.17. Kraft in Z-Richtung während der Trajektorienausführung einstellen

1/**
2* @brief Kraft in Z-Richtung während der Trajektorienausführung einstellen
3* @param [in] fz Kraft in Z-Richtung (N)
4* @return Fehlercode
5*/
6int SetTrajectoryJForceFz(double fz);

9.18. Drehmoment um die X-Achse während der Trajektorienausführung einstellen

1/**
2* @brief Drehmoment um die X-Achse während der Trajektorienausführung einstellen
3* @param [in] tx Drehmoment um die X-Achse (Nm)
4* @return Fehlercode
5*/
6int SetTrajectoryJTorqueTx(double tx);

9.19. Drehmoment um die Y-Achse während der Trajektorienausführung einstellen

1/**
2* @brief Drehmoment um die Y-Achse während der Trajektorienausführung einstellen
3* @param [in] ty Drehmoment um die Y-Achse (Nm)
4* @return Fehlercode
5*/
6int SetTrajectoryJTorqueTy(double ty);

9.20. Drehmoment um die Z-Achse während der Trajektorienausführung einstellen

1/**
2* @brief Drehmoment um die Z-Achse während der Trajektorienausführung einstellen
3* @param [in] tz Drehmoment um die Z-Achse (Nm)
4* @return Fehlercode
5*/
6int SetTrajectoryJTorqueTz(double tz);

9.21. Trajektorien-J-Datei hochladen

1/**
2* @brief Trajektorien-J-Datei hochladen
3* @param [in] filePath Vollständiger Pfad zur hochzuladenden Trajektoriendatei, z.B. "C://test/testJ.txt"
4* @return Fehlercode
5*/
6int TrajectoryJUpLoad(String filePath);

9.22. Trajektorien-J-Datei löschen

1/**
2* @brief Trajektorien-J-Datei löschen
3* @param [in] fileName Name der Datei, z.B. "testJ.txt"
4* @return Fehlercode
5*/
6int TrajectoryJDelete(String fileName);

9.23. Codebeispiel für Roboter-Trajektorien-J-Wiedergabe

 1public static int TestTraj(Robot robot)
 2{
 3    int rtn = robot.TrajectoryJUpLoad("D://zUP/traj.txt");
 4    System.out.println("Upload TrajectoryJ A :"+ rtn);
 5
 6    String traj_file_name = "/fruser/traj/traj.txt";
 7    rtn = robot.LoadTrajectoryJ(traj_file_name, 100, 1);
 8    System.out.println("LoadTrajectoryJ:"+traj_file_name+", rtn is:"+ rtn);
 9
10    DescPose traj_start_pose=new DescPose(0,0,0,0,0,0);
11    rtn = robot.GetTrajectoryStartPose(traj_file_name, traj_start_pose);
12
13    robot.Sleep(1000);
14
15
16    ExaxisPos epos=new ExaxisPos(0,0,0,0);
17    DescPose po=new DescPose(0,0,0,0,0,0);
18    robot.SetSpeed(50);
19    robot.MoveCart(traj_start_pose, 0, 0, 100, 100, 100, -1, -1);
20
21    int traj_num = 0;
22    rtn = robot.GetTrajectoryPointNum(traj_num);
23
24    rtn = robot.SetTrajectoryJSpeed(50.0);
25    System.out.println("SetTrajectoryJSpeed is:"+ rtn);
26
27    ForceTorque traj_force=new ForceTorque(0,0,0,0,0,0);
28    traj_force.fx = 10;
29    rtn = robot.SetTrajectoryJForceTorque(traj_force);
30    System.out.println("SetTrajectoryJForceTorque rtn is: "+ rtn);
31
32    rtn = robot.SetTrajectoryJForceFx(10.0);
33    System.out.println("SetTrajectoryJForceFx rtn is:"+ rtn);
34
35    rtn = robot.SetTrajectoryJForceFy(0.0);
36    System.out.println("SetTrajectoryJForceFy rtn is:"+ rtn);
37
38    rtn = robot.SetTrajectoryJForceFz(0.0);
39    System.out.println("SetTrajectoryJForceFz rtn is: "+ rtn);
40
41    rtn = robot.SetTrajectoryJTorqueTx(10.0);
42    System.out.println("SetTrajectoryJTorqueTx rtn is: "+ rtn);
43
44    rtn = robot.SetTrajectoryJTorqueTy(10.0);
45    System.out.println("SetTrajectoryJTorqueTy rtn is:"+ rtn);
46
47    rtn = robot.SetTrajectoryJTorqueTz(10.0);
48    System.out.println("SetTrajectoryJTorqueTz rtn is:"+ rtn);
49
50    rtn = robot.MoveTrajectoryJ();
51    System.out.println("MoveTrajectoryJ rtn is: "+ rtn);
52
53    return 0;
54}

9.24. Trajektorie vorverarbeiten (Vorausschauende Planung für TrajectoryLA)

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

 1/**
 2* @brief Trajektorie vorverarbeiten (Vorausschauende Planung für TrajectoryLA)
 3* @param [in] name Name der Trajektoriendatei
 4* @param [in] mode Abtastmodus, 0 - keine Abtastung, 1 - Abtastung mit konstantem Datenintervall, 2 - Abtastung mit Fehlergrenze
 5* @param [in] errorLim Fehlergrenze (wirksam bei Verwendung linearer Approximation)
 6* @param [in] type Glättungsmethode, 0 - Bezier-Glättung
 7* @param [in] precision Glättungsgenauigkeit (wirksam bei Verwendung von Bezier-Glättung)
 8* @param [in] vamx Eingestellte maximale Geschwindigkeit (mm/s)
 9* @param [in] amax Eingestellte maximale Beschleunigung (mm/s²)
10* @param [in] jmax Eingestellter maximaler Ruck (mm/s³)
11* @return Fehlercode
12*/
13int LoadTrajectoryLA(String name, int mode, double errorLim, int type, double precision, double vamx, double amax, double jmax);

9.25. Trajektorie wiedergeben (Vorausschauende Planung für TrajectoryLA)

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

1/**
2* @brief Trajektorie wiedergeben (Vorausschauende Planung für TrajectoryLA)
3* @return Fehlercode
4*/
5int MoveTrajectoryLA();

9.26. Codebeispiel für Trajektorienwiedergabe (Vorausschauende Planung)

 1public static int TestLoadTrajLA(Robot robot)
 2{
 3    int rtn = robot.TrajectoryJUpLoad("D://zUP/traj.txt");
 4
 5    String traj_file_name = "/fruser/traj/traj.txt";
 6    rtn = robot.LoadTrajectoryLA(traj_file_name, 1, 2, 0, 2, 100, 200, 1000);
 7
 8    DescPose traj_start_pose=new DescPose(0,0,0,0,0,0);
 9    rtn = robot.GetTrajectoryStartPose(traj_file_name, traj_start_pose);
10
11    robot.Sleep(1000);
12    robot.SetSpeed(50);
13    robot.MoveCart(traj_start_pose, 0, 0, 100, 100, 100, -1, -1);
14
15    rtn = robot.MoveTrajectoryLA();
16
17    robot.CloseRPC();
18    return 0;
19}

9.27. Bewegung zum Startpunkt der TPD-Bahnaufzeichnung

1/**
2* @brief Bewegung zum Startpunkt der TPD-Bahnaufzeichnung
3* @param name Bahndateiname
4* @param moveType Bewegungstyp; 0-PTP; 1-LIN
5* @param ovl Geschwindigkeitsskalierungsprozentsatz, Bereich [0~100]
6* @return Fehlercode
7*/
8public int MoveToTPDStart(string name, int moveType, double ovl)

9.28. SDK-Codebeispiel für die Bewegung zum Startpunkt der TPD-Bahnaufzeichnung

 1public static void testTPDmove (Robot robot)
 2{
 3    int rtn = 0;
 4    int type = 1;
 5    String name = "tpd2025";
 6    int period_ms = 4;
 7    int di_choose = 0;
 8    int do_choose = 0;
 9
10    robot.SetTPDParam(type, name, period_ms, di_choose, do_choose);
11
12    robot.Mode(1);
13    robot.Sleep(1000);
14    robot.DragTeachSwitch(1);
15    robot.SetTPDStart(type, name, period_ms, di_choose, do_choose);
16    robot.Sleep(3000);
17    robot.SetWebTPDStop();
18    robot.DragTeachSwitch(0);
19
20    robot.Sleep(1000);
21    double ovl = 100.0;
22    int blend = 0;
23    DescPose start_pose = new DescPose();
24    rtn = robot.LoadTPD(name);
25    System.out.printf("LoadTPD rtn is: %d\n", rtn);
26
27    robot.GetTPDStartPose(name, start_pose);
28    System.out.printf("start pose, xyz is: %f %f %f. rpy is: %f %f %f \n", start_pose.tran.x, start_pose.tran.y, start_pose.tran.z, start_pose.rpy.rx, start_pose.rpy.ry, start_pose.rpy.rz);
29    //robot.MoveCart(&start_pose, 0, 0, 100, 100, ovl, -1, -1);
30    //robot.Sleep(1000);
31
32    rtn = robot.MoveToTPDStart(name, 0, 100);
33    System.out.printf("MoveToTPDStart rtn is: %d\n", rtn);
34
35    rtn = robot.MoveTPD(name, blend, ovl);
36    System.out.printf("MoveTPD rtn is: %d\n", rtn);
37
38    robot.Sleep(5000);
39
40    robot.SetTPDDelete(name);
41
42    return ;
43}