2. Descrizione della Struttura Dati
2.1. Tipo di Valore Restituito dalla Chiamata dell’Interfaccia
1typedef int errno_t;
2.2. Tipo di Dati della Posizione Articolare
1/**
2* @brief Tipo di dati della posizione articolare
3*/
4typedef struct
5{
6 double jPos[6]; /* Posizioni delle sei articolazioni, unità deg */
7}JointPos;
2.3. Tipo di Dati della Posizione nello Spazio Cartesiano
1/**
2* @brief Tipo di dati della posizione nello spazio cartesiano
3*/
4typedef struct
5{
6 double x; /* Coordinata dell'asse x, unità mm */
7 double y; /* Coordinata dell'asse y, unità mm */
8 double z; /* Coordinata dell'asse z, unità mm */
9} DescTran;
2.4. Tipo di Dati dell’Orientamento in Angoli di Eulero
1/**
2* @brief Tipo di dati dell'orientamento in angoli di Eulero
3*/
4typedef struct
5{
6 double rx; /* Angolo di rotazione attorno all'asse fisso X, unità: deg */
7 double ry; /* Angolo di rotazione attorno all'asse fisso Y, unità: deg */
8 double rz; /* Angolo di rotazione attorno all'asse fisso Z, unità: deg */
9} Rpy;
2.5. Tipo di Dati della Posa nello Spazio Cartesiano
1/**
2*@brief Tipo di posa nello spazio cartesiano
3*/
4typedef struct
5{
6 DescTran tran; /* Posizione nello spazio cartesiano */
7 Rpy rpy; /* Orientamento nello spazio cartesiano */
8} DescPose;
2.6. Tipo di Dati della Posizione dell’Asse Esteso
1/**
2* @brief Tipo di dati della posizione dell'asse esteso
3*/
4typedef struct
5{
6 double ePos[4]; /* Posizioni dei quattro assi estesi, unità mm */
7}ExaxisPos;
2.7. Tipo di Dati del Sensore di Coppia/Forza
1/**
2* @brief Componenti di forza e momento del sensore di forza
3*/
4typedef struct
5{
6 double fx; /* Componente di forza lungo l'asse x, unità N */
7 double fy; /* Componente di forza lungo l'asse y, unità N */
8 double fz; /* Componente di forza lungo l'asse z, unità N */
9 double tx; /* Componente di momento attorno all'asse x, unità Nm */
10 double ty; /* Componente di momento attorno all'asse y, unità Nm */
11 double tz; /* Componente di momento attorno all'asse z, unità Nm */
12} ForceTorque;
2.8. Tipo di Dati dei Parametri a Spirale
1/**
2* @brief Tipo di dati dei parametri a spirale
3*/
4typedef struct
5{
6 int circle_num; /* Numero di giri della spirale */
7 float circle_angle; /* Angolo di inclinazione della spirale */
8 float rad_init; /* Raggio iniziale della spirale, unità mm */
9 float rad_add; /* Incremento del raggio */
10 float rotaxis_add; /* Incremento della direzione dell'asse di rotazione */
11 int rot_direction; /* Direzione di rotazione, 0-orario, 1-antiorario */
12 int velAccMode; /* Modalità parametri velocità/accelerazione: 0-velocità angolare costante; 1-velocità lineare costante */
13}SpiralParam;
2.9. Pacchetto Dati di Feedback sullo Stato del Controllore
Cambiato nella versione C++SDK-v2.1.4.0.
1/**
2 * @brief Pacchetto dati di feedback sullo stato del controllore
3 */
4typedef struct _ROBOT_STATE_PKG
5{
6 uint16_t frame_head; // Intestazione frame, convenzionalmente 0x5A5A
7 uint8_t frame_cnt; // Contatore frame, conteggio ciclico 0-255
8 uint16_t data_len; // Lunghezza del contenuto dei dati
9 uint8_t program_state; // Stato di esecuzione del programma, 1-fermo; 2-in esecuzione; 3-in pausa;
10 uint8_t robot_state; // Stato di movimento del robot, 1-fermo; 2-in esecuzione; 3-in pausa; 4-trainabile
11 int main_code; // Codice guasto principale
12 int sub_code; // Codice guasto secondario
13 uint8_t robot_mode; // Modalità robot, 1-modalità manuale; 0-modalità automatica;
14 double jt_cur_pos[6]; // Posizioni articolari correnti dei 6 assi, unità deg
15 double tl_cur_pos[6]; // Posizione corrente dell'utensile
16 // tl_cur_pos[0], posizione lungo l'asse x, unità mm,
17 // tl_cur_pos[1], posizione lungo l'asse y, unità mm,
18 // tl_cur_pos[2], posizione lungo l'asse z, unità mm,
19 // tl_cur_pos[3], angolo di rotazione attorno all'asse fisso X, unità deg
20 // tl_cur_pos[4], angolo di rotazione attorno all'asse fisso y, unità deg
21 // tl_cur_pos[5], angolo di rotazione attorno all'asse fisso z, unità deg
22 double flange_cur_pos[6]; // Posizione corrente della flangia terminale
23 // flange_cur_pos[0], posizione lungo l'asse x, unità mm,
24 // flange_cur_pos[1], posizione lungo l'asse y, unità mm,
25 // flange_cur_pos[2], posizione lungo l'asse z, unità mm,
26 // flange_cur_pos[3], angolo di rotazione attorno all'asse fisso X, unità deg
27 // flange_cur_pos[4], angolo di rotazione attorno all'asse fisso y, unità deg
28 // flange_cur_pos[5], angolo di rotazione attorno all'asse fisso z, unità deg
29 double actual_qd[6]; // Velocità correnti delle 6 articolazioni, unità deg/s
30 double actual_qdd[6]; // Accelerazioni correnti delle 6 articolazioni, unità deg/s^2
31 double target_TCP_CmpSpeed[2];
32// target_TCP_CmpSpeed[0], velocità istruzionale sintetica TCP (posizione), unità mm/s
33 // target_TCP_CmpSpeed[1], velocità istruzionale sintetica TCP (orientamento), unità deg/s */
34 double target_TCP_Speed[6]; // Velocità istruzionale TCP
35 // target_TCP_Speed[0], velocità lungo l'asse x, unità mm/s,
36 // target_TCP_Speed[1], velocità lungo l'asse y, unità mm/s,
37 // target_TCP_Speed[2], velocità lungo l'asse z, unità mm/s,
38 // target_TCP_Speed[3], velocità angolare di rotazione attorno all'asse fisso X, unità deg/s
39 // target_TCP_Speed[4], velocità angolare di rotazione attorno all'asse fisso y, unità deg/s
40 // target_TCP_Speed[5], velocità angolare di rotazione attorno all'asse fisso z, unità deg/s */
41 double actual_TCP_CmpSpeed[2];
42// actual_TCP_CmpSpeed[0], velocità reale sintetica TCP (posizione), unità mm/s
43 // actual_TCP_CmpSpeed[1], velocità reale sintetica TCP (orientamento), unità deg/s
44 double actual_TCP_Speed[6]; // Velocità reale TCP
45 // actual_TCP_Speed[0], velocità lungo l'asse x, unità mm/s,
46 // actual_TCP_Speed[1], velocità lungo l'asse y, unità mm/s,
47 // actual_TCP_Speed[2], velocità lungo l'asse z, unità mm/s,
48 // actual_TCP_Speed[3], velocità angolare di rotazione attorno all'asse fisso X, unità deg/s
49 // actual_TCP_Speed[4], velocità angolare di rotazione attorno all'asse fisso y, unità deg/s
50 // actual_TCP_Speed[5], velocità angolare di rotazione attorno all'asse fisso z, unità deg/s
51 double jt_cur_tor[6]; // Coppia corrente dei 6 assi, unità N·m
52 int tool; // Numero del sistema di coordinate utensile applicato
53 int user; // Numero del sistema di coordinate pezzo applicato
54 uint8_t cl_dgt_output_h; // Uscite digitali IO del cabinet di controllo 15-8
55 uint8_t cl_dgt_output_l; // Uscite digitali IO del cabinet di controllo 7-0
56 uint8_t tl_dgt_output_l; // Uscite digitali IO dell'utensile 7-0, solo bit0-bit1 validi
57 uint8_t cl_dgt_input_h; // Ingressi digitali IO del cabinet di controllo 15-8
58 uint8_t cl_dgt_input_l; // Ingressi digitali IO del cabinet di controllo 7-0
59 uint8_t tl_dgt_input_l; // Ingressi digitali IO dell'utensile 7-0, solo bit0-bit1 validi
60 uint16_t cl_analog_input[2]; // cl_analog_input[0], ingresso analogico 0 del cabinet di controllo
61 //cl_analog_input[1], ingresso analogico 1 del cabinet di controllo
62 uint16_t tl_anglog_input; // Ingresso analogico dell'utensile
63 double ft_sensor_raw_data[6]; // Dati grezzi del sensore di forza/coppia
64 // ft_sensor_raw_data[0], forza lungo l'asse x, unità N
65 // ft_sensor_raw_data[1], forza lungo l'asse y, unità N
66 // ft_sensor_raw_data[2], forza lungo l'asse z, unità N
67 // ft_sensor_raw_data[3], momento lungo l'asse x, unità Nm
68 // ft_sensor_raw_data[4], momento lungo l'asse y, unità Nm
69 // ft_sensor_raw_data[5], momento lungo l'asse z, unità Nm
70 double ft_sensor_data[6]; // Dati del sensore di forza/coppia,
71 // ft_sensor_data[0], forza lungo l'asse x, unità N
72 // ft_sensor_data[1], forza lungo l'asse y, unità N
73 // ft_sensor_data[2], forza lungo l'asse z, unità N
74 // ft_sensor_data[3], momento lungo l'asse x, unità Nm
75 // ft_sensor_data[4], momento lungo l'asse y, unità Nm
76 // ft_sensor_data[5], momento lungo l'asse z, unità Nm
77 uint8_t ft_sensor_active; // Stato di attivazione del sensore di forza/coppia, 0-reset, 1-attivo
78 uint8_t EmergencyStop; // Indicatore di arresto di emergenza, 0-non premuto, 1-premuto
79 int motion_done; // Segnale di raggiungimento movimento, 1-raggiunto, 0-non raggiunto
80 uint8_t gripper_motiondone; // Segnale di completamento movimento della pinza, 1-completato, 0-non completato
81 int mc_queue_len; // Lunghezza della coda dei comandi di movimento
82 uint8_t collisionState; // Rilevamento collisione, 1-collisione, 0-nessuna collisione
83 int trajectory_pnum; // Numero del punto di traiettoria
84 uint8_t safety_stop0_state; // Segnale di arresto di sicurezza SI0
85 uint8_t safety_stop1_state; // Segnale di arresto di sicurezza SI1
86 uint8_t gripper_fault_id; // Numero pinza in errore
87 uint16_t gripper_fault; // Guasto pinza
88 uint16_t gripper_active; // Stato di attivazione della pinza
89 uint8_t gripper_position; // Posizione della pinza
90 int8_t gripper_speed; // Velocità della pinza
91 int8_t gripper_current; // Corrente della pinza
92 int gripper_temp; // Temperatura della pinza
93 int gripper_voltage; // Tensione della pinza
94 robot_aux_state aux_state; // Stato assi estesi 485
95 EXT_AXIS_STATUS extAxisStatus[4]; // Stato assi estesi UDP
96 uint16_t extDIState[8]; // Ingressi DI estesi
97 uint16_t extDOState[8]; // Uscite DO estese
98 uint16_t extAIState[4]; // Ingressi AI estesi
99 uint16_t extAOState[4]; // Uscite AO estese
100 int rbtEnableState; // Stato di abilitazione del robot
101 double jointDriverTorque[6]; // Coppia degli azionamenti articolari del robot
102 double jointDriverTemperature[6]; // Temperatura degli azionamenti articolari del robot
103 RobotTime robotTime; // Tempo di sistema del robot
104 int softwareUpgradeState; // Stato aggiornamento software del robot
105 uint16_t endLuaErrCode; // Stato esecuzione LUA terminale
106 uint16_t cl_analog_output[2]; // Uscite analogiche del cabinet di controllo
107 uint16_t tl_analog_output; // Uscita analogica dell'utensile
108 float gripperRotNum; // Numero corrente di giri della pinza rotante
109 uint8_t gripperRotSpeed; // Velocità corrente di rotazione della pinza rotante (percentuale)
110 uint8_t gripperRotTorque; // Coppia corrente di rotazione della pinza rotante (percentuale)
111 WELDING_BREAKOFF_STATE weldingBreakOffState; // Stato interruzione saldatura
112 double jt_tgt_tor[6]; // Coppia istruzionale articolare
113 int smartToolState; // Stato pulsanti del joystick SmartTool
114 float wideVoltageCtrlBoxTemp; // Temperatura del cabinet di controllo a tensione ampia
115 uint16_t wideVoltageCtrlBoxFanCurrent;// Corrente della ventola del cabinet di controllo a tensione ampia (mA)
116 double toolCoord[6]; // Sistema di coordinate utensile
117 double wobjCoord[6]; // Sistema di coordinate pezzo
118 double extoolCoord[6]; // Sistema di coordinate utensile esterno
119 double exAxisCoord[6]; // Sistema di coordinate assi estesi
120 double load; // Massa del carico
121 double loadCog[3]; // Centro di gravità del carico
122 double lastServoTarget[6]; // Posizione target dell'ultimo ServoJ nella coda
123 int servoJCmdNum; // Conteggio comandi servoJ
124 uint16_t check_sum; // Checksum
125}ROBOT_STATE_PKG;