9. Riproduzione Traiettoria Robot

9.1. Impostare Parametri Registrazione Traiettoria TPD

 1/**
 2* @brief  Impostare Parametri Registrazione Traiettoria TPD
 3* @param  [in] type  Tipo dati registrazione, 1-posizione articolare
 4* @param  [in] name  Nome file traiettoria
 5* @param  [in] period_ms  Periodo campionamento dati, valori fissi 2ms o 4ms o 8ms
 6* @param  [in] di_choose  Selezione DI, bit0~bit7 corrispondono DI0~DI7 quadro controllo, bit8~bit9 corrispondono DI0~DI1 estremità, 0-non selezionato, 1-selezionato
 7* @param  [in] do_choose  Selezione DO, bit0~bit7 corrispondono DO0~DO7 quadro controllo, bit8~bit9 corrispondono DO0~DO1 estremità, 0-non selezionato, 1-selezionato
 8* @return   Codice errore
 9*/
10int SetTPDParam(int type, string name, int period_ms, UInt16 di_choose, UInt16 do_choose);

9.2. Iniziare Registrazione Traiettoria TPD

 1/**
 2* @brief  Iniziare Registrazione Traiettoria TPD
 3* @param  [in] type  Tipo dati registrazione, 1-posizione articolare
 4* @param  [in] name  Nome file traiettoria
 5* @param  [in] period_ms  Periodo campionamento dati, valori fissi 2ms o 4ms o 8ms
 6* @param  [in] di_choose  Selezione DI, bit0~bit7 corrispondono DI0~DI7 quadro controllo, bit8~bit9 corrispondono DI0~DI1 estremità, 0-non selezionato, 1-selezionato
 7* @param  [in] do_choose  Selezione DO, bit0~bit7 corrispondono DO0~DO7 quadro controllo, bit8~bit9 corrispondono DO0~DO1 estremità, 0-non selezionato, 1-selezionato
 8* @return   Codice errore
 9*/
10int SetTPDStart(int type, string name, int period_ms, UInt16 di_choose, UInt16 do_choose);

9.3. Arrestare Registrazione Traiettoria TPD

1/**
2* @brief  Arrestare Registrazione Traiettoria TPD
3* @return   Codice errore
4*/
5int SetWebTPDStop();

9.4. Eliminare Registrazione Traiettoria TPD

1/**
2* @brief  Eliminare Registrazione Traiettoria TPD
3* @param  [in] name  Nome file traiettoria
4* @return   Codice errore
5*/
6int SetTPDDelete(string name);

9.5. Precaricamento Traiettoria TPD

1/**
2* @brief  Precaricamento Traiettoria
3* @param  [in] name  Nome file traiettoria
4* @return   Codice errore
5*/
6int LoadTPD(string name);

9.6. Ottenere Posa Iniziale Traiettoria TPD

1/**
2* @brief Ottenere Posa Iniziale Traiettoria
3* @param [in] name  Nome file traiettoria
4* @param [out] desc_pose Posa iniziale traiettoria
5* @return Codice errore
6*/
7int GetTPDStartPose(string name, ref DescPose desc_pose);

9.7. Riproduzione Traiettoria TPD

1/**
2* @brief  Riproduzione Traiettoria
3* @param  [in] name  Nome file traiettoria
4* @param  [in] blend 0-non smoothing, 1-smoothing
5* @param  [in] ovl  Percentuale scala velocità, range [0~100]
6* @return   Codice errore
7*/
8int MoveTPD(string name, byte blend, float ovl);

