Autopilot Simulation¶
The autopilot is implemented in Simulink with an S-Function. This kind of block takes a C, C++, Fortran or even Matlab code, and implements it in a block containing a certain number of inputs and outputs. A typical Veronte s-function is shown below.

S-Function containing the autopilot embedded code
Inputs are described in the next table:
PIN | Signal Type | Description | Form | Size | Units |
---|---|---|---|---|---|
1 | Input | Static Pressure 1 | [pressure_measurement;sensor temperature] | 2x1 | Pa / K |
2 | Input | Static Pressure 2 | [pressure_measurement;sensor temperature] | 2x1 | Pa / K |
3 | Input | Static Pressure 3 | [pressure_measurement;sensor temperature] | 2x1 | Pa / K |
4 | Input | Dynamic Pressure | [pressure_measurement;sensor temperature] | 2x1 | Pa / K |
5 | Input | IMU 1 | [acc_x;acc_y;acc_z;gyr_x;gyr_y;gyr_z;sensor temperature] | 7x1 | m/s^2 / m/s / K |
6 | Input | IMU 2 | [acc_x;acc_y;acc_z;gyr_x;gyr_y;gyr_z;sensor temperature] | 7x1 | m/s^2 / m/s / K |
7 | Input | IMU 3 | [acc_x;acc_y;acc_z;gyr_x;gyr_y;gyr_z;sensor temperature] | 7x1 | m/s^2 / m/s / K |
8 | Input | Magnetometer 1 | [mag_x;mag_y;mag_z;sensor temperature] | 4x1 | T |
9 | Input | Magnetometer 2 | [mag_x;mag_y;mag_z;sensor temperature] | 4x1 | T |
10 | Input | Magnetometer 3 | [mag_x;mag_y;mag_z;sensor temperature] | 4x1 | T |
11 | Input | Magnetometer 4 | [mag_x;mag_y;mag_z;sensor temperature] | 4x1 | T |
12 | Input | GNSS 1 | [1;3;lon;lat;alt;hr_accu;vt_accu;v_n;v_e;v_d;v_accu] | 11x1 | deg 10^7 / mm / mm/s |
13 | Input | GNSS 2 | [1;3;lon;lat;alt;hr_accu;vt_accu;v_n;v_e;v_d;v_accu] | 11x1 | deg 10^7 / mm / mm/s |
14 | Input | Relative Position 1 | [1;x_rel;y_rel;z_rel;d_x;d_y;d_z;x_accu;y_accu;z_accu] | 10x1 | cm / mm * 10^-1 |
15 | Input | Relative Position 2 | [1;x_rel;y_rel;z_rel;d_x;d_y;d_z;x_accu;y_accu;z_accu] | 10x1 | cm / mm * 10^-1 |
16 | Input | GPS Time | [week_number;seconds_of_week] | 2x1 |
|
17 | Input | Lidar 1 | [lidar_measurement] | 1x1 | cm |
18 | Input | Lidar 2 | [lidar_measurement] | 1x1 | cm |
19 | Input | Lidar 3 | [lidar_measurement] | 1x1 | cm |
20 | Input | Lidar 4 | [lidar_measurement] | 1x1 | cm |
21 | Input | Lidar 5 | [lidar_measurement] | 1x1 | cm |
22 | Input | ID Bit Var | [Var_IDs] | 50x1 | m |
23 | Input | ID Unsigned Var | [Var_IDs] | 50x1 | m |
24 | Input | ID Real Var | [Var_IDs] | 50x1 | m |
25 | Input | ADCs | [adc(1-17)] | 17x1 | |
26 | Input | SCIA Data | [serial_data] | 1024x1 | |
27 | Input | SCIA Length | [serial_length] | 1x1 | |
28 | Input | SCIB Data | [serial_data] | 1024x1 | |
29 | Input | SCIB Length | [serial_length] | 1x1 | |
30 | Input | SCIC Data | [serial_data] | 1024x1 | |
31 | Input | SCIC Length | [serial_length] | 1x1 | |
32 | Input | SCID Data | [serial_data] | 1024x1 | |
33 | Input | SCID Length | [serial_length] | 1x1 | |
34 | Input | USB Data | [serial_data] | 1024x1 | |
35 | Input | USB Length | [serial_length] | 1x1 |
Outputs are the following:
PIN | Signal Type | Description | Form | Size | ||
---|---|---|---|---|---|
1 | Output | Control Outputs | [control_outputs(1-20)] | 20x1 | ||
2 | Output | Servo Values | [servos(1-32)] | 32x1 | |
3 | Output | Position | [lat;lon;alt] | 3x1 | rad / m |
4 | Output | Heights | [msl,agl] | 2x1 | m |
5 | Output | Velocities | [longitudinal_v;lateral_v;velocity(module)] | 3x1 | m/s |
6 | Output | IAS TAS GS | [ias,tas,gs] | 3x1 | m/s |
7 | Output | MSL | [msl_from_qnh;msl_from_ISA] | 2x1 | m |
8 | Output | Angle of Attack / Sideslip | [angle_of_attack;sideslip] | 2x1 | rad |
9 | Output | Q_Infinty | [dynamic_pressure] | 1x1 | Pa |
10 | Output | IAS RAW | [ias_raw] | 1x1 | m/s |
11 | Output | Tangential Acceleration | [tangential_acceleration] | 1x1 | m/s^2 |
12 | Input | Body Velocities | [lon_v;lat_v;vertical_v] | 3x1 | m/s |
13 | Output | Angular Velocities | [roll_rate;pitch_rate;yaw_rate] | 3x1 | rad/s |
14 | Output | Angular Acceleration | [acc_z_axis;acc_y_axis;acc_x_axis] | 3x1 | rad/^2 |
15 | Output | Acceleration NED | [acc_north;acc_east;acc_down] | 3x1 | m/s^2 |
16 | Output | Velocity NED | [v_north;v_east;v_down] ) | 3x1 | m/s |
17 | Output | Angles | [Yaw;Pitch;Roll] ) | 3x1 | rad |
18 | Output | Co-Angles | [co-Yaw;co-Pitch;co-Roll] | 3x1 | rad |
19 | Output | Aerodynamic Angles | [heading,flight_path;bank_angle] | 3x1 | rad |
20 | Output | Acceleration Body | [acc_x,acc_y;acc_z] | 3x1 | m/s^2 |
21 | Output | Load factor | [nx;ny;nz] | 3x1 | |
22 | Output | SCIA Data | [serial_data] | 1024x1 | |
23 | Output | SCIA Length | [serial_length] | 1x1 | |
24 | Output | SCIB Data | [serial_data] | 1024x1 | |
25 | Output | SCIB Length | [serial_length] | 1x1 | |
26 | Output | SCIC Data | [serial_data] | 1024x1 | |
27 | Output | SCIC Length | [serial_length] | 1x1 | |
28 | Output | SCID Data | [serial_data] | 1024x1 | |
29 | Output | SCID Length | [serial_length] | 1x1 | |
30 | Output | USB Data | [serial_data] | 1024x1 | |
31 | Output | USB Length | [serial_length] ) | 1x1 | |
32 | Output | Unsigned Variables | [selected variables(1-50)] | 50x1 | |
33 | Output | Bit Variables | [selected variables(1-50)] | 50x1 | |
34 | Output | Real Variables | [selected variables(1-50)] | 50x1 |