4. Ruch robota

4.1. Punktowanie JOG

 1/**
 2* @brief Punktowanie JOG
 3* @param [in] refType Typ punktowania: 0-punktowanie stawów, 2-punktowanie w podstawowym układzie współrzędnych, 4-punktowanie w układzie współrzędnych narzędzia, 8-punktowanie w układzie współrzędnych przedmiotu
 4* @param [in] nb 1-staw 1 (lub oś x), 2-staw 2 (lub oś y), 3-staw 3 (lub oś z), 4-staw 4 (lub obrót wokół osi x), 5-staw 5 (lub obrót wokół osi y), 6-staw 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 punktowania, jednostka [°] lub odległość, jednostka [mm]
 9* @return Kod błędu
10*/
11int StartJOG(byte refType, byte nb, byte dir, float vel, float acc, float max_dis);

4.2. Zatrzymanie punktowania JOG z redukcją prędkości

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

4.3. Natychmiastowe zatrzymanie punktowania JOG

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

4.4. Przykład kodu sterowania punktowaniem robota

 1private void btnJOG_Click(object sender, EventArgs e)
 2{
 3    for (int i = 0; i < 6; i++)
 4    {
 5        robot.StartJOG(0, i + 1, 0, 20.0f, 20.0f, 30.0f);
 6        Thread.Sleep(1000);
 7        robot.ImmStopJOG();
 8        Thread.Sleep(1000);
 9    }
10
11    for (int i = 0; i < 6; i++)
12    {
13        robot.StartJOG(2, i + 1, 0, 20.0f, 20.0f, 30.0f);
14        Thread.Sleep(1000);
15        robot.ImmStopJOG();
16        Thread.Sleep(1000);
17    }
18
19    for (int i = 0; i < 6; i++)
20    {
21        robot.StartJOG(4, i + 1, 0, 20.0f, 20.0f, 30.0f);
22        Thread.Sleep(1000);
23        robot.StopJOG(5);
24        Thread.Sleep(1000);
25    }
26
27    for (int i = 0; i < 6; i++)
28    {
29        robot.StartJOG(8, i + 1, 0, 20.0f, 20.0f, 30.0f);
30        Thread.Sleep(1000);
31        robot.StopJOG(9);
32        Thread.Sleep(1000);
33    }
34}

4.5. Ruch w przestrzeni stawów

 1/**
 2* @brief  Ruch w przestrzeni stawów
 3* @param  [in] joint_pos  Docelowa pozycja stawów, jednostka deg
 4* @param  [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 5* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [0~14]
 6* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 9* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
10* @param  [in] epos  Pozycja osi rozszerzonej, jednostka mm
11* @param  [in] blendT [-1.0]-ruch do pozycji (blokujący), [0~500.0]-czas wygładzenia (nieblokujący), jednostka ms
12* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
13* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
14* @return  Kod błędu
15*/
16int MoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, byte offset_flag, DescPose offset_pos);

4.6. Ruch w przestrzeni stawów (automatyczne obliczenie kinematyki prostej)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch w przestrzeni stawów (automatyczne obliczenie kinematyki prostej)
 3* @param  [in] joint_pos  Docelowa pozycja stawów, jednostka deg
 4* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [0~14]
 5* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 8* @param  [in] ovl  Współczynnik skalowania prędkości, zakres [0~100]
 9* @param  [in] epos  Pozycja osi rozszerzonej, jednostka mm