9.8. Esempio Codice Registrazione Traiettoria TPD Robot

 1private void btnTPDMove_Click(object sender, EventArgs e)
 2{
 3    int type = 1;
 4    string name = "tpd2025";
 5    int period_ms = 4;
 6    ushort di_choose = 0;
 7    ushort do_choose = 0;
 8
 9    robot.SetTPDParam(type, name, period_ms, di_choose, do_choose);
10
11    robot.Mode(1);
12    Thread.Sleep(1000);
13    robot.DragTeachSwitch(1);
14    robot.SetTPDStart(type, name, period_ms, di_choose, do_choose);
15    Thread.Sleep(10000);
16    robot.SetWebTPDStop();
17    robot.DragTeachSwitch(0);
18
19    float ovl = 100.0f;
20    byte blend = 0;
21
22    DescPose start_pose = new DescPose();
23
24    int rtn = robot.LoadTPD(name);
25    Console.WriteLine("LoadTPD rtn is: {0}\n", rtn);
26
27    robot.GetTPDStartPose(name, ref start_pose);
28    Console.WriteLine("start pose, xyz is: {0} {1} {2}. rpy is: {3} {4} {5} \n",
29        start_pose.tran.x, start_pose.tran.y, start_pose.tran.z,
30        start_pose.rpy.rx, start_pose.rpy.ry, start_pose.rpy.rz);
31    robot.MoveCart(start_pose, 0, 0, 100, 100, ovl, -1, -1);
32    Thread.Sleep(1000);
33
34    rtn = robot.MoveTPD(name, blend, ovl);
35    Console.WriteLine("MoveTPD rtn is: {0}\n", rtn);
36    Thread.Sleep(5000);
37
38    robot.SetTPDDelete(name);
39}

9.9. Pre-elaborazione File Traiettoria Esterna

1/**
2* @brief Pre-elaborazione File Traiettoria Esterna
3* @param [in] name Nome file traiettoria
4* @param [in] ovl Percentuale scala velocità, range [0~100]
5* @param [in] opt 1-punto controllo, default 1
6* @return Codice errore
7*/
8int LoadTrajectoryJ(string name, float ovl, int opt);

9.10. Riproduzione File Traiettoria Esterna

1/**
2* @brief Riproduzione File Traiettoria Esterna
3* @return Codice errore
4*/
5int MoveTrajectoryJ();

9.11. Ottenere Posizione Iniziale Traiettoria File Traiettoria

1/**
2* @brief Ottenere Posizione Iniziale Traiettoria File Traiettoria
3* @param [in] name Nome file traiettoria
4* @param [out] desc_pose Posa iniziale traiettoria
5* @return Codice errore
6*/
7int GetTrajectoryStartPose(string name, ref DescPose desc_pose);

9.12. Ottenere Numero Punto Traiettoria File Traiettoria

1/**
2* @brief Ottenere Numero Punto Traiettoria
3* @param [out] pnum Numero punto traiettoria
4* @return Codice errore
5*/
6int GetTrajectoryPointNum(ref int pnum);

9.13. Impostare Velocità Esecuzione Traiettoria File Traiettoria

1/**
2* @brief Impostare Velocità Esecuzione Traiettoria File Traiettoria
3* @param [in] ovl Percentuale velocità
4* @return Codice errore
5*/
6int SetTrajectoryJSpeed(double ovl);

9.14. Impostare Forza e Coppia durante Esecuzione Traiettoria File Traiettoria

1/**
2* @brief Impostare Forza e Coppia durante Esecuzione Traiettoria File Traiettoria
3* @param [in] ft Forza e coppia tre direzioni, unità N e Nm
4* @return Codice errore
5*/
6int SetTrajectoryJForceTorque(ForceTorque ft);

9.15. Impostare Forza lungo Direzione x durante Esecuzione Traiettoria

1/**
2* @brief Impostare Forza lungo Direzione x durante Esecuzione Traiettoria
3* @param [in] fx  Forza lungo direzione x, unità N
4* @return Codice errore
5*/
6int SetTrajectoryJForceFx(double fx);

9.16. Impostare Forza lungo Direzione y durante Esecuzione Traiettoria

