2. Descrição das Estruturas de Dados

2.1. Tipo de Dados de Posição Articular

 1/**
 2* @brief Tipo de dados de posição articular
 3*/
 4public class JointPos
 5{
 6  double J1;
 7  double J2;
 8  double J3;
 9  double J4;
10  double J5;
11  double J6;
12
13  public JointPos(double j1, double j2, double j3, double j4, double j5, double j6)
14  {
15    J1 = j1;
16    J2 = j2;
17    J3 = j3;
18    J4 = j4;
19    J5 = j5;
20    J6 = j6;
21  }
22
23  public JointPos()
24  {
25
26  }
27}

2.2. Tipo de Dados de Posição no Espaço Cartesiano

 1/**
 2* @brief Tipo de dados de posição no espaço cartesiano
 3*/
 4public class DescTran
 5{
 6  public double x = 0.0;    /* Coordenada do eixo X, em mm */
 7  public double y = 0.0;    /* Coordenada do eixo Y, em mm */
 8  public double z = 0.0;    /* Coordenada do eixo Z, em mm */
 9  public DescTran(double posX, double posY, double posZ)
10  {
11    x = posX;
12    y = posY;
13    z = posZ;
14  }
15
16  public DescTran()
17  {
18
19  }
20
21}

2.3. Tipo de Dados de Atitude de Ângulos de Euler

 1/**
 2* @brief Tipo de dados de atitude de ângulos de Euler
 3*/
 4public class Rpy
 5{
 6  public double rx = 0.0;   /* Ângulo de rotação em torno do eixo X fixo, em graus */
 7  public double ry = 0.0;   /* Ângulo de rotação em torno do eixo Y fixo, em graus */
 8  public double rz = 0.0;   /* Ângulo de rotação em torno do eixo Z fixo, em graus */
 9  public Rpy(double rotateX, double rotateY, double rotateZ)
10  {
11    rx = rotateX;
12    ry = rotateY;
13    rz = rotateZ;
14  }
15}

2.4. Tipo de Dados de Pose no Espaço Cartesiano

 1/**
 2*@brief Tipo de pose no espaço cartesiano
 3*/
 4public class DescPose
 5{
 6  public DescTran tran = new DescTran(0.0, 0.0, 0.0);      /* Posição no espaço cartesiano */
 7  public Rpy rpy = new Rpy(0.0, 0.0, 0.0);                 /* Atitude no espaço cartesiano */
 8
 9  public DescPose()
10  {
11
12  }
13
14  public DescPose(DescTran descTran, Rpy rotateRpy)
15  {
16    tran = descTran;
17    rpy = rotateRpy;
18  }
19
20  public DescPose(double tranX, double tranY, double tranZ, double rX, double ry, double rz)
21  {
22    tran.x = tranX;
23    tran.y = tranY;
24    tran.z = tranZ;
25    rpy.rx = rX;
26    rpy.ry = ry;
27    rpy.rz = rz;
28  }
29
30  public String toString()
31  {
32    return String.valueOf(tran.x) + "," + String.valueOf(tran.y) + "," + String.valueOf(tran.z) + "," + String.valueOf(rpy.rx) + "," + String.valueOf(rpy.ry) + "," + String.valueOf(rpy.rz);
33  }
34}

2.5. Tipo de Dados de Posição do Eixo Estendido

 1/**
 2* @brief Tipo de dados de posição do eixo estendido
 3*/
 4public class ExaxisPos
 5{
 6  public double axis1 = 0.0;
 7  public double axis2 = 0.0;
 8  public double axis3 = 0.0;
 9  public double axis4 = 0.0;
10
11  public ExaxisPos()
12  {
13
14  }
15  public ExaxisPos(double[] exaxisPos)
16  {
17    axis1 = exaxisPos[0];
18    axis2 = exaxisPos[1];
19    axis3 = exaxisPos[2];
20    axis4 = exaxisPos[3];
21  }
22
23  public ExaxisPos(double pos1, double pos2, double pos3, double pos4)
24  {
25    axis1 = pos1;
26    axis2 = pos2;
27    axis3 = pos3;
28    axis4 = pos4;
29  }
30}

2.6. Tipo de Dados do Sensor de Torque

 1/**
 2* @brief Componentes de força e torque do sensor de força
 3*/
 4public class ForceTorque
 5{
 6  public double fx;  /* Componente de força ao longo do eixo X, em N */
 7  public double fy;  /* Componente de força ao longo do eixo Y, em N */
 8  public double fz;  /* Componente de força ao longo do eixo Z, em N */
 9  public double tx;  /* Componente de torque em torno do eixo X, em Nm */
10  public double ty;  /* Componente de torque em torno do eixo Y, em Nm */
11  public double tz;  /* Componente de torque em torno do eixo Z, em Nm */
12  public ForceTorque(double fX, double fY, double fZ, double tX, double tY, double tZ)
13  {
14    fx = fX;
15    fy = fY;
16    fz = fZ;
17    tx = tX;
18    ty = tY;
19    tz = tZ;
20  }
21}

