1. Prefácio
O fairino_hardware é uma API desenvolvida para robôs colaborativos FAIRINO baseada em ROS2, projetada para permitir que usuários iniciantes utilizem o SDK da FAIRINO de forma mais conveniente. Através da configuração de parâmetros padrão em arquivos de configuração, é possível atender a diferentes requisitos dos clientes.
2. fairino_hardware
Esta seção explica como configurar o ambiente de execução do aplicativo.
2.1. Instalação do Ambiente Básico
Recomenda-se o uso no Ubuntu 22.04 LTS (Jammy). Após a instalação do sistema, é necessário instalar o ROS2. Recomenda-se o ros2-humble. Para a instalação completa do ROS2, consulte o tutorial: https://docs.ros.org/en/humble/index.html. Antes de compilar oficialmente o fairino_hardware, também é necessário instalar o pacote oficial ros2_control. Para a instalação completa do ros2_control, consulte o tutorial: https://control.ros.org/humble/index.html. O site oficial oferece duas maneiras de instalar o ros2_control: instalação por comando e instalação por compilação do código fonte. Como a instalação por comando pode resultar em pacotes de funcionalidades incompletos, recomenda-se o uso da compilação do código fonte.
O processo de instalação do ROS2 (humble) é detalhado abaixo:
Abra uma janela de terminal
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
Configure as fontes de repositório
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
Instale o ROS2
1sudo apt update
2sudo apt upgrade
3sudo apt install ros-humble-desktop
Por fim, instale as ferramentas de desenvolvimento
1sudo apt install ros-dev-tools
O processo de instalação do ros2_control é detalhado abaixo:
Primeiro, faça o source dos recursos do ROS2
1source /opt/ros/humble/setup.bash
Crie o espaço de trabalho do ros2_control e baixe os recursos
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
Instale os pacotes de dependência
1rosdep update --rosdistro=$ROS_DISTRO
2sudo apt-get update
3rosdep install --from-paths src --ignore-src -r -y
Compile o ros2_control
1. /opt/ros/${ROS_DISTRO}/setup.sh
2colcon build --symlink-install
2.2. Compilação e Construção do fairino_hardware
1. Crie um espaço de trabalho colcon O fairino_hardware é composto por dois pacotes de funcionalidades: um é o pacote de funcionalidades de estrutura de dados personalizada fairino_msgs, e o outro é o pacote de funcionalidades principal fairino_hardware. Após instalar o ambiente básico, primeiro crie um espaço de trabalho colcon, por exemplo:
Primeiro, é necessário fazer o source dos recursos do ROS2 e do ros2_control
1source /opt/ros/humble/setup.bash
2source ~/ros2_control_ws/install/setup.bash
Em seguida, crie o espaço de trabalho
1cd ~/
2mkdir -p ros2_ws/src
2. Compile os pacotes de funcionalidades Copie o código do pacote de instalação para o diretório ros2_ws/src. No diretório ros2_ws, execute o seguinte comando:
1source ~/ros2_control_ws/install/setup.bash
Após a conclusão do comando, execute o seguinte comando:
1colcon build --packages-select fairino_msgs
Após aguardar a conclusão da compilação do comando anterior, use o seguinte comando para compilar o fairino_hardware:
1colcon build --packages-select fairino_hardware
3. Início Rápido
3.1. Processo de Inicialização
No Ubuntu, abra um terminal e digite:
1cd ros2_ws
2source install/setup.bash
3ros2 run fairino_hardware ros2_cmd_server
3.2. Processo para Visualizar o Feedback de Estado do Braço Robótico
O feedback de estado do braço robótico é publicado através de tópicos. Os usuários podem observar a atualização dos dados de estado usando comandos nativos do ROS2 ou escrever programas para obter esses dados. Abaixo, mostramos como observar os dados de estado do braço robótico usando comandos ROS2.
No Ubuntu, abra um terminal e digite:
1cd ros2_ws
2source install/setup.bash
3ros2 topic echo /nonrt_state_data
Você verá os dados de estado sendo atualizados continuamente na janela do terminal, conforme mostrado na figura abaixo.
3.3. Processo para Enviar Comandos
No Ubuntu, abra um terminal e digite:
1cd ros2_ws
2source install/setup.bash
3rqt
Após a execução do comando acima, uma interface GUI do rqt será exibida, conforme mostrado na figura abaixo.
Na interface GUI, selecione plugins -> service -> service caller. A interface a seguir será exibida. Selecione o serviço /fairino_remote_command_service. Na caixa de texto expression, insira a string de comando e clique em call. Você verá a mensagem de resposta na caixa de diálogo abaixo.
Importante
Explicação das regras da string de entrada:
O programa filtra internamente a forma da string de entrada. O formato da função de entrada deve ser [Nome da função](). A string de parâmetros entre parênteses deve conter apenas letras, números, vírgulas e o sinal de menos. A presença de outros caracteres ou espaços resultará em erro.
Explicação do valor de retorno do comando:
Exceto pelos comandos GET, que retornam uma string, os valores de retorno das outras funções são do tipo int. Geralmente, 0 indica um erro, 1 indica execução correta. Se outros valores aparecerem, consulte os códigos de erro definidos no SDK xmlrpc.
3.4. Processo para Modificar Parâmetros
Como o SDK simplificado é uma melhoria da interface SDK nativa, a simplificação é possível porque alguns parâmetros recebem valores padrão. No entanto, durante o uso real, pode haver situações em que os parâmetros padrão não atendam aos requisitos. Nesses casos, é possível modificar os valores dos parâmetros padrão correspondentes e, em seguida, carregá-los no nó.
No código fonte, existe um arquivo de parâmetros fairino_remotecmdinterface_para.yaml. Os parâmetros neste arquivo são os valores padrão predefinidos, usados para simplificar os parâmetros de entrada do comando. Eles podem ser modificados de acordo com suas necessidades específicas. Em seguida, use o comando para carregar os parâmetros dinamicamente: ros2 param load fr_command_server ~/ros2_ws/src/fairino_hardware/fairino_remotecmdinterface_para.yaml.
4. Explicação da API
1/*
2Descrição da função: Armazena informações de um ponto de junta
3id - Número de identificação do ponto a ser armazenado, começando em 1. Observe que este ID é independente do ID do ponto CARTPoint.
4double j1-j6 - 6 posições das juntas, unidade em graus
5*/
6int JNTPoint(int id, double j1, double j2, double j3, double j4, double j5, double j6)
7// Exemplo
8JNTPoint(1,10,11,12,13,14,15)
9
10/*
11Descrição da função: Armazena informações de um ponto cartesiano
12id - Número de identificação do ponto a ser armazenado, começando em 1. Observe que este ID é independente do ID do ponto JNTPoint.
13double x,y,z,rx,ry,rz - Informações do ponto cartesiano, posição em mm, ângulo em graus
14*/
15int CARTPoint(int id, double x,y,z,rx,ry,rz)//Armazena um ponto no espaço cartesiano
16// Exemplo
17CARTPoint(1,100,110,200,0,0,0)
18
19/*
20Descrição da função: Obtém a posição do ponto da junta ou cartesiano para o ponto com o número de sequência especificado
21string name - 'JNT' ou 'CART'. 'JNT' representa obter informações do ponto de junta, 'CART' representa obter informações do ponto cartesiano.
22int id - Número de identificação do ponto, começando em 1
23*/
24string GET(string name, int id)//Obtém o conteúdo do ponto com o ID correspondente. name pode ser JNT ou CART.
25// Exemplo
26GET(JNT,1)
27
28/*
29Descrição da função: Alterna o modo de arrastagem
30uint8_t state - 1-ativar modo de arrastagem, 0-desativar modo de arrastagem
31*/
32int DragTeachSwitch(uint8_t state)
33// Exemplo
34DragTeachSwitch(0)
35
36/*
37Descrição da função: Alterna a habilitação do braço robótico
38uint8_t state - 1-habilitar braço robótico, 0-desabilitar braço robótico
39*/
40int RobotEnable(uint8_t state)
41// Exemplo
42RobotEnable(1)
43
44/*
45Descrição da função: Alterna o modo
46uint8_t state - 1-modo manual, 0-modo automático
47*/
48int Mode(uint8_t state)
49// Exemplo
50Mode(1)
51
52/*
53Descrição da função: Define a velocidade do braço robótico no modo atual
54float vel - Porcentagem de velocidade, faixa de 1 a 100
55*/
56int SetSpeed(float vel)
57// Exemplo
58SetSpeed(10)
59
60/*
61Descrição da função: Define e carrega o sistema de coordenadas da ferramenta com o número de sequência especificado
62int id - Número do sistema de coordenadas da ferramenta, faixa 1-15
63float x,y,z,rx,ry,rz - Informações de deslocamento do sistema de coordenadas da ferramenta
64*/
65int SetToolCoord(int id, float x,float y, float z,float rx,float ry,float rz)
66// Exemplo
67SetToolCoord(1,0,0,0,0,0,0)
68
69/*
70Descrição da função: Define a lista de sistemas de coordenadas da ferramenta
71int id - Número do sistema de coordenadas da ferramenta, faixa 1-15
72float x,y,z,rx,ry,rz - Informações de deslocamento do sistema de coordenadas da ferramenta
73*/
74int SetToolList(int id, float x,float y, float z,float rx,float ry,float rz );
75// Exemplo
76SetToolList(1,0,0,0,0,0,0)
77
78/*
79Descrição da função: Define o sistema de coordenadas da ferramenta externa
80int id - Número do sistema de coordenadas da ferramenta, faixa 1-15
81float x,y,z,rx,ry,rz - Informações de deslocamento do sistema de coordenadas da ferramenta externa
82*/
83int SetExToolCoord(int id, float x,float y, float z,float rx,float ry,float rz);
84// Exemplo
85SetExToolCoord(1,0,0,0,0,0,0)
86
87/*
88Descrição da função: Define a lista de sistemas de coordenadas da ferramenta externa
89int id - Número do sistema de coordenadas da ferramenta, faixa 1-15
90float x,y,z,rx,ry,rz - Informações de deslocamento do sistema de coordenadas da ferramenta externa
91*/
92int SetExToolList(int id, float x,float y, float z,float rx,float ry,float rz);
93// Exemplo
94SetExToolList(1,0,0,0,0,0,0)
95
96/*
97Descrição da função: Define o sistema de coordenadas da peça
98int id - Número do sistema de coordenadas da peça, faixa 1-15
99float x,y,z,rx,ry,rz - Informações de deslocamento do sistema de coordenadas da peça
100*/
101int SetWObjCoord(int id, float x,float y, float z,float rx,float ry,float rz);
102// Exemplo
103SetWObjCoord(1,0,0,0,0,0,0)
104
105/*
106Descrição da função: Define a lista de sistemas de coordenadas da peça
107int id - Número do sistema de coordenadas da peça, faixa 1-15
108float x,y,z,rx,ry,rz - Informações de deslocamento do sistema de coordenadas da peça
109*/
110int SetWObjList(int id, float x,float y, float z,float rx,float ry,float rz);
111// Exemplo
112SetWObjList(1,0,0,0,0,0,0)
113
114/*
115Descrição da função: Define o peso da carga de extremidade
116float weight - Peso da carga, unidade kg
117*/
118int SetLoadWeight(float weight);
119// Exemplo
120SetLoadWeight(3.5)
121
122/*
123Descrição da função: Define as coordenadas do centro de gravidade da carga de extremidade
124float x,y,z - Coordenadas do centro de gravidade, unidade mm
125*/
126int SetLoadCoord(float x,float y,float z);
127// Exemplo
128SetLoadCoord(10,20,30)
129
130/*
131Descrição da função: Define o modo de instalação do robô
132uint8_t install - Modo de instalação, 0-montagem normal, 1-montagem lateral, 2-montagem invertida
133*/
134int SetRobotInstallPos(uint8_t install);
135// Exemplo
136SetRobotInstallPos(0)
137
138/*
139Descrição da função: Define o ângulo de instalação do robô, instalação livre
140double yangle - Ângulo de inclinação
141double zangle - Ângulo de rotação
142*/
143int SetRobotInstallAngle(double yangle,double zangle);
144// Exemplo
145SetRobotInstallAngle(90,0)
146
147
148//Configurações de segurança
149/*
150Descrição da função: Define o nível de colisão do robô
151float level1-level6 - Níveis de colisão para os eixos 1-6, faixa de 1 a 10
152*/
153int SetAnticollision(float level1, float level2, float level3, float level4, float level5, folat level6);
154// Exemplo
155SetAnticollision(1,1,1,1,1,1)
156
157/*
158 * @brief Define a estratégia pós-colisão
159 * @param [in] strategy 0-parar com erro, 1-continuar executando
160 * @param [in] safeTime Tempo de parada segura [1000 - 2000] ms
161 * @param [in] safeDistance Distância de parada segura [1-150] mm
162 * @param [in] safeVel Velocidade segura [50-250] mm/s
163 * @param [in] safetyMargin Fator de segurança j1-j6 [1-10]
164 * @return Código de erro
165*/
166 int SetCollisionStrategy(int strategy, int safeTime, int safeDistance, int safeVel, int safetyMargin[])
167// Exemplo
168SetCollisionStrategy(1)
169
170/*
171 * @brief Define o método de detecção de colisão do robô
172 * @param [in] method Método de detecção de colisão: 0-modo corrente; 1-duplo encoder; 2-corrente e duplo encoder simultaneamente
173 * @param [in] thresholdMode Modo de limite do nível de colisão; 0-modo de limite fixo do nível de colisão; 1-limite de detecção de colisão personalizado
174 * @return Código de erro
175*/
176 int SetCollisionDetectionMethod(int method, int thresholdMode);
177// Exemplo
178SetCollisionDetectionMethod(0,0)
179
180
181/*
182 * @brief Ativa/desativa a detecção de colisão estática
183 * @param [in] status 0-desativar; 1-ativar
184 * @return Código de erro
185*/
186 int SetStaticCollisionOnOff(int status);
187// Exemplo
188SetStaticCollisionOnOff(1)
189
190
191
192/*
193 * @brief Detecção de potência do torque das juntas
194 * @param [in] status 0-desativar; 1-ativar
195 * @param [in] power Potência máxima definida (W);
196 * @return Código de erro
197*/
198 int SetPowerLimit(int status, double power);
199//Exemplo
200SetPowerLimit(1,100)
201
202/*
203 * @brief Configura o sensor de força
204 * @param [in] company Fabricante do sensor de força, 17-Kunwei Technology, 19-Instituto de Pesquisa Aeroespacial 11, 20-Sensor ATI, 21-Zhongke Midian, 22-Weihang Minxin, 23-NBIT, 24-Xinjingcheng (XJC), 26-NSR
205 * @param [in] device Número do dispositivo, Kunwei(0-KWR75B), Instituto Aeroespacial 11(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 Número da versão do software, não usado no momento, padrão 0
207 * @param [in] bus Posição do barramento onde o dispositivo está montado, não usado no momento, padrão 0
208 * @return Código de erro
209*/
210 int FT_SetConfig(int company, int device, int softvesion, int bus);
211// Exemplo
212FT_SetConfig(0,1,0,0)
213
214
215
216/*
217 * @brief Obtém a configuração do sensor de força
218 * @param [out] company Fabricante do sensor de força, a definir
219 * @param [out] device Número do dispositivo, não usado no momento, padrão 0
220 * @param [out] softvesion Número da versão do software, não usado no momento, padrão 0
221 * @param [out] bus Posição do barramento onde o dispositivo está montado, não usado no momento, padrão 0
222 * @return Código de erro
223*/
224 int FT_GetConfig(int *company, int *device, int *softvesion, int *bus);
225// Exemplo
226FT_GetConfig()
227
228
229/*
230 * @brief Ativa o sensor de força
231 * @param [in] act 0-reset, 1-ativar
232 * @return Código de erro
233*/
234 int FT_Activate(uint8_t act);
235// Exemplo
236FT_Activate(1)
237
238
239/*
240 * @brief Zera o sensor de força
241 * @param [in] act 0-remover zero, 1-correção de zero
242 * @return Código de erro
243*/
244 int FT_SetZero(uint8_t act);
245// Exemplo
246FT_SetZero(1)
247
248/*
249 * @brief Proteção contra colisão
250 * @param [in] flag 0-desativar proteção contra colisão, 1-ativar proteção contra colisão
251 * @param [in] sensor_id Número do sensor de força
252 * @param [in] select Seleciona se os seis graus de liberdade são detectados para colisão, 0-não detectar, 1-detectar
253 * @param [in] ft Força/torque de colisão, fx, fy, fz, tx, ty, tz
254 * @param [in] max_threshold Limite máximo
255 * @param [in] min_threshold Limite mínimo
256 * @note Faixa de detecção de força/torque: (ft-min_threshold, ft+max_threshold)
257 * @return Código de erro
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// Exemplo
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 Controle de força constante
266 * @param [in] flag 0-desativar controle de força constante, 1-ativar controle de força constante
267 * @param [in] sensor_id Número do sensor de força
268 * @param [in] select Seleciona se os seis graus de liberdade são detectados para colisão, 0-não detectar, 1-detectar
269 * @param [in] ft Força/torque de colisão, fx, fy, fz, tx, ty, tz
270 * @param [in] ft_pid Parâmetros PID de força, parâmetros PID de torque
271 * @param [in] adj_sign Controle de ativação/desativação adaptativa, 0-desativar, 1-ativar
272 * @param [in] ILC_sign Controle de ativação/desativação ILC, 0-parar, 1-treinar, 2-operação real
273 * @param [in] max_dis Distância máxima de ajuste, unidade mm
274 * @param [in] max_ang Ângulo máximo de ajuste, unidade graus
275 * @param [in] filter_Sign Flag de ativação do filtro 0-desativar; 1-ativar, padrão desativado
276 * @param [in] posAdapt_sign Flag de ativação da conformidade de postura 0-desativar; 1-ativar, padrão desativado
277 * @param [in] isNoBlock Flag de bloqueio, 0-bloqueado; 1-não bloqueado
278 * @return Código de erro
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// Exemplo
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 Ativa o controle de complacência
287 * @param [in] p Coeficiente de ajuste de posição ou coeficiente de complacência
288 * @param [in] force Limite de força para ativação da complacência, unidade N
289 * @return Código de erro
290*/
291 int FT_ComplianceStart(float p, float force);
292// Exemplo
293FT_ComplianceStart(0.005,20)
294
295
296/**
297 * @brief Desativa o controle de complacência
298 * @return Código de erro
299*/
300 int FT_ComplianceStop();
301// Exemplo
302FT_ComplianceStop()
303
304/*
305Descrição da função: Define o limite positivo. Observe que o valor definido deve estar dentro do limite rígido.
306float limit1-limit6 - Valores de limite para as 6 juntas
307*/
308int SetLimitPositive(float limit1, float limit2, float limit3, float limit4, float limit5, float limit6);
309// Exemplo
310SetLimitPositve(100,90,90,90,90,90)
311
312/*
313Descrição da função: Define o limite negativo. Observe que o valor definido deve estar dentro do limite rígido.
314float limit1-limit6 - Valores de limite para as 6 juntas
315*/
316int SetLimitNegative(float limit1, float limit2, float limit3, float limit4, float limit5, float limit6);
317// Exemplo
318SetLimitNegative(-100,-90,-90,-90,-90,-90)
319
320/*
321Descrição da função: Limpa o estado de erro
322*/
323int ResetAllError();
324
325/*
326Descrição da função: Alterna a compensação de fricção das juntas
327uint8_t state - 0-desativar, 1-ativar
328*/
329int FrictionCompensationOnOff(uint8_t state);
330// Exemplo
331FrictionCompensationOnOff(1)
332
333/*
334Descrição da função: Define os coeficientes de compensação de fricção das juntas - montagem normal
335float coeff1-coeff6 - 6 coeficientes de compensação das juntas, faixa de 0 a 1
336*/
337int SetFrictionValue_level(float coeff1,float coeff1,float coeff3,float coeff4,float coeff5,float coeff6);
338// Exemplo
339SetFrictionValue_level(1,1,1,1,1,1)
340
341/*
342Descrição da função: Define os coeficientes de compensação de fricção das juntas - montagem lateral
343float coeff1-coeff6 - 6 coeficientes de compensação das juntas, faixa de 0 a 1
344*/
345int SetFrictionValue_wall(float coeff1,float coeff1,float coeff3,float coeff4,float coeff5,float coeff6);
346// Exemplo
347SetFrictionValue_wall(0.5,0.5,0.5,0.5,0.5,0.5)
348
349/*
350Descrição da função: Define os coeficientes de compensação de fricção das juntas - montagem invertida
351float coeff1-coeff6 - 6 coeficientes de compensação das juntas, faixa de 0 a 1
352*/
353int SetFrictionValue_ceiling(float coeff1,float coeff1,float coeff3,float coeff4,float coeff5,float coeff6);
354// Exemplo
355SetFrictionValue_ceiling(0.5,0.5,0.5,0.5,0.5,0.5)
356
357
358//Controle de periféricos
359/*
360Descrição da função: Ativa a garra
361int index - Número da garra
362uint8_t act - 0-reset, 1-ativar
363*/
364int ActGripper(int index,uint8_t act);
365// Exemplo
366ActGripper(1,1)
367
368/*
369Descrição da função: Controla a garra
370int index - Número da garra
371int pos - Porcentagem de posição, faixa de 0 a 100
372*/
373int MoveGripper(int index,int pos);
374// Exemplo
375MoveGripper(1,10)
376
377
378//Controle de IO
379/*
380Descrição da função: Define a saída digital do painel de controle
381int id - Número do IO, faixa 0-15
382uint_t status - 0-desativar, 1-ativar
383*/
384int SetDO(int id,uint8_t status);
385// Exemplo
386SetDO(1,1)
387
388/*
389Descrição da função: Define a saída digital da ferramenta
390int id - Número do IO, faixa 0-1
391uint_t status - 0-desativar, 1-ativar
392*/
393int SetToolDO(int id,uint8_t status);
394// Exemplo
395SetToolDO(0,1)
396
397/*
398Descrição da função: Define a saída analógica do painel de controle
399int id - Número do IO, faixa 0-1
400float value - Porcentagem do valor de corrente ou tensão, faixa 0-100
401*/
402int SetAO(int id,float value);
403// Exemplo
404SetAO(1,100)
405
406/*
407Descrição da função: Define a saída analógica da ferramenta
408int id - Número do IO, faixa 0
409float value - Porcentagem do valor de corrente ou tensão, faixa 0-100
410*/
411int SetToolAO(int id,float value);
412// Exemplo
413SetToolAO(0,100)
414
415
416//Instruções de movimento
417/*
418Descrição da função: Movimento incremental do robô (JOG)
419uint8_t ref - 0-JOG de junta, 2-JOG no sistema de coordenadas base, 4-JOG no sistema de coordenadas da ferramenta, 8-JOG no sistema de coordenadas da peça
420uint8_t nb - 1-junta 1 (ou eixo x), 2-junta 2 (ou eixo y), 3-junta 3 (ou eixo z), 4-junta 4 (ou rotação em torno do eixo x), 5-junta 5 (ou rotação em torno do eixo y), 6-junta 6 (ou rotação em torno do eixo z)
421uint8_t dir - 0-direção negativa, 1-direção positiva
422float vel - Porcentagem de velocidade, faixa de 0 a 100
423*/
424int StartJOG(uint8_t ref, uin8_t nb, uint8_t dir, float vel);
425// Exemplo
426StartJOG(1,1,1,10)
427
428/*
429Descrição da função: Para o movimento incremental do robô
430uint8_t ref - 0-parar JOG de junta, 2-parar JOG no sistema de coordenadas base, 4-parar JOG no sistema de coordenadas da ferramenta, 8-parar JOG no sistema de coordenadas da peça
431*/
432int StopJOG(uint8_t ref);
433// Exemplo
434StopJOG(1)
435
436/*
437Descrição da função: Para o movimento incremental do robô imediatamente
438*/
439int ImmStopJOG();
440
441/*
442Descrição da função: Movimento no espaço articular
443string point_name - Nome do ponto pré-armazenado, por exemplo, JNT1 é o ponto de junta com número de sequência 1, CART1 é o ponto cartesiano com número de sequência 1. O comando MoveJ suporta a entrada de pontos de junta ou pontos cartesianos. Observe que, como o comando MoveJ tem sistemas de coordenadas de ferramenta e peça especificados nos parâmetros padrão, se os números desses sistemas de coordenadas não corresponderem aos atualmente carregados, o comando resultará em um erro. É necessário modificar os parâmetros do sistema de coordenadas nos parâmetros padrão e carregar os parâmetros novamente antes de executar esta instrução de movimento.
444float vel - Porcentagem de velocidade do comando, faixa 0-100
445int tool - Número do sistema de coordenadas da ferramenta
446int user - Número do sistema de coordenadas da peça
447double expos1 - Posição do eixo externo 1
448double expos2 - Posição do eixo externo 2
449double expos3 - Posição do eixo externo 3
450double expos4 - Posição do eixo externo 4
451*/
452int MoveJ(string point_name, float vel,int tool, int user,double expos1,double expos2,double expos3,double expos4);//point_name é o nome do ponto pré-armazenado
453// Exemplo
454MoveJ(JNT1,10,1,1,0,0,0,0)
455
456/*
457Descrição da função: Movimento linear no espaço cartesiano
458string point_name - Nome do ponto pré-armazenado, por exemplo, JNT1 é o ponto de junta com número de sequência 1, CART1 é o ponto cartesiano com número de sequência 1. O comando MoveL suporta a entrada de pontos de junta ou pontos cartesianos. Observe que, como o comando MoveL tem sistemas de coordenadas de ferramenta e peça especificados nos parâmetros padrão, se os números desses sistemas de coordenadas não corresponderem aos atualmente carregados, o comando resultará em um erro. É necessário modificar os parâmetros do sistema de coordenadas nos parâmetros padrão e carregar os parâmetros novamente antes de executar esta instrução de movimento.
459float vel - Porcentagem de velocidade do comando, faixa 0-100
460int tool - Número do sistema de coordenadas da ferramenta
461int user - Número do sistema de coordenadas da peça
462double expos1 - Posição do eixo externo 1
463double expos2 - Posição do eixo externo 2
464double expos3 - Posição do eixo externo 3
465double expos4 - Posição do eixo externo 4
466*/
467int MoveL(string point_name,float vel,int tool,int user,double expos1,double expos2,double expos3,double expos4);
468// Exemplo
469MoveL(CART1,10,1,1,0,0,0,0)
470
471/*
472Descrição da função: Movimento de arco no espaço cartesiano
473string point1_name point2_name - Nomes dos pontos pré-armazenados, por exemplo, JNT1 é o ponto de junta com número de sequência 1, CART1 é o ponto cartesiano com número de sequência 1. O comando MoveC suporta a entrada de pontos de junta ou pontos cartesianos, mas os dois pontos devem ser do mesmo tipo, ou seja, não suporta o primeiro ponto como ponto de junta e o segundo como ponto cartesiano. Observe que, como o comando MoveC tem sistemas de coordenadas de ferramenta e peça especificados nos parâmetros padrão, se os números desses sistemas de coordenadas não corresponderem aos atualmente carregados, o comando resultará em um erro. É necessário modificar os parâmetros do sistema de coordenadas nos parâmetros padrão e carregar os parâmetros novamente antes de executar esta instrução de movimento.
474float vel - Porcentagem de velocidade do comando, faixa 0-100
475int tool - Número do sistema de coordenadas da ferramenta
476int user - Número do sistema de coordenadas da peça
477double expos1 - Posição do eixo externo 1 do ponto 1
478double expos2 - Posição do eixo externo 2 do ponto 1
479double expos3 - Posição do eixo externo 3 do ponto 1
480double expos4 - Posição do eixo externo 4 do ponto 1
481double expos1 - Posição do eixo externo 1 do ponto 2
482double expos2 - Posição do eixo externo 2 do ponto 2
483double expos3 - Posição do eixo externo 3 do ponto 2
484double expos4 - Posição do eixo externo 4 do ponto 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// Exemplo
488MoveC(JNT1,JNT2,10,1,1,0,0,0,0,0,0,0,0)
489
490/*
491Descrição da função: Início do movimento spline
492*/
493int SplineStart();
494
495/*
496Descrição da função: Movimento spline no espaço articular. Esta instrução só suporta a entrada de dados de junta como JNT1. A entrada de pontos cartesianos resultará em erro.
497string point_name - Nome do ponto pré-armazenado, por exemplo, JNT1 é o ponto de junta com número de sequência 1.
498float vel - Porcentagem de velocidade, faixa 0-100
499*/
500int SplinePTP(string point_name, float vel);
501// Exemplo
502SplinePTP(JNT2,10)
503
504/*
505Descrição da função: Fim do movimento spline
506*/
507int SplineEnd();
508
509/*
510Descrição da função: Início do movimento spline no espaço cartesiano
511uint8_t ctlpoint - 0-trajetória passa pelos pontos de caminho, 1-trajetória não passa pelos pontos de controle. Pelo menos 4 pontos são necessários.
512*/
513int NewSplineStart(uint8_t ctlpoint);
514// Exemplo
515NewSplineStart(1)
516
517/*
518Descrição da função: Movimento spline no espaço cartesiano. Só é possível inserir pontos cartesianos como CART1. A entrada de pontos de junta resultará em erro.
519string point_name - Nome do ponto pré-armazenado, por exemplo, CART1 é o ponto cartesiano com número de sequência 1.
520float vel - Porcentagem de velocidade, faixa 0-100
521int lastflag - 0-não é o último ponto, 1-é o último ponto
522*/
523int NewSplinePoint(string point_name, float vel, int lastflag);
524// Exemplo
525NewSplinePoint(JNT2,20,0)
526
527/*
528Descrição da função: Fim do movimento spline no espaço cartesiano
529*/
530int NewSplineEnd();
531
532/*
533Descrição da função: Para o movimento
534*/
535int StopMotion();
536
537/*
538Descrição da função: Inicia o deslocamento geral de pontos
539int flag - 0-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
540double x,y,z,rx,ry,rz - Valores de deslocamento da pose
541*/
542int PointsOffsetEnable(int flag,double x,double y,double z,double rx,double ry,double rz);
543// Exemplo
544PointsOffsetEnable(1,10,10,10,0,0,0)
545
546/*
547Descrição da função: Termina o deslocamento geral de pontos
548*/
549int PointsOffsetDisable();