1/**
2* @brief Impostare Forza lungo Direzione y durante Esecuzione Traiettoria
3* @param [in] fy  Forza lungo direzione y, unità N
4* @return Codice errore
5*/
6int SetTrajectoryJForceFy(double fy);

9.17. Impostare Forza lungo Direzione z durante Esecuzione Traiettoria

1/**
2* @brief Impostare Forza lungo Direzione z durante Esecuzione Traiettoria
3* @param [in] fz  Forza lungo direzione z, unità N
4* @return Codice errore
5*/
6int SetTrajectoryJForceFz(double fz);

9.18. Impostare Coppia attorno Asse x durante Esecuzione Traiettoria

1/**
2* @brief Impostare Coppia attorno Asse x durante Esecuzione Traiettoria
3* @param [in] tx  Coppia attorno asse x, unità Nm
4* @return Codice errore
5*/
6int SetTrajectoryJTorqueTx(double tx);

9.19. Impostare Coppia attorno Asse y durante Esecuzione Traiettoria

1/**
2* @brief Impostare Coppia attorno Asse y durante Esecuzione Traiettoria
3* @param [in] ty  Coppia attorno asse y, unità Nm
4* @return Codice errore
5*/
6int SetTrajectoryJTorqueTy(double ty);

9.20. Impostare Coppia attorno Asse z durante Esecuzione Traiettoria

1/**
2* @brief Impostare Coppia attorno Asse z durante Esecuzione Traiettoria
3* @param [in] tz  Coppia attorno asse z, unità Nm
4* @return Codice errore
5*/
6int SetTrajectoryJTorqueTz(double tz);

9.21. Caricare File Traiettoria J

1/**
2* @brief Caricare File Traiettoria J
3* @param [in] filePath Nome percorso completo file traiettoria caricamento   C://test/testJ.txt
4* @return Codice errore
5*/
6int TrajectoryJUpLoad(string filePath);

9.22. Eliminare File Traiettoria J

1/**
2* @brief Eliminare File Traiettoria J
3* @param [in] fileName Nome file testJ.txt
4* @return Codice errore
5*/
6int TrajectoryJDelete(string fileName);

9.23. Esempio Codice Riproduzione File Traiettoria J Robot

 1private void button33_Click(object sender, EventArgs e)
 2{
 3    int rtn = robot.TrajectoryJUpLoad("D://zUP/spray_traj1.txt");
 4    Console.WriteLine("Upload TrajectoryJ A {0}\n", rtn);
 5
 6    string traj_file_name = "/fruser/traj/spray_traj1.txt";
 7    rtn = robot.LoadTrajectoryJ(traj_file_name, 100, 1);
 8    Console.WriteLine("LoadTrajectoryJ {0}, rtn is: {1}\n", traj_file_name, rtn);
 9
10    DescPose traj_start_pose = new DescPose();
11    rtn = robot.GetTrajectoryStartPose(traj_file_name, ref traj_start_pose);
12    Console.WriteLine("GetTrajectoryStartPose is: {0}\n", rtn);
13    Console.WriteLine("desc_pos:{0},{1},{2},{3},{4},{5}\n",
14        traj_start_pose.tran.x, traj_start_pose.tran.y, traj_start_pose.tran.z,
15        traj_start_pose.rpy.rx, traj_start_pose.rpy.ry, traj_start_pose.rpy.rz);
16
17    Thread.Sleep(1000);
18
19    robot.SetSpeed(50);
20    robot.MoveCart(traj_start_pose, 0, 0, 100, 100, 100, -1, -1);
21
22    int traj_num = 0;
23    rtn = robot.GetTrajectoryPointNum(ref traj_num);
24    Console.WriteLine("GetTrajectoryStartPose rtn is: {0}, traj num is: {1}\n", rtn, traj_num);
25
26    rtn = robot.SetTrajectoryJSpeed(50.0f);
27    Console.WriteLine("SetTrajectoryJSpeed is: {0}\n", rtn);
28
29    ForceTorque traj_force = new ForceTorque();
30    traj_force.fx = 10;
31    rtn = robot.SetTrajectoryJForceTorque(traj_force);
32    Console.WriteLine("SetTrajectoryJForceTorque rtn is: {0}\n", rtn);
33
34    rtn = robot.SetTrajectoryJForceFx(10.0f);
35    Console.WriteLine("SetTrajectoryJForceFx rtn is: {0}\n", rtn);
36
37    rtn = robot.SetTrajectoryJForceFy(0.0f);
38    Console.WriteLine("SetTrajectoryJForceFy rtn is: {0}\n", rtn);
39
40    rtn = robot.SetTrajectoryJForceFz(0.0f);
41    Console.WriteLine("SetTrajectoryJForceFz rtn is: {0}\n", rtn);
42
43    rtn = robot.SetTrajectoryJTorqueTx(10.0f);
44    Console.WriteLine("SetTrajectoryJTorqueTx rtn is: {0}\n", rtn);
45
46    rtn = robot.SetTrajectoryJTorqueTy(10.0f);
47    Console.WriteLine("SetTrajectoryJTorqueTy rtn is: {0}\n", rtn);
48
49    rtn = robot.SetTrajectoryJTorqueTz(10.0f);
50    Console.WriteLine("SetTrajectoryJTorqueTz rtn is: {0}\n", rtn);
51
52    rtn = robot.MoveTrajectoryJ();
53    Console.WriteLine("MoveTrajectoryJ rtn is: {0}\n", rtn);
54}

