1. Przedmowa
fairino_hardware to interfejs API opracowany przez FAIRINO dla robota współpracującego w oparciu o ROS2, mający na celu umożliwienie użytkownikom początkującym łatwiejszego korzystania z SDK FAIRINO. Dzięki plikowi konfiguracyjnemu parametrów, który umożliwia konfigurację domyślnych parametrów, można dostosować się do różnych wymagań klienta.
2. fairino_hardware
W tym rozdziale opisano, jak skonfigurować środowisko uruchomieniowe aplikacji.
2.1. Instalacja podstawowego środowiska
Zaleca się używanie systemu Ubuntu 22.04 LTS (Jammy). Po zakończeniu instalacji systemu należy zainstalować ROS2. Zalecana wersja to ros2-humble. Pełną instrukcję instalacji ROS2 można znaleźć pod adresem: https://docs.ros.org/en/humble/index.html. Przed właściwą kompilacją fairino_hardware należy również zainstalować oficjalny pakiet ros2_control. Pełną instrukcję instalacji ros2_control można znaleźć pod adresem: https://control.ros.org/humble/index.html. Oficjalna strona oferuje dwa sposoby instalacji ros2_control: instalację za pomocą poleceń oraz instalację poprzez kompilację źródeł. Ponieważ instalacja za pomocą poleceń może prowadzić do niepełnej instalacji pakietów funkcjonalnych, zaleca się użycie metody kompilacji źródeł.
Poniżej szczegółowo opisano proces instalacji ROS2 (humble):
Otwórz okno shell
1locale # check for UTF-8
2
3sudo apt update && sudo apt install locales
4sudo locale-gen en_US en_US.UTF-8
5sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
6export LANG=en_US.UTF-8
7
8locale # verify settings
Ustaw źródła
1sudo apt install software-properties-common
2sudo add-apt-repository universe
3
4sudo apt update && sudo apt install curl -y
5sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
6
7echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
Zainstaluj ROS2
1sudo apt update
2sudo apt upgrade
3sudo apt install ros-humble-desktop
Na koniec zainstaluj narzędzia deweloperskie
1sudo apt install ros-dev-tools
Poniżej szczegółowo opisano proces instalacji ros2_control:
Najpierw source zasobów ROS2
1source /opt/ros/humble/setup.bash
Utwórz obszar roboczy ros2_control i pobierz zasoby
1mkdir -p ~/ros2_control_ws/src
2cd ~/ros2_control_ws/
3wget https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/ros_controls.$ROS_DISTRO.repos
4vcs import src < ros_controls.$ROS_DISTRO.repos
Zainstaluj pakiety zależności
1rosdep update --rosdistro=$ROS_DISTRO
2sudo apt-get update
3rosdep install --from-paths src --ignore-src -r -y
Skompiluj ros2_control
1. /opt/ros/${ROS_DISTRO}/setup.sh
2colcon build --symlink-install
2.2. Kompilacja i budowanie fairino_hardware
1. Utwórz obszar roboczy colcon fairino_hardware składa się z dwóch pakietów funkcjonalnych: pakietu funkcjonalnego niestandardowych struktur danych fairino_msgs oraz pakietu funkcjonalnego głównego programu fairino_hardware. Po zainstalowaniu podstawowego środowiska, najpierw utwórz obszar roboczy colcon, na przykład:
Najpierw należy source zasobów ROS2 i ros2_control
1source /opt/ros/humble/setup.bash
2source ~/ros2_control_ws/install/setup.bash
Następnie utwórz obszar roboczy
1cd ~/
2mkdir -p ros2_ws/src
2. Skompiluj pakiety funkcjonalne Skopiuj kod pakietu instalacyjnego do katalogu ros2_ws/src, a następnie w katalogu ros2_ws uruchom następujące polecenia:
1source ~/ros2_control_ws/install/setup.bash
Po zakończeniu powyższego polecenia uruchom następujące polecenie:
1colcon build --packages-select fairino_msgs
Po zakończeniu kompilacji poprzedniego polecenia, użyj następującego polecenia do kompilacji fairino_hardware:
1colcon build --packages-select fairino_hardware
3. Szybki start
3.1. Proces uruchamiania
W terminalu Ubuntu wpisz:
1cd ros2_ws
2source install/setup.bash
3ros2 run fairino_hardware ros2_cmd_server
3.2. Proces przeglądania informacji zwrotnej o stanie ramienia mechanicznego
Informacja zwrotna o stanie ramienia mechanicznego jest publikowana przez topic. Użytkownik może zaobserwować odświeżanie danych stanu za pomocą wbudowanych poleceń ros2, może również napisać program w celu pobrania tych danych. Poniżej przedstawiono, jak zaobserwować dane stanu ramienia mechanicznego za pomocą poleceń ros2.
W terminalu Ubuntu wpisz:
1cd ros2_ws
2source install/setup.bash
3ros2 topic echo /nonrt_state_data
W oknie terminalu można zobaczyć ciągle odświeżające się dane stanu, jak pokazano na poniższym rysunku.
3.3. Proces wysyłania instrukcji
W terminalu Ubuntu wpisz:
1cd ros2_ws
2source install/setup.bash
3rqt
Po wykonaniu powyższych poleceń zostanie wywołany interfejs GUI rqt, jak pokazano na poniższym rysunku.
W interfejsie GUI wybierz plugins -> service -> service caller, aby wywołać następujący interfejs. Wybierz usługę /fairino_remote_command_service. W polu expression wprowadź ciąg instrukcji i kliknij Call. W dolnym oknie dialogowym pojawi się odpowiedź.
Ważne
Opis zasad dotyczących wprowadzanego ciągu znaków:
Program wewnętrznie filtruje formę wprowadzonego ciągu znaków. Format wprowadzanej funkcji musi mieć postać [nazwa_funkcji](), a ciąg parametrów w nawiasach okrągłych może składać się wyłącznie z liter, cyfr, przecinków i znaku minus. Pojawienie się innych znaków lub spowoduje błąd.
Opis wartości zwrotnych instrukcji:
Z wyjątkiem instrukcji GET, która zwraca ciąg znaków, wartości zwrotne pozostałych funkcji są typu int. Zazwyczaj 0 oznacza błąd, 1 oznacza prawidłowe wykonanie. W przypadku pojawienia się innych wartości, należy odnieść się do kodów błędów zdefiniowanych w SDK xmlrpc.
3.4. Proces modyfikacji parametrów
Ponieważ uproszczone SDK jest ulepszeniem natywnego interfejsu SDK, uproszczenie polega na nadaniu pewnym parametrom wartości domyślnych. W praktyce mogą jednak wystąpić sytuacje, w których domyślne parametry nie spełniają wymagań. W takim przypadku można zmodyfikować wartości odpowiednich parametrów domyślnych, a następnie załadować je do węzła.
W plikach źródłowych znajduje się plik parametrów fairino_remotecmdinterface_para.yaml. Parametry w tym pliku są wstępnie ustawionymi wartościami domyślnymi, służącymi do uproszczenia parametrów wejściowych instrukcji. Można je modyfikować zgodnie z własnymi potrzebami, a następnie użyć polecenia do dynamicznej modyfikacji parametrów: ros2 param load fr_command_server ~/ros2_ws/src/fairino_hardware/fairino_remotecmdinterface_para.yaml.
4. Opis API
1/*
2Opis funkcji: Zapisuje informację o punkcie stawowym
3id - numer ID zapisywanego punktu, zaczynając od 1. Uwaga: ten ID jest niezależny od ID punktu CARTPoint
4double j1-j6 - pozycje 6 stawów, jednostka: stopnie
5*/
6int JNTPoint(int id, double j1, double j2, double j3, double j4, double j5, double j6)
7// Przykład
8JNTPoint(1,10,11,12,13,14,15)
9
10/*
11Opis funkcji: Zapisuje informację o punkcie kartezjańskim
12id - numer ID zapisywanego punktu, zaczynając od 1. Uwaga: ten ID jest niezależny od ID punktu JNTPoint
13double x,y,z,rx,ry,rz - informacja o punkcie kartezjańskim, jednostka pozycji: mm, jednostka kąta: stopnie
14*/
15int CARTPoint(int id, double x,y,z,rx,ry,rz)//Zapisuje punkt w przestrzeni kartezjańskiej
16// Przykład
17CARTPoint(1,100,110,200,0,0,0)
18
19/*
20Opis funkcji: Pobiera informację o punkcie stawowym lub kartezjańskim o określonym numerze
21string name - 'JNT' lub 'CART', JNT oznacza pobranie informacji o punkcie stawowym, 'CART' oznacza pobranie informacji o punkcie kartezjańskim
22int id - ID punktu, zaczynając od 1
23*/
24string GET(string name, int id)//Pobiera treść punktu o odpowiednim numerze ID, name może być JNT lub CART
25// Przykład
26GET(JNT,1)
27
28/*
29Opis funkcji: Przełącznik trybu przeciągania
30uint8_t state - 1-włącz tryb przeciągania, 0-wyłącz tryb przeciągania
31*/
32int DragTeachSwitch(uint8_t state)
33// Przykład
34DragTeachSwitch(0)
35
36/*
37Opis funkcji: Przełącznik załączenia ramienia mechanicznego
38uint8_t state - 1-załącz ramię mechaniczne, 0-odłącz ramię mechaniczne
39*/
40int RobotEnable(uint8_t state)
41// Przykład
42RobotEnable(1)
43
44/*
45Opis funkcji: Przełączanie trybu
46uint8_t state - 1-tryb ręczny, 0-tryb automatyczny
47*/
48int Mode(uint8_t state)
49// Przykład
50Mode(1)
51
52/*
53Opis funkcji: Ustawia prędkość ramienia mechanicznego w bieżącym trybie
54float vel - procent prędkości, zakres 1-100
55*/
56int SetSpeed(float vel)
57// Przykład
58SetSpeed(10)
59
60/*
61Opis funkcji: Ustawia i ładuje układ współrzędnych narzędzia o określonym numerze
62int id - numer układu współrzędnych narzędzia, zakres 1-15
63float x,y,z,rx,ry,rz - informacja o przesunięciu układu współrzędnych narzędzia
64*/
65int SetToolCoord(int id, float x,float y, float z,float rx,float ry,float rz)
66// Przykład
67SetToolCoord(1,0,0,0,0,0,0)
68
69/*
70Opis funkcji: Ustawia listę układów współrzędnych narzędzia
71int id - numer układu współrzędnych narzędzia, zakres 1-15
72float x,y,z,rx,ry,rz - informacja o przesunięciu układu współrzędnych narzędzia
73*/
74int SetToolList(int id, float x,float y, float z,float rx,float ry,float rz );
75// Przykład
76SetToolList(1,0,0,0,0,0,0)
77
78/*
79Opis funkcji: Ustawia zewnętrzny układ współrzędnych narzędzia
80int id - numer układu współrzędnych narzędzia, zakres 1-15
81float x,y,z,rx,ry,rz - informacja o przesunięciu zewnętrznego układu współrzędnych narzędzia
82*/
83int SetExToolCoord(int id, float x,float y, float z,float rx,float ry,float rz);
84// Przykład
85SetExToolCoord(1,0,0,0,0,0,0)
86
87/*
88Opis funkcji: Ustawia listę zewnętrznych układów współrzędnych narzędzia
89int id - numer układu współrzędnych narzędzia, zakres 1-15
90float x,y,z,rx,ry,rz - informacja o przesunięciu zewnętrznego układu współrzędnych narzędzia
91*/
92int SetExToolList(int id, float x,float y, float z,float rx,float ry,float rz);
93// Przykład
94SetExToolList(1,0,0,0,0,0,0)
95
96/*
97Opis funkcji: Ustawia układ współrzędnych przedmiotu
98int id - numer układu współrzędnych przedmiotu, zakres 1-15
99float x,y,z,rx,ry,rz - informacja o przesunięciu układu współrzędnych przedmiotu
100*/
101int SetWObjCoord(int id, float x,float y, float z,float rx,float ry,float rz);
102// Przykład
103SetWObjCoord(1,0,0,0,0,0,0)
104
105/*
106Opis funkcji: Ustawia listę układów współrzędnych przedmiotu
107int id - numer układu współrzędnych przedmiotu, zakres 1-15
108float x,y,z,rx,ry,rz - informacja o przesunięciu układu współrzędnych przedmiotu
109*/
110int SetWObjList(int id, float x,float y, float z,float rx,float ry,float rz);
111// Przykład
112SetWObjList(1,0,0,0,0,0,0)
113
114/*
115Opis funkcji: Ustawia masę ładunku końcowego
116float weight - masa ładunku, jednostka kg
117*/
118int SetLoadWeight(float weight);
119// Przykład
120SetLoadWeight(3.5)
121
122/*
123Opis funkcji: Ustawia współrzędne środka ciężkości ładunku końcowego
124float x,y,z - współrzędne środka ciężkości, jednostka mm
125*/
126int SetLoadCoord(float x,float y,float z);
127// Przykład
128SetLoadCoord(10,20,30)
129
130/*
131Opis funkcji: Ustawia sposób instalacji robota
132uint8_t install - sposób instalacji, 0-instalacja normalna, 1-instalacja boczna, 2-instalacja odwrócona
133*/
134int SetRobotInstallPos(uint8_t install);
135// Przykład
136SetRobotInstallPos(0)
137
138/*
139Opis funkcji: Ustawia kąt instalacji robota, instalacja swobodna
140double yangle - kąt nachylenia
141double zangle - kąt obrotu
142*/
143int SetRobotInstallAngle(double yangle,double zangle);
144// Przykład
145SetRobotInstallAngle(90,0)
146
147
148// Konfiguracja bezpieczeństwa
149/*
150Opis funkcji: Ustawia poziom kolizji robota
151float level1-level6 - poziom kolizji dla osi 1-6, zakres 1-10
152*/
153int SetAnticollision(float level1, float level2, float level3, float level4, float level5, folat level6);
154// Przykład
155SetAnticollision(1,1,1,1,1,1)
156
157/*
158 * @brief Ustawia strategię po kolizji
159 * @param [in] strategy 0-zatrzymaj z błędem, 1-kontynuuj działanie
160 * @param [in] safeTime Czas bezpiecznego zatrzymania [1000 - 2000] ms
161 * @param [in] safeDistance Odległość bezpiecznego zatrzymania [1-150] mm
162 * @param [in] safeVel Prędkość bezpieczeństwa [50-250] mm/s
163 * @param [in] safetyMargin Współczynnik bezpieczeństwa j1-j6 [1-10]
164 * @return Kod błędu
165*/
166 int SetCollisionStrategy(int strategy, int safeTime, int safeDistance, int safeVel, int safetyMargin[])
167// Przykład
168SetCollisionStrategy(1)
169
170/*
171 * @brief Ustawia metodę wykrywania kolizji robota
172 * @param [in] method Metoda wykrywania kolizji: 0-tryb prądowy; 1-podwójny enkoder; 2-tryb prądowy i podwójny enkoder włączone jednocześnie
173 * @param [in] thresholdMode Sposób progu poziomu kolizji; 0-stały próg poziomu kolizji; 1-niestandardowy próg wykrywania kolizji
174 * @return Kod błędu
175*/
176 int SetCollisionDetectionMethod(int method, int thresholdMode);
177// Przykład
178SetCollisionDetectionMethod(0,0)
179
180
181/*
182 * @brief Ustawia włączanie/wyłączanie wykrywania kolizji w stanie spoczynku
183 * @param [in] status 0-wyłączone; 1-włączone
184 * @return Kod błędu
185*/
186 int SetStaticCollisionOnOff(int status);
187// Przykład
188SetStaticCollisionOnOff(1)
189
190
191
192/*
193 * @brief Wykrywanie momentu obrotowego i mocy stawu
194 * @param [in] status 0-wyłączone; 1-włączone
195 * @param [in] power Ustawiona maksymalna moc (W)
196 * @return Kod błędu
197*/
198 int SetPowerLimit(int status, double power);
199//Przykład
200SetPowerLimit(1,100)
201
202/*
203 * @brief Konfiguruje czujnik siły
204 * @param [in] company Producent czujnika siły, 17-Kunwei Technology, 19-Chińskie Akademia Technologii Kosmicznych, 20-ATI sensor, 21-Zhongke Midian, 22-Weihang Minxin, 23-NBIT, 24-Xinjingcheng (XJC), 26-NSR
205 * @param [in] device Numer urządzenia, Kunwei(0-KWR75B), Chińska Akademia Technologii Kosmicznych(0-MCS6A-200-4), ATI(0-AXIA80-M8), Zhongke Midian(0-MST2010), Weihang Minxin(0-WHC6L-YB-10A), NBIT(0-XLH93003ACS), Xinjingcheng XJC(0-XJC-6F-D82), NSR(0-NSR-FTSensorA)
206 * @param [in] softvesion Numer wersji oprogramowania, tymczasowo nieużywane, domyślnie 0
207 * @param [in] bus Pozycja magistrali, na której zawieszono urządzenie, tymczasowo nieużywane, domyślnie 0
208 * @return Kod błędu
209*/
210 int FT_SetConfig(int company, int device, int softvesion, int bus);
211// Przykład
212FT_SetConfig(0,1,0,0)
213
214
215
216/*
217 * @brief Pobiera konfigurację czujnika siły
218 * @param [out] company Producent czujnika siły, do ustalenia
219 * @param [out] device Numer urządzenia, tymczasowo nieużywane, domyślnie 0
220 * @param [out] softvesion Numer wersji oprogramowania, tymczasowo nieużywane, domyślnie 0
221 * @param [out] bus Pozycja magistrali, na której zawieszono urządzenie, tymczasowo nieużywane, domyślnie 0
222 * @return Kod błędu
223*/
224 int FT_GetConfig(int *company, int *device, int *softvesion, int *bus);
225// Przykład
226FT_GetConfig()
227
228
229/*
230 * @brief Aktywacja czujnika siły
231 * @param [in] act 0-reset, 1-aktywacja
232 * @return Kod błędu
233*/
234 int FT_Activate(uint8_t act);
235// Przykład
236FT_Activate(1)
237
238
239/*
240 * @brief Zerowanie czujnika siły
241 * @param [in] act 0-usunięcie zera, 1-korekta zera
242 * @return Kod błędu
243*/
244 int FT_SetZero(uint8_t act);
245// Przykład
246FT_SetZero(1)
247
248/*
249 * @brief Ochrona przed kolizją
250 * @param [in] flag 0-wyłącz ochronę przed kolizją, 1-włącz ochronę przed kolizją
251 * @param [in] sensor_id Numer czujnika siły
252 * @param [in] select Wybór, czy sześć stopni swobody ma wykrywać kolizję, 0-nie wykrywa, 1-wykrywa
253 * @param [in] ft Siła/moment kolizji, fx, fy, fz, tx, ty, tz
254 * @param [in] max_threshold Maksymalny próg
255 * @param [in] min_threshold Minimalny próg
256 * @note Zakres wykrywania siły/momentu: (ft - min_threshold, ft + max_threshold)
257 * @return Kod błędu
258*/
259 int FT_Guard(uint8_t flag, int sensor_id, uint8_t select[6], ForceTorque *ft, float max_threshold[6], float min_threshold[6]);
260// Przykład
261FT_Guard(1,1,0,0,1,0,0,0,0,0,100,0,0,0,0,0,200,0,0,0,0,0,50,0,0,0)
262
263
264/*
265 * @brief Sterowanie stałą siłą
266 * @param [in] flag 0-wyłącz sterowanie stałą siłą, 1-włącz sterowanie stałą siłą
267 * @param [in] sensor_id Numer czujnika siły
268 * @param [in] select Wybór, czy sześć stopni swobody ma wykrywać kolizję, 0-nie wykrywa, 1-wykrywa
269 * @param [in] ft Siła/moment kolizji, fx, fy, fz, tx, ty, tz
270 * @param [in] ft_pid Parametry pid siły, parametry pid momentu
271 * @param [in] adj_sign Sterowanie uruchamianiem/zatrzymywaniem adaptacji, 0-wyłączone, 1-włączone
272 * @param [in] ILC_sign Sterowanie uruchamianiem/zatrzymywaniem ILC, 0-zatrzymaj, 1-trening, 2-praktyka
273 * @param [in] max_dis Maksymalna odległość regulacji, jednostka mm
274 * @param [in] max_ang Maksymalny kąt regulacji, jednostka deg
275 * @param [in] filter_Sign Znacznik włączenia filtrowania 0-wył.; 1-wł., domyślnie wyłączone
276 * @param [in] posAdapt_sign Znacznik włączenia zgodności orientacji 0-wył.; 1-wł., domyślnie wyłączone
277 * @param [in] isNoBlock Znacznik blokowania, 0-blokujące; 1-nieblokujące
278 * @return Kod błędu
279*/
280 int FT_Control(uint8_t flag, int sensor_id, uint8_t select[6], ForceTorque *ft, float ft_pid[6], uint8_t adj_sign, uint8_t ILC_sign, float max_dis, float max_ang, int filter_Sign = 0, int posAdapt_sign = 0, int isNoBlock = 0);
281// Przykład
282FT_Control(1,1,0,0,1,0,0,0,0,0,-10,0,0,0,0.0005,0,0,0,0,0,0,0,100,10,0,0,0)
283
284
285/*
286 * @brief Włączenie sterowania podatnego
287 * @param [in] p Współczynnik regulacji pozycji lub współczynnik podatności
288 * @param [in] force Próg siły włączenia podatności, jednostka N
289 * @return Kod błędu
290*/
291 int FT_ComplianceStart(float p, float force);
292// Przykład
293FT_ComplianceStart(0.005,20)
294
295
296/**
297 * @brief Wyłączenie sterowania podatnego
298 * @return Kod błędu
299*/
300 int FT_ComplianceStop();
301// Przykład
302FT_ComplianceStop()
303
304/*
305Opis funkcji: Ustawia dodatni limit, uwaga: ustawiona wartość musi mieścić się w zakresie twardego limitu
306float limit1-limit6 - wartości limitu dla 6 stawów
307*/
308int SetLimitPositive(float limit1, float limit2, float limit3, float limit4, float limit5, float limit6);
309// Przykład
310SetLimitPositive(100,90,90,90,90,90)
311
312/*
313Opis funkcji: Ustawia ujemny limit, uwaga: ustawiona wartość musi mieścić się w zakresie twardego limitu
314float limit1-limit6 - wartości limitu dla 6 stawów
315*/
316int SetLimitNegative(float limit1, float limit2, float limit3, float limit4, float limit5, float limit6);
317// Przykład
318SetLimitNegative(-100,-90,-90,-90,-90,-90)
319
320/*
321Opis funkcji: Czyszczenie stanu błędu
322*/
323int ResetAllError();
324
325/*
326Opis funkcji: Przełącznik kompensacji tarcia stawów
327uint8_t state - 0-wył., 1-wł.
328*/
329int FrictionCompensationOnOff(uint8_t state);
330// Przykład
331FrictionCompensationOnOff(1)
332
333/*
334Opis funkcji: Ustawia współczynnik kompensacji tarcia stawów - instalacja normalna
335float coeff1-coeff6 - współczynniki kompensacji dla 6 stawów, zakres 0-1
336*/
337int SetFrictionValue_level(float coeff1,float coeff1,float coeff3,float coeff4,float coeff5,float coeff6);
338// Przykład
339SetFrictionValue_level(1,1,1,1,1,1)
340
341/*
342Opis funkcji: Ustawia współczynnik kompensacji tarcia stawów - instalacja boczna
343float coeff1-coeff6 - współczynniki kompensacji dla 6 stawów, zakres 0-1
344*/
345int SetFrictionValue_wall(float coeff1,float coeff1,float coeff3,float coeff4,float coeff5,float coeff6);
346// Przykład
347SetFrictionValue_wall(0.5,0.5,0.5,0.5,0.5,0.5)
348
349/*
350Opis funkcji: Ustawia współczynnik kompensacji tarcia stawów - instalacja odwrócona
351float coeff1-coeff6 - współczynniki kompensacji dla 6 stawów, zakres 0-1
352*/
353int SetFrictionValue_ceiling(float coeff1,float coeff1,float coeff3,float coeff4,float coeff5,float coeff6);
354// Przykład
355SetFrictionValue_ceiling(0.5,0.5,0.5,0.5,0.5,0.5)
356
357
358// Sterowanie urządzeniami peryferyjnymi
359/*
360Opis funkcji: Aktywacja chwytaka
361int index - numer chwytaka
362uint8_t act - 0-reset, 1-aktywacja
363*/
364int ActGripper(int index,uint8_t act);
365// Przykład
366ActGripper(1,1)
367
368/*
369Opis funkcji: Sterowanie chwytakiem
370int index - numer chwytaka
371int pos - procent pozycji, zakres 0-100
372*/
373int MoveGripper(int index,int pos);
374// Przykład
375MoveGripper(1,10)
376
377
378// Sterowanie I/O
379/*
380Opis funkcji: Ustawia wyjście cyfrowe skrzynki sterowniczej
381int id - numer I/O, zakres 0-15
382uint8_t status - 0-wył., 1-wł.
383*/
384int SetDO(int id,uint8_t status);
385// Przykład
386SetDO(1,1)
387
388/*
389Opis funkcji: Ustawia wyjście cyfrowe narzędzia
390int id - numer I/O, zakres 0-1
391uint8_t status - 0-wył., 1-wł.
392*/
393int SetToolDO(int id,uint8_t status);
394// Przykład
395SetToolDO(0,1)
396
397/*
398Opis funkcji: Ustawia wyjście analogowe skrzynki sterowniczej
399int id - numer I/O, zakres 0-1
400float value - procent wartości prądu lub napięcia, zakres 0-100
401*/
402int SetAO(int id,float value);
403// Przykład
404SetAO(1,100)
405
406/*
407Opis funkcji: Ustawia wyjście analogowe narzędzia
408int id - numer I/O, zakres 0
409float value - procent wartości prądu lub napięcia, zakres 0-100
410*/
411int SetToolAO(int id,float value);
412// Przykład
413SetToolAO(0,100)
414
415
416// Instrukcje ruchu
417/*
418Opis funkcji: Punktowanie robota
419uint8_t ref - 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
420uint8_t 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)
421uint8_t dir - 0-kierunek ujemny, 1-kierunek dodatni
422float vel - procent prędkości, zakres 0-100
423*/
424int StartJOG(uint8_t ref, uint8_t nb, uint8_t dir, float vel);
425// Przykład
426StartJOG(1,1,1,10)
427
428/*
429Opis funkcji: Zatrzymanie punktowania robota
430uint8_t ref - 0-zatrzymanie punktowania stawów, 2-zatrzymanie punktowania w podstawowym układzie współrzędnych, 4-zatrzymanie punktowania w układzie współrzędnych narzędzia, 8-zatrzymanie punktowania w układzie współrzędnych przedmiotu
431*/
432int StopJOG(uint8_t ref);
433// Przykład
434StopJOG(1)
435
436/*
437Opis funkcji: Natychmiastowe zatrzymanie punktowania robota
438*/
439int ImmStopJOG();
440
441/*
442Opis funkcji: Ruch w przestrzeni stawów
443string point_name - nazwa wstępnie zapisanego punktu, np. JNT1 oznacza punkt stawowy o numerze 1, CART1 oznacza punkt kartezjański o numerze 1. Instrukcja MoveJ obsługuje wprowadzanie punktów stawowych lub kartezjańskich. Należy pamiętać, że instrukcja MoveJ zawiera w parametrach domyślnych określony układ współrzędnych narzędzia i układ współrzędnych przedmiotu. Jeśli numery tych układów są niezgodne z aktualnie załadowanymi, instrukcja spowoduje błąd. Należy zmodyfikować parametry układów współrzędnych w parametrach domyślnych i załadować parametry przed uruchomieniem tej instrukcji ruchu.
444float vel - procent prędkości instrukcji, zakres 0-100
445int tool - numer układu współrzędnych narzędzia
446int user - numer układu współrzędnych przedmiotu
447double expos1 - pozycja zewnętrznej osi 1
448double expos2 - pozycja zewnętrznej osi 2
449double expos3 - pozycja zewnętrznej osi 3
450double expos4 - pozycja zewnętrznej osi 4
451*/
452int MoveJ(string point_name, float vel, int tool, int user, double expos1, double expos2, double expos3, double expos4);//point_name to wprowadzona wstępnie zapisana informacja o punkcie
453// Przykład
454MoveJ(JNT1,10,1,1,0,0,0,0)
455
456/*
457Opis funkcji: Ruch liniowy w przestrzeni kartezjańskiej
458string point_name - nazwa wstępnie zapisanego punktu, np. JNT1 oznacza punkt stawowy o numerze 1, CART1 oznacza punkt kartezjański o numerze 1. Instrukcja MoveL obsługuje wprowadzanie punktów stawowych lub kartezjańskich. Należy pamiętać, że instrukcja MoveL zawiera w parametrach domyślnych określony układ współrzędnych narzędzia i układ współrzędnych przedmiotu. Jeśli numery tych układów są niezgodne z aktualnie załadowanymi, instrukcja spowoduje błąd. Należy zmodyfikować parametry układów współrzędnych w parametrach domyślnych i załadować parametry przed uruchomieniem tej instrukcji ruchu.
459float vel - procent prędkości instrukcji, zakres 0-100
460int tool - numer układu współrzędnych narzędzia
461int user - numer układu współrzędnych przedmiotu
462double expos1 - pozycja zewnętrznej osi 1
463double expos2 - pozycja zewnętrznej osi 2
464double expos3 - pozycja zewnętrznej osi 3
465double expos4 - pozycja zewnętrznej osi 4
466*/
467int MoveL(string point_name, float vel, int tool, int user, double expos1, double expos2, double expos3, double expos4);
468// Przykład
469MoveL(CART1,10,1,1,0,0,0,0)
470
471/*
472Opis funkcji: Ruch łukowy w przestrzeni kartezjańskiej
473string point1_name, point2_name - nazwy wstępnie zapisanych punktów, np. JNT1 oznacza punkt stawowy o numerze 1, CART1 oznacza punkt kartezjański o numerze 1. Instrukcja MoveC obsługuje wprowadzanie punktów stawowych lub kartezjańskich, ale oba punkty muszą być tego samego typu, tzn. nie obsługuje wprowadzenia pierwszego punktu jako punktu stawowego, a drugiego jako punktu kartezjańskiego. Należy pamiętać, że instrukcja MoveC zawiera w parametrach domyślnych określony układ współrzędnych narzędzia i układ współrzędnych przedmiotu. Jeśli numery tych układów są niezgodne z aktualnie załadowanymi, instrukcja spowoduje błąd. Należy zmodyfikować parametry układów współrzędnych w parametrach domyślnych i załadować parametry przed uruchomieniem tej instrukcji ruchu.
474float vel - procent prędkości instrukcji, zakres 0-100
475int tool - numer układu współrzędnych narzędzia
476int user - numer układu współrzędnych przedmiotu
477double expos1 - pozycja zewnętrznej osi 1 dla punktu 1
478double expos2 - pozycja zewnętrznej osi 2 dla punktu 1
479double expos3 - pozycja zewnętrznej osi 3 dla punktu 1
480double expos4 - pozycja zewnętrznej osi 4 dla punktu 1
481double expos1 - pozycja zewnętrznej osi 1 dla punktu 2
482double expos2 - pozycja zewnętrznej osi 2 dla punktu 2
483double expos3 - pozycja zewnętrznej osi 3 dla punktu 2
484double expos4 - pozycja zewnętrznej osi 4 dla punktu 2
485*/
486int MoveC(string point1_name, string point2_name, float vel, int tool, int user, double expos1, double expos2, double expos3, double expos4, double expos1, double expos2, double expos3, double expos4);
487// Przykład
488MoveC(JNT1,JNT2,10,1,1,0,0,0,0,0,0,0,0)
489
490/*
491Opis funkcji: Rozpoczęcie ruchu po krzywej średniej
492*/
493int SplineStart();
494
495/*
496Opis funkcji: Ruch po krzywej średniej w przestrzeni stawów. Instrukcja obsługuje tylko wprowadzanie danych stawowych, takich jak JNT1. Wprowadzenie punktu kartezjańskiego spowoduje błąd.
497string point_name - nazwa wstępnie zapisanego punktu, np. JNT1 oznacza punkt stawowy o numerze 1.
498float vel - procent prędkości, zakres 0-100
499*/
500int SplinePTP(string point_name, float vel);
501// Przykład
502SplinePTP(JNT2,10)
503
504/*
505Opis funkcji: Zakończenie ruchu po krzywej średniej
506*/
507int SplineEnd();
508
509/*
510Opis funkcji: Rozpoczęcie ruchu po krzywej średniej w przestrzeni kartezjańskiej
511uint8_t ctlpoint - 0-trajektoria przechodzi przez punkty ścieżki, 1-trajektoria nie przechodzi przez punkty sterujące, wymagane co najmniej 4 punkty
512*/
513int NewSplineStart(uint8_t ctlpoint);
514// Przykład
515NewSplineStart(1)
516
517/*
518Opis funkcji: Ruch po krzywej średniej w przestrzeni kartezjańskiej. Można wprowadzać tylko punkty kartezjańskie, takie jak CART1. Wprowadzenie punktu stawowego spowoduje błąd.
519string point_name - nazwa wstępnie zapisanego punktu, np. CART1 oznacza punkt kartezjański o numerze 1.
520float vel - procent prędkości, zakres 0-100
521int lastflag - 0-nie jest ostatnim punktem, 1-jest ostatnim punktem
522*/
523int NewSplinePoint(string point_name, float vel, int lastflag);
524// Przykład
525NewSplinePoint(JNT2,20,0)
526
527/*
528Opis funkcji: Zakończenie ruchu po krzywej średniej w przestrzeni kartezjańskiej
529*/
530int NewSplineEnd();
531
532/*
533Opis funkcji: Zatrzymanie ruchu
534*/
535int StopMotion();
536
537/*
538Opis funkcji: Rozpoczęcie globalnego przesunięcia punktów
539int 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
540double x,y,z,rx,ry,rz - wartość przesunięcia pozycji i orientacji
541*/
542int PointsOffsetEnable(int flag, double x, double y, double z, double rx, double ry, double rz);
543// Przykład
544PointsOffsetEnable(1,10,10,10,0,0,0)
545
546/*
547Opis funkcji: Zakończenie globalnego przesunięcia punktów
548*/
549int PointsOffsetDisable();