2. Descrição das Estruturas de Dados
2.1. Tipo de Valor de Retorno da Chamada de Interface
1typedef int errno_t;
2.2. Tipo de Dados de Posição Articular
1/**
2* @brief Tipo de dados de posição articular
3*/
4typedef struct
5{
6 double jPos[6]; /* Posições das seis juntas, em graus */
7} JointPos;
2.3. Tipo de Dados de Posição no Espaço Cartesiano
1/**
2* @brief Tipo de dados de posição no espaço cartesiano
3*/
4typedef struct
5{
6 double x; /* Coordenada do eixo X, em mm */
7 double y; /* Coordenada do eixo Y, em mm */
8 double z; /* Coordenada do eixo Z, em mm */
9} DescTran;
2.4. Tipo de Dados de Atitude de Ângulos de Euler
1/**
2* @brief Tipo de dados de atitude de ângulos de Euler
3*/
4typedef struct
5{
6 double rx; /* Ângulo de rotação em torno do eixo X fixo, em graus */
7 double ry; /* Ângulo de rotação em torno do eixo Y fixo, em graus */
8 double rz; /* Ângulo de rotação em torno do eixo Z fixo, em graus */
9} Rpy;
2.5. Tipo de Dados de Pose no Espaço Cartesiano
1/**
2*@brief Tipo de pose no espaço cartesiano
3*/
4typedef struct
5{
6 DescTran tran; /* Posição no espaço cartesiano */
7 Rpy rpy; /* Atitude no espaço cartesiano */
8} DescPose;
2.6. Tipo de Dados de Posição do Eixo Estendido
1/**
2* @brief Tipo de dados de posição do eixo estendido
3*/
4typedef struct
5{
6 double ePos[4]; /* Posições dos quatro eixos estendidos, em mm */
7} ExaxisPos;
2.7. Tipo de Dados do Sensor de Torque
1/**
2* @brief Componentes de força e torque do sensor de força
3*/
4typedef struct
5{
6 double fx; /* Componente de força ao longo do eixo X, em N */
7 double fy; /* Componente de força ao longo do eixo Y, em N */
8 double fz; /* Componente de força ao longo do eixo Z, em N */
9 double tx; /* Componente de torque em torno do eixo X, em Nm */
10 double ty; /* Componente de torque em torno do eixo Y, em Nm */
11 double tz; /* Componente de torque em torno do eixo Z, em Nm */
12} ForceTorque;
2.8. Tipo de Dados de Parâmetros da Espiral
1/**
2* @brief Tipo de dados de parâmetros da espiral
3*/
4typedef struct
5{
6 int circle_num; /* Número de voltas da espiral */
7 float circle_angle; /* Ângulo de inclinação da espiral */
8 float rad_init; /* Raio inicial da espiral, em mm */
9 float rad_add; /* Incremento do raio */
10 float rotaxis_add; /* Incremento na direção do eixo de rotação */
11 int rot_direction; /* Direção de rotação, 0-horário, 1-anti-horário */
12 int velAccMode; /* Modo de parâmetro de velocidade/aceleração: 0-velocidade angular constante; 1-velocidade linear constante */
13} SpiralParam;
2.9. Pacote de Dados de Retroalimentação de Estado do Controlador
Alterado na versão C++SDK-v2.1.4.0.
1/**
2 * @brief Pacote de dados de retroalimentação de estado do controlador
3 */
4typedef struct _ROBOT_STATE_PKG
5{
6 uint16_t frame_head; // Cabeçalho do quadro, definido como 0x5A5A
7 uint8_t frame_cnt; // Contagem do quadro, contagem cíclica 0-255
8 uint16_t data_len; // Comprimento do conteúdo dos dados
9 uint8_t program_state; // Estado de execução do programa, 1-parado; 2-em execução; 3-pausado;
10 uint8_t robot_state; // Estado de movimento do robô, 1-parado; 2-em movimento; 3-pausado; 4-arrasto
11 int main_code; // Código de falha principal
12 int sub_code; // Código de falha secundário
13 uint8_t robot_mode; // Modo do robô, 1-modo manual; 0-modo automático;
14 double jt_cur_pos[6]; // Posições atuais das 6 juntas, em graus
15 double tl_cur_pos[6]; // Posição atual da ferramenta
16 // tl_cur_pos[0], posição ao longo do eixo X, em mm,
17 // tl_cur_pos[1], posição ao longo do eixo Y, em mm,
18 // tl_cur_pos[2], posição ao longo do eixo Z, em mm,
19 // tl_cur_pos[3], ângulo de rotação em torno do eixo X fixo, em graus
20 // tl_cur_pos[4], ângulo de rotação em torno do eixo Y fixo, em graus
21 // tl_cur_pos[5], ângulo de rotação em torno do eixo Z fixo, em graus
22 double flange_cur_pos[6]; // Posição atual do flange da extremidade
23 // flange_cur_pos[0], posição ao longo do eixo X, em mm,
24 // flange_cur_pos[1], posição ao longo do eixo Y, em mm,
25 // flange_cur_pos[2], posição ao longo do eixo Z, em mm,
26 // flange_cur_pos[3], ângulo de rotação em torno do eixo X fixo, em graus
27 // flange_cur_pos[4], ângulo de rotação em torno do eixo Y fixo, em graus
28 // flange_cur_pos[5], ângulo de rotação em torno do eixo Z fixo, em graus
29 double actual_qd[6]; // Velocidades atuais das 6 juntas, em graus/s
30 double actual_qdd[6]; // Acelerações atuais das 6 juntas, em graus/s^2
31 double target_TCP_CmpSpeed[2];
32// target_TCP_CmpSpeed[0], velocidade de comando sintética do TCP (posição), em mm/s
33 // target_TCP_CmpSpeed[1], velocidade de comando sintética do TCP (atitude), em graus/s */
34 double target_TCP_Speed[6]; // Velocidade de comando do TCP
35 // target_TCP_Speed[0], velocidade ao longo do eixo X, em mm/s,
36 // target_TCP_Speed[1], velocidade ao longo do eixo Y, em mm/s,
37 // target_TCP_Speed[2], velocidade ao longo do eixo Z, em mm/s,
38 // target_TCP_Speed[3], velocidade angular em torno do eixo X fixo, em graus/s
39 // target_TCP_Speed[4], velocidade angular em torno do eixo Y fixo, em graus/s
40 // target_TCP_Speed[5], velocidade angular em torno do eixo Z fixo, em graus/s */
41 double actual_TCP_CmpSpeed[2];
42// actual_TCP_CmpSpeed[0], velocidade real sintética do TCP (posição), em mm/s
43 // actual_TCP_CmpSpeed[1], velocidade real sintética do TCP (atitude), em graus/s
44 double actual_TCP_Speed[6]; // Velocidade real do TCP
45 // actual_TCP_Speed[0], velocidade ao longo do eixo X, em mm/s,
46 // actual_TCP_Speed[1], velocidade ao longo do eixo Y, em mm/s,
47 // actual_TCP_Speed[2], velocidade ao longo do eixo Z, em mm/s,
48 // actual_TCP_Speed[3], velocidade angular em torno do eixo X fixo, em graus/s
49 // actual_TCP_Speed[4], velocidade angular em torno do eixo Y fixo, em graus/s
50 // actual_TCP_Speed[5], velocidade angular em torno do eixo Z fixo, em graus/s
51 double jt_cur_tor[6]; // Torques atuais das 6 juntas, em N·m
52 int tool; // Número do sistema de coordenadas da ferramenta aplicado
53 int user; // Número do sistema de coordenadas da peça aplicado
54 uint8_t cl_dgt_output_h; // Saída digital da caixa de controle 15-8
55 uint8_t cl_dgt_output_l; // Saída digital da caixa de controle 7-0
56 uint8_t tl_dgt_output_l; // Saída digital da ferramenta 7-0, apenas bits 0-1 são válidos
57 uint8_t cl_dgt_input_h; // Entrada digital da caixa de controle 15-8
58 uint8_t cl_dgt_input_l; // Entrada digital da caixa de controle 7-0
59 uint8_t tl_dgt_input_l; // Entrada digital da ferramenta 7-0, apenas bits 0-1 são válidos
60 uint16_t cl_analog_input[2]; // cl_analog_input[0], entrada analógica 0 da caixa de controle
61 // cl_analog_input[1], entrada analógica 1 da caixa de controle
62 uint16_t tl_anglog_input; // Entrada analógica da ferramenta
63 double ft_sensor_raw_data[6]; // Dados brutos do sensor de torque
64 // ft_sensor_raw_data[0], força ao longo do eixo X, em N
65 // ft_sensor_raw_data[1], força ao longo do eixo Y, em N
66 // ft_sensor_raw_data[2], força ao longo do eixo Z, em N
67 // ft_sensor_raw_data[3], torque em torno do eixo X, em Nm
68 // ft_sensor_raw_data[4], torque em torno do eixo Y, em Nm
69 // ft_sensor_raw_data[5], torque em torno do eixo Z, em Nm
70 double ft_sensor_data[6]; // Dados do sensor de torque,
71 // ft_sensor_data[0], força ao longo do eixo X, em N
72 // ft_sensor_data[1], força ao longo do eixo Y, em N
73 // ft_sensor_data[2], força ao longo do eixo Z, em N
74 // ft_sensor_data[3], torque em torno do eixo X, em Nm
75 // ft_sensor_data[4], torque em torno do eixo Y, em Nm
76 // ft_sensor_data[5], torque em torno do eixo Z, em Nm
77 uint8_t ft_sensor_active; // Estado de ativação do sensor de torque, 0-reset, 1-ativado
78 uint8_t EmergencyStop; // Sinalizador de parada de emergência, 0-parada de emergência não pressionada, 1-parada de emergência pressionada
79 int motion_done; // Sinal de movimento concluído, 1-concluído, 0-não concluído
80 uint8_t gripper_motiondone; // Sinal de movimento concluído da garra, 1-concluído, 0-não concluído
81 int mc_queue_len; // Comprimento da fila de instruções de movimento
82 uint8_t collisionState; // Detecção de colisão, 1-colisão, 0-sem colisão
83 int trajectory_pnum; // Número do ponto de trajetória
84 uint8_t safety_stop0_state; // Sinal de parada de segurança SI0
85 uint8_t safety_stop1_state; // Sinal de parada de segurança SI1
86 uint8_t gripper_fault_id; // Número da garra com falha
87 uint16_t gripper_fault; // Falha da garra
88 uint16_t gripper_active; // Estado de ativação da garra
89 uint8_t gripper_position; // Posição da garra
90 int8_t gripper_speed; // Velocidade da garra
91 int8_t gripper_current; // Corrente da garra
92 int gripper_temp; // Temperatura da garra
93 int gripper_voltage; // Tensão da garra
94 robot_aux_state aux_state; // Estado do eixo estendido 485
95 EXT_AXIS_STATUS extAxisStatus[4]; // Estado do eixo estendido UDP
96 uint16_t extDIState[8]; // Entrada DI estendida
97 uint16_t extDOState[8]; // Saída DO estendida
98 uint16_t extAIState[4]; // Entrada AI estendida
99 uint16_t extAOState[4]; // Saída AO estendida
100 int rbtEnableState; // Estado de habilitação do robô
101 double jointDriverTorque[6]; // Torque do driver articular do robô
102 double jointDriverTemperature[6]; // Temperatura do driver articular do robô
103 RobotTime robotTime; // Tempo do sistema do robô
104 int softwareUpgradeState; // Estado de atualização de software do robô
105 uint16_t endLuaErrCode; // Estado de execução do LUA da extremidade
106 uint16_t cl_analog_output[2]; // Saída analógica da caixa de controle
107 uint16_t tl_analog_output; // Saída analógica da ferramenta
108 float gripperRotNum; // Número atual de rotações da garra rotativa
109 uint8_t gripperRotSpeed; // Percentagem da velocidade atual de rotação da garra rotativa
110 uint8_t gripperRotTorque; // Percentagem do torque atual de rotação da garra rotativa
111 WELDING_BREAKOFF_STATE weldingBreakOffState; // Estado de interrupção da soldagem
112 double jt_tgt_tor[6]; // Torque de comando das juntas
113 int smartToolState; // Estado do botão do SmartTool
114 float wideVoltageCtrlBoxTemp; // Temperatura da caixa de controle de larga tensão
115 uint16_t wideVoltageCtrlBoxFanCurrent; // Corrente da ventoinha da caixa de controle de larga tensão (mA)
116 double toolCoord[6]; // Sistema de coordenadas da ferramenta
117 double wobjCoord[6]; // Sistema de coordenadas da peça
118 double extoolCoord[6]; // Sistema de coordenadas da ferramenta externa
119 double exAxisCoord[6]; // Sistema de coordenadas do eixo estendido
120 double load; // Massa da carga
121 double loadCog[3]; // Centro de massa da carga
122 double lastServoTarget[6]; // Última posição alvo do ServoJ na fila
123 int servoJCmdNum; // Contagem de instruções servoJ
124 uint16_t check_sum; // Soma de verificação
125} ROBOT_STATE_PKG;