Extened Kalman filter based on https://en.wikipedia.org/wiki/Extended_Kalman_filter
Designed to merge only IMU and OptiTrack/VICON (no baro, sonar, GPS, ...)
- predict attitude and path with gyroscopes and accelerometers
- correct attitude and path with external pose and position message
- estimate gyro and accelerometer biases
Bypassed when simulating.
Example for airframe file
Add to your firmware section:
<module name="ins_ext_pose"/>
Module functions
Init Functions
These initialization functions are called once on startup.
Periodic Functions
These functions are called periodically at the specified frequency from the module periodic loop.
- ins_ext_pose_run()
- Running at maximum module frequency.
- Autorun: LOCK
Periodic function automatically starts after init and can't be stopped.
Datalink Functions
Whenever the specified datalink message is received, the corresponing handler function is called.
- on message EXTERNAL_POSE call ins_ext_pose_msg_update(buf)
Files
Header Files
The following headers are automatically included in modules.h
Source Files
Raw ins_ext_pose.xml file:
<!DOCTYPE module SYSTEM "module.dtd">
<module name="ins_ext_pose" dir="ins">
<doc>
<description>
Extened Kalman filter based on https://en.wikipedia.org/wiki/Extended_Kalman_filter
Designed to merge only IMU and OptiTrack/VICON (no baro, sonar, GPS, ...)
- predict attitude and path with gyroscopes and accelerometers
- correct attitude and path with external pose and position message
- estimate gyro and accelerometer biases
Bypassed when simulating.
</description>
</doc>
<dep>
<depends>@gps,@datalink,@imu</depends>
<provides>ahrs,ins</provides>
</dep>
<header>
<file name="ins_ext_pose.h"/>
</header>
<init fun="ins_ext_pose_init()"/>
<periodic fun="ins_ext_pose_run()"/>
<datalink message="EXTERNAL_POSE" fun="ins_ext_pose_msg_update(buf)"/>
<makefile target="ap">
<define name="INS_TYPE_H" value="modules/ins/ins_ext_pose.h" type="string"/>
<define name="INS_EXT_POSE" value="TRUE"/>
<file name="ins_ext_pose.c"/>
<file name="ins.c"/>
</makefile>
</module>