model
SLAM.Examples.InertialOnly
Inertial navigation with filtered airframe IMU measurements
Public declarations
Explicit source declarations; dimensions, modifications and defaults are shown as written, without evaluation.
| Role | Name | Type | Dimensions / attributes / default | Description |
|---|---|---|---|---|
| parameter | accelTimeConstant | Real | (unit="s", min=1e-6) = 0.03 | Accelerometer filter time constant |
| parameter | gyroTimeConstant | Real | (unit="s", min=1e-6) = 0.02 | Gyroscope filter time constant |
| input | accel | Real | [3](each unit="m/s2", start={0, 0, 9.81}) | Specific force in body FLU coordinates |
| input | gyro | Real | [3](each unit="rad/s", each start=0) | Angular velocity in body FLU coordinates |
| output | position | Real | [3](each unit="m") | Position in world ENU coordinates |
| output | velocity | Real | [3](each unit="m/s") | Velocity in world ENU coordinates |
| output | quaternion | Real | [4] | Unit quaternion {w,x,y,z}, body to world |
| output | filteredAccel | Real | [3](each unit="m/s2") | Filtered specific force |
| output | filteredGyro | Real | [3](each unit="rad/s") | Filtered angular velocity |
Modelica declarations and implementation
Show parameters, interfaces and source
Parameters, inputs, outputs, defaults and equations from the source file.
model InertialOnly "Inertial navigation with filtered airframe IMU measurements"
import ModelicaInertial = SLAM.Inertial.ModelicaInertial;
parameter Real accelTimeConstant(unit="s", min=1e-6) = 0.03
"Accelerometer filter time constant";
parameter Real gyroTimeConstant(unit="s", min=1e-6) = 0.02
"Gyroscope filter time constant";
input Real accel[3](each unit="m/s2", start={0, 0, 9.81})
"Specific force in body FLU coordinates";
input Real gyro[3](each unit="rad/s", each start=0)
"Angular velocity in body FLU coordinates";
output Real position[3](each unit="m") "Position in world ENU coordinates";
output Real velocity[3](each unit="m/s") "Velocity in world ENU coordinates";
output Real quaternion[4] "Unit quaternion {w,x,y,z}, body to world";
output Real filteredAccel[3](each unit="m/s2") "Filtered specific force";
output Real filteredGyro[3](each unit="rad/s") "Filtered angular velocity";
ModelicaInertial estimator(
accel_tau=accelTimeConstant,
gyro_tau=gyroTimeConstant,
accel=accel,
gyro=gyro);
equation
position = estimator.position;
velocity = estimator.velocity;
quaternion = estimator.quaternion;
filteredAccel = estimator.filteredAccel;
filteredGyro = estimator.filteredGyro;
annotation (experiment(StopTime=10, Interval=0.01, Tolerance=1e-8));
end InertialOnly;