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;