2.7. Tipo de Dados de Parâmetros da Espiral

 1/**
 2* @brief Tipo de dados de parâmetros da espiral
 3*/
 4public class SpiralParam
 5{
 6    public int circle_num;           /* Número de voltas da espiral */
 7    public double circle_angle;      /* Ângulo de inclinação da espiral */
 8    public double rad_init;          /* Raio inicial da espiral, em mm */
 9    public double rad_add;           /* Incremento do raio */
10    public double rotaxis_add;       /* Incremento na direção do eixo de rotação */
11    public int rot_direction;        /* Direção de rotação, 0-horário, 1-anti-horário */
12    public int velAccMode;           /* Modo de parâmetro de velocidade/aceleração: 0-velocidade angular constante; 1-velocidade linear constante */
13    public SpiralParam(int circleNum, double circleAngle, double radInit, double radAdd, double rotaxisAdd, int rotDirection, int vel_AccMode)
14    {
15        circle_num = circleNum;
16        circle_angle = circleAngle;
17        rad_init = radInit;
18        rad_add = radAdd;
19        rotaxis_add = rotaxisAdd;
20        rot_direction = rotDirection;
21        velAccMode = vel_AccMode;
22    }
23}

2.8. Tipo de Estado do Eixo Estendido

 1/**
 2* @brief Tipo de estado do eixo estendido
 3*/
 4public class EXT_AXIS_STATUS
 5{
 6 public double pos = 0;        // Posição do eixo estendido
 7 public double vel = 0;        // Velocidade do eixo estendido
 8 public int errorCode = 0;     // Código de falha do eixo estendido
 9 public int ready = 0;         // Servo pronto
10 public int inPos = 0;         // Servo no lugar
11 public int alarm = 0;         // Alarme do servo
12 public int flerr = 0;         // Erro de seguimento
13 public int nlimit = 0;        // Limite negativo atingido
14 public int pLimit = 0;        // Limite positivo atingido
15 public int mdbsOffLine = 0;   // Driver offline no barramento 485
16 public int mdbsTimeout = 0;   // Tempo limite de comunicação 485 entre placa de controle e caixa de controle
17 public int homingStatus = 0;  // Status de retorno à origem do eixo estendido
18}

2.9. Tipo de Sensor

 1/**
 2* @brief Tipo de sensor
 3*/
 4public class DeviceConfig
 5{
 6  int company = 0;          // Fabricante
 7  int device = 0;           // Tipo/número do dispositivo
 8  int softwareVersion = 0;  // Versão do software
 9  int bus = 0;              // Local de montagem
10
11  public DeviceConfig()
12  {
13
14  }
15
16  public DeviceConfig(int company, int device, int softwareVersion, int bus)
17  {
18    this.company = company;
19    this.device = device;
20    this.softwareVersion = softwareVersion;
21    this.bus = bus;
22  }
23}

2.10. Configuração do Eixo Estendido 485

 1/**
 2* @brief Configuração do eixo estendido 485
 3*/
 4public class Axis485Param
 5{
 6  int servoCompany;           // Fabricante do servo driver, 1-Dynatec
 7  int servoModel;             // Modelo do servo driver, 1-FD100-750C
 8  int servoSoftVersion;       // Versão do software do servo driver, 1-V1.0
 9  int servoResolution;        // Resolução do codificador
10  double axisMechTransRatio;  // Relação de transmissão mecânica
11
12  public Axis485Param(int company, int model, int softVersion, int resolution, double mechTransRatio)
13  {
14    servoCompany = company;
15    servoModel = model;
16    servoSoftVersion = softVersion;
17    servoResolution = resolution;
18    axisMechTransRatio = mechTransRatio;
19  }
20
21  public Axis485Param()
22  {
23
24  }
25}

2.11. Estado do Controlador Servo

 1/**
 2* @brief Estado do controlador servo
 3*/
 4public class ROBOT_AUX_STATE
 5{
 6  public int servoId = 0;           // Número de ID do servo driver
 7  public int servoErrCode = 0;      // Código de falha do servo driver
 8  public int servoState = 0;        // Estado do servo driver
 9  public double servoPos = 0;       // Posição atual do servo
10  public float servoVel = 0;        // Velocidade atual do servo
11  public float servoTorque = 0;     // Torque atual do servo
12}