10* @param  [in] blendT [-1.0]-ruch do pozycji (blokujący), [0~500.0]-czas wygładzenia (nieblokujący), jednostka ms
11* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
12* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
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

 1/**
 2* @brief Ruch liniowy w przestrzeni kartezjańskiej
 3* @param [in] joint_pos Docelowa pozycja stawów, jednostka deg
 4* @param [in] desc_pos Docelowa pozycja i orientacja kartezjańska
 5* @param [in] tool Numer układu współrzędnych narzędzia, zakres [0~14]
 6* @param [in] user Numer układu współrzędnych 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 nieudostępnione
 9* @param [in] ovl Współczynnik skalowania prędkości [0~100] / prędkość fizyczna (mm/s)
10* @param [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzenia (nieblokujący), jednostka mm
11* @param [in] blendMode Sposób przejścia; 0-przejście styczne; 1-przejście narożne
12* @param [in] epos Pozycja osi rozszerzonej, jednostka mm
13* @param [in] search 0-brak pozycjonowania drutem spawalniczym, 1-pozycjonowanie drutem spawalniczym
14* @param [in] offset_flag 0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
15* @param [in] offset_pos Wartość przesunięcia pozycji i orientacji
16* @param [in] oacc Współczynnik skalowania przyspieszenia [0-100] / przyspieszenie fizyczne (mm/s²)
17* @param [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
18* @param [in] overSpeedStrategy Strategia obsługi przekroczenia prędkości, 1-standard; 2-zatrzymaj z błędem po przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
19* @param [in] speedPercent Dopuszczalny próg procentowy 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, float vel, float acc, float ovl, float blendR, int blendMode, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos, float oacc, int velAccParamMode, int overSpeedStrategy = 0, int speedPercent = 10)

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

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)
 3* @param [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 4* @param [in] tool  Numer układu współrzędnych narzędzia, zakres [1~15]
 5* @param [in] user  Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka mm
10* @param [in] blendMode Sposób przejścia; 0-przejście styczne; 1-przejście narożne
11* @param [in] epos  Pozycja osi rozszerzonej, jednostka mm
12* @param [in] search  0-brak pozycjonowania drutem spawalniczym, 1-pozycjonowanie drutem spawalniczym
13* @param [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
14* @param [in] offset_pos  Wartość przesunięcia pozycji i orientacji
15* @param [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawów
16* @param [in] overSpeedStrategy  Strategia obsługi przekroczenia prędkości, 1-standard; 2-zatrzymaj z błędem po przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
17* @param [in] speedPercent  Dopuszczalny próg procentowy 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 velAccParamMode)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów velAccParamMode)
 3* @param  [in] joint_pos  Docelowa pozycja stawów, jednostka deg
 4* @param  [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 5* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [1~15]
 6* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka mm
11* @param  [in] epos  Pozycja osi rozszerzonej, jednostka mm
12* @param  [in] search  0-brak pozycjonowania drutem spawalniczym, 1-pozycjonowanie drutem spawalniczym
13* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
14* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
15* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
16* @param  [in] overSpeedStrategy  Strategia obsługi przekroczenia prędkości, 1-standard; 2-zatrzymaj z błędem po przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
17* @param  [in] speedPercent  Dopuszczalny próg procentowy 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 C#SDK-V1.1.7: Web-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 stawów, jednostka deg
 4* @param  [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 5* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [1~15]
 6* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka mm
11* @param  [in] blendMode Sposób przejścia; 0-przejście styczne; 1-przejście narożne
12* @param  [in] epos  Pozycja osi rozszerzonej, jednostka mm
13* @param  [in] search  0-brak pozycjonowania drutem spawalniczym, 1-pozycjonowanie drutem spawalniczym
14* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
15* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
16* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
17* @param  [in] overSpeedStrategy  Strategia obsługi przekroczenia prędkości, 1-standard; 2-zatrzymaj z błędem po przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
18* @param  [in] speedPercent  Dopuszczalny próg procentowy 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 - nie wymaga wprowadzania pozycji stawów)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch liniowy w przestrzeni kartezjańskiej (przeciążona funkcja 2 - nie wymaga wprowadzania pozycji stawów)
 3* @param  [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 4* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [1~15]
 5* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka mm
10* @param  [in] blendMode Sposób przejścia; 0-przejście styczne; 1-przejście narożne
11* @param  [in] epos  Pozycja osi rozszerzonej, jednostka mm
12* @param  [in] search  0-brak pozycjonowania drutem spawalniczym, 1-pozycjonowanie drutem spawalniczym
13* @param  [in] offset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
14* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
15* @param  [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawów
16* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
17* @param  [in] overSpeedStrategy  Strategia obsługi przekroczenia prędkości, 1-standard; 2-zatrzymaj z błędem po przekroczeniu prędkości; 3-adaptacyjne zmniejszenie prędkości, domyślnie 0
18* @param  [in] speedPercent  Dopuszczalny próg procentowy 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 łukowy w przestrzeni kartezjańskiej

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

4.13. Ruch łukowy w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch łukowy w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)
 3* @param [in] desc_pos_p   Pozycja i orientacja kartezjańska punktu pośredniego
 4* @param [in] ptool  Numer układu współrzędnych narzędzia, zakres [1~15]
 5* @param [in] puser  Numer układu współrzędnych 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 nieudostępnione
 8* @param [in] epos_p  Pozycja osi rozszerzonej punktu pośredniego, jednostka mm
 9* @param [in] poffset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
10* @param [in] offset_pos_p  Wartość przesunięcia pozycji i orientacji
11* @param [in] desc_pos_t   Pozycja i orientacja kartezjańska punktu docelowego
12* @param [in] ttool  Numer układu współrzędnych narzędzia, zakres [1~15]
13* @param [in] tuser  Numer układu współrzędnych 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 nieudostępnione
16* @param [in] epos_t  Pozycja osi rozszerzonej punktu docelowego, jednostka mm
17* @param [in] toffset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
18* @param [in] offset_pos_t  Wartość przesunięcia pozycji i orientacji
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ładzenia (nieblokujący), jednostka mm
21* @param [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawó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 łukowy w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów velAccParamMode)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch łukowy w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów velAccParamMode)
 3* @param  [in] joint_pos_p  Pozycja stawów punktu pośredniego, jednostka deg
 4* @param  [in] desc_pos_p   Pozycja i orientacja kartezjańska punktu pośredniego
 5* @param  [in] ptool  Numer układu współrzędnych narzędzia, zakres [1~15]
 6* @param  [in] puser  Numer układu współrzędnych 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 nieudostępnione
 9* @param  [in] epos_p  Pozycja osi rozszerzonej punktu pośredniego, jednostka mm
10* @param  [in] poffset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
11* @param  [in] offset_pos_p  Wartość przesunięcia pozycji i orientacji
12* @param  [in] joint_pos_t  Pozycja stawów punktu docelowego, jednostka deg
13* @param  [in] desc_pos_t   Pozycja i orientacja kartezjańska punktu docelowego
14* @param  [in] ttool  Numer układu współrzędnych narzędzia, zakres [1~15]
15* @param  [in] tuser  Numer układu współrzędnych 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 nieudostępnione
18* @param  [in] epos_t  Pozycja osi rozszerzonej punktu docelowego, jednostka mm
19* @param  [in] toffset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
20* @param  [in] offset_pos_t  Wartość przesunięcia pozycji i orientacji
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ładzenia (nieblokujący), jednostka mm
23* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
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 łukowy w przestrzeni kartezjańskiej (przeciążona funkcja 1 - nie wymaga wprowadzania pozycji stawów)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch łukowy w przestrzeni kartezjańskiej (przeciążona funkcja 1 - nie wymaga wprowadzania pozycji stawów)
 3* @param  [in] desc_pos_p   Pozycja i orientacja kartezjańska punktu pośredniego
 4* @param  [in] ptool  Numer układu współrzędnych narzędzia, zakres [1~15]
 5* @param  [in] puser  Numer układu współrzędnych 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 nieudostępnione
 8* @param  [in] epos_p  Pozycja osi rozszerzonej punktu pośredniego, jednostka mm
 9* @param  [in] poffset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
10* @param  [in] offset_pos_p  Wartość przesunięcia pozycji i orientacji
11* @param  [in] desc_pos_t   Pozycja i orientacja kartezjańska punktu docelowego
12* @param  [in] ttool  Numer układu współrzędnych narzędzia, zakres [1~15]
13* @param  [in] tuser  Numer układu współrzędnych 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 nieudostępnione
16* @param  [in] epos_t  Pozycja osi rozszerzonej punktu docelowego, jednostka mm
17* @param  [in] toffset_flag  0-brak przesunięcia, 1-przesunięcie w podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
18* @param  [in] offset_pos_t  Wartość przesunięcia pozycji i orientacji
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ładzenia (nieblokujący), jednostka mm
21* @param  [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawów
22* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
23* @return  Kod błędu
24*/
25public 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 punkt-punkt w przestrzeni kartezjańskiej

 1/**
 2* @brief Ruch punkt-punkt w przestrzeni kartezjańskiej
 3* @param [in] desc_pos Docelowa pozycja i orientacja kartezjańska w podstawowym układzie współrzędnych
 4* @param [in] tool Numer układu współrzędnych narzędzia, zakres [0~14]
 5* @param [in] user Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka ms
10* @param [in] config Konfiguracja przestrzeni stawów, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-obliczenie z odniesieniem do określonej konfiguracji przestrzeni stawów, domyślnie -1
11* @return Kod błędu
12*/
13int MoveCart(DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendT, int config);

4.17. Ruch pełnego okręgu w przestrzeni kartezjańskiej

Nowe w wersji C#SDK-V1.1.4: Web-3.8.3

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

4.18. Ruch pełnego okręgu w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2 * @brief  Ruch pełnego okręgu w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)
 3 * @param  [in] desc_pos_p   Pozycja i orientacja kartezjańska punktu pośredniego 1
 4 * @param  [in] ptool  Numer układu współrzędnych narzędzia, zakres [0~14]
 5 * @param  [in] puser  Numer układu współrzędnych 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 nieudostępnione
 8 * @param  [in] epos_p  Pozycja osi rozszerzonej punktu pośredniego 1, jednostka mm
 9 * @param  [in] desc_pos_t   Pozycja i orientacja kartezjańska punktu pośredniego 2
10 * @param  [in] ttool  Numer układu współrzędnych narzędzia, zakres [0~14]
11 * @param  [in] tuser  Numer układu współrzędnych 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 nieudostępnione
14 * @param  [in] epos_t  Pozycja osi rozszerzonej punktu pośredniego 2, 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 podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
17 * @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
18 * @param  [in] oacc Procent przyspieszenia
19 * @param  [in] blendR -1: blokujący; 0~1000: promień wygładzenia
20 * @param  [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawó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.19. Ruch pełnego okręgu w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów velAccParamMode)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2*@brief  Ruch pełnego okręgu w przestrzeni kartezjańskiej (z dodanym parametrem trybu parametrów velAccParamMode)
 3*@param  [in] joint_pos_p  Pozycja stawów punktu pośredniego 1, jednostka deg
 4*@param  [in] desc_pos_p   Pozycja i orientacja kartezjańska punktu pośredniego 1
 5*@param  [in] ptool  Numer układu współrzędnych narzędzia, zakres [1~15]
 6*@param  [in] puser  Numer układu współrzędnych 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 nieudostępnione
 9*@param  [in] epos_p  Pozycja osi rozszerzonej punktu pośredniego 1, jednostka mm