9.24. Pre-elaborazione Traiettoria (Look-ahead Traiettoria)

 1/**
 2* @brief  Pre-elaborazione Traiettoria (Look-ahead Traiettoria)
 3* @param  [in] name  Nome file traiettoria
 4* @param  [in] mode Modalità campionamento, 0-non campionamento; 1-campionamento intervallo dati uguale; 2-campionamento limite errore uguale
 5* @param  [in] errorLim Limite errore, effettivo quando usa interpolazione lineare
 6* @param  [in] type Metodo smoothing, 0-smoothing Bezier
 7* @param  [in] precision Precisione smoothing, effettivo quando usa smoothing Bezier
 8* @param  [in] vamx Velocità massima impostata, mm/s
 9* @param  [in] amax Accelerazione massima impostata, mm/s2
10* @param  [in] jmax Jerk massimo impostato, mm/s3
11* @return   Codice errore
12*/
13int LoadTrajectoryLA(string name, int mode, double errorLim, int type, double precision, double vamx, double amax, double jmax);

9.25. Riproduzione Traiettoria (Look-ahead Traiettoria)

1/**
2* @brief  Riproduzione Traiettoria (Look-ahead Traiettoria)
3* @return   Codice errore
4*/
5int MoveTrajectoryLA();

9.26. Esempio Codice Riproduzione Traiettoria (Look-ahead Traiettoria)

 1private void button8_Click(object sender, EventArgs e)
 2{
 3    int rtn = 0;
 4
 5    string nameA = "/fruser/traj/A.txt";
 6    string nameB = "/fruser/traj/B.txt";
 7
 8    rtn = robot.LoadTrajectoryLA(nameB, 0, 0, 0, 1, 100.0, 100.0, 1000.0);    // Interpolazione lineare
 9    Console.WriteLine($"LoadTrajectoryLA rtn is {rtn}");
10
11    DescPose startPos = new DescPose(0, 0, 0, 0, 0, 0);
12    robot.GetTrajectoryStartPose(nameA, ref startPos);
13
14    //
15    robot.MoveCart(startPos, 1, 0, (float)100.0, (float)100.0, (float)100.0, -1, -1);
16
17    rtn = robot.MoveTrajectoryLA();
18    Console.WriteLine($"MoveTrajectoryLA rtn is {rtn}");
19}