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 |