10*@param  [in] joint_pos_t  Pozycja stawów punktu pośredniego 2, jednostka deg
11*@param  [in] desc_pos_t   Pozycja i orientacja kartezjańska punktu pośredniego 2
12*@param  [in] ttool  Numer układu współrzędnych narzędzia, zakres [1~15]
13*@param  [in] tuser  Numer układu współrzędnych 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 nieudostępnione
16*@param  [in] epos_t  Pozycja osi rozszerzonej punktu pośredniego 2, 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 podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
19*@param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
20*@param  [in] oacc Procent przyspieszenia
21*@param  [in] blendR -1: blokujący; 0~1000: promień wygładzenia
22*@param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
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.20. Ruch pełnego okręgu w przestrzeni kartezjańskiej (przeciążona funkcja 1 - nie wymaga wprowadzania pozycji stawów)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch pełnego okręgu w przestrzeni kartezjańskiej (przeciążona funkcja 1 - nie wymaga wprowadzania pozycji stawów)
 3* @param  [in] desc_pos_p   Pozycja i orientacja kartezjańska punktu pośredniego 1
 4* @param  [in] ptool  Numer układu współrzędnych narzędzia, zakres [0~14]
 5* @param  [in] puser  Numer układu współrzędnych 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 nieudostępnione
 8* @param  [in] epos_p  Pozycja osi rozszerzonej punktu pośredniego 1, jednostka mm
 9* @param  [in] desc_pos_t   Pozycja i orientacja kartezjańska punktu pośredniego 2