2.12. Estado de Interrupção da Soldagem

1/**
2* @brief Estado de interrupção da soldagem
3*/
4public class WELDING_BREAKOFF_STATE
5{
6  public int breakOffState = 0;  // Estado de interrupção da soldagem
7  public int weldArcState = 0;   // Estado de interrupção do arco de soldagem
8}

2.13. Parâmetros de Comunicação UDP do Eixo Estendido

 1/**
 2* @brief Parâmetros de comunicação UDP do eixo estendido
 3*/
 4public class UDPComParam
 5{
 6  public String ip = "192.168.58.88"; // Endereço IP
 7  public int port = 2021;            // Número da porta
 8  public int period = 2;             // Período de comunicação (ms, padrão 2, não modifique este parâmetro)
 9  public int lossPkgTime = 50;       // Tempo de detecção de perda de pacote (ms)
10  public int lossPkgNum = 2;         // Número de perdas de pacote
11  public int disconnectTime = 100;   // Duração para confirmação de desconexão da comunicação
12  public int reconnectEnable = 0;    // Ativação da reconexão automática em caso de desconexão 0-desativar 1-ativar
13  public int reconnectPeriod = 100;  // Intervalo do período de reconexão (ms)
14  public int reconnectNum = 3;       // Número de tentativas de reconexão
15  public int selfConnect = 0;        // Estabelecer conexão automaticamente após reinicialização com perda de energia; 0-não estabelecer; 1-estabelecer
16}

