4. Ruch robota

4.1. Jog (punktowy ruch)

 1/**
 2* @brief Jog (punktowy ruch)
 3* @param [in] refType 0-jog przegubów, 2-jog w układzie bazowym, 4-jog w układzie narzędzia, 8-jog w układzie przedmiotu
 4* @param [in] nb 1-przegub 1(lub oś X), 2-przegub 2(lub oś Y), 3-przegub 3(lub oś Z), 4-przegub 4(lub obrót wokół osi X), 5-przegub 5(lub obrót wokół osi Y), 6-przegub 6(lub obrót wokół osi Z)
 5* @param [in] dir 0-kierunek ujemny, 1-kierunek dodatni
 6* @param [in] vel Procent prędkości, [0~100]
 7* @param [in] acc Procent przyspieszenia, [0~100]
 8* @param [in] max_dis Maksymalny kąt pojedynczego ruchu punktowego, jednostka [°] lub odległość, jednostka [mm]
 9* @return Kod błędu
10*/
11int StartJOG(int refType, int nb, int dir, double vel, double acc, double max_dis);

4.2. Zatrzymanie jog z redukcją prędkości

1/**
2* @brief  Zatrzymanie jog z redukcją prędkości
3* @param  [in]  stopType  1-zatrzymanie jog przegubów, 3-zatrzymanie jog w układzie bazowym, 5-zatrzymanie jog w układzie narzędzia, 9-zatrzymanie jog w układzie przedmiotu
4* @return  Kod błędu
5*/
6int StopJOG(int stopType);

4.3. Natychmiastowe zatrzymanie jog

1/**
2* @brief Natychmiastowe zatrzymanie jog
3* @return  Kod błędu
4*/
5int ImmStopJOG();

4.4. Przykład kodu sterowania punktowego robotem

 1public static  int TestJOG(Robot robot)
 2{
 3    for (int i = 0; i < 6; i++)
 4    {
 5        robot.StartJOG(0, i + 1, 0, 20.0, 20.0, 30.0);
 6        robot.Sleep(1000);
 7        robot.ImmStopJOG();
 8        robot.Sleep(1000);
 9    }
10
11    for (int i = 0; i < 6; i++)
12    {
13        robot.StartJOG(2, i + 1, 0, 20.0, 20.0, 30.0);
14        robot.Sleep(1000);
15        robot.ImmStopJOG();
16        robot.Sleep(1000);
17    }
18
19    for (int i = 0; i < 6; i++)
20    {
21        robot.StartJOG(4, i + 1, 0, 20.0, 20.0, 30.0);
22        robot.Sleep(1000);
23        robot.StopJOG(5);
24        robot.Sleep(1000);
25    }
26
27    for (int i = 0; i < 6; i++)
28    {
29        robot.StartJOG(8, i + 1, 0, 20.0, 20.0, 30.0);
30        robot.Sleep(1000);
31        robot.StopJOG(9);
32        robot.Sleep(1000);
33    }
34    return 0;
35}

4.5. Ruch w przestrzeni przegubów

 1/**
 2* @brief  Ruch w przestrzeni przegubów
 3* @param  [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  [in] desc_pos  Docelowa poza kartezjańska
 5* @param  [in] tool  Numer narzędzia, zakres [0~14]
 6* @param  [in] user  Numer przedmiotu, zakres [0~14]
 7* @param  [in] vel  Procent prędkości, zakres [0~100]
 8* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @param  [in] epos  Pozycja osi rozszerzenia, jednostka mm
11* @param  [in] blendT [-1.0]-ruch do pozycji (blokujący), [0~500.0]-czas wygładzania (nieblokujący), jednostka ms
12* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
13* @param  [in] offset_pos  Wartość przesunięcia pozy
14* @return  Kod błędu
15*/
16int MoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos);