10* @param  [in] ttool  Numer układu współrzędnych narzędzia, zakres [0~14]
11* @param  [in] tuser  Numer układu współrzędnych 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 nieudostępnione
14* @param  [in] epos_t  Pozycja osi rozszerzonej punktu pośredniego 2, 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 podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
17* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
18* @param  [in] oacc Procent przyspieszenia
19* @param  [in] blendR -1: blokujący; 0~1000: promień wygładzenia
20* @param  [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawów
21* @param  [in] velAccParamMode Tryb parametrów prędkości i przyspieszenia; 0-procent; 1-prędkość fizyczna (mm/s) przyspieszenie (mm/s²)
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.21. Przykład kodu podstawowych instrukcji ruchu robota

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

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

4.22. Ruch po linii śrubowej w przestrzeni kartezjańskiej

 1/**
 2* @brief Ruch po linii śrubowej w przestrzeni kartezjańskiej
 3* @param [in] joint_pos Docelowa pozycja stawów, jednostka deg
 4* @param [in] desc_pos Docelowa pozycja i orientacja kartezjańska
 5* @param [in] tool Numer układu współrzędnych narzędzia, zakres [0~14]
 6* @param [in] user Numer układu współrzędnych 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 nieudostępnione
 9* @param [in] epos Pozycja osi rozszerzonej, 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 podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
12* @param [in] offset_pos Wartość przesunięcia pozycji i orientacji
13* @param [in] spiral_param Parametry spirali
14* @return Kod błędu
15*/
16int NewSpiral(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, ExaxisPos epos, float ovl, byte offset_flag, DescPose offset_pos, SpiralParam spiral_param);

4.23. Ruch po linii śrubowej w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief Ruch po linii śrubowej w przestrzeni kartezjańskiej (automatyczne obliczenie kinematyki odwrotnej)
 3* @param [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 4* @param [in] tool  Numer układu współrzędnych narzędzia, zakres [0~14]
 5* @param [in] user  Numer układu współrzędnych 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 nieudostępnione
 8* @param [in] epos  Pozycja osi rozszerzonej, 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 podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
11* @param [in] offset_pos  Wartość przesunięcia pozycji i orientacji
12* @param [in] spiral_param  Parametry spirali
13* @param [in] config  Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawó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 linii śrubowej

 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     Console.WriteLine("movej errcode:"+ rtn);
21
22    rtn = robot.NewSpiral(desc_pos, tool, user, vel, acc, epos, ovl, flag, offset_pos2, sp,-1);
23    Console.WriteLine("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[in] 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 = 0)

4.26. Zakończenie ruchu serwo

1/**
2* @brief Zakończenie ruchu serwo, używane razem z instrukcjami ServoJ, ServoCart
3* @param[in] 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 = 0)

4.27. Ruch w trybie serwo w przestrzeni stawów

Nowe w wersji C#SDK-V1.1.4: Web-3.8.3

 1/**
 2* @brief  Ruch w trybie serwo w przestrzeni stawów
 3* @param  [in] joint_pos  Docelowa pozycja stawów, jednostka deg
 4* @param  [in] axisPos  Pozycja zewnętrznej osi, jednostka mm
 5* @param  [in] acc  Procent przyspieszenia, zakres [0~100], tymczasowo nieudostępnione, domyślnie 0
 6* @param  [in] vel  Procent prędkości, zakres [0~100], tymczasowo nieudostępnione, domyślnie 0
 7* @param  [in] cmdT  Okres wysyłania instrukcji, jednostka s, zalecany zakres [0.001~0.0016]
 8* @param  [in] filterT Czas filtrowania, jednostka s, tymczasowo nieudostępnione, domyślnie 0
 9* @param  [in] gain  Wzmacniacz proporcjonalny pozycji docelowej, tymczasowo nieudostępnione, domyślnie 0
10* @param  [in] id ID instrukcji servoJ, domyślnie 0
11* @param  [in] 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 = 0, int comType = 0)

4.28. Przykład kodu SDK ServoJ, ServoMoveStart, ServoMoveEnd w oparciu o komunikację UDP

Nowe w wersji C#SDK-V1.1.4: Web-3.8.3

 1public void TestServoJUDP()
 2{
 3    // Subskrypcja zwrotna
 4    robot.OnUdpFrameReceived += (comType, frameCount, frameCmdID, contentLen, content) =>
 5    {
 6        Console.WriteLine($"[] comType={comType}, count={frameCount}, cmdID={frameCmdID}, content={content}");
 7    };
 8
 9    ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
10
11    float vel = 0.0f;
12    float acc = 0.0f;
13    float cmdT = 0.008f;
14    float filterT = 0.0f;
15    float gain = 0.0f;
16    byte flag = 0;
17    int count = 300;
18    float dt = 0.1f;
19    int cmdID = 0;
20
21    while (true)
22    {
23        JointPos j = new JointPos(0, -90, 90, 0, 0, 0);
24        ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
25        DescPose offset_pos = new DescPose(0, -90, 90, 0, 0, 0);
26        robot.MoveJ(j, 0, 0, 100, 100, 100, epos, -1, 0, offset_pos);
27        int ret = robot.GetActualJointPosDegree(flag, ref j);
28        if (ret == 0)
29        {
30            count = 300;
31            cmdID += 1;
32            robot.ServoMoveStart(1);
33
34            while (count > 0)
35            {
36                robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID, 1);
37                j.jPos[0] += dt;
38                j.jPos[1] += dt;
39                j.jPos[3] += dt;
40                j.jPos[4] += dt;
41                j.jPos[5] += dt;
42                epos.ePos[0] += dt;
43                count -= 1;
44                Thread.Sleep(1);
45                robot.GetRobotRealTimeState(ref pkg);
46            }
47            robot.ServoMoveEnd(1);
48
49            Thread.Sleep(1000);
50            count = 300;
51            robot.ServoMoveStart(1);
52            while (count > 0)
53            {
54                robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID, 1);
55                j.jPos[0] -= dt;
56                j.jPos[1] -= dt;
57                j.jPos[3] -= dt;
58                j.jPos[4] -= dt;
59                j.jPos[5] -= dt;
60                epos.ePos[0] -= dt;
61                count -= 1;
62                Thread.Sleep(1);
63                robot.GetRobotRealTimeState(ref pkg);
64            }
65            robot.ServoMoveEnd(1);
66        }
67        else
68        {
69            Console.WriteLine($"GetActualJointPosDegree errcode:{ret}");
70        }
71    }
72}

4.29. Przykład kodu ruchu w trybie serwo w przestrzeni stawów

Nowe w wersji C#SDK-V1.1.4: Web-3.8.3

 1private void btnJointServoMove_Click(object sender, EventArgs e)
 2{
 3    JointPos j = new JointPos(0, 0, 0, 0, 0, 0);
 4    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 5
 6    float vel = 0.0f;
 7    float acc = 0.0f;
 8    float cmdT = 0.008f;
 9    float filterT = 0.0f;
10    float gain = 0.0f;
11    byte flag = 0;
12    int count = 500;
13    float dt = 0.1f;
14    int cmdID = 0;
15    int ret = robot.GetActualJointPosDegree(flag, ref j);
16    if (ret == 0)
17    {
18        robot.ServoMoveStart();
19
20        try
21        {
22            while (count > 0)
23            {
24
25                robot.ServoJ(j, epos, acc, vel, cmdT, filterT, gain, cmdID);
26
27
28                j.jPos[0] += dt;
29                count--;
30
31
32                robot.WaitMs((int)(cmdT * 1000));
33            }
34        }
35        finally
36        {
37
38            robot.ServoMoveEnd();
39        }
40    }
41    else
42    {
43        Console.WriteLine($"GetActualJointPosDegree error code: {ret}");
44
45    }
46}

4.30. Rozpoczęcie sterowania momentem obrotowym stawu

1/**
2* @brief Rozpoczęcie sterowania momentem obrotowym stawu
3* @param [in] 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 = 0)

4.31. Sterowanie momentem obrotowym stawu

 1/**
 2* @brief Sterowanie momentem obrotowym stawu
 3* @param [in] torque Momenty obrotowe stawów j1~j6, jednostka Nm
 4* @param [in] interval Okres instrukcji, jednostka s, zakres [0.001~0.008]
 5* @param [in] checkFlag Strategia wykrywania 0-brak ograniczenia; 1-ograniczenie mocy; 2-ograniczenie prędkości; 3-jednoczesne ograniczenie mocy i prędkości
 6* @param [in] jPowerLimit Maksymalne ograniczenie mocy stawu (W)
 7* @param [in] jVelLimit Maksymalna prędkość stawu (°/s)
 8* @param [in]  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 = 0)

4.32. Zakończenie sterowania momentem obrotowym stawu

1/**
2* @brief Zakończenie sterowania momentem obrotowym stawu
3* @param[in] 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 = 0)

4.33. Przykład kodu SDK ServoJT, ServoJTStart, ServoJTEnd w oparciu o komunikację UDP

 1public int ServoJTWithSafetyUDP()
 2{
 3    // Subskrypcja zwrotna
 4    robot.OnUdpFrameReceived += (comType, frameCount, frameCmdID, contentLen, content) =>
 5    {
 6        Console.WriteLine($"[UDP odpowiedź] comType={comType}, count={frameCount}, cmdID={frameCmdID}, content={content}");
 7    };
 8    while (true)
 9    {
10        robot.ResetAllError();
11        Thread.Sleep(500);
12
13        JointPos j = new JointPos(7.053, -89.699, 156.141, -72.751, 7.829, 1.889);
14        ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
15        DescPose offset_pos = new DescPose(-151.288, -321.186, 221.989, 89.140, 4.361, -0.795);
16        robot.MoveJ(j, 0, 0, 100, 100, 100, epos, -1, 0, offset_pos);
17
18        double[] torques = new double[6] { 0, 0, 0, 0, 0, 0 };
19        robot.GetJointTorques(1, torques);
20
21        robot.ServoJTStart(1);
22        ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
23        robot.DragTeachSwitch(1);
24
25        int checkFlag = 0;
26        double[] jPowerLimit = new double[6] { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
27        double[] jVelLimit = new double[6] { 50, 50, 50, 50, 50, 50 };
28        int error = 0;
29        while (true)
30        {
31
32            torques[0] = 0.1;
33            error = robot.ServoJT(torques, 0.008, checkFlag, jPowerLimit, jVelLimit, 1);
34
35            Console.WriteLine($"ServoJT rtn is {error}");
36            Thread.Sleep(1);
37
38            robot.GetRobotRealTimeState(ref pkg);
39            Console.WriteLine($"maincode {pkg.main_code}, subcode {pkg.sub_code}");
40            if (pkg.jt_cur_pos[0] > 30)
41            {
42                break;
43            }
44        }
45
46        while (true)
47        {
48
49            torques[0] = -0.1;
50            error = robot.ServoJT(torques, 0.008, checkFlag, jPowerLimit, jVelLimit, 1);
51
52            Console.WriteLine($"ServoJT rtn is {error}");
53            Thread.Sleep(1);
54
55            robot.GetRobotRealTimeState(ref pkg);
56            Console.WriteLine($"maincode {pkg.main_code}, subcode {pkg.sub_code}");
57            if (pkg.jt_cur_pos[0] < 0)
58            {
59                break;
60            }
61        }
62
63        robot.DragTeachSwitch(0);
64        error = robot.ServoJTEnd(1);
65    }
66    return 0;
67}

4.34. Przykład kodu sterowania momentem obrotowym stawu

 1private void button27_Click(object sender, EventArgs e)
 2{
 3    robot.DragTeachSwitch(1);
 4    robot.SetPowerLimit(1, 200);
 5    double[] torques = { 0, 0, 0, 0, 0, 0 };
 6    robot.GetJointTorques(1, torques);
 7
 8    int count = 100;
 9    robot.ServoJTStart();
10    int error = 0;
11    while (count > 0)
12    {
13        error = robot.ServoJT(torques, 0.001f);
14        count--;
15        Thread.Sleep(1);
16    }
17    error = robot.ServoJTEnd();
18    robot.DragTeachSwitch(0);
19}

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

 1public int ServoJTWithSafety()
 2{
 3    while (true)
 4    {
 5        robot.ResetAllError();
 6        Thread.Sleep(500);
 7
 8        JointPos j = new JointPos(7.053, -89.699, 156.141, -72.751, 7.829, 1.889);
 9        ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
10        DescPose offset_pos = new DescPose(-151.288, -321.186, 221.989, 89.140, 4.361, -0.795);
11        robot.MoveJ(j, 0, 0, 100, 100, 100, epos, -1, 0, offset_pos);
12
13        double[] torques = new double[6] { 0, 0, 0, 0, 0, 0 };
14        robot.GetJointTorques(1, torques);
15
16        robot.ServoJTStart(0);
17        ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
18        robot.DragTeachSwitch(1);
19
20        int checkFlag = 0;
21        double[] jPowerLimit = new double[6] { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
22        double[] jVelLimit = new double[6] { 50, 50, 50, 50, 50, 50 };
23        int error = 0;
24        while (true)
25        {
26
27            torques[0] = 0.1;
28            error = robot.ServoJT(torques, 0.008, checkFlag, jPowerLimit, jVelLimit, 0);
29
30            Console.WriteLine($"ServoJT rtn is {error}");
31            Thread.Sleep(1);
32
33            robot.GetRobotRealTimeState(ref pkg);
34            Console.WriteLine($"maincode {pkg.main_code}, subcode {pkg.sub_code}");
35            if (pkg.jt_cur_pos[0] > 30)
36            {
37                break;
38            }
39        }
40
41        while (true)
42        {
43
44            torques[0] = -0.1;
45            error = robot.ServoJT(torques, 0.008, checkFlag, jPowerLimit, jVelLimit, 0);
46
47            Console.WriteLine($"ServoJT rtn is {error}");
48            Thread.Sleep(1);
49
50            robot.GetRobotRealTimeState(ref pkg);
51            Console.WriteLine($"maincode {pkg.main_code}, subcode {pkg.sub_code}");
52            if (pkg.jt_cur_pos[0] < 0)
53            {
54                break;
55            }
56        }
57
58        robot.DragTeachSwitch(0);
59        error = robot.ServoJTEnd(0);
60    }
61}

4.36. Ruch w trybie serwo w przestrzeni kartezjańskiej

 1/**
 2* @brief Ruch w trybie serwo w przestrzeni kartezjańskiej
 3* @param [in] mode 0-ruch absolutny (układ podstawowy), 1-ruch przyrostowy (układ podstawowy), 2-ruch przyrostowy (układ narzędzia)
 4* @param [in] desc_pos Docelowa pozycja i orientacja kartezjańska lub przyrost pozycji i orientacji
 5* @param [in] exaxis Pozycja osi rozszerzonej
 6* @param [in] pos_gain Współczynnik proporcjonalności przyrostu pozycji, działa tylko w ruchu przyrostowym, zakres [0~1]
 7* @param [in] acc Procent przyspieszenia, zakres [0~100], tymczasowo nieudostępnione, domyślnie 0
 8* @param [in] vel Procent prędkości, zakres [0~100], tymczasowo nieudostępnione, domyślnie 0
 9* @param [in] cmdT Okres wysyłania instrukcji, jednostka s, zalecany zakres [0.001~0.016]
10* @param [in] filterT Czas filtrowania, jednostka s, tymczasowo nieudostępnione, domyślnie 0
11* @param [in] gain Wzmacniacz proporcjonalny pozycji docelowej, tymczasowo nieudostępnione, 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 void TestServoCart()
 2{
 3    ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
 4
 5    int rtn;
 6    DescPose desc_pos_dt = new DescPose(83.00800f, 50.525000f, 29.246f, 179.629f, -7.138f, -166.975f);
 7    ExaxisPos exaxis = new ExaxisPos(100.0f, 0.0f, 0.0f, 0.0f);
 8    double[] pos_gain = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
 9    int mode = 0;
10    float vel = 0.0f;
11    float acc = 0.0f;
12    float cmdT = 0.001f;
13    float filterT = 0.0f;
14    float gain = 0.0f;
15    byte flag = 0;
16    int count = 5000;
17
18    robot.SetSpeed(20);
19
20    while (count > 0)
21    {
22        rtn = robot.ServoCart(mode, desc_pos_dt, exaxis, pos_gain, acc, vel, cmdT, filterT, gain);
23        Console.WriteLine($"ServoCart rtn is {rtn}");
24        count -= 1;
25        desc_pos_dt.tran.x += 0.01f;
26        exaxis.ePos[0] += 0.01f;
27    }
28}

4.38. Rozpoczęcie ruchu po krzywej średniej

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

4.39. Ruch PTP po krzywej średniej

 1/**
 2* @brief  Ruch po krzywej średniej w przestrzeni stawów
 3* @param  [in] joint_pos  Docelowa pozycja stawów, jednostka deg
 4* @param  [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 5* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [0~14]
 6* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 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, float vel, float acc, float ovl);

4.40. Ruch po krzywej średniej w przestrzeni stawów (automatyczne obliczenie kinematyki prostej)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief  Ruch po krzywej średniej w przestrzeni stawów (automatyczne obliczenie kinematyki prostej)
 3* @param  [in] joint_pos  Docelowa pozycja stawów, jednostka deg
 4* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [0~14]
 5* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 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 średniej

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

4.42. Przykład kodu ruchu po krzywej średniej

 1private void btnSplineMove_Click(object sender, EventArgs e)
 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 desc_pos1 = new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 8    DescPose desc_pos2 = new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 9    DescPose desc_pos3 = new DescPose(-327.622, 402.230, 320.402, -178.067, 2.127, -46.207);
10    DescPose desc_pos4 = new DescPose(-104.066, 544.321, 327.023, -177.715, 3.371, -73.818);
11    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
12    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
13
14    int tool = 0;
15    int user = 0;
16    float vel = 100.0f;
17    float acc = 100.0f;
18    float ovl = 100.0f;
19    float blendT = -1.0f;
20    byte flag = 0;
21
22    robot.SetSpeed(20);
23
24    int err = -1;
25    err = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
26    Console.WriteLine($"movej errcode:  {err}");
27
28    robot.SplineStart();
29    robot.SplinePTP(j1, desc_pos1, tool, user, vel, acc, ovl);
30    robot.SplinePTP(j2, desc_pos2, tool, user, vel, acc, ovl);
31    robot.SplinePTP(j3, desc_pos3, tool, user, vel, acc, ovl);
32    robot.SplinePTP(j4, desc_pos4, tool, user, vel, acc, ovl);
33    robot.SplineEnd();
34}

4.43. Rozpoczęcie nowego ruchu po krzywej średniej

Zmienione w wersji C#SDK-v1.0.6.

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

4.44. Nowy punkt instrukcji krzywej średniej

 1/**
 2* @brief Dodaje punkt instrukcji ruchu po krzywej średniej
 3* @param [in] joint_pos Docelowa pozycja stawów, jednostka deg
 4* @param [in] desc_pos Docelowa pozycja i orientacja kartezjańska
 5* @param [in] tool Numer układu współrzędnych narzędzia, zakres [0~14]
 6* @param [in] user Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka mm
11* @param [in] lastFlag  Czy jest ostatnim punktem, 0-nie, 1-tak
12* @return Kod błędu
13*/
14int NewSplinePoint(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, int lastFlag);

4.45. Nowy punkt instrukcji krzywej średniej (automatyczne obliczenie kinematyki odwrotnej)

Nowe w wersji C#SDK-V1.1.7: Web-3.8.5

 1/**
 2* @brief Nowy punkt instrukcji krzywej średniej (automatyczne obliczenie kinematyki odwrotnej)
 3* @param  [in] desc_pos   Docelowa pozycja i orientacja kartezjańska
 4* @param  [in] tool  Numer układu współrzędnych narzędzia, zakres [0~14]
 5* @param  [in] user  Numer układu współrzędnych 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 nieudostępnione
 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ładzenia (nieblokujący), jednostka mm
10* @param  [in] lastFlag Czy jest ostatnim punktem, 0-nie, 1-tak
11* @param  [in] config Konfiguracja przestrzeni stawów dla rozwiązania odwrotnego, [-1]-obliczenie z odniesieniem do bieżącej pozycji stawów, [0~7]-rozwiązanie zgodnie z określoną konfiguracją przestrzeni stawó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 średniej

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

4.47. Przykład kodu nowego ruchu po krzywej średniej

 1private void btnNewSpline_Click(object sender, EventArgs e)
 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    JointPos j5 = new JointPos(-95.228, -54.621, 73.691, -112.245, -91.280, 74.268);
 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(-327.622, 402.230, 320.402, -178.067, 2.127, -46.207);
11    DescPose desc_pos4 = new DescPose(-104.066, 544.321, 327.023, -177.715, 3.371, -73.818);
12    DescPose desc_pos5 = new DescPose(-33.421, 732.572, 275.103, -177.907, 2.709, -79.482);
13    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
14    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
15
16    int tool = 0;
17    int user = 0;
18    float vel = 100.0f;
19    float acc = 100.0f;
20    float ovl = 100.0f;
21    float blendT = -1.0f;
22    byte flag = 0;
23
24    robot.SetSpeed(20);
25
26    int err = -1;
27    err = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
28    Console.WriteLine($"movej errcode:  {err}");
29
30    robot.NewSplineStart(1, 2000);
31    robot.NewSplinePoint(j1, desc_pos1, tool, user, vel, acc, ovl, -1, 0);
32    robot.NewSplinePoint(j2, desc_pos2, tool, user, vel, acc, ovl, -1, 0);
33    robot.NewSplinePoint(j3, desc_pos3, tool, user, vel, acc, ovl, -1, 0);
34    robot.NewSplinePoint(j4, desc_pos4, tool, user, vel, acc, ovl, -1, 0);
35    robot.NewSplinePoint(j5, desc_pos5, tool, user, vel, acc, ovl, -1, 0);
36    robot.NewSplineEnd();
37}

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 wstrzymania, wznowienia, zatrzymania ruchu

 1private void btnMotionPause_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    JointPos j1 = new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 5    JointPos j5 = new JointPos(-95.228, -54.621, 73.691, -112.245, -91.280, 74.268);
 6    DescPose desc_pos1 = new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 7    DescPose desc_pos5 = new DescPose(-33.421, 732.572, 275.103, -177.907, 2.709, -79.482);
 8    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 9    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
10
11    int tool = 0;
12    int user = 0;
13    float vel = 100.0f;
14    float acc = 100.0f;
15    float ovl = 100.0f;
16    float blendT = -1.0f;
17    byte flag = 0;
18
19    robot.SetSpeed(20);
20
21    rtn = robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
22    rtn = robot.MoveJ(j5, desc_pos5, tool, user, vel, acc, ovl, epos, 1, flag, offset_pos);
23    Thread.Sleep(1000);
24    robot.PauseMotion();
25
26    Thread.Sleep(1000);
27    robot.ResumeMotion();
28
29    Thread.Sleep(1000);
30    robot.StopMotion();
31
32    Thread.Sleep(1000);
33
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 podstawowym układzie współrzędnych / układzie współrzędnych przedmiotu, 2-przesunięcie w układzie współrzędnych narzędzia
4* @param  [in] offset_pos  Wartość przesunięcia pozycji i orientacji
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

 1private void btnPointOffect_Click(object sender, EventArgs e)
 2{
 3    JointPos j1, j2;
 4    DescPose desc_pos1, desc_pos2, offset_pos, offset_pos1;
 5    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 6
 7    j1 = new JointPos(-11.904, -99.669, 117.473, -108.616, -91.726, 74.256);
 8    desc_pos1 = new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 9
10    j2 = new JointPos(-45.615, -106.172, 124.296, -107.151, -91.282, 74.255);
11
12    desc_pos2 = new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
13
14    offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
15    offset_pos1 = new DescPose(50.0, 50.0, 50.0, 5.0, 5.0, 5.0);
16
17    int tool = 0;
18    int user = 0;
19    float vel = 100.0f;
20    float acc = 100.0f;
21    float ovl = 100.0f;
22    float blendT = -1.0f;
23    byte flag = 0;
24    int type = 0;
25
26    robot.SetSpeed(20);
27
28    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
29    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
30    Thread.Sleep(1000);
31    robot.PointsOffsetEnable(type, offset_pos1);
32    Thread.Sleep(1000);
33    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
34    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
35    Thread.Sleep(1000);
36    robot.PointsOffsetDisable();
37}

4.55. Rozpoczęcie chwytania AO skrzynki sterowniczej w locie

Nowe w wersji C#SDK-v1.0.7.

1/**
2* @brief Rozpoczęcie chwytania AO skrzynki sterowniczej w locie
3* @param [in] AONum Numer AO skrzynki sterowniczej
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 martwego pola, 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 chwytania AO skrzynki sterowniczej w locie

Nowe w wersji C#SDK-v1.0.7.

1/**
2* @brief Zatrzymanie chwytania AO skrzynki sterowniczej w locie
3* @return Kod błędu
4*/
5int MoveAOStop();

4.57. Rozpoczęcie chwytania AO końcowego w locie

Nowe w wersji C#SDK-v1.0.7.

1/**
2* @brief Rozpoczęcie chwytania AO końcowego w locie
3* @param [in] AONum Numer AO końcowego
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 martwego pola, 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 chwytania AO końcowego w locie

Nowe w wersji C#SDK-v1.0.7.

1/**
2* @brief Zatrzymanie chwytania AO końcowego w locie
3* @return Kod błędu
4*/
5int MoveToolAOStop();

4.59. Przykład kodu chwytania AO w locie

 1private void btnMoveAO_Click(object sender, EventArgs e)
 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    DescPose desc_pos1 = new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
 6    DescPose desc_pos2 = new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
 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    float vel = 100.0f;
13    float acc = 100.0f;
14    float ovl = 100.0f;
15    float blendT = 0.0f;
16    float blendR = 0.0f;
17    byte flag = 0;
18    byte search = 0;
19
20    robot.SetSpeed(5);
21
22    robot.MoveAOStart(0,100,100,20);
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.MoveAOStop();
26
27    robot.MoveToolAOStart(0, 100, 100, 20);
28    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
29    robot.MoveJ(j2, desc_pos2, tool, user, vel, acc, ovl, epos, blendT, flag, offset_pos);
30    robot.MoveToolAOStop();
31}

4.60. Rozpoczęcie filtrowania FIR ruchu PTP

Nowe w wersji C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Rozpoczęcie filtrowania FIR ruchu PTP
3* @param [in] maxAcc Maksymalna wartość ekstremalna przyspieszenia (deg/s²)
4* @param [in] maxJek Ujednolicona wartość ekstremalna gwałtowności stawu (deg/s³)
5* @return Kod błędu
6*/
7int PtpFIRPlanningStart(double maxAcc, double maxJek=1000);

4.61. Zakończenie filtrowania FIR ruchu PTP

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

4.62. Rozpoczęcie filtrowania FIR ruchu LIN, ARC

1/**
2* @brief Rozpoczęcie filtrowania FIR ruchu LIN, ARC
3* @param [in] maxAccLin Wartość ekstremalna przyspieszenia liniowego (mm/s²)
4* @param [in] maxAccDeg Wartość ekstremalna przyspieszenia kątowego (deg/s²)
5* @param [in] maxJerkLin Wartość ekstremalna gwałtowności liniowej (mm/s³)
6* @param [in] maxJerkDeg Wartość ekstremalna gwałtowności kątowej (deg/s³)
7* @return Kod błędu
8*/
9int LinArcFIRPlanningStart(double maxAccLin, double maxAccDeg, double maxJerkLin, double maxJerkDeg);

4.63. Zakończenie filtrowania FIR ruchu LIN, ARC

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

4.64. Przykład kodu do ustawiania sterowania z wyprzedzeniem prędkości robota

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

4.65. Włączenie wygładzania przyspieszenia

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

4.66. Wyłączenie wygładzania przyspieszenia

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

4.67. Przykład kodu

 1private void button1_Click(object sender, EventArgs e)
 2{
 3
 4    int rtn;
 5    JointPos startjointPos = new JointPos(-11.904f, -99.669f, 117.473f, -108.616f, -91.726f, 74.256f);
 6    JointPos endjointPos = new JointPos(-45.615f, -106.172f, 124.296f, -107.151f, -91.282f, 74.255f);
 7
 8    DescPose startdescPose = new DescPose(-419.524f, -13.000f, 351.569f, -178.118f, 0.314f, 3.833f);
 9    DescPose enddescPose = new DescPose(-321.222f, 185.189f, 335.520f, -179.030f, -1.284f, -29.869f);
10
11    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
12    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
13    rtn = robot.AccSmoothStart(false);
14    Console.WriteLine("AccSmoothStart rtn is " + rtn);
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    rtn = robot.AccSmoothEnd(false);
18    Console.WriteLine("AccSmoothEnd rtn is " + rtn);
19}

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

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

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

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

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

 1private void button71_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    JointPos startjointPos = new JointPos(-11.904f, -99.669f, 117.473f, -108.616f, -91.726f, 74.256f);
 5    JointPos endjointPos = new JointPos(-45.615f, -106.172f, 124.296f, -107.151f, -91.282f, 74.255f);
 6
 7    DescPose startdescPose = new DescPose(-419.524f, -13.000f, 351.569f, -178.118f, 0.314f, 3.833f);
 8    DescPose enddescPose = new DescPose(-321.222f, 185.189f, 335.520f, -179.030f, -1.284f, -29.869f);
 9
10    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
11    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
12    rtn = robot.AngularSpeedStart(50);
13    Console.WriteLine("AngularSpeedStart rtn is " + rtn);
14    robot.MoveJ( startjointPos,  startdescPose, 0, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
15    robot.MoveJ( endjointPos,  enddescPose, 0, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
16    rtn = robot.AngularSpeedEnd();
17    Console.WriteLine("AngularSpeedEnd rtn is " + rtn);
18}

4.71. Rozpoczęcie ochrony przed osobliwą pozycją

Nowe w wersji C#SDK-v1.0.9.

1/**
2* @brief Rozpoczęcie ochrony przed osobliwą pozycją
3* @param [in] protectMode Tryb ochrony przed osobliwością, 0: tryb stawów; 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ą

Nowe w wersji C#SDK-v1.0.9.

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

4.73. Przykład kodu

Nowe w wersji C#SDK-v1.0.9.

 1private void btnTestSingularAvoidEArc_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    JointPos startjointPos = new JointPos(-11.904f, -99.669f, 117.473f, -108.616f, -91.726f, 74.256f);
 5    JointPos endjointPos = new JointPos(-45.615f, -106.172f, 124.296f, -107.151f, -91.282f, 74.255f);
 6
 7    DescPose startdescPose = new DescPose(-419.524f, -13.000f, 351.569f, -178.118f, 0.314f, 3.833f);
 8    DescPose enddescPose = new DescPose(-321.222f, 185.189f, 335.520f, -179.030f, -1.284f, -29.869f);
 9
10    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
11    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
12
13    rtn = robot.SingularAvoidStart(2, 10, 5, 5);
14    Console.WriteLine("SingularAvoidStart rtn is " + rtn);
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    rtn = robot.SingularAvoidEnd();
18    Console.WriteLine("SingularAvoidEnd rtn is " + rtn);
19}

4.74. Wyzwolenie sygnału bezpiecznego zatrzymania

1/**
2* @brief Sygnał wyzwolenia bezpiecznego zatrzymania
3* @return Kod błędu
4*/
5int GetSafetyCode();

4.75. Opróżnienie kolejki instrukcji ruchu

Nowe w wersji C#SDK-V1.1.9: Web-3.8.7

1/**
2* @brief Opróżnienie kolejki instrukcji ruchu
3* @return Kod błędu
4*/
5public int MotionQueueClear();

4.76. 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 i orientacje kartezjańskie 6 punktów nauczania rury głównej
 4* @param [in] mainExaxisPos Pozycje osi rozszerzonej dla 6 punktów nauczania rury głównej
 5* @param [in] piecePoint Pozycje i orientacje kartezjańskie 6 punktów nauczania rury pomocniczej
 6* @param [in] pieceExaxisPos Pozycje osi rozszerzonej dla 6 punktów nauczania rury łączącej
 7* @param [in] extAxisFlag Czy włączyć oś rozszerzoną; 0-nie włączaj; 1-włącz
 8* @param [in] exaxisPos Pozycja osi rozszerzonej punktu początkowego
 9* @param [in] tool Numer układu współrzędnych narzędzia
10* @param [in] wobj Numer układu współrzędnych 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 Przesunięcie
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.77. Ruch po linii przecięcia rur

 1/**
 2* @brief Ruch po linii przecięcia rur
 3* @param [in] mainPoint Pozycje i orientacje kartezjańskie 6 punktów nauczania rury głównej
 4* @param [in] mainExaxisPos Pozycje osi rozszerzonej dla 6 punktów nauczania rury głównej
 5* @param [in] piecePoint Pozycje i orientacje kartezjańskie 6 punktów nauczania rury pomocniczej
 6* @param [in] pieceExaxisPos Pozycje osi rozszerzonej dla 6 punktów nauczania rury łączącej
 7* @param [in] extAxisFlag Czy włączyć oś rozszerzoną; 0-nie włączaj; 1-włącz
 8* @param [in] exaxisPos Pozycja osi rozszerzonej punktu początkowego
 9* @param [in] tool Numer układu współrzędnych narzędzia
10* @param [in] wobj Numer układu współrzędnych 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 Przesunięcie
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.78. Przykład kodu ruchu po linii przecięcia rur robota

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

4.79. Ruch w miejscu pusty

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

4.80. Przykład kodu ruchu w miejscu pustego

1public void LaserSensorRecordandReplay()
2{
3    int rtn = robot.LaserSensorRecordandReplay(0, 10, 1, 0, 0.1, 1, 1, 10, 100);
4    Console.WriteLine($"LaserSensorRecordandReplay rtn is {rtn}");
5    rtn = robot.MoveStationary();
6    Console.WriteLine($"MoveStationary rtn is {rtn}");
7    rtn = robot.LaserSensorRecord1(0, 10);
8    Console.WriteLine($"LaserSensorRecord1 rtn is {rtn}");
9}

4.81. Rozpoczęcie oscylacji punktowej

1/**
2* @brief Rozpoczęcie oscylacji punktowej
3* @param [in] weaveNum Numer oscylacji [0-7]
4* @param [in] mode 0-układ współrzędnych 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 oscylacji [s]
7* @return Kod błędu
8*/
9public int OriginPointWeaveStart(int weaveNum, int mode, DescPose refPoint, double weaveTime);

4.82. Zakończenie oscylacji punktowej

1/**
2* @brief Zakończenie oscylacji punktowej
3* @return Kod błędu
4*/
5public int OriginPointWeaveEnd();

4.83. Przykład kodu SDK oscylacji punktowej

 1void TestOriginPointWeave()
 2{
 3    // Utwórz obiekt pozycji stawów
 4    JointPos j = new JointPos(39.886, -98.580, -124.032, -47.393, 90.000, 40.842);
 5    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
 6    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 7
 8    // Współrzędne punktu odniesienia
 9    DescPose refPoint = new DescPose(400.021, 300.022, 299.996, 179.997, -0.003, -90.956);
10
11    //// Pierwszy ruch
12    robot.MoveJ(j, 1, 0, 100, 100, 100, epos, -1, 0, offset_pos);
13
14    // Uruchom oscylację punktową (tryb 0)
15    robot.OriginPointWeaveStart(0, 0, refPoint, 3);
16    robot.MoveStationary();   // Wykonaj ruch stały (zakładając, że metoda istnieje)
17    robot.OriginPointWeaveEnd();
18
19    Thread.Sleep(2000);         // Odczekaj 2 sekundy
20
21    // Drugi ruch
22    robot.MoveJ(j, 1, 0, 100, 100, 100, epos, -1, 0, offset_pos);
23
24    // Uruchom oscylację punktową (tryb 1)
25    robot.OriginPointWeaveStart(0, 1, refPoint, 3);
26    robot.MoveStationary();
27    robot.OriginPointWeaveEnd();
28}

4.84. Przykład kodu SDK oscylacji punktowej (zawierającej laser i oś rozszerzoną)

 1void TestOriginPointWeave2()
 2{
 3    // Utwórz obiekt pozycji stawów
 4    JointPos j = new JointPos(39.886, -98.580, -124.032, -47.393, 90.000, 40.842);
 5    ExaxisPos epos1 = new ExaxisPos(0, 0, 0, 0);
 6    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 7    ExaxisPos epos2 = new ExaxisPos(5, 0.000, 0.000, 0.000);
 8
 9    // Współrzędne punktu odniesienia
10    DescPose refPoint = new DescPose(400.021, 300.022, 299.996, 179.997, -0.003, -90.956);
11
12    int rtn = 0;
13    robot.LaserTrackingSensorConfig("192.168.58.20", 5020);
14    robot.LaserTrackingSensorSamplePeriod(20);
15    robot.LoadPosSensorDriver(101);
16
17    // Załaduj sterownik UDP
18    robot.ExtDevLoadUDPDriver();
19
20    // Ustaw czas zakończenia polecenia zewnętrznej osi
21    rtn = robot.SetExAxisCmdDoneTime(5000.0);
22    Console.WriteLine("SetExAxisCmdDoneTime rtn is " + rtn);
23
24    // Załącz zewnętrzne osie 1 i 2
25    rtn = robot.ExtAxisServoOn(1, 1);
26    Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
27    rtn = robot.ExtAxisServoOn(2, 1);
28    Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
29    Thread.Sleep(2000);
30
31    // Ustaw powrót do zera zewnętrznej osi
32    robot.ExtAxisSetHoming(1, 0, 10, 2);
33    robot.LaserTrackingLaserOnOff(1);
34
35
36    //// 1---bez osi rozszerzonej
37    robot.LaserTrackingTrackOnOff(1, 4);
38    robot.Sleep(200);
39    // Uruchom oscylację punktową
40    robot.OriginPointWeaveStart(0, 0, refPoint, 10);
41    robot.MoveStationary();   // Wykonaj ruch stały
42    robot.OriginPointWeaveEnd();
43    robot.LaserTrackingTrackOnOff(0, 4);
44
45    Thread.Sleep(2000);         // Odczekaj 2 sekundy
46
47    //// 2----z osią rozszerzoną
48    robot.ExtAxisMove(epos1, 100, -1);
49    robot.LaserTrackingTrackOnOff(1, 4);
50    // Uruchom oscylację punktową
51    robot.OriginPointWeaveStart(0, 0, refPoint, 20);
52    robot.ExtAxisMove(epos2, 100, -1);
53    robot.OriginPointWeaveEnd();
54    robot.LaserTrackingTrackOnOff(0, 4);
55}

4.85. Ruch w trybie serwo prędkości w przestrzeni stawów

 1/**
 2* @brief  Ruch w trybie serwo prędkości w przestrzeni stawów
 3* @param  [in] joint_pos  6 docelowych prędkości stawów, jednostka deg/s
 4* @param  [in] axisPos  4 prędkości zewnętrznych osi, jednostka deg/s
 5* @param  [in] acc   Procent przyspieszenia, zakres [0~100], tymczasowo nieudostępnione, domyślnie 0
 6* @param  [in] vel   Procent prędkości, zakres [0~100], tymczasowo nieudostępnione, domyślnie 0
 7* @param  [in] cmdT   Okres wysyłania instrukcji, jednostka s, zalecany zakres [0.001~0.0016]
 8* @param  [in] filterT Czas filtrowania, jednostka s, tymczasowo nieudostępnione, domyślnie 0
 9* @param  [in] gain   Wzmacniacz proporcjonalny pozycji docelowej, tymczasowo nieudostępnione, domyślnie 0
10* @param  [in] id ID instrukcji servoJ, domyślnie 0
11* @param[in] 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, float acc, float vel, float cmdT, float filterT, float gain, int id = 0, int comType = 0)

4.86. Przykład kodu ruchu w trybie serwo prędkości w przestrzeni stawów

 1public int ServoJVtest()
 2{
 3    double[] joint_vel = new double[6] { 10, 0, 0, 0, 0, 0 };
 4    double[] exis_vel = new double[4] { 0, 0, 0, 0 };
 5    float acc = 0.0f;
 6    float vel = 0.0f;
 7    float cmdT = 0.01f;
 8    float filterT = 0.0f;
 9    float gain = 0.0f;
10    int cnt = 0;
11    while (cnt < 200)
12    {
13        int error = robot.ServoJV(joint_vel, exis_vel, acc, vel, cmdT, filterT, gain);
14        Console.WriteLine($"ServoJV rtn is {error}");
15        cnt++;
16    }
17    return 0;
18}

4.87. Rozpoczęcie sterowania MIT stawów

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

4.88. Zakończenie sterowania MIT stawów

1/**
2* @brief Zakończenie sterowania MIT stawów
3* @param [in]  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 = 0)

4.89. Sterowanie MIT stawów

 1/**
 2* @brief Sterowanie MIT stawów
 3* @param [in] posGain Wzmocnienie pozycji stawów j1~j6
 4* @param [in] desPos Oczekiwana pozycja stawów j1~j6, jednostka: deg
 5* @param [in] velGain Wzmocnienie prędkości stawów j1~j6
 6* @param [in] desVel Oczekiwana prędkość stawów j1~j6, jednostka: deg/s
 7* @param [in] torque_ff Moment przedni stawów j1~j6, jednostka: Nm
 8* @param [in] interval Okres instrukcji, jednostka s, zakres [0.001~0.008]
 9* @param [in]  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 = 0)

4.90. Przykład kodu sterowania MIT stawów

 1public int ServoMITtest()
 2{
 3    // Subskrypcja zwrotna
 4    robot.OnUdpFrameReceived += (comType, frameCount, frameCmdID, contentLen, content) =>
 5    {
 6        Console.WriteLine($"[UDP odpowiedź] comType={comType}, count={frameCount}, cmdID={frameCmdID}, content={content}");
 7    };
 8    while (true)
 9    {
10        robot.ResetAllError();
11        Thread.Sleep(500);
12
13        double[] posGain = new double[6] { 0, 0, 0, 0, 0, 0 };
14        double[] desPos = new double[6] { 0, 0, 0, 0, 0, 0 };
15        double[] velGain = new double[6] { 0, 0, 0, 0, 0, 0 };
16        double[] desVel = new double[6] { 0, 0, 0, 0, 0, 0 };
17        double[] torques = new double[6] { 0, 0, 0, 0, 0, 0 };
18        robot.GetJointTorques(1, torques);
19        Console.WriteLine($"111111");
20        //robot.ServoMITEnd(0);
21        robot.ServoMITStart(0);
22        Console.WriteLine($"ServoMITStart");
23        ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
24        robot.DragTeachSwitch(1);
25        Console.WriteLine($"DragTeachSwitch");
26        double intev = 0.008;
27        double[] jPowerLimit = new double[6] { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
28        double[] jVelLimit = new double[6] { 50, 50, 50, 50, 50, 50 };
29        int error = 0;
30        while (true)
31        {
32
33            torques[5] = 0.03;
34            Console.WriteLine($"ServoMIT call ");
35            error = robot.ServoMIT(posGain, desPos, velGain, desVel, torques, intev, 0);
36
37            Console.WriteLine($"ServoMIT111111 rtn is {error}");
38            Thread.Sleep(1);
39
40            robot.GetRobotRealTimeState(ref pkg);
41            //Console.WriteLine($"maincode {pkg.main_code}, subcode {pkg.sub_code}");
42            Console.WriteLine($"pkg.jt_cur_pos[5]:{pkg.jt_cur_pos[5]}");
43            if (pkg.jt_cur_pos[5] > 30)
44            {
45                break;
46            }
47        }
48
49        while (true)
50        {
51
52            torques[5] = -0.03;
53            error = robot.ServoMIT(posGain, desPos, velGain, desVel, torques, intev, 0);
54
55            Console.WriteLine($"ServoJT222222 rtn is {error}");
56            Thread.Sleep(1);
57
58            robot.GetRobotRealTimeState(ref pkg);
59            //Console.WriteLine($"maincode {pkg.main_code}, subcode {pkg.sub_code}");
60            Console.WriteLine($"pkg.jt_cur_pos[5]:{pkg.jt_cur_pos[5]}");
61            if (pkg.jt_cur_pos[5] < 0)
62            {
63                break;
64            }
65        }
66
67        robot.DragTeachSwitch(0);
68        error = robot.ServoMITEnd(0);
69    }
70    return 0;
71}