2.14. Tipo de Estrutura de Retroalimentação de Estado do Robô

 1/**
 2* @brief Tipo de estrutura de retroalimentação de estado do robô
 3*/
 4public class ROBOT_STATE_PKG
 5{
 6  public short frame_head = 0;            // Cabeçalho do quadro 0x5A5A
 7  public byte frame_cnt = 0;              // Contagem do quadro
 8  public short data_len = 0;              // Comprimento dos dados
 9  public int program_state = 0;           // Estado de execução do programa, 1-parado; 2-em execução; 3-pausado
10  public int robot_state = 0;             // Estado de movimento do robô, 1-parado; 2-em movimento; 3-pausado; 4-arrasto
11  public int main_code = 0;               // Código de falha principal
12  public int sub_code = 0;                // Código de falha secundário
13  public int robot_mode = 0;              // Modo do robô, 0-modo automático; 1-modo manual
14  public double[] jt_cur_pos = new double[6];                  // Posições atuais das juntas
15  public double[] tl_cur_pos = new double[6];                  // Pose atual da ferramenta
16  public double[] flange_cur_pos = new double[6];              // Pose atual do flange da extremidade
17  public double[] actual_qd = new double[6];                   // Velocidades atuais das juntas do robô
18  public double[] actual_qdd = new double[6];                  // Acelerações atuais das juntas do robô
19  public double[] target_TCP_CmpSpeed = new double[2];         // Velocidade de comando sintética do TCP do robô
20  public double[] target_TCP_Speed = new double[6];            // Velocidade de comando do TCP do robô
21  public double[] actual_TCP_CmpSpeed = new double[2];         // Velocidade real sintética do TCP do robô
22  public double[] actual_TCP_Speed = new double[6];            // Velocidade real do TCP do robô
23  public double[] jt_cur_tor = new double[6];                  // Torques atuais
24  public int tool = 0;                        // Número da ferramenta
25  public int user = 0;                        // Número da peça
26  public int cl_dgt_output_h = 0;             // Saída digital 15-8
27  public int cl_dgt_output_l = 0;             // Saída digital 7-0
28  public int tl_dgt_output_l = 0;             // Saída digital da ferramenta 7-0 (apenas bits 0-1 válidos)
29  public int cl_dgt_input_h = 0;              // Entrada digital 15-8
30  public int cl_dgt_input_l = 0;              // Entrada digital 7-0
31  public int tl_dgt_input_l = 0;              // Entrada digital da ferramenta 7-0 (apenas bits 0-1 válidos)
32  public short[] cl_analog_input = new short[2];          // Entrada analógica da caixa de controle
33  public short tl_anglog_input = 0;                       // Entrada analógica da ferramenta
34  public double[] ft_sensor_raw_data = new double[6];     // Dados brutos do sensor de força/torque
35  public double[] ft_sensor_data = new double[6];         // Dados do sensor de força/torque no sistema de coordenadas de referência
36  public int ft_sensor_active = 0;           // Estado de ativação do sensor de força/torque, 0-reset, 1-ativado
37  public int EmergencyStop = 0;              // Sinalizador de parada de emergência
38  public int motion_done = 0;                // Sinal de movimento concluído
39  public int gripper_motiondone = 0;         // Sinal de movimento concluído da garra
40  public int mc_queue_len = 0;               // Comprimento da fila de movimento
41  public int collisionState = 0;             // Detecção de colisão, 1-colisão; 0-sem colisão
42  public int trajectory_pnum = 0;            // Número do ponto de trajetória
43  public int safety_stop0_state = 0;         /* Sinal de parada de segurança SI0 */
44  public int safety_stop1_state = 0;         /* Sinal de parada de segurança SI1 */
45  public int gripper_fault_id = 0;           /* Número da garra com falha */
46  public short gripper_fault = 0;            /* Falha da garra */
47  public short gripper_active = 0;           /* Estado de ativação da garra */
48  public int gripper_position = 0;           /* Posição da garra */
49  public int gripper_speed = 0;              /* Velocidade da garra */
50  public int gripper_current = 0;            /* Corrente da garra */
51  public int gripper_tmp = 0;                /* Temperatura da garra */
52  public int gripper_voltage = 0;            /* Tensão da garra */
53  public ROBOT_AUX_STATE auxState = new ROBOT_AUX_STATE(); /* Estado do eixo estendido 485 */
54  public EXT_AXIS_STATUS extAxisStatus0 = new EXT_AXIS_STATUS();
55  public EXT_AXIS_STATUS extAxisStatus1 = new EXT_AXIS_STATUS();
56  public EXT_AXIS_STATUS extAxisStatus2 = new EXT_AXIS_STATUS();
57  public EXT_AXIS_STATUS extAxisStatus3 = new EXT_AXIS_STATUS();
58  public short[] extDIState = new short[8];        // Entrada DI estendida
59  public short[] extDOState = new short[8];        // Saída DO estendida
60  public short[] extAIState = new short[4];        // Entrada AI estendida
61  public short[] extAOState = new short[4];        // Saída AO estendida
62  public int rbtEnableState = 0;                   // Estado de habilitação do robô
63  public double[] jointDriverTorque = new double[6];       // Torque atual do driver articular
64  public double[] jointDriverTemperature = new double[6];  // Temperatura atual do driver articular
65  public ROBOT_TIME robotTime = new ROBOT_TIME();
66  public int softwareUpgradeState = 0;   // Estado de atualização de software do robô 0-ocioso ou enviando pacote de atualização; 1~100: percentagem de conclusão da atualização; -1: falha na atualização do software; -2: falha na verificação; -3: falha na verificação da versão; -4: falha na descompactação; -5: falha na atualização da configuração do usuário; -6: falha na atualização da configuração do periférico; -7: falha na atualização da configuração do eixo estendido; -8: falha na atualização da configuração do robô; -9: falha na atualização da configuração dos parâmetros DH
67  public int endLuaErrCode;              // Estado de execução do LUA da extremidade
68
69  public int[] cl_analog_output = new int[2];  // Saída analógica da caixa de controle
70  public int tl_analog_output;                // Saída analógica da ferramenta
71  public float gripperRotNum;                 // Número atual de rotações da garra rotativa
72  public int gripperRotSpeed;                 // Percentagem da velocidade atual de rotação da garra rotativa
73  public int gripperRotTorque;                // Percentagem do torque atual de rotação da garra rotativa
74
75  public WELDING_BREAKOFF_STATE weldingBreakOffstate = new WELDING_BREAKOFF_STATE(); // Estado de interrupção da soldagem
76
77  public double[] jt_tgt_tor = new double[6];    // Torque de comando das juntas
78  public int smartToolState;                     // Estado do botão do SmartTool
79
80  public float wideVoltageCtrlBoxTemp;           // Temperatura da caixa de controle de larga tensão
81  public int wideVoltageCtrlBoxFanVel;           // Velocidade da ventoinha da caixa de controle de larga tensão (mA)
82
83  public double[] toolCoord = new double[6];           // Sistema de coordenadas da ferramenta
84  public double[] wobjCoord = new double[6];           // Sistema de coordenadas da peça
85  public double[] extoolCoord = new double[6];         // Sistema de coordenadas da ferramenta externa
86  public double[] exAxisCoord = new double[6];         // Sistema de coordenadas do eixo estendido
87  public double load;                   // Massa da carga
88  public double[] loadCog = new double[3];             // Centro de massa da carga
89
90  public double[] lastServoTarget = new double[6];      // Última posição alvo do servoJ na fila
91  public int servoJCmdNum;                            // Contagem de instruções servoJ
92
93  public short check_sum = 0;          /* Soma de verificação */
94
95  public ROBOT_STATE_PKG()
96  {
97
98  }
99}