4.6. Ruch w przestrzeni przegubów (automatyczne obliczenia kinematyki prostej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch w przestrzeni przegubów (automatyczne obliczenia kinematyki prostej)
 3* @param  [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  [in] tool  Numer narzędzia, zakres [0~14]
 5* @param  [in] user  Numer przedmiotu, zakres [0~14]
 6* @param  [in] vel  Procent prędkości, zakres [0~100]
 7* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @param  [in] epos  Pozycja osi rozszerzenia, jednostka mm
10* @param  [in] blendT [-1.0]-ruch do pozycji (blokujący), [0~500.0]-czas wygładzania (nieblokujący), jednostka ms
11* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
12* @param  [in] offset_pos  Wartość przesunięcia pozy
13* @return  Kod błędu
14*/
15int MoveJ(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos)

4.7. Ruch liniowy w przestrzeni kartezjańskiej

Zmienione w wersji Java: SDK-v1.0.5-3.8.2

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (przeciążona funkcja 1 z dodanym blendMode)
 3* @param  joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  desc_pos   Docelowa poza kartezjańska
 5* @param  tool  Numer narzędzia, zakres [1~15]
 6* @param  user  Numer przedmiotu, zakres [1~15]
 7* @param  vel  Procent prędkości, zakres [0~100]
 8* @param  acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  ovl  Współczynnik skalowania prędkości [0~100]/prędkość fizyczna (mm/s)
10* @param  blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
11* @param  blendMode Sposób przejścia; 0-przejście styczne wewnętrznie; 1-przejście narożne
12* @param  epos  Pozycja osi rozszerzenia, jednostka mm
13* @param  search  0-brak poszukiwania pozycji drutu, 1-poszukiwanie pozycji drutu
14* @param  offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
15* @param  offset_pos  Wartość przesunięcia pozy
16* @param  oacc Współczynnik skalowania przyspieszenia [0-100]/przyspieszenie fizyczne (mm/s2)
17* @param  velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
18* @param  overSpeedStrategy  Strategia przekroczenia prędkości, 1-standardowa; 2-zatrzymanie z błędem przy przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
19* @param  speedPercent  Procentowy próg dopuszczalnego zmniejszenia prędkości [0-100], domyślnie 10%
20* @return  Kod błędu
21*/
22public int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, double oacc,int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.8. Ruch liniowy w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)
 3* @param [in] desc_pos   Docelowa poza kartezjańska
 4* @param [in] tool  Numer narzędzia, zakres [1~15]
 5* @param [in] user  Numer przedmiotu, zakres [1~15]
 6* @param [in] vel  Procent prędkości, zakres [0~100]
 7* @param [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @param [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
10* @param [in] blendMode Sposób przejścia; 0-przejście styczne wewnętrznie; 1-przejście narożne
11* @param [in] epos  Pozycja osi rozszerzenia, jednostka mm
12* @param [in] search  0-brak poszukiwania pozycji drutu, 1-poszukiwanie pozycji drutu
13* @param [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
14* @param [in] offset_pos  Wartość przesunięcia pozy
15* @param [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
16* @param [in] overSpeedStrategy  Strategia przekroczenia prędkości, 1-standardowa; 2-zatrzymanie z błędem przy przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
17* @param [in] speedPercent  Procentowy próg dopuszczalnego zmniejszenia prędkości [0-100], domyślnie 10%
18* @return  Kod błędu
19*/
20int MoveL(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int config, int overSpeedStrategy, int speedPercent)

4.9. Ruch liniowy w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów prędkości i przyspieszenia velAccParamMode)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów prędkości i przyspieszenia velAccParamMode)
 3* @param  [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  [in] desc_pos   Docelowa poza kartezjańska
 5* @param  [in] tool  Numer narzędzia, zakres [1~15]
 6* @param  [in] user  Numer przedmiotu, zakres [1~15]
 7* @param  [in] vel  Procent prędkości, zakres [0~100]
 8* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @param  [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
11* @param  [in] epos  Pozycja osi rozszerzenia, jednostka mm
12* @param  [in] search  0-brak poszukiwania pozycji drutu, 1-poszukiwanie pozycji drutu
13* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
14* @param  [in] offset_pos  Wartość przesunięcia pozy
15* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
16* @param  [in] overSpeedStrategy  Strategia przekroczenia prędkości, 1-standardowa; 2-zatrzymanie z błędem przy przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
17* @param  [in] speedPercent  Procentowy próg dopuszczalnego zmniejszenia prędkości [0-100], domyślnie 10%
18* @return  Kod błędu
19*/
20public int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.10. Ruch liniowy w przestrzeni kartezjańskiej (przeciążona funkcja 1 z dodanym blendMode)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (przeciążona funkcja 1 z dodanym blendMode)
 3* @param  [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  [in] desc_pos   Docelowa poza kartezjańska
 5* @param  [in] tool  Numer narzędzia, zakres [1~15]
 6* @param  [in] user  Numer przedmiotu, zakres [1~15]
 7* @param  [in] vel  Procent prędkości, zakres [0~100]
 8* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @param  [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
11* @param  [in] blendMode Sposób przejścia; 0-przejście styczne wewnętrznie; 1-przejście narożne
12* @param  [in] epos  Pozycja osi rozszerzenia, jednostka mm
13* @param  [in] search  0-brak poszukiwania pozycji drutu, 1-poszukiwanie pozycji drutu
14* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
15* @param  [in] offset_pos  Wartość przesunięcia pozy
16* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
17* @param  [in] overSpeedStrategy  Strategia przekroczenia prędkości, 1-standardowa; 2-zatrzymanie z błędem przy przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
18* @param  [in] speedPercent  Procentowy próg dopuszczalnego zmniejszenia prędkości [0-100], domyślnie 10%
19* @return  Kod błędu
20*/
21public int MoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.11. Ruch liniowy w przestrzeni kartezjańskiej (przeciążona funkcja 2 bez konieczności podawania pozycji przegubów)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (przeciążona funkcja 2 bez konieczności podawania pozycji przegubów)
 3* @param  [in] desc_pos   Docelowa poza kartezjańska
 4* @param  [in] tool  Numer narzędzia, zakres [1~15]
 5* @param  [in] user  Numer przedmiotu, zakres [1~15]
 6* @param  [in] vel  Procent prędkości, zakres [0~100]
 7* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @param  [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
10* @param  [in] blendMode Sposób przejścia; 0-przejście styczne wewnętrznie; 1-przejście narożne
11* @param  [in] epos  Pozycja osi rozszerzenia, jednostka mm
12* @param  [in] search  0-brak poszukiwania pozycji drutu, 1-poszukiwanie pozycji drutu
13* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
14* @param  [in] offset_pos  Wartość przesunięcia pozy
15* @param  [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
16* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
17* @param  [in] overSpeedStrategy  Strategia przekroczenia prędkości, 1-standardowa; 2-zatrzymanie z błędem przy przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
18* @param  [in] speedPercent  Procentowy próg dopuszczalnego zmniejszenia prędkości [0-100], domyślnie 10%
19* @return  Kod błędu
20*/
21public int MoveL(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, int config, int velAccParamMode, int overSpeedStrategy, int speedPercent)

4.12. Ruch po łuku w przestrzeni kartezjańskiej

 1/**
 2* @brief  Ruch po łuku w przestrzeni kartezjańskiej
 3* @param  joint_pos_p  Pozycja przegubów punktu pośredniego, jednostka deg
 4* @param  desc_pos_p   Pozycja kartezjańska punktu pośredniego
 5* @param  ptool  Numer narzędzia, zakres [1~15]
 6* @param  puser  Numer przedmiotu, zakres [1~15]
 7* @param  pvel  Procent prędkości, zakres [0~100]
 8* @param  pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  epos_p  Pozycja osi rozszerzenia, jednostka mm
10* @param  poffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
11* @param  offset_pos_p  Wartość przesunięcia pozy
12* @param  joint_pos_t  Pozycja przegubów punktu docelowego, jednostka deg
13* @param  desc_pos_t   Pozycja kartezjańska punktu docelowego
14* @param  ttool  Numer narzędzia, zakres [1~15]
15* @param  tuser  Numer przedmiotu, zakres [1~15]
16* @param  tvel  Procent prędkości, zakres [0~100]
17* @param  tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
18* @param  epos_t  Pozycja osi rozszerzenia, jednostka mm
19* @param  toffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
20* @param  offset_pos_t  Wartość przesunięcia pozy
21* @param  ovl  Współczynnik skalowania prędkości [0~100]/prędkość fizyczna (mm/s)
22* @param  blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
23* @param  oacc Współczynnik skalowania przyspieszenia [0-100]/przyspieszenie fizyczne (mm/s2)
24* @param  velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
25* @return  Kod błędu
26*/
27public int MoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, double oacc,int velAccParamMode)

4.13. Ruch po łuku w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch po łuku w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)
 3* @param [in] desc_pos_p   Pozycja kartezjańska punktu pośredniego
 4* @param [in] ptool  Numer narzędzia, zakres [1~15]
 5* @param [in] puser  Numer przedmiotu, zakres [1~15]
 6* @param [in] pvel  Procent prędkości, zakres [0~100]
 7* @param [in] pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param [in] epos_p  Pozycja osi rozszerzenia, jednostka mm
 9* @param [in] poffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
10* @param [in] offset_pos_p  Wartość przesunięcia pozy
11* @param [in] desc_pos_t   Pozycja kartezjańska punktu docelowego
12* @param [in] ttool  Numer narzędzia, zakres [1~15]
13* @param [in] tuser  Numer przedmiotu, zakres [1~15]
14* @param [in] tvel  Procent prędkości, zakres [0~100]
15* @param [in] tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
16* @param [in] epos_t  Pozycja osi rozszerzenia, jednostka mm
17* @param [in] toffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
18* @param [in] offset_pos_t  Wartość przesunięcia pozy
19* @param [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
20* @param [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
21* @param [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
22* @return  Kod błędu
23*/
24int MoveC(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int config)

4.14. Ruch po łuku w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów prędkości i przyspieszenia velAccParamMode)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch po łuku w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów prędkości i przyspieszenia velAccParamMode)
 3* @param  [in] joint_pos_p  Pozycja przegubów punktu pośredniego, jednostka deg
 4* @param  [in] desc_pos_p   Pozycja kartezjańska punktu pośredniego
 5* @param  [in] ptool  Numer narzędzia, zakres [1~15]
 6* @param  [in] puser  Numer przedmiotu, zakres [1~15]
 7* @param  [in] pvel  Procent prędkości, zakres [0~100]
 8* @param  [in] pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  [in] epos_p  Pozycja osi rozszerzenia, jednostka mm
10* @param  [in] poffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
11* @param  [in] offset_pos_p  Wartość przesunięcia pozy
12* @param  [in] joint_pos_t  Pozycja przegubów punktu docelowego, jednostka deg
13* @param  [in] desc_pos_t   Pozycja kartezjańska punktu docelowego
14* @param  [in] ttool  Numer narzędzia, zakres [1~15]
15* @param  [in] tuser  Numer przedmiotu, zakres [1~15]
16* @param  [in] tvel  Procent prędkości, zakres [0~100]
17* @param  [in] tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
18* @param  [in] epos_t  Pozycja osi rozszerzenia, jednostka mm
19* @param  [in] toffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
20* @param  [in] offset_pos_t  Wartość przesunięcia pozy
21* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
22* @param  [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
23* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
24* @return  Kod błędu
25*/
26public int MoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int velAccParamMode)

4.15. Ruch po łuku w przestrzeni kartezjańskiej (przeciążona funkcja 1 bez konieczności podawania pozycji przegubów)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch po łuku w przestrzeni kartezjańskiej (przeciążona funkcja 1 bez konieczności podawania pozycji przegubów)
 3* @param  [in] desc_pos_p   Pozycja kartezjańska punktu pośredniego    * @param  [in] ptool  Numer narzędzia, zakres [1~15]
 4* @param  [in] puser  Numer przedmiotu, zakres [1~15]
 5* @param  [in] pvel  Procent prędkości, zakres [0~100]
 6* @param  [in] pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 7* @param  [in] epos_p  Pozycja osi rozszerzenia, jednostka mm
 8* @param  [in] poffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
 9* @param  [in] offset_pos_p  Wartość przesunięcia pozy
10* @param  [in] desc_pos_t   Pozycja kartezjańska punktu docelowego
11* @param  [in] ttool  Numer narzędzia, zakres [1~15]
12* @param  [in] tuser  Numer przedmiotu, zakres [1~15]
13* @param  [in] tvel  Procent prędkości, zakres [0~100]
14* @param  [in] tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
15* @param  [in] epos_t  Pozycja osi rozszerzenia, jednostka mm
16* @param  [in] toffset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
17* @param  [in] offset_pos_t  Wartość przesunięcia pozy
18* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
19* @param  [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
20* @param  [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
21* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
22* @return  Kod błędu
23*/
24public int MoveC(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int config, int velAccParamMode)

4.16. Ruch po pełnym okręgu w przestrzeni kartezjańskiej

Zmienione w wersji Java: SDK-v1.0.6-3.8.3

 1/**
 2*@brief  Ruch po pełnym okręgu w przestrzeni kartezjańskiej
 3*@param  joint_pos_p  Pozycja przegubów punktu pośredniego 1, jednostka deg
 4*@param  desc_pos_p   Pozycja kartezjańska punktu pośredniego 1
 5*@param  ptool  Numer narzędzia, zakres [1~15]
 6*@param  puser  Numer przedmiotu, zakres [1~15]
 7*@param  pvel  Procent prędkości, zakres [0~100]
 8*@param  pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9*@param  epos_p  Pozycja osi rozszerzenia, jednostka mm
10*@param  joint_pos_t  Pozycja przegubów punktu pośredniego 2, jednostka deg
11*@param  desc_pos_t   Pozycja kartezjańska punktu pośredniego 2
12*@param  ttool  Numer narzędzia, zakres [1~15]
13*@param  tuser  Numer przedmiotu, zakres [1~15]
14*@param  tvel  Procent prędkości, zakres [0~100]
15*@param  tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
16*@param  epos_t  Pozycja osi rozszerzenia, jednostka mm
17*@param  ovl  Współczynnik skalowania prędkości [0~100]/prędkość fizyczna (mm/s)
18*@param  offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
19*@param  offset_pos  Wartość przesunięcia pozy
20*@param  oacc Współczynnik skalowania przyspieszenia [0-100]/przyspieszenie fizyczne (mm/s2)
21*@param  blendR -1: blokujący; 0~1000: promień wygładzania
22*@param  velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
23*@return  Kod błędu
24*/
25public int Circle(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR, int velAccParamMode)

4.17. Ruch po pełnym okręgu w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2 * @brief  Ruch po pełnym okręgu w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)
 3 * @param  [in] desc_pos_p   Pozycja kartezjańska punktu pośredniego 1
 4 * @param  [in] ptool  Numer narzędzia, zakres [0~14]
 5 * @param  [in] puser  Numer przedmiotu, zakres [0~14]
 6 * @param  [in] pvel  Procent prędkości, zakres [0~100]
 7 * @param  [in] pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8 * @param  [in] epos_p  Pozycja osi rozszerzenia, jednostka mm
 9 * @param  [in] desc_pos_t   Pozycja kartezjańska punktu pośredniego 2
10 * @param  [in] ttool  Numer narzędzia, zakres [0~14]
11 * @param  [in] tuser  Numer przedmiotu, zakres [0~14]
12 * @param  [in] tvel  Procent prędkości, zakres [0~100]
13 * @param  [in] tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
14 * @param  [in] epos_t  Pozycja osi rozszerzenia, jednostka mm
15 * @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
16 * @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
17 * @param  [in] offset_pos  Wartość przesunięcia pozy
18 * @param  [in] oacc Procent przyspieszenia
19 * @param  [in] blendR -1: blokujący; 0~1000: promień wygładzania
20 * @param  [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
21 * @return  Kod błędu
22 */
23int Circle(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR,int config)

4.18. Ruch po pełnym okręgu w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów prędkości i przyspieszenia velAccParamMode)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2*@brief  Ruch po pełnym okręgu w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów prędkości i przyspieszenia velAccParamMode)
 3*@param  [in] joint_pos_p  Pozycja przegubów punktu pośredniego 1, jednostka deg
 4*@param  [in] desc_pos_p   Pozycja kartezjańska punktu pośredniego 1
 5*@param  [in] ptool  Numer narzędzia, zakres [1~15]
 6*@param  [in] puser  Numer przedmiotu, zakres [1~15]
 7*@param  [in] pvel  Procent prędkości, zakres [0~100]
 8*@param  [in] pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9*@param  [in] epos_p  Pozycja osi rozszerzenia, jednostka mm
10*@param  [in] joint_pos_t  Pozycja przegubów punktu pośredniego 2, jednostka deg
11*@param  [in] desc_pos_t   Pozycja kartezjańska punktu pośredniego 2
12*@param  [in] ttool  Numer narzędzia, zakres [1~15]
13*@param  [in] tuser  Numer przedmiotu, zakres [1~15]
14*@param  [in] tvel  Procent prędkości, zakres [0~100]
15*@param  [in] tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
16*@param  [in] epos_t  Pozycja osi rozszerzenia, jednostka mm
17*@param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
18*@param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
19*@param  [in] offset_pos  Wartość przesunięcia pozy
20*@param  [in] oacc Procent przyspieszenia
21*@param  [in] blendR -1: blokujący; 0~1000: promień wygładzania
22*@param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
23*@return  Kod błędu
24*/
25public int Circle(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR, int velAccParamMode)

4.19. Ruch po pełnym okręgu w przestrzeni kartezjańskiej (przeciążona funkcja 1 bez konieczności podawania pozycji przegubów)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch po pełnym okręgu w przestrzeni kartezjańskiej (przeciążona funkcja 1 bez konieczności podawania pozycji przegubów)
 3* @param  [in] desc_pos_p   Pozycja kartezjańska punktu pośredniego 1
 4* @param  [in] ptool  Numer narzędzia, zakres [0~14]
 5* @param  [in] puser  Numer przedmiotu, zakres [0~14]
 6* @param  [in] pvel  Procent prędkości, zakres [0~100]
 7* @param  [in] pacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param  [in] epos_p  Pozycja osi rozszerzenia, jednostka mm
 9* @param  [in] desc_pos_t   Pozycja kartezjańska punktu pośredniego 2
10* @param  [in] ttool  Numer narzędzia, zakres [0~14]
11* @param  [in] tuser  Numer przedmiotu, zakres [0~14]
12* @param  [in] tvel  Procent prędkości, zakres [0~100]
13* @param  [in] tacc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
14* @param  [in] epos_t  Pozycja osi rozszerzenia, jednostka mm
15* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
16* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
17* @param  [in] offset_pos  Wartość przesunięcia pozy
18* @param  [in] oacc Procent przyspieszenia
19* @param  [in] blendR -1: blokujący; 0~1000: promień wygładzania
20* @param  [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
21* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procentowy; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s2)
22* @return  Kod błędu
23*/
24public int Circle(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, double ovl, int offset_flag, DescPose offset_pos, double oacc, double blendR, int config, int velAccParamMode)

4.20. Ruch punkt-punkt w przestrzeni kartezjańskiej

 1/**
 2* @brief Ruch punkt-punkt w przestrzeni kartezjańskiej
 3* @param [in] desc_pos  Docelowa poza kartezjańska lub przyrost pozy
 4* @param [in] tool  Numer narzędzia, zakres [0~14]
 5* @param [in] user  Numer przedmiotu, zakres [0~14]
 6* @param [in] vel  Procent prędkości, zakres [0~100]
 7* @param [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @param [in] blendT [-1.0]-ruch do pozycji (blokujący), [0~500.0]-czas wygładzania (nieblokujący), jednostka ms
10* @param [in] config  Konfiguracja przestrzeni przegubów, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów, domyślnie -1
11* @return Kod błędu
12*/
13int MoveCart(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendT, int config);

4.21. Przykład kodu podstawowych instrukcji ruchu robota

 1public static int TestMove(Robot robot)
 2{
 3    int rtn=-1;
 4    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 5    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 6    JointPos j3=new JointPos(-29.777, -84.536, 109.275, -114.075, -86.655, 74.257);
 7    JointPos j4=new JointPos(-31.154, -95.317, 94.276, -88.079, -89.740, 74.256);
 8    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 9    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
10    DescPose desc_pos3=new DescPose(-487.434, 154.362, 308.576, 176.600, 0.268, -14.061);
11    DescPose desc_pos4=new DescPose(-443.165, 147.881, 480.951, 179.511, -0.775, -15.409);
12    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
13    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
14    int tool = 0;
15    int user = 0;
16    double vel = 100.0;
17    double acc = 100.0;
18    double ovl = 100.0;
19    double oacc = 100.0;
20    double blendT = 0.0;
21    double blendR = 0.0;
22    int flag = 0;
23    int search = 0;
24    int blendMode = 0;
25    int velAccMode = 0;
26    robot.SetSpeed(20);
27    rtn = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
28    System.out.printf("movej errcode:%d\n", rtn);
29    rtn = robot.MoveL(j2, desc_pos2, tool, user, vel, acc, ovl, blendR, blendMode, epos, search, flag, offset_pos, oacc, velAccMode,0,10);
30    System.out.printf("movel errcode:%d\n", rtn);
31    rtn = robot.MoveC(j3, desc_pos3, tool, user, vel, acc, epos, flag, offset_pos, j4, desc_pos4, tool, user, vel, acc, epos, flag, offset_pos, ovl, blendR, oacc, velAccMode);
32    System.out.printf("movec errcode:%d\n", rtn);
33    rtn = robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
34    System.out.printf("movej errcode:%d\n", rtn);
35    rtn = robot.Circle(j3, desc_pos3, tool, user, vel, acc, epos, j1, desc_pos1, tool, user, vel, acc, epos, ovl, flag, offset_pos, oacc, -1, velAccMode);
36    System.out.printf("circle errcode:%d\n", rtn);
37    rtn = robot.MoveCart(desc_pos4, tool, user, vel, acc, ovl, blendT, -1);
38    System.out.printf("MoveCart errcode:%d\n", rtn);
39    rtn = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
40    System.out.printf("movej errcode:%d\n", rtn);
41    rtn = robot.MoveL(desc_pos2, tool, user, vel, acc, ovl, blendR, blendMode, epos, search, flag, offset_pos, -1, velAccMode,0,10);
42    System.out.printf("movel errcode:%d\n", rtn);
43    rtn = robot.MoveC(desc_pos3, tool, user, vel, acc, epos, flag, offset_pos, desc_pos4, tool, user, vel, acc, epos, flag, offset_pos, ovl, blendR, -1, velAccMode);
44    System.out.printf("movec errcode:%d\n", rtn);
45    rtn = robot.MoveJ(j2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
46    System.out.printf("movej errcode:%d\n", rtn);
47    rtn = robot.Circle(desc_pos3, tool, user, vel, acc, epos, desc_pos1, tool, user, vel, acc, epos, ovl, flag, offset_pos, oacc, blendR, -1, velAccMode);
48    System.out.printf("circle errcode:%d\n", rtn);
49    return 0;
50}

4.22. Ruch po spirali w przestrzeni kartezjańskiej

 1/**
 2* @brief Ruch po spirali w przestrzeni kartezjańskiej
 3* @param [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param [in] desc_pos   Docelowa poza kartezjańska
 5* @param [in] tool  Numer narzędzia, zakres [0~14]
 6* @param [in] user  Numer przedmiotu, zakres [0~14]
 7* @param [in] vel  Procent prędkości, zakres [0~100]
 8* @param [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param [in] epos  Pozycja osi rozszerzenia, jednostka mm
10* @param [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
11* @param [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
12* @param [in] offset_pos  Wartość przesunięcia pozy
13* @return Kod błędu
14*/
15int NewSpiral(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, ExaxisPos epos, double ovl, int offset_flag, DescPose offset_pos, SpiralParam spiral_param);

4.23. Ruch po spirali w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Ruch po spirali w przestrzeni kartezjańskiej (automatyczne obliczenia kinematyki odwrotnej)
 3* @param [in] desc_pos   Docelowa poza kartezjańska
 4* @param [in] tool  Numer narzędzia, zakres [0~14]
 5* @param [in] user  Numer przedmiotu, zakres [0~14]
 6* @param [in] vel  Procent prędkości, zakres [0~100]
 7* @param [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param [in] epos  Pozycja osi rozszerzenia, jednostka mm
 9* @param [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @param [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
11* @param [in] offset_pos  Wartość przesunięcia pozy
12* @param [in] spiral_param  Parametry spirali
13* @param [in] config  Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
14* @return Kod błędu
15*/
16int NewSpiral(DescPose desc_pos, int tool, int user, double vel, double acc, ExaxisPos epos, double ovl, int offset_flag, DescPose offset_pos, SpiralParam spiral_param,int config)

4.24. Przykład kodu ruchu po spirali

 1public static int TestSpiral(Robot robot)
 2{
 3    int rtn=-1;
 4    JointPos j=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 5    DescPose desc_pos=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 6    DescPose offset_pos1=new DescPose(50, 0, 0, -30, 0, 0);
 7    DescPose offset_pos2=new DescPose(50, 0, 0, -5, 0, 0);
 8    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
 9    SpiralParam sp=new SpiralParam(1,5.0,50.0,10.0,10.0,0);
10
11    int tool = 0;
12    int user = 0;
13    double vel = 100.0;
14    double acc = 100.0;
15    double ovl = 100.0;
16    double blendT = 0.0;
17    int flag = 2;
18
19    rtn = robot.MoveJ(j, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos1);
20    System.out.println("movej errcode:"+ rtn);
21
22    rtn = robot.NewSpiral(desc_pos, tool, user, vel, acc, epos, ovl, flag, offset_pos2, sp,-1);
23    System.out.println("newspiral errcode:"+ rtn);
24
25    return 0;
26}

4.25. Rozpoczęcie ruchu serwo

1/**
2* @brief Rozpoczęcie ruchu serwo, używane razem z instrukcjami ServoJ, ServoCart
3* @param comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
4* @return Kod błędu
5*/
6public int ServoMoveStart (int comType)

4.26. Zakończenie ruchu serwo

1/**
2* @brief Zakończenie ruchu serwo, używane razem z instrukcjami ServoJ, ServoCart
3* @param comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
4* @return Kod błędu
5*/
6public int ServoMoveEnd (int comType)

4.27. Ruch w trybie serwo w przestrzeni przegubów

Zmienione w wersji Java: SDK-v1.0.6-3.8.3

 1/**
 2* @brief  Ruch w trybie serwo w przestrzeni przegubów
 3* @param  joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  axisPos  Pozycja zewnętrznej osi, jednostka mm
 5* @param  acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne, domyślnie 0
 6* @param  vel  Procent prędkości, zakres [0~100], tymczasowo niedostępne, domyślnie 0
 7* @param  cmdT  Okres wysyłania instrukcji, jednostka s, zalecany zakres [0.001~0.0016]
 8* @param  filterT Czas filtrowania, jednostka s, tymczasowo niedostępne, domyślnie 0
 9* @param  gain  Wzmocnienie proporcjonalne pozycji docelowej, tymczasowo niedostępne, domyślnie 0
10* @param  id ID instrukcji servoJ, domyślnie 0
11* @param comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
12* @return Kod błędu
13*/
14public int ServoJ(JointPos joint_pos, ExaxisPos axisPos, float acc, float vel, float cmdT, float filterT, float gain, int id, int comType)

4.28. Przykład kodu SDK dla ServoJ, ServoMoveStart, ServoMoveEnd opartych na komunikacji UDP

 1public static int TestServoJ(Robot robot)
 2{
 3    robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 4        System.out.println("\n[Received UDP reply from robot]");
 5        System.out.println("srcType: " + srcType);
 6        System.out.println("count: " + count);
 7        System.out.println("cmdID: " + cmdID);
 8        System.out.println("dataLen: " + dataLen);
 9        System.out.println("content: " + content);
10        return 0;
11    });
12    int rtn=-1;
13
14    JointPos j=new JointPos(0, 0, 0, 0, 0, 0);
15    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
16
17    double vel = 0.0;
18    double acc = 0.0;
19    double cmdT = 0.016;
20    double filterT = 0.0;
21    double gain = 0.0;
22    int flag = 0;
23    int count = 300;
24    double dt = 0.1;
25    int cmdID = 0;
26    int comType = 1;
27    int ret = robot.GetActualJointPosDegree(j);
28    if (ret == 0)
29    {
30        robot.ServoMoveStart(comType);
31        count = 300;
32        while (count>0)
33        {
34            robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID, comType);
35            j.J1 += dt;
36            j.J2 += dt;
37            j.J4 += dt;
38            j.J5 += dt;
39            j.J6 += dt;
40            epos.axis1 += dt;
41            count -= 1;
42            robot.Sleep(10);
43        }
44        robot.ServoMoveEnd(comType);
45
46        robot.Sleep(1000);
47        robot.ServoMoveStart(comType);
48        count = 300;
49        while (count>0)
50        {
51            robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID, comType);
52            j.J1 -= dt;
53            j.J2 -= dt;
54            j.J4 -= dt;
55            j.J5 -= dt;
56            j.J6 -= dt;
57            epos.axis1 -= dt;
58            count -= 1;
59            robot.Sleep(10);
60        }
61        robot.ServoMoveEnd(comType);
62    }
63    else
64    {
65        System.out.println("GetActualJointPosDegree errcode:"+ ret);
66    }
67}

4.29. Przykładowy program ruchu w trybie serwo w przestrzeni przegubów

 1public static void TestServoJ()
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true,20,500);//设置重连次数、间隔
 5    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 6    int rtn = robot.RPC("192.168.58.2");
 7    if(rtn == 0)
 8    {
 9        System.out.println("rpc连接 success");
10    }
11    else
12    {
13        System.out.println("rpc连接 fail");
14        return ;
15    }
16    JointPos j5 = new JointPos();
17    ExaxisPos ePos=new ExaxisPos();
18    int ret = robot.GetActualJointPosDegree(j5);
19    if (ret == 0)
20    {
21        int count = 200;
22        while (count > 0)
23        {
24            robot.ServoJ(j5, ePos,100, 100, 0.008, 0, 0);
25            j5.J1 += 0.2;//1关节位置增加
26            count -= 1;
27            robot.WaitMs((int)(8));
28        }
29    }
30}

4.30. Rozpoczęcie sterowania momentem obrotowym przegubów

1/**
2* @brief  Rozpoczęcie sterowania momentem obrotowym przegubów
3* @param  comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
4* @return  Kod błędu
5*/
6public int ServoJTStart (int comType)

4.31. Sterowanie momentem obrotowym przegubów

 1/**
 2* @brief Sterowanie momentem obrotowym przegubów
 3* @param torque moment obrotowy przegubów j1~j6, jednostka Nm
 4* @param interval Okres instrukcji, jednostka s, zakres [0.001~0.008]
 5* @param checkFlag Strategia wykrywania 0-brak ograniczeń; 1-ograniczenie mocy; 2-ograniczenie prędkości; 3-ograniczenie mocy i prędkości jednocześnie
 6* @param jPowerLimit Maksymalne ograniczenie mocy przegubu (W)
 7* @param jVelLimit Maksymalna prędkość przegubu (°/s)
 8* @param  comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
 9* @return Kod błędu
10*/
11public int ServoJT(double[] torque, double interval, int checkFlag, double[] jPowerLimit, double[] jVelLimit, int comType)

4.32. Zakończenie sterowania momentem obrotowym przegubów

1/**
2* @brief  Zakończenie sterowania momentem obrotowym przegubów
3* @param comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
4* @return  Kod błędu
5*/
6public int ServoJTEnd (int comType)

4.33. Przykładowy program ruchu w trybie serwo w przestrzeni przegubów

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

4.34. Przykład kodu SDK dla ServoJT, ServoJTStart, ServoJTEnd opartych na komunikacji UDP

 1public static void ServoJTWithSafety(Robot robot)
 2{
 3    robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 4        System.out.println("\n[Received UDP reply from robot]");
 5        System.out.println("srcType: " + srcType);
 6        System.out.println("count: " + count);
 7        System.out.println("cmdID: " + cmdID);
 8        System.out.println("dataLen: " + dataLen);
 9        System.out.println("content: " + content);
10        return 0;
11    });
12    while (true) {
13        robot.ResetAllError();
14        robot.Sleep(500);
15        List<Number> torques;
16        torques=robot.GetJointTorques(1);
17        robot.ServoJTStart(1); //   #servoJT开始
18        ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
19        robot.DragTeachSwitch(1);
20        int checkFlag = 3;//-1,3
21        double[] jPowerLimit = { 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 };
22        double[] jVelLimit = { 50, 50, 50, 50, 50, 50};//180.1,-1
23        int count = 800000;
24        int error = 0;
25        int comType = 1;
26
27        double[] tor=new double[]{(double)torques.get(1),(double)torques.get(2),(double)torques.get(3),(double)torques.get(4),(double)torques.get(5),(double)torques.get(6)};
28
29        while (true) {
30            tor[0] = 0.08;//  #每次1轴增加0.01NM,运动100次
31            error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit, comType);  //# 关节空间伺服模式运动
32            System.out.printf("ServoJT rtn is %d\n", error);
33            count = count - 1;
34            robot.Sleep(1);
35            pkg = robot.GetRobotRealTimeState();
36            System.out.printf("maincode %d, subcode %d\n", pkg.main_code, pkg.sub_code);
37            if (pkg.jt_cur_pos[0] > 30)
38                break;
39        }
40
41        tor = new double[]{(double) torques.get(1), (double) torques.get(2), (double) torques.get(3), (double) torques.get(4), (double) torques.get(5), (double) torques.get(6)};
42        while (true) {
43            tor[0] = -0.08;//  #每次1轴增加0.01NM,运动100次
44            error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit, 1);  //# 关节空间伺服模式运动
45            System.out.printf("ServoJT rtn is %d\n", error);
46            count = count - 1;
47            robot.Sleep(1);
48            pkg = robot.GetRobotRealTimeState();
49            System.out.printf("maincode %d, subcode %d\n", pkg.main_code, pkg.sub_code);
50            if (pkg.jt_cur_pos[0] < 0)
51                break;
52        }
53
54        robot.DragTeachSwitch(0);
55
56        error = robot.ServoJTEnd(1);  //#伺服运动结束
57    }
58}

4.35. Przykład kodu sterowania momentem obrotowym przegubów z ochroną przed przekroczeniem prędkości

 1public static void ServoJTWithSafety(Robot robot)
 2{
 3    robot.ResetAllError();
 4    robot.Sleep(500);
 5    List<Number> torques;
 6    torques=robot.GetJointTorques(1);
 7    robot.ServoJTStart(); //   #servoJT开始
 8    ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
 9    robot.DragTeachSwitch(1);
10    int checkFlag = 3;//-1,3
11    //double[] jPowerLimit = {1.0,1.0,1.0,1.0,1.0,1.0};//5001
12    double[] jPowerLimit = { 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 };
13    double[] jVelLimit = { 50, 50, 50, 50, 50, 50};//180.1,-1
14    int count = 800000;
15    int error = 0;
16    double[] tor=new double[]{(double)torques.get(1),(double)torques.get(2),(double)torques.get(3),(double)torques.get(4),(double)torques.get(5),(double)torques.get(6)};
17    while (count > 0)
18    {
19        tor[2] = tor[2]+0.01;//  #每次1轴增加0.01NM,运动100次
20        error = robot.ServoJT(tor, 0.01, checkFlag, jPowerLimit, jVelLimit);  //# 关节空间伺服模式运动
21        System.out.printf("ServoJT rtn is %d\n", error);
22        count = count - 1;
23        robot.Sleep(1);
24        pkg=robot.GetRobotRealTimeState();
25        System.out.printf("maincode %d, subcode %d\n", pkg.main_code, pkg.sub_code);
26    }
27    robot.DragTeachSwitch(0);
28    error = robot.ServoJTEnd();  //#伺服运动结束
29}

4.36. Ruch w trybie serwo w przestrzeni kartezjańskiej

 1/**
 2*@brief Ruch w trybie serwo w przestrzeni kartezjańskiej
 3*@param mode 0-ruch absolutny (układ bazowy), 1-ruch przyrostowy (układ bazowy), 2-ruch przyrostowy (układ narzędzia)
 4*@param desc_pose Docelowa poza kartezjańska lub przyrost pozy
 5*@param exaxis Pozycja osi rozszerzenia
 6*@param pos_gain Współczynnik proporcjonalny przyrostu pozy, działa tylko w ruchu przyrostowym, zakres [0~1]
 7*@param acc Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne, domyślnie 0
 8*@param vel Procent prędkości, zakres [0~100], tymczasowo niedostępne, domyślnie 0
 9*@param cmdT Okres wysyłania instrukcji, jednostka s, zalecany zakres [0.001~0.016]
10*@param filterT Czas filtrowania, jednostka s, tymczasowo niedostępne, domyślnie 0
11*@param gain Wzmocnienie proporcjonalne pozycji docelowej, tymczasowo niedostępne, domyślnie 0
12*@return Kod błędu
13*/
14public int ServoCart(int mode, DescPose desc_pose, ExaxisPos exaxis, double[] pos_gain, double acc, double vel, double cmdT, double filterT, double gain)

4.37. Przykład kodu ruchu w trybie serwo w przestrzeni kartezjańskiej

 1public static void TestServoCart1(Robot robot)
 2{
 3    DescPose desc_pos_dt = new DescPose(83.00800, 50.525000 , 29.246 , 179.629 , -7.138 , -166.975 );
 4    ExaxisPos exaxis = new ExaxisPos( 100.0, 0.0, 0.0, 0.0 );
 5    double[] pos_gain = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
 6    int mode = 0;
 7    double vel = 0.0;
 8    double acc = 0.0;
 9    double cmdT = 0.001;
10    double filterT = 0.0;
11    double gain = 0.0;
12    int flag = 0;
13    int count = 5000;
14    robot.SetSpeed(20);
15    while (count>0)
16    {
17        int rtn = robot.ServoCart(mode, desc_pos_dt, exaxis, pos_gain, acc, vel, cmdT, filterT, gain);
18        System.out.printf("ServoCart rtn is %d\n", rtn);
19        count -= 1;
20        desc_pos_dt.tran.x += 0.01;
21        exaxis.axis1 += 0.01;
22    }
23    robot.CloseRPC();
24}

4.38. Rozpoczęcie ruchu po krzywej składanej (spline)

1/**
2* @brief  Rozpoczęcie ruchu po krzywej składanej (spline)
3* @return  Kod błędu
4*/
5int SplineStart();

4.39. Ruch PTP (punkt-punkt) po krzywej składanej

 1/**
 2* @brief  Ruch po krzywej składanej w przestrzeni przegubów
 3* @param  [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  [in] desc_pos   Docelowa poza kartezjańska
 5* @param  [in] tool  Numer narzędzia, zakres [0~14]
 6* @param  [in] user  Numer przedmiotu, zakres [0~14]
 7* @param  [in] vel  Procent prędkości, zakres [0~100]
 8* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @return  Kod błędu
11*/
12int SplinePTP(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl);

4.40. Ruch po krzywej składanej w przestrzeni przegubów (automatyczne obliczenia kinematyki prostej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Ruch po krzywej składanej w przestrzeni przegubów (automatyczne obliczenia kinematyki prostej)
 3* @param  [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param  [in] tool  Numer narzędzia, zakres [0~14]
 5* @param  [in] user  Numer przedmiotu, zakres [0~14]
 6* @param  [in] vel  Procent prędkości, zakres [0~100]
 7* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @return  Kod błędu
10*/
11int SplinePTP(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl)

4.41. Zakończenie ruchu po krzywej składanej (spline)

1/**
2* @brief  Zakończenie ruchu po krzywej składanej (spline)
3* @return  Kod błędu
4*/
5int SplineEnd();

4.42. Przykład kodu ruchu po krzywej składanej

 1public static int TestSpline(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5    JointPos j3=new JointPos(-61.954, -84.409, 108.153, -116.316, -91.283, 74.260);
 6    JointPos j4=new JointPos(-89.575, -80.276, 102.713, -116.302, -91.284, 74.267);
 7    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
 8    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
 9
10    int tool = 0;
11    int user = 0;
12    double vel = 100.0;
13    double acc = 100.0;
14    double ovl = 100.0;
15    double blendT = -1.0;
16    int flag = 0;
17
18    int err1 = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
19    System.out.println("movej errcode:"+ err1);
20    robot.SplineStart();
21    robot.SplinePTP(j1, tool, user, vel, acc, ovl);
22    robot.SplinePTP(j2, tool, user, vel, acc, ovl);
23    robot.SplinePTP(j3, tool, user, vel, acc, ovl);
24    robot.SplinePTP(j4, tool, user, vel, acc, ovl);
25    robot.SplineEnd();
26    return 0;
27}

4.43. Rozpoczęcie nowego ruchu po krzywej składanej (new spline)

1/**
2* @brief Rozpoczęcie nowego ruchu po krzywej składanej (new spline)
3* @param [in] type   0-przejście łukowe, 1-punkty podane jako punkty ścieżki
4* @param [in] averageTime  Globalny średni czas łączenia (ms)(10 ~  ), domyślnie 2000
5* @return Kod błędu
6*/
7int NewSplineStart(int type, int averageTime);

4.44. Punkt instrukcji nowej krzywej składanej

 1/**
 2* @brief Dodanie punktu instrukcji ruchu po krzywej składanej
 3* @param [in] joint_pos  Docelowa pozycja przegubów, jednostka deg
 4* @param [in] desc_pos   Docelowa poza kartezjańska
 5* @param [in] tool  Numer narzędzia, zakres [0~14]
 6* @param [in] user  Numer przedmiotu, zakres [0~14]
 7* @param [in] vel  Procent prędkości, zakres [0~100]
 8* @param [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 9* @param [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @param [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
11* @param [in] lastFlag Czy to ostatni punkt, 0-nie, 1-tak
12* @return Kod błędu
13*/
14int NewSplinePoint(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int lastFlag);

4.45. Punkt instrukcji nowej krzywej składanej (automatyczne obliczenia kinematyki odwrotnej)

Nowe w wersji Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Punkt instrukcji nowej krzywej składanej (automatyczne obliczenia kinematyki odwrotnej)
 3* @param  [in] desc_pos   Docelowa poza kartezjańska
 4* @param  [in] tool  Numer narzędzia, zakres [0~14]
 5* @param  [in] user  Numer przedmiotu, zakres [0~14]
 6* @param  [in] vel  Procent prędkości, zakres [0~100]
 7* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @param  [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
10* @param  [in] lastFlag Czy to ostatni punkt, 0-nie, 1-tak
11* @param  [in] config Konfiguracja przestrzeni przegubów dla kinematyki odwrotnej, [-1]-obliczenia względem bieżącej pozycji przegubów, [0~7]-obliczenia według określonej konfiguracji przestrzeni przegubów
12* @return  Kod błędu
13*/
14int NewSplinePoint(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, int lastFlag,int config)

4.46. Zakończenie nowego ruchu po krzywej składanej

1/**
2* @brief Zakończenie nowego ruchu po krzywej składanej
3* @return Kod błędu
4*/
5int NewSplineEnd();

4.47. Przykład kodu nowego ruchu po krzywej składanej

 1public static int TestNewSpline(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 5    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 6    DescPose desc_pos3=new DescPose(-327.622, 402.230, 320.402, -178.067, 2.127, -46.207);
 7    DescPose desc_pos4=new DescPose(-104.066, 544.321, 327.023, -177.715, 3.371, -73.818);
 8    DescPose desc_pos5=new DescPose(-33.421, 732.572, 275.103, -177.907, 2.709, -79.482);
 9    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
10    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
11
12
13    int tool = 0;
14    int user = 0;
15    double vel = 100.0;
16    double acc = 100.0;
17    double ovl = 100.0;
18    double blendT = -1.0;
19    int flag = 0;
20
21
22    int err1 = robot.MoveJ(j1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
23    System.out.println("movej errcode:"+ err1);
24    robot.NewSplineStart(1, 2000);
25    robot.NewSplinePoint(desc_pos1, tool, user, vel, acc, ovl, -1, 0,-1);
26    robot.NewSplinePoint(desc_pos2, tool, user, vel, acc, ovl, -1, 0,-1);
27    robot.NewSplinePoint(desc_pos3, tool, user, vel, acc, ovl, -1, 0,-1);
28    robot.NewSplinePoint(desc_pos4, tool, user, vel, acc, ovl, -1, 0,-1);
29    robot.NewSplinePoint(desc_pos5, tool, user, vel, acc, ovl, -1, 0,-1);
30    robot.NewSplineEnd();
31    return 0;
32}

4.48. Zatrzymanie ruchu

1/**
2* @brief Zatrzymanie ruchu
3* @return  Kod błędu
4*/
5int StopMotion();

4.49. Wstrzymanie ruchu

1/**
2  * @brief Wstrzymanie ruchu
3  * @return Kod błędu
4*/
5int PauseMotion();

4.50. Wznowienie ruchu

1/**
2* @brief Wznowienie ruchu
3* @return Kod błędu
4*/
5int ResumeMotion();

4.51. Przykład kodu wstrzymywania, wznawiania i zatrzymywania ruchu

 1public static int TestPause(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j5=new JointPos(-95.228, -54.621, 73.691, -112.245, -91.280, 74.268);
 5    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 6    DescPose desc_pos5=new DescPose(-33.421, 732.572, 275.103, -177.907, 2.709, -79.482);
 7    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
 8    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
 9
10    int tool = 0;
11    int user = 0;
12    double vel = 100.0;
13    double acc = 100.0;
14    double ovl = 100.0;
15    double blendT = -1.0;
16    int flag = 0;
17
18    robot.SetSpeed(20);
19    int rtn=-1;
20    rtn = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
21    rtn = robot.MoveJ(j5, desc_pos5, tool, user, vel, acc, ovl, epos, 1, flag, offset_pos);
22    robot.Sleep(1000);
23    robot.PauseMotion();
24
25    robot.Sleep(1000);
26    robot.ResumeMotion();
27
28    robot.Sleep(1000);
29    robot.StopMotion();
30
31    robot.Sleep(1000);
32
33    return 0;
34}

4.52. Rozpoczęcie globalnego przesunięcia punktów

1/**
2* @brief  Rozpoczęcie globalnego przesunięcia punktów
3* @param  [in]  flag  0-przesunięcie w układzie bazowym/układzie przedmiotu, 2-przesunięcie w układzie narzędzia
4* @param  [in]  offset_pos  Wartość przesunięcia pozy
5* @return  Kod błędu
6*/
7int PointsOffsetEnable(int flag, DescPose offset_pos);

4.53. Zakończenie globalnego przesunięcia punktów

1/**
2* @brief  Zakończenie globalnego przesunięcia punktów
3* @return  Kod błędu
4*/
5int PointsOffsetDisable();

4.54. Przykład kodu przesunięcia punktów

 1public static int TestOffset(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
10    DescPose offset_pos1=new DescPose(0, 0, 50, 0, 0, 0);
11    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
12
13    int tool = 0;
14    int user = 0;
15    double vel = 100.0;
16    double acc = 100.0;
17    double ovl = 100.0;
18    double blendT = -1.0;
19    int flag = 0;
20
21    robot.SetSpeed(20);
22
23    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
24    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
25    robot.Sleep(1000);
26    robot.PointsOffsetEnable(0, offset_pos1);
27    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
28    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
29    robot.PointsOffsetDisable();
30
31    return 0;
32}

4.55. Rozpoczęcie zdjęcia seryjnego AO skrzynki kontrolnej (fly拍摄)

1/**
2* @brief Rozpoczęcie zdjęcia seryjnego AO skrzynki kontrolnej (fly拍摄)
3* @param [in] AONum Numer AO skrzynki kontrolnej
4* @param [in] maxTCPSpeed Maksymalna wartość prędkości TCP [1-5000mm/s], domyślnie 1000
5* @param [in] maxAOPercent Procent AO odpowiadający maksymalnej prędkości TCP, domyślnie 100%
6* @param [in] zeroZoneCmp Wartość kompensacji strefy nieczułości, procent AO, liczba całkowita, domyślnie 20%, zakres [0-100]
7* @return Kod błędu
8*/
9int MoveAOStart(int AONum, int maxTCPSpeed, int maxAOPercent, int zeroZoneCmp);

4.56. Zatrzymanie zdjęcia seryjnego AO skrzynki kontrolnej

1/**
2* @brief Zatrzymanie zdjęcia seryjnego AO skrzynki kontrolnej
3* @return Kod błędu
4*/
5int MoveAOStop();

4.57. Rozpoczęcie zdjęcia seryjnego AO końcówki

1/**
2* @brief Rozpoczęcie zdjęcia seryjnego AO końcówki
3* @param [in] AONum Numer AO końcówki
4* @param [in] maxTCPSpeed Maksymalna wartość prędkości TCP [1-5000mm/s], domyślnie 1000
5* @param [in] maxAOPercent Procent AO odpowiadający maksymalnej prędkości TCP, domyślnie 100%
6* @param [in] zeroZoneCmp Wartość kompensacji strefy nieczułości, procent AO, liczba całkowita, domyślnie 20%, zakres [0-100]
7* @return Kod błędu
8*/
9int MoveToolAOStart(int AONum, int maxTCPSpeed, int maxAOPercent, int zeroZoneCmp);

4.58. Zatrzymanie zdjęcia seryjnego AO końcówki

1/**
2* @brief Zatrzymanie zdjęcia seryjnego AO końcówki
3* @return Kod błędu
4*/
5int MoveToolAOStop();

4.59. Przykład kodu zdjęcia seryjnego AO

 1public static int TestMoveAO(Robot robot)
 2{
 3    JointPos j1=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos j2=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose desc_pos1=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose desc_pos2=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    DescPose offset_pos=new DescPose(0, 0, 0, 0, 0, 0);
10    DescPose offset_pos1=new DescPose(0, 0, 50, 0, 0, 0);
11    ExaxisPos epos=new ExaxisPos(0, 0, 0, 0);
12
13    int tool = 0;
14    int user = 0;
15    double vel = 20.0;
16    double acc = 20.0;
17    double ovl = 100.0;
18    double blendT = -1.0;
19    int flag = 0;
20
21    robot.SetSpeed(20);
22
23    robot.MoveAOStart(0, 100, 100, 20);
24    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
25    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
26    robot.MoveAOStop();
27
28    robot.Sleep(1000);
29
30    robot.MoveToolAOStart(0, 100, 100, 20);
31    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
32    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
33    robot.MoveToolAOStop();
34
35    return 0;
36}

4.60. Rozpoczęcie filtracji FIR ruchu PTP

Zmienione w wersji Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Rozpoczęcie filtracji FIR ruchu PTP
3* @param [in] maxAcc Maksymalna wartość ekstremalna przyspieszenia (deg/s2)
4* @param [in] maxJek Ekstremalna wartość zrywu dla ujednoliconych przegubów (deg/s3)
5* @return Kod błędu
6*/
7int PtpFIRPlanningStart(double maxAcc,double maxJek);

4.61. Zakończenie filtracji FIR ruchu PTP

1/**
2* @brief Zakończenie filtracji FIR ruchu PTP
3* @return Kod błędu
4*/
5int PtpFIRPlanningEnd();

4.62. Rozpoczęcie filtracji FIR ruchu LIN i ARC

1/**
2* @brief Rozpoczęcie filtracji FIR ruchu LIN i ARC
3* @param [in] maxAccLin Ekstremalna wartość przyspieszenia liniowego (mm/s2)
4* @param [in] maxAccDeg Ekstremalna wartość przyspieszenia kątowego (deg/s2)
5* @param [in] maxJerkLin Ekstremalna wartość zrywu liniowego (mm/s3)
6* @param [in] maxJerkDeg Ekstremalna wartość zrywu kątowego (deg/s3)
7* @return Kod błędu
8*/
9int LinArcFIRPlanningStart(double maxAccLin, double maxAccDeg, double maxJerkLin, double maxJerkDeg);

4.63. Zakończenie filtracji FIR ruchu LIN i ARC

1/**
2* @brief Zakończenie filtracji FIR ruchu LIN i ARC
3* @return Kod błędu
4*/
5int LinArcFIRPlanningEnd();

4.64. Przykład kodu filtracji FIR

 1public static int TestFIR(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos midjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5    JointPos endjointPos=new JointPos(-29.777, -84.536, 109.275, -114.075, -86.655, 74.257);
 6
 7    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 8    DescPose middescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 9    DescPose enddescPose=new DescPose(-487.434, 154.362, 308.576, 176.600, 0.268, -14.061);
10
11    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
12    DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
13
14    int rtn = robot.PtpFIRPlanningStart(1000, 1000);
15    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
16    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
17    robot.PtpFIRPlanningEnd();
18
19    robot.LinArcFIRPlanningStart(1000, 1000, 1000, 1000);
20    robot.MoveL(startjointPos, startdescPose, 0, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 1, 1);
21    robot.MoveC(midjointPos, middescPose, 0, 0, 100, 100, exaxisPos, 0, offdese, endjointPos, enddescPose, 0, 0, 100, 100, exaxisPos, 0, offdese, 100, -1);
22    robot.LinArcFIRPlanningEnd();
23    return 0;
24}

4.65. Włączenie wygładzania przyspieszenia

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2 * @brief Włączenie wygładzania przyspieszenia
3 * @param [in] saveFlag Czy zapisać po odłączeniu zasilania
4 * @return  Kod błędu
5 */
6public int AccSmoothStart(boolean saveFlag)

4.66. Wyłączenie wygładzania przyspieszenia

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2 * @brief Wyłączenie wygładzania przyspieszenia
3 * @param [in] saveFlag Czy zapisać po odłączeniu zasilania
4 * @return  Kod błędu
5 */
6public int AccSmoothEnd(boolean saveFlag)

4.67. Przykład kodu wygładzania przyspieszenia

 1public static int TestAccSmooth(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos endjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose enddescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese=new DescPose(0,0,0,0,0,0);
11    int rtn = robot.AccSmoothStart(false);
12    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
14    rtn = robot.AccSmoothEnd(false);
15
16    robot.CloseRPC();
17    return 0;
18}

4.68. Włączenie określonej prędkości pozy

1/**
2 * @brief Włączenie określonej prędkości pozy
3 * @param [in] ratio Procent prędkości pozy [0-300]
4 * @return  Kod błędu
5 */
6int AngularSpeedStart(int ratio)

4.69. Wyłączenie określonej prędkości pozy

1/**
2 * @brief Wyłączenie określonej prędkości pozy
3 * @return  Kod błędu
4 */
5int AngularSpeedEnd();

4.70. Przykład kodu określonej prędkości pozy robota

 1public static int TestAngularSpeed(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos endjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose enddescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
11    int rtn = robot.AngularSpeedStart(50);
12    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
14    rtn = robot.AngularSpeedEnd();
15
16    return 0;
17}

4.71. Rozpoczęcie ochrony przed osobliwą pozycją

1/**
2* @brief  Rozpoczęcie ochrony przed osobliwą pozycją
3* @param  [in]  protectMode Tryb ochrony przed osobliwością, 0: tryb przegubowy; 1-tryb kartezjański
4* @param  [in]  minShoulderPos Zakres regulacji osobliwości barku (mm), domyślnie 100
5* @param  [in]  minElbowPos Zakres regulacji osobliwości łokcia (mm), domyślnie 50
6* @param  [in]  minWristPos Zakres regulacji osobliwości nadgarstka (°), domyślnie 10
7* @return  Kod błędu
8*/
9int SingularAvoidStart(int protectMode, double minShoulderPos, double minElbowPos, double minWristPos);

4.72. Zatrzymanie ochrony przed osobliwą pozycją

1/**
2* @brief  Zatrzymanie ochrony przed osobliwą pozycją
3* @return  Kod błędu
4*/
5int SingularAvoidEnd();

4.73. Przykład kodu ochrony przed osobliwą pozycją robota

 1public static int TestAngularSpeed(Robot robot)
 2{
 3    JointPos startjointPos=new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 4    JointPos endjointPos=new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
 5
 6    DescPose startdescPose=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose enddescPose=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 8
 9    ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
11    int rtn = robot.AngularSpeedStart(50);
12    robot.MoveJ(startjointPos, startdescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.MoveJ(endjointPos, enddescPose, 0, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
14    rtn = robot.AngularSpeedEnd();
15
16    return 0;
17}

4.74. Wyczyszczenie kolejki instrukcji ruchu

1/**
2* @brief Wyczyszczenie kolejki instrukcji ruchu
3* @return Kod błędu
4*/
5public int MotionQueueClear()

4.75. Przejście do punktu początkowego linii przecięcia rur

 1/**
 2* @brief Przejście do punktu początkowego linii przecięcia rur
 3* @param [in] mainPoint Pozycje kartezjańskie 6 punktów nauczania rury głównej
 4* @param [in] mainExaxisPos Pozycje osi rozszerzenia 6 punktów nauczania rury głównej
 5* @param [in] piecePoint Pozycje kartezjańskie 6 punktów nauczania rury pomocniczej
 6* @param [in] pieceExaxisPos Pozycje osi rozszerzenia 6 punktów nauczania rury łączącej
 7* @param [in] extAxisFlag Czy włączyć oś rozszerzenia; 0-niewłączony; 1-włączony
 8* @param [in] exaxisPos Pozycja osi rozszerzenia punktu początkowego
 9* @param [in] tool Numer układu narzędzia
10* @param [in] wobj Numer układu przedmiotu
11* @param [in] vel Procent prędkości
12* @param [in] acc Procent przyspieszenia
13* @param [in] ovl Współczynnik skalowania prędkości
14* @param [in] oacc Współczynnik skalowania przyspieszenia
15* @param [in] moveType Typ ruchu; 0-PTP;1-LIN
16* @param [in] moveDirection Kierunek ruchu; 0-zgodnie z ruchem wskazówek zegara;1-przeciwnie do ruchu wskazówek zegara
17* @param [in] offset Wartość przesunięcia
18* @return Kod błędu
19*/
20public int MoveToIntersectLineStart(DescPose[] mainPoint, ExaxisPos[] mainExaxisPos, DescPose[] piecePoint, ExaxisPos[] pieceExaxisPos, int extAxisFlag, ExaxisPos exaxisPos, int tool, int wobj, double vel, double acc, double ovl, double oacc, int moveType, int moveDirection, DescPose offset);

4.76. Ruch po linii przecięcia rur

 1/**
 2* @brief Ruch po linii przecięcia rur
 3* @param [in] mainPoint Pozycje kartezjańskie 6 punktów nauczania rury głównej
 4* @param [in] mainExaxisPos Pozycje osi rozszerzenia 6 punktów nauczania rury głównej
 5* @param [in] piecePoint Pozycje kartezjańskie 6 punktów nauczania rury pomocniczej
 6* @param [in] pieceExaxisPos Pozycje osi rozszerzenia 6 punktów nauczania rury łączącej
 7* @param [in] extAxisFlag Czy włączyć oś rozszerzenia; 0-niewłączony; 1-włączony
 8* @param [in] exaxisPos Pozycje osi rozszerzenia punktu początkowego
 9* @param [in] tool Numer układu narzędzia
10* @param [in] wobj Numer układu przedmiotu
11* @param [in] vel Procent prędkości
12* @param [in] acc Procent przyspieszenia
13* @param [in] ovl Współczynnik skalowania prędkości
14* @param [in] oacc Współczynnik skalowania przyspieszenia
15* @param [in] moveDirection Kierunek ruchu; 0-zgodnie z ruchem wskazówek zegara;1-przeciwnie do ruchu wskazówek zegara
16* @param [in] offset Wartość przesunięcia
17* @return Kod błędu
18*/
19public int MoveIntersectLine(DescPose[] mainPoint, ExaxisPos[] mainExaxisPos, DescPose[] piecePoint, ExaxisPos[] pieceExaxisPos, int extAxisFlag, ExaxisPos[] exaxisPos, int tool, int wobj, double vel, double acc, double ovl, double oacc, int moveDirection, DescPose offset);

4.77. Przykład kodu ruchu robota po linii przecięcia rur

 1public static void TestIntersectLineMove(Robot robot)
 2{
 3    DescPose[] mainPoint = new DescPose[6];
 4    DescPose[] piecePoint = new DescPose[6];
 5    ExaxisPos[] mainExaxisPos = new ExaxisPos[6];
 6    ExaxisPos[] pieceExaxisPos = new ExaxisPos[6];
 7    int extAxisFlag = 1;
 8    ExaxisPos[] exaxisPos = new ExaxisPos[4];
 9    DescPose offset =new DescPose(0.0, 2.0 ,30.0, -2.0, 0.0, 0.0 );
10    mainPoint[0] = new DescPose(490.004, -383.194, 402.735, -9.332, -1.528, 69.594);
11    mainPoint[1] = new DescPose(444.950, -407.117, 389.011, -5.546, -2.196, 65.279);
12    mainPoint[2] = new DescPose(445.168, -463.605, 355.759, -1.544, -10.886, 57.104);
13    mainPoint[3] = new DescPose(507.529, -485.385, 343.013, -0.786, -4.834, 61.799);
14    mainPoint[4] = new DescPose(554.390, -442.647, 367.701, -4.761, -10.181, 64.925);
15    mainPoint[5] = new DescPose(532.552, -394.003, 396.467, -13.732, -13.592, 67.411);
16    mainExaxisPos[0] = new ExaxisPos(-29.996, 0.000, 0.000, 0.000 );
17    mainExaxisPos[1] = new ExaxisPos(-29.996, 0.000, 0.000, 0.000 );
18    mainExaxisPos[2] = new ExaxisPos(-29.996, 0.000, 0.000, 0.000 );
19    mainExaxisPos[3] = new ExaxisPos(-29.996, 0.000, 0.000, 0.000 );
20    mainExaxisPos[4] = new ExaxisPos(-29.996, 0.000, 0.000, 0.000 );
21    mainExaxisPos[5] = new ExaxisPos(-29.996, 0.000, 0.000, 0.000 );
22    piecePoint[0] = new DescPose( 505.571, -192.408, 316.759, 38.098, 37.051, 139.447);
23    piecePoint[1] =new DescPose(533.837, -201.558, 332.340, 34.644, 42.339, 137.748);
24    piecePoint[2] =new DescPose(530.386, -225.085, 373.808, 35.431, 45.111, 137.560);
25    piecePoint[3] =new DescPose(485.646, -229.195, 383.778, 33.870, 45.173, 137.064);
26    piecePoint[4] =new DescPose(460.551, -212.161, 354.256, 28.856, 45.602, 135.930);
27    piecePoint[5] =new DescPose(474.217, -197.124, 324.611, 42.469, 41.133, 148.167);
28    pieceExaxisPos[0] = new ExaxisPos( -29.996, -0.000, 0.000, 0.000);
29    pieceExaxisPos[1] = new ExaxisPos( -29.996, -0.000, 0.000, 0.000);
30    pieceExaxisPos[2] = new ExaxisPos( -29.996, -0.000, 0.000, 0.000);
31    pieceExaxisPos[3] = new ExaxisPos( -29.996, -0.000, 0.000, 0.000);
32    pieceExaxisPos[4] = new ExaxisPos( -29.996, -0.000, 0.000, 0.000);
33    pieceExaxisPos[5] = new ExaxisPos( -29.996, -0.000, 0.000, 0.000);
34    exaxisPos[0] = new ExaxisPos(-29.996, -0.000, 0.000, 0.000);
35    exaxisPos[1] = new ExaxisPos(-44.994, 90.000, 0.000, 0.000);
36    exaxisPos[2] = new ExaxisPos(-59.992, 0.002, 0.000, 0.000);
37    exaxisPos[3] = new ExaxisPos(-44.994, -89.997, 0.000, 0.000);
38    int tool = 2;
39    int wobj = 0;
40    double vel = 100.0;
41    double acc = 100.0;
42    double ovl = 12.0;
43    double oacc = 12.0;
44    int moveType = 1;
45    int moveDirection = 1;
46    int  rtn = robot.MoveToIntersectLineStart(mainPoint, mainExaxisPos, piecePoint, pieceExaxisPos, extAxisFlag, exaxisPos[0], tool, wobj, vel, acc, ovl, oacc, moveType, moveDirection, offset);
47    System.out.printf("MoveToIntersectLineStart rtn is %d\n", rtn);
48    rtn = robot.MoveIntersectLine(mainPoint, mainExaxisPos, piecePoint, pieceExaxisPos, extAxisFlag, exaxisPos, tool, wobj, vel, acc, 5.0, 5.0, moveDirection, offset);
49    System.out.printf("MoveIntersectLine rtn is %d\n", rtn);
50    robot.CloseRPC();
51    return ;
52}

4.78. Ruch w miejscu (pusty ruch)

1/**
2* @brief Ruch w miejscu (pusty ruch)
3* @return Kod błędu
4*/
5public int MoveStationary()

4.79. Przykład kodu ruchu w miejscu

 1public static void test_RecordandReplay(Robot robot)
 2{
 3    int rtn = robot.LaserSensorRecordandReplay(0, 10, 1, 0, 0.1, 1, 1, 10, 100);
 4    System.out.printf("LaserSensorRecordandReplay rtn is %d\n", rtn);
 5    rtn = robot.MoveStationary();
 6    System.out.printf("MoveStationary rtn is %d\n", rtn);
 7    rtn = robot.LaserSensorRecord1(0, 10);
 8    System.out.printf("LaserSensorRecordandReplay rtn is %d\n", rtn);
 9    robot.CloseRPC();
10    robot.Sleep(9999999);
11}

4.80. Rozpoczęcie wahadła w punkcie stałym

1/**
2* @brief Rozpoczęcie wahadła w punkcie stałym
3* @param [in] weaveNum Numer wahadła [0-7]
4* @param [in] mode 0-układ narzędzia; 1-punkt odniesienia
5* @param [in] refPoint Współrzędne kartezjańskie punktu odniesienia [x,y,z,a,b,c]
6* @param [in] weaveTime Czas wahadła [s]
7* @return Kod błędu
8*/
9public int OriginPointWeaveStart(int weaveNum, int mode, DescPose refPoint, double weaveTime)

4.81. Zakończenie wahadła w punkcie stałym

1/**
2* @brief Zakończenie wahadła w punkcie stałym
3* @return Kod błędu
4*/
5public int OriginPointWeaveEnd();

4.82. Przykład kodu SDK dla wahadła w punkcie stałym

 1public static int TestOriginPointWeave(Robot robot) {
 2    JointPos j = new JointPos(39.886, -98.580, -124.032, -47.393, 90.000, 40.842);
 3    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 4    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 5
 6    DescPose refPoint = new DescPose(400.021, 300.022, 299.996, 179.997, -0.003, -90.956);
 7    robot.MoveJ(j, 1, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
 8
 9    robot.OriginPointWeaveStart(0, 0, refPoint, 3);
10    robot.MoveStationary();
11    robot.OriginPointWeaveEnd();
12
13    robot.Sleep(2000);
14
15    robot.MoveJ(j, 1, 0, 100, 100, 100.0, epos, -1.0, 0, offset_pos);
16    robot.OriginPointWeaveStart(0, 1, refPoint, 3);
17    robot.MoveStationary();
18    robot.OriginPointWeaveEnd();
19
20    robot.Sleep(1000);
21    return 0;
22}

4.83. Przykład kodu SDK dla wahadła w punkcie stałym (z laserem i osią rozszerzenia)

 1public static int TestOriginPointWeave(Robot robot) {
 2    JointPos j = new JointPos(39.886, -98.580, -124.032, -47.393, 90.000, 40.842);
 3    ExaxisPos epos1 = new ExaxisPos(0, 0, 0, 0);
 4    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 5    ExaxisPos epos2 = new ExaxisPos(5, 0, 0, 0);
 6    DescPose refPoint = new DescPose(400.021, 300.022, 299.996, 179.997, -0.003, -90.956);
 7
 8    int rtn = 0;
 9    robot.LaserTrackingSensorConfig("192.168.58.20", 5020);
10    robot.LaserTrackingSensorSamplePeriod(20);
11    robot.LoadPosSensorDriver(101);
12
13    // 加载 UDP 驱动
14    robot.ExtDevLoadUDPDriver();
15
16    // 设置外部轴命令完成时间
17    rtn = robot.SetExAxisCmdDoneTime(5000.0);
18    System.out.println("SetExAxisCmdDoneTime rtn is " + rtn);
19    // 使能外部轴 1 和 2
20    rtn = robot.ExtAxisServoOn(1, 1);
21    System.out.println("ExtAxisServoOn axis id 1 rtn is " + rtn);
22    rtn = robot.ExtAxisServoOn(2, 1);
23    System.out.println("ExtAxisServoOn axis id 2 rtn is " + rtn);
24    robot.Sleep(2000);
25
26    // 设置外部轴回零
27    robot.ExtAxisSetHoming(1, 0, 10, 2);
28    robot.LaserTrackingLaserOnOff(1,0);
29
30
31    // 1---不带扩展轴
32    robot.LaserTrackingTrackOnOff(1, 4);
33    robot.Sleep(200);
34    // 启动定点摆动
35    robot.OriginPointWeaveStart(0, 0, refPoint, 10);
36    robot.MoveStationary();   // 执行固定运动(假设该方法存在)
37    robot.OriginPointWeaveEnd();
38    robot.LaserTrackingTrackOnOff(0, 4);
39
40    robot.Sleep(2000);         // 等待2秒
41
42    // 2----带扩展轴
43    robot.ExtAxisMove(epos1, 100, -1);
44    robot.LaserTrackingTrackOnOff(1, 4);
45    // 启动定点摆动
46    robot.OriginPointWeaveStart(0, 0, refPoint, 20);
47    robot.ExtAxisMove(epos2, 100, -1);
48    robot.OriginPointWeaveEnd();
49    robot.LaserTrackingTrackOnOff(0, 4);
50
51    robot.Sleep(1000);
52    return 0;
53}

4.84. Ruch w trybie serwo prędkościowym w przestrzeni przegubów

 1/**
 2* @brief  Ruch w trybie serwo prędkościowym w przestrzeni przegubów
 3* @param   joint_vel  6 docelowych prędkości przegubów, jednostka deg/s
 4* @param   exis_vel  4 prędkości zewnętrznych osi, jednostka deg/s
 5* @param   acc  Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne, domyślnie 0
 6* @param   vel  Procent prędkości, zakres [0~100], tymczasowo niedostępne, domyślnie 0
 7* @param   cmdT  Okres wysyłania instrukcji, jednostka s, zalecany zakres [0.001~0.0016]
 8* @param   filterT Czas filtrowania, jednostka s, tymczasowo niedostępne, domyślnie 0
 9* @param   gain  Wzmocnienie proporcjonalne pozycji docelowej, tymczasowo niedostępne, domyślnie 0
10* @param   id  ID instrukcji servoJ, domyślnie 0
11* @param   comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
12* @return  Kod błędu
13*/
14public int ServoJV(double[] joint_vel, double[] exis_vel, double acc, double vel, double cmdT, double filterT, double gain, int id, int comType)

4.85. Przykład kodu ruchu w trybie serwo prędkościowym w przestrzeni przegubów

 1public static int ServoJVtest(Robot robot)
 2{
 3    double[] joint_vel = new double[] { 10, 0, 0, 0, 0, 0 };
 4    double[] exis_vel = new double[] { 0, 0, 0, 0 };
 5    double acc = 0.0;
 6    double vel = 0.0;
 7    double cmdT = 0.008;
 8    double filterT = 0.0;
 9    double gain = 0.0;
10    int cnt = 0;
11    while (cnt < 200)
12    {
13        int error = robot.ServoJV(joint_vel, exis_vel, acc, vel, cmdT, filterT, gain);
14        System.out.println("MAIN ServoJV rtn is " + error);
15//            robot.Sleep(10);
16        cnt++;
17    }
18
19    return 0;
20}

4.86. Rozpoczęcie sterowania MIT przegubów

1/**
2* @brief Rozpoczęcie sterowania MIT przegubów
3* @param  comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
4* @return Kod błędu
5*/
6errno_t ServoMITStart(int comType = 0);

4.87. Zakończenie sterowania MIT przegubów

1/**
2* @brief Zakończenie sterowania MIT przegubów
3* @param  comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
4* @return Kod błędu
5*/
6public int ServoMITEnd(int comType);

4.88. Sterowanie MIT przegubów

 1/**
 2* @brief Sterowanie MIT przegubów
 3* @param  posGain Wzmocnienie pozycji przegubów j1~j6
 4* @param  desPos Oczekiwana pozycja przegubów j1~j6 jednostka:deg
 5* @param  velGain Wzmocnienie prędkości przegubów j1~j6
 6* @param  desVel Oczekiwana prędkość przegubów j1~j6 jednostka:deg/s
 7* @param  torque_ff Moment wyprzedzający j1~j6 jednostka:Nm
 8* @param  interval Okres instrukcji, jednostka s, zakres [0.001~0.008]
 9* @param  comType Typ wysyłania instrukcji; 0-xmlrpc; 1-UDP (odpowiadający portowi 20007 robota)
10* @return Kod błędu
11*/
12public int ServoMIT(double[] posGain, double[] desPos, double[] velGain, double[] desVel, double[] torque_ff, double interval, int comType)

4.89. Przykład kodu sterowania MIT przegubów robota

 1public static int ServoMITtest(Robot robot)
 2{
 3        robot.udpCmdClient.SetUDPCmdRpyCallback((srcType, count, cmdID, dataLen, content) -> {
 4        System.out.println("\n[Received UDP reply from robot]");
 5        System.out.println("srcType: " + srcType);
 6        System.out.println("count: " + count);
 7        System.out.println("cmdID: " + cmdID);
 8        System.out.println("dataLen: " + dataLen);
 9        System.out.println("content: " + content);
10        return 0;
11    });
12    while (true)
13    {
14        robot.ResetAllError();
15        robot.Sleep(500);
16
17        double[] posGain = new double[] { 0, 0, 0, 0, 0, 0 };
18        double[] desPos = new double[] { 0, 0, 0, 0, 0, 0 };
19        double[] velGain = new double[] { 0, 0, 0, 0, 0, 0 };
20        double[] desVel = new double[] { 0, 0, 0, 0, 0, 0 };
21
22        List<Number> joint_toq=new ArrayList<>();
23        joint_toq=robot.GetJointTorques(1);
24        double[] torques=new double[]{(double)joint_toq.get(1),(double)joint_toq.get(2),(double)joint_toq.get(3),(double)joint_toq.get(4),(double)joint_toq.get(5),(double)joint_toq.get(6)};
25        System.out.println("111111");
26
27        robot.ServoMITStart(0);
28        System.out.println("ServoMITStart");
29
30        ROBOT_STATE_PKG pkg = robot.GetRobotRealTimeState();
31        robot.DragTeachSwitch(1);
32        System.out.println("DragTeachSwitch");
33
34        double intev = 0.008;
35        int error = 0;
36
37        while (true)
38        {
39            torques[5] = 0.03;
40            System.out.println("ServoMIT call");
41            error = robot.ServoMIT(posGain, desPos, velGain, desVel, torques, intev, 0);
42
43            System.out.println("ServoMIT111111 rtn is " + error);
44            robot.Sleep(1);
45
46            pkg = robot.GetRobotRealTimeState();
47            System.out.println("pkg.jt_cur_pos[5]:" + pkg.jt_cur_pos[5]);
48            if (pkg.jt_cur_pos[5] > 30)
49            {
50                break;
51            }
52        }
53
54        while (true)
55        {
56            torques[5] = -0.03;
57            error = robot.ServoMIT(posGain, desPos, velGain, desVel, torques, intev, 0);
58
59            System.out.println("ServoJT222222 rtn is " + error);
60            robot.Sleep(1);
61
62            pkg = robot.GetRobotRealTimeState();
63            System.out.println("pkg.jt_cur_pos[5]:" + pkg.jt_cur_pos[5]);
64            if (pkg.jt_cur_pos[5] < 0)
65            {
66                break;
67            }
68        }
69
70        robot.DragTeachSwitch(0);
71        error = robot.ServoMITEnd(0);
72    }
73    // return 0;
74}