diff --git a/.github/workflows/ekf_functional_change_indicator.yml b/.github/workflows/ekf_functional_change_indicator.yml new file mode 100644 index 0000000000..c453ba8ec4 --- /dev/null +++ b/.github/workflows/ekf_functional_change_indicator.yml @@ -0,0 +1,20 @@ +name: EKF Change Indicator + +on: pull_request + +jobs: + unit_tests: + runs-on: ubuntu-latest + container: px4io/px4-dev-base-focal:2021-05-04 + steps: + - uses: actions/checkout@v2.3.1 + - name: checkout newest version of branch + run: | + git fetch origin pull/${{github.event.pull_request.number}}/head:${{github.head_ref}} + git checkout ${GITHUB_HEAD_REF} + - name: main test + run: cd ${GITHUB_WORKSPACE}/src/lib/ecl; make test + working-directory: src/lib/ecl + - name: Check if there is a functional change + run: git diff --exit-code + working-directory: src/lib/ecl/test/change_indication diff --git a/.github/workflows/ekf_standalone_build_tests.yml b/.github/workflows/ekf_standalone_build_tests.yml new file mode 100644 index 0000000000..5fc09ad8de --- /dev/null +++ b/.github/workflows/ekf_standalone_build_tests.yml @@ -0,0 +1,56 @@ + +name: EKF Build Tests + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + Linux-GCC: + runs-on: ubuntu-latest + container: px4io/px4-dev-base-focal:2021-05-04 + steps: + - uses: actions/checkout@v1 + - name: main build + run: make + working-directory: src/lib/ecl + - name: clean build + run: make clean + working-directory: src/lib/ecl + - name: main test + run: make test + working-directory: src/lib/ecl + Linux-Clang: + runs-on: ubuntu-latest + container: px4io/px4-dev-clang:2021-05-04 + env: + CC: clang + CXX: clang++ + steps: + - uses: actions/checkout@v1 + - name: main build + run: make + working-directory: src/lib/ecl + - name: clean build + run: make clean + working-directory: src/lib/ecl + - name: main test + run: make test + working-directory: src/lib/ecl + Mac-OS: + runs-on: macos-latest + steps: + - uses: actions/checkout@v1 + - name: main build + run: make + working-directory: src/lib/ecl + - name: clean build + run: make clean + working-directory: src/lib/ecl + - name: main test + run: make test + working-directory: src/lib/ecl diff --git a/.github/workflows/ekf_update_change_indicator.yml b/.github/workflows/ekf_update_change_indicator.yml new file mode 100644 index 0000000000..fc23b7b2f4 --- /dev/null +++ b/.github/workflows/ekf_update_change_indicator.yml @@ -0,0 +1,27 @@ +name: EKF Update Change Indicator + +on: push + +jobs: + unit_tests: + runs-on: ubuntu-latest + container: px4io/px4-dev-base-focal:2021-05-04 + env: + GIT_COMMITTER_EMAIL: bot@px4.io + GIT_COMMITTER_NAME: PX4BuildBot + steps: + - uses: actions/checkout@v2.3.1 + - name: main test updates change indication files + run: cd ${GITHUB_WORKSPACE}/src/lib/ecl; make test + - name: Check if there exists diff and save result in variable + run: echo "CHANGE_INDICATED=$(git diff --exit-code --output=/dev/null || echo $?)" >> $GITHUB_ENV + working-directory: src/lib/ecl/test/change_indication + - name: auto-commit any changes to change indication + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: '[AUTO COMMIT] update change indication' + commit_user_name: ${GIT_COMMITTER_NAME} + commit_user_email: ${GIT_COMMITTER_EMAIL} + - if: ${{env.CHANGE_INDICATED}} + name: if there is a functional change, fail check + run: exit 1 diff --git a/.gitmodules b/.gitmodules index 1e5a4bc513..4b7e942c65 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,10 +18,6 @@ path = src/lib/matrix url = https://github.com/PX4/PX4-Matrix.git branch = master -[submodule "src/lib/ecl"] - path = src/lib/ecl - url = https://github.com/PX4/PX4-ECL.git - branch = master [submodule "boards/atlflight/cmake_hexagon"] path = boards/atlflight/cmake_hexagon url = https://github.com/PX4/cmake_hexagon.git diff --git a/src/examples/fake_magnetometer/CMakeLists.txt b/src/examples/fake_magnetometer/CMakeLists.txt index b60f611f5f..65ca4ccce7 100644 --- a/src/examples/fake_magnetometer/CMakeLists.txt +++ b/src/examples/fake_magnetometer/CMakeLists.txt @@ -41,6 +41,5 @@ px4_add_module( DEPENDS drivers_magnetometer ecl_geo - git_ecl px4_work_queue ) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index e0c838a873..d76d10128c 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -31,7 +31,6 @@ # ############################################################################ -px4_add_git_submodule(TARGET git_ecl PATH "ecl") px4_add_git_submodule(TARGET git_matrix PATH "matrix") px4_add_git_submodule(TARGET git_monocypher PATH "crypto/monocypher") diff --git a/src/lib/ecl b/src/lib/ecl deleted file mode 160000 index ca4932cfc0..0000000000 --- a/src/lib/ecl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ca4932cfc0debacd81dfd1182634d91afca5ecb3 diff --git a/src/lib/ecl/.clang-format b/src/lib/ecl/.clang-format new file mode 100644 index 0000000000..c8ed09f5cc --- /dev/null +++ b/src/lib/ecl/.clang-format @@ -0,0 +1,117 @@ +--- +Language: Cpp +# BasedOnStyle: Google +AccessModifierOffset: -8 # Modified +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Linux +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: true +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^' + Priority: 2 + - Regex: '^<.*\.h>' + Priority: 1 + - Regex: '^<.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 8 # Modified +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true # Modified +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PenaltyBreakAssignment: 200 # Modified +PenaltyBreakBeforeFirstCallParameter: 20 # Modified +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +RawStringFormats: + - Delimiter: pb + Language: TextProto + BasedOnStyle: google +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Auto +TabWidth: 8 # Modified +UseTab: Always # Modified +... + diff --git a/src/lib/ecl/.editorconfig b/src/lib/ecl/.editorconfig new file mode 100644 index 0000000000..73387be0f2 --- /dev/null +++ b/src/lib/ecl/.editorconfig @@ -0,0 +1,5 @@ +# EditorConfig https://EditorConfig.org +root = true + +[{Makefile,CMakeLists.txt}] +indent_style = tab diff --git a/src/lib/ecl/.gitignore b/src/lib/ecl/.gitignore new file mode 100644 index 0000000000..9fd936329f --- /dev/null +++ b/src/lib/ecl/.gitignore @@ -0,0 +1,18 @@ +*.DS_Store +*.gcov +*~ +*.orig + +.cache/ +build/ + +*/*.a +.ninja_deps +.ninja_log +build.ninja +cmake_install.cmake +CMakeCache.txt +CMakeFiles +compile_commands.json +matrix-prefix/ +rules.ninja diff --git a/src/lib/ecl/.travis.yml b/src/lib/ecl/.travis.yml new file mode 100644 index 0000000000..1b8571f0a7 --- /dev/null +++ b/src/lib/ecl/.travis.yml @@ -0,0 +1,31 @@ + +sudo: required + +services: + - docker + +language: cpp + +matrix: + fast_finish: true + include: + - env: BUILD_TARGET=coverity_scan + dist: trusty + if: branch = coverity_scan + +before_install: + - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca- + +script: + - make distclean + - make + +addons: + coverity_scan: + project: + name: "PX4/ecl" + description: "Build submitted via Travis CI" + notification_email: ci@px4.io + build_command_prepend: "make distclean" + build_command: "make" + branch_pattern: coverity_scan diff --git a/src/lib/ecl/AlphaFilter/AlphaFilter.hpp b/src/lib/ecl/AlphaFilter/AlphaFilter.hpp new file mode 100644 index 0000000000..ae2c344cc6 --- /dev/null +++ b/src/lib/ecl/AlphaFilter/AlphaFilter.hpp @@ -0,0 +1,105 @@ +/**************************************************************************** + * + * Copyright (c) 2019-2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file AlphaFilter.hpp + * + * @brief First order "alpha" IIR digital filter also known as leaky integrator or forgetting average. + * + * @author Mathieu Bresciani + * @author Matthias Grob + */ + +#pragma once + +#include + +template +class AlphaFilter +{ +public: + AlphaFilter() = default; + explicit AlphaFilter(float alpha) : _alpha(alpha) {} + + ~AlphaFilter() = default; + + /** + * Set filter parameters for time abstraction + * + * Both parameters have to be provided in the same units. + * + * @param sample_interval interval between two samples + * @param time_constant filter time constant determining convergence + */ + void setParameters(float sample_interval, float time_constant) + { + const float denominator = time_constant + sample_interval; + + if (denominator > FLT_EPSILON) { + setAlpha(sample_interval / denominator); + } + } + + /** + * Set filter parameter alpha directly without time abstraction + * + * @param alpha [0,1] filter weight for the previous state. High value - long time constant. + */ + void setAlpha(float alpha) { _alpha = alpha; } + + /** + * Set filter state to an initial value + * + * @param sample new initial value + */ + void reset(const T &sample) { _filter_state = sample; } + + /** + * Add a new raw value to the filter + * + * @return retrieve the filtered result + */ + const T &update(const T &sample) + { + _filter_state = updateCalculation(sample); + return _filter_state; + } + + const T &getState() const { return _filter_state; } + +protected: + T updateCalculation(const T &sample) { return (1.f - _alpha) * _filter_state + _alpha * sample; } + + float _alpha{0.f}; + T _filter_state{}; +}; diff --git a/src/lib/ecl/CMakeLists.txt b/src/lib/ecl/CMakeLists.txt new file mode 100644 index 0000000000..603d0ca6f9 --- /dev/null +++ b/src/lib/ecl/CMakeLists.txt @@ -0,0 +1,243 @@ +############################################################################ +# +# Copyright (c) 2015-2018 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +cmake_minimum_required(VERSION 3.0) + +project(ECL CXX) + +if(NOT CMAKE_BUILD_TYPE) + # force debug builds if we test ECL as standalone + if(BUILD_TESTING AND CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type" FORCE) + else() + set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build type" FORCE) + endif() +endif() +message(STATUS "build type is ${CMAKE_BUILD_TYPE}") + +set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel;Coverage") + +if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git) + execute_process( + COMMAND git describe --always --tags + OUTPUT_VARIABLE git_tag + OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endif() + +message(STATUS "PX4 ECL: Very lightweight Estimation & Control Library ${git_tag}") + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# code coverage support +option(COV_HTML "Display html for coverage" OFF) +option(ECL_ASAN "Enable ECL address sanitizer" OFF) + +if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang")) + set(CMAKE_CXX_FLAGS_COVERAGE + "--coverage -ftest-coverage -fdiagnostics-absolute-paths -O0 -fprofile-arcs -fno-inline-functions -fno-elide-constructors" + CACHE STRING "Flags used by the C++ compiler during coverage builds" FORCE) + set(CMAKE_EXE_LINKER_FLAGS_COVERAGE + "-ftest-coverage -fdiagnostics-absolute-paths" + CACHE STRING "Flags used for linking binaries during coverage builds" FORCE) +else() + set(CMAKE_CXX_FLAGS_COVERAGE + # Bring back -fprofile-abs-path when GCC 9 is available on Ubuntu LTS + "--coverage -fprofile-arcs -ftest-coverage -O0 -fno-default-inline -fno-inline -fno-inline-small-functions -fno-elide-constructors" + CACHE STRING "Flags used by the C++ compiler during coverage builds" FORCE) + set(CMAKE_EXE_LINKER_FLAGS_COVERAGE + "--coverage -ftest-coverage -lgcov" + CACHE STRING "Flags used for linking binaries during coverage builds" FORCE) +endif() + +mark_as_advanced(CMAKE_CXX_FLAGS_COVERAGE CMAKE_C_FLAGS_COVERAGE CMAKE_EXE_LINKER_FLAGS_COVERAGE) + + +set(ECL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE STRING "ECL source location" FORCE) + +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + # ECL standalone build + add_definitions(-DECL_STANDALONE) + set(ECL_STANDALONE 1) + + add_custom_target(prebuild_targets) + + if(MSVC) + add_compile_options( + /W4 + /WX + + /D_USE_MATH_DEFINES + + /wd4100 # warning C4100: unreferenced formal parameter + /wd4244 # warning C4244: '=': conversion from 'double' to 'int32_t', possible loss of data + ) + elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + add_compile_options( + -pedantic + + -Wall + -Wextra + -Werror + + -Wno-missing-field-initializers # ignore for GCC 4.8 support + ) + endif() + + if(BUILD_TESTING) + + include(CTest) + + option(ECL_TESTS "Build ECL tests" ON) + + add_custom_target(check + COMMAND GTEST_COLOR=1 ${CMAKE_CTEST_COMMAND} --output-on-failure -C Debug + DEPENDS ecl_EKF + USES_TERMINAL + ) + endif() + + # fetch latest matrix from github + include(ExternalProject) + ExternalProject_Add(matrix + GIT_REPOSITORY "https://github.com/PX4/Matrix.git" + GIT_TAG f981cea2aebfc9cfd930dce73ba6d4d6681e99c1 + UPDATE_COMMAND "" + PATCH_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + ) + add_dependencies(prebuild_targets matrix) + include_directories(${CMAKE_BINARY_DIR}/matrix-prefix/src/matrix) + +endif() + +if(NOT (${CMAKE_BUILD_TYPE} MATCHES "Coverage") AND NOT (${CMAKE_BUILD_TYPE} MATCHES "Debug")) + if(MAX_CUSTOM_OPT_LEVEL) + add_compile_options(${MAX_CUSTOM_OPT_LEVEL}) + endif() +endif() + +# santiziers (ASAN) +if(ECL_ASAN) + message(STATUS "ecl address sanitizer enabled ") + + # environment variables + # ASAN_OPTIONS=detect_stack_use_after_return=1 + # ASAN_OPTIONS=check_initialization_order=1 + + add_compile_options( + -fsanitize=address + -g3 + -O1 + -fno-omit-frame-pointer + ) + + set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address) +endif() + +add_subdirectory(airdata) +add_subdirectory(EKF) +add_subdirectory(geo) +add_subdirectory(geo_lookup) + +if(BUILD_TESTING AND CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + add_subdirectory(test) +endif() + +#============================================================================= +# Coverage +# +if (${CMAKE_BUILD_TYPE} STREQUAL "Coverage") + + add_custom_target(coverage + COMMAND ${CMAKE_CTEST_COMMAND} + COMMAND lcov --capture --directory . --output-file coverage.info + COMMAND lcov --remove coverage.info --output-file coverage.info '/usr/*' '${CMAKE_BINARY_DIR}/*' # filter out system + COMMAND lcov --summary coverage.info + WORKING_DIRECTORY ${CMAKE_BUILD_DIR} + DEPENDS check + ) + + add_custom_target(coverage_html + COMMAND genhtml coverage.info --output-directory out + WORKING_DIRECTORY ${CMAKE_BUILD_DIR} + DEPENDS coverage + ) + + add_custom_target(coverage_html_view + COMMAND x-www-browser out/index.html + WORKING_DIRECTORY ${CMAKE_BUILD_DIR} + DEPENDS coverage_html + ) + +endif() + +#============================================================================= +# Doxygen +# +# Only in standalone build +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + + option(BUILD_DOXYGEN "Build doxygen documentation" OFF) + + if (BUILD_DOXYGEN) + find_package(Doxygen) + if (DOXYGEN_FOUND) + # set input and output files + set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in) + set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) + + # request to configure the file + configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + + # note the option ALL which allows to build the docs together with the application + add_custom_target(doxygen ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating documentation with Doxygen" + DEPENDS + VERBATIM + USES_TERMINAL + ) + + else() + message(FATAL_ERROR "Doxygen needs to be installed to generate documentation") + endif() + endif() +endif() + diff --git a/src/lib/ecl/CONTRIBUTING.md b/src/lib/ecl/CONTRIBUTING.md new file mode 100644 index 0000000000..263a27e796 --- /dev/null +++ b/src/lib/ecl/CONTRIBUTING.md @@ -0,0 +1,36 @@ +# Contribution Guidelines + +## Auto-Formatting +ECL uses clang-format to auto-format the code. Currently it is using the clang-format-6.0. +The enforced style is based on the google style. Google's [Style Guide](https://google.github.io/styleguide/cppguide.html) is the place to look for advice. +The format is not enforced on all files. The list of files on which the auto-format checks are run on can be found in `tools/format.sh` + +On Ubuntu (tested on 18.04) the following command can be used to check if the code is complying with the format requirements +``` +make check_format +``` +To auto-format the code run +``` +make format +``` + +## Continuous Integration +There are multiple checks run on a submitted PR: + +| Test | Description | +| ------------- | ------------- | +| - **Build tests** | Checks if the submitted code is building on various platforms. | +| - **Unit tests** | Run checks if the code is satisfying test cases in `tests/` and report code coverage. | +| - **Format checks** | Check if the files specified in `/tools/format.sh` match the style specified in `.clang-format`. Run [auto-formatting](#Auto-Formatting) | +| - **Firmware build tests**| Pulls PX4/Firmware and checks if the current branch of ECL compiles with it. It tries to checkout a branch in PX4/Firmware with the name matching the current ECL branch name. If a branch with that name does not exist then it will checkout master. | + +## Unit tests +# How to run the tests +The test can be executed by running: +``` +make test +``` + +# How to add a test +tbd + diff --git a/src/lib/ecl/EKF/CMakeLists.txt b/src/lib/ecl/EKF/CMakeLists.txt new file mode 100644 index 0000000000..9e72161ac4 --- /dev/null +++ b/src/lib/ecl/EKF/CMakeLists.txt @@ -0,0 +1,63 @@ +############################################################################ +# +# Copyright (c) 2015-2018 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(ecl_EKF + airspeed_fusion.cpp + control.cpp + mag_control.cpp + covariance.cpp + drag_fusion.cpp + ekf.cpp + ekf_helper.cpp + estimator_interface.cpp + gps_checks.cpp + mag_fusion.cpp + optflow_fusion.cpp + sideslip_fusion.cpp + terrain_estimator.cpp + vel_pos_fusion.cpp + gps_yaw_fusion.cpp + imu_down_sampler.cpp + EKFGSF_yaw.cpp + sensor_range_finder.cpp + utils.cpp +) + +add_dependencies(ecl_EKF prebuild_targets) +target_compile_definitions(ecl_EKF PRIVATE -DMODULE_NAME="ecl/EKF") +target_include_directories(ecl_EKF PUBLIC ${ECL_SOURCE_DIR}) +target_link_libraries(ecl_EKF PRIVATE ecl_geo ecl_geo_lookup) + +set_target_properties(ecl_EKF PROPERTIES PUBLIC_HEADER "ekf.h") + +target_compile_options(ecl_EKF PRIVATE -fno-associative-math) diff --git a/src/lib/ecl/EKF/EKFGSF_yaw.cpp b/src/lib/ecl/EKF/EKFGSF_yaw.cpp new file mode 100644 index 0000000000..f382e9d246 --- /dev/null +++ b/src/lib/ecl/EKF/EKFGSF_yaw.cpp @@ -0,0 +1,524 @@ +#include "EKFGSF_yaw.h" +#include + +EKFGSF_yaw::EKFGSF_yaw() +{ + // this flag must be false when we start + _ahrs_ekf_gsf_tilt_aligned = false; + + // these objects are initialised in initialise() before being used internally, but can be reported for logging before then + memset(&_ahrs_ekf_gsf, 0, sizeof(_ahrs_ekf_gsf)); + memset(&_ekf_gsf, 0, sizeof(_ekf_gsf)); + _gsf_yaw = 0.0f; + _ahrs_accel.zero(); +} + +void EKFGSF_yaw::update(const imuSample& imu_sample, + bool run_EKF, // set to true when flying or movement is suitable for yaw estimation + float airspeed, // true airspeed used for centripetal accel compensation - set to 0 when not required. + const Vector3f &imu_gyro_bias) // estimated rate gyro bias (rad/sec) +{ + // copy to class variables + _delta_ang = imu_sample.delta_ang; + _delta_vel = imu_sample.delta_vel; + _delta_ang_dt = imu_sample.delta_ang_dt; + _delta_vel_dt = imu_sample.delta_vel_dt; + _run_ekf_gsf = run_EKF; + _true_airspeed = airspeed; + + // to reduce effect of vibration, filter using an LPF whose time constant is 1/10 of the AHRS tilt correction time constant + const float filter_coef = fminf(10.0f * _delta_vel_dt * _tilt_gain, 1.0f); + const Vector3f accel = _delta_vel / fmaxf(_delta_vel_dt, 0.001f); + _ahrs_accel = _ahrs_accel * (1.0f - filter_coef) + accel * filter_coef; + + // Initialise states first time + if (!_ahrs_ekf_gsf_tilt_aligned) { + // check for excessive acceleration to reduce likelihood of large initial roll/pitch errors + // due to vehicle movement + const float accel_norm_sq = accel.norm_squared(); + const float upper_accel_limit = CONSTANTS_ONE_G * 1.1f; + const float lower_accel_limit = CONSTANTS_ONE_G * 0.9f; + const bool ok_to_align = (accel_norm_sq > sq(lower_accel_limit)) && (accel_norm_sq < sq(upper_accel_limit)); + if (ok_to_align) { + initialiseEKFGSF(); + ahrsAlignTilt(); + _ahrs_ekf_gsf_tilt_aligned = true; + } + return; + } + + // calculate common values used by the AHRS complementary filter models + _ahrs_accel_norm = _ahrs_accel.norm(); + + // AHRS prediction cycle for each model - this always runs + _ahrs_accel_fusion_gain = ahrsCalcAccelGain(); + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index ++) { + predictEKF(model_index); + } + + // The 3-state EKF models only run when flying to avoid corrupted estimates due to operator handling and GPS interference + if (_run_ekf_gsf && _vel_data_updated) { + if (!_ekf_gsf_vel_fuse_started) { + initialiseEKFGSF(); + ahrsAlignYaw(); + // Initialise to gyro bias estimate from main filter because there could be a large + // uncorrected rate gyro bias error about the gravity vector + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index ++) { + _ahrs_ekf_gsf[model_index].gyro_bias = imu_gyro_bias; + } + _ekf_gsf_vel_fuse_started = true; + } else { + bool bad_update = false; + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index ++) { + // subsequent measurements are fused as direct state observations + if (!updateEKF(model_index)) { + bad_update = true; + } + } + + if (!bad_update) { + float total_weight = 0.0f; + // calculate weighting for each model assuming a normal distribution + const float min_weight = 1e-5f; + uint8_t n_weight_clips = 0; + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index ++) { + _model_weights(model_index) = gaussianDensity(model_index) * _model_weights(model_index); + if (_model_weights(model_index) < min_weight) { + n_weight_clips++; + _model_weights(model_index) = min_weight; + } + total_weight += _model_weights(model_index); + } + + // normalise the weighting function + if (n_weight_clips < N_MODELS_EKFGSF) { + _model_weights /= total_weight; + } else { + // all weights have collapsed due to excessive innovation variances so reset filters + initialiseEKFGSF(); + } + } + } + } else if (_ekf_gsf_vel_fuse_started && !_run_ekf_gsf) { + // wait to fly again + _ekf_gsf_vel_fuse_started = false; + } + + // Calculate a composite yaw vector as a weighted average of the states for each model. + // To avoid issues with angle wrapping, the yaw state is converted to a vector with length + // equal to the weighting value before it is summed. + Vector2f yaw_vector; + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index ++) { + yaw_vector(0) += _model_weights(model_index) * cosf(_ekf_gsf[model_index].X(2)); + yaw_vector(1) += _model_weights(model_index) * sinf(_ekf_gsf[model_index].X(2)); + } + _gsf_yaw = atan2f(yaw_vector(1),yaw_vector(0)); + + // calculate a composite variance for the yaw state from a weighted average of the variance for each model + // models with larger innovations are weighted less + _gsf_yaw_variance = 0.0f; + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index ++) { + const float yaw_delta = wrap_pi(_ekf_gsf[model_index].X(2) - _gsf_yaw); + _gsf_yaw_variance += _model_weights(model_index) * (_ekf_gsf[model_index].P(2,2) + yaw_delta * yaw_delta); + } + + // prevent the same velocity data being used more than once + _vel_data_updated = false; +} + +void EKFGSF_yaw::ahrsPredict(const uint8_t model_index) +{ + // generate attitude solution using simple complementary filter for the selected model + + const Vector3f ang_rate = _delta_ang / fmaxf(_delta_ang_dt, 0.001f) - _ahrs_ekf_gsf[model_index].gyro_bias; + + const Dcmf R_to_body = _ahrs_ekf_gsf[model_index].R.transpose(); + const Vector3f gravity_direction_bf = R_to_body.col(2); + + // Perform angular rate correction using accel data and reduce correction as accel magnitude moves away from 1 g (reduces drift when vehicle picked up and moved). + // During fixed wing flight, compensate for centripetal acceleration assuming coordinated turns and X axis forward + Vector3f tilt_correction; + if (_ahrs_accel_fusion_gain > 0.0f) { + + Vector3f accel = _ahrs_accel; + + if (_true_airspeed > FLT_EPSILON) { + // Calculate body frame centripetal acceleration with assumption X axis is aligned with the airspeed vector + // Use cross product of body rate and body frame airspeed vector + const Vector3f centripetal_accel_bf = Vector3f(0.0f, _true_airspeed * ang_rate(2), - _true_airspeed * ang_rate(1)); + + // correct measured accel for centripetal acceleration + accel -= centripetal_accel_bf; + } + + tilt_correction = (gravity_direction_bf % accel) * _ahrs_accel_fusion_gain / _ahrs_accel_norm; + + } + + // Gyro bias estimation + constexpr float gyro_bias_limit = 0.05f; + const float spinRate = ang_rate.length(); + if (spinRate < 0.175f) { + _ahrs_ekf_gsf[model_index].gyro_bias -= tilt_correction * (_gyro_bias_gain * _delta_ang_dt); + _ahrs_ekf_gsf[model_index].gyro_bias = matrix::constrain(_ahrs_ekf_gsf[model_index].gyro_bias, -gyro_bias_limit, gyro_bias_limit); + } + + // delta angle from previous to current frame + const Vector3f delta_angle_corrected = _delta_ang + (tilt_correction - _ahrs_ekf_gsf[model_index].gyro_bias) * _delta_ang_dt; + + // Apply delta angle to rotation matrix + _ahrs_ekf_gsf[model_index].R = ahrsPredictRotMat(_ahrs_ekf_gsf[model_index].R, delta_angle_corrected); + +} + +void EKFGSF_yaw::ahrsAlignTilt() +{ + // Rotation matrix is constructed directly from acceleration measurement and will be the same for + // all models so only need to calculate it once. Assumptions are: + // 1) Yaw angle is zero - yaw is aligned later for each model when velocity fusion commences. + // 2) The vehicle is not accelerating so all of the measured acceleration is due to gravity. + + // Calculate earth frame Down axis unit vector rotated into body frame + const Vector3f down_in_bf = -_delta_vel.normalized(); + + // Calculate earth frame North axis unit vector rotated into body frame, orthogonal to 'down_in_bf' + const Vector3f i_vec_bf(1.0f,0.0f,0.0f); + Vector3f north_in_bf = i_vec_bf - down_in_bf * (i_vec_bf.dot(down_in_bf)); + north_in_bf.normalize(); + + // Calculate earth frame East axis unit vector rotated into body frame, orthogonal to 'down_in_bf' and 'north_in_bf' + const Vector3f east_in_bf = down_in_bf % north_in_bf; + + // Each column in a rotation matrix from earth frame to body frame represents the projection of the + // corresponding earth frame unit vector rotated into the body frame, eg 'north_in_bf' would be the first column. + // We need the rotation matrix from body frame to earth frame so the earth frame unit vectors rotated into body + // frame are copied into corresponding rows instead. + Dcmf R; + R.setRow(0, north_in_bf); + R.setRow(1, east_in_bf); + R.setRow(2, down_in_bf); + + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index++) { + _ahrs_ekf_gsf[model_index].R = R; + } +} + +void EKFGSF_yaw::ahrsAlignYaw() +{ + // Align yaw angle for each model + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index++) { + Dcmf& R = _ahrs_ekf_gsf[model_index].R; + const float yaw = wrap_pi(_ekf_gsf[model_index].X(2)); + R = updateYawInRotMat(yaw, R); + + _ahrs_ekf_gsf[model_index].aligned = true; + } +} + +void EKFGSF_yaw::predictEKF(const uint8_t model_index) +{ + // generate an attitude reference using IMU data + ahrsPredict(model_index); + + // we don't start running the EKF part of the algorithm until there are regular velocity observations + if (!_ekf_gsf_vel_fuse_started) { + return; + } + + // Calculate the yaw state using a projection onto the horizontal that avoids gimbal lock + const Dcmf& R = _ahrs_ekf_gsf[model_index].R; + _ekf_gsf[model_index].X(2) = shouldUse321RotationSequence(R) ? + getEuler321Yaw(R) : + getEuler312Yaw(R); + + // calculate delta velocity in a horizontal front-right frame + const Vector3f del_vel_NED = _ahrs_ekf_gsf[model_index].R * _delta_vel; + const float cos_yaw = cosf(_ekf_gsf[model_index].X(2)); + const float sin_yaw = sinf(_ekf_gsf[model_index].X(2)); + const float dvx = del_vel_NED(0) * cos_yaw + del_vel_NED(1) * sin_yaw; + const float dvy = - del_vel_NED(0) * sin_yaw + del_vel_NED(1) * cos_yaw; + + // sum delta velocities in earth frame: + _ekf_gsf[model_index].X(0) += del_vel_NED(0); + _ekf_gsf[model_index].X(1) += del_vel_NED(1); + + // predict covariance - equations generated using EKF/python/gsf_ekf_yaw_estimator/main.py + + // Local short variable name copies required for readability + const float &P00 = _ekf_gsf[model_index].P(0,0); + const float &P01 = _ekf_gsf[model_index].P(0,1); + const float &P02 = _ekf_gsf[model_index].P(0,2); + const float &P11 = _ekf_gsf[model_index].P(1,1); + const float &P12 = _ekf_gsf[model_index].P(1,2); + const float &P22 = _ekf_gsf[model_index].P(2,2); + const float &psi = _ekf_gsf[model_index].X(2); + + // Use fixed values for delta velocity and delta angle process noise variances + const float dvxVar = sq(_accel_noise * _delta_vel_dt); // variance of forward delta velocity - (m/s)^2 + const float dvyVar = dvxVar; // variance of right delta velocity - (m/s)^2 + const float dazVar = sq(_gyro_noise * _delta_ang_dt); // variance of yaw delta angle - rad^2 + + // optimized auto generated code from SymPy script src/lib/ecl/EKF/python/ekf_derivation/main.py + const float S0 = cosf(psi); + const float S1 = ecl::powf(S0, 2); + const float S2 = sinf(psi); + const float S3 = ecl::powf(S2, 2); + const float S4 = S0*dvy + S2*dvx; + const float S5 = P02 - P22*S4; + const float S6 = S0*dvx - S2*dvy; + const float S7 = S0*S2; + const float S8 = P01 + S7*dvxVar - S7*dvyVar; + const float S9 = P12 + P22*S6; + + _ekf_gsf[model_index].P(0,0) = P00 - P02*S4 + S1*dvxVar + S3*dvyVar - S4*S5; + _ekf_gsf[model_index].P(0,1) = -P12*S4 + S5*S6 + S8; + _ekf_gsf[model_index].P(1,1) = P11 + P12*S6 + S1*dvyVar + S3*dvxVar + S6*S9; + _ekf_gsf[model_index].P(0,2) = S5; + _ekf_gsf[model_index].P(1,2) = S9; + _ekf_gsf[model_index].P(2,2) = P22 + dazVar; + + // covariance matrix is symmetrical, so copy upper half to lower half + _ekf_gsf[model_index].P(1,0) = _ekf_gsf[model_index].P(0,1); + _ekf_gsf[model_index].P(2,0) = _ekf_gsf[model_index].P(0,2); + _ekf_gsf[model_index].P(2,1) = _ekf_gsf[model_index].P(1,2); + + // constrain variances + const float min_var = 1e-6f; + for (unsigned index = 0; index < 3; index++) { + _ekf_gsf[model_index].P(index,index) = fmaxf(_ekf_gsf[model_index].P(index,index),min_var); + } +} + +// Update EKF states and covariance for specified model index using velocity measurement +bool EKFGSF_yaw::updateEKF(const uint8_t model_index) +{ + // set observation variance from accuracy estimate supplied by GPS and apply a sanity check minimum + const float velObsVar = sq(fmaxf(_vel_accuracy, 0.01f)); + + // calculate velocity observation innovations + _ekf_gsf[model_index].innov(0) = _ekf_gsf[model_index].X(0) - _vel_NE(0); + _ekf_gsf[model_index].innov(1) = _ekf_gsf[model_index].X(1) - _vel_NE(1); + + // Use temporary variables for covariance elements to reduce verbosity of auto-code expressions + const float &P00 = _ekf_gsf[model_index].P(0,0); + const float &P01 = _ekf_gsf[model_index].P(0,1); + const float &P02 = _ekf_gsf[model_index].P(0,2); + const float &P11 = _ekf_gsf[model_index].P(1,1); + const float &P12 = _ekf_gsf[model_index].P(1,2); + const float &P22 = _ekf_gsf[model_index].P(2,2); + + // optimized auto generated code from SymPy script src/lib/ecl/EKF/python/ekf_derivation/main.py + const float t0 = ecl::powf(P01, 2); + const float t1 = -t0; + const float t2 = P00*P11 + P00*velObsVar + P11*velObsVar + t1 + ecl::powf(velObsVar, 2); + if (fabsf(t2) < 1e-6f) { + return false; + } + const float t3 = 1.0F/t2; + const float t4 = P11 + velObsVar; + const float t5 = P01*t3; + const float t6 = -t5; + const float t7 = P00 + velObsVar; + const float t8 = P00*t4 + t1; + const float t9 = t5*velObsVar; + const float t10 = P11*t7; + const float t11 = t1 + t10; + const float t12 = P01*P12; + const float t13 = P02*t4; + const float t14 = P01*P02; + const float t15 = P12*t7; + const float t16 = t0*velObsVar; + const float t17 = ecl::powf(t2, -2); + const float t18 = t4*velObsVar + t8; + const float t19 = t17*t18; + const float t20 = t17*(t16 + t7*t8); + const float t21 = t0 - t10; + const float t22 = t17*t21; + const float t23 = t14 - t15; + const float t24 = P01*t23; + const float t25 = t12 - t13; + const float t26 = t16 - t21*t4; + const float t27 = t17*t26; + const float t28 = t11 + t7*velObsVar; + const float t30 = t17*t28; + const float t31 = P01*t25; + const float t32 = t23*t4 + t31; + const float t33 = t17*t32; + const float t35 = t24 + t25*t7; + const float t36 = t17*t35; + + _ekf_gsf[model_index].S_det_inverse = t3; + + _ekf_gsf[model_index].S_inverse(0,0) = t3*t4; + _ekf_gsf[model_index].S_inverse(0,1) = t6; + _ekf_gsf[model_index].S_inverse(1,1) = t3*t7; + _ekf_gsf[model_index].S_inverse(1,0) = _ekf_gsf[model_index].S_inverse(0,1); + + matrix::Matrix K; + K(0,0) = t3*t8; + K(1,0) = t9; + K(2,0) = t3*(-t12 + t13); + K(0,1) = t9; + K(1,1) = t11*t3; + K(2,1) = t3*(-t14 + t15); + + _ekf_gsf[model_index].P(0,0) = P00 - t16*t19 - t20*t8; + _ekf_gsf[model_index].P(0,1) = P01*(t18*t22 - t20*velObsVar + 1); + _ekf_gsf[model_index].P(1,1) = P11 - t16*t30 + t22*t26; + _ekf_gsf[model_index].P(0,2) = P02 + t19*t24 + t20*t25; + _ekf_gsf[model_index].P(1,2) = P12 + t23*t27 + t30*t31; + _ekf_gsf[model_index].P(2,2) = P22 - t23*t33 - t25*t36; + _ekf_gsf[model_index].P(1,0) = _ekf_gsf[model_index].P(0,1); + _ekf_gsf[model_index].P(2,0) = _ekf_gsf[model_index].P(0,2); + _ekf_gsf[model_index].P(2,1) = _ekf_gsf[model_index].P(1,2); + + // constrain variances + const float min_var = 1e-6f; + for (unsigned index = 0; index < 3; index++) { + _ekf_gsf[model_index].P(index,index) = fmaxf(_ekf_gsf[model_index].P(index,index),min_var); + } + + // test ratio = transpose(innovation) * inverse(innovation variance) * innovation = [1x2] * [2,2] * [2,1] = [1,1] + const float test_ratio = _ekf_gsf[model_index].innov * (_ekf_gsf[model_index].S_inverse * _ekf_gsf[model_index].innov); + + // Perform a chi-square innovation consistency test and calculate a compression scale factor + // that limits the magnitude of innovations to 5-sigma + // If the test ratio is greater than 25 (5 Sigma) then reduce the length of the innovation vector to clip it at 5-Sigma + // This protects from large measurement spikes + const float innov_comp_scale_factor = test_ratio > 25.f ? sqrtf(25.0f / test_ratio) : 1.f; + + // Correct the state vector and capture the change in yaw angle + const float oldYaw = _ekf_gsf[model_index].X(2); + + _ekf_gsf[model_index].X -= (K * _ekf_gsf[model_index].innov) * innov_comp_scale_factor; + + const float yawDelta = _ekf_gsf[model_index].X(2) - oldYaw; + + // apply the change in yaw angle to the AHRS + // take advantage of sparseness in the yaw rotation matrix + const float cosYaw = cosf(yawDelta); + const float sinYaw = sinf(yawDelta); + const float R_prev00 = _ahrs_ekf_gsf[model_index].R(0, 0); + const float R_prev01 = _ahrs_ekf_gsf[model_index].R(0, 1); + const float R_prev02 = _ahrs_ekf_gsf[model_index].R(0, 2); + + _ahrs_ekf_gsf[model_index].R(0, 0) = R_prev00 * cosYaw - _ahrs_ekf_gsf[model_index].R(1, 0) * sinYaw; + _ahrs_ekf_gsf[model_index].R(0, 1) = R_prev01 * cosYaw - _ahrs_ekf_gsf[model_index].R(1, 1) * sinYaw; + _ahrs_ekf_gsf[model_index].R(0, 2) = R_prev02 * cosYaw - _ahrs_ekf_gsf[model_index].R(1, 2) * sinYaw; + _ahrs_ekf_gsf[model_index].R(1, 0) = R_prev00 * sinYaw + _ahrs_ekf_gsf[model_index].R(1, 0) * cosYaw; + _ahrs_ekf_gsf[model_index].R(1, 1) = R_prev01 * sinYaw + _ahrs_ekf_gsf[model_index].R(1, 1) * cosYaw; + _ahrs_ekf_gsf[model_index].R(1, 2) = R_prev02 * sinYaw + _ahrs_ekf_gsf[model_index].R(1, 2) * cosYaw; + + return true; +} + +void EKFGSF_yaw::initialiseEKFGSF() +{ + _gsf_yaw = 0.0f; + _ekf_gsf_vel_fuse_started = false; + _gsf_yaw_variance = _m_pi2 * _m_pi2; + _model_weights.setAll(1.0f / (float)N_MODELS_EKFGSF); // All filter models start with the same weight + + memset(&_ekf_gsf, 0, sizeof(_ekf_gsf)); + const float yaw_increment = 2.0f * _m_pi / (float)N_MODELS_EKFGSF; + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index++) { + // evenly space initial yaw estimates in the region between +-Pi + _ekf_gsf[model_index].X(2) = -_m_pi + (0.5f * yaw_increment) + ((float)model_index * yaw_increment); + + // take velocity states and corresponding variance from last measurement + _ekf_gsf[model_index].X(0) = _vel_NE(0); + _ekf_gsf[model_index].X(1) = _vel_NE(1); + _ekf_gsf[model_index].P(0,0) = sq(_vel_accuracy); + _ekf_gsf[model_index].P(1,1) = _ekf_gsf[model_index].P(0,0); + + // use half yaw interval for yaw uncertainty + _ekf_gsf[model_index].P(2,2) = sq(0.5f * yaw_increment); + } +} + +float EKFGSF_yaw::gaussianDensity(const uint8_t model_index) const +{ + // calculate transpose(innovation) * inv(S) * innovation + const float normDist = _ekf_gsf[model_index].innov.dot(_ekf_gsf[model_index].S_inverse * _ekf_gsf[model_index].innov); + + return _m_2pi_inv * sqrtf(_ekf_gsf[model_index].S_det_inverse) * expf(-0.5f * normDist); +} + +bool EKFGSF_yaw::getLogData(float *yaw_composite, float *yaw_variance, float yaw[N_MODELS_EKFGSF], float innov_VN[N_MODELS_EKFGSF], float innov_VE[N_MODELS_EKFGSF], float weight[N_MODELS_EKFGSF]) const +{ + if (_ekf_gsf_vel_fuse_started) { + *yaw_composite = _gsf_yaw; + *yaw_variance = _gsf_yaw_variance; + for (uint8_t model_index = 0; model_index < N_MODELS_EKFGSF; model_index++) { + yaw[model_index] = _ekf_gsf[model_index].X(2); + innov_VN[model_index] = _ekf_gsf[model_index].innov(0); + innov_VE[model_index] = _ekf_gsf[model_index].innov(1); + weight[model_index] = _model_weights(model_index); + } + return true; + } + return false; +} + +float EKFGSF_yaw::ahrsCalcAccelGain() const +{ + // Calculate the acceleration fusion gain using a continuous function that is unity at 1g and zero + // at the min and max g value. Allow for more acceleration when flying as a fixed wing vehicle using centripetal + // acceleration correction as higher and more sustained g will be experienced. + // Use a quadratic instead of linear function to prevent vibration around 1g reducing the tilt correction effectiveness. + // see https://www.desmos.com/calculator/dbqbxvnwfg + + float attenuation = 2.f; + const bool centripetal_accel_compensation_enabled = (_true_airspeed > FLT_EPSILON); + + if (centripetal_accel_compensation_enabled + && _ahrs_accel_norm > CONSTANTS_ONE_G) { + attenuation = 1.f; + } + + const float delta_accel_g = (_ahrs_accel_norm - CONSTANTS_ONE_G) / CONSTANTS_ONE_G; + return _tilt_gain * sq(1.f - math::min(attenuation * fabsf(delta_accel_g), 1.f)); +} + +Matrix3f EKFGSF_yaw::ahrsPredictRotMat(const Matrix3f &R, const Vector3f &g) +{ + Matrix3f ret = R; + ret(0,0) += R(0,1) * g(2) - R(0,2) * g(1); + ret(0,1) += R(0,2) * g(0) - R(0,0) * g(2); + ret(0,2) += R(0,0) * g(1) - R(0,1) * g(0); + ret(1,0) += R(1,1) * g(2) - R(1,2) * g(1); + ret(1,1) += R(1,2) * g(0) - R(1,0) * g(2); + ret(1,2) += R(1,0) * g(1) - R(1,1) * g(0); + ret(2,0) += R(2,1) * g(2) - R(2,2) * g(1); + ret(2,1) += R(2,2) * g(0) - R(2,0) * g(2); + ret(2,2) += R(2,0) * g(1) - R(2,1) * g(0); + + // Renormalise rows + for (uint8_t r = 0; r < 3; r++) { + const float rowLengthSq = ret.row(r).norm_squared(); + if (rowLengthSq > FLT_EPSILON) { + // Use linear approximation for inverse sqrt taking advantage of the row length being close to 1.0 + const float rowLengthInv = 1.5f - 0.5f * rowLengthSq; + ret.row(r) *= rowLengthInv; + } + } + + return ret; +} + +bool EKFGSF_yaw::getYawData(float *yaw, float *yaw_variance) const +{ + if(_ekf_gsf_vel_fuse_started) { + *yaw = _gsf_yaw; + *yaw_variance = _gsf_yaw_variance; + return true; + } + return false; +} + +void EKFGSF_yaw::setVelocity(const Vector2f &velocity, float accuracy) +{ + _vel_NE = velocity; + _vel_accuracy = accuracy; + _vel_data_updated = true; +} diff --git a/src/lib/ecl/EKF/EKFGSF_yaw.h b/src/lib/ecl/EKF/EKFGSF_yaw.h new file mode 100644 index 0000000000..3f74e50257 --- /dev/null +++ b/src/lib/ecl/EKF/EKFGSF_yaw.h @@ -0,0 +1,135 @@ +#pragma once + +#include +#include +#include + +#include "common.h" +#include "utils.hpp" + +using matrix::AxisAnglef; +using matrix::Dcmf; +using matrix::Eulerf; +using matrix::Matrix3f; +using matrix::Quatf; +using matrix::Vector2f; +using matrix::Vector3f; +using matrix::wrap_pi; + +static constexpr uint8_t N_MODELS_EKFGSF = 5; + +// Required math constants +static constexpr float _m_2pi_inv = 0.159154943f; +static constexpr float _m_pi = 3.14159265f; +static constexpr float _m_pi2 = 1.57079632f; + +using namespace estimator; + +class EKFGSF_yaw +{ +public: + EKFGSF_yaw(); + + // Update Filter States - this should be called whenever new IMU data is available + void update(const imuSample &imu_sample, + bool run_EKF, // set to true when flying or movement is suitable for yaw estimation + float airspeed, // true airspeed used for centripetal accel compensation - set to 0 when not required. + const Vector3f &imu_gyro_bias); // estimated rate gyro bias (rad/sec) + + void setVelocity(const Vector2f &velocity, // NE velocity measurement (m/s) + float accuracy); // 1-sigma accuracy of velocity measurement (m/s) + + // get solution data for logging + bool getLogData(float *yaw_composite, + float *yaw_composite_variance, + float yaw[N_MODELS_EKFGSF], + float innov_VN[N_MODELS_EKFGSF], + float innov_VE[N_MODELS_EKFGSF], + float weight[N_MODELS_EKFGSF]) const; + + // get yaw estimate and the corresponding variance + // return false if no yaw estimate available + bool getYawData(float *yaw, float *yaw_variance) const; + +private: + + // Parameters - these could be made tuneable + const float _gyro_noise{1.0e-1f}; // yaw rate noise used for covariance prediction (rad/sec) + const float _accel_noise{2.0f}; // horizontal accel noise used for covariance prediction (m/sec**2) + const float _tilt_gain{0.2f}; // gain from tilt error to gyro correction for complementary filter (1/sec) + const float _gyro_bias_gain{0.04f}; // gain applied to integral of gyro correction for complementary filter (1/sec) + + // Declarations used by the bank of N_MODELS_EKFGSF AHRS complementary filters + + Vector3f _delta_ang{}; // IMU delta angle (rad) + Vector3f _delta_vel{}; // IMU delta velocity (m/s) + float _delta_ang_dt{}; // _delta_ang integration time interval (sec) + float _delta_vel_dt{}; // _delta_vel integration time interval (sec) + float _true_airspeed{}; // true airspeed used for centripetal accel compensation (m/s) + + struct _ahrs_ekf_gsf_struct{ + Dcmf R; // matrix that rotates a vector from body to earth frame + Vector3f gyro_bias; // gyro bias learned and used by the quaternion calculation + bool aligned; // true when AHRS has been aligned + float vel_NE[2]; // NE velocity vector from last GPS measurement (m/s) + bool fuse_gps; // true when GPS should be fused on that frame + float accel_dt; // time step used when generating _simple_accel_FR data (sec) + } _ahrs_ekf_gsf[N_MODELS_EKFGSF]{}; + + bool _ahrs_ekf_gsf_tilt_aligned{}; // true the initial tilt alignment has been calculated + float _ahrs_accel_fusion_gain{}; // gain from accel vector tilt error to rate gyro correction used by AHRS calculation + Vector3f _ahrs_accel{}; // low pass filtered body frame specific force vector used by AHRS calculation (m/s/s) + float _ahrs_accel_norm{}; // length of _ahrs_accel specific force vector used by AHRS calculation (m/s/s) + + // calculate the gain from gravity vector misalingment to tilt correction to be used by all AHRS filters + float ahrsCalcAccelGain() const; + + // update specified AHRS rotation matrix using IMU and optionally true airspeed data + void ahrsPredict(const uint8_t model_index); + + // align all AHRS roll and pitch orientations using IMU delta velocity vector + void ahrsAlignTilt(); + + // align all AHRS yaw orientations to initial values + void ahrsAlignYaw(); + + // Efficient propagation of a delta angle in body frame applied to the body to earth frame rotation matrix + Matrix3f ahrsPredictRotMat(const Matrix3f &R, const Vector3f &g); + + // Declarations used by a bank of N_MODELS_EKFGSF EKFs + + struct _ekf_gsf_struct{ + matrix::Vector3f X; // Vel North (m/s), Vel East (m/s), yaw (rad)s + matrix::SquareMatrix P; // covariance matrix + matrix::SquareMatrix S_inverse; // inverse of the innovation covariance matrix + float S_det_inverse; // inverse of the innovation covariance matrix determinant + matrix::Vector2f innov; // Velocity N,E innovation (m/s) + } _ekf_gsf[N_MODELS_EKFGSF]{}; + + bool _vel_data_updated{}; // true when velocity data has been updated + bool _run_ekf_gsf{}; // true when operating condition is suitable for to run the GSF and EKF models and fuse velocity data + Vector2f _vel_NE{}; // NE velocity observations (m/s) + float _vel_accuracy{}; // 1-sigma accuracy of velocity observations (m/s) + bool _ekf_gsf_vel_fuse_started{}; // true when the EKF's have started fusing velocity data and the prediction and update processing is active + + // initialise states and covariance data for the GSF and EKF filters + void initialiseEKFGSF(); + + // predict state and covariance for the specified EKF using inertial data + void predictEKF(const uint8_t model_index); + + // update state and covariance for the specified EKF using a NE velocity measurement + // return false if update failed + bool updateEKF(const uint8_t model_index); + + inline float sq(float x) const { return x * x; }; + + // Declarations used by the Gaussian Sum Filter (GSF) that combines the individual EKF yaw estimates + + matrix::Vector _model_weights{}; + float _gsf_yaw{}; // yaw estimate (rad) + float _gsf_yaw_variance{}; // variance of yaw estimate (rad^2) + + // return the probability of the state estimate for the specified EKF assuming a gaussian error distribution + float gaussianDensity(const uint8_t model_index) const; +}; diff --git a/src/lib/ecl/EKF/RingBuffer.h b/src/lib/ecl/EKF/RingBuffer.h new file mode 100644 index 0000000000..bc36fcb120 --- /dev/null +++ b/src/lib/ecl/EKF/RingBuffer.h @@ -0,0 +1,166 @@ +/**************************************************************************** + * + * Copyright (C) 2015 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file RingBuffer.h + * @author Roman Bapst + * Template RingBuffer. + */ + +#include +#include +#include + +template +class RingBuffer +{ +public: + explicit RingBuffer(size_t size) { allocate(size); } + RingBuffer() { allocate(1); } + ~RingBuffer() { delete[] _buffer; } + + // no copy, assignment, move, move assignment + RingBuffer(const RingBuffer &) = delete; + RingBuffer &operator=(const RingBuffer &) = delete; + RingBuffer(RingBuffer &&) = delete; + RingBuffer &operator=(RingBuffer &&) = delete; + + bool allocate(uint8_t size) + { + if (valid() && (size == _size)) { + // no change + return true; + } + + if (size == 0) { + return false; + } + + if (_buffer != nullptr) { + delete[] _buffer; + } + + _buffer = new data_type[size]{}; + + if (_buffer == nullptr) { + return false; + } + + _size = size; + + _head = 0; + _tail = 0; + + _first_write = true; + + return true; + } + + bool valid() const { return (_buffer != nullptr) && (_size > 0); } + + void push(const data_type &sample) + { + uint8_t head_new = _head; + + if (!_first_write) { + head_new = (_head + 1) % _size; + } + + _buffer[head_new] = sample; + _head = head_new; + + // move tail if we overwrite it + if (_head == _tail && !_first_write) { + _tail = (_tail + 1) % _size; + + } else { + _first_write = false; + } + } + + uint8_t get_length() const { return _size; } + + data_type &operator[](const uint8_t index) { return _buffer[index]; } + + const data_type &get_newest() const { return _buffer[_head]; } + const data_type &get_oldest() const { return _buffer[_tail]; } + + uint8_t get_oldest_index() const { return _tail; } + + bool pop_first_older_than(const uint64_t ×tamp, data_type *sample) + { + // start looking from newest observation data + for (uint8_t i = 0; i < _size; i++) { + int index = (_head - i); + index = index < 0 ? _size + index : index; + + if (timestamp >= _buffer[index].time_us && timestamp < _buffer[index].time_us + (uint64_t)1e5) { + *sample = _buffer[index]; + + // Now we can set the tail to the item which + // comes after the one we removed since we don't + // want to have any older data in the buffer + if (index == _head) { + _tail = _head; + _first_write = true; + + } else { + _tail = (index + 1) % _size; + } + + _buffer[index].time_us = 0; + + return true; + } + + if (index == _tail) { + // we have reached the tail and haven't got a + // match + return false; + } + } + + return false; + } + + int get_total_size() const { return sizeof(*this) + sizeof(data_type) * _size; } + +private: + data_type *_buffer{nullptr}; + + uint8_t _head{0}; + uint8_t _tail{0}; + uint8_t _size{0}; + + bool _first_write{true}; +}; diff --git a/src/lib/ecl/EKF/Sensor.hpp b/src/lib/ecl/EKF/Sensor.hpp new file mode 100644 index 0000000000..a3fe91c8fe --- /dev/null +++ b/src/lib/ecl/EKF/Sensor.hpp @@ -0,0 +1,82 @@ +/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file Sensor.hpp + * Abstract class for sensors + * + * @author Mathieu Bresciani + * + */ + +#pragma once + +#include "common.h" + +namespace estimator +{ +namespace sensor +{ + +class Sensor +{ +public: + virtual ~Sensor() {}; + + /* + * run sanity checks on the current data + * this has to be called immediately after + * setting new data + */ + virtual void runChecks(){}; + + /* + * return true if the sensor is healthy + */ + virtual bool isHealthy() const = 0; + + /* + * return true if the delayed sample is healthy + * and can be fused in the estimator + */ + virtual bool isDataHealthy() const = 0; + + /* + * return true if the sensor data rate is + * stable and high enough + */ + virtual bool isRegularlySendingData() const = 0; +}; + +} // namespace sensor +} // namespace estimator diff --git a/src/lib/ecl/EKF/airspeed_fusion.cpp b/src/lib/ecl/EKF/airspeed_fusion.cpp new file mode 100644 index 0000000000..129dcf0970 --- /dev/null +++ b/src/lib/ecl/EKF/airspeed_fusion.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file airspeed_fusion.cpp + * airspeed fusion methods. + * equations generated using EKF/python/ekf_derivation/main.py + * + * @author Carl Olsson + * @author Roman Bast + * @author Paul Riseborough + * + */ +#include "../ecl.h" +#include "ekf.h" +#include + +void Ekf::fuseAirspeed() +{ + const float &vn = _state.vel(0); // Velocity in north direction + const float &ve = _state.vel(1); // Velocity in east direction + const float &vd = _state.vel(2); // Velocity in downwards direction + const float &vwn = _state.wind_vel(0); // Wind speed in north direction + const float &vwe = _state.wind_vel(1); // Wind speed in east direction + + // Variance for true airspeed measurement - (m/sec)^2 + const float R_TAS = sq(math::constrain(_params.eas_noise, 0.5f, 5.0f) * + math::constrain(_airspeed_sample_delayed.eas2tas, 0.9f, 10.0f)); + + // determine if we need the sideslip fusion to correct states other than wind + const bool update_wind_only = !_is_wind_dead_reckoning; + + // Intermediate variables + const float HK0 = vn - vwn; + const float HK1 = ve - vwe; + const float HK2 = ecl::powf(HK0, 2) + ecl::powf(HK1, 2) + ecl::powf(vd, 2); + const float v_tas_pred = sqrtf(HK2); // predicted airspeed + //const float HK3 = powf(HK2, -1.0F/2.0F); + if (v_tas_pred < 1.0f) { + // calculation can be badly conditioned for very low airspeed values so don't fuse this time + return; + } + const float HK3 = 1.0f / v_tas_pred; + const float HK4 = HK0*HK3; + const float HK5 = HK1*HK3; + const float HK6 = 1.0F/HK2; + const float HK7 = HK0*P(4,6) - HK0*P(6,22) + HK1*P(5,6) - HK1*P(6,23) + P(6,6)*vd; + const float HK8 = HK1*P(5,23); + const float HK9 = HK0*P(4,5) - HK0*P(5,22) + HK1*P(5,5) - HK8 + P(5,6)*vd; + const float HK10 = HK1*HK6; + const float HK11 = HK0*P(4,22); + const float HK12 = HK0*P(4,4) - HK1*P(4,23) + HK1*P(4,5) - HK11 + P(4,6)*vd; + const float HK13 = HK0*HK6; + const float HK14 = -HK0*P(22,23) + HK0*P(4,23) - HK1*P(23,23) + HK8 + P(6,23)*vd; + const float HK15 = -HK0*P(22,22) - HK1*P(22,23) + HK1*P(5,22) + HK11 + P(6,22)*vd; + //const float HK16 = HK3/(-HK10*HK14 + HK10*HK9 + HK12*HK13 - HK13*HK15 + HK6*HK7*vd + R_TAS); + + // innovation variance - check for badly conditioned calculation + _airspeed_innov_var = (-HK10*HK14 + HK10*HK9 + HK12*HK13 - HK13*HK15 + HK6*HK7*vd + R_TAS); + if (_airspeed_innov_var < R_TAS) { // + // Reset the estimator covariance matrix + // if we are getting aiding from other sources, warn and reset the wind states and covariances only + const char* action_string = nullptr; + if (update_wind_only) { + resetWindStates(); + resetWindCovariance(); + action_string = "wind"; + + } else { + initialiseCovariance(); + _state.wind_vel.setZero(); + action_string = "full"; + } + ECL_ERR("airspeed badly conditioned - %s covariance reset", action_string); + + _fault_status.flags.bad_airspeed = true; + + return; + } + const float HK16 = HK3 / _airspeed_innov_var; + _fault_status.flags.bad_airspeed = false; + + // Observation Jacobians + SparseVector24f<4,5,6,22,23> Hfusion; + Hfusion.at<4>() = HK4; + Hfusion.at<5>() = HK5; + Hfusion.at<6>() = HK3*vd; + Hfusion.at<22>() = -HK4; + Hfusion.at<23>() = -HK5; + + Vector24f Kfusion; // Kalman gain vector + if (!update_wind_only) { + // we have no other source of aiding, so use airspeed measurements to correct states + for (unsigned row = 0; row <= 3; row++) { + Kfusion(row) = HK16*(HK0*P(4,row) - HK0*P(row,22) + HK1*P(5,row) - HK1*P(row,23) + P(6,row)*vd); + } + + Kfusion(4) = HK12*HK16; + Kfusion(5) = HK16*HK9; + Kfusion(6) = HK16*HK7; + + for (unsigned row = 7; row <= 21; row++) { + Kfusion(row) = HK16*(HK0*P(4,row) - HK0*P(row,22) + HK1*P(5,row) - HK1*P(row,23) + P(6,row)*vd); + } + } + + Kfusion(22) = HK15*HK16; + Kfusion(23) = HK14*HK16; + + // Calculate measurement innovation + _airspeed_innov = v_tas_pred - _airspeed_sample_delayed.true_airspeed; + + // Compute the ratio of innovation to gate size + _tas_test_ratio = sq(_airspeed_innov) / (sq(fmaxf(_params.tas_innov_gate, 1.0f)) * _airspeed_innov_var); + + // If the innovation consistency check fails then don't fuse the sample and indicate bad airspeed health + if (_tas_test_ratio > 1.0f) { + _innov_check_fail_status.flags.reject_airspeed = true; + return; + + } else { + _innov_check_fail_status.flags.reject_airspeed = false; + } + + const bool is_fused = measurementUpdate(Kfusion, Hfusion, _airspeed_innov); + + _fault_status.flags.bad_airspeed = !is_fused; + + if (is_fused) { + _time_last_arsp_fuse = _time_last_imu; + _control_status.flags.fuse_aspd = true; + } +} + +void Ekf::get_true_airspeed(float *tas) const +{ + const float tempvar = sqrtf(sq(_state.vel(0) - _state.wind_vel(0)) + sq(_state.vel(1) - _state.wind_vel(1)) + sq(_state.vel(2))); + memcpy(tas, &tempvar, sizeof(float)); +} + +/* + * Reset the wind states using the current airspeed measurement, ground relative nav velocity, yaw angle and assumption of zero sideslip +*/ +void Ekf::resetWindStates() +{ + const float euler_yaw = shouldUse321RotationSequence(_R_to_earth) + ? getEuler321Yaw(_state.quat_nominal) + : getEuler312Yaw(_state.quat_nominal); + + if (_tas_data_ready && (_imu_sample_delayed.time_us - _airspeed_sample_delayed.time_us < (uint64_t)5e5)) { + // estimate wind using zero sideslip assumption and airspeed measurement if airspeed available + _state.wind_vel(0) = _state.vel(0) - _airspeed_sample_delayed.true_airspeed * cosf(euler_yaw); + _state.wind_vel(1) = _state.vel(1) - _airspeed_sample_delayed.true_airspeed * sinf(euler_yaw); + + } else { + // If we don't have an airspeed measurement, then assume the wind is zero + _state.wind_vel.setZero(); + } +} diff --git a/src/lib/ecl/EKF/common.h b/src/lib/ecl/EKF/common.h new file mode 100644 index 0000000000..893dda0299 --- /dev/null +++ b/src/lib/ecl/EKF/common.h @@ -0,0 +1,554 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file common.h + * Definition of base class for attitude estimators + * + * @author Roman Bast + * @author Siddharth Bharat Purohit + * + */ +#pragma once + +#include + +namespace estimator +{ + +using matrix::AxisAnglef; +using matrix::Dcmf; +using matrix::Eulerf; +using matrix::Matrix3f; +using matrix::Quatf; +using matrix::Vector2f; +using matrix::Vector3f; +using matrix::wrap_pi; + +enum class velocity_frame_t : uint8_t { + LOCAL_FRAME_FRD, + BODY_FRAME_FRD +}; + +struct gps_message { + uint64_t time_usec{0}; + int32_t lat; ///< Latitude in 1E-7 degrees + int32_t lon; ///< Longitude in 1E-7 degrees + int32_t alt; ///< Altitude in 1E-3 meters (millimeters) above MSL + float yaw; ///< yaw angle. NaN if not set (used for dual antenna GPS), (rad, [-PI, PI]) + float yaw_offset; ///< Heading/Yaw offset for dual antenna GPS - refer to description for GPS_YAW_OFFSET + uint8_t fix_type; ///< 0-1: no fix, 2: 2D fix, 3: 3D fix, 4: RTCM code differential, 5: Real-Time Kinematic + float eph; ///< GPS horizontal position accuracy in m + float epv; ///< GPS vertical position accuracy in m + float sacc; ///< GPS speed accuracy in m/s + float vel_m_s; ///< GPS ground speed (m/sec) + Vector3f vel_ned; ///< GPS ground speed NED + bool vel_ned_valid; ///< GPS ground speed is valid + uint8_t nsats; ///< number of satellites used + float pdop; ///< position dilution of precision +}; + +struct outputSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Quatf quat_nominal; ///< nominal quaternion describing vehicle attitude + Vector3f vel; ///< NED velocity estimate in earth frame (m/sec) + Vector3f pos; ///< NED position estimate in earth frame (m/sec) +}; + +struct outputVert { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + float vert_vel; ///< Vertical velocity calculated using alternative algorithm (m/sec) + float vert_vel_integ; ///< Integral of vertical velocity (m) + float dt; ///< delta time (sec) +}; + +struct imuSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Vector3f delta_ang; ///< delta angle in body frame (integrated gyro measurements) (rad) + Vector3f delta_vel; ///< delta velocity in body frame (integrated accelerometer measurements) (m/sec) + float delta_ang_dt; ///< delta angle integration period (sec) + float delta_vel_dt; ///< delta velocity integration period (sec) + bool delta_vel_clipping[3]{}; ///< true (per axis) if this sample contained any accelerometer clipping +}; + +struct gpsSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Vector2f pos; ///< NE earth frame gps horizontal position measurement (m) + float hgt; ///< gps height measurement (m) + Vector3f vel; ///< NED earth frame gps velocity measurement (m/sec) + float yaw; ///< yaw angle. NaN if not set (used for dual antenna GPS), (rad, [-PI, PI]) + float hacc; ///< 1-std horizontal position error (m) + float vacc; ///< 1-std vertical position error (m) + float sacc; ///< 1-std speed error (m/sec) +}; + +struct magSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Vector3f mag; ///< NED magnetometer body frame measurements (Gauss) +}; + +struct baroSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + float hgt; ///< pressure altitude above sea level (m) +}; + +struct rangeSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + float rng; ///< range (distance to ground) measurement (m) + int8_t quality; ///< Signal quality in percent (0...100%), where 0 = invalid signal, 100 = perfect signal, and -1 = unknown signal quality. +}; + +struct airspeedSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + float true_airspeed; ///< true airspeed measurement (m/sec) + float eas2tas; ///< equivalent to true airspeed factor +}; + +struct flowSample { + uint64_t time_us{0}; ///< timestamp of the integration period leading edge (uSec) + Vector2f flow_xy_rad; ///< measured delta angle of the image about the X and Y body axes (rad), RH rotation is positive + Vector3f gyro_xyz; ///< measured delta angle of the inertial frame about the body axes obtained from rate gyro measurements (rad), RH rotation is positive + float dt; ///< amount of integration time (sec) + uint8_t quality; ///< quality indicator between 0 and 255 +}; + +struct extVisionSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Vector3f pos; ///< XYZ position in external vision's local reference frame (m) - Z must be aligned with down axis + Vector3f vel; ///< FRD velocity in reference frame defined in vel_frame variable (m/sec) - Z must be aligned with down axis + Quatf quat; ///< quaternion defining rotation from body to earth frame + Vector3f posVar; ///< XYZ position variances (m**2) + Matrix3f velCov; ///< XYZ velocity covariances ((m/sec)**2) + float angVar; ///< angular heading variance (rad**2) + velocity_frame_t vel_frame = velocity_frame_t::BODY_FRAME_FRD; +}; + +struct dragSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Vector2f accelXY; ///< measured specific force along the X and Y body axes (m/sec**2) +}; + +struct auxVelSample { + uint64_t time_us{0}; ///< timestamp of the measurement (uSec) + Vector3f vel; ///< measured NE velocity relative to the local origin (m/sec) + Vector3f velVar; ///< estimated error variance of the NE velocity (m/sec)**2 +}; + +// Integer definitions for vdist_sensor_type +#define VDIST_SENSOR_BARO 0 ///< Use baro height +#define VDIST_SENSOR_GPS 1 ///< Use GPS height +#define VDIST_SENSOR_RANGE 2 ///< Use range finder height +#define VDIST_SENSOR_EV 3 ///< Use external vision + +// Bit locations for mag_declination_source +#define MASK_USE_GEO_DECL (1<<0) ///< set to true to use the declination from the geo library when the GPS position becomes available, set to false to always use the EKF2_MAG_DECL value +#define MASK_SAVE_GEO_DECL (1<<1) ///< set to true to set the EKF2_MAG_DECL parameter to the value returned by the geo library +#define MASK_FUSE_DECL (1<<2) ///< set to true if the declination is always fused as an observation to constrain drift when 3-axis fusion is performed + +// Bit locations for fusion_mode +#define MASK_USE_GPS (1<<0) ///< set to true to use GPS data +#define MASK_USE_OF (1<<1) ///< set to true to use optical flow data +#define MASK_INHIBIT_ACC_BIAS (1<<2) ///< set to true to inhibit estimation of accelerometer delta velocity bias +#define MASK_USE_EVPOS (1<<3) ///< set to true to use external vision position data +#define MASK_USE_EVYAW (1<<4) ///< set to true to use external vision quaternion data for yaw +#define MASK_USE_DRAG (1<<5) ///< set to true to use the multi-rotor drag model to estimate wind +#define MASK_ROTATE_EV (1<<6) ///< set to true to if the EV observations are in a non NED reference frame and need to be rotated before being used +#define MASK_USE_GPSYAW (1<<7) ///< set to true to use GPS yaw data if available +#define MASK_USE_EVVEL (1<<8) ///< set to true to use external vision velocity data + +enum TerrainFusionMask : int32_t { + TerrainFuseRangeFinder = (1 << 0), + TerrainFuseOpticalFlow = (1 << 1) +}; + +// Integer definitions for mag_fusion_type +#define MAG_FUSE_TYPE_AUTO 0 ///< The selection of either heading or 3D magnetometer fusion will be automatic +#define MAG_FUSE_TYPE_HEADING 1 ///< Simple yaw angle fusion will always be used. This is less accurate, but less affected by earth field distortions. It should not be used for pitch angles outside the range from -60 to +60 deg +#define MAG_FUSE_TYPE_3D 2 ///< Magnetometer 3-axis fusion will always be used. This is more accurate, but more affected by localised earth field distortions +#define MAG_FUSE_TYPE_UNUSED 3 ///< Not implemented +#define MAG_FUSE_TYPE_INDOOR 4 ///< The same as option 0, but magnetometer or yaw fusion will not be used unless earth frame external aiding (GPS or External Vision) is being used. This prevents inconsistent magnetic fields associated with indoor operation degrading state estimates. +#define MAG_FUSE_TYPE_NONE 5 ///< Do not use magnetometer under any circumstance. Other sources of yaw may be used if selected via the EKF2_AID_MASK parameter. + +// Maximum sensor intervals in usec +#define GPS_MAX_INTERVAL (uint64_t)5e5 ///< Maximum allowable time interval between GPS measurements (uSec) +#define BARO_MAX_INTERVAL (uint64_t)2e5 ///< Maximum allowable time interval between pressure altitude measurements (uSec) +#define RNG_MAX_INTERVAL (uint64_t)2e5 ///< Maximum allowable time interval between range finder measurements (uSec) +#define EV_MAX_INTERVAL (uint64_t)2e5 ///< Maximum allowable time interval between external vision system measurements (uSec) + +// bad accelerometer detection and mitigation +#define BADACC_PROBATION (uint64_t)10e6 ///< Period of time that accel data declared bad must continuously pass checks to be declared good again (uSec) +#define BADACC_BIAS_PNOISE 4.9f ///< The delta velocity process noise is set to this when accel data is declared bad (m/sec**2) + +// ground effect compensation +#define GNDEFFECT_TIMEOUT 10E6 ///< Maximum period of time that ground effect protection will be active after it was last turned on (uSec) + +struct parameters { + // measurement source control + int32_t fusion_mode{MASK_USE_GPS}; ///< bitmasked integer that selects which aiding sources will be used + int32_t vdist_sensor_type{VDIST_SENSOR_BARO}; ///< selects the primary source for height data + int32_t terrain_fusion_mode{TerrainFusionMask::TerrainFuseRangeFinder | + TerrainFusionMask::TerrainFuseOpticalFlow}; ///< aiding source(s) selection bitmask for the terrain estimator + int32_t sensor_interval_min_ms{20}; ///< minimum time of arrival difference between non IMU sensor updates. Sets the size of the observation buffers. (mSec) + + // measurement time delays + float mag_delay_ms{0.0f}; ///< magnetometer measurement delay relative to the IMU (mSec) + float baro_delay_ms{0.0f}; ///< barometer height measurement delay relative to the IMU (mSec) + float gps_delay_ms{110.0f}; ///< GPS measurement delay relative to the IMU (mSec) + float airspeed_delay_ms{100.0f}; ///< airspeed measurement delay relative to the IMU (mSec) + float flow_delay_ms{5.0f}; ///< optical flow measurement delay relative to the IMU (mSec) - this is to the middle of the optical flow integration interval + float range_delay_ms{5.0f}; ///< range finder measurement delay relative to the IMU (mSec) + float ev_delay_ms{175.0f}; ///< off-board vision measurement delay relative to the IMU (mSec) + float auxvel_delay_ms{5.0f}; ///< auxiliary velocity measurement delay relative to the IMU (mSec) + + // input noise + float gyro_noise{1.5e-2f}; ///< IMU angular rate noise used for covariance prediction (rad/sec) + float accel_noise{3.5e-1f}; ///< IMU acceleration noise use for covariance prediction (m/sec**2) + + // process noise + float gyro_bias_p_noise{1.0e-3f}; ///< process noise for IMU rate gyro bias prediction (rad/sec**2) + float accel_bias_p_noise{1.0e-2f}; ///< process noise for IMU accelerometer bias prediction (m/sec**3) + float mage_p_noise{1.0e-3f}; ///< process noise for earth magnetic field prediction (Gauss/sec) + float magb_p_noise{1.0e-4f}; ///< process noise for body magnetic field prediction (Gauss/sec) + float wind_vel_p_noise{1.0e-1f}; ///< process noise for wind velocity prediction (m/sec**2) + const float wind_vel_p_noise_scaler{0.5f}; ///< scaling of wind process noise with vertical velocity + float terrain_p_noise{5.0f}; ///< process noise for terrain offset (m/sec) + float terrain_gradient{0.5f}; ///< gradient of terrain used to estimate process noise due to changing position (m/m) + const float terrain_timeout{10.f}; ///< maximum time for invalid bottom distance measurements before resetting terrain estimate (s) + + // initialization errors + float switch_on_gyro_bias{0.1f}; ///< 1-sigma gyro bias uncertainty at switch on (rad/sec) + float switch_on_accel_bias{0.2f}; ///< 1-sigma accelerometer bias uncertainty at switch on (m/sec**2) + float initial_tilt_err{0.1f}; ///< 1-sigma tilt error after initial alignment using gravity vector (rad) + const float initial_wind_uncertainty{1.0f}; ///< 1-sigma initial uncertainty in wind velocity (m/sec) + + // position and velocity fusion + float gps_vel_noise{5.0e-1f}; ///< minimum allowed observation noise for gps velocity fusion (m/sec) + float gps_pos_noise{0.5f}; ///< minimum allowed observation noise for gps position fusion (m) + float pos_noaid_noise{10.0f}; ///< observation noise for non-aiding position fusion (m) + float baro_noise{2.0f}; ///< observation noise for barometric height fusion (m) + float baro_innov_gate{5.0f}; ///< barometric and GPS height innovation consistency gate size (STD) + float gps_pos_innov_gate{5.0f}; ///< GPS horizontal position innovation consistency gate size (STD) + float gps_vel_innov_gate{5.0f}; ///< GPS velocity innovation consistency gate size (STD) + float gnd_effect_deadzone{5.0f}; ///< Size of deadzone applied to negative baro innovations when ground effect compensation is active (m) + float gnd_effect_max_hgt{0.5f}; ///< Height above ground at which baro ground effect becomes insignificant (m) + + // magnetometer fusion + float mag_heading_noise{3.0e-1f}; ///< measurement noise used for simple heading fusion (rad) + float mag_noise{5.0e-2f}; ///< measurement noise used for 3-axis magnetoemeter fusion (Gauss) + float mag_declination_deg{0.0f}; ///< magnetic declination (degrees) + float heading_innov_gate{2.6f}; ///< heading fusion innovation consistency gate size (STD) + float mag_innov_gate{3.0f}; ///< magnetometer fusion innovation consistency gate size (STD) + int32_t mag_declination_source{7}; ///< bitmask used to control the handling of declination data + int32_t mag_fusion_type{0}; ///< integer used to specify the type of magnetometer fusion used + float mag_acc_gate{0.5f}; ///< when in auto select mode, heading fusion will be used when manoeuvre accel is lower than this (m/sec**2) + float mag_yaw_rate_gate{0.25f}; ///< yaw rate threshold used by mode select logic (rad/sec) + const float quat_max_variance{0.0001f}; ///< zero innovation yaw measurements will not be fused when the sum of quaternion variance is less than this + + // airspeed fusion + float tas_innov_gate{5.0f}; ///< True Airspeed innovation consistency gate size (STD) + float eas_noise{1.4f}; ///< EAS measurement noise standard deviation used for airspeed fusion (m/s) + float arsp_thr{2.0f}; ///< Airspeed fusion threshold. A value of zero will deactivate airspeed fusion + + // synthetic sideslip fusion + float beta_innov_gate{5.0f}; ///< synthetic sideslip innovation consistency gate size in standard deviation (STD) + float beta_noise{0.3f}; ///< synthetic sideslip noise (rad) + const float beta_avg_ft_us{150000.0f}; ///< The average time between synthetic sideslip measurements (uSec) + + // range finder fusion + float range_noise{0.1f}; ///< observation noise for range finder measurements (m) + float range_innov_gate{5.0f}; ///< range finder fusion innovation consistency gate size (STD) + float rng_gnd_clearance{0.1f}; ///< minimum valid value for range when on ground (m) + float rng_sens_pitch{0.0f}; ///< Pitch offset of the range sensor (rad). Sensor points out along Z axis when offset is zero. Positive rotation is RH about Y axis. + float range_noise_scaler{0.0f}; ///< scaling from range measurement to noise (m/m) + const float vehicle_variance_scaler{0.0f}; ///< gain applied to vehicle height variance used in calculation of height above ground observation variance + float max_hagl_for_range_aid{5.0f}; ///< maximum height above ground for which we allow to use the range finder as height source (if range_aid == 1) + float max_vel_for_range_aid{1.0f}; ///< maximum ground velocity for which we allow to use the range finder as height source (if range_aid == 1) + int32_t range_aid{0}; ///< allow switching primary height source to range finder if certain conditions are met + float range_aid_innov_gate{1.0f}; ///< gate size used for innovation consistency checks for range aid fusion + float range_valid_quality_s{1.0f}; ///< minimum duration during which the reported range finder signal quality needs to be non-zero in order to be declared valid (s) + float range_cos_max_tilt{0.7071f}; ///< cosine of the maximum tilt angle from the vertical that permits use of range finder and flow data + + // vision position fusion + float ev_vel_innov_gate{3.0f}; ///< vision velocity fusion innovation consistency gate size (STD) + float ev_pos_innov_gate{5.0f}; ///< vision position fusion innovation consistency gate size (STD) + + // optical flow fusion + float flow_noise{0.15f}; ///< observation noise for optical flow LOS rate measurements (rad/sec) + float flow_noise_qual_min{0.5f}; ///< observation noise for optical flow LOS rate measurements when flow sensor quality is at the minimum useable (rad/sec) + int32_t flow_qual_min{1}; ///< minimum acceptable quality integer from the flow sensor + float flow_innov_gate{3.0f}; ///< optical flow fusion innovation consistency gate size (STD) + + // these parameters control the strictness of GPS quality checks used to determine if the GPS is + // good enough to set a local origin and commence aiding + int32_t gps_check_mask{21}; ///< bitmask used to control which GPS quality checks are used + float req_hacc{5.0f}; ///< maximum acceptable horizontal position error (m) + float req_vacc{8.0f}; ///< maximum acceptable vertical position error (m) + float req_sacc{1.0f}; ///< maximum acceptable speed error (m/s) + int32_t req_nsats{6}; ///< minimum acceptable satellite count + float req_pdop{2.0f}; ///< maximum acceptable position dilution of precision + float req_hdrift{0.3f}; ///< maximum acceptable horizontal drift speed (m/s) + float req_vdrift{0.5f}; ///< maximum acceptable vertical drift speed (m/s) + + // XYZ offset of sensors in body axes (m) + Vector3f imu_pos_body; ///< xyz position of IMU in body frame (m) + Vector3f gps_pos_body; ///< xyz position of the GPS antenna in body frame (m) + Vector3f rng_pos_body; ///< xyz position of range sensor in body frame (m) + Vector3f flow_pos_body; ///< xyz position of range sensor focal point in body frame (m) + Vector3f ev_pos_body; ///< xyz position of VI-sensor focal point in body frame (m) + + // output complementary filter tuning + float vel_Tau{0.25f}; ///< velocity state correction time constant (1/sec) + float pos_Tau{0.25f}; ///< position state correction time constant (1/sec) + + // accel bias learning control + float acc_bias_lim{0.4f}; ///< maximum accel bias magnitude (m/sec**2) + float acc_bias_learn_acc_lim{25.0f}; ///< learning is disabled if the magnitude of the IMU acceleration vector is greater than this (m/sec**2) + float acc_bias_learn_gyr_lim{3.0f}; ///< learning is disabled if the magnitude of the IMU angular rate vector is greater than this (rad/sec) + float acc_bias_learn_tc{0.5f}; ///< time constant used to control the decaying envelope filters applied to the accel and gyro magnitudes (sec) + + const unsigned reset_timeout_max{7000000}; ///< maximum time we allow horizontal inertial dead reckoning before attempting to reset the states to the measurement or change _control_status if the data is unavailable (uSec) + const unsigned no_aid_timeout_max{1000000}; ///< maximum lapsed time from last fusion of a measurement that constrains horizontal velocity drift before the EKF will determine that the sensor is no longer contributing to aiding (uSec) + + int32_t valid_timeout_max{5000000}; ///< amount of time spent inertial dead reckoning before the estimator reports the state estimates as invalid (uSec) + + // static barometer pressure position error coefficient along body axes + float static_pressure_coef_xp {0.0f}; // (-) + float static_pressure_coef_xn {0.0f}; // (-) + float static_pressure_coef_yp {0.0f}; // (-) + float static_pressure_coef_yn {0.0f}; // (-) + float static_pressure_coef_z {0.0f}; // (-) + // upper limit on airspeed used for correction (m/s**2) + float max_correction_airspeed {20.0f}; + + // multi-rotor drag specific force fusion + float drag_noise{2.5f}; ///< observation noise variance for drag specific force measurements (m/sec**2)**2 + float bcoef_x{100.0f}; ///< bluff body drag ballistic coefficient for the X-axis (kg/m**2) + float bcoef_y{100.0f}; ///< bluff body drag ballistic coefficient for the Y-axis (kg/m**2) + float mcoef{0.1f}; ///< rotor momentum drag coefficient for the X and Y axes (1/s) + + // control of accel error detection and mitigation (IMU clipping) + const float vert_innov_test_lim{3.0f}; ///< Number of standard deviations allowed before the combined vertical velocity and position test is declared as failed + const int bad_acc_reset_delay_us{500000}; ///< Continuous time that the vertical position and velocity innovation test must fail before the states are reset (uSec) + + // auxiliary velocity fusion + const float auxvel_noise{0.5f}; ///< minimum observation noise, uses reported noise if greater (m/s) + const float auxvel_gate{5.0f}; ///< velocity fusion innovation consistency gate size (STD) + + // control of on-ground movement check + float is_moving_scaler{1.0f}; ///< gain scaler used to adjust the threshold for the on-ground movement detection. Larger values make the test less sensitive. + + // compute synthetic magnetomter Z value if possible + int32_t synthesize_mag_z{0}; + int32_t check_mag_strength{0}; + + // Parameters used to control when yaw is reset to the EKF-GSF yaw estimator value + float EKFGSF_tas_default{15.0f}; ///< default airspeed value assumed during fixed wing flight if no airspeed measurement available (m/s) + const unsigned EKFGSF_reset_delay{1000000}; ///< Number of uSec of bad innovations on main filter in immediate post-takeoff phase before yaw is reset to EKF-GSF value + const float EKFGSF_yaw_err_max{0.262f}; ///< Composite yaw 1-sigma uncertainty threshold used to check for convergence (rad) + const unsigned EKFGSF_reset_count_limit{3}; ///< Maximum number of times the yaw can be reset to the EKF-GSF yaw estimator value +}; + +struct stateSample { + Quatf quat_nominal; ///< quaternion defining the rotation from body to earth frame + Vector3f vel; ///< NED velocity in earth frame in m/s + Vector3f pos; ///< NED position in earth frame in m + Vector3f delta_ang_bias; ///< delta angle bias estimate in rad + Vector3f delta_vel_bias; ///< delta velocity bias estimate in m/s + Vector3f mag_I; ///< NED earth magnetic field in gauss + Vector3f mag_B; ///< magnetometer bias estimate in body frame in gauss + Vector2f wind_vel; ///< horizontal wind velocity in earth frame in m/s +}; + +union fault_status_u { + struct { + bool bad_mag_x: 1; ///< 0 - true if the fusion of the magnetometer X-axis has encountered a numerical error + bool bad_mag_y: 1; ///< 1 - true if the fusion of the magnetometer Y-axis has encountered a numerical error + bool bad_mag_z: 1; ///< 2 - true if the fusion of the magnetometer Z-axis has encountered a numerical error + bool bad_hdg: 1; ///< 3 - true if the fusion of the heading angle has encountered a numerical error + bool bad_mag_decl: 1; ///< 4 - true if the fusion of the magnetic declination has encountered a numerical error + bool bad_airspeed: 1; ///< 5 - true if fusion of the airspeed has encountered a numerical error + bool bad_sideslip: 1; ///< 6 - true if fusion of the synthetic sideslip constraint has encountered a numerical error + bool bad_optflow_X: 1; ///< 7 - true if fusion of the optical flow X axis has encountered a numerical error + bool bad_optflow_Y: 1; ///< 8 - true if fusion of the optical flow Y axis has encountered a numerical error + bool bad_vel_N: 1; ///< 9 - true if fusion of the North velocity has encountered a numerical error + bool bad_vel_E: 1; ///< 10 - true if fusion of the East velocity has encountered a numerical error + bool bad_vel_D: 1; ///< 11 - true if fusion of the Down velocity has encountered a numerical error + bool bad_pos_N: 1; ///< 12 - true if fusion of the North position has encountered a numerical error + bool bad_pos_E: 1; ///< 13 - true if fusion of the East position has encountered a numerical error + bool bad_pos_D: 1; ///< 14 - true if fusion of the Down position has encountered a numerical error + bool bad_acc_bias: 1; ///< 15 - true if bad delta velocity bias estimates have been detected + bool bad_acc_vertical: 1; ///< 16 - true if bad vertical accelerometer data has been detected + bool bad_acc_clipping: 1; ///< 17 - true if delta velocity data contains clipping (asymmetric railing) + } flags; + uint32_t value; + +}; + +// define structure used to communicate innovation test failures +union innovation_fault_status_u { + struct { + bool reject_hor_vel: 1; ///< 0 - true if horizontal velocity observations have been rejected + bool reject_ver_vel: 1; ///< 1 - true if vertical velocity observations have been rejected + bool reject_hor_pos: 1; ///< 2 - true if horizontal position observations have been rejected + bool reject_ver_pos: 1; ///< 3 - true if true if vertical position observations have been rejected + bool reject_mag_x: 1; ///< 4 - true if the X magnetometer observation has been rejected + bool reject_mag_y: 1; ///< 5 - true if the Y magnetometer observation has been rejected + bool reject_mag_z: 1; ///< 6 - true if the Z magnetometer observation has been rejected + bool reject_yaw: 1; ///< 7 - true if the yaw observation has been rejected + bool reject_airspeed: 1; ///< 8 - true if the airspeed observation has been rejected + bool reject_sideslip: 1; ///< 9 - true if the synthetic sideslip observation has been rejected + bool reject_hagl: 1; ///< 10 - true if the height above ground observation has been rejected + bool reject_optflow_X: 1; ///< 11 - true if the X optical flow observation has been rejected + bool reject_optflow_Y: 1; ///< 12 - true if the Y optical flow observation has been rejected + } flags; + uint16_t value; + +}; + +// publish the status of various GPS quality checks +union gps_check_fail_status_u { + struct { + uint16_t fix : 1; ///< 0 - true if the fix type is insufficient (no 3D solution) + uint16_t nsats : 1; ///< 1 - true if number of satellites used is insufficient + uint16_t pdop : 1; ///< 2 - true if position dilution of precision is insufficient + uint16_t hacc : 1; ///< 3 - true if reported horizontal accuracy is insufficient + uint16_t vacc : 1; ///< 4 - true if reported vertical accuracy is insufficient + uint16_t sacc : 1; ///< 5 - true if reported speed accuracy is insufficient + uint16_t hdrift : 1; ///< 6 - true if horizontal drift is excessive (can only be used when stationary on ground) + uint16_t vdrift : 1; ///< 7 - true if vertical drift is excessive (can only be used when stationary on ground) + uint16_t hspeed : 1; ///< 8 - true if horizontal speed is excessive (can only be used when stationary on ground) + uint16_t vspeed : 1; ///< 9 - true if vertical speed error is excessive + } flags; + uint16_t value; +}; + +// bitmask containing filter control status +union filter_control_status_u { + struct { + uint32_t tilt_align : 1; ///< 0 - true if the filter tilt alignment is complete + uint32_t yaw_align : 1; ///< 1 - true if the filter yaw alignment is complete + uint32_t gps : 1; ///< 2 - true if GPS measurement fusion is intended + uint32_t opt_flow : 1; ///< 3 - true if optical flow measurements fusion is intended + uint32_t mag_hdg : 1; ///< 4 - true if a simple magnetic yaw heading fusion is intended + uint32_t mag_3D : 1; ///< 5 - true if 3-axis magnetometer measurement fusion is inteded + uint32_t mag_dec : 1; ///< 6 - true if synthetic magnetic declination measurements fusion is intended + uint32_t in_air : 1; ///< 7 - true when the vehicle is airborne + uint32_t wind : 1; ///< 8 - true when wind velocity is being estimated + uint32_t baro_hgt : 1; ///< 9 - true when baro height is being fused as a primary height reference + uint32_t rng_hgt : 1; ///< 10 - true when range finder height is being fused as a primary height reference + uint32_t gps_hgt : 1; ///< 11 - true when GPS height is being fused as a primary height reference + uint32_t ev_pos : 1; ///< 12 - true when local position data fusion from external vision is intended + uint32_t ev_yaw : 1; ///< 13 - true when yaw data from external vision measurements fusion is intended + uint32_t ev_hgt : 1; ///< 14 - true when height data from external vision measurements is being fused + uint32_t fuse_beta : 1; ///< 15 - true when synthetic sideslip measurements are being fused + uint32_t mag_field_disturbed : 1; ///< 16 - true when the mag field does not match the expected strength + uint32_t fixed_wing : 1; ///< 17 - true when the vehicle is operating as a fixed wing vehicle + uint32_t mag_fault : 1; ///< 18 - true when the magnetometer has been declared faulty and is no longer being used + uint32_t fuse_aspd : 1; ///< 19 - true when airspeed measurements are being fused + uint32_t gnd_effect : 1; ///< 20 - true when protection from ground effect induced static pressure rise is active + uint32_t rng_stuck : 1; ///< 21 - true when rng data wasn't ready for more than 10s and new rng values haven't changed enough + uint32_t gps_yaw : 1; ///< 22 - true when yaw (not ground course) data fusion from a GPS receiver is intended + uint32_t mag_aligned_in_flight : 1; ///< 23 - true when the in-flight mag field alignment has been completed + uint32_t ev_vel : 1; ///< 24 - true when local frame velocity data fusion from external vision measurements is intended + uint32_t synthetic_mag_z : 1; ///< 25 - true when we are using a synthesized measurement for the magnetometer Z component + uint32_t vehicle_at_rest : 1; ///< 26 - true when the vehicle is at rest + } flags; + uint32_t value; +}; + + // Mavlink bitmask containing state of estimator solution +union ekf_solution_status { + struct { + uint16_t attitude : 1; ///< 0 - True if the attitude estimate is good + uint16_t velocity_horiz : 1; ///< 1 - True if the horizontal velocity estimate is good + uint16_t velocity_vert : 1; ///< 2 - True if the vertical velocity estimate is good + uint16_t pos_horiz_rel : 1; ///< 3 - True if the horizontal position (relative) estimate is good + uint16_t pos_horiz_abs : 1; ///< 4 - True if the horizontal position (absolute) estimate is good + uint16_t pos_vert_abs : 1; ///< 5 - True if the vertical position (absolute) estimate is good + uint16_t pos_vert_agl : 1; ///< 6 - True if the vertical position (above ground) estimate is good + uint16_t const_pos_mode : 1; ///< 7 - True if the EKF is in a constant position mode and is not using external measurements (eg GPS or optical flow) + uint16_t pred_pos_horiz_rel : 1; ///< 8 - True if the EKF has sufficient data to enter a mode that will provide a (relative) position estimate + uint16_t pred_pos_horiz_abs : 1; ///< 9 - True if the EKF has sufficient data to enter a mode that will provide a (absolute) position estimate + uint16_t gps_glitch : 1; ///< 10 - True if the EKF has detected a GPS glitch + uint16_t accel_error : 1; ///< 11 - True if the EKF has detected bad accelerometer data + } flags; + uint16_t value; +}; + +union terrain_fusion_status_u { + struct { + bool range_finder: 1; ///< 0 - true if we are fusing range finder data + bool flow: 1; ///< 1 - true if we are fusing flow data + } flags; + uint8_t value; +}; + +// define structure used to communicate information events +union information_event_status_u { + struct { + bool gps_checks_passed : 1; ///< 0 - true when gps quality checks are passing passed + bool reset_vel_to_gps : 1; ///< 1 - true when the velocity states are reset to the gps measurement + bool reset_vel_to_flow : 1; ///< 2 - true when the velocity states are reset using the optical flow measurement + bool reset_vel_to_vision : 1; ///< 3 - true when the velocity states are reset to the vision system measurement + bool reset_vel_to_zero : 1; ///< 4 - true when the velocity states are reset to zero + bool reset_pos_to_last_known : 1; ///< 5 - true when the position states are reset to the last known position + bool reset_pos_to_gps : 1; ///< 6 - true when the position states are reset to the gps measurement + bool reset_pos_to_vision : 1; ///< 7 - true when the position states are reset to the vision system measurement + bool starting_gps_fusion : 1; ///< 8 - true when the filter starts using gps measurements to correct the state estimates + bool starting_vision_pos_fusion : 1; ///< 9 - true when the filter starts using vision system position measurements to correct the state estimates + bool starting_vision_vel_fusion : 1; ///< 10 - true when the filter starts using vision system velocity measurements to correct the state estimates + bool starting_vision_yaw_fusion : 1; ///< 11 - true when the filter starts using vision system yaw measurements to correct the state estimates + bool yaw_aligned_to_imu_gps : 1; ///< 12 - true when the filter resets the yaw to an estimate derived from IMU and GPS data + } flags; + uint32_t value; +}; + +// define structure used to communicate information events +union warning_event_status_u { + struct { + bool gps_quality_poor : 1; ///< 0 - true when the gps is failing quality checks + bool gps_fusion_timout : 1; ///< 1 - true when the gps data has not been used to correct the state estimates for a significant time period + bool gps_data_stopped : 1; ///< 2 - true when the gps data has stopped for a significant time period + bool gps_data_stopped_using_alternate : 1; ///< 3 - true when the gps data has stopped for a significant time period but the filter is able to use other sources of data to maintain navigation + bool height_sensor_timeout : 1; ///< 4 - true when the height sensor has not been used to correct the state estimates for a significant time period + bool stopping_navigation : 1; ///< 5 - true when the filter has insufficient data to estimate velocity and position and is falling back to an attitude, height and height rate mode of operation + bool invalid_accel_bias_cov_reset : 1; ///< 6 - true when the filter has detected bad acceerometer bias state esitmstes and has reset the corresponding covariance matrix elements + bool bad_yaw_using_gps_course : 1; ///< 7 - true when the fiter has detected an invalid yaw esitmate and has reset the yaw angle to the GPS ground course + bool stopping_mag_use : 1; ///< 8 - true when the filter has detected bad magnetometer data and is stopping further use of the magnetomer data + bool vision_data_stopped : 1; ///< 9 - true when the vision system data has stopped for a significant time period + bool emergency_yaw_reset_mag_stopped : 1; ///< 10 - true when the filter has detected bad magnetometer data, has reset the yaw to anothter source of data and has stopped further use of the magnetomer data + } flags; + uint32_t value; +}; + +} diff --git a/src/lib/ecl/EKF/control.cpp b/src/lib/ecl/EKF/control.cpp new file mode 100644 index 0000000000..528391b8e0 --- /dev/null +++ b/src/lib/ecl/EKF/control.cpp @@ -0,0 +1,1408 @@ +/**************************************************************************** + * + * Copyright (c) 2015-2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file control.cpp + * Control functions for ekf attitude and position estimator. + * + * @author Paul Riseborough + * + */ + +#include "../ecl.h" +#include "ekf.h" +#include + +void Ekf::controlFusionModes() +{ + // Store the status to enable change detection + _control_status_prev.value = _control_status.value; + + // monitor the tilt alignment + if (!_control_status.flags.tilt_align) { + // whilst we are aligning the tilt, monitor the variances + const Vector3f angle_err_var_vec = calcRotVecVariances(); + + // Once the tilt variances have reduced to equivalent of 3deg uncertainty + // and declare the tilt alignment complete + if ((angle_err_var_vec(0) + angle_err_var_vec(1)) < sq(math::radians(3.0f))) { + _control_status.flags.tilt_align = true; + + // send alignment status message to the console + const char* height_source = nullptr; + if (_control_status.flags.baro_hgt) { + height_source = "baro"; + + } else if (_control_status.flags.ev_hgt) { + height_source = "ev"; + + } else if (_control_status.flags.gps_hgt) { + height_source = "gps"; + + } else if (_control_status.flags.rng_hgt) { + height_source = "rng"; + + } else { + height_source = "unknown"; + + } + if (height_source){ + ECL_INFO("%llu: EKF aligned, (%s hgt, IMU buf: %i, OBS buf: %i)", + (unsigned long long)_imu_sample_delayed.time_us, height_source, (int)_imu_buffer_length, (int)_obs_buffer_length); + } + } + } + + // check for intermittent data (before pop_first_older_than) + const baroSample &baro_init = _baro_buffer.get_newest(); + _baro_hgt_faulty = !isRecent(baro_init.time_us, 2 * BARO_MAX_INTERVAL); + + const gpsSample &gps_init = _gps_buffer.get_newest(); + _gps_hgt_intermittent = !isRecent(gps_init.time_us, 2 * GPS_MAX_INTERVAL); + + // check for arrival of new sensor data at the fusion time horizon + _time_prev_gps_us = _gps_sample_delayed.time_us; + _gps_data_ready = _gps_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_gps_sample_delayed); + _mag_data_ready = _mag_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_mag_sample_delayed); + + if (_mag_data_ready) { + _mag_lpf.update(_mag_sample_delayed.mag); + + // if enabled, use knowledge of theoretical magnetic field vector to calculate a synthetic magnetomter Z component value. + // this is useful if there is a lot of interference on the sensor measurement. + if (_params.synthesize_mag_z && (_params.mag_declination_source & MASK_USE_GEO_DECL) && (_NED_origin_initialised || ISFINITE(_mag_declination_gps))) { + const Vector3f mag_earth_pred = Dcmf(Eulerf(0, -_mag_inclination_gps, _mag_declination_gps)) * Vector3f(_mag_strength_gps, 0, 0); + _mag_sample_delayed.mag(2) = calculate_synthetic_mag_z_measurement(_mag_sample_delayed.mag, mag_earth_pred); + _control_status.flags.synthetic_mag_z = true; + + } else { + _control_status.flags.synthetic_mag_z = false; + } + } + + _delta_time_baro_us = _baro_sample_delayed.time_us; + _baro_data_ready = _baro_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_baro_sample_delayed); + + // if we have a new baro sample save the delta time between this sample and the last sample which is + // used below for baro offset calculations + if (_baro_data_ready) { + _delta_time_baro_us = _baro_sample_delayed.time_us - _delta_time_baro_us; + } + + { + // Get range data from buffer and check validity + const bool is_rng_data_ready = _range_buffer.pop_first_older_than(_imu_sample_delayed.time_us, _range_sensor.getSampleAddress()); + _range_sensor.setDataReadiness(is_rng_data_ready); + + // update range sensor angle parameters in case they have changed + _range_sensor.setPitchOffset(_params.rng_sens_pitch); + _range_sensor.setCosMaxTilt(_params.range_cos_max_tilt); + _range_sensor.setQualityHysteresis(_params.range_valid_quality_s); + + _range_sensor.runChecks(_imu_sample_delayed.time_us, _R_to_earth); + } + + if (_range_sensor.isDataHealthy()) { + // correct the range data for position offset relative to the IMU + const Vector3f pos_offset_body = _params.rng_pos_body - _params.imu_pos_body; + const Vector3f pos_offset_earth = _R_to_earth * pos_offset_body; + _range_sensor.setRange(_range_sensor.getRange() + pos_offset_earth(2) / _range_sensor.getCosTilt()); + } + + // We don't fuse flow data immediately because we have to wait for the mid integration point to fall behind the fusion time horizon. + // This means we stop looking for new data until the old data has been fused, unless we are not fusing optical flow, + // in this case we need to empty the buffer + if (!_flow_data_ready || !_control_status.flags.opt_flow) { + _flow_data_ready = _flow_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_flow_sample_delayed); + } + + // check if we should fuse flow data for terrain estimation + if (!_flow_for_terrain_data_ready && _flow_data_ready && _control_status.flags.in_air) { + // TODO: WARNING, _flow_data_ready can be modified in controlOpticalFlowFusion + // due to some checks failing + // only fuse flow for terrain if range data hasn't been fused for 5 seconds + _flow_for_terrain_data_ready = isTimedOut(_time_last_hagl_fuse, (uint64_t)5E6); + // only fuse flow for terrain if the main filter is not fusing flow and we are using gps + _flow_for_terrain_data_ready &= (!_control_status.flags.opt_flow && _control_status.flags.gps); + } + + _ev_data_ready = _ext_vision_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_ev_sample_delayed); + _tas_data_ready = _airspeed_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_airspeed_sample_delayed); + + // check for height sensor timeouts and reset and change sensor if necessary + controlHeightSensorTimeouts(); + + // control use of observations for aiding + controlMagFusion(); + controlOpticalFlowFusion(); + controlGpsFusion(); + controlAirDataFusion(); + controlBetaFusion(); + controlDragFusion(); + controlHeightFusion(); + + // Additional data odoemtery data from an external estimator can be fused. + controlExternalVisionFusion(); + + // Additional horizontal velocity data from an auxiliary sensor can be fused + controlAuxVelFusion(); + + // Fake position measurement for constraining drift when no other velocity or position measurements + controlFakePosFusion(); + + // check if we are no longer fusing measurements that directly constrain velocity drift + update_deadreckoning_status(); +} + +void Ekf::controlExternalVisionFusion() +{ + // Check for new external vision data + if (_ev_data_ready) { + + if (_inhibit_ev_yaw_use) { + stopEvYawFusion(); + } + + // if the ev data is not in a NED reference frame, then the transformation between EV and EKF navigation frames + // needs to be calculated and the observations rotated into the EKF frame of reference + if ((_params.fusion_mode & MASK_ROTATE_EV) && ((_params.fusion_mode & MASK_USE_EVPOS) || (_params.fusion_mode & MASK_USE_EVVEL)) && !_control_status.flags.ev_yaw) { + // rotate EV measurements into the EKF Navigation frame + calcExtVisRotMat(); + } + + // external vision aiding selection logic + if (_control_status.flags.tilt_align && _control_status.flags.yaw_align) { + + // check for a external vision measurement that has fallen behind the fusion time horizon + if (isRecent(_time_last_ext_vision, 2 * EV_MAX_INTERVAL)) { + // turn on use of external vision measurements for position + if (_params.fusion_mode & MASK_USE_EVPOS && !_control_status.flags.ev_pos) { + startEvPosFusion(); + } + + // turn on use of external vision measurements for velocity + if (_params.fusion_mode & MASK_USE_EVVEL && !_control_status.flags.ev_vel) { + startEvVelFusion(); + } + } + } + + // external vision yaw aiding selection logic + if (!_inhibit_ev_yaw_use && (_params.fusion_mode & MASK_USE_EVYAW) && !_control_status.flags.ev_yaw && _control_status.flags.tilt_align) { + // don't start using EV data unless data is arriving frequently + if (isRecent(_time_last_ext_vision, 2 * EV_MAX_INTERVAL)) { + if (resetYawToEv()) { + _control_status.flags.yaw_align = true; + startEvYawFusion(); + } + } + } + + // determine if we should use the horizontal position observations + if (_control_status.flags.ev_pos) { + + Vector3f ev_pos_obs_var; + Vector2f ev_pos_innov_gates; + + // correct position and height for offset relative to IMU + const Vector3f pos_offset_body = _params.ev_pos_body - _params.imu_pos_body; + const Vector3f pos_offset_earth = _R_to_earth * pos_offset_body; + _ev_sample_delayed.pos -= pos_offset_earth; + + // Use an incremental position fusion method for EV position data if GPS is also used + if (_params.fusion_mode & MASK_USE_GPS) { + _fuse_hpos_as_odom = true; + } else { + _fuse_hpos_as_odom = false; + } + + if (_fuse_hpos_as_odom) { + if (!_hpos_prev_available) { + // no previous observation available to calculate position change + _hpos_prev_available = true; + + } else { + // calculate the change in position since the last measurement + Vector3f ev_delta_pos = _ev_sample_delayed.pos - _pos_meas_prev; + + // rotate measurement into body frame is required when fusing with GPS + ev_delta_pos = _R_ev_to_ekf * ev_delta_pos; + + // use the change in position since the last measurement + _ev_pos_innov(0) = _state.pos(0) - _hpos_pred_prev(0) - ev_delta_pos(0); + _ev_pos_innov(1) = _state.pos(1) - _hpos_pred_prev(1) - ev_delta_pos(1); + + // observation 1-STD error, incremental pos observation is expected to have more uncertainty + Matrix3f ev_pos_var = matrix::diag(_ev_sample_delayed.posVar); + ev_pos_var = _R_ev_to_ekf * ev_pos_var * _R_ev_to_ekf.transpose(); + ev_pos_obs_var(0) = fmaxf(ev_pos_var(0, 0), sq(0.5f)); + ev_pos_obs_var(1) = fmaxf(ev_pos_var(1, 1), sq(0.5f)); + } + + // record observation and estimate for use next time + _pos_meas_prev = _ev_sample_delayed.pos; + _hpos_pred_prev = _state.pos.xy(); + + } else { + // use the absolute position + Vector3f ev_pos_meas = _ev_sample_delayed.pos; + Matrix3f ev_pos_var = matrix::diag(_ev_sample_delayed.posVar); + if (_params.fusion_mode & MASK_ROTATE_EV) { + ev_pos_meas = _R_ev_to_ekf * ev_pos_meas; + ev_pos_var = _R_ev_to_ekf * ev_pos_var * _R_ev_to_ekf.transpose(); + } + _ev_pos_innov(0) = _state.pos(0) - ev_pos_meas(0); + _ev_pos_innov(1) = _state.pos(1) - ev_pos_meas(1); + + ev_pos_obs_var(0) = fmaxf(ev_pos_var(0, 0), sq(0.01f)); + ev_pos_obs_var(1) = fmaxf(ev_pos_var(1, 1), sq(0.01f)); + + // check if we have been deadreckoning too long + if (isTimedOut(_time_last_hor_pos_fuse, _params.reset_timeout_max)) { + // only reset velocity if we have no another source of aiding constraining it + if (isTimedOut(_time_last_of_fuse, (uint64_t)1E6) && + isTimedOut(_time_last_hor_vel_fuse, (uint64_t)1E6)) { + resetVelocity(); + } + + resetHorizontalPosition(); + } + } + + // innovation gate size + ev_pos_innov_gates(0) = fmaxf(_params.ev_pos_innov_gate, 1.0f); + + fuseHorizontalPosition(_ev_pos_innov, ev_pos_innov_gates, ev_pos_obs_var, _ev_pos_innov_var, _ev_pos_test_ratio); + } + + // determine if we should use the velocity observations + if (_control_status.flags.ev_vel) { + + Vector2f ev_vel_innov_gates; + + _last_vel_obs = getVisionVelocityInEkfFrame(); + _ev_vel_innov = _state.vel - _last_vel_obs; + + // check if we have been deadreckoning too long + if (isTimedOut(_time_last_hor_vel_fuse, _params.reset_timeout_max)) { + // only reset velocity if we have no another source of aiding constraining it + if (isTimedOut(_time_last_of_fuse, (uint64_t)1E6) && + isTimedOut(_time_last_hor_pos_fuse, (uint64_t)1E6)) { + resetVelocity(); + } + } + + _last_vel_obs_var = matrix::max(getVisionVelocityVarianceInEkfFrame(), sq(0.05f)); + + ev_vel_innov_gates.setAll(fmaxf(_params.ev_vel_innov_gate, 1.0f)); + + fuseHorizontalVelocity(_ev_vel_innov, ev_vel_innov_gates,_last_vel_obs_var, _ev_vel_innov_var, _ev_vel_test_ratio); + fuseVerticalVelocity(_ev_vel_innov, ev_vel_innov_gates, _last_vel_obs_var, _ev_vel_innov_var, _ev_vel_test_ratio); + } + + // determine if we should use the yaw observation + if (_control_status.flags.ev_yaw) { + fuseHeading(); + } + + } else if ((_control_status.flags.ev_pos || _control_status.flags.ev_vel || _control_status.flags.ev_yaw) + && isTimedOut(_time_last_ext_vision, (uint64_t)_params.reset_timeout_max)) { + + // Turn off EV fusion mode if no data has been received + stopEvFusion(); + _warning_events.flags.vision_data_stopped = true; + ECL_WARN("vision data stopped"); + } +} + +void Ekf::controlOpticalFlowFusion() +{ + // Check if on ground motion is un-suitable for use of optical flow + if (!_control_status.flags.in_air) { + updateOnGroundMotionForOpticalFlowChecks(); + + } else { + resetOnGroundMotionForOpticalFlowChecks(); + } + + // Accumulate autopilot gyro data across the same time interval as the flow sensor + _imu_del_ang_of += _imu_sample_delayed.delta_ang - _state.delta_ang_bias; + _delta_time_of += _imu_sample_delayed.delta_ang_dt; + + if (_flow_data_ready) { + const bool is_quality_good = (_flow_sample_delayed.quality >= _params.flow_qual_min); + const bool is_magnitude_good = !_flow_sample_delayed.flow_xy_rad.longerThan(_flow_sample_delayed.dt * _flow_max_rate); + const bool is_tilt_good = (_R_to_earth(2, 2) > _params.range_cos_max_tilt); + + const float delta_time_min = fmaxf(0.7f * _delta_time_of, 0.001f); + const float delta_time_max = fminf(1.3f * _delta_time_of, 0.2f); + const bool is_delta_time_good = _flow_sample_delayed.dt >= delta_time_min + && _flow_sample_delayed.dt <= delta_time_max; + const bool is_body_rate_comp_available = calcOptFlowBodyRateComp(); + + if (is_quality_good + && is_magnitude_good + && is_tilt_good + && is_body_rate_comp_available + && is_delta_time_good) { + // compensate for body motion to give a LOS rate + _flow_compensated_XY_rad = _flow_sample_delayed.flow_xy_rad - _flow_sample_delayed.gyro_xyz.xy(); + + } else if (!_control_status.flags.in_air && is_body_rate_comp_available) { + + if (!is_delta_time_good) { + // handle special case of SITL and PX4Flow where dt is forced to + // zero when the quaity is 0 + _flow_sample_delayed.dt = delta_time_min; + } + + // when on the ground with poor flow quality, + // assume zero ground relative velocity and LOS rate + _flow_compensated_XY_rad.setZero(); + + } else { + // don't use this flow data and wait for the next data to arrive + _flow_data_ready = false; + _flow_for_terrain_data_ready = false; // TODO: find a better place + } + } + + // New optical flow data is available and is ready to be fused when the midpoint of the sample falls behind the fusion time horizon + if (_flow_data_ready) { + // Inhibit flow use if motion is un-suitable or we have good quality GPS + // Apply hysteresis to prevent rapid mode switching + const float gps_err_norm_lim = _control_status.flags.opt_flow ? 0.7f : 1.0f; + + // Check if we are in-air and require optical flow to control position drift + const bool is_flow_required = _control_status.flags.in_air + && (_is_dead_reckoning // is doing inertial dead-reckoning so must constrain drift urgently + || isOnlyActiveSourceOfHorizontalAiding(_control_status.flags.opt_flow) + || (_control_status.flags.gps && (_gps_error_norm > gps_err_norm_lim))); // is using GPS, but GPS is bad + + + // inhibit use of optical flow if motion is unsuitable and we are not reliant on it for flight navigation + const bool preflight_motion_not_ok = !_control_status.flags.in_air + && ((_imu_sample_delayed.time_us > (_time_good_motion_us + (uint64_t)1E5)) + || (_imu_sample_delayed.time_us < (_time_bad_motion_us + (uint64_t)5E6))); + const bool flight_condition_not_ok = _control_status.flags.in_air && !isTerrainEstimateValid(); + + _inhibit_flow_use = ((preflight_motion_not_ok || flight_condition_not_ok) && !is_flow_required) + || !_control_status.flags.tilt_align; + + // Handle cases where we are using optical flow but we should not use it anymore + if (_control_status.flags.opt_flow) { + if (!(_params.fusion_mode & MASK_USE_OF) + || _inhibit_flow_use) { + + stopFlowFusion(); + return; + } + } + + // optical flow fusion mode selection logic + if ((_params.fusion_mode & MASK_USE_OF) // optical flow has been selected by the user + && !_control_status.flags.opt_flow // we are not yet using flow data + && !_inhibit_flow_use) + { + // If the heading is valid and use is not inhibited , start using optical flow aiding + if (_control_status.flags.yaw_align) { + // set the flag and reset the fusion timeout + _control_status.flags.opt_flow = true; + _time_last_of_fuse = _time_last_imu; + + // if we are not using GPS or external vision aiding, then the velocity and position states and covariances need to be set + const bool flow_aid_only = !isOtherSourceOfHorizontalAidingThan(_control_status.flags.opt_flow); + + if (flow_aid_only) { + resetVelocity(); + resetHorizontalPosition(); + } + } + } + + if (_control_status.flags.opt_flow) { + // Wait until the midpoint of the flow sample has fallen behind the fusion time horizon + if (_imu_sample_delayed.time_us > (_flow_sample_delayed.time_us - uint32_t(1e6f * _flow_sample_delayed.dt) / 2)) { + // Fuse optical flow LOS rate observations into the main filter only if height above ground has been updated recently + // but use a relaxed time criteria to enable it to coast through bad range finder data + if (isRecent(_time_last_hagl_fuse, (uint64_t)10e6)) { + fuseOptFlow(); + _last_known_posNE = _state.pos.xy(); + } + + _flow_data_ready = false; + } + + // handle the case when we have optical flow, are reliant on it, but have not been using it for an extended period + if (isTimedOut(_time_last_of_fuse, _params.reset_timeout_max) + && !isOtherSourceOfHorizontalAidingThan(_control_status.flags.opt_flow)) { + + resetVelocity(); + resetHorizontalPosition(); + } + } + + } else if (_control_status.flags.opt_flow && (_imu_sample_delayed.time_us > _flow_sample_delayed.time_us + (uint64_t)10e6)) { + stopFlowFusion(); + } +} + +void Ekf::updateOnGroundMotionForOpticalFlowChecks() +{ + // When on ground check if the vehicle is being shaken or moved in a way that could cause a loss of navigation + const float accel_norm = _accel_vec_filt.norm(); + + const bool motion_is_excessive = ((accel_norm > (CONSTANTS_ONE_G * 1.5f)) // upper g limit + || (accel_norm < (CONSTANTS_ONE_G * 0.5f)) // lower g limit + || (_ang_rate_magnitude_filt > _flow_max_rate) // angular rate exceeds flow sensor limit + || (_R_to_earth(2,2) < cosf(math::radians(30.0f)))); // tilted excessively + + if (motion_is_excessive) { + _time_bad_motion_us = _imu_sample_delayed.time_us; + + } else { + _time_good_motion_us = _imu_sample_delayed.time_us; + } +} + +void Ekf::resetOnGroundMotionForOpticalFlowChecks() +{ + _time_bad_motion_us = 0; + _time_good_motion_us = _imu_sample_delayed.time_us; +} + +void Ekf::controlGpsFusion() +{ + // Check for new GPS data that has fallen behind the fusion time horizon + if (_gps_data_ready) { + + const bool gps_checks_passing = isTimedOut(_last_gps_fail_us, (uint64_t)5e6); + const bool gps_checks_failing = isTimedOut(_last_gps_pass_us, (uint64_t)5e6); + + controlGpsYawFusion(gps_checks_passing, gps_checks_failing); + + // Determine if we should use GPS aiding for velocity and horizontal position + // To start using GPS we need angular alignment completed, the local NED origin set and GPS data that has not failed checks recently + if ((_params.fusion_mode & MASK_USE_GPS) && !_control_status.flags.gps) { + if (_control_status.flags.tilt_align && _NED_origin_initialised && gps_checks_passing) { + // If the heading is not aligned, reset the yaw and magnetic field states + // Do not use external vision for yaw if using GPS because yaw needs to be + // defined relative to an NED reference frame + if (!_control_status.flags.yaw_align + || _control_status.flags.ev_yaw + || _mag_inhibit_yaw_reset_req + || _mag_yaw_reset_req) { + + _mag_yaw_reset_req = true; + + // Stop the vision for yaw fusion and do not allow it to start again + stopEvYawFusion(); + _inhibit_ev_yaw_use = true; + + } else { + // If the heading is valid start using gps aiding + startGpsFusion(); + } + } + + } else if (_control_status.flags.gps + && (!(_params.fusion_mode & MASK_USE_GPS) || !_control_status.flags.yaw_align)) { + stopGpsFusion(); + } + + // Handle the case where we are using GPS and another source of aiding and GPS is failing checks + if (_control_status.flags.gps && gps_checks_failing && isOtherSourceOfHorizontalAidingThan(_control_status.flags.gps)) { + stopGpsFusion(); + // Reset position state to external vision if we are going to use absolute values + if (_control_status.flags.ev_pos && !(_params.fusion_mode & MASK_ROTATE_EV)) { + resetHorizontalPosition(); + } + _warning_events.flags.gps_quality_poor = true; + ECL_WARN("GPS quality poor - stopping use"); + } + + // handle case where we are not currently using GPS, but need to align yaw angle using EKF-GSF before + // we can start using GPS + const bool align_yaw_using_gsf = !_control_status.flags.gps && _do_ekfgsf_yaw_reset && isTimedOut(_ekfgsf_yaw_reset_time, 5000000); + if (align_yaw_using_gsf) { + if (resetYawToEKFGSF()) { + _ekfgsf_yaw_reset_time = _time_last_imu; + _do_ekfgsf_yaw_reset = false; + } + } + + // handle the case when we now have GPS, but have not been fusing it for an extended period + if (_control_status.flags.gps) { + // We are relying on aiding to constrain drift so after a specified time + // with no aiding we need to do something + bool do_vel_pos_reset = isTimedOut(_time_last_hor_pos_fuse, _params.reset_timeout_max) + && isTimedOut(_time_last_delpos_fuse, _params.reset_timeout_max) + && isTimedOut(_time_last_hor_vel_fuse, _params.reset_timeout_max) + && isTimedOut(_time_last_of_fuse, _params.reset_timeout_max); + + // We haven't had an absolute position fix for a longer time so need to do something + do_vel_pos_reset = do_vel_pos_reset || isTimedOut(_time_last_hor_pos_fuse, 2 * _params.reset_timeout_max); + + /* Logic controlling the reset of navigation filter yaw to the EKF-GSF estimate to recover from loss of + navigation casued by a bad yaw estimate. + + A rapid reset to the EKF-GSF estimate is performed after a recent takeoff if horizontal velocity + innovation checks fail. This enables recovery from a bad yaw estimate. After 30 seconds from takeoff, + different test criteria are used that take longer to trigger and reduce false positives. A reset is + not performed if the fault condition was present before flight to prevent triggering due to GPS glitches + or other sensor errors. + + The yaw reset to the EKF-GSF estimate can be requested externally at any time during flight. + + The total number of resets allowed per boot cycle is limited. + + The minimum time interval between resets to the EKF-GSF estimate is limited to allow the EKF-GSF time + to improve its estimate if the previous reset was not successful. + + A reset is not performed when getting GPS back after a significant period of no data because the timeout + could have been caused by bad GPS. + */ + + const bool recent_takeoff_nav_failure = _control_status.flags.in_air && + !isTimedOut(_time_last_on_ground_us, 30000000) && + isTimedOut(_time_last_hor_vel_fuse, _params.EKFGSF_reset_delay) && + (_time_last_hor_vel_fuse > _time_last_on_ground_us); + + const bool inflight_nav_failure = _control_status.flags.in_air && + do_vel_pos_reset && + (_time_last_hor_vel_fuse > _time_last_on_ground_us) && + (_time_last_hor_pos_fuse > _time_last_on_ground_us); + + bool is_yaw_failure = false; + if ((recent_takeoff_nav_failure || inflight_nav_failure) && _time_last_hor_vel_fuse > 0) { + // Do sanity check to see if the innovation failures is likely caused by a yaw angle error + // by measuring the angle between the velocity estimate and the last velocity observation + // Only use those vectors if their norm if they are larger than 4 times their noise standard deviation + const float vel_obs_xy_norm_sq = _last_vel_obs.xy().norm_squared(); + const float vel_state_xy_norm_sq = _state.vel.xy().norm_squared(); + + const float vel_obs_threshold_sq = fmaxf(sq(4.f) * (_last_vel_obs_var(0) + _last_vel_obs_var(1)), sq(0.4f)); + const float vel_state_threshold_sq = fmaxf(sq(4.f) * (P(4, 4) + P(5, 5)), sq(0.4f)); + + if (vel_obs_xy_norm_sq > vel_obs_threshold_sq && vel_state_xy_norm_sq > vel_state_threshold_sq) { + const float obs_dot_vel = Vector2f(_last_vel_obs).dot(_state.vel.xy()); + const float cos_sq = sq(obs_dot_vel) / (vel_state_xy_norm_sq * vel_obs_xy_norm_sq); + + if (cos_sq < sq(cosf(math::radians(25.f))) || obs_dot_vel < 0.f) { + // The angle between the observation and the velocity estimate is greater than 25 degrees + is_yaw_failure = true; + } + } + } + + // Detect if coming back after significant time without GPS data + const bool gps_signal_was_lost = isTimedOut(_time_prev_gps_us, 1000000); + const bool do_yaw_vel_pos_reset = (_do_ekfgsf_yaw_reset || is_yaw_failure) && + _ekfgsf_yaw_reset_count < _params.EKFGSF_reset_count_limit && + isTimedOut(_ekfgsf_yaw_reset_time, 5000000) && + !gps_signal_was_lost; + + if (do_yaw_vel_pos_reset) { + if (resetYawToEKFGSF()) { + _ekfgsf_yaw_reset_time = _time_last_imu; + _do_ekfgsf_yaw_reset = false; + _ekfgsf_yaw_reset_count++; + + // Reset the timeout counters + _time_last_hor_pos_fuse = _time_last_imu; + _time_last_delpos_fuse = _time_last_imu; + _time_last_hor_vel_fuse = _time_last_imu; + _time_last_of_fuse = _time_last_imu; + } + + } else if (do_vel_pos_reset) { + // use GPS velocity data to check and correct yaw angle if a FW vehicle + if (_control_status.flags.fixed_wing && _control_status.flags.in_air) { + // if flying a fixed wing aircraft, do a complete reset that includes yaw + _control_status.flags.mag_aligned_in_flight = realignYawGPS(); + } + + resetVelocity(); + resetHorizontalPosition(); + _velpos_reset_request = false; + _warning_events.flags.gps_fusion_timout = true; + ECL_WARN("GPS fusion timeout - reset to GPS"); + + // Reset the timeout counters + _time_last_hor_pos_fuse = _time_last_imu; + _time_last_hor_vel_fuse = _time_last_imu; + } + } + + // Only use GPS data for position and velocity aiding if enabled + if (_control_status.flags.gps) { + + Vector2f gps_vel_innov_gates; // [horizontal vertical] + Vector2f gps_pos_innov_gates; // [horizontal vertical] + Vector3f gps_pos_obs_var; + + // correct velocity for offset relative to IMU + const Vector3f pos_offset_body = _params.gps_pos_body - _params.imu_pos_body; + const Vector3f vel_offset_body = _ang_rate_delayed_raw % pos_offset_body; + const Vector3f vel_offset_earth = _R_to_earth * vel_offset_body; + _gps_sample_delayed.vel -= vel_offset_earth; + + // correct position and height for offset relative to IMU + const Vector3f pos_offset_earth = _R_to_earth * pos_offset_body; + _gps_sample_delayed.pos -= pos_offset_earth.xy(); + _gps_sample_delayed.hgt += pos_offset_earth(2); + + const float lower_limit = fmaxf(_params.gps_pos_noise, 0.01f); + + if (isOtherSourceOfHorizontalAidingThan(_control_status.flags.gps)) { + // if we are using other sources of aiding, then relax the upper observation + // noise limit which prevents bad GPS perturbing the position estimate + gps_pos_obs_var(0) = gps_pos_obs_var(1) = sq(fmaxf(_gps_sample_delayed.hacc, lower_limit)); + + } else { + // if we are not using another source of aiding, then we are reliant on the GPS + // observations to constrain attitude errors and must limit the observation noise value. + float upper_limit = fmaxf(_params.pos_noaid_noise, lower_limit); + gps_pos_obs_var(0) = gps_pos_obs_var(1) = sq(math::constrain(_gps_sample_delayed.hacc, lower_limit, upper_limit)); + } + + _gps_sample_delayed.sacc = fmaxf(_gps_sample_delayed.sacc, _params.gps_vel_noise); + + _last_vel_obs_var.setAll(sq(_gps_sample_delayed.sacc)); + _last_vel_obs_var(2) *= sq(1.5f); + + // calculate innovations + _last_vel_obs = _gps_sample_delayed.vel; + _gps_vel_innov = _state.vel - _last_vel_obs; + _gps_pos_innov.xy() = Vector2f(_state.pos) - _gps_sample_delayed.pos; + + // set innovation gate size + gps_pos_innov_gates(0) = fmaxf(_params.gps_pos_innov_gate, 1.0f); + gps_vel_innov_gates(0) = gps_vel_innov_gates(1) = fmaxf(_params.gps_vel_innov_gate, 1.0f); + + // fuse GPS measurement + fuseHorizontalVelocity(_gps_vel_innov, gps_vel_innov_gates, _last_vel_obs_var, _gps_vel_innov_var, _gps_vel_test_ratio); + fuseVerticalVelocity(_gps_vel_innov, gps_vel_innov_gates, _last_vel_obs_var, _gps_vel_innov_var, _gps_vel_test_ratio); + fuseHorizontalPosition(_gps_pos_innov, gps_pos_innov_gates, gps_pos_obs_var, _gps_pos_innov_var, _gps_pos_test_ratio); + } + + } else if (_control_status.flags.gps && (_imu_sample_delayed.time_us - _gps_sample_delayed.time_us > (uint64_t)10e6)) { + stopGpsFusion(); + _warning_events.flags.gps_data_stopped = true; + ECL_WARN("GPS data stopped"); + } else if (_control_status.flags.gps && (_imu_sample_delayed.time_us - _gps_sample_delayed.time_us > (uint64_t)1e6) && isOtherSourceOfHorizontalAidingThan(_control_status.flags.gps)) { + // Handle the case where we are fusing another position source along GPS, + // stop waiting for GPS after 1 s of lost signal + stopGpsFusion(); + _warning_events.flags.gps_data_stopped_using_alternate = true; + ECL_WARN("GPS data stopped, using only EV, OF or air data" ); + } +} + +void Ekf::controlGpsYawFusion(bool gps_checks_passing, bool gps_checks_failing) +{ + if (!(_params.fusion_mode & MASK_USE_GPSYAW) + || _is_gps_yaw_faulty) { + + stopGpsYawFusion(); + return; + } + + const bool is_new_data_available = ISFINITE(_gps_sample_delayed.yaw); + + if (is_new_data_available) { + + const bool continuing_conditions_passing = !gps_checks_failing; + + const bool is_gps_yaw_data_intermittent = !isRecent(_time_last_gps_yaw_data, 2 * GPS_MAX_INTERVAL); + + const bool starting_conditions_passing = continuing_conditions_passing + && _control_status.flags.tilt_align + && gps_checks_passing + && !is_gps_yaw_data_intermittent + && !_gps_hgt_intermittent; + + _time_last_gps_yaw_data = _time_last_imu; + + if (_control_status.flags.gps_yaw) { + + if (continuing_conditions_passing) { + + fuseGpsYaw(); + + const bool is_fusion_failing = isTimedOut(_time_last_gps_yaw_fuse, _params.reset_timeout_max); + + if (is_fusion_failing) { + if (_nb_gps_yaw_reset_available > 0) { + // Data seems good, attempt a reset + resetYawToGps(); + _nb_gps_yaw_reset_available--; + + } else if (starting_conditions_passing) { + // Data seems good, but previous reset did not fix the issue + // something else must be wrong, declare the sensor faulty and stop the fusion + _is_gps_yaw_faulty = true; + stopGpsYawFusion(); + + } else { + // A reset did not fix the issue but all the starting checks are not passing + // This could be a temporary issue, stop the fusion without declaring the sensor faulty + stopGpsYawFusion(); + } + // TODO: should we give a new reset credit when the fusion does not fail for some time? + } + + } else { + // Stop GPS yaw fusion but do not declare it faulty + stopGpsYawFusion(); + } + + } else { + if (starting_conditions_passing) { + // Try to activate GPS yaw fusion + if (resetYawToGps()) { + _control_status.flags.yaw_align = true; + _nb_gps_yaw_reset_available = 1; + startGpsYawFusion(); + } + } + } + + } else if (_control_status.flags.gps_yaw + && isTimedOut(_time_last_gps_yaw_data, _params.reset_timeout_max)) { + // No yaw data in the message anymore. Stop until it comes back. + stopGpsYawFusion(); + } + + // Before takeoff, we do not want to continue to rely on the current heading + // if we had to stop the fusion + if (!_control_status.flags.in_air + && !_control_status.flags.gps_yaw + && _control_status_prev.flags.gps_yaw) { + _control_status.flags.yaw_align = false; + } +} + +void Ekf::controlHeightSensorTimeouts() +{ + /* + * Handle the case where we have not fused height measurements recently and + * uncertainty exceeds the max allowable. Reset using the best available height + * measurement source, continue using it after the reset and declare the current + * source failed if we have switched. + */ + + checkVerticalAccelerationHealth(); + + // check if height is continuously failing because of accel errors + const bool continuous_bad_accel_hgt = isTimedOut(_time_good_vert_accel, (uint64_t)_params.bad_acc_reset_delay_us); + + // check if height has been inertial deadreckoning for too long + // in vision hgt mode check for vision data + const bool hgt_fusion_timeout = isTimedOut(_time_last_hgt_fuse, (uint64_t)5e6); + + if (hgt_fusion_timeout || continuous_bad_accel_hgt) { + + bool request_height_reset = false; + const char* failing_height_source = nullptr; + const char* new_height_source = nullptr; + + if (_control_status.flags.baro_hgt) { + // check if GPS height is available + const gpsSample &gps_init = _gps_buffer.get_newest(); + const bool gps_hgt_accurate = (gps_init.vacc < _params.req_vacc); + + // check for inertial sensing errors in the last BADACC_PROBATION seconds + const bool prev_bad_vert_accel = isRecent(_time_bad_vert_accel, BADACC_PROBATION); + + // reset to GPS if adequate GPS data is available and the timeout cannot be blamed on IMU data + const bool reset_to_gps = !_gps_hgt_intermittent && + ((gps_hgt_accurate && !prev_bad_vert_accel) || _baro_hgt_faulty); + + if (reset_to_gps) { + // set height sensor health + _baro_hgt_faulty = true; + + startGpsHgtFusion(); + + request_height_reset = true; + failing_height_source = "baro"; + new_height_source = "gps"; + + } else if (!_baro_hgt_faulty) { + request_height_reset = true; + failing_height_source = "baro"; + new_height_source = "baro"; + } + + } else if (_control_status.flags.gps_hgt) { + // check if GPS height is available + const gpsSample &gps_init = _gps_buffer.get_newest(); + const bool gps_hgt_accurate = (gps_init.vacc < _params.req_vacc); + + // check the baro height source for consistency and freshness + const baroSample &baro_init = _baro_buffer.get_newest(); + const float baro_innov = _state.pos(2) - (_hgt_sensor_offset - baro_init.hgt + _baro_hgt_offset); + const bool baro_data_consistent = fabsf(baro_innov) < (sq(_params.baro_noise) + P(9,9)) * sq(_params.baro_innov_gate); + + // if baro data is acceptable and GPS data is inaccurate, reset height to baro + const bool reset_to_baro = !_baro_hgt_faulty && + ((baro_data_consistent && !gps_hgt_accurate) || + _gps_hgt_intermittent); + + if (reset_to_baro) { + startBaroHgtFusion(); + + request_height_reset = true; + failing_height_source = "gps"; + new_height_source = "baro"; + + } else if (!_gps_hgt_intermittent) { + request_height_reset = true; + failing_height_source = "gps"; + new_height_source = "gps"; + } + + } else if (_control_status.flags.rng_hgt) { + + if (_range_sensor.isHealthy()) { + request_height_reset = true; + failing_height_source = "rng"; + new_height_source = "rng"; + + } else if (!_baro_hgt_faulty) { + startBaroHgtFusion(); + + request_height_reset = true; + failing_height_source = "rng"; + new_height_source = "baro"; + } + + } else if (_control_status.flags.ev_hgt) { + // check if vision data is available + const extVisionSample &ev_init = _ext_vision_buffer.get_newest(); + const bool ev_data_available = isRecent(ev_init.time_us, 2 * EV_MAX_INTERVAL); + + if (ev_data_available) { + request_height_reset = true; + failing_height_source = "ev"; + new_height_source = "ev"; + + // Fallback to rangefinder data if available + } else if (_range_sensor.isHealthy()) { + setControlRangeHeight(); + request_height_reset = true; + failing_height_source = "ev"; + new_height_source = "rng"; + + } else if (!_baro_hgt_faulty) { + startBaroHgtFusion(); + + request_height_reset = true; + failing_height_source = "ev"; + new_height_source = "baro"; + } + } + + if (failing_height_source && new_height_source) { + _warning_events.flags.height_sensor_timeout = true; + ECL_WARN("%s hgt timeout - reset to %s", failing_height_source, new_height_source); + } + + // Reset vertical position and velocity states to the last measurement + if (request_height_reset) { + resetHeight(); + // Reset the timout timer + _time_last_hgt_fuse = _time_last_imu; + } + } +} + +void Ekf::checkVerticalAccelerationHealth() +{ + // Check for IMU accelerometer vibration induced clipping as evidenced by the vertical + // innovations being positive and not stale. + // Clipping usually causes the average accel reading to move towards zero which makes the INS + // think it is falling and produces positive vertical innovations. + // Don't use stale innovation data. + bool is_inertial_nav_falling = false; + bool are_vertical_pos_and_vel_independant = false; + if (isRecent(_vert_pos_fuse_attempt_time_us, 1000000)) { + if (isRecent(_vert_vel_fuse_time_us, 1000000)) { + // If vertical position and velocity come from independent sensors then we can + // trust them more if they disagree with the IMU, but need to check that they agree + const bool using_gps_for_both = _control_status.flags.gps_hgt && _control_status.flags.gps; + const bool using_ev_for_both = _control_status.flags.ev_hgt && _control_status.flags.ev_vel; + are_vertical_pos_and_vel_independant = !(using_gps_for_both || using_ev_for_both); + is_inertial_nav_falling |= _vert_vel_innov_ratio > _params.vert_innov_test_lim && _vert_pos_innov_ratio > 0.0f; + is_inertial_nav_falling |= _vert_pos_innov_ratio > _params.vert_innov_test_lim && _vert_vel_innov_ratio > 0.0f; + } else { + // only height sensing available + is_inertial_nav_falling = _vert_pos_innov_ratio > _params.vert_innov_test_lim; + } + } + + // Check for more than 50% clipping affected IMU samples within the past 1 second + const uint16_t clip_count_limit = 1000 / FILTER_UPDATE_PERIOD_MS; + const bool is_clipping = _imu_sample_delayed.delta_vel_clipping[0] || + _imu_sample_delayed.delta_vel_clipping[1] || + _imu_sample_delayed.delta_vel_clipping[2]; + if (is_clipping &&_clip_counter < clip_count_limit) { + _clip_counter++; + } else if (_clip_counter > 0) { + _clip_counter--; + } + const bool is_clipping_frequently = _clip_counter > 0; + + // if vertical velocity and position are independent and agree, then do not require evidence of clipping if + // innovations are large + const bool bad_vert_accel = (are_vertical_pos_and_vel_independant || is_clipping_frequently) && + is_inertial_nav_falling; + + if (bad_vert_accel) { + _time_bad_vert_accel = _time_last_imu; + + } else { + _time_good_vert_accel = _time_last_imu; + } + + // declare a bad vertical acceleration measurement and make the declaration persist + // for a minimum of BADACC_PROBATION seconds + if (_fault_status.flags.bad_acc_vertical) { + _fault_status.flags.bad_acc_vertical = isRecent(_time_bad_vert_accel, BADACC_PROBATION); + + } else { + _fault_status.flags.bad_acc_vertical = bad_vert_accel; + } +} + +void Ekf::controlHeightFusion() +{ + checkRangeAidSuitability(); + const bool do_range_aid = (_params.range_aid == 1) && isRangeAidSuitable(); + + bool fuse_height = false; + + switch (_params.vdist_sensor_type) { + default: + ECL_ERR("Invalid hgt mode: %d", _params.vdist_sensor_type); + + // FALLTHROUGH + case VDIST_SENSOR_BARO: + if (do_range_aid && _range_sensor.isDataHealthy()) { + setControlRangeHeight(); + fuse_height = true; + + // we have just switched to using range finder, calculate height sensor offset such that current + // measurement matches our current height estimate + if (_control_status_prev.flags.rng_hgt != _control_status.flags.rng_hgt) { + _hgt_sensor_offset = _terrain_vpos; + } + + } else if (!do_range_aid && _baro_data_ready && !_baro_hgt_faulty) { + startBaroHgtFusion(); + fuse_height = true; + + } else if (_control_status.flags.gps_hgt && _gps_data_ready && !_gps_hgt_intermittent) { + // switch to gps if there was a reset to gps + fuse_height = true; + + // we have just switched to using gps height, calculate height sensor offset such that current + // measurement matches our current height estimate + if (_control_status_prev.flags.gps_hgt != _control_status.flags.gps_hgt) { + _hgt_sensor_offset = _gps_sample_delayed.hgt - _gps_alt_ref + _state.pos(2); + } + } + + break; + + case VDIST_SENSOR_RANGE: + if (_range_sensor.isDataHealthy()) { + setControlRangeHeight(); + fuse_height = true; + + if (_control_status_prev.flags.rng_hgt != _control_status.flags.rng_hgt) { + // we have just switched to using range finder, calculate height sensor offset such that current + // measurement matches our current height estimate + // use the parameter rng_gnd_clearance if on ground to avoid a noisy offset initialization (e.g. sonar) + if (_control_status.flags.in_air && isTerrainEstimateValid()) { + _hgt_sensor_offset = _terrain_vpos; + + } else if (_control_status.flags.in_air) { + _hgt_sensor_offset = _range_sensor.getDistBottom() + _state.pos(2); + + } else { + _hgt_sensor_offset = _params.rng_gnd_clearance; + } + } + + } else if (_control_status.flags.baro_hgt && _baro_data_ready && !_baro_hgt_faulty) { + // fuse baro data if there was a reset to baro + fuse_height = true; + } + + break; + + case VDIST_SENSOR_GPS: + + // NOTE: emergency fallback due to extended loss of currently selected sensor data or failure + // to pass innovation cinsistency checks is handled elsewhere in Ekf::controlHeightSensorTimeouts. + // Do switching between GPS and rangefinder if using range finder as a height source when close + // to ground and moving slowly. Also handle switch back from emergency Baro sensor when GPS recovers. + if (!_control_status_prev.flags.rng_hgt && do_range_aid && _range_sensor.isDataHealthy()) { + setControlRangeHeight(); + + // we have just switched to using range finder, calculate height sensor offset such that current + // measurement matches our current height estimate + _hgt_sensor_offset = _terrain_vpos; + + } else if (_control_status_prev.flags.rng_hgt && !do_range_aid) { + // must stop using range finder so find another sensor now + if (!_gps_hgt_intermittent && _gps_checks_passed) { + // GPS quality OK + startGpsHgtFusion(); + } else if (!_baro_hgt_faulty) { + // Use baro as a fallback + startBaroHgtFusion(); + } + } else if (_control_status.flags.baro_hgt && !do_range_aid && !_gps_hgt_intermittent && _gps_checks_passed) { + // In baro fallback mode and GPS has recovered so start using it + startGpsHgtFusion(); + } + if (_control_status.flags.gps_hgt && _gps_data_ready) { + fuse_height = true; + } else if (_control_status.flags.rng_hgt && _range_sensor.isDataHealthy()) { + fuse_height = true; + } else if (_control_status.flags.baro_hgt && _baro_data_ready && !_baro_hgt_faulty) { + fuse_height = true; + } + break; + + case VDIST_SENSOR_EV: + + // don't start using EV data unless data is arriving frequently, do not reset if pref mode was height + if (!_control_status.flags.ev_hgt && isRecent(_time_last_ext_vision, 2 * EV_MAX_INTERVAL)) { + fuse_height = true; + setControlEVHeight(); + if (!_control_status_prev.flags.rng_hgt) { + resetHeight(); + } + } + + if (_control_status.flags.ev_hgt && _ev_data_ready) { + fuse_height = true; + } else if (_control_status.flags.rng_hgt && _range_sensor.isDataHealthy()) { + fuse_height = true; + } else if (_control_status.flags.baro_hgt && _baro_data_ready && !_baro_hgt_faulty) { + fuse_height = true; + } + + break; + } + + updateBaroHgtOffset(); + + if (_control_status.flags.rng_hgt + && isTimedOut(_time_last_hgt_fuse, 2 * RNG_MAX_INTERVAL) + && !_range_sensor.isDataHealthy() + && _range_sensor.isRegularlySendingData() + && !_control_status.flags.in_air) { + + // If we are supposed to be using range finder data as the primary height sensor, have missed or rejected measurements + // and are on the ground, then synthesise a measurement at the expected on ground value + _range_sensor.setRange(_params.rng_gnd_clearance); + _range_sensor.setDataReadiness(true); + _range_sensor.setValidity(true); // bypass the checks + + fuse_height = true; + } + + if (fuse_height) { + if (_control_status.flags.baro_hgt) { + Vector2f baro_hgt_innov_gate; + Vector3f baro_hgt_obs_var; + + // vertical position innovation - baro measurement has opposite sign to earth z axis + _baro_hgt_innov(2) = _state.pos(2) + _baro_sample_delayed.hgt - _baro_hgt_offset; + // observation variance - user parameter defined + baro_hgt_obs_var(2) = sq(fmaxf(_params.baro_noise, 0.01f)); + // innovation gate size + baro_hgt_innov_gate(1) = fmaxf(_params.baro_innov_gate, 1.0f); + + // Compensate for positive static pressure transients (negative vertical position innovations) + // caused by rotor wash ground interaction by applying a temporary deadzone to baro innovations. + const float deadzone_start = 0.0f; + const float deadzone_end = deadzone_start + _params.gnd_effect_deadzone; + + if (_control_status.flags.gnd_effect) { + if (_baro_hgt_innov(2) < -deadzone_start) { + if (_baro_hgt_innov(2) <= -deadzone_end) { + _baro_hgt_innov(2) += deadzone_end; + + } else { + _baro_hgt_innov(2) = -deadzone_start; + } + } + } + // fuse height information + fuseVerticalPosition(_baro_hgt_innov,baro_hgt_innov_gate, + baro_hgt_obs_var, _baro_hgt_innov_var,_baro_hgt_test_ratio); + + } else if (_control_status.flags.gps_hgt) { + Vector2f gps_hgt_innov_gate; + Vector3f gps_hgt_obs_var; + // vertical position innovation - gps measurement has opposite sign to earth z axis + _gps_pos_innov(2) = _state.pos(2) + _gps_sample_delayed.hgt - _gps_alt_ref - _hgt_sensor_offset; + gps_hgt_obs_var(2) = getGpsHeightVariance(); + // innovation gate size + gps_hgt_innov_gate(1) = fmaxf(_params.baro_innov_gate, 1.0f); + // fuse height information + fuseVerticalPosition(_gps_pos_innov,gps_hgt_innov_gate, + gps_hgt_obs_var, _gps_pos_innov_var, _gps_pos_test_ratio); + + } else if (_control_status.flags.rng_hgt) { + Vector2f rng_hgt_innov_gate; + Vector3f rng_hgt_obs_var; + // use range finder with tilt correction + _rng_hgt_innov(2) = _state.pos(2) - (-math::max(_range_sensor.getDistBottom(), + _params.rng_gnd_clearance)) - _hgt_sensor_offset; + // observation variance - user parameter defined + rng_hgt_obs_var(2) = fmaxf(sq(_params.range_noise) + + sq(_params.range_noise_scaler * _range_sensor.getDistBottom()), 0.01f); + // innovation gate size + rng_hgt_innov_gate(1) = fmaxf(_params.range_innov_gate, 1.0f); + // fuse height information + fuseVerticalPosition(_rng_hgt_innov,rng_hgt_innov_gate, + rng_hgt_obs_var, _rng_hgt_innov_var,_rng_hgt_test_ratio); + + } else if (_control_status.flags.ev_hgt) { + Vector2f ev_hgt_innov_gate; + Vector3f ev_hgt_obs_var; + // calculate the innovation assuming the external vision observation is in local NED frame + _ev_pos_innov(2) = _state.pos(2) - _ev_sample_delayed.pos(2); + // observation variance - defined externally + ev_hgt_obs_var(2) = fmaxf(_ev_sample_delayed.posVar(2), sq(0.01f)); + // innovation gate size + ev_hgt_innov_gate(1) = fmaxf(_params.ev_pos_innov_gate, 1.0f); + // fuse height information + fuseVerticalPosition(_ev_pos_innov,ev_hgt_innov_gate, + ev_hgt_obs_var, _ev_pos_innov_var,_ev_pos_test_ratio); + } + } +} + +void Ekf::checkRangeAidSuitability() +{ + if (_control_status.flags.in_air + && _range_sensor.isHealthy() + && isTerrainEstimateValid()) { + // check if we can use range finder measurements to estimate height, use hysteresis to avoid rapid switching + // Note that the 0.7 coefficients and the innovation check are arbitrary values but work well in practice + const float range_hagl = _terrain_vpos - _state.pos(2); + const float range_hagl_max = _is_range_aid_suitable ? _params.max_hagl_for_range_aid : (_params.max_hagl_for_range_aid * 0.7f); + const bool is_in_range = range_hagl < range_hagl_max; + + const float hagl_test_ratio = (_hagl_innov * _hagl_innov / (sq(_params.range_aid_innov_gate) * _hagl_innov_var)); + const bool is_hagl_stable = _is_range_aid_suitable ? (hagl_test_ratio < 1.f) : (hagl_test_ratio < 0.01f); + + if (isHorizontalAidingActive()) { + const float max_vel = _is_range_aid_suitable ? _params.max_vel_for_range_aid : (_params.max_vel_for_range_aid * 0.7f); + const bool is_below_max_speed = !_state.vel.xy().longerThan(max_vel); + + _is_range_aid_suitable = is_in_range && is_hagl_stable && is_below_max_speed; + + } else { + _is_range_aid_suitable = is_in_range && is_hagl_stable; + } + + } else { + _is_range_aid_suitable = false; + } +} + +void Ekf::controlAirDataFusion() +{ + // control activation and initialisation/reset of wind states required for airspeed fusion + + // If both airspeed and sideslip fusion have timed out and we are not using a drag observation model then we no longer have valid wind estimates + const bool airspeed_timed_out = isTimedOut(_time_last_arsp_fuse, (uint64_t)10e6); + const bool sideslip_timed_out = isTimedOut(_time_last_beta_fuse, (uint64_t)10e6); + if (_control_status.flags.wind && + (_using_synthetic_position || (airspeed_timed_out && sideslip_timed_out && !(_params.fusion_mode & MASK_USE_DRAG)))) { + _control_status.flags.wind = false; + } + + if (_control_status.flags.fuse_aspd && airspeed_timed_out) { + _control_status.flags.fuse_aspd = false; + } + + // Always try to fuse airspeed data if available and we are in flight + if (!_using_synthetic_position && _tas_data_ready && _control_status.flags.in_air) { + // If starting wind state estimation, reset the wind states and covariances before fusing any data + if (!_control_status.flags.wind) { + // activate the wind states + _control_status.flags.wind = true; + // reset the timout timer to prevent repeated resets + _time_last_arsp_fuse = _time_last_imu; + // reset the wind speed states and corresponding covariances + resetWindStates(); + resetWindCovariance(); + } + + fuseAirspeed(); + } +} + +void Ekf::controlBetaFusion() +{ + if (_using_synthetic_position) { + return; + } + + // Perform synthetic sideslip fusion at regular intervals when in-air and sideslip fuson had been enabled externally: + const bool beta_fusion_time_triggered = isTimedOut(_time_last_beta_fuse, _params.beta_avg_ft_us); + if (beta_fusion_time_triggered && + _control_status.flags.fuse_beta && + _control_status.flags.in_air) { + // If starting wind state estimation, reset the wind states and covariances before fusing any data + if (!_control_status.flags.wind) { + // activate the wind states + _control_status.flags.wind = true; + // reset the timeout timers to prevent repeated resets + _time_last_beta_fuse = _time_last_imu; + // reset the wind speed states and corresponding covariances + resetWindStates(); + resetWindCovariance(); + } + + fuseSideslip(); + } +} + +void Ekf::controlDragFusion() +{ + if ((_params.fusion_mode & MASK_USE_DRAG) && + !_using_synthetic_position && + _control_status.flags.in_air && + !_mag_inhibit_yaw_reset_req) { + if (!_control_status.flags.wind) { + // reset the wind states and covariances when starting drag accel fusion + _control_status.flags.wind = true; + resetWindStates(); + resetWindCovariance(); + + } else if (_drag_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_drag_sample_delayed)) { + fuseDrag(); + } + + } +} + +void Ekf::controlFakePosFusion() +{ + // if we aren't doing any aiding, fake position measurements at the last known position to constrain drift + // Coincide fake measurements with baro data for efficiency with a minimum fusion rate of 5Hz + + if (!isHorizontalAidingActive() + && !(_control_status.flags.fuse_aspd && _control_status.flags.fuse_beta)) { + + // We now need to use a synthetic position observation to prevent unconstrained drift of the INS states. + _using_synthetic_position = true; + + // Fuse synthetic position observations every 200msec + if (isTimedOut(_time_last_fake_pos, (uint64_t)2e5)) { + + // Reset position and velocity states if we re-commence this aiding method + if (isTimedOut(_time_last_fake_pos, (uint64_t)4e5)) { + _last_known_posNE = _state.pos.xy(); + resetHorizontalPosition(); + resetVelocity(); + _fuse_hpos_as_odom = false; + + if (_time_last_fake_pos != 0) { + _warning_events.flags.stopping_navigation = true; + ECL_WARN("stopping navigation"); + } + + } + _time_last_fake_pos = _time_last_imu; + + Vector3f fake_pos_obs_var; + + if (_control_status.flags.in_air && _control_status.flags.tilt_align) { + fake_pos_obs_var(0) = fake_pos_obs_var(1) = sq(fmaxf(_params.pos_noaid_noise, _params.gps_pos_noise)); + + } else if (_control_status.flags.vehicle_at_rest) { + // Accelerate tilt fine alignment by fusing more + // aggressively when the vehicle is at rest + fake_pos_obs_var(0) = fake_pos_obs_var(1) = sq(0.1f); + + } else { + fake_pos_obs_var(0) = fake_pos_obs_var(1) = sq(0.5f); + } + + _gps_pos_innov.xy() = Vector2f(_state.pos) - _last_known_posNE; + + const Vector2f fake_pos_innov_gate(3.0f, 3.0f); + + fuseHorizontalPosition(_gps_pos_innov, fake_pos_innov_gate, fake_pos_obs_var, + _gps_pos_innov_var, _gps_pos_test_ratio, true); + } + + } else { + _using_synthetic_position = false; + } + +} + +void Ekf::controlAuxVelFusion() +{ + const bool data_ready = _auxvel_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_auxvel_sample_delayed); + + if (data_ready && isHorizontalAidingActive()) { + + const Vector2f aux_vel_innov_gate(_params.auxvel_gate, _params.auxvel_gate); + + _last_vel_obs = _auxvel_sample_delayed.vel; + _aux_vel_innov = _state.vel - _last_vel_obs; + _last_vel_obs_var = _aux_vel_innov_var; + + fuseHorizontalVelocity(_aux_vel_innov, aux_vel_innov_gate, _auxvel_sample_delayed.velVar, + _aux_vel_innov_var, _aux_vel_test_ratio); + + // Can be enabled after bit for this is added to EKF_AID_MASK + // fuseVerticalVelocity(_aux_vel_innov, aux_vel_innov_gate, _auxvel_sample_delayed.velVar, + // _aux_vel_innov_var, _aux_vel_test_ratio); + + } +} diff --git a/src/lib/ecl/EKF/covariance.cpp b/src/lib/ecl/EKF/covariance.cpp new file mode 100644 index 0000000000..b44b09e556 --- /dev/null +++ b/src/lib/ecl/EKF/covariance.cpp @@ -0,0 +1,1169 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file covariance.cpp + * Contains functions for initialising, predicting and updating the state + * covariance matrix + * equations generated using EKF/python/ekf_derivation/main.py + * + * @author Roman Bast + * + */ + +#include "ekf.h" +#include "utils.hpp" + +#include +#include +#include + +// Sets initial values for the covariance matrix +// Do not call before quaternion states have been initialised +void Ekf::initialiseCovariance() +{ + P.zero(); + + _delta_angle_bias_var_accum.setZero(); + _delta_vel_bias_var_accum.setZero(); + + const float dt = FILTER_UPDATE_PERIOD_S; + + resetQuatCov(); + + // velocity + P(4,4) = sq(fmaxf(_params.gps_vel_noise, 0.01f)); + P(5,5) = P(4,4); + P(6,6) = sq(1.5f) * P(4,4); + + // position + P(7,7) = sq(fmaxf(_params.gps_pos_noise, 0.01f)); + P(8,8) = P(7,7); + + if (_control_status.flags.rng_hgt) { + P(9,9) = sq(fmaxf(_params.range_noise, 0.01f)); + + } else if (_control_status.flags.gps_hgt) { + P(9,9) = getGpsHeightVariance(); + + } else { + P(9,9) = sq(fmaxf(_params.baro_noise, 0.01f)); + } + + // gyro bias + P(10,10) = sq(_params.switch_on_gyro_bias * dt); + P(11,11) = P(10,10); + P(12,12) = P(10,10); + + // accel bias + _prev_dvel_bias_var(0) = P(13,13) = sq(_params.switch_on_accel_bias * dt); + _prev_dvel_bias_var(1) = P(14,14) = P(13,13); + _prev_dvel_bias_var(2) = P(15,15) = P(13,13); + + resetMagCov(); + + // wind + P(22,22) = sq(_params.initial_wind_uncertainty); + P(23,23) = P(22,22); + +} + +void Ekf::predictCovariance() +{ + // assign intermediate state variables + const float &q0 = _state.quat_nominal(0); + const float &q1 = _state.quat_nominal(1); + const float &q2 = _state.quat_nominal(2); + const float &q3 = _state.quat_nominal(3); + + const float &dax = _imu_sample_delayed.delta_ang(0); + const float &day = _imu_sample_delayed.delta_ang(1); + const float &daz = _imu_sample_delayed.delta_ang(2); + + const float &dvx = _imu_sample_delayed.delta_vel(0); + const float &dvy = _imu_sample_delayed.delta_vel(1); + const float &dvz = _imu_sample_delayed.delta_vel(2); + + const float &dax_b = _state.delta_ang_bias(0); + const float &day_b = _state.delta_ang_bias(1); + const float &daz_b = _state.delta_ang_bias(2); + + const float &dvx_b = _state.delta_vel_bias(0); + const float &dvy_b = _state.delta_vel_bias(1); + const float &dvz_b = _state.delta_vel_bias(2); + + // Use average update interval to reduce accumulated covariance prediction errors due to small single frame dt values + const float dt = FILTER_UPDATE_PERIOD_S; + const float dt_inv = 1.0f / dt; + + // convert rate of change of rate gyro bias (rad/s**2) as specified by the parameter to an expected change in delta angle (rad) since the last update + const float d_ang_bias_sig = dt * dt * math::constrain(_params.gyro_bias_p_noise, 0.0f, 1.0f); + + // convert rate of change of accelerometer bias (m/s**3) as specified by the parameter to an expected change in delta velocity (m/s) since the last update + const float d_vel_bias_sig = dt * dt * math::constrain(_params.accel_bias_p_noise, 0.0f, 1.0f); + + // inhibit learning of imu accel bias if the manoeuvre levels are too high to protect against the effect of sensor nonlinearities or bad accel data is detected + // xy accel bias learning is also disabled on ground as those states are poorly observable when perpendicular to the gravity vector + const float alpha = math::constrain((dt / _params.acc_bias_learn_tc), 0.0f, 1.0f); + const float beta = 1.0f - alpha; + _ang_rate_magnitude_filt = fmaxf(dt_inv * _imu_sample_delayed.delta_ang.norm(), beta * _ang_rate_magnitude_filt); + _accel_magnitude_filt = fmaxf(dt_inv * _imu_sample_delayed.delta_vel.norm(), beta * _accel_magnitude_filt); + _accel_vec_filt = alpha * dt_inv * _imu_sample_delayed.delta_vel + beta * _accel_vec_filt; + + const bool is_manoeuvre_level_high = _ang_rate_magnitude_filt > _params.acc_bias_learn_gyr_lim + || _accel_magnitude_filt > _params.acc_bias_learn_acc_lim; + + const bool do_inhibit_all_axes = (_params.fusion_mode & MASK_INHIBIT_ACC_BIAS) + || is_manoeuvre_level_high + || _fault_status.flags.bad_acc_vertical; + + for (unsigned stateIndex = 13; stateIndex <= 15; stateIndex++) { + const unsigned index = stateIndex - 13; + + // When on ground, only consider an accel bias observable if aligned with the gravity vector + const bool is_bias_observable = (fabsf(_R_to_earth(2, index)) > 0.8f) || _control_status.flags.in_air; + const bool do_inhibit_axis = do_inhibit_all_axes || !is_bias_observable || _imu_sample_delayed.delta_vel_clipping[index]; + + if (do_inhibit_axis) { + // store the bias state variances to be reinstated later + if (!_accel_bias_inhibit[index]) { + _prev_dvel_bias_var(index) = P(stateIndex, stateIndex); + _accel_bias_inhibit[index] = true; + } + + } else { + if (_accel_bias_inhibit[index]) { + // reinstate the bias state variances + P(stateIndex, stateIndex) = _prev_dvel_bias_var(index); + _accel_bias_inhibit[index] = false; + } + } + } + + // Don't continue to grow the earth field variances if they are becoming too large or we are not doing 3-axis fusion as this can make the covariance matrix badly conditioned + float mag_I_sig; + + if (_control_status.flags.mag_3D && (P(16,16) + P(17,17) + P(18,18)) < 0.1f) { + mag_I_sig = dt * math::constrain(_params.mage_p_noise, 0.0f, 1.0f); + + } else { + mag_I_sig = 0.0f; + } + + // Don't continue to grow the body field variances if they is becoming too large or we are not doing 3-axis fusion as this can make the covariance matrix badly conditioned + float mag_B_sig; + + if (_control_status.flags.mag_3D && (P(19,19) + P(20,20) + P(21,21)) < 0.1f) { + mag_B_sig = dt * math::constrain(_params.magb_p_noise, 0.0f, 1.0f); + + } else { + mag_B_sig = 0.0f; + } + + float wind_vel_sig; + + // Calculate low pass filtered height rate + float alpha_height_rate_lpf = 0.1f * dt; // 10 seconds time constant + _height_rate_lpf = _height_rate_lpf * (1.0f - alpha_height_rate_lpf) + _state.vel(2) * alpha_height_rate_lpf; + + // Don't continue to grow wind velocity state variances if they are becoming too large or we are not using wind velocity states as this can make the covariance matrix badly conditioned + if (_control_status.flags.wind && (P(22,22) + P(23,23)) < sq(_params.initial_wind_uncertainty)) { + wind_vel_sig = dt * math::constrain(_params.wind_vel_p_noise, 0.0f, 1.0f) * (1.0f + _params.wind_vel_p_noise_scaler * fabsf(_height_rate_lpf)); + + } else { + wind_vel_sig = 0.0f; + } + + // compute noise variance for stationary processes + Vector24f process_noise; + + // Construct the process noise variance diagonal for those states with a stationary process model + // These are kinematic states and their error growth is controlled separately by the IMU noise variances + + // delta angle bias states + process_noise.slice<3,1>(10,0) = sq(d_ang_bias_sig); + // delta_velocity bias states + process_noise.slice<3,1>(13,0) = sq(d_vel_bias_sig); + // earth frame magnetic field states + process_noise.slice<3,1>(16,0) = sq(mag_I_sig); + // body frame magnetic field states + process_noise.slice<3,1>(19,0) = sq(mag_B_sig); + // wind velocity states + process_noise.slice<2,1>(22,0) = sq(wind_vel_sig); + + // assign IMU noise variances + // inputs to the system are 3 delta angles and 3 delta velocities + float gyro_noise = math::constrain(_params.gyro_noise, 0.0f, 1.0f); + const float daxVar = sq(dt * gyro_noise); + const float dayVar = daxVar; + const float dazVar = daxVar; + + float accel_noise = math::constrain(_params.accel_noise, 0.0f, 1.0f); + + if (_fault_status.flags.bad_acc_vertical) { + // Increase accelerometer process noise if bad accel data is detected. Measurement errors due to + // vibration induced clipping commonly reach an equivalent 0.5g offset. + accel_noise = BADACC_BIAS_PNOISE; + } + + float dvxVar, dvyVar, dvzVar; + dvxVar = dvyVar = dvzVar = sq(dt * accel_noise); + + // Accelerometer Clipping + _fault_status.flags.bad_acc_clipping = false; // reset flag + + // delta velocity X: increase process noise if sample contained any X axis clipping + if (_imu_sample_delayed.delta_vel_clipping[0]) { + dvxVar = sq(dt * BADACC_BIAS_PNOISE); + _fault_status.flags.bad_acc_clipping = true; + } + // delta velocity Y: increase process noise if sample contained any Y axis clipping + if (_imu_sample_delayed.delta_vel_clipping[1]) { + dvyVar = sq(dt * BADACC_BIAS_PNOISE); + _fault_status.flags.bad_acc_clipping = true; + } + // delta velocity Z: increase process noise if sample contained any Z axis clipping + if (_imu_sample_delayed.delta_vel_clipping[2]) { + dvzVar = sq(dt * BADACC_BIAS_PNOISE); + _fault_status.flags.bad_acc_clipping = true; + } + + // predict the covariance + // equations generated using EKF/python/ekf_derivation/main.py + + // intermediate calculations + const float PS0 = ecl::powf(q1, 2); + const float PS1 = 0.25F*daxVar; + const float PS2 = ecl::powf(q2, 2); + const float PS3 = 0.25F*dayVar; + const float PS4 = ecl::powf(q3, 2); + const float PS5 = 0.25F*dazVar; + const float PS6 = 0.5F*q1; + const float PS7 = 0.5F*q2; + const float PS8 = P(10,11)*PS7; + const float PS9 = 0.5F*q3; + const float PS10 = P(10,12)*PS9; + const float PS11 = 0.5F*dax - 0.5F*dax_b; + const float PS12 = 0.5F*day - 0.5F*day_b; + const float PS13 = 0.5F*daz - 0.5F*daz_b; + const float PS14 = P(0,10) - P(1,10)*PS11 + P(10,10)*PS6 - P(2,10)*PS12 - P(3,10)*PS13 + PS10 + PS8; + const float PS15 = P(10,11)*PS6; + const float PS16 = P(11,12)*PS9; + const float PS17 = P(0,11) - P(1,11)*PS11 + P(11,11)*PS7 - P(2,11)*PS12 - P(3,11)*PS13 + PS15 + PS16; + const float PS18 = P(10,12)*PS6; + const float PS19 = P(11,12)*PS7; + const float PS20 = P(0,12) - P(1,12)*PS11 + P(12,12)*PS9 - P(2,12)*PS12 - P(3,12)*PS13 + PS18 + PS19; + const float PS21 = P(1,2)*PS12; + const float PS22 = -P(1,3)*PS13; + const float PS23 = P(0,1) - P(1,1)*PS11 + P(1,10)*PS6 + P(1,11)*PS7 + P(1,12)*PS9 - PS21 + PS22; + const float PS24 = -P(1,2)*PS11; + const float PS25 = P(2,3)*PS13; + const float PS26 = P(0,2) + P(2,10)*PS6 + P(2,11)*PS7 + P(2,12)*PS9 - P(2,2)*PS12 + PS24 - PS25; + const float PS27 = P(1,3)*PS11; + const float PS28 = -P(2,3)*PS12; + const float PS29 = P(0,3) + P(3,10)*PS6 + P(3,11)*PS7 + P(3,12)*PS9 - P(3,3)*PS13 - PS27 + PS28; + const float PS30 = P(0,1)*PS11; + const float PS31 = P(0,2)*PS12; + const float PS32 = P(0,3)*PS13; + const float PS33 = P(0,0) + P(0,10)*PS6 + P(0,11)*PS7 + P(0,12)*PS9 - PS30 - PS31 - PS32; + const float PS34 = 0.5F*q0; + const float PS35 = q2*q3; + const float PS36 = q0*q1; + const float PS37 = q1*q3; + const float PS38 = q0*q2; + const float PS39 = q1*q2; + const float PS40 = q0*q3; + const float PS41 = 2*PS2; + const float PS42 = 2*PS4 - 1; + const float PS43 = PS41 + PS42; + const float PS44 = P(0,13) - P(1,13)*PS11 + P(10,13)*PS6 + P(11,13)*PS7 + P(12,13)*PS9 - P(2,13)*PS12 - P(3,13)*PS13; + const float PS45 = PS37 + PS38; + const float PS46 = P(0,15) - P(1,15)*PS11 + P(10,15)*PS6 + P(11,15)*PS7 + P(12,15)*PS9 - P(2,15)*PS12 - P(3,15)*PS13; + const float PS47 = 2*PS46; + const float PS48 = dvy - dvy_b; + const float PS49 = PS48*q0; + const float PS50 = dvz - dvz_b; + const float PS51 = PS50*q1; + const float PS52 = dvx - dvx_b; + const float PS53 = PS52*q3; + const float PS54 = PS49 - PS51 + 2*PS53; + const float PS55 = 2*PS29; + const float PS56 = -PS39 + PS40; + const float PS57 = P(0,14) - P(1,14)*PS11 + P(10,14)*PS6 + P(11,14)*PS7 + P(12,14)*PS9 - P(2,14)*PS12 - P(3,14)*PS13; + const float PS58 = 2*PS57; + const float PS59 = PS48*q2; + const float PS60 = PS50*q3; + const float PS61 = PS59 + PS60; + const float PS62 = 2*PS23; + const float PS63 = PS50*q2; + const float PS64 = PS48*q3; + const float PS65 = -PS64; + const float PS66 = PS63 + PS65; + const float PS67 = 2*PS33; + const float PS68 = PS50*q0; + const float PS69 = PS48*q1; + const float PS70 = PS52*q2; + const float PS71 = PS68 + PS69 - 2*PS70; + const float PS72 = 2*PS26; + const float PS73 = P(0,4) - P(1,4)*PS11 - P(2,4)*PS12 - P(3,4)*PS13 + P(4,10)*PS6 + P(4,11)*PS7 + P(4,12)*PS9; + const float PS74 = 2*PS0; + const float PS75 = PS42 + PS74; + const float PS76 = PS39 + PS40; + const float PS77 = 2*PS44; + const float PS78 = PS51 - PS53; + const float PS79 = -PS70; + const float PS80 = PS68 + 2*PS69 + PS79; + const float PS81 = -PS35 + PS36; + const float PS82 = PS52*q1; + const float PS83 = PS60 + PS82; + const float PS84 = PS52*q0; + const float PS85 = PS63 - 2*PS64 + PS84; + const float PS86 = P(0,5) - P(1,5)*PS11 - P(2,5)*PS12 - P(3,5)*PS13 + P(5,10)*PS6 + P(5,11)*PS7 + P(5,12)*PS9; + const float PS87 = PS41 + PS74 - 1; + const float PS88 = PS35 + PS36; + const float PS89 = 2*PS63 + PS65 + PS84; + const float PS90 = -PS37 + PS38; + const float PS91 = PS59 + PS82; + const float PS92 = PS69 + PS79; + const float PS93 = PS49 - 2*PS51 + PS53; + const float PS94 = P(0,6) - P(1,6)*PS11 - P(2,6)*PS12 - P(3,6)*PS13 + P(6,10)*PS6 + P(6,11)*PS7 + P(6,12)*PS9; + const float PS95 = ecl::powf(q0, 2); + const float PS96 = -P(10,11)*PS34; + const float PS97 = P(0,11)*PS11 + P(1,11) + P(11,11)*PS9 + P(2,11)*PS13 - P(3,11)*PS12 - PS19 + PS96; + const float PS98 = P(0,2)*PS13; + const float PS99 = P(0,3)*PS12; + const float PS100 = P(0,0)*PS11 + P(0,1) - P(0,10)*PS34 + P(0,11)*PS9 - P(0,12)*PS7 + PS98 - PS99; + const float PS101 = P(0,2)*PS11; + const float PS102 = P(1,2) - P(2,10)*PS34 + P(2,11)*PS9 - P(2,12)*PS7 + P(2,2)*PS13 + PS101 + PS28; + const float PS103 = P(10,11)*PS9; + const float PS104 = P(10,12)*PS7; + const float PS105 = P(0,10)*PS11 + P(1,10) - P(10,10)*PS34 + P(2,10)*PS13 - P(3,10)*PS12 + PS103 - PS104; + const float PS106 = -P(10,12)*PS34; + const float PS107 = P(0,12)*PS11 + P(1,12) - P(12,12)*PS7 + P(2,12)*PS13 - P(3,12)*PS12 + PS106 + PS16; + const float PS108 = P(0,3)*PS11; + const float PS109 = P(1,3) - P(3,10)*PS34 + P(3,11)*PS9 - P(3,12)*PS7 - P(3,3)*PS12 + PS108 + PS25; + const float PS110 = P(1,2)*PS13; + const float PS111 = P(1,3)*PS12; + const float PS112 = P(1,1) - P(1,10)*PS34 + P(1,11)*PS9 - P(1,12)*PS7 + PS110 - PS111 + PS30; + const float PS113 = P(0,13)*PS11 + P(1,13) - P(10,13)*PS34 + P(11,13)*PS9 - P(12,13)*PS7 + P(2,13)*PS13 - P(3,13)*PS12; + const float PS114 = P(0,15)*PS11 + P(1,15) - P(10,15)*PS34 + P(11,15)*PS9 - P(12,15)*PS7 + P(2,15)*PS13 - P(3,15)*PS12; + const float PS115 = 2*PS114; + const float PS116 = 2*PS109; + const float PS117 = P(0,14)*PS11 + P(1,14) - P(10,14)*PS34 + P(11,14)*PS9 - P(12,14)*PS7 + P(2,14)*PS13 - P(3,14)*PS12; + const float PS118 = 2*PS117; + const float PS119 = 2*PS112; + const float PS120 = 2*PS100; + const float PS121 = 2*PS102; + const float PS122 = P(0,4)*PS11 + P(1,4) + P(2,4)*PS13 - P(3,4)*PS12 - P(4,10)*PS34 + P(4,11)*PS9 - P(4,12)*PS7; + const float PS123 = 2*PS113; + const float PS124 = P(0,5)*PS11 + P(1,5) + P(2,5)*PS13 - P(3,5)*PS12 - P(5,10)*PS34 + P(5,11)*PS9 - P(5,12)*PS7; + const float PS125 = P(0,6)*PS11 + P(1,6) + P(2,6)*PS13 - P(3,6)*PS12 - P(6,10)*PS34 + P(6,11)*PS9 - P(6,12)*PS7; + const float PS126 = -P(11,12)*PS34; + const float PS127 = P(0,12)*PS12 - P(1,12)*PS13 + P(12,12)*PS6 + P(2,12) + P(3,12)*PS11 - PS10 + PS126; + const float PS128 = P(2,3) - P(3,10)*PS9 - P(3,11)*PS34 + P(3,12)*PS6 + P(3,3)*PS11 + PS22 + PS99; + const float PS129 = P(0,1)*PS13; + const float PS130 = P(0,0)*PS12 - P(0,10)*PS9 - P(0,11)*PS34 + P(0,12)*PS6 + P(0,2) + PS108 - PS129; + const float PS131 = P(11,12)*PS6; + const float PS132 = P(0,11)*PS12 - P(1,11)*PS13 - P(11,11)*PS34 + P(2,11) + P(3,11)*PS11 - PS103 + PS131; + const float PS133 = P(0,10)*PS12 - P(1,10)*PS13 - P(10,10)*PS9 + P(2,10) + P(3,10)*PS11 + PS18 + PS96; + const float PS134 = P(0,1)*PS12; + const float PS135 = -P(1,1)*PS13 - P(1,10)*PS9 - P(1,11)*PS34 + P(1,12)*PS6 + P(1,2) + PS134 + PS27; + const float PS136 = P(2,3)*PS11; + const float PS137 = -P(2,10)*PS9 - P(2,11)*PS34 + P(2,12)*PS6 + P(2,2) - PS110 + PS136 + PS31; + const float PS138 = P(0,13)*PS12 - P(1,13)*PS13 - P(10,13)*PS9 - P(11,13)*PS34 + P(12,13)*PS6 + P(2,13) + P(3,13)*PS11; + const float PS139 = P(0,15)*PS12 - P(1,15)*PS13 - P(10,15)*PS9 - P(11,15)*PS34 + P(12,15)*PS6 + P(2,15) + P(3,15)*PS11; + const float PS140 = 2*PS139; + const float PS141 = 2*PS128; + const float PS142 = P(0,14)*PS12 - P(1,14)*PS13 - P(10,14)*PS9 - P(11,14)*PS34 + P(12,14)*PS6 + P(2,14) + P(3,14)*PS11; + const float PS143 = 2*PS142; + const float PS144 = 2*PS135; + const float PS145 = 2*PS130; + const float PS146 = 2*PS137; + const float PS147 = P(0,4)*PS12 - P(1,4)*PS13 + P(2,4) + P(3,4)*PS11 - P(4,10)*PS9 - P(4,11)*PS34 + P(4,12)*PS6; + const float PS148 = 2*PS138; + const float PS149 = P(0,5)*PS12 - P(1,5)*PS13 + P(2,5) + P(3,5)*PS11 - P(5,10)*PS9 - P(5,11)*PS34 + P(5,12)*PS6; + const float PS150 = P(0,6)*PS12 - P(1,6)*PS13 + P(2,6) + P(3,6)*PS11 - P(6,10)*PS9 - P(6,11)*PS34 + P(6,12)*PS6; + const float PS151 = P(0,10)*PS13 + P(1,10)*PS12 + P(10,10)*PS7 - P(2,10)*PS11 + P(3,10) + PS106 - PS15; + const float PS152 = P(1,1)*PS12 + P(1,10)*PS7 - P(1,11)*PS6 - P(1,12)*PS34 + P(1,3) + PS129 + PS24; + const float PS153 = P(0,0)*PS13 + P(0,10)*PS7 - P(0,11)*PS6 - P(0,12)*PS34 + P(0,3) - PS101 + PS134; + const float PS154 = P(0,12)*PS13 + P(1,12)*PS12 - P(12,12)*PS34 - P(2,12)*PS11 + P(3,12) + PS104 - PS131; + const float PS155 = P(0,11)*PS13 + P(1,11)*PS12 - P(11,11)*PS6 - P(2,11)*PS11 + P(3,11) + PS126 + PS8; + const float PS156 = P(2,10)*PS7 - P(2,11)*PS6 - P(2,12)*PS34 - P(2,2)*PS11 + P(2,3) + PS21 + PS98; + const float PS157 = P(3,10)*PS7 - P(3,11)*PS6 - P(3,12)*PS34 + P(3,3) + PS111 - PS136 + PS32; + const float PS158 = P(0,13)*PS13 + P(1,13)*PS12 + P(10,13)*PS7 - P(11,13)*PS6 - P(12,13)*PS34 - P(2,13)*PS11 + P(3,13); + const float PS159 = P(0,15)*PS13 + P(1,15)*PS12 + P(10,15)*PS7 - P(11,15)*PS6 - P(12,15)*PS34 - P(2,15)*PS11 + P(3,15); + const float PS160 = 2*PS159; + const float PS161 = 2*PS157; + const float PS162 = P(0,14)*PS13 + P(1,14)*PS12 + P(10,14)*PS7 - P(11,14)*PS6 - P(12,14)*PS34 - P(2,14)*PS11 + P(3,14); + const float PS163 = 2*PS162; + const float PS164 = 2*PS152; + const float PS165 = 2*PS153; + const float PS166 = 2*PS156; + const float PS167 = P(0,4)*PS13 + P(1,4)*PS12 - P(2,4)*PS11 + P(3,4) + P(4,10)*PS7 - P(4,11)*PS6 - P(4,12)*PS34; + const float PS168 = 2*PS158; + const float PS169 = P(0,5)*PS13 + P(1,5)*PS12 - P(2,5)*PS11 + P(3,5) + P(5,10)*PS7 - P(5,11)*PS6 - P(5,12)*PS34; + const float PS170 = P(0,6)*PS13 + P(1,6)*PS12 - P(2,6)*PS11 + P(3,6) + P(6,10)*PS7 - P(6,11)*PS6 - P(6,12)*PS34; + const float PS171 = 2*PS45; + const float PS172 = 2*PS56; + const float PS173 = 2*PS61; + const float PS174 = 2*PS66; + const float PS175 = 2*PS71; + const float PS176 = 2*PS54; + const float PS177 = P(0,13)*PS174 + P(1,13)*PS173 + P(13,13)*PS43 + P(13,14)*PS172 - P(13,15)*PS171 + P(2,13)*PS175 - P(3,13)*PS176 + P(4,13); + const float PS178 = P(0,15)*PS174 + P(1,15)*PS173 + P(13,15)*PS43 + P(14,15)*PS172 - P(15,15)*PS171 + P(2,15)*PS175 - P(3,15)*PS176 + P(4,15); + const float PS179 = P(0,3)*PS174 + P(1,3)*PS173 + P(2,3)*PS175 + P(3,13)*PS43 + P(3,14)*PS172 - P(3,15)*PS171 - P(3,3)*PS176 + P(3,4); + const float PS180 = P(0,14)*PS174 + P(1,14)*PS173 + P(13,14)*PS43 + P(14,14)*PS172 - P(14,15)*PS171 + P(2,14)*PS175 - P(3,14)*PS176 + P(4,14); + const float PS181 = P(0,1)*PS174 + P(1,1)*PS173 + P(1,13)*PS43 + P(1,14)*PS172 - P(1,15)*PS171 + P(1,2)*PS175 - P(1,3)*PS176 + P(1,4); + const float PS182 = P(0,0)*PS174 + P(0,1)*PS173 + P(0,13)*PS43 + P(0,14)*PS172 - P(0,15)*PS171 + P(0,2)*PS175 - P(0,3)*PS176 + P(0,4); + const float PS183 = P(0,2)*PS174 + P(1,2)*PS173 + P(2,13)*PS43 + P(2,14)*PS172 - P(2,15)*PS171 + P(2,2)*PS175 - P(2,3)*PS176 + P(2,4); + const float PS184 = 4*dvyVar; + const float PS185 = 4*dvzVar; + const float PS186 = P(0,4)*PS174 + P(1,4)*PS173 + P(2,4)*PS175 - P(3,4)*PS176 + P(4,13)*PS43 + P(4,14)*PS172 - P(4,15)*PS171 + P(4,4); + const float PS187 = 2*PS177; + const float PS188 = 2*PS182; + const float PS189 = 2*PS181; + const float PS190 = 2*PS81; + const float PS191 = 2*PS183; + const float PS192 = 2*PS179; + const float PS193 = 2*PS76; + const float PS194 = PS43*dvxVar; + const float PS195 = PS75*dvyVar; + const float PS196 = P(0,5)*PS174 + P(1,5)*PS173 + P(2,5)*PS175 - P(3,5)*PS176 + P(4,5) + P(5,13)*PS43 + P(5,14)*PS172 - P(5,15)*PS171; + const float PS197 = 2*PS88; + const float PS198 = PS87*dvzVar; + const float PS199 = 2*PS90; + const float PS200 = P(0,6)*PS174 + P(1,6)*PS173 + P(2,6)*PS175 - P(3,6)*PS176 + P(4,6) + P(6,13)*PS43 + P(6,14)*PS172 - P(6,15)*PS171; + const float PS201 = 2*PS83; + const float PS202 = 2*PS78; + const float PS203 = 2*PS85; + const float PS204 = 2*PS80; + const float PS205 = -P(0,14)*PS202 - P(1,14)*PS204 - P(13,14)*PS193 + P(14,14)*PS75 + P(14,15)*PS190 + P(2,14)*PS201 + P(3,14)*PS203 + P(5,14); + const float PS206 = -P(0,13)*PS202 - P(1,13)*PS204 - P(13,13)*PS193 + P(13,14)*PS75 + P(13,15)*PS190 + P(2,13)*PS201 + P(3,13)*PS203 + P(5,13); + const float PS207 = -P(0,0)*PS202 - P(0,1)*PS204 - P(0,13)*PS193 + P(0,14)*PS75 + P(0,15)*PS190 + P(0,2)*PS201 + P(0,3)*PS203 + P(0,5); + const float PS208 = -P(0,1)*PS202 - P(1,1)*PS204 - P(1,13)*PS193 + P(1,14)*PS75 + P(1,15)*PS190 + P(1,2)*PS201 + P(1,3)*PS203 + P(1,5); + const float PS209 = -P(0,15)*PS202 - P(1,15)*PS204 - P(13,15)*PS193 + P(14,15)*PS75 + P(15,15)*PS190 + P(2,15)*PS201 + P(3,15)*PS203 + P(5,15); + const float PS210 = -P(0,2)*PS202 - P(1,2)*PS204 - P(2,13)*PS193 + P(2,14)*PS75 + P(2,15)*PS190 + P(2,2)*PS201 + P(2,3)*PS203 + P(2,5); + const float PS211 = -P(0,3)*PS202 - P(1,3)*PS204 + P(2,3)*PS201 - P(3,13)*PS193 + P(3,14)*PS75 + P(3,15)*PS190 + P(3,3)*PS203 + P(3,5); + const float PS212 = 4*dvxVar; + const float PS213 = -P(0,5)*PS202 - P(1,5)*PS204 + P(2,5)*PS201 + P(3,5)*PS203 - P(5,13)*PS193 + P(5,14)*PS75 + P(5,15)*PS190 + P(5,5); + const float PS214 = 2*PS89; + const float PS215 = 2*PS91; + const float PS216 = 2*PS92; + const float PS217 = 2*PS93; + const float PS218 = -P(0,6)*PS202 - P(1,6)*PS204 + P(2,6)*PS201 + P(3,6)*PS203 + P(5,6) - P(6,13)*PS193 + P(6,14)*PS75 + P(6,15)*PS190; + const float PS219 = P(0,15)*PS216 + P(1,15)*PS217 + P(13,15)*PS199 - P(14,15)*PS197 + P(15,15)*PS87 - P(2,15)*PS214 + P(3,15)*PS215 + P(6,15); + const float PS220 = P(0,14)*PS216 + P(1,14)*PS217 + P(13,14)*PS199 - P(14,14)*PS197 + P(14,15)*PS87 - P(2,14)*PS214 + P(3,14)*PS215 + P(6,14); + const float PS221 = P(0,13)*PS216 + P(1,13)*PS217 + P(13,13)*PS199 - P(13,14)*PS197 + P(13,15)*PS87 - P(2,13)*PS214 + P(3,13)*PS215 + P(6,13); + const float PS222 = P(0,6)*PS216 + P(1,6)*PS217 - P(2,6)*PS214 + P(3,6)*PS215 + P(6,13)*PS199 - P(6,14)*PS197 + P(6,15)*PS87 + P(6,6); + + + // covariance update + SquareMatrix24f nextP; + + // calculate variances and upper diagonal covariances for quaternion, velocity, position and gyro bias states + + nextP(0,0) = PS0*PS1 - PS11*PS23 - PS12*PS26 - PS13*PS29 + PS14*PS6 + PS17*PS7 + PS2*PS3 + PS20*PS9 + PS33 + PS4*PS5; + nextP(0,1) = -PS1*PS36 + PS11*PS33 - PS12*PS29 + PS13*PS26 - PS14*PS34 + PS17*PS9 - PS20*PS7 + PS23 + PS3*PS35 - PS35*PS5; + nextP(1,1) = PS1*PS95 + PS100*PS11 + PS102*PS13 - PS105*PS34 - PS107*PS7 - PS109*PS12 + PS112 + PS2*PS5 + PS3*PS4 + PS9*PS97; + nextP(0,2) = -PS1*PS37 + PS11*PS29 + PS12*PS33 - PS13*PS23 - PS14*PS9 - PS17*PS34 + PS20*PS6 + PS26 - PS3*PS38 + PS37*PS5; + nextP(1,2) = PS1*PS40 + PS100*PS12 + PS102 - PS105*PS9 + PS107*PS6 + PS109*PS11 - PS112*PS13 - PS3*PS40 - PS34*PS97 - PS39*PS5; + nextP(2,2) = PS0*PS5 + PS1*PS4 + PS11*PS128 + PS12*PS130 + PS127*PS6 - PS13*PS135 - PS132*PS34 - PS133*PS9 + PS137 + PS3*PS95; + nextP(0,3) = PS1*PS39 - PS11*PS26 + PS12*PS23 + PS13*PS33 + PS14*PS7 - PS17*PS6 - PS20*PS34 + PS29 - PS3*PS39 - PS40*PS5; + nextP(1,3) = -PS1*PS38 + PS100*PS13 - PS102*PS11 + PS105*PS7 - PS107*PS34 + PS109 + PS112*PS12 - PS3*PS37 + PS38*PS5 - PS6*PS97; + nextP(2,3) = -PS1*PS35 - PS11*PS137 + PS12*PS135 - PS127*PS34 + PS128 + PS13*PS130 - PS132*PS6 + PS133*PS7 + PS3*PS36 - PS36*PS5; + nextP(3,3) = PS0*PS3 + PS1*PS2 - PS11*PS156 + PS12*PS152 + PS13*PS153 + PS151*PS7 - PS154*PS34 - PS155*PS6 + PS157 + PS5*PS95; + nextP(0,4) = PS43*PS44 - PS45*PS47 - PS54*PS55 + PS56*PS58 + PS61*PS62 + PS66*PS67 + PS71*PS72 + PS73; + nextP(1,4) = PS113*PS43 - PS115*PS45 - PS116*PS54 + PS118*PS56 + PS119*PS61 + PS120*PS66 + PS121*PS71 + PS122; + nextP(2,4) = PS138*PS43 - PS140*PS45 - PS141*PS54 + PS143*PS56 + PS144*PS61 + PS145*PS66 + PS146*PS71 + PS147; + nextP(3,4) = PS158*PS43 - PS160*PS45 - PS161*PS54 + PS163*PS56 + PS164*PS61 + PS165*PS66 + PS166*PS71 + PS167; + nextP(4,4) = -PS171*PS178 + PS172*PS180 + PS173*PS181 + PS174*PS182 + PS175*PS183 - PS176*PS179 + PS177*PS43 + PS184*ecl::powf(PS56, 2) + PS185*ecl::powf(PS45, 2) + PS186 + ecl::powf(PS43, 2)*dvxVar; + nextP(0,5) = PS47*PS81 + PS55*PS85 + PS57*PS75 - PS62*PS80 - PS67*PS78 + PS72*PS83 - PS76*PS77 + PS86; + nextP(1,5) = PS115*PS81 + PS116*PS85 + PS117*PS75 - PS119*PS80 - PS120*PS78 + PS121*PS83 - PS123*PS76 + PS124; + nextP(2,5) = PS140*PS81 + PS141*PS85 + PS142*PS75 - PS144*PS80 - PS145*PS78 + PS146*PS83 - PS148*PS76 + PS149; + nextP(3,5) = PS160*PS81 + PS161*PS85 + PS162*PS75 - PS164*PS80 - PS165*PS78 + PS166*PS83 - PS168*PS76 + PS169; + nextP(4,5) = PS172*PS195 + PS178*PS190 + PS180*PS75 - PS185*PS45*PS81 - PS187*PS76 - PS188*PS78 - PS189*PS80 + PS191*PS83 + PS192*PS85 - PS193*PS194 + PS196; + nextP(5,5) = PS185*ecl::powf(PS81, 2) + PS190*PS209 - PS193*PS206 + PS201*PS210 - PS202*PS207 + PS203*PS211 - PS204*PS208 + PS205*PS75 + PS212*ecl::powf(PS76, 2) + PS213 + ecl::powf(PS75, 2)*dvyVar; + nextP(0,6) = PS46*PS87 + PS55*PS91 - PS58*PS88 + PS62*PS93 + PS67*PS92 - PS72*PS89 + PS77*PS90 + PS94; + nextP(1,6) = PS114*PS87 + PS116*PS91 - PS118*PS88 + PS119*PS93 + PS120*PS92 - PS121*PS89 + PS123*PS90 + PS125; + nextP(2,6) = PS139*PS87 + PS141*PS91 - PS143*PS88 + PS144*PS93 + PS145*PS92 - PS146*PS89 + PS148*PS90 + PS150; + nextP(3,6) = PS159*PS87 + PS161*PS91 - PS163*PS88 + PS164*PS93 + PS165*PS92 - PS166*PS89 + PS168*PS90 + PS170; + nextP(4,6) = -PS171*PS198 + PS178*PS87 - PS180*PS197 - PS184*PS56*PS88 + PS187*PS90 + PS188*PS92 + PS189*PS93 - PS191*PS89 + PS192*PS91 + PS194*PS199 + PS200; + nextP(5,6) = PS190*PS198 - PS195*PS197 - PS197*PS205 + PS199*PS206 + PS207*PS216 + PS208*PS217 + PS209*PS87 - PS210*PS214 + PS211*PS215 - PS212*PS76*PS90 + PS218; + nextP(6,6) = PS184*ecl::powf(PS88, 2) - PS197*PS220 + PS199*PS221 + PS212*ecl::powf(PS90, 2) - PS214*(P(0,2)*PS216 + P(1,2)*PS217 + P(2,13)*PS199 - P(2,14)*PS197 + P(2,15)*PS87 - P(2,2)*PS214 + P(2,3)*PS215 + P(2,6)) + PS215*(P(0,3)*PS216 + P(1,3)*PS217 - P(2,3)*PS214 + P(3,13)*PS199 - P(3,14)*PS197 + P(3,15)*PS87 + P(3,3)*PS215 + P(3,6)) + PS216*(P(0,0)*PS216 + P(0,1)*PS217 + P(0,13)*PS199 - P(0,14)*PS197 + P(0,15)*PS87 - P(0,2)*PS214 + P(0,3)*PS215 + P(0,6)) + PS217*(P(0,1)*PS216 + P(1,1)*PS217 + P(1,13)*PS199 - P(1,14)*PS197 + P(1,15)*PS87 - P(1,2)*PS214 + P(1,3)*PS215 + P(1,6)) + PS219*PS87 + PS222 + ecl::powf(PS87, 2)*dvzVar; + nextP(0,7) = P(0,7) - P(1,7)*PS11 - P(2,7)*PS12 - P(3,7)*PS13 + P(7,10)*PS6 + P(7,11)*PS7 + P(7,12)*PS9 + PS73*dt; + nextP(1,7) = P(0,7)*PS11 + P(1,7) + P(2,7)*PS13 - P(3,7)*PS12 - P(7,10)*PS34 + P(7,11)*PS9 - P(7,12)*PS7 + PS122*dt; + nextP(2,7) = P(0,7)*PS12 - P(1,7)*PS13 + P(2,7) + P(3,7)*PS11 - P(7,10)*PS9 - P(7,11)*PS34 + P(7,12)*PS6 + PS147*dt; + nextP(3,7) = P(0,7)*PS13 + P(1,7)*PS12 - P(2,7)*PS11 + P(3,7) + P(7,10)*PS7 - P(7,11)*PS6 - P(7,12)*PS34 + PS167*dt; + nextP(4,7) = P(0,7)*PS174 + P(1,7)*PS173 + P(2,7)*PS175 - P(3,7)*PS176 + P(4,7) + P(7,13)*PS43 + P(7,14)*PS172 - P(7,15)*PS171 + PS186*dt; + nextP(5,7) = -P(0,7)*PS202 - P(1,7)*PS204 + P(2,7)*PS201 + P(3,7)*PS203 + P(5,7) - P(7,13)*PS193 + P(7,14)*PS75 + P(7,15)*PS190 + dt*(-P(0,4)*PS202 - P(1,4)*PS204 + P(2,4)*PS201 + P(3,4)*PS203 - P(4,13)*PS193 + P(4,14)*PS75 + P(4,15)*PS190 + P(4,5)); + nextP(6,7) = P(0,7)*PS216 + P(1,7)*PS217 - P(2,7)*PS214 + P(3,7)*PS215 + P(6,7) + P(7,13)*PS199 - P(7,14)*PS197 + P(7,15)*PS87 + dt*(P(0,4)*PS216 + P(1,4)*PS217 - P(2,4)*PS214 + P(3,4)*PS215 + P(4,13)*PS199 - P(4,14)*PS197 + P(4,15)*PS87 + P(4,6)); + nextP(7,7) = P(4,7)*dt + P(7,7) + dt*(P(4,4)*dt + P(4,7)); + nextP(0,8) = P(0,8) - P(1,8)*PS11 - P(2,8)*PS12 - P(3,8)*PS13 + P(8,10)*PS6 + P(8,11)*PS7 + P(8,12)*PS9 + PS86*dt; + nextP(1,8) = P(0,8)*PS11 + P(1,8) + P(2,8)*PS13 - P(3,8)*PS12 - P(8,10)*PS34 + P(8,11)*PS9 - P(8,12)*PS7 + PS124*dt; + nextP(2,8) = P(0,8)*PS12 - P(1,8)*PS13 + P(2,8) + P(3,8)*PS11 - P(8,10)*PS9 - P(8,11)*PS34 + P(8,12)*PS6 + PS149*dt; + nextP(3,8) = P(0,8)*PS13 + P(1,8)*PS12 - P(2,8)*PS11 + P(3,8) + P(8,10)*PS7 - P(8,11)*PS6 - P(8,12)*PS34 + PS169*dt; + nextP(4,8) = P(0,8)*PS174 + P(1,8)*PS173 + P(2,8)*PS175 - P(3,8)*PS176 + P(4,8) + P(8,13)*PS43 + P(8,14)*PS172 - P(8,15)*PS171 + PS196*dt; + nextP(5,8) = -P(0,8)*PS202 - P(1,8)*PS204 + P(2,8)*PS201 + P(3,8)*PS203 + P(5,8) - P(8,13)*PS193 + P(8,14)*PS75 + P(8,15)*PS190 + PS213*dt; + nextP(6,8) = P(0,8)*PS216 + P(1,8)*PS217 - P(2,8)*PS214 + P(3,8)*PS215 + P(6,8) + P(8,13)*PS199 - P(8,14)*PS197 + P(8,15)*PS87 + dt*(P(0,5)*PS216 + P(1,5)*PS217 - P(2,5)*PS214 + P(3,5)*PS215 + P(5,13)*PS199 - P(5,14)*PS197 + P(5,15)*PS87 + P(5,6)); + nextP(7,8) = P(4,8)*dt + P(7,8) + dt*(P(4,5)*dt + P(5,7)); + nextP(8,8) = P(5,8)*dt + P(8,8) + dt*(P(5,5)*dt + P(5,8)); + nextP(0,9) = P(0,9) - P(1,9)*PS11 - P(2,9)*PS12 - P(3,9)*PS13 + P(9,10)*PS6 + P(9,11)*PS7 + P(9,12)*PS9 + PS94*dt; + nextP(1,9) = P(0,9)*PS11 + P(1,9) + P(2,9)*PS13 - P(3,9)*PS12 - P(9,10)*PS34 + P(9,11)*PS9 - P(9,12)*PS7 + PS125*dt; + nextP(2,9) = P(0,9)*PS12 - P(1,9)*PS13 + P(2,9) + P(3,9)*PS11 - P(9,10)*PS9 - P(9,11)*PS34 + P(9,12)*PS6 + PS150*dt; + nextP(3,9) = P(0,9)*PS13 + P(1,9)*PS12 - P(2,9)*PS11 + P(3,9) + P(9,10)*PS7 - P(9,11)*PS6 - P(9,12)*PS34 + PS170*dt; + nextP(4,9) = P(0,9)*PS174 + P(1,9)*PS173 + P(2,9)*PS175 - P(3,9)*PS176 + P(4,9) + P(9,13)*PS43 + P(9,14)*PS172 - P(9,15)*PS171 + PS200*dt; + nextP(5,9) = -P(0,9)*PS202 - P(1,9)*PS204 + P(2,9)*PS201 + P(3,9)*PS203 + P(5,9) - P(9,13)*PS193 + P(9,14)*PS75 + P(9,15)*PS190 + PS218*dt; + nextP(6,9) = P(0,9)*PS216 + P(1,9)*PS217 - P(2,9)*PS214 + P(3,9)*PS215 + P(6,9) + P(9,13)*PS199 - P(9,14)*PS197 + P(9,15)*PS87 + PS222*dt; + nextP(7,9) = P(4,9)*dt + P(7,9) + dt*(P(4,6)*dt + P(6,7)); + nextP(8,9) = P(5,9)*dt + P(8,9) + dt*(P(5,6)*dt + P(6,8)); + nextP(9,9) = P(6,9)*dt + P(9,9) + dt*(P(6,6)*dt + P(6,9)); + nextP(0,10) = PS14; + nextP(1,10) = PS105; + nextP(2,10) = PS133; + nextP(3,10) = PS151; + nextP(4,10) = P(0,10)*PS174 + P(1,10)*PS173 + P(10,13)*PS43 + P(10,14)*PS172 - P(10,15)*PS171 + P(2,10)*PS175 - P(3,10)*PS176 + P(4,10); + nextP(5,10) = -P(0,10)*PS202 - P(1,10)*PS204 - P(10,13)*PS193 + P(10,14)*PS75 + P(10,15)*PS190 + P(2,10)*PS201 + P(3,10)*PS203 + P(5,10); + nextP(6,10) = P(0,10)*PS216 + P(1,10)*PS217 + P(10,13)*PS199 - P(10,14)*PS197 + P(10,15)*PS87 - P(2,10)*PS214 + P(3,10)*PS215 + P(6,10); + nextP(7,10) = P(4,10)*dt + P(7,10); + nextP(8,10) = P(5,10)*dt + P(8,10); + nextP(9,10) = P(6,10)*dt + P(9,10); + nextP(10,10) = P(10,10); + nextP(0,11) = PS17; + nextP(1,11) = PS97; + nextP(2,11) = PS132; + nextP(3,11) = PS155; + nextP(4,11) = P(0,11)*PS174 + P(1,11)*PS173 + P(11,13)*PS43 + P(11,14)*PS172 - P(11,15)*PS171 + P(2,11)*PS175 - P(3,11)*PS176 + P(4,11); + nextP(5,11) = -P(0,11)*PS202 - P(1,11)*PS204 - P(11,13)*PS193 + P(11,14)*PS75 + P(11,15)*PS190 + P(2,11)*PS201 + P(3,11)*PS203 + P(5,11); + nextP(6,11) = P(0,11)*PS216 + P(1,11)*PS217 + P(11,13)*PS199 - P(11,14)*PS197 + P(11,15)*PS87 - P(2,11)*PS214 + P(3,11)*PS215 + P(6,11); + nextP(7,11) = P(4,11)*dt + P(7,11); + nextP(8,11) = P(5,11)*dt + P(8,11); + nextP(9,11) = P(6,11)*dt + P(9,11); + nextP(10,11) = P(10,11); + nextP(11,11) = P(11,11); + nextP(0,12) = PS20; + nextP(1,12) = PS107; + nextP(2,12) = PS127; + nextP(3,12) = PS154; + nextP(4,12) = P(0,12)*PS174 + P(1,12)*PS173 + P(12,13)*PS43 + P(12,14)*PS172 - P(12,15)*PS171 + P(2,12)*PS175 - P(3,12)*PS176 + P(4,12); + nextP(5,12) = -P(0,12)*PS202 - P(1,12)*PS204 - P(12,13)*PS193 + P(12,14)*PS75 + P(12,15)*PS190 + P(2,12)*PS201 + P(3,12)*PS203 + P(5,12); + nextP(6,12) = P(0,12)*PS216 + P(1,12)*PS217 + P(12,13)*PS199 - P(12,14)*PS197 + P(12,15)*PS87 - P(2,12)*PS214 + P(3,12)*PS215 + P(6,12); + nextP(7,12) = P(4,12)*dt + P(7,12); + nextP(8,12) = P(5,12)*dt + P(8,12); + nextP(9,12) = P(6,12)*dt + P(9,12); + nextP(10,12) = P(10,12); + nextP(11,12) = P(11,12); + nextP(12,12) = P(12,12); + + // process noise contribution for delta angle states can be very small compared to + // the variances, therefore use algorithm to minimise numerical error + for (unsigned i = 10; i <=12; i++) { + const int index = i-10; + nextP(i,i) = kahanSummation(nextP(i,i), process_noise(i), _delta_angle_bias_var_accum(index)); + } + + if (!_accel_bias_inhibit[0]) { + // calculate variances and upper diagonal covariances for IMU X axis delta velocity bias state + nextP(0,13) = PS44; + nextP(1,13) = PS113; + nextP(2,13) = PS138; + nextP(3,13) = PS158; + nextP(4,13) = PS177; + nextP(5,13) = PS206; + nextP(6,13) = PS221; + nextP(7,13) = P(4,13)*dt + P(7,13); + nextP(8,13) = P(5,13)*dt + P(8,13); + nextP(9,13) = P(6,13)*dt + P(9,13); + nextP(10,13) = P(10,13); + nextP(11,13) = P(11,13); + nextP(12,13) = P(12,13); + nextP(13,13) = P(13,13); + + // add process noise that is not from the IMU + // process noise contribution for delta velocity states can be very small compared to + // the variances, therefore use algorithm to minimise numerical error + nextP(13,13) = kahanSummation(nextP(13,13), process_noise(13), _delta_vel_bias_var_accum(0)); + + } else { + nextP.uncorrelateCovarianceSetVariance<1>(13, _prev_dvel_bias_var(0)); + _delta_vel_bias_var_accum(0) = 0.f; + + } + + if (!_accel_bias_inhibit[1]) { + // calculate variances and upper diagonal covariances for IMU Y axis delta velocity bias state + + nextP(0,14) = PS57; + nextP(1,14) = PS117; + nextP(2,14) = PS142; + nextP(3,14) = PS162; + nextP(4,14) = PS180; + nextP(5,14) = PS205; + nextP(6,14) = PS220; + nextP(7,14) = P(4,14)*dt + P(7,14); + nextP(8,14) = P(5,14)*dt + P(8,14); + nextP(9,14) = P(6,14)*dt + P(9,14); + nextP(10,14) = P(10,14); + nextP(11,14) = P(11,14); + nextP(12,14) = P(12,14); + nextP(13,14) = P(13,14); + nextP(14,14) = P(14,14); + + // add process noise that is not from the IMU + // process noise contribution for delta velocity states can be very small compared to + // the variances, therefore use algorithm to minimise numerical error + nextP(14,14) = kahanSummation(nextP(14,14), process_noise(14), _delta_vel_bias_var_accum(1)); + + } else { + nextP.uncorrelateCovarianceSetVariance<1>(14, _prev_dvel_bias_var(1)); + _delta_vel_bias_var_accum(1) = 0.f; + + } + + if (!_accel_bias_inhibit[2]) { + // calculate variances and upper diagonal covariances for IMU Z axis delta velocity bias state + nextP(0,15) = PS46; + nextP(1,15) = PS114; + nextP(2,15) = PS139; + nextP(3,15) = PS159; + nextP(4,15) = PS178; + nextP(5,15) = PS209; + nextP(6,15) = PS219; + nextP(7,15) = P(4,15)*dt + P(7,15); + nextP(8,15) = P(5,15)*dt + P(8,15); + nextP(9,15) = P(6,15)*dt + P(9,15); + nextP(10,15) = P(10,15); + nextP(11,15) = P(11,15); + nextP(12,15) = P(12,15); + nextP(13,15) = P(13,15); + nextP(14,15) = P(14,15); + nextP(15,15) = P(15,15); + + // add process noise that is not from the IMU + // process noise contribution for delta velocity states can be very small compared to + // the variances, therefore use algorithm to minimise numerical error + nextP(15,15) = kahanSummation(nextP(15,15), process_noise(15), _delta_vel_bias_var_accum(2)); + + } else { + nextP.uncorrelateCovarianceSetVariance<1>(15, _prev_dvel_bias_var(2)); + _delta_vel_bias_var_accum(2) = 0.f; + } + + // Don't do covariance prediction on magnetic field states unless we are using 3-axis fusion + if (_control_status.flags.mag_3D) { + // calculate variances and upper diagonal covariances for earth and body magnetic field states + + + nextP(0,16) = P(0,16) - P(1,16)*PS11 + P(10,16)*PS6 + P(11,16)*PS7 + P(12,16)*PS9 - P(2,16)*PS12 - P(3,16)*PS13; + nextP(1,16) = P(0,16)*PS11 + P(1,16) - P(10,16)*PS34 + P(11,16)*PS9 - P(12,16)*PS7 + P(2,16)*PS13 - P(3,16)*PS12; + nextP(2,16) = P(0,16)*PS12 - P(1,16)*PS13 - P(10,16)*PS9 - P(11,16)*PS34 + P(12,16)*PS6 + P(2,16) + P(3,16)*PS11; + nextP(3,16) = P(0,16)*PS13 + P(1,16)*PS12 + P(10,16)*PS7 - P(11,16)*PS6 - P(12,16)*PS34 - P(2,16)*PS11 + P(3,16); + nextP(4,16) = P(0,16)*PS174 + P(1,16)*PS173 + P(13,16)*PS43 + P(14,16)*PS172 - P(15,16)*PS171 + P(2,16)*PS175 - P(3,16)*PS176 + P(4,16); + nextP(5,16) = -P(0,16)*PS202 - P(1,16)*PS204 - P(13,16)*PS193 + P(14,16)*PS75 + P(15,16)*PS190 + P(2,16)*PS201 + P(3,16)*PS203 + P(5,16); + nextP(6,16) = P(0,16)*PS216 + P(1,16)*PS217 + P(13,16)*PS199 - P(14,16)*PS197 + P(15,16)*PS87 - P(2,16)*PS214 + P(3,16)*PS215 + P(6,16); + nextP(7,16) = P(4,16)*dt + P(7,16); + nextP(8,16) = P(5,16)*dt + P(8,16); + nextP(9,16) = P(6,16)*dt + P(9,16); + nextP(10,16) = P(10,16); + nextP(11,16) = P(11,16); + nextP(12,16) = P(12,16); + nextP(13,16) = P(13,16); + nextP(14,16) = P(14,16); + nextP(15,16) = P(15,16); + nextP(16,16) = P(16,16); + nextP(0,17) = P(0,17) - P(1,17)*PS11 + P(10,17)*PS6 + P(11,17)*PS7 + P(12,17)*PS9 - P(2,17)*PS12 - P(3,17)*PS13; + nextP(1,17) = P(0,17)*PS11 + P(1,17) - P(10,17)*PS34 + P(11,17)*PS9 - P(12,17)*PS7 + P(2,17)*PS13 - P(3,17)*PS12; + nextP(2,17) = P(0,17)*PS12 - P(1,17)*PS13 - P(10,17)*PS9 - P(11,17)*PS34 + P(12,17)*PS6 + P(2,17) + P(3,17)*PS11; + nextP(3,17) = P(0,17)*PS13 + P(1,17)*PS12 + P(10,17)*PS7 - P(11,17)*PS6 - P(12,17)*PS34 - P(2,17)*PS11 + P(3,17); + nextP(4,17) = P(0,17)*PS174 + P(1,17)*PS173 + P(13,17)*PS43 + P(14,17)*PS172 - P(15,17)*PS171 + P(2,17)*PS175 - P(3,17)*PS176 + P(4,17); + nextP(5,17) = -P(0,17)*PS202 - P(1,17)*PS204 - P(13,17)*PS193 + P(14,17)*PS75 + P(15,17)*PS190 + P(2,17)*PS201 + P(3,17)*PS203 + P(5,17); + nextP(6,17) = P(0,17)*PS216 + P(1,17)*PS217 + P(13,17)*PS199 - P(14,17)*PS197 + P(15,17)*PS87 - P(2,17)*PS214 + P(3,17)*PS215 + P(6,17); + nextP(7,17) = P(4,17)*dt + P(7,17); + nextP(8,17) = P(5,17)*dt + P(8,17); + nextP(9,17) = P(6,17)*dt + P(9,17); + nextP(10,17) = P(10,17); + nextP(11,17) = P(11,17); + nextP(12,17) = P(12,17); + nextP(13,17) = P(13,17); + nextP(14,17) = P(14,17); + nextP(15,17) = P(15,17); + nextP(16,17) = P(16,17); + nextP(17,17) = P(17,17); + nextP(0,18) = P(0,18) - P(1,18)*PS11 + P(10,18)*PS6 + P(11,18)*PS7 + P(12,18)*PS9 - P(2,18)*PS12 - P(3,18)*PS13; + nextP(1,18) = P(0,18)*PS11 + P(1,18) - P(10,18)*PS34 + P(11,18)*PS9 - P(12,18)*PS7 + P(2,18)*PS13 - P(3,18)*PS12; + nextP(2,18) = P(0,18)*PS12 - P(1,18)*PS13 - P(10,18)*PS9 - P(11,18)*PS34 + P(12,18)*PS6 + P(2,18) + P(3,18)*PS11; + nextP(3,18) = P(0,18)*PS13 + P(1,18)*PS12 + P(10,18)*PS7 - P(11,18)*PS6 - P(12,18)*PS34 - P(2,18)*PS11 + P(3,18); + nextP(4,18) = P(0,18)*PS174 + P(1,18)*PS173 + P(13,18)*PS43 + P(14,18)*PS172 - P(15,18)*PS171 + P(2,18)*PS175 - P(3,18)*PS176 + P(4,18); + nextP(5,18) = -P(0,18)*PS202 - P(1,18)*PS204 - P(13,18)*PS193 + P(14,18)*PS75 + P(15,18)*PS190 + P(2,18)*PS201 + P(3,18)*PS203 + P(5,18); + nextP(6,18) = P(0,18)*PS216 + P(1,18)*PS217 + P(13,18)*PS199 - P(14,18)*PS197 + P(15,18)*PS87 - P(2,18)*PS214 + P(3,18)*PS215 + P(6,18); + nextP(7,18) = P(4,18)*dt + P(7,18); + nextP(8,18) = P(5,18)*dt + P(8,18); + nextP(9,18) = P(6,18)*dt + P(9,18); + nextP(10,18) = P(10,18); + nextP(11,18) = P(11,18); + nextP(12,18) = P(12,18); + nextP(13,18) = P(13,18); + nextP(14,18) = P(14,18); + nextP(15,18) = P(15,18); + nextP(16,18) = P(16,18); + nextP(17,18) = P(17,18); + nextP(18,18) = P(18,18); + nextP(0,19) = P(0,19) - P(1,19)*PS11 + P(10,19)*PS6 + P(11,19)*PS7 + P(12,19)*PS9 - P(2,19)*PS12 - P(3,19)*PS13; + nextP(1,19) = P(0,19)*PS11 + P(1,19) - P(10,19)*PS34 + P(11,19)*PS9 - P(12,19)*PS7 + P(2,19)*PS13 - P(3,19)*PS12; + nextP(2,19) = P(0,19)*PS12 - P(1,19)*PS13 - P(10,19)*PS9 - P(11,19)*PS34 + P(12,19)*PS6 + P(2,19) + P(3,19)*PS11; + nextP(3,19) = P(0,19)*PS13 + P(1,19)*PS12 + P(10,19)*PS7 - P(11,19)*PS6 - P(12,19)*PS34 - P(2,19)*PS11 + P(3,19); + nextP(4,19) = P(0,19)*PS174 + P(1,19)*PS173 + P(13,19)*PS43 + P(14,19)*PS172 - P(15,19)*PS171 + P(2,19)*PS175 - P(3,19)*PS176 + P(4,19); + nextP(5,19) = -P(0,19)*PS202 - P(1,19)*PS204 - P(13,19)*PS193 + P(14,19)*PS75 + P(15,19)*PS190 + P(2,19)*PS201 + P(3,19)*PS203 + P(5,19); + nextP(6,19) = P(0,19)*PS216 + P(1,19)*PS217 + P(13,19)*PS199 - P(14,19)*PS197 + P(15,19)*PS87 - P(2,19)*PS214 + P(3,19)*PS215 + P(6,19); + nextP(7,19) = P(4,19)*dt + P(7,19); + nextP(8,19) = P(5,19)*dt + P(8,19); + nextP(9,19) = P(6,19)*dt + P(9,19); + nextP(10,19) = P(10,19); + nextP(11,19) = P(11,19); + nextP(12,19) = P(12,19); + nextP(13,19) = P(13,19); + nextP(14,19) = P(14,19); + nextP(15,19) = P(15,19); + nextP(16,19) = P(16,19); + nextP(17,19) = P(17,19); + nextP(18,19) = P(18,19); + nextP(19,19) = P(19,19); + nextP(0,20) = P(0,20) - P(1,20)*PS11 + P(10,20)*PS6 + P(11,20)*PS7 + P(12,20)*PS9 - P(2,20)*PS12 - P(3,20)*PS13; + nextP(1,20) = P(0,20)*PS11 + P(1,20) - P(10,20)*PS34 + P(11,20)*PS9 - P(12,20)*PS7 + P(2,20)*PS13 - P(3,20)*PS12; + nextP(2,20) = P(0,20)*PS12 - P(1,20)*PS13 - P(10,20)*PS9 - P(11,20)*PS34 + P(12,20)*PS6 + P(2,20) + P(3,20)*PS11; + nextP(3,20) = P(0,20)*PS13 + P(1,20)*PS12 + P(10,20)*PS7 - P(11,20)*PS6 - P(12,20)*PS34 - P(2,20)*PS11 + P(3,20); + nextP(4,20) = P(0,20)*PS174 + P(1,20)*PS173 + P(13,20)*PS43 + P(14,20)*PS172 - P(15,20)*PS171 + P(2,20)*PS175 - P(3,20)*PS176 + P(4,20); + nextP(5,20) = -P(0,20)*PS202 - P(1,20)*PS204 - P(13,20)*PS193 + P(14,20)*PS75 + P(15,20)*PS190 + P(2,20)*PS201 + P(3,20)*PS203 + P(5,20); + nextP(6,20) = P(0,20)*PS216 + P(1,20)*PS217 + P(13,20)*PS199 - P(14,20)*PS197 + P(15,20)*PS87 - P(2,20)*PS214 + P(3,20)*PS215 + P(6,20); + nextP(7,20) = P(4,20)*dt + P(7,20); + nextP(8,20) = P(5,20)*dt + P(8,20); + nextP(9,20) = P(6,20)*dt + P(9,20); + nextP(10,20) = P(10,20); + nextP(11,20) = P(11,20); + nextP(12,20) = P(12,20); + nextP(13,20) = P(13,20); + nextP(14,20) = P(14,20); + nextP(15,20) = P(15,20); + nextP(16,20) = P(16,20); + nextP(17,20) = P(17,20); + nextP(18,20) = P(18,20); + nextP(19,20) = P(19,20); + nextP(20,20) = P(20,20); + nextP(0,21) = P(0,21) - P(1,21)*PS11 + P(10,21)*PS6 + P(11,21)*PS7 + P(12,21)*PS9 - P(2,21)*PS12 - P(3,21)*PS13; + nextP(1,21) = P(0,21)*PS11 + P(1,21) - P(10,21)*PS34 + P(11,21)*PS9 - P(12,21)*PS7 + P(2,21)*PS13 - P(3,21)*PS12; + nextP(2,21) = P(0,21)*PS12 - P(1,21)*PS13 - P(10,21)*PS9 - P(11,21)*PS34 + P(12,21)*PS6 + P(2,21) + P(3,21)*PS11; + nextP(3,21) = P(0,21)*PS13 + P(1,21)*PS12 + P(10,21)*PS7 - P(11,21)*PS6 - P(12,21)*PS34 - P(2,21)*PS11 + P(3,21); + nextP(4,21) = P(0,21)*PS174 + P(1,21)*PS173 + P(13,21)*PS43 + P(14,21)*PS172 - P(15,21)*PS171 + P(2,21)*PS175 - P(3,21)*PS176 + P(4,21); + nextP(5,21) = -P(0,21)*PS202 - P(1,21)*PS204 - P(13,21)*PS193 + P(14,21)*PS75 + P(15,21)*PS190 + P(2,21)*PS201 + P(3,21)*PS203 + P(5,21); + nextP(6,21) = P(0,21)*PS216 + P(1,21)*PS217 + P(13,21)*PS199 - P(14,21)*PS197 + P(15,21)*PS87 - P(2,21)*PS214 + P(3,21)*PS215 + P(6,21); + nextP(7,21) = P(4,21)*dt + P(7,21); + nextP(8,21) = P(5,21)*dt + P(8,21); + nextP(9,21) = P(6,21)*dt + P(9,21); + nextP(10,21) = P(10,21); + nextP(11,21) = P(11,21); + nextP(12,21) = P(12,21); + nextP(13,21) = P(13,21); + nextP(14,21) = P(14,21); + nextP(15,21) = P(15,21); + nextP(16,21) = P(16,21); + nextP(17,21) = P(17,21); + nextP(18,21) = P(18,21); + nextP(19,21) = P(19,21); + nextP(20,21) = P(20,21); + nextP(21,21) = P(21,21); + + // add process noise that is not from the IMU + for (unsigned i = 16; i <= 21; i++) { + nextP(i,i) += process_noise(i); + } + + } + + // Don't do covariance prediction on wind states unless we are using them + if (_control_status.flags.wind) { + + // calculate variances and upper diagonal covariances for wind states + + nextP(0,22) = P(0,22) - P(1,22)*PS11 + P(10,22)*PS6 + P(11,22)*PS7 + P(12,22)*PS9 - P(2,22)*PS12 - P(3,22)*PS13; + nextP(1,22) = P(0,22)*PS11 + P(1,22) - P(10,22)*PS34 + P(11,22)*PS9 - P(12,22)*PS7 + P(2,22)*PS13 - P(3,22)*PS12; + nextP(2,22) = P(0,22)*PS12 - P(1,22)*PS13 - P(10,22)*PS9 - P(11,22)*PS34 + P(12,22)*PS6 + P(2,22) + P(3,22)*PS11; + nextP(3,22) = P(0,22)*PS13 + P(1,22)*PS12 + P(10,22)*PS7 - P(11,22)*PS6 - P(12,22)*PS34 - P(2,22)*PS11 + P(3,22); + nextP(4,22) = P(0,22)*PS174 + P(1,22)*PS173 + P(13,22)*PS43 + P(14,22)*PS172 - P(15,22)*PS171 + P(2,22)*PS175 - P(3,22)*PS176 + P(4,22); + nextP(5,22) = -P(0,22)*PS202 - P(1,22)*PS204 - P(13,22)*PS193 + P(14,22)*PS75 + P(15,22)*PS190 + P(2,22)*PS201 + P(3,22)*PS203 + P(5,22); + nextP(6,22) = P(0,22)*PS216 + P(1,22)*PS217 + P(13,22)*PS199 - P(14,22)*PS197 + P(15,22)*PS87 - P(2,22)*PS214 + P(3,22)*PS215 + P(6,22); + nextP(7,22) = P(4,22)*dt + P(7,22); + nextP(8,22) = P(5,22)*dt + P(8,22); + nextP(9,22) = P(6,22)*dt + P(9,22); + nextP(10,22) = P(10,22); + nextP(11,22) = P(11,22); + nextP(12,22) = P(12,22); + nextP(13,22) = P(13,22); + nextP(14,22) = P(14,22); + nextP(15,22) = P(15,22); + nextP(16,22) = P(16,22); + nextP(17,22) = P(17,22); + nextP(18,22) = P(18,22); + nextP(19,22) = P(19,22); + nextP(20,22) = P(20,22); + nextP(21,22) = P(21,22); + nextP(22,22) = P(22,22); + nextP(0,23) = P(0,23) - P(1,23)*PS11 + P(10,23)*PS6 + P(11,23)*PS7 + P(12,23)*PS9 - P(2,23)*PS12 - P(3,23)*PS13; + nextP(1,23) = P(0,23)*PS11 + P(1,23) - P(10,23)*PS34 + P(11,23)*PS9 - P(12,23)*PS7 + P(2,23)*PS13 - P(3,23)*PS12; + nextP(2,23) = P(0,23)*PS12 - P(1,23)*PS13 - P(10,23)*PS9 - P(11,23)*PS34 + P(12,23)*PS6 + P(2,23) + P(3,23)*PS11; + nextP(3,23) = P(0,23)*PS13 + P(1,23)*PS12 + P(10,23)*PS7 - P(11,23)*PS6 - P(12,23)*PS34 - P(2,23)*PS11 + P(3,23); + nextP(4,23) = P(0,23)*PS174 + P(1,23)*PS173 + P(13,23)*PS43 + P(14,23)*PS172 - P(15,23)*PS171 + P(2,23)*PS175 - P(3,23)*PS176 + P(4,23); + nextP(5,23) = -P(0,23)*PS202 - P(1,23)*PS204 - P(13,23)*PS193 + P(14,23)*PS75 + P(15,23)*PS190 + P(2,23)*PS201 + P(3,23)*PS203 + P(5,23); + nextP(6,23) = P(0,23)*PS216 + P(1,23)*PS217 + P(13,23)*PS199 - P(14,23)*PS197 + P(15,23)*PS87 - P(2,23)*PS214 + P(3,23)*PS215 + P(6,23); + nextP(7,23) = P(4,23)*dt + P(7,23); + nextP(8,23) = P(5,23)*dt + P(8,23); + nextP(9,23) = P(6,23)*dt + P(9,23); + nextP(10,23) = P(10,23); + nextP(11,23) = P(11,23); + nextP(12,23) = P(12,23); + nextP(13,23) = P(13,23); + nextP(14,23) = P(14,23); + nextP(15,23) = P(15,23); + nextP(16,23) = P(16,23); + nextP(17,23) = P(17,23); + nextP(18,23) = P(18,23); + nextP(19,23) = P(19,23); + nextP(20,23) = P(20,23); + nextP(21,23) = P(21,23); + nextP(22,23) = P(22,23); + nextP(23,23) = P(23,23); + + // add process noise that is not from the IMU + for (unsigned i = 22; i <= 23; i++) { + nextP(i,i) += process_noise(i); + } + + } + + // stop position covariance growth if our total position variance reaches 100m + // this can happen if we lose gps for some time + if ((P(7,7) + P(8,8)) > 1e4f) { + for (uint8_t i = 7; i <= 8; i++) { + for (uint8_t j = 0; j < _k_num_states; j++) { + nextP(i,j) = P(i,j); + nextP(j,i) = P(j,i); + } + } + } + + // covariance matrix is symmetrical, so copy upper half to lower half + for (unsigned row = 1; row < _k_num_states; row++) { + for (unsigned column = 0 ; column < row; column++) { + P(row,column) = P(column,row) = nextP(column,row); + } + } + + // copy variances (diagonals) + for (unsigned i = 0; i < _k_num_states; i++) { + P(i,i) = nextP(i,i); + } + + // fix gross errors in the covariance matrix and ensure rows and + // columns for un-used states are zero + fixCovarianceErrors(false); + +} + +void Ekf::fixCovarianceErrors(bool force_symmetry) +{ + // NOTE: This limiting is a last resort and should not be relied on + // TODO: Split covariance prediction into separate F*P*transpose(F) and Q contributions + // and set corresponding entries in Q to zero when states exceed 50% of the limit + // Covariance diagonal limits. Use same values for states which + // belong to the same group (e.g. vel_x, vel_y, vel_z) + float P_lim[8] = {}; + P_lim[0] = 1.0f; // quaternion max var + P_lim[1] = 1e6f; // velocity max var + P_lim[2] = 1e6f; // positiion max var + P_lim[3] = 1.0f; // gyro bias max var + P_lim[4] = 1.0f; // delta velocity z bias max var + P_lim[5] = 1.0f; // earth mag field max var + P_lim[6] = 1.0f; // body mag field max var + P_lim[7] = 1e6f; // wind max var + + for (int i = 0; i <= 3; i++) { + // quaternion states + P(i,i) = math::constrain(P(i,i), 0.0f, P_lim[0]); + } + + for (int i = 4; i <= 6; i++) { + // NED velocity states + P(i,i) = math::constrain(P(i,i), 1e-6f, P_lim[1]); + } + + for (int i = 7; i <= 9; i++) { + // NED position states + P(i,i) = math::constrain(P(i,i), 1e-6f, P_lim[2]); + } + + for (int i = 10; i <= 12; i++) { + // gyro bias states + P(i,i) = math::constrain(P(i,i), 0.0f, P_lim[3]); + } + + // force symmetry on the quaternion, velocity and position state covariances + if (force_symmetry) { + P.makeRowColSymmetric<13>(0); + } + + // the following states are optional and are deactivated when not required + // by ensuring the corresponding covariance matrix values are kept at zero + + // accelerometer bias states + if (!_accel_bias_inhibit[0] || !_accel_bias_inhibit[1] || !_accel_bias_inhibit[2]) { + // Find the maximum delta velocity bias state variance and request a covariance reset if any variance is below the safe minimum + const float minSafeStateVar = 1e-9f; + float maxStateVar = minSafeStateVar; + bool resetRequired = false; + + for (uint8_t stateIndex = 13; stateIndex <= 15; stateIndex++) { + if (_accel_bias_inhibit[stateIndex - 13]) { + // Skip the check for the inhibited axis + continue; + } + if (P(stateIndex,stateIndex) > maxStateVar) { + maxStateVar = P(stateIndex,stateIndex); + + } else if (P(stateIndex,stateIndex) < minSafeStateVar) { + resetRequired = true; + } + } + + // To ensure stability of the covariance matrix operations, the ratio of a max and min variance must + // not exceed 100 and the minimum variance must not fall below the target minimum + // Also limit variance to a maximum equivalent to a 0.1g uncertainty + const float minStateVarTarget = 5E-8f; + float minAllowedStateVar = fmaxf(0.01f * maxStateVar, minStateVarTarget); + + for (uint8_t stateIndex = 13; stateIndex <= 15; stateIndex++) { + if (_accel_bias_inhibit[stateIndex - 13]) { + // Skip the check for the inhibited axis + continue; + } + P(stateIndex,stateIndex) = math::constrain(P(stateIndex,stateIndex), minAllowedStateVar, sq(0.1f * CONSTANTS_ONE_G * _dt_ekf_avg)); + } + + // If any one axis has fallen below the safe minimum, all delta velocity covariance terms must be reset to zero + if (resetRequired) { + P.uncorrelateCovariance<3>(13); + } + + // Run additional checks to see if the delta velocity bias has hit limits in a direction that is clearly wrong + // calculate accel bias term aligned with the gravity vector + const float dVel_bias_lim = 0.9f * _params.acc_bias_lim * _dt_ekf_avg; + const float down_dvel_bias = _state.delta_vel_bias.dot(Vector3f(_R_to_earth.row(2))); + + // check that the vertical component of accel bias is consistent with both the vertical position and velocity innovation + bool bad_acc_bias = (fabsf(down_dvel_bias) > dVel_bias_lim + && ( (down_dvel_bias * _gps_vel_innov(2) < 0.0f && _control_status.flags.gps) + || (down_dvel_bias * _ev_vel_innov(2) < 0.0f && _control_status.flags.ev_vel) ) + && ( (down_dvel_bias * _gps_pos_innov(2) < 0.0f && _control_status.flags.gps_hgt) + || (down_dvel_bias * _baro_hgt_innov(2) < 0.0f && _control_status.flags.baro_hgt) + || (down_dvel_bias * _rng_hgt_innov(2) < 0.0f && _control_status.flags.rng_hgt) + || (down_dvel_bias * _ev_pos_innov(2) < 0.0f && _control_status.flags.ev_hgt) ) ); + + // record the pass/fail + if (!bad_acc_bias) { + _fault_status.flags.bad_acc_bias = false; + _time_acc_bias_check = _time_last_imu; + + } else { + _fault_status.flags.bad_acc_bias = true; + } + + // if we have failed for 7 seconds continuously, reset the accel bias covariances to fix bad conditioning of + // the covariance matrix but preserve the variances (diagonals) to allow bias learning to continue + if (isTimedOut(_time_acc_bias_check, (uint64_t)7e6)) { + + P.uncorrelateCovariance<3>(13); + + _time_acc_bias_check = _time_last_imu; + _fault_status.flags.bad_acc_bias = false; + _warning_events.flags.invalid_accel_bias_cov_reset = true; + ECL_WARN("invalid accel bias - covariance reset"); + + } else if (force_symmetry) { + // ensure the covariance values are symmetrical + P.makeRowColSymmetric<3>(13); + } + + } + + // magnetic field states + if (!_control_status.flags.mag_3D) { + zeroMagCov(); + + } else { + // constrain variances + for (int i = 16; i <= 18; i++) { + P(i,i) = math::constrain(P(i,i), 0.0f, P_lim[5]); + } + + for (int i = 19; i <= 21; i++) { + P(i,i) = math::constrain(P(i,i), 0.0f, P_lim[6]); + } + + // force symmetry + if (force_symmetry) { + P.makeRowColSymmetric<3>(16); + P.makeRowColSymmetric<3>(19); + } + + } + + // wind velocity states + if (!_control_status.flags.wind) { + P.uncorrelateCovarianceSetVariance<2>(22, 0.0f); + + } else { + // constrain variances + for (int i = 22; i <= 23; i++) { + P(i,i) = math::constrain(P(i,i), 0.0f, P_lim[7]); + } + + // force symmetry + if (force_symmetry) { + P.makeRowColSymmetric<2>(22); + } + } +} + +// if the covariance correction will result in a negative variance, then +// the covariance matrix is unhealthy and must be corrected +bool Ekf::checkAndFixCovarianceUpdate(const SquareMatrix24f& KHP) { + bool healthy = true; + for (int i = 0; i < _k_num_states; i++) { + if (P(i, i) < KHP(i, i)) { + P.uncorrelateCovarianceSetVariance<1>(i, 0.0f); + healthy = false; + } + } + return healthy; +} + +void Ekf::resetMagRelatedCovariances() +{ + resetQuatCov(); + resetMagCov(); +} + +void Ekf::resetQuatCov(){ + zeroQuatCov(); + + // define the initial angle uncertainty as variances for a rotation vector + Vector3f rot_vec_var; + rot_vec_var.setAll(sq(_params.initial_tilt_err)); + + initialiseQuatCovariances(rot_vec_var); +} + +void Ekf::zeroQuatCov() +{ + P.uncorrelateCovarianceSetVariance<2>(0, 0.0f); + P.uncorrelateCovarianceSetVariance<2>(2, 0.0f); +} + +void Ekf::resetMagCov() +{ + // reset the corresponding rows and columns in the covariance matrix and + // set the variances on the magnetic field states to the measurement variance + clearMagCov(); + + P.uncorrelateCovarianceSetVariance<3>(16, sq(_params.mag_noise)); + P.uncorrelateCovarianceSetVariance<3>(19, sq(_params.mag_noise)); + + if (!_control_status.flags.mag_3D) { + // save covariance data for re-use when auto-switching between heading and 3-axis fusion + // if already in 3-axis fusion mode, the covariances are automatically saved when switching out + // of this mode + saveMagCovData(); + } +} + +void Ekf::clearMagCov() +{ + zeroMagCov(); + _mag_decl_cov_reset = false; +} + +void Ekf::zeroMagCov() +{ + P.uncorrelateCovarianceSetVariance<3>(16, 0.0f); + P.uncorrelateCovarianceSetVariance<3>(19, 0.0f); +} + +void Ekf::resetZDeltaAngBiasCov() +{ + const float init_delta_ang_bias_var = sq(_params.switch_on_gyro_bias * _dt_ekf_avg); + + P.uncorrelateCovarianceSetVariance<1>(12, init_delta_ang_bias_var); +} + +void Ekf::resetWindCovariance() +{ + if (_tas_data_ready && (_imu_sample_delayed.time_us - _airspeed_sample_delayed.time_us < (uint64_t)5e5)) { + // Derived using EKF/matlab/scripts/Inertial Nav EKF/wind_cov.py + // TODO: explicitly include the sideslip angle in the derivation + const float euler_yaw = getEuler321Yaw(_state.quat_nominal); + const float R_TAS = sq(math::constrain(_params.eas_noise, 0.5f, 5.0f) * math::constrain(_airspeed_sample_delayed.eas2tas, 0.9f, 10.0f)); + constexpr float initial_sideslip_uncertainty = math::radians(15.0f); + const float initial_wind_var_body_y = sq(_airspeed_sample_delayed.true_airspeed * sinf(initial_sideslip_uncertainty)); + constexpr float R_yaw = sq(math::radians(10.0f)); + + const float cos_yaw = cosf(euler_yaw); + const float sin_yaw = sinf(euler_yaw); + + // rotate wind velocity into earth frame aligned with vehicle yaw + const float Wx = _state.wind_vel(0) * cos_yaw + _state.wind_vel(1) * sin_yaw; + const float Wy = -_state.wind_vel(0) * sin_yaw + _state.wind_vel(1) * cos_yaw; + + // it is safer to remove all existing correlations to other states at this time + P.uncorrelateCovarianceSetVariance<2>(22, 0.0f); + + P(22,22) = R_TAS*sq(cos_yaw) + R_yaw*sq(-Wx*sin_yaw - Wy*cos_yaw) + initial_wind_var_body_y*sq(sin_yaw); + P(22,23) = R_TAS*sin_yaw*cos_yaw + R_yaw*(-Wx*sin_yaw - Wy*cos_yaw)*(Wx*cos_yaw - Wy*sin_yaw) - initial_wind_var_body_y*sin_yaw*cos_yaw; + P(23,22) = P(22,23); + P(23,23) = R_TAS*sq(sin_yaw) + R_yaw*sq(Wx*cos_yaw - Wy*sin_yaw) + initial_wind_var_body_y*sq(cos_yaw); + + // Now add the variance due to uncertainty in vehicle velocity that was used to calculate the initial wind speed + P(22,22) += P(4,4); + P(23,23) += P(5,5); + + } else { + // without airspeed, start with a small initial uncertainty to improve the initial estimate + P.uncorrelateCovarianceSetVariance<2>(22, _params.initial_wind_uncertainty); + } +} diff --git a/src/lib/ecl/EKF/documentation/Output Predictor.pdf b/src/lib/ecl/EKF/documentation/Output Predictor.pdf new file mode 100644 index 0000000000..bcc1c1cbdb Binary files /dev/null and b/src/lib/ecl/EKF/documentation/Output Predictor.pdf differ diff --git a/src/lib/ecl/EKF/documentation/Process and Observation Models.pdf b/src/lib/ecl/EKF/documentation/Process and Observation Models.pdf new file mode 100644 index 0000000000..8aeab702e0 Binary files /dev/null and b/src/lib/ecl/EKF/documentation/Process and Observation Models.pdf differ diff --git a/src/lib/ecl/EKF/documentation/Reference List.pdf b/src/lib/ecl/EKF/documentation/Reference List.pdf new file mode 100644 index 0000000000..7b7a351e0b Binary files /dev/null and b/src/lib/ecl/EKF/documentation/Reference List.pdf differ diff --git a/src/lib/ecl/EKF/documentation/readme.txt b/src/lib/ecl/EKF/documentation/readme.txt new file mode 100644 index 0000000000..0bb5a83f80 --- /dev/null +++ b/src/lib/ecl/EKF/documentation/readme.txt @@ -0,0 +1,9 @@ +The EKF uses a range of techniques acquired from several years of experience including an original method to handle the delayed time horizon problem. +A list of references I have found useful has been included. + +- The python script used to derive the autogenerated expressions in the EKF can be found here: https://github.com/PX4/ecl/blob/master/EKF/python/ekf_derivation/main.py + +- A working Matlab model of the filter capable of replaying flight data can be found here: https://github.com/PX4/ecl/tree/master/EKF/matlab/EKF_replay + +Paul Riseborough +https://github.com/priseborough diff --git a/src/lib/ecl/EKF/drag_fusion.cpp b/src/lib/ecl/EKF/drag_fusion.cpp new file mode 100644 index 0000000000..89d1c4a380 --- /dev/null +++ b/src/lib/ecl/EKF/drag_fusion.cpp @@ -0,0 +1,327 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file drag_fusion.cpp + * Body frame drag fusion methods used for multi-rotor wind estimation. + * equations generated using EKF/python/ekf_derivation/main.py + * + * @author Paul Riseborough + * + */ + +#include "ekf.h" +#include +#include + +void Ekf::fuseDrag() +{ + SparseVector24f<0,1,2,3,4,5,6,22,23> Hfusion; // Observation Jacobians + Vector24f Kfusion; // Kalman gain vector + + const float R_ACC = fmaxf(_params.drag_noise, 0.5f); // observation noise variance in specific force drag (m/sec**2)**2 + const float rho = fmaxf(_air_density, 0.1f); // air density (kg/m**3) + + // correct rotor momentum drag for increase in required rotor mass flow with altitude + // obtained from momentum disc theory + const float mcoef_corrrected = _params.mcoef * sqrtf(rho / CONSTANTS_AIR_DENSITY_SEA_LEVEL_15C); + + // drag model parameters + const bool using_bcoef_x = _params.bcoef_x > 1.0f; + const bool using_bcoef_y = _params.bcoef_y > 1.0f; + const bool using_mcoef = _params.mcoef > 0.001f; + + if (!using_bcoef_x && !using_bcoef_y && !using_mcoef) { + return; + } + + // get latest estimated orientation + const float &q0 = _state.quat_nominal(0); + const float &q1 = _state.quat_nominal(1); + const float &q2 = _state.quat_nominal(2); + const float &q3 = _state.quat_nominal(3); + + // get latest velocity in earth frame + const float &vn = _state.vel(0); + const float &ve = _state.vel(1); + const float &vd = _state.vel(2); + + // get latest wind velocity in earth frame + const float &vwn = _state.wind_vel(0); + const float &vwe = _state.wind_vel(1); + + // predicted specific forces + // calculate relative wind velocity in earth frame and rotate into body frame + const Vector3f rel_wind_earth(vn - vwn, ve - vwe, vd); + const Dcmf earth_to_body = quatToInverseRotMat(_state.quat_nominal); + const Vector3f rel_wind_body = earth_to_body * rel_wind_earth; + + // perform sequential fusion of XY specific forces + for (uint8_t axis_index = 0; axis_index < 2; axis_index++) { + // measured drag acceleration corrected for sensor bias + const float mea_acc = _drag_sample_delayed.accelXY(axis_index) - _state.delta_vel_bias(axis_index) / _dt_ekf_avg; + + // predicted drag force sign is opposite to predicted wind relative velocity + const float drag_sign = (rel_wind_body(axis_index) >= 0.f) ? -1.f : 1.f; + + // Drag is modelled as an arbitrary combination of bluff body drag that proportional to + // equivalent airspeed squared, and rotor momentum drag that is proportional to true airspeed + // parallel to the rotor disc and mass flow through the rotor disc. + float pred_acc = 0.0f; // predicted drag acceleration + if (axis_index == 0) { + float Kacc; // Derivative of specific force wrt airspeed + if (using_mcoef && using_bcoef_x) { + // Use a combination of bluff body and propeller momentum drag + const float bcoef_inv = 1.0f / _params.bcoef_x; + // The airspeed used for linearisation is calculated from the measured acceleration by solving the following quadratic + // mea_acc = 0.5 * rho * bcoef_inv * airspeed**2 + mcoef_corrrected * airspeed + const float airspeed = (_params.bcoef_x / rho) * (- mcoef_corrrected + sqrtf(sq(mcoef_corrrected) + 2.0f * rho * bcoef_inv * fabsf(mea_acc))); + Kacc = fmaxf(1e-1f, rho * bcoef_inv * airspeed + mcoef_corrrected); + pred_acc = 0.5f * bcoef_inv * rho * sq(rel_wind_body(0)) * drag_sign - rel_wind_body(0) * mcoef_corrrected; + } else if (using_mcoef) { + // Use propeller momentum drag only + Kacc = fmaxf(1e-1f, mcoef_corrrected); + pred_acc = - rel_wind_body(0) * mcoef_corrrected; + } else if (using_bcoef_x) { + // Use bluff body drag only + // The airspeed used for linearisation is calculated from the measured acceleration by solving the following quadratic + // mea_acc = (0.5 * rho / _params.bcoef_x) * airspeed**2 + const float airspeed = sqrtf((2.0f * _params.bcoef_x * fabsf(mea_acc)) / rho); + const float bcoef_inv = 1.0f / _params.bcoef_x; + Kacc = fmaxf(1e-1f, rho * bcoef_inv * airspeed); + pred_acc = 0.5f * bcoef_inv * rho * sq(rel_wind_body(0)) * drag_sign; + } else { + // skip this axis + continue; + } + + // intermediate variables + const float HK0 = vn - vwn; + const float HK1 = ve - vwe; + const float HK2 = HK0*q0 + HK1*q3 - q2*vd; + const float HK3 = 2*Kacc; + const float HK4 = HK0*q1 + HK1*q2 + q3*vd; + const float HK5 = HK0*q2 - HK1*q1 + q0*vd; + const float HK6 = -HK0*q3 + HK1*q0 + q1*vd; + const float HK7 = ecl::powf(q0, 2) + ecl::powf(q1, 2) - ecl::powf(q2, 2) - ecl::powf(q3, 2); + const float HK8 = HK7*Kacc; + const float HK9 = q0*q3 + q1*q2; + const float HK10 = HK3*HK9; + const float HK11 = q0*q2 - q1*q3; + const float HK12 = 2*HK9; + const float HK13 = 2*HK11; + const float HK14 = 2*HK4; + const float HK15 = 2*HK2; + const float HK16 = 2*HK5; + const float HK17 = 2*HK6; + const float HK18 = -HK12*P(0,23) + HK12*P(0,5) - HK13*P(0,6) + HK14*P(0,1) + HK15*P(0,0) - HK16*P(0,2) + HK17*P(0,3) - HK7*P(0,22) + HK7*P(0,4); + const float HK19 = HK12*P(5,23); + const float HK20 = -HK12*P(23,23) - HK13*P(6,23) + HK14*P(1,23) + HK15*P(0,23) - HK16*P(2,23) + HK17*P(3,23) + HK19 - HK7*P(22,23) + HK7*P(4,23); + const float HK21 = ecl::powf(Kacc, 2); + const float HK22 = HK12*HK21; + const float HK23 = HK12*P(5,5) - HK13*P(5,6) + HK14*P(1,5) + HK15*P(0,5) - HK16*P(2,5) + HK17*P(3,5) - HK19 + HK7*P(4,5) - HK7*P(5,22); + const float HK24 = HK12*P(5,6) - HK12*P(6,23) - HK13*P(6,6) + HK14*P(1,6) + HK15*P(0,6) - HK16*P(2,6) + HK17*P(3,6) + HK7*P(4,6) - HK7*P(6,22); + const float HK25 = HK7*P(4,22); + const float HK26 = -HK12*P(4,23) + HK12*P(4,5) - HK13*P(4,6) + HK14*P(1,4) + HK15*P(0,4) - HK16*P(2,4) + HK17*P(3,4) - HK25 + HK7*P(4,4); + const float HK27 = HK21*HK7; + const float HK28 = -HK12*P(22,23) + HK12*P(5,22) - HK13*P(6,22) + HK14*P(1,22) + HK15*P(0,22) - HK16*P(2,22) + HK17*P(3,22) + HK25 - HK7*P(22,22); + const float HK29 = -HK12*P(1,23) + HK12*P(1,5) - HK13*P(1,6) + HK14*P(1,1) + HK15*P(0,1) - HK16*P(1,2) + HK17*P(1,3) - HK7*P(1,22) + HK7*P(1,4); + const float HK30 = -HK12*P(2,23) + HK12*P(2,5) - HK13*P(2,6) + HK14*P(1,2) + HK15*P(0,2) - HK16*P(2,2) + HK17*P(2,3) - HK7*P(2,22) + HK7*P(2,4); + const float HK31 = -HK12*P(3,23) + HK12*P(3,5) - HK13*P(3,6) + HK14*P(1,3) + HK15*P(0,3) - HK16*P(2,3) + HK17*P(3,3) - HK7*P(3,22) + HK7*P(3,4); + //const float HK32 = Kacc/(-HK13*HK21*HK24 + HK14*HK21*HK29 + HK15*HK18*HK21 - HK16*HK21*HK30 + HK17*HK21*HK31 - HK20*HK22 + HK22*HK23 + HK26*HK27 - HK27*HK28 + R_ACC); + + // calculate innovation variance and exit if badly conditioned + _drag_innov_var(0) = (-HK13*HK21*HK24 + HK14*HK21*HK29 + HK15*HK18*HK21 - HK16*HK21*HK30 + HK17*HK21*HK31 - HK20*HK22 + HK22*HK23 + HK26*HK27 - HK27*HK28 + R_ACC); + if (_drag_innov_var(0) < R_ACC) { + return; + } + const float HK32 = Kacc / _drag_innov_var(0); + + // Observation Jacobians + Hfusion.at<0>() = -HK2*HK3; + Hfusion.at<1>() = -HK3*HK4; + Hfusion.at<2>() = HK3*HK5; + Hfusion.at<3>() = -HK3*HK6; + Hfusion.at<4>() = -HK8; + Hfusion.at<5>() = -HK10; + Hfusion.at<6>() = HK11*HK3; + Hfusion.at<22>() = HK8; + Hfusion.at<23>() = HK10; + + // Kalman gains + // Don't allow modification of any states other than wind velocity at this stage of development - we only need a wind estimate. + // Kfusion(0) = -HK18*HK32; + // Kfusion(1) = -HK29*HK32; + // Kfusion(2) = -HK30*HK32; + // Kfusion(3) = -HK31*HK32; + // Kfusion(4) = -HK26*HK32; + // Kfusion(5) = -HK23*HK32; + // Kfusion(6) = -HK24*HK32; + // Kfusion(7) = -HK32*(HK12*P(5,7) - HK12*P(7,23) - HK13*P(6,7) + HK14*P(1,7) + HK15*P(0,7) - HK16*P(2,7) + HK17*P(3,7) + HK7*P(4,7) - HK7*P(7,22)); + // Kfusion(8) = -HK32*(HK12*P(5,8) - HK12*P(8,23) - HK13*P(6,8) + HK14*P(1,8) + HK15*P(0,8) - HK16*P(2,8) + HK17*P(3,8) + HK7*P(4,8) - HK7*P(8,22)); + // Kfusion(9) = -HK32*(HK12*P(5,9) - HK12*P(9,23) - HK13*P(6,9) + HK14*P(1,9) + HK15*P(0,9) - HK16*P(2,9) + HK17*P(3,9) + HK7*P(4,9) - HK7*P(9,22)); + // Kfusion(10) = -HK32*(-HK12*P(10,23) + HK12*P(5,10) - HK13*P(6,10) + HK14*P(1,10) + HK15*P(0,10) - HK16*P(2,10) + HK17*P(3,10) - HK7*P(10,22) + HK7*P(4,10)); + // Kfusion(11) = -HK32*(-HK12*P(11,23) + HK12*P(5,11) - HK13*P(6,11) + HK14*P(1,11) + HK15*P(0,11) - HK16*P(2,11) + HK17*P(3,11) - HK7*P(11,22) + HK7*P(4,11)); + // Kfusion(12) = -HK32*(-HK12*P(12,23) + HK12*P(5,12) - HK13*P(6,12) + HK14*P(1,12) + HK15*P(0,12) - HK16*P(2,12) + HK17*P(3,12) - HK7*P(12,22) + HK7*P(4,12)); + // Kfusion(13) = -HK32*(-HK12*P(13,23) + HK12*P(5,13) - HK13*P(6,13) + HK14*P(1,13) + HK15*P(0,13) - HK16*P(2,13) + HK17*P(3,13) - HK7*P(13,22) + HK7*P(4,13)); + // Kfusion(14) = -HK32*(-HK12*P(14,23) + HK12*P(5,14) - HK13*P(6,14) + HK14*P(1,14) + HK15*P(0,14) - HK16*P(2,14) + HK17*P(3,14) - HK7*P(14,22) + HK7*P(4,14)); + // Kfusion(15) = -HK32*(-HK12*P(15,23) + HK12*P(5,15) - HK13*P(6,15) + HK14*P(1,15) + HK15*P(0,15) - HK16*P(2,15) + HK17*P(3,15) - HK7*P(15,22) + HK7*P(4,15)); + // Kfusion(16) = -HK32*(-HK12*P(16,23) + HK12*P(5,16) - HK13*P(6,16) + HK14*P(1,16) + HK15*P(0,16) - HK16*P(2,16) + HK17*P(3,16) - HK7*P(16,22) + HK7*P(4,16)); + // Kfusion(17) = -HK32*(-HK12*P(17,23) + HK12*P(5,17) - HK13*P(6,17) + HK14*P(1,17) + HK15*P(0,17) - HK16*P(2,17) + HK17*P(3,17) - HK7*P(17,22) + HK7*P(4,17)); + // Kfusion(18) = -HK32*(-HK12*P(18,23) + HK12*P(5,18) - HK13*P(6,18) + HK14*P(1,18) + HK15*P(0,18) - HK16*P(2,18) + HK17*P(3,18) - HK7*P(18,22) + HK7*P(4,18)); + // Kfusion(19) = -HK32*(-HK12*P(19,23) + HK12*P(5,19) - HK13*P(6,19) + HK14*P(1,19) + HK15*P(0,19) - HK16*P(2,19) + HK17*P(3,19) - HK7*P(19,22) + HK7*P(4,19)); + // Kfusion(20) = -HK32*(-HK12*P(20,23) + HK12*P(5,20) - HK13*P(6,20) + HK14*P(1,20) + HK15*P(0,20) - HK16*P(2,20) + HK17*P(3,20) - HK7*P(20,22) + HK7*P(4,20)); + // Kfusion(21) = -HK32*(-HK12*P(21,23) + HK12*P(5,21) - HK13*P(6,21) + HK14*P(1,21) + HK15*P(0,21) - HK16*P(2,21) + HK17*P(3,21) - HK7*P(21,22) + HK7*P(4,21)); + Kfusion(22) = -HK28*HK32; + Kfusion(23) = -HK20*HK32; + + + } else if (axis_index == 1) { + float Kacc; // Derivative of specific force wrt airspeed + if (using_mcoef && using_bcoef_y) { + // Use a combination of bluff body and propeller momentum drag + const float bcoef_inv = 1.0f / _params.bcoef_y; + // The airspeed used for linearisation is calculated from the measured acceleration by solving the following quadratic + // mea_acc = 0.5 * rho * bcoef_inv * airspeed**2 + mcoef_corrrected * airspeed + const float airspeed = (_params.bcoef_y / rho) * (- mcoef_corrrected + sqrtf(sq(mcoef_corrrected) + 2.0f * rho * bcoef_inv * fabsf(mea_acc))); + Kacc = fmaxf(1e-1f, rho * bcoef_inv * airspeed + mcoef_corrrected); + pred_acc = 0.5f * bcoef_inv * rho * sq(rel_wind_body(1)) * drag_sign - rel_wind_body(1) * mcoef_corrrected; + } else if (using_mcoef) { + // Use propeller momentum drag only + Kacc = fmaxf(1e-1f, mcoef_corrrected); + pred_acc = - rel_wind_body(1) * mcoef_corrrected; + } else if (using_bcoef_y) { + // Use bluff body drag only + // The airspeed used for linearisation is calculated from the measured acceleration by solving the following quadratic + // mea_acc = (0.5 * rho / _params.bcoef_y) * airspeed**2 + const float airspeed = sqrtf((2.0f * _params.bcoef_y * fabsf(mea_acc)) / rho); + const float bcoef_inv = 1.0f / _params.bcoef_y; + Kacc = fmaxf(1e-1f, rho * bcoef_inv * airspeed); + pred_acc = 0.5f * bcoef_inv * rho * sq(rel_wind_body(1)) * drag_sign; + } else { + // nothing more to do + return; + } + + // intermediate variables + const float HK0 = ve - vwe; + const float HK1 = vn - vwn; + const float HK2 = HK0*q0 - HK1*q3 + q1*vd; + const float HK3 = 2*Kacc; + const float HK4 = -HK0*q1 + HK1*q2 + q0*vd; + const float HK5 = HK0*q2 + HK1*q1 + q3*vd; + const float HK6 = HK0*q3 + HK1*q0 - q2*vd; + const float HK7 = q0*q3 - q1*q2; + const float HK8 = HK3*HK7; + const float HK9 = ecl::powf(q0, 2) - ecl::powf(q1, 2) + ecl::powf(q2, 2) - ecl::powf(q3, 2); + const float HK10 = HK9*Kacc; + const float HK11 = q0*q1 + q2*q3; + const float HK12 = 2*HK11; + const float HK13 = 2*HK7; + const float HK14 = 2*HK5; + const float HK15 = 2*HK2; + const float HK16 = 2*HK4; + const float HK17 = 2*HK6; + const float HK18 = HK12*P(0,6) + HK13*P(0,22) - HK13*P(0,4) + HK14*P(0,2) + HK15*P(0,0) + HK16*P(0,1) - HK17*P(0,3) - HK9*P(0,23) + HK9*P(0,5); + const float HK19 = ecl::powf(Kacc, 2); + const float HK20 = HK12*P(6,6) - HK13*P(4,6) + HK13*P(6,22) + HK14*P(2,6) + HK15*P(0,6) + HK16*P(1,6) - HK17*P(3,6) + HK9*P(5,6) - HK9*P(6,23); + const float HK21 = HK13*P(4,22); + const float HK22 = HK12*P(6,22) + HK13*P(22,22) + HK14*P(2,22) + HK15*P(0,22) + HK16*P(1,22) - HK17*P(3,22) - HK21 - HK9*P(22,23) + HK9*P(5,22); + const float HK23 = HK13*HK19; + const float HK24 = HK12*P(4,6) - HK13*P(4,4) + HK14*P(2,4) + HK15*P(0,4) + HK16*P(1,4) - HK17*P(3,4) + HK21 - HK9*P(4,23) + HK9*P(4,5); + const float HK25 = HK9*P(5,23); + const float HK26 = HK12*P(5,6) - HK13*P(4,5) + HK13*P(5,22) + HK14*P(2,5) + HK15*P(0,5) + HK16*P(1,5) - HK17*P(3,5) - HK25 + HK9*P(5,5); + const float HK27 = HK19*HK9; + const float HK28 = HK12*P(6,23) + HK13*P(22,23) - HK13*P(4,23) + HK14*P(2,23) + HK15*P(0,23) + HK16*P(1,23) - HK17*P(3,23) + HK25 - HK9*P(23,23); + const float HK29 = HK12*P(2,6) + HK13*P(2,22) - HK13*P(2,4) + HK14*P(2,2) + HK15*P(0,2) + HK16*P(1,2) - HK17*P(2,3) - HK9*P(2,23) + HK9*P(2,5); + const float HK30 = HK12*P(1,6) + HK13*P(1,22) - HK13*P(1,4) + HK14*P(1,2) + HK15*P(0,1) + HK16*P(1,1) - HK17*P(1,3) - HK9*P(1,23) + HK9*P(1,5); + const float HK31 = HK12*P(3,6) + HK13*P(3,22) - HK13*P(3,4) + HK14*P(2,3) + HK15*P(0,3) + HK16*P(1,3) - HK17*P(3,3) - HK9*P(3,23) + HK9*P(3,5); + // const float HK32 = Kacc/(HK12*HK19*HK20 + HK14*HK19*HK29 + HK15*HK18*HK19 + HK16*HK19*HK30 - HK17*HK19*HK31 + HK22*HK23 - HK23*HK24 + HK26*HK27 - HK27*HK28 + R_ACC); + + _drag_innov_var(1) = (HK12*HK19*HK20 + HK14*HK19*HK29 + HK15*HK18*HK19 + HK16*HK19*HK30 - HK17*HK19*HK31 + HK22*HK23 - HK23*HK24 + HK26*HK27 - HK27*HK28 + R_ACC); + if (_drag_innov_var(1) < R_ACC) { + // calculation is badly conditioned + return; + } + const float HK32 = Kacc / _drag_innov_var(1); + + // Observation Jacobians + Hfusion.at<0>() = -HK2*HK3; + Hfusion.at<1>() = -HK3*HK4; + Hfusion.at<2>() = -HK3*HK5; + Hfusion.at<3>() = HK3*HK6; + Hfusion.at<4>() = HK8; + Hfusion.at<5>() = -HK10; + Hfusion.at<6>() = -HK11*HK3; + Hfusion.at<22>() = -HK8; + Hfusion.at<23>() = HK10; + + // Kalman gains + // Don't allow modification of any states other than wind velocity at this stage of development - we only need a wind estimate. + // Kfusion(0) = -HK18*HK32; + // Kfusion(1) = -HK30*HK32; + // Kfusion(2) = -HK29*HK32; + // Kfusion(3) = -HK31*HK32; + // Kfusion(4) = -HK24*HK32; + // Kfusion(5) = -HK26*HK32; + // Kfusion(6) = -HK20*HK32; + // Kfusion(7) = -HK32*(HK12*P(6,7) - HK13*P(4,7) + HK13*P(7,22) + HK14*P(2,7) + HK15*P(0,7) + HK16*P(1,7) - HK17*P(3,7) + HK9*P(5,7) - HK9*P(7,23)); + // Kfusion(8) = -HK32*(HK12*P(6,8) - HK13*P(4,8) + HK13*P(8,22) + HK14*P(2,8) + HK15*P(0,8) + HK16*P(1,8) - HK17*P(3,8) + HK9*P(5,8) - HK9*P(8,23)); + // Kfusion(9) = -HK32*(HK12*P(6,9) - HK13*P(4,9) + HK13*P(9,22) + HK14*P(2,9) + HK15*P(0,9) + HK16*P(1,9) - HK17*P(3,9) + HK9*P(5,9) - HK9*P(9,23)); + // Kfusion(10) = -HK32*(HK12*P(6,10) + HK13*P(10,22) - HK13*P(4,10) + HK14*P(2,10) + HK15*P(0,10) + HK16*P(1,10) - HK17*P(3,10) - HK9*P(10,23) + HK9*P(5,10)); + // Kfusion(11) = -HK32*(HK12*P(6,11) + HK13*P(11,22) - HK13*P(4,11) + HK14*P(2,11) + HK15*P(0,11) + HK16*P(1,11) - HK17*P(3,11) - HK9*P(11,23) + HK9*P(5,11)); + // Kfusion(12) = -HK32*(HK12*P(6,12) + HK13*P(12,22) - HK13*P(4,12) + HK14*P(2,12) + HK15*P(0,12) + HK16*P(1,12) - HK17*P(3,12) - HK9*P(12,23) + HK9*P(5,12)); + // Kfusion(13) = -HK32*(HK12*P(6,13) + HK13*P(13,22) - HK13*P(4,13) + HK14*P(2,13) + HK15*P(0,13) + HK16*P(1,13) - HK17*P(3,13) - HK9*P(13,23) + HK9*P(5,13)); + // Kfusion(14) = -HK32*(HK12*P(6,14) + HK13*P(14,22) - HK13*P(4,14) + HK14*P(2,14) + HK15*P(0,14) + HK16*P(1,14) - HK17*P(3,14) - HK9*P(14,23) + HK9*P(5,14)); + // Kfusion(15) = -HK32*(HK12*P(6,15) + HK13*P(15,22) - HK13*P(4,15) + HK14*P(2,15) + HK15*P(0,15) + HK16*P(1,15) - HK17*P(3,15) - HK9*P(15,23) + HK9*P(5,15)); + // Kfusion(16) = -HK32*(HK12*P(6,16) + HK13*P(16,22) - HK13*P(4,16) + HK14*P(2,16) + HK15*P(0,16) + HK16*P(1,16) - HK17*P(3,16) - HK9*P(16,23) + HK9*P(5,16)); + // Kfusion(17) = -HK32*(HK12*P(6,17) + HK13*P(17,22) - HK13*P(4,17) + HK14*P(2,17) + HK15*P(0,17) + HK16*P(1,17) - HK17*P(3,17) - HK9*P(17,23) + HK9*P(5,17)); + // Kfusion(18) = -HK32*(HK12*P(6,18) + HK13*P(18,22) - HK13*P(4,18) + HK14*P(2,18) + HK15*P(0,18) + HK16*P(1,18) - HK17*P(3,18) - HK9*P(18,23) + HK9*P(5,18)); + // Kfusion(19) = -HK32*(HK12*P(6,19) + HK13*P(19,22) - HK13*P(4,19) + HK14*P(2,19) + HK15*P(0,19) + HK16*P(1,19) - HK17*P(3,19) - HK9*P(19,23) + HK9*P(5,19)); + // Kfusion(20) = -HK32*(HK12*P(6,20) + HK13*P(20,22) - HK13*P(4,20) + HK14*P(2,20) + HK15*P(0,20) + HK16*P(1,20) - HK17*P(3,20) - HK9*P(20,23) + HK9*P(5,20)); + // Kfusion(21) = -HK32*(HK12*P(6,21) + HK13*P(21,22) - HK13*P(4,21) + HK14*P(2,21) + HK15*P(0,21) + HK16*P(1,21) - HK17*P(3,21) - HK9*P(21,23) + HK9*P(5,21)); + Kfusion(22) = -HK22*HK32; + Kfusion(23) = -HK28*HK32; + + } + + // Apply an innovation consistency check with a 5 Sigma threshold + _drag_innov(axis_index) = pred_acc - mea_acc; + _drag_test_ratio(axis_index) = sq(_drag_innov(axis_index)) / (sq(5.0f) * _drag_innov_var(axis_index)); + + // if the innovation consistency check fails then don't fuse the sample + if (_drag_test_ratio(axis_index) <= 1.0f) { + measurementUpdate(Kfusion, Hfusion, _drag_innov(axis_index)); + } + } +} diff --git a/src/lib/ecl/EKF/ekf.cpp b/src/lib/ecl/EKF/ekf.cpp new file mode 100644 index 0000000000..72b705da7e --- /dev/null +++ b/src/lib/ecl/EKF/ekf.cpp @@ -0,0 +1,540 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file ekf.cpp + * Core functions for ekf attitude and position estimator. + * + * @author Roman Bast + * @author Paul Riseborough + */ + +#include "ekf.h" + +#include +#include + +bool Ekf::init(uint64_t timestamp) +{ + bool ret = initialise_interface(timestamp); + reset(); + return ret; +} + +void Ekf::reset() +{ + _state.vel.setZero(); + _state.pos.setZero(); + _state.delta_ang_bias.setZero(); + _state.delta_vel_bias.setZero(); + _state.mag_I.setZero(); + _state.mag_B.setZero(); + _state.wind_vel.setZero(); + _state.quat_nominal.setIdentity(); + + // TODO: who resets the output buffer content? + _output_new.vel.setZero(); + _output_new.pos.setZero(); + _output_new.quat_nominal.setIdentity(); + + _delta_angle_corr.setZero(); + + _imu_updated = false; + _NED_origin_initialised = false; + _gps_speed_valid = false; + + _filter_initialised = false; + _terrain_initialised = false; + _range_sensor.setPitchOffset(_params.rng_sens_pitch); + _range_sensor.setCosMaxTilt(_params.range_cos_max_tilt); + _range_sensor.setQualityHysteresis(_params.range_valid_quality_s); + + _control_status.value = 0; + _control_status_prev.value = 0; + + _dt_ekf_avg = FILTER_UPDATE_PERIOD_S; + + _ang_rate_delayed_raw.zero(); + + _fault_status.value = 0; + _innov_check_fail_status.value = 0; + + _accel_magnitude_filt = 0.0f; + _ang_rate_magnitude_filt = 0.0f; + _prev_dvel_bias_var.zero(); + + _gps_alt_ref = 0.0f; + + resetGpsDriftCheckFilters(); +} + +bool Ekf::update() +{ + bool updated = false; + + if (!_filter_initialised) { + _filter_initialised = initialiseFilter(); + + if (!_filter_initialised) { + return false; + } + } + + // Only run the filter if IMU data in the buffer has been updated + if (_imu_updated) { + // perform state and covariance prediction for the main filter + predictState(); + predictCovariance(); + + // control fusion of observation data + controlFusionModes(); + + // run a separate filter for terrain estimation + runTerrainEstimator(); + + updated = true; + + // run EKF-GSF yaw estimator + runYawEKFGSF(); + } + + // the output observer always runs + // Use full rate IMU data at the current time horizon + calculateOutputStates(_newest_high_rate_imu_sample); + + return updated; +} + +bool Ekf::initialiseFilter() +{ + // Filter accel for tilt initialization + const imuSample &imu_init = _imu_buffer.get_newest(); + + // protect against zero data + if (imu_init.delta_vel_dt < 1e-4f || imu_init.delta_ang_dt < 1e-4f) { + return false; + } + + if (_is_first_imu_sample) { + _accel_lpf.reset(imu_init.delta_vel / imu_init.delta_vel_dt); + _gyro_lpf.reset(imu_init.delta_ang / imu_init.delta_ang_dt); + _is_first_imu_sample = false; + + } else { + _accel_lpf.update(imu_init.delta_vel / imu_init.delta_vel_dt); + _gyro_lpf.update(imu_init.delta_ang / imu_init.delta_ang_dt); + } + + // Sum the magnetometer measurements + if (_mag_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_mag_sample_delayed)) { + if (_mag_sample_delayed.time_us != 0) { + if (_mag_counter == 0) { + _mag_lpf.reset(_mag_sample_delayed.mag); + + } else { + _mag_lpf.update(_mag_sample_delayed.mag); + } + + _mag_counter++; + } + } + + // accumulate enough height measurements to be confident in the quality of the data + if (_baro_buffer.pop_first_older_than(_imu_sample_delayed.time_us, &_baro_sample_delayed)) { + if (_baro_sample_delayed.time_us != 0) { + if (_baro_counter == 0) { + _baro_hgt_offset = _baro_sample_delayed.hgt; + + } else { + _baro_hgt_offset = 0.9f * _baro_hgt_offset + 0.1f * _baro_sample_delayed.hgt; + } + + _baro_counter++; + } + } + + if (_params.mag_fusion_type <= MAG_FUSE_TYPE_3D) { + if (_mag_counter < _obs_buffer_length) { + // not enough mag samples accumulated + return false; + } + } + + if (_baro_counter < _obs_buffer_length) { + // not enough baro samples accumulated + return false; + } + + // we use baro height initially and switch to GPS/range/EV finder later when it passes checks. + setControlBaroHeight(); + + if (!initialiseTilt()) { + return false; + } + + // calculate the initial magnetic field and yaw alignment + // but do not mark the yaw alignement complete as it needs to be + // reset once the leveling phase is done + resetMagHeading(_mag_lpf.getState(), false, false); + + // initialise the state covariance matrix now we have starting values for all the states + initialiseCovariance(); + + // update the yaw angle variance using the variance of the measurement + if (_params.mag_fusion_type <= MAG_FUSE_TYPE_3D) { + // using magnetic heading tuning parameter + increaseQuatYawErrVariance(sq(fmaxf(_params.mag_heading_noise, 1.0e-2f))); + } + + // try to initialise the terrain estimator + _terrain_initialised = initHagl(); + + // reset the essential fusion timeout counters + _time_last_hgt_fuse = _time_last_imu; + _time_last_hor_pos_fuse = _time_last_imu; + _time_last_delpos_fuse = _time_last_imu; + _time_last_hor_vel_fuse = _time_last_imu; + _time_last_hagl_fuse = _time_last_imu; + _time_last_flow_terrain_fuse = _time_last_imu; + _time_last_of_fuse = _time_last_imu; + + // reset the output predictor state history to match the EKF initial values + alignOutputFilter(); + + return true; +} + +bool Ekf::initialiseTilt() +{ + const float accel_norm = _accel_lpf.getState().norm(); + const float gyro_norm = _gyro_lpf.getState().norm(); + + if (accel_norm < 0.8f * CONSTANTS_ONE_G || + accel_norm > 1.2f * CONSTANTS_ONE_G || + gyro_norm > math::radians(15.0f)) { + return false; + } + + // get initial roll and pitch estimate from delta velocity vector, assuming vehicle is static + const Vector3f gravity_in_body = _accel_lpf.getState().normalized(); + const float pitch = asinf(gravity_in_body(0)); + const float roll = atan2f(-gravity_in_body(1), -gravity_in_body(2)); + + _state.quat_nominal = Quatf{Eulerf{roll, pitch, 0.0f}}; + _R_to_earth = Dcmf(_state.quat_nominal); + + return true; +} + +void Ekf::predictState() +{ + // apply imu bias corrections + Vector3f corrected_delta_ang = _imu_sample_delayed.delta_ang - _state.delta_ang_bias; + + // subtract component of angular rate due to earth rotation + corrected_delta_ang -= _R_to_earth.transpose() * _earth_rate_NED * _imu_sample_delayed.delta_ang_dt; + + const Quatf dq(AxisAnglef{corrected_delta_ang}); + + // rotate the previous quaternion by the delta quaternion using a quaternion multiplication + _state.quat_nominal = (_state.quat_nominal * dq).normalized(); + + _R_to_earth = Dcmf(_state.quat_nominal); + + // Calculate an earth frame delta velocity + const Vector3f corrected_delta_vel = _imu_sample_delayed.delta_vel - _state.delta_vel_bias; + const Vector3f corrected_delta_vel_ef = _R_to_earth * corrected_delta_vel; + + // calculate a filtered horizontal acceleration with a 1 sec time constant + // this are used for manoeuvre detection elsewhere + const float alpha = 1.0f - _imu_sample_delayed.delta_vel_dt; + _accel_lpf_NE = _accel_lpf_NE * alpha + corrected_delta_vel_ef.xy(); + + // save the previous value of velocity so we can use trapzoidal integration + const Vector3f vel_last = _state.vel; + + // calculate the increment in velocity using the current orientation + _state.vel += corrected_delta_vel_ef; + + // compensate for acceleration due to gravity + _state.vel(2) += CONSTANTS_ONE_G * _imu_sample_delayed.delta_vel_dt; + + // predict position states via trapezoidal integration of velocity + _state.pos += (vel_last + _state.vel) * _imu_sample_delayed.delta_vel_dt * 0.5f; + + constrainStates(); + + // calculate an average filter update time + float input = 0.5f * (_imu_sample_delayed.delta_vel_dt + _imu_sample_delayed.delta_ang_dt); + + // filter and limit input between -50% and +100% of nominal value + input = math::constrain(input, 0.5f * FILTER_UPDATE_PERIOD_S, 2.0f * FILTER_UPDATE_PERIOD_S); + _dt_ekf_avg = 0.99f * _dt_ekf_avg + 0.01f * input; + + // some calculations elsewhere in code require a raw angular rate vector so calculate here to avoid duplication + // protect angainst possible small timesteps resulting from timing slip on previous frame that can drive spikes into the rate + // due to insufficient averaging + if (_imu_sample_delayed.delta_ang_dt > 0.25f * FILTER_UPDATE_PERIOD_S) { + _ang_rate_delayed_raw = _imu_sample_delayed.delta_ang / _imu_sample_delayed.delta_ang_dt; + } + +} + +/* + * Implement a strapdown INS algorithm using the latest IMU data at the current time horizon. + * Buffer the INS states and calculate the difference with the EKF states at the delayed fusion time horizon. + * Calculate delta angle, delta velocity and velocity corrections from the differences and apply them at the + * current time horizon so that the INS states track the EKF states at the delayed fusion time horizon. + * The inspiration for using a complementary filter to correct for time delays in the EKF + * is based on the work by A Khosravian: + * “Recursive Attitude Estimation in the Presence of Multi-rate and Multi-delay Vector Measurements” + * A Khosravian, J Trumpf, R Mahony, T Hamel, Australian National University +*/ +void Ekf::calculateOutputStates(const imuSample &imu) +{ + // Use full rate IMU data at the current time horizon + + // correct delta angles for bias offsets + const float dt_scale_correction = _dt_imu_avg / _dt_ekf_avg; + + // Apply corrections to the delta angle required to track the quaternion states at the EKF fusion time horizon + const Vector3f delta_angle(imu.delta_ang - _state.delta_ang_bias * dt_scale_correction + _delta_angle_corr); + + // calculate a yaw change about the earth frame vertical + const float spin_del_ang_D = delta_angle.dot(Vector3f(_R_to_earth_now.row(2))); + _yaw_delta_ef += spin_del_ang_D; + + // Calculate filtered yaw rate to be used by the magnetometer fusion type selection logic + // Note fixed coefficients are used to save operations. The exact time constant is not important. + _yaw_rate_lpf_ef = 0.95f * _yaw_rate_lpf_ef + 0.05f * spin_del_ang_D / imu.delta_ang_dt; + + const Quatf dq(AxisAnglef{delta_angle}); + + // rotate the previous INS quaternion by the delta quaternions + _output_new.time_us = imu.time_us; + _output_new.quat_nominal = _output_new.quat_nominal * dq; + + // the quaternions must always be normalised after modification + _output_new.quat_nominal.normalize(); + + // calculate the rotation matrix from body to earth frame + _R_to_earth_now = Dcmf(_output_new.quat_nominal); + + // correct delta velocity for bias offsets + const Vector3f delta_vel_body{imu.delta_vel - _state.delta_vel_bias * dt_scale_correction}; + + // rotate the delta velocity to earth frame + Vector3f delta_vel_earth{_R_to_earth_now * delta_vel_body}; + + // correct for measured acceleration due to gravity + delta_vel_earth(2) += CONSTANTS_ONE_G * imu.delta_vel_dt; + + // calculate the earth frame velocity derivatives + if (imu.delta_vel_dt > 1e-4f) { + _vel_deriv = delta_vel_earth * (1.0f / imu.delta_vel_dt); + } + + // save the previous velocity so we can use trapezoidal integration + const Vector3f vel_last(_output_new.vel); + + // increment the INS velocity states by the measurement plus corrections + // do the same for vertical state used by alternative correction algorithm + _output_new.vel += delta_vel_earth; + _output_vert_new.vert_vel += delta_vel_earth(2); + + // use trapezoidal integration to calculate the INS position states + // do the same for vertical state used by alternative correction algorithm + const Vector3f delta_pos_NED = (_output_new.vel + vel_last) * (imu.delta_vel_dt * 0.5f); + _output_new.pos += delta_pos_NED; + _output_vert_new.vert_vel_integ += delta_pos_NED(2); + + // accumulate the time for each update + _output_vert_new.dt += imu.delta_vel_dt; + + // correct velocity for IMU offset + if (imu.delta_ang_dt > 1e-4f) { + // calculate the average angular rate across the last IMU update + const Vector3f ang_rate = imu.delta_ang * (1.0f / imu.delta_ang_dt); + + // calculate the velocity of the IMU relative to the body origin + const Vector3f vel_imu_rel_body = ang_rate % _params.imu_pos_body; + + // rotate the relative velocity into earth frame + _vel_imu_rel_body_ned = _R_to_earth_now * vel_imu_rel_body; + } + + // store the INS states in a ring buffer with the same length and time coordinates as the IMU data buffer + if (_imu_updated) { + _output_buffer.push(_output_new); + _output_vert_buffer.push(_output_vert_new); + + // get the oldest INS state data from the ring buffer + // this data will be at the EKF fusion time horizon + // TODO: there is no guarantee that data is at delayed fusion horizon + // Shouldnt we use pop_first_older_than? + const outputSample &output_delayed = _output_buffer.get_oldest(); + const outputVert &output_vert_delayed = _output_vert_buffer.get_oldest(); + + // calculate the quaternion delta between the INS and EKF quaternions at the EKF fusion time horizon + const Quatf q_error((_state.quat_nominal.inversed() * output_delayed.quat_nominal).normalized()); + + // convert the quaternion delta to a delta angle + const float scalar = (q_error(0) >= 0.0f) ? -2.f : 2.f; + + const Vector3f delta_ang_error{scalar * q_error(1), scalar * q_error(2), scalar * q_error(3)}; + + // calculate a gain that provides tight tracking of the estimator attitude states and + // adjust for changes in time delay to maintain consistent damping ratio of ~0.7 + const float time_delay = fmaxf((imu.time_us - _imu_sample_delayed.time_us) * 1e-6f, _dt_imu_avg); + const float att_gain = 0.5f * _dt_imu_avg / time_delay; + + // calculate a corrrection to the delta angle + // that will cause the INS to track the EKF quaternions + _delta_angle_corr = delta_ang_error * att_gain; + _output_tracking_error(0) = delta_ang_error.norm(); + + /* + * Loop through the output filter state history and apply the corrections to the velocity and position states. + * This method is too expensive to use for the attitude states due to the quaternion operations required + * but because it eliminates the time delay in the 'correction loop' it allows higher tracking gains + * to be used and reduces tracking error relative to EKF states. + */ + + // Complementary filter gains + const float vel_gain = _dt_ekf_avg / math::constrain(_params.vel_Tau, _dt_ekf_avg, 10.0f); + const float pos_gain = _dt_ekf_avg / math::constrain(_params.pos_Tau, _dt_ekf_avg, 10.0f); + + // calculate down velocity and position tracking errors + const float vert_vel_err = (_state.vel(2) - output_vert_delayed.vert_vel); + const float vert_vel_integ_err = (_state.pos(2) - output_vert_delayed.vert_vel_integ); + + // calculate a velocity correction that will be applied to the output state history + // using a PD feedback tuned to a 5% overshoot + const float vert_vel_correction = vert_vel_integ_err * pos_gain + vert_vel_err * vel_gain * 1.1f; + + applyCorrectionToVerticalOutputBuffer(vert_vel_correction); + + // calculate velocity and position tracking errors + const Vector3f vel_err(_state.vel - output_delayed.vel); + const Vector3f pos_err(_state.pos - output_delayed.pos); + + _output_tracking_error(1) = vel_err.norm(); + _output_tracking_error(2) = pos_err.norm(); + + // calculate a velocity correction that will be applied to the output state history + _vel_err_integ += vel_err; + const Vector3f vel_correction = vel_err * vel_gain + _vel_err_integ * sq(vel_gain) * 0.1f; + + // calculate a position correction that will be applied to the output state history + _pos_err_integ += pos_err; + const Vector3f pos_correction = pos_err * pos_gain + _pos_err_integ * sq(pos_gain) * 0.1f; + + applyCorrectionToOutputBuffer(vel_correction, pos_correction); + } +} + +/* +* Calculate a correction to be applied to vert_vel that casues vert_vel_integ to track the EKF +* down position state at the fusion time horizon using an alternative algorithm to what +* is used for the vel and pos state tracking. The algorithm applies a correction to the vert_vel +* state history and propagates vert_vel_integ forward in time using the corrected vert_vel history. +* This provides an alternative vertical velocity output that is closer to the first derivative +* of the position but does degrade tracking relative to the EKF state. +*/ +void Ekf::applyCorrectionToVerticalOutputBuffer(float vert_vel_correction) +{ + // loop through the vertical output filter state history starting at the oldest and apply the corrections to the + // vert_vel states and propagate vert_vel_integ forward using the corrected vert_vel + uint8_t index = _output_vert_buffer.get_oldest_index(); + + const uint8_t size = _output_vert_buffer.get_length(); + + for (uint8_t counter = 0; counter < (size - 1); counter++) { + const uint8_t index_next = (index + 1) % size; + outputVert ¤t_state = _output_vert_buffer[index]; + outputVert &next_state = _output_vert_buffer[index_next]; + + // correct the velocity + if (counter == 0) { + current_state.vert_vel += vert_vel_correction; + } + + next_state.vert_vel += vert_vel_correction; + + // position is propagated forward using the corrected velocity and a trapezoidal integrator + next_state.vert_vel_integ = current_state.vert_vel_integ + (current_state.vert_vel + next_state.vert_vel) * 0.5f * next_state.dt; + + // advance the index + index = (index + 1) % size; + } + + // update output state to corrected values + _output_vert_new = _output_vert_buffer.get_newest(); + + // reset time delta to zero for the next accumulation of full rate IMU data + _output_vert_new.dt = 0.0f; +} + +/* +* Calculate corrections to be applied to vel and pos output state history. +* The vel and pos state history are corrected individually so they track the EKF states at +* the fusion time horizon. This option provides the most accurate tracking of EKF states. +*/ +void Ekf::applyCorrectionToOutputBuffer(const Vector3f &vel_correction, const Vector3f &pos_correction) +{ + // loop through the output filter state history and apply the corrections to the velocity and position states + for (uint8_t index = 0; index < _output_buffer.get_length(); index++) { + // a constant velocity correction is applied + _output_buffer[index].vel += vel_correction; + + // a constant position correction is applied + _output_buffer[index].pos += pos_correction; + } + + // update output state to corrected values + _output_new = _output_buffer.get_newest(); +} + +/* + * Predict the previous quaternion output state forward using the latest IMU delta angle data. +*/ +Quatf Ekf::calculate_quaternion() const +{ + // Correct delta angle data for bias errors using bias state estimates from the EKF and also apply + // corrections required to track the EKF quaternion states + const Vector3f delta_angle{_newest_high_rate_imu_sample.delta_ang - _state.delta_ang_bias * (_dt_imu_avg / _dt_ekf_avg) + _delta_angle_corr}; + + // increment the quaternions using the corrected delta angle vector + // the quaternions must always be normalised after modification + return Quatf{_output_new.quat_nominal * AxisAnglef{delta_angle}}.unit(); +} diff --git a/src/lib/ecl/EKF/ekf.h b/src/lib/ecl/EKF/ekf.h new file mode 100644 index 0000000000..1f08c143d2 --- /dev/null +++ b/src/lib/ecl/EKF/ekf.h @@ -0,0 +1,995 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file ekf.h + * Class for core functions for ekf attitude and position estimator. + * + * @author Roman Bast + * @author Paul Riseborough + * + */ + +#pragma once + +#include "estimator_interface.h" + +#include "EKFGSF_yaw.h" + +class Ekf final : public EstimatorInterface +{ +public: + static constexpr uint8_t _k_num_states{24}; ///< number of EKF states + typedef matrix::Vector Vector24f; + typedef matrix::SquareMatrix SquareMatrix24f; + typedef matrix::SquareMatrix Matrix2f; + typedef matrix::Vector Vector4f; + template + using SparseVector24f = matrix::SparseVectorf<24, Idxs...>; + + Ekf() = default; + virtual ~Ekf() = default; + + // initialise variables to sane values (also interface class) + bool init(uint64_t timestamp) override; + + // should be called every time new data is pushed into the filter + bool update(); + + void getGpsVelPosInnov(float hvel[2], float &vvel, float hpos[2], float &vpos) const; + void getGpsVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float &vpos) const; + void getGpsVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &vpos) const; + + void getEvVelPosInnov(float hvel[2], float &vvel, float hpos[2], float &vpos) const; + void getEvVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float &vpos) const; + void getEvVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &vpos) const; + + void getBaroHgtInnov(float &baro_hgt_innov) const { baro_hgt_innov = _baro_hgt_innov(2); } + void getBaroHgtInnovVar(float &baro_hgt_innov_var) const { baro_hgt_innov_var = _baro_hgt_innov_var(2); } + void getBaroHgtInnovRatio(float &baro_hgt_innov_ratio) const { baro_hgt_innov_ratio = _baro_hgt_test_ratio(1); } + + void getRngHgtInnov(float &rng_hgt_innov) const { rng_hgt_innov = _rng_hgt_innov(2); } + void getRngHgtInnovVar(float &rng_hgt_innov_var) const { rng_hgt_innov_var = _rng_hgt_innov_var(2); } + void getRngHgtInnovRatio(float &rng_hgt_innov_ratio) const { rng_hgt_innov_ratio = _rng_hgt_test_ratio(1); } + + void getAuxVelInnov(float aux_vel_innov[2]) const; + void getAuxVelInnovVar(float aux_vel_innov[2]) const; + void getAuxVelInnovRatio(float &aux_vel_innov_ratio) const { aux_vel_innov_ratio = _aux_vel_test_ratio(0); } + + void getFlowInnov(float flow_innov[2]) const { _flow_innov.copyTo(flow_innov); } + void getFlowInnovVar(float flow_innov_var[2]) const { _flow_innov_var.copyTo(flow_innov_var); } + void getFlowInnovRatio(float &flow_innov_ratio) const { flow_innov_ratio = _optflow_test_ratio; } + const Vector2f &getFlowVelBody() const { return _flow_vel_body; } + const Vector2f &getFlowVelNE() const { return _flow_vel_ne; } + const Vector2f &getFlowCompensated() const { return _flow_compensated_XY_rad; } + const Vector2f &getFlowUncompensated() const { return _flow_sample_delayed.flow_xy_rad; } + const Vector3f &getFlowGyro() const { return _flow_sample_delayed.gyro_xyz; } + + void getHeadingInnov(float &heading_innov) const { heading_innov = _heading_innov; } + void getHeadingInnovVar(float &heading_innov_var) const { heading_innov_var = _heading_innov_var; } + + void getHeadingInnovRatio(float &heading_innov_ratio) const { heading_innov_ratio = _yaw_test_ratio; } + void getMagInnov(float mag_innov[3]) const { _mag_innov.copyTo(mag_innov); } + void getMagInnovVar(float mag_innov_var[3]) const { _mag_innov_var.copyTo(mag_innov_var); } + void getMagInnovRatio(float &mag_innov_ratio) const { mag_innov_ratio = _mag_test_ratio.max(); } + + void getDragInnov(float drag_innov[2]) const { _drag_innov.copyTo(drag_innov); } + void getDragInnovVar(float drag_innov_var[2]) const { _drag_innov_var.copyTo(drag_innov_var); } + void getDragInnovRatio(float drag_innov_ratio[2]) const { _drag_test_ratio.copyTo(drag_innov_ratio); } + + void getAirspeedInnov(float &airspeed_innov) const { airspeed_innov = _airspeed_innov; } + void getAirspeedInnovVar(float &airspeed_innov_var) const { airspeed_innov_var = _airspeed_innov_var; } + void getAirspeedInnovRatio(float &airspeed_innov_ratio) const { airspeed_innov_ratio = _tas_test_ratio; } + + void getBetaInnov(float &beta_innov) const { beta_innov = _beta_innov; } + void getBetaInnovVar(float &beta_innov_var) const { beta_innov_var = _beta_innov_var; } + void getBetaInnovRatio(float &beta_innov_ratio) const { beta_innov_ratio = _beta_test_ratio; } + + void getHaglInnov(float &hagl_innov) const { hagl_innov = _hagl_innov; } + void getHaglInnovVar(float &hagl_innov_var) const { hagl_innov_var = _hagl_innov_var; } + void getHaglInnovRatio(float &hagl_innov_ratio) const { hagl_innov_ratio = _hagl_test_ratio; } + + // get the state vector at the delayed time horizon + matrix::Vector getStateAtFusionHorizonAsVector() const; + + // get the wind velocity in m/s + const Vector2f &getWindVelocity() const { return _state.wind_vel; }; + + // get the wind velocity var + Vector2f getWindVelocityVariance() const { return P.slice<2, 2>(22, 22).diag(); } + + // get the true airspeed in m/s + void get_true_airspeed(float *tas) const; + + // get the full covariance matrix + const matrix::SquareMatrix &covariances() const { return P; } + + // get the diagonal elements of the covariance matrix + matrix::Vector covariances_diagonal() const { return P.diag(); } + + // get the orientation (quaterion) covariances + matrix::SquareMatrix orientation_covariances() const { return P.slice<4, 4>(0, 0); } + + // get the linear velocity covariances + matrix::SquareMatrix velocity_covariances() const { return P.slice<3, 3>(4, 4); } + + // get the position covariances + matrix::SquareMatrix position_covariances() const { return P.slice<3, 3>(7, 7); } + + // ask estimator for sensor data collection decision and do any preprocessing if required, returns true if not defined + bool collect_gps(const gps_message &gps) override; + + // get the ekf WGS-84 origin position and height and the system time it was last set + // return true if the origin is valid + bool getEkfGlobalOrigin(uint64_t &origin_time, double &latitude, double &longitude, float &origin_alt) const; + bool setEkfGlobalOrigin(const double latitude, const double longitude, const float altitude); + + float getEkfGlobalOriginAltitude() const { return _gps_alt_ref; } + bool setEkfGlobalOriginAltitude(const float altitude); + + + // get the 1-sigma horizontal and vertical position uncertainty of the ekf WGS-84 position + void get_ekf_gpos_accuracy(float *ekf_eph, float *ekf_epv) const; + + // get the 1-sigma horizontal and vertical position uncertainty of the ekf local position + void get_ekf_lpos_accuracy(float *ekf_eph, float *ekf_epv) const; + + // get the 1-sigma horizontal and vertical velocity uncertainty + void get_ekf_vel_accuracy(float *ekf_evh, float *ekf_evv) const; + + // get the vehicle control limits required by the estimator to keep within sensor limitations + void get_ekf_ctrl_limits(float *vxy_max, float *vz_max, float *hagl_min, float *hagl_max) const; + + // Reset all IMU bias states and covariances to initial alignment values. + void resetImuBias(); + void resetGyroBias(); + void resetAccelBias(); + + // Reset all magnetometer bias states and covariances to initial alignment values. + void resetMagBias(); + + Vector3f getVelocityVariance() const { return P.slice<3, 3>(4, 4).diag(); }; + + Vector3f getPositionVariance() const { return P.slice<3, 3>(7, 7).diag(); } + + // return an array containing the output predictor angular, velocity and position tracking + // error magnitudes (rad), (m/sec), (m) + const Vector3f &getOutputTrackingError() const { return _output_tracking_error; } + + /* + First argument returns GPS drift metrics in the following array locations + 0 : Horizontal position drift rate (m/s) + 1 : Vertical position drift rate (m/s) + 2 : Filtered horizontal velocity (m/s) + Second argument returns true when IMU movement is blocking the drift calculation + Function returns true if the metrics have been updated and not returned previously by this function + */ + bool get_gps_drift_metrics(float drift[3], bool *blocked); + + // return true if the global position estimate is valid + // return true if the origin is set we are not doing unconstrained free inertial navigation + // and have not started using synthetic position observations to constrain drift + bool global_position_is_valid() const + { + return (_NED_origin_initialised && local_position_is_valid()); + } + + // return true if the local position estimate is valid + bool local_position_is_valid() const + { + return (!_deadreckon_time_exceeded && !_using_synthetic_position); + } + + bool isTerrainEstimateValid() const { return _hagl_valid; }; + + uint8_t getTerrainEstimateSensorBitfield() const { return _hagl_sensor_status.value; } + + // get the estimated terrain vertical position relative to the NED origin + float getTerrainVertPos() const { return _terrain_vpos; }; + + // get the number of times the vertical terrain position has been reset + uint8_t getTerrainVertPosResetCounter() const { return _terrain_vpos_reset_counter; }; + + // get the terrain variance + float get_terrain_var() const { return _terrain_var; } + + Vector3f getGyroBias() const { return _state.delta_ang_bias / _dt_ekf_avg; } // get the gyroscope bias in rad/s + Vector3f getAccelBias() const { return _state.delta_vel_bias / _dt_ekf_avg; } // get the accelerometer bias in m/s**2 + const Vector3f &getMagBias() const { return _state.mag_B; } + + Vector3f getGyroBiasVariance() const { return Vector3f{P(10, 10), P(11, 11), P(12, 12)} / _dt_ekf_avg; } // get the gyroscope bias variance in rad/s + Vector3f getAccelBiasVariance() const { return Vector3f{P(13, 13), P(14, 14), P(15, 15)} / _dt_ekf_avg; } // get the accelerometer bias variance in m/s**2 + Vector3f getMagBiasVariance() const { return Vector3f{P(19, 19), P(20, 20), P(21, 21)}; } + + // get GPS check status + void get_gps_check_status(uint16_t *val) const { *val = _gps_check_fail_status.value; } + + const auto &state_reset_status() const { return _state_reset_status; } + + // return the amount the local vertical position changed in the last reset and the number of reset events + void get_posD_reset(float *delta, uint8_t *counter) const + { + *delta = _state_reset_status.posD_change; + *counter = _state_reset_status.posD_counter; + } + + // return the amount the local vertical velocity changed in the last reset and the number of reset events + void get_velD_reset(float *delta, uint8_t *counter) const + { + *delta = _state_reset_status.velD_change; + *counter = _state_reset_status.velD_counter; + } + + // return the amount the local horizontal position changed in the last reset and the number of reset events + void get_posNE_reset(float delta[2], uint8_t *counter) const + { + _state_reset_status.posNE_change.copyTo(delta); + *counter = _state_reset_status.posNE_counter; + } + + // return the amount the local horizontal velocity changed in the last reset and the number of reset events + void get_velNE_reset(float delta[2], uint8_t *counter) const + { + _state_reset_status.velNE_change.copyTo(delta); + *counter = _state_reset_status.velNE_counter; + } + + // return the amount the quaternion has changed in the last reset and the number of reset events + void get_quat_reset(float delta_quat[4], uint8_t *counter) const + { + _state_reset_status.quat_change.copyTo(delta_quat); + *counter = _state_reset_status.quat_counter; + } + + // get EKF innovation consistency check status information comprising of: + // status - a bitmask integer containing the pass/fail status for each EKF measurement innovation consistency check + // Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold. + // A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF + // Where a measurement type is a vector quantity, eg magnetometer, GPS position, etc, the maximum value is returned. + void get_innovation_test_status(uint16_t &status, float &mag, float &vel, float &pos, float &hgt, float &tas, + float &hagl, float &beta) const; + + // return a bitmask integer that describes which state estimates can be used for flight control + void get_ekf_soln_status(uint16_t *status) const; + + // return the quaternion defining the rotation from the External Vision to the EKF reference frame + matrix::Quatf getVisionAlignmentQuaternion() const { return Quatf(_R_ev_to_ekf); }; + + // use the latest IMU data at the current time horizon. + Quatf calculate_quaternion() const; + + // set minimum continuous period without GPS fail required to mark a healthy GPS status + void set_min_required_gps_health_time(uint32_t time_us) { _min_gps_health_time_us = time_us; } + + // get solution data from the EKF-GSF emergency yaw estimator + // returns false when data is not available + bool getDataEKFGSF(float *yaw_composite, float *yaw_variance, float yaw[N_MODELS_EKFGSF], + float innov_VN[N_MODELS_EKFGSF], float innov_VE[N_MODELS_EKFGSF], float weight[N_MODELS_EKFGSF]); + +private: + + // set the internal states and status to their default value + void reset(); + + bool initialiseTilt(); + + // Request the EKF reset the yaw to the estimate from the internal EKF-GSF filter + // and reset the velocity and position states to the GPS. This will cause the EKF + // to ignore the magnetometer for the remainder of flight. + // This should only be used as a last resort before activating a loss of navigation failsafe + void requestEmergencyNavReset() { _do_ekfgsf_yaw_reset = true; } + + // check if the EKF is dead reckoning horizontal velocity using inertial data only + void update_deadreckoning_status(); + + void updateTerrainValidity(); + + struct { + uint8_t velNE_counter; ///< number of horizontal position reset events (allow to wrap if count exceeds 255) + uint8_t velD_counter; ///< number of vertical velocity reset events (allow to wrap if count exceeds 255) + uint8_t posNE_counter; ///< number of horizontal position reset events (allow to wrap if count exceeds 255) + uint8_t posD_counter; ///< number of vertical position reset events (allow to wrap if count exceeds 255) + uint8_t quat_counter; ///< number of quaternion reset events (allow to wrap if count exceeds 255) + Vector2f velNE_change; ///< North East velocity change due to last reset (m) + float velD_change; ///< Down velocity change due to last reset (m/sec) + Vector2f posNE_change; ///< North, East position change due to last reset (m) + float posD_change; ///< Down position change due to last reset (m) + Quatf quat_change; ///< quaternion delta due to last reset - multiply pre-reset quaternion by this to get post-reset quaternion + } _state_reset_status{}; ///< reset event monitoring structure containing velocity, position, height and yaw reset information + + float _dt_ekf_avg{FILTER_UPDATE_PERIOD_S}; ///< average update rate of the ekf + + Vector3f _ang_rate_delayed_raw; ///< uncorrected angular rate vector at fusion time horizon (rad/sec) + + stateSample _state{}; ///< state struct of the ekf running at the delayed time horizon + + bool _filter_initialised{false}; ///< true when the EKF sttes and covariances been initialised + + // variables used when position data is being fused using a relative position odometry model + bool _fuse_hpos_as_odom{false}; ///< true when the NE position data is being fused using an odometry assumption + Vector3f _pos_meas_prev; ///< previous value of NED position measurement fused using odometry assumption (m) + Vector2f _hpos_pred_prev; ///< previous value of NE position state used by odometry fusion (m) + bool _hpos_prev_available{false}; ///< true when previous values of the estimate and measurement are available for use + Dcmf _R_ev_to_ekf; ///< transformation matrix that rotates observations from the EV to the EKF navigation frame, initialized with Identity + bool _inhibit_ev_yaw_use{false}; ///< true when the vision yaw data should not be used (e.g.: NE fusion requires true North) + + // booleans true when fresh sensor data is available at the fusion time horizon + bool _gps_data_ready{false}; ///< true when new GPS data has fallen behind the fusion time horizon and is available to be fused + bool _mag_data_ready{false}; ///< true when new magnetometer data has fallen behind the fusion time horizon and is available to be fused + bool _baro_data_ready{false}; ///< true when new baro height data has fallen behind the fusion time horizon and is available to be fused + bool _flow_data_ready{false}; ///< true when the leading edge of the optical flow integration period has fallen behind the fusion time horizon + bool _ev_data_ready{false}; ///< true when new external vision system data has fallen behind the fusion time horizon and is available to be fused + bool _tas_data_ready{false}; ///< true when new true airspeed data has fallen behind the fusion time horizon and is available to be fused + bool _flow_for_terrain_data_ready{false}; /// same flag as "_flow_data_ready" but used for separate terrain estimator + + uint64_t _time_prev_gps_us{0}; ///< time stamp of previous GPS data retrieved from the buffer (uSec) + uint64_t _time_last_aiding{0}; ///< amount of time we have been doing inertial only deadreckoning (uSec) + bool _using_synthetic_position{false}; ///< true if we are using a synthetic position to constrain drift + + uint64_t _time_last_hor_pos_fuse{0}; ///< time the last fusion of horizontal position measurements was performed (uSec) + uint64_t _time_last_hgt_fuse{0}; ///< time the last fusion of vertical position measurements was performed (uSec) + uint64_t _time_last_hor_vel_fuse{0}; ///< time the last fusion of horizontal velocity measurements was performed (uSec) + uint64_t _time_last_ver_vel_fuse{0}; ///< time the last fusion of verticalvelocity measurements was performed (uSec) + uint64_t _time_last_delpos_fuse{0}; ///< time the last fusion of incremental horizontal position measurements was performed (uSec) + uint64_t _time_last_of_fuse{0}; ///< time the last fusion of optical flow measurements were performed (uSec) + uint64_t _time_last_flow_terrain_fuse{0}; ///< time the last fusion of optical flow measurements for terrain estimation were performed (uSec) + uint64_t _time_last_arsp_fuse{0}; ///< time the last fusion of airspeed measurements were performed (uSec) + uint64_t _time_last_beta_fuse{0}; ///< time the last fusion of synthetic sideslip measurements were performed (uSec) + uint64_t _time_last_fake_pos{0}; ///< last time we faked position measurements to constrain tilt errors during operation without external aiding (uSec) + + uint64_t _time_last_gps_yaw_fuse{0}; ///< time the last fusion of GPS yaw measurements were performed (uSec) + uint64_t _time_last_gps_yaw_data{0}; ///< time the last GPS yaw measurement was available (uSec) + uint8_t _nb_gps_yaw_reset_available{0}; ///< remaining number of resets allowed before switching to another aiding source + + + Vector2f _last_known_posNE; ///< last known local NE position vector (m) + float _imu_collection_time_adj{0.0f}; ///< the amount of time the IMU collection needs to be advanced to meet the target set by FILTER_UPDATE_PERIOD_MS (sec) + + uint64_t _time_acc_bias_check{0}; ///< last time the accel bias check passed (uSec) + uint64_t _delta_time_baro_us{0}; ///< delta time between two consecutive delayed baro samples from the buffer (uSec) + + Vector3f _earth_rate_NED; ///< earth rotation vector (NED) in rad/s + + Dcmf _R_to_earth; ///< transformation matrix from body frame to earth frame from last EKF prediction + + // used by magnetometer fusion mode selection + Vector2f _accel_lpf_NE; ///< Low pass filtered horizontal earth frame acceleration (m/sec**2) + float _yaw_delta_ef{0.0f}; ///< Recent change in yaw angle measured about the earth frame D axis (rad) + float _yaw_rate_lpf_ef{0.0f}; ///< Filtered angular rate about earth frame D axis (rad/sec) + bool _mag_bias_observable{false}; ///< true when there is enough rotation to make magnetometer bias errors observable + bool _yaw_angle_observable{false}; ///< true when there is enough horizontal acceleration to make yaw observable + uint64_t _time_yaw_started{0}; ///< last system time in usec that a yaw rotation manoeuvre was detected + uint8_t _num_bad_flight_yaw_events{0}; ///< number of times a bad heading has been detected in flight and required a yaw reset + uint64_t _mag_use_not_inhibit_us{0}; ///< last system time in usec before magnetometer use was inhibited + bool _mag_inhibit_yaw_reset_req{false}; ///< true when magnetometer inhibit has been active for long enough to require a yaw reset when conditions improve. + float _last_static_yaw{0.0f}; ///< last yaw angle recorded when on ground motion checks were passing (rad) + bool _mag_yaw_reset_req{false}; ///< true when a reset of the yaw using the magnetometer data has been requested + bool _mag_decl_cov_reset{false}; ///< true after the fuseDeclination() function has been used to modify the earth field covariances after a magnetic field reset event. + bool _synthetic_mag_z_active{false}; ///< true if we are generating synthetic magnetometer Z measurements + bool _non_mag_yaw_aiding_running_prev{false}; ///< true when heading is being fused from other sources that are not the magnetometer (for example EV or GPS). + + bool _is_yaw_fusion_inhibited{false}; ///< true when yaw sensor use is being inhibited + + SquareMatrix24f P; ///< state covariance matrix + + Vector3f _delta_vel_bias_var_accum; ///< kahan summation algorithm accumulator for delta velocity bias variance + Vector3f _delta_angle_bias_var_accum; ///< kahan summation algorithm accumulator for delta angle bias variance + + Vector3f _last_vel_obs; ///< last velocity observation (m/s) + Vector3f _last_vel_obs_var; ///< last velocity observation variance (m/s)**2 + Vector2f _last_fail_hvel_innov; ///< last failed horizontal velocity innovation (m/s)**2 + float _vert_pos_innov_ratio{0.f}; ///< vertical position innovation divided by estimated standard deviation of innovation + uint64_t _vert_pos_fuse_attempt_time_us{0}; ///< last system time in usec vertical position measurement fuson was attempted + float _vert_vel_innov_ratio{0.f}; ///< standard deviation of vertical velocity innovation + uint64_t _vert_vel_fuse_time_us{0}; ///< last system time in usec time vertical velocity measurement fuson was attempted + + Vector3f _gps_vel_innov; ///< GPS velocity innovations (m/sec) + Vector3f _gps_vel_innov_var; ///< GPS velocity innovation variances ((m/sec)**2) + + Vector3f _gps_pos_innov; ///< GPS position innovations (m) + Vector3f _gps_pos_innov_var; ///< GPS position innovation variances (m**2) + + Vector3f _ev_vel_innov; ///< external vision velocity innovations (m/sec) + Vector3f _ev_vel_innov_var; ///< external vision velocity innovation variances ((m/sec)**2) + + Vector3f _ev_pos_innov; ///< external vision position innovations (m) + Vector3f _ev_pos_innov_var; ///< external vision position innovation variances (m**2) + + Vector3f _baro_hgt_innov; ///< baro hgt innovations (m) + Vector3f _baro_hgt_innov_var; ///< baro hgt innovation variances (m**2) + + Vector3f _rng_hgt_innov; ///< range hgt innovations (m) + Vector3f _rng_hgt_innov_var; ///< range hgt innovation variances (m**2) + + Vector3f _aux_vel_innov; ///< horizontal auxiliary velocity innovations: (m/sec) + Vector3f _aux_vel_innov_var; ///< horizontal auxiliary velocity innovation variances: ((m/sec)**2) + + float _heading_innov{0.0f}; ///< heading measurement innovation (rad) + float _heading_innov_var{0.0f}; ///< heading measurement innovation variance (rad**2) + + Vector3f _mag_innov; ///< earth magnetic field innovations (Gauss) + Vector3f _mag_innov_var; ///< earth magnetic field innovation variance (Gauss**2) + + Vector2f _drag_innov; ///< multirotor drag measurement innovation (m/sec**2) + Vector2f _drag_innov_var; ///< multirotor drag measurement innovation variance ((m/sec**2)**2) + + float _airspeed_innov{0.0f}; ///< airspeed measurement innovation (m/sec) + float _airspeed_innov_var{0.0f}; ///< airspeed measurement innovation variance ((m/sec)**2) + + float _beta_innov{0.0f}; ///< synthetic sideslip measurement innovation (rad) + float _beta_innov_var{0.0f}; ///< synthetic sideslip measurement innovation variance (rad**2) + + float _hagl_innov{0.0f}; ///< innovation of the last height above terrain measurement (m) + float _hagl_innov_var{0.0f}; ///< innovation variance for the last height above terrain measurement (m**2) + + // optical flow processing + Vector2f _flow_innov; ///< flow measurement innovation (rad/sec) + Vector2f _flow_innov_var; ///< flow innovation variance ((rad/sec)**2) + Vector3f _flow_gyro_bias; ///< bias errors in optical flow sensor rate gyro outputs (rad/sec) + Vector2f _flow_vel_body; ///< velocity from corrected flow measurement (body frame)(m/s) + Vector2f _flow_vel_ne; ///< velocity from corrected flow measurement (local frame) (m/s) + Vector3f _imu_del_ang_of; ///< bias corrected delta angle measurements accumulated across the same time frame as the optical flow rates (rad) + float _delta_time_of{0.0f}; ///< time in sec that _imu_del_ang_of was accumulated over (sec) + uint64_t _time_bad_motion_us{0}; ///< last system time that on-ground motion exceeded limits (uSec) + uint64_t _time_good_motion_us{0}; ///< last system time that on-ground motion was within limits (uSec) + bool _inhibit_flow_use{false}; ///< true when use of optical flow and range finder is being inhibited + Vector2f _flow_compensated_XY_rad; ///< measured delta angle of the image about the X and Y body axes after removal of body rotation (rad), RH rotation is positive + + // output predictor states + Vector3f _delta_angle_corr; ///< delta angle correction vector (rad) + Vector3f _vel_err_integ; ///< integral of velocity tracking error (m) + Vector3f _pos_err_integ; ///< integral of position tracking error (m.s) + Vector3f _output_tracking_error; ///< contains the magnitude of the angle, velocity and position track errors (rad, m/s, m) + + // variables used for the GPS quality checks + Vector3f _gps_pos_deriv_filt; ///< GPS NED position derivative (m/sec) + Vector2f _gps_velNE_filt; ///< filtered GPS North and East velocity (m/sec) + float _gps_velD_diff_filt{0.0f}; ///< GPS filtered Down velocity (m/sec) + uint64_t _last_gps_fail_us{0}; ///< last system time in usec that the GPS failed it's checks + uint64_t _last_gps_pass_us{0}; ///< last system time in usec that the GPS passed it's checks + float _gps_error_norm{1.0f}; ///< normalised gps error + uint32_t _min_gps_health_time_us{10000000}; ///< GPS is marked as healthy only after this amount of time + bool _gps_checks_passed{false}; ///> true when all active GPS checks have passed + + // Variables used to publish the WGS-84 location of the EKF local NED origin + uint64_t _last_gps_origin_time_us{0}; ///< time the origin was last set (uSec) + float _gps_alt_ref{0.0f}; ///< WGS-84 height (m) + + // Variables used by the initial filter alignment + bool _is_first_imu_sample{true}; + uint32_t _baro_counter{0}; ///< number of baro samples read during initialisation + uint32_t _mag_counter{0}; ///< number of magnetometer samples read during initialisation + AlphaFilter _accel_lpf{0.1f}; ///< filtered accelerometer measurement used to align tilt (m/s/s) + AlphaFilter _gyro_lpf{0.1f}; ///< filtered gyro measurement used for alignment excessive movement check (rad/sec) + + // Variables used to perform in flight resets and switch between height sources + AlphaFilter _mag_lpf{0.1f}; ///< filtered magnetometer measurement for instant reset (Gauss) + float _hgt_sensor_offset{0.0f}; ///< set as necessary if desired to maintain the same height after a height reset (m) + float _baro_hgt_offset{0.0f}; ///< baro height reading at the local NED origin (m) + + // Variables used to control activation of post takeoff functionality + float _last_on_ground_posD{0.0f}; ///< last vertical position when the in_air status was false (m) + uint64_t _flt_mag_align_start_time{0}; ///< time that inflight magnetic field alignment started (uSec) + uint64_t _time_last_mov_3d_mag_suitable{0}; ///< last system time that sufficient movement to use 3-axis magnetometer fusion was detected (uSec) + float _saved_mag_bf_variance[4] {}; ///< magnetic field state variances that have been saved for use at the next initialisation (Gauss**2) + Matrix2f _saved_mag_ef_covmat; ///< NE magnetic field state covariance sub-matrix saved for use at the next initialisation (Gauss**2) + bool _velpos_reset_request{false}; ///< true when a large yaw error has been fixed and a velocity and position state reset is required + + gps_check_fail_status_u _gps_check_fail_status{}; + + // variables used to inhibit accel bias learning + bool _accel_bias_inhibit[3] {}; ///< true when the accel bias learning is being inhibited for the specified axis + Vector3f _accel_vec_filt; ///< acceleration vector after application of a low pass filter (m/sec**2) + float _accel_magnitude_filt{0.0f}; ///< acceleration magnitude after application of a decaying envelope filter (rad/sec) + float _ang_rate_magnitude_filt{0.0f}; ///< angular rate magnitude after application of a decaying envelope filter (rad/sec) + Vector3f _prev_dvel_bias_var; ///< saved delta velocity XYZ bias variances (m/sec)**2 + + // Terrain height state estimation + float _terrain_vpos{0.0f}; ///< estimated vertical position of the terrain underneath the vehicle in local NED frame (m) + float _terrain_var{1e4f}; ///< variance of terrain position estimate (m**2) + uint8_t _terrain_vpos_reset_counter{0}; ///< number of times _terrain_vpos has been reset + uint64_t _time_last_hagl_fuse{0}; ///< last system time that a range sample was fused by the terrain estimator + uint64_t _time_last_fake_hagl_fuse{0}; ///< last system time that a fake range sample was fused by the terrain estimator + bool _terrain_initialised{false}; ///< true when the terrain estimator has been initialized + bool _hagl_valid{false}; ///< true when the height above ground estimate is valid + terrain_fusion_status_u _hagl_sensor_status{}; ///< Struct indicating type of sensor used to estimate height above ground + + // height sensor status + bool _baro_hgt_faulty{false}; ///< true if valid baro data is unavailable for use + bool _gps_hgt_intermittent{false}; ///< true if gps height into the buffer is intermittent + bool _is_gps_yaw_faulty{false}; ///< true if gps yaw data is rejected by the filter for too long + + // imu fault status + uint64_t _time_bad_vert_accel{0}; ///< last time a bad vertical accel was detected (uSec) + uint64_t _time_good_vert_accel{0}; ///< last time a good vertical accel was detected (uSec) + bool _bad_vert_accel_detected{false}; ///< true when bad vertical accelerometer data has been detected + uint16_t _clip_counter{0}; ///< counter that increments when clipping ad decrements when not + + // variables used to control range aid functionality + bool _is_range_aid_suitable{false}; ///< true when range finder can be used in flight as the height reference instead of the primary height sensor + + float _height_rate_lpf{0.0f}; + + // update the real time complementary filter states. This includes the prediction + // and the correction step + void calculateOutputStates(const imuSample &imu); + void applyCorrectionToVerticalOutputBuffer(float vert_vel_correction); + void applyCorrectionToOutputBuffer(const Vector3f &vel_correction, const Vector3f &pos_correction); + + // initialise filter states of both the delayed ekf and the real time complementary filter + bool initialiseFilter(void); + + // initialise ekf covariance matrix + void initialiseCovariance(); + + // predict ekf state + void predictState(); + + // predict ekf covariance + void predictCovariance(); + + // ekf sequential fusion of magnetometer measurements + void fuseMag(); + + // fuse the first euler angle from either a 321 or 312 rotation sequence as the observation (currently measures yaw using the magnetometer) + void fuseHeading(); + + // fuse the yaw angle defined as the first rotation in a 321 Tait-Bryan rotation sequence + // yaw : angle observation defined as the first rotation in a 321 Tait-Bryan rotation sequence (rad) + // yaw_variance : variance of the yaw angle observation (rad^2) + // zero_innovation : Fuse data with innovation set to zero + void fuseYaw321(const float yaw, const float yaw_variance, bool zero_innovation); + + // fuse the yaw angle defined as the first rotation in a 312 Tait-Bryan rotation sequence + // yaw : angle observation defined as the first rotation in a 312 Tait-Bryan rotation sequence (rad) + // yaw_variance : variance of the yaw angle observation (rad^2) + // zero_innovation : Fuse data with innovation set to zero + void fuseYaw312(const float yaw, const float yaw_variance, bool zero_innovation); + + // update quaternion states and covariances using an innovation, observation variance and Jacobian vector + // innovation : prediction - measurement + // variance : observaton variance + // gate_sigma : innovation consistency check gate size (Sigma) + // jacobian : 4x1 vector of partial derivatives of observation wrt each quaternion state + void updateQuaternion(const float innovation, const float variance, const float gate_sigma, + const Vector4f &yaw_jacobian); + + // fuse the yaw angle obtained from a dual antenna GPS unit + void fuseGpsYaw(); + + // reset the quaternions states using the yaw angle obtained from a dual antenna GPS unit + // return true if the reset was successful + bool resetYawToGps(); + + // fuse magnetometer declination measurement + // argument passed in is the declination uncertainty in radians + void fuseDeclination(float decl_sigma); + + // apply sensible limits to the declination and length of the NE mag field states estimates + void limitDeclination(); + + // fuse airspeed measurement + void fuseAirspeed(); + + // fuse synthetic zero sideslip measurement + void fuseSideslip(); + + // fuse body frame drag specific forces for multi-rotor wind estimation + void fuseDrag(); + + // fuse single velocity and position measurement + void fuseVelPosHeight(const float innov, const float innov_var, const int obs_index); + + void resetVelocity(); + + void resetVelocityToGps(); + + inline void resetHorizontalVelocityToOpticalFlow(); + + inline void resetVelocityToVision(); + + inline void resetHorizontalVelocityToZero(); + + inline void resetVelocityTo(const Vector3f &vel); + + inline void resetHorizontalVelocityTo(const Vector2f &new_horz_vel); + + inline void resetVerticalVelocityTo(float new_vert_vel); + + void resetHorizontalPosition(); + + void resetHorizontalPositionToGps(); + + inline void resetHorizontalPositionToVision(); + + inline void resetHorizontalPositionTo(const Vector2f &new_horz_pos); + + inline void resetVerticalPositionTo(const float &new_vert_pos); + + void resetHeight(); + + // fuse optical flow line of sight rate measurements + void fuseOptFlow(); + + bool fuseHorizontalVelocity(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio); + + bool fuseVerticalVelocity(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio); + + bool fuseHorizontalPosition(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratiov, bool inhibit_gate = false); + + bool fuseVerticalPosition(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio); + + // calculate optical flow body angular rate compensation + // returns false if bias corrected body rate data is unavailable + bool calcOptFlowBodyRateComp(); + + // initialise the terrain vertical position estimator + // return true if the initialisation is successful + bool initHagl(); + + bool shouldUseRangeFinderForHagl() const { return (_params.terrain_fusion_mode & TerrainFusionMask::TerrainFuseRangeFinder); } + bool shouldUseOpticalFlowForHagl() const { return (_params.terrain_fusion_mode & TerrainFusionMask::TerrainFuseOpticalFlow); } + + // run the terrain estimator + void runTerrainEstimator(); + + // update the terrain vertical position estimate using a height above ground measurement from the range finder + void fuseHagl(); + + // update the terrain vertical position estimate using an optical flow measurement + void fuseFlowForTerrain(); + + // reset the heading and magnetic field states using the declination and magnetometer measurements + // return true if successful + bool resetMagHeading(const Vector3f &mag_init, bool increase_yaw_var = true, bool update_buffer = true); + + // reset the heading using the external vision measurements + // return true if successful + bool resetYawToEv(); + + // Do a forced re-alignment of the yaw angle to align with the horizontal velocity vector from the GPS. + // It is used to align the yaw angle after launch or takeoff for fixed wing vehicle. + bool realignYawGPS(); + + // Return the magnetic declination in radians to be used by the alignment and fusion processing + float getMagDeclination(); + + // modify output filter to match the the EKF state at the fusion time horizon + void alignOutputFilter(); + + // update the rotation matrix which transforms EV navigation frame measurements into NED + void calcExtVisRotMat(); + + Vector3f getVisionVelocityInEkfFrame() const; + + Vector3f getVisionVelocityVarianceInEkfFrame() const; + + // matrix vector multiplication for computing K<24,1> * H<1,24> * P<24,24> + // that is optimized by exploring the sparsity in H + template + SquareMatrix24f computeKHP(const Vector24f &K, const SparseVector24f &H) const + { + SquareMatrix24f KHP; + constexpr size_t non_zeros = sizeof...(Idxs); + float KH[non_zeros]; + + for (unsigned row = 0; row < _k_num_states; row++) { + for (unsigned i = 0; i < H.non_zeros(); i++) { + KH[i] = K(row) * H.atCompressedIndex(i); + } + + for (unsigned column = 0; column < _k_num_states; column++) { + float tmp = 0.f; + + for (unsigned i = 0; i < H.non_zeros(); i++) { + const size_t index = H.index(i); + tmp += KH[i] * P(index, column); + } + + KHP(row, column) = tmp; + } + } + + return KHP; + } + + // measurement update with a single measurement + // returns true if fusion is performed + template + bool measurementUpdate(Vector24f &K, const SparseVector24f &H, float innovation) + { + for (unsigned i = 0; i < 3; i++) { + if (_accel_bias_inhibit[i]) { + K(13 + i) = 0.0f; + } + } + + // apply covariance correction via P_new = (I -K*H)*P + // first calculate expression for KHP + // then calculate P - KHP + const SquareMatrix24f KHP = computeKHP(K, H); + + const bool is_healthy = checkAndFixCovarianceUpdate(KHP); + + if (is_healthy) { + // apply the covariance corrections + P -= KHP; + + fixCovarianceErrors(true); + + // apply the state corrections + fuse(K, innovation); + } + + return is_healthy; + } + + // if the covariance correction will result in a negative variance, then + // the covariance matrix is unhealthy and must be corrected + bool checkAndFixCovarianceUpdate(const SquareMatrix24f &KHP); + + // limit the diagonal of the covariance matrix + // force symmetry when the argument is true + void fixCovarianceErrors(bool force_symmetry); + + // constrain the ekf states + void constrainStates(); + + // generic function which will perform a fusion step given a kalman gain K + // and a scalar innovation value + void fuse(const Vector24f &K, float innovation); + + float compensateBaroForDynamicPressure(float baro_alt_uncompensated) const override; + + // calculate the earth rotation vector from a given latitude + Vector3f calcEarthRateNED(float lat_rad) const; + + // return true id the GPS quality is good enough to set an origin and start aiding + bool gps_is_good(const gps_message &gps); + + // Control the filter fusion modes + void controlFusionModes(); + + // control fusion of external vision observations + void controlExternalVisionFusion(); + + // control fusion of optical flow observations + void controlOpticalFlowFusion(); + void updateOnGroundMotionForOpticalFlowChecks(); + void resetOnGroundMotionForOpticalFlowChecks(); + + // control fusion of GPS observations + void controlGpsFusion(); + void controlGpsYawFusion(bool gps_checks_passing, bool gps_checks_failing); + + // control fusion of magnetometer observations + void controlMagFusion(); + + bool noOtherYawAidingThanMag() const; + bool otherHeadingSourcesHaveStopped(); + + void checkHaglYawResetReq(); + float getTerrainVPos() const { return isTerrainEstimateValid() ? _terrain_vpos : _last_on_ground_posD; } + + void runOnGroundYawReset(); + bool isYawResetAuthorized() const { return !_is_yaw_fusion_inhibited; } + bool canResetMagHeading() const; + void runInAirYawReset(); + bool canRealignYawUsingGps() const { return _control_status.flags.fixed_wing; } + void runVelPosReset(); + + void selectMagAuto(); + void check3DMagFusionSuitability(); + void checkYawAngleObservability(); + void checkMagBiasObservability(); + bool isYawAngleObservable() const { return _yaw_angle_observable; } + bool isMagBiasObservable() const { return _mag_bias_observable; } + bool canUse3DMagFusion() const; + + void checkMagDeclRequired(); + void checkMagInhibition(); + bool shouldInhibitMag() const; + void checkMagFieldStrength(); + bool isStrongMagneticDisturbance() const { return _control_status.flags.mag_field_disturbed; } + bool isMeasuredMatchingGpsMagStrength() const; + bool isMeasuredMatchingAverageMagStrength() const; + static bool isMeasuredMatchingExpected(float measured, float expected, float gate); + void runMagAndMagDeclFusions(); + void run3DMagAndDeclFusions(); + + // control fusion of range finder observations + void controlRangeFinderFusion(); + + // control fusion of air data observations + void controlAirDataFusion(); + + // control fusion of synthetic sideslip observations + void controlBetaFusion(); + + // control fusion of multi-rotor drag specific force observations + void controlDragFusion(); + + // control fusion of pressure altitude observations + void controlBaroFusion(); + + // control fusion of fake position observations to constrain drift + void controlFakePosFusion(); + + // control fusion of auxiliary velocity observations + void controlAuxVelFusion(); + + // control for height sensor timeouts, sensor changes and state resets + void controlHeightSensorTimeouts(); + + void checkVerticalAccelerationHealth(); + + // control for combined height fusion mode (implemented for switching between baro and range height) + void controlHeightFusion(); + + // determine if flight condition is suitable to use range finder instead of the primary height sensor + void checkRangeAidSuitability(); + bool isRangeAidSuitable() const { return _is_range_aid_suitable; } + + // set control flags to use baro height + void setControlBaroHeight(); + + // set control flags to use range height + void setControlRangeHeight(); + + // set control flags to use GPS height + void setControlGPSHeight(); + + // set control flags to use external vision height + void setControlEVHeight(); + + void stopMagFusion(); + void stopMag3DFusion(); + void stopMagHdgFusion(); + void startMagHdgFusion(); + void startMag3DFusion(); + + void startBaroHgtFusion(); + void startGpsHgtFusion(); + + void updateBaroHgtOffset(); + + // return an estimation of the GPS altitude variance + float getGpsHeightVariance(); + + // calculate the measurement variance for the optical flow sensor + float calcOptFlowMeasVar(); + + // rotate quaternion covariances into variances for an equivalent rotation vector + Vector3f calcRotVecVariances(); + + // initialise the quaternion covariances using rotation vector variances + // do not call before quaternion states are initialised + void initialiseQuatCovariances(Vector3f &rot_vec_var); + + // perform a limited reset of the magnetic field related state covariances + void resetMagRelatedCovariances(); + + void resetQuatCov(); + void zeroQuatCov(); + void resetMagCov(); + + // perform a limited reset of the wind state covariances + void resetWindCovariance(); + + // perform a reset of the wind states + void resetWindStates(); + + // check that the range finder data is continuous + void updateRangeDataContinuity(); + + // Increase the yaw error variance of the quaternions + // Argument is additional yaw variance in rad**2 + void increaseQuatYawErrVariance(float yaw_variance); + + // load and save mag field state covariance data for re-use + void loadMagCovData(); + void saveMagCovData(); + void clearMagCov(); + void zeroMagCov(); + + void resetZDeltaAngBiasCov(); + + // uncorrelate quaternion states from other states + void uncorrelateQuatFromOtherStates(); + + // calculate a synthetic value for the magnetometer Z component, given the 3D magnetomter + // sensor measurement + float calculate_synthetic_mag_z_measurement(const Vector3f &mag_meas, const Vector3f &mag_earth_predicted); + + bool isTimedOut(uint64_t last_sensor_timestamp, uint64_t timeout_period) const + { + return last_sensor_timestamp + timeout_period < _time_last_imu; + } + + bool isRecent(uint64_t sensor_timestamp, uint64_t acceptance_interval) const + { + return sensor_timestamp + acceptance_interval > _time_last_imu; + } + + void startGpsFusion(); + void stopGpsFusion(); + void stopGpsPosFusion(); + void stopGpsVelFusion(); + + void startGpsYawFusion(); + void stopGpsYawFusion(); + + void startEvPosFusion(); + void startEvVelFusion(); + void startEvYawFusion(); + + void stopEvFusion(); + void stopEvPosFusion(); + void stopEvVelFusion(); + void stopEvYawFusion(); + + void stopAuxVelFusion(); + + void stopFlowFusion(); + + void setVelPosFaultStatus(const int index, const bool status); + + // reset the quaternion states and covariances to the new yaw value, preserving the roll and pitch + // yaw : Euler yaw angle (rad) + // yaw_variance : yaw error variance (rad^2) + // update_buffer : true if the state change should be also applied to the output observer buffer + void resetQuatStateYaw(float yaw, float yaw_variance, bool update_buffer); + + // Declarations used to control use of the EKF-GSF yaw estimator + + // yaw estimator instance + EKFGSF_yaw _yawEstimator; + + int64_t _ekfgsf_yaw_reset_time{0}; ///< timestamp of last emergency yaw reset (uSec) + bool _do_ekfgsf_yaw_reset{false}; // true when an emergency yaw reset has been requested + uint8_t _ekfgsf_yaw_reset_count{0}; // number of times the yaw has been reset to the EKF-GSF estimate + + // Call once per _imu_sample_delayed update after all main EKF data fusion oeprations have been completed + void runYawEKFGSF(); + + // Resets the main Nav EKf yaw to the estimator from the EKF-GSF yaw estimator + // Resets the horizontal velocity and position to the default navigation sensor + // Returns true if the reset was successful + bool resetYawToEKFGSF(); + + void resetGpsDriftCheckFilters(); +}; diff --git a/src/lib/ecl/EKF/ekf_helper.cpp b/src/lib/ecl/EKF/ekf_helper.cpp new file mode 100644 index 0000000000..03ef4d51b6 --- /dev/null +++ b/src/lib/ecl/EKF/ekf_helper.cpp @@ -0,0 +1,1703 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file ekf_helper.cpp + * Definition of ekf helper functions. + * + * @author Roman Bast + * + */ + +#include "ekf.h" + +#include +#include +#include + + +void Ekf::resetVelocity() +{ + if (_control_status.flags.gps && isTimedOut(_last_gps_fail_us, (uint64_t)_min_gps_health_time_us)) { + // this reset is only called if we have new gps data at the fusion time horizon + resetVelocityToGps(); + + } else if (_control_status.flags.opt_flow) { + resetHorizontalVelocityToOpticalFlow(); + + } else if (_control_status.flags.ev_vel) { + resetVelocityToVision(); + + } else { + resetHorizontalVelocityToZero(); + } +} + +void Ekf::resetVelocityToGps() +{ + _information_events.flags.reset_vel_to_gps = true; + ECL_INFO("reset velocity to GPS"); + resetVelocityTo(_gps_sample_delayed.vel); + P.uncorrelateCovarianceSetVariance<3>(4, sq(_gps_sample_delayed.sacc)); +} + +void Ekf::resetHorizontalVelocityToOpticalFlow() +{ + _information_events.flags.reset_vel_to_flow = true; + ECL_INFO("reset velocity to flow"); + // constrain height above ground to be above minimum possible + const float heightAboveGndEst = fmaxf((_terrain_vpos - _state.pos(2)), _params.rng_gnd_clearance); + + // calculate absolute distance from focal point to centre of frame assuming a flat earth + const float range = heightAboveGndEst / _range_sensor.getCosTilt(); + + if ((range - _params.rng_gnd_clearance) > 0.3f) { + // we should have reliable OF measurements so + // calculate X and Y body relative velocities from OF measurements + Vector3f vel_optflow_body; + vel_optflow_body(0) = - range * _flow_compensated_XY_rad(1) / _flow_sample_delayed.dt; + vel_optflow_body(1) = range * _flow_compensated_XY_rad(0) / _flow_sample_delayed.dt; + vel_optflow_body(2) = 0.0f; + + // rotate from body to earth frame + const Vector3f vel_optflow_earth = _R_to_earth * vel_optflow_body; + + resetHorizontalVelocityTo(Vector2f(vel_optflow_earth)); + + } else { + resetHorizontalVelocityTo(Vector2f{0.f, 0.f}); + } + + // reset the horizontal velocity variance using the optical flow noise variance + P.uncorrelateCovarianceSetVariance<2>(4, sq(range) * calcOptFlowMeasVar()); +} + +void Ekf::resetVelocityToVision() +{ + _information_events.flags.reset_vel_to_vision = true; + ECL_INFO("reset to vision velocity"); + resetVelocityTo(getVisionVelocityInEkfFrame()); + P.uncorrelateCovarianceSetVariance<3>(4, getVisionVelocityVarianceInEkfFrame()); +} + +void Ekf::resetHorizontalVelocityToZero() +{ + _information_events.flags.reset_vel_to_zero = true; + ECL_INFO("reset velocity to zero"); + // Used when falling back to non-aiding mode of operation + resetHorizontalVelocityTo(Vector2f{0.f, 0.f}); + P.uncorrelateCovarianceSetVariance<2>(4, 25.0f); +} + +void Ekf::resetVelocityTo(const Vector3f &new_vel) +{ + resetHorizontalVelocityTo(Vector2f(new_vel)); + resetVerticalVelocityTo(new_vel(2)); +} + +void Ekf::resetHorizontalVelocityTo(const Vector2f &new_horz_vel) +{ + const Vector2f delta_horz_vel = new_horz_vel - Vector2f(_state.vel); + _state.vel.xy() = new_horz_vel; + + for (uint8_t index = 0; index < _output_buffer.get_length(); index++) { + _output_buffer[index].vel.xy() += delta_horz_vel; + } + + _output_new.vel.xy() += delta_horz_vel; + + _state_reset_status.velNE_change = delta_horz_vel; + _state_reset_status.velNE_counter++; +} + +void Ekf::resetVerticalVelocityTo(float new_vert_vel) +{ + const float delta_vert_vel = new_vert_vel - _state.vel(2); + _state.vel(2) = new_vert_vel; + + for (uint8_t index = 0; index < _output_buffer.get_length(); index++) { + _output_buffer[index].vel(2) += delta_vert_vel; + _output_vert_buffer[index].vert_vel += delta_vert_vel; + } + + _output_new.vel(2) += delta_vert_vel; + _output_vert_new.vert_vel += delta_vert_vel; + + _state_reset_status.velD_change = delta_vert_vel; + _state_reset_status.velD_counter++; +} + +void Ekf::resetHorizontalPosition() +{ + // let the next odometry update know that the previous value of states cannot be used to calculate the change in position + _hpos_prev_available = false; + + if (_control_status.flags.gps) { + // this reset is only called if we have new gps data at the fusion time horizon + resetHorizontalPositionToGps(); + + } else if (_control_status.flags.ev_pos) { + // this reset is only called if we have new ev data at the fusion time horizon + resetHorizontalPositionToVision(); + + } else if (_control_status.flags.opt_flow) { + _information_events.flags.reset_pos_to_last_known = true; + ECL_INFO("reset position to last known position"); + + if (!_control_status.flags.in_air) { + // we are likely starting OF for the first time so reset the horizontal position + resetHorizontalPositionTo(Vector2f(0.f, 0.f)); + + } else { + resetHorizontalPositionTo(_last_known_posNE); + } + + // estimate is relative to initial position in this mode, so we start with zero error. + P.uncorrelateCovarianceSetVariance<2>(7, 0.0f); + + } else { + _information_events.flags.reset_pos_to_last_known = true; + ECL_INFO("reset position to last known position"); + // Used when falling back to non-aiding mode of operation + resetHorizontalPositionTo(_last_known_posNE); + P.uncorrelateCovarianceSetVariance<2>(7, sq(_params.pos_noaid_noise)); + } +} + +void Ekf::resetHorizontalPositionToGps() +{ + _information_events.flags.reset_pos_to_gps = true; + ECL_INFO("reset position to GPS"); + resetHorizontalPositionTo(_gps_sample_delayed.pos); + P.uncorrelateCovarianceSetVariance<2>(7, sq(_gps_sample_delayed.hacc)); +} + +void Ekf::resetHorizontalPositionToVision() +{ + _information_events.flags.reset_pos_to_vision = true; + ECL_INFO("reset position to ev position"); + Vector3f _ev_pos = _ev_sample_delayed.pos; + + if (_params.fusion_mode & MASK_ROTATE_EV) { + _ev_pos = _R_ev_to_ekf * _ev_sample_delayed.pos; + } + + resetHorizontalPositionTo(Vector2f(_ev_pos)); + P.uncorrelateCovarianceSetVariance<2>(7, _ev_sample_delayed.posVar.slice<2, 1>(0, 0)); +} + +void Ekf::resetHorizontalPositionTo(const Vector2f &new_horz_pos) +{ + const Vector2f delta_horz_pos{new_horz_pos - Vector2f{_state.pos}}; + _state.pos.xy() = new_horz_pos; + + for (uint8_t index = 0; index < _output_buffer.get_length(); index++) { + _output_buffer[index].pos.xy() += delta_horz_pos; + } + + _output_new.pos.xy() += delta_horz_pos; + + _state_reset_status.posNE_change = delta_horz_pos; + _state_reset_status.posNE_counter++; +} + +void Ekf::resetVerticalPositionTo(const float &new_vert_pos) +{ + const float old_vert_pos = _state.pos(2); + _state.pos(2) = new_vert_pos; + + // store the reset amount and time to be published + _state_reset_status.posD_change = new_vert_pos - old_vert_pos; + _state_reset_status.posD_counter++; + + // apply the change in height / height rate to our newest height / height rate estimate + // which have already been taken out from the output buffer + _output_new.pos(2) += _state_reset_status.posD_change; + + // add the reset amount to the output observer buffered data + for (uint8_t i = 0; i < _output_buffer.get_length(); i++) { + _output_buffer[i].pos(2) += _state_reset_status.posD_change; + _output_vert_buffer[i].vert_vel_integ += _state_reset_status.posD_change; + } + + // add the reset amount to the output observer vertical position state + _output_vert_new.vert_vel_integ = _state.pos(2); +} + +// Reset height state using the last height measurement +void Ekf::resetHeight() +{ + // Get the most recent GPS data + const gpsSample &gps_newest = _gps_buffer.get_newest(); + + // reset the vertical position + if (_control_status.flags.rng_hgt) { + + // a fallback from any other height source to rangefinder happened + if(!_control_status_prev.flags.rng_hgt) { + + if (_control_status.flags.in_air && isTerrainEstimateValid()) { + _hgt_sensor_offset = _terrain_vpos; + } else if (_control_status.flags.in_air) { + _hgt_sensor_offset = _range_sensor.getDistBottom() + _state.pos(2); + } else { + _hgt_sensor_offset = _params.rng_gnd_clearance; + } + + } + + // update the state and associated variance + resetVerticalPositionTo(_hgt_sensor_offset - _range_sensor.getDistBottom()); + + // the state variance is the same as the observation + P.uncorrelateCovarianceSetVariance<1>(9, sq(_params.range_noise)); + + // reset the baro offset which is subtracted from the baro reading if we need to use it as a backup + const baroSample &baro_newest = _baro_buffer.get_newest(); + _baro_hgt_offset = baro_newest.hgt + _state.pos(2); + + } else if (_control_status.flags.baro_hgt) { + // initialize vertical position with newest baro measurement + const baroSample &baro_newest = _baro_buffer.get_newest(); + + if (!_baro_hgt_faulty) { + resetVerticalPositionTo(-baro_newest.hgt + _baro_hgt_offset); + + // the state variance is the same as the observation + P.uncorrelateCovarianceSetVariance<1>(9, sq(_params.baro_noise)); + + } else { + // TODO: reset to last known baro based estimate + } + + } else if (_control_status.flags.gps_hgt) { + // initialize vertical position and velocity with newest gps measurement + if (!_gps_hgt_intermittent) { + resetVerticalPositionTo(_hgt_sensor_offset - gps_newest.hgt + _gps_alt_ref); + + // the state variance is the same as the observation + P.uncorrelateCovarianceSetVariance<1>(9, sq(gps_newest.vacc)); + + // reset the baro offset which is subtracted from the baro reading if we need to use it as a backup + const baroSample &baro_newest = _baro_buffer.get_newest(); + _baro_hgt_offset = baro_newest.hgt + _state.pos(2); + + } else { + // TODO: reset to last known gps based estimate + } + + } else if (_control_status.flags.ev_hgt) { + // initialize vertical position with newest measurement + const extVisionSample &ev_newest = _ext_vision_buffer.get_newest(); + + // use the most recent data if it's time offset from the fusion time horizon is smaller + if (ev_newest.time_us >= _ev_sample_delayed.time_us) { + resetVerticalPositionTo(ev_newest.pos(2)); + + } else { + resetVerticalPositionTo(_ev_sample_delayed.pos(2)); + } + } + + // reset the vertical velocity state + if (_control_status.flags.gps && !_gps_hgt_intermittent) { + // If we are using GPS, then use it to reset the vertical velocity + resetVerticalVelocityTo(gps_newest.vel(2)); + + // the state variance is the same as the observation + P.uncorrelateCovarianceSetVariance<1>(6, sq(1.5f * gps_newest.sacc)); + + } else { + // we don't know what the vertical velocity is, so set it to zero + resetVerticalVelocityTo(0.0f); + + // Set the variance to a value large enough to allow the state to converge quickly + // that does not destabilise the filter + P.uncorrelateCovarianceSetVariance<1>(6, 10.0f); + } +} + +// align output filter states to match EKF states at the fusion time horizon +void Ekf::alignOutputFilter() +{ + const outputSample &output_delayed = _output_buffer.get_oldest(); + + // calculate the quaternion rotation delta from the EKF to output observer states at the EKF fusion time horizon + Quatf q_delta{_state.quat_nominal * output_delayed.quat_nominal.inversed()}; + q_delta.normalize(); + + // calculate the velocity and position deltas between the output and EKF at the EKF fusion time horizon + const Vector3f vel_delta = _state.vel - output_delayed.vel; + const Vector3f pos_delta = _state.pos - output_delayed.pos; + + // loop through the output filter state history and add the deltas + for (uint8_t i = 0; i < _output_buffer.get_length(); i++) { + _output_buffer[i].quat_nominal = q_delta * _output_buffer[i].quat_nominal; + _output_buffer[i].quat_nominal.normalize(); + _output_buffer[i].vel += vel_delta; + _output_buffer[i].pos += pos_delta; + } + + _output_new = _output_buffer.get_newest(); +} + +// Do a forced re-alignment of the yaw angle to align with the horizontal velocity vector from the GPS. +// It is used to align the yaw angle after launch or takeoff for fixed wing vehicle only. +bool Ekf::realignYawGPS() +{ + const float gpsSpeed = sqrtf(sq(_gps_sample_delayed.vel(0)) + sq(_gps_sample_delayed.vel(1))); + + // Need at least 5 m/s of GPS horizontal speed and + // ratio of velocity error to velocity < 0.15 for a reliable alignment + const bool gps_yaw_alignment_possible = (gpsSpeed > 5.0f) && (_gps_sample_delayed.sacc < (0.15f * gpsSpeed)); + + if (!gps_yaw_alignment_possible) { + // attempt a normal alignment using the magnetometer + return resetMagHeading(_mag_lpf.getState()); + } + + // check for excessive horizontal GPS velocity innovations + const bool badVelInnov = (_gps_vel_test_ratio(0) > 1.0f) && _control_status.flags.gps; + + // calculate GPS course over ground angle + const float gpsCOG = atan2f(_gps_sample_delayed.vel(1), _gps_sample_delayed.vel(0)); + + // calculate course yaw angle + const float ekfCOG = atan2f(_state.vel(1), _state.vel(0)); + + // Check the EKF and GPS course over ground for consistency + const float courseYawError = wrap_pi(gpsCOG - ekfCOG); + + // If the angles disagree and horizontal GPS velocity innovations are large or no previous yaw alignment, we declare the magnetic yaw as bad + const bool badYawErr = fabsf(courseYawError) > 0.5f; + const bool badMagYaw = (badYawErr && badVelInnov); + + if (badMagYaw) { + _num_bad_flight_yaw_events ++; + } + + // correct yaw angle using GPS ground course if compass yaw bad or yaw is previously not aligned + if (badMagYaw || !_control_status.flags.yaw_align) { + _warning_events.flags.bad_yaw_using_gps_course = true; + ECL_WARN("bad yaw, using GPS course"); + + // declare the magnetometer as failed if a bad yaw has occurred more than once + if (_control_status.flags.mag_aligned_in_flight && (_num_bad_flight_yaw_events >= 2) + && !_control_status.flags.mag_fault) { + _warning_events.flags.stopping_mag_use = true; + ECL_WARN("stopping mag use"); + _control_status.flags.mag_fault = true; + } + + // calculate new yaw estimate + float yaw_new; + + if (!_control_status.flags.mag_aligned_in_flight) { + // This is our first flight alignment so we can assume that the recent change in velocity has occurred due to a + // forward direction takeoff or launch and therefore the inertial and GPS ground course discrepancy is due to yaw error + const float current_yaw = getEuler321Yaw(_state.quat_nominal); + yaw_new = current_yaw + courseYawError; + _control_status.flags.mag_aligned_in_flight = true; + + } else if (_control_status.flags.wind) { + // we have previously aligned yaw in-flight and have wind estimates so set the yaw such that the vehicle nose is + // aligned with the wind relative GPS velocity vector + yaw_new = atan2f((_gps_sample_delayed.vel(1) - _state.wind_vel(1)), + (_gps_sample_delayed.vel(0) - _state.wind_vel(0))); + + } else { + // we don't have wind estimates, so align yaw to the GPS velocity vector + yaw_new = atan2f(_gps_sample_delayed.vel(1), _gps_sample_delayed.vel(0)); + + } + + // use the combined EKF and GPS speed variance to calculate a rough estimate of the yaw error after alignment + const float SpdErrorVariance = sq(_gps_sample_delayed.sacc) + P(4, 4) + P(5, 5); + const float sineYawError = math::constrain(sqrtf(SpdErrorVariance) / gpsSpeed, 0.0f, 1.0f); + const float yaw_variance_new = sq(asinf(sineYawError)); + + // Apply updated yaw and yaw variance to states and covariances + resetQuatStateYaw(yaw_new, yaw_variance_new, true); + + // Use the last magnetometer measurements to reset the field states + _state.mag_B.zero(); + _R_to_earth = Dcmf(_state.quat_nominal); + _state.mag_I = _R_to_earth * _mag_sample_delayed.mag; + + resetMagCov(); + + // record the start time for the magnetic field alignment + _flt_mag_align_start_time = _imu_sample_delayed.time_us; + + // If heading was bad, then we also need to reset the velocity and position states + _velpos_reset_request = badMagYaw; + + return true; + + } else { + // align mag states only + + // calculate initial earth magnetic field states + _state.mag_I = _R_to_earth * _mag_sample_delayed.mag; + + resetMagCov(); + + // record the start time for the magnetic field alignment + _flt_mag_align_start_time = _imu_sample_delayed.time_us; + + return true; + } +} + +// Reset heading and magnetic field states +bool Ekf::resetMagHeading(const Vector3f &mag_init, bool increase_yaw_var, bool update_buffer) +{ + // prevent a reset being performed more than once on the same frame + if (_imu_sample_delayed.time_us == _flt_mag_align_start_time) { + return true; + } + + // calculate the observed yaw angle and yaw variance + float yaw_new; + float yaw_new_variance = 0.0f; + + if (_params.mag_fusion_type <= MAG_FUSE_TYPE_3D) { + // rotate the magnetometer measurements into earth frame using a zero yaw angle + const Dcmf R_to_earth = updateYawInRotMat(0.f, _R_to_earth); + + // the angle of the projection onto the horizontal gives the yaw angle + const Vector3f mag_earth_pred = R_to_earth * mag_init; + yaw_new = -atan2f(mag_earth_pred(1), mag_earth_pred(0)) + getMagDeclination(); + + if (increase_yaw_var) { + yaw_new_variance = sq(fmaxf(_params.mag_heading_noise, 1.0e-2f)); + } + + } else if (_params.mag_fusion_type == MAG_FUSE_TYPE_INDOOR) { + // we are operating temporarily without knowing the earth frame yaw angle + return true; + + } else { + // there is no magnetic yaw observation + return false; + } + + // update quaternion states and corresponding covarainces + resetQuatStateYaw(yaw_new, yaw_new_variance, update_buffer); + + // set the earth magnetic field states using the updated rotation + _state.mag_I = _R_to_earth * mag_init; + + resetMagCov(); + + // record the time for the magnetic field alignment event + _flt_mag_align_start_time = _imu_sample_delayed.time_us; + + return true; +} + +bool Ekf::resetYawToEv() +{ + const float yaw_new = getEuler312Yaw(_ev_sample_delayed.quat); + const float yaw_new_variance = fmaxf(_ev_sample_delayed.angVar, sq(1.0e-2f)); + + resetQuatStateYaw(yaw_new, yaw_new_variance, true); + _R_ev_to_ekf.setIdentity(); + + return true; +} + +// Return the magnetic declination in radians to be used by the alignment and fusion processing +float Ekf::getMagDeclination() +{ + // set source of magnetic declination for internal use + if (_control_status.flags.mag_aligned_in_flight) { + // Use value consistent with earth field state + return atan2f(_state.mag_I(1), _state.mag_I(0)); + + } else if (_params.mag_declination_source & MASK_USE_GEO_DECL) { + // use parameter value until GPS is available, then use value returned by geo library + if (_NED_origin_initialised || ISFINITE(_mag_declination_gps)) { + return _mag_declination_gps; + + } else { + return math::radians(_params.mag_declination_deg); + } + + } else { + // always use the parameter value + return math::radians(_params.mag_declination_deg); + } +} + +void Ekf::constrainStates() +{ + _state.quat_nominal = matrix::constrain(_state.quat_nominal, -1.0f, 1.0f); + _state.vel = matrix::constrain(_state.vel, -1000.0f, 1000.0f); + _state.pos = matrix::constrain(_state.pos, -1.e6f, 1.e6f); + + const float delta_ang_bias_limit = math::radians(20.f) * _dt_ekf_avg; + _state.delta_ang_bias = matrix::constrain(_state.delta_ang_bias, -delta_ang_bias_limit, delta_ang_bias_limit); + + const float delta_vel_bias_limit = _params.acc_bias_lim * _dt_ekf_avg; + _state.delta_vel_bias = matrix::constrain(_state.delta_vel_bias, -delta_vel_bias_limit, delta_vel_bias_limit); + + _state.mag_I = matrix::constrain(_state.mag_I, -1.0f, 1.0f); + _state.mag_B = matrix::constrain(_state.mag_B, -0.5f, 0.5f); + _state.wind_vel = matrix::constrain(_state.wind_vel, -100.0f, 100.0f); +} + +float Ekf::compensateBaroForDynamicPressure(const float baro_alt_uncompensated) const +{ + // calculate static pressure error = Pmeas - Ptruth + // model position error sensitivity as a body fixed ellipse with a different scale in the positive and + // negative X and Y directions. Used to correct baro data for positional errors + const matrix::Dcmf R_to_body(_output_new.quat_nominal.inversed()); + + // Calculate airspeed in body frame + const Vector3f velocity_earth = _output_new.vel - _vel_imu_rel_body_ned; + + const Vector3f wind_velocity_earth(_state.wind_vel(0), _state.wind_vel(1), 0.0f); + + const Vector3f airspeed_earth = velocity_earth - wind_velocity_earth; + + const Vector3f airspeed_body = R_to_body * airspeed_earth; + + const Vector3f K_pstatic_coef(airspeed_body(0) >= 0.0f ? _params.static_pressure_coef_xp : + _params.static_pressure_coef_xn, + airspeed_body(1) >= 0.0f ? _params.static_pressure_coef_yp : _params.static_pressure_coef_yn, + _params.static_pressure_coef_z); + + const Vector3f airspeed_squared = matrix::min(airspeed_body.emult(airspeed_body), sq(_params.max_correction_airspeed)); + + const float pstatic_err = 0.5f * _air_density * (airspeed_squared.dot(K_pstatic_coef)); + + // correct baro measurement using pressure error estimate and assuming sea level gravity + return baro_alt_uncompensated + pstatic_err / (_air_density * CONSTANTS_ONE_G); +} + +// calculate the earth rotation vector +Vector3f Ekf::calcEarthRateNED(float lat_rad) const +{ + return Vector3f(CONSTANTS_EARTH_SPIN_RATE * cosf(lat_rad), + 0.0f, + -CONSTANTS_EARTH_SPIN_RATE * sinf(lat_rad)); +} + +void Ekf::getGpsVelPosInnov(float hvel[2], float &vvel, float hpos[2], float &vpos) const +{ + hvel[0] = _gps_vel_innov(0); + hvel[1] = _gps_vel_innov(1); + vvel = _gps_vel_innov(2); + hpos[0] = _gps_pos_innov(0); + hpos[1] = _gps_pos_innov(1); + vpos = _gps_pos_innov(2); +} + +void Ekf::getGpsVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float &vpos) const +{ + hvel[0] = _gps_vel_innov_var(0); + hvel[1] = _gps_vel_innov_var(1); + vvel = _gps_vel_innov_var(2); + hpos[0] = _gps_pos_innov_var(0); + hpos[1] = _gps_pos_innov_var(1); + vpos = _gps_pos_innov_var(2); +} + +void Ekf::getGpsVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &vpos) const +{ + hvel = _gps_vel_test_ratio(0); + vvel = _gps_vel_test_ratio(1); + hpos = _gps_pos_test_ratio(0); + vpos = _gps_pos_test_ratio(1); +} + +void Ekf::getEvVelPosInnov(float hvel[2], float &vvel, float hpos[2], float &vpos) const +{ + hvel[0] = _ev_vel_innov(0); + hvel[1] = _ev_vel_innov(1); + vvel = _ev_vel_innov(2); + hpos[0] = _ev_pos_innov(0); + hpos[1] = _ev_pos_innov(1); + vpos = _ev_pos_innov(2); +} + +void Ekf::getEvVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float &vpos) const +{ + hvel[0] = _ev_vel_innov_var(0); + hvel[1] = _ev_vel_innov_var(1); + vvel = _ev_vel_innov_var(2); + hpos[0] = _ev_pos_innov_var(0); + hpos[1] = _ev_pos_innov_var(1); + vpos = _ev_pos_innov_var(2); +} + +void Ekf::getEvVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &vpos) const +{ + hvel = _ev_vel_test_ratio(0); + vvel = _ev_vel_test_ratio(1); + hpos = _ev_pos_test_ratio(0); + vpos = _ev_pos_test_ratio(1); +} + +void Ekf::getAuxVelInnov(float aux_vel_innov[2]) const +{ + aux_vel_innov[0] = _aux_vel_innov(0); + aux_vel_innov[1] = _aux_vel_innov(1); +} + +void Ekf::getAuxVelInnovVar(float aux_vel_innov_var[2]) const +{ + aux_vel_innov_var[0] = _aux_vel_innov_var(0); + aux_vel_innov_var[1] = _aux_vel_innov_var(1); +} + +// get the state vector at the delayed time horizon +matrix::Vector Ekf::getStateAtFusionHorizonAsVector() const +{ + matrix::Vector state; + state.slice<4, 1>(0, 0) = _state.quat_nominal; + state.slice<3, 1>(4, 0) = _state.vel; + state.slice<3, 1>(7, 0) = _state.pos; + state.slice<3, 1>(10, 0) = _state.delta_ang_bias; + state.slice<3, 1>(13, 0) = _state.delta_vel_bias; + state.slice<3, 1>(16, 0) = _state.mag_I; + state.slice<3, 1>(19, 0) = _state.mag_B; + state.slice<2, 1>(22, 0) = _state.wind_vel; + return state; +} + +bool Ekf::getEkfGlobalOrigin(uint64_t &origin_time, double &latitude, double &longitude, float &origin_alt) const +{ + origin_time = _last_gps_origin_time_us; + latitude = math::degrees(_pos_ref.lat_rad); + longitude = math::degrees(_pos_ref.lon_rad); + origin_alt = _gps_alt_ref; + return _NED_origin_initialised; +} + +bool Ekf::setEkfGlobalOrigin(const double latitude, const double longitude, const float altitude) +{ + bool current_pos_available = false; + double current_lat = static_cast(NAN); + double current_lon = static_cast(NAN); + float current_alt = 0.f; + + // if we are already doing aiding, correct for the change in position since the EKF started navigating + if (map_projection_initialized(&_pos_ref) && isHorizontalAidingActive()) { + map_projection_reproject(&_pos_ref, _state.pos(0), _state.pos(1), ¤t_lat, ¤t_lon); + current_alt = -_state.pos(2) + _gps_alt_ref; + current_pos_available = true; + } + + // reinitialize map projection to latitude, longitude, altitude, and reset position + if (map_projection_init_timestamped(&_pos_ref, latitude, longitude, _time_last_imu) == 0) { + if (current_pos_available) { + // reset horizontal position + Vector2f position; + map_projection_project(&_pos_ref, current_lat, current_lon, &position(0), &position(1)); + resetHorizontalPositionTo(position); + + // reset altitude + _gps_alt_ref = altitude; + resetVerticalPositionTo(_gps_alt_ref - current_alt); + } else { + // reset altitude + _gps_alt_ref = altitude; + } + + return true; + } + + return false; +} + +/* + First argument returns GPS drift metrics in the following array locations + 0 : Horizontal position drift rate (m/s) + 1 : Vertical position drift rate (m/s) + 2 : Filtered horizontal velocity (m/s) + Second argument returns true when IMU movement is blocking the drift calculation + Function returns true if the metrics have been updated and not returned previously by this function +*/ +bool Ekf::get_gps_drift_metrics(float drift[3], bool *blocked) +{ + memcpy(drift, _gps_drift_metrics, 3 * sizeof(float)); + *blocked = !_control_status.flags.vehicle_at_rest; + + if (_gps_drift_updated) { + _gps_drift_updated = false; + return true; + } + + return false; +} + +// get the 1-sigma horizontal and vertical position uncertainty of the ekf WGS-84 position +void Ekf::get_ekf_gpos_accuracy(float *ekf_eph, float *ekf_epv) const +{ + // report absolute accuracy taking into account the uncertainty in location of the origin + // If not aiding, return 0 for horizontal position estimate as no estimate is available + // TODO - allow for baro drift in vertical position error + float hpos_err = sqrtf(P(7, 7) + P(8, 8) + sq(_gps_origin_eph)); + + // If we are dead-reckoning, use the innovations as a conservative alternate measure of the horizontal position error + // The reason is that complete rejection of measurements is often caused by heading misalignment or inertial sensing errors + // and using state variances for accuracy reporting is overly optimistic in these situations + if (_is_dead_reckoning && (_control_status.flags.gps)) { + hpos_err = math::max(hpos_err, sqrtf(sq(_gps_pos_innov(0)) + sq(_gps_pos_innov(1)))); + + } else if (_is_dead_reckoning && (_control_status.flags.ev_pos)) { + hpos_err = math::max(hpos_err, sqrtf(sq(_ev_pos_innov(0)) + sq(_ev_pos_innov(1)))); + } + + *ekf_eph = hpos_err; + *ekf_epv = sqrtf(P(9, 9) + sq(_gps_origin_epv)); +} + +// get the 1-sigma horizontal and vertical position uncertainty of the ekf local position +void Ekf::get_ekf_lpos_accuracy(float *ekf_eph, float *ekf_epv) const +{ + // TODO - allow for baro drift in vertical position error + float hpos_err = sqrtf(P(7, 7) + P(8, 8)); + + // If we are dead-reckoning for too long, use the innovations as a conservative alternate measure of the horizontal position error + // The reason is that complete rejection of measurements is often caused by heading misalignment or inertial sensing errors + // and using state variances for accuracy reporting is overly optimistic in these situations + if (_deadreckon_time_exceeded && _control_status.flags.gps) { + hpos_err = math::max(hpos_err, sqrtf(sq(_gps_pos_innov(0)) + sq(_gps_pos_innov(1)))); + } + + *ekf_eph = hpos_err; + *ekf_epv = sqrtf(P(9, 9)); +} + +// get the 1-sigma horizontal and vertical velocity uncertainty +void Ekf::get_ekf_vel_accuracy(float *ekf_evh, float *ekf_evv) const +{ + float hvel_err = sqrtf(P(4, 4) + P(5, 5)); + + // If we are dead-reckoning for too long, use the innovations as a conservative alternate measure of the horizontal velocity error + // The reason is that complete rejection of measurements is often caused by heading misalignment or inertial sensing errors + // and using state variances for accuracy reporting is overly optimistic in these situations + if (_deadreckon_time_exceeded) { + float vel_err_conservative = 0.0f; + + if (_control_status.flags.opt_flow) { + float gndclearance = math::max(_params.rng_gnd_clearance, 0.1f); + vel_err_conservative = math::max((_terrain_vpos - _state.pos(2)), gndclearance) * _flow_innov.norm(); + } + + if (_control_status.flags.gps) { + vel_err_conservative = math::max(vel_err_conservative, sqrtf(sq(_gps_pos_innov(0)) + sq(_gps_pos_innov(1)))); + + } else if (_control_status.flags.ev_pos) { + vel_err_conservative = math::max(vel_err_conservative, sqrtf(sq(_ev_pos_innov(0)) + sq(_ev_pos_innov(1)))); + } + + if (_control_status.flags.ev_vel) { + vel_err_conservative = math::max(vel_err_conservative, sqrtf(sq(_ev_vel_innov(0)) + sq(_ev_vel_innov(1)))); + } + + hvel_err = math::max(hvel_err, vel_err_conservative); + } + + *ekf_evh = hvel_err; + *ekf_evv = sqrtf(P(6, 6)); +} + +/* +Returns the following vehicle control limits required by the estimator to keep within sensor limitations. +vxy_max : Maximum ground relative horizontal speed (meters/sec). NaN when limiting is not needed. +vz_max : Maximum ground relative vertical speed (meters/sec). NaN when limiting is not needed. +hagl_min : Minimum height above ground (meters). NaN when limiting is not needed. +hagl_max : Maximum height above ground (meters). NaN when limiting is not needed. +*/ +void Ekf::get_ekf_ctrl_limits(float *vxy_max, float *vz_max, float *hagl_min, float *hagl_max) const +{ + // Calculate range finder limits + const float rangefinder_hagl_min = _range_sensor.getValidMinVal(); + // Allow use of 75% of rangefinder maximum range to allow for angular motion + const float rangefinder_hagl_max = 0.75f * _range_sensor.getValidMaxVal(); + + // Calculate optical flow limits + // Allow ground relative velocity to use 50% of available flow sensor range to allow for angular motion + const float flow_vxy_max = fmaxf(0.5f * _flow_max_rate * (_terrain_vpos - _state.pos(2)), 0.0f); + const float flow_hagl_min = _flow_min_distance; + const float flow_hagl_max = _flow_max_distance; + + // TODO : calculate visual odometry limits + + const bool relying_on_rangefinder = _control_status.flags.rng_hgt && !_params.range_aid; + + const bool relying_on_optical_flow = isOnlyActiveSourceOfHorizontalAiding(_control_status.flags.opt_flow); + + // Do not require limiting by default + *vxy_max = NAN; + *vz_max = NAN; + *hagl_min = NAN; + *hagl_max = NAN; + + // Keep within range sensor limit when using rangefinder as primary height source + if (relying_on_rangefinder) { + *vxy_max = NAN; + *vz_max = NAN; + *hagl_min = rangefinder_hagl_min; + *hagl_max = rangefinder_hagl_max; + } + + // Keep within flow AND range sensor limits when exclusively using optical flow + if (relying_on_optical_flow) { + *vxy_max = flow_vxy_max; + *vz_max = NAN; + *hagl_min = fmaxf(rangefinder_hagl_min, flow_hagl_min); + *hagl_max = fminf(rangefinder_hagl_max, flow_hagl_max); + } +} + +void Ekf::resetImuBias() +{ + resetGyroBias(); + resetAccelBias(); +} + +void Ekf::resetGyroBias() +{ + // Zero the delta angle and delta velocity bias states + _state.delta_ang_bias.zero(); + + // Zero the corresponding covariances and set + // variances to the values use for initial alignment + P.uncorrelateCovarianceSetVariance<3>(10, sq(_params.switch_on_gyro_bias * FILTER_UPDATE_PERIOD_S)); +} + +void Ekf::resetAccelBias() +{ + // Zero the delta angle and delta velocity bias states + _state.delta_vel_bias.zero(); + + // Zero the corresponding covariances and set + // variances to the values use for initial alignment + P.uncorrelateCovarianceSetVariance<3>(13, sq(_params.switch_on_accel_bias * FILTER_UPDATE_PERIOD_S)); + + // Set previous frame values + _prev_dvel_bias_var = P.slice<3, 3>(13, 13).diag(); +} + +void Ekf::resetMagBias() +{ + // Zero the magnetometer bias states + _state.mag_B.zero(); + + // Zero the corresponding covariances and set + // variances to the values use for initial alignment + P.uncorrelateCovarianceSetVariance<3>(19, sq(_params.mag_noise)); + + // reset any saved covariance data for re-use when auto-switching between heading and 3-axis fusion + // _saved_mag_bf_variance[0] is the the D earth axis + _saved_mag_bf_variance[1] = 0; + _saved_mag_bf_variance[2] = 0; + _saved_mag_bf_variance[3] = 0; +} + +// get EKF innovation consistency check status information comprising of: +// status - a bitmask integer containing the pass/fail status for each EKF measurement innovation consistency check +// Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold. +// A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF +// Where a measurement type is a vector quantity, eg magnetometer, GPS position, etc, the maximum value is returned. +void Ekf::get_innovation_test_status(uint16_t &status, float &mag, float &vel, float &pos, float &hgt, float &tas, + float &hagl, float &beta) const +{ + // return the integer bitmask containing the consistency check pass/fail status + status = _innov_check_fail_status.value; + + // return the largest magnetometer innovation test ratio + mag = sqrtf(math::max(_yaw_test_ratio, _mag_test_ratio.max())); + + // return the largest velocity and position innovation test ratio + vel = NAN; + pos = NAN; + + if (_control_status.flags.gps) { + float gps_vel = sqrtf(math::max(_gps_vel_test_ratio(0), _gps_vel_test_ratio(1))); + vel = math::max(gps_vel, FLT_MIN); + + float gps_pos = sqrtf(_gps_pos_test_ratio(0)); + pos = math::max(gps_pos, FLT_MIN); + } + + if (_control_status.flags.ev_vel) { + float ev_vel = sqrtf(math::max(_ev_vel_test_ratio(0), _ev_vel_test_ratio(1))); + vel = math::max(math::max(vel, ev_vel), FLT_MIN); + } + + if (_control_status.flags.ev_pos) { + float ev_pos = sqrtf(_ev_pos_test_ratio(0)); + pos = math::max(math::max(pos, ev_pos), FLT_MIN); + } + + if (isOnlyActiveSourceOfHorizontalAiding(_control_status.flags.opt_flow)) { + float of_vel = sqrtf(_optflow_test_ratio); + vel = math::max(of_vel, FLT_MIN); + } + + // return the vertical position innovation test ratio + if (_control_status.flags.baro_hgt) { + hgt = math::max(sqrtf(_baro_hgt_test_ratio(1)), FLT_MIN); + + } else if (_control_status.flags.gps_hgt) { + hgt = math::max(sqrtf(_gps_pos_test_ratio(1)), FLT_MIN); + + } else if (_control_status.flags.rng_hgt) { + hgt = math::max(sqrtf(_rng_hgt_test_ratio(1)), FLT_MIN); + + } else if (_control_status.flags.ev_hgt) { + hgt = math::max(sqrtf(_ev_pos_test_ratio(1)), FLT_MIN); + + } else { + hgt = NAN; + } + + // return the airspeed fusion innovation test ratio + tas = sqrtf(_tas_test_ratio); + + // return the terrain height innovation test ratio + hagl = sqrtf(_hagl_test_ratio); + + // return the synthetic sideslip innovation test ratio + beta = sqrtf(_beta_test_ratio); +} + +// return a bitmask integer that describes which state estimates are valid +void Ekf::get_ekf_soln_status(uint16_t *status) const +{ + ekf_solution_status soln_status; + // TODO: Is this accurate enough? + soln_status.flags.attitude = _control_status.flags.tilt_align && _control_status.flags.yaw_align && (_fault_status.value == 0); + soln_status.flags.velocity_horiz = (isHorizontalAidingActive() || (_control_status.flags.fuse_beta && _control_status.flags.fuse_aspd)) && (_fault_status.value == 0); + soln_status.flags.velocity_vert = (_control_status.flags.baro_hgt || _control_status.flags.ev_hgt || _control_status.flags.gps_hgt || _control_status.flags.rng_hgt) && (_fault_status.value == 0); + soln_status.flags.pos_horiz_rel = (_control_status.flags.gps || _control_status.flags.ev_pos || _control_status.flags.opt_flow) && (_fault_status.value == 0); + soln_status.flags.pos_horiz_abs = (_control_status.flags.gps || _control_status.flags.ev_pos) && (_fault_status.value == 0); + soln_status.flags.pos_vert_abs = soln_status.flags.velocity_vert; + soln_status.flags.pos_vert_agl = isTerrainEstimateValid(); + soln_status.flags.const_pos_mode = !soln_status.flags.velocity_horiz; + soln_status.flags.pred_pos_horiz_rel = soln_status.flags.pos_horiz_rel; + soln_status.flags.pred_pos_horiz_abs = soln_status.flags.pos_horiz_abs; + const bool gps_vel_innov_bad = (_gps_vel_test_ratio(0) > 1.0f) || (_gps_vel_test_ratio(1) > 1.0f); + const bool gps_pos_innov_bad = (_gps_pos_test_ratio(0) > 1.0f); + const bool mag_innov_good = (_mag_test_ratio.max() < 1.0f) && (_yaw_test_ratio < 1.0f); + soln_status.flags.gps_glitch = (gps_vel_innov_bad || gps_pos_innov_bad) && mag_innov_good; + soln_status.flags.accel_error = _fault_status.flags.bad_acc_vertical; + *status = soln_status.value; +} + +void Ekf::fuse(const Vector24f &K, float innovation) +{ + _state.quat_nominal -= K.slice<4, 1>(0, 0) * innovation; + _state.quat_nominal.normalize(); + _state.vel -= K.slice<3, 1>(4, 0) * innovation; + _state.pos -= K.slice<3, 1>(7, 0) * innovation; + _state.delta_ang_bias -= K.slice<3, 1>(10, 0) * innovation; + _state.delta_vel_bias -= K.slice<3, 1>(13, 0) * innovation; + _state.mag_I -= K.slice<3, 1>(16, 0) * innovation; + _state.mag_B -= K.slice<3, 1>(19, 0) * innovation; + _state.wind_vel -= K.slice<2, 1>(22, 0) * innovation; +} + +void Ekf::uncorrelateQuatFromOtherStates() +{ + P.slice<_k_num_states - 4, 4>(4, 0) = 0.f; + P.slice<4, _k_num_states - 4>(0, 4) = 0.f; +} + +// return true if we are totally reliant on inertial dead-reckoning for position +void Ekf::update_deadreckoning_status() +{ + const bool velPosAiding = (_control_status.flags.gps || _control_status.flags.ev_pos || _control_status.flags.ev_vel) + && (isRecent(_time_last_hor_pos_fuse, _params.no_aid_timeout_max) + || isRecent(_time_last_hor_vel_fuse, _params.no_aid_timeout_max) + || isRecent(_time_last_delpos_fuse, _params.no_aid_timeout_max)); + const bool optFlowAiding = _control_status.flags.opt_flow && isRecent(_time_last_of_fuse, _params.no_aid_timeout_max); + const bool airDataAiding = _control_status.flags.wind && + isRecent(_time_last_arsp_fuse, _params.no_aid_timeout_max) && + isRecent(_time_last_beta_fuse, _params.no_aid_timeout_max); + + _is_wind_dead_reckoning = !velPosAiding && !optFlowAiding && airDataAiding; + _is_dead_reckoning = !velPosAiding && !optFlowAiding && !airDataAiding; + + if (!_is_dead_reckoning) { + _time_last_aiding = _time_last_imu - _params.no_aid_timeout_max; + } + + // report if we have been deadreckoning for too long, initial state is deadreckoning until aiding is present + _deadreckon_time_exceeded = (_time_last_aiding == 0) + || isTimedOut(_time_last_aiding, (uint64_t)_params.valid_timeout_max); +} + +// calculate the variances for the rotation vector equivalent +Vector3f Ekf::calcRotVecVariances() +{ + Vector3f rot_var_vec; + float q0, q1, q2, q3; + + if (_state.quat_nominal(0) >= 0.0f) { + q0 = _state.quat_nominal(0); + q1 = _state.quat_nominal(1); + q2 = _state.quat_nominal(2); + q3 = _state.quat_nominal(3); + + } else { + q0 = -_state.quat_nominal(0); + q1 = -_state.quat_nominal(1); + q2 = -_state.quat_nominal(2); + q3 = -_state.quat_nominal(3); + } + float t2 = q0*q0; + float t3 = acosf(q0); + float t4 = -t2+1.0f; + float t5 = t2-1.0f; + if ((t4 > 1e-9f) && (t5 < -1e-9f)) { + float t6 = 1.0f/t5; + float t7 = q1*t6*2.0f; + float t8 = 1.0f/powf(t4,1.5f); + float t9 = q0*q1*t3*t8*2.0f; + float t10 = t7+t9; + float t11 = 1.0f/sqrtf(t4); + float t12 = q2*t6*2.0f; + float t13 = q0*q2*t3*t8*2.0f; + float t14 = t12+t13; + float t15 = q3*t6*2.0f; + float t16 = q0*q3*t3*t8*2.0f; + float t17 = t15+t16; + rot_var_vec(0) = t10*(P(0,0)*t10+P(1,0)*t3*t11*2.0f)+t3*t11*(P(0,1)*t10+P(1,1)*t3*t11*2.0f)*2.0f; + rot_var_vec(1) = t14*(P(0,0)*t14+P(2,0)*t3*t11*2.0f)+t3*t11*(P(0,2)*t14+P(2,2)*t3*t11*2.0f)*2.0f; + rot_var_vec(2) = t17*(P(0,0)*t17+P(3,0)*t3*t11*2.0f)+t3*t11*(P(0,3)*t17+P(3,3)*t3*t11*2.0f)*2.0f; + } else { + rot_var_vec = 4.0f * P.slice<3,3>(1,1).diag(); + } + + return rot_var_vec; +} + +// initialise the quaternion covariances using rotation vector variances +// do not call before quaternion states are initialised +void Ekf::initialiseQuatCovariances(Vector3f &rot_vec_var) +{ + // calculate an equivalent rotation vector from the quaternion + float q0,q1,q2,q3; + if (_state.quat_nominal(0) >= 0.0f) { + q0 = _state.quat_nominal(0); + q1 = _state.quat_nominal(1); + q2 = _state.quat_nominal(2); + q3 = _state.quat_nominal(3); + + } else { + q0 = -_state.quat_nominal(0); + q1 = -_state.quat_nominal(1); + q2 = -_state.quat_nominal(2); + q3 = -_state.quat_nominal(3); + } + float delta = 2.0f*acosf(q0); + float scaler = (delta/sinf(delta*0.5f)); + float rotX = scaler*q1; + float rotY = scaler*q2; + float rotZ = scaler*q3; + + // autocode generated using matlab symbolic toolbox + float t2 = rotX*rotX; + float t4 = rotY*rotY; + float t5 = rotZ*rotZ; + float t6 = t2+t4+t5; + if (t6 > 1e-9f) { + float t7 = sqrtf(t6); + float t8 = t7*0.5f; + float t3 = sinf(t8); + float t9 = t3*t3; + float t10 = 1.0f/t6; + float t11 = 1.0f/sqrtf(t6); + float t12 = cosf(t8); + float t13 = 1.0f/powf(t6,1.5f); + float t14 = t3*t11; + float t15 = rotX*rotY*t3*t13; + float t16 = rotX*rotZ*t3*t13; + float t17 = rotY*rotZ*t3*t13; + float t18 = t2*t10*t12*0.5f; + float t27 = t2*t3*t13; + float t19 = t14+t18-t27; + float t23 = rotX*rotY*t10*t12*0.5f; + float t28 = t15-t23; + float t20 = rotY*rot_vec_var(1)*t3*t11*t28*0.5f; + float t25 = rotX*rotZ*t10*t12*0.5f; + float t31 = t16-t25; + float t21 = rotZ*rot_vec_var(2)*t3*t11*t31*0.5f; + float t22 = t20+t21-rotX*rot_vec_var(0)*t3*t11*t19*0.5f; + float t24 = t15-t23; + float t26 = t16-t25; + float t29 = t4*t10*t12*0.5f; + float t34 = t3*t4*t13; + float t30 = t14+t29-t34; + float t32 = t5*t10*t12*0.5f; + float t40 = t3*t5*t13; + float t33 = t14+t32-t40; + float t36 = rotY*rotZ*t10*t12*0.5f; + float t39 = t17-t36; + float t35 = rotZ*rot_vec_var(2)*t3*t11*t39*0.5f; + float t37 = t15-t23; + float t38 = t17-t36; + float t41 = rot_vec_var(0)*(t15-t23)*(t16-t25); + float t42 = t41-rot_vec_var(1)*t30*t39-rot_vec_var(2)*t33*t39; + float t43 = t16-t25; + float t44 = t17-t36; + + // zero all the quaternion covariances + P.uncorrelateCovarianceSetVariance<2>(0, 0.0f); + P.uncorrelateCovarianceSetVariance<2>(2, 0.0f); + + + // Update the quaternion internal covariances using auto-code generated using matlab symbolic toolbox + P(0,0) = rot_vec_var(0)*t2*t9*t10*0.25f+rot_vec_var(1)*t4*t9*t10*0.25f+rot_vec_var(2)*t5*t9*t10*0.25f; + P(0,1) = t22; + P(0,2) = t35+rotX*rot_vec_var(0)*t3*t11*(t15-rotX*rotY*t10*t12*0.5f)*0.5f-rotY*rot_vec_var(1)*t3*t11*t30*0.5f; + P(0,3) = rotX*rot_vec_var(0)*t3*t11*(t16-rotX*rotZ*t10*t12*0.5f)*0.5f+rotY*rot_vec_var(1)*t3*t11*(t17-rotY*rotZ*t10*t12*0.5f)*0.5f-rotZ*rot_vec_var(2)*t3*t11*t33*0.5f; + P(1,0) = t22; + P(1,1) = rot_vec_var(0)*(t19*t19)+rot_vec_var(1)*(t24*t24)+rot_vec_var(2)*(t26*t26); + P(1,2) = rot_vec_var(2)*(t16-t25)*(t17-rotY*rotZ*t10*t12*0.5f)-rot_vec_var(0)*t19*t28-rot_vec_var(1)*t28*t30; + P(1,3) = rot_vec_var(1)*(t15-t23)*(t17-rotY*rotZ*t10*t12*0.5f)-rot_vec_var(0)*t19*t31-rot_vec_var(2)*t31*t33; + P(2,0) = t35-rotY*rot_vec_var(1)*t3*t11*t30*0.5f+rotX*rot_vec_var(0)*t3*t11*(t15-t23)*0.5f; + P(2,1) = rot_vec_var(2)*(t16-t25)*(t17-t36)-rot_vec_var(0)*t19*t28-rot_vec_var(1)*t28*t30; + P(2,2) = rot_vec_var(1)*(t30*t30)+rot_vec_var(0)*(t37*t37)+rot_vec_var(2)*(t38*t38); + P(2,3) = t42; + P(3,0) = rotZ*rot_vec_var(2)*t3*t11*t33*(-0.5f)+rotX*rot_vec_var(0)*t3*t11*(t16-t25)*0.5f+rotY*rot_vec_var(1)*t3*t11*(t17-t36)*0.5f; + P(3,1) = rot_vec_var(1)*(t15-t23)*(t17-t36)-rot_vec_var(0)*t19*t31-rot_vec_var(2)*t31*t33; + P(3,2) = t42; + P(3,3) = rot_vec_var(2)*(t33*t33)+rot_vec_var(0)*(t43*t43)+rot_vec_var(1)*(t44*t44); + + } else { + // the equations are badly conditioned so use a small angle approximation + P.uncorrelateCovarianceSetVariance<1>(0, 0.0f); + P.uncorrelateCovarianceSetVariance<3>(1, 0.25f * rot_vec_var); + } +} + +void Ekf::setControlBaroHeight() +{ + _control_status.flags.baro_hgt = true; + + _control_status.flags.gps_hgt = false; + _control_status.flags.rng_hgt = false; + _control_status.flags.ev_hgt = false; +} + +void Ekf::setControlRangeHeight() +{ + _control_status.flags.rng_hgt = true; + + _control_status.flags.baro_hgt = false; + _control_status.flags.gps_hgt = false; + _control_status.flags.ev_hgt = false; +} + +void Ekf::setControlGPSHeight() +{ + _control_status.flags.gps_hgt = true; + + _control_status.flags.baro_hgt = false; + _control_status.flags.rng_hgt = false; + _control_status.flags.ev_hgt = false; +} + +void Ekf::setControlEVHeight() +{ + _control_status.flags.ev_hgt = true; + + _control_status.flags.baro_hgt = false; + _control_status.flags.gps_hgt = false; + _control_status.flags.rng_hgt = false; +} + +void Ekf::stopMagFusion() +{ + stopMag3DFusion(); + stopMagHdgFusion(); + clearMagCov(); +} + +void Ekf::stopMag3DFusion() +{ + // save covariance data for re-use if currently doing 3-axis fusion + if (_control_status.flags.mag_3D) { + saveMagCovData(); + _control_status.flags.mag_3D = false; + } +} + +void Ekf::stopMagHdgFusion() +{ + _control_status.flags.mag_hdg = false; +} + +void Ekf::startMagHdgFusion() +{ + stopMag3DFusion(); + _control_status.flags.mag_hdg = true; +} + +void Ekf::startMag3DFusion() +{ + if (!_control_status.flags.mag_3D) { + stopMagHdgFusion(); + zeroMagCov(); + loadMagCovData(); + _control_status.flags.mag_3D = true; + } +} + +void Ekf::startBaroHgtFusion() +{ + setControlBaroHeight(); + + // We don't need to set a height sensor offset + // since we track a separate _baro_hgt_offset + _hgt_sensor_offset = 0.0f; + + // Turn off ground effect compensation if it times out + if (_control_status.flags.gnd_effect) { + if (isTimedOut(_time_last_gnd_effect_on, GNDEFFECT_TIMEOUT)) { + + _control_status.flags.gnd_effect = false; + } + } +} + +void Ekf::startGpsHgtFusion() +{ + setControlGPSHeight(); + + // we have just switched to using gps height, calculate height sensor offset such that current + // measurement matches our current height estimate + if (_control_status_prev.flags.gps_hgt != _control_status.flags.gps_hgt) { + _hgt_sensor_offset = _gps_sample_delayed.hgt - _gps_alt_ref + _state.pos(2); + } +} + +void Ekf::updateBaroHgtOffset() +{ + // calculate a filtered offset between the baro origin and local NED origin if we are not + // using the baro as a height reference + if (!_control_status.flags.baro_hgt && _baro_data_ready) { + const float local_time_step = math::constrain(1e-6f * _delta_time_baro_us, 0.0f, 1.0f); + + // apply a 10 second first order low pass filter to baro offset + const float offset_rate_correction = 0.1f * (_baro_sample_delayed.hgt + _state.pos(2) - + _baro_hgt_offset); + _baro_hgt_offset += local_time_step * math::constrain(offset_rate_correction, -0.1f, 0.1f); + } +} + +float Ekf::getGpsHeightVariance() +{ + // observation variance - receiver defined and parameter limited + // use 1.5 as a typical ratio of vacc/hacc + const float lower_limit = fmaxf(1.5f * _params.gps_pos_noise, 0.01f); + const float upper_limit = fmaxf(1.5f * _params.pos_noaid_noise, lower_limit); + const float gps_alt_var = sq(math::constrain(_gps_sample_delayed.vacc, lower_limit, upper_limit)); + return gps_alt_var; +} + +Vector3f Ekf::getVisionVelocityInEkfFrame() const +{ + Vector3f vel; + // correct velocity for offset relative to IMU + const Vector3f pos_offset_body = _params.ev_pos_body - _params.imu_pos_body; + const Vector3f vel_offset_body = _ang_rate_delayed_raw % pos_offset_body; + + // rotate measurement into correct earth frame if required + switch(_ev_sample_delayed.vel_frame) { + case velocity_frame_t::BODY_FRAME_FRD: + vel = _R_to_earth * (_ev_sample_delayed.vel - vel_offset_body); + break; + case velocity_frame_t::LOCAL_FRAME_FRD: + const Vector3f vel_offset_earth = _R_to_earth * vel_offset_body; + if (_params.fusion_mode & MASK_ROTATE_EV) + { + vel = _R_ev_to_ekf *_ev_sample_delayed.vel - vel_offset_earth; + } else { + vel = _ev_sample_delayed.vel - vel_offset_earth; + } + break; + } + + return vel; +} + +Vector3f Ekf::getVisionVelocityVarianceInEkfFrame() const +{ + Matrix3f ev_vel_cov = _ev_sample_delayed.velCov; + + // rotate measurement into correct earth frame if required + switch(_ev_sample_delayed.vel_frame) { + case velocity_frame_t::BODY_FRAME_FRD: + ev_vel_cov = _R_to_earth * ev_vel_cov * _R_to_earth.transpose(); + break; + + case velocity_frame_t::LOCAL_FRAME_FRD: + if(_params.fusion_mode & MASK_ROTATE_EV) + { + ev_vel_cov = _R_ev_to_ekf * ev_vel_cov * _R_ev_to_ekf.transpose(); + } + break; + } + + return ev_vel_cov.diag(); +} + +// update the rotation matrix which rotates EV measurements into the EKF's navigation frame +void Ekf::calcExtVisRotMat() +{ + // Calculate the quaternion delta that rotates from the EV to the EKF reference frame at the EKF fusion time horizon. + const Quatf q_error((_state.quat_nominal * _ev_sample_delayed.quat.inversed()).normalized()); + _R_ev_to_ekf = Dcmf(q_error); +} + +// Increase the yaw error variance of the quaternions +// Argument is additional yaw variance in rad**2 +void Ekf::increaseQuatYawErrVariance(float yaw_variance) +{ + // See DeriveYawResetEquations.m for derivation which produces code fragments in C_code4.txt file + // The auto-code was cleaned up and had terms multiplied by zero removed to give the following: + + // Intermediate variables + float SG[3]; + SG[0] = sq(_state.quat_nominal(0)) - sq(_state.quat_nominal(1)) - sq(_state.quat_nominal(2)) + sq(_state.quat_nominal(3)); + SG[1] = 2*_state.quat_nominal(0)*_state.quat_nominal(2) - 2*_state.quat_nominal(1)*_state.quat_nominal(3); + SG[2] = 2*_state.quat_nominal(0)*_state.quat_nominal(1) + 2*_state.quat_nominal(2)*_state.quat_nominal(3); + + float SQ[4]; + SQ[0] = 0.5f * ((_state.quat_nominal(1)*SG[0]) - (_state.quat_nominal(0)*SG[2]) + (_state.quat_nominal(3)*SG[1])); + SQ[1] = 0.5f * ((_state.quat_nominal(0)*SG[1]) - (_state.quat_nominal(2)*SG[0]) + (_state.quat_nominal(3)*SG[2])); + SQ[2] = 0.5f * ((_state.quat_nominal(3)*SG[0]) - (_state.quat_nominal(1)*SG[1]) + (_state.quat_nominal(2)*SG[2])); + SQ[3] = 0.5f * ((_state.quat_nominal(0)*SG[0]) + (_state.quat_nominal(1)*SG[2]) + (_state.quat_nominal(2)*SG[1])); + + // Limit yaw variance increase to prevent a badly conditioned covariance matrix + yaw_variance = fminf(yaw_variance, 1.0e-2f); + + // Add covariances for additonal yaw uncertainty to existing covariances. + // This assumes that the additional yaw error is uncorrrelated to existing errors + P(0,0) += yaw_variance*sq(SQ[2]); + P(0,1) += yaw_variance*SQ[1]*SQ[2]; + P(1,1) += yaw_variance*sq(SQ[1]); + P(0,2) += yaw_variance*SQ[0]*SQ[2]; + P(1,2) += yaw_variance*SQ[0]*SQ[1]; + P(2,2) += yaw_variance*sq(SQ[0]); + P(0,3) -= yaw_variance*SQ[2]*SQ[3]; + P(1,3) -= yaw_variance*SQ[1]*SQ[3]; + P(2,3) -= yaw_variance*SQ[0]*SQ[3]; + P(3,3) += yaw_variance*sq(SQ[3]); + P(1,0) += yaw_variance*SQ[1]*SQ[2]; + P(2,0) += yaw_variance*SQ[0]*SQ[2]; + P(2,1) += yaw_variance*SQ[0]*SQ[1]; + P(3,0) -= yaw_variance*SQ[2]*SQ[3]; + P(3,1) -= yaw_variance*SQ[1]*SQ[3]; + P(3,2) -= yaw_variance*SQ[0]*SQ[3]; +} + +// save covariance data for re-use when auto-switching between heading and 3-axis fusion +void Ekf::saveMagCovData() +{ + // save variances for the D earth axis and XYZ body axis field + for (uint8_t index = 0; index <= 3; index ++) { + _saved_mag_bf_variance[index] = P(index + 18, index + 18); + } + + // save the NE axis covariance sub-matrix + _saved_mag_ef_covmat = P.slice<2, 2>(16, 16); +} + +void Ekf::loadMagCovData() +{ + // re-instate variances for the D earth axis and XYZ body axis field + for (uint8_t index = 0; index <= 3; index ++) { + P(index + 18, index + 18) = _saved_mag_bf_variance[index]; + } + + // re-instate the NE axis covariance sub-matrix + P.slice<2, 2>(16, 16) = _saved_mag_ef_covmat; +} + +void Ekf::startGpsFusion() +{ + resetHorizontalPositionToGps(); + + // when using optical flow, + // velocity reset is not necessary + if (!_control_status.flags.opt_flow) { + resetVelocityToGps(); + } + + _information_events.flags.starting_gps_fusion = true; + ECL_INFO("starting GPS fusion"); + _control_status.flags.gps = true; +} + +void Ekf::stopGpsFusion() +{ + stopGpsPosFusion(); + stopGpsVelFusion(); + stopGpsYawFusion(); + + // We do not need to know the true North anymore + // EV yaw can start again + _inhibit_ev_yaw_use = false;; +} + +void Ekf::stopGpsPosFusion() +{ + _control_status.flags.gps = false; + _control_status.flags.gps_hgt = false; + _gps_pos_innov.setZero(); + _gps_pos_innov_var.setZero(); + _gps_pos_test_ratio.setZero(); +} + +void Ekf::stopGpsVelFusion() +{ + _gps_vel_innov.setZero(); + _gps_vel_innov_var.setZero(); + _gps_vel_test_ratio.setZero(); +} + +void Ekf::startGpsYawFusion() +{ + _control_status.flags.mag_dec = false; + stopEvYawFusion(); + stopMagHdgFusion(); + stopMag3DFusion(); + _control_status.flags.gps_yaw = true; +} + +void Ekf::stopGpsYawFusion() +{ + _control_status.flags.gps_yaw = false; +} + +void Ekf::startEvPosFusion() +{ + _control_status.flags.ev_pos = true; + resetHorizontalPosition(); + _information_events.flags.starting_vision_pos_fusion = true; + ECL_INFO("starting vision pos fusion"); +} + +void Ekf::startEvVelFusion() +{ + _control_status.flags.ev_vel = true; + resetVelocity(); + _information_events.flags.starting_vision_vel_fusion = true; + ECL_INFO("starting vision vel fusion"); +} + +void Ekf::startEvYawFusion() +{ + // turn on fusion of external vision yaw measurements and disable all magnetometer fusion + _control_status.flags.ev_yaw = true; + _control_status.flags.mag_dec = false; + + stopMagHdgFusion(); + stopMag3DFusion(); + + _information_events.flags.starting_vision_yaw_fusion = true; + ECL_INFO("starting vision yaw fusion"); +} + +void Ekf::stopEvFusion() +{ + stopEvPosFusion(); + stopEvVelFusion(); + stopEvYawFusion(); +} + +void Ekf::stopEvPosFusion() +{ + _control_status.flags.ev_pos = false; + _ev_pos_innov.setZero(); + _ev_pos_innov_var.setZero(); + _ev_pos_test_ratio.setZero(); +} + +void Ekf::stopEvVelFusion() +{ + _control_status.flags.ev_vel = false; + _ev_vel_innov.setZero(); + _ev_vel_innov_var.setZero(); + _ev_vel_test_ratio.setZero(); +} + +void Ekf::stopEvYawFusion() +{ + _control_status.flags.ev_yaw = false; +} + +void Ekf::stopAuxVelFusion() +{ + _aux_vel_innov.setZero(); + _aux_vel_innov_var.setZero(); + _aux_vel_test_ratio.setZero(); +} + +void Ekf::stopFlowFusion() +{ + _control_status.flags.opt_flow = false; + _flow_innov.setZero(); + _flow_innov_var.setZero(); + _optflow_test_ratio = 0.0f; +} + +void Ekf::resetQuatStateYaw(float yaw, float yaw_variance, bool update_buffer) +{ + // save a copy of the quaternion state for later use in calculating the amount of reset change + const Quatf quat_before_reset = _state.quat_nominal; + + // update transformation matrix from body to world frame using the current estimate + _R_to_earth = Dcmf(_state.quat_nominal); + + // update the rotation matrix using the new yaw value + _R_to_earth = updateYawInRotMat(yaw, _R_to_earth); + + // calculate the amount that the quaternion has changed by + const Quatf quat_after_reset(_R_to_earth); + const Quatf q_error((quat_after_reset * quat_before_reset.inversed()).normalized()); + + // update quaternion states + _state.quat_nominal = quat_after_reset; + uncorrelateQuatFromOtherStates(); + + // record the state change + _state_reset_status.quat_change = q_error; + + // update the yaw angle variance + if (yaw_variance > FLT_EPSILON) { + increaseQuatYawErrVariance(yaw_variance); + } + + // add the reset amount to the output observer buffered data + if (update_buffer) { + for (uint8_t i = 0; i < _output_buffer.get_length(); i++) { + _output_buffer[i].quat_nominal = _state_reset_status.quat_change * _output_buffer[i].quat_nominal; + } + + // apply the change in attitude quaternion to our newest quaternion estimate + // which was already taken out from the output buffer + _output_new.quat_nominal = _state_reset_status.quat_change * _output_new.quat_nominal; + + } + + // capture the reset event + _state_reset_status.quat_counter++; +} + +// Resets the main Nav EKf yaw to the estimator from the EKF-GSF yaw estimator +// Resets the horizontal velocity and position to the default navigation sensor +// Returns true if the reset was successful +bool Ekf::resetYawToEKFGSF() +{ + // don't allow reet using the EKF-GSF estimate until the filter has started fusing velocity + // data and the yaw estimate has converged + float new_yaw, new_yaw_variance; + + if (!_yawEstimator.getYawData(&new_yaw, &new_yaw_variance)) { + return false; + } + + const bool has_converged = new_yaw_variance < sq(_params.EKFGSF_yaw_err_max); + + if (!has_converged) { + return false; + } + + resetQuatStateYaw(new_yaw, new_yaw_variance, true); + + // reset velocity and position states to GPS - if yaw is fixed then the filter should start to operate correctly + resetVelocity(); + resetHorizontalPosition(); + + // record a magnetic field alignment event to prevent possibility of the EKF trying to reset the yaw to the mag later in flight + _flt_mag_align_start_time = _imu_sample_delayed.time_us; + _control_status.flags.yaw_align = true; + + if (_params.mag_fusion_type == MAG_FUSE_TYPE_NONE) { + _information_events.flags.yaw_aligned_to_imu_gps = true; + ECL_INFO("Yaw aligned using IMU and GPS"); + + } else { + // stop using the magnetometer in the main EKF otherwise it's fusion could drag the yaw around + // and cause another navigation failure + _control_status.flags.mag_fault = true; + _warning_events.flags.emergency_yaw_reset_mag_stopped = true; + ECL_WARN("Emergency yaw reset - mag use stopped"); + } + + return true; +} + +bool Ekf::getDataEKFGSF(float *yaw_composite, float *yaw_variance, float yaw[N_MODELS_EKFGSF], + float innov_VN[N_MODELS_EKFGSF], float innov_VE[N_MODELS_EKFGSF], float weight[N_MODELS_EKFGSF]) +{ + return _yawEstimator.getLogData(yaw_composite, yaw_variance, yaw, innov_VN, innov_VE, weight); +} + +void Ekf::runYawEKFGSF() +{ + float TAS; + + if (isTimedOut(_airspeed_sample_delayed.time_us, 1000000) && _control_status.flags.fixed_wing) { + TAS = _params.EKFGSF_tas_default; + + } else { + TAS = _airspeed_sample_delayed.true_airspeed; + } + + const Vector3f imu_gyro_bias = getGyroBias(); + _yawEstimator.update(_imu_sample_delayed, _control_status.flags.in_air, TAS, imu_gyro_bias); + + // basic sanity check on GPS velocity data + if (_gps_data_ready && _gps_sample_delayed.vacc > FLT_EPSILON && + ISFINITE(_gps_sample_delayed.vel(0)) && ISFINITE(_gps_sample_delayed.vel(1))) { + _yawEstimator.setVelocity(_gps_sample_delayed.vel.xy(), _gps_sample_delayed.vacc); + } +} + +void Ekf::resetGpsDriftCheckFilters() +{ + _gps_velNE_filt.setZero(); + _gps_pos_deriv_filt.setZero(); +} diff --git a/src/lib/ecl/EKF/estimator_interface.cpp b/src/lib/ecl/EKF/estimator_interface.cpp new file mode 100644 index 0000000000..4736569ac3 --- /dev/null +++ b/src/lib/ecl/EKF/estimator_interface.cpp @@ -0,0 +1,586 @@ +/**************************************************************************** + * + * Copyright (c) 2013 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file estimator_interface.cpp + * Definition of base class for attitude estimators + * + * @author Roman Bast + * @author Paul Riseborough + * @author Siddharth B Purohit + */ + +#include "estimator_interface.h" + +#include +#include + +// Accumulate imu data and store to buffer at desired rate +void EstimatorInterface::setIMUData(const imuSample &imu_sample) +{ + // TODO: resolve misplaced responsibility + if (!_initialised) { + _initialised = init(imu_sample.time_us); + } + + const float dt = math::constrain((imu_sample.time_us - _time_last_imu) / 1e6f, 1.0e-4f, 0.02f); + + _time_last_imu = imu_sample.time_us; + + if (_time_last_imu > 0) { + _dt_imu_avg = 0.8f * _dt_imu_avg + 0.2f * dt; + } + + _newest_high_rate_imu_sample = imu_sample; + + // Do not change order of computeVibrationMetric and checkIfVehicleAtRest + computeVibrationMetric(imu_sample); + _control_status.flags.vehicle_at_rest = checkIfVehicleAtRest(dt, imu_sample); + + _imu_updated = _imu_down_sampler.update(imu_sample); + + // accumulate and down-sample imu data and push to the buffer when new downsampled data becomes available + if (_imu_updated) { + + _imu_buffer.push(_imu_down_sampler.getDownSampledImuAndTriggerReset()); + + // get the oldest data from the buffer + _imu_sample_delayed = _imu_buffer.get_oldest(); + + // calculate the minimum interval between observations required to guarantee no loss of data + // this will occur if data is overwritten before its time stamp falls behind the fusion time horizon + _min_obs_interval_us = (imu_sample.time_us - _imu_sample_delayed.time_us) / (_obs_buffer_length - 1); + + setDragData(imu_sample); + } +} + +void EstimatorInterface::computeVibrationMetric(const imuSample &imu) +{ + // calculate a metric which indicates the amount of coning vibration + Vector3f temp = imu.delta_ang % _delta_ang_prev; + _vibe_metrics(0) = 0.99f * _vibe_metrics(0) + 0.01f * temp.norm(); + + // calculate a metric which indicates the amount of high frequency gyro vibration + temp = imu.delta_ang - _delta_ang_prev; + _delta_ang_prev = imu.delta_ang; + _vibe_metrics(1) = 0.99f * _vibe_metrics(1) + 0.01f * temp.norm(); + + // calculate a metric which indicates the amount of high frequency accelerometer vibration + temp = imu.delta_vel - _delta_vel_prev; + _delta_vel_prev = imu.delta_vel; + _vibe_metrics(2) = 0.99f * _vibe_metrics(2) + 0.01f * temp.norm(); +} + +bool EstimatorInterface::checkIfVehicleAtRest(float dt, const imuSample &imu) +{ + // detect if the vehicle is not moving when on ground + if (!_control_status.flags.in_air) { + if ((_vibe_metrics(1) * 4.0E4f > _params.is_moving_scaler) + || (_vibe_metrics(2) * 2.1E2f > _params.is_moving_scaler) + || ((imu.delta_ang.norm() / dt) > 0.05f * _params.is_moving_scaler)) { + + _time_last_move_detect_us = imu.time_us; + } + + return ((imu.time_us - _time_last_move_detect_us) > (uint64_t)1E6); + + } else { + _time_last_move_detect_us = imu.time_us; + return false; + } +} + + +void EstimatorInterface::setMagData(const magSample &mag_sample) +{ + if (!_initialised || _mag_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_mag_buffer.get_length() < _obs_buffer_length) { + _mag_buffer_fail = !_mag_buffer.allocate(_obs_buffer_length); + + if (_mag_buffer_fail) { + printBufferAllocationFailed("mag"); + return; + } + } + + // downsample to highest possible sensor rate + // by taking the average of incoming sample + _mag_sample_count++; + _mag_data_sum += mag_sample.mag; + _mag_timestamp_sum += mag_sample.time_us / 1000; // Dividing by 1000 to avoid overflow + + // limit data rate to prevent data being lost + if ((mag_sample.time_us - _time_last_mag) > _min_obs_interval_us) { + _time_last_mag = mag_sample.time_us; + + magSample mag_sample_new; + + // Use the time in the middle of the downsampling interval for the sample + mag_sample_new.time_us = 1000 * (_mag_timestamp_sum / _mag_sample_count); + mag_sample_new.time_us -= _params.mag_delay_ms * 1000; + mag_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + mag_sample_new.mag = _mag_data_sum / _mag_sample_count; + + _mag_buffer.push(mag_sample_new); + + _mag_sample_count = 0; + _mag_data_sum.setZero(); + _mag_timestamp_sum = 0; + } +} + +void EstimatorInterface::setGpsData(const gps_message &gps) +{ + if (!_initialised || _gps_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_gps_buffer.get_length() < _obs_buffer_length) { + _gps_buffer_fail = !_gps_buffer.allocate(_obs_buffer_length); + + if (_gps_buffer_fail) { + printBufferAllocationFailed("GPS"); + return; + } + } + + // limit data rate to prevent data being lost + const bool need_gps = (_params.fusion_mode & MASK_USE_GPS) || (_params.vdist_sensor_type == VDIST_SENSOR_GPS); + + // TODO: remove checks that are not timing related + if (((gps.time_usec - _time_last_gps) > _min_obs_interval_us) && need_gps && gps.fix_type > 2) { + _time_last_gps = gps.time_usec; + + gpsSample gps_sample_new; + + gps_sample_new.time_us = gps.time_usec - _params.gps_delay_ms * 1000; + gps_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + gps_sample_new.vel = gps.vel_ned; + + _gps_speed_valid = gps.vel_ned_valid; + gps_sample_new.sacc = gps.sacc; + gps_sample_new.hacc = gps.eph; + gps_sample_new.vacc = gps.epv; + + gps_sample_new.hgt = (float)gps.alt * 1e-3f; + + gps_sample_new.yaw = gps.yaw; + + if (ISFINITE(gps.yaw_offset)) { + _gps_yaw_offset = gps.yaw_offset; + + } else { + _gps_yaw_offset = 0.0f; + } + + // Only calculate the relative position if the WGS-84 location of the origin is set + if (collect_gps(gps)) { + float lpos_x = 0.0f; + float lpos_y = 0.0f; + map_projection_project(&_pos_ref, (gps.lat / 1.0e7), (gps.lon / 1.0e7), &lpos_x, &lpos_y); + gps_sample_new.pos(0) = lpos_x; + gps_sample_new.pos(1) = lpos_y; + + } else { + gps_sample_new.pos(0) = 0.0f; + gps_sample_new.pos(1) = 0.0f; + } + + _gps_buffer.push(gps_sample_new); + } +} + +void EstimatorInterface::setBaroData(const baroSample &baro_sample) +{ + if (!_initialised || _baro_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_baro_buffer.get_length() < _obs_buffer_length) { + _baro_buffer_fail = !_baro_buffer.allocate(_obs_buffer_length); + + if (_baro_buffer_fail) { + printBufferAllocationFailed("baro"); + return; + } + } + + // downsample to highest possible sensor rate + // by baro data by taking the average of incoming sample + _baro_sample_count++; + _baro_alt_sum += baro_sample.hgt; + _baro_timestamp_sum += baro_sample.time_us / 1000; // Dividing by 1000 to avoid overflow + + // limit data rate to prevent data being lost + if ((baro_sample.time_us - _time_last_baro) > _min_obs_interval_us) { + _time_last_baro = baro_sample.time_us; + + const float baro_alt_avg = _baro_alt_sum / (float)_baro_sample_count; + + baroSample baro_sample_new; + baro_sample_new.hgt = compensateBaroForDynamicPressure(baro_alt_avg); + + // Use the time in the middle of the downsampling interval for the sample + baro_sample_new.time_us = 1000 * (_baro_timestamp_sum / _baro_sample_count); + baro_sample_new.time_us -= _params.baro_delay_ms * 1000; + baro_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + _baro_buffer.push(baro_sample_new); + + _baro_sample_count = 0; + _baro_alt_sum = 0.0f; + _baro_timestamp_sum = 0; + } +} + +void EstimatorInterface::setAirspeedData(const airspeedSample &airspeed_sample) +{ + if (!_initialised || _airspeed_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_airspeed_buffer.get_length() < _obs_buffer_length) { + _airspeed_buffer_fail = !_airspeed_buffer.allocate(_obs_buffer_length); + + if (_airspeed_buffer_fail) { + printBufferAllocationFailed("airspeed"); + return; + } + } + + // limit data rate to prevent data being lost + if ((airspeed_sample.time_us - _time_last_airspeed) > _min_obs_interval_us) { + _time_last_airspeed = airspeed_sample.time_us; + + airspeedSample airspeed_sample_new = airspeed_sample; + + airspeed_sample_new.time_us -= _params.airspeed_delay_ms * 1000; + airspeed_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + _airspeed_buffer.push(airspeed_sample_new); + } +} + +void EstimatorInterface::setRangeData(const rangeSample &range_sample) +{ + if (!_initialised || _range_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_range_buffer.get_length() < _obs_buffer_length) { + _range_buffer_fail = !_range_buffer.allocate(_obs_buffer_length); + + if (_range_buffer_fail) { + printBufferAllocationFailed("range"); + return; + } + } + + // limit data rate to prevent data being lost + if ((range_sample.time_us - _time_last_range) > _min_obs_interval_us) { + _time_last_range = range_sample.time_us; + + rangeSample range_sample_new = range_sample; + range_sample_new.time_us -= _params.range_delay_ms * 1000; + range_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + _range_buffer.push(range_sample_new); + } +} + +void EstimatorInterface::setOpticalFlowData(const flowSample &flow) +{ + if (!_initialised || _flow_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_flow_buffer.get_length() < _imu_buffer_length) { + _flow_buffer_fail = !_flow_buffer.allocate(_imu_buffer_length); + + if (_flow_buffer_fail) { + printBufferAllocationFailed("flow"); + return; + } + } + + // limit data rate to prevent data being lost + if ((flow.time_us - _time_last_optflow) > _min_obs_interval_us) { + _time_last_optflow = flow.time_us; + + flowSample optflow_sample_new = flow; + + optflow_sample_new.time_us -= _params.flow_delay_ms * 1000; + optflow_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + _flow_buffer.push(optflow_sample_new); + } +} + +// set attitude and position data derived from an external vision system +void EstimatorInterface::setExtVisionData(const extVisionSample &evdata) +{ + if (!_initialised || _ev_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_ext_vision_buffer.get_length() < _obs_buffer_length) { + _ev_buffer_fail = !_ext_vision_buffer.allocate(_obs_buffer_length); + + if (_ev_buffer_fail) { + printBufferAllocationFailed("vision"); + return; + } + } + + // limit data rate to prevent data being lost + if ((evdata.time_us - _time_last_ext_vision) > _min_obs_interval_us) { + _time_last_ext_vision = evdata.time_us; + + extVisionSample ev_sample_new = evdata; + // calculate the system time-stamp for the mid point of the integration period + ev_sample_new.time_us -= _params.ev_delay_ms * 1000; + ev_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + _ext_vision_buffer.push(ev_sample_new); + } +} + +void EstimatorInterface::setAuxVelData(const auxVelSample &auxvel_sample) +{ + if (!_initialised || _auxvel_buffer_fail) { + return; + } + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_auxvel_buffer.get_length() < _obs_buffer_length) { + _auxvel_buffer_fail = !_auxvel_buffer.allocate(_obs_buffer_length); + + if (_auxvel_buffer_fail) { + printBufferAllocationFailed("aux vel"); + return; + } + } + + // limit data rate to prevent data being lost + if ((auxvel_sample.time_us - _time_last_auxvel) > _min_obs_interval_us) { + _time_last_auxvel = auxvel_sample.time_us; + + auxVelSample auxvel_sample_new = auxvel_sample; + + auxvel_sample_new.time_us -= _params.auxvel_delay_ms * 1000; + auxvel_sample_new.time_us -= FILTER_UPDATE_PERIOD_MS * 1000 / 2; + + _auxvel_buffer.push(auxvel_sample_new); + } +} + +void EstimatorInterface::setDragData(const imuSample &imu) +{ + // down-sample the drag specific force data by accumulating and calculating the mean when + // sufficient samples have been collected + if ((_params.fusion_mode & MASK_USE_DRAG) && !_drag_buffer_fail) { + + // Allocate the required buffer size if not previously done + // Do not retry if allocation has failed previously + if (_drag_buffer.get_length() < _obs_buffer_length) { + _drag_buffer_fail = !_drag_buffer.allocate(_obs_buffer_length); + + if (_drag_buffer_fail) { + printBufferAllocationFailed("drag"); + return; + } + } + + _drag_sample_count ++; + // note acceleration is accumulated as a delta velocity + _drag_down_sampled.accelXY(0) += imu.delta_vel(0); + _drag_down_sampled.accelXY(1) += imu.delta_vel(1); + _drag_down_sampled.time_us += imu.time_us; + _drag_sample_time_dt += imu.delta_vel_dt; + + // calculate the downsample ratio for drag specific force data + uint8_t min_sample_ratio = (uint8_t) ceilf((float)_imu_buffer_length / _obs_buffer_length); + + if (min_sample_ratio < 5) { + min_sample_ratio = 5; + } + + // calculate and store means from accumulated values + if (_drag_sample_count >= min_sample_ratio) { + // note conversion from accumulated delta velocity to acceleration + _drag_down_sampled.accelXY(0) /= _drag_sample_time_dt; + _drag_down_sampled.accelXY(1) /= _drag_sample_time_dt; + _drag_down_sampled.time_us /= _drag_sample_count; + + // write to buffer + _drag_buffer.push(_drag_down_sampled); + + // reset accumulators + _drag_sample_count = 0; + _drag_down_sampled.accelXY.zero(); + _drag_down_sampled.time_us = 0; + _drag_sample_time_dt = 0.0f; + } + } +} + +bool EstimatorInterface::initialise_interface(uint64_t timestamp) +{ + // find the maximum time delay the buffers are required to handle + // it's reasonable to assume that barometer is always used, and its delay is low + // it's reasonable to assume that aux velocity device has low delay. TODO: check the delay only if the aux device is used + float max_time_delay_ms = math::max(_params.baro_delay_ms, _params.auxvel_delay_ms); + + // using airspeed + if (_params.arsp_thr > FLT_EPSILON) { + max_time_delay_ms = math::max(_params.airspeed_delay_ms, max_time_delay_ms); + } + + // mag mode + if (_params.mag_fusion_type != MAG_FUSE_TYPE_NONE) { + max_time_delay_ms = math::max(_params.mag_delay_ms, max_time_delay_ms); + } + + // range aid or range height + if (_params.range_aid || (_params.vdist_sensor_type == VDIST_SENSOR_RANGE)) { + max_time_delay_ms = math::max(_params.range_delay_ms, max_time_delay_ms); + } + + if (_params.fusion_mode & MASK_USE_GPS) { + max_time_delay_ms = math::max(_params.gps_delay_ms, max_time_delay_ms); + } + + if (_params.fusion_mode & MASK_USE_OF) { + max_time_delay_ms = math::max(_params.flow_delay_ms, max_time_delay_ms); + } + + if (_params.fusion_mode & (MASK_USE_EVPOS | MASK_USE_EVYAW | MASK_USE_EVVEL)) { + max_time_delay_ms = math::max(_params.ev_delay_ms, max_time_delay_ms); + } + + // calculate the IMU buffer length required to accomodate the maximum delay with some allowance for jitter + _imu_buffer_length = ceilf(max_time_delay_ms / FILTER_UPDATE_PERIOD_MS) + 1; + + // set the observation buffer length to handle the minimum time of arrival between observations in combination + // with the worst case delay from current time to ekf fusion time + // allow for worst case 50% extension of the ekf fusion time horizon delay due to timing jitter + const float ekf_delay_ms = max_time_delay_ms * 1.5f; + _obs_buffer_length = ceilf(ekf_delay_ms / _params.sensor_interval_min_ms); + + // limit to be no longer than the IMU buffer (we can't process data faster than the EKF prediction rate) + _obs_buffer_length = math::min(_obs_buffer_length, _imu_buffer_length); + + if (!_imu_buffer.allocate(_imu_buffer_length) || !_output_buffer.allocate(_imu_buffer_length) || !_output_vert_buffer.allocate(_imu_buffer_length)) { + printBufferAllocationFailed("IMU and output"); + return false; + } + + _imu_sample_delayed.time_us = timestamp; + _imu_sample_delayed.delta_vel_clipping[0] = false; + _imu_sample_delayed.delta_vel_clipping[1] = false; + _imu_sample_delayed.delta_vel_clipping[2] = false; + + _fault_status.value = 0; + + return true; +} + +bool EstimatorInterface::isOnlyActiveSourceOfHorizontalAiding(const bool aiding_flag) const +{ + return aiding_flag && !isOtherSourceOfHorizontalAidingThan(aiding_flag); +} + +bool EstimatorInterface::isOtherSourceOfHorizontalAidingThan(const bool aiding_flag) const +{ + const int nb_sources = getNumberOfActiveHorizontalAidingSources(); + return aiding_flag ? nb_sources > 1 : nb_sources > 0; +} + +int EstimatorInterface::getNumberOfActiveHorizontalAidingSources() const +{ + return int(_control_status.flags.gps) + + int(_control_status.flags.opt_flow) + + int(_control_status.flags.ev_pos) + + int(_control_status.flags.ev_vel) + // Combined airspeed and sideslip fusion allows sustained wind relative dead reckoning + // and so is treated as a single aiding source. + + int(_control_status.flags.fuse_aspd && _control_status.flags.fuse_beta); +} + +bool EstimatorInterface::isHorizontalAidingActive() const +{ + return getNumberOfActiveHorizontalAidingSources() > 0; +} + +void EstimatorInterface::printBufferAllocationFailed(const char *buffer_name) +{ + if (buffer_name) { + ECL_ERR("%s buffer allocation failed", buffer_name); + } +} + +void EstimatorInterface::print_status() +{ + ECL_INFO("imu buffer: %d (%d Bytes)", _imu_buffer.get_length(), _imu_buffer.get_total_size()); + ECL_INFO("gps buffer: %d (%d Bytes)", _gps_buffer.get_length(), _gps_buffer.get_total_size()); + ECL_INFO("mag buffer: %d (%d Bytes)", _mag_buffer.get_length(), _mag_buffer.get_total_size()); + ECL_INFO("baro buffer: %d (%d Bytes)", _baro_buffer.get_length(), _baro_buffer.get_total_size()); + ECL_INFO("range buffer: %d (%d Bytes)", _range_buffer.get_length(), _range_buffer.get_total_size()); + ECL_INFO("airspeed buffer: %d (%d Bytes)", _airspeed_buffer.get_length(), _airspeed_buffer.get_total_size()); + ECL_INFO("flow buffer: %d (%d Bytes)", _flow_buffer.get_length(), _flow_buffer.get_total_size()); + ECL_INFO("vision buffer: %d (%d Bytes)", _ext_vision_buffer.get_length(), _ext_vision_buffer.get_total_size()); + ECL_INFO("output buffer: %d (%d Bytes)", _output_buffer.get_length(), _output_buffer.get_total_size()); + ECL_INFO("output vert buffer: %d (%d Bytes)", _output_vert_buffer.get_length(), _output_vert_buffer.get_total_size()); + ECL_INFO("drag buffer: %d (%d Bytes)", _drag_buffer.get_length(), _drag_buffer.get_total_size()); +} diff --git a/src/lib/ecl/EKF/estimator_interface.h b/src/lib/ecl/EKF/estimator_interface.h new file mode 100644 index 0000000000..2eacbb2dd4 --- /dev/null +++ b/src/lib/ecl/EKF/estimator_interface.h @@ -0,0 +1,443 @@ +/**************************************************************************** + * + * Copyright (c) 2015-2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file estimator_interface.h + * Definition of base class for attitude estimators + * + * @author Roman Bast + * + */ + +#pragma once + +#include +#include "common.h" +#include "RingBuffer.h" +#include +#include "imu_down_sampler.hpp" +#include "sensor_range_finder.hpp" +#include "utils.hpp" + +#include +#include +#include + +using namespace estimator; + +class EstimatorInterface +{ +public: + // ask estimator for sensor data collection decision and do any preprocessing if required, returns true if not defined + virtual bool collect_gps(const gps_message &gps) = 0; + + void setIMUData(const imuSample &imu_sample); + + /* + Returns following IMU vibration metrics in the following array locations + 0 : Gyro delta angle coning metric = filtered length of (delta_angle x prev_delta_angle) + 1 : Gyro high frequency vibe = filtered length of (delta_angle - prev_delta_angle) + 2 : Accel high frequency vibe = filtered length of (delta_velocity - prev_delta_velocity) + */ + const Vector3f &getImuVibrationMetrics() const { return _vibe_metrics; } + + void setMagData(const magSample &mag_sample); + + void setGpsData(const gps_message &gps); + + void setBaroData(const baroSample &baro_sample); + + void setAirspeedData(const airspeedSample &airspeed_sample); + + void setRangeData(const rangeSample &range_sample); + + // if optical flow sensor gyro delta angles are not available, set gyro_xyz vector fields to NaN and the EKF will use its internal delta angle data instead + void setOpticalFlowData(const flowSample &flow); + + // set external vision position and attitude data + void setExtVisionData(const extVisionSample &evdata); + + void setAuxVelData(const auxVelSample &auxvel_sample); + + // return a address to the parameters struct + // in order to give access to the application + parameters *getParamHandle() { return &_params; } + + // set vehicle landed status data + void set_in_air_status(bool in_air) + { + if (!in_air) { + _time_last_on_ground_us = _time_last_imu; + + } else { + _time_last_in_air = _time_last_imu; + } + _control_status.flags.in_air = in_air; + } + + // return true if the attitude is usable + bool attitude_valid() const { return ISFINITE(_output_new.quat_nominal(0)) && _control_status.flags.tilt_align; } + + // get vehicle landed status data + bool get_in_air_status() const { return _control_status.flags.in_air; } + + // get wind estimation status + bool get_wind_status() const { return _control_status.flags.wind; } + + // set vehicle is fixed wing status + void set_is_fixed_wing(bool is_fixed_wing) { _control_status.flags.fixed_wing = is_fixed_wing; } + + // set flag if synthetic sideslip measurement should be fused + void set_fuse_beta_flag(bool fuse_beta) { _control_status.flags.fuse_beta = (fuse_beta && _control_status.flags.in_air); } + + // set flag if static pressure rise due to ground effect is expected + // use _params.gnd_effect_deadzone to adjust for expected rise in static pressure + // flag will clear after GNDEFFECT_TIMEOUT uSec + void set_gnd_effect_flag(bool gnd_effect) + { + _control_status.flags.gnd_effect = gnd_effect; + _time_last_gnd_effect_on = _time_last_imu; + } + + // set air density used by the multi-rotor specific drag force fusion + void set_air_density(float air_density) { _air_density = air_density; } + + // set sensor limitations reported by the rangefinder + void set_rangefinder_limits(float min_distance, float max_distance) + { + _range_sensor.setLimits(min_distance, max_distance); + } + + // set sensor limitations reported by the optical flow sensor + void set_optical_flow_limits(float max_flow_rate, float min_distance, float max_distance) + { + _flow_max_rate = max_flow_rate; + _flow_min_distance = min_distance; + _flow_max_distance = max_distance; + } + + // the flags considered are opt_flow, gps, ev_vel and ev_pos + bool isOnlyActiveSourceOfHorizontalAiding(bool aiding_flag) const; + + /* + * Check if there are any other active source of horizontal aiding + * Warning: does not tell if the selected source is + * active, use isOnlyActiveSourceOfHorizontalAiding() for this + * + * The flags considered are opt_flow, gps, ev_vel and ev_pos + * + * @param aiding_flag a flag in _control_status.flags + * @return true if an other source than aiding_flag is active + */ + bool isOtherSourceOfHorizontalAidingThan(bool aiding_flag) const; + + // Return true if at least one source of horizontal aiding is active + // the flags considered are opt_flow, gps, ev_vel and ev_pos + bool isHorizontalAidingActive() const; + + int getNumberOfActiveHorizontalAidingSources() const; + + // return true if the EKF is dead reckoning the position using inertial data only + bool inertial_dead_reckoning() const { return _is_dead_reckoning; } + + const matrix::Quatf &getQuaternion() const { return _output_new.quat_nominal; } + + // get the velocity of the body frame origin in local NED earth frame + Vector3f getVelocity() const { return _output_new.vel - _vel_imu_rel_body_ned; } + + // get the velocity derivative in earth frame + const Vector3f &getVelocityDerivative() const { return _vel_deriv; } + + // get the derivative of the vertical position of the body frame origin in local NED earth frame + float getVerticalPositionDerivative() const { return _output_vert_new.vert_vel - _vel_imu_rel_body_ned(2); } + + // get the position of the body frame origin in local earth frame + Vector3f getPosition() const + { + // rotate the position of the IMU relative to the boy origin into earth frame + const Vector3f pos_offset_earth = _R_to_earth_now * _params.imu_pos_body; + // subtract from the EKF position (which is at the IMU) to get position at the body origin + return _output_new.pos - pos_offset_earth; + } + + // Get the value of magnetic declination in degrees to be saved for use at the next startup + // Returns true when the declination can be saved + // At the next startup, set param.mag_declination_deg to the value saved + bool get_mag_decl_deg(float *val) const + { + if (_NED_origin_initialised && (_params.mag_declination_source & MASK_SAVE_GEO_DECL)) { + *val = math::degrees(_mag_declination_gps); + return true; + + } else { + return false; + } + } + + // get EKF mode status + const filter_control_status_u &control_status() const { return _control_status; } + const decltype(filter_control_status_u::flags) &control_status_flags() const { return _control_status.flags; } + + const filter_control_status_u &control_status_prev() const { return _control_status_prev; } + const decltype(filter_control_status_u::flags) &control_status_prev_flags() const { return _control_status_prev.flags; } + + // get EKF internal fault status + const fault_status_u &fault_status() const { return _fault_status; } + const decltype(fault_status_u::flags) &fault_status_flags() const { return _fault_status.flags; } + + const innovation_fault_status_u &innov_check_fail_status() const { return _innov_check_fail_status; } + const decltype(innovation_fault_status_u::flags) &innov_check_fail_status_flags() const { return _innov_check_fail_status.flags; } + + const warning_event_status_u &warning_event_status() const { return _warning_events; } + const decltype(warning_event_status_u::flags) &warning_event_flags() const { return _warning_events.flags; } + void clear_warning_events() { _warning_events.value = 0; } + + const information_event_status_u &information_event_status() const { return _information_events; } + const decltype(information_event_status_u::flags) &information_event_flags() const { return _information_events.flags; } + void clear_information_events() { _information_events.value = 0; } + + bool isVehicleAtRest() const { return _control_status.flags.vehicle_at_rest; } + + // Getter for the average imu update period in s + float get_dt_imu_avg() const { return _dt_imu_avg; } + + // Getter for the imu sample on the delayed time horizon + const imuSample &get_imu_sample_delayed() const { return _imu_sample_delayed; } + + // Getter for the baro sample on the delayed time horizon + const baroSample &get_baro_sample_delayed() const { return _baro_sample_delayed; } + + const bool& global_origin_valid() const { return _NED_origin_initialised; } + const map_projection_reference_s& global_origin() const { return _pos_ref; } + + void print_status(); + + static constexpr unsigned FILTER_UPDATE_PERIOD_MS{10}; // ekf prediction period in milliseconds - this should ideally be an integer multiple of the IMU time delta + static constexpr float FILTER_UPDATE_PERIOD_S{FILTER_UPDATE_PERIOD_MS * 0.001f}; + +protected: + + EstimatorInterface() = default; + virtual ~EstimatorInterface() = default; + + virtual bool init(uint64_t timestamp) = 0; + + parameters _params; // filter parameters + + /* + OBS_BUFFER_LENGTH defines how many observations (non-IMU measurements) we can buffer + which sets the maximum frequency at which we can process non-IMU measurements. Measurements that + arrive too soon after the previous measurement will not be processed. + max freq (Hz) = (OBS_BUFFER_LENGTH - 1) / (IMU_BUFFER_LENGTH * FILTER_UPDATE_PERIOD_S) + This can be adjusted to match the max sensor data rate plus some margin for jitter. + */ + uint8_t _obs_buffer_length{0}; + + /* + IMU_BUFFER_LENGTH defines how many IMU samples we buffer which sets the time delay from current time to the + EKF fusion time horizon and therefore the maximum sensor time offset relative to the IMU that we can compensate for. + max sensor time offet (msec) = IMU_BUFFER_LENGTH * FILTER_UPDATE_PERIOD_MS + This can be adjusted to a value that is FILTER_UPDATE_PERIOD_MS longer than the maximum observation time delay. + */ + uint8_t _imu_buffer_length{0}; + + float _dt_imu_avg{0.0f}; // average imu update period in s + + imuSample _imu_sample_delayed{}; // captures the imu sample on the delayed time horizon + + // measurement samples capturing measurements on the delayed time horizon + magSample _mag_sample_delayed{}; + baroSample _baro_sample_delayed{}; + gpsSample _gps_sample_delayed{}; + sensor::SensorRangeFinder _range_sensor{}; + airspeedSample _airspeed_sample_delayed{}; + flowSample _flow_sample_delayed{}; + extVisionSample _ev_sample_delayed{}; + dragSample _drag_sample_delayed{}; + dragSample _drag_down_sampled{}; // down sampled drag specific force data (filter prediction rate -> observation rate) + auxVelSample _auxvel_sample_delayed{}; + + float _air_density{CONSTANTS_AIR_DENSITY_SEA_LEVEL_15C}; // air density (kg/m**3) + + // Sensor limitations + float _flow_max_rate{0.0f}; ///< maximum angular flow rate that the optical flow sensor can measure (rad/s) + float _flow_min_distance{0.0f}; ///< minimum distance that the optical flow sensor can operate at (m) + float _flow_max_distance{0.0f}; ///< maximum distance that the optical flow sensor can operate at (m) + + // Output Predictor + outputSample _output_new{}; // filter output on the non-delayed time horizon + outputVert _output_vert_new{}; // vertical filter output on the non-delayed time horizon + imuSample _newest_high_rate_imu_sample{}; // imu sample capturing the newest imu data + Matrix3f _R_to_earth_now; // rotation matrix from body to earth frame at current time + Vector3f _vel_imu_rel_body_ned; // velocity of IMU relative to body origin in NED earth frame + Vector3f _vel_deriv; // velocity derivative at the IMU in NED earth frame (m/s/s) + + bool _imu_updated{false}; // true if the ekf should update (completed downsampling process) + bool _initialised{false}; // true if the ekf interface instance (data buffering) is initialized + + bool _NED_origin_initialised{false}; + bool _gps_speed_valid{false}; + float _gps_origin_eph{0.0f}; // horizontal position uncertainty of the GPS origin + float _gps_origin_epv{0.0f}; // vertical position uncertainty of the GPS origin + struct map_projection_reference_s _pos_ref {}; // Contains WGS-84 position latitude and longitude (radians) of the EKF origin + struct map_projection_reference_s _gps_pos_prev {}; // Contains WGS-84 position latitude and longitude (radians) of the previous GPS message + float _gps_alt_prev{0.0f}; // height from the previous GPS message (m) + float _gps_yaw_offset{0.0f}; // Yaw offset angle for dual GPS antennas used for yaw estimation (radians). + + // innovation consistency check monitoring ratios + float _yaw_test_ratio{}; // yaw innovation consistency check ratio + Vector3f _mag_test_ratio; // magnetometer XYZ innovation consistency check ratios + Vector2f _gps_vel_test_ratio; // GPS velocity innovation consistency check ratios + Vector2f _gps_pos_test_ratio; // GPS position innovation consistency check ratios + Vector2f _ev_vel_test_ratio; // EV velocity innovation consistency check ratios + Vector2f _ev_pos_test_ratio ; // EV position innovation consistency check ratios + Vector2f _aux_vel_test_ratio; // Auxiliary horizontal velocity innovation consistency check ratio + Vector2f _baro_hgt_test_ratio; // baro height innovation consistency check ratios + Vector2f _rng_hgt_test_ratio; // range finder height innovation consistency check ratios + float _optflow_test_ratio{}; // Optical flow innovation consistency check ratio + float _tas_test_ratio{}; // tas innovation consistency check ratio + float _hagl_test_ratio{}; // height above terrain measurement innovation consistency check ratio + float _beta_test_ratio{}; // sideslip innovation consistency check ratio + Vector2f _drag_test_ratio; // drag innovation consistency check ratio + innovation_fault_status_u _innov_check_fail_status{}; + + bool _is_dead_reckoning{false}; // true if we are no longer fusing measurements that constrain horizontal velocity drift + bool _deadreckon_time_exceeded{true}; // true if the horizontal nav solution has been deadreckoning for too long and is invalid + bool _is_wind_dead_reckoning{false}; // true if we are navigationg reliant on wind relative measurements + + float _gps_drift_metrics[3] {}; // Array containing GPS drift metrics + // [0] Horizontal position drift rate (m/s) + // [1] Vertical position drift rate (m/s) + // [2] Filtered horizontal velocity (m/s) + uint64_t _time_last_move_detect_us{0}; // timestamp of last movement detection event in microseconds + uint64_t _time_last_on_ground_us{0}; ///< last time we were on the ground (uSec) + uint64_t _time_last_in_air{0}; ///< last time we were in air (uSec) + bool _gps_drift_updated{false}; // true when _gps_drift_metrics has been updated and is ready for retrieval + + // data buffer instances + RingBuffer _imu_buffer{12}; // buffer length 12 with default parameters + RingBuffer _output_buffer{12}; + RingBuffer _output_vert_buffer{12}; + + RingBuffer _gps_buffer; + RingBuffer _mag_buffer; + RingBuffer _baro_buffer; + RingBuffer _range_buffer; + RingBuffer _airspeed_buffer; + RingBuffer _flow_buffer; + RingBuffer _ext_vision_buffer; + RingBuffer _drag_buffer; + RingBuffer _auxvel_buffer; + + // timestamps of latest in buffer saved measurement in microseconds + uint64_t _time_last_imu{0}; + uint64_t _time_last_gps{0}; + uint64_t _time_last_mag{0}; ///< measurement time of last magnetomter sample (uSec) + uint64_t _time_last_baro{0}; + uint64_t _time_last_range{0}; + uint64_t _time_last_airspeed{0}; + uint64_t _time_last_ext_vision{0}; + uint64_t _time_last_optflow{0}; + uint64_t _time_last_auxvel{0}; + //last time the baro ground effect compensation was turned on externally (uSec) + uint64_t _time_last_gnd_effect_on{0}; + + fault_status_u _fault_status{}; + + // allocate data buffers and initialize interface variables + bool initialise_interface(uint64_t timestamp); + + float _mag_declination_gps{NAN}; // magnetic declination returned by the geo library using the last valid GPS position (rad) + float _mag_inclination_gps{NAN}; // magnetic inclination returned by the geo library using the last valid GPS position (rad) + float _mag_strength_gps{NAN}; // magnetic strength returned by the geo library using the last valid GPS position (T) + + // this is the current status of the filter control modes + filter_control_status_u _control_status{}; + + // this is the previous status of the filter control modes - used to detect mode transitions + filter_control_status_u _control_status_prev{}; + + virtual float compensateBaroForDynamicPressure(const float baro_alt_uncompensated) const = 0; + + // these are used to record single frame events for external monitoring and should NOT be used for + // state logic becasue they will be cleared externally after being read. + warning_event_status_u _warning_events{}; + information_event_status_u _information_events{}; + +private: + + inline void setDragData(const imuSample &imu); + + inline void computeVibrationMetric(const imuSample &imu); + inline bool checkIfVehicleAtRest(float dt, const imuSample &imu); + + void printBufferAllocationFailed(const char *buffer_name); + + ImuDownSampler _imu_down_sampler{FILTER_UPDATE_PERIOD_S}; + + unsigned _min_obs_interval_us{0}; // minimum time interval between observations that will guarantee data is not lost (usec) + + // IMU vibration and movement monitoring + Vector3f _delta_ang_prev; // delta angle from the previous IMU measurement + Vector3f _delta_vel_prev; // delta velocity from the previous IMU measurement + Vector3f _vibe_metrics; // IMU vibration metrics + // [0] Level of coning vibration in the IMU delta angles (rad^2) + // [1] high frequency vibration level in the IMU delta angle data (rad) + // [2] high frequency vibration level in the IMU delta velocity data (m/s) + + // Used to down sample barometer data + uint64_t _baro_timestamp_sum{0}; // summed timestamp to provide the timestamp of the averaged sample + float _baro_alt_sum{0.0f}; // summed pressure altitude readings (m) + uint8_t _baro_sample_count{0}; // number of barometric altitude measurements summed + + // Used by the multi-rotor specific drag force fusion + uint8_t _drag_sample_count{0}; // number of drag specific force samples assumulated at the filter prediction rate + float _drag_sample_time_dt{0.0f}; // time integral across all samples used to form _drag_down_sampled (sec) + + // Used to downsample magnetometer data + uint64_t _mag_timestamp_sum{0}; + Vector3f _mag_data_sum; + uint8_t _mag_sample_count{0}; + + // observation buffer final allocation failed + bool _gps_buffer_fail{false}; + bool _mag_buffer_fail{false}; + bool _baro_buffer_fail{false}; + bool _range_buffer_fail{false}; + bool _airspeed_buffer_fail{false}; + bool _flow_buffer_fail{false}; + bool _ev_buffer_fail{false}; + bool _drag_buffer_fail{false}; + bool _auxvel_buffer_fail{false}; + +}; diff --git a/src/lib/ecl/EKF/gps_checks.cpp b/src/lib/ecl/EKF/gps_checks.cpp new file mode 100644 index 0000000000..c2fdca102c --- /dev/null +++ b/src/lib/ecl/EKF/gps_checks.cpp @@ -0,0 +1,280 @@ +/**************************************************************************** + * + * Copyright (c) 2013 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file gps_checks.cpp + * Perform pre-flight and in-flight GPS quality checks + * + * @author Paul Riseborough + * + */ + +#include "ekf.h" + +#include +#include +#include + +// GPS pre-flight check bit locations +#define MASK_GPS_NSATS (1<<0) +#define MASK_GPS_PDOP (1<<1) +#define MASK_GPS_HACC (1<<2) +#define MASK_GPS_VACC (1<<3) +#define MASK_GPS_SACC (1<<4) +#define MASK_GPS_HDRIFT (1<<5) +#define MASK_GPS_VDRIFT (1<<6) +#define MASK_GPS_HSPD (1<<7) +#define MASK_GPS_VSPD (1<<8) + +bool Ekf::collect_gps(const gps_message &gps) +{ + // Run GPS checks always + _gps_checks_passed = gps_is_good(gps); + + if (_filter_initialised && !_NED_origin_initialised && _gps_checks_passed) { + // If we have good GPS data set the origin's WGS-84 position to the last gps fix + const double lat = gps.lat * 1.0e-7; + const double lon = gps.lon * 1.0e-7; + + if (!map_projection_initialized(&_pos_ref)) { + map_projection_init_timestamped(&_pos_ref, lat, lon, _time_last_imu); + + // if we are already doing aiding, correct for the change in position since the EKF started navigating + if (isHorizontalAidingActive()) { + double est_lat; + double est_lon; + map_projection_reproject(&_pos_ref, -_state.pos(0), -_state.pos(1), &est_lat, &est_lon); + map_projection_init_timestamped(&_pos_ref, est_lat, est_lon, _time_last_imu); + } + } + + // Take the current GPS height and subtract the filter height above origin to estimate the GPS height of the origin + _gps_alt_ref = 1e-3f * (float)gps.alt + _state.pos(2); + _NED_origin_initialised = true; + _earth_rate_NED = calcEarthRateNED((float)_pos_ref.lat_rad); + _last_gps_origin_time_us = _time_last_imu; + + const bool declination_was_valid = ISFINITE(_mag_declination_gps); + + // set the magnetic field data returned by the geo library using the current GPS position + _mag_declination_gps = get_mag_declination_radians(lat, lon); + _mag_inclination_gps = get_mag_inclination_radians(lat, lon); + _mag_strength_gps = get_mag_strength_gauss(lat, lon); + + // request a reset of the yaw using the new declination + if (_params.mag_fusion_type == MAG_FUSE_TYPE_NONE) { + // try to reset the yaw using the EKF-GSF yaw estimator + _do_ekfgsf_yaw_reset = true; + _ekfgsf_yaw_reset_time = 0; + + } else { + if (!declination_was_valid) { + _mag_yaw_reset_req = true; + } + } + + // save the horizontal and vertical position uncertainty of the origin + _gps_origin_eph = gps.eph; + _gps_origin_epv = gps.epv; + + // if the user has selected GPS as the primary height source, switch across to using it + if (_params.vdist_sensor_type == VDIST_SENSOR_GPS) { + startGpsHgtFusion(); + } + + _information_events.flags.gps_checks_passed = true; + ECL_INFO("GPS checks passed"); + + } else if (!_NED_origin_initialised) { + // a rough 2D fix is still sufficient to lookup declination + if ((gps.fix_type >= 2) && (gps.eph < 1000)) { + + const bool declination_was_valid = ISFINITE(_mag_declination_gps); + + // If we have good GPS data set the origin's WGS-84 position to the last gps fix + const double lat = gps.lat * 1.0e-7; + const double lon = gps.lon * 1.0e-7; + + // set the magnetic field data returned by the geo library using the current GPS position + _mag_declination_gps = get_mag_declination_radians(lat, lon); + _mag_inclination_gps = get_mag_inclination_radians(lat, lon); + _mag_strength_gps = get_mag_strength_gauss(lat, lon); + + // request mag yaw reset if there's a mag declination for the first time + if (_params.mag_fusion_type != MAG_FUSE_TYPE_NONE) { + if (!declination_was_valid && ISFINITE(_mag_declination_gps)) { + _mag_yaw_reset_req = true; + } + } + + _earth_rate_NED = calcEarthRateNED((float)math::radians(lat)); + } + } + + // start collecting GPS if there is a 3D fix and the NED origin has been set + return _NED_origin_initialised && (gps.fix_type >= 3); +} + +/* + * Return true if the GPS solution quality is adequate to set an origin for the EKF + * and start GPS aiding. + * All activated checks must pass for 10 seconds. + * Checks are activated using the EKF2_GPS_CHECK bitmask parameter + * Checks are adjusted using the EKF2_REQ_* parameters +*/ +bool Ekf::gps_is_good(const gps_message &gps) +{ + // Check the fix type + _gps_check_fail_status.flags.fix = (gps.fix_type < 3); + + // Check the number of satellites + _gps_check_fail_status.flags.nsats = (gps.nsats < _params.req_nsats); + + // Check the position dilution of precision + _gps_check_fail_status.flags.pdop = (gps.pdop > _params.req_pdop); + + // Check the reported horizontal and vertical position accuracy + _gps_check_fail_status.flags.hacc = (gps.eph > _params.req_hacc); + _gps_check_fail_status.flags.vacc = (gps.epv > _params.req_vacc); + + // Check the reported speed accuracy + _gps_check_fail_status.flags.sacc = (gps.sacc > _params.req_sacc); + + // check if GPS quality is degraded + _gps_error_norm = fmaxf((gps.eph / _params.req_hacc), (gps.epv / _params.req_vacc)); + _gps_error_norm = fmaxf(_gps_error_norm, (gps.sacc / _params.req_sacc)); + + // Calculate time lapsed since last update, limit to prevent numerical errors and calculate a lowpass filter coefficient + constexpr float filt_time_const = 10.0f; + const float dt = math::constrain(float(int64_t(_time_last_imu) - int64_t(_gps_pos_prev.timestamp)) * 1e-6f, 0.001f, filt_time_const); + const float filter_coef = dt / filt_time_const; + + // The following checks are only valid when the vehicle is at rest + const double lat = gps.lat * 1.0e-7; + const double lon = gps.lon * 1.0e-7; + + if (!_control_status.flags.in_air && _control_status.flags.vehicle_at_rest) { + // Calculate position movement since last measurement + float delta_pos_n = 0.0f; + float delta_pos_e = 0.0f; + + // calculate position movement since last GPS fix + if (_gps_pos_prev.timestamp > 0) { + map_projection_project(&_gps_pos_prev, lat, lon, &delta_pos_n, &delta_pos_e); + + } else { + // no previous position has been set + map_projection_init_timestamped(&_gps_pos_prev, lat, lon, _time_last_imu); + _gps_alt_prev = 1e-3f * (float)gps.alt; + } + + // Calculate the horizontal and vertical drift velocity components and limit to 10x the threshold + const Vector3f vel_limit(_params.req_hdrift, _params.req_hdrift, _params.req_vdrift); + Vector3f pos_derived(delta_pos_n, delta_pos_e, (_gps_alt_prev - 1e-3f * (float)gps.alt)); + pos_derived = matrix::constrain(pos_derived / dt, -10.0f * vel_limit, 10.0f * vel_limit); + + // Apply a low pass filter + _gps_pos_deriv_filt = pos_derived * filter_coef + _gps_pos_deriv_filt * (1.0f - filter_coef); + + // Calculate the horizontal drift speed and fail if too high + _gps_drift_metrics[0] = Vector2f(_gps_pos_deriv_filt.xy()).norm(); + _gps_check_fail_status.flags.hdrift = (_gps_drift_metrics[0] > _params.req_hdrift); + + // Fail if the vertical drift speed is too high + _gps_drift_metrics[1] = fabsf(_gps_pos_deriv_filt(2)); + _gps_check_fail_status.flags.vdrift = (_gps_drift_metrics[1] > _params.req_vdrift); + + // Check the magnitude of the filtered horizontal GPS velocity + const Vector2f gps_velNE = matrix::constrain(Vector2f(gps.vel_ned.xy()), + -10.0f * _params.req_hdrift, + 10.0f * _params.req_hdrift); + _gps_velNE_filt = gps_velNE * filter_coef + _gps_velNE_filt * (1.0f - filter_coef); + _gps_drift_metrics[2] = _gps_velNE_filt.norm(); + _gps_check_fail_status.flags.hspeed = (_gps_drift_metrics[2] > _params.req_hdrift); + + _gps_drift_updated = true; + + } else if (_control_status.flags.in_air) { + // These checks are always declared as passed when flying + // If on ground and moving, the last result before movement commenced is kept + _gps_check_fail_status.flags.hdrift = false; + _gps_check_fail_status.flags.vdrift = false; + _gps_check_fail_status.flags.hspeed = false; + _gps_drift_updated = false; + + resetGpsDriftCheckFilters(); + + } else { + // This is the case where the vehicle is on ground and IMU movement is blocking the drift calculation + _gps_drift_updated = true; + + resetGpsDriftCheckFilters(); + } + + // save GPS fix for next time + map_projection_init_timestamped(&_gps_pos_prev, lat, lon, _time_last_imu); + _gps_alt_prev = 1e-3f * (float)gps.alt; + + // Check the filtered difference between GPS and EKF vertical velocity + const float vz_diff_limit = 10.0f * _params.req_vdrift; + const float vertVel = math::constrain(gps.vel_ned(2) - _state.vel(2), -vz_diff_limit, vz_diff_limit); + _gps_velD_diff_filt = vertVel * filter_coef + _gps_velD_diff_filt * (1.0f - filter_coef); + _gps_check_fail_status.flags.vspeed = (fabsf(_gps_velD_diff_filt) > _params.req_vdrift); + + // assume failed first time through + if (_last_gps_fail_us == 0) { + _last_gps_fail_us = _time_last_imu; + } + + // if any user selected checks have failed, record the fail time + if ( + _gps_check_fail_status.flags.fix || + (_gps_check_fail_status.flags.nsats && (_params.gps_check_mask & MASK_GPS_NSATS)) || + (_gps_check_fail_status.flags.pdop && (_params.gps_check_mask & MASK_GPS_PDOP)) || + (_gps_check_fail_status.flags.hacc && (_params.gps_check_mask & MASK_GPS_HACC)) || + (_gps_check_fail_status.flags.vacc && (_params.gps_check_mask & MASK_GPS_VACC)) || + (_gps_check_fail_status.flags.sacc && (_params.gps_check_mask & MASK_GPS_SACC)) || + (_gps_check_fail_status.flags.hdrift && (_params.gps_check_mask & MASK_GPS_HDRIFT)) || + (_gps_check_fail_status.flags.vdrift && (_params.gps_check_mask & MASK_GPS_VDRIFT)) || + (_gps_check_fail_status.flags.hspeed && (_params.gps_check_mask & MASK_GPS_HSPD)) || + (_gps_check_fail_status.flags.vspeed && (_params.gps_check_mask & MASK_GPS_VSPD)) + ) { + _last_gps_fail_us = _time_last_imu; + + } else { + _last_gps_pass_us = _time_last_imu; + } + + // continuous period without fail of x seconds required to return a healthy status + return isTimedOut(_last_gps_fail_us, (uint64_t)_min_gps_health_time_us); +} diff --git a/src/lib/ecl/EKF/gps_yaw_fusion.cpp b/src/lib/ecl/EKF/gps_yaw_fusion.cpp new file mode 100644 index 0000000000..dbf3205318 --- /dev/null +++ b/src/lib/ecl/EKF/gps_yaw_fusion.cpp @@ -0,0 +1,217 @@ +/**************************************************************************** + * + * Copyright (c) 2018 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file gps_yaw_fusion.cpp + * Definition of functions required to use yaw obtained from GPS dual antenna measurements. + * Equations generated using EKF/python/ekf_derivation/main.py + * + * @author Paul Riseborough + * + */ + +#include "ekf.h" + +#include +#include +#include + +void Ekf::fuseGpsYaw() +{ + // assign intermediate state variables + const float &q0 = _state.quat_nominal(0); + const float &q1 = _state.quat_nominal(1); + const float &q2 = _state.quat_nominal(2); + const float &q3 = _state.quat_nominal(3); + + // calculate the observed yaw angle of antenna array, converting a from body to antenna yaw measurement + const float measured_hdg = wrap_pi(_gps_sample_delayed.yaw + _gps_yaw_offset); + + // define the predicted antenna array vector and rotate into earth frame + const Vector3f ant_vec_bf = {cosf(_gps_yaw_offset), sinf(_gps_yaw_offset), 0.0f}; + const Vector3f ant_vec_ef = _R_to_earth * ant_vec_bf; + + // check if antenna array vector is within 30 degrees of vertical and therefore unable to provide a reliable heading + if (fabsf(ant_vec_ef(2)) > cosf(math::radians(30.0f))) { + return; + } + + // calculate predicted antenna yaw angle + const float predicted_hdg = atan2f(ant_vec_ef(1),ant_vec_ef(0)); + + // using magnetic heading process noise + // TODO extend interface to use yaw uncertainty provided by GPS if available + const float R_YAW = sq(fmaxf(_params.mag_heading_noise, 1.0e-2f)); + + // calculate intermediate variables + const float HK0 = sinf(_gps_yaw_offset); + const float HK1 = q0*q3; + const float HK2 = q1*q2; + const float HK3 = 2*HK0*(HK1 - HK2); + const float HK4 = cosf(_gps_yaw_offset); + const float HK5 = ecl::powf(q1, 2); + const float HK6 = ecl::powf(q2, 2); + const float HK7 = ecl::powf(q0, 2) - ecl::powf(q3, 2); + const float HK8 = HK4*(HK5 - HK6 + HK7); + const float HK9 = HK3 - HK8; + if (fabsf(HK9) < 1e-3f) { + return; + } + const float HK10 = 1.0F/HK9; + const float HK11 = HK4*q0; + const float HK12 = HK0*q3; + const float HK13 = HK0*(-HK5 + HK6 + HK7) + 2*HK4*(HK1 + HK2); + const float HK14 = HK10*HK13; + const float HK15 = HK0*q0 + HK4*q3; + const float HK16 = HK10*(HK14*(HK11 - HK12) + HK15); + const float HK17 = ecl::powf(HK13, 2)/ecl::powf(HK9, 2) + 1; + if (fabsf(HK17) < 1e-3f) { + return; + } + const float HK18 = 2/HK17; + // const float HK19 = 1.0F/(-HK3 + HK8); + const float HK19_inverse = -HK3 + HK8; + if (fabsf(HK19_inverse) < 1e-6f) { + return; + } + const float HK19 = 1.0F/HK19_inverse; + const float HK20 = HK4*q1; + const float HK21 = HK0*q2; + const float HK22 = HK13*HK19; + const float HK23 = HK0*q1 - HK4*q2; + const float HK24 = HK19*(HK22*(HK20 + HK21) + HK23); + const float HK25 = HK19*(-HK20 - HK21 + HK22*HK23); + const float HK26 = HK10*(-HK11 + HK12 + HK14*HK15); + const float HK27 = -HK16*P(0,0) - HK24*P(0,1) - HK25*P(0,2) + HK26*P(0,3); + const float HK28 = -HK16*P(0,1) - HK24*P(1,1) - HK25*P(1,2) + HK26*P(1,3); + const float HK29 = 4/ecl::powf(HK17, 2); + const float HK30 = -HK16*P(0,2) - HK24*P(1,2) - HK25*P(2,2) + HK26*P(2,3); + const float HK31 = -HK16*P(0,3) - HK24*P(1,3) - HK25*P(2,3) + HK26*P(3,3); + // const float HK32 = HK18/(-HK16*HK27*HK29 - HK24*HK28*HK29 - HK25*HK29*HK30 + HK26*HK29*HK31 + R_YAW); + + // check if the innovation variance calculation is badly conditioned + _heading_innov_var = (-HK16*HK27*HK29 - HK24*HK28*HK29 - HK25*HK29*HK30 + HK26*HK29*HK31 + R_YAW); + + if (_heading_innov_var < R_YAW) { + // the innovation variance contribution from the state covariances is negative which means the covariance matrix is badly conditioned + _fault_status.flags.bad_hdg = true; + + // we reinitialise the covariance matrix and abort this fusion step + initialiseCovariance(); + ECL_ERR("GPS yaw numerical error - covariance reset"); + return; + } + + _fault_status.flags.bad_hdg = false; + const float HK32 = HK18/_heading_innov_var; + + // calculate the innovation and define the innovation gate + const float innov_gate = math::max(_params.heading_innov_gate, 1.0f); + _heading_innov = predicted_hdg - measured_hdg; + + // wrap the innovation to the interval between +-pi + _heading_innov = wrap_pi(_heading_innov); + + // innovation test ratio + _yaw_test_ratio = sq(_heading_innov) / (sq(innov_gate) * _heading_innov_var); + + // we are no longer using 3-axis fusion so set the reported test levels to zero + _mag_test_ratio.setZero(); + + if (_yaw_test_ratio > 1.0f) { + _innov_check_fail_status.flags.reject_yaw = true; + + // if we are in air we don't want to fuse the measurement + // we allow to use it when on the ground because the large innovation could be caused + // by interference or a large initial gyro bias + if (_control_status.flags.in_air) { + return; + + } else { + // constrain the innovation to the maximum set by the gate + const float gate_limit = sqrtf((sq(innov_gate) * _heading_innov_var)); + _heading_innov = math::constrain(_heading_innov, -gate_limit, gate_limit); + } + + } else { + _innov_check_fail_status.flags.reject_yaw = false; + } + + // calculate observation jacobian + // Observation jacobian and Kalman gain vectors + SparseVector24f<0,1,2,3> Hfusion; + Hfusion.at<0>() = -HK16*HK18; + Hfusion.at<1>() = -HK18*HK24; + Hfusion.at<2>() = -HK18*HK25; + Hfusion.at<3>() = HK18*HK26; + + // calculate the Kalman gains + // only calculate gains for states we are using + Vector24f Kfusion; + Kfusion(0) = HK27*HK32; + Kfusion(1) = HK28*HK32; + Kfusion(2) = HK30*HK32; + Kfusion(3) = HK31*HK32; + for (unsigned row = 4; row <= 23; row++) { + Kfusion(row) = HK32*(-HK16*P(0,row) - HK24*P(1,row) - HK25*P(2,row) + HK26*P(3,row)); + } + + const bool is_fused = measurementUpdate(Kfusion, Hfusion, _heading_innov); + _fault_status.flags.bad_hdg = !is_fused; + + if (is_fused) { + _time_last_gps_yaw_fuse = _time_last_imu; + } +} + +bool Ekf::resetYawToGps() +{ + // define the predicted antenna array vector and rotate into earth frame + const Vector3f ant_vec_bf = {cosf(_gps_yaw_offset), sinf(_gps_yaw_offset), 0.0f}; + const Vector3f ant_vec_ef = _R_to_earth * ant_vec_bf; + + // check if antenna array vector is within 30 degrees of vertical and therefore unable to provide a reliable heading + if (fabsf(ant_vec_ef(2)) > cosf(math::radians(30.0f))) { + return false; + } + + // GPS yaw measurement is alreday compensated for antenna offset in the driver + const float measured_yaw = _gps_sample_delayed.yaw; + + const float yaw_variance = sq(fmaxf(_params.mag_heading_noise, 1.0e-2f)); + resetQuatStateYaw(measured_yaw, yaw_variance, true); + + _time_last_gps_yaw_fuse = _time_last_imu; + + return true; +} diff --git a/src/lib/ecl/EKF/imu_down_sampler.cpp b/src/lib/ecl/EKF/imu_down_sampler.cpp new file mode 100644 index 0000000000..265671e3b4 --- /dev/null +++ b/src/lib/ecl/EKF/imu_down_sampler.cpp @@ -0,0 +1,65 @@ +#include "imu_down_sampler.hpp" + +ImuDownSampler::ImuDownSampler(float target_dt_sec) : _target_dt{target_dt_sec} { reset(); } + +// integrate imu samples until target dt reached +// assumes that dt of the gyroscope is close to the dt of the accelerometer +// returns true if target dt is reached +bool ImuDownSampler::update(const imuSample &imu_sample_new) +{ + if (_do_reset) { + reset(); + } + + // accumulate time deltas + _imu_down_sampled.delta_ang_dt += imu_sample_new.delta_ang_dt; + _imu_down_sampled.delta_vel_dt += imu_sample_new.delta_vel_dt; + _imu_down_sampled.time_us = imu_sample_new.time_us; + _imu_down_sampled.delta_vel_clipping[0] += imu_sample_new.delta_vel_clipping[0]; + _imu_down_sampled.delta_vel_clipping[1] += imu_sample_new.delta_vel_clipping[1]; + _imu_down_sampled.delta_vel_clipping[2] += imu_sample_new.delta_vel_clipping[2]; + + // use a quaternion to accumulate delta angle data + // this quaternion represents the rotation from the start to end of the accumulation period + const Quatf delta_q(AxisAnglef(imu_sample_new.delta_ang)); + _delta_angle_accumulated = _delta_angle_accumulated * delta_q; + _delta_angle_accumulated.normalize(); + + // rotate the accumulated delta velocity data forward each time so it is always in the updated rotation frame + const Dcmf delta_R(delta_q.inversed()); + _imu_down_sampled.delta_vel = delta_R * _imu_down_sampled.delta_vel; + + // accumulate the most recent delta velocity data at the updated rotation frame + // assume effective sample time is halfway between the previous and current rotation frame + _imu_down_sampled.delta_vel += (imu_sample_new.delta_vel + delta_R * imu_sample_new.delta_vel) * 0.5f; + + // check if the target time delta between filter prediction steps has been exceeded + if (_imu_down_sampled.delta_ang_dt >= _target_dt - _imu_collection_time_adj) { + // accumulate the amount of time to advance the IMU collection time so that we meet the + // average EKF update rate requirement + _imu_collection_time_adj += 0.01f * (_imu_down_sampled.delta_ang_dt - _target_dt); + _imu_collection_time_adj = math::constrain(_imu_collection_time_adj, -0.5f * _target_dt, + 0.5f * _target_dt); + + _imu_down_sampled.delta_ang = AxisAnglef(_delta_angle_accumulated); + + return true; + + } else { + + return false; + } +} + +void ImuDownSampler::reset() +{ + _imu_down_sampled.delta_ang.setZero(); + _imu_down_sampled.delta_vel.setZero(); + _imu_down_sampled.delta_ang_dt = 0.0f; + _imu_down_sampled.delta_vel_dt = 0.0f; + _imu_down_sampled.delta_vel_clipping[0] = false; + _imu_down_sampled.delta_vel_clipping[1] = false; + _imu_down_sampled.delta_vel_clipping[2] = false; + _delta_angle_accumulated.setIdentity(); + _do_reset = false; +} diff --git a/src/lib/ecl/EKF/imu_down_sampler.hpp b/src/lib/ecl/EKF/imu_down_sampler.hpp new file mode 100644 index 0000000000..17cdaf27d4 --- /dev/null +++ b/src/lib/ecl/EKF/imu_down_sampler.hpp @@ -0,0 +1,69 @@ +/**************************************************************************** + * + * Copyright (c) 2019 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Downsamples IMU data to a lower rate such that EKF predicition can happen less frequent + * @author Kamil Ritz + */ +#pragma once + +#include +#include + +#include "common.h" + +using namespace estimator; + +class ImuDownSampler +{ +public: + explicit ImuDownSampler(float target_dt_sec); + ~ImuDownSampler() = default; + + bool update(const imuSample &imu_sample_new); + + imuSample getDownSampledImuAndTriggerReset() + { + _do_reset = true; + return _imu_down_sampled; + } + +private: + void reset(); + + imuSample _imu_down_sampled{}; + Quatf _delta_angle_accumulated{}; + const float _target_dt; // [sec] + float _imu_collection_time_adj{0.f}; + bool _do_reset{true}; +}; diff --git a/src/lib/ecl/EKF/mag_control.cpp b/src/lib/ecl/EKF/mag_control.cpp new file mode 100644 index 0000000000..500405536f --- /dev/null +++ b/src/lib/ecl/EKF/mag_control.cpp @@ -0,0 +1,368 @@ +/**************************************************************************** + * + * Copyright (c) 2019 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file mag_control.cpp + * Control functions for ekf magnetic field fusion + */ + +#include "ekf.h" +#include + +void Ekf::controlMagFusion() +{ + // handle undefined behaviour + if (_params.mag_fusion_type > MAG_FUSE_TYPE_NONE) { + return; + } + + // When operating without a magnetometer and no other source of yaw aiding is active, + // yaw fusion is run selectively to enable yaw gyro bias learning when stationary on + // ground and to prevent uncontrolled yaw variance growth + if (_params.mag_fusion_type == MAG_FUSE_TYPE_NONE) { + if (noOtherYawAidingThanMag()) + { + _is_yaw_fusion_inhibited = true; + fuseHeading(); + } + return; + } + + checkMagFieldStrength(); + + // If we are on ground, reset the flight alignment flag so that the mag fields will be + // re-initialised next time we achieve flight altitude + if (!_control_status.flags.in_air) { + _control_status.flags.mag_aligned_in_flight = false; + _num_bad_flight_yaw_events = 0; + } + + if (_control_status.flags.mag_fault || !_control_status.flags.tilt_align) { + stopMagFusion(); + return; + } + + _mag_yaw_reset_req |= otherHeadingSourcesHaveStopped(); + _mag_yaw_reset_req |= !_control_status.flags.yaw_align; + _mag_yaw_reset_req |= _mag_inhibit_yaw_reset_req; + + if (noOtherYawAidingThanMag() && _mag_data_ready) { + // Determine if we should use simple magnetic heading fusion which works better when + // there are large external disturbances or the more accurate 3-axis fusion + switch (_params.mag_fusion_type) { + default: + /* fallthrough */ + case MAG_FUSE_TYPE_AUTO: + selectMagAuto(); + break; + + case MAG_FUSE_TYPE_INDOOR: + /* fallthrough */ + case MAG_FUSE_TYPE_HEADING: + startMagHdgFusion(); + break; + + case MAG_FUSE_TYPE_3D: + startMag3DFusion(); + break; + } + + if (_control_status.flags.in_air) { + checkHaglYawResetReq(); + runInAirYawReset(); + runVelPosReset(); // TODO: review this; a vel/pos reset can be requested from COG reset (for fixedwing) only + + } else { + runOnGroundYawReset(); + } + + if (!_control_status.flags.yaw_align) { + // Having the yaw aligned is mandatory to continue + return; + } + + checkMagDeclRequired(); + checkMagInhibition(); + + runMagAndMagDeclFusions(); + } +} + +bool Ekf::noOtherYawAidingThanMag() const +{ + // If we are using external vision data or GPS-heading for heading then no magnetometer fusion is used + return !_control_status.flags.ev_yaw && !_control_status.flags.gps_yaw; +} + +void Ekf::checkHaglYawResetReq() +{ + // We need to reset the yaw angle after climbing away from the ground to enable + // recovery from ground level magnetic interference. + if (!_control_status.flags.mag_aligned_in_flight) { + // Check if height has increased sufficiently to be away from ground magnetic anomalies + // and request a yaw reset if not already requested. + static constexpr float mag_anomalies_max_hagl = 1.5f; + const bool above_mag_anomalies = (getTerrainVPos() - _state.pos(2)) > mag_anomalies_max_hagl; + _mag_yaw_reset_req = _mag_yaw_reset_req || above_mag_anomalies; + } +} + +void Ekf::runOnGroundYawReset() +{ + if (_mag_yaw_reset_req && isYawResetAuthorized()) { + const bool has_realigned_yaw = canResetMagHeading() + ? resetMagHeading(_mag_lpf.getState()) + : false; + + if (has_realigned_yaw) { + _mag_yaw_reset_req = false; + _control_status.flags.yaw_align = true; + + // Handle the special case where we have not been constraining yaw drift or learning yaw bias due + // to assumed invalid mag field associated with indoor operation with a downwards looking flow sensor. + if (_mag_inhibit_yaw_reset_req) { + _mag_inhibit_yaw_reset_req = false; + // Zero the yaw bias covariance and set the variance to the initial alignment uncertainty + P.uncorrelateCovarianceSetVariance<1>(12, sq(_params.switch_on_gyro_bias * FILTER_UPDATE_PERIOD_S)); + } + } + } +} + +bool Ekf::canResetMagHeading() const +{ + return !isStrongMagneticDisturbance() && (_params.mag_fusion_type != MAG_FUSE_TYPE_NONE); +} + +void Ekf::runInAirYawReset() +{ + if (_mag_yaw_reset_req && isYawResetAuthorized()) { + bool has_realigned_yaw = false; + + if (canRealignYawUsingGps()) { has_realigned_yaw = realignYawGPS(); } + else if (canResetMagHeading()) { has_realigned_yaw = resetMagHeading(_mag_lpf.getState()); } + + if (has_realigned_yaw) { + _mag_yaw_reset_req = false; + _control_status.flags.yaw_align = true; + _control_status.flags.mag_aligned_in_flight = true; + + // Handle the special case where we have not been constraining yaw drift or learning yaw bias due + // to assumed invalid mag field associated with indoor operation with a downwards looking flow sensor. + if (_mag_inhibit_yaw_reset_req) { + _mag_inhibit_yaw_reset_req = false; + // Zero the yaw bias covariance and set the variance to the initial alignment uncertainty + P.uncorrelateCovarianceSetVariance<1>(12, sq(_params.switch_on_gyro_bias * FILTER_UPDATE_PERIOD_S)); + } + } + + } +} + +void Ekf::runVelPosReset() +{ + if (_velpos_reset_request) { + resetVelocity(); + resetHorizontalPosition(); + _velpos_reset_request = false; + } +} + +void Ekf::selectMagAuto() +{ + check3DMagFusionSuitability(); + canUse3DMagFusion() ? startMag3DFusion() : startMagHdgFusion(); +} + +void Ekf::check3DMagFusionSuitability() +{ + checkYawAngleObservability(); + checkMagBiasObservability(); + + if (isMagBiasObservable() || isYawAngleObservable()) { + _time_last_mov_3d_mag_suitable = _imu_sample_delayed.time_us; + } +} + +void Ekf::checkYawAngleObservability() +{ + // Check if there has been enough change in horizontal velocity to make yaw observable + // Apply hysteresis to check to avoid rapid toggling + _yaw_angle_observable = _yaw_angle_observable + ? _accel_lpf_NE.norm() > _params.mag_acc_gate + : _accel_lpf_NE.norm() > 2.0f * _params.mag_acc_gate; + + _yaw_angle_observable = _yaw_angle_observable + && (_control_status.flags.gps || _control_status.flags.ev_pos); // Do we have to add ev_vel here? +} + +void Ekf::checkMagBiasObservability() +{ + // check if there is enough yaw rotation to make the mag bias states observable + if (!_mag_bias_observable && (fabsf(_yaw_rate_lpf_ef) > _params.mag_yaw_rate_gate)) { + // initial yaw motion is detected + _mag_bias_observable = true; + + } else if (_mag_bias_observable) { + // require sustained yaw motion of 50% the initial yaw rate threshold + const float yaw_dt = 1e-6f * (float)(_imu_sample_delayed.time_us - _time_yaw_started); + const float min_yaw_change_req = 0.5f * _params.mag_yaw_rate_gate * yaw_dt; + _mag_bias_observable = fabsf(_yaw_delta_ef) > min_yaw_change_req; + } + + _yaw_delta_ef = 0.0f; + _time_yaw_started = _imu_sample_delayed.time_us; +} + +bool Ekf::canUse3DMagFusion() const +{ + // Use of 3D fusion requires an in-air heading alignment but it should not + // be used when the heading and mag biases are not observable for more than 2 seconds + return _control_status.flags.mag_aligned_in_flight + && ((_imu_sample_delayed.time_us - _time_last_mov_3d_mag_suitable) < (uint64_t)2e6); +} + +void Ekf::checkMagDeclRequired() +{ + // if we are using 3-axis magnetometer fusion, but without external NE aiding, + // then the declination must be fused as an observation to prevent long term heading drift + // fusing declination when gps aiding is available is optional, but recommended to prevent + // problem if the vehicle is static for extended periods of time + const bool user_selected = (_params.mag_declination_source & MASK_FUSE_DECL); + const bool not_using_ne_aiding = !_control_status.flags.gps; + _control_status.flags.mag_dec = (_control_status.flags.mag_3D && (not_using_ne_aiding || user_selected)); +} + +void Ekf::checkMagInhibition() +{ + _is_yaw_fusion_inhibited = shouldInhibitMag(); + if (!_is_yaw_fusion_inhibited) { + _mag_use_not_inhibit_us = _imu_sample_delayed.time_us; + } + + // If magnetometer use has been inhibited continuously then a yaw reset is required for a valid heading + if (uint32_t(_imu_sample_delayed.time_us - _mag_use_not_inhibit_us) > (uint32_t)5e6) { + _mag_inhibit_yaw_reset_req = true; + } +} + +bool Ekf::shouldInhibitMag() const +{ + // If the user has selected auto protection against indoor magnetic field errors, only use the magnetometer + // if a yaw angle relative to true North is required for navigation. If no GPS or other earth frame aiding + // is available, assume that we are operating indoors and the magnetometer should not be used. + // Also inhibit mag fusion when a strong magnetic field interference is detected or the user + // has explicitly stopped magnetometer use. + const bool user_selected = (_params.mag_fusion_type == MAG_FUSE_TYPE_INDOOR); + + const bool heading_not_required_for_navigation = !_control_status.flags.gps + && !_control_status.flags.ev_pos + && !_control_status.flags.ev_vel; + + return (user_selected && heading_not_required_for_navigation) + || isStrongMagneticDisturbance(); +} + +void Ekf::checkMagFieldStrength() +{ + if (_params.check_mag_strength) { + _control_status.flags.mag_field_disturbed = _NED_origin_initialised + ? !isMeasuredMatchingGpsMagStrength() + : !isMeasuredMatchingAverageMagStrength(); + + } else { + _control_status.flags.mag_field_disturbed = false; + } +} + +bool Ekf::isMeasuredMatchingGpsMagStrength() const +{ + constexpr float wmm_gate_size = 0.2f; // +/- Gauss + return isMeasuredMatchingExpected(_mag_sample_delayed.mag.length(), _mag_strength_gps, wmm_gate_size); +} + +bool Ekf::isMeasuredMatchingAverageMagStrength() const +{ + constexpr float average_earth_mag_field_strength = 0.45f; // Gauss + constexpr float average_earth_mag_gate_size = 0.40f; // +/- Gauss + return isMeasuredMatchingExpected(_mag_sample_delayed.mag.length(), + average_earth_mag_field_strength, + average_earth_mag_gate_size); +} + +bool Ekf::isMeasuredMatchingExpected(const float measured, const float expected, const float gate) +{ + return (measured >= expected - gate) + && (measured <= expected + gate); +} + +void Ekf::runMagAndMagDeclFusions() +{ + if (_control_status.flags.mag_3D) { + run3DMagAndDeclFusions(); + } else if (_control_status.flags.mag_hdg) { + fuseHeading(); + } +} + +void Ekf::run3DMagAndDeclFusions() +{ + if (!_mag_decl_cov_reset) { + // After any magnetic field covariance reset event the earth field state + // covariances need to be corrected to incorporate knowledge of the declination + // before fusing magnetomer data to prevent rapid rotation of the earth field + // states for the first few observations. + fuseDeclination(0.02f); + _mag_decl_cov_reset = true; + fuseMag(); + + } else { + // The normal sequence is to fuse the magnetometer data first before fusing + // declination angle at a higher uncertainty to allow some learning of + // declination angle over time. + fuseMag(); + if (_control_status.flags.mag_dec) { + fuseDeclination(0.5f); + } + } +} + +bool Ekf::otherHeadingSourcesHaveStopped() +{ + // detect rising edge of noOtherYawAidingThanMag() + bool result = noOtherYawAidingThanMag() && _non_mag_yaw_aiding_running_prev; + + _non_mag_yaw_aiding_running_prev = !noOtherYawAidingThanMag(); + + return result; +} diff --git a/src/lib/ecl/EKF/mag_fusion.cpp b/src/lib/ecl/EKF/mag_fusion.cpp new file mode 100644 index 0000000000..5a799f8119 --- /dev/null +++ b/src/lib/ecl/EKF/mag_fusion.cpp @@ -0,0 +1,962 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file heading_fusion.cpp + * Magnetometer fusion methods. + * Equations generated using EKF/python/ekf_derivation/main.py + * + * @author Roman Bast + * @author Paul Riseborough + * + */ + +#include "ekf.h" +#include +#include + +void Ekf::fuseMag() +{ + // assign intermediate variables + const float &q0 = _state.quat_nominal(0); + const float &q1 = _state.quat_nominal(1); + const float &q2 = _state.quat_nominal(2); + const float &q3 = _state.quat_nominal(3); + + const float &magN = _state.mag_I(0); + const float &magE = _state.mag_I(1); + const float &magD = _state.mag_I(2); + + // XYZ Measurement uncertainty. Need to consider timing errors for fast rotations + const float R_MAG = sq(fmaxf(_params.mag_noise, 0.0f)); + + // calculate intermediate variables used for X axis innovation variance, observation Jacobians and Kalman gains + const char* numerical_error_covariance_reset_string = "numerical error - covariance reset"; + const float HKX0 = -magD*q2 + magE*q3 + magN*q0; + const float HKX1 = magD*q3 + magE*q2 + magN*q1; + const float HKX2 = magE*q1; + const float HKX3 = magD*q0; + const float HKX4 = magN*q2; + const float HKX5 = magD*q1 + magE*q0 - magN*q3; + const float HKX6 = ecl::powf(q0, 2) + ecl::powf(q1, 2) - ecl::powf(q2, 2) - ecl::powf(q3, 2); + const float HKX7 = q0*q3 + q1*q2; + const float HKX8 = q1*q3; + const float HKX9 = q0*q2; + const float HKX10 = 2*HKX7; + const float HKX11 = -2*HKX8 + 2*HKX9; + const float HKX12 = 2*HKX1; + const float HKX13 = 2*HKX0; + const float HKX14 = -2*HKX2 + 2*HKX3 + 2*HKX4; + const float HKX15 = 2*HKX5; + const float HKX16 = HKX10*P(0,17) - HKX11*P(0,18) + HKX12*P(0,1) + HKX13*P(0,0) - HKX14*P(0,2) + HKX15*P(0,3) + HKX6*P(0,16) + P(0,19); + const float HKX17 = HKX10*P(16,17) - HKX11*P(16,18) + HKX12*P(1,16) + HKX13*P(0,16) - HKX14*P(2,16) + HKX15*P(3,16) + HKX6*P(16,16) + P(16,19); + const float HKX18 = HKX10*P(17,18) - HKX11*P(18,18) + HKX12*P(1,18) + HKX13*P(0,18) - HKX14*P(2,18) + HKX15*P(3,18) + HKX6*P(16,18) + P(18,19); + const float HKX19 = HKX10*P(2,17) - HKX11*P(2,18) + HKX12*P(1,2) + HKX13*P(0,2) - HKX14*P(2,2) + HKX15*P(2,3) + HKX6*P(2,16) + P(2,19); + const float HKX20 = HKX10*P(17,17) - HKX11*P(17,18) + HKX12*P(1,17) + HKX13*P(0,17) - HKX14*P(2,17) + HKX15*P(3,17) + HKX6*P(16,17) + P(17,19); + const float HKX21 = HKX10*P(3,17) - HKX11*P(3,18) + HKX12*P(1,3) + HKX13*P(0,3) - HKX14*P(2,3) + HKX15*P(3,3) + HKX6*P(3,16) + P(3,19); + const float HKX22 = HKX10*P(1,17) - HKX11*P(1,18) + HKX12*P(1,1) + HKX13*P(0,1) - HKX14*P(1,2) + HKX15*P(1,3) + HKX6*P(1,16) + P(1,19); + const float HKX23 = HKX10*P(17,19) - HKX11*P(18,19) + HKX12*P(1,19) + HKX13*P(0,19) - HKX14*P(2,19) + HKX15*P(3,19) + HKX6*P(16,19) + P(19,19); + + _mag_innov_var(0) = HKX10*HKX20 - HKX11*HKX18 + HKX12*HKX22 + HKX13*HKX16 - HKX14*HKX19 + HKX15*HKX21 + HKX17*HKX6 + HKX23 + R_MAG; + + if (_mag_innov_var(0) < R_MAG) { + // the innovation variance contribution from the state covariances is negative which means the covariance matrix is badly conditioned + _fault_status.flags.bad_mag_x = true; + + // we need to re-initialise covariances and abort this fusion step + resetMagRelatedCovariances(); + ECL_ERR("magX %s", numerical_error_covariance_reset_string); + return; + } + + _fault_status.flags.bad_mag_x = false; + + const float HKX24 = 1.0F/_mag_innov_var(0); + + // intermediate variables for calculation of innovations variances for Y and Z axes + // don't calculate all terms needed for observation jacobians and Kalman gains because + // these will have to be recalculated when the X and Y axes are fused + const float IV0 = q0*q1; + const float IV1 = q2*q3; + const float IV2 = 2*IV0 + 2*IV1; + const float IV3 = 2*q0*q3 - 2*q1*q2; + const float IV4 = 2*magD*q3 + 2*magE*q2 + 2*magN*q1; + const float IV5 = 2*magD*q1 + 2*magE*q0 - 2*magN*q3; + const float IV6 = 2*magD*q0 - 2*magE*q1 + 2*magN*q2; + const float IV7 = -2*magD*q2 + 2*magE*q3 + 2*magN*q0; + const float IV8 = ecl::powf(q2, 2); + const float IV9 = ecl::powf(q3, 2); + const float IV10 = ecl::powf(q0, 2) - ecl::powf(q1, 2); + const float IV11 = IV10 + IV8 - IV9; + const float IV12 = IV7*P(2,3); + const float IV13 = IV5*P(0,1); + const float IV14 = IV6*P(0,1); + const float IV15 = IV4*P(2,3); + const float IV16 = 2*q0*q2 + 2*q1*q3; + const float IV17 = 2*IV0 - 2*IV1; + const float IV18 = IV10 - IV8 + IV9; + + _mag_innov_var(1) = IV11*P(17,20) + IV11*(IV11*P(17,17) + IV2*P(17,18) - IV3*P(16,17) + IV4*P(2,17) + IV5*P(0,17) + IV6*P(1,17) - IV7*P(3,17) + P(17,20)) + IV2*P(18,20) + IV2*(IV11*P(17,18) + IV2*P(18,18) - IV3*P(16,18) + IV4*P(2,18) + IV5*P(0,18) + IV6*P(1,18) - IV7*P(3,18) + P(18,20)) - IV3*P(16,20) - IV3*(IV11*P(16,17) + IV2*P(16,18) - IV3*P(16,16) + IV4*P(2,16) + IV5*P(0,16) + IV6*P(1,16) - IV7*P(3,16) + P(16,20)) + IV4*P(2,20) + IV4*(IV11*P(2,17) - IV12 + IV2*P(2,18) - IV3*P(2,16) + IV4*P(2,2) + IV5*P(0,2) + IV6*P(1,2) + P(2,20)) + IV5*P(0,20) + IV5*(IV11*P(0,17) + IV14 + IV2*P(0,18) - IV3*P(0,16) + IV4*P(0,2) + IV5*P(0,0) - IV7*P(0,3) + P(0,20)) + IV6*P(1,20) + IV6*(IV11*P(1,17) + IV13 + IV2*P(1,18) - IV3*P(1,16) + IV4*P(1,2) + IV6*P(1,1) - IV7*P(1,3) + P(1,20)) - IV7*P(3,20) - IV7*(IV11*P(3,17) + IV15 + IV2*P(3,18) - IV3*P(3,16) + IV5*P(0,3) + IV6*P(1,3) - IV7*P(3,3) + P(3,20)) + P(20,20) + R_MAG; + _mag_innov_var(2) = IV16*P(16,21) + IV16*(IV16*P(16,16) - IV17*P(16,17) + IV18*P(16,18) + IV4*P(3,16) - IV5*P(1,16) + IV6*P(0,16) + IV7*P(2,16) + P(16,21)) - IV17*P(17,21) - IV17*(IV16*P(16,17) - IV17*P(17,17) + IV18*P(17,18) + IV4*P(3,17) - IV5*P(1,17) + IV6*P(0,17) + IV7*P(2,17) + P(17,21)) + IV18*P(18,21) + IV18*(IV16*P(16,18) - IV17*P(17,18) + IV18*P(18,18) + IV4*P(3,18) - IV5*P(1,18) + IV6*P(0,18) + IV7*P(2,18) + P(18,21)) + IV4*P(3,21) + IV4*(IV12 + IV16*P(3,16) - IV17*P(3,17) + IV18*P(3,18) + IV4*P(3,3) - IV5*P(1,3) + IV6*P(0,3) + P(3,21)) - IV5*P(1,21) - IV5*(IV14 + IV16*P(1,16) - IV17*P(1,17) + IV18*P(1,18) + IV4*P(1,3) - IV5*P(1,1) + IV7*P(1,2) + P(1,21)) + IV6*P(0,21) + IV6*(-IV13 + IV16*P(0,16) - IV17*P(0,17) + IV18*P(0,18) + IV4*P(0,3) + IV6*P(0,0) + IV7*P(0,2) + P(0,21)) + IV7*P(2,21) + IV7*(IV15 + IV16*P(2,16) - IV17*P(2,17) + IV18*P(2,18) - IV5*P(1,2) + IV6*P(0,2) + IV7*P(2,2) + P(2,21)) + P(21,21) + R_MAG; + + // chedk innovation variances for being badly conditioned + + if (_mag_innov_var(1) < R_MAG) { + // the innovation variance contribution from the state covariances is negtive which means the covariance matrix is badly conditioned + _fault_status.flags.bad_mag_y = true; + + // we need to re-initialise covariances and abort this fusion step + resetMagRelatedCovariances(); + ECL_ERR("magY %s", numerical_error_covariance_reset_string); + return; + } + + _fault_status.flags.bad_mag_y = false; + + if (_mag_innov_var(2) < R_MAG) { + // the innovation variance contribution from the state covariances is negative which means the covariance matrix is badly conditioned + _fault_status.flags.bad_mag_z = true; + + // we need to re-initialise covariances and abort this fusion step + resetMagRelatedCovariances(); + ECL_ERR("magZ %s", numerical_error_covariance_reset_string); + return; + } + + _fault_status.flags.bad_mag_z = false; + + // rotate magnetometer earth field state into body frame + const Dcmf R_to_body = quatToInverseRotMat(_state.quat_nominal); + + const Vector3f mag_I_rot = R_to_body * _state.mag_I; + + // compute magnetometer innovations + _mag_innov = mag_I_rot + _state.mag_B - _mag_sample_delayed.mag; + + // do not use the synthesized measurement for the magnetomter Z component for 3D fusion + if (_control_status.flags.synthetic_mag_z) { + _mag_innov(2) = 0.0f; + } + + // Perform an innovation consistency check and report the result + bool all_innovation_checks_passed = true; + + for (uint8_t index = 0; index <= 2; index++) { + _mag_test_ratio(index) = sq(_mag_innov(index)) / (sq(math::max(_params.mag_innov_gate, 1.0f)) * _mag_innov_var(index)); + + if (_mag_test_ratio(index) > 1.0f) { + all_innovation_checks_passed = false; + _innov_check_fail_status.value |= (1 << (index + 3)); + + } else { + _innov_check_fail_status.value &= ~(1 << (index + 3)); + } + } + + // we are no longer using heading fusion so set the reported test level to zero + _yaw_test_ratio = 0.0f; + + // if any axis fails, abort the mag fusion + if (!all_innovation_checks_passed) { + return; + } + + // For the first few seconds after in-flight alignment we allow the magnetic field state estimates to stabilise + // before they are used to constrain heading drift + const bool update_all_states = ((_imu_sample_delayed.time_us - _flt_mag_align_start_time) > (uint64_t)5e6); + + // Observation jacobian and Kalman gain vectors + SparseVector24f<0,1,2,3,16,17,18,19,20,21> Hfusion; + Vector24f Kfusion; + + // update the states and covariance using sequential fusion of the magnetometer components + for (uint8_t index = 0; index <= 2; index++) { + + // Calculate Kalman gains and observation jacobians + if (index == 0) { + // Calculate X axis observation jacobians + Hfusion.at<0>() = 2*HKX0; + Hfusion.at<1>() = 2*HKX1; + Hfusion.at<2>() = 2*HKX2 - 2*HKX3 - 2*HKX4; + Hfusion.at<3>() = 2*HKX5; + Hfusion.at<16>() = HKX6; + Hfusion.at<17>() = 2*HKX7; + Hfusion.at<18>() = 2*HKX8 - 2*HKX9; + Hfusion.at<19>() = 1; + + // Calculate X axis Kalman gains + if (update_all_states) { + Kfusion(0) = HKX16*HKX24; + Kfusion(1) = HKX22*HKX24; + Kfusion(2) = HKX19*HKX24; + Kfusion(3) = HKX21*HKX24; + + for (unsigned row = 4; row <= 15; row++) { + Kfusion(row) = HKX24*(HKX10*P(row,17) - HKX11*P(row,18) + HKX12*P(1,row) + HKX13*P(0,row) - HKX14*P(2,row) + HKX15*P(3,row) + HKX6*P(row,16) + P(row,19)); + } + + for (unsigned row = 22; row <= 23; row++) { + Kfusion(row) = HKX24*(HKX10*P(17,row) - HKX11*P(18,row) + HKX12*P(1,row) + HKX13*P(0,row) - HKX14*P(2,row) + HKX15*P(3,row) + HKX6*P(16,row) + P(19,row)); + } + } + + Kfusion(16) = HKX17*HKX24; + Kfusion(17) = HKX20*HKX24; + Kfusion(18) = HKX18*HKX24; + Kfusion(19) = HKX23*HKX24; + + for (unsigned row = 20; row <= 21; row++) { + Kfusion(row) = HKX24*(HKX10*P(17,row) - HKX11*P(18,row) + HKX12*P(1,row) + HKX13*P(0,row) - HKX14*P(2,row) + HKX15*P(3,row) + HKX6*P(16,row) + P(19,row)); + } + + } else if (index == 1) { + + // recalculate innovation variance becasue states and covariances have changed due to previous fusion + const float HKY0 = magD*q1 + magE*q0 - magN*q3; + const float HKY1 = magD*q0 - magE*q1 + magN*q2; + const float HKY2 = magD*q3 + magE*q2 + magN*q1; + const float HKY3 = magD*q2; + const float HKY4 = magE*q3; + const float HKY5 = magN*q0; + const float HKY6 = q1*q2; + const float HKY7 = q0*q3; + const float HKY8 = ecl::powf(q0, 2) - ecl::powf(q1, 2) + ecl::powf(q2, 2) - ecl::powf(q3, 2); + const float HKY9 = q0*q1 + q2*q3; + const float HKY10 = 2*HKY9; + const float HKY11 = -2*HKY6 + 2*HKY7; + const float HKY12 = 2*HKY2; + const float HKY13 = 2*HKY0; + const float HKY14 = 2*HKY1; + const float HKY15 = -2*HKY3 + 2*HKY4 + 2*HKY5; + const float HKY16 = HKY10*P(0,18) - HKY11*P(0,16) + HKY12*P(0,2) + HKY13*P(0,0) + HKY14*P(0,1) - HKY15*P(0,3) + HKY8*P(0,17) + P(0,20); + const float HKY17 = HKY10*P(17,18) - HKY11*P(16,17) + HKY12*P(2,17) + HKY13*P(0,17) + HKY14*P(1,17) - HKY15*P(3,17) + HKY8*P(17,17) + P(17,20); + const float HKY18 = HKY10*P(16,18) - HKY11*P(16,16) + HKY12*P(2,16) + HKY13*P(0,16) + HKY14*P(1,16) - HKY15*P(3,16) + HKY8*P(16,17) + P(16,20); + const float HKY19 = HKY10*P(3,18) - HKY11*P(3,16) + HKY12*P(2,3) + HKY13*P(0,3) + HKY14*P(1,3) - HKY15*P(3,3) + HKY8*P(3,17) + P(3,20); + const float HKY20 = HKY10*P(18,18) - HKY11*P(16,18) + HKY12*P(2,18) + HKY13*P(0,18) + HKY14*P(1,18) - HKY15*P(3,18) + HKY8*P(17,18) + P(18,20); + const float HKY21 = HKY10*P(1,18) - HKY11*P(1,16) + HKY12*P(1,2) + HKY13*P(0,1) + HKY14*P(1,1) - HKY15*P(1,3) + HKY8*P(1,17) + P(1,20); + const float HKY22 = HKY10*P(2,18) - HKY11*P(2,16) + HKY12*P(2,2) + HKY13*P(0,2) + HKY14*P(1,2) - HKY15*P(2,3) + HKY8*P(2,17) + P(2,20); + const float HKY23 = HKY10*P(18,20) - HKY11*P(16,20) + HKY12*P(2,20) + HKY13*P(0,20) + HKY14*P(1,20) - HKY15*P(3,20) + HKY8*P(17,20) + P(20,20); + + _mag_innov_var(1) = (HKY10*HKY20 - HKY11*HKY18 + HKY12*HKY22 + HKY13*HKY16 + HKY14*HKY21 - HKY15*HKY19 + HKY17*HKY8 + HKY23 + R_MAG); + + if (_mag_innov_var(1) < R_MAG) { + // the innovation variance contribution from the state covariances is negative which means the covariance matrix is badly conditioned + _fault_status.flags.bad_mag_y = true; + + // we need to re-initialise covariances and abort this fusion step + resetMagRelatedCovariances(); + ECL_ERR("magY %s", numerical_error_covariance_reset_string); + return; + } + const float HKY24 = 1.0F/_mag_innov_var(1); + + // Calculate Y axis observation jacobians + Hfusion.setZero(); + Hfusion.at<0>() = 2*HKY0; + Hfusion.at<1>() = 2*HKY1; + Hfusion.at<2>() = 2*HKY2; + Hfusion.at<3>() = 2*HKY3 - 2*HKY4 - 2*HKY5; + Hfusion.at<16>() = 2*HKY6 - 2*HKY7; + Hfusion.at<17>() = HKY8; + Hfusion.at<18>() = 2*HKY9; + Hfusion.at<20>() = 1; + + // Calculate Y axis Kalman gains + if (update_all_states) { + Kfusion(0) = HKY16*HKY24; + Kfusion(1) = HKY21*HKY24; + Kfusion(2) = HKY22*HKY24; + Kfusion(3) = HKY19*HKY24; + + for (unsigned row = 4; row <= 15; row++) { + Kfusion(row) = HKY24*(HKY10*P(row,18) - HKY11*P(row,16) + HKY12*P(2,row) + HKY13*P(0,row) + HKY14*P(1,row) - HKY15*P(3,row) + HKY8*P(row,17) + P(row,20)); + } + + for (unsigned row = 22; row <= 23; row++) { + Kfusion(row) = HKY24*(HKY10*P(18,row) - HKY11*P(16,row) + HKY12*P(2,row) + HKY13*P(0,row) + HKY14*P(1,row) - HKY15*P(3,row) + HKY8*P(17,row) + P(20,row)); + } + } + + Kfusion(16) = HKY18*HKY24; + Kfusion(17) = HKY17*HKY24; + Kfusion(18) = HKY20*HKY24; + Kfusion(19) = HKY24*(HKY10*P(18,19) - HKY11*P(16,19) + HKY12*P(2,19) + HKY13*P(0,19) + HKY14*P(1,19) - HKY15*P(3,19) + HKY8*P(17,19) + P(19,20)); + Kfusion(20) = HKY23*HKY24; + Kfusion(21) = HKY24*(HKY10*P(18,21) - HKY11*P(16,21) + HKY12*P(2,21) + HKY13*P(0,21) + HKY14*P(1,21) - HKY15*P(3,21) + HKY8*P(17,21) + P(20,21)); + + } else if (index == 2) { + + // we do not fuse synthesized magnetomter measurements when doing 3D fusion + if (_control_status.flags.synthetic_mag_z) { + continue; + } + + // recalculate innovation variance becasue states and covariances have changed due to previous fusion + const float HKZ0 = magD*q0 - magE*q1 + magN*q2; + const float HKZ1 = magN*q3; + const float HKZ2 = magD*q1; + const float HKZ3 = magE*q0; + const float HKZ4 = -magD*q2 + magE*q3 + magN*q0; + const float HKZ5 = magD*q3 + magE*q2 + magN*q1; + const float HKZ6 = q0*q2 + q1*q3; + const float HKZ7 = q2*q3; + const float HKZ8 = q0*q1; + const float HKZ9 = ecl::powf(q0, 2) - ecl::powf(q1, 2) - ecl::powf(q2, 2) + ecl::powf(q3, 2); + const float HKZ10 = 2*HKZ6; + const float HKZ11 = -2*HKZ7 + 2*HKZ8; + const float HKZ12 = 2*HKZ5; + const float HKZ13 = 2*HKZ0; + const float HKZ14 = -2*HKZ1 + 2*HKZ2 + 2*HKZ3; + const float HKZ15 = 2*HKZ4; + const float HKZ16 = HKZ10*P(0,16) - HKZ11*P(0,17) + HKZ12*P(0,3) + HKZ13*P(0,0) - HKZ14*P(0,1) + HKZ15*P(0,2) + HKZ9*P(0,18) + P(0,21); + const float HKZ17 = HKZ10*P(16,18) - HKZ11*P(17,18) + HKZ12*P(3,18) + HKZ13*P(0,18) - HKZ14*P(1,18) + HKZ15*P(2,18) + HKZ9*P(18,18) + P(18,21); + const float HKZ18 = HKZ10*P(16,17) - HKZ11*P(17,17) + HKZ12*P(3,17) + HKZ13*P(0,17) - HKZ14*P(1,17) + HKZ15*P(2,17) + HKZ9*P(17,18) + P(17,21); + const float HKZ19 = HKZ10*P(1,16) - HKZ11*P(1,17) + HKZ12*P(1,3) + HKZ13*P(0,1) - HKZ14*P(1,1) + HKZ15*P(1,2) + HKZ9*P(1,18) + P(1,21); + const float HKZ20 = HKZ10*P(16,16) - HKZ11*P(16,17) + HKZ12*P(3,16) + HKZ13*P(0,16) - HKZ14*P(1,16) + HKZ15*P(2,16) + HKZ9*P(16,18) + P(16,21); + const float HKZ21 = HKZ10*P(3,16) - HKZ11*P(3,17) + HKZ12*P(3,3) + HKZ13*P(0,3) - HKZ14*P(1,3) + HKZ15*P(2,3) + HKZ9*P(3,18) + P(3,21); + const float HKZ22 = HKZ10*P(2,16) - HKZ11*P(2,17) + HKZ12*P(2,3) + HKZ13*P(0,2) - HKZ14*P(1,2) + HKZ15*P(2,2) + HKZ9*P(2,18) + P(2,21); + const float HKZ23 = HKZ10*P(16,21) - HKZ11*P(17,21) + HKZ12*P(3,21) + HKZ13*P(0,21) - HKZ14*P(1,21) + HKZ15*P(2,21) + HKZ9*P(18,21) + P(21,21); + + _mag_innov_var(2) = (HKZ10*HKZ20 - HKZ11*HKZ18 + HKZ12*HKZ21 + HKZ13*HKZ16 - HKZ14*HKZ19 + HKZ15*HKZ22 + HKZ17*HKZ9 + HKZ23 + R_MAG); + + if (_mag_innov_var(2) < R_MAG) { + // the innovation variance contribution from the state covariances is negative which means the covariance matrix is badly conditioned + _fault_status.flags.bad_mag_z = true; + + // we need to re-initialise covariances and abort this fusion step + resetMagRelatedCovariances(); + ECL_ERR("magZ %s", numerical_error_covariance_reset_string); + return; + } + + const float HKZ24 = 1.0F/_mag_innov_var(2); + + // calculate Z axis observation jacobians + Hfusion.setZero(); + Hfusion.at<0>() = 2*HKZ0; + Hfusion.at<1>() = 2*HKZ1 - 2*HKZ2 - 2*HKZ3; + Hfusion.at<2>() = 2*HKZ4; + Hfusion.at<3>() = 2*HKZ5; + Hfusion.at<16>() = 2*HKZ6; + Hfusion.at<17>() = 2*HKZ7 - 2*HKZ8; + Hfusion.at<18>() = HKZ9; + Hfusion.at<21>() = 1; + + // Calculate Z axis Kalman gains + if (update_all_states) { + Kfusion(0) = HKZ16*HKZ24; + Kfusion(1) = HKZ19*HKZ24; + Kfusion(2) = HKZ22*HKZ24; + Kfusion(3) = HKZ21*HKZ24; + + for (unsigned row = 4; row <= 15; row++) { + Kfusion(row) = HKZ24*(HKZ10*P(row,16) - HKZ11*P(row,17) + HKZ12*P(3,row) + HKZ13*P(0,row) - HKZ14*P(1,row) + HKZ15*P(2,row) + HKZ9*P(row,18) + P(row,21)); + } + + for (unsigned row = 22; row <= 23; row++) { + Kfusion(row) = HKZ24*(HKZ10*P(16,row) - HKZ11*P(17,row) + HKZ12*P(3,row) + HKZ13*P(0,row) - HKZ14*P(1,row) + HKZ15*P(2,row) + HKZ9*P(18,row) + P(21,row)); + } + } + + Kfusion(16) = HKZ20*HKZ24; + Kfusion(17) = HKZ18*HKZ24; + Kfusion(18) = HKZ17*HKZ24; + + for (unsigned row = 19; row <= 20; row++) { + Kfusion(row) = HKZ24*(HKZ10*P(16,row) - HKZ11*P(17,row) + HKZ12*P(3,row) + HKZ13*P(0,row) - HKZ14*P(1,row) + HKZ15*P(2,row) + HKZ9*P(18,row) + P(row,21)); + } + + Kfusion(21) = HKZ23*HKZ24; + } + + const bool is_fused = measurementUpdate(Kfusion, Hfusion, _mag_innov(index)); + + if (index == 0) { + _fault_status.flags.bad_mag_x = !is_fused; + + } else if (index == 1) { + _fault_status.flags.bad_mag_y = !is_fused; + + } else if (index == 2) { + _fault_status.flags.bad_mag_z = !is_fused; + } + + if (is_fused) { + limitDeclination(); + } + } +} + +void Ekf::fuseYaw321(float yaw, float yaw_variance, bool zero_innovation) +{ + // assign intermediate state variables + const float &q0 = _state.quat_nominal(0); + const float &q1 = _state.quat_nominal(1); + const float &q2 = _state.quat_nominal(2); + const float &q3 = _state.quat_nominal(3); + + const float R_YAW = fmaxf(yaw_variance, 1.0e-4f); + const float measurement = wrap_pi(yaw); + + // calculate 321 yaw observation matrix + // choose A or B computational paths to avoid singularity in derivation at +-90 degrees yaw + bool canUseA = false; + const float SA0 = 2*q3; + const float SA1 = 2*q2; + const float SA2 = SA0*q0 + SA1*q1; + const float SA3 = sq(q0) + sq(q1) - sq(q2) - sq(q3); + float SA4, SA5_inv; + if (sq(SA3) > 1e-6f) { + SA4 = 1.0F/sq(SA3); + SA5_inv = sq(SA2)*SA4 + 1; + canUseA = fabsf(SA5_inv) > 1e-6f; + } + + bool canUseB = false; + const float SB0 = 2*q0; + const float SB1 = 2*q1; + const float SB2 = SB0*q3 + SB1*q2; + const float SB4 = sq(q0) + sq(q1) - sq(q2) - sq(q3); + float SB3, SB5_inv; + if (sq(SB2) > 1e-6f) { + SB3 = 1.0F/sq(SB2); + SB5_inv = SB3*sq(SB4) + 1; + canUseB = fabsf(SB5_inv) > 1e-6f; + } + + Vector4f H_YAW; + + if (canUseA && (!canUseB || fabsf(SA5_inv) >= fabsf(SB5_inv))) { + const float SA5 = 1.0F/SA5_inv; + const float SA6 = 1.0F/SA3; + const float SA7 = SA2*SA4; + const float SA8 = 2*SA7; + const float SA9 = 2*SA6; + + H_YAW(0) = SA5*(SA0*SA6 - SA8*q0); + H_YAW(1) = SA5*(SA1*SA6 - SA8*q1); + H_YAW(2) = SA5*(SA1*SA7 + SA9*q1); + H_YAW(3) = SA5*(SA0*SA7 + SA9*q0); + } else if (canUseB && (!canUseA || fabsf(SB5_inv) > fabsf(SA5_inv))) { + const float SB5 = 1.0F/SB5_inv; + const float SB6 = 1.0F/SB2; + const float SB7 = SB3*SB4; + const float SB8 = 2*SB7; + const float SB9 = 2*SB6; + + H_YAW(0) = -SB5*(SB0*SB6 - SB8*q3); + H_YAW(1) = -SB5*(SB1*SB6 - SB8*q2); + H_YAW(2) = -SB5*(-SB1*SB7 - SB9*q2); + H_YAW(3) = -SB5*(-SB0*SB7 - SB9*q3); + } else { + return; + } + + // calculate the yaw innovation and wrap to the interval between +-pi + float innovation; + if (zero_innovation) { + innovation = 0.0f; + } else { + innovation = wrap_pi(atan2f(_R_to_earth(1, 0), _R_to_earth(0, 0)) - measurement); + } + + // define the innovation gate size + float innov_gate = math::max(_params.heading_innov_gate, 1.0f); + + // Update the quaternion states and covariance matrix + updateQuaternion(innovation, R_YAW, innov_gate, H_YAW); +} + +void Ekf::fuseYaw312(float yaw, float yaw_variance, bool zero_innovation) +{ + // assign intermediate state variables + const float q0 = _state.quat_nominal(0); + const float q1 = _state.quat_nominal(1); + const float q2 = _state.quat_nominal(2); + const float q3 = _state.quat_nominal(3); + + const float R_YAW = fmaxf(yaw_variance, 1.0e-4f); + const float measurement = wrap_pi(yaw); + + // calculate 312 yaw observation matrix + // choose A or B computational paths to avoid singularity in derivation at +-90 degrees yaw + bool canUseA = false; + const float SA0 = 2*q3; + const float SA1 = 2*q2; + const float SA2 = SA0*q0 - SA1*q1; + const float SA3 = sq(q0) - sq(q1) + sq(q2) - sq(q3); + float SA4, SA5_inv; + if (sq(SA3) > 1e-6f) { + SA4 = 1.0F/sq(SA3); + SA5_inv = sq(SA2)*SA4 + 1; + canUseA = fabsf(SA5_inv) > 1e-6f; + } + + bool canUseB = false; + const float SB0 = 2*q0; + const float SB1 = 2*q1; + const float SB2 = -SB0*q3 + SB1*q2; + const float SB4 = -sq(q0) + sq(q1) - sq(q2) + sq(q3); + float SB3, SB5_inv; + if (sq(SB2) > 1e-6f) { + SB3 = 1.0F/sq(SB2); + SB5_inv = SB3*sq(SB4) + 1; + canUseB = fabsf(SB5_inv) > 1e-6f; + } + + Vector4f H_YAW; + + if (canUseA && (!canUseB || fabsf(SA5_inv) >= fabsf(SB5_inv))) { + const float SA5 = 1.0F/SA5_inv; + const float SA6 = 1.0F/SA3; + const float SA7 = SA2*SA4; + const float SA8 = 2*SA7; + const float SA9 = 2*SA6; + + H_YAW(0) = SA5*(SA0*SA6 - SA8*q0); + H_YAW(1) = SA5*(-SA1*SA6 + SA8*q1); + H_YAW(2) = SA5*(-SA1*SA7 - SA9*q1); + H_YAW(3) = SA5*(SA0*SA7 + SA9*q0); + } else if (canUseB && (!canUseA || fabsf(SB5_inv) > fabsf(SA5_inv))) { + const float SB5 = 1.0F/SB5_inv; + const float SB6 = 1.0F/SB2; + const float SB7 = SB3*SB4; + const float SB8 = 2*SB7; + const float SB9 = 2*SB6; + + H_YAW(0) = -SB5*(-SB0*SB6 + SB8*q3); + H_YAW(1) = -SB5*(SB1*SB6 - SB8*q2); + H_YAW(2) = -SB5*(-SB1*SB7 - SB9*q2); + H_YAW(3) = -SB5*(SB0*SB7 + SB9*q3); + } else { + return; + } + + float innovation; + if (zero_innovation) { + innovation = 0.0f; + } else { + // calculate the the innovation and wrap to the interval between +-pi + innovation = wrap_pi(atan2f(-_R_to_earth(0, 1), _R_to_earth(1, 1)) - measurement); + } + + // define the innovation gate size + float innov_gate = math::max(_params.heading_innov_gate, 1.0f); + + // Update the quaternion states and covariance matrix + updateQuaternion(innovation, R_YAW, innov_gate, H_YAW); +} + +// update quaternion states and covariances using the yaw innovation, yaw observation variance and yaw Jacobian +void Ekf::updateQuaternion(const float innovation, const float variance, const float gate_sigma, const Vector4f& yaw_jacobian) +{ + // Calculate innovation variance and Kalman gains, taking advantage of the fact that only the first 4 elements in H are non zero + // calculate the innovation variance + _heading_innov_var = variance; + for (unsigned row = 0; row <= 3; row++) { + float tmp = 0.0f; + + for (uint8_t col = 0; col <= 3; col++) { + tmp += P(row,col) * yaw_jacobian(col); + } + + _heading_innov_var += yaw_jacobian(row) * tmp; + } + + float heading_innov_var_inv; + + // check if the innovation variance calculation is badly conditioned + if (_heading_innov_var >= variance) { + // the innovation variance contribution from the state covariances is not negative, no fault + _fault_status.flags.bad_hdg = false; + heading_innov_var_inv = 1.0f / _heading_innov_var; + + } else { + // the innovation variance contribution from the state covariances is negative which means the covariance matrix is badly conditioned + _fault_status.flags.bad_hdg = true; + + // we reinitialise the covariance matrix and abort this fusion step + initialiseCovariance(); + ECL_ERR("mag yaw fusion numerical error - covariance reset"); + return; + } + + // calculate the Kalman gains + // only calculate gains for states we are using + Vector24f Kfusion; + + for (uint8_t row = 0; row <= 15; row++) { + for (uint8_t col = 0; col <= 3; col++) { + Kfusion(row) += P(row,col) * yaw_jacobian(col); + } + + Kfusion(row) *= heading_innov_var_inv; + } + + if (_control_status.flags.wind) { + for (uint8_t row = 22; row <= 23; row++) { + for (uint8_t col = 0; col <= 3; col++) { + Kfusion(row) += P(row,col) * yaw_jacobian(col); + } + + Kfusion(row) *= heading_innov_var_inv; + } + } + + // innovation test ratio + _yaw_test_ratio = sq(innovation) / (sq(gate_sigma) * _heading_innov_var); + + // we are no longer using 3-axis fusion so set the reported test levels to zero + _mag_test_ratio.setZero(); + + // set the magnetometer unhealthy if the test fails + if (_yaw_test_ratio > 1.0f) { + _innov_check_fail_status.flags.reject_yaw = true; + + // if we are in air we don't want to fuse the measurement + // we allow to use it when on the ground because the large innovation could be caused + // by interference or a large initial gyro bias + if (!_control_status.flags.in_air && isTimedOut(_time_last_in_air, (uint64_t)5e6)) { + // constrain the innovation to the maximum set by the gate + // we need to delay this forced fusion to avoid starting it + // immediately after touchdown, when the drone is still armed + float gate_limit = sqrtf((sq(gate_sigma) * _heading_innov_var)); + _heading_innov = math::constrain(innovation, -gate_limit, gate_limit); + + // also reset the yaw gyro variance to converge faster and avoid + // being stuck on a previous bad estimate + resetZDeltaAngBiasCov(); + + } else { + return; + } + + } else { + _innov_check_fail_status.flags.reject_yaw = false; + _heading_innov = innovation; + } + + // apply covariance correction via P_new = (I -K*H)*P + // first calculate expression for KHP + // then calculate P - KHP + SquareMatrix24f KHP; + float KH[4]; + + for (unsigned row = 0; row < _k_num_states; row++) { + + KH[0] = Kfusion(row) * yaw_jacobian(0); + KH[1] = Kfusion(row) * yaw_jacobian(1); + KH[2] = Kfusion(row) * yaw_jacobian(2); + KH[3] = Kfusion(row) * yaw_jacobian(3); + + for (unsigned column = 0; column < _k_num_states; column++) { + float tmp = KH[0] * P(0,column); + tmp += KH[1] * P(1,column); + tmp += KH[2] * P(2,column); + tmp += KH[3] * P(3,column); + KHP(row,column) = tmp; + } + } + + const bool healthy = checkAndFixCovarianceUpdate(KHP); + + _fault_status.flags.bad_hdg = !healthy; + + if (healthy) { + // apply the covariance corrections + P -= KHP; + + fixCovarianceErrors(true); + + // apply the state corrections + fuse(Kfusion, _heading_innov); + + } +} + +void Ekf::fuseHeading() +{ + Vector3f mag_earth_pred; + float measured_hdg; + + // Calculate the observation variance + float R_YAW; + if (_control_status.flags.mag_hdg) { + // using magnetic heading tuning parameter + R_YAW = sq(_params.mag_heading_noise); + + } else if (_control_status.flags.ev_yaw) { + // using error estimate from external vision data + R_YAW = _ev_sample_delayed.angVar; + + } else { + // default value + R_YAW = 0.01f; + } + + // update transformation matrix from body to world frame using the current state estimate + _R_to_earth = Dcmf(_state.quat_nominal); + + if (shouldUse321RotationSequence(_R_to_earth)) { + const float predicted_hdg = getEuler321Yaw(_R_to_earth); + + if (_control_status.flags.mag_hdg) { + // Rotate the measurements into earth frame using the zero yaw angle + const Dcmf R_to_earth = updateEuler321YawInRotMat(0.f, _R_to_earth); + mag_earth_pred = R_to_earth * (_mag_sample_delayed.mag - _state.mag_B); + + // the angle of the projection onto the horizontal gives the yaw angle + measured_hdg = -atan2f(mag_earth_pred(1), mag_earth_pred(0)) + getMagDeclination(); + + } else if (_control_status.flags.ev_yaw) { + measured_hdg = getEuler321Yaw(_ev_sample_delayed.quat); + + } else { + measured_hdg = predicted_hdg; + } + + // handle special case where yaw measurement is unavailable + bool fuse_zero_innov = false; + if (_is_yaw_fusion_inhibited) { + // The yaw measurement cannot be trusted but we need to fuse something to prevent a badly + // conditioned covariance matrix developing over time. + if (!_control_status.flags.vehicle_at_rest) { + // Vehicle is not at rest so fuse a zero innovation if necessary to prevent + // unconstrained quaternion variance growth and record the predicted heading + // to use as an observation when movement ceases. + // TODO a better way of determining when this is necessary + const float sumQuatVar = P(0,0) + P(1,1) + P(2,2) + P(3,3); + if (sumQuatVar > _params.quat_max_variance) { + fuse_zero_innov = true; + R_YAW = 0.25f; + + } + _last_static_yaw = predicted_hdg; + + } else { + // Vehicle is at rest so use the last moving prediction as an observation + // to prevent the heading from drifting and to enable yaw gyro bias learning + // before takeoff. + measured_hdg = _last_static_yaw; + + } + } else { + _last_static_yaw = predicted_hdg; + + } + + fuseYaw321(measured_hdg, R_YAW, fuse_zero_innov); + + } else { + const float predicted_hdg = getEuler312Yaw(_R_to_earth); + + if (_control_status.flags.mag_hdg) { + + // rotate the magnetometer measurements into earth frame using a zero yaw angle + const Dcmf R_to_earth = updateEuler312YawInRotMat(0.f, _R_to_earth); + mag_earth_pred = R_to_earth * (_mag_sample_delayed.mag - _state.mag_B); + + // the angle of the projection onto the horizontal gives the yaw angle + measured_hdg = -atan2f(mag_earth_pred(1), mag_earth_pred(0)) + getMagDeclination(); + + } else if (_control_status.flags.ev_yaw) { + measured_hdg = getEuler312Yaw(_ev_sample_delayed.quat); + + } else { + measured_hdg = predicted_hdg; + } + + // handle special case where yaw measurement is unavailable + bool fuse_zero_innov = false; + if (_is_yaw_fusion_inhibited) { + // The yaw measurement cannot be trusted but we need to fuse something to prevent a badly + // conditioned covariance matrix developing over time. + if (!_control_status.flags.vehicle_at_rest) { + // Vehicle is not at rest so fuse a zero innovation if necessary to prevent + // unconstrained quaterniion variance growth and record the predicted heading + // to use as an observation when movement ceases. + // TODO a better way of determining when this is necessary + const float sumQuatVar = P(0,0) + P(1,1) + P(2,2) + P(3,3); + if (sumQuatVar > _params.quat_max_variance) { + fuse_zero_innov = true; + R_YAW = 0.25f; + + } + _last_static_yaw = predicted_hdg; + + } else { + // Vehicle is at rest so use the last moving prediction as an observation + // to prevent the heading from drifting and to enable yaw gyro bias learning + // before takeoff. + measured_hdg = _last_static_yaw; + + } + } else { + _last_static_yaw = predicted_hdg; + + } + + fuseYaw312(measured_hdg, R_YAW, fuse_zero_innov); + + } +} + +void Ekf::fuseDeclination(float decl_sigma) +{ + // assign intermediate state variables + const float &magN = _state.mag_I(0); + const float &magE = _state.mag_I(1); + + // minimum North field strength before calculation becomes badly conditioned (T) + constexpr float N_field_min = 0.001f; + + // observation variance (rad**2) + const float R_DECL = sq(decl_sigma); + + // Calculate intermediate variables + if (fabsf(magN) < sq(N_field_min)) { + // calculation is badly conditioned close to +-90 deg declination + return; + } + const float HK0 = ecl::powf(magN, -2); + const float HK1 = HK0*ecl::powf(magE, 2) + 1.0F; + const float HK2 = 1.0F/HK1; + const float HK3 = 1.0F/magN; + const float HK4 = HK2*HK3; + const float HK5 = HK3*magE; + const float HK6 = HK5*P(16,17) - P(17,17); + const float HK7 = ecl::powf(HK1, -2); + const float HK8 = HK5*P(16,16) - P(16,17); + const float innovation_variance = -HK0*HK6*HK7 + HK7*HK8*magE/ecl::powf(magN, 3) + R_DECL; + float HK9; + if (innovation_variance > R_DECL) { + HK9 = HK4/innovation_variance; + } else { + // variance calculation is badly conditioned + return; + } + + // Calculate the observation Jacobian + // Note only 2 terms are non-zero which can be used in matrix operations for calculation of Kalman gains and covariance update to significantly reduce cost + // Note Hfusion indices do not match state indices + SparseVector24f<16,17> Hfusion; + Hfusion.at<16>() = -HK0*HK2*magE; + Hfusion.at<17>() = HK4; + + // Calculate the Kalman gains + Vector24f Kfusion; + for (unsigned row = 0; row <= 15; row++) { + Kfusion(row) = -HK9*(HK5*P(row,16) - P(row,17)); + } + + Kfusion(16) = -HK8*HK9; + Kfusion(17) = -HK6*HK9; + + for (unsigned row = 18; row <= 23; row++) { + Kfusion(row) = -HK9*(HK5*P(16,row) - P(17,row)); + } + + const float innovation = math::constrain(atan2f(magE, magN) - getMagDeclination(), -0.5f, 0.5f); + + const bool is_fused = measurementUpdate(Kfusion, Hfusion, innovation); + + _fault_status.flags.bad_mag_decl = !is_fused; + + if (is_fused) { + limitDeclination(); + } +} + +void Ekf::limitDeclination() +{ + // get a reference value for the earth field declinaton and minimum plausible horizontal field strength + // set to 50% of the horizontal strength from geo tables if location is known + float decl_reference; + float h_field_min = 0.001f; + if (_params.mag_declination_source & MASK_USE_GEO_DECL) { + // use parameter value until GPS is available, then use value returned by geo library + if (_NED_origin_initialised || ISFINITE(_mag_declination_gps)) { + decl_reference = _mag_declination_gps; + h_field_min = fmaxf(h_field_min , 0.5f * _mag_strength_gps * cosf(_mag_inclination_gps)); + + } else { + decl_reference = math::radians(_params.mag_declination_deg); + } + } else { + // always use the parameter value + decl_reference = math::radians(_params.mag_declination_deg); + } + + // do not allow the horizontal field length to collapse - this will make the declination fusion badly conditioned + // and can result in a reversal of the NE field states which the filter cannot recover from + // apply a circular limit + float h_field = sqrtf(_state.mag_I(0)*_state.mag_I(0) + _state.mag_I(1)*_state.mag_I(1)); + if (h_field < h_field_min) { + if (h_field > 0.001f * h_field_min) { + const float h_scaler = h_field_min / h_field; + _state.mag_I(0) *= h_scaler; + _state.mag_I(1) *= h_scaler; + } else { + // too small to scale radially so set to expected value + const float mag_declination = getMagDeclination(); + _state.mag_I(0) = 2.0f * h_field_min * cosf(mag_declination); + _state.mag_I(1) = 2.0f * h_field_min * sinf(mag_declination); + } + h_field = h_field_min; + } + + // do not allow the declination estimate to vary too much relative to the reference value + constexpr float decl_tolerance = 0.5f; + const float decl_max = decl_reference + decl_tolerance; + const float decl_min = decl_reference - decl_tolerance; + const float decl_estimate = atan2f(_state.mag_I(1) , _state.mag_I(0)); + if (decl_estimate > decl_max) { + _state.mag_I(0) = h_field * cosf(decl_max); + _state.mag_I(1) = h_field * sinf(decl_max); + } else if (decl_estimate < decl_min) { + _state.mag_I(0) = h_field * cosf(decl_min); + _state.mag_I(1) = h_field * sinf(decl_min); + } +} + +float Ekf::calculate_synthetic_mag_z_measurement(const Vector3f& mag_meas, const Vector3f& mag_earth_predicted) +{ + // theoretical magnitude of the magnetometer Z component value given X and Y sensor measurement and our knowledge + // of the earth magnetic field vector at the current location + const float mag_z_abs = sqrtf(math::max(sq(mag_earth_predicted.length()) - sq(mag_meas(0)) - sq(mag_meas(1)), 0.0f)); + + // calculate sign of synthetic magnetomter Z component based on the sign of the predicted magnetomer Z component + const float mag_z_body_pred = mag_earth_predicted.dot(_R_to_earth.col(2)); + + return (mag_z_body_pred < 0) ? -mag_z_abs : mag_z_abs; +} diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/AlignTilt.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/AlignTilt.m new file mode 100644 index 0000000000..fed5afc060 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/AlignTilt.m @@ -0,0 +1,20 @@ +function quat = AlignTilt( ... + quat, ... % quaternion state vector + initAccel) % initial accelerometer vector +% check length +lengthAccel = sqrt(dot([initAccel(1);initAccel(2);initAccel(3)],[initAccel(1);initAccel(2);initAccel(3)])); +% if length is > 0.7g and < 1.4g initialise tilt using gravity vector +if (lengthAccel > 5 && lengthAccel < 14) + % calculate length of the tilt vector + tiltMagnitude = atan2(sqrt(dot([initAccel(1);initAccel(2)],[initAccel(1);initAccel(2)])),-initAccel(3)); + % take the unit cross product of the accel vector and the -Z vector to + % give the tilt unit vector + if (tiltMagnitude > 1e-3) + tiltUnitVec = cross([initAccel(1);initAccel(2);initAccel(3)],[0;0;-1]); + tiltUnitVec = tiltUnitVec/sqrt(dot(tiltUnitVec,tiltUnitVec)); + tiltVec = tiltMagnitude*tiltUnitVec; + quat = [cos(0.5*tiltMagnitude); tiltVec/tiltMagnitude*sin(0.5*tiltMagnitude)]; + end +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/ConvertToC.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/ConvertToC.m new file mode 100644 index 0000000000..762ed278a5 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/ConvertToC.m @@ -0,0 +1,220 @@ +function ConvertToC(fileName) +delimiter = ''; + +%% Format string for each line of text: +% column1: text (%s) +% For more information, see the TEXTSCAN documentation. +formatSpec = '%s%[^\n\r]'; + +%% Open the text file. +fileID = fopen(strcat(fileName,'.m'),'r'); + +%% Read columns of data according to format string. +% This call is based on the structure of the file used to generate this +% code. If an error occurs for a different file, try regenerating the code +% from the Import Tool. +dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false, 'Bufsize', 65535); + +%% Close the text file. +fclose(fileID); + +%% Create output variable +SymbolicOutput = [dataArray{1:end-1}]; + +%% Clear temporary variables +clearvars filename delimiter formatSpec fileID dataArray ans; + +%% Convert indexing and replace brackets + +% replace 1-D indexes +for arrayIndex = 1:99 + strIndex = int2str(arrayIndex); + strRep = sprintf('[%d]',(arrayIndex-1)); + strPat = strcat('\(',strIndex,'\)'); + for lineIndex = 1:length(SymbolicOutput) + str = char(SymbolicOutput(lineIndex)); + SymbolicOutput(lineIndex) = {regexprep(str, strPat, strRep)}; + end +end + +% replace 2-D left indexes +for arrayIndex = 1:99 + strIndex = int2str(arrayIndex); + strRep = sprintf('[%d,',(arrayIndex-1)); + strPat = strcat('\(',strIndex,'\,'); + for lineIndex = 1:length(SymbolicOutput) + str = char(SymbolicOutput(lineIndex)); + SymbolicOutput(lineIndex) = {regexprep(str, strPat, strRep)}; + end +end + +% replace 2-D right indexes +for arrayIndex = 1:99 + strIndex = int2str(arrayIndex); + strRep = sprintf(',%d]',(arrayIndex-1)); + strPat = strcat('\,',strIndex,'\)'); + for lineIndex = 1:length(SymbolicOutput) + str = char(SymbolicOutput(lineIndex)); + SymbolicOutput(lineIndex) = {regexprep(str, strPat, strRep)}; + end +end + +% replace commas +for lineIndex = 1:length(SymbolicOutput) + str = char(SymbolicOutput(lineIndex)); + SymbolicOutput(lineIndex) = {regexprep(str, '\,', '][')}; +end + +%% replace . operators +for lineIndex = 1:length(SymbolicOutput) + strIn = char(SymbolicOutput(lineIndex)); + strIn = regexprep(strIn,'\.\*','\*'); + strIn = regexprep(strIn,'\.\/','\/'); + strIn = regexprep(strIn,'\.\^','\^'); + SymbolicOutput(lineIndex) = cellstr(strIn); +end + +%% Replace ^2 + +% replace where adjacent to ) parenthesis +for lineIndex = 1:length(SymbolicOutput) + idxsq = regexp(SymbolicOutput(lineIndex),'\)\^2'); + if ~isempty(idxsq{1}) + strIn = SymbolicOutput(lineIndex); + idxlp = regexp(strIn,'\('); + idxrp = regexp(strIn,'\)'); + for pwrIndex = 1:length(idxsq{1}) + counter = 1; + index = idxsq{1}(pwrIndex); + endIndex(pwrIndex) = index; + while (counter > 0 && index > 0) + index = index - 1; + counter = counter + ~isempty(find(idxrp{1} == index, 1)); + counter = counter - ~isempty(find(idxlp{1} == index, 1)); + end + startIndex(pwrIndex) = index; + % strPat = strcat(strIn{1}(startIndex(pwrIndex):endIndex(pwrIndex)),'^2'); + strRep = strcat('sq',strIn{1}(startIndex(pwrIndex):endIndex(pwrIndex))); + % cellStrPat(pwrIndex) = cellstr(strPat); + cellStrRep(pwrIndex) = cellstr(strRep); + end + for pwrIndex = 1:length(idxsq{1}) + strRep = char(cellStrRep(pwrIndex)); + strIn{1}(startIndex(pwrIndex):endIndex(pwrIndex)+2) = strRep; + end + SymbolicOutput(lineIndex) = strIn; + end +end + +% replace where adjacent to ] parenthesis +for lineIndex = 1:length(SymbolicOutput) + strIn = char(SymbolicOutput(lineIndex)); + [match,idxsq1,idxsq2] = regexp(strIn,'\w*\[\w*\]\^2','match','start','end'); + [idxsq3] = regexp(strIn,'\[\w*\]\^2','start'); + if ~isempty(match) + for pwrIndex = 1:length(match) + strVar = strIn(idxsq1(pwrIndex):idxsq3(pwrIndex)-1); + strIndex = strIn(idxsq3(pwrIndex)+1:idxsq2(pwrIndex)-3); + strPat = strcat(strVar,'\[',strIndex,'\]\^2'); + strRep = strcat('sq(',strVar,'[',strIndex,']',')'); + strIn = regexprep(strIn,strPat,strRep); + end + SymbolicOutput(lineIndex) = cellstr(strIn); + end +end + +% replace where adjacent to alpanumeric characters +for lineIndex = 1:length(SymbolicOutput) + strIn = char(SymbolicOutput(lineIndex)); + [match,idxsq1,idxsq2] = regexp(strIn,'\w*\^2','match','start','end'); + [idxsq3] = regexp(strIn,'\^2','start'); + if ~isempty(match) + for pwrIndex = 1:length(match) + strVar = strIn(idxsq1(pwrIndex)+2*(pwrIndex-1):idxsq2(pwrIndex)-2+2*(pwrIndex-1)); + strPat = strcat(strVar,'\^2'); + strRep = strcat('sq(',strVar,')'); + strIn = regexprep(strIn,strPat,strRep); + end + SymbolicOutput(lineIndex) = cellstr(strIn); + end +end + +%% Replace ^(1/2) + +% replace where adjacent to ) parenthesis +for lineIndex = 1:length(SymbolicOutput) + idxsq = regexp(SymbolicOutput(lineIndex),'\)\^\(1\/2\)'); + if ~isempty(idxsq{1}) + strIn = SymbolicOutput(lineIndex); + idxlp = regexp(strIn,'\('); + idxrp = regexp(strIn,'\)'); + for pwrIndex = 1:length(idxsq{1}) + counter = 1; + index = idxsq{1}(pwrIndex); + endIndex(pwrIndex) = index; + while (counter > 0 && index > 0) + index = index - 1; + counter = counter + ~isempty(find(idxrp{1} == index, 1)); + counter = counter - ~isempty(find(idxlp{1} == index, 1)); + end + startIndex(pwrIndex) = index; + % strPat = strcat(strIn{1}(startIndex(pwrIndex):endIndex(pwrIndex)),'^2'); + strRep = strcat('(sqrt',strIn{1}(startIndex(pwrIndex):endIndex(pwrIndex)),')'); + % cellStrPat(pwrIndex) = cellstr(strPat); + cellStrRep(pwrIndex) = cellstr(strRep); + end + for pwrIndex = 1:length(idxsq{1}) + strRep = char(cellStrRep(pwrIndex)); + strIn{1}(startIndex(pwrIndex):endIndex(pwrIndex)+6) = strRep; + end + SymbolicOutput(lineIndex) = strIn; + end +end + +%% Replace Divisions +% Compiler looks after this type of optimisation for us +% for lineIndex = 1:length(SymbolicOutput) +% strIn = char(SymbolicOutput(lineIndex)); +% strIn = regexprep(strIn,'\/2','\*0\.5'); +% strIn = regexprep(strIn,'\/4','\*0\.25'); +% SymbolicOutput(lineIndex) = cellstr(strIn); +% end + +%% Convert declarations +for lineIndex = 1:length(SymbolicOutput) + str = char(SymbolicOutput(lineIndex)); + if ~isempty(regexp(str,'zeros', 'once')) + index1 = regexp(str,' = zeros[','once')-1; + index2 = regexp(str,' = zeros[','end','once')+1; + index3 = regexp(str,'\]\[','once')-1; + index4 = index3 + 3; + index5 = max(regexp(str,'\]'))-1; + str1 = {'float '}; + str2 = str(1:index1); + str3 = '['; + str4 = str(index2:index3); + str4 = num2str(str2num(str4)+1); + str5 = ']['; + str6 = str(index4:index5); + str6 = num2str(str2num(str6)+1); + str7 = '];'; + SymbolicOutput(lineIndex) = strcat(str1,str2,str3,str4,str5,str6,str7); + end +end + +%% Change covariance matrix variable name to P +for lineIndex = 1:length(SymbolicOutput) + strIn = char(SymbolicOutput(lineIndex)); + strIn = regexprep(strIn,'OP\[','P['); + SymbolicOutput(lineIndex) = cellstr(strIn); +end + +%% Write to file +fileName = strcat(fileName,'.cpp'); +fid = fopen(fileName,'wt'); +for lineIndex = 1:length(SymbolicOutput) + fprintf(fid,char(SymbolicOutput(lineIndex))); + fprintf(fid,'\n'); +end +fclose(fid); +clear all; \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/ConvertToM.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/ConvertToM.m new file mode 100644 index 0000000000..1e5f7f4388 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/ConvertToM.m @@ -0,0 +1,46 @@ +function ConvertToM(nStates) +%% Initialize variables +fileName = strcat('SymbolicOutput',int2str(nStates),'.txt'); +delimiter = ''; + +%% Format string for each line of text: +% column1: text (%s) +% For more information, see the TEXTSCAN documentation. +formatSpec = '%s%[^\n\r]'; + +%% Open the text file. +fileID = fopen(fileName,'r'); + +%% Read columns of data according to format string. +% This call is based on the structure of the file used to generate this +% code. If an error occurs for a different file, try regenerating the code +% from the Import Tool. +dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false,'Bufsize',65535); + +%% Close the text file. +fclose(fileID); + +%% Create output variable +SymbolicOutput = [dataArray{1:end-1}]; + +%% Clear temporary variables +clearvars filename delimiter formatSpec fileID dataArray ans; + +%% replace brackets and commas +for lineIndex = 1:length(SymbolicOutput) + SymbolicOutput(lineIndex) = regexprep(SymbolicOutput(lineIndex), '_l_', '('); + SymbolicOutput(lineIndex) = regexprep(SymbolicOutput(lineIndex), '_c_', ','); + SymbolicOutput(lineIndex) = regexprep(SymbolicOutput(lineIndex), '_r_', ')'); +end + +%% Write to file +fileName = strcat('M_code',int2str(nStates),'.txt'); +fid = fopen(fileName,'wt'); +for lineIndex = 1:length(SymbolicOutput) + fprintf(fid,char(SymbolicOutput(lineIndex))); + fprintf(fid,'\n'); +end +fclose(fid); +clear all; + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/EulToQuat.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/EulToQuat.m new file mode 100644 index 0000000000..9b57a20b5d --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/EulToQuat.m @@ -0,0 +1,23 @@ +function quaterion = EulToQuat(Euler) + +% Convert from a 321 Euler rotation sequence specified in radians to a +% Quaternion + +quaterion = zeros(4,1); + +Euler = Euler * 0.5; +cosPhi = cos(Euler(1)); +sinPhi = sin(Euler(1)); +cosTheta = cos(Euler(2)); +sinTheta = sin(Euler(2)); +cosPsi = cos(Euler(3)); +sinPsi = sin(Euler(3)); + +quaterion(1,1) = (cosPhi*cosTheta*cosPsi + sinPhi*sinTheta*sinPsi); +quaterion(2,1) = (sinPhi*cosTheta*cosPsi - cosPhi*sinTheta*sinPsi); +quaterion(3,1) = (cosPhi*sinTheta*cosPsi + sinPhi*cosTheta*sinPsi); +quaterion(4,1) = (cosPhi*cosTheta*sinPsi - sinPhi*sinTheta*cosPsi); + +return; + + diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/LLH2NED.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/LLH2NED.m new file mode 100644 index 0000000000..72ed981215 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/LLH2NED.m @@ -0,0 +1,12 @@ +function posNED = LLH2NED(LLH,refLLH) + +radius = 6378137; +flattening = 1/298.257223563; +e = sqrt(flattening*(2-flattening)); +Rm = radius*(1-e^2)/(1-e^2*sin(refLLH(1)*pi/180)^2)^(3/2); +Rn = radius/(1-e^2*sin(refLLH(1)*pi/180)^2)^(1/2); +posN = (LLH(1,:)-refLLH(1))*pi/180.*(Rm+LLH(3,:)); +posE = (LLH(2,:)-refLLH(2))*pi/180.*(Rn+LLH(3,:))*cos(refLLH(1)*pi/180); +posD = -(LLH(3,:)-refLLH(3)); +posNED = [posN;posE;posD]; +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/NormQuat.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/NormQuat.m new file mode 100644 index 0000000000..7d1913efda --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/NormQuat.m @@ -0,0 +1,5 @@ +% normalise the quaternion +function quaternion = normQuat(quaternion) + +quatMag = sqrt(quaternion(1)^2 + quaternion(2)^2 + quaternion(3)^2 + quaternion(4)^2); +quaternion(1:4) = quaternion / quatMag; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/OptimiseAlgebra.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/OptimiseAlgebra.m new file mode 100644 index 0000000000..16d4c353ca --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/OptimiseAlgebra.m @@ -0,0 +1,29 @@ +function [SymExpOut,SubExpArray] = OptimiseAlgebra(SymExpIn,SubExpName) + +% Loop through symbolic expression, identifying repeated expressions and +% bringing them out as shared expression or sub expressions +% do this until no further repeated expressions found +% This can significantly reduce computations + +syms SubExpIn SubExpArray ; + +SubExpArray(1,1) = 'invalid'; +index = 0; +f_complete = 0; +while f_complete==0 + index = index + 1; + SubExpIn = [SubExpName,'(',num2str(index),')']; + SubExpInStore{index} = SubExpIn; + [SymExpOut,SubExpOut]=subexpr(SymExpIn,SubExpIn); + for k = 1:index + if SubExpOut == SubExpInStore{k} + f_complete = 1; + end + end + if f_complete || index > 100 + SymExpOut = SymExpIn; + else + SubExpArray(index,1) = SubExpOut; + SymExpIn = SymExpOut; + end +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/Quat2Tbn.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/Quat2Tbn.m new file mode 100644 index 0000000000..663d19cde8 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/Quat2Tbn.m @@ -0,0 +1,14 @@ +function Tbn = Quat2Tbn(quat) + +% Convert from quaternions defining the flight vehicles rotation to +% the direction cosine matrix defining the rotation from body to navigation +% coordinates + +q0 = quat(1); +q1 = quat(2); +q2 = quat(3); +q3 = quat(4); + +Tbn = [q0^2 + q1^2 - q2^2 - q3^2, 2*(q1*q2 - q0*q3), 2*(q1*q3 + q0*q2); ... + 2*(q1*q2 + q0*q3), q0^2 - q1^2 + q2^2 - q3^2, 2*(q2*q3 - q0*q1); ... + 2*(q1*q3-q0*q2), 2*(q2*q3 + q0*q1), q0^2 - q1^2 - q2^2 + q3^2]; \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatDivide.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatDivide.m new file mode 100644 index 0000000000..20e789dcfb --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatDivide.m @@ -0,0 +1,16 @@ +function q_out = QuatDivide(qin1,qin2) + +q0 = qin1(1); +q1 = qin1(2); +q2 = qin1(3); +q3 = qin1(4); + +r0 = qin2(1); +r1 = qin2(2); +r2 = qin2(3); +r3 = qin2(4); + +q_out(1,1) = (qin2(1)*qin1(1) + qin2(2)*qin1(2) + qin2(3)*qin1(3) + qin2(4)*qin1(4)); +q_out(2,1) = (r0*q1 - r1*q0 - r2*q3 + r3*q2); +q_out(3,1) = (r0*q2 + r1*q3 - r2*q0 - r3*q1); +q_out(4,1) = (r0*q3 - r1*q2 + r2*q1 - r3*q0); diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatMult.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatMult.m new file mode 100644 index 0000000000..357c545d22 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatMult.m @@ -0,0 +1,5 @@ +function quatOut = QuatMult(quatA,quatB) +% Calculate the following quaternion product quatA * quatB using the +% standard identity + +quatOut = [quatA(1)*quatB(1)-quatA(2:4)'*quatB(2:4); quatA(1)*quatB(2:4) + quatB(1)*quatA(2:4) + cross(quatA(2:4),quatB(2:4))]; \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatToEul.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatToEul.m new file mode 100644 index 0000000000..09b1505b6f --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/QuatToEul.m @@ -0,0 +1,9 @@ +% Convert from a quaternion to a 321 Euler rotation sequence in radians + +function Euler = QuatToEul(quat) + +Euler = zeros(3,1); + +Euler(1) = atan2(2*(quat(3)*quat(4)+quat(1)*quat(2)), quat(1)*quat(1) - quat(2)*quat(2) - quat(3)*quat(3) + quat(4)*quat(4)); +Euler(2) = -asin(2*(quat(2)*quat(4)-quat(1)*quat(3))); +Euler(3) = atan2(2*(quat(2)*quat(3)+quat(1)*quat(4)), quat(1)*quat(1) + quat(2)*quat(2) - quat(3)*quat(3) - quat(4)*quat(4)); \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/RotToQuat.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/RotToQuat.m new file mode 100644 index 0000000000..3c9777acd5 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/RotToQuat.m @@ -0,0 +1,10 @@ +% convert froma rotation vector in radians to a quaternion +function quaternion = RotToQuat(rotVec) + +vecLength = sqrt(rotVec(1)^2 + rotVec(2)^2 + rotVec(3)^2); + +if vecLength < 1e-6 + quaternion = [1;0;0;0]; +else + quaternion = [cos(0.5*vecLength); rotVec/vecLength*sin(0.5*vecLength)]; +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_apm_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_apm_data.m new file mode 100755 index 0000000000..f17dc96667 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_apm_data.m @@ -0,0 +1,103 @@ +%% convert baro data +clear baro_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(BARO) + if (BARO(source_index,2) ~= last_time) + baro_data.time_us(output_index,1) = BARO(source_index,2); + baro_data.height(output_index) = BARO(source_index,3); + last_time = BARO(source_index,2); + output_index = output_index + 1; + end +end +save baro_data.mat baro_data; + +%% extract IMU delta angles and velocity data +clear imu_data; +imu_data.time_us = IMT(:,2); +imu_data.gyro_dt = IMT(:,5); +imu_data.del_ang = IMT(:,6:8); +imu_data.accel_dt = IMT(:,4); +imu_data.del_vel = IMT(:,9:11); +save imu_data.mat imu_data; + +%% convert magnetometer data +clear mag_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(MAG) + mag_timestamp = MAG(source_index,2); + if (mag_timestamp ~= last_time) + mag_data.time_us(output_index,1) = mag_timestamp; + mag_data.field_ga(output_index,:) = 0.001*[MAG(source_index,3),MAG(source_index,4),MAG(source_index,5)]; + last_time = mag_timestamp; + output_index = output_index + 1; + end +end +save mag_data.mat mag_data; + +%% save GPS daa +clear gps_data; + +maxindex = min(length(GPS),length(GPA)); + +gps_data.time_us = GPS(1:maxindex,2); +gps_data.pos_error = GPA(1:maxindex,4); +gps_data.spd_error = GPA(1:maxindex,6); +gps_data.hgt_error = GPA(1:maxindex,5); + +% set reference point used to set NED origin when GPS accuracy is sufficient +gps_data.start_index = max(find(gps_data.pos_error < 5.0, 1 ),find(gps_data.spd_error < 1.0, 1 )); +gps_data.refLLH = [GPS(gps_data.start_index,8);GPS(gps_data.start_index,9);GPS(gps_data.start_index,10)]; + +% convert GPS data to NED +deg2rad = pi/180; +for index = 1:1:maxindex + if (GPS(index,3) >= 3) + gps_data.pos_ned(index,:) = LLH2NED([GPS(index,8);GPS(index,9);GPS(index,10)],gps_data.refLLH); + gps_data.vel_ned(index,:) = [GPS(index,11).*cos(deg2rad*GPS(index,12)),GPS(index,11).*sin(deg2rad*GPS(index,12)),GPS(index,13)]; + else + gps_data.pos_ned(index,:) = [0,0,0]; + gps_data.vel_ned(index,:) = [0,0,0]; + end +end + +save gps_data.mat gps_data; + +%% save range finder data +clear rng_data; +if (exist('RFND','var')) + rng_data.time_us = RFND(:,2); + rng_data.dist = RFND(:,3); + save rng_data.mat rng_data; +end + +%% save optical flow data +clear flow_data; +if (exist('OF','var')) + flow_data.time_us = OF(:,2); + flow_data.qual = OF(:,3)/255; % scale quality from 0 to 1 + flow_data.flowX = OF(:,4); % optical flow rate about the X body axis (rad/sec) + flow_data.flowY = OF(:,5); % optical flow rate about the Y body axis (rad/sec) + flow_data.bodyX = OF(:,6); % angular rate about the X body axis (rad/sec) + flow_data.bodyY = OF(:,7); % angular rate about the Y body axis (rad/sec) + save flow_data.mat flow_data; +end + +%% save visual odometry data +clear viso_data; +if (exist('VISO','var')) + viso_data.time_us = VISO(:,2); + viso_data.dt = VISO(:,3); % time period the measurement was sampled across (sec) + viso_data.dAngX = VISO(:,4); % delta angle about the X body axis (rad) + viso_data.dAngY = VISO(:,5); % delta angle about the Y body axis (rad) + viso_data.dAngZ = VISO(:,6); % delta angle about the Z body axis (rad) + viso_data.dPosX = VISO(:,7); % delta position along the X body axis (m) + viso_data.dPosY = VISO(:,8); % delta position along the Y body axis (m) + viso_data.dPosZ = VISO(:,9); % delta position along the Z body axis (m) + viso_data.qual = VISO(:,10)/100; % quality from 0 - 1 + save viso_data.mat viso_data; +end + +%% save data and clear workspace +clearvars -except baro_data imu_data mag_data gps_data rng_data flow_data viso_data; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_actuators_csv_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_actuators_csv_data.m new file mode 100644 index 0000000000..084514a677 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_actuators_csv_data.m @@ -0,0 +1,34 @@ +%% convert actuator control data +clear actctrl_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_actctrl) + actctrl_timestamp = timestamp_actctrl(source_index); + if (actctrl_timestamp ~= last_time) + actctrl_data.time_us(output_index,1) = actctrl_timestamp; + actctrl_data.M_XYZ(output_index,:) = [control0(source_index),control1(source_index),control2(source_index)]; + actctrl_data.F_t(output_index,:) = control3(source_index); + last_time = actctrl_timestamp; + output_index = output_index + 1; + end +end + +%% convert actuator output data +clear actout_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_actout) + actout_timestamp = timestamp_actout(source_index); + if (actout_timestamp ~= last_time) + actout_data.time_us(output_index,1) = actout_timestamp; + actout_data.pwm(output_index,:) = [output0(source_index),output1(source_index),output2(source_index),output3(source_index)]; + last_time = actout_timestamp; + output_index = output_index + 1; + end +end + +%% save data +% DO NOT clear the workspace (yet) + +save actctrl_data.mat actctrl_data; +save actout_data.mat actout_data; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m new file mode 100755 index 0000000000..e5de236f30 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m @@ -0,0 +1,18 @@ +%% convert baro data +clear rng_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp) + rng_timestamp = timestamp(source_index); + if (rng_timestamp ~= last_time) + last_time = rng_timestamp; + rng_data.time_us(output_index,1) = rng_timestamp; + rng_data.dist(output_index,1) = current_distance(source_index); + output_index = output_index + 1; + end +end + +%% save data and clear workspace +clearvars -except rng_data; + +save rng_data.mat rng_data; \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_groundtruth_csv_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_groundtruth_csv_data.m new file mode 100644 index 0000000000..8de4c45509 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_groundtruth_csv_data.m @@ -0,0 +1,53 @@ +%% convert attitude data +clear attitude_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_att) + att_timestamp = timestamp_att(source_index); + if (att_timestamp ~= last_time) + attitude_data.time_us(output_index,1) = att_timestamp; + attitude_data.quat(output_index,:) = [q0(source_index),q1(source_index),q2(source_index),q3(source_index)]; + attitude_data.del_ang(output_index,:) = [rollspeed(source_index),pitchspeed(source_index),yawspeed(source_index)]; + last_time = att_timestamp; + output_index = output_index + 1; + end +end + +%% convert global position data +clear globalpos_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_gpos) + gpos_timestamp = timestamp_gpos(source_index); + if (gpos_timestamp ~= last_time) + globalpos_data.time_us(output_index,1) = gpos_timestamp; + globalpos_data.position_NED(output_index,:) = [gpos_lat(source_index),gpos_lon(source_index),gpos_alt(source_index)]; + globalpos_data.velocity_NED(output_index,:) = [gpos_vel_n(source_index),gpos_vel_e(source_index),gpos_vel_d(source_index)]; + last_time = gpos_timestamp; + output_index = output_index + 1; + end +end + +%% convert local position data +clear localpos_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_lpos) + lpos_timestamp = timestamp_lpos(source_index); + if (lpos_timestamp ~= last_time) + localpos_data.time_us(output_index,1) = lpos_timestamp; + localpos_data.ref_pos(output_index,:) = [lpos_ref_lat(source_index),lpos_ref_lon(source_index)]; + localpos_data.position_XYZ(output_index,:) = [lpos_x(source_index),lpos_y(source_index),lpos_z(source_index)]; + localpos_data.velocity_XYZ(output_index,:) = [lpos_vz(source_index),lpos_vy(source_index),lpos_vz(source_index)]; + localpos_data.yaw(output_index,1) = lpos_yaw(source_index); + last_time = lpos_timestamp; + output_index = output_index + 1; + end +end + +%% save data +% DO NOT clear the workspace (yet) + +save attitude_data.mat attitude_data; +save localpos_data.mat localpos_data; +save globalpos_data.mat globalpos_data; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m new file mode 100755 index 0000000000..e04b949469 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m @@ -0,0 +1,23 @@ +%% convert baro data +clear flow_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp) + flow_timestamp = timestamp(source_index); + if ((flow_timestamp ~= last_time) && (integration_timespan(source_index) > 0)) + last_time = flow_timestamp; + flow_data.time_us(output_index,1) = flow_timestamp; + flow_data.qual(output_index,1) = quality(source_index)/255; % scale quality from 0 to 1 + dt_inv = 1e6 / integration_timespan(source_index); + flow_data.flowX(output_index,1) = dt_inv * pixel_flow_x_integral(source_index); % optical flow rate about the X body axis (rad/sec) + flow_data.flowY(output_index,1) = dt_inv * pixel_flow_y_integral(source_index); % optical flow rate about the Y body axis (rad/sec) + flow_data.bodyX(output_index,1) = dt_inv * gyro_x_rate_integral(source_index); % angular rate about the X body axis (rad/sec) + flow_data.bodyY(output_index,1) = dt_inv * gyro_y_rate_integral(source_index); % angular rate about the Y body axis (rad/sec) + output_index = output_index + 1; + end +end + +%% save data and clear workspace +clearvars -except flow_data; + +save flow_data.mat flow_data; \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m new file mode 100755 index 0000000000..6b5d1b6879 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m @@ -0,0 +1,47 @@ +%% convert baro data +clear baro_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_baro) + baro_timestamp = timestamp_baro(source_index); + if (baro_timestamp ~= last_time) + baro_data.time_us(output_index,1) = baro_timestamp; + baro_data.height(output_index) = baro_alt_meter(source_index); + last_time = baro_timestamp; + output_index = output_index + 1; + end +end + +%% convert IMU data to delta angles and velocities +% Note: these quatntis were converted from delta angles and velocites using +% the integral_dt values in the PX4 sensor module so we only need to +% multiply by integral_dt to convert back +clear imu_data; +n_samples = length(timestamp); +imu_data.time_us = timestamp + accelerometer_timestamp_relative; +imu_data.gyro_dt = gyro_integral_dt ./ 1e6; +imu_data.del_ang = [gyro_rad0.*imu_data.gyro_dt, gyro_rad1.*imu_data.gyro_dt, gyro_rad2.*imu_data.gyro_dt]; + +imu_data.accel_dt = accelerometer_integral_dt ./ 1e6; +imu_data.del_vel = [accelerometer_m_s20.*imu_data.accel_dt, accelerometer_m_s21.*imu_data.accel_dt, accelerometer_m_s22.*imu_data.accel_dt]; + +%% convert magnetometer data +clear mag_data; +last_time = 0; +output_index = 1; +for source_index = 1:length(timestamp_mag) + mag_timestamp = timestamp_mag(source_index); + if (mag_timestamp ~= last_time) + mag_data.time_us(output_index,1) = mag_timestamp; + mag_data.field_ga(output_index,:) = [magnetometer_ga0(source_index),magnetometer_ga1(source_index),magnetometer_ga2(source_index)]; + last_time = mag_timestamp; + output_index = output_index + 1; + end +end + +%% save data +% DO NOT clear the workspace (yet) + +save baro_data.mat baro_data; +save imu_data.mat imu_data; +save mag_data.mat mag_data; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m new file mode 100755 index 0000000000..74a92782b1 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m @@ -0,0 +1,32 @@ +%% convert GPS data +clear gps_data; +gps_data.time_us = timestamp + timestamp_time_relative; +gps_data.pos_error = eph; +gps_data.spd_error = s_variance_m_s; +gps_data.hgt_error = epv; + +% set reference point used to set NED origin when GPS accuracy is sufficient +gps_data.start_index = max(min(find(gps_data.pos_error < 5.0)),min(find(gps_data.spd_error < 1.0))); +if isempty(gps_data.start_index) + gps_data.start_index = 1; + gps_data.refLLH = [1e-7*median(lat);1e-7*median(lon);0.001*median(alt)]; +else + gps_data.refLLH = [1e-7*lat(gps_data.start_index);1e-7*lon(gps_data.start_index);0.001*alt(gps_data.start_index)]; +end + +% convert GPS data to NED +for index = 1:length(timestamp) + if (fix_type(index) >= 3) + gps_data.pos_ned(index,:) = LLH2NED([1e-7*lat(index);1e-7*lon(index);0.001*alt(index)],gps_data.refLLH); + gps_data.vel_ned(index,:) = [vel_n_m_s(index),vel_e_m_s(index),vel_d_m_s(index)]; + else + gps_data.pos_ned(index,:) = [0,0,0]; + gps_data.vel_ned(index,:) = [0,0,0]; + end +end + + +%% save data +% DO NOT clear the workspace (yet) + +save gps_data.mat gps_data; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/AlignHeading.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/AlignHeading.m new file mode 100644 index 0000000000..3b3862b6e5 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/AlignHeading.m @@ -0,0 +1,23 @@ +function quat = AlignHeading( ... + quat, ... % quaternion state vector + magMea, ... % body frame magnetic flux measurements + declination) % Estimated magnetic field delination at current location (rad) + +% Get the Euler angles and set yaw to zero +euler = QuatToEul(quat); +euler(3) = 0.0; + +% calculate the rotation matrix from body to earth frame +quat_zero_yaw = EulToQuat(euler); +Tbn_zero_yaw = Quat2Tbn(quat_zero_yaw); + +% Rotate the magnetic field measurement into earth frame +magMeasNED = Tbn_zero_yaw*magMea; + +% Use the projection onto the horizontal to calculate the yaw angle +euler(3) = declination - atan2(magMeasNED(2),magMeasNED(1)); + +% convert to a quaternion +quat = EulToQuat(euler); + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/ConstrainStates.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/ConstrainStates.m new file mode 100644 index 0000000000..6accf3ee61 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/ConstrainStates.m @@ -0,0 +1,23 @@ +function [states] = ConstrainStates(states,dt_imu_avg) + +% constrain gyro bias states +limit = 5.0*pi/180*dt_imu_avg; +for i=11:13 + if (states(i) > limit) + states(i) = limit; + elseif (states(i) < -limit) + states(i) = -limit; + end +end + +% constrain accel bias states +limit = 0.5*dt_imu_avg; +for i=14:16 + if (states(i) > limit) + states(i) = limit; + elseif (states(i) < -limit) + states(i) = -limit; + end +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseBaroHeight.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseBaroHeight.m new file mode 100644 index 0000000000..1032f33fe7 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseBaroHeight.m @@ -0,0 +1,56 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation,... % NE position innovations (m) + varInnov] ... % NE position innovation variance (m^2) + = FuseBaroHeight( ... + states, ... % predicted states from the INS + P, ... % predicted covariance + measHgt, ... % NE position measurements (m) + gateSize, ... % Size of the innovation consistency check gate (std-dev) + R_OBS) % position observation variance (m)^2 + +H = zeros(1,24); + +% position states start at index 8 +stateIndex = 10; + +% Calculate the vertical position height innovation (posD is opposite +% sign to height) +innovation = states(stateIndex) + measHgt; + +% Calculate the observation Jacobian +H(stateIndex) = 1; + +varInnov = (H*P*transpose(H) + R_OBS); + +% Apply an innovation consistency check +if (innovation^2 / (gateSize^2 * varInnov)) > 1.0 + return; +end + +% Calculate Kalman gains and update states and covariances + +% Calculate the Kalman gains +K = (P*transpose(H))/varInnov; + +% Calculate state corrections +xk = K * innovation; + +% Apply the state corrections +states = states - xk; + +% Update the covariance +P = P - K*H*P; + +% Force symmetry on the covariance matrix to prevent ill-conditioning +P = 0.5*(P + transpose(P)); + +% ensure diagonals are positive +for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseBodyVel.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseBodyVel.m new file mode 100644 index 0000000000..4a1e37e24d --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseBodyVel.m @@ -0,0 +1,82 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation, ... % XY optical flow innovations - rad/sec + varInnov] ... % XY optical flow innovation variances (rad/sec)^2 + = FuseBodyVel( ... + states, ... % predicted states + P, ... % predicted covariance + relVelBodyMea, ... % XYZ velocity measured by the camera (m/sec) + obsVar, ... % velocity variances - (m/sec)^2 + gateSize) % innovation gate size (SD) + +q0 = states(1); +q1 = states(2); +q2 = states(3); +q3 = states(4); +vn = states(5); +ve = states(6); +vd = states(7); + +innovation = zeros(1,2); +varInnov = zeros(1,2); +H = zeros(2,24); + +% Calculate predicted velocity measured in body frame axes +Tbn = Quat2Tbn(states(1:4)); +relVelBodyPred = transpose(Tbn)*[vn;ve;vd]; + +% calculate the observation jacobian, innovation variance and innovation +for obsIndex = 1:3 + + % Calculate corrections using X component + if (obsIndex == 1) + H(1,:) = calcH_VELX(q0,q1,q2,q3,vd,ve,vn); + elseif (obsIndex == 2) + H(2,:) = calcH_VELY(q0,q1,q2,q3,vd,ve,vn); + elseif (obsIndex == 3) + H(3,:) = calcH_VELZ(q0,q1,q2,q3,vd,ve,vn); + end + varInnov(obsIndex) = (H(obsIndex,:)*P*transpose(H(obsIndex,:)) + obsVar); + innovation(obsIndex) = relVelBodyPred(obsIndex) - relVelBodyMea(obsIndex); +end + +% check innovations for consistency and exit if they fail the test +for obsIndex = 1:3 + if (innovation(obsIndex)^2 / (varInnov(obsIndex) * gateSize^2) > 1.0); + return; + end +end + +% calculate the kalman gains and perform the state and covariance update +% using sequential fusion +for obsIndex = 1:3 + + Kfusion = (P*transpose(H(obsIndex,:)))/varInnov(obsIndex); + + % correct the state vector + states = states - Kfusion * innovation(obsIndex); + + % normalise the updated quaternion states + quatMag = sqrt(states(1)^2 + states(2)^2 + states(3)^2 + states(4)^2); + if (quatMag > 1e-12) + states(1:4) = states(1:4) / quatMag; + end + + % correct the covariance P = P - K*H*P + P = P - Kfusion*H(obsIndex,:)*P; + + % Force symmetry on the covariance matrix to prevent ill-conditioning + % of the matrix which would cause the filter to blow-up + P = 0.5*(P + transpose(P)); + + % ensure diagonals are positive + for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end + end + +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagDeclination.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagDeclination.m new file mode 100644 index 0000000000..7b28ac40eb --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagDeclination.m @@ -0,0 +1,47 @@ +function [... + states, ... % state vector after fusion of measurements + P] ... % + = FuseMagDeclination( ... + states, ... % predicted states + P, ... % predicted covariance + measDec) % magnetic field declination - azimuth angle measured from true north (rad) + +magN = states(17); +magE = states(18); + +R_MAG = 0.5^2; + +H = calcH_MAGD(magE,magN); +varInnov = (H*P*transpose(H) + R_MAG); +Kfusion = (P*transpose(H))/varInnov; + +% Calculate the predicted magnetic declination +predDec = atan2(magE,magN); + +% Calculate the measurement innovation +innovation = predDec - measDec; + +if (innovation > pi) + innovation = innovation - 2*pi; +elseif (innovation < -pi) + innovation = innovation + 2*pi; +end + +% correct the state vector +states = states - Kfusion * innovation; + +% correct the covariance P = P - K*H*P +P = P - Kfusion*H*P; + +% Force symmetry on the covariance matrix to prevent ill-conditioning +% of the matrix which would cause the filter to blow-up +P = 0.5*(P + transpose(P)); + +% ensure diagonals are positive +for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagHeading.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagHeading.m new file mode 100644 index 0000000000..36d27ecf58 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagHeading.m @@ -0,0 +1,71 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation, ... % Declination innovation - rad + varInnov] ... % + = FuseMagHeading( ... + states, ... % predicted states + P, ... % predicted covariance + magData, ... % XYZ body frame magnetic flux measurements - gauss + measDec, ... % magnetic field declination - azimuth angle measured from true north (rad) + innovGate, ... % innovation gate size (SD) + R_MAG) % magnetic heading measurement variance - rad^2 + +q0 = states(1); +q1 = states(2); +q2 = states(3); +q3 = states(4); + +magX = magData(1); +magY = magData(2); +magZ = magData(3); + +H = calcH_HDG(magX,magY,magZ,q0,q1,q2,q3); +varInnov = (H*P*transpose(H) + R_MAG); +Kfusion = (P*transpose(H))/varInnov; + +% Calculate the predicted magnetic declination +Tbn = Quat2Tbn(states(1:4)); +magMeasNED = Tbn*[magX;magY;magZ]; +predDec = atan2(magMeasNED(2),magMeasNED(1)); + +% Calculate the measurement innovation +innovation = predDec - measDec; + +if (innovation > pi) + innovation = innovation - 2*pi; +elseif (innovation < -pi) + innovation = innovation + 2*pi; +end + +% Apply a innovation consistency check +if (innovation^2 / (innovGate^2 * varInnov)) > 1.0 + innovation = NaN; + varInnov = NaN; + return; +end + +% correct the state vector +states = states - Kfusion * innovation; + +% normalise the updated quaternion states +quatMag = sqrt(states(1)^2 + states(2)^2 + states(3)^2 + states(4)^2); +if (quatMag > 1e-12) + states(1:4) = states(1:4) / quatMag; +end + +% correct the covariance P = P - K*H*P +P = P - Kfusion*H*P; + +% Force symmetry on the covariance matrix to prevent ill-conditioning +% of the matrix which would cause the filter to blow-up +P = 0.5*(P + transpose(P)); + +% ensure diagonals are positive +for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagnetometer.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagnetometer.m new file mode 100644 index 0000000000..58281fd624 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseMagnetometer.m @@ -0,0 +1,87 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation, ... % Declination innovation - rad + varInnov] ... % + = FuseMagnetometer( ... + states, ... % predicted states + P, ... % predicted covariance + magMea, ... % body frame magnetic flux measurements + testRatio, ... % Size of magnetometer innovation in standard deviations before measurements are rejected + R_MAG) % magnetometer measurement variance - gauss^2 + +q0 = states(1); +q1 = states(2); +q2 = states(3); +q3 = states(4); + +magXbias = states(20); +magYbias = states(21); +magZbias = states(22); + +magN = states(17); +magE = states(18); +magD = states(19); + +innovation = zeros(1,3); +varInnov = zeros(1,3); +H = zeros(3,24); + +% Calculate the predicted magnetometer measurement +Tbn = Quat2Tbn(states(1:4)); +magPred = transpose(Tbn)*[magN;magE;magD] + [magXbias;magYbias;magZbias]; + +% calculate the observation jacobian, innovation variance and innovation +for obsIndex = 1:3 + + % Calculate corrections using X component + if (obsIndex == 1) + H(1,:) = calcH_MAGX(magD,magE,magN,q0,q1,q2,q3); + elseif (obsIndex == 2) + H(2,:) = calcH_MAGY(magD,magE,magN,q0,q1,q2,q3); + elseif (obsIndex == 3) + H(3,:) = calcH_MAGZ(magD,magE,magN,q0,q1,q2,q3); + end + varInnov(obsIndex) = (H(obsIndex,:)*P*transpose(H(obsIndex,:)) + R_MAG); + innovation(obsIndex) = magPred(obsIndex) - magMea(obsIndex); +end + +% check innovations for consistency and exit if they fail the test +for obsIndex = 1:3 + if (innovation(obsIndex)^2 / (varInnov(obsIndex) * testRatio^2) > 1.0); + return; + end +end + +% calculate the kalman gains and perform the state and covariance update +% using sequential fusion +for obsIndex = 1:3 + + Kfusion = (P*transpose(H(obsIndex,:)))/varInnov(obsIndex); + + % correct the state vector + states = states - Kfusion * innovation(obsIndex); + + % normalise the updated quaternion states + quatMag = sqrt(states(1)^2 + states(2)^2 + states(3)^2 + states(4)^2); + if (quatMag > 1e-12) + states(1:4) = states(1:4) / quatMag; + end + + % correct the covariance P = P - K*H*P + P = P - Kfusion*H(obsIndex,:)*P; + + % Force symmetry on the covariance matrix to prevent ill-conditioning + % of the matrix which would cause the filter to blow-up + P = 0.5*(P + transpose(P)); + + % ensure diagonals are positive + for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end + end + +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseOpticalFlow.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseOpticalFlow.m new file mode 100644 index 0000000000..2b18c552d0 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseOpticalFlow.m @@ -0,0 +1,88 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation, ... % XY optical flow innovations - rad/sec + varInnov] ... % XY optical flow innovation variances (rad/sec)^2 + = FuseOpticalFlow( ... + states, ... % predicted states + P, ... % predicted covariance + flowRate, ... % XY axis optical flow rate (rad/sec) + bodyRate, ... % XY axis body rate (rad/sec) + range, ... % range from lens to ground measured along the centre of the optical flow sensor field of view + flowObsVar, ... % flow observation variance - (rad/sec)^2 + gateSize) % innovation gate size (SD) + +q0 = states(1); +q1 = states(2); +q2 = states(3); +q3 = states(4); +vn = states(5); +ve = states(6); +vd = states(7); + +innovation = zeros(1,2); +varInnov = zeros(1,2); +H = zeros(2,24); + +% Calculate predicted angular LOS rates about body frame axes +Tbn = Quat2Tbn(states(1:4)); +relVelBody = transpose(Tbn)*[vn;ve;vd]; +losRatePred(1) = +relVelBody(2)/range; +losRatePred(2) = -relVelBody(1)/range; + +% Calculate measured LOS angular rates using body motion corrected flow +% measurements +losRateMea = - flowRate + bodyRate; + +% calculate the observation jacobian, innovation variance and innovation +for obsIndex = 1:2 + + % Calculate corrections using X component + if (obsIndex == 1) + H(1,:) = calcH_LOSX(q0,q1,q2,q3,range,vd,ve,vn); + elseif (obsIndex == 2) + H(2,:) = calcH_LOSY(q0,q1,q2,q3,range,vd,ve,vn); + end + varInnov(obsIndex) = (H(obsIndex,:)*P*transpose(H(obsIndex,:)) + flowObsVar); + innovation(obsIndex) = losRatePred(obsIndex) - losRateMea(obsIndex); +end + +% check innovations for consistency and exit if they fail the test +for obsIndex = 1:2 + if (innovation(obsIndex)^2 / (varInnov(obsIndex) * gateSize^2) > 1.0); + return; + end +end + +% calculate the kalman gains and perform the state and covariance update +% using sequential fusion +for obsIndex = 1:2 + + Kfusion = (P*transpose(H(obsIndex,:)))/varInnov(obsIndex); + + % correct the state vector + states = states - Kfusion * innovation(obsIndex); + + % normalise the updated quaternion states + quatMag = sqrt(states(1)^2 + states(2)^2 + states(3)^2 + states(4)^2); + if (quatMag > 1e-12) + states(1:4) = states(1:4) / quatMag; + end + + % correct the covariance P = P - K*H*P + P = P - Kfusion*H(obsIndex,:)*P; + + % Force symmetry on the covariance matrix to prevent ill-conditioning + % of the matrix which would cause the filter to blow-up + P = 0.5*(P + transpose(P)); + + % ensure diagonals are positive + for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end + end + +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FusePosition.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FusePosition.m new file mode 100644 index 0000000000..d1a31c1fce --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FusePosition.m @@ -0,0 +1,68 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation,... % NE position innovations (m) + varInnov] ... % NE position innovation variance (m^2) + = FusePosition( ... + states, ... % predicted states from the INS + P, ... % predicted covariance + measPos, ... % NE position measurements (m) + gateSize, ... % Size of the innovation consistency check gate (std-dev) + R_OBS) % position observation variance (m)^2 + +innovation = zeros(1,2); +varInnov = zeros(1,2); +H = zeros(2,24); + +for obsIndex = 1:2 + + % velocity states start at index 8 + stateIndex = 7 + obsIndex; + + % Calculate the velocity measurement innovation + innovation(obsIndex) = states(stateIndex) - measPos(obsIndex); + + % Calculate the observation Jacobian + H(obsIndex,stateIndex) = 1; + + varInnov(obsIndex) = (H(obsIndex,:)*P*transpose(H(obsIndex,:)) + R_OBS); + +end + +% Apply an innovation consistency check +for obsIndex = 1:2 + + if (innovation(obsIndex)^2 / (gateSize^2 * varInnov(obsIndex))) > 1.0 + return; + end + +end + +% Calculate Kalman gains and update states and covariances +for obsIndex = 1:2 + + % Calculate the Kalman gains + K = (P*transpose(H(obsIndex,:)))/varInnov(obsIndex); + + % Calculate state corrections + xk = K * innovation(obsIndex); + + % Apply the state corrections + states = states - xk; + + % Update the covariance + P = P - K*H(obsIndex,:)*P; + + % Force symmetry on the covariance matrix to prevent ill-conditioning + P = 0.5*(P + transpose(P)); + + % ensure diagonals are positive + for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end + end + +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseVelocity.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseVelocity.m new file mode 100644 index 0000000000..432470aaaa --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/FuseVelocity.m @@ -0,0 +1,68 @@ +function [... + states, ... % state vector after fusion of measurements + P, ... % state covariance matrix after fusion of corrections + innovation,... % NED velocity innovations (m/s) + varInnov] ... % NED velocity innovation variance ((m/s)^2) + = FuseVelocity( ... + states, ... % predicted states from the INS + P, ... % predicted covariance + measVel, ... % NED velocity measurements (m/s) + gateSize, ... % Size of the innovation consistency check gate (std-dev) + R_OBS) % velocity observation variance (m/s)^2 + +innovation = zeros(1,3); +varInnov = zeros(1,3); +H = zeros(3,24); + +for obsIndex = 1:3 + + % velocity states start at index 5 + stateIndex = 4 + obsIndex; + + % Calculate the velocity measurement innovation + innovation(obsIndex) = states(stateIndex) - measVel(obsIndex); + + % Calculate the observation Jacobian + H(obsIndex,stateIndex) = 1; + + varInnov(obsIndex) = (H(obsIndex,:)*P*transpose(H(obsIndex,:)) + R_OBS); + +end + +% Apply an innovation consistency check +for obsIndex = 1:3 + + if (innovation(obsIndex)^2 / (gateSize^2 * varInnov(obsIndex))) > 1.0 + return; + end + +end + +% Calculate Kalman gains and update states and covariances +for obsIndex = 1:3 + + % Calculate the Kalman gains + K = (P*transpose(H(obsIndex,:)))/varInnov(obsIndex); + + % Calculate state corrections + xk = K * innovation(obsIndex); + + % Apply the state corrections + states = states - xk; + + % Update the covariance + P = P - K*H(obsIndex,:)*P; + + % Force symmetry on the covariance matrix to prevent ill-conditioning + P = 0.5*(P + transpose(P)); + + % ensure diagonals are positive + for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end + end + +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/GenerateEquations24.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/GenerateEquations24.m new file mode 100755 index 0000000000..a33a53d6f6 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/GenerateEquations24.m @@ -0,0 +1,211 @@ +%% define symbolic variables and constants +clear all; +reset(symengine); +syms dax day daz real % IMU delta angle measurements in body axes - rad +syms dvx dvy dvz real % IMU delta velocity measurements in body axes - m/sec +syms q0 q1 q2 q3 real % quaternions defining attitude of body axes relative to local NED +syms vn ve vd real % NED velocity - m/sec +syms pn pe pd real % NED position - m +syms dax_b day_b daz_b real % delta angle bias - rad +syms dvx_b dvy_b dvz_b real % delta velocity bias - m/sec +syms dt real % IMU time step - sec +syms gravity real % gravity - m/sec^2 +syms daxVar dayVar dazVar dvxVar dvyVar dvzVar real; % IMU delta angle and delta velocity measurement variances +syms vwn vwe real; % NE wind velocity - m/sec +syms magX magY magZ real; % XYZ body fixed magnetic field measurements - milligauss +syms magN magE magD real; % NED earth fixed magnetic field components - milligauss +syms R_MAG real % variance for magnetic flux measurements - milligauss^2 + +%% define the state prediction equations + +% define the measured Delta angle and delta velocity vectors +dAngMeas = [dax; day; daz]; +dVelMeas = [dvx; dvy; dvz]; + +% define the IMU bias errors and scale factor +dAngBias = [dax_b; day_b; daz_b]; +dVelBias = [dvx_b; dvy_b; dvz_b]; + +% define the quaternion rotation vector for the state estimate +quat = [q0;q1;q2;q3]; +% derive the truth body to nav direction cosine matrix +Tbn = Quat2Tbn(quat); + +% define the truth delta angle +% ignore coning compensation as these effects are negligible in terms of +% covariance growth for our application and grade of sensor +dAngTruth = dAngMeas - dAngBias; + +% Define the truth delta velocity -ignore sculling and transport rate +% corrections as these negligible are in terms of covariance growth for our +% application and grade of sensor +dVelTruth = dVelMeas - dVelBias; + +% define the attitude update equations +% use a first order expansion of rotation to calculate the quaternion increment +% acceptable for propagation of covariances +deltaQuat = [1; + 0.5*dAngTruth(1); + 0.5*dAngTruth(2); + 0.5*dAngTruth(3); + ]; +quatNew = QuatMult(quat,deltaQuat); + +% define the velocity update equations +% ignore coriolis terms for linearisation purposes +vNew = [vn;ve;vd] + [0;0;gravity]*dt + Tbn*dVelTruth; + +% define the position update equations +pNew = [pn;pe;pd] + [vn;ve;vd]*dt; + +% define the IMU error update equations +dAngBiasNew = dAngBias; +dVelBiasNew = dVelBias; + +% define the wind velocity update equations +vwnNew = vwn; +vweNew = vwe; + +% define the earth magnetic field update equations +magNnew = magN; +magEnew = magE; +magDnew = magD; + +% define the body magnetic field update equations +magXnew = magX; +magYnew = magY; +magZnew = magZ; + +% Define the state vector & number of states +stateVector = [quat;vn;ve;vd;pn;pe;pd;dAngBias;dVelBias;magN;magE;magD;magX;magY;magZ;vwn;vwe]; +nStates=numel(stateVector); + +% Define vector of process equations +stateVectorNew = [quatNew;vNew;pNew;dAngBiasNew;dVelBiasNew;magNnew;magEnew;magDnew;magXnew;magYnew;magZnew;vwnNew;vweNew]; + +%% derive the state transition and state error matrix + +% Define the control (disturbance) vector. Error growth in the inertial +% solution is assumed to be driven by 'noise' in the delta angles and +% velocities, after bias effects have been removed. This is OK because we +% have sensor bias accounted for in the state equations. +distVector = [daxVar;dayVar;dazVar;dvxVar;dvyVar;dvzVar]; + +% derive the control(disturbance) influence matrix +G = jacobian(stateVectorNew, [dAngMeas;dVelMeas]); + +% derive the state error matrix +distMatrix = diag(distVector); +Q = G*distMatrix*transpose(G); +f = matlabFunction(Q,'file','calcQ24.m'); + +% derive the state transition matrix +F = jacobian(stateVectorNew, stateVector); +f = matlabFunction(F,'file','calcF24.m'); + +%% derive equations for fusion of magnetometer measurements +% rotate earth field into body axes +magMeas = transpose(Tbn)*[magN;magE;magD] + [magX;magY;magZ]; + +magMeasX = magMeas(1); +H_MAGX = jacobian(magMeasX,stateVector); % measurement Jacobian +f = matlabFunction(H_MAGX,'file','calcH_MAGX.m'); + +magMeasY = magMeas(2); +H_MAGY = jacobian(magMeasY,stateVector); % measurement Jacobian +f = matlabFunction(H_MAGY,'file','calcH_MAGY.m'); + +magMeasZ = magMeas(3); +H_MAGZ = jacobian(magMeasZ,stateVector); % measurement Jacobian +f = matlabFunction(H_MAGZ,'file','calcH_MAGZ.m'); + +%% derive equations for fusion of synthetic deviation measurement +% used to keep correct heading when operating without absolute position or +% velocity measurements - eg when using optical flow + +% rotate magnetic field into earth axes +magMeasNED = [magN;magE;magD]; + +% the predicted measurement is the angle wrt magnetic north of the horizontal +% component of the measured field +angMeas = atan(magMeasNED(2)/magMeasNED(1)); +H_MAGD = jacobian(angMeas,stateVector); % measurement Jacobian +H_MAGD = simplify(H_MAGD); + +f = matlabFunction(H_MAGD,'file','calcH_MAGD.m'); + +%% derive equations for fusion of a single magneic compass heading measurement + +% rotate body measured field into earth axes +magMeasNED = Tbn*[magX;magY;magZ]; + +% the predicted measurement is the angle wrt true north of the horizontal +% component of the measured field +angMeas = atan(magMeasNED(2)/magMeasNED(1)); +H_MAG = jacobian(angMeas,stateVector); % measurement Jacobian +f = matlabFunction(H_MAG,'file','calcH_HDG.m'); + +%% derive equations for sequential fusion of optical flow measurements + +% range is defined as distance from camera focal point to centre of sensor fov +syms range real; + +% calculate relative velocity in body frame +relVelBody = transpose(Tbn)*[vn;ve;vd]; + +% divide by range to get predicted angular LOS rates relative to X and Y +% axes. Note these are body angular rate motion compensated optical flow rates +losRateX = +relVelBody(2)/range; +losRateY = -relVelBody(1)/range; + +% calculate the observation Jacobian for the X axis +H_LOSX = jacobian(losRateX,stateVector); % measurement Jacobian +H_LOSX = simplify(H_LOSX); +f = matlabFunction(H_LOSX,'file','calcH_LOSX.m'); + +% calculate the observation Jacobian for the Y axis +H_LOSY = jacobian(losRateY,stateVector); % measurement Jacobian +H_LOSY = simplify(H_LOSY); +f = matlabFunction(H_LOSY,'file','calcH_LOSY.m'); + +%% derive equations for sequential fusion of body frame velocity measurements + +% body frame velocity observations +syms velX velY velZ real; + +% velocity observation variance +syms R_VEL real; + +% calculate relative velocity in body frame +relVelBody = transpose(Tbn)*[vn;ve;vd]; + +% calculate the observation Jacobian for the X axis +H_VELX = jacobian(relVelBody(1),stateVector); % measurement Jacobian +H_VELX = simplify(H_VELX); +f = matlabFunction(H_VELX,'file','calcH_VELX.m'); + +% calculate the observation Jacobian for the Y axis +H_VELY = jacobian(relVelBody(2),stateVector); % measurement Jacobian +H_VELY = simplify(H_VELY); +f = matlabFunction(H_VELY,'file','calcH_VELY.m'); + +% calculate the observation Jacobian for the Z axis +H_VELZ = jacobian(relVelBody(3),stateVector); % measurement Jacobian +H_VELZ = simplify(H_VELZ); +f = matlabFunction(H_VELZ,'file','calcH_VELZ.m'); + +%% calculate error transfer matrix for declination error estimate +declination = atan(magE/magN); +T_MAG = jacobian(declination,[magN,magE]); + +f = matlabFunction(T_MAG,'file','transfer_matrix.m'); + +%% calculate Quaternion to Euler angle error transfer matrix +% quat = [q0;q1;q2;q3]; +% syms roll pitch yaw 'real'; +roll = atan2(2*(quat(3)*quat(4)+quat(1)*quat(2)) , (quat(1)*quat(1) - quat(2)*quat(2) - quat(3)*quat(3) + quat(4)*quat(4))); +pitch = -asin(2*(quat(2)*quat(4)-quat(1)*quat(3))); +yaw = atan2(2*(quat(2)*quat(3)+quat(1)*quat(4)) , (quat(1)*quat(1) + quat(2)*quat(2) - quat(3)*quat(3) - quat(4)*quat(4))); +euler = [roll;pitch;yaw]; +error_transfer_matrix = jacobian(euler,quat); +matlabFunction(error_transfer_matrix,'file','quat_to_euler_error_transfer_matrix.m'); diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/InitCovariance.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/InitCovariance.m new file mode 100644 index 0000000000..6695498493 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/InitCovariance.m @@ -0,0 +1,36 @@ +function covariance = InitCovariance(param,dt,gps_alignment,gps_data) + +% Define quaternion state errors +Sigma_quat = param.alignment.quatErr * [1;1;1;1]; + +% Define velocity state errors +if (gps_alignment == 1) + Sigma_velocity = gps_data.spd_error(gps_data.start_index) * [1;1;1]; +else + Sigma_velocity = [param.alignment.velErrNE;param.alignment.velErrNE;param.alignment.velErrD]; +end + +% Define position state errors +if (gps_alignment == 1) + Sigma_position = gps_data.pos_error(gps_data.start_index) * [1;1;0] + [0;0;param.alignment.hgtErr]; +else + Sigma_position = [param.alignment.posErrNE;param.alignment.posErrNE;param.alignment.hgtErr]; +end + +% Define delta angle bias state errors +Sigma_dAngBias = param.alignment.delAngBiasErr*dt*[1;1;1]; + +% Define delta velocity bias state errors +Sigma_dVelBias = param.alignment.delVelBiasErr*dt*[1;1;1]; + +% Define magnetic field state errors +Sigma_magNED = [param.alignment.magErrNED;param.alignment.magErrNED;param.alignment.magErrNED]; % 1 Sigma uncertainty in initial NED mag field +Sigma_magXYZ = [param.alignment.magErrXYZ;param.alignment.magErrXYZ;param.alignment.magErrXYZ]; % 1 Sigma uncertainty in initial XYZ mag sensor offset + +% Define wind velocity state errors +Sigma_wind = param.alignment.windErrNE * [1;1]; + +% Convert to variances and write to covariance matrix diagonals +covariance = diag([Sigma_quat;Sigma_velocity;Sigma_position;Sigma_dAngBias;Sigma_dVelBias;Sigma_magNED;Sigma_magXYZ;Sigma_wind].^2); +end + diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/InitStates.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/InitStates.m new file mode 100644 index 0000000000..361bec1063 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/InitStates.m @@ -0,0 +1,66 @@ +function [states, imu_start_index] = InitStates(param,imu_data,gps_data,mag_data,baro_data) + +% constants +deg2rad = pi/180; + +% initialise the state vector and quaternion +states = zeros(24,1); +quat = [1;0;0;0]; + +if (param.control.waitForGps == 1) + % find IMU start index that coresponds to first valid GPS data + imu_start_index = (find(imu_data.time_us > gps_data.time_us(gps_data.start_index), 1, 'first' ) - 50); + imu_start_index = max(imu_start_index,1); +else + imu_start_index = 1; +end + +% average first 100 accel readings to reduce effect of vibration +initAccel(1) = mean(imu_data.del_vel(imu_start_index:imu_start_index+99,1))./mean(imu_data.accel_dt(imu_start_index:imu_start_index+99,1)); +initAccel(2) = mean(imu_data.del_vel(imu_start_index:imu_start_index+99,2))./mean(imu_data.accel_dt(imu_start_index:imu_start_index+99,1)); +initAccel(3) = mean(imu_data.del_vel(imu_start_index:imu_start_index+99,3))./mean(imu_data.accel_dt(imu_start_index:imu_start_index+99,1)); + +% align tilt using gravity vector (If the velocity is changing this will +% induce errors) +quat = AlignTilt(quat,initAccel); +states(1:4) = quat; + +% add a roll, pitch, yaw mislignment +quat_align_err = EulToQuat([param.control.rollAlignErr,param.control.pitchAlignErr,param.control.yawAlignErr]); +quat = QuatMult(quat,quat_align_err); + +% find magnetometer start index +mag_start_index = (find(mag_data.time_us > imu_data.time_us(imu_start_index), 1, 'first' ) - 5); +mag_start_index = max(mag_start_index,1); + +% mean to reduce effect of noise in data +magBody(1,1) = mean(mag_data.field_ga(mag_start_index:mag_start_index+9,1)); +magBody(2,1) = mean(mag_data.field_ga(mag_start_index:mag_start_index+9,2)); +magBody(3,1) = mean(mag_data.field_ga(mag_start_index:mag_start_index+9,3)); + +% align heading and initialise the NED magnetic field states +quat = AlignHeading(quat,magBody,param.fusion.magDeclDeg*deg2rad); +states(1:4) = quat; + +% initialise the NED magnetic field states +Tbn = Quat2Tbn(quat); +states(17:19) = Tbn*magBody; + +if (param.control.waitForGps == 1) + % initialise velocity and position using gps + states(5:7) = gps_data.vel_ned(gps_data.start_index,:); + states(8:9) = gps_data.pos_ned(gps_data.start_index,1:2); +else + % initialise to be stationary at the origin + states(5:7) = zeros(1,3); + states(8:9) = zeros(1,2); +end + +% find baro start index +baro_start_index = (find(baro_data.time_us > imu_data.time_us(imu_start_index), 1, 'first' ) - 10); +baro_start_index = max(baro_start_index,1); + +% average baro data and initialise the vertical position +states(10) = -mean(baro_data.height(baro_start_index:baro_start_index+20)); + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PlotData.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PlotData.m new file mode 100755 index 0000000000..4ba5d5ab04 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PlotData.m @@ -0,0 +1,511 @@ +function PlotData(output,folder,runIdentifier) +rad2deg = 180/pi; +if ~exist(folder,'dir') + mkdir(folder); +end +plotDimensions = [0 0 210*3 297*3]; + +%% plot Euler angle estimates +figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); +h=gcf; +set(h,'PaperOrientation','portrait'); +set(h,'PaperUnits','normalized'); +set(h,'PaperPosition', [0 0 1 1]); + +margin = 5; + +subplot(3,1,1); +plot(output.time_lapsed,[output.euler_angles(:,1)*rad2deg,output.euler_angles(:,1)*rad2deg-2*sqrt(output.euler_variances(:,1)*rad2deg),output.euler_angles(:,1)*rad2deg+2*sqrt(output.euler_variances(:,1)*rad2deg)]); +minVal = rad2deg*min(output.euler_angles(:,1))-margin; +maxVal = rad2deg*max(output.euler_angles(:,1))+margin; +ylim([minVal maxVal]); +grid on; +titleText=strcat({'Euler Angle Estimates'},runIdentifier); +title(titleText); +ylabel('Roll (deg)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,2); +plot(output.time_lapsed,[output.euler_angles(:,2)*rad2deg,output.euler_angles(:,2)*rad2deg-2*sqrt(output.euler_variances(:,2)*rad2deg),output.euler_angles(:,2)*rad2deg+2*sqrt(output.euler_variances(:,2)*rad2deg)]); +minVal = rad2deg*min(output.euler_angles(:,2))-margin; +maxVal = rad2deg*max(output.euler_angles(:,2))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('Pitch (deg)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,3); +plot(output.time_lapsed,[output.euler_angles(:,3)*rad2deg,output.euler_angles(:,3)*rad2deg-2*sqrt(output.euler_variances(:,3)*rad2deg),output.euler_angles(:,3)*rad2deg+2*sqrt(output.euler_variances(:,3)*rad2deg)]); +minVal = rad2deg*min(output.euler_angles(:,3))-margin; +maxVal = rad2deg*max(output.euler_angles(:,3))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('Yaw (deg)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +fileName='euler_angle_estimates.png'; +fullFileName = fullfile(folder, fileName); +saveas(h,fullFileName); + +%% plot NED velocity estimates +figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); +h=gcf; +set(h,'PaperOrientation','portrait'); +set(h,'PaperUnits','normalized'); +set(h,'PaperPosition', [0 0 1 1]); + +subplot(3,1,1); +plot(output.time_lapsed,[output.velocity_NED(:,1),output.velocity_NED(:,1)+2*sqrt(output.state_variances(:,5)),output.velocity_NED(:,1)-2*sqrt(output.state_variances(:,5))]); +grid on; +titleText=strcat({'NED Velocity Estimates'},runIdentifier); +title(titleText); +ylabel('North (m/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,2); +plot(output.time_lapsed,[output.velocity_NED(:,2),output.velocity_NED(:,2)+2*sqrt(output.state_variances(:,6)),output.velocity_NED(:,2)-2*sqrt(output.state_variances(:,6))]); +grid on; +ylabel('East (m/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,3); +plot(output.time_lapsed,[output.velocity_NED(:,3),output.velocity_NED(:,3)+2*sqrt(output.state_variances(:,7)),output.velocity_NED(:,3)-2*sqrt(output.state_variances(:,7))]); +grid on; +ylabel('Down (m/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +fileName='velocity_estimates.png'; +fullFileName = fullfile(folder, fileName); +saveas(h,fullFileName); + +%% plot NED position estimates +figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); +h=gcf; +set(h,'PaperOrientation','portrait'); +set(h,'PaperUnits','normalized'); +set(h,'PaperPosition', [0 0 1 1]); + +subplot(3,1,1); +plot(output.time_lapsed,[output.position_NED(:,1),output.position_NED(:,1)+2*sqrt(output.state_variances(:,8)),output.position_NED(:,1)-2*sqrt(output.state_variances(:,8))]); +grid on; +titleText=strcat({'NED Position Estimates'},runIdentifier); +title(titleText); +ylabel('North (m)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,2); +plot(output.time_lapsed,[output.position_NED(:,2),output.position_NED(:,2)+2*sqrt(output.state_variances(:,9)),output.position_NED(:,2)-2*sqrt(output.state_variances(:,9))]); +grid on; +ylabel('East (m)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,3); +plot(output.time_lapsed,[output.position_NED(:,3),output.position_NED(:,3)+2*sqrt(output.state_variances(:,10)),output.position_NED(:,3)-2*sqrt(output.state_variances(:,10))]); +grid on; +ylabel('Down (m)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +fileName='position_estimates.png'; +fullFileName = fullfile(folder, fileName); +saveas(h,fullFileName); + +%% plot IMU gyro bias estimates +figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); +h=gcf; +set(h,'PaperOrientation','portrait'); +set(h,'PaperUnits','normalized'); +set(h,'PaperPosition', [0 0 1 1]); + +margin = 0.1; + +subplot(3,1,1); +plot(output.time_lapsed,(1/output.dt)*[output.gyro_bias(:,1),output.gyro_bias(:,1)+2*sqrt(output.state_variances(:,11)),output.gyro_bias(:,1)-2*sqrt(output.state_variances(:,11))]*rad2deg);%%output.gyro_bias(:,1)*rad2deg); +minVal = (1/output.dt)*rad2deg*min(output.gyro_bias(:,1))-margin; +maxVal = (1/output.dt)*rad2deg*max(output.gyro_bias(:,1))+margin; +ylim([minVal maxVal]); +grid on; +titleText=strcat({'IMU Gyro Bias Estimates'},runIdentifier); +title(titleText); +ylabel('X gyro (deg/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,2); +plot(output.time_lapsed,(1/output.dt)*[output.gyro_bias(:,2),output.gyro_bias(:,2)+2*sqrt(output.state_variances(:,12)),output.gyro_bias(:,2)-2*sqrt(output.state_variances(:,12))]*rad2deg); +minVal = (1/output.dt)*rad2deg*min(output.gyro_bias(:,2))-margin; +maxVal = (1/output.dt)*rad2deg*max(output.gyro_bias(:,2))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('Y gyro (deg/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,3); +plot(output.time_lapsed,(1/output.dt)*[output.gyro_bias(:,3),output.gyro_bias(:,3)+2*sqrt(output.state_variances(:,13)),output.gyro_bias(:,3)-2*sqrt(output.state_variances(:,13))]*rad2deg); +minVal = (1/output.dt)*rad2deg*min(output.gyro_bias(:,3))-margin; +maxVal = (1/output.dt)*rad2deg*max(output.gyro_bias(:,3))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('Z gyro (deg/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +fileName='imu_gyro_bias_estimates.png'; +fullFileName = fullfile(folder, fileName); +saveas(h,fullFileName); + +%% plot IMU accel bias estimates +figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); +h=gcf; +set(h,'PaperOrientation','portrait'); +set(h,'PaperUnits','normalized'); +set(h,'PaperPosition', [0 0 1 1]); + +margin = 0.1; + +subplot(3,1,1); +plot(output.time_lapsed,(1/output.dt)*[output.accel_bias(:,1),output.accel_bias(:,1)+2*sqrt(output.state_variances(:,14)),output.accel_bias(:,1)-2*sqrt(output.state_variances(:,14))]); +titleText=strcat({'IMU Accel Bias Estimates'},runIdentifier); +title(titleText); +minVal = (1/output.dt)*min(output.accel_bias(:,1))-margin; +maxVal = (1/output.dt)*max(output.accel_bias(:,1))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('X accel (m/s/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,2); +plot(output.time_lapsed,(1/output.dt)*[output.accel_bias(:,2),output.accel_bias(:,2)+2*sqrt(output.state_variances(:,15)),output.accel_bias(:,2)-2*sqrt(output.state_variances(:,15))]); +minVal = (1/output.dt)*min(output.accel_bias(:,1))-margin; +maxVal = (1/output.dt)*max(output.accel_bias(:,1))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('Y accel (m/s/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +subplot(3,1,3); +plot(output.time_lapsed,(1/output.dt)*[output.accel_bias(:,3),output.accel_bias(:,3)+2*sqrt(output.state_variances(:,16)),output.accel_bias(:,3)-2*sqrt(output.state_variances(:,16))]); +minVal = (1/output.dt)*min(output.accel_bias(:,1))-margin; +maxVal = (1/output.dt)*max(output.accel_bias(:,1))+margin; +ylim([minVal maxVal]); +grid on; +ylabel('Z accel (m/s/s)'); +xlabel('time (sec)'); +legend('estimate','upper 95% bound','lower 95% bound'); + +fileName='imu_accel_bias_estimates.png'; +fullFileName = fullfile(folder, fileName); +saveas(h,fullFileName); + +%% plot magnetometer bias estimates +if (output.magFuseMethod <= 1) + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + + subplot(3,1,1); + plot(output.time_lapsed',[output.mag_XYZ(:,1),output.mag_XYZ(:,1)+2*sqrt(output.state_variances(:,20)),output.mag_XYZ(:,1)-2*sqrt(output.state_variances(:,20))]); + grid on; + titleText=strcat({'Magnetometer Bias Estimates'},runIdentifier); + title(titleText); + ylabel('X bias (gauss)'); + xlabel('time (sec)'); + legend('estimate','upper 95% bound','lower 95% bound'); + + subplot(3,1,2); + plot(output.time_lapsed',[output.mag_XYZ(:,2),output.mag_XYZ(:,2)+2*sqrt(output.state_variances(:,21)),output.mag_XYZ(:,2)-2*sqrt(output.state_variances(:,21))]); + grid on; + ylabel('Y bias (gauss)'); + xlabel('time (sec)'); + legend('estimate','upper 95% bound','lower 95% bound'); + + subplot(3,1,3); + plot(output.time_lapsed',[output.mag_XYZ(:,3),output.mag_XYZ(:,3)+2*sqrt(output.state_variances(:,22)),output.mag_XYZ(:,3)-2*sqrt(output.state_variances(:,22))]); + grid on; + ylabel('Z bias (gauss)'); + xlabel('time (sec)'); + legend('estimate','upper 95% bound','lower 95% bound'); + + fileName='body_field_estimates.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); +end + +%% plot earth field estimates +if (output.magFuseMethod <= 1) + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + + margin = 0.1; + + subplot(4,1,1); + plot(output.time_lapsed',[output.mag_NED(:,1),output.mag_NED(:,1)+2*sqrt(output.state_variances(:,17)),output.mag_NED(:,1)-2*sqrt(output.state_variances(:,17))]); + minVal = min(output.mag_NED(:,1))-margin; + maxVal = max(output.mag_NED(:,1))+margin; + ylim([minVal maxVal]); + grid on; + titleText=strcat({'Earth Magnetic Field Estimates'},runIdentifier); + title(titleText); + ylabel('North (gauss)'); + xlabel('time (sec)'); + legend('estimate','upper 95% bound','lower 95% bound'); + + subplot(4,1,2); + plot(output.time_lapsed',[output.mag_NED(:,2),output.mag_NED(:,2)+2*sqrt(output.state_variances(:,18)),output.mag_NED(:,2)-2*sqrt(output.state_variances(:,18))]); + minVal = min(output.mag_NED(:,2))-margin; + maxVal = max(output.mag_NED(:,2))+margin; + ylim([minVal maxVal]); + grid on; + ylabel('East (gauss)'); + xlabel('time (sec)'); + legend('estimate','upper 95% bound','lower 95% bound'); + + subplot(4,1,3); + plot(output.time_lapsed',[output.mag_NED(:,3),output.mag_NED(:,3)+2*sqrt(output.state_variances(:,19)),output.mag_NED(:,3)-2*sqrt(output.state_variances(:,19))]); + grid on; + minVal = min(output.mag_NED(:,3))-margin; + maxVal = max(output.mag_NED(:,3))+margin; + ylim([minVal maxVal]); + ylabel('Down (gauss)'); + xlabel('time (sec)'); + legend('estimate','upper 95% bound','lower 95% bound'); + + subplot(4,1,4); + plot(output.time_lapsed',rad2deg*atan2(output.mag_NED(:,2),output.mag_NED(:,1))); + grid on; + titleText=strcat({'Magnetic Declination Estimate'},runIdentifier); + title(titleText); + ylabel('declination (deg)'); + xlabel('time (sec)'); + + fileName='earth_field_estimates.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); +end + +%% plot velocity innovations +if isfield(output.innovations,'vel_innov') + + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + + subplot(3,1,1); + plot(output.innovations.vel_time_lapsed',[output.innovations.vel_innov(:,1),sqrt(output.innovations.vel_innov_var(:,1)),-sqrt(output.innovations.vel_innov_var(:,1))]); + grid on; + titleText=strcat({'Velocity Innovations and Variances'},runIdentifier); + title(titleText); + ylabel('North (m/s)'); + xlabel('time (sec)'); + legend('innovation','variance sqrt','variance sqrt'); + + subplot(3,1,2); + plot(output.innovations.vel_time_lapsed',[output.innovations.vel_innov(:,2),sqrt(output.innovations.vel_innov_var(:,2)),-sqrt(output.innovations.vel_innov_var(:,2))]); + grid on; + ylabel('East (m/s)'); + xlabel('time (sec)'); + legend('innovation','variance sqrt','variance sqrt'); + + subplot(3,1,3); + plot(output.innovations.vel_time_lapsed',[output.innovations.vel_innov(:,3),sqrt(output.innovations.vel_innov_var(:,3)),-sqrt(output.innovations.vel_innov_var(:,3))]); + grid on; + ylabel('Down (m/s)'); + xlabel('time (sec)'); + legend('innovation','variance sqrt','variance sqrt'); + + fileName='velocity_fusion.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); +end + +%% plot position innovations +if isfield(output.innovations,'posInnov') + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + + subplot(3,1,1); + plot(output.innovations.vel_time_lapsed',[output.innovations.posInnov(:,1),sqrt(output.innovations.posInnovVar(:,1)),-sqrt(output.innovations.posInnovVar(:,1))]); + grid on; + titleText=strcat({'Position Innovations and Variances'},runIdentifier); + title(titleText); + ylabel('North (m)'); + xlabel('time (sec)'); + legend('innovation','variance sqrt','variance sqrt'); + + subplot(3,1,2); + plot(output.innovations.vel_time_lapsed',[output.innovations.posInnov(:,2),sqrt(output.innovations.posInnovVar(:,2)),-sqrt(output.innovations.posInnovVar(:,2))]); + grid on; + ylabel('East (m)'); + xlabel('time (sec)'); + legend('innovation','variance sqrt','variance sqrt'); + + subplot(3,1,3); + plot(output.innovations.hgt_time_lapsed',[output.innovations.hgtInnov(:),sqrt(output.innovations.hgtInnovVar(:)),-sqrt(output.innovations.hgtInnovVar(:))]); + grid on; + ylabel('Up (m)'); + xlabel('time (sec)'); + legend('innovation','variance sqrt','variance sqrt'); + + fileName='position_fusion.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); +end + +%% plot magnetometer innovations +if isfield(output.innovations,'magInnov') + + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + subplot(4,1,1); + plot(output.innovations.mag_time_lapsed,[output.innovations.magInnov(:,1)';sqrt(output.innovations.magInnovVar(:,1))';-sqrt(output.innovations.magInnovVar(:,1))']); + ylim([-0.15 0.15]); + grid on; + title(strcat({'Magnetometer Innovations and Variances'},runIdentifier)); + ylabel('X (gauss)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + subplot(4,1,2); + plot(output.innovations.mag_time_lapsed,[output.innovations.magInnov(:,2)';sqrt(output.innovations.magInnovVar(:,2))';-sqrt(output.innovations.magInnovVar(:,2))']); + ylim([-0.15 0.15]); + grid on; + ylabel('Y (gauss)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + subplot(4,1,3); + plot(output.innovations.mag_time_lapsed,[output.innovations.magInnov(:,3)';sqrt(output.innovations.magInnovVar(:,3))';-sqrt(output.innovations.magInnovVar(:,3))']); + ylim([-0.15 0.15]); + grid on; + ylabel('Z (gauss)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + subplot(4,1,4); + plot(output.innovations.mag_time_lapsed,output.innovations.magLength); + ylim([0 0.7]); + grid on; + title(strcat({'Magnetic Flux'},runIdentifier)); + ylabel('Flux (Gauss)'); + xlabel('time (sec)'); + fileName='magnetometer_fusion.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); + +end + +%% plot magnetic yaw innovations +if isfield(output.innovations,'hdgInnov') + + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + + subplot(2,1,1); + plot(output.innovations.mag_time_lapsed,[output.innovations.hdgInnov*rad2deg;sqrt(output.innovations.hdgInnovVar)*rad2deg;-sqrt(output.innovations.hdgInnovVar)*rad2deg]); + ylim([-30 30]); + grid on; + title(strcat({'Magnetic Heading Innovations and Variances'},runIdentifier)); + ylabel('yaw innovation (deg)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + subplot(2,1,2); + plot(output.innovations.mag_time_lapsed,output.innovations.magLength); + ylim([0 0.7]); + grid on; + title(strcat({'Magnetic Flux'},runIdentifier)); + ylabel('Flux (Gauss)'); + xlabel('time (sec)'); + fileName='magnetometer_fusion.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); + +end + +%% plot optical flow innovations +if isfield(output.innovations,'flowInnov') + + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + subplot(2,1,1); + plot(output.innovations.flow_time_lapsed,[output.innovations.flowInnov(:,1)';sqrt(output.innovations.flowInnovVar(:,1))';-sqrt(output.innovations.flowInnovVar(:,1))']); + ylim([-1.0 1.0]); + grid on; + title(strcat({'Optical Flow Innovations and Variances'},runIdentifier)); + ylabel('X (rad/sec)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + subplot(2,1,2); + plot(output.innovations.flow_time_lapsed,[output.innovations.flowInnov(:,2)';sqrt(output.innovations.flowInnovVar(:,2))';-sqrt(output.innovations.flowInnovVar(:,2))']); + ylim([-1.0 1.0]); + grid on; + ylabel('Y (rad/sec)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + fileName='optical_flow_fusion.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); + +end +%% plot ZED camera innovations +if isfield(output.innovations,'bodyVelInnov') + + figure('Units','Pixels','Position',plotDimensions,'PaperOrientation','portrait'); + h=gcf; + set(h,'PaperOrientation','portrait'); + set(h,'PaperUnits','normalized'); + set(h,'PaperPosition', [0 0 1 1]); + + subplot(3,1,1); + plot(output.innovations.bodyVel_time_lapsed,[output.innovations.bodyVelInnov(:,1)';sqrt(output.innovations.bodyVelInnovVar(:,1))';-sqrt(output.innovations.bodyVelInnovVar(:,1))']); + grid on; + title(strcat({'ZED Camera Innovations and Variances'},runIdentifier)); + ylabel('X (m/sec)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + + subplot(3,1,2); + plot(output.innovations.bodyVel_time_lapsed,[output.innovations.bodyVelInnov(:,2)';sqrt(output.innovations.bodyVelInnovVar(:,2))';-sqrt(output.innovations.bodyVelInnovVar(:,2))']); + grid on; + ylabel('Y (m/sec)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + + subplot(3,1,3); + plot(output.innovations.bodyVel_time_lapsed,[output.innovations.bodyVelInnov(:,3)';sqrt(output.innovations.bodyVelInnovVar(:,3))';-sqrt(output.innovations.bodyVelInnovVar(:,3))']); + grid on; + ylabel('Z (m/sec)'); + xlabel('time (sec)'); + legend('innovation','innovation variance sqrt','innovation variance sqrt'); + + fileName='zed_camera_fusion.png'; + fullFileName = fullfile(folder, fileName); + saveas(h,fullFileName); + +end diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PredictCovariance.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PredictCovariance.m new file mode 100644 index 0000000000..89e445d4bf --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PredictCovariance.m @@ -0,0 +1,66 @@ +function P = PredictCovariance(deltaAngle, ... + deltaVelocity, ... + states,... + P, ... % Previous state covariance matrix + dt, ... % IMU and prediction time step + param) % tuning parameters + +% Set filter state process noise other than IMU errors, which are already +% built into the derived covariance prediction equations. +% This process noise determines the rate of estimation of IMU bias errors +dAngBiasSigma = dt*dt*param.prediction.dAngBiasPnoise; +dVelBiasSigma = dt*dt*param.prediction.dVelBiasPnoise; +magSigmaNED = dt*param.prediction.magPnoiseNED; +magSigmaXYZ = dt*param.prediction.magPnoiseXYZ; +processNoiseVariance = [zeros(1,10), dAngBiasSigma*[1 1 1], dVelBiasSigma*[1 1 1], magSigmaNED*[1 1 1], magSigmaXYZ*[1 1 1], [0 0]].^2; + +% Specify the noise variance on the IMU delta angles and delta velocities +daxVar = (dt*param.prediction.angRateNoise)^2; +dayVar = daxVar; +dazVar = daxVar; +dvxVar = (dt*param.prediction.accelNoise)^2; +dvyVar = dvxVar; +dvzVar = dvxVar; + +dvx = deltaVelocity(1); +dvy = deltaVelocity(2); +dvz = deltaVelocity(3); +dax = deltaAngle(1); +day = deltaAngle(2); +daz = deltaAngle(3); + +q0 = states(1); +q1 = states(2); +q2 = states(3); +q3 = states(4); + +dax_b = states(11); +day_b = states(12); +daz_b = states(13); + +dvx_b = states(14); +dvy_b = states(15); +dvz_b = states(16); + +% Predicted covariance +F = calcF24(dax,dax_b,day,day_b,daz,daz_b,dt,dvx,dvx_b,dvy,dvy_b,dvz,dvz_b,q0,q1,q2,q3); +Q = calcQ24(daxVar,dayVar,dazVar,dvxVar,dvyVar,dvzVar,q0,q1,q2,q3); +P = F*P*transpose(F) + Q; + +% Add the general process noise variance +for i = 1:24 + P(i,i) = P(i,i) + processNoiseVariance(i); +end + +% Force symmetry on the covariance matrix to prevent ill-conditioning +% of the matrix which would cause the filter to blow-up +P = 0.5*(P + transpose(P)); + +% ensure diagonals are positive +for i=1:24 + if P(i,i) < 0 + P(i,i) = 0; + end +end + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PredictStates.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PredictStates.m new file mode 100755 index 0000000000..88f3d64ff9 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/PredictStates.m @@ -0,0 +1,85 @@ +function [states, correctedDelAng, correctedDelVel] = PredictStates( ... + states, ... % previous state vector (4x1 quaternion, 3x1 velocity, 3x1 position, 3x1 delAng bias, 3x1 delVel bias) + delAng, ... % IMU delta angle measurements, 3x1 (rad) + delVel, ... % IMU delta velocity measurements 3x1 (m/s) + dt, ... % accumulation time of the IMU measurement (sec) + gravity, ... % acceleration due to gravity (m/s/s) + latitude) % WGS-84 latitude (rad) + +% define persistent variables for previous delta angle and velocity which +% are required for sculling and coning error corrections +persistent prevDelAng; +if isempty(prevDelAng) + prevDelAng = delAng; +end + +persistent prevDelVel; +if isempty(prevDelVel) + prevDelVel = delVel; +end + +persistent Tbn_prev; +if isempty(Tbn_prev) + Tbn_prev = Quat2Tbn(states(1:4)); +end + +% Remove sensor bias errors +delAng = delAng - states(11:13); +delVel = delVel - states(14:16); + +% Correct delta velocity for rotation and skulling +% Derived from Eqn 25 of: +% "Computational Elements For Strapdown Systems" +% Savage, P.G. +% Strapdown Associates +% 2015, WBN-14010 +% correctedDelVel= delVel + ... +% 0.5*cross(prevDelAng + delAng , prevDelVel + delVel) + 1/6*cross(prevDelAng + delAng , cross(prevDelAng + delAng , prevDelVel + delVel)) + 1/12*(cross(prevDelAng , delVel) + cross(prevDelVel , delAng)); +correctedDelVel= delVel; + +% Calculate earth delta angle spin vector +delAngEarth_NED(1,1) = 0.000072921 * cos(latitude) * dt; +delAngEarth_NED(2,1) = 0.0; +delAngEarth_NED(3,1) = -0.000072921 * sin(latitude) * dt; + +% Apply corrections for coning errors and earth spin rate +% Coning correction from : +% "A new strapdown attitude algorithm", +% R. B. MILLER, +% Journal of Guidance, Control, and Dynamics +% July, Vol. 6, No. 4, pp. 287-291, Eqn 11 +% correctedDelAng = delAng - 1/12*cross(prevDelAng , delAng) - transpose(Tbn_prev)*delAngEarth_NED; +correctedDelAng = delAng - transpose(Tbn_prev)*delAngEarth_NED; + +% Save current measurements +prevDelAng = delAng; +prevDelVel = delVel; + +% Convert the rotation vector to its equivalent quaternion +deltaQuat = RotToQuat(correctedDelAng); + +% Update the quaternions by rotating from the previous attitude through +% the delta angle rotation quaternion +states(1:4) = QuatMult(states(1:4),deltaQuat); + +% Normalise the quaternions +states(1:4) = NormQuat(states(1:4)); + +% Calculate the body to nav cosine matrix +Tbn = Quat2Tbn(states(1:4)); +Tbn_prev = Tbn; + +% transform body delta velocities to delta velocities in the nav frame +delVelNav = Tbn * correctedDelVel + [0;0;gravity]*dt; + +% take a copy of the previous velocity +prevVel = states(5:7); + +% Sum delta velocities to get the velocity +states(5:7) = states(5:7) + delVelNav(1:3); + +% integrate the velocity vrctor to get the position using trapezoidal +% integration +states(8:10) = states(8:10) + 0.5 * dt * (prevVel + states(5:7)); + +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/RunFilter.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/RunFilter.m new file mode 100755 index 0000000000..6ff8f377e8 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/RunFilter.m @@ -0,0 +1,347 @@ +function output = RunFilter(param,imu_data,mag_data,baro_data,gps_data,varargin) + +% compulsory inputs + +% param : parameters defined by SetParameterDefaults.m +% imu_data : IMU delta angle and velocity data in body frame +% mag_data : corrected magnetometer field measurements in body frame +% baro_data : barometric height measurements +% gps_data : GPS NED pos vel measurements in local earth frame + +% optional inputs + +% rng _data : measurements for a Z body axis aligned range finder +% flow_data : XY axis optical flow angular rate measurements in body frame +% viso_data : ZED camera visula odometry measurements + +nVarargs = length(varargin); +if nVarargs >= 2 + flowDataPresent = ~isempty(varargin{1}) && ~isempty(varargin{2}); + rng_data = varargin{1}; + flow_data = varargin{2}; + if flowDataPresent + fprintf('Using optical Flow Data\n',nVarargs); + end +else + flowDataPresent = 0; +end + +if nVarargs >= 3 + visoDataPresent = ~isempty(varargin{3}); + viso_data = varargin{3}; + if visoDataPresent + fprintf('Using ZED camera odometry data\n',nVarargs); + end +else + visoDataPresent = 0; +end + + +%% Set initial conditions + +% constants +deg2rad = pi/180; +gravity = 9.80665; % initial value of gravity - will be updated when WGS-84 position is known + +% initialise the state vector +[states, imu_start_index] = InitStates(param,imu_data,gps_data,mag_data,baro_data); + +dt_imu_avg = 0.5 * (median(imu_data.gyro_dt) + median(imu_data.accel_dt)); +indexStop = length(imu_data.time_us) - imu_start_index; +indexStart = 1; + +% create static structs for output data +output = struct('time_lapsed',[]',... + 'euler_angles',[],... + 'velocity_NED',[],... + 'position_NED',[],... + 'gyro_bias',[],... + 'accel_bias',[],... + 'mag_NED',[],... + 'mag_XYZ',[],... + 'wind_NE',[],... + 'dt',0,... + 'state_variances',[],... + 'innovations',[],... + 'magFuseMethod',[]); + +% initialise the state covariance matrix +covariance = InitCovariance(param,dt_imu_avg,1,gps_data); + +%% Main Loop + +% control flags +gps_use_started = boolean(false); +gps_use_blocked = boolean(false); +viso_use_blocked = boolean(false); +flow_use_blocked = boolean(false); + +% array access index variables +imuIndex = imu_start_index; +last_gps_index = 0; +gps_fuse_index = 0; +last_baro_index = 0; +baro_fuse_index = 0; +last_mag_index = 0; +mag_fuse_index = 0; +last_flow_index = 0; +flow_fuse_index = 0; +last_viso_index = 0; +viso_fuse_index = 0; +last_range_index = 0; + +% covariance prediction variables +delAngCov = [0;0;0]; % delta angle vector used by the covariance prediction (rad) +delVelCov = [0;0;0]; % delta velocity vector used by the covariance prediction (m/sec) +dtCov = 0; % time step used by the covariance prediction (sec) +dtCovInt = 0; % accumulated time step of covariance predictions (sec) +covIndex = 0; % covariance prediction frame counter + +output.magFuseMethod = param.fusion.magFuseMethod; +range = 0.1; + +% variables used to control dead-reckoning timeout +last_drift_constrain_time = - param.control.velDriftTimeLim; +last_synthetic_velocity_fusion_time = 0; +last_valid_range_time = - param.fusion.rngTimeout; + +for index = indexStart:indexStop + + % read IMU measurements + local_time=imu_data.time_us(imuIndex)*1e-6; + delta_angle(:,1) = imu_data.del_ang(imuIndex,:); + delta_velocity(:,1) = imu_data.del_vel(imuIndex,:); + dt_imu = 0.5 * (imu_data.accel_dt(imuIndex) + imu_data.gyro_dt(imuIndex)); + imuIndex = imuIndex+1; + + % predict states + [states, delAngCorrected, delVelCorrected] = PredictStates(states,delta_angle,delta_velocity,imu_data.accel_dt(imuIndex),gravity,gps_data.refLLH(1,1)*deg2rad); + + % constrain states + [states] = ConstrainStates(states,dt_imu_avg); + + dtCov = dtCov + dt_imu; + delAngCov = delAngCov + delAngCorrected; + delVelCov = delVelCov + delVelCorrected; + if (dtCov > 0.01) + % predict covariance + covariance = PredictCovariance(delAngCov,delVelCov,states,covariance,dtCov,param); + delAngCov = [0;0;0]; + delVelCov = [0;0;0]; + dtCovInt = dtCovInt + dtCov; + dtCov = 0; + covIndex = covIndex + 1; + + % output state data + output.time_lapsed(covIndex) = local_time; + output.euler_angles(covIndex,:) = QuatToEul(states(1:4)')'; + output.velocity_NED(covIndex,:) = states(5:7)'; + output.position_NED(covIndex,:) = states(8:10)'; + output.gyro_bias(covIndex,:) = states(11:13)'; + output.accel_bias(covIndex,:) = states(14:16)'; + output.mag_NED(covIndex,:) = states(17:19); + output.mag_XYZ(covIndex,:) = states(20:22); + output.wind_NE(covIndex,:) = states(23:24); + + % output covariance data + for i=1:24 + output.state_variances(covIndex,i) = covariance(i,i); + end + + % output equivalent euler angle variances + error_transfer_matrix = quat_to_euler_error_transfer_matrix(states(1),states(2),states(3),states(4)); + euler_covariance_matrix = error_transfer_matrix * covariance(1:4,1:4) * transpose(error_transfer_matrix); + for i=1:3 + output.euler_variances(covIndex,i) = euler_covariance_matrix(i,i); + end + + % Get most recent GPS data that had fallen behind the fusion time horizon + latest_gps_index = find((gps_data.time_us - 1e6 * param.fusion.gpsTimeDelay) < imu_data.time_us(imuIndex), 1, 'last' ); + + if ~isempty(latest_gps_index) + % Check if GPS use is being blocked by the user + if ((local_time < param.control.gpsOnTime) && (local_time > param.control.gpsOffTime)) + gps_use_started = false; + gps_use_blocked = true; + else + gps_use_blocked = false; + end + + % If we haven't started using GPS, check that the quality is sufficient before aligning the position and velocity states to GPS + if (~gps_use_started && ~gps_use_blocked) + if ((gps_data.spd_error(latest_gps_index) < param.control.gpsSpdErrLim) && (gps_data.pos_error(latest_gps_index) < param.control.gpsPosErrLim)) + states(5:7) = gps_data.vel_ned(latest_gps_index,:); + states(8:9) = gps_data.pos_ned(latest_gps_index,1:2); + gps_use_started = true; + last_drift_constrain_time = local_time; + end + end + + % Fuse GPS data when available if GPS use has started + if (gps_use_started && ~gps_use_blocked && (latest_gps_index > last_gps_index)) + last_gps_index = latest_gps_index; + gps_fuse_index = gps_fuse_index + 1; + last_drift_constrain_time = local_time; + + % fuse NED GPS velocity + [states,covariance,velInnov,velInnovVar] = FuseVelocity(states,covariance,gps_data.vel_ned(latest_gps_index,:),param.fusion.gpsVelGate,gps_data.spd_error(latest_gps_index)); + + % data logging + output.innovations.vel_time_lapsed(gps_fuse_index) = local_time; + output.innovations.vel_innov(gps_fuse_index,:) = velInnov'; + output.innovations.vel_innov_var(gps_fuse_index,:) = velInnovVar'; + + % fuse NE GPS position + [states,covariance,posInnov,posInnovVar] = FusePosition(states,covariance,gps_data.pos_ned(latest_gps_index,:),param.fusion.gpsPosGate,gps_data.pos_error(latest_gps_index)); + + % data logging + output.innovations.pos_time_lapsed(gps_fuse_index) = local_time; + output.innovations.posInnov(gps_fuse_index,:) = posInnov'; + output.innovations.posInnovVar(gps_fuse_index,:) = posInnovVar'; + else + % Check if drift is being corrected by some form of aiding and if not, fuse in a zero position measurement at 5Hz to prevent states diverging + if ((local_time - last_drift_constrain_time) > param.control.velDriftTimeLim) + if ((local_time - last_synthetic_velocity_fusion_time) > 0.2) + [states,covariance,~,~] = FusePosition(states,covariance,zeros(1,2),100.0,param.control.gpsPosErrLim); + last_synthetic_velocity_fusion_time = local_time; + end + end + end + end + + % Fuse new Baro data that has fallen beind the fusion time horizon + latest_baro_index = find((baro_data.time_us - 1e6 * param.fusion.baroTimeDelay) < imu_data.time_us(imuIndex), 1, 'last' ); + if (latest_baro_index > last_baro_index) + last_baro_index = latest_baro_index; + baro_fuse_index = baro_fuse_index + 1; + + % fuse baro height + [states,covariance,hgtInnov,hgtInnovVar] = FuseBaroHeight(states,covariance,baro_data.height(latest_baro_index),param.fusion.baroHgtGate,param.fusion.baroHgtNoise); + + % data logging + output.innovations.hgt_time_lapsed(baro_fuse_index) = local_time; + output.innovations.hgtInnov(baro_fuse_index) = hgtInnov; + output.innovations.hgtInnovVar(baro_fuse_index) = hgtInnovVar; + end + + % Fuse new mag data that has fallen behind the fusion time horizon + latest_mag_index = find((mag_data.time_us - 1e6 * param.fusion.magTimeDelay) < imu_data.time_us(imuIndex), 1, 'last' ); + if (latest_mag_index > last_mag_index) + last_mag_index = latest_mag_index; + mag_fuse_index = mag_fuse_index + 1; + + % output magnetic field length to help with diagnostics + output.innovations.magLength(mag_fuse_index) = sqrt(dot(mag_data.field_ga(latest_mag_index,:),mag_data.field_ga(latest_mag_index,:))); + + % fuse magnetometer data + if (param.fusion.magFuseMethod == 0 || param.fusion.magFuseMethod == 1) + [states,covariance,magInnov,magInnovVar] = FuseMagnetometer(states,covariance,mag_data.field_ga(latest_mag_index,:),param.fusion.magFieldGate, param.fusion.magFieldError^2); + + % data logging + output.innovations.mag_time_lapsed(mag_fuse_index) = local_time; + output.innovations.magInnov(mag_fuse_index,:) = magInnov; + output.innovations.magInnovVar(mag_fuse_index,:) = magInnovVar; + + if (param.fusion.magFuseMethod == 1) + % fuse in the local declination value + [states, covariance] = FuseMagDeclination(states, covariance, param.fusion.magDeclDeg*deg2rad); + + end + + elseif (param.fusion.magFuseMethod == 2) + % fuse magnetometer data as a single magnetic heading measurement + [states, covariance, hdgInnov, hdgInnovVar] = FuseMagHeading(states, covariance, mag_data.field_ga(latest_mag_index,:), param.fusion.magDeclDeg*deg2rad, param.fusion.magHdgGate, param.fusion.magHdgError^2); + + % log data + output.innovations.mag_time_lapsed(mag_fuse_index) = local_time; + output.innovations.hdgInnov(mag_fuse_index) = hdgInnov; + output.innovations.hdgInnovVar(mag_fuse_index) = hdgInnovVar; + + end + + end + + % Check if optical flow use is being blocked by the user + if ((local_time < param.control.flowOnTime) && (local_time > param.control.flowOffTime)) + flow_use_blocked = true; + else + flow_use_blocked = false; + end + + % Attempt to use optical flow and range finder data if available and not blocked + if (flowDataPresent && ~flow_use_blocked) + + % Get latest range finder data and gate to remove dropouts + last_range_index = find((rng_data.time_us - 1e6 * param.fusion.rangeTimeDelay) < imu_data.time_us(imuIndex), 1, 'last' ); + if (rng_data.dist(last_range_index) < param.fusion.rngValidMax) + range = max(rng_data.dist(last_range_index) , param.fusion.rngValidMin); + last_valid_range_time = local_time; + end + + % Fuse optical flow data that has fallen behind the fusion time horizon if we have a valid range measurement + latest_flow_index = find((flow_data.time_us - 1e6 * param.fusion.flowTimeDelay) < imu_data.time_us(imuIndex), 1, 'last' ); + + if (~isempty(latest_flow_index) && (latest_flow_index > last_flow_index) && ((local_time - last_valid_range_time) < param.fusion.rngTimeout)) + last_flow_index = latest_flow_index; + flow_fuse_index = flow_fuse_index + 1; + last_drift_constrain_time = local_time; + + % fuse flow data + flowRate = [flow_data.flowX(latest_flow_index);flow_data.flowY(latest_flow_index)]; + bodyRate = [flow_data.bodyX(latest_flow_index);flow_data.bodyY(latest_flow_index)]; + [states,covariance,flowInnov,flowInnovVar] = FuseOpticalFlow(states, covariance, flowRate, bodyRate, range, param.fusion.flowRateError^2, param.fusion.flowGate); + + % data logging + output.innovations.flow_time_lapsed(flow_fuse_index) = local_time; + output.innovations.flowInnov(flow_fuse_index,:) = flowInnov; + output.innovations.flowInnovVar(flow_fuse_index,:) = flowInnovVar; + + end + + end + + % Check if optical flow use is being blocked by the user + if ((local_time < param.control.visoOnTime) && (local_time > param.control.visoOffTime)) + viso_use_blocked = true; + else + viso_use_blocked = false; + end + + % attempt to use ZED camera visual odmetry data if available and not blocked + if (visoDataPresent && ~viso_use_blocked) + + % Fuse ZED camera body frame odmometry data that has fallen behind the fusion time horizon + latest_viso_index = find((viso_data.time_us - 1e6 * param.fusion.bodyVelTimeDelay) < imu_data.time_us(imuIndex), 1, 'last' ); + if (latest_viso_index > last_viso_index) + last_viso_index = latest_viso_index; + viso_fuse_index = viso_fuse_index + 1; + last_drift_constrain_time = local_time; + + % convert delta position measurements to velocity + relVelBodyMea = [viso_data.dPosX(latest_viso_index);viso_data.dPosY(latest_viso_index);viso_data.dPosZ(latest_viso_index)]./viso_data.dt(latest_viso_index); + + % convert quality metric to equivalent observation error + % (this is a guess) + quality = viso_data.qual(latest_viso_index); + bodyVelError = param.fusion.bodyVelErrorMin * quality + param.fusion.bodyVelErrorMax * (1 - quality); + + % fuse measurements + [states,covariance,bodyVelInnov,bodyVelInnovVar] = FuseBodyVel(states, covariance, relVelBodyMea, bodyVelError^2, param.fusion.bodyVelGate); + + % data logging + output.innovations.bodyVel_time_lapsed(viso_fuse_index) = local_time; + output.innovations.bodyVelInnov(viso_fuse_index,:) = bodyVelInnov; + output.innovations.bodyVelInnovVar(viso_fuse_index,:) = bodyVelInnovVar; + + end + + end + + end + + % update average delta time estimate + output.dt = dtCovInt / covIndex; + +end + +end diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/SetParameterDefaults.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/SetParameterDefaults.m new file mode 100755 index 0000000000..e9d80139e4 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/SetParameterDefaults.m @@ -0,0 +1,69 @@ +%% Filter Control +param.control.waitForGps = 0; % set to 1 if the filter start should be delayed until GPS checks to pass +param.control.gpsSpdErrLim = 1.0; % GPS use will not start if reported GPS speed error is greater than this (m/s) +param.control.gpsPosErrLim = 5.0; % GPS use will not start if reported GPS position error is greater than this (m) +param.control.velDriftTimeLim = 5.0; % The maximum time without observations to constrain velocity drift before a zero velocity is fused to prevent the filter diverging (sec) +param.control.gpsOffTime = 0; % GPS aiding will be turned off at this time (sec) +param.control.gpsOnTime = 0; % GPS aiding will be turned back on at this time (sec) +param.control.flowOffTime = 0; % optical flow aiding will be turned off at this time (sec) +param.control.flowOnTime = 0; % optical flow aiding will be turned back on on at this time (sec) +param.control.visoOffTime = 0; % visual odometry aiding will be turned off at this time (sec) +param.control.visoOnTime = 0; % visual odometry aiding will be turned back on at this time (sec) +param.control.rollAlignErr = 0.0; % initial roll misalignment (rad) +param.control.pitchAlignErr = 0.0; % initial pitch misalignment (rad) +param.control.yawAlignErr = 0.0; % initial yaw misalignment (rad) + +%% GPS fusion +param.fusion.gpsTimeDelay = 0.1; % GPS measurement delay relative to IMU (sec) +param.fusion.gpsVelGate = 5.0; % Size of the IMU velocity innovation consistency check gate in SD +param.fusion.gpsPosGate = 5.0; % Size of the IMU velocity innovation consistency check gate in SD +param.fusion.gpsCheckTimeout = 10.0; % Length of time that GPS measurements will be rejected by the filter before states are reset to the GPS velocity. (sec) + +%% Baro fusion +param.fusion.baroTimeDelay = 0.05; % Baro measurement delay relative to IMU (sec) +param.fusion.baroHgtGate = 5.0; % Size of the IMU velocity innovation consistency check gate in SD +param.fusion.baroHgtNoise = 2.0; % 1SD observation noise of the baro measurements (m) + +%% Magnetometer measurement fusion +param.fusion.magTimeDelay = 0.0; % magnetometer time delay relative to IMU (sec) +param.fusion.magFuseMethod = 1; % 0: 3-Axis field fusion with free declination, 1: 3-Axis field fusion with constrained declination, 2: magnetic heading fusion. (None) +param.fusion.magFieldError = 0.05; % Magnetic field measurement 1SD error including hard and soft iron interference. Used when magFuseMethod = 0 or 1. (gauss) +param.fusion.magHdgError = 0.1745; % Magnetic heading measurement 1SD error including hard and soft iron interference. Used when magFuseMethod = 2. (rad) +param.fusion.magFieldGate = 5.0; % Size of the magnetic field innovation consistency check gate in SD +param.fusion.magHdgGate = 5.0; % Size of the magnetic heading innovation consistency check gate in SD +param.fusion.magDeclDeg = 10.5; % Magnetic declination in deg + +%% Optical flow measurement fusion +param.fusion.rangeTimeDelay = 0.05; % range fidner sensor delay relative to IMU (sec) +param.fusion.flowTimeDelay = 0.05; % Optical flow sensor time delay relative to IMU (sec) +param.fusion.flowRateError = 0.15; % Observation noise 1SD for the flow sensor (rad/sec) +param.fusion.flowGate = 5.0; % Size of the optical flow rate innovation consistency check gate in SD +param.fusion.rngValidMin = 0.05; % range measurements wil be constrained to be no less than this (m) +param.fusion.rngValidMax = 5.0; % ignore range measurements larger than this (m) +param.fusion.rngTimeout = 2.0; % optical flow measurements will not be used if more than this time since valid range finder data was received (sec) + +%% Visual odometry body frame velocity measurement fusion +param.fusion.bodyVelTimeDelay = 0.01; % Optical flow sensor time delay relative to IMU (sec) +param.fusion.bodyVelErrorMin = 0.1; % Observation noise 1SD for the odometry sensor at the highest quality value (m/sec) +param.fusion.bodyVelErrorMax = 0.9; % Observation noise 1SD for the odometry sensor at the lowest quality value (m/sec) +param.fusion.bodyVelGate = 5.0; % Size of the optical flow rate innovation consistency check gate in SD + +%% State prediction error growth +param.prediction.magPnoiseNED = 1e-3; % Earth magnetic field 1SD rate of change. (gauss/sec) +param.prediction.magPnoiseXYZ = 1e-3; % Body magnetic field 1SD rate of change. (gauss/sec) +param.prediction.dAngBiasPnoise = 0.001; % IMU gyro bias 1SD rate of change (rad/sec^2) +param.prediction.dVelBiasPnoise = 0.03; % IMU accel bias 1SD rate of change (m/sec^3) +param.prediction.angRateNoise = 0.015; % IMU gyro 1SD rate process noise (rad/sec) +param.prediction.accelNoise = 0.35; % IMU accelerometer 1SD error noise including switch on bias uncertainty. (m/sec^2) + +%% Initial Uncertainty +param.alignment.posErrNE = 10.0; % Initial 1SD position error when aligning without GPS. (m/sec) +param.alignment.velErrNE = 5.0; % Initial 1SD velocity error when aligning without GPS. (m/sec) +param.alignment.velErrD = 1.0; % Initial 1SD vertical velocity error when aligning without GPS. (m/sec) +param.alignment.delAngBiasErr = 0.05*pi/180; % Initial 1SD rate gyro bias uncertainty. (rad/sec) +param.alignment.delVelBiasErr = 0.07; % Initial 1SD accelerometer bias uncertainty. (m/sec^2) +param.alignment.quatErr = 0.1; % Initial 1SD uncertainty in quaternion. +param.alignment.magErrXYZ = 0.01; % Initial 1SD uncertainty in body frame XYZ magnetic field states. (gauss) +param.alignment.magErrNED = 0.5; % Initial 1SD uncertainty in earth frame NED magnetic field states. (gauss) +param.alignment.hgtErr = 0.5; % Initial 1SD uncertainty in height. (m) +param.alignment.windErrNE = 5.0; % Initial 1SD error in wind states. (m/sec) diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/SetParameters.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/SetParameters.m new file mode 100755 index 0000000000..e9d80139e4 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/SetParameters.m @@ -0,0 +1,69 @@ +%% Filter Control +param.control.waitForGps = 0; % set to 1 if the filter start should be delayed until GPS checks to pass +param.control.gpsSpdErrLim = 1.0; % GPS use will not start if reported GPS speed error is greater than this (m/s) +param.control.gpsPosErrLim = 5.0; % GPS use will not start if reported GPS position error is greater than this (m) +param.control.velDriftTimeLim = 5.0; % The maximum time without observations to constrain velocity drift before a zero velocity is fused to prevent the filter diverging (sec) +param.control.gpsOffTime = 0; % GPS aiding will be turned off at this time (sec) +param.control.gpsOnTime = 0; % GPS aiding will be turned back on at this time (sec) +param.control.flowOffTime = 0; % optical flow aiding will be turned off at this time (sec) +param.control.flowOnTime = 0; % optical flow aiding will be turned back on on at this time (sec) +param.control.visoOffTime = 0; % visual odometry aiding will be turned off at this time (sec) +param.control.visoOnTime = 0; % visual odometry aiding will be turned back on at this time (sec) +param.control.rollAlignErr = 0.0; % initial roll misalignment (rad) +param.control.pitchAlignErr = 0.0; % initial pitch misalignment (rad) +param.control.yawAlignErr = 0.0; % initial yaw misalignment (rad) + +%% GPS fusion +param.fusion.gpsTimeDelay = 0.1; % GPS measurement delay relative to IMU (sec) +param.fusion.gpsVelGate = 5.0; % Size of the IMU velocity innovation consistency check gate in SD +param.fusion.gpsPosGate = 5.0; % Size of the IMU velocity innovation consistency check gate in SD +param.fusion.gpsCheckTimeout = 10.0; % Length of time that GPS measurements will be rejected by the filter before states are reset to the GPS velocity. (sec) + +%% Baro fusion +param.fusion.baroTimeDelay = 0.05; % Baro measurement delay relative to IMU (sec) +param.fusion.baroHgtGate = 5.0; % Size of the IMU velocity innovation consistency check gate in SD +param.fusion.baroHgtNoise = 2.0; % 1SD observation noise of the baro measurements (m) + +%% Magnetometer measurement fusion +param.fusion.magTimeDelay = 0.0; % magnetometer time delay relative to IMU (sec) +param.fusion.magFuseMethod = 1; % 0: 3-Axis field fusion with free declination, 1: 3-Axis field fusion with constrained declination, 2: magnetic heading fusion. (None) +param.fusion.magFieldError = 0.05; % Magnetic field measurement 1SD error including hard and soft iron interference. Used when magFuseMethod = 0 or 1. (gauss) +param.fusion.magHdgError = 0.1745; % Magnetic heading measurement 1SD error including hard and soft iron interference. Used when magFuseMethod = 2. (rad) +param.fusion.magFieldGate = 5.0; % Size of the magnetic field innovation consistency check gate in SD +param.fusion.magHdgGate = 5.0; % Size of the magnetic heading innovation consistency check gate in SD +param.fusion.magDeclDeg = 10.5; % Magnetic declination in deg + +%% Optical flow measurement fusion +param.fusion.rangeTimeDelay = 0.05; % range fidner sensor delay relative to IMU (sec) +param.fusion.flowTimeDelay = 0.05; % Optical flow sensor time delay relative to IMU (sec) +param.fusion.flowRateError = 0.15; % Observation noise 1SD for the flow sensor (rad/sec) +param.fusion.flowGate = 5.0; % Size of the optical flow rate innovation consistency check gate in SD +param.fusion.rngValidMin = 0.05; % range measurements wil be constrained to be no less than this (m) +param.fusion.rngValidMax = 5.0; % ignore range measurements larger than this (m) +param.fusion.rngTimeout = 2.0; % optical flow measurements will not be used if more than this time since valid range finder data was received (sec) + +%% Visual odometry body frame velocity measurement fusion +param.fusion.bodyVelTimeDelay = 0.01; % Optical flow sensor time delay relative to IMU (sec) +param.fusion.bodyVelErrorMin = 0.1; % Observation noise 1SD for the odometry sensor at the highest quality value (m/sec) +param.fusion.bodyVelErrorMax = 0.9; % Observation noise 1SD for the odometry sensor at the lowest quality value (m/sec) +param.fusion.bodyVelGate = 5.0; % Size of the optical flow rate innovation consistency check gate in SD + +%% State prediction error growth +param.prediction.magPnoiseNED = 1e-3; % Earth magnetic field 1SD rate of change. (gauss/sec) +param.prediction.magPnoiseXYZ = 1e-3; % Body magnetic field 1SD rate of change. (gauss/sec) +param.prediction.dAngBiasPnoise = 0.001; % IMU gyro bias 1SD rate of change (rad/sec^2) +param.prediction.dVelBiasPnoise = 0.03; % IMU accel bias 1SD rate of change (m/sec^3) +param.prediction.angRateNoise = 0.015; % IMU gyro 1SD rate process noise (rad/sec) +param.prediction.accelNoise = 0.35; % IMU accelerometer 1SD error noise including switch on bias uncertainty. (m/sec^2) + +%% Initial Uncertainty +param.alignment.posErrNE = 10.0; % Initial 1SD position error when aligning without GPS. (m/sec) +param.alignment.velErrNE = 5.0; % Initial 1SD velocity error when aligning without GPS. (m/sec) +param.alignment.velErrD = 1.0; % Initial 1SD vertical velocity error when aligning without GPS. (m/sec) +param.alignment.delAngBiasErr = 0.05*pi/180; % Initial 1SD rate gyro bias uncertainty. (rad/sec) +param.alignment.delVelBiasErr = 0.07; % Initial 1SD accelerometer bias uncertainty. (m/sec^2) +param.alignment.quatErr = 0.1; % Initial 1SD uncertainty in quaternion. +param.alignment.magErrXYZ = 0.01; % Initial 1SD uncertainty in body frame XYZ magnetic field states. (gauss) +param.alignment.magErrNED = 0.5; % Initial 1SD uncertainty in earth frame NED magnetic field states. (gauss) +param.alignment.hgtErr = 0.5; % Initial 1SD uncertainty in height. (m) +param.alignment.windErrNE = 5.0; % Initial 1SD error in wind states. (m/sec) diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcF24.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcF24.m new file mode 100644 index 0000000000..b79e329291 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcF24.m @@ -0,0 +1,45 @@ +function F = calcF24(dax,dax_b,day,day_b,daz,daz_b,dt,dvx,dvx_b,dvy,dvy_b,dvz,dvz_b,q0,q1,q2,q3) +%CALCF24 +% F = CALCF24(DAX,DAX_B,DAY,DAY_B,DAZ,DAZ_B,DT,DVX,DVX_B,DVY,DVY_B,DVZ,DVZ_B,Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:12 + +t2 = dax_b.*(1.0./2.0); +t3 = daz_b.*(1.0./2.0); +t4 = day_b.*(1.0./2.0); +t8 = day.*(1.0./2.0); +t5 = t4-t8; +t6 = q3.*(1.0./2.0); +t7 = q2.*(1.0./2.0); +t9 = daz.*(1.0./2.0); +t10 = dax.*(1.0./2.0); +t11 = -t2+t10; +t12 = q1.*(1.0./2.0); +t13 = -t3+t9; +t14 = -t4+t8; +t15 = dvx-dvx_b; +t16 = dvy-dvy_b; +t17 = dvz-dvz_b; +t18 = q1.*t17.*2.0; +t19 = q1.*t16.*2.0; +t20 = q0.*t17.*2.0; +t21 = q1.*t15.*2.0; +t22 = q2.*t16.*2.0; +t23 = q3.*t17.*2.0; +t24 = t21+t22+t23; +t25 = q0.*t15.*2.0; +t26 = q2.*t17.*2.0; +t37 = q3.*t16.*2.0; +t27 = t25+t26-t37; +t28 = q0.*q3.*2.0; +t29 = q0.^2; +t30 = q1.^2; +t31 = q2.^2; +t32 = q3.^2; +t33 = q2.*t15.*2.0; +t34 = q3.*t15.*2.0; +t35 = q0.*t16.*2.0; +t36 = -t18+t34+t35; +t38 = q0.*q1.*2.0; +F = reshape([1.0,t11,t14,t13,t27,t36,t19+t20-t33,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dax.*(-1.0./2.0)+t2,1.0,t3-t9,t14,t24,-t19-t20+t33,t36,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t5,t13,1.0,t2-t10,t19+t20-q2.*t15.*2.0,t24,-t25-t26+t37,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,daz.*(-1.0./2.0)+t3,t5,t11,1.0,t18-q0.*t16.*2.0-q3.*t15.*2.0,t27,t24,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,dt,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,dt,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,dt,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t12,q0.*(-1.0./2.0),-t6,t7,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t7,t6,q0.*(-1.0./2.0),-t12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t6,-t7,t12,q0.*(-1.0./2.0),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-t29-t30+t31+t32,-t28-q1.*q2.*2.0,q0.*q2.*2.0-q1.*q3.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t28-q1.*q2.*2.0,-t29+t30-t31+t32,-t38-q2.*q3.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,q0.*q2.*-2.0-q1.*q3.*2.0,t38-q2.*q3.*2.0,-t29+t30+t31-t32,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0],[24, 24]); diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_HDG.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_HDG.m new file mode 100644 index 0000000000..dc93b29dfa --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_HDG.m @@ -0,0 +1,51 @@ +function H_MAG = calcH_HDG(magX,magY,magZ,q0,q1,q2,q3) +%CALCH_HDG +% H_MAG = CALCH_HDG(MAGX,MAGY,MAGZ,Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:14 + +t2 = q0.^2; +t3 = q1.^2; +t4 = q2.^2; +t5 = q3.^2; +t6 = q0.*q3.*2.0; +t10 = q1.*q2.*2.0; +t17 = t2-t3+t4-t5; +t18 = magY.*t17; +t19 = t6+t10; +t20 = magX.*t19; +t21 = q0.*q1.*2.0; +t22 = q2.*q3.*2.0; +t23 = t21-t22; +t24 = magZ.*t23; +t7 = t18+t20-t24; +t8 = t2+t3-t4-t5; +t9 = magX.*t8; +t11 = q0.*q2.*2.0; +t12 = q1.*q3.*2.0; +t13 = t11+t12; +t14 = magZ.*t13; +t15 = t6-t10; +t25 = magY.*t15; +t16 = t9+t14-t25; +t26 = 1.0./t16.^2; +t27 = t7.^2; +t28 = 1.0./t16; +t29 = t26.*t27; +t30 = t29+1.0; +t31 = 1.0./t30; +t32 = magX.*q1.*2.0; +t33 = magY.*q2.*2.0; +t34 = magZ.*q3.*2.0; +t35 = t32+t33+t34; +t36 = magY.*q1.*2.0; +t37 = magZ.*q0.*2.0; +t38 = t36+t37-magX.*q2.*2.0; +t39 = magX.*q0.*2.0; +t40 = magZ.*q2.*2.0; +t41 = t39+t40-magY.*q3.*2.0; +t42 = magY.*q0.*2.0; +t43 = magX.*q3.*2.0; +t44 = t42+t43-magZ.*q1.*2.0; +H_MAG = [(t28.*t44-t7.*t26.*t41)./(t27.*1.0./(t9+t14-magY.*(t6-q1.*q2.*2.0)).^2+1.0),-t31.*(t28.*t38+t7.*t26.*t35),t31.*(t28.*t35-t7.*t26.*t38),t31.*(t28.*t41+t7.*t26.*t44),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t31.*(t19.*t28-t7.*t8.*t26),t31.*(t17.*t28+t7.*t15.*t26),-t31.*(t23.*t28+t7.*t13.*t26),0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_LOSX.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_LOSX.m new file mode 100644 index 0000000000..c91e24fa28 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_LOSX.m @@ -0,0 +1,9 @@ +function H_LOSX = calcH_LOSX(q0,q1,q2,q3,range,vd,ve,vn) +%CALCH_LOSX +% H_LOSX = CALCH_LOSX(Q0,Q1,Q2,Q3,RANGE,VD,VE,VN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:14 + +t2 = 1.0./range; +H_LOSX = [t2.*(q1.*vd.*2.0+q0.*ve.*2.0-q3.*vn.*2.0),t2.*(q0.*vd.*2.0-q1.*ve.*2.0+q2.*vn.*2.0),t2.*(q3.*vd.*2.0+q2.*ve.*2.0+q1.*vn.*2.0),-t2.*(q2.*vd.*-2.0+q3.*ve.*2.0+q0.*vn.*2.0),-t2.*(q0.*q3.*2.0-q1.*q2.*2.0),t2.*(q0.^2-q1.^2+q2.^2-q3.^2),t2.*(q0.*q1.*2.0+q2.*q3.*2.0),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_LOSY.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_LOSY.m new file mode 100644 index 0000000000..50f4e9fea6 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_LOSY.m @@ -0,0 +1,9 @@ +function H_LOSY = calcH_LOSY(q0,q1,q2,q3,range,vd,ve,vn) +%CALCH_LOSY +% H_LOSY = CALCH_LOSY(Q0,Q1,Q2,Q3,RANGE,VD,VE,VN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:15 + +t2 = 1.0./range; +H_LOSY = [-t2.*(q2.*vd.*-2.0+q3.*ve.*2.0+q0.*vn.*2.0),-t2.*(q3.*vd.*2.0+q2.*ve.*2.0+q1.*vn.*2.0),t2.*(q0.*vd.*2.0-q1.*ve.*2.0+q2.*vn.*2.0),-t2.*(q1.*vd.*2.0+q0.*ve.*2.0-q3.*vn.*2.0),-t2.*(q0.^2+q1.^2-q2.^2-q3.^2),-t2.*(q0.*q3.*2.0+q1.*q2.*2.0),t2.*(q0.*q2.*2.0-q1.*q3.*2.0),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGD.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGD.m new file mode 100644 index 0000000000..6c0ef0f62c --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGD.m @@ -0,0 +1,12 @@ +function H_MAGD = calcH_MAGD(magE,magN) +%CALCH_MAGD +% H_MAGD = CALCH_MAGD(MAGE,MAGN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:13 + +t2 = magE.^2; +t3 = magN.^2; +t4 = t2+t3; +t5 = 1.0./t4; +H_MAGD = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-magE.*t5,magN.*t5,0.0,0.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGX.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGX.m new file mode 100644 index 0000000000..8f951c92f4 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGX.m @@ -0,0 +1,8 @@ +function H_MAGX = calcH_MAGX(magD,magE,magN,q0,q1,q2,q3) +%CALCH_MAGX +% H_MAGX = CALCH_MAGX(MAGD,MAGE,MAGN,Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:12 + +H_MAGX = [magD.*q2.*-2.0+magE.*q3.*2.0+magN.*q0.*2.0,magD.*q3.*2.0+magE.*q2.*2.0+magN.*q1.*2.0,magD.*q0.*-2.0+magE.*q1.*2.0-magN.*q2.*2.0,magD.*q1.*2.0+magE.*q0.*2.0-magN.*q3.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,q0.^2+q1.^2-q2.^2-q3.^2,q0.*q3.*2.0+q1.*q2.*2.0,q0.*q2.*-2.0+q1.*q3.*2.0,1.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGY.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGY.m new file mode 100644 index 0000000000..b8e7481be9 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGY.m @@ -0,0 +1,8 @@ +function H_MAGY = calcH_MAGY(magD,magE,magN,q0,q1,q2,q3) +%CALCH_MAGY +% H_MAGY = CALCH_MAGY(MAGD,MAGE,MAGN,Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:13 + +H_MAGY = [magD.*q1.*2.0+magE.*q0.*2.0-magN.*q3.*2.0,magD.*q0.*2.0-magE.*q1.*2.0+magN.*q2.*2.0,magD.*q3.*2.0+magE.*q2.*2.0+magN.*q1.*2.0,magD.*q2.*2.0-magE.*q3.*2.0-magN.*q0.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,q0.*q3.*-2.0+q1.*q2.*2.0,q0.^2-q1.^2+q2.^2-q3.^2,q0.*q1.*2.0+q2.*q3.*2.0,0.0,1.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGZ.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGZ.m new file mode 100644 index 0000000000..710a40a639 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_MAGZ.m @@ -0,0 +1,8 @@ +function H_MAGZ = calcH_MAGZ(magD,magE,magN,q0,q1,q2,q3) +%CALCH_MAGZ +% H_MAGZ = CALCH_MAGZ(MAGD,MAGE,MAGN,Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:13 + +H_MAGZ = [magD.*q0.*2.0-magE.*q1.*2.0+magN.*q2.*2.0,magD.*q1.*-2.0-magE.*q0.*2.0+magN.*q3.*2.0,magD.*q2.*-2.0+magE.*q3.*2.0+magN.*q0.*2.0,magD.*q3.*2.0+magE.*q2.*2.0+magN.*q1.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,q0.*q2.*2.0+q1.*q3.*2.0,q0.*q1.*-2.0+q2.*q3.*2.0,q0.^2-q1.^2-q2.^2+q3.^2,0.0,0.0,1.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELX.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELX.m new file mode 100644 index 0000000000..1a636cf51d --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELX.m @@ -0,0 +1,8 @@ +function H_VELX = calcH_VELX(q0,q1,q2,q3,vd,ve,vn) +%CALCH_VELX +% H_VELX = CALCH_VELX(Q0,Q1,Q2,Q3,VD,VE,VN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:15 + +H_VELX = [q2.*vd.*-2.0+q3.*ve.*2.0+q0.*vn.*2.0,q3.*vd.*2.0+q2.*ve.*2.0+q1.*vn.*2.0,q0.*vd.*-2.0+q1.*ve.*2.0-q2.*vn.*2.0,q1.*vd.*2.0+q0.*ve.*2.0-q3.*vn.*2.0,q0.^2+q1.^2-q2.^2-q3.^2,q0.*q3.*2.0+q1.*q2.*2.0,q0.*q2.*-2.0+q1.*q3.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELY.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELY.m new file mode 100644 index 0000000000..79112ce715 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELY.m @@ -0,0 +1,8 @@ +function H_VELY = calcH_VELY(q0,q1,q2,q3,vd,ve,vn) +%CALCH_VELY +% H_VELY = CALCH_VELY(Q0,Q1,Q2,Q3,VD,VE,VN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:15 + +H_VELY = [q1.*vd.*2.0+q0.*ve.*2.0-q3.*vn.*2.0,q0.*vd.*2.0-q1.*ve.*2.0+q2.*vn.*2.0,q3.*vd.*2.0+q2.*ve.*2.0+q1.*vn.*2.0,q2.*vd.*2.0-q3.*ve.*2.0-q0.*vn.*2.0,q0.*q3.*-2.0+q1.*q2.*2.0,q0.^2-q1.^2+q2.^2-q3.^2,q0.*q1.*2.0+q2.*q3.*2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELZ.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELZ.m new file mode 100644 index 0000000000..fb54af4b10 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcH_VELZ.m @@ -0,0 +1,8 @@ +function H_VELZ = calcH_VELZ(q0,q1,q2,q3,vd,ve,vn) +%CALCH_VELZ +% H_VELZ = CALCH_VELZ(Q0,Q1,Q2,Q3,VD,VE,VN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:16 + +H_VELZ = [q0.*vd.*2.0-q1.*ve.*2.0+q2.*vn.*2.0,q1.*vd.*-2.0-q0.*ve.*2.0+q3.*vn.*2.0,q2.*vd.*-2.0+q3.*ve.*2.0+q0.*vn.*2.0,q3.*vd.*2.0+q2.*ve.*2.0+q1.*vn.*2.0,q0.*q2.*2.0+q1.*q3.*2.0,q0.*q1.*-2.0+q2.*q3.*2.0,q0.^2-q1.^2-q2.^2+q3.^2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcQ24.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcQ24.m new file mode 100644 index 0000000000..87c913a50a --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/calcQ24.m @@ -0,0 +1,45 @@ +function Q = calcQ24(daxVar,dayVar,dazVar,dvxVar,dvyVar,dvzVar,q0,q1,q2,q3) +%CALCQ24 +% Q = CALCQ24(DAXVAR,DAYVAR,DAZVAR,DVXVAR,DVYVAR,DVZVAR,Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:11 + +t2 = dayVar.*q2.*q3.*(1.0./4.0); +t3 = t2-daxVar.*q0.*q1.*(1.0./4.0)-dazVar.*q2.*q3.*(1.0./4.0); +t4 = q3.^2; +t5 = q2.^2; +t6 = dazVar.*q1.*q3.*(1.0./4.0); +t7 = t6-daxVar.*q1.*q3.*(1.0./4.0)-dayVar.*q0.*q2.*(1.0./4.0); +t8 = daxVar.*q0.*q3.*(1.0./4.0); +t9 = t8-dayVar.*q0.*q3.*(1.0./4.0)-dazVar.*q1.*q2.*(1.0./4.0); +t10 = q0.^2; +t11 = q1.^2; +t12 = daxVar.*q1.*q2.*(1.0./4.0); +t13 = t12-dayVar.*q1.*q2.*(1.0./4.0)-dazVar.*q0.*q3.*(1.0./4.0); +t14 = dazVar.*q0.*q2.*(1.0./4.0); +t15 = t14-daxVar.*q0.*q2.*(1.0./4.0)-dayVar.*q1.*q3.*(1.0./4.0); +t16 = dayVar.*q0.*q1.*(1.0./4.0); +t17 = t16-daxVar.*q2.*q3.*(1.0./4.0)-dazVar.*q0.*q1.*(1.0./4.0); +t21 = q0.*q3.*2.0; +t22 = q1.*q2.*2.0; +t18 = t21-t22; +t23 = q0.*q2.*2.0; +t24 = q1.*q3.*2.0; +t19 = t23+t24; +t20 = t4+t5-t10-t11; +t25 = q0.*q1.*2.0; +t26 = t21+t22; +t32 = t4-t5-t10+t11; +t27 = dvyVar.*t18.*t32; +t28 = q2.*q3.*2.0; +t29 = t25-t28; +t30 = t4-t5-t10+t11; +t31 = t25+t28; +t33 = t4-t5+t10-t11; +t34 = t23-t24; +t35 = dvxVar.*t34.*(t4+t5-t10-t11); +t36 = dvzVar.*t19.*t33; +t37 = t35+t36-dvyVar.*t18.*t31; +t38 = -dvxVar.*t26.*t34-dvyVar.*t31.*t32-dvzVar.*t29.*t33; +Q = reshape([daxVar.*t11.*(1.0./4.0)+dayVar.*t5.*(1.0./4.0)+dazVar.*t4.*(1.0./4.0),t3,t7,t13,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t3,daxVar.*t10.*(1.0./4.0)+dayVar.*t4.*(1.0./4.0)+dazVar.*t5.*(1.0./4.0),t9,t15,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t7,t9,daxVar.*t4.*(1.0./4.0)+dayVar.*t10.*(1.0./4.0)+dazVar.*t11.*(1.0./4.0),t17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t13,t15,t17,daxVar.*t5.*(1.0./4.0)+dayVar.*t11.*(1.0./4.0)+dazVar.*t10.*(1.0./4.0),0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dvxVar.*t20.^2+dvyVar.*t18.^2+dvzVar.*t19.^2,t27-dvxVar.*t20.*t26-dvzVar.*t19.*t29,t37,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t27-dvzVar.*t19.*(t25-q2.*q3.*2.0)-dvxVar.*t20.*t26,dvxVar.*t26.^2+dvyVar.*t30.^2+dvzVar.*t29.^2,t38,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,t37,t38,dvxVar.*t34.^2+dvyVar.*t31.^2+dvzVar.*t33.^2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],[24, 24]); diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/find_best_gps_delay.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/find_best_gps_delay.m new file mode 100755 index 0000000000..a320153591 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/find_best_gps_delay.m @@ -0,0 +1,50 @@ +clear all; +close all; + +% add required paths +addpath('../Common'); + +% load test data +load '../TestData/PX4/baro_data.mat'; +load '../TestData/PX4/gps_data.mat'; +load '../TestData/PX4/imu_data.mat'; +load '../TestData/PX4/mag_data.mat'; + +% set parameters to default values +run('SetParameterDefaults.m'); + +% Loop through range of GPS time delays and capture the RMS velocity +% innovation and corresponding delay each time +for index = 1:1:21 + index + param.fusion.gpsTimeDelay = 0.01*(index - 1); + output = RunFilter(param,imu_data,mag_data,baro_data,gps_data); + gps_delay(index) = param.fusion.gpsTimeDelay; + gps_vel_innov_rms(index) = sqrt(sum(output.innovations.vel_innov(:,1).^2) + sum(output.innovations.vel_innov(:,2).^2))/sqrt(length(output.innovations.vel_innov)); +end + +% plot the innvation level vs time delay +figure; +plot(gps_delay,gps_vel_innov_rms); +grid on; +xlabel('GPS delay (sec)'); +ylabel('RMS velocity innovation (m/s)'); + +% find the smallest value and re-run the replay +param.fusion.gpsTimeDelay = gps_delay(gps_delay == min(gps_delay)) + +% run the filter replay +output = RunFilter(param,imu_data,mag_data,baro_data,gps_data); + +% generate and save output plots +runIdentifier = ' : PX4 data replay '; +folder = strcat('../OutputPlots/PX4'); +PlotData(output,folder,runIdentifier); + +% save output data +folder = '../OutputData/PX4'; +fileName = '../OutputData/PX4/ekf_replay_output.mat'; +if ~exist(folder,'dir') + mkdir(folder); +end +save(fileName,'output'); \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m new file mode 100644 index 0000000000..ffcb87d8dd --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m @@ -0,0 +1,38 @@ +function error_transfer_matrix = quat_to_euler_error_transfer_matrix(q0,q1,q2,q3) +%QUAT_TO_EULER_ERROR_TRANSFER_MATRIX +% ERROR_TRANSFER_MATRIX = QUAT_TO_EULER_ERROR_TRANSFER_MATRIX(Q0,Q1,Q2,Q3) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 13-Jul-2017 08:41:41 + +t8 = q0.*q1.*2.0; +t9 = q2.*q3.*2.0; +t2 = t8+t9; +t4 = q0.^2; +t5 = q1.^2; +t6 = q2.^2; +t7 = q3.^2; +t3 = t4-t5-t6+t7; +t10 = t3.^2; +t11 = t2.^2; +t12 = t10+t11; +t13 = 1.0./t12; +t14 = 1.0./t3; +t15 = 1.0./t3.^2; +t17 = q0.*q2.*2.0; +t18 = q1.*q3.*2.0; +t16 = t17-t18; +t19 = t16.^2; +t20 = -t19+1.0; +t21 = 1.0./sqrt(t20); +t24 = q0.*q3.*2.0; +t25 = q1.*q2.*2.0; +t22 = t24+t25; +t23 = t4+t5-t6-t7; +t26 = t23.^2; +t27 = t22.^2; +t28 = t26+t27; +t29 = 1.0./t28; +t30 = 1.0./t23; +t31 = 1.0./t23.^2; +error_transfer_matrix = reshape([t10.*t13.*(q1.*t14.*2.0-q0.*t2.*t15.*2.0),q2.*t21.*2.0,t26.*t29.*(q3.*t30.*2.0-q0.*t22.*t31.*2.0),t10.*t13.*(q0.*t14.*2.0+q1.*t2.*t15.*2.0),q3.*t21.*-2.0,t26.*t29.*(q2.*t30.*2.0-q1.*t22.*t31.*2.0),t10.*t13.*(q3.*t14.*2.0+q2.*t2.*t15.*2.0),q0.*t21.*2.0,t26.*t29.*(q1.*t30.*2.0+q2.*t22.*t31.*2.0),t10.*t13.*(q2.*t14.*2.0-q3.*t2.*t15.*2.0),q1.*t21.*-2.0,t26.*t29.*(q0.*t30.*2.0+q3.*t22.*t31.*2.0)],[3, 4]); diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_apm_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_apm_data.m new file mode 100755 index 0000000000..af76d37d62 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_apm_data.m @@ -0,0 +1,46 @@ +clear all; +close all; + +% add required paths +addpath('../Common'); + +% load compulsory data +load '../TestData/APM/baro_data.mat'; +load '../TestData/APM/gps_data.mat'; +load '../TestData/APM/imu_data.mat'; +load '../TestData/APM/mag_data.mat'; + +% load optional data required for optical flow replay +if exist('../TestData/APM/rng_data.mat','file') && exist('../TestData/APM/flow_data.mat','file') + load '../TestData/APM/rng_data.mat'; + load '../TestData/APM/flow_data.mat'; +else + rng_data = []; + flow_data = []; +end + +% load optional data required for ZED camera replay +if exist('../TestData/APM/viso_data.mat','file') + load '../TestData/APM/viso_data.mat'; +else + viso_data = []; +end + +% load default parameters +run('SetParameters.m'); + +% run the filter replay +output = RunFilter(param,imu_data,mag_data,baro_data,gps_data,rng_data,flow_data,viso_data); + +% generate and save output plots +runIdentifier = ' : APM data replay '; +folder = strcat('../OutputPlots/APM'); +PlotData(output,folder,runIdentifier); + +% save output data +folder = '../OutputData/APM'; +fileName = '../OutputData/APM/ekf_replay_output.mat'; +if ~exist(folder,'dir') + mkdir(folder); +end +save(fileName,'output'); \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_px4_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_px4_data.m new file mode 100755 index 0000000000..ce5a15c31c --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_px4_data.m @@ -0,0 +1,30 @@ +clear all; +close all; + +% add required paths +addpath('../Common'); + +% load test data +load '../TestData/PX4/baro_data.mat'; +load '../TestData/PX4/gps_data.mat'; +load '../TestData/PX4/imu_data.mat'; +load '../TestData/PX4/mag_data.mat'; + +% set parameters to default values +run('SetParameters.m'); + +% run the filter replay +output = RunFilter(param,imu_data,mag_data,baro_data,gps_data); + +% generate and save output plots +runIdentifier = ' : PX4 data replay '; +folder = strcat('../OutputPlots/PX4'); +PlotData(output,folder,runIdentifier); + +% save output data +folder = '../OutputData/PX4'; +fileName = '../OutputData/PX4/ekf_replay_output.mat'; +if ~exist(folder,'dir') + mkdir(folder); +end +save(fileName,'output'); \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_px4_optflow_data.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_px4_optflow_data.m new file mode 100644 index 0000000000..a054210128 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/replay_px4_optflow_data.m @@ -0,0 +1,32 @@ +clear all; +close all; + +% add required paths +addpath('../Common'); + +% load test data +load '../TestData/PX4_optical_flow/baro_data.mat'; +load '../TestData/PX4_optical_flow/gps_data.mat'; +load '../TestData/PX4_optical_flow/imu_data.mat'; +load '../TestData/PX4_optical_flow/mag_data.mat'; +load '../TestData/PX4_optical_flow/rng_data.mat'; +load '../TestData/PX4_optical_flow/flow_data.mat'; + +% set parameters to default values +run('SetParameterDefaults.m'); + +% run the filter replay +output = RunFilter(param,imu_data,mag_data,baro_data,gps_data,rng_data,flow_data); + +% generate and save output plots +runIdentifier = ' : PX4 optical flow replay '; +folder = strcat('../OutputPlots/PX4_optical_flow'); +PlotData(output,folder,runIdentifier); + +% save output data +folder = '../OutputData/PX4_optical_flow'; +fileName = '../OutputData/PX4_optical_flow/ekf_replay_output.mat'; +if ~exist(folder,'dir') + mkdir(folder); +end +save(fileName,'output'); \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/Filter/transfer_matrix.m b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/transfer_matrix.m new file mode 100644 index 0000000000..355102f4e9 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/Filter/transfer_matrix.m @@ -0,0 +1,13 @@ +function T_MAG = transfer_matrix(magE,magN) +%TRANSFER_MATRIX +% T_MAG = TRANSFER_MATRIX(MAGE,MAGN) + +% This function was generated by the Symbolic Math Toolbox version 6.2. +% 29-May-2017 00:16:16 + +t2 = 1.0./magN.^2; +t3 = magE.^2; +t4 = t2.*t3; +t5 = t4+1.0; +t6 = 1.0./t5; +T_MAG = [-magE.*t2.*t6,t6./magN]; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/allan.m b/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/allan.m new file mode 100644 index 0000000000..c8c84da801 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/allan.m @@ -0,0 +1,19 @@ +function [T,sigma] = allan(omega,fs,pts) +[N,M] = size(omega); % figure out how big the output data set is +n = 2.^(0:floor(log2(N/2)))'; % determine largest bin size +maxN = n(end); +endLogInc = log10(maxN); +m = unique(ceil(logspace(0,endLogInc,pts)))'; % create log spaced vector average factor +t0 = 1/fs; +T = m*t0; +theta = cumsum(omega)/fs; +sigma2 = zeros(length(T),M); +for i=1:length(m) + % t0 = sample interval +% T = length of time for each cluster +% integration of samples over time to obtain output angle ? + % array of dimensions (cluster periods) X (#variables) + % loop over the various cluster sizes + % implements the summation in the AV equation +sigma2 = sigma2./repmat((2*T.^2.*(N-2*m)),1,M); +sigma = sqrt(sigma2) \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m b/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m new file mode 100644 index 0000000000..eae994aacf --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m @@ -0,0 +1,189 @@ +% test ellipsoid sphere fitting algorithms +% +% http://www.st.com/content/ccc/resource/technical/document/design_tip/group0/a2/98/f5/d4/9c/48/4a/d1/DM00286302/files/DM00286302.pdf/jcr:content/translations/en.DM00286302.pdf +% + +%% load log data +clear all; +close all; + +% uncomment these lines if using legacy .px4log format +%load sysvector.mat; +%mag_meas = [sysvector.IMU_MagX';sysvector.IMU_MagY';sysvector.IMU_MagZ']; + +% uncomment these lines if using data imported from ulog format +%load sysdata.mat; +%mag_meas = [magnetometer_ga0';magnetometer_ga1';magnetometer_ga2']; + +% thin data points to use data every 5 deg +delta_angle_lim = 5* pi/180; +counter = 1; + +angle = 0; +last_angle = 0; +for i = 2:length(data1.IMU.Tsec) + ang_rate = 0.5 * (sqrt(data1.IMU.GyroX(i)^2 + data1.IMU.GyroY(i)^2 + data1.IMU.GyroZ(i)^2) + ... + sqrt(data1.IMU.GyroX(i-1)^2 + data1.IMU.GyroY(i-1)^2 + data1.IMU.GyroZ(i-1)^2)); + dt = data1.IMU.Tsec(i) - data1.IMU.Tsec(i-1); + angle = angle + ang_rate * dt; + if ((angle - last_angle) > delta_angle_lim) + mag_meas(:,counter) = [data1.IMU.MagX(i);data1.IMU.MagY(i);data1.IMU.MagZ(i)]; + counter = counter + 1; + last_angle = angle; + end +end + +angle = 0; +last_angle = 0; +for i = 2:length(data2.IMU.Tsec) + ang_rate = 0.5 * (sqrt(data2.IMU.GyroX(i)^2 + data2.IMU.GyroY(i)^2 + data2.IMU.GyroZ(i)^2) + ... + sqrt(data2.IMU.GyroX(i-1)^2 + data2.IMU.GyroY(i-1)^2 + data2.IMU.GyroZ(i-1)^2)); + dt = data2.IMU.Tsec(i) - data2.IMU.Tsec(i-1); + angle = angle + ang_rate * dt; + if ((angle - last_angle) > delta_angle_lim) + mag_meas(:,counter) = [data2.IMU.MagX(i);data2.IMU.MagY(i);data2.IMU.MagZ(i)]; + counter = counter + 1; + last_angle = angle; + end + +end + +angle = 0; +last_angle = 0; +for i = 2:length(data3.IMU.Tsec) + ang_rate = 0.5 * (sqrt(data3.IMU.GyroX(i)^2 + data3.IMU.GyroY(i)^2 + data3.IMU.GyroZ(i)^2) + ... + sqrt(data3.IMU.GyroX(i-1)^2 + data3.IMU.GyroY(i-1)^2 + data3.IMU.GyroZ(i-1)^2)); + dt = data3.IMU.Tsec(i) - data3.IMU.Tsec(i-1); + angle = angle + ang_rate * dt; + if ((angle - last_angle) > delta_angle_lim) + mag_meas(:,counter) = [data3.IMU.MagX(i);data3.IMU.MagY(i);data3.IMU.MagZ(i)]; + counter = counter + 1; + last_angle = angle; + end + +end + + +%% fit a sphere and determine the fit quality +[offset,gain,rotation]=ellipsoid_fit(mag_meas',5); + +% correct the data +mag_corrected_5 = zeros(size(mag_meas)); +rotation_correction = inv(rotation); % we apply the inverse of the original rotation +scale_correction = 1./gain; +scale_correction = scale_correction ./ mean(scale_correction); +mag_strength = zeros(length(mag_meas),1); +for i = 1:length(mag_meas) + % subtract the offsets + mag_corrected_5(:,i) = mag_meas(:,i) - offset; + + % correct the rotation + mag_corrected_5(:,i) = rotation_correction * mag_corrected_5(:,i); + + % correct the scale factor + mag_corrected_5(:,i) = mag_corrected_5(:,i) .* scale_correction; + + % calculate the residual + mag_strength(i) = sqrt(dot(mag_corrected_5(:,i),mag_corrected_5(:,i))); + +end + +% calculate the fit residual for fit option 5 +fit_residual_5 = mag_strength - mean(mag_strength); + +%% fit a un-rotated ellipsoid and determine the fit quality +[offset,gain,rotation]=ellipsoid_fit(mag_meas',1); + +% correct the data +mag_corrected_1 = zeros(size(mag_meas)); +rotation_correction = inv(rotation); % we apply the inverse of the original rotation +scale_correction = 1./gain; +scale_correction = scale_correction ./ mean(scale_correction); +mag_strength = zeros(length(mag_meas),1); +angle_change_1 = zeros(length(mag_meas),1); +for i = 1:length(mag_meas) + % subtract the offsets + mag_corrected_1(:,i) = mag_meas(:,i) - offset; + + % correct the rotation + mag_corrected_1(:,i) = rotation_correction * mag_corrected_1(:,i); + + % correct the scale factor + mag_corrected_1(:,i) = mag_corrected_1(:,i) .* scale_correction; + + % calculate the residual + mag_strength(i) = sqrt(dot(mag_corrected_1(:,i),mag_corrected_1(:,i))); + + % calculate the angular change due to the fit + angle_change_1(i) = atan2(norm(cross(mag_corrected_1(:,i),mag_meas(:,i))),dot(mag_corrected_1(:,i),mag_meas(:,i))); + +end + +% calculate the fit residual for fit option 1 +fit_residual_1 = mag_strength - mean(mag_strength); + +%% fit a rotated ellipsoid and check the fit quality +[offset,gain,rotation]=ellipsoid_fit(mag_meas',0); + +% correct the data +mag_corrected_0 = zeros(size(mag_meas)); +rotation_correction = inv(rotation); % we apply the inverse of the original rotation +scale_correction = 1./gain; +scale_correction = scale_correction ./ mean(scale_correction); +mag_strength = zeros(length(mag_meas),1); +angle_change_0 = zeros(length(mag_meas),1); +for i = 1:length(mag_meas) + % subtract the offsets + mag_corrected_0(:,i) = mag_meas(:,i) - offset; + + % correct the rotation + mag_corrected_0(:,i) = rotation_correction * mag_corrected_0(:,i); + + % correct the scale factor + mag_corrected_0(:,i) = mag_corrected_0(:,i) .* scale_correction; + + % calculate the residual + mag_strength(i) = sqrt(dot(mag_corrected_0(:,i),mag_corrected_0(:,i))); + + % calculate the angular change due to the fit + angle_change_0(i) = atan2(norm(cross(mag_corrected_0(:,i),mag_meas(:,i))),dot(mag_corrected_0(:,i),mag_meas(:,i))); + +end + +% calculate the fit residual for fit option 0 +fit_residual_0 = mag_strength - mean(mag_strength); + +%% calculate the residual for uncorrected data +for i = 1:length(mag_meas) + mag_strength(i) = sqrt(dot(mag_meas(:,i),mag_meas(:,i))); +end +uncorrected_residual = mag_strength - mean(mag_strength); + +%% plot the fit residuals +plot(uncorrected_residual,'k+'); +hold on; +plot(fit_residual_5,'r+'); +plot(fit_residual_1,'b+'); +plot(fit_residual_0,'g+'); +hold off; +grid on; +title('mag fit comparison'); +xlabel('measurement index'); +ylabel('fit residual (Gauss)'); +legend('uncorrected','sphere','non-rotated ellipse','rotated ellipse'); + +%% plot the data points in 3D +figure; +plot3(mag_meas(1,:),mag_meas(2,:),mag_meas(3,:),' .');hold on;plot3(mag_corrected_1(1,:),mag_corrected_1(2,:),mag_corrected_1(3,:),'r.'); +hold off;grid on;axis equal; +xlabel('x (Gauss)'); +xlabel('y (Gauss)'); +xlabel('z (Gauss)'); +legend('uncorrected','unrotated ellipse'); + +%% calculate and plot the angular error +figure; +plot(angle_change_1*(180/pi),'b+'); +title('angle change after un-rotated ellipse fit'); +xlabel('measurement index'); +ylabel('angle change magnitude (deg)'); diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m b/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m new file mode 100644 index 0000000000..3269577689 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m @@ -0,0 +1,61 @@ +function [ofs,gain,rotM]=ellipsoid_fit(XYZ,varargin) + +% Fit an (non)rotated ellipsoid or sphere to a set of xyz data points + +% XYZ: N(rows) x 3(cols), matrix of N data points (x,y,z) + +% optional flag f, default to 0 (fitting of rotated ellipsoid) + +x=XYZ(:,1); y=XYZ(:,2); z=XYZ(:,3); if nargin>1, f=varargin{1}; else f=0; end; + +if f==0, D=[x.*x, y.*y, z.*z, 2*x.*y,2*x.*z,2*y.*z, 2*x,2*y,2*z]; % any axes (rotated ellipsoid) + +elseif f==1, D=[x.*x, y.*y, z.*z, 2*x,2*y,2*z]; % XYZ axes (non-rotated ellipsoid) + +elseif f==2, D=[x.*x+y.*y, z.*z, 2*x,2*y,2*z]; % and radius x=y + +elseif f==3, D=[x.*x+z.*z, y.*y, 2*x,2*y,2*z]; % and radius x=z + +elseif f==4, D=[y.*y+z.*z, x.*x, 2*x,2*y,2*z]; % and radius y=z + +elseif f==5, D=[x.*x+y.*y+z.*z, 2*x,2*y,2*z]; % and radius x=y=z (sphere) + +end; + +v = (D'*D)\(D'*ones(length(x),1)); % least square fitting + +if f==0, % rotated ellipsoid + + A = [ v(1) v(4) v(5) v(7); v(4) v(2) v(6) v(8); v(5) v(6) v(3) v(9); v(7) v(8) v(9) -1 ]; + + ofs=-A(1:3,1:3)\[v(7);v(8);v(9)]; % offset is center of ellipsoid + + Tmtx=eye(4); Tmtx(4,1:3)=ofs'; AT=Tmtx*A*Tmtx'; % ellipsoid translated to (0,0,0) + + [rotM ev]=eig(AT(1:3,1:3)/-AT(4,4)); % eigenvectors (rotation) and eigenvalues (gain) + + gain=sqrt(1./diag(ev)); % gain is radius of the ellipsoid + +else % non-rotated ellipsoid + + if f==1, v = [ v(1) v(2) v(3) 0 0 0 v(4) v(5) v(6) ]; + + elseif f==2, v = [ v(1) v(1) v(2) 0 0 0 v(3) v(4) v(5) ]; + + elseif f==3, v = [ v(1) v(2) v(1) 0 0 0 v(3) v(4) v(5) ]; + + elseif f==4, v = [ v(2) v(1) v(1) 0 0 0 v(3) v(4) v(5) ]; + + elseif f==5, v = [ v(1) v(1) v(1) 0 0 0 v(2) v(3) v(4) ]; % sphere + + end; + + ofs=-(v(1:3).\v(7:9))'; % offset is center of ellipsoid + + rotM=eye(3); % eigenvectors (rotation), identity = no rotation + + g=1+(v(7)^2/v(1)+v(8)^2/v(2)+v(9)^2/v(3)); + + gain=(sqrt(g./v(1:3)))'; % find radii of the ellipsoid (scale) + +end; diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/px4_replay_import.m b/src/lib/ecl/EKF/matlab/EKF_replay/px4_replay_import.m new file mode 100644 index 0000000000..6d6644f7cd --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/px4_replay_import.m @@ -0,0 +1,387 @@ +%% PX4 replay: import sensors CSV +% the following variables must be set beforehand! +if ~exist('sensors_file','var') + error('sensors_file missing'); +end +if ~exist('air_data_file','var') + error('air_data_file missing'); +end +if ~exist('magnetometer_file','var') + error('magnetometer_file missing'); +end +if ~exist('gps_file','var') + error('gps_file missing'); +end + +if ~exist('attitude_file','var') + disp('INFO no attitude_file set, all ground truth data will be skipped'); +end +if ~exist('localpos_file','var') + disp('INFO no localpos_file set, all ground truth data will be skipped'); +end +if ~exist('globalpos_file','var') + disp('INFO no globalpos_file set, all ground truth data will be skipped'); +end + +if ~exist('actctrl_file','var') + disp('INFO no actctrl_file set, all actuator data will be skipped'); +end +if ~exist('actout_file','var') + disp('INFO no actout_file set, all actuator data will be skipped'); +end + +%% ------ SECTION 1: IMU, Baro, Mag ------ + +%% Import IMU data from text file +opts = delimitedTextImportOptions("NumVariables", 10); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "gyro_rad0", "gyro_rad1", "gyro_rad2", "gyro_integral_dt", "accelerometer_timestamp_relative", "accelerometer_m_s20", "accelerometer_m_s21", "accelerometer_m_s22", "accelerometer_integral_dt"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(sensors_file, opts); + +% Convert to output type +timestamp = tbl.timestamp; +gyro_rad0 = tbl.gyro_rad0; +gyro_rad1 = tbl.gyro_rad1; +gyro_rad2 = tbl.gyro_rad2; +gyro_integral_dt = tbl.gyro_integral_dt; +accelerometer_timestamp_relative = tbl.accelerometer_timestamp_relative; +accelerometer_m_s20 = tbl.accelerometer_m_s20; +accelerometer_m_s21 = tbl.accelerometer_m_s21; +accelerometer_m_s22 = tbl.accelerometer_m_s22; +accelerometer_integral_dt = tbl.accelerometer_integral_dt; + +clear opts tbl + +%% Import Baro data from text file +opts = delimitedTextImportOptions("NumVariables", 5); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp_baro", "baro_alt_meter", "baro_temp_celcius", "baro_pressure_pa", "rho"]; +opts.VariableTypes = ["double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(air_data_file, opts); + +% Convert to output type +timestamp_baro = tbl.timestamp_baro; +baro_alt_meter = tbl.baro_alt_meter; +baro_temp_celcius = tbl.baro_temp_celcius; +baro_pressure_pa = tbl.baro_pressure_pa; +rho = tbl.rho; + +clear opts tbl + +%% Import Mag data from text file +opts = delimitedTextImportOptions("NumVariables", 4); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp_mag", "magnetometer_ga0", "magnetometer_ga1", "magnetometer_ga2"]; +opts.VariableTypes = ["double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(magnetometer_file, opts); + +% Convert to output type +timestamp_mag = tbl.timestamp_mag; +magnetometer_ga0 = tbl.magnetometer_ga0; +magnetometer_ga1 = tbl.magnetometer_ga1; +magnetometer_ga2 = tbl.magnetometer_ga2; + +clear opts tbl + +%% Run conversion script for IMU, Baro and Mag +cd Common/; +convert_px4_sensor_combined_csv_data; +cd ../; + + +%% ------ SECTION 2: GPS ------ + +%% Import data from text file +opts = delimitedTextImportOptions("NumVariables", 25); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "time_utc_usec", "lat", "lon", "alt", "alt_ellipsoid", "s_variance_m_s", "c_variance_rad", "eph", "epv", "hdop", "vdop", "noise_per_ms", "jamming_indicator", "vel_m_s", "vel_n_m_s", "vel_e_m_s", "vel_d_m_s", "cog_rad", "timestamp_time_relative", "heading", "heading_offset", "fix_type", "vel_ned_valid", "satellites_used"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(gps_file, opts); + +% Convert to output type +timestamp = tbl.timestamp; +time_utc_usec = tbl.time_utc_usec; +lat = tbl.lat; +lon = tbl.lon; +alt = tbl.alt; +alt_ellipsoid = tbl.alt_ellipsoid; +s_variance_m_s = tbl.s_variance_m_s; +c_variance_rad = tbl.c_variance_rad; +eph = tbl.eph; +epv = tbl.epv; +hdop = tbl.hdop; +vdop = tbl.vdop; +noise_per_ms = tbl.noise_per_ms; +jamming_indicator = tbl.jamming_indicator; +vel_m_s = tbl.vel_m_s; +vel_n_m_s = tbl.vel_n_m_s; +vel_e_m_s = tbl.vel_e_m_s; +vel_d_m_s = tbl.vel_d_m_s; +cog_rad = tbl.cog_rad; +timestamp_time_relative = tbl.timestamp_time_relative; +heading = tbl.heading; +heading_offset = tbl.heading_offset; +fix_type = tbl.fix_type; +vel_ned_valid = tbl.vel_ned_valid; +satellites_used = tbl.satellites_used; + +clear opts tbl + + +%% Run conversion script for GPS +cd Common/; +convert_px4_vehicle_gps_position_csv; +cd ../; + + +%% ------ SECTION 3: Ground Truth Data (STIL only, optional) ------ + +if exist('attitude_file','var') && exist('localpos_file','var') && exist('globalpos_file','var') + +%- Import Attitude data from text file +opts = delimitedTextImportOptions("NumVariables", 13); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "rollspeed", "pitchspeed", "yawspeed", "q0", "q1", "q2", "q3", "delta_q_reset0", "delta_q_reset1", "delta_q_reset2", "delta_q_reset3", "quat_reset_counter"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(attitude_file, opts); + +% Convert to output type +timestamp_att = tbl.timestamp; +rollspeed = tbl.rollspeed; +pitchspeed = tbl.pitchspeed; +yawspeed = tbl.yawspeed; +q0 = tbl.q0; +q1 = tbl.q1; +q2 = tbl.q2; +q3 = tbl.q3; +% delta_q_reset0 = tbl.delta_q_reset0; +% delta_q_reset1 = tbl.delta_q_reset1; +% delta_q_reset2 = tbl.delta_q_reset2; +% delta_q_reset3 = tbl.delta_q_reset3; +% quat_reset_counter = tbl.quat_reset_counter; + +clear opts tbl + + +%- Import Global Position data from text file +opts = delimitedTextImportOptions("NumVariables", 17); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "lat", "lon", "alt", "alt_ellipsoid", "delta_alt", "vel_n", "vel_e", "vel_d", "yaw", "eph", "epv", "terrain_alt", "lat_lon_reset_counter", "alt_reset_counter", "terrain_alt_valid", "dead_reckoning"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(globalpos_file, opts); + +% Convert to output type +timestamp_gpos = tbl.timestamp; +gpos_lat = tbl.lat; +gpos_lon = tbl.lon; +gpos_alt = tbl.alt; +% gpos_alt_ellipsoid = tbl.alt_ellipsoid; +% gpos_delta_alt = tbl.delta_alt; +gpos_vel_n = tbl.vel_n; +gpos_vel_e = tbl.vel_e; +gpos_vel_d = tbl.vel_d; +% gpos_yaw = tbl.yaw; +% gpos_eph = tbl.eph; +% gpos_epv = tbl.epv; +% gpos_terrain_alt = tbl.terrain_alt; +% gpos_lat_lon_reset_counter = tbl.lat_lon_reset_counter; +% gpos_alt_reset_counter = tbl.alt_reset_counter; +% gpos_terrain_alt_valid = tbl.terrain_alt_valid; +% gpos_dead_reckoning = tbl.dead_reckoning; + +% Clear temporary variables +clear opts tbl + + +%- Import Local Position data from text file +opts = delimitedTextImportOptions("NumVariables", 43); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "ref_timestamp", "ref_lat", "ref_lon", "x", "y", "z", "delta_xy0", "delta_xy1", "delta_z", "vx", "vy", "vz", "z_deriv", "delta_vxy0", "delta_vxy1", "delta_vz", "ax", "ay", "az", "yaw", "ref_alt", "dist_bottom", "dist_bottom_rate", "eph", "epv", "evh", "evv", "vxy_max", "vz_max", "hagl_min", "hagl_max", "xy_valid", "z_valid", "v_xy_valid", "v_z_valid", "xy_reset_counter", "z_reset_counter", "vxy_reset_counter", "vz_reset_counter", "xy_global", "z_global", "dist_bottom_valid"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(localpos_file, opts); + +% Convert to output type +timestamp_lpos = tbl.timestamp; +% lpos_ref_timestamp = tbl.ref_timestamp; +lpos_ref_lat = tbl.ref_lat; +lpos_ref_lon = tbl.ref_lon; +lpos_x = tbl.x; +lpos_y = tbl.y; +lpos_z = tbl.z; +% lpos_delta_xy0 = tbl.delta_xy0; +% lpos_delta_xy1 = tbl.delta_xy1; +% lpos_delta_z = tbl.delta_z; +lpos_vx = tbl.vx; +lpos_vy = tbl.vy; +lpos_vz = tbl.vz; +% lpos_z_deriv = tbl.z_deriv; +% lpos_delta_vxy0 = tbl.delta_vxy0; +% lpos_delta_vxy1 = tbl.delta_vxy1; +% lpos_delta_vz = tbl.delta_vz; +% lpos_ax = tbl.ax; +% lpos_ay = tbl.ay; +% lpos_az = tbl.az; +lpos_yaw = tbl.yaw; +% ref_alt = tbl.ref_alt; +% dist_bottom = tbl.dist_bottom; +% dist_bottom_rate = tbl.dist_bottom_rate; +% eph = tbl.eph; +% epv = tbl.epv; +% evh = tbl.evh; +% evv = tbl.evv; +% vxy_max = tbl.vxy_max; +% vz_max = tbl.vz_max; +% hagl_min = tbl.hagl_min; +% hagl_max = tbl.hagl_max; +% xy_valid = tbl.xy_valid; +% z_valid = tbl.z_valid; +% v_xy_valid = tbl.v_xy_valid; +% v_z_valid = tbl.v_z_valid; +% xy_reset_counter = tbl.xy_reset_counter; +% z_reset_counter = tbl.z_reset_counter; +% vxy_reset_counter = tbl.vxy_reset_counter; +% vz_reset_counter = tbl.vz_reset_counter; +% xy_global = tbl.xy_global; +% z_global = tbl.z_global; +% dist_bottom_valid = tbl.dist_bottom_valid; + +% Clear temporary variables +clear opts tbl + + +%- Run conversion script for GPS +cd Common/; +convert_px4_groundtruth_csv_data; +cd ../; + +end + + +%% ------ SECTION 4: Actuator Controls (optional) ------ + +if exist('actctrl_file','var') && exist('actout_file','var') + +%- Import Actuator Control data from text file +opts = delimitedTextImportOptions("NumVariables", 10); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "timestamp_sample", "control0", "control1", "control2", "control3", "control4", "control5", "control6", "control7"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(actctrl_file, opts); + +% Convert to output type +timestamp_actctrl = tbl.timestamp; +%timestamp_sample = tbl.timestamp_sample; +control0 = tbl.control0; +control1 = tbl.control1; +control2 = tbl.control2; +control3 = tbl.control3; +% control4 = tbl.control4; +% control5 = tbl.control5; +% control6 = tbl.control6; +% control7 = tbl.control7; + +% Clear temporary variables +clear opts tbl + + +%- Import Actuator Output data from text file +opts = delimitedTextImportOptions("NumVariables", 18); +opts.DataLines = [2, Inf]; +opts.Delimiter = ","; + +% Specify column names and types +opts.VariableNames = ["timestamp", "noutputs", "output0", "output1", "output2", "output3", "output4", "output5", "output6", "output7", "output8", "output9", "output10", "output11", "output12", "output13", "output14", "output15"]; +opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double"]; +opts.ExtraColumnsRule = "ignore"; +opts.EmptyLineRule = "read"; + +% Import the data +tbl = readtable(actout_file, opts); + +% Convert to output type +timestamp_actout = tbl.timestamp; +% noutputs = tbl.noutputs; +output0 = tbl.output0; +output1 = tbl.output1; +output2 = tbl.output2; +output3 = tbl.output3; +% output4 = tbl.output4; +% output5 = tbl.output5; +% output6 = tbl.output6; +% output7 = tbl.output7; +% output8 = tbl.output8; +% output9 = tbl.output9; +% output10 = tbl.output10; +% output11 = tbl.output11; +% output12 = tbl.output12; +% output13 = tbl.output13; +% output14 = tbl.output14; +% output15 = tbl.output15; + +% Clear temporary variables +clear opts tbl + + +%- Run conversion script for GPS +cd Common/; +convert_px4_actuators_csv_data; +cd ../; + +end diff --git a/src/lib/ecl/EKF/matlab/EKF_replay/readme.txt b/src/lib/ecl/EKF/matlab/EKF_replay/readme.txt new file mode 100644 index 0000000000..fc0d5f6b97 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/EKF_replay/readme.txt @@ -0,0 +1,108 @@ +Instructions for running the EKF replay + +1) Ensure the ‘EKF_replay’ directory is in a location you have full read and write access + + +2) Create a ‘TestData’ sub-directory under the ‘EKF_replay’ directory + +A sample dataset can be downloaded here: https://drive.google.com/file/d/0By4v2BuLAaCfSW9fWl9aSWNGbGs/view?usp=sharing + + +3a) If replaying APM data: + +Collect data with LOG_REPLAY = 1 and LOG_DISARMED = 1. +Convert data to a .mat file using the MissionPlanner ‘Create Matlab File’ option under the DataFlash Logs tab. +Convert .mat file to the required data format using the convert_apm_data.m script file. This will generate the following data files: + +imu_data.mat +baro_data.mat +gps_data.mat +mag_data.mat + +and optionally + +rng_data.mat +flow_data.mat +viso_data.mat + +Note: If the rangefinder, optical flow or ZED camera odometer data are not present in the log, then the corresponding sections in the convert_apm_data.m script file will need to be commented out. + +Copy the generated .mat files into the /EKF_replay/TestData/APM directory. + + +3b) If replaying PX4 data: + +Collect data with EK2_REC_RPL = 1 +Convert the .ulg log file to .csv files using the PX4/pyulog python script https://github.com/PX4/pyulog/blob/master/pyulog/ulog2csv.py + +Make this directory your current MARLAB working directory and fill these variables with the paths to the CSV files: +- sensors_file: path to *_sensor_combined_0.csv +- air_data_file: path to *vehicle_air_data_0.csv +- magnetometer_file: path to *_vehicle_magetometer_0.csv +- gps_file: path to *_vehicle_gps_position_0.csv + +If a simulation was used, ground truth data can be converted as well: +- attitude_file: path to *_vehicle_attitude_groundtruth_0.csv +- localpos_file: path to *_vehicle_local_position_groundtruth_0.csv +- globalpos_file: path to *_vehicle_global_position_groundtruth_0.csv + +The actuator controls can also be converted: +- actctrl_file: path to *_actuator_controls_0_0.csv +- actout_file: path to *_actuator_outputs_0.csv + +When executing .../EKF_replay/px4_replay_import.m, the CSV files will be automatically loaded and converted using these scripts: +- .../EKF_replay/Common/convert_px4_sensor_combined_csv_data.m + * uses imported data from: + + sensors_file + + air_data_file + + magnetometer_file + * generates: + + imu_data.mat + + baro_data.mat + + mag_data.mat +- .../EKF_replay/Common/convert_px4_vehicle_gps_position_csv + * uses imported data from: + + gps_file + * generates: + + gps_data.mat +- .../EKF_replay/Common/convert_px4_groundtruth_csv_data + * uses imported data from: + + attitude_file + + localpos_file + + globalpos_file + * generates: + + attitude_data.mat + + localpos_data.mat + + globalpos_data.mat +- .../EKF_replay/Common/convert_px4_actuators_csv_data + * uses imported data from: + + actctrl_file + + actout_file + * generates: + + actctrl_data.mat + + actout_data.mat + +If you have an optical flow and range finder sensor fitted, they must be imported and converted manually: + +Import the .csv file containing the optical_flow_0 data into the matlab workspace and process it using …/EKF_replay/Common/convert_px4_optical_flow_csv_data.m. +Import the .csv file containing the distance_sensor_0 data into the matlab workspace and process it using …/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m. +This will generate the following data files: + +flow_data.mat +rng_data.mat + + +Finally copy the generated .mat files into the /EKF_replay/TestData/PX4 directory. + + +4) Make ‘…/EKF_replay/Filter’ the working directory. + + +5) Execute ‘SetParameterDefaults’ at the command prompt to load the default filter tuning parameter struct ‘param’ into the workspace. The defaults have been set to provide robust estimation across the entire data set, not optimised for accuracy. + + +6) Replay the data by running either the replay_apm_data.m, replay_px4_data.m or if you have px4 optical flow data, the replay_px4_optflow_data.m script file. + +Output plots are saved as .png files in the ‘…/EKF_replay/OutputPlots/‘ directory. + +Output data is written to the Matlab workspace in the ‘output’ struct. \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/README.md b/src/lib/ecl/EKF/matlab/README.md new file mode 100644 index 0000000000..c2461c7548 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/README.md @@ -0,0 +1,3 @@ +# MATLAB Derivations + +This folder contains the derivations and test suites in Matlab for ECL components. diff --git a/src/lib/ecl/EKF/matlab/analysis/estimatorLogViewerPX4.m b/src/lib/ecl/EKF/matlab/analysis/estimatorLogViewerPX4.m new file mode 100644 index 0000000000..643a636bd3 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/analysis/estimatorLogViewerPX4.m @@ -0,0 +1,133 @@ +function estimatorLogViewer(fname) +close all; +load(fname); + +stateFieldNames = [fieldnames(estimatorData.EST0);fieldnames(estimatorData.EST1)]; +stateFieldNames(strcmp('T',stateFieldNames) | strcmp('index',stateFieldNames) | ... + strcmp('nStat',stateFieldNames) | strcmp('fNaN',stateFieldNames) | ... + strcmp('fHealth',stateFieldNames) | strcmp('fTOut',stateFieldNames)) = []; + +innovFieldNamesT = [fieldnames(estimatorData.EST4);fieldnames(estimatorData.EST5)]; +innovFieldNamesT(strcmp('T',innovFieldNamesT) | strcmp('index',innovFieldNamesT)) = []; +innovFieldInds = cellfun(@(x)x(end)=='V',innovFieldNamesT); +innovFieldNames = innovFieldNamesT(~innovFieldInds); + + +% lay out static objects +f = figure('Units','normalized'); +set(f,'Position',[.25,.25,.5,.5]); + +tabs = uitabgroup(f); +statesTab = uitab(tabs,'Title','States'); +innovsTab = uitab(tabs,'Title','Innovations'); + +axesConfig = {'Units','Normalized','Position',[.05,.1,.65,.85],'NextPlot','add'}; +BGconfig = {'Units','Normalized','Position',[.75,.1,.2,.85]}; +TBconfig = {'Style','Checkbox','Units','Normalized','Position',[.75,0,.2,.1],'String','Show variance'}; + +statesAxes = axes('Parent',statesTab,axesConfig{:},'XLabel',text('string','Time (sec)')); +innovsAxes = axes('Parent',innovsTab,axesConfig{:},'XLabel',text('string','Time (sec)')); + +statesBG = uibuttongroup(statesTab,BGconfig{:}); +innovsBG = uibuttongroup(innovsTab,BGconfig{:}); + +statesVarToggle = uicontrol(statesTab,TBconfig{:}); +innovsVarToggle = uicontrol(innovsTab,TBconfig{:}); + +% lay out dynamic objects +stateButtons = zeros(numel(stateFieldNames),1); +for k = 1:numel(stateFieldNames) + stateButtons(k) = uicontrol(statesBG,'Style','Checkbox','Units','normalized',... + 'String',stateFieldNames{k},'Position',[0,1 - k/numel(stateFieldNames),1, 1/numel(stateFieldNames)],... + 'Callback',@(es,ed)toggleLine(es,ed,statesAxes,statesVarToggle,estimatorData.EST0,estimatorData.EST1,estimatorData.EST2,estimatorData.EST3)); +end +innovButtons = zeros(numel(innovFieldNames),1); +for k = 1:numel(innovFieldNames) + innovButtons(k) = uicontrol(innovsBG,'Style','Checkbox','Units','normalized',... + 'String',innovFieldNames{k},'Position',[0,1 - k/numel(innovFieldNames),1, 1/numel(innovFieldNames)],... + 'Callback',@(es,ed)toggleLine(es,ed,innovsAxes,innovsVarToggle,estimatorData.EST4,estimatorData.EST5,[],[])); +end + +set(statesVarToggle,'Callback',@(es,ed)toggleVariance(es,ed,statesAxes,estimatorData.EST2,estimatorData.EST3)); +set(innovsVarToggle,'Callback',@(es,ed)toggleVariance(es,ed,innovsAxes,estimatorData.EST4,estimatorData.EST5)); +end + +function toggleLine(es,~,axes,varToggle,struct1,struct2,vstruct1,vstruct2) +if es.Value == 0 + delete(findobj(axes,'UserData',es.String)); +else + if any(strcmp(es.String,fieldnames(struct1))) + dataSrc = struct1; + else + dataSrc = struct2; + end + p = plot(dataSrc.Tsec,dataSrc.(es.String)); + set(p,'Parent',axes,'UserData',es.String); +end +if varToggle.Value == 1 + if ~isempty(vstruct1) && ~isempty(vstruct2) + toggleVariance(varToggle,[],axes,vstruct1,vstruct2); + else + toggleVariance(varToggle,[],axes,struct1,struct2); + end +end +updateLegend(axes); +end + +function toggleVariance(es,~,axes,struct1,struct2) +if es.Value == 0 + delete(findobj(axes,'Type','Patch')); +else + lines = findobj(axes,'Type','Line'); + if isempty(lines) + return; + end + stateNames = {lines.UserData}; + if any(strncmp('s',stateNames,1)) + varNames = strrep(stateNames,'s','P'); + else + varNames = strrep(stateNames,'I','IV'); + end + for k = 1:numel(varNames) + if any(strcmp(varNames{k},fieldnames(struct1))) + dataSrc = struct1; + else + dataSrc = struct2; + end + centerLineTimeFull = get(lines(k),'XData'); + centerLineDataFull = get(lines(k),'YData'); + + startTime = max(centerLineTimeFull(1),dataSrc.Tsec(1)); + endTime = min(centerLineTimeFull(end),dataSrc.Tsec(end)); + plotTimeFull = dataSrc.Tsec(dataSrc.Tsec >= startTime & dataSrc.Tsec <= endTime); + plotDataFull = dataSrc.(varNames{k})(dataSrc.Tsec >= startTime & dataSrc.Tsec <= endTime); + + centerLineTime = centerLineTimeFull(centerLineTimeFull >= startTime & centerLineTimeFull <= endTime); + centerLineData = centerLineDataFull(centerLineTimeFull >= startTime & centerLineTimeFull <= endTime); + + plotTime = linspace(startTime,endTime,250); + plotData = sqrt(interp1(plotTimeFull,plotDataFull,plotTime)); + centerLineData = interp1(centerLineTime,centerLineData,plotTime); + +% plotTime = downsample(centerLineTime,round(numel(plotDataT)/350),0); + if strcmp('IV',varNames{k}(end-1:end)) + plotDataL = -plotData; + plotDataU = plotData; + else + plotDataL = centerLineData-plotData; + plotDataU = centerLineData+plotData; + end + p = patch([plotTime,fliplr(plotTime)],[plotDataL,fliplr(plotDataU)],lines(k).Color); + set(p,'Parent',axes,'EdgeColor','none','FaceAlpha',.3,'UserData',stateNames{k}); + end +end +end + +function updateLegend(axes) +lines = findobj(axes,'Type','Line'); +if isempty(lines) + legend(axes,'off'); +else + legend(axes,lines,{lines.UserData}); +end +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/analysis/importPX4log.m b/src/lib/ecl/EKF/matlab/analysis/importPX4log.m new file mode 100644 index 0000000000..335836058e --- /dev/null +++ b/src/lib/ecl/EKF/matlab/analysis/importPX4log.m @@ -0,0 +1,199 @@ +function allData = importPX4log(fname,keep_msgs) + +% import a .px4log file +% INPUTS +% fname: path to a valid .px4log file +% keep_msgs: cell array of message names to keep +% OUTPUT +% allData: a Matlab struct with a field names for each message name in the log +% file. The content of each field is itself a struct with field names for +% each label in the corresponding message. The content of each of *these* +% fields will be an array of message data that is nonempty if the message +% name appears in keep_msgs + +% import method essentially translated from sdlog2_dump.py +% George Hines, 3D Robotics, Berkeley, CA +% 7 April 2016 + +BLOCK_SIZE = 8192; +MSG_HEADER_LEN = 3; +MSG_HEAD1 = uint8(hex2dec('A3')); +MSG_HEAD2 = uint8(hex2dec('95')); +MSG_FORMAT_PACKET_LEN = 89; +MSG_TYPE_FORMAT = uint8(hex2dec('80')); +% MSG_FORMAT_STRUCT = {'uint8','uint8','char4','char16','char64'}; +FORMAT_TO_STRUCT = { + 'b', {'int8', 1}; + 'B', {'uint8', 1}; + 'h', {'int16', 1}; + 'H', {'uint16', 1}; + 'i', {'int32', 1}; + 'I', {'uint32', 1}; + 'f', {'single', 1}; + 'd', {'double', 1}; + 'n', {'char4', 1}; + 'N', {'char16', 1}; + 'Z', {'char64', 1}; + 'c', {'int16', 0.01}; + 'C', {'uint16', 0.01}; + 'e', {'int32', 0.01}; + 'E', {'uint32', 0.01}; + 'L', {'int32', 0.0000001}; + 'M', {'uint8', 1}; + 'q', {'int64', 1}; + 'Q', {'uint64', 1}}; + +fid = fopen(fname,'r','b'); +fInfo = dir(fname); +totalBytes = fInfo.bytes; +bytes_read = 0; +msg_descrs = {}; +buffer = []; +ptr = 1; +allData = []; +nextPrint = 0; +disp('Reading file'); +while 1 + percentDone = bytes_read / totalBytes * 100; + if percentDone >= nextPrint + fprintf('%.0f%%\n',percentDone); + nextPrint = nextPrint + 5; + end + + chunk = fread(fid,BLOCK_SIZE,'uint8'); + if numel(chunk) == 0; + break + end + buffer = [buffer(ptr:end), chunk']; + ptr = 1; + while numel(buffer) - ptr > MSG_HEADER_LEN + head1 = buffer(ptr); + head2 = buffer(ptr+1); + if head1 ~= MSG_HEAD1 || head2 ~= MSG_HEAD2 + ptr = ptr + 1; + continue; + end + msg_type = buffer(ptr+2); + + if msg_type == MSG_TYPE_FORMAT + if numel(buffer) - ptr <= MSG_FORMAT_PACKET_LEN + break; + end + % return new pointer, and all message descriptor info + [ptr, msg_descr] = LOCAL_parse_message_descriptors(buffer, ptr, MSG_TYPE_FORMAT, MSG_FORMAT_PACKET_LEN, FORMAT_TO_STRUCT); + msg_descrs(msg_descr{1},:) = msg_descr; + cells = repmat({inf(1,500000)},1,numel(msg_descr{5})); + cells(msg_descr{4}=='n' | msg_descr{4} == 'N' | msg_descr{4} == 'Z') = {[]}; + seed = [{'index'},{'Tsec'},msg_descr{5};[{1},{inf(1,500000)},cells]]; + allData.(msg_descr{3}) = struct(seed{:}); + else + msg_descr = msg_descrs(msg_type,:); + msg_length = msg_descr{2}; + if numel(buffer) - ptr <= msg_length + break; + end + % return new pointer, and all message info + if strcmp(msg_descr{3},'TIME') || any(strcmp(msg_descr{3}, keep_msgs)) || isempty(keep_msgs) + [ptr,msg_data] = LOCAL_parse_message(buffer, ptr, MSG_HEADER_LEN, msg_descr); + ind = allData.(msg_descr{3}).index; + for k = 1:numel(msg_data) + if isnumeric(msg_data{k}) + allData.(msg_descr{3}).(msg_descr{5}{k})(ind) = msg_data{k}; + try + allData.(msg_descr{3}).Tsec(ind) = double(allData.TIME.StartTime(max(1,allData.TIME.index-1)))*1e-6; + end + noInc = false; + else + allData.(msg_descr{3}).(msg_descr{5}{k}) = [allData.(msg_descr{3}).(msg_descr{5}{k}), msg_data(k)]; + noInc = true; + end + end + if ~noInc + allData.(msg_descr{3}).index = ind + 1; + end + else + ptr = ptr + msg_descr{2}; + end + end + end + bytes_read = bytes_read + ptr; +end + +disp('Releasing excess preallocated memory'); +% clean out inf values +fields1 = fieldnames(allData); +for k = 1:numel(fields1) + fields2 = fieldnames(allData.(fields1{k})); + for m = 1:numel(fields2) + if isnumeric(allData.(fields1{k}).(fields2{m})) + allData.(fields1{k}).(fields2{m})(isinf(allData.(fields1{k}).(fields2{m}))) = []; + end + end +end +disp('Done'); +end + +function [ptr, msg_descr] = LOCAL_parse_message_descriptors(buffer, ptr, MSG_TYPE_FORMAT, MSG_FORMAT_PACKET_LEN, FORMAT_TO_STRUCT) +thisBlock = buffer((ptr+3):(ptr+MSG_FORMAT_PACKET_LEN+1)); +msg_descr = cell(1,7); +msg_type = thisBlock(1); +%if msg_type ~= MSG_TYPE_FORMAT + msg_length = thisBlock(2); + msg_name = LOCAL_parse_string(thisBlock(3:6)); + msg_format = LOCAL_parse_string(thisBlock(7:22)); + msg_labels = strsplit(LOCAL_parse_string(thisBlock(23:end)),','); + msg_struct = cell(1,numel(msg_format)); + msg_mults = zeros(1,numel(msg_format)); + + for k = 1:numel(msg_format) + info = FORMAT_TO_STRUCT{strcmp(msg_format(k),FORMAT_TO_STRUCT(:,1)),2}; + msg_struct{k} = info{1}; + msg_mults(k) = info{2}; + end + if isempty([msg_labels{:}]) + msg_labels = {'none'}; + end + msg_descr = {msg_type, msg_length, msg_name, msg_format, msg_labels, msg_struct, msg_mults}; +%end +ptr = ptr + MSG_FORMAT_PACKET_LEN; +end + +function [ptr, data] = LOCAL_parse_message(buffer, ptr, MSG_HEADER_LEN, msg_descr) +[~, msg_length, ~, ~, ~, msg_struct, msg_mults] = msg_descr{:}; + +% unpack message per the format specifiers in msg_struct +data = cell(1,numel(msg_struct)); +thisBytes = buffer((ptr+MSG_HEADER_LEN):(ptr+msg_length+1)); +thisPtr = 1; +for k = 1:numel(msg_struct) + % parse the data chunk per msg_struct{k} + [dataLen,data{k}] = LOCAL_unpack(thisPtr, thisBytes, msg_struct{k}, msg_mults(k)); + thisPtr = thisPtr + dataLen; +end +ptr = ptr + msg_length; +end + +function [dataLen, data] = LOCAL_unpack(thisPtr, byte_array, format_type, mult) +if strncmp('char',format_type,4) + dataLen = str2double(format_type(5:end)); + data = LOCAL_parse_string(byte_array(thisPtr:(thisPtr+dataLen))); +else + if strncmp('int',format_type,3) + dataLen = str2double(format_type(4:end))/8; + elseif strncmp('uint',format_type,4) + dataLen = str2double(format_type(5:end))/8; + elseif strcmp('single',format_type) + dataLen = 4; + end + data = double(typecast(uint8(byte_array(thisPtr:(thisPtr+dataLen-1))),format_type))*mult; +end +end + +function str = LOCAL_parse_string(byteArray) +firstZero = find(byteArray==0); +if ~isempty(firstZero) + str = char(byteArray(1:firstZero-1)); +else + str = char(byteArray); +end +end \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/analysis/usageSamples.m b/src/lib/ecl/EKF/matlab/analysis/usageSamples.m new file mode 100644 index 0000000000..e5e76177c8 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/analysis/usageSamples.m @@ -0,0 +1,16 @@ +fname = 'indoor_flight_test.px4log'; + +%% entire log +wholeLog = importPX4log(fname,{}); + +%% attitude message +attitudeData = importPX4log(fname,{'ATT'}); + +%% estimator messages +estimatorData = importPX4log(fname,{'EST0','EST1','EST2','EST3','EST4','EST5','EST6'}); + +%% to save +save ift estimatorData; + +%% to run viewer +estimatorLogViewer('ift.mat'); \ No newline at end of file diff --git a/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m b/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m new file mode 100644 index 0000000000..4e071ecf01 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m @@ -0,0 +1,91 @@ +% IMPORTANT - This script requires the Matlab symbolic toolbox +% Derivation of EKF equations for estimation of terrain height offset +% Author: Paul Riseborough +% Last Modified: 20 June 2017 + +% State vector: + +% terrain vertical position (ptd) + +% Observations: + +% line of sight (LOS) angular rate measurements (rel to sensor frame) +% from a downwards looking optical flow sensor measured in rad/sec about +% the X and Y sensor axes. These rates are motion compensated. + +% A positive LOS X rate is a RH rotation of the image about the X sensor +% axis, and is produced by either a positive ground relative velocity in +% the direction of the Y axis. + +% A positive LOS Y rate is a RH rotation of the image about the Y sensor +% axis, and is produced by either a negative ground relative velocity in +% the direction of the X axis. + +% Range measurement aligned with the Z body axis (flat earth model assumed) + +% Time varying parameters: + +% quaternion parameters defining the rotation from navigation to body axes +% NED flight vehicle velocities +% vehicle vertical position + +clear all; + +%% define symbolic variables and constants +syms vel_x vel_y vel_z real % NED velocity : m/sec +syms R_OPT real % variance of LOS angular rate mesurements : (rad/sec)^2 +syms R_RNG real % variance of range finder measurement : m^2 +syms stateNoiseVar real % state process noise variance +syms pd real % position of vehicle in down axis : (m) +syms ptd real % position of terrain in down axis : (m) +syms q0 q1 q2 q3 real % quaternions defining attitude of body axes relative to local NED +syms Popt real % state variance +nStates = 1; + + +%% derive Jacobians for fusion of optical flow measurements +syms vel_x vel_y vel_z real % NED velocity : m/sec +syms pd real % position of vehicle in down axis : (m) +syms ptd real % position of terrain in down axis : (m) +syms q0 q1 q2 q3 real % quaternions defining attitude of body axes relative to local NED + +% derive the body to nav direction cosine matrix +Tbn = Quat2Tbn([q0,q1,q2,q3]); + +% calculate relative velocity in sensor frame +relVelSensor = transpose(Tbn)*[vel_x;vel_y;vel_z]; + +% calculate range to centre of flow sensor fov assuming flat earth +range = ((ptd - pd)/Tbn(3,3)); + +% divide velocity by range to get predicted motion compensated flow rates +optRateX = relVelSensor(2)/range; +optRateY = -relVelSensor(1)/range; + +% calculate the observation jacobians +H_OPTX = jacobian(optRateX,ptd); +H_OPTY = jacobian(optRateY,ptd); +H_OPT = [H_OPTX;H_OPTY]; +ccode(H_OPT,'file','H_OPT.c'); +fix_c_code('H_OPT.c'); + +clear all; +reset(symengine) + +%% derive Jacobian for fusion of range finder measurements +syms vel_x vel_y vel_z real % NED velocity : m/sec +syms R_RNG real % variance of range finder measurement : m^2 +syms pd real % position of vehicle in down axis : (m) +syms ptd real % position of terrain in down axis : (m) +syms q0 q1 q2 q3 real % quaternions defining attitude of body axes relative to local NED + +% derive the body to nav direction cosine matrix +Tbn = Quat2Tbn([q0,q1,q2,q3]); + +% calculate range assuming flat earth +range = ((ptd - pd)/Tbn(3,3)); + +% calculate range observation Jacobian +H_RNG = jacobian(range,ptd); % measurement Jacobian +ccode(H_RNG,'file','H_RNG.c'); +fix_c_code('H_RNG.c'); diff --git a/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/H_OPT.c b/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/H_OPT.c new file mode 100644 index 0000000000..c16eaf2010 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/H_OPT.c @@ -0,0 +1,10 @@ +t2 = q0*q0; +t3 = q1*q1; +t4 = q2*q2; +t5 = q3*q3; +t6 = pd-ptd; +t7 = 1.0/(t6*t6); +t8 = q0*q3*2.0; +t9 = t2-t3-t4+t5; +A0[0][0] = -t7*t9*(vel_z*(q0*q1*2.0+q2*q3*2.0)+vel_y*(t2-t3+t4-t5)-vel_x*(t8-q1*q2*2.0)); +A0[1][0] = t7*t9*(-vel_z*(q0*q2*2.0-q1*q3*2.0)+vel_x*(t2+t3-t4-t5)+vel_y*(t8+q1*q2*2.0)); diff --git a/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/H_RNG.c b/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/H_RNG.c new file mode 100644 index 0000000000..9a195c0901 --- /dev/null +++ b/src/lib/ecl/EKF/matlab/scripts/Terrain Estimator/H_RNG.c @@ -0,0 +1 @@ +A0[0][0] = 1.0/(q0*q0-q1*q1-q2*q2+q3*q3); diff --git a/src/lib/ecl/EKF/optflow_fusion.cpp b/src/lib/ecl/EKF/optflow_fusion.cpp new file mode 100644 index 0000000000..a5b5415c28 --- /dev/null +++ b/src/lib/ecl/EKF/optflow_fusion.cpp @@ -0,0 +1,395 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file vel_pos_fusion.cpp + * Function for fusing gps and baro measurements/ + * equations generated using EKF/python/ekf_derivation/main.py + * + * @author Paul Riseborough + * @author Siddharth Bharat Purohit + * + */ + +#include "ekf.h" +#include +#include +#include +#include "utils.hpp" + +void Ekf::fuseOptFlow() +{ + float gndclearance = fmaxf(_params.rng_gnd_clearance, 0.1f); + + // get latest estimated orientation + const float q0 = _state.quat_nominal(0); + const float q1 = _state.quat_nominal(1); + const float q2 = _state.quat_nominal(2); + const float q3 = _state.quat_nominal(3); + + // get latest velocity in earth frame + const float vn = _state.vel(0); + const float ve = _state.vel(1); + const float vd = _state.vel(2); + + // calculate the optical flow observation variance + const float R_LOS = calcOptFlowMeasVar(); + + // get rotation matrix from earth to body + const Dcmf earth_to_body = quatToInverseRotMat(_state.quat_nominal); + + // calculate the sensor position relative to the IMU + const Vector3f pos_offset_body = _params.flow_pos_body - _params.imu_pos_body; + + // calculate the velocity of the sensor relative to the imu in body frame + // Note: _flow_sample_delayed.gyro_xyz is the negative of the body angular velocity, thus use minus sign + const Vector3f vel_rel_imu_body = Vector3f(-_flow_sample_delayed.gyro_xyz / _flow_sample_delayed.dt) % pos_offset_body; + + // calculate the velocity of the sensor in the earth frame + const Vector3f vel_rel_earth = _state.vel + _R_to_earth * vel_rel_imu_body; + + // rotate into body frame + const Vector3f vel_body = earth_to_body * vel_rel_earth; + + // height above ground of the IMU + float heightAboveGndEst = _terrain_vpos - _state.pos(2); + + // calculate the sensor position relative to the IMU in earth frame + const Vector3f pos_offset_earth = _R_to_earth * pos_offset_body; + + // calculate the height above the ground of the optical flow camera. Since earth frame is NED + // a positive offset in earth frame leads to a smaller height above the ground. + heightAboveGndEst -= pos_offset_earth(2); + + // constrain minimum height above ground + heightAboveGndEst = math::max(heightAboveGndEst, gndclearance); + + // calculate range from focal point to centre of image + const float range = heightAboveGndEst / earth_to_body(2, 2); // absolute distance to the frame region in view + + // calculate optical LOS rates using optical flow rates that have had the body angular rate contribution removed + // correct for gyro bias errors in the data used to do the motion compensation + // Note the sign convention used: A positive LOS rate is a RH rotation of the scene about that axis. + const Vector2f opt_flow_rate = _flow_compensated_XY_rad / _flow_sample_delayed.dt + Vector2f(_flow_gyro_bias); + + // compute the velocities in body and local frames from corrected optical flow measurement + // for logging only + _flow_vel_body(0) = -opt_flow_rate(1) * range; + _flow_vel_body(1) = opt_flow_rate(0) * range; + _flow_vel_ne = Vector2f(_R_to_earth * Vector3f(_flow_vel_body(0), _flow_vel_body(1), 0.f)); + + _flow_innov(0) = vel_body(1) / range - opt_flow_rate(0); // flow around the X axis + _flow_innov(1) = -vel_body(0) / range - opt_flow_rate(1); // flow around the Y axis + + // The derivation allows for an arbitrary body to flow sensor frame rotation which is + // currently not supported by the EKF, so assume sensor frame is aligned with the + // body frame + const Dcmf Tbs = matrix::eye(); + + // Sub Expressions + const float HK0 = -Tbs(1,0)*q2 + Tbs(1,1)*q1 + Tbs(1,2)*q0; + const float HK1 = Tbs(1,0)*q3 + Tbs(1,1)*q0 - Tbs(1,2)*q1; + const float HK2 = Tbs(1,0)*q0 - Tbs(1,1)*q3 + Tbs(1,2)*q2; + const float HK3 = HK0*vd + HK1*ve + HK2*vn; + const float HK4 = 1.0F/range; + const float HK5 = 2*HK4; + const float HK6 = Tbs(1,0)*q1 + Tbs(1,1)*q2 + Tbs(1,2)*q3; + const float HK7 = -HK0*ve + HK1*vd + HK6*vn; + const float HK8 = HK0*vn - HK2*vd + HK6*ve; + const float HK9 = -HK1*vn + HK2*ve + HK6*vd; + const float HK10 = q0*q2; + const float HK11 = q1*q3; + const float HK12 = HK10 + HK11; + const float HK13 = 2*Tbs(1,2); + const float HK14 = q0*q3; + const float HK15 = q1*q2; + const float HK16 = HK14 - HK15; + const float HK17 = 2*Tbs(1,1); + const float HK18 = ecl::powf(q1, 2); + const float HK19 = ecl::powf(q2, 2); + const float HK20 = -HK19; + const float HK21 = ecl::powf(q0, 2); + const float HK22 = ecl::powf(q3, 2); + const float HK23 = HK21 - HK22; + const float HK24 = HK18 + HK20 + HK23; + const float HK25 = HK12*HK13 - HK16*HK17 + HK24*Tbs(1,0); + const float HK26 = HK14 + HK15; + const float HK27 = 2*Tbs(1,0); + const float HK28 = q0*q1; + const float HK29 = q2*q3; + const float HK30 = HK28 - HK29; + const float HK31 = -HK18; + const float HK32 = HK19 + HK23 + HK31; + const float HK33 = -HK13*HK30 + HK26*HK27 + HK32*Tbs(1,1); + const float HK34 = HK28 + HK29; + const float HK35 = HK10 - HK11; + const float HK36 = HK20 + HK21 + HK22 + HK31; + const float HK37 = HK17*HK34 - HK27*HK35 + HK36*Tbs(1,2); + const float HK38 = 2*HK3; + const float HK39 = 2*HK7; + const float HK40 = 2*HK8; + const float HK41 = 2*HK9; + const float HK42 = HK25*P(0,4) + HK33*P(0,5) + HK37*P(0,6) + HK38*P(0,0) + HK39*P(0,1) + HK40*P(0,2) + HK41*P(0,3); + const float HK43 = ecl::powf(range, -2); + const float HK44 = HK25*P(4,6) + HK33*P(5,6) + HK37*P(6,6) + HK38*P(0,6) + HK39*P(1,6) + HK40*P(2,6) + HK41*P(3,6); + const float HK45 = HK25*P(4,5) + HK33*P(5,5) + HK37*P(5,6) + HK38*P(0,5) + HK39*P(1,5) + HK40*P(2,5) + HK41*P(3,5); + const float HK46 = HK25*P(4,4) + HK33*P(4,5) + HK37*P(4,6) + HK38*P(0,4) + HK39*P(1,4) + HK40*P(2,4) + HK41*P(3,4); + const float HK47 = HK25*P(2,4) + HK33*P(2,5) + HK37*P(2,6) + HK38*P(0,2) + HK39*P(1,2) + HK40*P(2,2) + HK41*P(2,3); + const float HK48 = HK25*P(3,4) + HK33*P(3,5) + HK37*P(3,6) + HK38*P(0,3) + HK39*P(1,3) + HK40*P(2,3) + HK41*P(3,3); + const float HK49 = HK25*P(1,4) + HK33*P(1,5) + HK37*P(1,6) + HK38*P(0,1) + HK39*P(1,1) + HK40*P(1,2) + HK41*P(1,3); + // const float HK50 = HK4/(HK25*HK43*HK46 + HK33*HK43*HK45 + HK37*HK43*HK44 + HK38*HK42*HK43 + HK39*HK43*HK49 + HK40*HK43*HK47 + HK41*HK43*HK48 + R_LOS); + + // calculate innovation variance for X axis observation and protect against a badly conditioned calculation + _flow_innov_var(0) = (HK25*HK43*HK46 + HK33*HK43*HK45 + HK37*HK43*HK44 + HK38*HK42*HK43 + HK39*HK43*HK49 + HK40*HK43*HK47 + HK41*HK43*HK48 + R_LOS); + + if (_flow_innov_var(0) < R_LOS) { + // we need to reinitialise the covariance matrix and abort this fusion step + initialiseCovariance(); + return; + } + const float HK50 = HK4/_flow_innov_var(0); + + const float HK51 = Tbs(0,1)*q1; + const float HK52 = Tbs(0,2)*q0; + const float HK53 = Tbs(0,0)*q2; + const float HK54 = HK51 + HK52 - HK53; + const float HK55 = Tbs(0,0)*q3; + const float HK56 = Tbs(0,1)*q0; + const float HK57 = Tbs(0,2)*q1; + const float HK58 = HK55 + HK56 - HK57; + const float HK59 = Tbs(0,0)*q0; + const float HK60 = Tbs(0,2)*q2; + const float HK61 = Tbs(0,1)*q3; + const float HK62 = HK59 + HK60 - HK61; + const float HK63 = HK54*vd + HK58*ve + HK62*vn; + const float HK64 = Tbs(0,0)*q1 + Tbs(0,1)*q2 + Tbs(0,2)*q3; + const float HK65 = HK58*vd + HK64*vn; + const float HK66 = -HK54*ve + HK65; + const float HK67 = HK54*vn + HK64*ve; + const float HK68 = -HK62*vd + HK67; + const float HK69 = HK62*ve + HK64*vd; + const float HK70 = -HK58*vn + HK69; + const float HK71 = 2*Tbs(0,1); + const float HK72 = 2*Tbs(0,2); + const float HK73 = HK12*HK72 + HK24*Tbs(0,0); + const float HK74 = -HK16*HK71 + HK73; + const float HK75 = 2*Tbs(0,0); + const float HK76 = HK26*HK75 + HK32*Tbs(0,1); + const float HK77 = -HK30*HK72 + HK76; + const float HK78 = HK34*HK71 + HK36*Tbs(0,2); + const float HK79 = -HK35*HK75 + HK78; + const float HK80 = 2*HK63; + const float HK81 = 2*HK65 + 2*ve*(-HK51 - HK52 + HK53); + const float HK82 = 2*HK67 + 2*vd*(-HK59 - HK60 + HK61); + const float HK83 = 2*HK69 + 2*vn*(-HK55 - HK56 + HK57); + const float HK84 = HK71*(-HK14 + HK15) + HK73; + const float HK85 = HK72*(-HK28 + HK29) + HK76; + const float HK86 = HK75*(-HK10 + HK11) + HK78; + const float HK87 = HK80*P(0,0) + HK81*P(0,1) + HK82*P(0,2) + HK83*P(0,3) + HK84*P(0,4) + HK85*P(0,5) + HK86*P(0,6); + const float HK88 = HK80*P(0,6) + HK81*P(1,6) + HK82*P(2,6) + HK83*P(3,6) + HK84*P(4,6) + HK85*P(5,6) + HK86*P(6,6); + const float HK89 = HK80*P(0,5) + HK81*P(1,5) + HK82*P(2,5) + HK83*P(3,5) + HK84*P(4,5) + HK85*P(5,5) + HK86*P(5,6); + const float HK90 = HK80*P(0,4) + HK81*P(1,4) + HK82*P(2,4) + HK83*P(3,4) + HK84*P(4,4) + HK85*P(4,5) + HK86*P(4,6); + const float HK91 = HK80*P(0,2) + HK81*P(1,2) + HK82*P(2,2) + HK83*P(2,3) + HK84*P(2,4) + HK85*P(2,5) + HK86*P(2,6); + const float HK92 = 2*HK43; + const float HK93 = HK80*P(0,3) + HK81*P(1,3) + HK82*P(2,3) + HK83*P(3,3) + HK84*P(3,4) + HK85*P(3,5) + HK86*P(3,6); + const float HK94 = HK80*P(0,1) + HK81*P(1,1) + HK82*P(1,2) + HK83*P(1,3) + HK84*P(1,4) + HK85*P(1,5) + HK86*P(1,6); + // const float HK95 = HK4/(HK43*HK74*HK90 + HK43*HK77*HK89 + HK43*HK79*HK88 + HK43*HK80*HK87 + HK66*HK92*HK94 + HK68*HK91*HK92 + HK70*HK92*HK93 + R_LOS); + + // calculate innovation variance for Y axis observation and protect against a badly conditioned calculation + _flow_innov_var(1) = (HK43*HK74*HK90 + HK43*HK77*HK89 + HK43*HK79*HK88 + HK43*HK80*HK87 + HK66*HK92*HK94 + HK68*HK91*HK92 + HK70*HK92*HK93 + R_LOS); + if (_flow_innov_var(1) < R_LOS) { + // we need to reinitialise the covariance matrix and abort this fusion step + initialiseCovariance(); + return; + } + const float HK95 = HK4/_flow_innov_var(1); + + + // run the innovation consistency check and record result + bool flow_fail = false; + float test_ratio[2]; + test_ratio[0] = sq(_flow_innov(0)) / (sq(math::max(_params.flow_innov_gate, 1.0f)) * _flow_innov_var(0)); + test_ratio[1] = sq(_flow_innov(1)) / (sq(math::max(_params.flow_innov_gate, 1.0f)) * _flow_innov_var(1)); + _optflow_test_ratio = math::max(test_ratio[0],test_ratio[1]); + + for (uint8_t obs_index = 0; obs_index <= 1; obs_index++) { + if (test_ratio[obs_index] > 1.0f) { + flow_fail = true; + _innov_check_fail_status.value |= (1 << (obs_index + 10)); + + } else { + _innov_check_fail_status.value &= ~(1 << (obs_index + 10)); + + } + } + + // if either axis fails we abort the fusion + if (flow_fail) { + return; + + } + + // fuse observation axes sequentially + SparseVector24f<0,1,2,3,4,5,6> Hfusion; // Optical flow observation Jacobians + Vector24f Kfusion; // Optical flow Kalman gains + for (uint8_t obs_index = 0; obs_index <= 1; obs_index++) { + + // calculate observation Jocobians and Kalman gains + if (obs_index == 0) { + // Observation Jacobians - axis 0 + Hfusion.at<0>() = HK3*HK5; + Hfusion.at<1>() = HK5*HK7; + Hfusion.at<2>() = HK5*HK8; + Hfusion.at<3>() = HK5*HK9; + Hfusion.at<4>() = HK25*HK4; + Hfusion.at<5>() = HK33*HK4; + Hfusion.at<6>() = HK37*HK4; + + // Kalman gains - axis 0 + Kfusion(0) = HK42*HK50; + Kfusion(1) = HK49*HK50; + Kfusion(2) = HK47*HK50; + Kfusion(3) = HK48*HK50; + Kfusion(4) = HK46*HK50; + Kfusion(5) = HK45*HK50; + Kfusion(6) = HK44*HK50; + + for (unsigned row = 7; row <= 23; row++) { + Kfusion(row) = HK50*(HK25*P(4,row) + HK33*P(5,row) + HK37*P(6,row) + HK38*P(0,row) + HK39*P(1,row) + HK40*P(2,row) + HK41*P(3,row)); + } + + } else { + // Observation Jacobians - axis 1 + Hfusion.at<0>() = -HK5*HK63; + Hfusion.at<1>() = -HK5*HK66; + Hfusion.at<2>() = -HK5*HK68; + Hfusion.at<3>() = -HK5*HK70; + Hfusion.at<4>() = -HK4*HK74; + Hfusion.at<5>() = -HK4*HK77; + Hfusion.at<6>() = -HK4*HK79; + + // Kalman gains - axis 1 + Kfusion(0) = -HK87*HK95; + Kfusion(1) = -HK94*HK95; + Kfusion(2) = -HK91*HK95; + Kfusion(3) = -HK93*HK95; + Kfusion(4) = -HK90*HK95; + Kfusion(5) = -HK89*HK95; + Kfusion(6) = -HK88*HK95; + + for (unsigned row = 7; row <= 23; row++) { + Kfusion(row) = -HK95*(HK80*P(0,row) + HK81*P(1,row) + HK82*P(2,row) + HK83*P(3,row) + HK84*P(4,row) + HK85*P(5,row) + HK86*P(6,row)); + } + + } + + const bool is_fused = measurementUpdate(Kfusion, Hfusion, _flow_innov(obs_index)); + + if (obs_index == 0) { + _fault_status.flags.bad_optflow_X = !is_fused; + + } else if (obs_index == 1) { + _fault_status.flags.bad_optflow_Y = !is_fused; + } + + if (is_fused) { + _time_last_of_fuse = _time_last_imu; + } + } +} + +// calculate optical flow body angular rate compensation +// returns false if bias corrected body rate data is unavailable +bool Ekf::calcOptFlowBodyRateComp() +{ + // reset the accumulators if the time interval is too large + if (_delta_time_of > 1.0f) { + _imu_del_ang_of.setZero(); + _delta_time_of = 0.0f; + return false; + } + + const bool use_flow_sensor_gyro = ISFINITE(_flow_sample_delayed.gyro_xyz(0)) && ISFINITE(_flow_sample_delayed.gyro_xyz(1)) && ISFINITE(_flow_sample_delayed.gyro_xyz(2)); + + if (use_flow_sensor_gyro) { + + // if accumulation time differences are not excessive and accumulation time is adequate + // compare the optical flow and and navigation rate data and calculate a bias error + if ((_delta_time_of > FLT_EPSILON) + && (_flow_sample_delayed.dt > FLT_EPSILON) + && (fabsf(_delta_time_of - _flow_sample_delayed.dt) < 0.1f)) { + + const Vector3f reference_body_rate(_imu_del_ang_of * (1.0f / _delta_time_of)); + + const Vector3f measured_body_rate(_flow_sample_delayed.gyro_xyz * (1.0f / _flow_sample_delayed.dt)); + + // calculate the bias estimate using a combined LPF and spike filter + _flow_gyro_bias = _flow_gyro_bias * 0.99f + matrix::constrain(measured_body_rate - reference_body_rate, -0.1f, 0.1f) * 0.01f; + } + + } else { + // Use the EKF gyro data if optical flow sensor gyro data is not available + // for clarification of the sign see definition of flowSample and imuSample in common.h + _flow_sample_delayed.gyro_xyz = -_imu_del_ang_of; + _flow_gyro_bias.zero(); + } + + // reset the accumulators + _imu_del_ang_of.setZero(); + _delta_time_of = 0.0f; + return true; +} + +// calculate the measurement variance for the optical flow sensor (rad/sec)^2 +float Ekf::calcOptFlowMeasVar() +{ + // calculate the observation noise variance - scaling noise linearly across flow quality range + const float R_LOS_best = fmaxf(_params.flow_noise, 0.05f); + const float R_LOS_worst = fmaxf(_params.flow_noise_qual_min, 0.05f); + + // calculate a weighting that varies between 1 when flow quality is best and 0 when flow quality is worst + float weighting = (255.0f - (float)_params.flow_qual_min); + + if (weighting >= 1.0f) { + weighting = math::constrain(((float)_flow_sample_delayed.quality - (float)_params.flow_qual_min) / weighting, 0.0f, + 1.0f); + + } else { + weighting = 0.0f; + } + + // take the weighted average of the observation noise for the best and wort flow quality + const float R_LOS = sq(R_LOS_best * weighting + R_LOS_worst * (1.0f - weighting)); + + return R_LOS; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/.gitignore b/src/lib/ecl/EKF/python/ekf_derivation/.gitignore new file mode 100644 index 0000000000..bee8a64b79 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/src/lib/ecl/EKF/python/ekf_derivation/__init__.py b/src/lib/ecl/EKF/python/ekf_derivation/__init__.py new file mode 100644 index 0000000000..d4412772f4 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/__init__.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sat Mar 14 13:02:26 2020 + +@author: roman +""" + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/code_gen.py b/src/lib/ecl/EKF/python/ekf_derivation/code_gen.py new file mode 100644 index 0000000000..632abb46ef --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/code_gen.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sat Mar 14 12:47:24 2020 + +@author: roman +""" +from sympy import ccode +from sympy.codegen.ast import float32, real + +class CodeGenerator: + def __init__(self, file_name): + self.file_name = file_name + self.file = open(self.file_name, 'w') + + def print_string(self, string): + self.file.write("// " + string + "\n") + + def get_ccode(self, expression): + return ccode(expression, type_aliases={real:float32}) + + def write_subexpressions(self,subexpressions): + write_string = "" + for item in subexpressions: + write_string = write_string + "const float " + str(item[0]) + " = " + self.get_ccode(item[1]) + ";\n" + + write_string = write_string + "\n\n" + self.file.write(write_string) + + def write_matrix(self, matrix, variable_name, is_symmetric=False, pre_bracket="(", post_bracket=")"): + write_string = "" + + if matrix.shape[0] * matrix.shape[1] == 1: + write_string = write_string + variable_name + " = " + self.get_ccode(matrix[0]) + ";\n" + elif matrix.shape[0] == 1 or matrix.shape[1] == 1: + for i in range(0,len(matrix)): + write_string = write_string + variable_name + pre_bracket + str(i) + post_bracket + " = " + self.get_ccode(matrix[i]) + ";\n" + + else: + for j in range(0, matrix.shape[1]): + for i in range(0, matrix.shape[0]): + if j >= i or not is_symmetric: + write_string = write_string + variable_name + pre_bracket + str(i) + "," + str(j) + post_bracket + " = " + self.get_ccode(matrix[i,j]) + ";\n" + + write_string = write_string + "\n\n" + self.file.write(write_string) + + def close(self): + self.file.close() diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_fusion_generated_compare.cpp new file mode 100644 index 0000000000..10136b2698 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_fusion_generated_compare.cpp @@ -0,0 +1,604 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; + +float sq(float in) { + return in * in; +} + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + + float Hfusion[24]; + Vector24f H_MAG; + Vector24f Kfusion; + float mag_innov_var; + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + const float magN = 2.0f * ((float)rand() - 0.5f); + const float magE = 2.0f * ((float)rand() - 0.5f); + const float magD = 2.0f * ((float)rand() - 0.5f); + + const float R_MAG = sq(0.05f); + const bool update_all_states = true; + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // common expressions used by sympy generated equations + // calculate intermediate variables used for X axis innovation variance, observation Jacobians and Kalman gainss + const float HKX0 = -magD*q2 + magE*q3 + magN*q0; + const float HKX1 = magD*q3 + magE*q2 + magN*q1; + const float HKX2 = magE*q1; + const float HKX3 = magD*q0; + const float HKX4 = magN*q2; + const float HKX5 = magD*q1 + magE*q0 - magN*q3; + const float HKX6 = powf(q0, 2) + powf(q1, 2) - powf(q2, 2) - powf(q3, 2); + const float HKX7 = q0*q3 + q1*q2; + const float HKX8 = q1*q3; + const float HKX9 = q0*q2; + const float HKX10 = 2*HKX7; + const float HKX11 = -2*HKX8 + 2*HKX9; + const float HKX12 = 2*HKX1; + const float HKX13 = 2*HKX0; + const float HKX14 = -2*HKX2 + 2*HKX3 + 2*HKX4; + const float HKX15 = 2*HKX5; + const float HKX16 = HKX10*P(0,17) - HKX11*P(0,18) + HKX12*P(0,1) + HKX13*P(0,0) - HKX14*P(0,2) + HKX15*P(0,3) + HKX6*P(0,16) + P(0,19); + const float HKX17 = HKX10*P(16,17) - HKX11*P(16,18) + HKX12*P(1,16) + HKX13*P(0,16) - HKX14*P(2,16) + HKX15*P(3,16) + HKX6*P(16,16) + P(16,19); + const float HKX18 = HKX10*P(17,18) - HKX11*P(18,18) + HKX12*P(1,18) + HKX13*P(0,18) - HKX14*P(2,18) + HKX15*P(3,18) + HKX6*P(16,18) + P(18,19); + const float HKX19 = HKX10*P(2,17) - HKX11*P(2,18) + HKX12*P(1,2) + HKX13*P(0,2) - HKX14*P(2,2) + HKX15*P(2,3) + HKX6*P(2,16) + P(2,19); + const float HKX20 = HKX10*P(17,17) - HKX11*P(17,18) + HKX12*P(1,17) + HKX13*P(0,17) - HKX14*P(2,17) + HKX15*P(3,17) + HKX6*P(16,17) + P(17,19); + const float HKX21 = HKX10*P(3,17) - HKX11*P(3,18) + HKX12*P(1,3) + HKX13*P(0,3) - HKX14*P(2,3) + HKX15*P(3,3) + HKX6*P(3,16) + P(3,19); + const float HKX22 = HKX10*P(1,17) - HKX11*P(1,18) + HKX12*P(1,1) + HKX13*P(0,1) - HKX14*P(1,2) + HKX15*P(1,3) + HKX6*P(1,16) + P(1,19); + const float HKX23 = HKX10*P(17,19) - HKX11*P(18,19) + HKX12*P(1,19) + HKX13*P(0,19) - HKX14*P(2,19) + HKX15*P(3,19) + HKX6*P(16,19) + P(19,19); + const float HKX24 = 1.0F/(HKX10*HKX20 - HKX11*HKX18 + HKX12*HKX22 + HKX13*HKX16 - HKX14*HKX19 + HKX15*HKX21 + HKX17*HKX6 + HKX23 + R_MAG); + + // common expressions used by matlab generated equations + float SH_MAG[9]; + SH_MAG[0] = 2.0f*magD*q3 + 2.0f*magE*q2 + 2.0f*magN*q1; + SH_MAG[1] = 2.0f*magD*q0 - 2.0f*magE*q1 + 2.0f*magN*q2; + SH_MAG[2] = 2.0f*magD*q1 + 2.0f*magE*q0 - 2.0f*magN*q3; + SH_MAG[3] = sq(q3); + SH_MAG[4] = sq(q2); + SH_MAG[5] = sq(q1); + SH_MAG[6] = sq(q0); + SH_MAG[7] = 2.0f*magN*q0; + SH_MAG[8] = 2.0f*magE*q3; + + // Compare X axis equations + { + mag_innov_var = (HKX10*HKX20 - HKX11*HKX18 + HKX12*HKX22 + HKX13*HKX16 - HKX14*HKX19 + HKX15*HKX21 + HKX17*HKX6 + HKX23 + R_MAG); + float HK50 = 1.0F/mag_innov_var; + + // Calculate X axis observation jacobians + memset(Hfusion, 0, sizeof(Hfusion)); + Hfusion[0] = 2*HKX0; + Hfusion[1] = 2*HKX1; + Hfusion[2] = 2*HKX2 - 2*HKX3 - 2*HKX4; + Hfusion[3] = 2*HKX5; + Hfusion[16] = HKX6; + Hfusion[17] = 2*HKX7; + Hfusion[18] = 2*HKX8 - 2*HKX9; + Hfusion[19] = 1; + + // Calculate X axis Kalman gains + if (update_all_states) { + Kfusion(0) = HKX16*HKX24; + Kfusion(1) = HKX22*HKX24; + Kfusion(2) = HKX19*HKX24; + Kfusion(3) = HKX21*HKX24; + + for (unsigned row = 4; row <= 15; row++) { + Kfusion(row) = HKX24*(HKX10*P(row,17) - HKX11*P(row,18) + HKX12*P(1,row) + HKX13*P(0,row) - HKX14*P(2,row) + HKX15*P(3,row) + HKX6*P(row,16) + P(row,19)); + } + + for (unsigned row = 22; row <= 23; row++) { + Kfusion(row) = HKX24*(HKX10*P(17,row) - HKX11*P(18,row) + HKX12*P(1,row) + HKX13*P(0,row) - HKX14*P(2,row) + HKX15*P(3,row) + HKX6*P(16,row) + P(19,row)); + } + } + + Kfusion(16) = HKX17*HKX24; + Kfusion(17) = HKX20*HKX24; + Kfusion(18) = HKX18*HKX24; + Kfusion(19) = HKX23*HKX24; + + for (unsigned row = 20; row <= 21; row++) { + Kfusion(row) = HKX24*(HKX10*P(17,row) - HKX11*P(18,row) + HKX12*P(1,row) + HKX13*P(0,row) - HKX14*P(2,row) + HKX15*P(3,row) + HKX6*P(16,row) + P(19,row)); + } + + // save output and repeat calculation using legacy matlab generated code + float Hfusion_sympy[24]; + Vector24f Kfusion_sympy; + for (int row=0; row<24; row++) { + Hfusion_sympy[row] = Hfusion[row]; + Kfusion_sympy(row) = Kfusion(row); + } + + // repeat calculation using matlab generated equations + // X axis innovation variance + mag_innov_var = (P(19,19) + R_MAG + P(1,19)*SH_MAG[0] - P(2,19)*SH_MAG[1] + P(3,19)*SH_MAG[2] - P(16,19)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + (2.0f*q0*q3 + 2.0f*q1*q2)*(P(19,17) + P(1,17)*SH_MAG[0] - P(2,17)*SH_MAG[1] + P(3,17)*SH_MAG[2] - P(16,17)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,17)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,17)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,17)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - (2.0f*q0*q2 - 2.0f*q1*q3)*(P(19,18) + P(1,18)*SH_MAG[0] - P(2,18)*SH_MAG[1] + P(3,18)*SH_MAG[2] - P(16,18)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,18)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,18)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,18)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + (SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)*(P(19,0) + P(1,0)*SH_MAG[0] - P(2,0)*SH_MAG[1] + P(3,0)*SH_MAG[2] - P(16,0)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,0)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,0)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,0)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + P(17,19)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,19)*(2.0f*q0*q2 - 2.0f*q1*q3) + SH_MAG[0]*(P(19,1) + P(1,1)*SH_MAG[0] - P(2,1)*SH_MAG[1] + P(3,1)*SH_MAG[2] - P(16,1)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,1)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,1)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,1)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - SH_MAG[1]*(P(19,2) + P(1,2)*SH_MAG[0] - P(2,2)*SH_MAG[1] + P(3,2)*SH_MAG[2] - P(16,2)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,2)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,2)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,2)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + SH_MAG[2]*(P(19,3) + P(1,3)*SH_MAG[0] - P(2,3)*SH_MAG[1] + P(3,3)*SH_MAG[2] - P(16,3)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,3)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,3)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,3)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - (SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6])*(P(19,16) + P(1,16)*SH_MAG[0] - P(2,16)*SH_MAG[1] + P(3,16)*SH_MAG[2] - P(16,16)*(SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]) + P(17,16)*(2.0f*q0*q3 + 2.0f*q1*q2) - P(18,16)*(2.0f*q0*q2 - 2.0f*q1*q3) + P(0,16)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + P(0,19)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)); + + // Calculate X axis observation jacobians + H_MAG.setZero(); + H_MAG(0) = SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2; + H_MAG(1) = SH_MAG[0]; + H_MAG(2) = -SH_MAG[1]; + H_MAG(3) = SH_MAG[2]; + H_MAG(16) = SH_MAG[5] - SH_MAG[4] - SH_MAG[3] + SH_MAG[6]; + H_MAG(17) = 2.0f*q0*q3 + 2.0f*q1*q2; + H_MAG(18) = 2.0f*q1*q3 - 2.0f*q0*q2; + H_MAG(19) = 1.0f; + + // Calculate X axis Kalman gains + float SK_MX[5]; + SK_MX[0] = 1.0f / mag_innov_var; + SK_MX[1] = SH_MAG[3] + SH_MAG[4] - SH_MAG[5] - SH_MAG[6]; + SK_MX[2] = SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2; + SK_MX[3] = 2.0f*q0*q2 - 2.0f*q1*q3; + SK_MX[4] = 2.0f*q0*q3 + 2.0f*q1*q2; + + if (update_all_states) { + Kfusion(0) = SK_MX[0]*(P(0,19) + P(0,1)*SH_MAG[0] - P(0,2)*SH_MAG[1] + P(0,3)*SH_MAG[2] + P(0,0)*SK_MX[2] - P(0,16)*SK_MX[1] + P(0,17)*SK_MX[4] - P(0,18)*SK_MX[3]); + Kfusion(1) = SK_MX[0]*(P(1,19) + P(1,1)*SH_MAG[0] - P(1,2)*SH_MAG[1] + P(1,3)*SH_MAG[2] + P(1,0)*SK_MX[2] - P(1,16)*SK_MX[1] + P(1,17)*SK_MX[4] - P(1,18)*SK_MX[3]); + Kfusion(2) = SK_MX[0]*(P(2,19) + P(2,1)*SH_MAG[0] - P(2,2)*SH_MAG[1] + P(2,3)*SH_MAG[2] + P(2,0)*SK_MX[2] - P(2,16)*SK_MX[1] + P(2,17)*SK_MX[4] - P(2,18)*SK_MX[3]); + Kfusion(3) = SK_MX[0]*(P(3,19) + P(3,1)*SH_MAG[0] - P(3,2)*SH_MAG[1] + P(3,3)*SH_MAG[2] + P(3,0)*SK_MX[2] - P(3,16)*SK_MX[1] + P(3,17)*SK_MX[4] - P(3,18)*SK_MX[3]); + Kfusion(4) = SK_MX[0]*(P(4,19) + P(4,1)*SH_MAG[0] - P(4,2)*SH_MAG[1] + P(4,3)*SH_MAG[2] + P(4,0)*SK_MX[2] - P(4,16)*SK_MX[1] + P(4,17)*SK_MX[4] - P(4,18)*SK_MX[3]); + Kfusion(5) = SK_MX[0]*(P(5,19) + P(5,1)*SH_MAG[0] - P(5,2)*SH_MAG[1] + P(5,3)*SH_MAG[2] + P(5,0)*SK_MX[2] - P(5,16)*SK_MX[1] + P(5,17)*SK_MX[4] - P(5,18)*SK_MX[3]); + Kfusion(6) = SK_MX[0]*(P(6,19) + P(6,1)*SH_MAG[0] - P(6,2)*SH_MAG[1] + P(6,3)*SH_MAG[2] + P(6,0)*SK_MX[2] - P(6,16)*SK_MX[1] + P(6,17)*SK_MX[4] - P(6,18)*SK_MX[3]); + Kfusion(7) = SK_MX[0]*(P(7,19) + P(7,1)*SH_MAG[0] - P(7,2)*SH_MAG[1] + P(7,3)*SH_MAG[2] + P(7,0)*SK_MX[2] - P(7,16)*SK_MX[1] + P(7,17)*SK_MX[4] - P(7,18)*SK_MX[3]); + Kfusion(8) = SK_MX[0]*(P(8,19) + P(8,1)*SH_MAG[0] - P(8,2)*SH_MAG[1] + P(8,3)*SH_MAG[2] + P(8,0)*SK_MX[2] - P(8,16)*SK_MX[1] + P(8,17)*SK_MX[4] - P(8,18)*SK_MX[3]); + Kfusion(9) = SK_MX[0]*(P(9,19) + P(9,1)*SH_MAG[0] - P(9,2)*SH_MAG[1] + P(9,3)*SH_MAG[2] + P(9,0)*SK_MX[2] - P(9,16)*SK_MX[1] + P(9,17)*SK_MX[4] - P(9,18)*SK_MX[3]); + Kfusion(10) = SK_MX[0]*(P(10,19) + P(10,1)*SH_MAG[0] - P(10,2)*SH_MAG[1] + P(10,3)*SH_MAG[2] + P(10,0)*SK_MX[2] - P(10,16)*SK_MX[1] + P(10,17)*SK_MX[4] - P(10,18)*SK_MX[3]); + Kfusion(11) = SK_MX[0]*(P(11,19) + P(11,1)*SH_MAG[0] - P(11,2)*SH_MAG[1] + P(11,3)*SH_MAG[2] + P(11,0)*SK_MX[2] - P(11,16)*SK_MX[1] + P(11,17)*SK_MX[4] - P(11,18)*SK_MX[3]); + Kfusion(12) = SK_MX[0]*(P(12,19) + P(12,1)*SH_MAG[0] - P(12,2)*SH_MAG[1] + P(12,3)*SH_MAG[2] + P(12,0)*SK_MX[2] - P(12,16)*SK_MX[1] + P(12,17)*SK_MX[4] - P(12,18)*SK_MX[3]); + Kfusion(13) = SK_MX[0]*(P(13,19) + P(13,1)*SH_MAG[0] - P(13,2)*SH_MAG[1] + P(13,3)*SH_MAG[2] + P(13,0)*SK_MX[2] - P(13,16)*SK_MX[1] + P(13,17)*SK_MX[4] - P(13,18)*SK_MX[3]); + Kfusion(14) = SK_MX[0]*(P(14,19) + P(14,1)*SH_MAG[0] - P(14,2)*SH_MAG[1] + P(14,3)*SH_MAG[2] + P(14,0)*SK_MX[2] - P(14,16)*SK_MX[1] + P(14,17)*SK_MX[4] - P(14,18)*SK_MX[3]); + Kfusion(15) = SK_MX[0]*(P(15,19) + P(15,1)*SH_MAG[0] - P(15,2)*SH_MAG[1] + P(15,3)*SH_MAG[2] + P(15,0)*SK_MX[2] - P(15,16)*SK_MX[1] + P(15,17)*SK_MX[4] - P(15,18)*SK_MX[3]); + Kfusion(22) = SK_MX[0]*(P(22,19) + P(22,1)*SH_MAG[0] - P(22,2)*SH_MAG[1] + P(22,3)*SH_MAG[2] + P(22,0)*SK_MX[2] - P(22,16)*SK_MX[1] + P(22,17)*SK_MX[4] - P(22,18)*SK_MX[3]); + Kfusion(23) = SK_MX[0]*(P(23,19) + P(23,1)*SH_MAG[0] - P(23,2)*SH_MAG[1] + P(23,3)*SH_MAG[2] + P(23,0)*SK_MX[2] - P(23,16)*SK_MX[1] + P(23,17)*SK_MX[4] - P(23,18)*SK_MX[3]); + } + + Kfusion(16) = SK_MX[0]*(P(16,19) + P(16,1)*SH_MAG[0] - P(16,2)*SH_MAG[1] + P(16,3)*SH_MAG[2] + P(16,0)*SK_MX[2] - P(16,16)*SK_MX[1] + P(16,17)*SK_MX[4] - P(16,18)*SK_MX[3]); + Kfusion(17) = SK_MX[0]*(P(17,19) + P(17,1)*SH_MAG[0] - P(17,2)*SH_MAG[1] + P(17,3)*SH_MAG[2] + P(17,0)*SK_MX[2] - P(17,16)*SK_MX[1] + P(17,17)*SK_MX[4] - P(17,18)*SK_MX[3]); + Kfusion(18) = SK_MX[0]*(P(18,19) + P(18,1)*SH_MAG[0] - P(18,2)*SH_MAG[1] + P(18,3)*SH_MAG[2] + P(18,0)*SK_MX[2] - P(18,16)*SK_MX[1] + P(18,17)*SK_MX[4] - P(18,18)*SK_MX[3]); + Kfusion(19) = SK_MX[0]*(P(19,19) + P(19,1)*SH_MAG[0] - P(19,2)*SH_MAG[1] + P(19,3)*SH_MAG[2] + P(19,0)*SK_MX[2] - P(19,16)*SK_MX[1] + P(19,17)*SK_MX[4] - P(19,18)*SK_MX[3]); + Kfusion(20) = SK_MX[0]*(P(20,19) + P(20,1)*SH_MAG[0] - P(20,2)*SH_MAG[1] + P(20,3)*SH_MAG[2] + P(20,0)*SK_MX[2] - P(20,16)*SK_MX[1] + P(20,17)*SK_MX[4] - P(20,18)*SK_MX[3]); + Kfusion(21) = SK_MX[0]*(P(21,19) + P(21,1)*SH_MAG[0] - P(21,2)*SH_MAG[1] + P(21,3)*SH_MAG[2] + P(21,0)*SK_MX[2] - P(21,16)*SK_MX[1] + P(21,17)*SK_MX[4] - P(21,18)*SK_MX[3]); + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (H_MAG(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_MAG(row)) / fabsf(H_MAG(row)); + } else if (Hfusion_sympy[row] != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_MAG(row)) / fabsf(Hfusion_sympy[row]); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_MAG(row); + max_new = Hfusion_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Magnetomer X axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Magnetomer X axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Magnetomer X axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Magnetomer X axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + // Compare Y axis equations + { + // recalculate innovation variance becasue states and covariances have changed due to previous fusion + const float HKY0 = magD*q1 + magE*q0 - magN*q3; + const float HKY1 = magD*q0 - magE*q1 + magN*q2; + const float HKY2 = magD*q3 + magE*q2 + magN*q1; + const float HKY3 = magD*q2; + const float HKY4 = magE*q3; + const float HKY5 = magN*q0; + const float HKY6 = q1*q2; + const float HKY7 = q0*q3; + const float HKY8 = powf(q0, 2) - powf(q1, 2) + powf(q2, 2) - powf(q3, 2); + const float HKY9 = q0*q1 + q2*q3; + const float HKY10 = 2*HKY9; + const float HKY11 = -2*HKY6 + 2*HKY7; + const float HKY12 = 2*HKY2; + const float HKY13 = 2*HKY0; + const float HKY14 = 2*HKY1; + const float HKY15 = -2*HKY3 + 2*HKY4 + 2*HKY5; + const float HKY16 = HKY10*P(0,18) - HKY11*P(0,16) + HKY12*P(0,2) + HKY13*P(0,0) + HKY14*P(0,1) - HKY15*P(0,3) + HKY8*P(0,17) + P(0,20); + const float HKY17 = HKY10*P(17,18) - HKY11*P(16,17) + HKY12*P(2,17) + HKY13*P(0,17) + HKY14*P(1,17) - HKY15*P(3,17) + HKY8*P(17,17) + P(17,20); + const float HKY18 = HKY10*P(16,18) - HKY11*P(16,16) + HKY12*P(2,16) + HKY13*P(0,16) + HKY14*P(1,16) - HKY15*P(3,16) + HKY8*P(16,17) + P(16,20); + const float HKY19 = HKY10*P(3,18) - HKY11*P(3,16) + HKY12*P(2,3) + HKY13*P(0,3) + HKY14*P(1,3) - HKY15*P(3,3) + HKY8*P(3,17) + P(3,20); + const float HKY20 = HKY10*P(18,18) - HKY11*P(16,18) + HKY12*P(2,18) + HKY13*P(0,18) + HKY14*P(1,18) - HKY15*P(3,18) + HKY8*P(17,18) + P(18,20); + const float HKY21 = HKY10*P(1,18) - HKY11*P(1,16) + HKY12*P(1,2) + HKY13*P(0,1) + HKY14*P(1,1) - HKY15*P(1,3) + HKY8*P(1,17) + P(1,20); + const float HKY22 = HKY10*P(2,18) - HKY11*P(2,16) + HKY12*P(2,2) + HKY13*P(0,2) + HKY14*P(1,2) - HKY15*P(2,3) + HKY8*P(2,17) + P(2,20); + const float HKY23 = HKY10*P(18,20) - HKY11*P(16,20) + HKY12*P(2,20) + HKY13*P(0,20) + HKY14*P(1,20) - HKY15*P(3,20) + HKY8*P(17,20) + P(20,20); + const float HKY24 = 1.0F/(HKY10*HKY20 - HKY11*HKY18 + HKY12*HKY22 + HKY13*HKY16 + HKY14*HKY21 - HKY15*HKY19 + HKY17*HKY8 + HKY23 + R_MAG); + + // Calculate Y axis observation jacobians + memset(Hfusion, 0, sizeof(Hfusion)); + Hfusion[0] = 2*HKY0; + Hfusion[1] = 2*HKY1; + Hfusion[2] = 2*HKY2; + Hfusion[3] = 2*HKY3 - 2*HKY4 - 2*HKY5; + Hfusion[16] = 2*HKY6 - 2*HKY7; + Hfusion[17] = HKY8; + Hfusion[18] = 2*HKY9; + Hfusion[20] = 1; + + // Calculate Y axis Kalman gains + if (update_all_states) { + Kfusion(0) = HKY16*HKY24; + Kfusion(1) = HKY21*HKY24; + Kfusion(2) = HKY22*HKY24; + Kfusion(3) = HKY19*HKY24; + + for (unsigned row = 4; row <= 15; row++) { + Kfusion(row) = HKY24*(HKY10*P(row,18) - HKY11*P(row,16) + HKY12*P(2,row) + HKY13*P(0,row) + HKY14*P(1,row) - HKY15*P(3,row) + HKY8*P(row,17) + P(row,20)); + } + + for (unsigned row = 22; row <= 23; row++) { + Kfusion(row) = HKY24*(HKY10*P(18,row) - HKY11*P(16,row) + HKY12*P(2,row) + HKY13*P(0,row) + HKY14*P(1,row) - HKY15*P(3,row) + HKY8*P(17,row) + P(20,row)); + } + } + + Kfusion(16) = HKY18*HKY24; + Kfusion(17) = HKY17*HKY24; + Kfusion(18) = HKY20*HKY24; + Kfusion(19) = HKY24*(HKY10*P(18,19) - HKY11*P(16,19) + HKY12*P(2,19) + HKY13*P(0,19) + HKY14*P(1,19) - HKY15*P(3,19) + HKY8*P(17,19) + P(19,20)); + Kfusion(20) = HKY23*HKY24; + Kfusion(21) = HKY24*(HKY10*P(18,21) - HKY11*P(16,21) + HKY12*P(2,21) + HKY13*P(0,21) + HKY14*P(1,21) - HKY15*P(3,21) + HKY8*P(17,21) + P(20,21)); + + // save output and repeat calculation using legacy matlab generated code + float Hfusion_sympy[24]; + Vector24f Kfusion_sympy; + for (int row=0; row<24; row++) { + Hfusion_sympy[row] = Hfusion[row]; + Kfusion_sympy(row) = Kfusion(row); + } + + // repeat calculation using matlab generated equations + + // Y axis innovation variance + mag_innov_var = (P(20,20) + R_MAG + P(0,20)*SH_MAG[2] + P(1,20)*SH_MAG[1] + P(2,20)*SH_MAG[0] - P(17,20)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - (2.0f*q0*q3 - 2.0f*q1*q2)*(P(20,16) + P(0,16)*SH_MAG[2] + P(1,16)*SH_MAG[1] + P(2,16)*SH_MAG[0] - P(17,16)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,16)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,16)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,16)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + (2.0f*q0*q1 + 2.0f*q2*q3)*(P(20,18) + P(0,18)*SH_MAG[2] + P(1,18)*SH_MAG[1] + P(2,18)*SH_MAG[0] - P(17,18)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,18)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,18)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,18)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - (SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)*(P(20,3) + P(0,3)*SH_MAG[2] + P(1,3)*SH_MAG[1] + P(2,3)*SH_MAG[0] - P(17,3)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,3)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,3)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,3)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - P(16,20)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,20)*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_MAG[2]*(P(20,0) + P(0,0)*SH_MAG[2] + P(1,0)*SH_MAG[1] + P(2,0)*SH_MAG[0] - P(17,0)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,0)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,0)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,0)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + SH_MAG[1]*(P(20,1) + P(0,1)*SH_MAG[2] + P(1,1)*SH_MAG[1] + P(2,1)*SH_MAG[0] - P(17,1)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,1)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,1)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,1)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + SH_MAG[0]*(P(20,2) + P(0,2)*SH_MAG[2] + P(1,2)*SH_MAG[1] + P(2,2)*SH_MAG[0] - P(17,2)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,2)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,2)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,2)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - (SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6])*(P(20,17) + P(0,17)*SH_MAG[2] + P(1,17)*SH_MAG[1] + P(2,17)*SH_MAG[0] - P(17,17)*(SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]) - P(16,17)*(2.0f*q0*q3 - 2.0f*q1*q2) + P(18,17)*(2.0f*q0*q1 + 2.0f*q2*q3) - P(3,17)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - P(3,20)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)); + + // Calculate Y axis observation jacobians + H_MAG.setZero(); + H_MAG(0) = SH_MAG[2]; + H_MAG(1) = SH_MAG[1]; + H_MAG(2) = SH_MAG[0]; + H_MAG(3) = 2.0f*magD*q2 - SH_MAG[8] - SH_MAG[7]; + H_MAG(16) = 2.0f*q1*q2 - 2.0f*q0*q3; + H_MAG(17) = SH_MAG[4] - SH_MAG[3] - SH_MAG[5] + SH_MAG[6]; + H_MAG(18) = 2.0f*q0*q1 + 2.0f*q2*q3; + H_MAG(20) = 1.0f; + + // Calculate Y axis Kalman gains + float SK_MY[5]; + SK_MY[0] = 1.0f / mag_innov_var; + SK_MY[1] = SH_MAG[3] - SH_MAG[4] + SH_MAG[5] - SH_MAG[6]; + SK_MY[2] = SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2; + SK_MY[3] = 2.0f*q0*q3 - 2.0f*q1*q2; + SK_MY[4] = 2.0f*q0*q1 + 2.0f*q2*q3; + + if (update_all_states) { + Kfusion(0) = SK_MY[0]*(P(0,20) + P(0,0)*SH_MAG[2] + P(0,1)*SH_MAG[1] + P(0,2)*SH_MAG[0] - P(0,3)*SK_MY[2] - P(0,17)*SK_MY[1] - P(0,16)*SK_MY[3] + P(0,18)*SK_MY[4]); + Kfusion(1) = SK_MY[0]*(P(1,20) + P(1,0)*SH_MAG[2] + P(1,1)*SH_MAG[1] + P(1,2)*SH_MAG[0] - P(1,3)*SK_MY[2] - P(1,17)*SK_MY[1] - P(1,16)*SK_MY[3] + P(1,18)*SK_MY[4]); + Kfusion(2) = SK_MY[0]*(P(2,20) + P(2,0)*SH_MAG[2] + P(2,1)*SH_MAG[1] + P(2,2)*SH_MAG[0] - P(2,3)*SK_MY[2] - P(2,17)*SK_MY[1] - P(2,16)*SK_MY[3] + P(2,18)*SK_MY[4]); + Kfusion(3) = SK_MY[0]*(P(3,20) + P(3,0)*SH_MAG[2] + P(3,1)*SH_MAG[1] + P(3,2)*SH_MAG[0] - P(3,3)*SK_MY[2] - P(3,17)*SK_MY[1] - P(3,16)*SK_MY[3] + P(3,18)*SK_MY[4]); + Kfusion(4) = SK_MY[0]*(P(4,20) + P(4,0)*SH_MAG[2] + P(4,1)*SH_MAG[1] + P(4,2)*SH_MAG[0] - P(4,3)*SK_MY[2] - P(4,17)*SK_MY[1] - P(4,16)*SK_MY[3] + P(4,18)*SK_MY[4]); + Kfusion(5) = SK_MY[0]*(P(5,20) + P(5,0)*SH_MAG[2] + P(5,1)*SH_MAG[1] + P(5,2)*SH_MAG[0] - P(5,3)*SK_MY[2] - P(5,17)*SK_MY[1] - P(5,16)*SK_MY[3] + P(5,18)*SK_MY[4]); + Kfusion(6) = SK_MY[0]*(P(6,20) + P(6,0)*SH_MAG[2] + P(6,1)*SH_MAG[1] + P(6,2)*SH_MAG[0] - P(6,3)*SK_MY[2] - P(6,17)*SK_MY[1] - P(6,16)*SK_MY[3] + P(6,18)*SK_MY[4]); + Kfusion(7) = SK_MY[0]*(P(7,20) + P(7,0)*SH_MAG[2] + P(7,1)*SH_MAG[1] + P(7,2)*SH_MAG[0] - P(7,3)*SK_MY[2] - P(7,17)*SK_MY[1] - P(7,16)*SK_MY[3] + P(7,18)*SK_MY[4]); + Kfusion(8) = SK_MY[0]*(P(8,20) + P(8,0)*SH_MAG[2] + P(8,1)*SH_MAG[1] + P(8,2)*SH_MAG[0] - P(8,3)*SK_MY[2] - P(8,17)*SK_MY[1] - P(8,16)*SK_MY[3] + P(8,18)*SK_MY[4]); + Kfusion(9) = SK_MY[0]*(P(9,20) + P(9,0)*SH_MAG[2] + P(9,1)*SH_MAG[1] + P(9,2)*SH_MAG[0] - P(9,3)*SK_MY[2] - P(9,17)*SK_MY[1] - P(9,16)*SK_MY[3] + P(9,18)*SK_MY[4]); + Kfusion(10) = SK_MY[0]*(P(10,20) + P(10,0)*SH_MAG[2] + P(10,1)*SH_MAG[1] + P(10,2)*SH_MAG[0] - P(10,3)*SK_MY[2] - P(10,17)*SK_MY[1] - P(10,16)*SK_MY[3] + P(10,18)*SK_MY[4]); + Kfusion(11) = SK_MY[0]*(P(11,20) + P(11,0)*SH_MAG[2] + P(11,1)*SH_MAG[1] + P(11,2)*SH_MAG[0] - P(11,3)*SK_MY[2] - P(11,17)*SK_MY[1] - P(11,16)*SK_MY[3] + P(11,18)*SK_MY[4]); + Kfusion(12) = SK_MY[0]*(P(12,20) + P(12,0)*SH_MAG[2] + P(12,1)*SH_MAG[1] + P(12,2)*SH_MAG[0] - P(12,3)*SK_MY[2] - P(12,17)*SK_MY[1] - P(12,16)*SK_MY[3] + P(12,18)*SK_MY[4]); + Kfusion(13) = SK_MY[0]*(P(13,20) + P(13,0)*SH_MAG[2] + P(13,1)*SH_MAG[1] + P(13,2)*SH_MAG[0] - P(13,3)*SK_MY[2] - P(13,17)*SK_MY[1] - P(13,16)*SK_MY[3] + P(13,18)*SK_MY[4]); + Kfusion(14) = SK_MY[0]*(P(14,20) + P(14,0)*SH_MAG[2] + P(14,1)*SH_MAG[1] + P(14,2)*SH_MAG[0] - P(14,3)*SK_MY[2] - P(14,17)*SK_MY[1] - P(14,16)*SK_MY[3] + P(14,18)*SK_MY[4]); + Kfusion(15) = SK_MY[0]*(P(15,20) + P(15,0)*SH_MAG[2] + P(15,1)*SH_MAG[1] + P(15,2)*SH_MAG[0] - P(15,3)*SK_MY[2] - P(15,17)*SK_MY[1] - P(15,16)*SK_MY[3] + P(15,18)*SK_MY[4]); + Kfusion(22) = SK_MY[0]*(P(22,20) + P(22,0)*SH_MAG[2] + P(22,1)*SH_MAG[1] + P(22,2)*SH_MAG[0] - P(22,3)*SK_MY[2] - P(22,17)*SK_MY[1] - P(22,16)*SK_MY[3] + P(22,18)*SK_MY[4]); + Kfusion(23) = SK_MY[0]*(P(23,20) + P(23,0)*SH_MAG[2] + P(23,1)*SH_MAG[1] + P(23,2)*SH_MAG[0] - P(23,3)*SK_MY[2] - P(23,17)*SK_MY[1] - P(23,16)*SK_MY[3] + P(23,18)*SK_MY[4]); + } + + Kfusion(16) = SK_MY[0]*(P(16,20) + P(16,0)*SH_MAG[2] + P(16,1)*SH_MAG[1] + P(16,2)*SH_MAG[0] - P(16,3)*SK_MY[2] - P(16,17)*SK_MY[1] - P(16,16)*SK_MY[3] + P(16,18)*SK_MY[4]); + Kfusion(17) = SK_MY[0]*(P(17,20) + P(17,0)*SH_MAG[2] + P(17,1)*SH_MAG[1] + P(17,2)*SH_MAG[0] - P(17,3)*SK_MY[2] - P(17,17)*SK_MY[1] - P(17,16)*SK_MY[3] + P(17,18)*SK_MY[4]); + Kfusion(18) = SK_MY[0]*(P(18,20) + P(18,0)*SH_MAG[2] + P(18,1)*SH_MAG[1] + P(18,2)*SH_MAG[0] - P(18,3)*SK_MY[2] - P(18,17)*SK_MY[1] - P(18,16)*SK_MY[3] + P(18,18)*SK_MY[4]); + Kfusion(19) = SK_MY[0]*(P(19,20) + P(19,0)*SH_MAG[2] + P(19,1)*SH_MAG[1] + P(19,2)*SH_MAG[0] - P(19,3)*SK_MY[2] - P(19,17)*SK_MY[1] - P(19,16)*SK_MY[3] + P(19,18)*SK_MY[4]); + Kfusion(20) = SK_MY[0]*(P(20,20) + P(20,0)*SH_MAG[2] + P(20,1)*SH_MAG[1] + P(20,2)*SH_MAG[0] - P(20,3)*SK_MY[2] - P(20,17)*SK_MY[1] - P(20,16)*SK_MY[3] + P(20,18)*SK_MY[4]); + Kfusion(21) = SK_MY[0]*(P(21,20) + P(21,0)*SH_MAG[2] + P(21,1)*SH_MAG[1] + P(21,2)*SH_MAG[0] - P(21,3)*SK_MY[2] - P(21,17)*SK_MY[1] - P(21,16)*SK_MY[3] + P(21,18)*SK_MY[4]); + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (H_MAG(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_MAG(row)) / fabsf(H_MAG(row)); + } else if (Hfusion_sympy[row] != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_MAG(row)) / fabsf(Hfusion_sympy[row]); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_MAG(row); + max_new = Hfusion_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Magnetomer Y axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Magnetomer Y axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Magnetomer Y axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Magnetomer Y axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + // Compare Z axis equations + { + // recalculate innovation variance becasue states and covariances have changed due to previous fusion + const float HKZ0 = magD*q0 - magE*q1 + magN*q2; + const float HKZ1 = magN*q3; + const float HKZ2 = magD*q1; + const float HKZ3 = magE*q0; + const float HKZ4 = -magD*q2 + magE*q3 + magN*q0; + const float HKZ5 = magD*q3 + magE*q2 + magN*q1; + const float HKZ6 = q0*q2 + q1*q3; + const float HKZ7 = q2*q3; + const float HKZ8 = q0*q1; + const float HKZ9 = powf(q0, 2) - powf(q1, 2) - powf(q2, 2) + powf(q3, 2); + const float HKZ10 = 2*HKZ6; + const float HKZ11 = -2*HKZ7 + 2*HKZ8; + const float HKZ12 = 2*HKZ5; + const float HKZ13 = 2*HKZ0; + const float HKZ14 = -2*HKZ1 + 2*HKZ2 + 2*HKZ3; + const float HKZ15 = 2*HKZ4; + const float HKZ16 = HKZ10*P(0,16) - HKZ11*P(0,17) + HKZ12*P(0,3) + HKZ13*P(0,0) - HKZ14*P(0,1) + HKZ15*P(0,2) + HKZ9*P(0,18) + P(0,21); + const float HKZ17 = HKZ10*P(16,18) - HKZ11*P(17,18) + HKZ12*P(3,18) + HKZ13*P(0,18) - HKZ14*P(1,18) + HKZ15*P(2,18) + HKZ9*P(18,18) + P(18,21); + const float HKZ18 = HKZ10*P(16,17) - HKZ11*P(17,17) + HKZ12*P(3,17) + HKZ13*P(0,17) - HKZ14*P(1,17) + HKZ15*P(2,17) + HKZ9*P(17,18) + P(17,21); + const float HKZ19 = HKZ10*P(1,16) - HKZ11*P(1,17) + HKZ12*P(1,3) + HKZ13*P(0,1) - HKZ14*P(1,1) + HKZ15*P(1,2) + HKZ9*P(1,18) + P(1,21); + const float HKZ20 = HKZ10*P(16,16) - HKZ11*P(16,17) + HKZ12*P(3,16) + HKZ13*P(0,16) - HKZ14*P(1,16) + HKZ15*P(2,16) + HKZ9*P(16,18) + P(16,21); + const float HKZ21 = HKZ10*P(3,16) - HKZ11*P(3,17) + HKZ12*P(3,3) + HKZ13*P(0,3) - HKZ14*P(1,3) + HKZ15*P(2,3) + HKZ9*P(3,18) + P(3,21); + const float HKZ22 = HKZ10*P(2,16) - HKZ11*P(2,17) + HKZ12*P(2,3) + HKZ13*P(0,2) - HKZ14*P(1,2) + HKZ15*P(2,2) + HKZ9*P(2,18) + P(2,21); + const float HKZ23 = HKZ10*P(16,21) - HKZ11*P(17,21) + HKZ12*P(3,21) + HKZ13*P(0,21) - HKZ14*P(1,21) + HKZ15*P(2,21) + HKZ9*P(18,21) + P(21,21); + const float HKZ24 = 1.0F/(HKZ10*HKZ20 - HKZ11*HKZ18 + HKZ12*HKZ21 + HKZ13*HKZ16 - HKZ14*HKZ19 + HKZ15*HKZ22 + HKZ17*HKZ9 + HKZ23 + R_MAG); + + // calculate Z axis observation jacobians + memset(Hfusion, 0, sizeof(Hfusion)); + Hfusion[0] = 2*HKZ0; + Hfusion[1] = 2*HKZ1 - 2*HKZ2 - 2*HKZ3; + Hfusion[2] = 2*HKZ4; + Hfusion[3] = 2*HKZ5; + Hfusion[16] = 2*HKZ6; + Hfusion[17] = 2*HKZ7 - 2*HKZ8; + Hfusion[18] = HKZ9; + Hfusion[21] = 1; + + // Calculate Z axis Kalman gains + if (update_all_states) { + Kfusion(0) = HKZ16*HKZ24; + Kfusion(1) = HKZ19*HKZ24; + Kfusion(2) = HKZ22*HKZ24; + Kfusion(3) = HKZ21*HKZ24; + + for (unsigned row = 4; row <= 15; row++) { + Kfusion(row) = HKZ24*(HKZ10*P(row,16) - HKZ11*P(row,17) + HKZ12*P(3,row) + HKZ13*P(0,row) - HKZ14*P(1,row) + HKZ15*P(2,row) + HKZ9*P(row,18) + P(row,21)); + } + + for (unsigned row = 22; row <= 23; row++) { + Kfusion(row) = HKZ24*(HKZ10*P(16,row) - HKZ11*P(17,row) + HKZ12*P(3,row) + HKZ13*P(0,row) - HKZ14*P(1,row) + HKZ15*P(2,row) + HKZ9*P(18,row) + P(21,row)); + } + } + + Kfusion(16) = HKZ20*HKZ24; + Kfusion(17) = HKZ18*HKZ24; + Kfusion(18) = HKZ17*HKZ24; + + for (unsigned row = 19; row <= 20; row++) { + Kfusion(row) = HKZ24*(HKZ10*P(16,row) - HKZ11*P(17,row) + HKZ12*P(3,row) + HKZ13*P(0,row) - HKZ14*P(1,row) + HKZ15*P(2,row) + HKZ9*P(18,row) + P(row,21)); + } + + Kfusion(21) = HKZ23*HKZ24; + + // save output and repeat calculation using legacy matlab generated code + float Hfusion_sympy[24]; + Vector24f Kfusion_sympy; + for (int row=0; row<24; row++) { + Hfusion_sympy[row] = Hfusion[row]; + Kfusion_sympy(row) = Kfusion(row); + } + + // repeat calculation using matlab generated equations + + // Z axis innovation variance + mag_innov_var = (P(21,21) + R_MAG + P(0,21)*SH_MAG[1] - P(1,21)*SH_MAG[2] + P(3,21)*SH_MAG[0] + P(18,21)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + (2.0f*q0*q2 + 2.0f*q1*q3)*(P(21,16) + P(0,16)*SH_MAG[1] - P(1,16)*SH_MAG[2] + P(3,16)*SH_MAG[0] + P(18,16)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,16)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,16)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,16)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - (2.0f*q0*q1 - 2.0f*q2*q3)*(P(21,17) + P(0,17)*SH_MAG[1] - P(1,17)*SH_MAG[2] + P(3,17)*SH_MAG[0] + P(18,17)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,17)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,17)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,17)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + (SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)*(P(21,2) + P(0,2)*SH_MAG[1] - P(1,2)*SH_MAG[2] + P(3,2)*SH_MAG[0] + P(18,2)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,2)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,2)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,2)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + P(16,21)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,21)*(2.0f*q0*q1 - 2.0f*q2*q3) + SH_MAG[1]*(P(21,0) + P(0,0)*SH_MAG[1] - P(1,0)*SH_MAG[2] + P(3,0)*SH_MAG[0] + P(18,0)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,0)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,0)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,0)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) - SH_MAG[2]*(P(21,1) + P(0,1)*SH_MAG[1] - P(1,1)*SH_MAG[2] + P(3,1)*SH_MAG[0] + P(18,1)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,1)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,1)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,1)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + SH_MAG[0]*(P(21,3) + P(0,3)*SH_MAG[1] - P(1,3)*SH_MAG[2] + P(3,3)*SH_MAG[0] + P(18,3)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,3)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,3)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,3)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + (SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6])*(P(21,18) + P(0,18)*SH_MAG[1] - P(1,18)*SH_MAG[2] + P(3,18)*SH_MAG[0] + P(18,18)*(SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]) + P(16,18)*(2.0f*q0*q2 + 2.0f*q1*q3) - P(17,18)*(2.0f*q0*q1 - 2.0f*q2*q3) + P(2,18)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)) + P(2,21)*(SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2)); + + // calculate Z axis observation jacobians + H_MAG.setZero(); + H_MAG(0) = SH_MAG[1]; + H_MAG(1) = -SH_MAG[2]; + H_MAG(2) = SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2; + H_MAG(3) = SH_MAG[0]; + H_MAG(16) = 2.0f*q0*q2 + 2.0f*q1*q3; + H_MAG(17) = 2.0f*q2*q3 - 2.0f*q0*q1; + H_MAG(18) = SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]; + H_MAG(21) = 1.0f; + + // Calculate Z axis Kalman gains + float SK_MZ[5]; + SK_MZ[0] = 1.0f / mag_innov_var; + SK_MZ[1] = SH_MAG[3] - SH_MAG[4] - SH_MAG[5] + SH_MAG[6]; + SK_MZ[2] = SH_MAG[7] + SH_MAG[8] - 2.0f*magD*q2; + SK_MZ[3] = 2.0f*q0*q1 - 2.0f*q2*q3; + SK_MZ[4] = 2.0f*q0*q2 + 2.0f*q1*q3; + + if (update_all_states) { + Kfusion(0) = SK_MZ[0]*(P(0,21) + P(0,0)*SH_MAG[1] - P(0,1)*SH_MAG[2] + P(0,3)*SH_MAG[0] + P(0,2)*SK_MZ[2] + P(0,18)*SK_MZ[1] + P(0,16)*SK_MZ[4] - P(0,17)*SK_MZ[3]); + Kfusion(1) = SK_MZ[0]*(P(1,21) + P(1,0)*SH_MAG[1] - P(1,1)*SH_MAG[2] + P(1,3)*SH_MAG[0] + P(1,2)*SK_MZ[2] + P(1,18)*SK_MZ[1] + P(1,16)*SK_MZ[4] - P(1,17)*SK_MZ[3]); + Kfusion(2) = SK_MZ[0]*(P(2,21) + P(2,0)*SH_MAG[1] - P(2,1)*SH_MAG[2] + P(2,3)*SH_MAG[0] + P(2,2)*SK_MZ[2] + P(2,18)*SK_MZ[1] + P(2,16)*SK_MZ[4] - P(2,17)*SK_MZ[3]); + Kfusion(3) = SK_MZ[0]*(P(3,21) + P(3,0)*SH_MAG[1] - P(3,1)*SH_MAG[2] + P(3,3)*SH_MAG[0] + P(3,2)*SK_MZ[2] + P(3,18)*SK_MZ[1] + P(3,16)*SK_MZ[4] - P(3,17)*SK_MZ[3]); + Kfusion(4) = SK_MZ[0]*(P(4,21) + P(4,0)*SH_MAG[1] - P(4,1)*SH_MAG[2] + P(4,3)*SH_MAG[0] + P(4,2)*SK_MZ[2] + P(4,18)*SK_MZ[1] + P(4,16)*SK_MZ[4] - P(4,17)*SK_MZ[3]); + Kfusion(5) = SK_MZ[0]*(P(5,21) + P(5,0)*SH_MAG[1] - P(5,1)*SH_MAG[2] + P(5,3)*SH_MAG[0] + P(5,2)*SK_MZ[2] + P(5,18)*SK_MZ[1] + P(5,16)*SK_MZ[4] - P(5,17)*SK_MZ[3]); + Kfusion(6) = SK_MZ[0]*(P(6,21) + P(6,0)*SH_MAG[1] - P(6,1)*SH_MAG[2] + P(6,3)*SH_MAG[0] + P(6,2)*SK_MZ[2] + P(6,18)*SK_MZ[1] + P(6,16)*SK_MZ[4] - P(6,17)*SK_MZ[3]); + Kfusion(7) = SK_MZ[0]*(P(7,21) + P(7,0)*SH_MAG[1] - P(7,1)*SH_MAG[2] + P(7,3)*SH_MAG[0] + P(7,2)*SK_MZ[2] + P(7,18)*SK_MZ[1] + P(7,16)*SK_MZ[4] - P(7,17)*SK_MZ[3]); + Kfusion(8) = SK_MZ[0]*(P(8,21) + P(8,0)*SH_MAG[1] - P(8,1)*SH_MAG[2] + P(8,3)*SH_MAG[0] + P(8,2)*SK_MZ[2] + P(8,18)*SK_MZ[1] + P(8,16)*SK_MZ[4] - P(8,17)*SK_MZ[3]); + Kfusion(9) = SK_MZ[0]*(P(9,21) + P(9,0)*SH_MAG[1] - P(9,1)*SH_MAG[2] + P(9,3)*SH_MAG[0] + P(9,2)*SK_MZ[2] + P(9,18)*SK_MZ[1] + P(9,16)*SK_MZ[4] - P(9,17)*SK_MZ[3]); + Kfusion(10) = SK_MZ[0]*(P(10,21) + P(10,0)*SH_MAG[1] - P(10,1)*SH_MAG[2] + P(10,3)*SH_MAG[0] + P(10,2)*SK_MZ[2] + P(10,18)*SK_MZ[1] + P(10,16)*SK_MZ[4] - P(10,17)*SK_MZ[3]); + Kfusion(11) = SK_MZ[0]*(P(11,21) + P(11,0)*SH_MAG[1] - P(11,1)*SH_MAG[2] + P(11,3)*SH_MAG[0] + P(11,2)*SK_MZ[2] + P(11,18)*SK_MZ[1] + P(11,16)*SK_MZ[4] - P(11,17)*SK_MZ[3]); + Kfusion(12) = SK_MZ[0]*(P(12,21) + P(12,0)*SH_MAG[1] - P(12,1)*SH_MAG[2] + P(12,3)*SH_MAG[0] + P(12,2)*SK_MZ[2] + P(12,18)*SK_MZ[1] + P(12,16)*SK_MZ[4] - P(12,17)*SK_MZ[3]); + Kfusion(13) = SK_MZ[0]*(P(13,21) + P(13,0)*SH_MAG[1] - P(13,1)*SH_MAG[2] + P(13,3)*SH_MAG[0] + P(13,2)*SK_MZ[2] + P(13,18)*SK_MZ[1] + P(13,16)*SK_MZ[4] - P(13,17)*SK_MZ[3]); + Kfusion(14) = SK_MZ[0]*(P(14,21) + P(14,0)*SH_MAG[1] - P(14,1)*SH_MAG[2] + P(14,3)*SH_MAG[0] + P(14,2)*SK_MZ[2] + P(14,18)*SK_MZ[1] + P(14,16)*SK_MZ[4] - P(14,17)*SK_MZ[3]); + Kfusion(15) = SK_MZ[0]*(P(15,21) + P(15,0)*SH_MAG[1] - P(15,1)*SH_MAG[2] + P(15,3)*SH_MAG[0] + P(15,2)*SK_MZ[2] + P(15,18)*SK_MZ[1] + P(15,16)*SK_MZ[4] - P(15,17)*SK_MZ[3]); + Kfusion(22) = SK_MZ[0]*(P(22,21) + P(22,0)*SH_MAG[1] - P(22,1)*SH_MAG[2] + P(22,3)*SH_MAG[0] + P(22,2)*SK_MZ[2] + P(22,18)*SK_MZ[1] + P(22,16)*SK_MZ[4] - P(22,17)*SK_MZ[3]); + Kfusion(23) = SK_MZ[0]*(P(23,21) + P(23,0)*SH_MAG[1] - P(23,1)*SH_MAG[2] + P(23,3)*SH_MAG[0] + P(23,2)*SK_MZ[2] + P(23,18)*SK_MZ[1] + P(23,16)*SK_MZ[4] - P(23,17)*SK_MZ[3]); + } + + Kfusion(16) = SK_MZ[0]*(P(16,21) + P(16,0)*SH_MAG[1] - P(16,1)*SH_MAG[2] + P(16,3)*SH_MAG[0] + P(16,2)*SK_MZ[2] + P(16,18)*SK_MZ[1] + P(16,16)*SK_MZ[4] - P(16,17)*SK_MZ[3]); + Kfusion(17) = SK_MZ[0]*(P(17,21) + P(17,0)*SH_MAG[1] - P(17,1)*SH_MAG[2] + P(17,3)*SH_MAG[0] + P(17,2)*SK_MZ[2] + P(17,18)*SK_MZ[1] + P(17,16)*SK_MZ[4] - P(17,17)*SK_MZ[3]); + Kfusion(18) = SK_MZ[0]*(P(18,21) + P(18,0)*SH_MAG[1] - P(18,1)*SH_MAG[2] + P(18,3)*SH_MAG[0] + P(18,2)*SK_MZ[2] + P(18,18)*SK_MZ[1] + P(18,16)*SK_MZ[4] - P(18,17)*SK_MZ[3]); + Kfusion(19) = SK_MZ[0]*(P(19,21) + P(19,0)*SH_MAG[1] - P(19,1)*SH_MAG[2] + P(19,3)*SH_MAG[0] + P(19,2)*SK_MZ[2] + P(19,18)*SK_MZ[1] + P(19,16)*SK_MZ[4] - P(19,17)*SK_MZ[3]); + Kfusion(20) = SK_MZ[0]*(P(20,21) + P(20,0)*SH_MAG[1] - P(20,1)*SH_MAG[2] + P(20,3)*SH_MAG[0] + P(20,2)*SK_MZ[2] + P(20,18)*SK_MZ[1] + P(20,16)*SK_MZ[4] - P(20,17)*SK_MZ[3]); + Kfusion(21) = SK_MZ[0]*(P(21,21) + P(21,0)*SH_MAG[1] - P(21,1)*SH_MAG[2] + P(21,3)*SH_MAG[0] + P(21,2)*SK_MZ[2] + P(21,18)*SK_MZ[1] + P(21,16)*SK_MZ[4] - P(21,17)*SK_MZ[3]); + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (H_MAG(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_MAG(row)) / fabsf(H_MAG(row)); + } else if (Hfusion_sympy[row] != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_MAG(row)) / fabsf(Hfusion_sympy[row]); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_MAG(row); + max_new = Hfusion_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Magnetomer Z axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Magnetomer Z axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Magnetomer Z axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Magnetomer Z axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_generated.cpp new file mode 100644 index 0000000000..47dd3b1b45 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_generated.cpp @@ -0,0 +1,344 @@ +// Axis 0 equations +// Sub Expressions +const float HKX0 = magE*q3; +const float HKX1 = magD*q2; +const float HKX2 = magD*q3 + magE*q2; +const float HKX3 = magE*q1; +const float HKX4 = magD*q0; +const float HKX5 = 2*magN; +const float HKX6 = HKX5*q2; +const float HKX7 = -HKX5*q3 + magD*q1 + magE*q0; +const float HKX8 = 2*powf(q2, 2); +const float HKX9 = 2*powf(q3, 2); +const float HKX10 = q0*q3 + q1*q2; +const float HKX11 = q1*q3; +const float HKX12 = q0*q2; +const float HKX13 = 2*HKX2; +const float HKX14 = HKX13*P(0,1); +const float HKX15 = 2*HKX10; +const float HKX16 = HKX15*P(0,17); +const float HKX17 = -2*HKX0 + 2*HKX1; +const float HKX18 = HKX17*P(0,0); +const float HKX19 = -2*HKX11 + 2*HKX12; +const float HKX20 = HKX19*P(0,18); +const float HKX21 = HKX8 + HKX9 - 1; +const float HKX22 = HKX21*P(0,16); +const float HKX23 = 2*HKX7; +const float HKX24 = HKX23*P(0,3); +const float HKX25 = -2*HKX3 + 2*HKX4 + 2*HKX6; +const float HKX26 = HKX25*P(0,2); +const float HKX27 = HKX13*P(1,16); +const float HKX28 = HKX15*P(16,17); +const float HKX29 = HKX17*P(0,16); +const float HKX30 = HKX19*P(16,18); +const float HKX31 = HKX23*P(3,16); +const float HKX32 = HKX21*P(16,16); +const float HKX33 = HKX25*P(2,16); +const float HKX34 = HKX13*P(1,1); +const float HKX35 = HKX15*P(1,17); +const float HKX36 = HKX17*P(0,1); +const float HKX37 = HKX19*P(1,18); +const float HKX38 = HKX23*P(1,3); +const float HKX39 = HKX21*P(1,16); +const float HKX40 = HKX25*P(1,2); +const float HKX41 = HKX13*P(1,17); +const float HKX42 = HKX15*P(17,17); +const float HKX43 = HKX17*P(0,17); +const float HKX44 = HKX19*P(17,18); +const float HKX45 = HKX23*P(3,17); +const float HKX46 = HKX21*P(16,17); +const float HKX47 = HKX25*P(2,17); +const float HKX48 = HKX13*P(1,3); +const float HKX49 = HKX15*P(3,17); +const float HKX50 = HKX17*P(0,3); +const float HKX51 = HKX19*P(3,18); +const float HKX52 = HKX23*P(3,3); +const float HKX53 = HKX25*P(2,3); +const float HKX54 = HKX21*P(3,16); +const float HKX55 = HKX13*P(1,18); +const float HKX56 = HKX15*P(17,18); +const float HKX57 = HKX17*P(0,18); +const float HKX58 = HKX19*P(18,18); +const float HKX59 = HKX23*P(3,18); +const float HKX60 = HKX21*P(16,18); +const float HKX61 = HKX25*P(2,18); +const float HKX62 = HKX13*P(1,2); +const float HKX63 = HKX15*P(2,17); +const float HKX64 = HKX17*P(0,2); +const float HKX65 = HKX19*P(2,18); +const float HKX66 = HKX23*P(2,3); +const float HKX67 = HKX21*P(2,16); +const float HKX68 = HKX25*P(2,2); +const float HKX69 = -HKX13*P(1,19) - HKX15*P(17,19) + HKX17*P(0,19) + HKX19*P(18,19) + HKX21*P(16,19) - HKX23*P(3,19) + HKX25*P(2,19) - P(19,19); +const float HKX70 = 1.0F/(-HKX13*(HKX34 + HKX35 - HKX36 - HKX37 + HKX38 - HKX39 - HKX40 + P(1,19)) - HKX15*(HKX41 + HKX42 - HKX43 - HKX44 + HKX45 - HKX46 - HKX47 + P(17,19)) + HKX17*(HKX14 + HKX16 - HKX18 - HKX20 - HKX22 + HKX24 - HKX26 + P(0,19)) + HKX19*(HKX55 + HKX56 - HKX57 - HKX58 + HKX59 - HKX60 - HKX61 + P(18,19)) + HKX21*(HKX27 + HKX28 - HKX29 - HKX30 + HKX31 - HKX32 - HKX33 + P(16,19)) - HKX23*(HKX48 + HKX49 - HKX50 - HKX51 + HKX52 - HKX53 - HKX54 + P(3,19)) + HKX25*(HKX62 + HKX63 - HKX64 - HKX65 + HKX66 - HKX67 - HKX68 + P(2,19)) + HKX69 - R_MAG); + + +// Observation Jacobians +Hfusion.at<0>() = 2*HKX0 - 2*HKX1; +Hfusion.at<1>() = 2*HKX2; +Hfusion.at<2>() = 2*HKX3 - 2*HKX4 - 2*HKX6; +Hfusion.at<3>() = 2*HKX7; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = -HKX8 - HKX9 + 1; +Hfusion.at<17>() = 2*HKX10; +Hfusion.at<18>() = 2*HKX11 - 2*HKX12; +Hfusion.at<19>() = 1; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = HKX70*(-HKX14 - HKX16 + HKX18 + HKX20 + HKX22 - HKX24 + HKX26 - P(0,19)); +Kfusion(1) = HKX70*(-HKX34 - HKX35 + HKX36 + HKX37 - HKX38 + HKX39 + HKX40 - P(1,19)); +Kfusion(2) = HKX70*(-HKX62 - HKX63 + HKX64 + HKX65 - HKX66 + HKX67 + HKX68 - P(2,19)); +Kfusion(3) = HKX70*(-HKX48 - HKX49 + HKX50 + HKX51 - HKX52 + HKX53 + HKX54 - P(3,19)); +Kfusion(4) = HKX70*(-HKX13*P(1,4) - HKX15*P(4,17) + HKX17*P(0,4) + HKX19*P(4,18) + HKX21*P(4,16) - HKX23*P(3,4) + HKX25*P(2,4) - P(4,19)); +Kfusion(5) = HKX70*(-HKX13*P(1,5) - HKX15*P(5,17) + HKX17*P(0,5) + HKX19*P(5,18) + HKX21*P(5,16) - HKX23*P(3,5) + HKX25*P(2,5) - P(5,19)); +Kfusion(6) = HKX70*(-HKX13*P(1,6) - HKX15*P(6,17) + HKX17*P(0,6) + HKX19*P(6,18) + HKX21*P(6,16) - HKX23*P(3,6) + HKX25*P(2,6) - P(6,19)); +Kfusion(7) = HKX70*(-HKX13*P(1,7) - HKX15*P(7,17) + HKX17*P(0,7) + HKX19*P(7,18) + HKX21*P(7,16) - HKX23*P(3,7) + HKX25*P(2,7) - P(7,19)); +Kfusion(8) = HKX70*(-HKX13*P(1,8) - HKX15*P(8,17) + HKX17*P(0,8) + HKX19*P(8,18) + HKX21*P(8,16) - HKX23*P(3,8) + HKX25*P(2,8) - P(8,19)); +Kfusion(9) = HKX70*(-HKX13*P(1,9) - HKX15*P(9,17) + HKX17*P(0,9) + HKX19*P(9,18) + HKX21*P(9,16) - HKX23*P(3,9) + HKX25*P(2,9) - P(9,19)); +Kfusion(10) = HKX70*(-HKX13*P(1,10) - HKX15*P(10,17) + HKX17*P(0,10) + HKX19*P(10,18) + HKX21*P(10,16) - HKX23*P(3,10) + HKX25*P(2,10) - P(10,19)); +Kfusion(11) = HKX70*(-HKX13*P(1,11) - HKX15*P(11,17) + HKX17*P(0,11) + HKX19*P(11,18) + HKX21*P(11,16) - HKX23*P(3,11) + HKX25*P(2,11) - P(11,19)); +Kfusion(12) = HKX70*(-HKX13*P(1,12) - HKX15*P(12,17) + HKX17*P(0,12) + HKX19*P(12,18) + HKX21*P(12,16) - HKX23*P(3,12) + HKX25*P(2,12) - P(12,19)); +Kfusion(13) = HKX70*(-HKX13*P(1,13) - HKX15*P(13,17) + HKX17*P(0,13) + HKX19*P(13,18) + HKX21*P(13,16) - HKX23*P(3,13) + HKX25*P(2,13) - P(13,19)); +Kfusion(14) = HKX70*(-HKX13*P(1,14) - HKX15*P(14,17) + HKX17*P(0,14) + HKX19*P(14,18) + HKX21*P(14,16) - HKX23*P(3,14) + HKX25*P(2,14) - P(14,19)); +Kfusion(15) = HKX70*(-HKX13*P(1,15) - HKX15*P(15,17) + HKX17*P(0,15) + HKX19*P(15,18) + HKX21*P(15,16) - HKX23*P(3,15) + HKX25*P(2,15) - P(15,19)); +Kfusion(16) = HKX70*(-HKX27 - HKX28 + HKX29 + HKX30 - HKX31 + HKX32 + HKX33 - P(16,19)); +Kfusion(17) = HKX70*(-HKX41 - HKX42 + HKX43 + HKX44 - HKX45 + HKX46 + HKX47 - P(17,19)); +Kfusion(18) = HKX70*(-HKX55 - HKX56 + HKX57 + HKX58 - HKX59 + HKX60 + HKX61 - P(18,19)); +Kfusion(19) = HKX69*HKX70; +Kfusion(20) = HKX70*(-HKX13*P(1,20) - HKX15*P(17,20) + HKX17*P(0,20) + HKX19*P(18,20) + HKX21*P(16,20) - HKX23*P(3,20) + HKX25*P(2,20) - P(19,20)); +Kfusion(21) = HKX70*(-HKX13*P(1,21) - HKX15*P(17,21) + HKX17*P(0,21) + HKX19*P(18,21) + HKX21*P(16,21) - HKX23*P(3,21) + HKX25*P(2,21) - P(19,21)); +Kfusion(22) = HKX70*(-HKX13*P(1,22) - HKX15*P(17,22) + HKX17*P(0,22) + HKX19*P(18,22) + HKX21*P(16,22) - HKX23*P(3,22) + HKX25*P(2,22) - P(19,22)); +Kfusion(23) = HKX70*(-HKX13*P(1,23) - HKX15*P(17,23) + HKX17*P(0,23) + HKX19*P(18,23) + HKX21*P(16,23) - HKX23*P(3,23) + HKX25*P(2,23) - P(19,23)); + + +// Axis 1 equations +// Sub Expressions +const float HKY0 = magD*q1 - magN*q3; +const float HKY1 = 2*magE; +const float HKY2 = -HKY1*q1 + magD*q0 + magN*q2; +const float HKY3 = magD*q3 + magN*q1; +const float HKY4 = magD*q2; +const float HKY5 = HKY1*q3; +const float HKY6 = magN*q0; +const float HKY7 = q1*q2; +const float HKY8 = q0*q3; +const float HKY9 = 2*powf(q1, 2); +const float HKY10 = 2*powf(q3, 2); +const float HKY11 = q0*q1 + q2*q3; +const float HKY12 = 2*HKY11; +const float HKY13 = 2*HKY3; +const float HKY14 = 2*HKY0; +const float HKY15 = -2*HKY7 + 2*HKY8; +const float HKY16 = 2*HKY2; +const float HKY17 = HKY10 + HKY9 - 1; +const float HKY18 = -2*HKY4 + 2*HKY5 + 2*HKY6; +const float HKY19 = HKY12*P(0,18) + HKY13*P(0,2) + HKY14*P(0,0) - HKY15*P(0,16) + HKY16*P(0,1) - HKY17*P(0,17) - HKY18*P(0,3) + P(0,20); +const float HKY20 = HKY12*P(17,18) + HKY13*P(2,17) + HKY14*P(0,17) - HKY15*P(16,17) + HKY16*P(1,17) - HKY17*P(17,17) - HKY18*P(3,17) + P(17,20); +const float HKY21 = HKY12*P(16,18) + HKY13*P(2,16) + HKY14*P(0,16) - HKY15*P(16,16) + HKY16*P(1,16) - HKY17*P(16,17) - HKY18*P(3,16) + P(16,20); +const float HKY22 = HKY12*P(3,18) + HKY13*P(2,3) + HKY14*P(0,3) - HKY15*P(3,16) + HKY16*P(1,3) - HKY17*P(3,17) - HKY18*P(3,3) + P(3,20); +const float HKY23 = HKY12*P(2,18) + HKY13*P(2,2) + HKY14*P(0,2) - HKY15*P(2,16) + HKY16*P(1,2) - HKY17*P(2,17) - HKY18*P(2,3) + P(2,20); +const float HKY24 = HKY12*P(18,18) + HKY13*P(2,18) + HKY14*P(0,18) - HKY15*P(16,18) + HKY16*P(1,18) - HKY17*P(17,18) - HKY18*P(3,18) + P(18,20); +const float HKY25 = HKY12*P(1,18) + HKY13*P(1,2) + HKY14*P(0,1) - HKY15*P(1,16) + HKY16*P(1,1) - HKY17*P(1,17) - HKY18*P(1,3) + P(1,20); +const float HKY26 = HKY12*P(18,20) + HKY13*P(2,20) + HKY14*P(0,20) - HKY15*P(16,20) + HKY16*P(1,20) - HKY17*P(17,20) - HKY18*P(3,20) + P(20,20); +const float HKY27 = 1.0F/(HKY12*HKY24 + HKY13*HKY23 + HKY14*HKY19 - HKY15*HKY21 + HKY16*HKY25 - HKY17*HKY20 - HKY18*HKY22 + HKY26 + R_MAG); + + +// Observation Jacobians +Hfusion.at<0>() = 2*HKY0; +Hfusion.at<1>() = 2*HKY2; +Hfusion.at<2>() = 2*HKY3; +Hfusion.at<3>() = 2*HKY4 - 2*HKY5 - 2*HKY6; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 2*HKY7 - 2*HKY8; +Hfusion.at<17>() = -HKY10 - HKY9 + 1; +Hfusion.at<18>() = 2*HKY11; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 1; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = HKY19*HKY27; +Kfusion(1) = HKY25*HKY27; +Kfusion(2) = HKY23*HKY27; +Kfusion(3) = HKY22*HKY27; +Kfusion(4) = HKY27*(HKY12*P(4,18) + HKY13*P(2,4) + HKY14*P(0,4) - HKY15*P(4,16) + HKY16*P(1,4) - HKY17*P(4,17) - HKY18*P(3,4) + P(4,20)); +Kfusion(5) = HKY27*(HKY12*P(5,18) + HKY13*P(2,5) + HKY14*P(0,5) - HKY15*P(5,16) + HKY16*P(1,5) - HKY17*P(5,17) - HKY18*P(3,5) + P(5,20)); +Kfusion(6) = HKY27*(HKY12*P(6,18) + HKY13*P(2,6) + HKY14*P(0,6) - HKY15*P(6,16) + HKY16*P(1,6) - HKY17*P(6,17) - HKY18*P(3,6) + P(6,20)); +Kfusion(7) = HKY27*(HKY12*P(7,18) + HKY13*P(2,7) + HKY14*P(0,7) - HKY15*P(7,16) + HKY16*P(1,7) - HKY17*P(7,17) - HKY18*P(3,7) + P(7,20)); +Kfusion(8) = HKY27*(HKY12*P(8,18) + HKY13*P(2,8) + HKY14*P(0,8) - HKY15*P(8,16) + HKY16*P(1,8) - HKY17*P(8,17) - HKY18*P(3,8) + P(8,20)); +Kfusion(9) = HKY27*(HKY12*P(9,18) + HKY13*P(2,9) + HKY14*P(0,9) - HKY15*P(9,16) + HKY16*P(1,9) - HKY17*P(9,17) - HKY18*P(3,9) + P(9,20)); +Kfusion(10) = HKY27*(HKY12*P(10,18) + HKY13*P(2,10) + HKY14*P(0,10) - HKY15*P(10,16) + HKY16*P(1,10) - HKY17*P(10,17) - HKY18*P(3,10) + P(10,20)); +Kfusion(11) = HKY27*(HKY12*P(11,18) + HKY13*P(2,11) + HKY14*P(0,11) - HKY15*P(11,16) + HKY16*P(1,11) - HKY17*P(11,17) - HKY18*P(3,11) + P(11,20)); +Kfusion(12) = HKY27*(HKY12*P(12,18) + HKY13*P(2,12) + HKY14*P(0,12) - HKY15*P(12,16) + HKY16*P(1,12) - HKY17*P(12,17) - HKY18*P(3,12) + P(12,20)); +Kfusion(13) = HKY27*(HKY12*P(13,18) + HKY13*P(2,13) + HKY14*P(0,13) - HKY15*P(13,16) + HKY16*P(1,13) - HKY17*P(13,17) - HKY18*P(3,13) + P(13,20)); +Kfusion(14) = HKY27*(HKY12*P(14,18) + HKY13*P(2,14) + HKY14*P(0,14) - HKY15*P(14,16) + HKY16*P(1,14) - HKY17*P(14,17) - HKY18*P(3,14) + P(14,20)); +Kfusion(15) = HKY27*(HKY12*P(15,18) + HKY13*P(2,15) + HKY14*P(0,15) - HKY15*P(15,16) + HKY16*P(1,15) - HKY17*P(15,17) - HKY18*P(3,15) + P(15,20)); +Kfusion(16) = HKY21*HKY27; +Kfusion(17) = HKY20*HKY27; +Kfusion(18) = HKY24*HKY27; +Kfusion(19) = HKY27*(HKY12*P(18,19) + HKY13*P(2,19) + HKY14*P(0,19) - HKY15*P(16,19) + HKY16*P(1,19) - HKY17*P(17,19) - HKY18*P(3,19) + P(19,20)); +Kfusion(20) = HKY26*HKY27; +Kfusion(21) = HKY27*(HKY12*P(18,21) + HKY13*P(2,21) + HKY14*P(0,21) - HKY15*P(16,21) + HKY16*P(1,21) - HKY17*P(17,21) - HKY18*P(3,21) + P(20,21)); +Kfusion(22) = HKY27*(HKY12*P(18,22) + HKY13*P(2,22) + HKY14*P(0,22) - HKY15*P(16,22) + HKY16*P(1,22) - HKY17*P(17,22) - HKY18*P(3,22) + P(20,22)); +Kfusion(23) = HKY27*(HKY12*P(18,23) + HKY13*P(2,23) + HKY14*P(0,23) - HKY15*P(16,23) + HKY16*P(1,23) - HKY17*P(17,23) - HKY18*P(3,23) + P(20,23)); + + +// Axis 2 equations +// Sub Expressions +const float HKZ0 = magN*q2; +const float HKZ1 = magE*q1; +const float HKZ2 = magN*q3; +const float HKZ3 = 2*magD; +const float HKZ4 = HKZ3*q1; +const float HKZ5 = magE*q0; +const float HKZ6 = -HKZ3*q2 + magE*q3 + magN*q0; +const float HKZ7 = magE*q2 + magN*q1; +const float HKZ8 = q0*q2 + q1*q3; +const float HKZ9 = q2*q3; +const float HKZ10 = q0*q1; +const float HKZ11 = 2*powf(q1, 2); +const float HKZ12 = 2*powf(q2, 2); +const float HKZ13 = 2*HKZ8; +const float HKZ14 = HKZ13*P(0,16); +const float HKZ15 = 2*HKZ7; +const float HKZ16 = HKZ15*P(0,3); +const float HKZ17 = -2*HKZ0 + 2*HKZ1; +const float HKZ18 = HKZ17*P(0,0); +const float HKZ19 = 2*HKZ10 - 2*HKZ9; +const float HKZ20 = HKZ19*P(0,17); +const float HKZ21 = HKZ11 + HKZ12 - 1; +const float HKZ22 = HKZ21*P(0,18); +const float HKZ23 = 2*HKZ6; +const float HKZ24 = HKZ23*P(0,2); +const float HKZ25 = -2*HKZ2 + 2*HKZ4 + 2*HKZ5; +const float HKZ26 = HKZ25*P(0,1); +const float HKZ27 = HKZ13*P(16,18); +const float HKZ28 = HKZ15*P(3,18); +const float HKZ29 = HKZ17*P(0,18); +const float HKZ30 = HKZ19*P(17,18); +const float HKZ31 = HKZ23*P(2,18); +const float HKZ32 = HKZ25*P(1,18); +const float HKZ33 = HKZ21*P(18,18); +const float HKZ34 = HKZ13*P(3,16); +const float HKZ35 = HKZ15*P(3,3); +const float HKZ36 = HKZ17*P(0,3); +const float HKZ37 = HKZ19*P(3,17); +const float HKZ38 = HKZ23*P(2,3); +const float HKZ39 = HKZ25*P(1,3); +const float HKZ40 = HKZ21*P(3,18); +const float HKZ41 = HKZ13*P(16,16); +const float HKZ42 = HKZ15*P(3,16); +const float HKZ43 = HKZ17*P(0,16); +const float HKZ44 = HKZ19*P(16,17); +const float HKZ45 = HKZ23*P(2,16); +const float HKZ46 = HKZ25*P(1,16); +const float HKZ47 = HKZ21*P(16,18); +const float HKZ48 = HKZ13*P(2,16); +const float HKZ49 = HKZ15*P(2,3); +const float HKZ50 = HKZ17*P(0,2); +const float HKZ51 = HKZ19*P(2,17); +const float HKZ52 = HKZ23*P(2,2); +const float HKZ53 = HKZ25*P(1,2); +const float HKZ54 = HKZ21*P(2,18); +const float HKZ55 = HKZ13*P(16,17); +const float HKZ56 = HKZ15*P(3,17); +const float HKZ57 = HKZ17*P(0,17); +const float HKZ58 = HKZ19*P(17,17); +const float HKZ59 = HKZ23*P(2,17); +const float HKZ60 = HKZ25*P(1,17); +const float HKZ61 = HKZ21*P(17,18); +const float HKZ62 = HKZ13*P(1,16); +const float HKZ63 = HKZ15*P(1,3); +const float HKZ64 = HKZ17*P(0,1); +const float HKZ65 = HKZ19*P(1,17); +const float HKZ66 = HKZ23*P(1,2); +const float HKZ67 = HKZ25*P(1,1); +const float HKZ68 = HKZ21*P(1,18); +const float HKZ69 = -HKZ13*P(16,21) - HKZ15*P(3,21) + HKZ17*P(0,21) + HKZ19*P(17,21) + HKZ21*P(18,21) - HKZ23*P(2,21) + HKZ25*P(1,21) - P(21,21); +const float HKZ70 = 1.0F/(-HKZ13*(HKZ41 + HKZ42 - HKZ43 - HKZ44 + HKZ45 - HKZ46 - HKZ47 + P(16,21)) - HKZ15*(HKZ34 + HKZ35 - HKZ36 - HKZ37 + HKZ38 - HKZ39 - HKZ40 + P(3,21)) + HKZ17*(HKZ14 + HKZ16 - HKZ18 - HKZ20 - HKZ22 + HKZ24 - HKZ26 + P(0,21)) + HKZ19*(HKZ55 + HKZ56 - HKZ57 - HKZ58 + HKZ59 - HKZ60 - HKZ61 + P(17,21)) + HKZ21*(HKZ27 + HKZ28 - HKZ29 - HKZ30 + HKZ31 - HKZ32 - HKZ33 + P(18,21)) - HKZ23*(HKZ48 + HKZ49 - HKZ50 - HKZ51 + HKZ52 - HKZ53 - HKZ54 + P(2,21)) + HKZ25*(HKZ62 + HKZ63 - HKZ64 - HKZ65 + HKZ66 - HKZ67 - HKZ68 + P(1,21)) + HKZ69 - R_MAG); + + +// Observation Jacobians +Hfusion.at<0>() = 2*HKZ0 - 2*HKZ1; +Hfusion.at<1>() = 2*HKZ2 - 2*HKZ4 - 2*HKZ5; +Hfusion.at<2>() = 2*HKZ6; +Hfusion.at<3>() = 2*HKZ7; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 2*HKZ8; +Hfusion.at<17>() = -2*HKZ10 + 2*HKZ9; +Hfusion.at<18>() = -HKZ11 - HKZ12 + 1; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 1; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = HKZ70*(-HKZ14 - HKZ16 + HKZ18 + HKZ20 + HKZ22 - HKZ24 + HKZ26 - P(0,21)); +Kfusion(1) = HKZ70*(-HKZ62 - HKZ63 + HKZ64 + HKZ65 - HKZ66 + HKZ67 + HKZ68 - P(1,21)); +Kfusion(2) = HKZ70*(-HKZ48 - HKZ49 + HKZ50 + HKZ51 - HKZ52 + HKZ53 + HKZ54 - P(2,21)); +Kfusion(3) = HKZ70*(-HKZ34 - HKZ35 + HKZ36 + HKZ37 - HKZ38 + HKZ39 + HKZ40 - P(3,21)); +Kfusion(4) = HKZ70*(-HKZ13*P(4,16) - HKZ15*P(3,4) + HKZ17*P(0,4) + HKZ19*P(4,17) + HKZ21*P(4,18) - HKZ23*P(2,4) + HKZ25*P(1,4) - P(4,21)); +Kfusion(5) = HKZ70*(-HKZ13*P(5,16) - HKZ15*P(3,5) + HKZ17*P(0,5) + HKZ19*P(5,17) + HKZ21*P(5,18) - HKZ23*P(2,5) + HKZ25*P(1,5) - P(5,21)); +Kfusion(6) = HKZ70*(-HKZ13*P(6,16) - HKZ15*P(3,6) + HKZ17*P(0,6) + HKZ19*P(6,17) + HKZ21*P(6,18) - HKZ23*P(2,6) + HKZ25*P(1,6) - P(6,21)); +Kfusion(7) = HKZ70*(-HKZ13*P(7,16) - HKZ15*P(3,7) + HKZ17*P(0,7) + HKZ19*P(7,17) + HKZ21*P(7,18) - HKZ23*P(2,7) + HKZ25*P(1,7) - P(7,21)); +Kfusion(8) = HKZ70*(-HKZ13*P(8,16) - HKZ15*P(3,8) + HKZ17*P(0,8) + HKZ19*P(8,17) + HKZ21*P(8,18) - HKZ23*P(2,8) + HKZ25*P(1,8) - P(8,21)); +Kfusion(9) = HKZ70*(-HKZ13*P(9,16) - HKZ15*P(3,9) + HKZ17*P(0,9) + HKZ19*P(9,17) + HKZ21*P(9,18) - HKZ23*P(2,9) + HKZ25*P(1,9) - P(9,21)); +Kfusion(10) = HKZ70*(-HKZ13*P(10,16) - HKZ15*P(3,10) + HKZ17*P(0,10) + HKZ19*P(10,17) + HKZ21*P(10,18) - HKZ23*P(2,10) + HKZ25*P(1,10) - P(10,21)); +Kfusion(11) = HKZ70*(-HKZ13*P(11,16) - HKZ15*P(3,11) + HKZ17*P(0,11) + HKZ19*P(11,17) + HKZ21*P(11,18) - HKZ23*P(2,11) + HKZ25*P(1,11) - P(11,21)); +Kfusion(12) = HKZ70*(-HKZ13*P(12,16) - HKZ15*P(3,12) + HKZ17*P(0,12) + HKZ19*P(12,17) + HKZ21*P(12,18) - HKZ23*P(2,12) + HKZ25*P(1,12) - P(12,21)); +Kfusion(13) = HKZ70*(-HKZ13*P(13,16) - HKZ15*P(3,13) + HKZ17*P(0,13) + HKZ19*P(13,17) + HKZ21*P(13,18) - HKZ23*P(2,13) + HKZ25*P(1,13) - P(13,21)); +Kfusion(14) = HKZ70*(-HKZ13*P(14,16) - HKZ15*P(3,14) + HKZ17*P(0,14) + HKZ19*P(14,17) + HKZ21*P(14,18) - HKZ23*P(2,14) + HKZ25*P(1,14) - P(14,21)); +Kfusion(15) = HKZ70*(-HKZ13*P(15,16) - HKZ15*P(3,15) + HKZ17*P(0,15) + HKZ19*P(15,17) + HKZ21*P(15,18) - HKZ23*P(2,15) + HKZ25*P(1,15) - P(15,21)); +Kfusion(16) = HKZ70*(-HKZ41 - HKZ42 + HKZ43 + HKZ44 - HKZ45 + HKZ46 + HKZ47 - P(16,21)); +Kfusion(17) = HKZ70*(-HKZ55 - HKZ56 + HKZ57 + HKZ58 - HKZ59 + HKZ60 + HKZ61 - P(17,21)); +Kfusion(18) = HKZ70*(-HKZ27 - HKZ28 + HKZ29 + HKZ30 - HKZ31 + HKZ32 + HKZ33 - P(18,21)); +Kfusion(19) = HKZ70*(-HKZ13*P(16,19) - HKZ15*P(3,19) + HKZ17*P(0,19) + HKZ19*P(17,19) + HKZ21*P(18,19) - HKZ23*P(2,19) + HKZ25*P(1,19) - P(19,21)); +Kfusion(20) = HKZ70*(-HKZ13*P(16,20) - HKZ15*P(3,20) + HKZ17*P(0,20) + HKZ19*P(17,20) + HKZ21*P(18,20) - HKZ23*P(2,20) + HKZ25*P(1,20) - P(20,21)); +Kfusion(21) = HKZ69*HKZ70; +Kfusion(22) = HKZ70*(-HKZ13*P(16,22) - HKZ15*P(3,22) + HKZ17*P(0,22) + HKZ19*P(17,22) + HKZ21*P(18,22) - HKZ23*P(2,22) + HKZ25*P(1,22) - P(21,22)); +Kfusion(23) = HKZ70*(-HKZ13*P(16,23) - HKZ15*P(3,23) + HKZ17*P(0,23) + HKZ19*P(17,23) + HKZ21*P(18,23) - HKZ23*P(2,23) + HKZ25*P(1,23) - P(21,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_generated_alt.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_generated_alt.cpp new file mode 100644 index 0000000000..667895c435 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_generated_alt.cpp @@ -0,0 +1,340 @@ +// Sub Expressions +const float HK0 = magE*q3; +const float HK1 = magD*q2; +const float HK2 = -HK1; +const float HK3 = magD*q3; +const float HK4 = magE*q2; +const float HK5 = HK3 + HK4; +const float HK6 = magE*q1; +const float HK7 = magD*q0; +const float HK8 = magN*q2; +const float HK9 = 2*HK8; +const float HK10 = magD*q1; +const float HK11 = magE*q0; +const float HK12 = magN*q3; +const float HK13 = HK10 + HK11 - 2*HK12; +const float HK14 = 2*powf(q2, 2); +const float HK15 = -HK14; +const float HK16 = 2*powf(q3, 2); +const float HK17 = 1 - HK16; +const float HK18 = q0*q3; +const float HK19 = q1*q2; +const float HK20 = HK18 + HK19; +const float HK21 = q1*q3; +const float HK22 = q0*q2; +const float HK23 = 2*HK5; +const float HK24 = HK23*P(0,1); +const float HK25 = 2*HK20; +const float HK26 = HK25*P(0,17); +const float HK27 = -2*HK0 + 2*HK1; +const float HK28 = HK27*P(0,0); +const float HK29 = -2*HK21 + 2*HK22; +const float HK30 = HK29*P(0,18); +const float HK31 = HK16 - 1; +const float HK32 = HK14 + HK31; +const float HK33 = HK32*P(0,16); +const float HK34 = 2*HK13; +const float HK35 = HK34*P(0,3); +const float HK36 = -HK6; +const float HK37 = 2*HK36 + 2*HK7 + 2*HK9; +const float HK38 = HK37*P(0,2); +const float HK39 = -R_MAG; +const float HK40 = HK23*P(1,16); +const float HK41 = HK25*P(16,17); +const float HK42 = HK27*P(0,16); +const float HK43 = HK29*P(16,18); +const float HK44 = HK34*P(3,16); +const float HK45 = HK32*P(16,16); +const float HK46 = HK37*P(2,16); +const float HK47 = HK23*P(1,1); +const float HK48 = HK25*P(1,17); +const float HK49 = HK27*P(0,1); +const float HK50 = HK29*P(1,18); +const float HK51 = HK34*P(1,3); +const float HK52 = HK32*P(1,16); +const float HK53 = HK37*P(1,2); +const float HK54 = HK23*P(1,17); +const float HK55 = HK25*P(17,17); +const float HK56 = HK27*P(0,17); +const float HK57 = HK29*P(17,18); +const float HK58 = HK34*P(3,17); +const float HK59 = HK32*P(16,17); +const float HK60 = HK37*P(2,17); +const float HK61 = HK23*P(1,3); +const float HK62 = HK25*P(3,17); +const float HK63 = HK27*P(0,3); +const float HK64 = HK29*P(3,18); +const float HK65 = HK34*P(3,3); +const float HK66 = HK37*P(2,3); +const float HK67 = HK32*P(3,16); +const float HK68 = HK23*P(1,18); +const float HK69 = HK25*P(17,18); +const float HK70 = HK27*P(0,18); +const float HK71 = HK29*P(18,18); +const float HK72 = HK34*P(3,18); +const float HK73 = HK32*P(16,18); +const float HK74 = HK37*P(2,18); +const float HK75 = HK23*P(1,2); +const float HK76 = HK25*P(2,17); +const float HK77 = HK27*P(0,2); +const float HK78 = HK29*P(2,18); +const float HK79 = HK34*P(2,3); +const float HK80 = HK32*P(2,16); +const float HK81 = HK37*P(2,2); +const float HK82 = -HK23*P(1,19) - HK25*P(17,19) + HK27*P(0,19) + HK29*P(18,19) + HK32*P(16,19) - HK34*P(3,19) + HK37*P(2,19) - P(19,19); +const float HK83 = 1.0F/(-HK23*(HK47 + HK48 - HK49 - HK50 + HK51 - HK52 - HK53 + P(1,19)) - HK25*(HK54 + HK55 - HK56 - HK57 + HK58 - HK59 - HK60 + P(17,19)) + HK27*(HK24 + HK26 - HK28 - HK30 - HK33 + HK35 - HK38 + P(0,19)) + HK29*(HK68 + HK69 - HK70 - HK71 + HK72 - HK73 - HK74 + P(18,19)) + HK32*(HK40 + HK41 - HK42 - HK43 + HK44 - HK45 - HK46 + P(16,19)) - HK34*(HK61 + HK62 - HK63 - HK64 + HK65 - HK66 - HK67 + P(3,19)) + HK37*(HK75 + HK76 - HK77 - HK78 + HK79 - HK80 - HK81 + P(2,19)) + HK39 + HK82); +const float HK84 = -P(19,21); +const float HK85 = -HK12; +const float HK86 = HK10 + HK85; +const float HK87 = -2*HK6 + HK7 + HK8; +const float HK88 = magN*q1; +const float HK89 = HK3 + HK88; +const float HK90 = 2*HK0; +const float HK91 = magN*q0; +const float HK92 = 2*powf(q1, 2); +const float HK93 = -HK92; +const float HK94 = q0*q1; +const float HK95 = q2*q3; +const float HK96 = HK94 + HK95; +const float HK97 = 2*HK96; +const float HK98 = 2*HK89; +const float HK99 = 2*HK86; +const float HK100 = 2*HK18 - 2*HK19; +const float HK101 = 2*HK87; +const float HK102 = HK31 + HK92; +const float HK103 = 2*HK2 + 2*HK90 + 2*HK91; +const float HK104 = -HK100*P(0,16) + HK101*P(0,1) - HK102*P(0,17) - HK103*P(0,3) + HK97*P(0,18) + HK98*P(0,2) + HK99*P(0,0) + P(0,20); +const float HK105 = -HK100*P(16,17) + HK101*P(1,17) - HK102*P(17,17) - HK103*P(3,17) + HK97*P(17,18) + HK98*P(2,17) + HK99*P(0,17) + P(17,20); +const float HK106 = -HK100*P(16,16) + HK101*P(1,16) - HK102*P(16,17) - HK103*P(3,16) + HK97*P(16,18) + HK98*P(2,16) + HK99*P(0,16) + P(16,20); +const float HK107 = -HK100*P(3,16) + HK101*P(1,3) - HK102*P(3,17) - HK103*P(3,3) + HK97*P(3,18) + HK98*P(2,3) + HK99*P(0,3) + P(3,20); +const float HK108 = -HK100*P(2,16) + HK101*P(1,2) - HK102*P(2,17) - HK103*P(2,3) + HK97*P(2,18) + HK98*P(2,2) + HK99*P(0,2) + P(2,20); +const float HK109 = -HK100*P(16,18) + HK101*P(1,18) - HK102*P(17,18) - HK103*P(3,18) + HK97*P(18,18) + HK98*P(2,18) + HK99*P(0,18) + P(18,20); +const float HK110 = -HK100*P(1,16) + HK101*P(1,1) - HK102*P(1,17) - HK103*P(1,3) + HK97*P(1,18) + HK98*P(1,2) + HK99*P(0,1) + P(1,20); +const float HK111 = -HK100*P(16,20) + HK101*P(1,20) - HK102*P(17,20) - HK103*P(3,20) + HK97*P(18,20) + HK98*P(2,20) + HK99*P(0,20) + P(20,20); +const float HK112 = 1.0F/(-HK100*HK106 + HK101*HK110 - HK102*HK105 - HK103*HK107 + HK104*HK99 + HK108*HK98 + HK109*HK97 + HK111 + R_MAG); +const float HK113 = 2*HK10; +const float HK114 = HK0 - 2*HK1 + HK91; +const float HK115 = HK4 + HK88; +const float HK116 = HK21 + HK22; +const float HK117 = 2*HK116; +const float HK118 = HK117*P(0,16); +const float HK119 = 2*HK115; +const float HK120 = HK119*P(0,3); +const float HK121 = 2*HK6 - 2*HK8; +const float HK122 = HK121*P(0,0); +const float HK123 = 2*HK94 - 2*HK95; +const float HK124 = HK123*P(0,17); +const float HK125 = HK14 + HK92 - 1; +const float HK126 = HK125*P(0,18); +const float HK127 = 2*HK114; +const float HK128 = HK127*P(0,2); +const float HK129 = 2*HK11 + 2*HK113 + 2*HK85; +const float HK130 = HK129*P(0,1); +const float HK131 = HK117*P(16,18); +const float HK132 = HK119*P(3,18); +const float HK133 = HK121*P(0,18); +const float HK134 = HK123*P(17,18); +const float HK135 = HK127*P(2,18); +const float HK136 = HK129*P(1,18); +const float HK137 = HK125*P(18,18); +const float HK138 = HK117*P(3,16); +const float HK139 = HK119*P(3,3); +const float HK140 = HK121*P(0,3); +const float HK141 = HK123*P(3,17); +const float HK142 = HK127*P(2,3); +const float HK143 = HK129*P(1,3); +const float HK144 = HK125*P(3,18); +const float HK145 = HK117*P(16,16); +const float HK146 = HK119*P(3,16); +const float HK147 = HK121*P(0,16); +const float HK148 = HK123*P(16,17); +const float HK149 = HK127*P(2,16); +const float HK150 = HK129*P(1,16); +const float HK151 = HK125*P(16,18); +const float HK152 = HK117*P(2,16); +const float HK153 = HK119*P(2,3); +const float HK154 = HK121*P(0,2); +const float HK155 = HK123*P(2,17); +const float HK156 = HK127*P(2,2); +const float HK157 = HK129*P(1,2); +const float HK158 = HK125*P(2,18); +const float HK159 = HK117*P(16,17); +const float HK160 = HK119*P(3,17); +const float HK161 = HK121*P(0,17); +const float HK162 = HK123*P(17,17); +const float HK163 = HK127*P(2,17); +const float HK164 = HK129*P(1,17); +const float HK165 = HK125*P(17,18); +const float HK166 = HK117*P(1,16); +const float HK167 = HK119*P(1,3); +const float HK168 = HK121*P(0,1); +const float HK169 = HK123*P(1,17); +const float HK170 = HK127*P(1,2); +const float HK171 = HK129*P(1,1); +const float HK172 = HK125*P(1,18); +const float HK173 = -HK117*P(16,21) - HK119*P(3,21) + HK121*P(0,21) + HK123*P(17,21) + HK125*P(18,21) - HK127*P(2,21) + HK129*P(1,21) - P(21,21); +const float HK174 = 1.0F/(-HK117*(HK145 + HK146 - HK147 - HK148 + HK149 - HK150 - HK151 + P(16,21)) - HK119*(HK138 + HK139 - HK140 - HK141 + HK142 - HK143 - HK144 + P(3,21)) + HK121*(HK118 + HK120 - HK122 - HK124 - HK126 + HK128 - HK130 + P(0,21)) + HK123*(HK159 + HK160 - HK161 - HK162 + HK163 - HK164 - HK165 + P(17,21)) + HK125*(HK131 + HK132 - HK133 - HK134 + HK135 - HK136 - HK137 + P(18,21)) - HK127*(HK152 + HK153 - HK154 - HK155 + HK156 - HK157 - HK158 + P(2,21)) + HK129*(HK166 + HK167 - HK168 - HK169 + HK170 - HK171 - HK172 + P(1,21)) + HK173 + HK39); + + +// Observation Jacobians - axis 0 +Hfusion.at<0>() = 2*HK0 + 2*HK2; +Hfusion.at<1>() = 2*HK5; +Hfusion.at<2>() = 2*HK6 - 2*HK7 - 2*HK9; +Hfusion.at<3>() = 2*HK13; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = HK15 + HK17; +Hfusion.at<17>() = 2*HK20; +Hfusion.at<18>() = 2*HK21 - 2*HK22; +Hfusion.at<19>() = 1; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 0 +Kfusion(0) = HK83*(-HK24 - HK26 + HK28 + HK30 + HK33 - HK35 + HK38 - P(0,19)); +Kfusion(1) = HK83*(-HK47 - HK48 + HK49 + HK50 - HK51 + HK52 + HK53 - P(1,19)); +Kfusion(2) = HK83*(-HK75 - HK76 + HK77 + HK78 - HK79 + HK80 + HK81 - P(2,19)); +Kfusion(3) = HK83*(-HK61 - HK62 + HK63 + HK64 - HK65 + HK66 + HK67 - P(3,19)); +Kfusion(4) = HK83*(-HK23*P(1,4) - HK25*P(4,17) + HK27*P(0,4) + HK29*P(4,18) + HK32*P(4,16) - HK34*P(3,4) + HK37*P(2,4) - P(4,19)); +Kfusion(5) = HK83*(-HK23*P(1,5) - HK25*P(5,17) + HK27*P(0,5) + HK29*P(5,18) + HK32*P(5,16) - HK34*P(3,5) + HK37*P(2,5) - P(5,19)); +Kfusion(6) = HK83*(-HK23*P(1,6) - HK25*P(6,17) + HK27*P(0,6) + HK29*P(6,18) + HK32*P(6,16) - HK34*P(3,6) + HK37*P(2,6) - P(6,19)); +Kfusion(7) = HK83*(-HK23*P(1,7) - HK25*P(7,17) + HK27*P(0,7) + HK29*P(7,18) + HK32*P(7,16) - HK34*P(3,7) + HK37*P(2,7) - P(7,19)); +Kfusion(8) = HK83*(-HK23*P(1,8) - HK25*P(8,17) + HK27*P(0,8) + HK29*P(8,18) + HK32*P(8,16) - HK34*P(3,8) + HK37*P(2,8) - P(8,19)); +Kfusion(9) = HK83*(-HK23*P(1,9) - HK25*P(9,17) + HK27*P(0,9) + HK29*P(9,18) + HK32*P(9,16) - HK34*P(3,9) + HK37*P(2,9) - P(9,19)); +Kfusion(10) = HK83*(-HK23*P(1,10) - HK25*P(10,17) + HK27*P(0,10) + HK29*P(10,18) + HK32*P(10,16) - HK34*P(3,10) + HK37*P(2,10) - P(10,19)); +Kfusion(11) = HK83*(-HK23*P(1,11) - HK25*P(11,17) + HK27*P(0,11) + HK29*P(11,18) + HK32*P(11,16) - HK34*P(3,11) + HK37*P(2,11) - P(11,19)); +Kfusion(12) = HK83*(-HK23*P(1,12) - HK25*P(12,17) + HK27*P(0,12) + HK29*P(12,18) + HK32*P(12,16) - HK34*P(3,12) + HK37*P(2,12) - P(12,19)); +Kfusion(13) = HK83*(-HK23*P(1,13) - HK25*P(13,17) + HK27*P(0,13) + HK29*P(13,18) + HK32*P(13,16) - HK34*P(3,13) + HK37*P(2,13) - P(13,19)); +Kfusion(14) = HK83*(-HK23*P(1,14) - HK25*P(14,17) + HK27*P(0,14) + HK29*P(14,18) + HK32*P(14,16) - HK34*P(3,14) + HK37*P(2,14) - P(14,19)); +Kfusion(15) = HK83*(-HK23*P(1,15) - HK25*P(15,17) + HK27*P(0,15) + HK29*P(15,18) + HK32*P(15,16) - HK34*P(3,15) + HK37*P(2,15) - P(15,19)); +Kfusion(16) = HK83*(-HK40 - HK41 + HK42 + HK43 - HK44 + HK45 + HK46 - P(16,19)); +Kfusion(17) = HK83*(-HK54 - HK55 + HK56 + HK57 - HK58 + HK59 + HK60 - P(17,19)); +Kfusion(18) = HK83*(-HK68 - HK69 + HK70 + HK71 - HK72 + HK73 + HK74 - P(18,19)); +Kfusion(19) = HK82*HK83; +Kfusion(20) = HK83*(-HK23*P(1,20) - HK25*P(17,20) + HK27*P(0,20) + HK29*P(18,20) + HK32*P(16,20) - HK34*P(3,20) + HK37*P(2,20) - P(19,20)); +Kfusion(21) = HK83*(-HK23*P(1,21) - HK25*P(17,21) + HK27*P(0,21) + HK29*P(18,21) + HK32*P(16,21) - HK34*P(3,21) + HK37*P(2,21) + HK84); +Kfusion(22) = HK83*(-HK23*P(1,22) - HK25*P(17,22) + HK27*P(0,22) + HK29*P(18,22) + HK32*P(16,22) - HK34*P(3,22) + HK37*P(2,22) - P(19,22)); +Kfusion(23) = HK83*(-HK23*P(1,23) - HK25*P(17,23) + HK27*P(0,23) + HK29*P(18,23) + HK32*P(16,23) - HK34*P(3,23) + HK37*P(2,23) - P(19,23)); + + +// Observation Jacobians - axis 1 +Hfusion.at<0>() = 2*HK86; +Hfusion.at<1>() = 2*HK87; +Hfusion.at<2>() = 2*HK89; +Hfusion.at<3>() = 2*HK1 - 2*HK90 - 2*HK91; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = -2*HK18 + 2*HK19; +Hfusion.at<17>() = HK17 + HK93; +Hfusion.at<18>() = 2*HK96; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 1; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 1 +Kfusion(0) = HK104*HK112; +Kfusion(1) = HK110*HK112; +Kfusion(2) = HK108*HK112; +Kfusion(3) = HK107*HK112; +Kfusion(4) = HK112*(-HK100*P(4,16) + HK101*P(1,4) - HK102*P(4,17) - HK103*P(3,4) + HK97*P(4,18) + HK98*P(2,4) + HK99*P(0,4) + P(4,20)); +Kfusion(5) = HK112*(-HK100*P(5,16) + HK101*P(1,5) - HK102*P(5,17) - HK103*P(3,5) + HK97*P(5,18) + HK98*P(2,5) + HK99*P(0,5) + P(5,20)); +Kfusion(6) = HK112*(-HK100*P(6,16) + HK101*P(1,6) - HK102*P(6,17) - HK103*P(3,6) + HK97*P(6,18) + HK98*P(2,6) + HK99*P(0,6) + P(6,20)); +Kfusion(7) = HK112*(-HK100*P(7,16) + HK101*P(1,7) - HK102*P(7,17) - HK103*P(3,7) + HK97*P(7,18) + HK98*P(2,7) + HK99*P(0,7) + P(7,20)); +Kfusion(8) = HK112*(-HK100*P(8,16) + HK101*P(1,8) - HK102*P(8,17) - HK103*P(3,8) + HK97*P(8,18) + HK98*P(2,8) + HK99*P(0,8) + P(8,20)); +Kfusion(9) = HK112*(-HK100*P(9,16) + HK101*P(1,9) - HK102*P(9,17) - HK103*P(3,9) + HK97*P(9,18) + HK98*P(2,9) + HK99*P(0,9) + P(9,20)); +Kfusion(10) = HK112*(-HK100*P(10,16) + HK101*P(1,10) - HK102*P(10,17) - HK103*P(3,10) + HK97*P(10,18) + HK98*P(2,10) + HK99*P(0,10) + P(10,20)); +Kfusion(11) = HK112*(-HK100*P(11,16) + HK101*P(1,11) - HK102*P(11,17) - HK103*P(3,11) + HK97*P(11,18) + HK98*P(2,11) + HK99*P(0,11) + P(11,20)); +Kfusion(12) = HK112*(-HK100*P(12,16) + HK101*P(1,12) - HK102*P(12,17) - HK103*P(3,12) + HK97*P(12,18) + HK98*P(2,12) + HK99*P(0,12) + P(12,20)); +Kfusion(13) = HK112*(-HK100*P(13,16) + HK101*P(1,13) - HK102*P(13,17) - HK103*P(3,13) + HK97*P(13,18) + HK98*P(2,13) + HK99*P(0,13) + P(13,20)); +Kfusion(14) = HK112*(-HK100*P(14,16) + HK101*P(1,14) - HK102*P(14,17) - HK103*P(3,14) + HK97*P(14,18) + HK98*P(2,14) + HK99*P(0,14) + P(14,20)); +Kfusion(15) = HK112*(-HK100*P(15,16) + HK101*P(1,15) - HK102*P(15,17) - HK103*P(3,15) + HK97*P(15,18) + HK98*P(2,15) + HK99*P(0,15) + P(15,20)); +Kfusion(16) = HK106*HK112; +Kfusion(17) = HK105*HK112; +Kfusion(18) = HK109*HK112; +Kfusion(19) = HK112*(-HK100*P(16,19) + HK101*P(1,19) - HK102*P(17,19) - HK103*P(3,19) + HK97*P(18,19) + HK98*P(2,19) + HK99*P(0,19) + P(19,20)); +Kfusion(20) = HK111*HK112; +Kfusion(21) = HK112*(-HK100*P(16,21) + HK101*P(1,21) - HK102*P(17,21) - HK103*P(3,21) + HK97*P(18,21) + HK98*P(2,21) + HK99*P(0,21) + P(20,21)); +Kfusion(22) = HK112*(-HK100*P(16,22) + HK101*P(1,22) - HK102*P(17,22) - HK103*P(3,22) + HK97*P(18,22) + HK98*P(2,22) + HK99*P(0,22) + P(20,22)); +Kfusion(23) = HK112*(-HK100*P(16,23) + HK101*P(1,23) - HK102*P(17,23) - HK103*P(3,23) + HK97*P(18,23) + HK98*P(2,23) + HK99*P(0,23) + P(20,23)); + + +// Observation Jacobians - axis 2 +Hfusion.at<0>() = 2*HK36 + 2*HK8; +Hfusion.at<1>() = -2*HK11 - 2*HK113 + 2*HK12; +Hfusion.at<2>() = 2*HK114; +Hfusion.at<3>() = 2*HK115; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 2*HK116; +Hfusion.at<17>() = -2*HK94 + 2*HK95; +Hfusion.at<18>() = HK15 + HK93 + 1; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 1; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 2 +Kfusion(0) = HK174*(-HK118 - HK120 + HK122 + HK124 + HK126 - HK128 + HK130 - P(0,21)); +Kfusion(1) = HK174*(-HK166 - HK167 + HK168 + HK169 - HK170 + HK171 + HK172 - P(1,21)); +Kfusion(2) = HK174*(-HK152 - HK153 + HK154 + HK155 - HK156 + HK157 + HK158 - P(2,21)); +Kfusion(3) = HK174*(-HK138 - HK139 + HK140 + HK141 - HK142 + HK143 + HK144 - P(3,21)); +Kfusion(4) = HK174*(-HK117*P(4,16) - HK119*P(3,4) + HK121*P(0,4) + HK123*P(4,17) + HK125*P(4,18) - HK127*P(2,4) + HK129*P(1,4) - P(4,21)); +Kfusion(5) = HK174*(-HK117*P(5,16) - HK119*P(3,5) + HK121*P(0,5) + HK123*P(5,17) + HK125*P(5,18) - HK127*P(2,5) + HK129*P(1,5) - P(5,21)); +Kfusion(6) = HK174*(-HK117*P(6,16) - HK119*P(3,6) + HK121*P(0,6) + HK123*P(6,17) + HK125*P(6,18) - HK127*P(2,6) + HK129*P(1,6) - P(6,21)); +Kfusion(7) = HK174*(-HK117*P(7,16) - HK119*P(3,7) + HK121*P(0,7) + HK123*P(7,17) + HK125*P(7,18) - HK127*P(2,7) + HK129*P(1,7) - P(7,21)); +Kfusion(8) = HK174*(-HK117*P(8,16) - HK119*P(3,8) + HK121*P(0,8) + HK123*P(8,17) + HK125*P(8,18) - HK127*P(2,8) + HK129*P(1,8) - P(8,21)); +Kfusion(9) = HK174*(-HK117*P(9,16) - HK119*P(3,9) + HK121*P(0,9) + HK123*P(9,17) + HK125*P(9,18) - HK127*P(2,9) + HK129*P(1,9) - P(9,21)); +Kfusion(10) = HK174*(-HK117*P(10,16) - HK119*P(3,10) + HK121*P(0,10) + HK123*P(10,17) + HK125*P(10,18) - HK127*P(2,10) + HK129*P(1,10) - P(10,21)); +Kfusion(11) = HK174*(-HK117*P(11,16) - HK119*P(3,11) + HK121*P(0,11) + HK123*P(11,17) + HK125*P(11,18) - HK127*P(2,11) + HK129*P(1,11) - P(11,21)); +Kfusion(12) = HK174*(-HK117*P(12,16) - HK119*P(3,12) + HK121*P(0,12) + HK123*P(12,17) + HK125*P(12,18) - HK127*P(2,12) + HK129*P(1,12) - P(12,21)); +Kfusion(13) = HK174*(-HK117*P(13,16) - HK119*P(3,13) + HK121*P(0,13) + HK123*P(13,17) + HK125*P(13,18) - HK127*P(2,13) + HK129*P(1,13) - P(13,21)); +Kfusion(14) = HK174*(-HK117*P(14,16) - HK119*P(3,14) + HK121*P(0,14) + HK123*P(14,17) + HK125*P(14,18) - HK127*P(2,14) + HK129*P(1,14) - P(14,21)); +Kfusion(15) = HK174*(-HK117*P(15,16) - HK119*P(3,15) + HK121*P(0,15) + HK123*P(15,17) + HK125*P(15,18) - HK127*P(2,15) + HK129*P(1,15) - P(15,21)); +Kfusion(16) = HK174*(-HK145 - HK146 + HK147 + HK148 - HK149 + HK150 + HK151 - P(16,21)); +Kfusion(17) = HK174*(-HK159 - HK160 + HK161 + HK162 - HK163 + HK164 + HK165 - P(17,21)); +Kfusion(18) = HK174*(-HK131 - HK132 + HK133 + HK134 - HK135 + HK136 + HK137 - P(18,21)); +Kfusion(19) = HK174*(-HK117*P(16,19) - HK119*P(3,19) + HK121*P(0,19) + HK123*P(17,19) + HK125*P(18,19) - HK127*P(2,19) + HK129*P(1,19) + HK84); +Kfusion(20) = HK174*(-HK117*P(16,20) - HK119*P(3,20) + HK121*P(0,20) + HK123*P(17,20) + HK125*P(18,20) - HK127*P(2,20) + HK129*P(1,20) - P(20,21)); +Kfusion(21) = HK173*HK174; +Kfusion(22) = HK174*(-HK117*P(16,22) - HK119*P(3,22) + HK121*P(0,22) + HK123*P(17,22) + HK125*P(18,22) - HK127*P(2,22) + HK129*P(1,22) - P(21,22)); +Kfusion(23) = HK174*(-HK117*P(16,23) - HK119*P(3,23) + HK121*P(0,23) + HK123*P(17,23) + HK125*P(18,23) - HK127*P(2,23) + HK129*P(1,23) - P(21,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_innov_var_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_innov_var_generated.cpp new file mode 100644 index 0000000000..17befb802f --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/3Dmag_innov_var_generated.cpp @@ -0,0 +1,49 @@ +// Sub Expressions +const float IV0 = q0*q1; +const float IV1 = q2*q3; +const float IV2 = 2*IV0 + 2*IV1; +const float IV3 = magN*q1; +const float IV4 = 2*IV3 + 2*magD*q3; +const float IV5 = magD*q1; +const float IV6 = -magN*q3; +const float IV7 = 2*IV5 + 2*IV6; +const float IV8 = 2*q0*q3 - 2*q1*q2; +const float IV9 = magN*q2; +const float IV10 = magE*q1; +const float IV11 = -4*IV10 + 2*IV9 + 2*magD*q0; +const float IV12 = 2*powf(q1, 2) - 1; +const float IV13 = IV12 + 2*powf(q3, 2); +const float IV14 = magN*q0; +const float IV15 = magD*q2; +const float IV16 = magE*q3; +const float IV17 = 2*IV14 - 2*IV15 + 4*IV16; +const float IV18 = 2*q0*q2 + 2*q1*q3; +const float IV19 = 2*IV3 + 2*magE*q2; +const float IV20 = 2*IV10 - 2*IV9; +const float IV21 = 2*IV0 - 2*IV1; +const float IV22 = 2*IV14 - 4*IV15 + 2*IV16; +const float IV23 = 4*IV5 + 2*IV6 + 2*magE*q0; +const float IV24 = IV12 + 2*powf(q2, 2); + + +// Observation Jacobians - axis 0 +Hfusion.at<0>() = R_MAG; +Hfusion.at<1>() = IV11*P(1,20) + IV11*(IV11*P(1,1) - IV13*P(1,17) - IV17*P(1,3) + IV2*P(1,18) + IV4*P(1,2) + IV7*P(0,1) - IV8*P(1,16) + P(1,20)) - IV13*P(17,20) - IV13*(IV11*P(1,17) - IV13*P(17,17) - IV17*P(3,17) + IV2*P(17,18) + IV4*P(2,17) + IV7*P(0,17) - IV8*P(16,17) + P(17,20)) - IV17*P(3,20) - IV17*(IV11*P(1,3) - IV13*P(3,17) - IV17*P(3,3) + IV2*P(3,18) + IV4*P(2,3) + IV7*P(0,3) - IV8*P(3,16) + P(3,20)) + IV2*P(18,20) + IV2*(IV11*P(1,18) - IV13*P(17,18) - IV17*P(3,18) + IV2*P(18,18) + IV4*P(2,18) + IV7*P(0,18) - IV8*P(16,18) + P(18,20)) + IV4*P(2,20) + IV4*(IV11*P(1,2) - IV13*P(2,17) - IV17*P(2,3) + IV2*P(2,18) + IV4*P(2,2) + IV7*P(0,2) - IV8*P(2,16) + P(2,20)) + IV7*P(0,20) + IV7*(IV11*P(0,1) - IV13*P(0,17) - IV17*P(0,3) + IV2*P(0,18) + IV4*P(0,2) + IV7*P(0,0) - IV8*P(0,16) + P(0,20)) - IV8*P(16,20) - IV8*(IV11*P(1,16) - IV13*P(16,17) - IV17*P(3,16) + IV2*P(16,18) + IV4*P(2,16) + IV7*P(0,16) - IV8*P(16,16) + P(16,20)) + P(20,20) + R_MAG; +Hfusion.at<2>() = IV18*P(16,21) + IV18*(IV18*P(16,16) + IV19*P(3,16) - IV20*P(0,16) - IV21*P(16,17) + IV22*P(2,16) - IV23*P(1,16) - IV24*P(16,18) + P(16,21)) + IV19*P(3,21) + IV19*(IV18*P(3,16) + IV19*P(3,3) - IV20*P(0,3) - IV21*P(3,17) + IV22*P(2,3) - IV23*P(1,3) - IV24*P(3,18) + P(3,21)) - IV20*P(0,21) - IV20*(IV18*P(0,16) + IV19*P(0,3) - IV20*P(0,0) - IV21*P(0,17) + IV22*P(0,2) - IV23*P(0,1) - IV24*P(0,18) + P(0,21)) - IV21*P(17,21) - IV21*(IV18*P(16,17) + IV19*P(3,17) - IV20*P(0,17) - IV21*P(17,17) + IV22*P(2,17) - IV23*P(1,17) - IV24*P(17,18) + P(17,21)) + IV22*P(2,21) + IV22*(IV18*P(2,16) + IV19*P(2,3) - IV20*P(0,2) - IV21*P(2,17) + IV22*P(2,2) - IV23*P(1,2) - IV24*P(2,18) + P(2,21)) - IV23*P(1,21) - IV23*(IV18*P(1,16) + IV19*P(1,3) - IV20*P(0,1) - IV21*P(1,17) + IV22*P(1,2) - IV23*P(1,1) - IV24*P(1,18) + P(1,21)) - IV24*P(18,21) - IV24*(IV18*P(16,18) + IV19*P(3,18) - IV20*P(0,18) - IV21*P(17,18) + IV22*P(2,18) - IV23*P(1,18) - IV24*P(18,18) + P(18,21)) + P(21,21) + R_MAG; + + +// Kalman gains - axis 0 + + +// Observation Jacobians - axis 1 + + +// Kalman gains - axis 1 + + +// Observation Jacobians - axis 2 + + +// Kalman gains - axis 2 + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_fusion_generated_compare.cpp new file mode 100644 index 0000000000..523bd90654 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_fusion_generated_compare.cpp @@ -0,0 +1,476 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" +#include "util.h" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; +template +using SparseVector24f = matrix::SparseVectorf<24, Idxs...>; + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + + SparseVector24f<0,1,2,3,4,5,6,22,23> Hfusion; + Vector24f H_ACC; + Vector24f Kfusion; + float drag_innov_var; + + Vector24f Hfusion_sympy; + Vector24f Kfusion_sympy; + + Vector24f Hfusion_matlab; + Vector24f Kfusion_matlab; + + float SH_ACC[4] = {}; // Variable used to optimise calculations of measurement jacobian + float SK_ACC[9] = {}; // Variable used to optimise calculations of the Kalman gain vector + const float R_ACC = sq(2.5f); // observation noise variance in specific force drag (m/sec**2)**2 + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + // get latest velocity in earth frame + const float vn = 8.0f; + const float ve = 6.0f; + const float vd = 1.0f; + + // get latest wind velocity in earth frame + const float vwn = 4.0f; + const float vwe = 3.0f; + + const float BC_inv_x = 1.0f / 35.0f; + const float BC_inv_y = 1.0f / 25.0f; + + const float airSpd = 5.0f; + + const float rho = 1.225f; + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // Compare X axis equations + { + // Estimate the derivative of specific force wrt airspeed along the X axis + // Limit lower value to prevent arithmetic exceptions + const float Kaccx = fmaxf(1e-1f, rho * BC_inv_x * airSpd); + + // intermediate variables + const float HK0 = vn - vwn; + const float HK1 = ve - vwe; + const float HK2 = HK0*q0 + HK1*q3 - q2*vd; + const float HK3 = 2*Kaccx; + const float HK4 = HK0*q1 + HK1*q2 + q3*vd; + const float HK5 = HK0*q2 - HK1*q1 + q0*vd; + const float HK6 = -HK0*q3 + HK1*q0 + q1*vd; + const float HK7 = ecl::powf(q0, 2) + ecl::powf(q1, 2) - ecl::powf(q2, 2) - ecl::powf(q3, 2); + const float HK8 = HK7*Kaccx; + const float HK9 = q0*q3 + q1*q2; + const float HK10 = HK3*HK9; + const float HK11 = q0*q2 - q1*q3; + const float HK12 = 2*HK9; + const float HK13 = 2*HK11; + const float HK14 = 2*HK4; + const float HK15 = 2*HK2; + const float HK16 = 2*HK5; + const float HK17 = 2*HK6; + const float HK18 = -HK12*P(0,23) + HK12*P(0,5) - HK13*P(0,6) + HK14*P(0,1) + HK15*P(0,0) - HK16*P(0,2) + HK17*P(0,3) - HK7*P(0,22) + HK7*P(0,4); + const float HK19 = HK12*P(5,23); + const float HK20 = -HK12*P(23,23) - HK13*P(6,23) + HK14*P(1,23) + HK15*P(0,23) - HK16*P(2,23) + HK17*P(3,23) + HK19 - HK7*P(22,23) + HK7*P(4,23); + const float HK21 = ecl::powf(Kaccx, 2); + const float HK22 = HK12*HK21; + const float HK23 = HK12*P(5,5) - HK13*P(5,6) + HK14*P(1,5) + HK15*P(0,5) - HK16*P(2,5) + HK17*P(3,5) - HK19 + HK7*P(4,5) - HK7*P(5,22); + const float HK24 = HK12*P(5,6) - HK12*P(6,23) - HK13*P(6,6) + HK14*P(1,6) + HK15*P(0,6) - HK16*P(2,6) + HK17*P(3,6) + HK7*P(4,6) - HK7*P(6,22); + const float HK25 = HK7*P(4,22); + const float HK26 = -HK12*P(4,23) + HK12*P(4,5) - HK13*P(4,6) + HK14*P(1,4) + HK15*P(0,4) - HK16*P(2,4) + HK17*P(3,4) - HK25 + HK7*P(4,4); + const float HK27 = HK21*HK7; + const float HK28 = -HK12*P(22,23) + HK12*P(5,22) - HK13*P(6,22) + HK14*P(1,22) + HK15*P(0,22) - HK16*P(2,22) + HK17*P(3,22) + HK25 - HK7*P(22,22); + const float HK29 = -HK12*P(1,23) + HK12*P(1,5) - HK13*P(1,6) + HK14*P(1,1) + HK15*P(0,1) - HK16*P(1,2) + HK17*P(1,3) - HK7*P(1,22) + HK7*P(1,4); + const float HK30 = -HK12*P(2,23) + HK12*P(2,5) - HK13*P(2,6) + HK14*P(1,2) + HK15*P(0,2) - HK16*P(2,2) + HK17*P(2,3) - HK7*P(2,22) + HK7*P(2,4); + const float HK31 = -HK12*P(3,23) + HK12*P(3,5) - HK13*P(3,6) + HK14*P(1,3) + HK15*P(0,3) - HK16*P(2,3) + HK17*P(3,3) - HK7*P(3,22) + HK7*P(3,4); + const float HK32 = Kaccx/(-HK13*HK21*HK24 + HK14*HK21*HK29 + HK15*HK18*HK21 - HK16*HK21*HK30 + HK17*HK21*HK31 - HK20*HK22 + HK22*HK23 + HK26*HK27 - HK27*HK28 + R_ACC); + + // Observation Jacobians + Hfusion.at<0>() = -HK2*HK3; + Hfusion.at<1>() = -HK3*HK4; + Hfusion.at<2>() = HK3*HK5; + Hfusion.at<3>() = -HK3*HK6; + Hfusion.at<4>() = -HK8; + Hfusion.at<5>() = -HK10; + Hfusion.at<6>() = HK11*HK3; + Hfusion.at<22>() = HK8; + Hfusion.at<23>() = HK10; + + // Kalman gains + Kfusion(0) = -HK18*HK32; + Kfusion(1) = -HK29*HK32; + Kfusion(2) = -HK30*HK32; + Kfusion(3) = -HK31*HK32; + Kfusion(4) = -HK26*HK32; + Kfusion(5) = -HK23*HK32; + Kfusion(6) = -HK24*HK32; + Kfusion(7) = -HK32*(HK12*P(5,7) - HK12*P(7,23) - HK13*P(6,7) + HK14*P(1,7) + HK15*P(0,7) - HK16*P(2,7) + HK17*P(3,7) + HK7*P(4,7) - HK7*P(7,22)); + Kfusion(8) = -HK32*(HK12*P(5,8) - HK12*P(8,23) - HK13*P(6,8) + HK14*P(1,8) + HK15*P(0,8) - HK16*P(2,8) + HK17*P(3,8) + HK7*P(4,8) - HK7*P(8,22)); + Kfusion(9) = -HK32*(HK12*P(5,9) - HK12*P(9,23) - HK13*P(6,9) + HK14*P(1,9) + HK15*P(0,9) - HK16*P(2,9) + HK17*P(3,9) + HK7*P(4,9) - HK7*P(9,22)); + Kfusion(10) = -HK32*(-HK12*P(10,23) + HK12*P(5,10) - HK13*P(6,10) + HK14*P(1,10) + HK15*P(0,10) - HK16*P(2,10) + HK17*P(3,10) - HK7*P(10,22) + HK7*P(4,10)); + Kfusion(11) = -HK32*(-HK12*P(11,23) + HK12*P(5,11) - HK13*P(6,11) + HK14*P(1,11) + HK15*P(0,11) - HK16*P(2,11) + HK17*P(3,11) - HK7*P(11,22) + HK7*P(4,11)); + Kfusion(12) = -HK32*(-HK12*P(12,23) + HK12*P(5,12) - HK13*P(6,12) + HK14*P(1,12) + HK15*P(0,12) - HK16*P(2,12) + HK17*P(3,12) - HK7*P(12,22) + HK7*P(4,12)); + Kfusion(13) = -HK32*(-HK12*P(13,23) + HK12*P(5,13) - HK13*P(6,13) + HK14*P(1,13) + HK15*P(0,13) - HK16*P(2,13) + HK17*P(3,13) - HK7*P(13,22) + HK7*P(4,13)); + Kfusion(14) = -HK32*(-HK12*P(14,23) + HK12*P(5,14) - HK13*P(6,14) + HK14*P(1,14) + HK15*P(0,14) - HK16*P(2,14) + HK17*P(3,14) - HK7*P(14,22) + HK7*P(4,14)); + Kfusion(15) = -HK32*(-HK12*P(15,23) + HK12*P(5,15) - HK13*P(6,15) + HK14*P(1,15) + HK15*P(0,15) - HK16*P(2,15) + HK17*P(3,15) - HK7*P(15,22) + HK7*P(4,15)); + Kfusion(16) = -HK32*(-HK12*P(16,23) + HK12*P(5,16) - HK13*P(6,16) + HK14*P(1,16) + HK15*P(0,16) - HK16*P(2,16) + HK17*P(3,16) - HK7*P(16,22) + HK7*P(4,16)); + Kfusion(17) = -HK32*(-HK12*P(17,23) + HK12*P(5,17) - HK13*P(6,17) + HK14*P(1,17) + HK15*P(0,17) - HK16*P(2,17) + HK17*P(3,17) - HK7*P(17,22) + HK7*P(4,17)); + Kfusion(18) = -HK32*(-HK12*P(18,23) + HK12*P(5,18) - HK13*P(6,18) + HK14*P(1,18) + HK15*P(0,18) - HK16*P(2,18) + HK17*P(3,18) - HK7*P(18,22) + HK7*P(4,18)); + Kfusion(19) = -HK32*(-HK12*P(19,23) + HK12*P(5,19) - HK13*P(6,19) + HK14*P(1,19) + HK15*P(0,19) - HK16*P(2,19) + HK17*P(3,19) - HK7*P(19,22) + HK7*P(4,19)); + Kfusion(20) = -HK32*(-HK12*P(20,23) + HK12*P(5,20) - HK13*P(6,20) + HK14*P(1,20) + HK15*P(0,20) - HK16*P(2,20) + HK17*P(3,20) - HK7*P(20,22) + HK7*P(4,20)); + Kfusion(21) = -HK32*(-HK12*P(21,23) + HK12*P(5,21) - HK13*P(6,21) + HK14*P(1,21) + HK15*P(0,21) - HK16*P(2,21) + HK17*P(3,21) - HK7*P(21,22) + HK7*P(4,21)); + Kfusion(22) = -HK28*HK32; + Kfusion(23) = -HK20*HK32; + + // save output + Hfusion_sympy(0) = Hfusion.at<0>(); + Hfusion_sympy(1) = Hfusion.at<1>(); + Hfusion_sympy(2) = Hfusion.at<2>(); + Hfusion_sympy(3) = Hfusion.at<3>(); + Hfusion_sympy(4) = Hfusion.at<4>(); + Hfusion_sympy(5) = Hfusion.at<5>(); + Hfusion_sympy(6) = Hfusion.at<6>(); + Hfusion_sympy(22) = Hfusion.at<22>(); + Hfusion_sympy(23) = Hfusion.at<23>(); + Kfusion_sympy = Kfusion; + + // repeat calculation using matlab generated equations + + const float Kacc = Kaccx; + + // Estimate the derivative of specific force wrt airspeed along the X axis + SH_ACC[0] = sq(q0) + sq(q1) - sq(q2) - sq(q3); + SH_ACC[1] = vn - vwn; + SH_ACC[2] = ve - vwe; + SH_ACC[3] = 2.0f*q0*q3 + 2.0f*q1*q2; + + H_ACC.setZero(); + H_ACC(0) = -Kacc*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd); + H_ACC(1) = -Kacc*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd); + H_ACC(2) = Kacc*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd); + H_ACC(3) = -Kacc*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd); + H_ACC(4) = -Kacc*SH_ACC[0]; + H_ACC(5) = -Kacc*SH_ACC[3]; + H_ACC(6) = Kacc*(2.0f*q0*q2 - 2.0f*q1*q3); + H_ACC(22) = Kacc*SH_ACC[0]; + H_ACC(23) = Kacc*SH_ACC[3]; + + drag_innov_var = (R_ACC + Kacc*SH_ACC[0]*(Kacc*P(4,4)*SH_ACC[0] + Kacc*P(5,4)*SH_ACC[3] - Kacc*P(22,4)*SH_ACC[0] - Kacc*P(23,4)*SH_ACC[3] - Kacc*P(6,4)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,4)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,4)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,4)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,4)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) + Kacc*SH_ACC[3]*(Kacc*P(4,5)*SH_ACC[0] + Kacc*P(5,5)*SH_ACC[3] - Kacc*P(22,5)*SH_ACC[0] - Kacc*P(23,5)*SH_ACC[3] - Kacc*P(6,5)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,5)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,5)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,5)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,5)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) - Kacc*SH_ACC[0]*(Kacc*P(4,22)*SH_ACC[0] + Kacc*P(5,22)*SH_ACC[3] - Kacc*P(22,22)*SH_ACC[0] - Kacc*P(23,22)*SH_ACC[3] - Kacc*P(6,22)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,22)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,22)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,22)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,22)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) - Kacc*SH_ACC[3]*(Kacc*P(4,23)*SH_ACC[0] + Kacc*P(5,23)*SH_ACC[3] - Kacc*P(22,23)*SH_ACC[0] - Kacc*P(23,23)*SH_ACC[3] - Kacc*P(6,23)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,23)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,23)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,23)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,23)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) - Kacc*(2.0f*q0*q2 - 2.0f*q1*q3)*(Kacc*P(4,6)*SH_ACC[0] + Kacc*P(5,6)*SH_ACC[3] - Kacc*P(22,6)*SH_ACC[0] - Kacc*P(23,6)*SH_ACC[3] - Kacc*P(6,6)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,6)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,6)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,6)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,6)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) + Kacc*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)*(Kacc*P(4,0)*SH_ACC[0] + Kacc*P(5,0)*SH_ACC[3] - Kacc*P(22,0)*SH_ACC[0] - Kacc*P(23,0)*SH_ACC[3] - Kacc*P(6,0)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,0)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,0)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,0)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,0)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) + Kacc*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd)*(Kacc*P(4,1)*SH_ACC[0] + Kacc*P(5,1)*SH_ACC[3] - Kacc*P(22,1)*SH_ACC[0] - Kacc*P(23,1)*SH_ACC[3] - Kacc*P(6,1)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,1)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,1)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,1)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,1)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) - Kacc*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd)*(Kacc*P(4,2)*SH_ACC[0] + Kacc*P(5,2)*SH_ACC[3] - Kacc*P(22,2)*SH_ACC[0] - Kacc*P(23,2)*SH_ACC[3] - Kacc*P(6,2)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,2)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,2)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,2)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,2)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)) + Kacc*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)*(Kacc*P(4,3)*SH_ACC[0] + Kacc*P(5,3)*SH_ACC[3] - Kacc*P(22,3)*SH_ACC[0] - Kacc*P(23,3)*SH_ACC[3] - Kacc*P(6,3)*(2.0f*q0*q2 - 2.0f*q1*q3) + Kacc*P(0,3)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd) + Kacc*P(1,3)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(2,3)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(3,3)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd))); + + SK_ACC[0] = 1.0f/drag_innov_var; + SK_ACC[1] = 2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd; + SK_ACC[2] = 2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd; + SK_ACC[3] = 2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd; + SK_ACC[4] = 2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd; + SK_ACC[5] = 2.0f*q0*q2 - 2.0f*q1*q3; + SK_ACC[6] = SH_ACC[3]; + + Kfusion(0) = -SK_ACC[0]*(Kacc*P(0,4)*SH_ACC[0] - Kacc*P(0,22)*SH_ACC[0] + Kacc*P(0,0)*SK_ACC[3] - Kacc*P(0,2)*SK_ACC[2] + Kacc*P(0,3)*SK_ACC[1] + Kacc*P(0,1)*SK_ACC[4] + Kacc*P(0,5)*SK_ACC[6] - Kacc*P(0,6)*SK_ACC[5] - Kacc*P(0,23)*SK_ACC[6]); + Kfusion(1) = -SK_ACC[0]*(Kacc*P(1,4)*SH_ACC[0] - Kacc*P(1,22)*SH_ACC[0] + Kacc*P(1,0)*SK_ACC[3] - Kacc*P(1,2)*SK_ACC[2] + Kacc*P(1,3)*SK_ACC[1] + Kacc*P(1,1)*SK_ACC[4] + Kacc*P(1,5)*SK_ACC[6] - Kacc*P(1,6)*SK_ACC[5] - Kacc*P(1,23)*SK_ACC[6]); + Kfusion(2) = -SK_ACC[0]*(Kacc*P(2,4)*SH_ACC[0] - Kacc*P(2,22)*SH_ACC[0] + Kacc*P(2,0)*SK_ACC[3] - Kacc*P(2,2)*SK_ACC[2] + Kacc*P(2,3)*SK_ACC[1] + Kacc*P(2,1)*SK_ACC[4] + Kacc*P(2,5)*SK_ACC[6] - Kacc*P(2,6)*SK_ACC[5] - Kacc*P(2,23)*SK_ACC[6]); + Kfusion(3) = -SK_ACC[0]*(Kacc*P(3,4)*SH_ACC[0] - Kacc*P(3,22)*SH_ACC[0] + Kacc*P(3,0)*SK_ACC[3] - Kacc*P(3,2)*SK_ACC[2] + Kacc*P(3,3)*SK_ACC[1] + Kacc*P(3,1)*SK_ACC[4] + Kacc*P(3,5)*SK_ACC[6] - Kacc*P(3,6)*SK_ACC[5] - Kacc*P(3,23)*SK_ACC[6]); + Kfusion(4) = -SK_ACC[0]*(Kacc*P(4,4)*SH_ACC[0] - Kacc*P(4,22)*SH_ACC[0] + Kacc*P(4,0)*SK_ACC[3] - Kacc*P(4,2)*SK_ACC[2] + Kacc*P(4,3)*SK_ACC[1] + Kacc*P(4,1)*SK_ACC[4] + Kacc*P(4,5)*SK_ACC[6] - Kacc*P(4,6)*SK_ACC[5] - Kacc*P(4,23)*SK_ACC[6]); + Kfusion(5) = -SK_ACC[0]*(Kacc*P(5,4)*SH_ACC[0] - Kacc*P(5,22)*SH_ACC[0] + Kacc*P(5,0)*SK_ACC[3] - Kacc*P(5,2)*SK_ACC[2] + Kacc*P(5,3)*SK_ACC[1] + Kacc*P(5,1)*SK_ACC[4] + Kacc*P(5,5)*SK_ACC[6] - Kacc*P(5,6)*SK_ACC[5] - Kacc*P(5,23)*SK_ACC[6]); + Kfusion(6) = -SK_ACC[0]*(Kacc*P(6,4)*SH_ACC[0] - Kacc*P(6,22)*SH_ACC[0] + Kacc*P(6,0)*SK_ACC[3] - Kacc*P(6,2)*SK_ACC[2] + Kacc*P(6,3)*SK_ACC[1] + Kacc*P(6,1)*SK_ACC[4] + Kacc*P(6,5)*SK_ACC[6] - Kacc*P(6,6)*SK_ACC[5] - Kacc*P(6,23)*SK_ACC[6]); + Kfusion(7) = -SK_ACC[0]*(Kacc*P(7,4)*SH_ACC[0] - Kacc*P(7,22)*SH_ACC[0] + Kacc*P(7,0)*SK_ACC[3] - Kacc*P(7,2)*SK_ACC[2] + Kacc*P(7,3)*SK_ACC[1] + Kacc*P(7,1)*SK_ACC[4] + Kacc*P(7,5)*SK_ACC[6] - Kacc*P(7,6)*SK_ACC[5] - Kacc*P(7,23)*SK_ACC[6]); + Kfusion(8) = -SK_ACC[0]*(Kacc*P(8,4)*SH_ACC[0] - Kacc*P(8,22)*SH_ACC[0] + Kacc*P(8,0)*SK_ACC[3] - Kacc*P(8,2)*SK_ACC[2] + Kacc*P(8,3)*SK_ACC[1] + Kacc*P(8,1)*SK_ACC[4] + Kacc*P(8,5)*SK_ACC[6] - Kacc*P(8,6)*SK_ACC[5] - Kacc*P(8,23)*SK_ACC[6]); + Kfusion(9) = -SK_ACC[0]*(Kacc*P(9,4)*SH_ACC[0] - Kacc*P(9,22)*SH_ACC[0] + Kacc*P(9,0)*SK_ACC[3] - Kacc*P(9,2)*SK_ACC[2] + Kacc*P(9,3)*SK_ACC[1] + Kacc*P(9,1)*SK_ACC[4] + Kacc*P(9,5)*SK_ACC[6] - Kacc*P(9,6)*SK_ACC[5] - Kacc*P(9,23)*SK_ACC[6]); + Kfusion(10) = -SK_ACC[0]*(Kacc*P(10,4)*SH_ACC[0] - Kacc*P(10,22)*SH_ACC[0] + Kacc*P(10,0)*SK_ACC[3] - Kacc*P(10,2)*SK_ACC[2] + Kacc*P(10,3)*SK_ACC[1] + Kacc*P(10,1)*SK_ACC[4] + Kacc*P(10,5)*SK_ACC[6] - Kacc*P(10,6)*SK_ACC[5] - Kacc*P(10,23)*SK_ACC[6]); + Kfusion(11) = -SK_ACC[0]*(Kacc*P(11,4)*SH_ACC[0] - Kacc*P(11,22)*SH_ACC[0] + Kacc*P(11,0)*SK_ACC[3] - Kacc*P(11,2)*SK_ACC[2] + Kacc*P(11,3)*SK_ACC[1] + Kacc*P(11,1)*SK_ACC[4] + Kacc*P(11,5)*SK_ACC[6] - Kacc*P(11,6)*SK_ACC[5] - Kacc*P(11,23)*SK_ACC[6]); + Kfusion(12) = -SK_ACC[0]*(Kacc*P(12,4)*SH_ACC[0] - Kacc*P(12,22)*SH_ACC[0] + Kacc*P(12,0)*SK_ACC[3] - Kacc*P(12,2)*SK_ACC[2] + Kacc*P(12,3)*SK_ACC[1] + Kacc*P(12,1)*SK_ACC[4] + Kacc*P(12,5)*SK_ACC[6] - Kacc*P(12,6)*SK_ACC[5] - Kacc*P(12,23)*SK_ACC[6]); + Kfusion(13) = -SK_ACC[0]*(Kacc*P(13,4)*SH_ACC[0] - Kacc*P(13,22)*SH_ACC[0] + Kacc*P(13,0)*SK_ACC[3] - Kacc*P(13,2)*SK_ACC[2] + Kacc*P(13,3)*SK_ACC[1] + Kacc*P(13,1)*SK_ACC[4] + Kacc*P(13,5)*SK_ACC[6] - Kacc*P(13,6)*SK_ACC[5] - Kacc*P(13,23)*SK_ACC[6]); + Kfusion(14) = -SK_ACC[0]*(Kacc*P(14,4)*SH_ACC[0] - Kacc*P(14,22)*SH_ACC[0] + Kacc*P(14,0)*SK_ACC[3] - Kacc*P(14,2)*SK_ACC[2] + Kacc*P(14,3)*SK_ACC[1] + Kacc*P(14,1)*SK_ACC[4] + Kacc*P(14,5)*SK_ACC[6] - Kacc*P(14,6)*SK_ACC[5] - Kacc*P(14,23)*SK_ACC[6]); + Kfusion(15) = -SK_ACC[0]*(Kacc*P(15,4)*SH_ACC[0] - Kacc*P(15,22)*SH_ACC[0] + Kacc*P(15,0)*SK_ACC[3] - Kacc*P(15,2)*SK_ACC[2] + Kacc*P(15,3)*SK_ACC[1] + Kacc*P(15,1)*SK_ACC[4] + Kacc*P(15,5)*SK_ACC[6] - Kacc*P(15,6)*SK_ACC[5] - Kacc*P(15,23)*SK_ACC[6]); + Kfusion(16) = -SK_ACC[0]*(Kacc*P(16,4)*SH_ACC[0] - Kacc*P(16,22)*SH_ACC[0] + Kacc*P(16,0)*SK_ACC[3] - Kacc*P(16,2)*SK_ACC[2] + Kacc*P(16,3)*SK_ACC[1] + Kacc*P(16,1)*SK_ACC[4] + Kacc*P(16,5)*SK_ACC[6] - Kacc*P(16,6)*SK_ACC[5] - Kacc*P(16,23)*SK_ACC[6]); + Kfusion(17) = -SK_ACC[0]*(Kacc*P(17,4)*SH_ACC[0] - Kacc*P(17,22)*SH_ACC[0] + Kacc*P(17,0)*SK_ACC[3] - Kacc*P(17,2)*SK_ACC[2] + Kacc*P(17,3)*SK_ACC[1] + Kacc*P(17,1)*SK_ACC[4] + Kacc*P(17,5)*SK_ACC[6] - Kacc*P(17,6)*SK_ACC[5] - Kacc*P(17,23)*SK_ACC[6]); + Kfusion(18) = -SK_ACC[0]*(Kacc*P(18,4)*SH_ACC[0] - Kacc*P(18,22)*SH_ACC[0] + Kacc*P(18,0)*SK_ACC[3] - Kacc*P(18,2)*SK_ACC[2] + Kacc*P(18,3)*SK_ACC[1] + Kacc*P(18,1)*SK_ACC[4] + Kacc*P(18,5)*SK_ACC[6] - Kacc*P(18,6)*SK_ACC[5] - Kacc*P(18,23)*SK_ACC[6]); + Kfusion(19) = -SK_ACC[0]*(Kacc*P(19,4)*SH_ACC[0] - Kacc*P(19,22)*SH_ACC[0] + Kacc*P(19,0)*SK_ACC[3] - Kacc*P(19,2)*SK_ACC[2] + Kacc*P(19,3)*SK_ACC[1] + Kacc*P(19,1)*SK_ACC[4] + Kacc*P(19,5)*SK_ACC[6] - Kacc*P(19,6)*SK_ACC[5] - Kacc*P(19,23)*SK_ACC[6]); + Kfusion(20) = -SK_ACC[0]*(Kacc*P(20,4)*SH_ACC[0] - Kacc*P(20,22)*SH_ACC[0] + Kacc*P(20,0)*SK_ACC[3] - Kacc*P(20,2)*SK_ACC[2] + Kacc*P(20,3)*SK_ACC[1] + Kacc*P(20,1)*SK_ACC[4] + Kacc*P(20,5)*SK_ACC[6] - Kacc*P(20,6)*SK_ACC[5] - Kacc*P(20,23)*SK_ACC[6]); + Kfusion(21) = -SK_ACC[0]*(Kacc*P(21,4)*SH_ACC[0] - Kacc*P(21,22)*SH_ACC[0] + Kacc*P(21,0)*SK_ACC[3] - Kacc*P(21,2)*SK_ACC[2] + Kacc*P(21,3)*SK_ACC[1] + Kacc*P(21,1)*SK_ACC[4] + Kacc*P(21,5)*SK_ACC[6] - Kacc*P(21,6)*SK_ACC[5] - Kacc*P(21,23)*SK_ACC[6]); + Kfusion(22) = -SK_ACC[0]*(Kacc*P(22,4)*SH_ACC[0] - Kacc*P(22,22)*SH_ACC[0] + Kacc*P(22,0)*SK_ACC[3] - Kacc*P(22,2)*SK_ACC[2] + Kacc*P(22,3)*SK_ACC[1] + Kacc*P(22,1)*SK_ACC[4] + Kacc*P(22,5)*SK_ACC[6] - Kacc*P(22,6)*SK_ACC[5] - Kacc*P(22,23)*SK_ACC[6]); + Kfusion(23) = -SK_ACC[0]*(Kacc*P(23,4)*SH_ACC[0] - Kacc*P(23,22)*SH_ACC[0] + Kacc*P(23,0)*SK_ACC[3] - Kacc*P(23,2)*SK_ACC[2] + Kacc*P(23,3)*SK_ACC[1] + Kacc*P(23,1)*SK_ACC[4] + Kacc*P(23,5)*SK_ACC[6] - Kacc*P(23,6)*SK_ACC[5] - Kacc*P(23,23)*SK_ACC[6]); + + Hfusion_matlab = H_ACC; + Kfusion_matlab = Kfusion; + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Hfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Hfusion_matlab(row); + max_new = Hfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Specific Force X axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Specific Force X axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Kfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_matlab(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion_matlab(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Specific Force X axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Specific Force X axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + // Compare Y axis equations + { + const float airSpd = 10.0f * (float)rand() + 5.0f; + + // Estimate the derivative of specific force wrt airspeed along the X axis + // Limit lower value to prevent arithmetic exceptions + const float Kaccy = fmaxf(1e-1f, rho * BC_inv_y * airSpd); + + // Sub Expressions + const float HK0 = ve - vwe; + const float HK1 = vn - vwn; + const float HK2 = HK0*q0 - HK1*q3 + q1*vd; + const float HK3 = 2*Kaccy; + const float HK4 = -HK0*q1 + HK1*q2 + q0*vd; + const float HK5 = HK0*q2 + HK1*q1 + q3*vd; + const float HK6 = HK0*q3 + HK1*q0 - q2*vd; + const float HK7 = q0*q3 - q1*q2; + const float HK8 = HK3*HK7; + const float HK9 = ecl::powf(q0, 2) - ecl::powf(q1, 2) + ecl::powf(q2, 2) - ecl::powf(q3, 2); + const float HK10 = HK9*Kaccy; + const float HK11 = q0*q1 + q2*q3; + const float HK12 = 2*HK11; + const float HK13 = 2*HK7; + const float HK14 = 2*HK5; + const float HK15 = 2*HK2; + const float HK16 = 2*HK4; + const float HK17 = 2*HK6; + const float HK18 = HK12*P(0,6) + HK13*P(0,22) - HK13*P(0,4) + HK14*P(0,2) + HK15*P(0,0) + HK16*P(0,1) - HK17*P(0,3) - HK9*P(0,23) + HK9*P(0,5); + const float HK19 = ecl::powf(Kaccy, 2); + const float HK20 = HK12*P(6,6) - HK13*P(4,6) + HK13*P(6,22) + HK14*P(2,6) + HK15*P(0,6) + HK16*P(1,6) - HK17*P(3,6) + HK9*P(5,6) - HK9*P(6,23); + const float HK21 = HK13*P(4,22); + const float HK22 = HK12*P(6,22) + HK13*P(22,22) + HK14*P(2,22) + HK15*P(0,22) + HK16*P(1,22) - HK17*P(3,22) - HK21 - HK9*P(22,23) + HK9*P(5,22); + const float HK23 = HK13*HK19; + const float HK24 = HK12*P(4,6) - HK13*P(4,4) + HK14*P(2,4) + HK15*P(0,4) + HK16*P(1,4) - HK17*P(3,4) + HK21 - HK9*P(4,23) + HK9*P(4,5); + const float HK25 = HK9*P(5,23); + const float HK26 = HK12*P(5,6) - HK13*P(4,5) + HK13*P(5,22) + HK14*P(2,5) + HK15*P(0,5) + HK16*P(1,5) - HK17*P(3,5) - HK25 + HK9*P(5,5); + const float HK27 = HK19*HK9; + const float HK28 = HK12*P(6,23) + HK13*P(22,23) - HK13*P(4,23) + HK14*P(2,23) + HK15*P(0,23) + HK16*P(1,23) - HK17*P(3,23) + HK25 - HK9*P(23,23); + const float HK29 = HK12*P(2,6) + HK13*P(2,22) - HK13*P(2,4) + HK14*P(2,2) + HK15*P(0,2) + HK16*P(1,2) - HK17*P(2,3) - HK9*P(2,23) + HK9*P(2,5); + const float HK30 = HK12*P(1,6) + HK13*P(1,22) - HK13*P(1,4) + HK14*P(1,2) + HK15*P(0,1) + HK16*P(1,1) - HK17*P(1,3) - HK9*P(1,23) + HK9*P(1,5); + const float HK31 = HK12*P(3,6) + HK13*P(3,22) - HK13*P(3,4) + HK14*P(2,3) + HK15*P(0,3) + HK16*P(1,3) - HK17*P(3,3) - HK9*P(3,23) + HK9*P(3,5); + const float HK32 = Kaccy/(HK12*HK19*HK20 + HK14*HK19*HK29 + HK15*HK18*HK19 + HK16*HK19*HK30 - HK17*HK19*HK31 + HK22*HK23 - HK23*HK24 + HK26*HK27 - HK27*HK28 + R_ACC); + + // Observation Jacobians + Hfusion.at<0>() = -HK2*HK3; + Hfusion.at<1>() = -HK3*HK4; + Hfusion.at<2>() = -HK3*HK5; + Hfusion.at<3>() = HK3*HK6; + Hfusion.at<4>() = HK8; + Hfusion.at<5>() = -HK10; + Hfusion.at<6>() = -HK11*HK3; + Hfusion.at<22>() = -HK8; + Hfusion.at<23>() = HK10; + + // Kalman gains + Kfusion(0) = -HK18*HK32; + Kfusion(1) = -HK30*HK32; + Kfusion(2) = -HK29*HK32; + Kfusion(3) = -HK31*HK32; + Kfusion(4) = -HK24*HK32; + Kfusion(5) = -HK26*HK32; + Kfusion(6) = -HK20*HK32; + Kfusion(7) = -HK32*(HK12*P(6,7) - HK13*P(4,7) + HK13*P(7,22) + HK14*P(2,7) + HK15*P(0,7) + HK16*P(1,7) - HK17*P(3,7) + HK9*P(5,7) - HK9*P(7,23)); + Kfusion(8) = -HK32*(HK12*P(6,8) - HK13*P(4,8) + HK13*P(8,22) + HK14*P(2,8) + HK15*P(0,8) + HK16*P(1,8) - HK17*P(3,8) + HK9*P(5,8) - HK9*P(8,23)); + Kfusion(9) = -HK32*(HK12*P(6,9) - HK13*P(4,9) + HK13*P(9,22) + HK14*P(2,9) + HK15*P(0,9) + HK16*P(1,9) - HK17*P(3,9) + HK9*P(5,9) - HK9*P(9,23)); + Kfusion(10) = -HK32*(HK12*P(6,10) + HK13*P(10,22) - HK13*P(4,10) + HK14*P(2,10) + HK15*P(0,10) + HK16*P(1,10) - HK17*P(3,10) - HK9*P(10,23) + HK9*P(5,10)); + Kfusion(11) = -HK32*(HK12*P(6,11) + HK13*P(11,22) - HK13*P(4,11) + HK14*P(2,11) + HK15*P(0,11) + HK16*P(1,11) - HK17*P(3,11) - HK9*P(11,23) + HK9*P(5,11)); + Kfusion(12) = -HK32*(HK12*P(6,12) + HK13*P(12,22) - HK13*P(4,12) + HK14*P(2,12) + HK15*P(0,12) + HK16*P(1,12) - HK17*P(3,12) - HK9*P(12,23) + HK9*P(5,12)); + Kfusion(13) = -HK32*(HK12*P(6,13) + HK13*P(13,22) - HK13*P(4,13) + HK14*P(2,13) + HK15*P(0,13) + HK16*P(1,13) - HK17*P(3,13) - HK9*P(13,23) + HK9*P(5,13)); + Kfusion(14) = -HK32*(HK12*P(6,14) + HK13*P(14,22) - HK13*P(4,14) + HK14*P(2,14) + HK15*P(0,14) + HK16*P(1,14) - HK17*P(3,14) - HK9*P(14,23) + HK9*P(5,14)); + Kfusion(15) = -HK32*(HK12*P(6,15) + HK13*P(15,22) - HK13*P(4,15) + HK14*P(2,15) + HK15*P(0,15) + HK16*P(1,15) - HK17*P(3,15) - HK9*P(15,23) + HK9*P(5,15)); + Kfusion(16) = -HK32*(HK12*P(6,16) + HK13*P(16,22) - HK13*P(4,16) + HK14*P(2,16) + HK15*P(0,16) + HK16*P(1,16) - HK17*P(3,16) - HK9*P(16,23) + HK9*P(5,16)); + Kfusion(17) = -HK32*(HK12*P(6,17) + HK13*P(17,22) - HK13*P(4,17) + HK14*P(2,17) + HK15*P(0,17) + HK16*P(1,17) - HK17*P(3,17) - HK9*P(17,23) + HK9*P(5,17)); + Kfusion(18) = -HK32*(HK12*P(6,18) + HK13*P(18,22) - HK13*P(4,18) + HK14*P(2,18) + HK15*P(0,18) + HK16*P(1,18) - HK17*P(3,18) - HK9*P(18,23) + HK9*P(5,18)); + Kfusion(19) = -HK32*(HK12*P(6,19) + HK13*P(19,22) - HK13*P(4,19) + HK14*P(2,19) + HK15*P(0,19) + HK16*P(1,19) - HK17*P(3,19) - HK9*P(19,23) + HK9*P(5,19)); + Kfusion(20) = -HK32*(HK12*P(6,20) + HK13*P(20,22) - HK13*P(4,20) + HK14*P(2,20) + HK15*P(0,20) + HK16*P(1,20) - HK17*P(3,20) - HK9*P(20,23) + HK9*P(5,20)); + Kfusion(21) = -HK32*(HK12*P(6,21) + HK13*P(21,22) - HK13*P(4,21) + HK14*P(2,21) + HK15*P(0,21) + HK16*P(1,21) - HK17*P(3,21) - HK9*P(21,23) + HK9*P(5,21)); + Kfusion(22) = -HK22*HK32; + Kfusion(23) = -HK28*HK32; + + // save output + Hfusion_sympy(0) = Hfusion.at<0>(); + Hfusion_sympy(1) = Hfusion.at<1>(); + Hfusion_sympy(2) = Hfusion.at<2>(); + Hfusion_sympy(3) = Hfusion.at<3>(); + Hfusion_sympy(4) = Hfusion.at<4>(); + Hfusion_sympy(5) = Hfusion.at<5>(); + Hfusion_sympy(6) = Hfusion.at<6>(); + Hfusion_sympy(22) = Hfusion.at<22>(); + Hfusion_sympy(23) = Hfusion.at<23>(); + Kfusion_sympy = Kfusion; + + // repeat calculation using matlab generated equations + + const float Kacc = Kaccy; + + SH_ACC[0] = sq(q0) - sq(q1) + sq(q2) - sq(q3); + SH_ACC[1] = vn - vwn; + SH_ACC[2] = ve - vwe; + H_ACC(0) = -Kacc*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd); + H_ACC(1) = -Kacc*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd); + H_ACC(2) = -Kacc*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd); + H_ACC(3) = Kacc*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd); + H_ACC(4) = Kacc*(2.0f*q0*q3 - 2.0f*q1*q2); + H_ACC(5) = -Kacc*SH_ACC[0]; + H_ACC(6) = -Kacc*(2.0f*q0*q1 + 2.0f*q2*q3); + H_ACC(22) = -2.0f*Kacc*(q0*q3 - q1*q2); + H_ACC(23) = Kacc*SH_ACC[0]; + drag_innov_var = (R_ACC + Kacc*SH_ACC[0]*(Kacc*P(5,5)*SH_ACC[0] - Kacc*P(23,5)*SH_ACC[0] - Kacc*P(4,5)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,5)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,5)*(q0*q3 - q1*q2) + Kacc*P(0,5)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,5)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,5)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,5)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) - Kacc*SH_ACC[0]*(Kacc*P(5,23)*SH_ACC[0] - Kacc*P(23,23)*SH_ACC[0] - Kacc*P(4,23)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,23)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,23)*(q0*q3 - q1*q2) + Kacc*P(0,23)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,23)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,23)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,23)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) - Kacc*(2.0f*q0*q3 - 2.0f*q1*q2)*(Kacc*P(5,4)*SH_ACC[0] - Kacc*P(23,4)*SH_ACC[0] - Kacc*P(4,4)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,4)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,4)*(q0*q3 - q1*q2) + Kacc*P(0,4)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,4)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,4)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,4)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) + Kacc*(2.0f*q0*q1 + 2.0f*q2*q3)*(Kacc*P(5,6)*SH_ACC[0] - Kacc*P(23,6)*SH_ACC[0] - Kacc*P(4,6)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,6)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,6)*(q0*q3 - q1*q2) + Kacc*P(0,6)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,6)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,6)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,6)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) + 2*Kacc*(q0*q3 - q1*q2)*(Kacc*P(5,22)*SH_ACC[0] - Kacc*P(23,22)*SH_ACC[0] - Kacc*P(4,22)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,22)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,22)*(q0*q3 - q1*q2) + Kacc*P(0,22)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,22)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,22)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,22)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) + Kacc*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd)*(Kacc*P(5,0)*SH_ACC[0] - Kacc*P(23,0)*SH_ACC[0] - Kacc*P(4,0)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,0)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,0)*(q0*q3 - q1*q2) + Kacc*P(0,0)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,0)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,0)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,0)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) + Kacc*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd)*(Kacc*P(5,1)*SH_ACC[0] - Kacc*P(23,1)*SH_ACC[0] - Kacc*P(4,1)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,1)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,1)*(q0*q3 - q1*q2) + Kacc*P(0,1)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,1)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,1)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,1)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) + Kacc*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd)*(Kacc*P(5,2)*SH_ACC[0] - Kacc*P(23,2)*SH_ACC[0] - Kacc*P(4,2)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,2)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,2)*(q0*q3 - q1*q2) + Kacc*P(0,2)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,2)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,2)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,2)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)) - Kacc*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd)*(Kacc*P(5,3)*SH_ACC[0] - Kacc*P(23,3)*SH_ACC[0] - Kacc*P(4,3)*(2.0f*q0*q3 - 2.0f*q1*q2) + Kacc*P(6,3)*(2.0f*q0*q1 + 2.0f*q2*q3) + 2*Kacc*P(22,3)*(q0*q3 - q1*q2) + Kacc*P(0,3)*(2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd) + Kacc*P(1,3)*(2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd) + Kacc*P(2,3)*(2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd) - Kacc*P(3,3)*(2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd))); + SK_ACC[0] = 1.0f/drag_innov_var; + SK_ACC[1] = 2.0f*q0*SH_ACC[1] + 2.0f*q3*SH_ACC[2] - 2.0f*q2*vd; + SK_ACC[2] = 2.0f*q2*SH_ACC[1] - 2.0f*q1*SH_ACC[2] + 2.0f*q0*vd; + SK_ACC[3] = 2.0f*q0*SH_ACC[2] - 2.0f*q3*SH_ACC[1] + 2.0f*q1*vd; + SK_ACC[4] = 2.0f*q1*SH_ACC[1] + 2.0f*q2*SH_ACC[2] + 2.0f*q3*vd; + SK_ACC[5] = 2.0f*q0*q3 - 2.0f*q1*q2; + SK_ACC[6] = q0*q3 - q1*q2; + SK_ACC[7] = 2.0f*q0*q1 + 2.0f*q2*q3; + SK_ACC[8] = SH_ACC[0]; + + Kfusion(0) = -SK_ACC[0]*(Kacc*P(0,0)*SK_ACC[3] + Kacc*P(0,1)*SK_ACC[2] - Kacc*P(0,3)*SK_ACC[1] + Kacc*P(0,2)*SK_ACC[4] - Kacc*P(0,4)*SK_ACC[5] + Kacc*P(0,5)*SK_ACC[8] + Kacc*P(0,6)*SK_ACC[7] + 2*Kacc*P(0,22)*SK_ACC[6] - Kacc*P(0,23)*SK_ACC[8]); + Kfusion(1) = -SK_ACC[0]*(Kacc*P(1,0)*SK_ACC[3] + Kacc*P(1,1)*SK_ACC[2] - Kacc*P(1,3)*SK_ACC[1] + Kacc*P(1,2)*SK_ACC[4] - Kacc*P(1,4)*SK_ACC[5] + Kacc*P(1,5)*SK_ACC[8] + Kacc*P(1,6)*SK_ACC[7] + 2*Kacc*P(1,22)*SK_ACC[6] - Kacc*P(1,23)*SK_ACC[8]); + Kfusion(2) = -SK_ACC[0]*(Kacc*P(2,0)*SK_ACC[3] + Kacc*P(2,1)*SK_ACC[2] - Kacc*P(2,3)*SK_ACC[1] + Kacc*P(2,2)*SK_ACC[4] - Kacc*P(2,4)*SK_ACC[5] + Kacc*P(2,5)*SK_ACC[8] + Kacc*P(2,6)*SK_ACC[7] + 2*Kacc*P(2,22)*SK_ACC[6] - Kacc*P(2,23)*SK_ACC[8]); + Kfusion(3) = -SK_ACC[0]*(Kacc*P(3,0)*SK_ACC[3] + Kacc*P(3,1)*SK_ACC[2] - Kacc*P(3,3)*SK_ACC[1] + Kacc*P(3,2)*SK_ACC[4] - Kacc*P(3,4)*SK_ACC[5] + Kacc*P(3,5)*SK_ACC[8] + Kacc*P(3,6)*SK_ACC[7] + 2*Kacc*P(3,22)*SK_ACC[6] - Kacc*P(3,23)*SK_ACC[8]); + Kfusion(4) = -SK_ACC[0]*(Kacc*P(4,0)*SK_ACC[3] + Kacc*P(4,1)*SK_ACC[2] - Kacc*P(4,3)*SK_ACC[1] + Kacc*P(4,2)*SK_ACC[4] - Kacc*P(4,4)*SK_ACC[5] + Kacc*P(4,5)*SK_ACC[8] + Kacc*P(4,6)*SK_ACC[7] + 2*Kacc*P(4,22)*SK_ACC[6] - Kacc*P(4,23)*SK_ACC[8]); + Kfusion(5) = -SK_ACC[0]*(Kacc*P(5,0)*SK_ACC[3] + Kacc*P(5,1)*SK_ACC[2] - Kacc*P(5,3)*SK_ACC[1] + Kacc*P(5,2)*SK_ACC[4] - Kacc*P(5,4)*SK_ACC[5] + Kacc*P(5,5)*SK_ACC[8] + Kacc*P(5,6)*SK_ACC[7] + 2*Kacc*P(5,22)*SK_ACC[6] - Kacc*P(5,23)*SK_ACC[8]); + Kfusion(6) = -SK_ACC[0]*(Kacc*P(6,0)*SK_ACC[3] + Kacc*P(6,1)*SK_ACC[2] - Kacc*P(6,3)*SK_ACC[1] + Kacc*P(6,2)*SK_ACC[4] - Kacc*P(6,4)*SK_ACC[5] + Kacc*P(6,5)*SK_ACC[8] + Kacc*P(6,6)*SK_ACC[7] + 2*Kacc*P(6,22)*SK_ACC[6] - Kacc*P(6,23)*SK_ACC[8]); + Kfusion(7) = -SK_ACC[0]*(Kacc*P(7,0)*SK_ACC[3] + Kacc*P(7,1)*SK_ACC[2] - Kacc*P(7,3)*SK_ACC[1] + Kacc*P(7,2)*SK_ACC[4] - Kacc*P(7,4)*SK_ACC[5] + Kacc*P(7,5)*SK_ACC[8] + Kacc*P(7,6)*SK_ACC[7] + 2*Kacc*P(7,22)*SK_ACC[6] - Kacc*P(7,23)*SK_ACC[8]); + Kfusion(8) = -SK_ACC[0]*(Kacc*P(8,0)*SK_ACC[3] + Kacc*P(8,1)*SK_ACC[2] - Kacc*P(8,3)*SK_ACC[1] + Kacc*P(8,2)*SK_ACC[4] - Kacc*P(8,4)*SK_ACC[5] + Kacc*P(8,5)*SK_ACC[8] + Kacc*P(8,6)*SK_ACC[7] + 2*Kacc*P(8,22)*SK_ACC[6] - Kacc*P(8,23)*SK_ACC[8]); + Kfusion(9) = -SK_ACC[0]*(Kacc*P(9,0)*SK_ACC[3] + Kacc*P(9,1)*SK_ACC[2] - Kacc*P(9,3)*SK_ACC[1] + Kacc*P(9,2)*SK_ACC[4] - Kacc*P(9,4)*SK_ACC[5] + Kacc*P(9,5)*SK_ACC[8] + Kacc*P(9,6)*SK_ACC[7] + 2*Kacc*P(9,22)*SK_ACC[6] - Kacc*P(9,23)*SK_ACC[8]); + Kfusion(10) = -SK_ACC[0]*(Kacc*P(10,0)*SK_ACC[3] + Kacc*P(10,1)*SK_ACC[2] - Kacc*P(10,3)*SK_ACC[1] + Kacc*P(10,2)*SK_ACC[4] - Kacc*P(10,4)*SK_ACC[5] + Kacc*P(10,5)*SK_ACC[8] + Kacc*P(10,6)*SK_ACC[7] + 2*Kacc*P(10,22)*SK_ACC[6] - Kacc*P(10,23)*SK_ACC[8]); + Kfusion(11) = -SK_ACC[0]*(Kacc*P(11,0)*SK_ACC[3] + Kacc*P(11,1)*SK_ACC[2] - Kacc*P(11,3)*SK_ACC[1] + Kacc*P(11,2)*SK_ACC[4] - Kacc*P(11,4)*SK_ACC[5] + Kacc*P(11,5)*SK_ACC[8] + Kacc*P(11,6)*SK_ACC[7] + 2*Kacc*P(11,22)*SK_ACC[6] - Kacc*P(11,23)*SK_ACC[8]); + Kfusion(12) = -SK_ACC[0]*(Kacc*P(12,0)*SK_ACC[3] + Kacc*P(12,1)*SK_ACC[2] - Kacc*P(12,3)*SK_ACC[1] + Kacc*P(12,2)*SK_ACC[4] - Kacc*P(12,4)*SK_ACC[5] + Kacc*P(12,5)*SK_ACC[8] + Kacc*P(12,6)*SK_ACC[7] + 2*Kacc*P(12,22)*SK_ACC[6] - Kacc*P(12,23)*SK_ACC[8]); + Kfusion(13) = -SK_ACC[0]*(Kacc*P(13,0)*SK_ACC[3] + Kacc*P(13,1)*SK_ACC[2] - Kacc*P(13,3)*SK_ACC[1] + Kacc*P(13,2)*SK_ACC[4] - Kacc*P(13,4)*SK_ACC[5] + Kacc*P(13,5)*SK_ACC[8] + Kacc*P(13,6)*SK_ACC[7] + 2*Kacc*P(13,22)*SK_ACC[6] - Kacc*P(13,23)*SK_ACC[8]); + Kfusion(14) = -SK_ACC[0]*(Kacc*P(14,0)*SK_ACC[3] + Kacc*P(14,1)*SK_ACC[2] - Kacc*P(14,3)*SK_ACC[1] + Kacc*P(14,2)*SK_ACC[4] - Kacc*P(14,4)*SK_ACC[5] + Kacc*P(14,5)*SK_ACC[8] + Kacc*P(14,6)*SK_ACC[7] + 2*Kacc*P(14,22)*SK_ACC[6] - Kacc*P(14,23)*SK_ACC[8]); + Kfusion(15) = -SK_ACC[0]*(Kacc*P(15,0)*SK_ACC[3] + Kacc*P(15,1)*SK_ACC[2] - Kacc*P(15,3)*SK_ACC[1] + Kacc*P(15,2)*SK_ACC[4] - Kacc*P(15,4)*SK_ACC[5] + Kacc*P(15,5)*SK_ACC[8] + Kacc*P(15,6)*SK_ACC[7] + 2*Kacc*P(15,22)*SK_ACC[6] - Kacc*P(15,23)*SK_ACC[8]); + Kfusion(16) = -SK_ACC[0]*(Kacc*P(16,0)*SK_ACC[3] + Kacc*P(16,1)*SK_ACC[2] - Kacc*P(16,3)*SK_ACC[1] + Kacc*P(16,2)*SK_ACC[4] - Kacc*P(16,4)*SK_ACC[5] + Kacc*P(16,5)*SK_ACC[8] + Kacc*P(16,6)*SK_ACC[7] + 2*Kacc*P(16,22)*SK_ACC[6] - Kacc*P(16,23)*SK_ACC[8]); + Kfusion(17) = -SK_ACC[0]*(Kacc*P(17,0)*SK_ACC[3] + Kacc*P(17,1)*SK_ACC[2] - Kacc*P(17,3)*SK_ACC[1] + Kacc*P(17,2)*SK_ACC[4] - Kacc*P(17,4)*SK_ACC[5] + Kacc*P(17,5)*SK_ACC[8] + Kacc*P(17,6)*SK_ACC[7] + 2*Kacc*P(17,22)*SK_ACC[6] - Kacc*P(17,23)*SK_ACC[8]); + Kfusion(18) = -SK_ACC[0]*(Kacc*P(18,0)*SK_ACC[3] + Kacc*P(18,1)*SK_ACC[2] - Kacc*P(18,3)*SK_ACC[1] + Kacc*P(18,2)*SK_ACC[4] - Kacc*P(18,4)*SK_ACC[5] + Kacc*P(18,5)*SK_ACC[8] + Kacc*P(18,6)*SK_ACC[7] + 2*Kacc*P(18,22)*SK_ACC[6] - Kacc*P(18,23)*SK_ACC[8]); + Kfusion(19) = -SK_ACC[0]*(Kacc*P(19,0)*SK_ACC[3] + Kacc*P(19,1)*SK_ACC[2] - Kacc*P(19,3)*SK_ACC[1] + Kacc*P(19,2)*SK_ACC[4] - Kacc*P(19,4)*SK_ACC[5] + Kacc*P(19,5)*SK_ACC[8] + Kacc*P(19,6)*SK_ACC[7] + 2*Kacc*P(19,22)*SK_ACC[6] - Kacc*P(19,23)*SK_ACC[8]); + Kfusion(20) = -SK_ACC[0]*(Kacc*P(20,0)*SK_ACC[3] + Kacc*P(20,1)*SK_ACC[2] - Kacc*P(20,3)*SK_ACC[1] + Kacc*P(20,2)*SK_ACC[4] - Kacc*P(20,4)*SK_ACC[5] + Kacc*P(20,5)*SK_ACC[8] + Kacc*P(20,6)*SK_ACC[7] + 2*Kacc*P(20,22)*SK_ACC[6] - Kacc*P(20,23)*SK_ACC[8]); + Kfusion(21) = -SK_ACC[0]*(Kacc*P(21,0)*SK_ACC[3] + Kacc*P(21,1)*SK_ACC[2] - Kacc*P(21,3)*SK_ACC[1] + Kacc*P(21,2)*SK_ACC[4] - Kacc*P(21,4)*SK_ACC[5] + Kacc*P(21,5)*SK_ACC[8] + Kacc*P(21,6)*SK_ACC[7] + 2*Kacc*P(21,22)*SK_ACC[6] - Kacc*P(21,23)*SK_ACC[8]); + Kfusion(22) = -SK_ACC[0]*(Kacc*P(22,0)*SK_ACC[3] + Kacc*P(22,1)*SK_ACC[2] - Kacc*P(22,3)*SK_ACC[1] + Kacc*P(22,2)*SK_ACC[4] - Kacc*P(22,4)*SK_ACC[5] + Kacc*P(22,5)*SK_ACC[8] + Kacc*P(22,6)*SK_ACC[7] + 2*Kacc*P(22,22)*SK_ACC[6] - Kacc*P(22,23)*SK_ACC[8]); + Kfusion(23) = -SK_ACC[0]*(Kacc*P(23,0)*SK_ACC[3] + Kacc*P(23,1)*SK_ACC[2] - Kacc*P(23,3)*SK_ACC[1] + Kacc*P(23,2)*SK_ACC[4] - Kacc*P(23,4)*SK_ACC[5] + Kacc*P(23,5)*SK_ACC[8] + Kacc*P(23,6)*SK_ACC[7] + 2*Kacc*P(23,22)*SK_ACC[6] - Kacc*P(23,23)*SK_ACC[8]); + + Hfusion_matlab = H_ACC; + Kfusion_matlab = Kfusion; + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Hfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - H_ACC(row)) / fabsf(Hfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_ACC(row); + max_new = Hfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Specific Force Y axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Specific Force Y axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Specific Force Y axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Specific Force Y axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_generated.cpp new file mode 100644 index 0000000000..0e6d60826a --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_generated.cpp @@ -0,0 +1,195 @@ +// Axis 0 equations +// Sub Expressions +const float HK0 = q2*vd; +const float HK1 = ve - vwe; +const float HK2 = HK1*q3; +const float HK3 = HK0 - HK2; +const float HK4 = 2*Kaccx; +const float HK5 = HK1*q2 + q3*vd; +const float HK6 = q0*vd; +const float HK7 = HK1*q1; +const float HK8 = 2*vn - 2*vwn; +const float HK9 = HK8*q2; +const float HK10 = HK6 - HK7 + HK9; +const float HK11 = HK1*q0 - HK8*q3 + q1*vd; +const float HK12 = 2*powf(q2, 2); +const float HK13 = 2*powf(q3, 2); +const float HK14 = HK12 + HK13 - 1; +const float HK15 = HK14*Kaccx; +const float HK16 = q0*q3 + q1*q2; +const float HK17 = HK16*HK4; +const float HK18 = q0*q2; +const float HK19 = q1*q3; +const float HK20 = HK18 - HK19; +const float HK21 = 2*HK3; +const float HK22 = 2*HK10; +const float HK23 = 2*HK20; +const float HK24 = 2*HK16; +const float HK25 = 2*HK5; +const float HK26 = 2*HK11; +const float HK27 = HK14*P(0,22) - HK24*P(0,23) + HK24*P(0,5) + HK25*P(0,1) + HK26*P(0,3); +const float HK28 = -HK12 - HK13 + 1; +const float HK29 = -2*HK0 + 2*HK2; +const float HK30 = -2*HK6 + 2*HK7 - 2*HK9; +const float HK31 = -2*HK18 + 2*HK19; +const float HK32 = HK24*P(5,23); +const float HK33 = HK14*P(22,23) - HK24*P(23,23) + HK25*P(1,23) + HK26*P(3,23) + HK32; +const float HK34 = powf(Kaccx, 2); +const float HK35 = HK24*HK34; +const float HK36 = HK14*P(5,22) + HK24*P(5,5) + HK25*P(1,5) + HK26*P(3,5) - HK32; +const float HK37 = HK14*P(6,22) + HK24*P(5,6) - HK24*P(6,23) + HK25*P(1,6) + HK26*P(3,6); +const float HK38 = HK14*P(1,22) - HK24*P(1,23) + HK24*P(1,5) + HK25*P(1,1) + HK26*P(1,3); +const float HK39 = HK14*P(4,22); +const float HK40 = -HK24*P(4,23) + HK24*P(4,5) + HK25*P(1,4) + HK26*P(3,4) + HK39; +const float HK41 = HK14*HK34; +const float HK42 = HK14*P(22,22) - HK24*P(22,23) + HK24*P(5,22) + HK25*P(1,22) + HK26*P(3,22); +const float HK43 = HK14*P(3,22) - HK24*P(3,23) + HK24*P(3,5) + HK25*P(1,3) + HK26*P(3,3); +const float HK44 = HK14*P(2,22) - HK24*P(2,23) + HK24*P(2,5) + HK25*P(1,2) + HK26*P(2,3); +const float HK45 = Kaccx/(HK21*HK34*(HK27 + HK28*P(0,4) + HK29*P(0,0) + HK30*P(0,2) + HK31*P(0,6)) + HK22*HK34*(HK28*P(2,4) + HK29*P(0,2) + HK30*P(2,2) + HK31*P(2,6) + HK44) + HK23*HK34*(HK28*P(4,6) + HK29*P(0,6) + HK30*P(2,6) + HK31*P(6,6) + HK37) - HK25*HK34*(HK28*P(1,4) + HK29*P(0,1) + HK30*P(1,2) + HK31*P(1,6) + HK38) - HK26*HK34*(HK28*P(3,4) + HK29*P(0,3) + HK30*P(2,3) + HK31*P(3,6) + HK43) + HK35*(HK28*P(4,23) + HK29*P(0,23) + HK30*P(2,23) + HK31*P(6,23) + HK33) - HK35*(HK28*P(4,5) + HK29*P(0,5) + HK30*P(2,5) + HK31*P(5,6) + HK36) - HK41*(HK28*P(4,22) + HK29*P(0,22) + HK30*P(2,22) + HK31*P(6,22) + HK42) + HK41*(HK28*P(4,4) + HK29*P(0,4) + HK30*P(2,4) + HK31*P(4,6) + HK40) - R_ACC); + + +// Observation Jacobians +Hfusion.at<0>() = HK3*HK4; +Hfusion.at<1>() = -HK4*HK5; +Hfusion.at<2>() = HK10*HK4; +Hfusion.at<3>() = -HK11*HK4; +Hfusion.at<4>() = HK15; +Hfusion.at<5>() = -HK17; +Hfusion.at<6>() = HK20*HK4; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = -HK15; +Hfusion.at<23>() = HK17; + + +// Kalman gains +Kfusion(0) = HK45*(-HK14*P(0,4) - HK21*P(0,0) - HK22*P(0,2) - HK23*P(0,6) + HK27); +Kfusion(1) = HK45*(-HK14*P(1,4) - HK21*P(0,1) - HK22*P(1,2) - HK23*P(1,6) + HK38); +Kfusion(2) = HK45*(-HK14*P(2,4) - HK21*P(0,2) - HK22*P(2,2) - HK23*P(2,6) + HK44); +Kfusion(3) = HK45*(-HK14*P(3,4) - HK21*P(0,3) - HK22*P(2,3) - HK23*P(3,6) + HK43); +Kfusion(4) = HK45*(-HK14*P(4,4) - HK21*P(0,4) - HK22*P(2,4) - HK23*P(4,6) + HK40); +Kfusion(5) = HK45*(-HK14*P(4,5) - HK21*P(0,5) - HK22*P(2,5) - HK23*P(5,6) + HK36); +Kfusion(6) = HK45*(-HK14*P(4,6) - HK21*P(0,6) - HK22*P(2,6) - HK23*P(6,6) + HK37); +Kfusion(7) = HK45*(-HK14*P(4,7) + HK14*P(7,22) - HK21*P(0,7) - HK22*P(2,7) - HK23*P(6,7) + HK24*P(5,7) - HK24*P(7,23) + HK25*P(1,7) + HK26*P(3,7)); +Kfusion(8) = HK45*(-HK14*P(4,8) + HK14*P(8,22) - HK21*P(0,8) - HK22*P(2,8) - HK23*P(6,8) + HK24*P(5,8) - HK24*P(8,23) + HK25*P(1,8) + HK26*P(3,8)); +Kfusion(9) = HK45*(-HK14*P(4,9) + HK14*P(9,22) - HK21*P(0,9) - HK22*P(2,9) - HK23*P(6,9) + HK24*P(5,9) - HK24*P(9,23) + HK25*P(1,9) + HK26*P(3,9)); +Kfusion(10) = HK45*(HK14*P(10,22) - HK14*P(4,10) - HK21*P(0,10) - HK22*P(2,10) - HK23*P(6,10) - HK24*P(10,23) + HK24*P(5,10) + HK25*P(1,10) + HK26*P(3,10)); +Kfusion(11) = HK45*(HK14*P(11,22) - HK14*P(4,11) - HK21*P(0,11) - HK22*P(2,11) - HK23*P(6,11) - HK24*P(11,23) + HK24*P(5,11) + HK25*P(1,11) + HK26*P(3,11)); +Kfusion(12) = HK45*(HK14*P(12,22) - HK14*P(4,12) - HK21*P(0,12) - HK22*P(2,12) - HK23*P(6,12) - HK24*P(12,23) + HK24*P(5,12) + HK25*P(1,12) + HK26*P(3,12)); +Kfusion(13) = HK45*(HK14*P(13,22) - HK14*P(4,13) - HK21*P(0,13) - HK22*P(2,13) - HK23*P(6,13) - HK24*P(13,23) + HK24*P(5,13) + HK25*P(1,13) + HK26*P(3,13)); +Kfusion(14) = HK45*(HK14*P(14,22) - HK14*P(4,14) - HK21*P(0,14) - HK22*P(2,14) - HK23*P(6,14) - HK24*P(14,23) + HK24*P(5,14) + HK25*P(1,14) + HK26*P(3,14)); +Kfusion(15) = HK45*(HK14*P(15,22) - HK14*P(4,15) - HK21*P(0,15) - HK22*P(2,15) - HK23*P(6,15) - HK24*P(15,23) + HK24*P(5,15) + HK25*P(1,15) + HK26*P(3,15)); +Kfusion(16) = HK45*(HK14*P(16,22) - HK14*P(4,16) - HK21*P(0,16) - HK22*P(2,16) - HK23*P(6,16) - HK24*P(16,23) + HK24*P(5,16) + HK25*P(1,16) + HK26*P(3,16)); +Kfusion(17) = HK45*(HK14*P(17,22) - HK14*P(4,17) - HK21*P(0,17) - HK22*P(2,17) - HK23*P(6,17) - HK24*P(17,23) + HK24*P(5,17) + HK25*P(1,17) + HK26*P(3,17)); +Kfusion(18) = HK45*(HK14*P(18,22) - HK14*P(4,18) - HK21*P(0,18) - HK22*P(2,18) - HK23*P(6,18) - HK24*P(18,23) + HK24*P(5,18) + HK25*P(1,18) + HK26*P(3,18)); +Kfusion(19) = HK45*(HK14*P(19,22) - HK14*P(4,19) - HK21*P(0,19) - HK22*P(2,19) - HK23*P(6,19) - HK24*P(19,23) + HK24*P(5,19) + HK25*P(1,19) + HK26*P(3,19)); +Kfusion(20) = HK45*(HK14*P(20,22) - HK14*P(4,20) - HK21*P(0,20) - HK22*P(2,20) - HK23*P(6,20) - HK24*P(20,23) + HK24*P(5,20) + HK25*P(1,20) + HK26*P(3,20)); +Kfusion(21) = HK45*(HK14*P(21,22) - HK14*P(4,21) - HK21*P(0,21) - HK22*P(2,21) - HK23*P(6,21) - HK24*P(21,23) + HK24*P(5,21) + HK25*P(1,21) + HK26*P(3,21)); +Kfusion(22) = HK45*(-HK21*P(0,22) - HK22*P(2,22) - HK23*P(6,22) - HK39 + HK42); +Kfusion(23) = HK45*(-HK14*P(4,23) - HK21*P(0,23) - HK22*P(2,23) - HK23*P(6,23) + HK33); + + +// Axis 1 equations +// Sub Expressions +const float HK0 = vn - vwn; +const float HK1 = -HK0*q3 + q1*vd; +const float HK2 = 2*Kaccy; +const float HK3 = 2*ve - 2*vwe; +const float HK4 = HK0*q2 - HK3*q1 + q0*vd; +const float HK5 = HK0*q1 + q3*vd; +const float HK6 = HK0*q0 + HK3*q3 - q2*vd; +const float HK7 = q0*q3 - q1*q2; +const float HK8 = HK2*HK7; +const float HK9 = 2*powf(q1, 2) + 2*powf(q3, 2) - 1; +const float HK10 = HK9*Kaccy; +const float HK11 = q0*q1 + q2*q3; +const float HK12 = 2*HK11; +const float HK13 = 2*HK7; +const float HK14 = 2*HK5; +const float HK15 = 2*HK1; +const float HK16 = 2*HK4; +const float HK17 = 2*HK6; +const float HK18 = HK12*P(0,6) + HK13*P(0,22) - HK13*P(0,4) + HK14*P(0,2) + HK15*P(0,0) + HK16*P(0,1) - HK17*P(0,3) + HK9*P(0,23) - HK9*P(0,5); +const float HK19 = powf(Kaccy, 2); +const float HK20 = HK12*P(6,6) - HK13*P(4,6) + HK13*P(6,22) + HK14*P(2,6) + HK15*P(0,6) + HK16*P(1,6) - HK17*P(3,6) - HK9*P(5,6) + HK9*P(6,23); +const float HK21 = HK13*P(4,22); +const float HK22 = HK12*P(6,22) + HK13*P(22,22) + HK14*P(2,22) + HK15*P(0,22) + HK16*P(1,22) - HK17*P(3,22) - HK21 + HK9*P(22,23) - HK9*P(5,22); +const float HK23 = HK13*HK19; +const float HK24 = HK12*P(4,6) - HK13*P(4,4) + HK14*P(2,4) + HK15*P(0,4) + HK16*P(1,4) - HK17*P(3,4) + HK21 + HK9*P(4,23) - HK9*P(4,5); +const float HK25 = HK12*P(2,6) + HK13*P(2,22) - HK13*P(2,4) + HK14*P(2,2) + HK15*P(0,2) + HK16*P(1,2) - HK17*P(2,3) + HK9*P(2,23) - HK9*P(2,5); +const float HK26 = HK9*P(5,23); +const float HK27 = HK12*P(6,23) + HK13*P(22,23) - HK13*P(4,23) + HK14*P(2,23) + HK15*P(0,23) + HK16*P(1,23) - HK17*P(3,23) - HK26 + HK9*P(23,23); +const float HK28 = HK19*HK9; +const float HK29 = HK12*P(5,6) - HK13*P(4,5) + HK13*P(5,22) + HK14*P(2,5) + HK15*P(0,5) + HK16*P(1,5) - HK17*P(3,5) + HK26 - HK9*P(5,5); +const float HK30 = HK12*P(1,6) + HK13*P(1,22) - HK13*P(1,4) + HK14*P(1,2) + HK15*P(0,1) + HK16*P(1,1) - HK17*P(1,3) + HK9*P(1,23) - HK9*P(1,5); +const float HK31 = HK12*P(3,6) + HK13*P(3,22) - HK13*P(3,4) + HK14*P(2,3) + HK15*P(0,3) + HK16*P(1,3) - HK17*P(3,3) + HK9*P(3,23) - HK9*P(3,5); +const float HK32 = Kaccy/(HK12*HK19*HK20 + HK14*HK19*HK25 + HK15*HK18*HK19 + HK16*HK19*HK30 - HK17*HK19*HK31 + HK22*HK23 - HK23*HK24 + HK27*HK28 - HK28*HK29 + R_ACC); + + +// Observation Jacobians +Hfusion.at<0>() = -HK1*HK2; +Hfusion.at<1>() = -HK2*HK4; +Hfusion.at<2>() = -HK2*HK5; +Hfusion.at<3>() = HK2*HK6; +Hfusion.at<4>() = HK8; +Hfusion.at<5>() = HK10; +Hfusion.at<6>() = -HK11*HK2; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = -HK8; +Hfusion.at<23>() = -HK10; + + +// Kalman gains +Kfusion(0) = -HK18*HK32; +Kfusion(1) = -HK30*HK32; +Kfusion(2) = -HK25*HK32; +Kfusion(3) = -HK31*HK32; +Kfusion(4) = -HK24*HK32; +Kfusion(5) = -HK29*HK32; +Kfusion(6) = -HK20*HK32; +Kfusion(7) = -HK32*(HK12*P(6,7) - HK13*P(4,7) + HK13*P(7,22) + HK14*P(2,7) + HK15*P(0,7) + HK16*P(1,7) - HK17*P(3,7) - HK9*P(5,7) + HK9*P(7,23)); +Kfusion(8) = -HK32*(HK12*P(6,8) - HK13*P(4,8) + HK13*P(8,22) + HK14*P(2,8) + HK15*P(0,8) + HK16*P(1,8) - HK17*P(3,8) - HK9*P(5,8) + HK9*P(8,23)); +Kfusion(9) = -HK32*(HK12*P(6,9) - HK13*P(4,9) + HK13*P(9,22) + HK14*P(2,9) + HK15*P(0,9) + HK16*P(1,9) - HK17*P(3,9) - HK9*P(5,9) + HK9*P(9,23)); +Kfusion(10) = -HK32*(HK12*P(6,10) + HK13*P(10,22) - HK13*P(4,10) + HK14*P(2,10) + HK15*P(0,10) + HK16*P(1,10) - HK17*P(3,10) + HK9*P(10,23) - HK9*P(5,10)); +Kfusion(11) = -HK32*(HK12*P(6,11) + HK13*P(11,22) - HK13*P(4,11) + HK14*P(2,11) + HK15*P(0,11) + HK16*P(1,11) - HK17*P(3,11) + HK9*P(11,23) - HK9*P(5,11)); +Kfusion(12) = -HK32*(HK12*P(6,12) + HK13*P(12,22) - HK13*P(4,12) + HK14*P(2,12) + HK15*P(0,12) + HK16*P(1,12) - HK17*P(3,12) + HK9*P(12,23) - HK9*P(5,12)); +Kfusion(13) = -HK32*(HK12*P(6,13) + HK13*P(13,22) - HK13*P(4,13) + HK14*P(2,13) + HK15*P(0,13) + HK16*P(1,13) - HK17*P(3,13) + HK9*P(13,23) - HK9*P(5,13)); +Kfusion(14) = -HK32*(HK12*P(6,14) + HK13*P(14,22) - HK13*P(4,14) + HK14*P(2,14) + HK15*P(0,14) + HK16*P(1,14) - HK17*P(3,14) + HK9*P(14,23) - HK9*P(5,14)); +Kfusion(15) = -HK32*(HK12*P(6,15) + HK13*P(15,22) - HK13*P(4,15) + HK14*P(2,15) + HK15*P(0,15) + HK16*P(1,15) - HK17*P(3,15) + HK9*P(15,23) - HK9*P(5,15)); +Kfusion(16) = -HK32*(HK12*P(6,16) + HK13*P(16,22) - HK13*P(4,16) + HK14*P(2,16) + HK15*P(0,16) + HK16*P(1,16) - HK17*P(3,16) + HK9*P(16,23) - HK9*P(5,16)); +Kfusion(17) = -HK32*(HK12*P(6,17) + HK13*P(17,22) - HK13*P(4,17) + HK14*P(2,17) + HK15*P(0,17) + HK16*P(1,17) - HK17*P(3,17) + HK9*P(17,23) - HK9*P(5,17)); +Kfusion(18) = -HK32*(HK12*P(6,18) + HK13*P(18,22) - HK13*P(4,18) + HK14*P(2,18) + HK15*P(0,18) + HK16*P(1,18) - HK17*P(3,18) + HK9*P(18,23) - HK9*P(5,18)); +Kfusion(19) = -HK32*(HK12*P(6,19) + HK13*P(19,22) - HK13*P(4,19) + HK14*P(2,19) + HK15*P(0,19) + HK16*P(1,19) - HK17*P(3,19) + HK9*P(19,23) - HK9*P(5,19)); +Kfusion(20) = -HK32*(HK12*P(6,20) + HK13*P(20,22) - HK13*P(4,20) + HK14*P(2,20) + HK15*P(0,20) + HK16*P(1,20) - HK17*P(3,20) + HK9*P(20,23) - HK9*P(5,20)); +Kfusion(21) = -HK32*(HK12*P(6,21) + HK13*P(21,22) - HK13*P(4,21) + HK14*P(2,21) + HK15*P(0,21) + HK16*P(1,21) - HK17*P(3,21) + HK9*P(21,23) - HK9*P(5,21)); +Kfusion(22) = -HK22*HK32; +Kfusion(23) = -HK27*HK32; + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_generated_alt.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_generated_alt.cpp new file mode 100644 index 0000000000..734b2d3d1b --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/acc_bf_generated_alt.cpp @@ -0,0 +1,202 @@ +// Sub Expressions +const float HK0 = q2*vd; +const float HK1 = ve - vwe; +const float HK2 = HK1*q3; +const float HK3 = HK0 - HK2; +const float HK4 = 2*Kaccx; +const float HK5 = q3*vd; +const float HK6 = HK1*q2 + HK5; +const float HK7 = q0*vd; +const float HK8 = HK1*q1; +const float HK9 = vn - vwn; +const float HK10 = HK9*q2; +const float HK11 = 2*HK10; +const float HK12 = HK11 + HK7 - HK8; +const float HK13 = q1*vd; +const float HK14 = HK9*q3; +const float HK15 = HK1*q0 + HK13 - 2*HK14; +const float HK16 = 2*powf(q2, 2); +const float HK17 = 2*powf(q3, 2); +const float HK18 = HK17 - 1; +const float HK19 = HK16 + HK18; +const float HK20 = HK19*Kaccx; +const float HK21 = q0*q3; +const float HK22 = q1*q2; +const float HK23 = HK21 + HK22; +const float HK24 = HK23*HK4; +const float HK25 = q0*q2; +const float HK26 = q1*q3; +const float HK27 = HK25 - HK26; +const float HK28 = 2*HK3; +const float HK29 = 2*HK12; +const float HK30 = 2*HK27; +const float HK31 = 2*HK23; +const float HK32 = 2*HK6; +const float HK33 = 2*HK15; +const float HK34 = HK19*P(0,22) - HK31*P(0,23) + HK31*P(0,5) + HK32*P(0,1) + HK33*P(0,3); +const float HK35 = -HK16 - HK17 + 1; +const float HK36 = -HK0; +const float HK37 = 2*HK2 + 2*HK36; +const float HK38 = -2*HK11 - 2*HK7 + 2*HK8; +const float HK39 = -2*HK25 + 2*HK26; +const float HK40 = HK31*P(5,23); +const float HK41 = HK19*P(22,23) - HK31*P(23,23) + HK32*P(1,23) + HK33*P(3,23) + HK40; +const float HK42 = powf(Kaccx, 2); +const float HK43 = HK31*HK42; +const float HK44 = HK19*P(5,22) + HK31*P(5,5) + HK32*P(1,5) + HK33*P(3,5) - HK40; +const float HK45 = HK19*P(6,22) + HK31*P(5,6) - HK31*P(6,23) + HK32*P(1,6) + HK33*P(3,6); +const float HK46 = HK19*P(1,22) - HK31*P(1,23) + HK31*P(1,5) + HK32*P(1,1) + HK33*P(1,3); +const float HK47 = HK19*P(4,22); +const float HK48 = -HK31*P(4,23) + HK31*P(4,5) + HK32*P(1,4) + HK33*P(3,4) + HK47; +const float HK49 = HK19*HK42; +const float HK50 = HK19*P(22,22) - HK31*P(22,23) + HK31*P(5,22) + HK32*P(1,22) + HK33*P(3,22); +const float HK51 = HK19*P(3,22) - HK31*P(3,23) + HK31*P(3,5) + HK32*P(1,3) + HK33*P(3,3); +const float HK52 = HK19*P(2,22) - HK31*P(2,23) + HK31*P(2,5) + HK32*P(1,2) + HK33*P(2,3); +const float HK53 = Kaccx/(HK28*HK42*(HK34 + HK35*P(0,4) + HK37*P(0,0) + HK38*P(0,2) + HK39*P(0,6)) + HK29*HK42*(HK35*P(2,4) + HK37*P(0,2) + HK38*P(2,2) + HK39*P(2,6) + HK52) + HK30*HK42*(HK35*P(4,6) + HK37*P(0,6) + HK38*P(2,6) + HK39*P(6,6) + HK45) - HK32*HK42*(HK35*P(1,4) + HK37*P(0,1) + HK38*P(1,2) + HK39*P(1,6) + HK46) - HK33*HK42*(HK35*P(3,4) + HK37*P(0,3) + HK38*P(2,3) + HK39*P(3,6) + HK51) + HK43*(HK35*P(4,23) + HK37*P(0,23) + HK38*P(2,23) + HK39*P(6,23) + HK41) - HK43*(HK35*P(4,5) + HK37*P(0,5) + HK38*P(2,5) + HK39*P(5,6) + HK44) - HK49*(HK35*P(4,22) + HK37*P(0,22) + HK38*P(2,22) + HK39*P(6,22) + HK50) + HK49*(HK35*P(4,4) + HK37*P(0,4) + HK38*P(2,4) + HK39*P(4,6) + HK48) - R_ACC); +const float HK54 = HK13 - HK14; +const float HK55 = 2*Kaccy; +const float HK56 = HK10 + HK7 - 2*HK8; +const float HK57 = HK5 + HK9*q1; +const float HK58 = 2*HK2 + HK36 + HK9*q0; +const float HK59 = HK21 - HK22; +const float HK60 = HK55*HK59; +const float HK61 = HK18 + 2*powf(q1, 2); +const float HK62 = HK61*Kaccy; +const float HK63 = q0*q1 + q2*q3; +const float HK64 = 2*HK63; +const float HK65 = 2*HK59; +const float HK66 = 2*HK57; +const float HK67 = 2*HK54; +const float HK68 = 2*HK56; +const float HK69 = 2*HK58; +const float HK70 = HK61*P(0,23) - HK61*P(0,5) + HK64*P(0,6) + HK65*P(0,22) - HK65*P(0,4) + HK66*P(0,2) + HK67*P(0,0) + HK68*P(0,1) - HK69*P(0,3); +const float HK71 = powf(Kaccy, 2); +const float HK72 = -HK61*P(5,6) + HK61*P(6,23) + HK64*P(6,6) - HK65*P(4,6) + HK65*P(6,22) + HK66*P(2,6) + HK67*P(0,6) + HK68*P(1,6) - HK69*P(3,6); +const float HK73 = HK65*P(4,22); +const float HK74 = HK61*P(22,23) - HK61*P(5,22) + HK64*P(6,22) + HK65*P(22,22) + HK66*P(2,22) + HK67*P(0,22) + HK68*P(1,22) - HK69*P(3,22) - HK73; +const float HK75 = HK65*HK71; +const float HK76 = HK61*P(4,23) - HK61*P(4,5) + HK64*P(4,6) - HK65*P(4,4) + HK66*P(2,4) + HK67*P(0,4) + HK68*P(1,4) - HK69*P(3,4) + HK73; +const float HK77 = HK61*P(2,23) - HK61*P(2,5) + HK64*P(2,6) + HK65*P(2,22) - HK65*P(2,4) + HK66*P(2,2) + HK67*P(0,2) + HK68*P(1,2) - HK69*P(2,3); +const float HK78 = HK61*P(5,23); +const float HK79 = HK61*P(23,23) + HK64*P(6,23) + HK65*P(22,23) - HK65*P(4,23) + HK66*P(2,23) + HK67*P(0,23) + HK68*P(1,23) - HK69*P(3,23) - HK78; +const float HK80 = HK61*HK71; +const float HK81 = -HK61*P(5,5) + HK64*P(5,6) - HK65*P(4,5) + HK65*P(5,22) + HK66*P(2,5) + HK67*P(0,5) + HK68*P(1,5) - HK69*P(3,5) + HK78; +const float HK82 = HK61*P(1,23) - HK61*P(1,5) + HK64*P(1,6) + HK65*P(1,22) - HK65*P(1,4) + HK66*P(1,2) + HK67*P(0,1) + HK68*P(1,1) - HK69*P(1,3); +const float HK83 = HK61*P(3,23) - HK61*P(3,5) + HK64*P(3,6) + HK65*P(3,22) - HK65*P(3,4) + HK66*P(2,3) + HK67*P(0,3) + HK68*P(1,3) - HK69*P(3,3); +const float HK84 = Kaccy/(HK64*HK71*HK72 + HK66*HK71*HK77 + HK67*HK70*HK71 + HK68*HK71*HK82 - HK69*HK71*HK83 + HK74*HK75 - HK75*HK76 + HK79*HK80 - HK80*HK81 + R_ACC); + + +// Observation Jacobians - axis 0 +Hfusion.at<0>() = HK3*HK4; +Hfusion.at<1>() = -HK4*HK6; +Hfusion.at<2>() = HK12*HK4; +Hfusion.at<3>() = -HK15*HK4; +Hfusion.at<4>() = HK20; +Hfusion.at<5>() = -HK24; +Hfusion.at<6>() = HK27*HK4; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = -HK20; +Hfusion.at<23>() = HK24; + + +// Kalman gains - axis 0 +Kfusion(0) = HK53*(-HK19*P(0,4) - HK28*P(0,0) - HK29*P(0,2) - HK30*P(0,6) + HK34); +Kfusion(1) = HK53*(-HK19*P(1,4) - HK28*P(0,1) - HK29*P(1,2) - HK30*P(1,6) + HK46); +Kfusion(2) = HK53*(-HK19*P(2,4) - HK28*P(0,2) - HK29*P(2,2) - HK30*P(2,6) + HK52); +Kfusion(3) = HK53*(-HK19*P(3,4) - HK28*P(0,3) - HK29*P(2,3) - HK30*P(3,6) + HK51); +Kfusion(4) = HK53*(-HK19*P(4,4) - HK28*P(0,4) - HK29*P(2,4) - HK30*P(4,6) + HK48); +Kfusion(5) = HK53*(-HK19*P(4,5) - HK28*P(0,5) - HK29*P(2,5) - HK30*P(5,6) + HK44); +Kfusion(6) = HK53*(-HK19*P(4,6) - HK28*P(0,6) - HK29*P(2,6) - HK30*P(6,6) + HK45); +Kfusion(7) = HK53*(-HK19*P(4,7) + HK19*P(7,22) - HK28*P(0,7) - HK29*P(2,7) - HK30*P(6,7) + HK31*P(5,7) - HK31*P(7,23) + HK32*P(1,7) + HK33*P(3,7)); +Kfusion(8) = HK53*(-HK19*P(4,8) + HK19*P(8,22) - HK28*P(0,8) - HK29*P(2,8) - HK30*P(6,8) + HK31*P(5,8) - HK31*P(8,23) + HK32*P(1,8) + HK33*P(3,8)); +Kfusion(9) = HK53*(-HK19*P(4,9) + HK19*P(9,22) - HK28*P(0,9) - HK29*P(2,9) - HK30*P(6,9) + HK31*P(5,9) - HK31*P(9,23) + HK32*P(1,9) + HK33*P(3,9)); +Kfusion(10) = HK53*(HK19*P(10,22) - HK19*P(4,10) - HK28*P(0,10) - HK29*P(2,10) - HK30*P(6,10) - HK31*P(10,23) + HK31*P(5,10) + HK32*P(1,10) + HK33*P(3,10)); +Kfusion(11) = HK53*(HK19*P(11,22) - HK19*P(4,11) - HK28*P(0,11) - HK29*P(2,11) - HK30*P(6,11) - HK31*P(11,23) + HK31*P(5,11) + HK32*P(1,11) + HK33*P(3,11)); +Kfusion(12) = HK53*(HK19*P(12,22) - HK19*P(4,12) - HK28*P(0,12) - HK29*P(2,12) - HK30*P(6,12) - HK31*P(12,23) + HK31*P(5,12) + HK32*P(1,12) + HK33*P(3,12)); +Kfusion(13) = HK53*(HK19*P(13,22) - HK19*P(4,13) - HK28*P(0,13) - HK29*P(2,13) - HK30*P(6,13) - HK31*P(13,23) + HK31*P(5,13) + HK32*P(1,13) + HK33*P(3,13)); +Kfusion(14) = HK53*(HK19*P(14,22) - HK19*P(4,14) - HK28*P(0,14) - HK29*P(2,14) - HK30*P(6,14) - HK31*P(14,23) + HK31*P(5,14) + HK32*P(1,14) + HK33*P(3,14)); +Kfusion(15) = HK53*(HK19*P(15,22) - HK19*P(4,15) - HK28*P(0,15) - HK29*P(2,15) - HK30*P(6,15) - HK31*P(15,23) + HK31*P(5,15) + HK32*P(1,15) + HK33*P(3,15)); +Kfusion(16) = HK53*(HK19*P(16,22) - HK19*P(4,16) - HK28*P(0,16) - HK29*P(2,16) - HK30*P(6,16) - HK31*P(16,23) + HK31*P(5,16) + HK32*P(1,16) + HK33*P(3,16)); +Kfusion(17) = HK53*(HK19*P(17,22) - HK19*P(4,17) - HK28*P(0,17) - HK29*P(2,17) - HK30*P(6,17) - HK31*P(17,23) + HK31*P(5,17) + HK32*P(1,17) + HK33*P(3,17)); +Kfusion(18) = HK53*(HK19*P(18,22) - HK19*P(4,18) - HK28*P(0,18) - HK29*P(2,18) - HK30*P(6,18) - HK31*P(18,23) + HK31*P(5,18) + HK32*P(1,18) + HK33*P(3,18)); +Kfusion(19) = HK53*(HK19*P(19,22) - HK19*P(4,19) - HK28*P(0,19) - HK29*P(2,19) - HK30*P(6,19) - HK31*P(19,23) + HK31*P(5,19) + HK32*P(1,19) + HK33*P(3,19)); +Kfusion(20) = HK53*(HK19*P(20,22) - HK19*P(4,20) - HK28*P(0,20) - HK29*P(2,20) - HK30*P(6,20) - HK31*P(20,23) + HK31*P(5,20) + HK32*P(1,20) + HK33*P(3,20)); +Kfusion(21) = HK53*(HK19*P(21,22) - HK19*P(4,21) - HK28*P(0,21) - HK29*P(2,21) - HK30*P(6,21) - HK31*P(21,23) + HK31*P(5,21) + HK32*P(1,21) + HK33*P(3,21)); +Kfusion(22) = HK53*(-HK28*P(0,22) - HK29*P(2,22) - HK30*P(6,22) - HK47 + HK50); +Kfusion(23) = HK53*(-HK19*P(4,23) - HK28*P(0,23) - HK29*P(2,23) - HK30*P(6,23) + HK41); + + +// Observation Jacobians - axis 1 +Hfusion.at<0>() = -HK54*HK55; +Hfusion.at<1>() = -HK55*HK56; +Hfusion.at<2>() = -HK55*HK57; +Hfusion.at<3>() = HK55*HK58; +Hfusion.at<4>() = HK60; +Hfusion.at<5>() = HK62; +Hfusion.at<6>() = -HK55*HK63; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = -HK60; +Hfusion.at<23>() = -HK62; + + +// Kalman gains - axis 1 +Kfusion(0) = -HK70*HK84; +Kfusion(1) = -HK82*HK84; +Kfusion(2) = -HK77*HK84; +Kfusion(3) = -HK83*HK84; +Kfusion(4) = -HK76*HK84; +Kfusion(5) = -HK81*HK84; +Kfusion(6) = -HK72*HK84; +Kfusion(7) = -HK84*(-HK61*P(5,7) + HK61*P(7,23) + HK64*P(6,7) - HK65*P(4,7) + HK65*P(7,22) + HK66*P(2,7) + HK67*P(0,7) + HK68*P(1,7) - HK69*P(3,7)); +Kfusion(8) = -HK84*(-HK61*P(5,8) + HK61*P(8,23) + HK64*P(6,8) - HK65*P(4,8) + HK65*P(8,22) + HK66*P(2,8) + HK67*P(0,8) + HK68*P(1,8) - HK69*P(3,8)); +Kfusion(9) = -HK84*(-HK61*P(5,9) + HK61*P(9,23) + HK64*P(6,9) - HK65*P(4,9) + HK65*P(9,22) + HK66*P(2,9) + HK67*P(0,9) + HK68*P(1,9) - HK69*P(3,9)); +Kfusion(10) = -HK84*(HK61*P(10,23) - HK61*P(5,10) + HK64*P(6,10) + HK65*P(10,22) - HK65*P(4,10) + HK66*P(2,10) + HK67*P(0,10) + HK68*P(1,10) - HK69*P(3,10)); +Kfusion(11) = -HK84*(HK61*P(11,23) - HK61*P(5,11) + HK64*P(6,11) + HK65*P(11,22) - HK65*P(4,11) + HK66*P(2,11) + HK67*P(0,11) + HK68*P(1,11) - HK69*P(3,11)); +Kfusion(12) = -HK84*(HK61*P(12,23) - HK61*P(5,12) + HK64*P(6,12) + HK65*P(12,22) - HK65*P(4,12) + HK66*P(2,12) + HK67*P(0,12) + HK68*P(1,12) - HK69*P(3,12)); +Kfusion(13) = -HK84*(HK61*P(13,23) - HK61*P(5,13) + HK64*P(6,13) + HK65*P(13,22) - HK65*P(4,13) + HK66*P(2,13) + HK67*P(0,13) + HK68*P(1,13) - HK69*P(3,13)); +Kfusion(14) = -HK84*(HK61*P(14,23) - HK61*P(5,14) + HK64*P(6,14) + HK65*P(14,22) - HK65*P(4,14) + HK66*P(2,14) + HK67*P(0,14) + HK68*P(1,14) - HK69*P(3,14)); +Kfusion(15) = -HK84*(HK61*P(15,23) - HK61*P(5,15) + HK64*P(6,15) + HK65*P(15,22) - HK65*P(4,15) + HK66*P(2,15) + HK67*P(0,15) + HK68*P(1,15) - HK69*P(3,15)); +Kfusion(16) = -HK84*(HK61*P(16,23) - HK61*P(5,16) + HK64*P(6,16) + HK65*P(16,22) - HK65*P(4,16) + HK66*P(2,16) + HK67*P(0,16) + HK68*P(1,16) - HK69*P(3,16)); +Kfusion(17) = -HK84*(HK61*P(17,23) - HK61*P(5,17) + HK64*P(6,17) + HK65*P(17,22) - HK65*P(4,17) + HK66*P(2,17) + HK67*P(0,17) + HK68*P(1,17) - HK69*P(3,17)); +Kfusion(18) = -HK84*(HK61*P(18,23) - HK61*P(5,18) + HK64*P(6,18) + HK65*P(18,22) - HK65*P(4,18) + HK66*P(2,18) + HK67*P(0,18) + HK68*P(1,18) - HK69*P(3,18)); +Kfusion(19) = -HK84*(HK61*P(19,23) - HK61*P(5,19) + HK64*P(6,19) + HK65*P(19,22) - HK65*P(4,19) + HK66*P(2,19) + HK67*P(0,19) + HK68*P(1,19) - HK69*P(3,19)); +Kfusion(20) = -HK84*(HK61*P(20,23) - HK61*P(5,20) + HK64*P(6,20) + HK65*P(20,22) - HK65*P(4,20) + HK66*P(2,20) + HK67*P(0,20) + HK68*P(1,20) - HK69*P(3,20)); +Kfusion(21) = -HK84*(HK61*P(21,23) - HK61*P(5,21) + HK64*P(6,21) + HK65*P(21,22) - HK65*P(4,21) + HK66*P(2,21) + HK67*P(0,21) + HK68*P(1,21) - HK69*P(3,21)); +Kfusion(22) = -HK74*HK84; +Kfusion(23) = -HK79*HK84; + + +// Observation Jacobians - axis 2 + + +// Kalman gains - axis 2 + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/beta_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/beta_fusion_generated_compare.cpp new file mode 100644 index 0000000000..50940ba03b --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/beta_fusion_generated_compare.cpp @@ -0,0 +1,333 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" +#include "util.h" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; +template +using SparseVector24f = matrix::SparseVectorf<24, Idxs...>; + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + Vector24f Hfusion_sympy; + Vector24f Kfusion_sympy; + + Vector24f Hfusion_matlab; + Vector24f Kfusion_matlab; + + float _beta_innov_var; + + const float R_BETA = sq(2.5f); + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + // get latest velocity in earth frame + const float vn = 10.0f * 2.0f * ((float)rand() - 0.5f); + const float ve = 10.0f * 2.0f * ((float)rand() - 0.5f); + const float vd = 2.0f * ((float)rand() - 0.5f); + + // get latest wind velocity in earth frame + const float vwn = 5.0f * 2.0f * ((float)rand() - 0.5f); + const float vwe = 5.0f * 2.0f * ((float)rand() - 0.5f); + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // First calculate observationjacobians and Kalman gains using sympy generated equations + { + // Intermediate Values + const float HK0 = vn - vwn; + const float HK1 = ve - vwe; + const float HK2 = HK0*q0 + HK1*q3 - q2*vd; + const float HK3 = q0*q2 - q1*q3; + const float HK4 = 2*vd; + const float HK5 = q0*q3; + const float HK6 = q1*q2; + const float HK7 = 2*HK5 + 2*HK6; + const float HK8 = ecl::powf(q0, 2); + const float HK9 = ecl::powf(q3, 2); + const float HK10 = HK8 - HK9; + const float HK11 = ecl::powf(q1, 2); + const float HK12 = ecl::powf(q2, 2); + const float HK13 = HK11 - HK12; + const float HK14 = HK10 + HK13; + const float HK15 = HK0*HK14 + HK1*HK7 - HK3*HK4; + const float HK16 = 1.0F/HK15; + const float HK17 = q0*q1 + q2*q3; + const float HK18 = HK10 - HK11 + HK12; + const float HK19 = HK16*(-2*HK0*(HK5 - HK6) + HK1*HK18 + HK17*HK4); + const float HK20 = -HK0*q3 + HK1*q0 + q1*vd; + const float HK21 = -HK19*HK2 + HK20; + const float HK22 = 2*HK16; + const float HK23 = HK0*q1 + HK1*q2 + q3*vd; + const float HK24 = HK0*q2 - HK1*q1 + q0*vd; + const float HK25 = -HK19*HK23 + HK24; + const float HK26 = HK19*HK24 + HK23; + const float HK27 = HK19*HK20 + HK2; + const float HK28 = HK14*HK19 + 2*HK5 - 2*HK6; + const float HK29 = HK16*HK28; + const float HK30 = HK19*HK7; + const float HK31 = HK17 + HK19*HK3; + const float HK32 = HK13 + HK30 - HK8 + HK9; + const float HK33 = 2*HK31; + const float HK34 = 2*HK26; + const float HK35 = 2*HK25; + const float HK36 = 2*HK27; + const float HK37 = 2*HK21; + const float HK38 = HK28*P(0,22) - HK28*P(0,4) + HK32*P(0,23) - HK32*P(0,5) + HK33*P(0,6) + HK34*P(0,2) + HK35*P(0,1) - HK36*P(0,3) + HK37*P(0,0); + const float HK39 = ecl::powf(HK15, -2); + const float HK40 = -HK28*P(4,6) + HK28*P(6,22) - HK32*P(5,6) + HK32*P(6,23) + HK33*P(6,6) + HK34*P(2,6) + HK35*P(1,6) - HK36*P(3,6) + HK37*P(0,6); + const float HK41 = HK32*P(5,23); + const float HK42 = HK28*P(22,23) - HK28*P(4,23) + HK32*P(23,23) + HK33*P(6,23) + HK34*P(2,23) + HK35*P(1,23) - HK36*P(3,23) + HK37*P(0,23) - HK41; + const float HK43 = HK32*HK39; + const float HK44 = HK28*P(4,22); + const float HK45 = HK28*P(22,22) + HK32*P(22,23) - HK32*P(5,22) + HK33*P(6,22) + HK34*P(2,22) + HK35*P(1,22) - HK36*P(3,22) + HK37*P(0,22) - HK44; + const float HK46 = HK28*HK39; + const float HK47 = -HK28*P(4,5) + HK28*P(5,22) - HK32*P(5,5) + HK33*P(5,6) + HK34*P(2,5) + HK35*P(1,5) - HK36*P(3,5) + HK37*P(0,5) + HK41; + const float HK48 = -HK28*P(4,4) + HK32*P(4,23) - HK32*P(4,5) + HK33*P(4,6) + HK34*P(2,4) + HK35*P(1,4) - HK36*P(3,4) + HK37*P(0,4) + HK44; + const float HK49 = HK28*P(2,22) - HK28*P(2,4) + HK32*P(2,23) - HK32*P(2,5) + HK33*P(2,6) + HK34*P(2,2) + HK35*P(1,2) - HK36*P(2,3) + HK37*P(0,2); + const float HK50 = HK28*P(1,22) - HK28*P(1,4) + HK32*P(1,23) - HK32*P(1,5) + HK33*P(1,6) + HK34*P(1,2) + HK35*P(1,1) - HK36*P(1,3) + HK37*P(0,1); + const float HK51 = HK28*P(3,22) - HK28*P(3,4) + HK32*P(3,23) - HK32*P(3,5) + HK33*P(3,6) + HK34*P(2,3) + HK35*P(1,3) - HK36*P(3,3) + HK37*P(0,3); + //const float HK52 = HK16/(HK33*HK39*HK40 + HK34*HK39*HK49 + HK35*HK39*HK50 - HK36*HK39*HK51 + HK37*HK38*HK39 + HK42*HK43 - HK43*HK47 + HK45*HK46 - HK46*HK48 + R_BETA); + + // innovation variance + _beta_innov_var = (HK33*HK39*HK40 + HK34*HK39*HK49 + HK35*HK39*HK50 - HK36*HK39*HK51 + HK37*HK38*HK39 + HK42*HK43 - HK43*HK47 + HK45*HK46 - HK46*HK48 + R_BETA); + + // // Reset covariance and states if the calculation is badly conditioned + // if (_beta_innov_var < R_BETA) { + // _fault_status.flags.bad_sideslip = true; + + // // if we are getting aiding from other sources, warn and reset the wind states and covariances only + // const char* action_string = nullptr; + // if (update_wind_only) { + // resetWindStates(); + // resetWindCovariance(); + // action_string = "wind"; + + // } else { + // initialiseCovariance(); + // _state.wind_vel.setZero(); + // action_string = "full"; + // } + // ECL_ERR("sideslip badly conditioned - %s covariance reset", action_string); + + // return; + // } + // _fault_status.flags.bad_sideslip = false; + const float HK52 = HK16/_beta_innov_var; + + // determine if we need the sideslip fusion to correct states other than wind + // bool update_wind_only = !_is_wind_dead_reckoning; + bool update_wind_only = false; + + // // Calculate predicted sideslip angle and innovation using small angle approximation + // _beta_innov = rel_wind_body(1) / rel_wind_body(0); + + // // Compute the ratio of innovation to gate size + // _beta_test_ratio = sq(_beta_innov) / (sq(fmaxf(_params.beta_innov_gate, 1.0f)) * _beta_innov_var); + + // // if the innovation consistency check fails then don't fuse the sample and indicate bad beta health + // if (_beta_test_ratio > 1.0f) { + // _innov_check_fail_status.flags.reject_sideslip = true; + // return; + + // } else { + // _innov_check_fail_status.flags.reject_sideslip = false; + // } + + // Observation Jacobians + SparseVector24f<0,1,2,3,4,5,6,22,23> Hfusion; + Hfusion.at<0>() = HK21*HK22; + Hfusion.at<1>() = HK22*HK25; + Hfusion.at<2>() = HK22*HK26; + Hfusion.at<3>() = -HK22*HK27; + Hfusion.at<4>() = -HK29; + Hfusion.at<5>() = HK16*(HK18 - HK30); + Hfusion.at<6>() = HK22*HK31; + Hfusion.at<22>() = HK29; + Hfusion.at<23>() = HK16*HK32; + + // Calculate Kalman gains + Vector24f Kfusion; + if (!update_wind_only) { + + Kfusion(0) = HK38*HK52; + Kfusion(1) = HK50*HK52; + Kfusion(2) = HK49*HK52; + Kfusion(3) = HK51*HK52; + Kfusion(4) = HK48*HK52; + Kfusion(5) = HK47*HK52; + Kfusion(6) = HK40*HK52; + + for (unsigned row = 7; row <= 21; row++) { + Kfusion(row) = HK52*(HK28*P(row,22) - HK28*P(4,row) + HK32*P(row,23) - HK32*P(5,row) + HK33*P(6,row) + HK34*P(2,row) + HK35*P(1,row) - HK36*P(3,row) + HK37*P(0,row)); + } + + } + + Kfusion(22) = HK45*HK52; + Kfusion(23) = HK42*HK52; + + // save output and repeat calculation using legacy matlab generated code + Hfusion_sympy(0) = Hfusion.at<0>(); + Hfusion_sympy(1) = Hfusion.at<1>(); + Hfusion_sympy(2) = Hfusion.at<2>(); + Hfusion_sympy(3) = Hfusion.at<3>(); + Hfusion_sympy(4) = Hfusion.at<4>(); + Hfusion_sympy(5) = Hfusion.at<5>(); + Hfusion_sympy(6) = Hfusion.at<6>(); + Hfusion_sympy(22) = Hfusion.at<22>(); + Hfusion_sympy(23) = Hfusion.at<23>(); + Kfusion_sympy = Kfusion; + } + // repeat calculation using matlab generated equations + { + // Calculate the observation jacobians + + const matrix::Vector3f rel_wind_earth(vn - vwn, ve - vwe, vd); + + float SH_BETA[13]; // intermediate variable for algebraic optimisation + + SH_BETA[0] = (vn - vwn)*(sq(q0) + sq(q1) - sq(q2) - sq(q3)) - vd*(2.0f*q0*q2 - 2.0f*q1*q3) + (ve - vwe)*(2.0f*q0*q3 + 2.0f*q1*q2); + + SH_BETA[1] = rel_wind_earth(1)*(sq(q0) - sq(q1) + sq(q2) - sq(q3)) + vd*(2.0f*q0*q1 + 2.0f*q2*q3) - rel_wind_earth(0)*(2.0f*q0*q3 - 2.0f*q1*q2); + SH_BETA[2] = rel_wind_earth(0); + SH_BETA[3] = rel_wind_earth(1); + SH_BETA[4] = 1.0f/sq(SH_BETA[0]); + SH_BETA[5] = 1.0f/SH_BETA[0]; + SH_BETA[6] = SH_BETA[5]*(sq(q0) - sq(q1) + sq(q2) - sq(q3)); + SH_BETA[7] = sq(q0) + sq(q1) - sq(q2) - sq(q3); + SH_BETA[8] = 2.0f*q0*SH_BETA[3] - 2.0f*q3*SH_BETA[2] + 2.0f*q1*vd; + SH_BETA[9] = 2.0f*q0*SH_BETA[2] + 2.0f*q3*SH_BETA[3] - 2.0f*q2*vd; + SH_BETA[10] = 2.0f*q2*SH_BETA[2] - 2.0f*q1*SH_BETA[3] + 2.0f*q0*vd; + SH_BETA[11] = 2.0f*q1*SH_BETA[2] + 2.0f*q2*SH_BETA[3] + 2.0f*q3*vd; + SH_BETA[12] = 2.0f*q0*q3; + + Vector24f H_BETA; + H_BETA(0) = SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]; + H_BETA(1) = SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]; + H_BETA(2) = SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]; + H_BETA(3) = - SH_BETA[5]*SH_BETA[9] - SH_BETA[1]*SH_BETA[4]*SH_BETA[8]; + H_BETA(4) = - SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) - SH_BETA[1]*SH_BETA[4]*SH_BETA[7]; + H_BETA(5) = SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2); + H_BETA(6) = SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3); + H_BETA(22) = SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]; + H_BETA(23) = SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2) - SH_BETA[6]; + + _beta_innov_var = (R_BETA - (SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7])*(P(22,4)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,4)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,4)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,4)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,4)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,4)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,4)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,4)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,4)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) + (SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7])*(P(22,22)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,22)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,22)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,22)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,22)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,22)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,22)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,22)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,22)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) + (SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2))*(P(22,5)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,5)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,5)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,5)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,5)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,5)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,5)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,5)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,5)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) - (SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2))*(P(22,23)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,23)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,23)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,23)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,23)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,23)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,23)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,23)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,23)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) + (SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9])*(P(22,0)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,0)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,0)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,0)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,0)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,0)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,0)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,0)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,0)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) + (SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11])*(P(22,1)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,1)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,1)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,1)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,1)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,1)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,1)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,1)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,1)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) + (SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10])*(P(22,2)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,2)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,2)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,2)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,2)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,2)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,2)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,2)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,2)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) - (SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8])*(P(22,3)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,3)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,3)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,3)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,3)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,3)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,3)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,3)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,3)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))) + (SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3))*(P(22,6)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) - P(4,6)*(SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]) + P(5,6)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) - P(23,6)*(SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2)) + P(0,6)*(SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]) + P(1,6)*(SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]) + P(2,6)*(SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]) - P(3,6)*(SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]) + P(6,6)*(SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3)))); + + // intermediate variables for optimising calculations of the Kalman gain + float SK_BETA[8]; + SK_BETA[0] = 1.0f / _beta_innov_var; + SK_BETA[1] = SH_BETA[5]*(SH_BETA[12] - 2.0f*q1*q2) + SH_BETA[1]*SH_BETA[4]*SH_BETA[7]; + SK_BETA[2] = SH_BETA[6] - SH_BETA[1]*SH_BETA[4]*(SH_BETA[12] + 2.0f*q1*q2); + SK_BETA[3] = SH_BETA[5]*(2.0f*q0*q1 + 2.0f*q2*q3) + SH_BETA[1]*SH_BETA[4]*(2.0f*q0*q2 - 2.0f*q1*q3); + SK_BETA[4] = SH_BETA[5]*SH_BETA[10] - SH_BETA[1]*SH_BETA[4]*SH_BETA[11]; + SK_BETA[5] = SH_BETA[5]*SH_BETA[8] - SH_BETA[1]*SH_BETA[4]*SH_BETA[9]; + SK_BETA[6] = SH_BETA[5]*SH_BETA[11] + SH_BETA[1]*SH_BETA[4]*SH_BETA[10]; + SK_BETA[7] = SH_BETA[5]*SH_BETA[9] + SH_BETA[1]*SH_BETA[4]*SH_BETA[8]; + + Vector24f Kfusion; + Kfusion(0) = SK_BETA[0]*(P(0,0)*SK_BETA[5] + P(0,1)*SK_BETA[4] - P(0,4)*SK_BETA[1] + P(0,5)*SK_BETA[2] + P(0,2)*SK_BETA[6] + P(0,6)*SK_BETA[3] - P(0,3)*SK_BETA[7] + P(0,22)*SK_BETA[1] - P(0,23)*SK_BETA[2]); + Kfusion(1) = SK_BETA[0]*(P(1,0)*SK_BETA[5] + P(1,1)*SK_BETA[4] - P(1,4)*SK_BETA[1] + P(1,5)*SK_BETA[2] + P(1,2)*SK_BETA[6] + P(1,6)*SK_BETA[3] - P(1,3)*SK_BETA[7] + P(1,22)*SK_BETA[1] - P(1,23)*SK_BETA[2]); + Kfusion(2) = SK_BETA[0]*(P(2,0)*SK_BETA[5] + P(2,1)*SK_BETA[4] - P(2,4)*SK_BETA[1] + P(2,5)*SK_BETA[2] + P(2,2)*SK_BETA[6] + P(2,6)*SK_BETA[3] - P(2,3)*SK_BETA[7] + P(2,22)*SK_BETA[1] - P(2,23)*SK_BETA[2]); + Kfusion(3) = SK_BETA[0]*(P(3,0)*SK_BETA[5] + P(3,1)*SK_BETA[4] - P(3,4)*SK_BETA[1] + P(3,5)*SK_BETA[2] + P(3,2)*SK_BETA[6] + P(3,6)*SK_BETA[3] - P(3,3)*SK_BETA[7] + P(3,22)*SK_BETA[1] - P(3,23)*SK_BETA[2]); + Kfusion(4) = SK_BETA[0]*(P(4,0)*SK_BETA[5] + P(4,1)*SK_BETA[4] - P(4,4)*SK_BETA[1] + P(4,5)*SK_BETA[2] + P(4,2)*SK_BETA[6] + P(4,6)*SK_BETA[3] - P(4,3)*SK_BETA[7] + P(4,22)*SK_BETA[1] - P(4,23)*SK_BETA[2]); + Kfusion(5) = SK_BETA[0]*(P(5,0)*SK_BETA[5] + P(5,1)*SK_BETA[4] - P(5,4)*SK_BETA[1] + P(5,5)*SK_BETA[2] + P(5,2)*SK_BETA[6] + P(5,6)*SK_BETA[3] - P(5,3)*SK_BETA[7] + P(5,22)*SK_BETA[1] - P(5,23)*SK_BETA[2]); + Kfusion(6) = SK_BETA[0]*(P(6,0)*SK_BETA[5] + P(6,1)*SK_BETA[4] - P(6,4)*SK_BETA[1] + P(6,5)*SK_BETA[2] + P(6,2)*SK_BETA[6] + P(6,6)*SK_BETA[3] - P(6,3)*SK_BETA[7] + P(6,22)*SK_BETA[1] - P(6,23)*SK_BETA[2]); + Kfusion(7) = SK_BETA[0]*(P(7,0)*SK_BETA[5] + P(7,1)*SK_BETA[4] - P(7,4)*SK_BETA[1] + P(7,5)*SK_BETA[2] + P(7,2)*SK_BETA[6] + P(7,6)*SK_BETA[3] - P(7,3)*SK_BETA[7] + P(7,22)*SK_BETA[1] - P(7,23)*SK_BETA[2]); + Kfusion(8) = SK_BETA[0]*(P(8,0)*SK_BETA[5] + P(8,1)*SK_BETA[4] - P(8,4)*SK_BETA[1] + P(8,5)*SK_BETA[2] + P(8,2)*SK_BETA[6] + P(8,6)*SK_BETA[3] - P(8,3)*SK_BETA[7] + P(8,22)*SK_BETA[1] - P(8,23)*SK_BETA[2]); + Kfusion(9) = SK_BETA[0]*(P(9,0)*SK_BETA[5] + P(9,1)*SK_BETA[4] - P(9,4)*SK_BETA[1] + P(9,5)*SK_BETA[2] + P(9,2)*SK_BETA[6] + P(9,6)*SK_BETA[3] - P(9,3)*SK_BETA[7] + P(9,22)*SK_BETA[1] - P(9,23)*SK_BETA[2]); + Kfusion(10) = SK_BETA[0]*(P(10,0)*SK_BETA[5] + P(10,1)*SK_BETA[4] - P(10,4)*SK_BETA[1] + P(10,5)*SK_BETA[2] + P(10,2)*SK_BETA[6] + P(10,6)*SK_BETA[3] - P(10,3)*SK_BETA[7] + P(10,22)*SK_BETA[1] - P(10,23)*SK_BETA[2]); + Kfusion(11) = SK_BETA[0]*(P(11,0)*SK_BETA[5] + P(11,1)*SK_BETA[4] - P(11,4)*SK_BETA[1] + P(11,5)*SK_BETA[2] + P(11,2)*SK_BETA[6] + P(11,6)*SK_BETA[3] - P(11,3)*SK_BETA[7] + P(11,22)*SK_BETA[1] - P(11,23)*SK_BETA[2]); + Kfusion(12) = SK_BETA[0]*(P(12,0)*SK_BETA[5] + P(12,1)*SK_BETA[4] - P(12,4)*SK_BETA[1] + P(12,5)*SK_BETA[2] + P(12,2)*SK_BETA[6] + P(12,6)*SK_BETA[3] - P(12,3)*SK_BETA[7] + P(12,22)*SK_BETA[1] - P(12,23)*SK_BETA[2]); + Kfusion(13) = SK_BETA[0]*(P(13,0)*SK_BETA[5] + P(13,1)*SK_BETA[4] - P(13,4)*SK_BETA[1] + P(13,5)*SK_BETA[2] + P(13,2)*SK_BETA[6] + P(13,6)*SK_BETA[3] - P(13,3)*SK_BETA[7] + P(13,22)*SK_BETA[1] - P(13,23)*SK_BETA[2]); + Kfusion(14) = SK_BETA[0]*(P(14,0)*SK_BETA[5] + P(14,1)*SK_BETA[4] - P(14,4)*SK_BETA[1] + P(14,5)*SK_BETA[2] + P(14,2)*SK_BETA[6] + P(14,6)*SK_BETA[3] - P(14,3)*SK_BETA[7] + P(14,22)*SK_BETA[1] - P(14,23)*SK_BETA[2]); + Kfusion(15) = SK_BETA[0]*(P(15,0)*SK_BETA[5] + P(15,1)*SK_BETA[4] - P(15,4)*SK_BETA[1] + P(15,5)*SK_BETA[2] + P(15,2)*SK_BETA[6] + P(15,6)*SK_BETA[3] - P(15,3)*SK_BETA[7] + P(15,22)*SK_BETA[1] - P(15,23)*SK_BETA[2]); + Kfusion(16) = SK_BETA[0]*(P(16,0)*SK_BETA[5] + P(16,1)*SK_BETA[4] - P(16,4)*SK_BETA[1] + P(16,5)*SK_BETA[2] + P(16,2)*SK_BETA[6] + P(16,6)*SK_BETA[3] - P(16,3)*SK_BETA[7] + P(16,22)*SK_BETA[1] - P(16,23)*SK_BETA[2]); + Kfusion(17) = SK_BETA[0]*(P(17,0)*SK_BETA[5] + P(17,1)*SK_BETA[4] - P(17,4)*SK_BETA[1] + P(17,5)*SK_BETA[2] + P(17,2)*SK_BETA[6] + P(17,6)*SK_BETA[3] - P(17,3)*SK_BETA[7] + P(17,22)*SK_BETA[1] - P(17,23)*SK_BETA[2]); + Kfusion(18) = SK_BETA[0]*(P(18,0)*SK_BETA[5] + P(18,1)*SK_BETA[4] - P(18,4)*SK_BETA[1] + P(18,5)*SK_BETA[2] + P(18,2)*SK_BETA[6] + P(18,6)*SK_BETA[3] - P(18,3)*SK_BETA[7] + P(18,22)*SK_BETA[1] - P(18,23)*SK_BETA[2]); + Kfusion(19) = SK_BETA[0]*(P(19,0)*SK_BETA[5] + P(19,1)*SK_BETA[4] - P(19,4)*SK_BETA[1] + P(19,5)*SK_BETA[2] + P(19,2)*SK_BETA[6] + P(19,6)*SK_BETA[3] - P(19,3)*SK_BETA[7] + P(19,22)*SK_BETA[1] - P(19,23)*SK_BETA[2]); + Kfusion(20) = SK_BETA[0]*(P(20,0)*SK_BETA[5] + P(20,1)*SK_BETA[4] - P(20,4)*SK_BETA[1] + P(20,5)*SK_BETA[2] + P(20,2)*SK_BETA[6] + P(20,6)*SK_BETA[3] - P(20,3)*SK_BETA[7] + P(20,22)*SK_BETA[1] - P(20,23)*SK_BETA[2]); + Kfusion(21) = SK_BETA[0]*(P(21,0)*SK_BETA[5] + P(21,1)*SK_BETA[4] - P(21,4)*SK_BETA[1] + P(21,5)*SK_BETA[2] + P(21,2)*SK_BETA[6] + P(21,6)*SK_BETA[3] - P(21,3)*SK_BETA[7] + P(21,22)*SK_BETA[1] - P(21,23)*SK_BETA[2]); + + // copy results + Hfusion_matlab = H_BETA; + Kfusion_matlab = Kfusion; + } + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Hfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Hfusion_matlab(row); + max_new = Hfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Sideslip Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Sideslip Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_matlab(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion_matlab(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Sideslip Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Sideslip Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/beta_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/beta_generated.cpp new file mode 100644 index 0000000000..da34396676 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/beta_generated.cpp @@ -0,0 +1,113 @@ +// Sub Expressions +const float HK0 = q1*vd; +const float HK1 = vn - vwn; +const float HK2 = HK1*q3; +const float HK3 = q2*vd; +const float HK4 = ve - vwe; +const float HK5 = HK4*q3; +const float HK6 = q0*q2 - q1*q3; +const float HK7 = 2*vd; +const float HK8 = HK6*HK7; +const float HK9 = q0*q3; +const float HK10 = q1*q2; +const float HK11 = 2*HK10 + 2*HK9; +const float HK12 = HK11*HK4; +const float HK13 = 2*powf(q3, 2) - 1; +const float HK14 = HK13 + 2*powf(q2, 2); +const float HK15 = HK1*HK14; +const float HK16 = 1.0F/(-HK12 + HK15 + HK8); +const float HK17 = q0*q1 + q2*q3; +const float HK18 = HK17*HK7; +const float HK19 = 2*HK1*(-HK10 + HK9); +const float HK20 = HK13 + 2*powf(q1, 2); +const float HK21 = HK20*HK4; +const float HK22 = HK16*(-HK18 + HK19 + HK21); +const float HK23 = 2*HK16; +const float HK24 = HK23*(HK0 - HK2 + HK22*(HK3 - HK5)); +const float HK25 = q0*vd; +const float HK26 = HK1*q2; +const float HK27 = HK4*q1; +const float HK28 = 2*HK27; +const float HK29 = q3*vd; +const float HK30 = 1.0F/(HK12 - HK15 - HK8); +const float HK31 = HK30*(HK18 - HK19 - HK21); +const float HK32 = HK31*(HK29 + HK4*q2); +const float HK33 = 2*HK30; +const float HK34 = HK23*(HK1*q1 + HK22*(HK25 + 2*HK26 - HK27) + HK29); +const float HK35 = HK33*(HK1*q0 - HK3 + HK31*(HK0 - 2*HK2 + HK4*q0) + 2*HK5); +const float HK36 = HK14*HK31; +const float HK37 = 2*HK9; +const float HK38 = 2*HK10; +const float HK39 = -HK37 + HK38; +const float HK40 = HK30*(HK11*HK31 + HK20); +const float HK41 = HK23*(HK17 + HK22*HK6); +const float HK42 = HK16*(HK14*HK22 + HK39); +const float HK43 = HK16*(HK11*HK22 + HK20); +const float HK44 = HK30*(-HK36 + HK37 - HK38); +const float HK45 = HK33*(-HK25 - HK26 + HK28 + HK32); +const float HK46 = -HK24*P(0,0) - HK34*P(0,2) - HK35*P(0,3) - HK40*P(0,5) - HK41*P(0,6) + HK42*P(0,22) - HK43*P(0,23) - HK44*P(0,4) - HK45*P(0,1); +const float HK47 = -HK24*P(0,6) - HK34*P(2,6) - HK35*P(3,6) - HK40*P(5,6) - HK41*P(6,6) + HK42*P(6,22) - HK43*P(6,23) - HK44*P(4,6) - HK45*P(1,6); +const float HK48 = -HK24*P(0,22) - HK34*P(2,22) - HK35*P(3,22) - HK40*P(5,22) - HK41*P(6,22) + HK42*P(22,22) - HK43*P(22,23) - HK44*P(4,22) - HK45*P(1,22); +const float HK49 = -HK24*P(0,23) - HK34*P(2,23) - HK35*P(3,23) - HK40*P(5,23) - HK41*P(6,23) + HK42*P(22,23) - HK43*P(23,23) - HK44*P(4,23) - HK45*P(1,23); +const float HK50 = -HK24*P(0,5) - HK34*P(2,5) - HK35*P(3,5) - HK40*P(5,5) - HK41*P(5,6) + HK42*P(5,22) - HK43*P(5,23) - HK44*P(4,5) - HK45*P(1,5); +const float HK51 = -HK24*P(0,4) - HK34*P(2,4) - HK35*P(3,4) - HK40*P(4,5) - HK41*P(4,6) + HK42*P(4,22) - HK43*P(4,23) - HK44*P(4,4) - HK45*P(1,4); +const float HK52 = -HK24*P(0,2) - HK34*P(2,2) - HK35*P(2,3) - HK40*P(2,5) - HK41*P(2,6) + HK42*P(2,22) - HK43*P(2,23) - HK44*P(2,4) - HK45*P(1,2); +const float HK53 = -HK24*P(0,1) - HK34*P(1,2) - HK35*P(1,3) - HK40*P(1,5) - HK41*P(1,6) + HK42*P(1,22) - HK43*P(1,23) - HK44*P(1,4) - HK45*P(1,1); +const float HK54 = -HK24*P(0,3) - HK34*P(2,3) - HK35*P(3,3) - HK40*P(3,5) - HK41*P(3,6) + HK42*P(3,22) - HK43*P(3,23) - HK44*P(3,4) - HK45*P(1,3); +const float HK55 = 1.0F/(-HK24*HK46 - HK34*HK52 - HK35*HK54 - HK40*HK50 - HK41*HK47 + HK42*HK48 - HK43*HK49 - HK44*HK51 - HK45*HK53 + R_BETA); + + +// Observation Jacobians +Hfusion.at<0>() = -HK24; +Hfusion.at<1>() = HK33*(HK25 + HK26 - HK28 - HK32); +Hfusion.at<2>() = -HK34; +Hfusion.at<3>() = -HK35; +Hfusion.at<4>() = HK30*(HK36 + HK39); +Hfusion.at<5>() = -HK40; +Hfusion.at<6>() = -HK41; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = HK42; +Hfusion.at<23>() = -HK43; + + +// Kalman gains +Kfusion(0) = HK46*HK55; +Kfusion(1) = HK53*HK55; +Kfusion(2) = HK52*HK55; +Kfusion(3) = HK54*HK55; +Kfusion(4) = HK51*HK55; +Kfusion(5) = HK50*HK55; +Kfusion(6) = HK47*HK55; +Kfusion(7) = HK55*(-HK24*P(0,7) - HK34*P(2,7) - HK35*P(3,7) - HK40*P(5,7) - HK41*P(6,7) + HK42*P(7,22) - HK43*P(7,23) - HK44*P(4,7) - HK45*P(1,7)); +Kfusion(8) = HK55*(-HK24*P(0,8) - HK34*P(2,8) - HK35*P(3,8) - HK40*P(5,8) - HK41*P(6,8) + HK42*P(8,22) - HK43*P(8,23) - HK44*P(4,8) - HK45*P(1,8)); +Kfusion(9) = HK55*(-HK24*P(0,9) - HK34*P(2,9) - HK35*P(3,9) - HK40*P(5,9) - HK41*P(6,9) + HK42*P(9,22) - HK43*P(9,23) - HK44*P(4,9) - HK45*P(1,9)); +Kfusion(10) = HK55*(-HK24*P(0,10) - HK34*P(2,10) - HK35*P(3,10) - HK40*P(5,10) - HK41*P(6,10) + HK42*P(10,22) - HK43*P(10,23) - HK44*P(4,10) - HK45*P(1,10)); +Kfusion(11) = HK55*(-HK24*P(0,11) - HK34*P(2,11) - HK35*P(3,11) - HK40*P(5,11) - HK41*P(6,11) + HK42*P(11,22) - HK43*P(11,23) - HK44*P(4,11) - HK45*P(1,11)); +Kfusion(12) = HK55*(-HK24*P(0,12) - HK34*P(2,12) - HK35*P(3,12) - HK40*P(5,12) - HK41*P(6,12) + HK42*P(12,22) - HK43*P(12,23) - HK44*P(4,12) - HK45*P(1,12)); +Kfusion(13) = HK55*(-HK24*P(0,13) - HK34*P(2,13) - HK35*P(3,13) - HK40*P(5,13) - HK41*P(6,13) + HK42*P(13,22) - HK43*P(13,23) - HK44*P(4,13) - HK45*P(1,13)); +Kfusion(14) = HK55*(-HK24*P(0,14) - HK34*P(2,14) - HK35*P(3,14) - HK40*P(5,14) - HK41*P(6,14) + HK42*P(14,22) - HK43*P(14,23) - HK44*P(4,14) - HK45*P(1,14)); +Kfusion(15) = HK55*(-HK24*P(0,15) - HK34*P(2,15) - HK35*P(3,15) - HK40*P(5,15) - HK41*P(6,15) + HK42*P(15,22) - HK43*P(15,23) - HK44*P(4,15) - HK45*P(1,15)); +Kfusion(16) = HK55*(-HK24*P(0,16) - HK34*P(2,16) - HK35*P(3,16) - HK40*P(5,16) - HK41*P(6,16) + HK42*P(16,22) - HK43*P(16,23) - HK44*P(4,16) - HK45*P(1,16)); +Kfusion(17) = HK55*(-HK24*P(0,17) - HK34*P(2,17) - HK35*P(3,17) - HK40*P(5,17) - HK41*P(6,17) + HK42*P(17,22) - HK43*P(17,23) - HK44*P(4,17) - HK45*P(1,17)); +Kfusion(18) = HK55*(-HK24*P(0,18) - HK34*P(2,18) - HK35*P(3,18) - HK40*P(5,18) - HK41*P(6,18) + HK42*P(18,22) - HK43*P(18,23) - HK44*P(4,18) - HK45*P(1,18)); +Kfusion(19) = HK55*(-HK24*P(0,19) - HK34*P(2,19) - HK35*P(3,19) - HK40*P(5,19) - HK41*P(6,19) + HK42*P(19,22) - HK43*P(19,23) - HK44*P(4,19) - HK45*P(1,19)); +Kfusion(20) = HK55*(-HK24*P(0,20) - HK34*P(2,20) - HK35*P(3,20) - HK40*P(5,20) - HK41*P(6,20) + HK42*P(20,22) - HK43*P(20,23) - HK44*P(4,20) - HK45*P(1,20)); +Kfusion(21) = HK55*(-HK24*P(0,21) - HK34*P(2,21) - HK35*P(3,21) - HK40*P(5,21) - HK41*P(6,21) + HK42*P(21,22) - HK43*P(21,23) - HK44*P(4,21) - HK45*P(1,21)); +Kfusion(22) = HK48*HK55; +Kfusion(23) = HK49*HK55; + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/covariance_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/covariance_generated.cpp new file mode 100644 index 0000000000..18b563ddd4 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/covariance_generated.cpp @@ -0,0 +1,528 @@ +// Equations for covariance matrix prediction, without process noise! +const float PS0 = powf(q1, 2); +const float PS1 = 0.25F*daxVar; +const float PS2 = powf(q2, 2); +const float PS3 = 0.25F*dayVar; +const float PS4 = powf(q3, 2); +const float PS5 = 0.25F*dazVar; +const float PS6 = 0.5F*q1; +const float PS7 = 0.5F*q2; +const float PS8 = P(10,11)*PS7; +const float PS9 = 0.5F*q3; +const float PS10 = P(10,12)*PS9; +const float PS11 = 0.5F*dax - 0.5F*dax_b; +const float PS12 = 0.5F*day - 0.5F*day_b; +const float PS13 = 0.5F*daz - 0.5F*daz_b; +const float PS14 = P(0,10) - P(1,10)*PS11 + P(10,10)*PS6 - P(2,10)*PS12 - P(3,10)*PS13 + PS10 + PS8; +const float PS15 = P(10,11)*PS6; +const float PS16 = P(11,12)*PS9; +const float PS17 = P(0,11) - P(1,11)*PS11 + P(11,11)*PS7 - P(2,11)*PS12 - P(3,11)*PS13 + PS15 + PS16; +const float PS18 = P(10,12)*PS6; +const float PS19 = P(11,12)*PS7; +const float PS20 = P(0,12) - P(1,12)*PS11 + P(12,12)*PS9 - P(2,12)*PS12 - P(3,12)*PS13 + PS18 + PS19; +const float PS21 = P(1,2)*PS12; +const float PS22 = -P(1,3)*PS13; +const float PS23 = P(0,1) - P(1,1)*PS11 + P(1,10)*PS6 + P(1,11)*PS7 + P(1,12)*PS9 - PS21 + PS22; +const float PS24 = -P(1,2)*PS11; +const float PS25 = P(2,3)*PS13; +const float PS26 = P(0,2) + P(2,10)*PS6 + P(2,11)*PS7 + P(2,12)*PS9 - P(2,2)*PS12 + PS24 - PS25; +const float PS27 = P(1,3)*PS11; +const float PS28 = -P(2,3)*PS12; +const float PS29 = P(0,3) + P(3,10)*PS6 + P(3,11)*PS7 + P(3,12)*PS9 - P(3,3)*PS13 - PS27 + PS28; +const float PS30 = P(0,1)*PS11; +const float PS31 = P(0,2)*PS12; +const float PS32 = P(0,3)*PS13; +const float PS33 = P(0,0) + P(0,10)*PS6 + P(0,11)*PS7 + P(0,12)*PS9 - PS30 - PS31 - PS32; +const float PS34 = 0.5F*q0; +const float PS35 = q2*q3; +const float PS36 = q0*q1; +const float PS37 = q1*q3; +const float PS38 = q0*q2; +const float PS39 = q1*q2; +const float PS40 = q0*q3; +const float PS41 = 2*PS2; +const float PS42 = 2*PS4 - 1; +const float PS43 = PS41 + PS42; +const float PS44 = P(0,13) - P(1,13)*PS11 + P(10,13)*PS6 + P(11,13)*PS7 + P(12,13)*PS9 - P(2,13)*PS12 - P(3,13)*PS13; +const float PS45 = PS37 + PS38; +const float PS46 = P(0,15) - P(1,15)*PS11 + P(10,15)*PS6 + P(11,15)*PS7 + P(12,15)*PS9 - P(2,15)*PS12 - P(3,15)*PS13; +const float PS47 = 2*PS46; +const float PS48 = dvy - dvy_b; +const float PS49 = PS48*q0; +const float PS50 = dvz - dvz_b; +const float PS51 = PS50*q1; +const float PS52 = dvx - dvx_b; +const float PS53 = PS52*q3; +const float PS54 = PS49 - PS51 + 2*PS53; +const float PS55 = 2*PS29; +const float PS56 = -PS39 + PS40; +const float PS57 = P(0,14) - P(1,14)*PS11 + P(10,14)*PS6 + P(11,14)*PS7 + P(12,14)*PS9 - P(2,14)*PS12 - P(3,14)*PS13; +const float PS58 = 2*PS57; +const float PS59 = PS48*q2; +const float PS60 = PS50*q3; +const float PS61 = PS59 + PS60; +const float PS62 = 2*PS23; +const float PS63 = PS50*q2; +const float PS64 = PS48*q3; +const float PS65 = -PS64; +const float PS66 = PS63 + PS65; +const float PS67 = 2*PS33; +const float PS68 = PS50*q0; +const float PS69 = PS48*q1; +const float PS70 = PS52*q2; +const float PS71 = PS68 + PS69 - 2*PS70; +const float PS72 = 2*PS26; +const float PS73 = P(0,4) - P(1,4)*PS11 - P(2,4)*PS12 - P(3,4)*PS13 + P(4,10)*PS6 + P(4,11)*PS7 + P(4,12)*PS9; +const float PS74 = 2*PS0; +const float PS75 = PS42 + PS74; +const float PS76 = PS39 + PS40; +const float PS77 = 2*PS44; +const float PS78 = PS51 - PS53; +const float PS79 = -PS70; +const float PS80 = PS68 + 2*PS69 + PS79; +const float PS81 = -PS35 + PS36; +const float PS82 = PS52*q1; +const float PS83 = PS60 + PS82; +const float PS84 = PS52*q0; +const float PS85 = PS63 - 2*PS64 + PS84; +const float PS86 = P(0,5) - P(1,5)*PS11 - P(2,5)*PS12 - P(3,5)*PS13 + P(5,10)*PS6 + P(5,11)*PS7 + P(5,12)*PS9; +const float PS87 = PS41 + PS74 - 1; +const float PS88 = PS35 + PS36; +const float PS89 = 2*PS63 + PS65 + PS84; +const float PS90 = -PS37 + PS38; +const float PS91 = PS59 + PS82; +const float PS92 = PS69 + PS79; +const float PS93 = PS49 - 2*PS51 + PS53; +const float PS94 = P(0,6) - P(1,6)*PS11 - P(2,6)*PS12 - P(3,6)*PS13 + P(6,10)*PS6 + P(6,11)*PS7 + P(6,12)*PS9; +const float PS95 = powf(q0, 2); +const float PS96 = -P(10,11)*PS34; +const float PS97 = P(0,11)*PS11 + P(1,11) + P(11,11)*PS9 + P(2,11)*PS13 - P(3,11)*PS12 - PS19 + PS96; +const float PS98 = P(0,2)*PS13; +const float PS99 = P(0,3)*PS12; +const float PS100 = P(0,0)*PS11 + P(0,1) - P(0,10)*PS34 + P(0,11)*PS9 - P(0,12)*PS7 + PS98 - PS99; +const float PS101 = P(0,2)*PS11; +const float PS102 = P(1,2) - P(2,10)*PS34 + P(2,11)*PS9 - P(2,12)*PS7 + P(2,2)*PS13 + PS101 + PS28; +const float PS103 = P(10,11)*PS9; +const float PS104 = P(10,12)*PS7; +const float PS105 = P(0,10)*PS11 + P(1,10) - P(10,10)*PS34 + P(2,10)*PS13 - P(3,10)*PS12 + PS103 - PS104; +const float PS106 = -P(10,12)*PS34; +const float PS107 = P(0,12)*PS11 + P(1,12) - P(12,12)*PS7 + P(2,12)*PS13 - P(3,12)*PS12 + PS106 + PS16; +const float PS108 = P(0,3)*PS11; +const float PS109 = P(1,3) - P(3,10)*PS34 + P(3,11)*PS9 - P(3,12)*PS7 - P(3,3)*PS12 + PS108 + PS25; +const float PS110 = P(1,2)*PS13; +const float PS111 = P(1,3)*PS12; +const float PS112 = P(1,1) - P(1,10)*PS34 + P(1,11)*PS9 - P(1,12)*PS7 + PS110 - PS111 + PS30; +const float PS113 = P(0,13)*PS11 + P(1,13) - P(10,13)*PS34 + P(11,13)*PS9 - P(12,13)*PS7 + P(2,13)*PS13 - P(3,13)*PS12; +const float PS114 = P(0,15)*PS11 + P(1,15) - P(10,15)*PS34 + P(11,15)*PS9 - P(12,15)*PS7 + P(2,15)*PS13 - P(3,15)*PS12; +const float PS115 = 2*PS114; +const float PS116 = 2*PS109; +const float PS117 = P(0,14)*PS11 + P(1,14) - P(10,14)*PS34 + P(11,14)*PS9 - P(12,14)*PS7 + P(2,14)*PS13 - P(3,14)*PS12; +const float PS118 = 2*PS117; +const float PS119 = 2*PS112; +const float PS120 = 2*PS100; +const float PS121 = 2*PS102; +const float PS122 = P(0,4)*PS11 + P(1,4) + P(2,4)*PS13 - P(3,4)*PS12 - P(4,10)*PS34 + P(4,11)*PS9 - P(4,12)*PS7; +const float PS123 = 2*PS113; +const float PS124 = P(0,5)*PS11 + P(1,5) + P(2,5)*PS13 - P(3,5)*PS12 - P(5,10)*PS34 + P(5,11)*PS9 - P(5,12)*PS7; +const float PS125 = P(0,6)*PS11 + P(1,6) + P(2,6)*PS13 - P(3,6)*PS12 - P(6,10)*PS34 + P(6,11)*PS9 - P(6,12)*PS7; +const float PS126 = -P(11,12)*PS34; +const float PS127 = P(0,12)*PS12 - P(1,12)*PS13 + P(12,12)*PS6 + P(2,12) + P(3,12)*PS11 - PS10 + PS126; +const float PS128 = P(2,3) - P(3,10)*PS9 - P(3,11)*PS34 + P(3,12)*PS6 + P(3,3)*PS11 + PS22 + PS99; +const float PS129 = P(0,1)*PS13; +const float PS130 = P(0,0)*PS12 - P(0,10)*PS9 - P(0,11)*PS34 + P(0,12)*PS6 + P(0,2) + PS108 - PS129; +const float PS131 = P(11,12)*PS6; +const float PS132 = P(0,11)*PS12 - P(1,11)*PS13 - P(11,11)*PS34 + P(2,11) + P(3,11)*PS11 - PS103 + PS131; +const float PS133 = P(0,10)*PS12 - P(1,10)*PS13 - P(10,10)*PS9 + P(2,10) + P(3,10)*PS11 + PS18 + PS96; +const float PS134 = P(0,1)*PS12; +const float PS135 = -P(1,1)*PS13 - P(1,10)*PS9 - P(1,11)*PS34 + P(1,12)*PS6 + P(1,2) + PS134 + PS27; +const float PS136 = P(2,3)*PS11; +const float PS137 = -P(2,10)*PS9 - P(2,11)*PS34 + P(2,12)*PS6 + P(2,2) - PS110 + PS136 + PS31; +const float PS138 = P(0,13)*PS12 - P(1,13)*PS13 - P(10,13)*PS9 - P(11,13)*PS34 + P(12,13)*PS6 + P(2,13) + P(3,13)*PS11; +const float PS139 = P(0,15)*PS12 - P(1,15)*PS13 - P(10,15)*PS9 - P(11,15)*PS34 + P(12,15)*PS6 + P(2,15) + P(3,15)*PS11; +const float PS140 = 2*PS139; +const float PS141 = 2*PS128; +const float PS142 = P(0,14)*PS12 - P(1,14)*PS13 - P(10,14)*PS9 - P(11,14)*PS34 + P(12,14)*PS6 + P(2,14) + P(3,14)*PS11; +const float PS143 = 2*PS142; +const float PS144 = 2*PS135; +const float PS145 = 2*PS130; +const float PS146 = 2*PS137; +const float PS147 = P(0,4)*PS12 - P(1,4)*PS13 + P(2,4) + P(3,4)*PS11 - P(4,10)*PS9 - P(4,11)*PS34 + P(4,12)*PS6; +const float PS148 = 2*PS138; +const float PS149 = P(0,5)*PS12 - P(1,5)*PS13 + P(2,5) + P(3,5)*PS11 - P(5,10)*PS9 - P(5,11)*PS34 + P(5,12)*PS6; +const float PS150 = P(0,6)*PS12 - P(1,6)*PS13 + P(2,6) + P(3,6)*PS11 - P(6,10)*PS9 - P(6,11)*PS34 + P(6,12)*PS6; +const float PS151 = P(0,10)*PS13 + P(1,10)*PS12 + P(10,10)*PS7 - P(2,10)*PS11 + P(3,10) + PS106 - PS15; +const float PS152 = P(1,1)*PS12 + P(1,10)*PS7 - P(1,11)*PS6 - P(1,12)*PS34 + P(1,3) + PS129 + PS24; +const float PS153 = P(0,0)*PS13 + P(0,10)*PS7 - P(0,11)*PS6 - P(0,12)*PS34 + P(0,3) - PS101 + PS134; +const float PS154 = P(0,12)*PS13 + P(1,12)*PS12 - P(12,12)*PS34 - P(2,12)*PS11 + P(3,12) + PS104 - PS131; +const float PS155 = P(0,11)*PS13 + P(1,11)*PS12 - P(11,11)*PS6 - P(2,11)*PS11 + P(3,11) + PS126 + PS8; +const float PS156 = P(2,10)*PS7 - P(2,11)*PS6 - P(2,12)*PS34 - P(2,2)*PS11 + P(2,3) + PS21 + PS98; +const float PS157 = P(3,10)*PS7 - P(3,11)*PS6 - P(3,12)*PS34 + P(3,3) + PS111 - PS136 + PS32; +const float PS158 = P(0,13)*PS13 + P(1,13)*PS12 + P(10,13)*PS7 - P(11,13)*PS6 - P(12,13)*PS34 - P(2,13)*PS11 + P(3,13); +const float PS159 = P(0,15)*PS13 + P(1,15)*PS12 + P(10,15)*PS7 - P(11,15)*PS6 - P(12,15)*PS34 - P(2,15)*PS11 + P(3,15); +const float PS160 = 2*PS159; +const float PS161 = 2*PS157; +const float PS162 = P(0,14)*PS13 + P(1,14)*PS12 + P(10,14)*PS7 - P(11,14)*PS6 - P(12,14)*PS34 - P(2,14)*PS11 + P(3,14); +const float PS163 = 2*PS162; +const float PS164 = 2*PS152; +const float PS165 = 2*PS153; +const float PS166 = 2*PS156; +const float PS167 = P(0,4)*PS13 + P(1,4)*PS12 - P(2,4)*PS11 + P(3,4) + P(4,10)*PS7 - P(4,11)*PS6 - P(4,12)*PS34; +const float PS168 = 2*PS158; +const float PS169 = P(0,5)*PS13 + P(1,5)*PS12 - P(2,5)*PS11 + P(3,5) + P(5,10)*PS7 - P(5,11)*PS6 - P(5,12)*PS34; +const float PS170 = P(0,6)*PS13 + P(1,6)*PS12 - P(2,6)*PS11 + P(3,6) + P(6,10)*PS7 - P(6,11)*PS6 - P(6,12)*PS34; +const float PS171 = 2*PS45; +const float PS172 = 2*PS56; +const float PS173 = 2*PS61; +const float PS174 = 2*PS66; +const float PS175 = 2*PS71; +const float PS176 = 2*PS54; +const float PS177 = P(0,13)*PS174 + P(1,13)*PS173 + P(13,13)*PS43 + P(13,14)*PS172 - P(13,15)*PS171 + P(2,13)*PS175 - P(3,13)*PS176 + P(4,13); +const float PS178 = P(0,15)*PS174 + P(1,15)*PS173 + P(13,15)*PS43 + P(14,15)*PS172 - P(15,15)*PS171 + P(2,15)*PS175 - P(3,15)*PS176 + P(4,15); +const float PS179 = P(0,3)*PS174 + P(1,3)*PS173 + P(2,3)*PS175 + P(3,13)*PS43 + P(3,14)*PS172 - P(3,15)*PS171 - P(3,3)*PS176 + P(3,4); +const float PS180 = P(0,14)*PS174 + P(1,14)*PS173 + P(13,14)*PS43 + P(14,14)*PS172 - P(14,15)*PS171 + P(2,14)*PS175 - P(3,14)*PS176 + P(4,14); +const float PS181 = P(0,1)*PS174 + P(1,1)*PS173 + P(1,13)*PS43 + P(1,14)*PS172 - P(1,15)*PS171 + P(1,2)*PS175 - P(1,3)*PS176 + P(1,4); +const float PS182 = P(0,0)*PS174 + P(0,1)*PS173 + P(0,13)*PS43 + P(0,14)*PS172 - P(0,15)*PS171 + P(0,2)*PS175 - P(0,3)*PS176 + P(0,4); +const float PS183 = P(0,2)*PS174 + P(1,2)*PS173 + P(2,13)*PS43 + P(2,14)*PS172 - P(2,15)*PS171 + P(2,2)*PS175 - P(2,3)*PS176 + P(2,4); +const float PS184 = 4*dvyVar; +const float PS185 = 4*dvzVar; +const float PS186 = P(0,4)*PS174 + P(1,4)*PS173 + P(2,4)*PS175 - P(3,4)*PS176 + P(4,13)*PS43 + P(4,14)*PS172 - P(4,15)*PS171 + P(4,4); +const float PS187 = 2*PS177; +const float PS188 = 2*PS182; +const float PS189 = 2*PS181; +const float PS190 = 2*PS81; +const float PS191 = 2*PS183; +const float PS192 = 2*PS179; +const float PS193 = 2*PS76; +const float PS194 = PS43*dvxVar; +const float PS195 = PS75*dvyVar; +const float PS196 = P(0,5)*PS174 + P(1,5)*PS173 + P(2,5)*PS175 - P(3,5)*PS176 + P(4,5) + P(5,13)*PS43 + P(5,14)*PS172 - P(5,15)*PS171; +const float PS197 = 2*PS88; +const float PS198 = PS87*dvzVar; +const float PS199 = 2*PS90; +const float PS200 = P(0,6)*PS174 + P(1,6)*PS173 + P(2,6)*PS175 - P(3,6)*PS176 + P(4,6) + P(6,13)*PS43 + P(6,14)*PS172 - P(6,15)*PS171; +const float PS201 = 2*PS83; +const float PS202 = 2*PS78; +const float PS203 = 2*PS85; +const float PS204 = 2*PS80; +const float PS205 = -P(0,14)*PS202 - P(1,14)*PS204 - P(13,14)*PS193 + P(14,14)*PS75 + P(14,15)*PS190 + P(2,14)*PS201 + P(3,14)*PS203 + P(5,14); +const float PS206 = -P(0,13)*PS202 - P(1,13)*PS204 - P(13,13)*PS193 + P(13,14)*PS75 + P(13,15)*PS190 + P(2,13)*PS201 + P(3,13)*PS203 + P(5,13); +const float PS207 = -P(0,0)*PS202 - P(0,1)*PS204 - P(0,13)*PS193 + P(0,14)*PS75 + P(0,15)*PS190 + P(0,2)*PS201 + P(0,3)*PS203 + P(0,5); +const float PS208 = -P(0,1)*PS202 - P(1,1)*PS204 - P(1,13)*PS193 + P(1,14)*PS75 + P(1,15)*PS190 + P(1,2)*PS201 + P(1,3)*PS203 + P(1,5); +const float PS209 = -P(0,15)*PS202 - P(1,15)*PS204 - P(13,15)*PS193 + P(14,15)*PS75 + P(15,15)*PS190 + P(2,15)*PS201 + P(3,15)*PS203 + P(5,15); +const float PS210 = -P(0,2)*PS202 - P(1,2)*PS204 - P(2,13)*PS193 + P(2,14)*PS75 + P(2,15)*PS190 + P(2,2)*PS201 + P(2,3)*PS203 + P(2,5); +const float PS211 = -P(0,3)*PS202 - P(1,3)*PS204 + P(2,3)*PS201 - P(3,13)*PS193 + P(3,14)*PS75 + P(3,15)*PS190 + P(3,3)*PS203 + P(3,5); +const float PS212 = 4*dvxVar; +const float PS213 = -P(0,5)*PS202 - P(1,5)*PS204 + P(2,5)*PS201 + P(3,5)*PS203 - P(5,13)*PS193 + P(5,14)*PS75 + P(5,15)*PS190 + P(5,5); +const float PS214 = 2*PS89; +const float PS215 = 2*PS91; +const float PS216 = 2*PS92; +const float PS217 = 2*PS93; +const float PS218 = -P(0,6)*PS202 - P(1,6)*PS204 + P(2,6)*PS201 + P(3,6)*PS203 + P(5,6) - P(6,13)*PS193 + P(6,14)*PS75 + P(6,15)*PS190; +const float PS219 = P(0,15)*PS216 + P(1,15)*PS217 + P(13,15)*PS199 - P(14,15)*PS197 + P(15,15)*PS87 - P(2,15)*PS214 + P(3,15)*PS215 + P(6,15); +const float PS220 = P(0,14)*PS216 + P(1,14)*PS217 + P(13,14)*PS199 - P(14,14)*PS197 + P(14,15)*PS87 - P(2,14)*PS214 + P(3,14)*PS215 + P(6,14); +const float PS221 = P(0,13)*PS216 + P(1,13)*PS217 + P(13,13)*PS199 - P(13,14)*PS197 + P(13,15)*PS87 - P(2,13)*PS214 + P(3,13)*PS215 + P(6,13); +const float PS222 = P(0,6)*PS216 + P(1,6)*PS217 - P(2,6)*PS214 + P(3,6)*PS215 + P(6,13)*PS199 - P(6,14)*PS197 + P(6,15)*PS87 + P(6,6); + + +nextP(0,0) = PS0*PS1 - PS11*PS23 - PS12*PS26 - PS13*PS29 + PS14*PS6 + PS17*PS7 + PS2*PS3 + PS20*PS9 + PS33 + PS4*PS5; +nextP(0,1) = -PS1*PS36 + PS11*PS33 - PS12*PS29 + PS13*PS26 - PS14*PS34 + PS17*PS9 - PS20*PS7 + PS23 + PS3*PS35 - PS35*PS5; +nextP(1,1) = PS1*PS95 + PS100*PS11 + PS102*PS13 - PS105*PS34 - PS107*PS7 - PS109*PS12 + PS112 + PS2*PS5 + PS3*PS4 + PS9*PS97; +nextP(0,2) = -PS1*PS37 + PS11*PS29 + PS12*PS33 - PS13*PS23 - PS14*PS9 - PS17*PS34 + PS20*PS6 + PS26 - PS3*PS38 + PS37*PS5; +nextP(1,2) = PS1*PS40 + PS100*PS12 + PS102 - PS105*PS9 + PS107*PS6 + PS109*PS11 - PS112*PS13 - PS3*PS40 - PS34*PS97 - PS39*PS5; +nextP(2,2) = PS0*PS5 + PS1*PS4 + PS11*PS128 + PS12*PS130 + PS127*PS6 - PS13*PS135 - PS132*PS34 - PS133*PS9 + PS137 + PS3*PS95; +nextP(0,3) = PS1*PS39 - PS11*PS26 + PS12*PS23 + PS13*PS33 + PS14*PS7 - PS17*PS6 - PS20*PS34 + PS29 - PS3*PS39 - PS40*PS5; +nextP(1,3) = -PS1*PS38 + PS100*PS13 - PS102*PS11 + PS105*PS7 - PS107*PS34 + PS109 + PS112*PS12 - PS3*PS37 + PS38*PS5 - PS6*PS97; +nextP(2,3) = -PS1*PS35 - PS11*PS137 + PS12*PS135 - PS127*PS34 + PS128 + PS13*PS130 - PS132*PS6 + PS133*PS7 + PS3*PS36 - PS36*PS5; +nextP(3,3) = PS0*PS3 + PS1*PS2 - PS11*PS156 + PS12*PS152 + PS13*PS153 + PS151*PS7 - PS154*PS34 - PS155*PS6 + PS157 + PS5*PS95; +nextP(0,4) = PS43*PS44 - PS45*PS47 - PS54*PS55 + PS56*PS58 + PS61*PS62 + PS66*PS67 + PS71*PS72 + PS73; +nextP(1,4) = PS113*PS43 - PS115*PS45 - PS116*PS54 + PS118*PS56 + PS119*PS61 + PS120*PS66 + PS121*PS71 + PS122; +nextP(2,4) = PS138*PS43 - PS140*PS45 - PS141*PS54 + PS143*PS56 + PS144*PS61 + PS145*PS66 + PS146*PS71 + PS147; +nextP(3,4) = PS158*PS43 - PS160*PS45 - PS161*PS54 + PS163*PS56 + PS164*PS61 + PS165*PS66 + PS166*PS71 + PS167; +nextP(4,4) = -PS171*PS178 + PS172*PS180 + PS173*PS181 + PS174*PS182 + PS175*PS183 - PS176*PS179 + PS177*PS43 + PS184*powf(PS56, 2) + PS185*powf(PS45, 2) + PS186 + powf(PS43, 2)*dvxVar; +nextP(0,5) = PS47*PS81 + PS55*PS85 + PS57*PS75 - PS62*PS80 - PS67*PS78 + PS72*PS83 - PS76*PS77 + PS86; +nextP(1,5) = PS115*PS81 + PS116*PS85 + PS117*PS75 - PS119*PS80 - PS120*PS78 + PS121*PS83 - PS123*PS76 + PS124; +nextP(2,5) = PS140*PS81 + PS141*PS85 + PS142*PS75 - PS144*PS80 - PS145*PS78 + PS146*PS83 - PS148*PS76 + PS149; +nextP(3,5) = PS160*PS81 + PS161*PS85 + PS162*PS75 - PS164*PS80 - PS165*PS78 + PS166*PS83 - PS168*PS76 + PS169; +nextP(4,5) = PS172*PS195 + PS178*PS190 + PS180*PS75 - PS185*PS45*PS81 - PS187*PS76 - PS188*PS78 - PS189*PS80 + PS191*PS83 + PS192*PS85 - PS193*PS194 + PS196; +nextP(5,5) = PS185*powf(PS81, 2) + PS190*PS209 - PS193*PS206 + PS201*PS210 - PS202*PS207 + PS203*PS211 - PS204*PS208 + PS205*PS75 + PS212*powf(PS76, 2) + PS213 + powf(PS75, 2)*dvyVar; +nextP(0,6) = PS46*PS87 + PS55*PS91 - PS58*PS88 + PS62*PS93 + PS67*PS92 - PS72*PS89 + PS77*PS90 + PS94; +nextP(1,6) = PS114*PS87 + PS116*PS91 - PS118*PS88 + PS119*PS93 + PS120*PS92 - PS121*PS89 + PS123*PS90 + PS125; +nextP(2,6) = PS139*PS87 + PS141*PS91 - PS143*PS88 + PS144*PS93 + PS145*PS92 - PS146*PS89 + PS148*PS90 + PS150; +nextP(3,6) = PS159*PS87 + PS161*PS91 - PS163*PS88 + PS164*PS93 + PS165*PS92 - PS166*PS89 + PS168*PS90 + PS170; +nextP(4,6) = -PS171*PS198 + PS178*PS87 - PS180*PS197 - PS184*PS56*PS88 + PS187*PS90 + PS188*PS92 + PS189*PS93 - PS191*PS89 + PS192*PS91 + PS194*PS199 + PS200; +nextP(5,6) = PS190*PS198 - PS195*PS197 - PS197*PS205 + PS199*PS206 + PS207*PS216 + PS208*PS217 + PS209*PS87 - PS210*PS214 + PS211*PS215 - PS212*PS76*PS90 + PS218; +nextP(6,6) = PS184*powf(PS88, 2) - PS197*PS220 + PS199*PS221 + PS212*powf(PS90, 2) - PS214*(P(0,2)*PS216 + P(1,2)*PS217 + P(2,13)*PS199 - P(2,14)*PS197 + P(2,15)*PS87 - P(2,2)*PS214 + P(2,3)*PS215 + P(2,6)) + PS215*(P(0,3)*PS216 + P(1,3)*PS217 - P(2,3)*PS214 + P(3,13)*PS199 - P(3,14)*PS197 + P(3,15)*PS87 + P(3,3)*PS215 + P(3,6)) + PS216*(P(0,0)*PS216 + P(0,1)*PS217 + P(0,13)*PS199 - P(0,14)*PS197 + P(0,15)*PS87 - P(0,2)*PS214 + P(0,3)*PS215 + P(0,6)) + PS217*(P(0,1)*PS216 + P(1,1)*PS217 + P(1,13)*PS199 - P(1,14)*PS197 + P(1,15)*PS87 - P(1,2)*PS214 + P(1,3)*PS215 + P(1,6)) + PS219*PS87 + PS222 + powf(PS87, 2)*dvzVar; +nextP(0,7) = P(0,7) - P(1,7)*PS11 - P(2,7)*PS12 - P(3,7)*PS13 + P(7,10)*PS6 + P(7,11)*PS7 + P(7,12)*PS9 + PS73*dt; +nextP(1,7) = P(0,7)*PS11 + P(1,7) + P(2,7)*PS13 - P(3,7)*PS12 - P(7,10)*PS34 + P(7,11)*PS9 - P(7,12)*PS7 + PS122*dt; +nextP(2,7) = P(0,7)*PS12 - P(1,7)*PS13 + P(2,7) + P(3,7)*PS11 - P(7,10)*PS9 - P(7,11)*PS34 + P(7,12)*PS6 + PS147*dt; +nextP(3,7) = P(0,7)*PS13 + P(1,7)*PS12 - P(2,7)*PS11 + P(3,7) + P(7,10)*PS7 - P(7,11)*PS6 - P(7,12)*PS34 + PS167*dt; +nextP(4,7) = P(0,7)*PS174 + P(1,7)*PS173 + P(2,7)*PS175 - P(3,7)*PS176 + P(4,7) + P(7,13)*PS43 + P(7,14)*PS172 - P(7,15)*PS171 + PS186*dt; +nextP(5,7) = -P(0,7)*PS202 - P(1,7)*PS204 + P(2,7)*PS201 + P(3,7)*PS203 + P(5,7) - P(7,13)*PS193 + P(7,14)*PS75 + P(7,15)*PS190 + dt*(-P(0,4)*PS202 - P(1,4)*PS204 + P(2,4)*PS201 + P(3,4)*PS203 - P(4,13)*PS193 + P(4,14)*PS75 + P(4,15)*PS190 + P(4,5)); +nextP(6,7) = P(0,7)*PS216 + P(1,7)*PS217 - P(2,7)*PS214 + P(3,7)*PS215 + P(6,7) + P(7,13)*PS199 - P(7,14)*PS197 + P(7,15)*PS87 + dt*(P(0,4)*PS216 + P(1,4)*PS217 - P(2,4)*PS214 + P(3,4)*PS215 + P(4,13)*PS199 - P(4,14)*PS197 + P(4,15)*PS87 + P(4,6)); +nextP(7,7) = P(4,7)*dt + P(7,7) + dt*(P(4,4)*dt + P(4,7)); +nextP(0,8) = P(0,8) - P(1,8)*PS11 - P(2,8)*PS12 - P(3,8)*PS13 + P(8,10)*PS6 + P(8,11)*PS7 + P(8,12)*PS9 + PS86*dt; +nextP(1,8) = P(0,8)*PS11 + P(1,8) + P(2,8)*PS13 - P(3,8)*PS12 - P(8,10)*PS34 + P(8,11)*PS9 - P(8,12)*PS7 + PS124*dt; +nextP(2,8) = P(0,8)*PS12 - P(1,8)*PS13 + P(2,8) + P(3,8)*PS11 - P(8,10)*PS9 - P(8,11)*PS34 + P(8,12)*PS6 + PS149*dt; +nextP(3,8) = P(0,8)*PS13 + P(1,8)*PS12 - P(2,8)*PS11 + P(3,8) + P(8,10)*PS7 - P(8,11)*PS6 - P(8,12)*PS34 + PS169*dt; +nextP(4,8) = P(0,8)*PS174 + P(1,8)*PS173 + P(2,8)*PS175 - P(3,8)*PS176 + P(4,8) + P(8,13)*PS43 + P(8,14)*PS172 - P(8,15)*PS171 + PS196*dt; +nextP(5,8) = -P(0,8)*PS202 - P(1,8)*PS204 + P(2,8)*PS201 + P(3,8)*PS203 + P(5,8) - P(8,13)*PS193 + P(8,14)*PS75 + P(8,15)*PS190 + PS213*dt; +nextP(6,8) = P(0,8)*PS216 + P(1,8)*PS217 - P(2,8)*PS214 + P(3,8)*PS215 + P(6,8) + P(8,13)*PS199 - P(8,14)*PS197 + P(8,15)*PS87 + dt*(P(0,5)*PS216 + P(1,5)*PS217 - P(2,5)*PS214 + P(3,5)*PS215 + P(5,13)*PS199 - P(5,14)*PS197 + P(5,15)*PS87 + P(5,6)); +nextP(7,8) = P(4,8)*dt + P(7,8) + dt*(P(4,5)*dt + P(5,7)); +nextP(8,8) = P(5,8)*dt + P(8,8) + dt*(P(5,5)*dt + P(5,8)); +nextP(0,9) = P(0,9) - P(1,9)*PS11 - P(2,9)*PS12 - P(3,9)*PS13 + P(9,10)*PS6 + P(9,11)*PS7 + P(9,12)*PS9 + PS94*dt; +nextP(1,9) = P(0,9)*PS11 + P(1,9) + P(2,9)*PS13 - P(3,9)*PS12 - P(9,10)*PS34 + P(9,11)*PS9 - P(9,12)*PS7 + PS125*dt; +nextP(2,9) = P(0,9)*PS12 - P(1,9)*PS13 + P(2,9) + P(3,9)*PS11 - P(9,10)*PS9 - P(9,11)*PS34 + P(9,12)*PS6 + PS150*dt; +nextP(3,9) = P(0,9)*PS13 + P(1,9)*PS12 - P(2,9)*PS11 + P(3,9) + P(9,10)*PS7 - P(9,11)*PS6 - P(9,12)*PS34 + PS170*dt; +nextP(4,9) = P(0,9)*PS174 + P(1,9)*PS173 + P(2,9)*PS175 - P(3,9)*PS176 + P(4,9) + P(9,13)*PS43 + P(9,14)*PS172 - P(9,15)*PS171 + PS200*dt; +nextP(5,9) = -P(0,9)*PS202 - P(1,9)*PS204 + P(2,9)*PS201 + P(3,9)*PS203 + P(5,9) - P(9,13)*PS193 + P(9,14)*PS75 + P(9,15)*PS190 + PS218*dt; +nextP(6,9) = P(0,9)*PS216 + P(1,9)*PS217 - P(2,9)*PS214 + P(3,9)*PS215 + P(6,9) + P(9,13)*PS199 - P(9,14)*PS197 + P(9,15)*PS87 + PS222*dt; +nextP(7,9) = P(4,9)*dt + P(7,9) + dt*(P(4,6)*dt + P(6,7)); +nextP(8,9) = P(5,9)*dt + P(8,9) + dt*(P(5,6)*dt + P(6,8)); +nextP(9,9) = P(6,9)*dt + P(9,9) + dt*(P(6,6)*dt + P(6,9)); +nextP(0,10) = PS14; +nextP(1,10) = PS105; +nextP(2,10) = PS133; +nextP(3,10) = PS151; +nextP(4,10) = P(0,10)*PS174 + P(1,10)*PS173 + P(10,13)*PS43 + P(10,14)*PS172 - P(10,15)*PS171 + P(2,10)*PS175 - P(3,10)*PS176 + P(4,10); +nextP(5,10) = -P(0,10)*PS202 - P(1,10)*PS204 - P(10,13)*PS193 + P(10,14)*PS75 + P(10,15)*PS190 + P(2,10)*PS201 + P(3,10)*PS203 + P(5,10); +nextP(6,10) = P(0,10)*PS216 + P(1,10)*PS217 + P(10,13)*PS199 - P(10,14)*PS197 + P(10,15)*PS87 - P(2,10)*PS214 + P(3,10)*PS215 + P(6,10); +nextP(7,10) = P(4,10)*dt + P(7,10); +nextP(8,10) = P(5,10)*dt + P(8,10); +nextP(9,10) = P(6,10)*dt + P(9,10); +nextP(10,10) = P(10,10); +nextP(0,11) = PS17; +nextP(1,11) = PS97; +nextP(2,11) = PS132; +nextP(3,11) = PS155; +nextP(4,11) = P(0,11)*PS174 + P(1,11)*PS173 + P(11,13)*PS43 + P(11,14)*PS172 - P(11,15)*PS171 + P(2,11)*PS175 - P(3,11)*PS176 + P(4,11); +nextP(5,11) = -P(0,11)*PS202 - P(1,11)*PS204 - P(11,13)*PS193 + P(11,14)*PS75 + P(11,15)*PS190 + P(2,11)*PS201 + P(3,11)*PS203 + P(5,11); +nextP(6,11) = P(0,11)*PS216 + P(1,11)*PS217 + P(11,13)*PS199 - P(11,14)*PS197 + P(11,15)*PS87 - P(2,11)*PS214 + P(3,11)*PS215 + P(6,11); +nextP(7,11) = P(4,11)*dt + P(7,11); +nextP(8,11) = P(5,11)*dt + P(8,11); +nextP(9,11) = P(6,11)*dt + P(9,11); +nextP(10,11) = P(10,11); +nextP(11,11) = P(11,11); +nextP(0,12) = PS20; +nextP(1,12) = PS107; +nextP(2,12) = PS127; +nextP(3,12) = PS154; +nextP(4,12) = P(0,12)*PS174 + P(1,12)*PS173 + P(12,13)*PS43 + P(12,14)*PS172 - P(12,15)*PS171 + P(2,12)*PS175 - P(3,12)*PS176 + P(4,12); +nextP(5,12) = -P(0,12)*PS202 - P(1,12)*PS204 - P(12,13)*PS193 + P(12,14)*PS75 + P(12,15)*PS190 + P(2,12)*PS201 + P(3,12)*PS203 + P(5,12); +nextP(6,12) = P(0,12)*PS216 + P(1,12)*PS217 + P(12,13)*PS199 - P(12,14)*PS197 + P(12,15)*PS87 - P(2,12)*PS214 + P(3,12)*PS215 + P(6,12); +nextP(7,12) = P(4,12)*dt + P(7,12); +nextP(8,12) = P(5,12)*dt + P(8,12); +nextP(9,12) = P(6,12)*dt + P(9,12); +nextP(10,12) = P(10,12); +nextP(11,12) = P(11,12); +nextP(12,12) = P(12,12); +nextP(0,13) = PS44; +nextP(1,13) = PS113; +nextP(2,13) = PS138; +nextP(3,13) = PS158; +nextP(4,13) = PS177; +nextP(5,13) = PS206; +nextP(6,13) = PS221; +nextP(7,13) = P(4,13)*dt + P(7,13); +nextP(8,13) = P(5,13)*dt + P(8,13); +nextP(9,13) = P(6,13)*dt + P(9,13); +nextP(10,13) = P(10,13); +nextP(11,13) = P(11,13); +nextP(12,13) = P(12,13); +nextP(13,13) = P(13,13); +nextP(0,14) = PS57; +nextP(1,14) = PS117; +nextP(2,14) = PS142; +nextP(3,14) = PS162; +nextP(4,14) = PS180; +nextP(5,14) = PS205; +nextP(6,14) = PS220; +nextP(7,14) = P(4,14)*dt + P(7,14); +nextP(8,14) = P(5,14)*dt + P(8,14); +nextP(9,14) = P(6,14)*dt + P(9,14); +nextP(10,14) = P(10,14); +nextP(11,14) = P(11,14); +nextP(12,14) = P(12,14); +nextP(13,14) = P(13,14); +nextP(14,14) = P(14,14); +nextP(0,15) = PS46; +nextP(1,15) = PS114; +nextP(2,15) = PS139; +nextP(3,15) = PS159; +nextP(4,15) = PS178; +nextP(5,15) = PS209; +nextP(6,15) = PS219; +nextP(7,15) = P(4,15)*dt + P(7,15); +nextP(8,15) = P(5,15)*dt + P(8,15); +nextP(9,15) = P(6,15)*dt + P(9,15); +nextP(10,15) = P(10,15); +nextP(11,15) = P(11,15); +nextP(12,15) = P(12,15); +nextP(13,15) = P(13,15); +nextP(14,15) = P(14,15); +nextP(15,15) = P(15,15); +nextP(0,16) = P(0,16) - P(1,16)*PS11 + P(10,16)*PS6 + P(11,16)*PS7 + P(12,16)*PS9 - P(2,16)*PS12 - P(3,16)*PS13; +nextP(1,16) = P(0,16)*PS11 + P(1,16) - P(10,16)*PS34 + P(11,16)*PS9 - P(12,16)*PS7 + P(2,16)*PS13 - P(3,16)*PS12; +nextP(2,16) = P(0,16)*PS12 - P(1,16)*PS13 - P(10,16)*PS9 - P(11,16)*PS34 + P(12,16)*PS6 + P(2,16) + P(3,16)*PS11; +nextP(3,16) = P(0,16)*PS13 + P(1,16)*PS12 + P(10,16)*PS7 - P(11,16)*PS6 - P(12,16)*PS34 - P(2,16)*PS11 + P(3,16); +nextP(4,16) = P(0,16)*PS174 + P(1,16)*PS173 + P(13,16)*PS43 + P(14,16)*PS172 - P(15,16)*PS171 + P(2,16)*PS175 - P(3,16)*PS176 + P(4,16); +nextP(5,16) = -P(0,16)*PS202 - P(1,16)*PS204 - P(13,16)*PS193 + P(14,16)*PS75 + P(15,16)*PS190 + P(2,16)*PS201 + P(3,16)*PS203 + P(5,16); +nextP(6,16) = P(0,16)*PS216 + P(1,16)*PS217 + P(13,16)*PS199 - P(14,16)*PS197 + P(15,16)*PS87 - P(2,16)*PS214 + P(3,16)*PS215 + P(6,16); +nextP(7,16) = P(4,16)*dt + P(7,16); +nextP(8,16) = P(5,16)*dt + P(8,16); +nextP(9,16) = P(6,16)*dt + P(9,16); +nextP(10,16) = P(10,16); +nextP(11,16) = P(11,16); +nextP(12,16) = P(12,16); +nextP(13,16) = P(13,16); +nextP(14,16) = P(14,16); +nextP(15,16) = P(15,16); +nextP(16,16) = P(16,16); +nextP(0,17) = P(0,17) - P(1,17)*PS11 + P(10,17)*PS6 + P(11,17)*PS7 + P(12,17)*PS9 - P(2,17)*PS12 - P(3,17)*PS13; +nextP(1,17) = P(0,17)*PS11 + P(1,17) - P(10,17)*PS34 + P(11,17)*PS9 - P(12,17)*PS7 + P(2,17)*PS13 - P(3,17)*PS12; +nextP(2,17) = P(0,17)*PS12 - P(1,17)*PS13 - P(10,17)*PS9 - P(11,17)*PS34 + P(12,17)*PS6 + P(2,17) + P(3,17)*PS11; +nextP(3,17) = P(0,17)*PS13 + P(1,17)*PS12 + P(10,17)*PS7 - P(11,17)*PS6 - P(12,17)*PS34 - P(2,17)*PS11 + P(3,17); +nextP(4,17) = P(0,17)*PS174 + P(1,17)*PS173 + P(13,17)*PS43 + P(14,17)*PS172 - P(15,17)*PS171 + P(2,17)*PS175 - P(3,17)*PS176 + P(4,17); +nextP(5,17) = -P(0,17)*PS202 - P(1,17)*PS204 - P(13,17)*PS193 + P(14,17)*PS75 + P(15,17)*PS190 + P(2,17)*PS201 + P(3,17)*PS203 + P(5,17); +nextP(6,17) = P(0,17)*PS216 + P(1,17)*PS217 + P(13,17)*PS199 - P(14,17)*PS197 + P(15,17)*PS87 - P(2,17)*PS214 + P(3,17)*PS215 + P(6,17); +nextP(7,17) = P(4,17)*dt + P(7,17); +nextP(8,17) = P(5,17)*dt + P(8,17); +nextP(9,17) = P(6,17)*dt + P(9,17); +nextP(10,17) = P(10,17); +nextP(11,17) = P(11,17); +nextP(12,17) = P(12,17); +nextP(13,17) = P(13,17); +nextP(14,17) = P(14,17); +nextP(15,17) = P(15,17); +nextP(16,17) = P(16,17); +nextP(17,17) = P(17,17); +nextP(0,18) = P(0,18) - P(1,18)*PS11 + P(10,18)*PS6 + P(11,18)*PS7 + P(12,18)*PS9 - P(2,18)*PS12 - P(3,18)*PS13; +nextP(1,18) = P(0,18)*PS11 + P(1,18) - P(10,18)*PS34 + P(11,18)*PS9 - P(12,18)*PS7 + P(2,18)*PS13 - P(3,18)*PS12; +nextP(2,18) = P(0,18)*PS12 - P(1,18)*PS13 - P(10,18)*PS9 - P(11,18)*PS34 + P(12,18)*PS6 + P(2,18) + P(3,18)*PS11; +nextP(3,18) = P(0,18)*PS13 + P(1,18)*PS12 + P(10,18)*PS7 - P(11,18)*PS6 - P(12,18)*PS34 - P(2,18)*PS11 + P(3,18); +nextP(4,18) = P(0,18)*PS174 + P(1,18)*PS173 + P(13,18)*PS43 + P(14,18)*PS172 - P(15,18)*PS171 + P(2,18)*PS175 - P(3,18)*PS176 + P(4,18); +nextP(5,18) = -P(0,18)*PS202 - P(1,18)*PS204 - P(13,18)*PS193 + P(14,18)*PS75 + P(15,18)*PS190 + P(2,18)*PS201 + P(3,18)*PS203 + P(5,18); +nextP(6,18) = P(0,18)*PS216 + P(1,18)*PS217 + P(13,18)*PS199 - P(14,18)*PS197 + P(15,18)*PS87 - P(2,18)*PS214 + P(3,18)*PS215 + P(6,18); +nextP(7,18) = P(4,18)*dt + P(7,18); +nextP(8,18) = P(5,18)*dt + P(8,18); +nextP(9,18) = P(6,18)*dt + P(9,18); +nextP(10,18) = P(10,18); +nextP(11,18) = P(11,18); +nextP(12,18) = P(12,18); +nextP(13,18) = P(13,18); +nextP(14,18) = P(14,18); +nextP(15,18) = P(15,18); +nextP(16,18) = P(16,18); +nextP(17,18) = P(17,18); +nextP(18,18) = P(18,18); +nextP(0,19) = P(0,19) - P(1,19)*PS11 + P(10,19)*PS6 + P(11,19)*PS7 + P(12,19)*PS9 - P(2,19)*PS12 - P(3,19)*PS13; +nextP(1,19) = P(0,19)*PS11 + P(1,19) - P(10,19)*PS34 + P(11,19)*PS9 - P(12,19)*PS7 + P(2,19)*PS13 - P(3,19)*PS12; +nextP(2,19) = P(0,19)*PS12 - P(1,19)*PS13 - P(10,19)*PS9 - P(11,19)*PS34 + P(12,19)*PS6 + P(2,19) + P(3,19)*PS11; +nextP(3,19) = P(0,19)*PS13 + P(1,19)*PS12 + P(10,19)*PS7 - P(11,19)*PS6 - P(12,19)*PS34 - P(2,19)*PS11 + P(3,19); +nextP(4,19) = P(0,19)*PS174 + P(1,19)*PS173 + P(13,19)*PS43 + P(14,19)*PS172 - P(15,19)*PS171 + P(2,19)*PS175 - P(3,19)*PS176 + P(4,19); +nextP(5,19) = -P(0,19)*PS202 - P(1,19)*PS204 - P(13,19)*PS193 + P(14,19)*PS75 + P(15,19)*PS190 + P(2,19)*PS201 + P(3,19)*PS203 + P(5,19); +nextP(6,19) = P(0,19)*PS216 + P(1,19)*PS217 + P(13,19)*PS199 - P(14,19)*PS197 + P(15,19)*PS87 - P(2,19)*PS214 + P(3,19)*PS215 + P(6,19); +nextP(7,19) = P(4,19)*dt + P(7,19); +nextP(8,19) = P(5,19)*dt + P(8,19); +nextP(9,19) = P(6,19)*dt + P(9,19); +nextP(10,19) = P(10,19); +nextP(11,19) = P(11,19); +nextP(12,19) = P(12,19); +nextP(13,19) = P(13,19); +nextP(14,19) = P(14,19); +nextP(15,19) = P(15,19); +nextP(16,19) = P(16,19); +nextP(17,19) = P(17,19); +nextP(18,19) = P(18,19); +nextP(19,19) = P(19,19); +nextP(0,20) = P(0,20) - P(1,20)*PS11 + P(10,20)*PS6 + P(11,20)*PS7 + P(12,20)*PS9 - P(2,20)*PS12 - P(3,20)*PS13; +nextP(1,20) = P(0,20)*PS11 + P(1,20) - P(10,20)*PS34 + P(11,20)*PS9 - P(12,20)*PS7 + P(2,20)*PS13 - P(3,20)*PS12; +nextP(2,20) = P(0,20)*PS12 - P(1,20)*PS13 - P(10,20)*PS9 - P(11,20)*PS34 + P(12,20)*PS6 + P(2,20) + P(3,20)*PS11; +nextP(3,20) = P(0,20)*PS13 + P(1,20)*PS12 + P(10,20)*PS7 - P(11,20)*PS6 - P(12,20)*PS34 - P(2,20)*PS11 + P(3,20); +nextP(4,20) = P(0,20)*PS174 + P(1,20)*PS173 + P(13,20)*PS43 + P(14,20)*PS172 - P(15,20)*PS171 + P(2,20)*PS175 - P(3,20)*PS176 + P(4,20); +nextP(5,20) = -P(0,20)*PS202 - P(1,20)*PS204 - P(13,20)*PS193 + P(14,20)*PS75 + P(15,20)*PS190 + P(2,20)*PS201 + P(3,20)*PS203 + P(5,20); +nextP(6,20) = P(0,20)*PS216 + P(1,20)*PS217 + P(13,20)*PS199 - P(14,20)*PS197 + P(15,20)*PS87 - P(2,20)*PS214 + P(3,20)*PS215 + P(6,20); +nextP(7,20) = P(4,20)*dt + P(7,20); +nextP(8,20) = P(5,20)*dt + P(8,20); +nextP(9,20) = P(6,20)*dt + P(9,20); +nextP(10,20) = P(10,20); +nextP(11,20) = P(11,20); +nextP(12,20) = P(12,20); +nextP(13,20) = P(13,20); +nextP(14,20) = P(14,20); +nextP(15,20) = P(15,20); +nextP(16,20) = P(16,20); +nextP(17,20) = P(17,20); +nextP(18,20) = P(18,20); +nextP(19,20) = P(19,20); +nextP(20,20) = P(20,20); +nextP(0,21) = P(0,21) - P(1,21)*PS11 + P(10,21)*PS6 + P(11,21)*PS7 + P(12,21)*PS9 - P(2,21)*PS12 - P(3,21)*PS13; +nextP(1,21) = P(0,21)*PS11 + P(1,21) - P(10,21)*PS34 + P(11,21)*PS9 - P(12,21)*PS7 + P(2,21)*PS13 - P(3,21)*PS12; +nextP(2,21) = P(0,21)*PS12 - P(1,21)*PS13 - P(10,21)*PS9 - P(11,21)*PS34 + P(12,21)*PS6 + P(2,21) + P(3,21)*PS11; +nextP(3,21) = P(0,21)*PS13 + P(1,21)*PS12 + P(10,21)*PS7 - P(11,21)*PS6 - P(12,21)*PS34 - P(2,21)*PS11 + P(3,21); +nextP(4,21) = P(0,21)*PS174 + P(1,21)*PS173 + P(13,21)*PS43 + P(14,21)*PS172 - P(15,21)*PS171 + P(2,21)*PS175 - P(3,21)*PS176 + P(4,21); +nextP(5,21) = -P(0,21)*PS202 - P(1,21)*PS204 - P(13,21)*PS193 + P(14,21)*PS75 + P(15,21)*PS190 + P(2,21)*PS201 + P(3,21)*PS203 + P(5,21); +nextP(6,21) = P(0,21)*PS216 + P(1,21)*PS217 + P(13,21)*PS199 - P(14,21)*PS197 + P(15,21)*PS87 - P(2,21)*PS214 + P(3,21)*PS215 + P(6,21); +nextP(7,21) = P(4,21)*dt + P(7,21); +nextP(8,21) = P(5,21)*dt + P(8,21); +nextP(9,21) = P(6,21)*dt + P(9,21); +nextP(10,21) = P(10,21); +nextP(11,21) = P(11,21); +nextP(12,21) = P(12,21); +nextP(13,21) = P(13,21); +nextP(14,21) = P(14,21); +nextP(15,21) = P(15,21); +nextP(16,21) = P(16,21); +nextP(17,21) = P(17,21); +nextP(18,21) = P(18,21); +nextP(19,21) = P(19,21); +nextP(20,21) = P(20,21); +nextP(21,21) = P(21,21); +nextP(0,22) = P(0,22) - P(1,22)*PS11 + P(10,22)*PS6 + P(11,22)*PS7 + P(12,22)*PS9 - P(2,22)*PS12 - P(3,22)*PS13; +nextP(1,22) = P(0,22)*PS11 + P(1,22) - P(10,22)*PS34 + P(11,22)*PS9 - P(12,22)*PS7 + P(2,22)*PS13 - P(3,22)*PS12; +nextP(2,22) = P(0,22)*PS12 - P(1,22)*PS13 - P(10,22)*PS9 - P(11,22)*PS34 + P(12,22)*PS6 + P(2,22) + P(3,22)*PS11; +nextP(3,22) = P(0,22)*PS13 + P(1,22)*PS12 + P(10,22)*PS7 - P(11,22)*PS6 - P(12,22)*PS34 - P(2,22)*PS11 + P(3,22); +nextP(4,22) = P(0,22)*PS174 + P(1,22)*PS173 + P(13,22)*PS43 + P(14,22)*PS172 - P(15,22)*PS171 + P(2,22)*PS175 - P(3,22)*PS176 + P(4,22); +nextP(5,22) = -P(0,22)*PS202 - P(1,22)*PS204 - P(13,22)*PS193 + P(14,22)*PS75 + P(15,22)*PS190 + P(2,22)*PS201 + P(3,22)*PS203 + P(5,22); +nextP(6,22) = P(0,22)*PS216 + P(1,22)*PS217 + P(13,22)*PS199 - P(14,22)*PS197 + P(15,22)*PS87 - P(2,22)*PS214 + P(3,22)*PS215 + P(6,22); +nextP(7,22) = P(4,22)*dt + P(7,22); +nextP(8,22) = P(5,22)*dt + P(8,22); +nextP(9,22) = P(6,22)*dt + P(9,22); +nextP(10,22) = P(10,22); +nextP(11,22) = P(11,22); +nextP(12,22) = P(12,22); +nextP(13,22) = P(13,22); +nextP(14,22) = P(14,22); +nextP(15,22) = P(15,22); +nextP(16,22) = P(16,22); +nextP(17,22) = P(17,22); +nextP(18,22) = P(18,22); +nextP(19,22) = P(19,22); +nextP(20,22) = P(20,22); +nextP(21,22) = P(21,22); +nextP(22,22) = P(22,22); +nextP(0,23) = P(0,23) - P(1,23)*PS11 + P(10,23)*PS6 + P(11,23)*PS7 + P(12,23)*PS9 - P(2,23)*PS12 - P(3,23)*PS13; +nextP(1,23) = P(0,23)*PS11 + P(1,23) - P(10,23)*PS34 + P(11,23)*PS9 - P(12,23)*PS7 + P(2,23)*PS13 - P(3,23)*PS12; +nextP(2,23) = P(0,23)*PS12 - P(1,23)*PS13 - P(10,23)*PS9 - P(11,23)*PS34 + P(12,23)*PS6 + P(2,23) + P(3,23)*PS11; +nextP(3,23) = P(0,23)*PS13 + P(1,23)*PS12 + P(10,23)*PS7 - P(11,23)*PS6 - P(12,23)*PS34 - P(2,23)*PS11 + P(3,23); +nextP(4,23) = P(0,23)*PS174 + P(1,23)*PS173 + P(13,23)*PS43 + P(14,23)*PS172 - P(15,23)*PS171 + P(2,23)*PS175 - P(3,23)*PS176 + P(4,23); +nextP(5,23) = -P(0,23)*PS202 - P(1,23)*PS204 - P(13,23)*PS193 + P(14,23)*PS75 + P(15,23)*PS190 + P(2,23)*PS201 + P(3,23)*PS203 + P(5,23); +nextP(6,23) = P(0,23)*PS216 + P(1,23)*PS217 + P(13,23)*PS199 - P(14,23)*PS197 + P(15,23)*PS87 - P(2,23)*PS214 + P(3,23)*PS215 + P(6,23); +nextP(7,23) = P(4,23)*dt + P(7,23); +nextP(8,23) = P(5,23)*dt + P(8,23); +nextP(9,23) = P(6,23)*dt + P(9,23); +nextP(10,23) = P(10,23); +nextP(11,23) = P(11,23); +nextP(12,23) = P(12,23); +nextP(13,23) = P(13,23); +nextP(14,23) = P(14,23); +nextP(15,23) = P(15,23); +nextP(16,23) = P(16,23); +nextP(17,23) = P(17,23); +nextP(18,23) = P(18,23); +nextP(19,23) = P(19,23); +nextP(20,23) = P(20,23); +nextP(21,23) = P(21,23); +nextP(22,23) = P(22,23); +nextP(23,23) = P(23,23); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/covariance_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/covariance_generated_compare.cpp new file mode 100644 index 0000000000..6d43e457e3 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/covariance_generated_compare.cpp @@ -0,0 +1,955 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" + +typedef matrix::SquareMatrix SquareMatrix24f; + +inline float sq(float in) { + return in * in; +} + +namespace ecl{ + inline float powf(float x, int exp) + { + float ret; + if (exp > 0) { + ret = x; + for (int count = 1; count < exp; count++) { + ret *= x; + } + return ret; + } else if (exp < 0) { + return 1.0f / ecl::powf(x, -exp); + } + return 1.0f; + } +} + +int main() +{ + // create input data + const float dt = 0.01f; + + for (uint8_t iteration=0; iteration<100; iteration++) { + // quaternion states must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + // up to 1 rad/sec of rate + const float dax = 2.0f * dt * ((float)rand() - 0.5f); + const float day = 2.0f * dt * ((float)rand() - 0.5f); + const float daz = 2.0f * dt * ((float)rand() - 0.5f); + + // up to 2g of accel + const float dvx = 2.0f * 20.0f * dt * ((float)rand() - 0.5f); + const float dvy = 2.0f * 20.0f * dt * ((float)rand() - 0.5f); + const float dvz = 2.0f * 20.0f * dt * ((float)rand() - 0.5f); + + // up to 0.1 rad/sec of gyro bias + const float dax_b = 2.0f * 0.1f * dt * ((float)rand() - 0.5f); + const float day_b = 2.0f * 0.1f * dt * ((float)rand() - 0.5f); + const float daz_b = 2.0f * 0.1f * dt * ((float)rand() - 0.5f); + + // up to 0.5 m/s/s of accel bias + const float dvx_b = 2.0f * 0.5f * dt * ((float)rand() - 0.5f); + const float dvy_b = 2.0f * 0.5f * dt * ((float)rand() - 0.5f); + const float dvz_b = 2.0f * 0.5f * dt * ((float)rand() - 0.5f); + + + const float daxVar = sq(dt * 0.015f); + const float dayVar = daxVar; + const float dazVar = daxVar; + + const float dvxVar = sq(dt * 0.3f); + const float dvyVar = dvxVar; + const float dvzVar = dvxVar; + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 0.01f * 2.0f * ((float)rand() - 0.5f); + } + } + } + + // Equations for covariance matrix prediction, without process noise! + const float PS0 = ecl::powf(q1, 2); + const float PS1 = 0.25F*daxVar; + const float PS2 = ecl::powf(q2, 2); + const float PS3 = 0.25F*dayVar; + const float PS4 = ecl::powf(q3, 2); + const float PS5 = 0.25F*dazVar; + const float PS6 = 0.5F*q1; + const float PS7 = 0.5F*q2; + const float PS8 = P(10,11)*PS7; + const float PS9 = 0.5F*q3; + const float PS10 = P(10,12)*PS9; + const float PS11 = 0.5F*dax - 0.5F*dax_b; + const float PS12 = 0.5F*day - 0.5F*day_b; + const float PS13 = 0.5F*daz - 0.5F*daz_b; + const float PS14 = P(0,10) - P(1,10)*PS11 + P(10,10)*PS6 - P(2,10)*PS12 - P(3,10)*PS13 + PS10 + PS8; + const float PS15 = P(10,11)*PS6; + const float PS16 = P(11,12)*PS9; + const float PS17 = P(0,11) - P(1,11)*PS11 + P(11,11)*PS7 - P(2,11)*PS12 - P(3,11)*PS13 + PS15 + PS16; + const float PS18 = P(10,12)*PS6; + const float PS19 = P(11,12)*PS7; + const float PS20 = P(0,12) - P(1,12)*PS11 + P(12,12)*PS9 - P(2,12)*PS12 - P(3,12)*PS13 + PS18 + PS19; + const float PS21 = P(1,2)*PS12; + const float PS22 = -P(1,3)*PS13; + const float PS23 = P(0,1) - P(1,1)*PS11 + P(1,10)*PS6 + P(1,11)*PS7 + P(1,12)*PS9 - PS21 + PS22; + const float PS24 = -P(1,2)*PS11; + const float PS25 = P(2,3)*PS13; + const float PS26 = P(0,2) + P(2,10)*PS6 + P(2,11)*PS7 + P(2,12)*PS9 - P(2,2)*PS12 + PS24 - PS25; + const float PS27 = P(1,3)*PS11; + const float PS28 = -P(2,3)*PS12; + const float PS29 = P(0,3) + P(3,10)*PS6 + P(3,11)*PS7 + P(3,12)*PS9 - P(3,3)*PS13 - PS27 + PS28; + const float PS30 = P(0,1)*PS11; + const float PS31 = P(0,2)*PS12; + const float PS32 = P(0,3)*PS13; + const float PS33 = P(0,0) + P(0,10)*PS6 + P(0,11)*PS7 + P(0,12)*PS9 - PS30 - PS31 - PS32; + const float PS34 = 0.5F*q0; + const float PS35 = q2*q3; + const float PS36 = q0*q1; + const float PS37 = q1*q3; + const float PS38 = q0*q2; + const float PS39 = q1*q2; + const float PS40 = q0*q3; + const float PS41 = -PS2; + const float PS42 = ecl::powf(q0, 2); + const float PS43 = -PS4 + PS42; + const float PS44 = PS0 + PS41 + PS43; + const float PS45 = P(0,13) - P(1,13)*PS11 + P(10,13)*PS6 + P(11,13)*PS7 + P(12,13)*PS9 - P(2,13)*PS12 - P(3,13)*PS13; + const float PS46 = PS37 + PS38; + const float PS47 = P(0,15) - P(1,15)*PS11 + P(10,15)*PS6 + P(11,15)*PS7 + P(12,15)*PS9 - P(2,15)*PS12 - P(3,15)*PS13; + const float PS48 = 2*PS47; + const float PS49 = dvy - dvy_b; + const float PS50 = dvx - dvx_b; + const float PS51 = dvz - dvz_b; + const float PS52 = PS49*q0 + PS50*q3 - PS51*q1; + const float PS53 = 2*PS29; + const float PS54 = -PS39 + PS40; + const float PS55 = P(0,14) - P(1,14)*PS11 + P(10,14)*PS6 + P(11,14)*PS7 + P(12,14)*PS9 - P(2,14)*PS12 - P(3,14)*PS13; + const float PS56 = 2*PS55; + const float PS57 = -PS49*q3 + PS50*q0 + PS51*q2; + const float PS58 = 2*PS33; + const float PS59 = PS49*q1 - PS50*q2 + PS51*q0; + const float PS60 = 2*PS59; + const float PS61 = PS49*q2 + PS50*q1 + PS51*q3; + const float PS62 = 2*PS61; + const float PS63 = P(0,4) - P(1,4)*PS11 - P(2,4)*PS12 - P(3,4)*PS13 + P(4,10)*PS6 + P(4,11)*PS7 + P(4,12)*PS9; + const float PS64 = -PS0; + const float PS65 = PS2 + PS43 + PS64; + const float PS66 = PS39 + PS40; + const float PS67 = 2*PS45; + const float PS68 = -PS35 + PS36; + const float PS69 = P(0,5) - P(1,5)*PS11 - P(2,5)*PS12 - P(3,5)*PS13 + P(5,10)*PS6 + P(5,11)*PS7 + P(5,12)*PS9; + const float PS70 = PS4 + PS41 + PS42 + PS64; + const float PS71 = PS35 + PS36; + const float PS72 = 2*PS57; + const float PS73 = -PS37 + PS38; + const float PS74 = 2*PS52; + const float PS75 = P(0,6) - P(1,6)*PS11 - P(2,6)*PS12 - P(3,6)*PS13 + P(6,10)*PS6 + P(6,11)*PS7 + P(6,12)*PS9; + const float PS76 = -P(10,11)*PS34; + const float PS77 = P(0,11)*PS11 + P(1,11) + P(11,11)*PS9 + P(2,11)*PS13 - P(3,11)*PS12 - PS19 + PS76; + const float PS78 = P(0,2)*PS13; + const float PS79 = P(0,3)*PS12; + const float PS80 = P(0,0)*PS11 + P(0,1) - P(0,10)*PS34 + P(0,11)*PS9 - P(0,12)*PS7 + PS78 - PS79; + const float PS81 = P(0,2)*PS11; + const float PS82 = P(1,2) - P(2,10)*PS34 + P(2,11)*PS9 - P(2,12)*PS7 + P(2,2)*PS13 + PS28 + PS81; + const float PS83 = P(10,11)*PS9; + const float PS84 = P(10,12)*PS7; + const float PS85 = P(0,10)*PS11 + P(1,10) - P(10,10)*PS34 + P(2,10)*PS13 - P(3,10)*PS12 + PS83 - PS84; + const float PS86 = -P(10,12)*PS34; + const float PS87 = P(0,12)*PS11 + P(1,12) - P(12,12)*PS7 + P(2,12)*PS13 - P(3,12)*PS12 + PS16 + PS86; + const float PS88 = P(0,3)*PS11; + const float PS89 = P(1,3) - P(3,10)*PS34 + P(3,11)*PS9 - P(3,12)*PS7 - P(3,3)*PS12 + PS25 + PS88; + const float PS90 = P(1,2)*PS13; + const float PS91 = P(1,3)*PS12; + const float PS92 = P(1,1) - P(1,10)*PS34 + P(1,11)*PS9 - P(1,12)*PS7 + PS30 + PS90 - PS91; + const float PS93 = P(0,13)*PS11 + P(1,13) - P(10,13)*PS34 + P(11,13)*PS9 - P(12,13)*PS7 + P(2,13)*PS13 - P(3,13)*PS12; + const float PS94 = P(0,15)*PS11 + P(1,15) - P(10,15)*PS34 + P(11,15)*PS9 - P(12,15)*PS7 + P(2,15)*PS13 - P(3,15)*PS12; + const float PS95 = 2*PS94; + const float PS96 = P(0,14)*PS11 + P(1,14) - P(10,14)*PS34 + P(11,14)*PS9 - P(12,14)*PS7 + P(2,14)*PS13 - P(3,14)*PS12; + const float PS97 = 2*PS96; + const float PS98 = P(0,4)*PS11 + P(1,4) + P(2,4)*PS13 - P(3,4)*PS12 - P(4,10)*PS34 + P(4,11)*PS9 - P(4,12)*PS7; + const float PS99 = 2*PS93; + const float PS100 = P(0,5)*PS11 + P(1,5) + P(2,5)*PS13 - P(3,5)*PS12 - P(5,10)*PS34 + P(5,11)*PS9 - P(5,12)*PS7; + const float PS101 = P(0,6)*PS11 + P(1,6) + P(2,6)*PS13 - P(3,6)*PS12 - P(6,10)*PS34 + P(6,11)*PS9 - P(6,12)*PS7; + const float PS102 = -P(11,12)*PS34; + const float PS103 = P(0,12)*PS12 - P(1,12)*PS13 + P(12,12)*PS6 + P(2,12) + P(3,12)*PS11 - PS10 + PS102; + const float PS104 = P(2,3) - P(3,10)*PS9 - P(3,11)*PS34 + P(3,12)*PS6 + P(3,3)*PS11 + PS22 + PS79; + const float PS105 = P(0,1)*PS13; + const float PS106 = P(0,0)*PS12 - P(0,10)*PS9 - P(0,11)*PS34 + P(0,12)*PS6 + P(0,2) - PS105 + PS88; + const float PS107 = P(11,12)*PS6; + const float PS108 = P(0,11)*PS12 - P(1,11)*PS13 - P(11,11)*PS34 + P(2,11) + P(3,11)*PS11 + PS107 - PS83; + const float PS109 = P(0,10)*PS12 - P(1,10)*PS13 - P(10,10)*PS9 + P(2,10) + P(3,10)*PS11 + PS18 + PS76; + const float PS110 = P(0,1)*PS12; + const float PS111 = -P(1,1)*PS13 - P(1,10)*PS9 - P(1,11)*PS34 + P(1,12)*PS6 + P(1,2) + PS110 + PS27; + const float PS112 = P(2,3)*PS11; + const float PS113 = -P(2,10)*PS9 - P(2,11)*PS34 + P(2,12)*PS6 + P(2,2) + PS112 + PS31 - PS90; + const float PS114 = P(0,13)*PS12 - P(1,13)*PS13 - P(10,13)*PS9 - P(11,13)*PS34 + P(12,13)*PS6 + P(2,13) + P(3,13)*PS11; + const float PS115 = P(0,15)*PS12 - P(1,15)*PS13 - P(10,15)*PS9 - P(11,15)*PS34 + P(12,15)*PS6 + P(2,15) + P(3,15)*PS11; + const float PS116 = 2*PS115; + const float PS117 = P(0,14)*PS12 - P(1,14)*PS13 - P(10,14)*PS9 - P(11,14)*PS34 + P(12,14)*PS6 + P(2,14) + P(3,14)*PS11; + const float PS118 = 2*PS117; + const float PS119 = P(0,4)*PS12 - P(1,4)*PS13 + P(2,4) + P(3,4)*PS11 - P(4,10)*PS9 - P(4,11)*PS34 + P(4,12)*PS6; + const float PS120 = 2*PS114; + const float PS121 = P(0,5)*PS12 - P(1,5)*PS13 + P(2,5) + P(3,5)*PS11 - P(5,10)*PS9 - P(5,11)*PS34 + P(5,12)*PS6; + const float PS122 = P(0,6)*PS12 - P(1,6)*PS13 + P(2,6) + P(3,6)*PS11 - P(6,10)*PS9 - P(6,11)*PS34 + P(6,12)*PS6; + const float PS123 = P(0,10)*PS13 + P(1,10)*PS12 + P(10,10)*PS7 - P(2,10)*PS11 + P(3,10) - PS15 + PS86; + const float PS124 = P(1,1)*PS12 + P(1,10)*PS7 - P(1,11)*PS6 - P(1,12)*PS34 + P(1,3) + PS105 + PS24; + const float PS125 = P(0,0)*PS13 + P(0,10)*PS7 - P(0,11)*PS6 - P(0,12)*PS34 + P(0,3) + PS110 - PS81; + const float PS126 = P(0,12)*PS13 + P(1,12)*PS12 - P(12,12)*PS34 - P(2,12)*PS11 + P(3,12) - PS107 + PS84; + const float PS127 = P(0,11)*PS13 + P(1,11)*PS12 - P(11,11)*PS6 - P(2,11)*PS11 + P(3,11) + PS102 + PS8; + const float PS128 = P(2,10)*PS7 - P(2,11)*PS6 - P(2,12)*PS34 - P(2,2)*PS11 + P(2,3) + PS21 + PS78; + const float PS129 = P(3,10)*PS7 - P(3,11)*PS6 - P(3,12)*PS34 + P(3,3) - PS112 + PS32 + PS91; + const float PS130 = P(0,13)*PS13 + P(1,13)*PS12 + P(10,13)*PS7 - P(11,13)*PS6 - P(12,13)*PS34 - P(2,13)*PS11 + P(3,13); + const float PS131 = P(0,15)*PS13 + P(1,15)*PS12 + P(10,15)*PS7 - P(11,15)*PS6 - P(12,15)*PS34 - P(2,15)*PS11 + P(3,15); + const float PS132 = 2*PS131; + const float PS133 = P(0,14)*PS13 + P(1,14)*PS12 + P(10,14)*PS7 - P(11,14)*PS6 - P(12,14)*PS34 - P(2,14)*PS11 + P(3,14); + const float PS134 = 2*PS133; + const float PS135 = P(0,4)*PS13 + P(1,4)*PS12 - P(2,4)*PS11 + P(3,4) + P(4,10)*PS7 - P(4,11)*PS6 - P(4,12)*PS34; + const float PS136 = 2*PS130; + const float PS137 = P(0,5)*PS13 + P(1,5)*PS12 - P(2,5)*PS11 + P(3,5) + P(5,10)*PS7 - P(5,11)*PS6 - P(5,12)*PS34; + const float PS138 = P(0,6)*PS13 + P(1,6)*PS12 - P(2,6)*PS11 + P(3,6) + P(6,10)*PS7 - P(6,11)*PS6 - P(6,12)*PS34; + const float PS139 = 2*PS46; + const float PS140 = 2*PS54; + const float PS141 = P(0,13)*PS72 + P(1,13)*PS62 - P(13,13)*PS44 + P(13,14)*PS140 - P(13,15)*PS139 + P(2,13)*PS60 - P(3,13)*PS74 + P(4,13); + const float PS142 = P(0,15)*PS72 + P(1,15)*PS62 - P(13,15)*PS44 + P(14,15)*PS140 - P(15,15)*PS139 + P(2,15)*PS60 - P(3,15)*PS74 + P(4,15); + const float PS143 = P(1,3)*PS62; + const float PS144 = P(0,3)*PS72; + const float PS145 = P(2,3)*PS60 - P(3,13)*PS44 + P(3,14)*PS140 - P(3,15)*PS139 - P(3,3)*PS74 + P(3,4) + PS143 + PS144; + const float PS146 = P(0,14)*PS72 + P(1,14)*PS62 - P(13,14)*PS44 + P(14,14)*PS140 - P(14,15)*PS139 + P(2,14)*PS60 - P(3,14)*PS74 + P(4,14); + const float PS147 = P(0,2)*PS60; + const float PS148 = P(0,3)*PS74; + const float PS149 = P(0,0)*PS72 + P(0,1)*PS62 - P(0,13)*PS44 + P(0,14)*PS140 - P(0,15)*PS139 + P(0,4) + PS147 - PS148; + const float PS150 = P(1,2)*PS62; + const float PS151 = P(0,2)*PS72; + const float PS152 = -P(2,13)*PS44 + P(2,14)*PS140 - P(2,15)*PS139 + P(2,2)*PS60 - P(2,3)*PS74 + P(2,4) + PS150 + PS151; + const float PS153 = P(1,2)*PS60; + const float PS154 = P(1,3)*PS74; + const float PS155 = P(0,1)*PS72 + P(1,1)*PS62 - P(1,13)*PS44 + P(1,14)*PS140 - P(1,15)*PS139 + P(1,4) + PS153 - PS154; + const float PS156 = 4*dvyVar; + const float PS157 = 4*dvzVar; + const float PS158 = P(0,4)*PS72 + P(1,4)*PS62 + P(2,4)*PS60 - P(3,4)*PS74 - P(4,13)*PS44 + P(4,14)*PS140 - P(4,15)*PS139 + P(4,4); + const float PS159 = 2*PS141; + const float PS160 = 2*PS68; + const float PS161 = PS65*dvyVar; + const float PS162 = 2*PS66; + const float PS163 = PS44*dvxVar; + const float PS164 = P(0,5)*PS72 + P(1,5)*PS62 + P(2,5)*PS60 - P(3,5)*PS74 + P(4,5) - P(5,13)*PS44 + P(5,14)*PS140 - P(5,15)*PS139; + const float PS165 = 2*PS71; + const float PS166 = 2*PS73; + const float PS167 = PS70*dvzVar; + const float PS168 = P(0,6)*PS72 + P(1,6)*PS62 + P(2,6)*PS60 - P(3,6)*PS74 + P(4,6) - P(6,13)*PS44 + P(6,14)*PS140 - P(6,15)*PS139; + const float PS169 = P(0,14)*PS74 - P(1,14)*PS60 - P(13,14)*PS162 - P(14,14)*PS65 + P(14,15)*PS160 + P(2,14)*PS62 + P(3,14)*PS72 + P(5,14); + const float PS170 = P(0,13)*PS74 - P(1,13)*PS60 - P(13,13)*PS162 - P(13,14)*PS65 + P(13,15)*PS160 + P(2,13)*PS62 + P(3,13)*PS72 + P(5,13); + const float PS171 = P(0,1)*PS74; + const float PS172 = -P(1,1)*PS60 - P(1,13)*PS162 - P(1,14)*PS65 + P(1,15)*PS160 + P(1,3)*PS72 + P(1,5) + PS150 + PS171; + const float PS173 = P(0,15)*PS74 - P(1,15)*PS60 - P(13,15)*PS162 - P(14,15)*PS65 + P(15,15)*PS160 + P(2,15)*PS62 + P(3,15)*PS72 + P(5,15); + const float PS174 = P(2,3)*PS62; + const float PS175 = -P(1,3)*PS60 - P(3,13)*PS162 - P(3,14)*PS65 + P(3,15)*PS160 + P(3,3)*PS72 + P(3,5) + PS148 + PS174; + const float PS176 = P(0,1)*PS60; + const float PS177 = P(0,0)*PS74 - P(0,13)*PS162 - P(0,14)*PS65 + P(0,15)*PS160 + P(0,2)*PS62 + P(0,5) + PS144 - PS176; + const float PS178 = P(2,3)*PS72; + const float PS179 = P(0,2)*PS74 - P(2,13)*PS162 - P(2,14)*PS65 + P(2,15)*PS160 + P(2,2)*PS62 + P(2,5) - PS153 + PS178; + const float PS180 = 4*dvxVar; + const float PS181 = P(0,5)*PS74 - P(1,5)*PS60 + P(2,5)*PS62 + P(3,5)*PS72 - P(5,13)*PS162 - P(5,14)*PS65 + P(5,15)*PS160 + P(5,5); + const float PS182 = P(0,6)*PS74 - P(1,6)*PS60 + P(2,6)*PS62 + P(3,6)*PS72 + P(5,6) - P(6,13)*PS162 - P(6,14)*PS65 + P(6,15)*PS160; + const float PS183 = P(0,15)*PS60 + P(1,15)*PS74 + P(13,15)*PS166 - P(14,15)*PS165 - P(15,15)*PS70 - P(2,15)*PS72 + P(3,15)*PS62 + P(6,15); + const float PS184 = P(0,14)*PS60 + P(1,14)*PS74 + P(13,14)*PS166 - P(14,14)*PS165 - P(14,15)*PS70 - P(2,14)*PS72 + P(3,14)*PS62 + P(6,14); + const float PS185 = P(0,13)*PS60 + P(1,13)*PS74 + P(13,13)*PS166 - P(13,14)*PS165 - P(13,15)*PS70 - P(2,13)*PS72 + P(3,13)*PS62 + P(6,13); + const float PS186 = P(0,6)*PS60 + P(1,6)*PS74 - P(2,6)*PS72 + P(3,6)*PS62 + P(6,13)*PS166 - P(6,14)*PS165 - P(6,15)*PS70 + P(6,6); + + SquareMatrix24f nextP; + + nextP(0,0) = PS0*PS1 - PS11*PS23 - PS12*PS26 - PS13*PS29 + PS14*PS6 + PS17*PS7 + PS2*PS3 + PS20*PS9 + PS33 + PS4*PS5; + nextP(0,1) = -PS1*PS36 + PS11*PS33 - PS12*PS29 + PS13*PS26 - PS14*PS34 + PS17*PS9 - PS20*PS7 + PS23 + PS3*PS35 - PS35*PS5; + nextP(1,1) = PS1*PS42 + PS11*PS80 - PS12*PS89 + PS13*PS82 + PS2*PS5 + PS3*PS4 - PS34*PS85 - PS7*PS87 + PS77*PS9 + PS92; + nextP(0,2) = -PS1*PS37 + PS11*PS29 + PS12*PS33 - PS13*PS23 - PS14*PS9 - PS17*PS34 + PS20*PS6 + PS26 - PS3*PS38 + PS37*PS5; + nextP(1,2) = PS1*PS40 + PS11*PS89 + PS12*PS80 - PS13*PS92 - PS3*PS40 - PS34*PS77 - PS39*PS5 + PS6*PS87 + PS82 - PS85*PS9; + nextP(2,2) = PS0*PS5 + PS1*PS4 + PS103*PS6 + PS104*PS11 + PS106*PS12 - PS108*PS34 - PS109*PS9 - PS111*PS13 + PS113 + PS3*PS42; + nextP(0,3) = PS1*PS39 - PS11*PS26 + PS12*PS23 + PS13*PS33 + PS14*PS7 - PS17*PS6 - PS20*PS34 + PS29 - PS3*PS39 - PS40*PS5; + nextP(1,3) = -PS1*PS38 - PS11*PS82 + PS12*PS92 + PS13*PS80 - PS3*PS37 - PS34*PS87 + PS38*PS5 - PS6*PS77 + PS7*PS85 + PS89; + nextP(2,3) = -PS1*PS35 - PS103*PS34 + PS104 + PS106*PS13 - PS108*PS6 + PS109*PS7 - PS11*PS113 + PS111*PS12 + PS3*PS36 - PS36*PS5; + nextP(3,3) = PS0*PS3 + PS1*PS2 - PS11*PS128 + PS12*PS124 + PS123*PS7 + PS125*PS13 - PS126*PS34 - PS127*PS6 + PS129 + PS42*PS5; + nextP(0,4) = PS23*PS62 + PS26*PS60 - PS44*PS45 - PS46*PS48 - PS52*PS53 + PS54*PS56 + PS57*PS58 + PS63; + nextP(1,4) = -PS44*PS93 - PS46*PS95 + PS54*PS97 + PS60*PS82 + PS62*PS92 + PS72*PS80 - PS74*PS89 + PS98; + nextP(2,4) = -PS104*PS74 + PS106*PS72 + PS111*PS62 + PS113*PS60 - PS114*PS44 - PS116*PS46 + PS118*PS54 + PS119; + nextP(3,4) = PS124*PS62 + PS125*PS72 + PS128*PS60 - PS129*PS74 - PS130*PS44 - PS132*PS46 + PS134*PS54 + PS135; + nextP(4,4) = -PS139*PS142 + PS140*PS146 - PS141*PS44 - PS145*PS74 + PS149*PS72 + PS152*PS60 + PS155*PS62 + PS156*ecl::powf(PS54, 2) + PS157*ecl::powf(PS46, 2) + PS158 + ecl::powf(PS44, 2)*dvxVar; + nextP(0,5) = -PS23*PS60 + PS26*PS62 + PS48*PS68 + PS52*PS58 + PS53*PS57 - PS55*PS65 - PS66*PS67 + PS69; + nextP(1,5) = PS100 - PS60*PS92 + PS62*PS82 - PS65*PS96 - PS66*PS99 + PS68*PS95 + PS72*PS89 + PS74*PS80; + nextP(2,5) = PS104*PS72 + PS106*PS74 - PS111*PS60 + PS113*PS62 + PS116*PS68 - PS117*PS65 - PS120*PS66 + PS121; + nextP(3,5) = -PS124*PS60 + PS125*PS74 + PS128*PS62 + PS129*PS72 + PS132*PS68 - PS133*PS65 - PS136*PS66 + PS137; + nextP(4,5) = -PS140*PS161 + PS142*PS160 + PS145*PS72 - PS146*PS65 + PS149*PS74 + PS152*PS62 - PS155*PS60 - PS157*PS46*PS68 - PS159*PS66 + PS162*PS163 + PS164; + nextP(5,5) = PS157*ecl::powf(PS68, 2) + PS160*PS173 - PS162*PS170 - PS169*PS65 - PS172*PS60 + PS175*PS72 + PS177*PS74 + PS179*PS62 + PS180*ecl::powf(PS66, 2) + PS181 + ecl::powf(PS65, 2)*dvyVar; + nextP(0,6) = PS23*PS74 - PS26*PS72 - PS47*PS70 + PS53*PS61 - PS56*PS71 + PS58*PS59 + PS67*PS73 + PS75; + nextP(1,6) = PS101 + PS60*PS80 + PS62*PS89 - PS70*PS94 - PS71*PS97 - PS72*PS82 + PS73*PS99 + PS74*PS92; + nextP(2,6) = PS104*PS62 + PS106*PS60 + PS111*PS74 - PS113*PS72 - PS115*PS70 - PS118*PS71 + PS120*PS73 + PS122; + nextP(3,6) = PS124*PS74 + PS125*PS60 - PS128*PS72 + PS129*PS62 - PS131*PS70 - PS134*PS71 + PS136*PS73 + PS138; + nextP(4,6) = PS139*PS167 - PS142*PS70 + PS145*PS62 - PS146*PS165 + PS149*PS60 - PS152*PS72 + PS155*PS74 - PS156*PS54*PS71 + PS159*PS73 - PS163*PS166 + PS168; + nextP(5,6) = -PS160*PS167 + PS161*PS165 - PS165*PS169 + PS166*PS170 + PS172*PS74 - PS173*PS70 + PS175*PS62 + PS177*PS60 - PS179*PS72 - PS180*PS66*PS73 + PS182; + nextP(6,6) = PS156*ecl::powf(PS71, 2) - PS165*PS184 + PS166*PS185 + PS180*ecl::powf(PS73, 2) - PS183*PS70 + PS186 + PS60*(P(0,0)*PS60 + P(0,13)*PS166 - P(0,14)*PS165 - P(0,15)*PS70 + P(0,3)*PS62 + P(0,6) - PS151 + PS171) + PS62*(P(0,3)*PS60 + P(3,13)*PS166 - P(3,14)*PS165 - P(3,15)*PS70 + P(3,3)*PS62 + P(3,6) + PS154 - PS178) + ecl::powf(PS70, 2)*dvzVar - PS72*(P(1,2)*PS74 + P(2,13)*PS166 - P(2,14)*PS165 - P(2,15)*PS70 - P(2,2)*PS72 + P(2,6) + PS147 + PS174) + PS74*(P(1,1)*PS74 + P(1,13)*PS166 - P(1,14)*PS165 - P(1,15)*PS70 - P(1,2)*PS72 + P(1,6) + PS143 + PS176); + nextP(0,7) = P(0,7) - P(1,7)*PS11 - P(2,7)*PS12 - P(3,7)*PS13 + P(7,10)*PS6 + P(7,11)*PS7 + P(7,12)*PS9 + PS63*dt; + nextP(1,7) = P(0,7)*PS11 + P(1,7) + P(2,7)*PS13 - P(3,7)*PS12 - P(7,10)*PS34 + P(7,11)*PS9 - P(7,12)*PS7 + PS98*dt; + nextP(2,7) = P(0,7)*PS12 - P(1,7)*PS13 + P(2,7) + P(3,7)*PS11 - P(7,10)*PS9 - P(7,11)*PS34 + P(7,12)*PS6 + PS119*dt; + nextP(3,7) = P(0,7)*PS13 + P(1,7)*PS12 - P(2,7)*PS11 + P(3,7) + P(7,10)*PS7 - P(7,11)*PS6 - P(7,12)*PS34 + PS135*dt; + nextP(4,7) = P(0,7)*PS72 + P(1,7)*PS62 + P(2,7)*PS60 - P(3,7)*PS74 + P(4,7) - P(7,13)*PS44 + P(7,14)*PS140 - P(7,15)*PS139 + PS158*dt; + nextP(5,7) = P(0,7)*PS74 - P(1,7)*PS60 + P(2,7)*PS62 + P(3,7)*PS72 + P(5,7) - P(7,13)*PS162 - P(7,14)*PS65 + P(7,15)*PS160 + dt*(P(0,4)*PS74 - P(1,4)*PS60 + P(2,4)*PS62 + P(3,4)*PS72 - P(4,13)*PS162 - P(4,14)*PS65 + P(4,15)*PS160 + P(4,5)); + nextP(6,7) = P(0,7)*PS60 + P(1,7)*PS74 - P(2,7)*PS72 + P(3,7)*PS62 + P(6,7) + P(7,13)*PS166 - P(7,14)*PS165 - P(7,15)*PS70 + dt*(P(0,4)*PS60 + P(1,4)*PS74 - P(2,4)*PS72 + P(3,4)*PS62 + P(4,13)*PS166 - P(4,14)*PS165 - P(4,15)*PS70 + P(4,6)); + nextP(7,7) = P(4,7)*dt + P(7,7) + dt*(P(4,4)*dt + P(4,7)); + nextP(0,8) = P(0,8) - P(1,8)*PS11 - P(2,8)*PS12 - P(3,8)*PS13 + P(8,10)*PS6 + P(8,11)*PS7 + P(8,12)*PS9 + PS69*dt; + nextP(1,8) = P(0,8)*PS11 + P(1,8) + P(2,8)*PS13 - P(3,8)*PS12 - P(8,10)*PS34 + P(8,11)*PS9 - P(8,12)*PS7 + PS100*dt; + nextP(2,8) = P(0,8)*PS12 - P(1,8)*PS13 + P(2,8) + P(3,8)*PS11 - P(8,10)*PS9 - P(8,11)*PS34 + P(8,12)*PS6 + PS121*dt; + nextP(3,8) = P(0,8)*PS13 + P(1,8)*PS12 - P(2,8)*PS11 + P(3,8) + P(8,10)*PS7 - P(8,11)*PS6 - P(8,12)*PS34 + PS137*dt; + nextP(4,8) = P(0,8)*PS72 + P(1,8)*PS62 + P(2,8)*PS60 - P(3,8)*PS74 + P(4,8) - P(8,13)*PS44 + P(8,14)*PS140 - P(8,15)*PS139 + PS164*dt; + nextP(5,8) = P(0,8)*PS74 - P(1,8)*PS60 + P(2,8)*PS62 + P(3,8)*PS72 + P(5,8) - P(8,13)*PS162 - P(8,14)*PS65 + P(8,15)*PS160 + PS181*dt; + nextP(6,8) = P(0,8)*PS60 + P(1,8)*PS74 - P(2,8)*PS72 + P(3,8)*PS62 + P(6,8) + P(8,13)*PS166 - P(8,14)*PS165 - P(8,15)*PS70 + dt*(P(0,5)*PS60 + P(1,5)*PS74 - P(2,5)*PS72 + P(3,5)*PS62 + P(5,13)*PS166 - P(5,14)*PS165 - P(5,15)*PS70 + P(5,6)); + nextP(7,8) = P(4,8)*dt + P(7,8) + dt*(P(4,5)*dt + P(5,7)); + nextP(8,8) = P(5,8)*dt + P(8,8) + dt*(P(5,5)*dt + P(5,8)); + nextP(0,9) = P(0,9) - P(1,9)*PS11 - P(2,9)*PS12 - P(3,9)*PS13 + P(9,10)*PS6 + P(9,11)*PS7 + P(9,12)*PS9 + PS75*dt; + nextP(1,9) = P(0,9)*PS11 + P(1,9) + P(2,9)*PS13 - P(3,9)*PS12 - P(9,10)*PS34 + P(9,11)*PS9 - P(9,12)*PS7 + PS101*dt; + nextP(2,9) = P(0,9)*PS12 - P(1,9)*PS13 + P(2,9) + P(3,9)*PS11 - P(9,10)*PS9 - P(9,11)*PS34 + P(9,12)*PS6 + PS122*dt; + nextP(3,9) = P(0,9)*PS13 + P(1,9)*PS12 - P(2,9)*PS11 + P(3,9) + P(9,10)*PS7 - P(9,11)*PS6 - P(9,12)*PS34 + PS138*dt; + nextP(4,9) = P(0,9)*PS72 + P(1,9)*PS62 + P(2,9)*PS60 - P(3,9)*PS74 + P(4,9) - P(9,13)*PS44 + P(9,14)*PS140 - P(9,15)*PS139 + PS168*dt; + nextP(5,9) = P(0,9)*PS74 - P(1,9)*PS60 + P(2,9)*PS62 + P(3,9)*PS72 + P(5,9) - P(9,13)*PS162 - P(9,14)*PS65 + P(9,15)*PS160 + PS182*dt; + nextP(6,9) = P(0,9)*PS60 + P(1,9)*PS74 - P(2,9)*PS72 + P(3,9)*PS62 + P(6,9) + P(9,13)*PS166 - P(9,14)*PS165 - P(9,15)*PS70 + PS186*dt; + nextP(7,9) = P(4,9)*dt + P(7,9) + dt*(P(4,6)*dt + P(6,7)); + nextP(8,9) = P(5,9)*dt + P(8,9) + dt*(P(5,6)*dt + P(6,8)); + nextP(9,9) = P(6,9)*dt + P(9,9) + dt*(P(6,6)*dt + P(6,9)); + nextP(0,10) = PS14; + nextP(1,10) = PS85; + nextP(2,10) = PS109; + nextP(3,10) = PS123; + nextP(4,10) = P(0,10)*PS72 + P(1,10)*PS62 - P(10,13)*PS44 + P(10,14)*PS140 - P(10,15)*PS139 + P(2,10)*PS60 - P(3,10)*PS74 + P(4,10); + nextP(5,10) = P(0,10)*PS74 - P(1,10)*PS60 - P(10,13)*PS162 - P(10,14)*PS65 + P(10,15)*PS160 + P(2,10)*PS62 + P(3,10)*PS72 + P(5,10); + nextP(6,10) = P(0,10)*PS60 + P(1,10)*PS74 + P(10,13)*PS166 - P(10,14)*PS165 - P(10,15)*PS70 - P(2,10)*PS72 + P(3,10)*PS62 + P(6,10); + nextP(7,10) = P(4,10)*dt + P(7,10); + nextP(8,10) = P(5,10)*dt + P(8,10); + nextP(9,10) = P(6,10)*dt + P(9,10); + nextP(10,10) = P(10,10); + nextP(0,11) = PS17; + nextP(1,11) = PS77; + nextP(2,11) = PS108; + nextP(3,11) = PS127; + nextP(4,11) = P(0,11)*PS72 + P(1,11)*PS62 - P(11,13)*PS44 + P(11,14)*PS140 - P(11,15)*PS139 + P(2,11)*PS60 - P(3,11)*PS74 + P(4,11); + nextP(5,11) = P(0,11)*PS74 - P(1,11)*PS60 - P(11,13)*PS162 - P(11,14)*PS65 + P(11,15)*PS160 + P(2,11)*PS62 + P(3,11)*PS72 + P(5,11); + nextP(6,11) = P(0,11)*PS60 + P(1,11)*PS74 + P(11,13)*PS166 - P(11,14)*PS165 - P(11,15)*PS70 - P(2,11)*PS72 + P(3,11)*PS62 + P(6,11); + nextP(7,11) = P(4,11)*dt + P(7,11); + nextP(8,11) = P(5,11)*dt + P(8,11); + nextP(9,11) = P(6,11)*dt + P(9,11); + nextP(10,11) = P(10,11); + nextP(11,11) = P(11,11); + nextP(0,12) = PS20; + nextP(1,12) = PS87; + nextP(2,12) = PS103; + nextP(3,12) = PS126; + nextP(4,12) = P(0,12)*PS72 + P(1,12)*PS62 - P(12,13)*PS44 + P(12,14)*PS140 - P(12,15)*PS139 + P(2,12)*PS60 - P(3,12)*PS74 + P(4,12); + nextP(5,12) = P(0,12)*PS74 - P(1,12)*PS60 - P(12,13)*PS162 - P(12,14)*PS65 + P(12,15)*PS160 + P(2,12)*PS62 + P(3,12)*PS72 + P(5,12); + nextP(6,12) = P(0,12)*PS60 + P(1,12)*PS74 + P(12,13)*PS166 - P(12,14)*PS165 - P(12,15)*PS70 - P(2,12)*PS72 + P(3,12)*PS62 + P(6,12); + nextP(7,12) = P(4,12)*dt + P(7,12); + nextP(8,12) = P(5,12)*dt + P(8,12); + nextP(9,12) = P(6,12)*dt + P(9,12); + nextP(10,12) = P(10,12); + nextP(11,12) = P(11,12); + nextP(12,12) = P(12,12); + nextP(0,13) = PS45; + nextP(1,13) = PS93; + nextP(2,13) = PS114; + nextP(3,13) = PS130; + nextP(4,13) = PS141; + nextP(5,13) = PS170; + nextP(6,13) = PS185; + nextP(7,13) = P(4,13)*dt + P(7,13); + nextP(8,13) = P(5,13)*dt + P(8,13); + nextP(9,13) = P(6,13)*dt + P(9,13); + nextP(10,13) = P(10,13); + nextP(11,13) = P(11,13); + nextP(12,13) = P(12,13); + nextP(13,13) = P(13,13); + nextP(0,14) = PS55; + nextP(1,14) = PS96; + nextP(2,14) = PS117; + nextP(3,14) = PS133; + nextP(4,14) = PS146; + nextP(5,14) = PS169; + nextP(6,14) = PS184; + nextP(7,14) = P(4,14)*dt + P(7,14); + nextP(8,14) = P(5,14)*dt + P(8,14); + nextP(9,14) = P(6,14)*dt + P(9,14); + nextP(10,14) = P(10,14); + nextP(11,14) = P(11,14); + nextP(12,14) = P(12,14); + nextP(13,14) = P(13,14); + nextP(14,14) = P(14,14); + nextP(0,15) = PS47; + nextP(1,15) = PS94; + nextP(2,15) = PS115; + nextP(3,15) = PS131; + nextP(4,15) = PS142; + nextP(5,15) = PS173; + nextP(6,15) = PS183; + nextP(7,15) = P(4,15)*dt + P(7,15); + nextP(8,15) = P(5,15)*dt + P(8,15); + nextP(9,15) = P(6,15)*dt + P(9,15); + nextP(10,15) = P(10,15); + nextP(11,15) = P(11,15); + nextP(12,15) = P(12,15); + nextP(13,15) = P(13,15); + nextP(14,15) = P(14,15); + nextP(15,15) = P(15,15); + nextP(0,16) = P(0,16) - P(1,16)*PS11 + P(10,16)*PS6 + P(11,16)*PS7 + P(12,16)*PS9 - P(2,16)*PS12 - P(3,16)*PS13; + nextP(1,16) = P(0,16)*PS11 + P(1,16) - P(10,16)*PS34 + P(11,16)*PS9 - P(12,16)*PS7 + P(2,16)*PS13 - P(3,16)*PS12; + nextP(2,16) = P(0,16)*PS12 - P(1,16)*PS13 - P(10,16)*PS9 - P(11,16)*PS34 + P(12,16)*PS6 + P(2,16) + P(3,16)*PS11; + nextP(3,16) = P(0,16)*PS13 + P(1,16)*PS12 + P(10,16)*PS7 - P(11,16)*PS6 - P(12,16)*PS34 - P(2,16)*PS11 + P(3,16); + nextP(4,16) = P(0,16)*PS72 + P(1,16)*PS62 - P(13,16)*PS44 + P(14,16)*PS140 - P(15,16)*PS139 + P(2,16)*PS60 - P(3,16)*PS74 + P(4,16); + nextP(5,16) = P(0,16)*PS74 - P(1,16)*PS60 - P(13,16)*PS162 - P(14,16)*PS65 + P(15,16)*PS160 + P(2,16)*PS62 + P(3,16)*PS72 + P(5,16); + nextP(6,16) = P(0,16)*PS60 + P(1,16)*PS74 + P(13,16)*PS166 - P(14,16)*PS165 - P(15,16)*PS70 - P(2,16)*PS72 + P(3,16)*PS62 + P(6,16); + nextP(7,16) = P(4,16)*dt + P(7,16); + nextP(8,16) = P(5,16)*dt + P(8,16); + nextP(9,16) = P(6,16)*dt + P(9,16); + nextP(10,16) = P(10,16); + nextP(11,16) = P(11,16); + nextP(12,16) = P(12,16); + nextP(13,16) = P(13,16); + nextP(14,16) = P(14,16); + nextP(15,16) = P(15,16); + nextP(16,16) = P(16,16); + nextP(0,17) = P(0,17) - P(1,17)*PS11 + P(10,17)*PS6 + P(11,17)*PS7 + P(12,17)*PS9 - P(2,17)*PS12 - P(3,17)*PS13; + nextP(1,17) = P(0,17)*PS11 + P(1,17) - P(10,17)*PS34 + P(11,17)*PS9 - P(12,17)*PS7 + P(2,17)*PS13 - P(3,17)*PS12; + nextP(2,17) = P(0,17)*PS12 - P(1,17)*PS13 - P(10,17)*PS9 - P(11,17)*PS34 + P(12,17)*PS6 + P(2,17) + P(3,17)*PS11; + nextP(3,17) = P(0,17)*PS13 + P(1,17)*PS12 + P(10,17)*PS7 - P(11,17)*PS6 - P(12,17)*PS34 - P(2,17)*PS11 + P(3,17); + nextP(4,17) = P(0,17)*PS72 + P(1,17)*PS62 - P(13,17)*PS44 + P(14,17)*PS140 - P(15,17)*PS139 + P(2,17)*PS60 - P(3,17)*PS74 + P(4,17); + nextP(5,17) = P(0,17)*PS74 - P(1,17)*PS60 - P(13,17)*PS162 - P(14,17)*PS65 + P(15,17)*PS160 + P(2,17)*PS62 + P(3,17)*PS72 + P(5,17); + nextP(6,17) = P(0,17)*PS60 + P(1,17)*PS74 + P(13,17)*PS166 - P(14,17)*PS165 - P(15,17)*PS70 - P(2,17)*PS72 + P(3,17)*PS62 + P(6,17); + nextP(7,17) = P(4,17)*dt + P(7,17); + nextP(8,17) = P(5,17)*dt + P(8,17); + nextP(9,17) = P(6,17)*dt + P(9,17); + nextP(10,17) = P(10,17); + nextP(11,17) = P(11,17); + nextP(12,17) = P(12,17); + nextP(13,17) = P(13,17); + nextP(14,17) = P(14,17); + nextP(15,17) = P(15,17); + nextP(16,17) = P(16,17); + nextP(17,17) = P(17,17); + nextP(0,18) = P(0,18) - P(1,18)*PS11 + P(10,18)*PS6 + P(11,18)*PS7 + P(12,18)*PS9 - P(2,18)*PS12 - P(3,18)*PS13; + nextP(1,18) = P(0,18)*PS11 + P(1,18) - P(10,18)*PS34 + P(11,18)*PS9 - P(12,18)*PS7 + P(2,18)*PS13 - P(3,18)*PS12; + nextP(2,18) = P(0,18)*PS12 - P(1,18)*PS13 - P(10,18)*PS9 - P(11,18)*PS34 + P(12,18)*PS6 + P(2,18) + P(3,18)*PS11; + nextP(3,18) = P(0,18)*PS13 + P(1,18)*PS12 + P(10,18)*PS7 - P(11,18)*PS6 - P(12,18)*PS34 - P(2,18)*PS11 + P(3,18); + nextP(4,18) = P(0,18)*PS72 + P(1,18)*PS62 - P(13,18)*PS44 + P(14,18)*PS140 - P(15,18)*PS139 + P(2,18)*PS60 - P(3,18)*PS74 + P(4,18); + nextP(5,18) = P(0,18)*PS74 - P(1,18)*PS60 - P(13,18)*PS162 - P(14,18)*PS65 + P(15,18)*PS160 + P(2,18)*PS62 + P(3,18)*PS72 + P(5,18); + nextP(6,18) = P(0,18)*PS60 + P(1,18)*PS74 + P(13,18)*PS166 - P(14,18)*PS165 - P(15,18)*PS70 - P(2,18)*PS72 + P(3,18)*PS62 + P(6,18); + nextP(7,18) = P(4,18)*dt + P(7,18); + nextP(8,18) = P(5,18)*dt + P(8,18); + nextP(9,18) = P(6,18)*dt + P(9,18); + nextP(10,18) = P(10,18); + nextP(11,18) = P(11,18); + nextP(12,18) = P(12,18); + nextP(13,18) = P(13,18); + nextP(14,18) = P(14,18); + nextP(15,18) = P(15,18); + nextP(16,18) = P(16,18); + nextP(17,18) = P(17,18); + nextP(18,18) = P(18,18); + nextP(0,19) = P(0,19) - P(1,19)*PS11 + P(10,19)*PS6 + P(11,19)*PS7 + P(12,19)*PS9 - P(2,19)*PS12 - P(3,19)*PS13; + nextP(1,19) = P(0,19)*PS11 + P(1,19) - P(10,19)*PS34 + P(11,19)*PS9 - P(12,19)*PS7 + P(2,19)*PS13 - P(3,19)*PS12; + nextP(2,19) = P(0,19)*PS12 - P(1,19)*PS13 - P(10,19)*PS9 - P(11,19)*PS34 + P(12,19)*PS6 + P(2,19) + P(3,19)*PS11; + nextP(3,19) = P(0,19)*PS13 + P(1,19)*PS12 + P(10,19)*PS7 - P(11,19)*PS6 - P(12,19)*PS34 - P(2,19)*PS11 + P(3,19); + nextP(4,19) = P(0,19)*PS72 + P(1,19)*PS62 - P(13,19)*PS44 + P(14,19)*PS140 - P(15,19)*PS139 + P(2,19)*PS60 - P(3,19)*PS74 + P(4,19); + nextP(5,19) = P(0,19)*PS74 - P(1,19)*PS60 - P(13,19)*PS162 - P(14,19)*PS65 + P(15,19)*PS160 + P(2,19)*PS62 + P(3,19)*PS72 + P(5,19); + nextP(6,19) = P(0,19)*PS60 + P(1,19)*PS74 + P(13,19)*PS166 - P(14,19)*PS165 - P(15,19)*PS70 - P(2,19)*PS72 + P(3,19)*PS62 + P(6,19); + nextP(7,19) = P(4,19)*dt + P(7,19); + nextP(8,19) = P(5,19)*dt + P(8,19); + nextP(9,19) = P(6,19)*dt + P(9,19); + nextP(10,19) = P(10,19); + nextP(11,19) = P(11,19); + nextP(12,19) = P(12,19); + nextP(13,19) = P(13,19); + nextP(14,19) = P(14,19); + nextP(15,19) = P(15,19); + nextP(16,19) = P(16,19); + nextP(17,19) = P(17,19); + nextP(18,19) = P(18,19); + nextP(19,19) = P(19,19); + nextP(0,20) = P(0,20) - P(1,20)*PS11 + P(10,20)*PS6 + P(11,20)*PS7 + P(12,20)*PS9 - P(2,20)*PS12 - P(3,20)*PS13; + nextP(1,20) = P(0,20)*PS11 + P(1,20) - P(10,20)*PS34 + P(11,20)*PS9 - P(12,20)*PS7 + P(2,20)*PS13 - P(3,20)*PS12; + nextP(2,20) = P(0,20)*PS12 - P(1,20)*PS13 - P(10,20)*PS9 - P(11,20)*PS34 + P(12,20)*PS6 + P(2,20) + P(3,20)*PS11; + nextP(3,20) = P(0,20)*PS13 + P(1,20)*PS12 + P(10,20)*PS7 - P(11,20)*PS6 - P(12,20)*PS34 - P(2,20)*PS11 + P(3,20); + nextP(4,20) = P(0,20)*PS72 + P(1,20)*PS62 - P(13,20)*PS44 + P(14,20)*PS140 - P(15,20)*PS139 + P(2,20)*PS60 - P(3,20)*PS74 + P(4,20); + nextP(5,20) = P(0,20)*PS74 - P(1,20)*PS60 - P(13,20)*PS162 - P(14,20)*PS65 + P(15,20)*PS160 + P(2,20)*PS62 + P(3,20)*PS72 + P(5,20); + nextP(6,20) = P(0,20)*PS60 + P(1,20)*PS74 + P(13,20)*PS166 - P(14,20)*PS165 - P(15,20)*PS70 - P(2,20)*PS72 + P(3,20)*PS62 + P(6,20); + nextP(7,20) = P(4,20)*dt + P(7,20); + nextP(8,20) = P(5,20)*dt + P(8,20); + nextP(9,20) = P(6,20)*dt + P(9,20); + nextP(10,20) = P(10,20); + nextP(11,20) = P(11,20); + nextP(12,20) = P(12,20); + nextP(13,20) = P(13,20); + nextP(14,20) = P(14,20); + nextP(15,20) = P(15,20); + nextP(16,20) = P(16,20); + nextP(17,20) = P(17,20); + nextP(18,20) = P(18,20); + nextP(19,20) = P(19,20); + nextP(20,20) = P(20,20); + nextP(0,21) = P(0,21) - P(1,21)*PS11 + P(10,21)*PS6 + P(11,21)*PS7 + P(12,21)*PS9 - P(2,21)*PS12 - P(3,21)*PS13; + nextP(1,21) = P(0,21)*PS11 + P(1,21) - P(10,21)*PS34 + P(11,21)*PS9 - P(12,21)*PS7 + P(2,21)*PS13 - P(3,21)*PS12; + nextP(2,21) = P(0,21)*PS12 - P(1,21)*PS13 - P(10,21)*PS9 - P(11,21)*PS34 + P(12,21)*PS6 + P(2,21) + P(3,21)*PS11; + nextP(3,21) = P(0,21)*PS13 + P(1,21)*PS12 + P(10,21)*PS7 - P(11,21)*PS6 - P(12,21)*PS34 - P(2,21)*PS11 + P(3,21); + nextP(4,21) = P(0,21)*PS72 + P(1,21)*PS62 - P(13,21)*PS44 + P(14,21)*PS140 - P(15,21)*PS139 + P(2,21)*PS60 - P(3,21)*PS74 + P(4,21); + nextP(5,21) = P(0,21)*PS74 - P(1,21)*PS60 - P(13,21)*PS162 - P(14,21)*PS65 + P(15,21)*PS160 + P(2,21)*PS62 + P(3,21)*PS72 + P(5,21); + nextP(6,21) = P(0,21)*PS60 + P(1,21)*PS74 + P(13,21)*PS166 - P(14,21)*PS165 - P(15,21)*PS70 - P(2,21)*PS72 + P(3,21)*PS62 + P(6,21); + nextP(7,21) = P(4,21)*dt + P(7,21); + nextP(8,21) = P(5,21)*dt + P(8,21); + nextP(9,21) = P(6,21)*dt + P(9,21); + nextP(10,21) = P(10,21); + nextP(11,21) = P(11,21); + nextP(12,21) = P(12,21); + nextP(13,21) = P(13,21); + nextP(14,21) = P(14,21); + nextP(15,21) = P(15,21); + nextP(16,21) = P(16,21); + nextP(17,21) = P(17,21); + nextP(18,21) = P(18,21); + nextP(19,21) = P(19,21); + nextP(20,21) = P(20,21); + nextP(21,21) = P(21,21); + nextP(0,22) = P(0,22) - P(1,22)*PS11 + P(10,22)*PS6 + P(11,22)*PS7 + P(12,22)*PS9 - P(2,22)*PS12 - P(3,22)*PS13; + nextP(1,22) = P(0,22)*PS11 + P(1,22) - P(10,22)*PS34 + P(11,22)*PS9 - P(12,22)*PS7 + P(2,22)*PS13 - P(3,22)*PS12; + nextP(2,22) = P(0,22)*PS12 - P(1,22)*PS13 - P(10,22)*PS9 - P(11,22)*PS34 + P(12,22)*PS6 + P(2,22) + P(3,22)*PS11; + nextP(3,22) = P(0,22)*PS13 + P(1,22)*PS12 + P(10,22)*PS7 - P(11,22)*PS6 - P(12,22)*PS34 - P(2,22)*PS11 + P(3,22); + nextP(4,22) = P(0,22)*PS72 + P(1,22)*PS62 - P(13,22)*PS44 + P(14,22)*PS140 - P(15,22)*PS139 + P(2,22)*PS60 - P(3,22)*PS74 + P(4,22); + nextP(5,22) = P(0,22)*PS74 - P(1,22)*PS60 - P(13,22)*PS162 - P(14,22)*PS65 + P(15,22)*PS160 + P(2,22)*PS62 + P(3,22)*PS72 + P(5,22); + nextP(6,22) = P(0,22)*PS60 + P(1,22)*PS74 + P(13,22)*PS166 - P(14,22)*PS165 - P(15,22)*PS70 - P(2,22)*PS72 + P(3,22)*PS62 + P(6,22); + nextP(7,22) = P(4,22)*dt + P(7,22); + nextP(8,22) = P(5,22)*dt + P(8,22); + nextP(9,22) = P(6,22)*dt + P(9,22); + nextP(10,22) = P(10,22); + nextP(11,22) = P(11,22); + nextP(12,22) = P(12,22); + nextP(13,22) = P(13,22); + nextP(14,22) = P(14,22); + nextP(15,22) = P(15,22); + nextP(16,22) = P(16,22); + nextP(17,22) = P(17,22); + nextP(18,22) = P(18,22); + nextP(19,22) = P(19,22); + nextP(20,22) = P(20,22); + nextP(21,22) = P(21,22); + nextP(22,22) = P(22,22); + nextP(0,23) = P(0,23) - P(1,23)*PS11 + P(10,23)*PS6 + P(11,23)*PS7 + P(12,23)*PS9 - P(2,23)*PS12 - P(3,23)*PS13; + nextP(1,23) = P(0,23)*PS11 + P(1,23) - P(10,23)*PS34 + P(11,23)*PS9 - P(12,23)*PS7 + P(2,23)*PS13 - P(3,23)*PS12; + nextP(2,23) = P(0,23)*PS12 - P(1,23)*PS13 - P(10,23)*PS9 - P(11,23)*PS34 + P(12,23)*PS6 + P(2,23) + P(3,23)*PS11; + nextP(3,23) = P(0,23)*PS13 + P(1,23)*PS12 + P(10,23)*PS7 - P(11,23)*PS6 - P(12,23)*PS34 - P(2,23)*PS11 + P(3,23); + nextP(4,23) = P(0,23)*PS72 + P(1,23)*PS62 - P(13,23)*PS44 + P(14,23)*PS140 - P(15,23)*PS139 + P(2,23)*PS60 - P(3,23)*PS74 + P(4,23); + nextP(5,23) = P(0,23)*PS74 - P(1,23)*PS60 - P(13,23)*PS162 - P(14,23)*PS65 + P(15,23)*PS160 + P(2,23)*PS62 + P(3,23)*PS72 + P(5,23); + nextP(6,23) = P(0,23)*PS60 + P(1,23)*PS74 + P(13,23)*PS166 - P(14,23)*PS165 - P(15,23)*PS70 - P(2,23)*PS72 + P(3,23)*PS62 + P(6,23); + nextP(7,23) = P(4,23)*dt + P(7,23); + nextP(8,23) = P(5,23)*dt + P(8,23); + nextP(9,23) = P(6,23)*dt + P(9,23); + nextP(10,23) = P(10,23); + nextP(11,23) = P(11,23); + nextP(12,23) = P(12,23); + nextP(13,23) = P(13,23); + nextP(14,23) = P(14,23); + nextP(15,23) = P(15,23); + nextP(16,23) = P(16,23); + nextP(17,23) = P(17,23); + nextP(18,23) = P(18,23); + nextP(19,23) = P(19,23); + nextP(20,23) = P(20,23); + nextP(21,23) = P(21,23); + nextP(22,23) = P(22,23); + nextP(23,23) = P(23,23); + + // save output and repeat calculation using legacy matlab generated code + SquareMatrix24f nextP_sympy; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + nextP_sympy(row,col) = nextP(row,col); + } + } + + // intermediate calculations + float SF[21]; + SF[0] = dvz - dvz_b; + SF[1] = dvy - dvy_b; + SF[2] = dvx - dvx_b; + SF[3] = 2*q1*SF[2] + 2*q2*SF[1] + 2*q3*SF[0]; + SF[4] = 2*q0*SF[1] - 2*q1*SF[0] + 2*q3*SF[2]; + SF[5] = 2*q0*SF[2] + 2*q2*SF[0] - 2*q3*SF[1]; + SF[6] = day*0.5f - day_b*0.5f; + SF[7] = daz*0.5f - daz_b*0.5f; + SF[8] = dax*0.5f - dax_b*0.5f; + SF[9] = dax_b*0.5f - dax*0.5f; + SF[10] = daz_b*0.5f - daz*0.5f; + SF[11] = day_b*0.5f - day*0.5f; + SF[12] = 2*q1*SF[1]; + SF[13] = 2*q0*SF[0]; + SF[14] = q1*0.5f; + SF[15] = q2*0.5f; + SF[16] = q3*0.5f; + SF[17] = sq(q3); + SF[18] = sq(q2); + SF[19] = sq(q1); + SF[20] = sq(q0); + + float SG[8]; + SG[0] = q0*0.5f; + SG[1] = sq(q3); + SG[2] = sq(q2); + SG[3] = sq(q1); + SG[4] = sq(q0); + SG[5] = 2*q2*q3; + SG[6] = 2*q1*q3; + SG[7] = 2*q1*q2; + + float SQ[11]; + SQ[0] = dvzVar*(SG[5] - 2*q0*q1)*(SG[1] - SG[2] - SG[3] + SG[4]) - dvyVar*(SG[5] + 2*q0*q1)*(SG[1] - SG[2] + SG[3] - SG[4]) + dvxVar*(SG[6] - 2*q0*q2)*(SG[7] + 2*q0*q3); + SQ[1] = dvzVar*(SG[6] + 2*q0*q2)*(SG[1] - SG[2] - SG[3] + SG[4]) - dvxVar*(SG[6] - 2*q0*q2)*(SG[1] + SG[2] - SG[3] - SG[4]) + dvyVar*(SG[5] + 2*q0*q1)*(SG[7] - 2*q0*q3); + SQ[2] = dvzVar*(SG[5] - 2*q0*q1)*(SG[6] + 2*q0*q2) - dvyVar*(SG[7] - 2*q0*q3)*(SG[1] - SG[2] + SG[3] - SG[4]) - dvxVar*(SG[7] + 2*q0*q3)*(SG[1] + SG[2] - SG[3] - SG[4]); + SQ[3] = (dayVar*q1*SG[0])*0.5f - (dazVar*q1*SG[0])*0.5f - (daxVar*q2*q3)*0.25f; + SQ[4] = (dazVar*q2*SG[0])*0.5f - (daxVar*q2*SG[0])*0.5f - (dayVar*q1*q3)*0.25f; + SQ[5] = (daxVar*q3*SG[0])*0.5f - (dayVar*q3*SG[0])*0.5f - (dazVar*q1*q2)*0.25f; + SQ[6] = (daxVar*q1*q2)*0.25f - (dazVar*q3*SG[0])*0.5f - (dayVar*q1*q2)*0.25f; + SQ[7] = (dazVar*q1*q3)*0.25f - (daxVar*q1*q3)*0.25f - (dayVar*q2*SG[0])*0.5f; + SQ[8] = (dayVar*q2*q3)*0.25f - (daxVar*q1*SG[0])*0.5f - (dazVar*q2*q3)*0.25f; + SQ[9] = sq(SG[0]); + SQ[10] = sq(q1); + + float SPP[11]; + SPP[0] = SF[12] + SF[13] - 2*q2*SF[2]; + SPP[1] = SF[17] - SF[18] - SF[19] + SF[20]; + SPP[2] = SF[17] - SF[18] + SF[19] - SF[20]; + SPP[3] = SF[17] + SF[18] - SF[19] - SF[20]; + SPP[4] = 2*q0*q2 - 2*q1*q3; + SPP[5] = 2*q0*q1 - 2*q2*q3; + SPP[6] = 2*q0*q3 - 2*q1*q2; + SPP[7] = 2*q0*q1 + 2*q2*q3; + SPP[8] = 2*q0*q3 + 2*q1*q2; + SPP[9] = 2*q0*q2 + 2*q1*q3; + SPP[10] = SF[16]; + + // calculate variances and upper diagonal covariances for quaternion, velocity, position and gyro bias states + nextP(0,0) = P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10] + (daxVar*SQ[10])*0.25f + SF[9]*(P(0,1) + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10]) + SF[11]*(P(0,2) + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10]) + SF[10]*(P(0,3) + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10]) + SF[14]*(P(0,10) + P(1,10)*SF[9] + P(2,10)*SF[11] + P(3,10)*SF[10] + P(10,10)*SF[14] + P(11,10)*SF[15] + P(12,10)*SPP[10]) + SF[15]*(P(0,11) + P(1,11)*SF[9] + P(2,11)*SF[11] + P(3,11)*SF[10] + P(10,11)*SF[14] + P(11,11)*SF[15] + P(12,11)*SPP[10]) + SPP[10]*(P(0,12) + P(1,12)*SF[9] + P(2,12)*SF[11] + P(3,12)*SF[10] + P(10,12)*SF[14] + P(11,12)*SF[15] + P(12,12)*SPP[10]) + (dayVar*sq(q2))*0.25f + (dazVar*sq(q3))*0.25f; + nextP(0,1) = P(0,1) + SQ[8] + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10] + SF[8]*(P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10]) + SF[7]*(P(0,2) + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10]) + SF[11]*(P(0,3) + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10]) - SF[15]*(P(0,12) + P(1,12)*SF[9] + P(2,12)*SF[11] + P(3,12)*SF[10] + P(10,12)*SF[14] + P(11,12)*SF[15] + P(12,12)*SPP[10]) + SPP[10]*(P(0,11) + P(1,11)*SF[9] + P(2,11)*SF[11] + P(3,11)*SF[10] + P(10,11)*SF[14] + P(11,11)*SF[15] + P(12,11)*SPP[10]) - (q0*(P(0,10) + P(1,10)*SF[9] + P(2,10)*SF[11] + P(3,10)*SF[10] + P(10,10)*SF[14] + P(11,10)*SF[15] + P(12,10)*SPP[10]))*0.5f; + nextP(1,1) = P(1,1) + P(0,1)*SF[8] + P(2,1)*SF[7] + P(3,1)*SF[11] - P(12,1)*SF[15] + P(11,1)*SPP[10] + daxVar*SQ[9] - (P(10,1)*q0)*0.5f + SF[8]*(P(1,0) + P(0,0)*SF[8] + P(2,0)*SF[7] + P(3,0)*SF[11] - P(12,0)*SF[15] + P(11,0)*SPP[10] - (P(10,0)*q0)*0.5f) + SF[7]*(P(1,2) + P(0,2)*SF[8] + P(2,2)*SF[7] + P(3,2)*SF[11] - P(12,2)*SF[15] + P(11,2)*SPP[10] - (P(10,2)*q0)*0.5f) + SF[11]*(P(1,3) + P(0,3)*SF[8] + P(2,3)*SF[7] + P(3,3)*SF[11] - P(12,3)*SF[15] + P(11,3)*SPP[10] - (P(10,3)*q0)*0.5f) - SF[15]*(P(1,12) + P(0,12)*SF[8] + P(2,12)*SF[7] + P(3,12)*SF[11] - P(12,12)*SF[15] + P(11,12)*SPP[10] - (P(10,12)*q0)*0.5f) + SPP[10]*(P(1,11) + P(0,11)*SF[8] + P(2,11)*SF[7] + P(3,11)*SF[11] - P(12,11)*SF[15] + P(11,11)*SPP[10] - (P(10,11)*q0)*0.5f) + (dayVar*sq(q3))*0.25f + (dazVar*sq(q2))*0.25f - (q0*(P(1,10) + P(0,10)*SF[8] + P(2,10)*SF[7] + P(3,10)*SF[11] - P(12,10)*SF[15] + P(11,10)*SPP[10] - (P(10,10)*q0)*0.5f))*0.5f; + nextP(0,2) = P(0,2) + SQ[7] + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10] + SF[6]*(P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10]) + SF[10]*(P(0,1) + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10]) + SF[8]*(P(0,3) + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10]) + SF[14]*(P(0,12) + P(1,12)*SF[9] + P(2,12)*SF[11] + P(3,12)*SF[10] + P(10,12)*SF[14] + P(11,12)*SF[15] + P(12,12)*SPP[10]) - SPP[10]*(P(0,10) + P(1,10)*SF[9] + P(2,10)*SF[11] + P(3,10)*SF[10] + P(10,10)*SF[14] + P(11,10)*SF[15] + P(12,10)*SPP[10]) - (q0*(P(0,11) + P(1,11)*SF[9] + P(2,11)*SF[11] + P(3,11)*SF[10] + P(10,11)*SF[14] + P(11,11)*SF[15] + P(12,11)*SPP[10]))*0.5f; + nextP(1,2) = P(1,2) + SQ[5] + P(0,2)*SF[8] + P(2,2)*SF[7] + P(3,2)*SF[11] - P(12,2)*SF[15] + P(11,2)*SPP[10] - (P(10,2)*q0)*0.5f + SF[6]*(P(1,0) + P(0,0)*SF[8] + P(2,0)*SF[7] + P(3,0)*SF[11] - P(12,0)*SF[15] + P(11,0)*SPP[10] - (P(10,0)*q0)*0.5f) + SF[10]*(P(1,1) + P(0,1)*SF[8] + P(2,1)*SF[7] + P(3,1)*SF[11] - P(12,1)*SF[15] + P(11,1)*SPP[10] - (P(10,1)*q0)*0.5f) + SF[8]*(P(1,3) + P(0,3)*SF[8] + P(2,3)*SF[7] + P(3,3)*SF[11] - P(12,3)*SF[15] + P(11,3)*SPP[10] - (P(10,3)*q0)*0.5f) + SF[14]*(P(1,12) + P(0,12)*SF[8] + P(2,12)*SF[7] + P(3,12)*SF[11] - P(12,12)*SF[15] + P(11,12)*SPP[10] - (P(10,12)*q0)*0.5f) - SPP[10]*(P(1,10) + P(0,10)*SF[8] + P(2,10)*SF[7] + P(3,10)*SF[11] - P(12,10)*SF[15] + P(11,10)*SPP[10] - (P(10,10)*q0)*0.5f) - (q0*(P(1,11) + P(0,11)*SF[8] + P(2,11)*SF[7] + P(3,11)*SF[11] - P(12,11)*SF[15] + P(11,11)*SPP[10] - (P(10,11)*q0)*0.5f))*0.5f; + nextP(2,2) = P(2,2) + P(0,2)*SF[6] + P(1,2)*SF[10] + P(3,2)*SF[8] + P(12,2)*SF[14] - P(10,2)*SPP[10] + dayVar*SQ[9] + (dazVar*SQ[10])*0.25f - (P(11,2)*q0)*0.5f + SF[6]*(P(2,0) + P(0,0)*SF[6] + P(1,0)*SF[10] + P(3,0)*SF[8] + P(12,0)*SF[14] - P(10,0)*SPP[10] - (P(11,0)*q0)*0.5f) + SF[10]*(P(2,1) + P(0,1)*SF[6] + P(1,1)*SF[10] + P(3,1)*SF[8] + P(12,1)*SF[14] - P(10,1)*SPP[10] - (P(11,1)*q0)*0.5f) + SF[8]*(P(2,3) + P(0,3)*SF[6] + P(1,3)*SF[10] + P(3,3)*SF[8] + P(12,3)*SF[14] - P(10,3)*SPP[10] - (P(11,3)*q0)*0.5f) + SF[14]*(P(2,12) + P(0,12)*SF[6] + P(1,12)*SF[10] + P(3,12)*SF[8] + P(12,12)*SF[14] - P(10,12)*SPP[10] - (P(11,12)*q0)*0.5f) - SPP[10]*(P(2,10) + P(0,10)*SF[6] + P(1,10)*SF[10] + P(3,10)*SF[8] + P(12,10)*SF[14] - P(10,10)*SPP[10] - (P(11,10)*q0)*0.5f) + (daxVar*sq(q3))*0.25f - (q0*(P(2,11) + P(0,11)*SF[6] + P(1,11)*SF[10] + P(3,11)*SF[8] + P(12,11)*SF[14] - P(10,11)*SPP[10] - (P(11,11)*q0)*0.5f))*0.5f; + nextP(0,3) = P(0,3) + SQ[6] + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10] + SF[7]*(P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10]) + SF[6]*(P(0,1) + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10]) + SF[9]*(P(0,2) + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10]) + SF[15]*(P(0,10) + P(1,10)*SF[9] + P(2,10)*SF[11] + P(3,10)*SF[10] + P(10,10)*SF[14] + P(11,10)*SF[15] + P(12,10)*SPP[10]) - SF[14]*(P(0,11) + P(1,11)*SF[9] + P(2,11)*SF[11] + P(3,11)*SF[10] + P(10,11)*SF[14] + P(11,11)*SF[15] + P(12,11)*SPP[10]) - (q0*(P(0,12) + P(1,12)*SF[9] + P(2,12)*SF[11] + P(3,12)*SF[10] + P(10,12)*SF[14] + P(11,12)*SF[15] + P(12,12)*SPP[10]))*0.5f; + nextP(1,3) = P(1,3) + SQ[4] + P(0,3)*SF[8] + P(2,3)*SF[7] + P(3,3)*SF[11] - P(12,3)*SF[15] + P(11,3)*SPP[10] - (P(10,3)*q0)*0.5f + SF[7]*(P(1,0) + P(0,0)*SF[8] + P(2,0)*SF[7] + P(3,0)*SF[11] - P(12,0)*SF[15] + P(11,0)*SPP[10] - (P(10,0)*q0)*0.5f) + SF[6]*(P(1,1) + P(0,1)*SF[8] + P(2,1)*SF[7] + P(3,1)*SF[11] - P(12,1)*SF[15] + P(11,1)*SPP[10] - (P(10,1)*q0)*0.5f) + SF[9]*(P(1,2) + P(0,2)*SF[8] + P(2,2)*SF[7] + P(3,2)*SF[11] - P(12,2)*SF[15] + P(11,2)*SPP[10] - (P(10,2)*q0)*0.5f) + SF[15]*(P(1,10) + P(0,10)*SF[8] + P(2,10)*SF[7] + P(3,10)*SF[11] - P(12,10)*SF[15] + P(11,10)*SPP[10] - (P(10,10)*q0)*0.5f) - SF[14]*(P(1,11) + P(0,11)*SF[8] + P(2,11)*SF[7] + P(3,11)*SF[11] - P(12,11)*SF[15] + P(11,11)*SPP[10] - (P(10,11)*q0)*0.5f) - (q0*(P(1,12) + P(0,12)*SF[8] + P(2,12)*SF[7] + P(3,12)*SF[11] - P(12,12)*SF[15] + P(11,12)*SPP[10] - (P(10,12)*q0)*0.5f))*0.5f; + nextP(2,3) = P(2,3) + SQ[3] + P(0,3)*SF[6] + P(1,3)*SF[10] + P(3,3)*SF[8] + P(12,3)*SF[14] - P(10,3)*SPP[10] - (P(11,3)*q0)*0.5f + SF[7]*(P(2,0) + P(0,0)*SF[6] + P(1,0)*SF[10] + P(3,0)*SF[8] + P(12,0)*SF[14] - P(10,0)*SPP[10] - (P(11,0)*q0)*0.5f) + SF[6]*(P(2,1) + P(0,1)*SF[6] + P(1,1)*SF[10] + P(3,1)*SF[8] + P(12,1)*SF[14] - P(10,1)*SPP[10] - (P(11,1)*q0)*0.5f) + SF[9]*(P(2,2) + P(0,2)*SF[6] + P(1,2)*SF[10] + P(3,2)*SF[8] + P(12,2)*SF[14] - P(10,2)*SPP[10] - (P(11,2)*q0)*0.5f) + SF[15]*(P(2,10) + P(0,10)*SF[6] + P(1,10)*SF[10] + P(3,10)*SF[8] + P(12,10)*SF[14] - P(10,10)*SPP[10] - (P(11,10)*q0)*0.5f) - SF[14]*(P(2,11) + P(0,11)*SF[6] + P(1,11)*SF[10] + P(3,11)*SF[8] + P(12,11)*SF[14] - P(10,11)*SPP[10] - (P(11,11)*q0)*0.5f) - (q0*(P(2,12) + P(0,12)*SF[6] + P(1,12)*SF[10] + P(3,12)*SF[8] + P(12,12)*SF[14] - P(10,12)*SPP[10] - (P(11,12)*q0)*0.5f))*0.5f; + nextP(3,3) = P(3,3) + P(0,3)*SF[7] + P(1,3)*SF[6] + P(2,3)*SF[9] + P(10,3)*SF[15] - P(11,3)*SF[14] + (dayVar*SQ[10])*0.25f + dazVar*SQ[9] - (P(12,3)*q0)*0.5f + SF[7]*(P(3,0) + P(0,0)*SF[7] + P(1,0)*SF[6] + P(2,0)*SF[9] + P(10,0)*SF[15] - P(11,0)*SF[14] - (P(12,0)*q0)*0.5f) + SF[6]*(P(3,1) + P(0,1)*SF[7] + P(1,1)*SF[6] + P(2,1)*SF[9] + P(10,1)*SF[15] - P(11,1)*SF[14] - (P(12,1)*q0)*0.5f) + SF[9]*(P(3,2) + P(0,2)*SF[7] + P(1,2)*SF[6] + P(2,2)*SF[9] + P(10,2)*SF[15] - P(11,2)*SF[14] - (P(12,2)*q0)*0.5f) + SF[15]*(P(3,10) + P(0,10)*SF[7] + P(1,10)*SF[6] + P(2,10)*SF[9] + P(10,10)*SF[15] - P(11,10)*SF[14] - (P(12,10)*q0)*0.5f) - SF[14]*(P(3,11) + P(0,11)*SF[7] + P(1,11)*SF[6] + P(2,11)*SF[9] + P(10,11)*SF[15] - P(11,11)*SF[14] - (P(12,11)*q0)*0.5f) + (daxVar*sq(q2))*0.25f - (q0*(P(3,12) + P(0,12)*SF[7] + P(1,12)*SF[6] + P(2,12)*SF[9] + P(10,12)*SF[15] - P(11,12)*SF[14] - (P(12,12)*q0)*0.5f))*0.5f; + nextP(0,4) = P(0,4) + P(1,4)*SF[9] + P(2,4)*SF[11] + P(3,4)*SF[10] + P(10,4)*SF[14] + P(11,4)*SF[15] + P(12,4)*SPP[10] + SF[5]*(P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10]) + SF[3]*(P(0,1) + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10]) - SF[4]*(P(0,3) + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10]) + SPP[0]*(P(0,2) + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10]) + SPP[3]*(P(0,13) + P(1,13)*SF[9] + P(2,13)*SF[11] + P(3,13)*SF[10] + P(10,13)*SF[14] + P(11,13)*SF[15] + P(12,13)*SPP[10]) + SPP[6]*(P(0,14) + P(1,14)*SF[9] + P(2,14)*SF[11] + P(3,14)*SF[10] + P(10,14)*SF[14] + P(11,14)*SF[15] + P(12,14)*SPP[10]) - SPP[9]*(P(0,15) + P(1,15)*SF[9] + P(2,15)*SF[11] + P(3,15)*SF[10] + P(10,15)*SF[14] + P(11,15)*SF[15] + P(12,15)*SPP[10]); + nextP(1,4) = P(1,4) + P(0,4)*SF[8] + P(2,4)*SF[7] + P(3,4)*SF[11] - P(12,4)*SF[15] + P(11,4)*SPP[10] - (P(10,4)*q0)*0.5f + SF[5]*(P(1,0) + P(0,0)*SF[8] + P(2,0)*SF[7] + P(3,0)*SF[11] - P(12,0)*SF[15] + P(11,0)*SPP[10] - (P(10,0)*q0)*0.5f) + SF[3]*(P(1,1) + P(0,1)*SF[8] + P(2,1)*SF[7] + P(3,1)*SF[11] - P(12,1)*SF[15] + P(11,1)*SPP[10] - (P(10,1)*q0)*0.5f) - SF[4]*(P(1,3) + P(0,3)*SF[8] + P(2,3)*SF[7] + P(3,3)*SF[11] - P(12,3)*SF[15] + P(11,3)*SPP[10] - (P(10,3)*q0)*0.5f) + SPP[0]*(P(1,2) + P(0,2)*SF[8] + P(2,2)*SF[7] + P(3,2)*SF[11] - P(12,2)*SF[15] + P(11,2)*SPP[10] - (P(10,2)*q0)*0.5f) + SPP[3]*(P(1,13) + P(0,13)*SF[8] + P(2,13)*SF[7] + P(3,13)*SF[11] - P(12,13)*SF[15] + P(11,13)*SPP[10] - (P(10,13)*q0)*0.5f) + SPP[6]*(P(1,14) + P(0,14)*SF[8] + P(2,14)*SF[7] + P(3,14)*SF[11] - P(12,14)*SF[15] + P(11,14)*SPP[10] - (P(10,14)*q0)*0.5f) - SPP[9]*(P(1,15) + P(0,15)*SF[8] + P(2,15)*SF[7] + P(3,15)*SF[11] - P(12,15)*SF[15] + P(11,15)*SPP[10] - (P(10,15)*q0)*0.5f); + nextP(2,4) = P(2,4) + P(0,4)*SF[6] + P(1,4)*SF[10] + P(3,4)*SF[8] + P(12,4)*SF[14] - P(10,4)*SPP[10] - (P(11,4)*q0)*0.5f + SF[5]*(P(2,0) + P(0,0)*SF[6] + P(1,0)*SF[10] + P(3,0)*SF[8] + P(12,0)*SF[14] - P(10,0)*SPP[10] - (P(11,0)*q0)*0.5f) + SF[3]*(P(2,1) + P(0,1)*SF[6] + P(1,1)*SF[10] + P(3,1)*SF[8] + P(12,1)*SF[14] - P(10,1)*SPP[10] - (P(11,1)*q0)*0.5f) - SF[4]*(P(2,3) + P(0,3)*SF[6] + P(1,3)*SF[10] + P(3,3)*SF[8] + P(12,3)*SF[14] - P(10,3)*SPP[10] - (P(11,3)*q0)*0.5f) + SPP[0]*(P(2,2) + P(0,2)*SF[6] + P(1,2)*SF[10] + P(3,2)*SF[8] + P(12,2)*SF[14] - P(10,2)*SPP[10] - (P(11,2)*q0)*0.5f) + SPP[3]*(P(2,13) + P(0,13)*SF[6] + P(1,13)*SF[10] + P(3,13)*SF[8] + P(12,13)*SF[14] - P(10,13)*SPP[10] - (P(11,13)*q0)*0.5f) + SPP[6]*(P(2,14) + P(0,14)*SF[6] + P(1,14)*SF[10] + P(3,14)*SF[8] + P(12,14)*SF[14] - P(10,14)*SPP[10] - (P(11,14)*q0)*0.5f) - SPP[9]*(P(2,15) + P(0,15)*SF[6] + P(1,15)*SF[10] + P(3,15)*SF[8] + P(12,15)*SF[14] - P(10,15)*SPP[10] - (P(11,15)*q0)*0.5f); + nextP(3,4) = P(3,4) + P(0,4)*SF[7] + P(1,4)*SF[6] + P(2,4)*SF[9] + P(10,4)*SF[15] - P(11,4)*SF[14] - (P(12,4)*q0)*0.5f + SF[5]*(P(3,0) + P(0,0)*SF[7] + P(1,0)*SF[6] + P(2,0)*SF[9] + P(10,0)*SF[15] - P(11,0)*SF[14] - (P(12,0)*q0)*0.5f) + SF[3]*(P(3,1) + P(0,1)*SF[7] + P(1,1)*SF[6] + P(2,1)*SF[9] + P(10,1)*SF[15] - P(11,1)*SF[14] - (P(12,1)*q0)*0.5f) - SF[4]*(P(3,3) + P(0,3)*SF[7] + P(1,3)*SF[6] + P(2,3)*SF[9] + P(10,3)*SF[15] - P(11,3)*SF[14] - (P(12,3)*q0)*0.5f) + SPP[0]*(P(3,2) + P(0,2)*SF[7] + P(1,2)*SF[6] + P(2,2)*SF[9] + P(10,2)*SF[15] - P(11,2)*SF[14] - (P(12,2)*q0)*0.5f) + SPP[3]*(P(3,13) + P(0,13)*SF[7] + P(1,13)*SF[6] + P(2,13)*SF[9] + P(10,13)*SF[15] - P(11,13)*SF[14] - (P(12,13)*q0)*0.5f) + SPP[6]*(P(3,14) + P(0,14)*SF[7] + P(1,14)*SF[6] + P(2,14)*SF[9] + P(10,14)*SF[15] - P(11,14)*SF[14] - (P(12,14)*q0)*0.5f) - SPP[9]*(P(3,15) + P(0,15)*SF[7] + P(1,15)*SF[6] + P(2,15)*SF[9] + P(10,15)*SF[15] - P(11,15)*SF[14] - (P(12,15)*q0)*0.5f); + nextP(4,4) = P(4,4) + P(0,4)*SF[5] + P(1,4)*SF[3] - P(3,4)*SF[4] + P(2,4)*SPP[0] + P(13,4)*SPP[3] + P(14,4)*SPP[6] - P(15,4)*SPP[9] + dvyVar*sq(SG[7] - 2*q0*q3) + dvzVar*sq(SG[6] + 2*q0*q2) + SF[5]*(P(4,0) + P(0,0)*SF[5] + P(1,0)*SF[3] - P(3,0)*SF[4] + P(2,0)*SPP[0] + P(13,0)*SPP[3] + P(14,0)*SPP[6] - P(15,0)*SPP[9]) + SF[3]*(P(4,1) + P(0,1)*SF[5] + P(1,1)*SF[3] - P(3,1)*SF[4] + P(2,1)*SPP[0] + P(13,1)*SPP[3] + P(14,1)*SPP[6] - P(15,1)*SPP[9]) - SF[4]*(P(4,3) + P(0,3)*SF[5] + P(1,3)*SF[3] - P(3,3)*SF[4] + P(2,3)*SPP[0] + P(13,3)*SPP[3] + P(14,3)*SPP[6] - P(15,3)*SPP[9]) + SPP[0]*(P(4,2) + P(0,2)*SF[5] + P(1,2)*SF[3] - P(3,2)*SF[4] + P(2,2)*SPP[0] + P(13,2)*SPP[3] + P(14,2)*SPP[6] - P(15,2)*SPP[9]) + SPP[3]*(P(4,13) + P(0,13)*SF[5] + P(1,13)*SF[3] - P(3,13)*SF[4] + P(2,13)*SPP[0] + P(13,13)*SPP[3] + P(14,13)*SPP[6] - P(15,13)*SPP[9]) + SPP[6]*(P(4,14) + P(0,14)*SF[5] + P(1,14)*SF[3] - P(3,14)*SF[4] + P(2,14)*SPP[0] + P(13,14)*SPP[3] + P(14,14)*SPP[6] - P(15,14)*SPP[9]) - SPP[9]*(P(4,15) + P(0,15)*SF[5] + P(1,15)*SF[3] - P(3,15)*SF[4] + P(2,15)*SPP[0] + P(13,15)*SPP[3] + P(14,15)*SPP[6] - P(15,15)*SPP[9]) + dvxVar*sq(SG[1] + SG[2] - SG[3] - SG[4]); + nextP(0,5) = P(0,5) + P(1,5)*SF[9] + P(2,5)*SF[11] + P(3,5)*SF[10] + P(10,5)*SF[14] + P(11,5)*SF[15] + P(12,5)*SPP[10] + SF[4]*(P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10]) + SF[3]*(P(0,2) + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10]) + SF[5]*(P(0,3) + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10]) - SPP[0]*(P(0,1) + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10]) - SPP[8]*(P(0,13) + P(1,13)*SF[9] + P(2,13)*SF[11] + P(3,13)*SF[10] + P(10,13)*SF[14] + P(11,13)*SF[15] + P(12,13)*SPP[10]) + SPP[2]*(P(0,14) + P(1,14)*SF[9] + P(2,14)*SF[11] + P(3,14)*SF[10] + P(10,14)*SF[14] + P(11,14)*SF[15] + P(12,14)*SPP[10]) + SPP[5]*(P(0,15) + P(1,15)*SF[9] + P(2,15)*SF[11] + P(3,15)*SF[10] + P(10,15)*SF[14] + P(11,15)*SF[15] + P(12,15)*SPP[10]); + nextP(1,5) = P(1,5) + P(0,5)*SF[8] + P(2,5)*SF[7] + P(3,5)*SF[11] - P(12,5)*SF[15] + P(11,5)*SPP[10] - (P(10,5)*q0)*0.5f + SF[4]*(P(1,0) + P(0,0)*SF[8] + P(2,0)*SF[7] + P(3,0)*SF[11] - P(12,0)*SF[15] + P(11,0)*SPP[10] - (P(10,0)*q0)*0.5f) + SF[3]*(P(1,2) + P(0,2)*SF[8] + P(2,2)*SF[7] + P(3,2)*SF[11] - P(12,2)*SF[15] + P(11,2)*SPP[10] - (P(10,2)*q0)*0.5f) + SF[5]*(P(1,3) + P(0,3)*SF[8] + P(2,3)*SF[7] + P(3,3)*SF[11] - P(12,3)*SF[15] + P(11,3)*SPP[10] - (P(10,3)*q0)*0.5f) - SPP[0]*(P(1,1) + P(0,1)*SF[8] + P(2,1)*SF[7] + P(3,1)*SF[11] - P(12,1)*SF[15] + P(11,1)*SPP[10] - (P(10,1)*q0)*0.5f) - SPP[8]*(P(1,13) + P(0,13)*SF[8] + P(2,13)*SF[7] + P(3,13)*SF[11] - P(12,13)*SF[15] + P(11,13)*SPP[10] - (P(10,13)*q0)*0.5f) + SPP[2]*(P(1,14) + P(0,14)*SF[8] + P(2,14)*SF[7] + P(3,14)*SF[11] - P(12,14)*SF[15] + P(11,14)*SPP[10] - (P(10,14)*q0)*0.5f) + SPP[5]*(P(1,15) + P(0,15)*SF[8] + P(2,15)*SF[7] + P(3,15)*SF[11] - P(12,15)*SF[15] + P(11,15)*SPP[10] - (P(10,15)*q0)*0.5f); + nextP(2,5) = P(2,5) + P(0,5)*SF[6] + P(1,5)*SF[10] + P(3,5)*SF[8] + P(12,5)*SF[14] - P(10,5)*SPP[10] - (P(11,5)*q0)*0.5f + SF[4]*(P(2,0) + P(0,0)*SF[6] + P(1,0)*SF[10] + P(3,0)*SF[8] + P(12,0)*SF[14] - P(10,0)*SPP[10] - (P(11,0)*q0)*0.5f) + SF[3]*(P(2,2) + P(0,2)*SF[6] + P(1,2)*SF[10] + P(3,2)*SF[8] + P(12,2)*SF[14] - P(10,2)*SPP[10] - (P(11,2)*q0)*0.5f) + SF[5]*(P(2,3) + P(0,3)*SF[6] + P(1,3)*SF[10] + P(3,3)*SF[8] + P(12,3)*SF[14] - P(10,3)*SPP[10] - (P(11,3)*q0)*0.5f) - SPP[0]*(P(2,1) + P(0,1)*SF[6] + P(1,1)*SF[10] + P(3,1)*SF[8] + P(12,1)*SF[14] - P(10,1)*SPP[10] - (P(11,1)*q0)*0.5f) - SPP[8]*(P(2,13) + P(0,13)*SF[6] + P(1,13)*SF[10] + P(3,13)*SF[8] + P(12,13)*SF[14] - P(10,13)*SPP[10] - (P(11,13)*q0)*0.5f) + SPP[2]*(P(2,14) + P(0,14)*SF[6] + P(1,14)*SF[10] + P(3,14)*SF[8] + P(12,14)*SF[14] - P(10,14)*SPP[10] - (P(11,14)*q0)*0.5f) + SPP[5]*(P(2,15) + P(0,15)*SF[6] + P(1,15)*SF[10] + P(3,15)*SF[8] + P(12,15)*SF[14] - P(10,15)*SPP[10] - (P(11,15)*q0)*0.5f); + nextP(3,5) = P(3,5) + P(0,5)*SF[7] + P(1,5)*SF[6] + P(2,5)*SF[9] + P(10,5)*SF[15] - P(11,5)*SF[14] - (P(12,5)*q0)*0.5f + SF[4]*(P(3,0) + P(0,0)*SF[7] + P(1,0)*SF[6] + P(2,0)*SF[9] + P(10,0)*SF[15] - P(11,0)*SF[14] - (P(12,0)*q0)*0.5f) + SF[3]*(P(3,2) + P(0,2)*SF[7] + P(1,2)*SF[6] + P(2,2)*SF[9] + P(10,2)*SF[15] - P(11,2)*SF[14] - (P(12,2)*q0)*0.5f) + SF[5]*(P(3,3) + P(0,3)*SF[7] + P(1,3)*SF[6] + P(2,3)*SF[9] + P(10,3)*SF[15] - P(11,3)*SF[14] - (P(12,3)*q0)*0.5f) - SPP[0]*(P(3,1) + P(0,1)*SF[7] + P(1,1)*SF[6] + P(2,1)*SF[9] + P(10,1)*SF[15] - P(11,1)*SF[14] - (P(12,1)*q0)*0.5f) - SPP[8]*(P(3,13) + P(0,13)*SF[7] + P(1,13)*SF[6] + P(2,13)*SF[9] + P(10,13)*SF[15] - P(11,13)*SF[14] - (P(12,13)*q0)*0.5f) + SPP[2]*(P(3,14) + P(0,14)*SF[7] + P(1,14)*SF[6] + P(2,14)*SF[9] + P(10,14)*SF[15] - P(11,14)*SF[14] - (P(12,14)*q0)*0.5f) + SPP[5]*(P(3,15) + P(0,15)*SF[7] + P(1,15)*SF[6] + P(2,15)*SF[9] + P(10,15)*SF[15] - P(11,15)*SF[14] - (P(12,15)*q0)*0.5f); + nextP(4,5) = P(4,5) + SQ[2] + P(0,5)*SF[5] + P(1,5)*SF[3] - P(3,5)*SF[4] + P(2,5)*SPP[0] + P(13,5)*SPP[3] + P(14,5)*SPP[6] - P(15,5)*SPP[9] + SF[4]*(P(4,0) + P(0,0)*SF[5] + P(1,0)*SF[3] - P(3,0)*SF[4] + P(2,0)*SPP[0] + P(13,0)*SPP[3] + P(14,0)*SPP[6] - P(15,0)*SPP[9]) + SF[3]*(P(4,2) + P(0,2)*SF[5] + P(1,2)*SF[3] - P(3,2)*SF[4] + P(2,2)*SPP[0] + P(13,2)*SPP[3] + P(14,2)*SPP[6] - P(15,2)*SPP[9]) + SF[5]*(P(4,3) + P(0,3)*SF[5] + P(1,3)*SF[3] - P(3,3)*SF[4] + P(2,3)*SPP[0] + P(13,3)*SPP[3] + P(14,3)*SPP[6] - P(15,3)*SPP[9]) - SPP[0]*(P(4,1) + P(0,1)*SF[5] + P(1,1)*SF[3] - P(3,1)*SF[4] + P(2,1)*SPP[0] + P(13,1)*SPP[3] + P(14,1)*SPP[6] - P(15,1)*SPP[9]) - SPP[8]*(P(4,13) + P(0,13)*SF[5] + P(1,13)*SF[3] - P(3,13)*SF[4] + P(2,13)*SPP[0] + P(13,13)*SPP[3] + P(14,13)*SPP[6] - P(15,13)*SPP[9]) + SPP[2]*(P(4,14) + P(0,14)*SF[5] + P(1,14)*SF[3] - P(3,14)*SF[4] + P(2,14)*SPP[0] + P(13,14)*SPP[3] + P(14,14)*SPP[6] - P(15,14)*SPP[9]) + SPP[5]*(P(4,15) + P(0,15)*SF[5] + P(1,15)*SF[3] - P(3,15)*SF[4] + P(2,15)*SPP[0] + P(13,15)*SPP[3] + P(14,15)*SPP[6] - P(15,15)*SPP[9]); + nextP(5,5) = P(5,5) + P(0,5)*SF[4] + P(2,5)*SF[3] + P(3,5)*SF[5] - P(1,5)*SPP[0] - P(13,5)*SPP[8] + P(14,5)*SPP[2] + P(15,5)*SPP[5] + dvxVar*sq(SG[7] + 2*q0*q3) + dvzVar*sq(SG[5] - 2*q0*q1) + SF[4]*(P(5,0) + P(0,0)*SF[4] + P(2,0)*SF[3] + P(3,0)*SF[5] - P(1,0)*SPP[0] - P(13,0)*SPP[8] + P(14,0)*SPP[2] + P(15,0)*SPP[5]) + SF[3]*(P(5,2) + P(0,2)*SF[4] + P(2,2)*SF[3] + P(3,2)*SF[5] - P(1,2)*SPP[0] - P(13,2)*SPP[8] + P(14,2)*SPP[2] + P(15,2)*SPP[5]) + SF[5]*(P(5,3) + P(0,3)*SF[4] + P(2,3)*SF[3] + P(3,3)*SF[5] - P(1,3)*SPP[0] - P(13,3)*SPP[8] + P(14,3)*SPP[2] + P(15,3)*SPP[5]) - SPP[0]*(P(5,1) + P(0,1)*SF[4] + P(2,1)*SF[3] + P(3,1)*SF[5] - P(1,1)*SPP[0] - P(13,1)*SPP[8] + P(14,1)*SPP[2] + P(15,1)*SPP[5]) - SPP[8]*(P(5,13) + P(0,13)*SF[4] + P(2,13)*SF[3] + P(3,13)*SF[5] - P(1,13)*SPP[0] - P(13,13)*SPP[8] + P(14,13)*SPP[2] + P(15,13)*SPP[5]) + SPP[2]*(P(5,14) + P(0,14)*SF[4] + P(2,14)*SF[3] + P(3,14)*SF[5] - P(1,14)*SPP[0] - P(13,14)*SPP[8] + P(14,14)*SPP[2] + P(15,14)*SPP[5]) + SPP[5]*(P(5,15) + P(0,15)*SF[4] + P(2,15)*SF[3] + P(3,15)*SF[5] - P(1,15)*SPP[0] - P(13,15)*SPP[8] + P(14,15)*SPP[2] + P(15,15)*SPP[5]) + dvyVar*sq(SG[1] - SG[2] + SG[3] - SG[4]); + nextP(0,6) = P(0,6) + P(1,6)*SF[9] + P(2,6)*SF[11] + P(3,6)*SF[10] + P(10,6)*SF[14] + P(11,6)*SF[15] + P(12,6)*SPP[10] + SF[4]*(P(0,1) + P(1,1)*SF[9] + P(2,1)*SF[11] + P(3,1)*SF[10] + P(10,1)*SF[14] + P(11,1)*SF[15] + P(12,1)*SPP[10]) - SF[5]*(P(0,2) + P(1,2)*SF[9] + P(2,2)*SF[11] + P(3,2)*SF[10] + P(10,2)*SF[14] + P(11,2)*SF[15] + P(12,2)*SPP[10]) + SF[3]*(P(0,3) + P(1,3)*SF[9] + P(2,3)*SF[11] + P(3,3)*SF[10] + P(10,3)*SF[14] + P(11,3)*SF[15] + P(12,3)*SPP[10]) + SPP[0]*(P(0,0) + P(1,0)*SF[9] + P(2,0)*SF[11] + P(3,0)*SF[10] + P(10,0)*SF[14] + P(11,0)*SF[15] + P(12,0)*SPP[10]) + SPP[4]*(P(0,13) + P(1,13)*SF[9] + P(2,13)*SF[11] + P(3,13)*SF[10] + P(10,13)*SF[14] + P(11,13)*SF[15] + P(12,13)*SPP[10]) - SPP[7]*(P(0,14) + P(1,14)*SF[9] + P(2,14)*SF[11] + P(3,14)*SF[10] + P(10,14)*SF[14] + P(11,14)*SF[15] + P(12,14)*SPP[10]) - SPP[1]*(P(0,15) + P(1,15)*SF[9] + P(2,15)*SF[11] + P(3,15)*SF[10] + P(10,15)*SF[14] + P(11,15)*SF[15] + P(12,15)*SPP[10]); + nextP(1,6) = P(1,6) + P(0,6)*SF[8] + P(2,6)*SF[7] + P(3,6)*SF[11] - P(12,6)*SF[15] + P(11,6)*SPP[10] - (P(10,6)*q0)*0.5f + SF[4]*(P(1,1) + P(0,1)*SF[8] + P(2,1)*SF[7] + P(3,1)*SF[11] - P(12,1)*SF[15] + P(11,1)*SPP[10] - (P(10,1)*q0)*0.5f) - SF[5]*(P(1,2) + P(0,2)*SF[8] + P(2,2)*SF[7] + P(3,2)*SF[11] - P(12,2)*SF[15] + P(11,2)*SPP[10] - (P(10,2)*q0)*0.5f) + SF[3]*(P(1,3) + P(0,3)*SF[8] + P(2,3)*SF[7] + P(3,3)*SF[11] - P(12,3)*SF[15] + P(11,3)*SPP[10] - (P(10,3)*q0)*0.5f) + SPP[0]*(P(1,0) + P(0,0)*SF[8] + P(2,0)*SF[7] + P(3,0)*SF[11] - P(12,0)*SF[15] + P(11,0)*SPP[10] - (P(10,0)*q0)*0.5f) + SPP[4]*(P(1,13) + P(0,13)*SF[8] + P(2,13)*SF[7] + P(3,13)*SF[11] - P(12,13)*SF[15] + P(11,13)*SPP[10] - (P(10,13)*q0)*0.5f) - SPP[7]*(P(1,14) + P(0,14)*SF[8] + P(2,14)*SF[7] + P(3,14)*SF[11] - P(12,14)*SF[15] + P(11,14)*SPP[10] - (P(10,14)*q0)*0.5f) - SPP[1]*(P(1,15) + P(0,15)*SF[8] + P(2,15)*SF[7] + P(3,15)*SF[11] - P(12,15)*SF[15] + P(11,15)*SPP[10] - (P(10,15)*q0)*0.5f); + nextP(2,6) = P(2,6) + P(0,6)*SF[6] + P(1,6)*SF[10] + P(3,6)*SF[8] + P(12,6)*SF[14] - P(10,6)*SPP[10] - (P(11,6)*q0)*0.5f + SF[4]*(P(2,1) + P(0,1)*SF[6] + P(1,1)*SF[10] + P(3,1)*SF[8] + P(12,1)*SF[14] - P(10,1)*SPP[10] - (P(11,1)*q0)*0.5f) - SF[5]*(P(2,2) + P(0,2)*SF[6] + P(1,2)*SF[10] + P(3,2)*SF[8] + P(12,2)*SF[14] - P(10,2)*SPP[10] - (P(11,2)*q0)*0.5f) + SF[3]*(P(2,3) + P(0,3)*SF[6] + P(1,3)*SF[10] + P(3,3)*SF[8] + P(12,3)*SF[14] - P(10,3)*SPP[10] - (P(11,3)*q0)*0.5f) + SPP[0]*(P(2,0) + P(0,0)*SF[6] + P(1,0)*SF[10] + P(3,0)*SF[8] + P(12,0)*SF[14] - P(10,0)*SPP[10] - (P(11,0)*q0)*0.5f) + SPP[4]*(P(2,13) + P(0,13)*SF[6] + P(1,13)*SF[10] + P(3,13)*SF[8] + P(12,13)*SF[14] - P(10,13)*SPP[10] - (P(11,13)*q0)*0.5f) - SPP[7]*(P(2,14) + P(0,14)*SF[6] + P(1,14)*SF[10] + P(3,14)*SF[8] + P(12,14)*SF[14] - P(10,14)*SPP[10] - (P(11,14)*q0)*0.5f) - SPP[1]*(P(2,15) + P(0,15)*SF[6] + P(1,15)*SF[10] + P(3,15)*SF[8] + P(12,15)*SF[14] - P(10,15)*SPP[10] - (P(11,15)*q0)*0.5f); + nextP(3,6) = P(3,6) + P(0,6)*SF[7] + P(1,6)*SF[6] + P(2,6)*SF[9] + P(10,6)*SF[15] - P(11,6)*SF[14] - (P(12,6)*q0)*0.5f + SF[4]*(P(3,1) + P(0,1)*SF[7] + P(1,1)*SF[6] + P(2,1)*SF[9] + P(10,1)*SF[15] - P(11,1)*SF[14] - (P(12,1)*q0)*0.5f) - SF[5]*(P(3,2) + P(0,2)*SF[7] + P(1,2)*SF[6] + P(2,2)*SF[9] + P(10,2)*SF[15] - P(11,2)*SF[14] - (P(12,2)*q0)*0.5f) + SF[3]*(P(3,3) + P(0,3)*SF[7] + P(1,3)*SF[6] + P(2,3)*SF[9] + P(10,3)*SF[15] - P(11,3)*SF[14] - (P(12,3)*q0)*0.5f) + SPP[0]*(P(3,0) + P(0,0)*SF[7] + P(1,0)*SF[6] + P(2,0)*SF[9] + P(10,0)*SF[15] - P(11,0)*SF[14] - (P(12,0)*q0)*0.5f) + SPP[4]*(P(3,13) + P(0,13)*SF[7] + P(1,13)*SF[6] + P(2,13)*SF[9] + P(10,13)*SF[15] - P(11,13)*SF[14] - (P(12,13)*q0)*0.5f) - SPP[7]*(P(3,14) + P(0,14)*SF[7] + P(1,14)*SF[6] + P(2,14)*SF[9] + P(10,14)*SF[15] - P(11,14)*SF[14] - (P(12,14)*q0)*0.5f) - SPP[1]*(P(3,15) + P(0,15)*SF[7] + P(1,15)*SF[6] + P(2,15)*SF[9] + P(10,15)*SF[15] - P(11,15)*SF[14] - (P(12,15)*q0)*0.5f); + nextP(4,6) = P(4,6) + SQ[1] + P(0,6)*SF[5] + P(1,6)*SF[3] - P(3,6)*SF[4] + P(2,6)*SPP[0] + P(13,6)*SPP[3] + P(14,6)*SPP[6] - P(15,6)*SPP[9] + SF[4]*(P(4,1) + P(0,1)*SF[5] + P(1,1)*SF[3] - P(3,1)*SF[4] + P(2,1)*SPP[0] + P(13,1)*SPP[3] + P(14,1)*SPP[6] - P(15,1)*SPP[9]) - SF[5]*(P(4,2) + P(0,2)*SF[5] + P(1,2)*SF[3] - P(3,2)*SF[4] + P(2,2)*SPP[0] + P(13,2)*SPP[3] + P(14,2)*SPP[6] - P(15,2)*SPP[9]) + SF[3]*(P(4,3) + P(0,3)*SF[5] + P(1,3)*SF[3] - P(3,3)*SF[4] + P(2,3)*SPP[0] + P(13,3)*SPP[3] + P(14,3)*SPP[6] - P(15,3)*SPP[9]) + SPP[0]*(P(4,0) + P(0,0)*SF[5] + P(1,0)*SF[3] - P(3,0)*SF[4] + P(2,0)*SPP[0] + P(13,0)*SPP[3] + P(14,0)*SPP[6] - P(15,0)*SPP[9]) + SPP[4]*(P(4,13) + P(0,13)*SF[5] + P(1,13)*SF[3] - P(3,13)*SF[4] + P(2,13)*SPP[0] + P(13,13)*SPP[3] + P(14,13)*SPP[6] - P(15,13)*SPP[9]) - SPP[7]*(P(4,14) + P(0,14)*SF[5] + P(1,14)*SF[3] - P(3,14)*SF[4] + P(2,14)*SPP[0] + P(13,14)*SPP[3] + P(14,14)*SPP[6] - P(15,14)*SPP[9]) - SPP[1]*(P(4,15) + P(0,15)*SF[5] + P(1,15)*SF[3] - P(3,15)*SF[4] + P(2,15)*SPP[0] + P(13,15)*SPP[3] + P(14,15)*SPP[6] - P(15,15)*SPP[9]); + nextP(5,6) = P(5,6) + SQ[0] + P(0,6)*SF[4] + P(2,6)*SF[3] + P(3,6)*SF[5] - P(1,6)*SPP[0] - P(13,6)*SPP[8] + P(14,6)*SPP[2] + P(15,6)*SPP[5] + SF[4]*(P(5,1) + P(0,1)*SF[4] + P(2,1)*SF[3] + P(3,1)*SF[5] - P(1,1)*SPP[0] - P(13,1)*SPP[8] + P(14,1)*SPP[2] + P(15,1)*SPP[5]) - SF[5]*(P(5,2) + P(0,2)*SF[4] + P(2,2)*SF[3] + P(3,2)*SF[5] - P(1,2)*SPP[0] - P(13,2)*SPP[8] + P(14,2)*SPP[2] + P(15,2)*SPP[5]) + SF[3]*(P(5,3) + P(0,3)*SF[4] + P(2,3)*SF[3] + P(3,3)*SF[5] - P(1,3)*SPP[0] - P(13,3)*SPP[8] + P(14,3)*SPP[2] + P(15,3)*SPP[5]) + SPP[0]*(P(5,0) + P(0,0)*SF[4] + P(2,0)*SF[3] + P(3,0)*SF[5] - P(1,0)*SPP[0] - P(13,0)*SPP[8] + P(14,0)*SPP[2] + P(15,0)*SPP[5]) + SPP[4]*(P(5,13) + P(0,13)*SF[4] + P(2,13)*SF[3] + P(3,13)*SF[5] - P(1,13)*SPP[0] - P(13,13)*SPP[8] + P(14,13)*SPP[2] + P(15,13)*SPP[5]) - SPP[7]*(P(5,14) + P(0,14)*SF[4] + P(2,14)*SF[3] + P(3,14)*SF[5] - P(1,14)*SPP[0] - P(13,14)*SPP[8] + P(14,14)*SPP[2] + P(15,14)*SPP[5]) - SPP[1]*(P(5,15) + P(0,15)*SF[4] + P(2,15)*SF[3] + P(3,15)*SF[5] - P(1,15)*SPP[0] - P(13,15)*SPP[8] + P(14,15)*SPP[2] + P(15,15)*SPP[5]); + nextP(6,6) = P(6,6) + P(1,6)*SF[4] - P(2,6)*SF[5] + P(3,6)*SF[3] + P(0,6)*SPP[0] + P(13,6)*SPP[4] - P(14,6)*SPP[7] - P(15,6)*SPP[1] + dvxVar*sq(SG[6] - 2*q0*q2) + dvyVar*sq(SG[5] + 2*q0*q1) + SF[4]*(P(6,1) + P(1,1)*SF[4] - P(2,1)*SF[5] + P(3,1)*SF[3] + P(0,1)*SPP[0] + P(13,1)*SPP[4] - P(14,1)*SPP[7] - P(15,1)*SPP[1]) - SF[5]*(P(6,2) + P(1,2)*SF[4] - P(2,2)*SF[5] + P(3,2)*SF[3] + P(0,2)*SPP[0] + P(13,2)*SPP[4] - P(14,2)*SPP[7] - P(15,2)*SPP[1]) + SF[3]*(P(6,3) + P(1,3)*SF[4] - P(2,3)*SF[5] + P(3,3)*SF[3] + P(0,3)*SPP[0] + P(13,3)*SPP[4] - P(14,3)*SPP[7] - P(15,3)*SPP[1]) + SPP[0]*(P(6,0) + P(1,0)*SF[4] - P(2,0)*SF[5] + P(3,0)*SF[3] + P(0,0)*SPP[0] + P(13,0)*SPP[4] - P(14,0)*SPP[7] - P(15,0)*SPP[1]) + SPP[4]*(P(6,13) + P(1,13)*SF[4] - P(2,13)*SF[5] + P(3,13)*SF[3] + P(0,13)*SPP[0] + P(13,13)*SPP[4] - P(14,13)*SPP[7] - P(15,13)*SPP[1]) - SPP[7]*(P(6,14) + P(1,14)*SF[4] - P(2,14)*SF[5] + P(3,14)*SF[3] + P(0,14)*SPP[0] + P(13,14)*SPP[4] - P(14,14)*SPP[7] - P(15,14)*SPP[1]) - SPP[1]*(P(6,15) + P(1,15)*SF[4] - P(2,15)*SF[5] + P(3,15)*SF[3] + P(0,15)*SPP[0] + P(13,15)*SPP[4] - P(14,15)*SPP[7] - P(15,15)*SPP[1]) + dvzVar*sq(SG[1] - SG[2] - SG[3] + SG[4]); + nextP(0,7) = P(0,7) + P(1,7)*SF[9] + P(2,7)*SF[11] + P(3,7)*SF[10] + P(10,7)*SF[14] + P(11,7)*SF[15] + P(12,7)*SPP[10] + dt*(P(0,4) + P(1,4)*SF[9] + P(2,4)*SF[11] + P(3,4)*SF[10] + P(10,4)*SF[14] + P(11,4)*SF[15] + P(12,4)*SPP[10]); + nextP(1,7) = P(1,7) + P(0,7)*SF[8] + P(2,7)*SF[7] + P(3,7)*SF[11] - P(12,7)*SF[15] + P(11,7)*SPP[10] - (P(10,7)*q0)*0.5f + dt*(P(1,4) + P(0,4)*SF[8] + P(2,4)*SF[7] + P(3,4)*SF[11] - P(12,4)*SF[15] + P(11,4)*SPP[10] - (P(10,4)*q0)*0.5f); + nextP(2,7) = P(2,7) + P(0,7)*SF[6] + P(1,7)*SF[10] + P(3,7)*SF[8] + P(12,7)*SF[14] - P(10,7)*SPP[10] - (P(11,7)*q0)*0.5f + dt*(P(2,4) + P(0,4)*SF[6] + P(1,4)*SF[10] + P(3,4)*SF[8] + P(12,4)*SF[14] - P(10,4)*SPP[10] - (P(11,4)*q0)*0.5f); + nextP(3,7) = P(3,7) + P(0,7)*SF[7] + P(1,7)*SF[6] + P(2,7)*SF[9] + P(10,7)*SF[15] - P(11,7)*SF[14] - (P(12,7)*q0)*0.5f + dt*(P(3,4) + P(0,4)*SF[7] + P(1,4)*SF[6] + P(2,4)*SF[9] + P(10,4)*SF[15] - P(11,4)*SF[14] - (P(12,4)*q0)*0.5f); + nextP(4,7) = P(4,7) + P(0,7)*SF[5] + P(1,7)*SF[3] - P(3,7)*SF[4] + P(2,7)*SPP[0] + P(13,7)*SPP[3] + P(14,7)*SPP[6] - P(15,7)*SPP[9] + dt*(P(4,4) + P(0,4)*SF[5] + P(1,4)*SF[3] - P(3,4)*SF[4] + P(2,4)*SPP[0] + P(13,4)*SPP[3] + P(14,4)*SPP[6] - P(15,4)*SPP[9]); + nextP(5,7) = P(5,7) + P(0,7)*SF[4] + P(2,7)*SF[3] + P(3,7)*SF[5] - P(1,7)*SPP[0] - P(13,7)*SPP[8] + P(14,7)*SPP[2] + P(15,7)*SPP[5] + dt*(P(5,4) + P(0,4)*SF[4] + P(2,4)*SF[3] + P(3,4)*SF[5] - P(1,4)*SPP[0] - P(13,4)*SPP[8] + P(14,4)*SPP[2] + P(15,4)*SPP[5]); + nextP(6,7) = P(6,7) + P(1,7)*SF[4] - P(2,7)*SF[5] + P(3,7)*SF[3] + P(0,7)*SPP[0] + P(13,7)*SPP[4] - P(14,7)*SPP[7] - P(15,7)*SPP[1] + dt*(P(6,4) + P(1,4)*SF[4] - P(2,4)*SF[5] + P(3,4)*SF[3] + P(0,4)*SPP[0] + P(13,4)*SPP[4] - P(14,4)*SPP[7] - P(15,4)*SPP[1]); + nextP(7,7) = P(7,7) + P(4,7)*dt + dt*(P(7,4) + P(4,4)*dt); + nextP(0,8) = P(0,8) + P(1,8)*SF[9] + P(2,8)*SF[11] + P(3,8)*SF[10] + P(10,8)*SF[14] + P(11,8)*SF[15] + P(12,8)*SPP[10] + dt*(P(0,5) + P(1,5)*SF[9] + P(2,5)*SF[11] + P(3,5)*SF[10] + P(10,5)*SF[14] + P(11,5)*SF[15] + P(12,5)*SPP[10]); + nextP(1,8) = P(1,8) + P(0,8)*SF[8] + P(2,8)*SF[7] + P(3,8)*SF[11] - P(12,8)*SF[15] + P(11,8)*SPP[10] - (P(10,8)*q0)*0.5f + dt*(P(1,5) + P(0,5)*SF[8] + P(2,5)*SF[7] + P(3,5)*SF[11] - P(12,5)*SF[15] + P(11,5)*SPP[10] - (P(10,5)*q0)*0.5f); + nextP(2,8) = P(2,8) + P(0,8)*SF[6] + P(1,8)*SF[10] + P(3,8)*SF[8] + P(12,8)*SF[14] - P(10,8)*SPP[10] - (P(11,8)*q0)*0.5f + dt*(P(2,5) + P(0,5)*SF[6] + P(1,5)*SF[10] + P(3,5)*SF[8] + P(12,5)*SF[14] - P(10,5)*SPP[10] - (P(11,5)*q0)*0.5f); + nextP(3,8) = P(3,8) + P(0,8)*SF[7] + P(1,8)*SF[6] + P(2,8)*SF[9] + P(10,8)*SF[15] - P(11,8)*SF[14] - (P(12,8)*q0)*0.5f + dt*(P(3,5) + P(0,5)*SF[7] + P(1,5)*SF[6] + P(2,5)*SF[9] + P(10,5)*SF[15] - P(11,5)*SF[14] - (P(12,5)*q0)*0.5f); + nextP(4,8) = P(4,8) + P(0,8)*SF[5] + P(1,8)*SF[3] - P(3,8)*SF[4] + P(2,8)*SPP[0] + P(13,8)*SPP[3] + P(14,8)*SPP[6] - P(15,8)*SPP[9] + dt*(P(4,5) + P(0,5)*SF[5] + P(1,5)*SF[3] - P(3,5)*SF[4] + P(2,5)*SPP[0] + P(13,5)*SPP[3] + P(14,5)*SPP[6] - P(15,5)*SPP[9]); + nextP(5,8) = P(5,8) + P(0,8)*SF[4] + P(2,8)*SF[3] + P(3,8)*SF[5] - P(1,8)*SPP[0] - P(13,8)*SPP[8] + P(14,8)*SPP[2] + P(15,8)*SPP[5] + dt*(P(5,5) + P(0,5)*SF[4] + P(2,5)*SF[3] + P(3,5)*SF[5] - P(1,5)*SPP[0] - P(13,5)*SPP[8] + P(14,5)*SPP[2] + P(15,5)*SPP[5]); + nextP(6,8) = P(6,8) + P(1,8)*SF[4] - P(2,8)*SF[5] + P(3,8)*SF[3] + P(0,8)*SPP[0] + P(13,8)*SPP[4] - P(14,8)*SPP[7] - P(15,8)*SPP[1] + dt*(P(6,5) + P(1,5)*SF[4] - P(2,5)*SF[5] + P(3,5)*SF[3] + P(0,5)*SPP[0] + P(13,5)*SPP[4] - P(14,5)*SPP[7] - P(15,5)*SPP[1]); + nextP(7,8) = P(7,8) + P(4,8)*dt + dt*(P(7,5) + P(4,5)*dt); + nextP(8,8) = P(8,8) + P(5,8)*dt + dt*(P(8,5) + P(5,5)*dt); + nextP(0,9) = P(0,9) + P(1,9)*SF[9] + P(2,9)*SF[11] + P(3,9)*SF[10] + P(10,9)*SF[14] + P(11,9)*SF[15] + P(12,9)*SPP[10] + dt*(P(0,6) + P(1,6)*SF[9] + P(2,6)*SF[11] + P(3,6)*SF[10] + P(10,6)*SF[14] + P(11,6)*SF[15] + P(12,6)*SPP[10]); + nextP(1,9) = P(1,9) + P(0,9)*SF[8] + P(2,9)*SF[7] + P(3,9)*SF[11] - P(12,9)*SF[15] + P(11,9)*SPP[10] - (P(10,9)*q0)*0.5f + dt*(P(1,6) + P(0,6)*SF[8] + P(2,6)*SF[7] + P(3,6)*SF[11] - P(12,6)*SF[15] + P(11,6)*SPP[10] - (P(10,6)*q0)*0.5f); + nextP(2,9) = P(2,9) + P(0,9)*SF[6] + P(1,9)*SF[10] + P(3,9)*SF[8] + P(12,9)*SF[14] - P(10,9)*SPP[10] - (P(11,9)*q0)*0.5f + dt*(P(2,6) + P(0,6)*SF[6] + P(1,6)*SF[10] + P(3,6)*SF[8] + P(12,6)*SF[14] - P(10,6)*SPP[10] - (P(11,6)*q0)*0.5f); + nextP(3,9) = P(3,9) + P(0,9)*SF[7] + P(1,9)*SF[6] + P(2,9)*SF[9] + P(10,9)*SF[15] - P(11,9)*SF[14] - (P(12,9)*q0)*0.5f + dt*(P(3,6) + P(0,6)*SF[7] + P(1,6)*SF[6] + P(2,6)*SF[9] + P(10,6)*SF[15] - P(11,6)*SF[14] - (P(12,6)*q0)*0.5f); + nextP(4,9) = P(4,9) + P(0,9)*SF[5] + P(1,9)*SF[3] - P(3,9)*SF[4] + P(2,9)*SPP[0] + P(13,9)*SPP[3] + P(14,9)*SPP[6] - P(15,9)*SPP[9] + dt*(P(4,6) + P(0,6)*SF[5] + P(1,6)*SF[3] - P(3,6)*SF[4] + P(2,6)*SPP[0] + P(13,6)*SPP[3] + P(14,6)*SPP[6] - P(15,6)*SPP[9]); + nextP(5,9) = P(5,9) + P(0,9)*SF[4] + P(2,9)*SF[3] + P(3,9)*SF[5] - P(1,9)*SPP[0] - P(13,9)*SPP[8] + P(14,9)*SPP[2] + P(15,9)*SPP[5] + dt*(P(5,6) + P(0,6)*SF[4] + P(2,6)*SF[3] + P(3,6)*SF[5] - P(1,6)*SPP[0] - P(13,6)*SPP[8] + P(14,6)*SPP[2] + P(15,6)*SPP[5]); + nextP(6,9) = P(6,9) + P(1,9)*SF[4] - P(2,9)*SF[5] + P(3,9)*SF[3] + P(0,9)*SPP[0] + P(13,9)*SPP[4] - P(14,9)*SPP[7] - P(15,9)*SPP[1] + dt*(P(6,6) + P(1,6)*SF[4] - P(2,6)*SF[5] + P(3,6)*SF[3] + P(0,6)*SPP[0] + P(13,6)*SPP[4] - P(14,6)*SPP[7] - P(15,6)*SPP[1]); + nextP(7,9) = P(7,9) + P(4,9)*dt + dt*(P(7,6) + P(4,6)*dt); + nextP(8,9) = P(8,9) + P(5,9)*dt + dt*(P(8,6) + P(5,6)*dt); + nextP(9,9) = P(9,9) + P(6,9)*dt + dt*(P(9,6) + P(6,6)*dt); + nextP(0,10) = P(0,10) + P(1,10)*SF[9] + P(2,10)*SF[11] + P(3,10)*SF[10] + P(10,10)*SF[14] + P(11,10)*SF[15] + P(12,10)*SPP[10]; + nextP(1,10) = P(1,10) + P(0,10)*SF[8] + P(2,10)*SF[7] + P(3,10)*SF[11] - P(12,10)*SF[15] + P(11,10)*SPP[10] - (P(10,10)*q0)*0.5f; + nextP(2,10) = P(2,10) + P(0,10)*SF[6] + P(1,10)*SF[10] + P(3,10)*SF[8] + P(12,10)*SF[14] - P(10,10)*SPP[10] - (P(11,10)*q0)*0.5f; + nextP(3,10) = P(3,10) + P(0,10)*SF[7] + P(1,10)*SF[6] + P(2,10)*SF[9] + P(10,10)*SF[15] - P(11,10)*SF[14] - (P(12,10)*q0)*0.5f; + nextP(4,10) = P(4,10) + P(0,10)*SF[5] + P(1,10)*SF[3] - P(3,10)*SF[4] + P(2,10)*SPP[0] + P(13,10)*SPP[3] + P(14,10)*SPP[6] - P(15,10)*SPP[9]; + nextP(5,10) = P(5,10) + P(0,10)*SF[4] + P(2,10)*SF[3] + P(3,10)*SF[5] - P(1,10)*SPP[0] - P(13,10)*SPP[8] + P(14,10)*SPP[2] + P(15,10)*SPP[5]; + nextP(6,10) = P(6,10) + P(1,10)*SF[4] - P(2,10)*SF[5] + P(3,10)*SF[3] + P(0,10)*SPP[0] + P(13,10)*SPP[4] - P(14,10)*SPP[7] - P(15,10)*SPP[1]; + nextP(7,10) = P(7,10) + P(4,10)*dt; + nextP(8,10) = P(8,10) + P(5,10)*dt; + nextP(9,10) = P(9,10) + P(6,10)*dt; + nextP(10,10) = P(10,10); + nextP(0,11) = P(0,11) + P(1,11)*SF[9] + P(2,11)*SF[11] + P(3,11)*SF[10] + P(10,11)*SF[14] + P(11,11)*SF[15] + P(12,11)*SPP[10]; + nextP(1,11) = P(1,11) + P(0,11)*SF[8] + P(2,11)*SF[7] + P(3,11)*SF[11] - P(12,11)*SF[15] + P(11,11)*SPP[10] - (P(10,11)*q0)*0.5f; + nextP(2,11) = P(2,11) + P(0,11)*SF[6] + P(1,11)*SF[10] + P(3,11)*SF[8] + P(12,11)*SF[14] - P(10,11)*SPP[10] - (P(11,11)*q0)*0.5f; + nextP(3,11) = P(3,11) + P(0,11)*SF[7] + P(1,11)*SF[6] + P(2,11)*SF[9] + P(10,11)*SF[15] - P(11,11)*SF[14] - (P(12,11)*q0)*0.5f; + nextP(4,11) = P(4,11) + P(0,11)*SF[5] + P(1,11)*SF[3] - P(3,11)*SF[4] + P(2,11)*SPP[0] + P(13,11)*SPP[3] + P(14,11)*SPP[6] - P(15,11)*SPP[9]; + nextP(5,11) = P(5,11) + P(0,11)*SF[4] + P(2,11)*SF[3] + P(3,11)*SF[5] - P(1,11)*SPP[0] - P(13,11)*SPP[8] + P(14,11)*SPP[2] + P(15,11)*SPP[5]; + nextP(6,11) = P(6,11) + P(1,11)*SF[4] - P(2,11)*SF[5] + P(3,11)*SF[3] + P(0,11)*SPP[0] + P(13,11)*SPP[4] - P(14,11)*SPP[7] - P(15,11)*SPP[1]; + nextP(7,11) = P(7,11) + P(4,11)*dt; + nextP(8,11) = P(8,11) + P(5,11)*dt; + nextP(9,11) = P(9,11) + P(6,11)*dt; + nextP(10,11) = P(10,11); + nextP(11,11) = P(11,11); + nextP(0,12) = P(0,12) + P(1,12)*SF[9] + P(2,12)*SF[11] + P(3,12)*SF[10] + P(10,12)*SF[14] + P(11,12)*SF[15] + P(12,12)*SPP[10]; + nextP(1,12) = P(1,12) + P(0,12)*SF[8] + P(2,12)*SF[7] + P(3,12)*SF[11] - P(12,12)*SF[15] + P(11,12)*SPP[10] - (P(10,12)*q0)*0.5f; + nextP(2,12) = P(2,12) + P(0,12)*SF[6] + P(1,12)*SF[10] + P(3,12)*SF[8] + P(12,12)*SF[14] - P(10,12)*SPP[10] - (P(11,12)*q0)*0.5f; + nextP(3,12) = P(3,12) + P(0,12)*SF[7] + P(1,12)*SF[6] + P(2,12)*SF[9] + P(10,12)*SF[15] - P(11,12)*SF[14] - (P(12,12)*q0)*0.5f; + nextP(4,12) = P(4,12) + P(0,12)*SF[5] + P(1,12)*SF[3] - P(3,12)*SF[4] + P(2,12)*SPP[0] + P(13,12)*SPP[3] + P(14,12)*SPP[6] - P(15,12)*SPP[9]; + nextP(5,12) = P(5,12) + P(0,12)*SF[4] + P(2,12)*SF[3] + P(3,12)*SF[5] - P(1,12)*SPP[0] - P(13,12)*SPP[8] + P(14,12)*SPP[2] + P(15,12)*SPP[5]; + nextP(6,12) = P(6,12) + P(1,12)*SF[4] - P(2,12)*SF[5] + P(3,12)*SF[3] + P(0,12)*SPP[0] + P(13,12)*SPP[4] - P(14,12)*SPP[7] - P(15,12)*SPP[1]; + nextP(7,12) = P(7,12) + P(4,12)*dt; + nextP(8,12) = P(8,12) + P(5,12)*dt; + nextP(9,12) = P(9,12) + P(6,12)*dt; + nextP(10,12) = P(10,12); + nextP(11,12) = P(11,12); + nextP(12,12) = P(12,12); + + for (unsigned i = 13; i <= 15; i++) { + nextP(0,i) = P(0,i) + P(1,i)*SF[9] + P(2,i)*SF[11] + P(3,i)*SF[10] + P(10,i)*SF[14] + P(11,i)*SF[15] + P(12,i)*SPP[10]; + nextP(1,i) = P(1,i) + P(0,i)*SF[8] + P(2,i)*SF[7] + P(3,i)*SF[11] - P(12,i)*SF[15] + P(11,i)*SPP[10] - (P(10,i)*q0)*0.5f; + nextP(2,i) = P(2,i) + P(0,i)*SF[6] + P(1,i)*SF[10] + P(3,i)*SF[8] + P(12,i)*SF[14] - P(10,i)*SPP[10] - (P(11,i)*q0)*0.5f; + nextP(3,i) = P(3,i) + P(0,i)*SF[7] + P(1,i)*SF[6] + P(2,i)*SF[9] + P(10,i)*SF[15] - P(11,i)*SF[14] - (P(12,i)*q0)*0.5f; + nextP(4,i) = P(4,i) + P(0,i)*SF[5] + P(1,i)*SF[3] - P(3,i)*SF[4] + P(2,i)*SPP[0] + P(13,i)*SPP[3] + P(14,i)*SPP[6] - P(15,i)*SPP[9]; + nextP(5,i) = P(5,i) + P(0,i)*SF[4] + P(2,i)*SF[3] + P(3,i)*SF[5] - P(1,i)*SPP[0] - P(13,i)*SPP[8] + P(14,i)*SPP[2] + P(15,i)*SPP[5]; + nextP(6,i) = P(6,i) + P(1,i)*SF[4] - P(2,i)*SF[5] + P(3,i)*SF[3] + P(0,i)*SPP[0] + P(13,i)*SPP[4] - P(14,i)*SPP[7] - P(15,i)*SPP[1]; + nextP(7,i) = P(7,i) + P(4,i)*dt; + nextP(8,i) = P(8,i) + P(5,i)*dt; + nextP(9,i) = P(9,i) + P(6,i)*dt; + nextP(10,i) = P(10,i); + nextP(11,i) = P(11,i); + nextP(12,i) = P(12,i); + nextP(13,i) = P(13,i); + + if (i > 13) { + nextP(14,i) = P(14,i); + } + + if (i > 14) { + nextP(15,i) = P(15,i); + } + } + + nextP(0,16) = P(0,16) + P(1,16)*SF[9] + P(2,16)*SF[11] + P(3,16)*SF[10] + P(10,16)*SF[14] + P(11,16)*SF[15] + P(12,16)*SPP[10]; + nextP(1,16) = P(1,16) + P(0,16)*SF[8] + P(2,16)*SF[7] + P(3,16)*SF[11] - P(12,16)*SF[15] + P(11,16)*SPP[10] - (P(10,16)*q0)*0.5f; + nextP(2,16) = P(2,16) + P(0,16)*SF[6] + P(1,16)*SF[10] + P(3,16)*SF[8] + P(12,16)*SF[14] - P(10,16)*SPP[10] - (P(11,16)*q0)*0.5f; + nextP(3,16) = P(3,16) + P(0,16)*SF[7] + P(1,16)*SF[6] + P(2,16)*SF[9] + P(10,16)*SF[15] - P(11,16)*SF[14] - (P(12,16)*q0)*0.5f; + nextP(4,16) = P(4,16) + P(0,16)*SF[5] + P(1,16)*SF[3] - P(3,16)*SF[4] + P(2,16)*SPP[0] + P(13,16)*SPP[3] + P(14,16)*SPP[6] - P(15,16)*SPP[9]; + nextP(5,16) = P(5,16) + P(0,16)*SF[4] + P(2,16)*SF[3] + P(3,16)*SF[5] - P(1,16)*SPP[0] - P(13,16)*SPP[8] + P(14,16)*SPP[2] + P(15,16)*SPP[5]; + nextP(6,16) = P(6,16) + P(1,16)*SF[4] - P(2,16)*SF[5] + P(3,16)*SF[3] + P(0,16)*SPP[0] + P(13,16)*SPP[4] - P(14,16)*SPP[7] - P(15,16)*SPP[1]; + nextP(7,16) = P(7,16) + P(4,16)*dt; + nextP(8,16) = P(8,16) + P(5,16)*dt; + nextP(9,16) = P(9,16) + P(6,16)*dt; + nextP(10,16) = P(10,16); + nextP(11,16) = P(11,16); + nextP(12,16) = P(12,16); + nextP(13,16) = P(13,16); + nextP(14,16) = P(14,16); + nextP(15,16) = P(15,16); + nextP(16,16) = P(16,16); + nextP(0,17) = P(0,17) + P(1,17)*SF[9] + P(2,17)*SF[11] + P(3,17)*SF[10] + P(10,17)*SF[14] + P(11,17)*SF[15] + P(12,17)*SPP[10]; + nextP(1,17) = P(1,17) + P(0,17)*SF[8] + P(2,17)*SF[7] + P(3,17)*SF[11] - P(12,17)*SF[15] + P(11,17)*SPP[10] - (P(10,17)*q0)*0.5f; + nextP(2,17) = P(2,17) + P(0,17)*SF[6] + P(1,17)*SF[10] + P(3,17)*SF[8] + P(12,17)*SF[14] - P(10,17)*SPP[10] - (P(11,17)*q0)*0.5f; + nextP(3,17) = P(3,17) + P(0,17)*SF[7] + P(1,17)*SF[6] + P(2,17)*SF[9] + P(10,17)*SF[15] - P(11,17)*SF[14] - (P(12,17)*q0)*0.5f; + nextP(4,17) = P(4,17) + P(0,17)*SF[5] + P(1,17)*SF[3] - P(3,17)*SF[4] + P(2,17)*SPP[0] + P(13,17)*SPP[3] + P(14,17)*SPP[6] - P(15,17)*SPP[9]; + nextP(5,17) = P(5,17) + P(0,17)*SF[4] + P(2,17)*SF[3] + P(3,17)*SF[5] - P(1,17)*SPP[0] - P(13,17)*SPP[8] + P(14,17)*SPP[2] + P(15,17)*SPP[5]; + nextP(6,17) = P(6,17) + P(1,17)*SF[4] - P(2,17)*SF[5] + P(3,17)*SF[3] + P(0,17)*SPP[0] + P(13,17)*SPP[4] - P(14,17)*SPP[7] - P(15,17)*SPP[1]; + nextP(7,17) = P(7,17) + P(4,17)*dt; + nextP(8,17) = P(8,17) + P(5,17)*dt; + nextP(9,17) = P(9,17) + P(6,17)*dt; + nextP(10,17) = P(10,17); + nextP(11,17) = P(11,17); + nextP(12,17) = P(12,17); + nextP(13,17) = P(13,17); + nextP(14,17) = P(14,17); + nextP(15,17) = P(15,17); + nextP(16,17) = P(16,17); + nextP(17,17) = P(17,17); + nextP(0,18) = P(0,18) + P(1,18)*SF[9] + P(2,18)*SF[11] + P(3,18)*SF[10] + P(10,18)*SF[14] + P(11,18)*SF[15] + P(12,18)*SPP[10]; + nextP(1,18) = P(1,18) + P(0,18)*SF[8] + P(2,18)*SF[7] + P(3,18)*SF[11] - P(12,18)*SF[15] + P(11,18)*SPP[10] - (P(10,18)*q0)*0.5f; + nextP(2,18) = P(2,18) + P(0,18)*SF[6] + P(1,18)*SF[10] + P(3,18)*SF[8] + P(12,18)*SF[14] - P(10,18)*SPP[10] - (P(11,18)*q0)*0.5f; + nextP(3,18) = P(3,18) + P(0,18)*SF[7] + P(1,18)*SF[6] + P(2,18)*SF[9] + P(10,18)*SF[15] - P(11,18)*SF[14] - (P(12,18)*q0)*0.5f; + nextP(4,18) = P(4,18) + P(0,18)*SF[5] + P(1,18)*SF[3] - P(3,18)*SF[4] + P(2,18)*SPP[0] + P(13,18)*SPP[3] + P(14,18)*SPP[6] - P(15,18)*SPP[9]; + nextP(5,18) = P(5,18) + P(0,18)*SF[4] + P(2,18)*SF[3] + P(3,18)*SF[5] - P(1,18)*SPP[0] - P(13,18)*SPP[8] + P(14,18)*SPP[2] + P(15,18)*SPP[5]; + nextP(6,18) = P(6,18) + P(1,18)*SF[4] - P(2,18)*SF[5] + P(3,18)*SF[3] + P(0,18)*SPP[0] + P(13,18)*SPP[4] - P(14,18)*SPP[7] - P(15,18)*SPP[1]; + nextP(7,18) = P(7,18) + P(4,18)*dt; + nextP(8,18) = P(8,18) + P(5,18)*dt; + nextP(9,18) = P(9,18) + P(6,18)*dt; + nextP(10,18) = P(10,18); + nextP(11,18) = P(11,18); + nextP(12,18) = P(12,18); + nextP(13,18) = P(13,18); + nextP(14,18) = P(14,18); + nextP(15,18) = P(15,18); + nextP(16,18) = P(16,18); + nextP(17,18) = P(17,18); + nextP(18,18) = P(18,18); + nextP(0,19) = P(0,19) + P(1,19)*SF[9] + P(2,19)*SF[11] + P(3,19)*SF[10] + P(10,19)*SF[14] + P(11,19)*SF[15] + P(12,19)*SPP[10]; + nextP(1,19) = P(1,19) + P(0,19)*SF[8] + P(2,19)*SF[7] + P(3,19)*SF[11] - P(12,19)*SF[15] + P(11,19)*SPP[10] - (P(10,19)*q0)*0.5f; + nextP(2,19) = P(2,19) + P(0,19)*SF[6] + P(1,19)*SF[10] + P(3,19)*SF[8] + P(12,19)*SF[14] - P(10,19)*SPP[10] - (P(11,19)*q0)*0.5f; + nextP(3,19) = P(3,19) + P(0,19)*SF[7] + P(1,19)*SF[6] + P(2,19)*SF[9] + P(10,19)*SF[15] - P(11,19)*SF[14] - (P(12,19)*q0)*0.5f; + nextP(4,19) = P(4,19) + P(0,19)*SF[5] + P(1,19)*SF[3] - P(3,19)*SF[4] + P(2,19)*SPP[0] + P(13,19)*SPP[3] + P(14,19)*SPP[6] - P(15,19)*SPP[9]; + nextP(5,19) = P(5,19) + P(0,19)*SF[4] + P(2,19)*SF[3] + P(3,19)*SF[5] - P(1,19)*SPP[0] - P(13,19)*SPP[8] + P(14,19)*SPP[2] + P(15,19)*SPP[5]; + nextP(6,19) = P(6,19) + P(1,19)*SF[4] - P(2,19)*SF[5] + P(3,19)*SF[3] + P(0,19)*SPP[0] + P(13,19)*SPP[4] - P(14,19)*SPP[7] - P(15,19)*SPP[1]; + nextP(7,19) = P(7,19) + P(4,19)*dt; + nextP(8,19) = P(8,19) + P(5,19)*dt; + nextP(9,19) = P(9,19) + P(6,19)*dt; + nextP(10,19) = P(10,19); + nextP(11,19) = P(11,19); + nextP(12,19) = P(12,19); + nextP(13,19) = P(13,19); + nextP(14,19) = P(14,19); + nextP(15,19) = P(15,19); + nextP(16,19) = P(16,19); + nextP(17,19) = P(17,19); + nextP(18,19) = P(18,19); + nextP(19,19) = P(19,19); + nextP(0,20) = P(0,20) + P(1,20)*SF[9] + P(2,20)*SF[11] + P(3,20)*SF[10] + P(10,20)*SF[14] + P(11,20)*SF[15] + P(12,20)*SPP[10]; + nextP(1,20) = P(1,20) + P(0,20)*SF[8] + P(2,20)*SF[7] + P(3,20)*SF[11] - P(12,20)*SF[15] + P(11,20)*SPP[10] - (P(10,20)*q0)*0.5f; + nextP(2,20) = P(2,20) + P(0,20)*SF[6] + P(1,20)*SF[10] + P(3,20)*SF[8] + P(12,20)*SF[14] - P(10,20)*SPP[10] - (P(11,20)*q0)*0.5f; + nextP(3,20) = P(3,20) + P(0,20)*SF[7] + P(1,20)*SF[6] + P(2,20)*SF[9] + P(10,20)*SF[15] - P(11,20)*SF[14] - (P(12,20)*q0)*0.5f; + nextP(4,20) = P(4,20) + P(0,20)*SF[5] + P(1,20)*SF[3] - P(3,20)*SF[4] + P(2,20)*SPP[0] + P(13,20)*SPP[3] + P(14,20)*SPP[6] - P(15,20)*SPP[9]; + nextP(5,20) = P(5,20) + P(0,20)*SF[4] + P(2,20)*SF[3] + P(3,20)*SF[5] - P(1,20)*SPP[0] - P(13,20)*SPP[8] + P(14,20)*SPP[2] + P(15,20)*SPP[5]; + nextP(6,20) = P(6,20) + P(1,20)*SF[4] - P(2,20)*SF[5] + P(3,20)*SF[3] + P(0,20)*SPP[0] + P(13,20)*SPP[4] - P(14,20)*SPP[7] - P(15,20)*SPP[1]; + nextP(7,20) = P(7,20) + P(4,20)*dt; + nextP(8,20) = P(8,20) + P(5,20)*dt; + nextP(9,20) = P(9,20) + P(6,20)*dt; + nextP(10,20) = P(10,20); + nextP(11,20) = P(11,20); + nextP(12,20) = P(12,20); + nextP(13,20) = P(13,20); + nextP(14,20) = P(14,20); + nextP(15,20) = P(15,20); + nextP(16,20) = P(16,20); + nextP(17,20) = P(17,20); + nextP(18,20) = P(18,20); + nextP(19,20) = P(19,20); + nextP(20,20) = P(20,20); + nextP(0,21) = P(0,21) + P(1,21)*SF[9] + P(2,21)*SF[11] + P(3,21)*SF[10] + P(10,21)*SF[14] + P(11,21)*SF[15] + P(12,21)*SPP[10]; + nextP(1,21) = P(1,21) + P(0,21)*SF[8] + P(2,21)*SF[7] + P(3,21)*SF[11] - P(12,21)*SF[15] + P(11,21)*SPP[10] - (P(10,21)*q0)*0.5f; + nextP(2,21) = P(2,21) + P(0,21)*SF[6] + P(1,21)*SF[10] + P(3,21)*SF[8] + P(12,21)*SF[14] - P(10,21)*SPP[10] - (P(11,21)*q0)*0.5f; + nextP(3,21) = P(3,21) + P(0,21)*SF[7] + P(1,21)*SF[6] + P(2,21)*SF[9] + P(10,21)*SF[15] - P(11,21)*SF[14] - (P(12,21)*q0)*0.5f; + nextP(4,21) = P(4,21) + P(0,21)*SF[5] + P(1,21)*SF[3] - P(3,21)*SF[4] + P(2,21)*SPP[0] + P(13,21)*SPP[3] + P(14,21)*SPP[6] - P(15,21)*SPP[9]; + nextP(5,21) = P(5,21) + P(0,21)*SF[4] + P(2,21)*SF[3] + P(3,21)*SF[5] - P(1,21)*SPP[0] - P(13,21)*SPP[8] + P(14,21)*SPP[2] + P(15,21)*SPP[5]; + nextP(6,21) = P(6,21) + P(1,21)*SF[4] - P(2,21)*SF[5] + P(3,21)*SF[3] + P(0,21)*SPP[0] + P(13,21)*SPP[4] - P(14,21)*SPP[7] - P(15,21)*SPP[1]; + nextP(7,21) = P(7,21) + P(4,21)*dt; + nextP(8,21) = P(8,21) + P(5,21)*dt; + nextP(9,21) = P(9,21) + P(6,21)*dt; + nextP(10,21) = P(10,21); + nextP(11,21) = P(11,21); + nextP(12,21) = P(12,21); + nextP(13,21) = P(13,21); + nextP(14,21) = P(14,21); + nextP(15,21) = P(15,21); + nextP(16,21) = P(16,21); + nextP(17,21) = P(17,21); + nextP(18,21) = P(18,21); + nextP(19,21) = P(19,21); + nextP(20,21) = P(20,21); + nextP(21,21) = P(21,21); + nextP(0,22) = P(0,22) + P(1,22)*SF[9] + P(2,22)*SF[11] + P(3,22)*SF[10] + P(10,22)*SF[14] + P(11,22)*SF[15] + P(12,22)*SPP[10]; + nextP(1,22) = P(1,22) + P(0,22)*SF[8] + P(2,22)*SF[7] + P(3,22)*SF[11] - P(12,22)*SF[15] + P(11,22)*SPP[10] - (P(10,22)*q0)*0.5f; + nextP(2,22) = P(2,22) + P(0,22)*SF[6] + P(1,22)*SF[10] + P(3,22)*SF[8] + P(12,22)*SF[14] - P(10,22)*SPP[10] - (P(11,22)*q0)*0.5f; + nextP(3,22) = P(3,22) + P(0,22)*SF[7] + P(1,22)*SF[6] + P(2,22)*SF[9] + P(10,22)*SF[15] - P(11,22)*SF[14] - (P(12,22)*q0)*0.5f; + nextP(4,22) = P(4,22) + P(0,22)*SF[5] + P(1,22)*SF[3] - P(3,22)*SF[4] + P(2,22)*SPP[0] + P(13,22)*SPP[3] + P(14,22)*SPP[6] - P(15,22)*SPP[9]; + nextP(5,22) = P(5,22) + P(0,22)*SF[4] + P(2,22)*SF[3] + P(3,22)*SF[5] - P(1,22)*SPP[0] - P(13,22)*SPP[8] + P(14,22)*SPP[2] + P(15,22)*SPP[5]; + nextP(6,22) = P(6,22) + P(1,22)*SF[4] - P(2,22)*SF[5] + P(3,22)*SF[3] + P(0,22)*SPP[0] + P(13,22)*SPP[4] - P(14,22)*SPP[7] - P(15,22)*SPP[1]; + nextP(7,22) = P(7,22) + P(4,22)*dt; + nextP(8,22) = P(8,22) + P(5,22)*dt; + nextP(9,22) = P(9,22) + P(6,22)*dt; + nextP(10,22) = P(10,22); + nextP(11,22) = P(11,22); + nextP(12,22) = P(12,22); + nextP(13,22) = P(13,22); + nextP(14,22) = P(14,22); + nextP(15,22) = P(15,22); + nextP(16,22) = P(16,22); + nextP(17,22) = P(17,22); + nextP(18,22) = P(18,22); + nextP(19,22) = P(19,22); + nextP(20,22) = P(20,22); + nextP(21,22) = P(21,22); + nextP(22,22) = P(22,22); + nextP(0,23) = P(0,23) + P(1,23)*SF[9] + P(2,23)*SF[11] + P(3,23)*SF[10] + P(10,23)*SF[14] + P(11,23)*SF[15] + P(12,23)*SPP[10]; + nextP(1,23) = P(1,23) + P(0,23)*SF[8] + P(2,23)*SF[7] + P(3,23)*SF[11] - P(12,23)*SF[15] + P(11,23)*SPP[10] - (P(10,23)*q0)*0.5f; + nextP(2,23) = P(2,23) + P(0,23)*SF[6] + P(1,23)*SF[10] + P(3,23)*SF[8] + P(12,23)*SF[14] - P(10,23)*SPP[10] - (P(11,23)*q0)*0.5f; + nextP(3,23) = P(3,23) + P(0,23)*SF[7] + P(1,23)*SF[6] + P(2,23)*SF[9] + P(10,23)*SF[15] - P(11,23)*SF[14] - (P(12,23)*q0)*0.5f; + nextP(4,23) = P(4,23) + P(0,23)*SF[5] + P(1,23)*SF[3] - P(3,23)*SF[4] + P(2,23)*SPP[0] + P(13,23)*SPP[3] + P(14,23)*SPP[6] - P(15,23)*SPP[9]; + nextP(5,23) = P(5,23) + P(0,23)*SF[4] + P(2,23)*SF[3] + P(3,23)*SF[5] - P(1,23)*SPP[0] - P(13,23)*SPP[8] + P(14,23)*SPP[2] + P(15,23)*SPP[5]; + nextP(6,23) = P(6,23) + P(1,23)*SF[4] - P(2,23)*SF[5] + P(3,23)*SF[3] + P(0,23)*SPP[0] + P(13,23)*SPP[4] - P(14,23)*SPP[7] - P(15,23)*SPP[1]; + nextP(7,23) = P(7,23) + P(4,23)*dt; + nextP(8,23) = P(8,23) + P(5,23)*dt; + nextP(9,23) = P(9,23) + P(6,23)*dt; + nextP(10,23) = P(10,23); + nextP(11,23) = P(11,23); + nextP(12,23) = P(12,23); + nextP(13,23) = P(13,23); + nextP(14,23) = P(14,23); + nextP(15,23) = P(15,23); + nextP(16,23) = P(16,23); + nextP(17,23) = P(17,23); + nextP(18,23) = P(18,23); + nextP(19,23) = P(19,23); + nextP(20,23) = P(20,23); + nextP(21,23) = P(21,23); + nextP(22,23) = P(22,23); + nextP(23,23) = P(23,23); + + // capture largest difference + float max_diff_fraction = 0.0f; + int max_row, max_col; + float max_old, max_new; + + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + float diff_fraction = fabsf(nextP_sympy(row,col)-nextP(row,col)) / fabsf(nextP(row,col)); + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_col = col; + max_old = nextP(row,col); + max_new = nextP_sympy(row,col); + } + } + } + if (max_diff_fraction > 5E-5f) { + printf("Fail: Covariance Prediction max diff fraction = %e , old = %e , new = %e , location index = %i,%i\n",max_diff_fraction, max_old, max_new, max_row, max_col); + } else { + printf("Pass: Covariance Prediction max diff fraction = %e , old = %e , new = %e , location index = %i,%i\n",max_diff_fraction, max_old, max_new, max_row, max_col); + } + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_fusion_generated_compare.cpp new file mode 100644 index 0000000000..227a4a5422 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_fusion_generated_compare.cpp @@ -0,0 +1,640 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" +#include "util.h" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; + +template +using SparseVector24f = matrix::SparseVectorf<24, Idxs...>; + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + + SparseVector24f<0,1,2,3,4,5,6> Hfusion; // Optical flow observation Jacobians + Vector24f Kfusion; // Optical flow observation Kalman gains + + Vector24f Hfusion_sympy; + Vector24f Kfusion_sympy; + + Vector24f Hfusion_matlab; + Vector24f Kfusion_matlab; + + const float R_LOS = sq(0.15f); + + float flow_innov_var; + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + // get latest velocity in earth frame + const float vn = 10.0f * 2.0f * ((float)rand() - 0.5f); + const float ve = 10.0f * 2.0f * ((float)rand() - 0.5f); + const float vd = 2.0f * ((float)rand() - 0.5f); + + const float range = 5.0f; + + matrix::Dcmf Tbs; + Tbs.identity(); + + // create a symmetrical positive definite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // evaluate sub expressions used by sympy code + const float HK0 = -Tbs(1,0)*q2 + Tbs(1,1)*q1 + Tbs(1,2)*q0; + const float HK1 = Tbs(1,0)*q3 + Tbs(1,1)*q0 - Tbs(1,2)*q1; + const float HK2 = Tbs(1,0)*q0 - Tbs(1,1)*q3 + Tbs(1,2)*q2; + const float HK3 = HK0*vd + HK1*ve + HK2*vn; + const float HK4 = 1.0F/range; + const float HK5 = 2*HK4; + const float HK6 = Tbs(1,0)*q1 + Tbs(1,1)*q2 + Tbs(1,2)*q3; + const float HK7 = -HK0*ve + HK1*vd + HK6*vn; + const float HK8 = HK0*vn - HK2*vd + HK6*ve; + const float HK9 = -HK1*vn + HK2*ve + HK6*vd; + const float HK10 = q0*q2; + const float HK11 = q1*q3; + const float HK12 = HK10 + HK11; + const float HK13 = 2*Tbs(1,2); + const float HK14 = q0*q3; + const float HK15 = q1*q2; + const float HK16 = HK14 - HK15; + const float HK17 = 2*Tbs(1,1); + const float HK18 = ecl::powf(q1, 2); + const float HK19 = ecl::powf(q2, 2); + const float HK20 = -HK19; + const float HK21 = ecl::powf(q0, 2); + const float HK22 = ecl::powf(q3, 2); + const float HK23 = HK21 - HK22; + const float HK24 = HK18 + HK20 + HK23; + const float HK25 = HK12*HK13 - HK16*HK17 + HK24*Tbs(1,0); + const float HK26 = HK14 + HK15; + const float HK27 = 2*Tbs(1,0); + const float HK28 = q0*q1; + const float HK29 = q2*q3; + const float HK30 = HK28 - HK29; + const float HK31 = -HK18; + const float HK32 = HK19 + HK23 + HK31; + const float HK33 = -HK13*HK30 + HK26*HK27 + HK32*Tbs(1,1); + const float HK34 = HK28 + HK29; + const float HK35 = HK10 - HK11; + const float HK36 = HK20 + HK21 + HK22 + HK31; + const float HK37 = HK17*HK34 - HK27*HK35 + HK36*Tbs(1,2); + const float HK38 = 2*HK3; + const float HK39 = 2*HK7; + const float HK40 = 2*HK8; + const float HK41 = 2*HK9; + const float HK42 = HK25*P(0,4) + HK33*P(0,5) + HK37*P(0,6) + HK38*P(0,0) + HK39*P(0,1) + HK40*P(0,2) + HK41*P(0,3); + const float HK43 = ecl::powf(range, -2); + const float HK44 = HK25*P(4,6) + HK33*P(5,6) + HK37*P(6,6) + HK38*P(0,6) + HK39*P(1,6) + HK40*P(2,6) + HK41*P(3,6); + const float HK45 = HK25*P(4,5) + HK33*P(5,5) + HK37*P(5,6) + HK38*P(0,5) + HK39*P(1,5) + HK40*P(2,5) + HK41*P(3,5); + const float HK46 = HK25*P(4,4) + HK33*P(4,5) + HK37*P(4,6) + HK38*P(0,4) + HK39*P(1,4) + HK40*P(2,4) + HK41*P(3,4); + const float HK47 = HK25*P(2,4) + HK33*P(2,5) + HK37*P(2,6) + HK38*P(0,2) + HK39*P(1,2) + HK40*P(2,2) + HK41*P(2,3); + const float HK48 = HK25*P(3,4) + HK33*P(3,5) + HK37*P(3,6) + HK38*P(0,3) + HK39*P(1,3) + HK40*P(2,3) + HK41*P(3,3); + const float HK49 = HK25*P(1,4) + HK33*P(1,5) + HK37*P(1,6) + HK38*P(0,1) + HK39*P(1,1) + HK40*P(1,2) + HK41*P(1,3); + const float HK50 = HK4/(HK25*HK43*HK46 + HK33*HK43*HK45 + HK37*HK43*HK44 + HK38*HK42*HK43 + HK39*HK43*HK49 + HK40*HK43*HK47 + HK41*HK43*HK48 + R_LOS); + + const float HK51 = Tbs(0,1)*q1; + const float HK52 = Tbs(0,2)*q0; + const float HK53 = Tbs(0,0)*q2; + const float HK54 = HK51 + HK52 - HK53; + const float HK55 = Tbs(0,0)*q3; + const float HK56 = Tbs(0,1)*q0; + const float HK57 = Tbs(0,2)*q1; + const float HK58 = HK55 + HK56 - HK57; + const float HK59 = Tbs(0,0)*q0; + const float HK60 = Tbs(0,2)*q2; + const float HK61 = Tbs(0,1)*q3; + const float HK62 = HK59 + HK60 - HK61; + const float HK63 = HK54*vd + HK58*ve + HK62*vn; + const float HK64 = Tbs(0,0)*q1 + Tbs(0,1)*q2 + Tbs(0,2)*q3; + const float HK65 = HK58*vd + HK64*vn; + const float HK66 = -HK54*ve + HK65; + const float HK67 = HK54*vn + HK64*ve; + const float HK68 = -HK62*vd + HK67; + const float HK69 = HK62*ve + HK64*vd; + const float HK70 = -HK58*vn + HK69; + const float HK71 = 2*Tbs(0,1); + const float HK72 = 2*Tbs(0,2); + const float HK73 = HK12*HK72 + HK24*Tbs(0,0); + const float HK74 = -HK16*HK71 + HK73; + const float HK75 = 2*Tbs(0,0); + const float HK76 = HK26*HK75 + HK32*Tbs(0,1); + const float HK77 = -HK30*HK72 + HK76; + const float HK78 = HK34*HK71 + HK36*Tbs(0,2); + const float HK79 = -HK35*HK75 + HK78; + const float HK80 = 2*HK63; + const float HK81 = 2*HK65 + 2*ve*(-HK51 - HK52 + HK53); + const float HK82 = 2*HK67 + 2*vd*(-HK59 - HK60 + HK61); + const float HK83 = 2*HK69 + 2*vn*(-HK55 - HK56 + HK57); + const float HK84 = HK71*(-HK14 + HK15) + HK73; + const float HK85 = HK72*(-HK28 + HK29) + HK76; + const float HK86 = HK75*(-HK10 + HK11) + HK78; + const float HK87 = HK80*P(0,0) + HK81*P(0,1) + HK82*P(0,2) + HK83*P(0,3) + HK84*P(0,4) + HK85*P(0,5) + HK86*P(0,6); + const float HK88 = HK80*P(0,6) + HK81*P(1,6) + HK82*P(2,6) + HK83*P(3,6) + HK84*P(4,6) + HK85*P(5,6) + HK86*P(6,6); + const float HK89 = HK80*P(0,5) + HK81*P(1,5) + HK82*P(2,5) + HK83*P(3,5) + HK84*P(4,5) + HK85*P(5,5) + HK86*P(5,6); + const float HK90 = HK80*P(0,4) + HK81*P(1,4) + HK82*P(2,4) + HK83*P(3,4) + HK84*P(4,4) + HK85*P(4,5) + HK86*P(4,6); + const float HK91 = HK80*P(0,2) + HK81*P(1,2) + HK82*P(2,2) + HK83*P(2,3) + HK84*P(2,4) + HK85*P(2,5) + HK86*P(2,6); + const float HK92 = 2*HK43; + const float HK93 = HK80*P(0,3) + HK81*P(1,3) + HK82*P(2,3) + HK83*P(3,3) + HK84*P(3,4) + HK85*P(3,5) + HK86*P(3,6); + const float HK94 = HK80*P(0,1) + HK81*P(1,1) + HK82*P(1,2) + HK83*P(1,3) + HK84*P(1,4) + HK85*P(1,5) + HK86*P(1,6); + const float HK95 = HK4/(HK43*HK74*HK90 + HK43*HK77*HK89 + HK43*HK79*HK88 + HK43*HK80*HK87 + HK66*HK92*HK94 + HK68*HK91*HK92 + HK70*HK92*HK93 + R_LOS); + + + // Compare X axis equations + { + // evaluate sympy genrated equations for observatio Jacobians and Kalman gains + { + // calculate innovation variance for X axis observation and protect against a badly conditioned calculation + flow_innov_var = (HK25*HK43*HK46 + HK33*HK43*HK45 + HK37*HK43*HK44 + HK38*HK42*HK43 + HK39*HK43*HK49 + HK40*HK43*HK47 + HK41*HK43*HK48 + R_LOS); + + const float HK50 = HK4/flow_innov_var; + + // Observation Jacobians - axis 0 + Hfusion.at<0>() = HK3*HK5; + Hfusion.at<1>() = HK5*HK7; + Hfusion.at<2>() = HK5*HK8; + Hfusion.at<3>() = HK5*HK9; + Hfusion.at<4>() = HK25*HK4; + Hfusion.at<5>() = HK33*HK4; + Hfusion.at<6>() = HK37*HK4; + + // Kalman gains - axis 0 + Kfusion(0) = HK42*HK50; + Kfusion(1) = HK49*HK50; + Kfusion(2) = HK47*HK50; + Kfusion(3) = HK48*HK50; + Kfusion(4) = HK46*HK50; + Kfusion(5) = HK45*HK50; + Kfusion(6) = HK44*HK50; + + for (unsigned row = 7; row <= 23; row++) { + Kfusion(row) = HK50*(HK25*P(4,row) + HK33*P(5,row) + HK37*P(6,row) + HK38*P(0,row) + HK39*P(1,row) + HK40*P(2,row) + HK41*P(3,row)); + } + + // copy to arrays used for comparison + for (int row=0; row<7; row++) { + Hfusion_sympy(row) = Hfusion.atCompressedIndex(row); + } + for (int row=0; row<24; row++) { + Kfusion_sympy(row) = Kfusion(row); + } + + } + + // repeat calculation using matlab generated equations + + { + // calculate X axis observation Jacobian + float t2 = 1.0f / range; + float H_LOS[24] = {}; + H_LOS[0] = t2*(q1*vd*2.0f+q0*ve*2.0f-q3*vn*2.0f); + H_LOS[1] = t2*(q0*vd*2.0f-q1*ve*2.0f+q2*vn*2.0f); + H_LOS[2] = t2*(q3*vd*2.0f+q2*ve*2.0f+q1*vn*2.0f); + H_LOS[3] = -t2*(q2*vd*-2.0f+q3*ve*2.0f+q0*vn*2.0f); + H_LOS[4] = -t2*(q0*q3*2.0f-q1*q2*2.0f); + H_LOS[5] = t2*(q0*q0-q1*q1+q2*q2-q3*q3); + H_LOS[6] = t2*(q0*q1*2.0f+q2*q3*2.0f); + + // calculate intermediate variables for the X observation innovatoin variance and Kalman gains + float t3 = q1*vd*2.0f; + float t4 = q0*ve*2.0f; + float t11 = q3*vn*2.0f; + float t5 = t3+t4-t11; + float t6 = q0*q3*2.0f; + float t29 = q1*q2*2.0f; + float t7 = t6-t29; + float t8 = q0*q1*2.0f; + float t9 = q2*q3*2.0f; + float t10 = t8+t9; + float t12 = P(0,0)*t2*t5; + float t13 = q0*vd*2.0f; + float t14 = q2*vn*2.0f; + float t28 = q1*ve*2.0f; + float t15 = t13+t14-t28; + float t16 = q3*vd*2.0f; + float t17 = q2*ve*2.0f; + float t18 = q1*vn*2.0f; + float t19 = t16+t17+t18; + float t20 = q3*ve*2.0f; + float t21 = q0*vn*2.0f; + float t30 = q2*vd*2.0f; + float t22 = t20+t21-t30; + float t23 = q0*q0; + float t24 = q1*q1; + float t25 = q2*q2; + float t26 = q3*q3; + float t27 = t23-t24+t25-t26; + float t31 = P(1,1)*t2*t15; + float t32 = P(6,0)*t2*t10; + float t33 = P(1,0)*t2*t15; + float t34 = P(2,0)*t2*t19; + float t35 = P(5,0)*t2*t27; + float t79 = P(4,0)*t2*t7; + float t80 = P(3,0)*t2*t22; + float t36 = t12+t32+t33+t34+t35-t79-t80; + float t37 = t2*t5*t36; + float t38 = P(6,1)*t2*t10; + float t39 = P(0,1)*t2*t5; + float t40 = P(2,1)*t2*t19; + float t41 = P(5,1)*t2*t27; + float t81 = P(4,1)*t2*t7; + float t82 = P(3,1)*t2*t22; + float t42 = t31+t38+t39+t40+t41-t81-t82; + float t43 = t2*t15*t42; + float t44 = P(6,2)*t2*t10; + float t45 = P(0,2)*t2*t5; + float t46 = P(1,2)*t2*t15; + float t47 = P(2,2)*t2*t19; + float t48 = P(5,2)*t2*t27; + float t83 = P(4,2)*t2*t7; + float t84 = P(3,2)*t2*t22; + float t49 = t44+t45+t46+t47+t48-t83-t84; + float t50 = t2*t19*t49; + float t51 = P(6,3)*t2*t10; + float t52 = P(0,3)*t2*t5; + float t53 = P(1,3)*t2*t15; + float t54 = P(2,3)*t2*t19; + float t55 = P(5,3)*t2*t27; + float t85 = P(4,3)*t2*t7; + float t86 = P(3,3)*t2*t22; + float t56 = t51+t52+t53+t54+t55-t85-t86; + float t57 = P(6,5)*t2*t10; + float t58 = P(0,5)*t2*t5; + float t59 = P(1,5)*t2*t15; + float t60 = P(2,5)*t2*t19; + float t61 = P(5,5)*t2*t27; + float t88 = P(4,5)*t2*t7; + float t89 = P(3,5)*t2*t22; + float t62 = t57+t58+t59+t60+t61-t88-t89; + float t63 = t2*t27*t62; + float t64 = P(6,4)*t2*t10; + float t65 = P(0,4)*t2*t5; + float t66 = P(1,4)*t2*t15; + float t67 = P(2,4)*t2*t19; + float t68 = P(5,4)*t2*t27; + float t90 = P(4,4)*t2*t7; + float t91 = P(3,4)*t2*t22; + float t69 = t64+t65+t66+t67+t68-t90-t91; + float t70 = P(6,6)*t2*t10; + float t71 = P(0,6)*t2*t5; + float t72 = P(1,6)*t2*t15; + float t73 = P(2,6)*t2*t19; + float t74 = P(5,6)*t2*t27; + float t93 = P(4,6)*t2*t7; + float t94 = P(3,6)*t2*t22; + float t75 = t70+t71+t72+t73+t74-t93-t94; + float t76 = t2*t10*t75; + float t87 = t2*t22*t56; + float t92 = t2*t7*t69; + float t77 = R_LOS+t37+t43+t50+t63+t76-t87-t92; + float t78 = 1.0f / t77; + flow_innov_var = t77; + + // calculate Kalman gains for X-axis observation + float Kfusion[24]; + Kfusion[0] = t78*(t12-P(0,4)*t2*t7+P(0,1)*t2*t15+P(0,6)*t2*t10+P(0,2)*t2*t19-P(0,3)*t2*t22+P(0,5)*t2*t27); + Kfusion[1] = t78*(t31+P(1,0)*t2*t5-P(1,4)*t2*t7+P(1,6)*t2*t10+P(1,2)*t2*t19-P(1,3)*t2*t22+P(1,5)*t2*t27); + Kfusion[2] = t78*(t47+P(2,0)*t2*t5-P(2,4)*t2*t7+P(2,1)*t2*t15+P(2,6)*t2*t10-P(2,3)*t2*t22+P(2,5)*t2*t27); + Kfusion[3] = t78*(-t86+P(3,0)*t2*t5-P(3,4)*t2*t7+P(3,1)*t2*t15+P(3,6)*t2*t10+P(3,2)*t2*t19+P(3,5)*t2*t27); + Kfusion[4] = t78*(-t90+P(4,0)*t2*t5+P(4,1)*t2*t15+P(4,6)*t2*t10+P(4,2)*t2*t19-P(4,3)*t2*t22+P(4,5)*t2*t27); + Kfusion[5] = t78*(t61+P(5,0)*t2*t5-P(5,4)*t2*t7+P(5,1)*t2*t15+P(5,6)*t2*t10+P(5,2)*t2*t19-P(5,3)*t2*t22); + Kfusion[6] = t78*(t70+P(6,0)*t2*t5-P(6,4)*t2*t7+P(6,1)*t2*t15+P(6,2)*t2*t19-P(6,3)*t2*t22+P(6,5)*t2*t27); + Kfusion[7] = t78*(P(7,0)*t2*t5-P(7,4)*t2*t7+P(7,1)*t2*t15+P(7,6)*t2*t10+P(7,2)*t2*t19-P(7,3)*t2*t22+P(7,5)*t2*t27); + Kfusion[8] = t78*(P(8,0)*t2*t5-P(8,4)*t2*t7+P(8,1)*t2*t15+P(8,6)*t2*t10+P(8,2)*t2*t19-P(8,3)*t2*t22+P(8,5)*t2*t27); + Kfusion[9] = t78*(P(9,0)*t2*t5-P(9,4)*t2*t7+P(9,1)*t2*t15+P(9,6)*t2*t10+P(9,2)*t2*t19-P(9,3)*t2*t22+P(9,5)*t2*t27); + Kfusion[10] = t78*(P(10,0)*t2*t5-P(10,4)*t2*t7+P(10,1)*t2*t15+P(10,6)*t2*t10+P(10,2)*t2*t19-P(10,3)*t2*t22+P(10,5)*t2*t27); + Kfusion[11] = t78*(P(11,0)*t2*t5-P(11,4)*t2*t7+P(11,1)*t2*t15+P(11,6)*t2*t10+P(11,2)*t2*t19-P(11,3)*t2*t22+P(11,5)*t2*t27); + Kfusion[12] = t78*(P(12,0)*t2*t5-P(12,4)*t2*t7+P(12,1)*t2*t15+P(12,6)*t2*t10+P(12,2)*t2*t19-P(12,3)*t2*t22+P(12,5)*t2*t27); + Kfusion[13] = t78*(P(13,0)*t2*t5-P(13,4)*t2*t7+P(13,1)*t2*t15+P(13,6)*t2*t10+P(13,2)*t2*t19-P(13,3)*t2*t22+P(13,5)*t2*t27); + Kfusion[14] = t78*(P(14,0)*t2*t5-P(14,4)*t2*t7+P(14,1)*t2*t15+P(14,6)*t2*t10+P(14,2)*t2*t19-P(14,3)*t2*t22+P(14,5)*t2*t27); + Kfusion[15] = t78*(P(15,0)*t2*t5-P(15,4)*t2*t7+P(15,1)*t2*t15+P(15,6)*t2*t10+P(15,2)*t2*t19-P(15,3)*t2*t22+P(15,5)*t2*t27); + Kfusion[16] = t78*(P(16,0)*t2*t5-P(16,4)*t2*t7+P(16,1)*t2*t15+P(16,6)*t2*t10+P(16,2)*t2*t19-P(16,3)*t2*t22+P(16,5)*t2*t27); + Kfusion[17] = t78*(P(17,0)*t2*t5-P(17,4)*t2*t7+P(17,1)*t2*t15+P(17,6)*t2*t10+P(17,2)*t2*t19-P(17,3)*t2*t22+P(17,5)*t2*t27); + Kfusion[18] = t78*(P(18,0)*t2*t5-P(18,4)*t2*t7+P(18,1)*t2*t15+P(18,6)*t2*t10+P(18,2)*t2*t19-P(18,3)*t2*t22+P(18,5)*t2*t27); + Kfusion[19] = t78*(P(19,0)*t2*t5-P(19,4)*t2*t7+P(19,1)*t2*t15+P(19,6)*t2*t10+P(19,2)*t2*t19-P(19,3)*t2*t22+P(19,5)*t2*t27); + Kfusion[20] = t78*(P(20,0)*t2*t5-P(20,4)*t2*t7+P(20,1)*t2*t15+P(20,6)*t2*t10+P(20,2)*t2*t19-P(20,3)*t2*t22+P(20,5)*t2*t27); + Kfusion[21] = t78*(P(21,0)*t2*t5-P(21,4)*t2*t7+P(21,1)*t2*t15+P(21,6)*t2*t10+P(21,2)*t2*t19-P(21,3)*t2*t22+P(21,5)*t2*t27); + Kfusion[22] = t78*(P(22,0)*t2*t5-P(22,4)*t2*t7+P(22,1)*t2*t15+P(22,6)*t2*t10+P(22,2)*t2*t19-P(22,3)*t2*t22+P(22,5)*t2*t27); + Kfusion[23] = t78*(P(23,0)*t2*t5-P(23,4)*t2*t7+P(23,1)*t2*t15+P(23,6)*t2*t10+P(23,2)*t2*t19-P(23,3)*t2*t22+P(23,5)*t2*t27); + + for (int row=0; row<24; row++) { + Hfusion_matlab(row) = H_LOS[row]; + Kfusion_matlab(row) = Kfusion[row]; + } + } + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Hfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Hfusion_matlab(row); + max_new = Hfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Optical Flow X axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Optical Flow X axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Kfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion_matlab(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Optical Flow X axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Optical Flow X axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + // Compare Y axis equations + + { + // evaluate sympy genrated equations for observatio Jacobians and Kalman gains + { + // calculate innovation variance for Y axis observation and protect against a badly conditioned calculation + flow_innov_var = (HK43*HK74*HK90 + HK43*HK77*HK89 + HK43*HK79*HK88 + HK43*HK80*HK87 + HK66*HK92*HK94 + HK68*HK91*HK92 + HK70*HK92*HK93 + R_LOS); + + const float HK95 = HK4/flow_innov_var; + + // Observation Jacobians - axis 1 + Hfusion.at<0>() = -HK5*HK63; + Hfusion.at<1>() = -HK5*HK66; + Hfusion.at<2>() = -HK5*HK68; + Hfusion.at<3>() = -HK5*HK70; + Hfusion.at<4>() = -HK4*HK74; + Hfusion.at<5>() = -HK4*HK77; + Hfusion.at<6>() = -HK4*HK79; + + // Kalman gains - axis 1 + Kfusion(0) = -HK87*HK95; + Kfusion(1) = -HK94*HK95; + Kfusion(2) = -HK91*HK95; + Kfusion(3) = -HK93*HK95; + Kfusion(4) = -HK90*HK95; + Kfusion(5) = -HK89*HK95; + Kfusion(6) = -HK88*HK95; + + for (unsigned row = 7; row <= 23; row++) { + Kfusion(row) = -HK95*(HK80*P(0,row) + HK81*P(1,row) + HK82*P(2,row) + HK83*P(3,row) + HK84*P(4,row) + HK85*P(5,row) + HK86*P(6,row)); + } + + // copy to arrays used for comparison + for (int row=0; row<7; row++) { + Hfusion_sympy(row) = Hfusion.atCompressedIndex(row); + } + for (int row=0; row<24; row++) { + Kfusion_sympy(row) = Kfusion(row); + } + + } + + // repeat calculation using matlab generated equations + + { + // calculate Y axis observation Jacobian + float t2 = 1.0f / range; + float H_LOS[24] = {}; + H_LOS[0] = -t2*(q2*vd*-2.0f+q3*ve*2.0f+q0*vn*2.0f); + H_LOS[1] = -t2*(q3*vd*2.0f+q2*ve*2.0f+q1*vn*2.0f); + H_LOS[2] = t2*(q0*vd*2.0f-q1*ve*2.0f+q2*vn*2.0f); + H_LOS[3] = -t2*(q1*vd*2.0f+q0*ve*2.0f-q3*vn*2.0f); + H_LOS[4] = -t2*(q0*q0+q1*q1-q2*q2-q3*q3); + H_LOS[5] = -t2*(q0*q3*2.0f+q1*q2*2.0f); + H_LOS[6] = t2*(q0*q2*2.0f-q1*q3*2.0f); + + // calculate intermediate variables for the Y observation innovatoin variance and Kalman gains + float t3 = q3*ve*2.0f; + float t4 = q0*vn*2.0f; + float t11 = q2*vd*2.0f; + float t5 = t3+t4-t11; + float t6 = q0*q3*2.0f; + float t7 = q1*q2*2.0f; + float t8 = t6+t7; + float t9 = q0*q2*2.0f; + float t28 = q1*q3*2.0f; + float t10 = t9-t28; + float t12 = P(0,0)*t2*t5; + float t13 = q3*vd*2.0f; + float t14 = q2*ve*2.0f; + float t15 = q1*vn*2.0f; + float t16 = t13+t14+t15; + float t17 = q0*vd*2.0f; + float t18 = q2*vn*2.0f; + float t29 = q1*ve*2.0f; + float t19 = t17+t18-t29; + float t20 = q1*vd*2.0f; + float t21 = q0*ve*2.0f; + float t30 = q3*vn*2.0f; + float t22 = t20+t21-t30; + float t23 = q0*q0; + float t24 = q1*q1; + float t25 = q2*q2; + float t26 = q3*q3; + float t27 = t23+t24-t25-t26; + float t31 = P(1,1)*t2*t16; + float t32 = P(5,0)*t2*t8; + float t33 = P(1,0)*t2*t16; + float t34 = P(3,0)*t2*t22; + float t35 = P(4,0)*t2*t27; + float t80 = P(6,0)*t2*t10; + float t81 = P(2,0)*t2*t19; + float t36 = t12+t32+t33+t34+t35-t80-t81; + float t37 = t2*t5*t36; + float t38 = P(5,1)*t2*t8; + float t39 = P(0,1)*t2*t5; + float t40 = P(3,1)*t2*t22; + float t41 = P(4,1)*t2*t27; + float t82 = P(6,1)*t2*t10; + float t83 = P(2,1)*t2*t19; + float t42 = t31+t38+t39+t40+t41-t82-t83; + float t43 = t2*t16*t42; + float t44 = P(5,2)*t2*t8; + float t45 = P(0,2)*t2*t5; + float t46 = P(1,2)*t2*t16; + float t47 = P(3,2)*t2*t22; + float t48 = P(4,2)*t2*t27; + float t79 = P(2,2)*t2*t19; + float t84 = P(6,2)*t2*t10; + float t49 = t44+t45+t46+t47+t48-t79-t84; + float t50 = P(5,3)*t2*t8; + float t51 = P(0,3)*t2*t5; + float t52 = P(1,3)*t2*t16; + float t53 = P(3,3)*t2*t22; + float t54 = P(4,3)*t2*t27; + float t86 = P(6,3)*t2*t10; + float t87 = P(2,3)*t2*t19; + float t55 = t50+t51+t52+t53+t54-t86-t87; + float t56 = t2*t22*t55; + float t57 = P(5,4)*t2*t8; + float t58 = P(0,4)*t2*t5; + float t59 = P(1,4)*t2*t16; + float t60 = P(3,4)*t2*t22; + float t61 = P(4,4)*t2*t27; + float t88 = P(6,4)*t2*t10; + float t89 = P(2,4)*t2*t19; + float t62 = t57+t58+t59+t60+t61-t88-t89; + float t63 = t2*t27*t62; + float t64 = P(5,5)*t2*t8; + float t65 = P(0,5)*t2*t5; + float t66 = P(1,5)*t2*t16; + float t67 = P(3,5)*t2*t22; + float t68 = P(4,5)*t2*t27; + float t90 = P(6,5)*t2*t10; + float t91 = P(2,5)*t2*t19; + float t69 = t64+t65+t66+t67+t68-t90-t91; + float t70 = t2*t8*t69; + float t71 = P(5,6)*t2*t8; + float t72 = P(0,6)*t2*t5; + float t73 = P(1,6)*t2*t16; + float t74 = P(3,6)*t2*t22; + float t75 = P(4,6)*t2*t27; + float t92 = P(6,6)*t2*t10; + float t93 = P(2,6)*t2*t19; + float t76 = t71+t72+t73+t74+t75-t92-t93; + float t85 = t2*t19*t49; + float t94 = t2*t10*t76; + float t77 = R_LOS+t37+t43+t56+t63+t70-t85-t94; + + float t78 = 1.0f / t77; + flow_innov_var = t77; + + // calculate Kalman gains for Y-axis observation + float Kfusion[24]; + Kfusion[0] = -t78*(t12+P(0,5)*t2*t8-P(0,6)*t2*t10+P(0,1)*t2*t16-P(0,2)*t2*t19+P(0,3)*t2*t22+P(0,4)*t2*t27); + Kfusion[1] = -t78*(t31+P(1,0)*t2*t5+P(1,5)*t2*t8-P(1,6)*t2*t10-P(1,2)*t2*t19+P(1,3)*t2*t22+P(1,4)*t2*t27); + Kfusion[2] = -t78*(-t79+P(2,0)*t2*t5+P(2,5)*t2*t8-P(2,6)*t2*t10+P(2,1)*t2*t16+P(2,3)*t2*t22+P(2,4)*t2*t27); + Kfusion[3] = -t78*(t53+P(3,0)*t2*t5+P(3,5)*t2*t8-P(3,6)*t2*t10+P(3,1)*t2*t16-P(3,2)*t2*t19+P(3,4)*t2*t27); + Kfusion[4] = -t78*(t61+P(4,0)*t2*t5+P(4,5)*t2*t8-P(4,6)*t2*t10+P(4,1)*t2*t16-P(4,2)*t2*t19+P(4,3)*t2*t22); + Kfusion[5] = -t78*(t64+P(5,0)*t2*t5-P(5,6)*t2*t10+P(5,1)*t2*t16-P(5,2)*t2*t19+P(5,3)*t2*t22+P(5,4)*t2*t27); + Kfusion[6] = -t78*(-t92+P(6,0)*t2*t5+P(6,5)*t2*t8+P(6,1)*t2*t16-P(6,2)*t2*t19+P(6,3)*t2*t22+P(6,4)*t2*t27); + Kfusion[7] = -t78*(P(7,0)*t2*t5+P(7,5)*t2*t8-P(7,6)*t2*t10+P(7,1)*t2*t16-P(7,2)*t2*t19+P(7,3)*t2*t22+P(7,4)*t2*t27); + Kfusion[8] = -t78*(P(8,0)*t2*t5+P(8,5)*t2*t8-P(8,6)*t2*t10+P(8,1)*t2*t16-P(8,2)*t2*t19+P(8,3)*t2*t22+P(8,4)*t2*t27); + Kfusion[9] = -t78*(P(9,0)*t2*t5+P(9,5)*t2*t8-P(9,6)*t2*t10+P(9,1)*t2*t16-P(9,2)*t2*t19+P(9,3)*t2*t22+P(9,4)*t2*t27); + Kfusion[10] = -t78*(P(10,0)*t2*t5+P(10,5)*t2*t8-P(10,6)*t2*t10+P(10,1)*t2*t16-P(10,2)*t2*t19+P(10,3)*t2*t22+P(10,4)*t2*t27); + Kfusion[11] = -t78*(P(11,0)*t2*t5+P(11,5)*t2*t8-P(11,6)*t2*t10+P(11,1)*t2*t16-P(11,2)*t2*t19+P(11,3)*t2*t22+P(11,4)*t2*t27); + Kfusion[12] = -t78*(P(12,0)*t2*t5+P(12,5)*t2*t8-P(12,6)*t2*t10+P(12,1)*t2*t16-P(12,2)*t2*t19+P(12,3)*t2*t22+P(12,4)*t2*t27); + Kfusion[13] = -t78*(P(13,0)*t2*t5+P(13,5)*t2*t8-P(13,6)*t2*t10+P(13,1)*t2*t16-P(13,2)*t2*t19+P(13,3)*t2*t22+P(13,4)*t2*t27); + Kfusion[14] = -t78*(P(14,0)*t2*t5+P(14,5)*t2*t8-P(14,6)*t2*t10+P(14,1)*t2*t16-P(14,2)*t2*t19+P(14,3)*t2*t22+P(14,4)*t2*t27); + Kfusion[15] = -t78*(P(15,0)*t2*t5+P(15,5)*t2*t8-P(15,6)*t2*t10+P(15,1)*t2*t16-P(15,2)*t2*t19+P(15,3)*t2*t22+P(15,4)*t2*t27); + Kfusion[16] = -t78*(P(16,0)*t2*t5+P(16,5)*t2*t8-P(16,6)*t2*t10+P(16,1)*t2*t16-P(16,2)*t2*t19+P(16,3)*t2*t22+P(16,4)*t2*t27); + Kfusion[17] = -t78*(P(17,0)*t2*t5+P(17,5)*t2*t8-P(17,6)*t2*t10+P(17,1)*t2*t16-P(17,2)*t2*t19+P(17,3)*t2*t22+P(17,4)*t2*t27); + Kfusion[18] = -t78*(P(18,0)*t2*t5+P(18,5)*t2*t8-P(18,6)*t2*t10+P(18,1)*t2*t16-P(18,2)*t2*t19+P(18,3)*t2*t22+P(18,4)*t2*t27); + Kfusion[19] = -t78*(P(19,0)*t2*t5+P(19,5)*t2*t8-P(19,6)*t2*t10+P(19,1)*t2*t16-P(19,2)*t2*t19+P(19,3)*t2*t22+P(19,4)*t2*t27); + Kfusion[20] = -t78*(P(20,0)*t2*t5+P(20,5)*t2*t8-P(20,6)*t2*t10+P(20,1)*t2*t16-P(20,2)*t2*t19+P(20,3)*t2*t22+P(20,4)*t2*t27); + Kfusion[21] = -t78*(P(21,0)*t2*t5+P(21,5)*t2*t8-P(21,6)*t2*t10+P(21,1)*t2*t16-P(21,2)*t2*t19+P(21,3)*t2*t22+P(21,4)*t2*t27); + Kfusion[22] = -t78*(P(22,0)*t2*t5+P(22,5)*t2*t8-P(22,6)*t2*t10+P(22,1)*t2*t16-P(22,2)*t2*t19+P(22,3)*t2*t22+P(22,4)*t2*t27); + Kfusion[23] = -t78*(P(23,0)*t2*t5+P(23,5)*t2*t8-P(23,6)*t2*t10+P(23,1)*t2*t16-P(23,2)*t2*t19+P(23,3)*t2*t22+P(23,4)*t2*t27); + + for (int row=0; row<24; row++) { + Hfusion_matlab(row) = H_LOS[row]; + Kfusion_matlab(row) = Kfusion[row]; + } + } + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Hfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Hfusion_matlab(row); + max_new = Hfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Optical Flow Y axis Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Optical Flow Y axis Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Kfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion_matlab(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion_matlab(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Optical Flow Y axis Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Optical Flow Y axis Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_generated.cpp new file mode 100644 index 0000000000..03b144eb95 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_generated.cpp @@ -0,0 +1,230 @@ +// X Axis Equations +// Sub Expressions +const float HK0 = Tbs(1,0)*q2; +const float HK1 = Tbs(1,1)*q1; +const float HK2 = Tbs(1,1)*q3; +const float HK3 = Tbs(1,2)*q2; +const float HK4 = Tbs(1,0)*q3; +const float HK5 = Tbs(1,2)*q1; +const float HK6 = -HK5; +const float HK7 = vd*(HK0 - HK1) - ve*(HK4 + HK6) + vn*(HK2 - HK3); +const float HK8 = 1.0F/range; +const float HK9 = 2*HK8; +const float HK10 = Tbs(1,1)*q2; +const float HK11 = Tbs(1,2)*q3; +const float HK12 = Tbs(1,1)*q0; +const float HK13 = Tbs(1,2)*q0; +const float HK14 = vd*(HK12 + HK4 - 2*HK5) - ve*(-HK0 + 2*HK1 + HK13) + vn*(HK10 + HK11); +const float HK15 = Tbs(1,0)*q1; +const float HK16 = Tbs(1,0)*q0; +const float HK17 = -vd*(HK16 - HK2 + 2*HK3) + ve*(HK11 + HK15) + vn*(-2*HK0 + HK1 + HK13); +const float HK18 = vd*(HK10 + HK15) + ve*(HK16 - 2*HK2 + HK3) - vn*(HK12 + 2*HK4 + HK6); +const float HK19 = q0*q2; +const float HK20 = q1*q3; +const float HK21 = 2*Tbs(1,2); +const float HK22 = q0*q3; +const float HK23 = q1*q2; +const float HK24 = 2*Tbs(1,1); +const float HK25 = 2*powf(q2, 2); +const float HK26 = 2*powf(q3, 2) - 1; +const float HK27 = -HK21*(HK19 + HK20) + HK24*(HK22 - HK23) + Tbs(1,0)*(HK25 + HK26); +const float HK28 = 2*Tbs(1,0); +const float HK29 = q0*q1; +const float HK30 = q2*q3; +const float HK31 = 2*powf(q1, 2); +const float HK32 = HK21*(HK29 - HK30) - HK28*(HK22 + HK23) + Tbs(1,1)*(HK26 + HK31); +const float HK33 = -HK24*(HK29 + HK30) + HK28*(HK19 - HK20) + Tbs(1,2)*(HK25 + HK31 - 1); +const float HK34 = 2*HK7; +const float HK35 = 2*HK14; +const float HK36 = 2*HK17; +const float HK37 = 2*HK18; +const float HK38 = -HK27*P(0,4) - HK32*P(0,5) - HK33*P(0,6) - HK34*P(0,0) + HK35*P(0,1) + HK36*P(0,2) + HK37*P(0,3); +const float HK39 = powf(range, -2); +const float HK40 = -HK27*P(4,6) - HK32*P(5,6) - HK33*P(6,6) - HK34*P(0,6) + HK35*P(1,6) + HK36*P(2,6) + HK37*P(3,6); +const float HK41 = -HK27*P(4,5) - HK32*P(5,5) - HK33*P(5,6) - HK34*P(0,5) + HK35*P(1,5) + HK36*P(2,5) + HK37*P(3,5); +const float HK42 = -HK27*P(4,4) - HK32*P(4,5) - HK33*P(4,6) - HK34*P(0,4) + HK35*P(1,4) + HK36*P(2,4) + HK37*P(3,4); +const float HK43 = -HK27*P(3,4) - HK32*P(3,5) - HK33*P(3,6) - HK34*P(0,3) + HK35*P(1,3) + HK36*P(2,3) + HK37*P(3,3); +const float HK44 = -HK27*P(2,4) - HK32*P(2,5) - HK33*P(2,6) - HK34*P(0,2) + HK35*P(1,2) + HK36*P(2,2) + HK37*P(2,3); +const float HK45 = -HK27*P(1,4) - HK32*P(1,5) - HK33*P(1,6) - HK34*P(0,1) + HK35*P(1,1) + HK36*P(1,2) + HK37*P(1,3); +const float HK46 = HK8/(-HK27*HK39*HK42 - HK32*HK39*HK41 - HK33*HK39*HK40 - HK34*HK38*HK39 + HK35*HK39*HK45 + HK36*HK39*HK44 + HK37*HK39*HK43 + R_LOS); + + +// Observation Jacobians +Hfusion.at<0>() = -HK7*HK9; +Hfusion.at<1>() = HK14*HK9; +Hfusion.at<2>() = HK17*HK9; +Hfusion.at<3>() = HK18*HK9; +Hfusion.at<4>() = -HK27*HK8; +Hfusion.at<5>() = -HK32*HK8; +Hfusion.at<6>() = -HK33*HK8; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = HK38*HK46; +Kfusion(1) = HK45*HK46; +Kfusion(2) = HK44*HK46; +Kfusion(3) = HK43*HK46; +Kfusion(4) = HK42*HK46; +Kfusion(5) = HK41*HK46; +Kfusion(6) = HK40*HK46; +Kfusion(7) = HK46*(-HK27*P(4,7) - HK32*P(5,7) - HK33*P(6,7) - HK34*P(0,7) + HK35*P(1,7) + HK36*P(2,7) + HK37*P(3,7)); +Kfusion(8) = HK46*(-HK27*P(4,8) - HK32*P(5,8) - HK33*P(6,8) - HK34*P(0,8) + HK35*P(1,8) + HK36*P(2,8) + HK37*P(3,8)); +Kfusion(9) = HK46*(-HK27*P(4,9) - HK32*P(5,9) - HK33*P(6,9) - HK34*P(0,9) + HK35*P(1,9) + HK36*P(2,9) + HK37*P(3,9)); +Kfusion(10) = HK46*(-HK27*P(4,10) - HK32*P(5,10) - HK33*P(6,10) - HK34*P(0,10) + HK35*P(1,10) + HK36*P(2,10) + HK37*P(3,10)); +Kfusion(11) = HK46*(-HK27*P(4,11) - HK32*P(5,11) - HK33*P(6,11) - HK34*P(0,11) + HK35*P(1,11) + HK36*P(2,11) + HK37*P(3,11)); +Kfusion(12) = HK46*(-HK27*P(4,12) - HK32*P(5,12) - HK33*P(6,12) - HK34*P(0,12) + HK35*P(1,12) + HK36*P(2,12) + HK37*P(3,12)); +Kfusion(13) = HK46*(-HK27*P(4,13) - HK32*P(5,13) - HK33*P(6,13) - HK34*P(0,13) + HK35*P(1,13) + HK36*P(2,13) + HK37*P(3,13)); +Kfusion(14) = HK46*(-HK27*P(4,14) - HK32*P(5,14) - HK33*P(6,14) - HK34*P(0,14) + HK35*P(1,14) + HK36*P(2,14) + HK37*P(3,14)); +Kfusion(15) = HK46*(-HK27*P(4,15) - HK32*P(5,15) - HK33*P(6,15) - HK34*P(0,15) + HK35*P(1,15) + HK36*P(2,15) + HK37*P(3,15)); +Kfusion(16) = HK46*(-HK27*P(4,16) - HK32*P(5,16) - HK33*P(6,16) - HK34*P(0,16) + HK35*P(1,16) + HK36*P(2,16) + HK37*P(3,16)); +Kfusion(17) = HK46*(-HK27*P(4,17) - HK32*P(5,17) - HK33*P(6,17) - HK34*P(0,17) + HK35*P(1,17) + HK36*P(2,17) + HK37*P(3,17)); +Kfusion(18) = HK46*(-HK27*P(4,18) - HK32*P(5,18) - HK33*P(6,18) - HK34*P(0,18) + HK35*P(1,18) + HK36*P(2,18) + HK37*P(3,18)); +Kfusion(19) = HK46*(-HK27*P(4,19) - HK32*P(5,19) - HK33*P(6,19) - HK34*P(0,19) + HK35*P(1,19) + HK36*P(2,19) + HK37*P(3,19)); +Kfusion(20) = HK46*(-HK27*P(4,20) - HK32*P(5,20) - HK33*P(6,20) - HK34*P(0,20) + HK35*P(1,20) + HK36*P(2,20) + HK37*P(3,20)); +Kfusion(21) = HK46*(-HK27*P(4,21) - HK32*P(5,21) - HK33*P(6,21) - HK34*P(0,21) + HK35*P(1,21) + HK36*P(2,21) + HK37*P(3,21)); +Kfusion(22) = HK46*(-HK27*P(4,22) - HK32*P(5,22) - HK33*P(6,22) - HK34*P(0,22) + HK35*P(1,22) + HK36*P(2,22) + HK37*P(3,22)); +Kfusion(23) = HK46*(-HK27*P(4,23) - HK32*P(5,23) - HK33*P(6,23) - HK34*P(0,23) + HK35*P(1,23) + HK36*P(2,23) + HK37*P(3,23)); + + +// Y Axis Equations +// Sub Expressions +const float HK0 = Tbs(0,0)*q3; +const float HK1 = Tbs(0,2)*q1; +const float HK2 = -HK1; +const float HK3 = ve*(HK0 + HK2); +const float HK4 = Tbs(0,0)*q2; +const float HK5 = Tbs(0,1)*q1; +const float HK6 = Tbs(0,1)*q3; +const float HK7 = Tbs(0,2)*q2; +const float HK8 = HK3 - vd*(HK4 - HK5) - vn*(HK6 - HK7); +const float HK9 = 1.0F/range; +const float HK10 = 2*HK9; +const float HK11 = Tbs(0,2)*q0; +const float HK12 = -HK4; +const float HK13 = 2*HK5; +const float HK14 = Tbs(0,1)*q0; +const float HK15 = Tbs(0,1)*q2; +const float HK16 = Tbs(0,2)*q3; +const float HK17 = vd*(HK0 - 2*HK1 + HK14) + vn*(HK15 + HK16); +const float HK18 = HK17 - ve*(HK11 + HK12 + HK13); +const float HK19 = Tbs(0,0)*q0; +const float HK20 = -HK6; +const float HK21 = 2*HK7; +const float HK22 = Tbs(0,0)*q1; +const float HK23 = ve*(HK16 + HK22) + vn*(HK11 - 2*HK4 + HK5); +const float HK24 = HK23 - vd*(HK19 + HK20 + HK21); +const float HK25 = 2*HK0; +const float HK26 = vd*(HK15 + HK22) + ve*(HK19 - 2*HK6 + HK7); +const float HK27 = HK26 - vn*(HK14 + HK2 + HK25); +const float HK28 = q0*q2; +const float HK29 = q1*q3; +const float HK30 = 2*Tbs(0,2); +const float HK31 = HK30*(HK28 + HK29); +const float HK32 = q0*q3; +const float HK33 = q1*q2; +const float HK34 = 2*Tbs(0,1); +const float HK35 = 2*powf(q2, 2); +const float HK36 = 2*powf(q3, 2); +const float HK37 = HK36 - 1; +const float HK38 = HK31 - HK34*(HK32 - HK33) - Tbs(0,0)*(HK35 + HK37); +const float HK39 = 2*Tbs(0,0); +const float HK40 = HK39*(HK32 + HK33); +const float HK41 = q0*q1; +const float HK42 = q2*q3; +const float HK43 = 2*powf(q1, 2); +const float HK44 = -HK30*(HK41 - HK42) + HK40 - Tbs(0,1)*(HK37 + HK43); +const float HK45 = HK34*(HK41 + HK42); +const float HK46 = -HK39*(HK28 - HK29) + HK45 - Tbs(0,2)*(HK35 + HK43 - 1); +const float HK47 = 2*HK3 + 2*vd*(HK12 + HK5) + 2*vn*(HK20 + HK7); +const float HK48 = -HK35; +const float HK49 = 1 - HK36; +const float HK50 = HK31 + HK34*(-HK32 + HK33) + Tbs(0,0)*(HK48 + HK49); +const float HK51 = -HK43; +const float HK52 = HK30*(-HK41 + HK42) + HK40 + Tbs(0,1)*(HK49 + HK51); +const float HK53 = HK39*(-HK28 + HK29) + HK45 + Tbs(0,2)*(HK48 + HK51 + 1); +const float HK54 = 2*HK17 + 2*ve*(-HK11 - HK13 + HK4); +const float HK55 = 2*HK23 + 2*vd*(-HK19 - HK21 + HK6); +const float HK56 = 2*HK26 + 2*vn*(HK1 - HK14 - HK25); +const float HK57 = HK47*P(0,0) + HK50*P(0,4) + HK52*P(0,5) + HK53*P(0,6) + HK54*P(0,1) + HK55*P(0,2) + HK56*P(0,3); +const float HK58 = powf(range, -2); +const float HK59 = 2*HK58; +const float HK60 = HK47*P(0,6) + HK50*P(4,6) + HK52*P(5,6) + HK53*P(6,6) + HK54*P(1,6) + HK55*P(2,6) + HK56*P(3,6); +const float HK61 = HK47*P(0,5) + HK50*P(4,5) + HK52*P(5,5) + HK53*P(5,6) + HK54*P(1,5) + HK55*P(2,5) + HK56*P(3,5); +const float HK62 = HK47*P(0,4) + HK50*P(4,4) + HK52*P(4,5) + HK53*P(4,6) + HK54*P(1,4) + HK55*P(2,4) + HK56*P(3,4); +const float HK63 = HK47*P(0,3) + HK50*P(3,4) + HK52*P(3,5) + HK53*P(3,6) + HK54*P(1,3) + HK55*P(2,3) + HK56*P(3,3); +const float HK64 = HK47*P(0,2) + HK50*P(2,4) + HK52*P(2,5) + HK53*P(2,6) + HK54*P(1,2) + HK55*P(2,2) + HK56*P(2,3); +const float HK65 = HK47*P(0,1) + HK50*P(1,4) + HK52*P(1,5) + HK53*P(1,6) + HK54*P(1,1) + HK55*P(1,2) + HK56*P(1,3); +const float HK66 = HK9/(HK18*HK59*HK65 + HK24*HK59*HK64 + HK27*HK59*HK63 + HK38*HK58*HK62 + HK44*HK58*HK61 + HK46*HK58*HK60 + HK57*HK59*HK8 + R_LOS); + + +// Observation Jacobians +Hfusion.at<0>() = -HK10*HK8; +Hfusion.at<1>() = -HK10*HK18; +Hfusion.at<2>() = -HK10*HK24; +Hfusion.at<3>() = -HK10*HK27; +Hfusion.at<4>() = -HK38*HK9; +Hfusion.at<5>() = -HK44*HK9; +Hfusion.at<6>() = -HK46*HK9; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = -HK57*HK66; +Kfusion(1) = -HK65*HK66; +Kfusion(2) = -HK64*HK66; +Kfusion(3) = -HK63*HK66; +Kfusion(4) = -HK62*HK66; +Kfusion(5) = -HK61*HK66; +Kfusion(6) = -HK60*HK66; +Kfusion(7) = -HK66*(HK47*P(0,7) + HK50*P(4,7) + HK52*P(5,7) + HK53*P(6,7) + HK54*P(1,7) + HK55*P(2,7) + HK56*P(3,7)); +Kfusion(8) = -HK66*(HK47*P(0,8) + HK50*P(4,8) + HK52*P(5,8) + HK53*P(6,8) + HK54*P(1,8) + HK55*P(2,8) + HK56*P(3,8)); +Kfusion(9) = -HK66*(HK47*P(0,9) + HK50*P(4,9) + HK52*P(5,9) + HK53*P(6,9) + HK54*P(1,9) + HK55*P(2,9) + HK56*P(3,9)); +Kfusion(10) = -HK66*(HK47*P(0,10) + HK50*P(4,10) + HK52*P(5,10) + HK53*P(6,10) + HK54*P(1,10) + HK55*P(2,10) + HK56*P(3,10)); +Kfusion(11) = -HK66*(HK47*P(0,11) + HK50*P(4,11) + HK52*P(5,11) + HK53*P(6,11) + HK54*P(1,11) + HK55*P(2,11) + HK56*P(3,11)); +Kfusion(12) = -HK66*(HK47*P(0,12) + HK50*P(4,12) + HK52*P(5,12) + HK53*P(6,12) + HK54*P(1,12) + HK55*P(2,12) + HK56*P(3,12)); +Kfusion(13) = -HK66*(HK47*P(0,13) + HK50*P(4,13) + HK52*P(5,13) + HK53*P(6,13) + HK54*P(1,13) + HK55*P(2,13) + HK56*P(3,13)); +Kfusion(14) = -HK66*(HK47*P(0,14) + HK50*P(4,14) + HK52*P(5,14) + HK53*P(6,14) + HK54*P(1,14) + HK55*P(2,14) + HK56*P(3,14)); +Kfusion(15) = -HK66*(HK47*P(0,15) + HK50*P(4,15) + HK52*P(5,15) + HK53*P(6,15) + HK54*P(1,15) + HK55*P(2,15) + HK56*P(3,15)); +Kfusion(16) = -HK66*(HK47*P(0,16) + HK50*P(4,16) + HK52*P(5,16) + HK53*P(6,16) + HK54*P(1,16) + HK55*P(2,16) + HK56*P(3,16)); +Kfusion(17) = -HK66*(HK47*P(0,17) + HK50*P(4,17) + HK52*P(5,17) + HK53*P(6,17) + HK54*P(1,17) + HK55*P(2,17) + HK56*P(3,17)); +Kfusion(18) = -HK66*(HK47*P(0,18) + HK50*P(4,18) + HK52*P(5,18) + HK53*P(6,18) + HK54*P(1,18) + HK55*P(2,18) + HK56*P(3,18)); +Kfusion(19) = -HK66*(HK47*P(0,19) + HK50*P(4,19) + HK52*P(5,19) + HK53*P(6,19) + HK54*P(1,19) + HK55*P(2,19) + HK56*P(3,19)); +Kfusion(20) = -HK66*(HK47*P(0,20) + HK50*P(4,20) + HK52*P(5,20) + HK53*P(6,20) + HK54*P(1,20) + HK55*P(2,20) + HK56*P(3,20)); +Kfusion(21) = -HK66*(HK47*P(0,21) + HK50*P(4,21) + HK52*P(5,21) + HK53*P(6,21) + HK54*P(1,21) + HK55*P(2,21) + HK56*P(3,21)); +Kfusion(22) = -HK66*(HK47*P(0,22) + HK50*P(4,22) + HK52*P(5,22) + HK53*P(6,22) + HK54*P(1,22) + HK55*P(2,22) + HK56*P(3,22)); +Kfusion(23) = -HK66*(HK47*P(0,23) + HK50*P(4,23) + HK52*P(5,23) + HK53*P(6,23) + HK54*P(1,23) + HK55*P(2,23) + HK56*P(3,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_generated_alt.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_generated_alt.cpp new file mode 100644 index 0000000000..d13faa5c5d --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/flow_generated_alt.cpp @@ -0,0 +1,222 @@ +// Sub Expressions +const float HK0 = Tbs(1,0)*q2; +const float HK1 = Tbs(1,1)*q1; +const float HK2 = Tbs(1,1)*q3; +const float HK3 = Tbs(1,2)*q2; +const float HK4 = Tbs(1,0)*q3; +const float HK5 = Tbs(1,2)*q1; +const float HK6 = -HK5; +const float HK7 = vd*(HK0 - HK1) - ve*(HK4 + HK6) + vn*(HK2 - HK3); +const float HK8 = 1.0F/range; +const float HK9 = 2*HK8; +const float HK10 = Tbs(1,1)*q2; +const float HK11 = Tbs(1,2)*q3; +const float HK12 = Tbs(1,1)*q0; +const float HK13 = Tbs(1,2)*q0; +const float HK14 = vd*(HK12 + HK4 - 2*HK5) - ve*(-HK0 + 2*HK1 + HK13) + vn*(HK10 + HK11); +const float HK15 = Tbs(1,0)*q1; +const float HK16 = Tbs(1,0)*q0; +const float HK17 = -vd*(HK16 - HK2 + 2*HK3) + ve*(HK11 + HK15) + vn*(-2*HK0 + HK1 + HK13); +const float HK18 = vd*(HK10 + HK15) + ve*(HK16 - 2*HK2 + HK3) - vn*(HK12 + 2*HK4 + HK6); +const float HK19 = q0*q2; +const float HK20 = q1*q3; +const float HK21 = HK19 + HK20; +const float HK22 = 2*Tbs(1,2); +const float HK23 = q0*q3; +const float HK24 = q1*q2; +const float HK25 = HK23 - HK24; +const float HK26 = 2*Tbs(1,1); +const float HK27 = 2*powf(q2, 2); +const float HK28 = 2*powf(q3, 2); +const float HK29 = HK28 - 1; +const float HK30 = HK27 + HK29; +const float HK31 = -HK21*HK22 + HK25*HK26 + HK30*Tbs(1,0); +const float HK32 = HK23 + HK24; +const float HK33 = 2*Tbs(1,0); +const float HK34 = q0*q1; +const float HK35 = q2*q3; +const float HK36 = HK34 - HK35; +const float HK37 = 2*powf(q1, 2); +const float HK38 = HK29 + HK37; +const float HK39 = HK22*HK36 - HK32*HK33 + HK38*Tbs(1,1); +const float HK40 = HK34 + HK35; +const float HK41 = HK19 - HK20; +const float HK42 = HK27 + HK37 - 1; +const float HK43 = -HK26*HK40 + HK33*HK41 + HK42*Tbs(1,2); +const float HK44 = 2*HK7; +const float HK45 = 2*HK14; +const float HK46 = 2*HK17; +const float HK47 = 2*HK18; +const float HK48 = -HK31*P(0,4) - HK39*P(0,5) - HK43*P(0,6) - HK44*P(0,0) + HK45*P(0,1) + HK46*P(0,2) + HK47*P(0,3); +const float HK49 = powf(range, -2); +const float HK50 = -HK31*P(4,6) - HK39*P(5,6) - HK43*P(6,6) - HK44*P(0,6) + HK45*P(1,6) + HK46*P(2,6) + HK47*P(3,6); +const float HK51 = -HK31*P(4,5) - HK39*P(5,5) - HK43*P(5,6) - HK44*P(0,5) + HK45*P(1,5) + HK46*P(2,5) + HK47*P(3,5); +const float HK52 = -HK31*P(4,4) - HK39*P(4,5) - HK43*P(4,6) - HK44*P(0,4) + HK45*P(1,4) + HK46*P(2,4) + HK47*P(3,4); +const float HK53 = -HK31*P(3,4) - HK39*P(3,5) - HK43*P(3,6) - HK44*P(0,3) + HK45*P(1,3) + HK46*P(2,3) + HK47*P(3,3); +const float HK54 = -HK31*P(2,4) - HK39*P(2,5) - HK43*P(2,6) - HK44*P(0,2) + HK45*P(1,2) + HK46*P(2,2) + HK47*P(2,3); +const float HK55 = -HK31*P(1,4) - HK39*P(1,5) - HK43*P(1,6) - HK44*P(0,1) + HK45*P(1,1) + HK46*P(1,2) + HK47*P(1,3); +const float HK56 = HK8/(-HK31*HK49*HK52 - HK39*HK49*HK51 - HK43*HK49*HK50 - HK44*HK48*HK49 + HK45*HK49*HK55 + HK46*HK49*HK54 + HK47*HK49*HK53 + R_LOS); +const float HK57 = Tbs(0,0)*q3; +const float HK58 = Tbs(0,2)*q1; +const float HK59 = -HK58; +const float HK60 = ve*(HK57 + HK59); +const float HK61 = Tbs(0,0)*q2; +const float HK62 = Tbs(0,1)*q1; +const float HK63 = Tbs(0,1)*q3; +const float HK64 = Tbs(0,2)*q2; +const float HK65 = HK60 - vd*(HK61 - HK62) - vn*(HK63 - HK64); +const float HK66 = Tbs(0,2)*q0; +const float HK67 = -HK61; +const float HK68 = 2*HK62; +const float HK69 = Tbs(0,1)*q0; +const float HK70 = Tbs(0,1)*q2; +const float HK71 = Tbs(0,2)*q3; +const float HK72 = vd*(HK57 - 2*HK58 + HK69) + vn*(HK70 + HK71); +const float HK73 = HK72 - ve*(HK66 + HK67 + HK68); +const float HK74 = Tbs(0,0)*q0; +const float HK75 = -HK63; +const float HK76 = 2*HK64; +const float HK77 = Tbs(0,0)*q1; +const float HK78 = ve*(HK71 + HK77) + vn*(-2*HK61 + HK62 + HK66); +const float HK79 = HK78 - vd*(HK74 + HK75 + HK76); +const float HK80 = 2*HK57; +const float HK81 = vd*(HK70 + HK77) + ve*(-2*HK63 + HK64 + HK74); +const float HK82 = HK81 - vn*(HK59 + HK69 + HK80); +const float HK83 = 2*Tbs(0,2); +const float HK84 = HK21*HK83; +const float HK85 = 2*Tbs(0,1); +const float HK86 = -HK25*HK85 - HK30*Tbs(0,0) + HK84; +const float HK87 = 2*Tbs(0,0); +const float HK88 = HK32*HK87; +const float HK89 = -HK36*HK83 - HK38*Tbs(0,1) + HK88; +const float HK90 = HK40*HK85; +const float HK91 = -HK41*HK87 - HK42*Tbs(0,2) + HK90; +const float HK92 = 2*HK60 + 2*vd*(HK62 + HK67) + 2*vn*(HK64 + HK75); +const float HK93 = -HK27; +const float HK94 = 1 - HK28; +const float HK95 = HK84 + HK85*(-HK23 + HK24) + Tbs(0,0)*(HK93 + HK94); +const float HK96 = -HK37; +const float HK97 = HK83*(-HK34 + HK35) + HK88 + Tbs(0,1)*(HK94 + HK96); +const float HK98 = HK87*(-HK19 + HK20) + HK90 + Tbs(0,2)*(HK93 + HK96 + 1); +const float HK99 = 2*HK72 + 2*ve*(HK61 - HK66 - HK68); +const float HK100 = 2*HK78 + 2*vd*(HK63 - HK74 - HK76); +const float HK101 = 2*HK81 + 2*vn*(HK58 - HK69 - HK80); +const float HK102 = HK100*P(0,2) + HK101*P(0,3) + HK92*P(0,0) + HK95*P(0,4) + HK97*P(0,5) + HK98*P(0,6) + HK99*P(0,1); +const float HK103 = 2*HK49; +const float HK104 = HK100*P(2,6) + HK101*P(3,6) + HK92*P(0,6) + HK95*P(4,6) + HK97*P(5,6) + HK98*P(6,6) + HK99*P(1,6); +const float HK105 = HK100*P(2,5) + HK101*P(3,5) + HK92*P(0,5) + HK95*P(4,5) + HK97*P(5,5) + HK98*P(5,6) + HK99*P(1,5); +const float HK106 = HK100*P(2,4) + HK101*P(3,4) + HK92*P(0,4) + HK95*P(4,4) + HK97*P(4,5) + HK98*P(4,6) + HK99*P(1,4); +const float HK107 = HK100*P(2,3) + HK101*P(3,3) + HK92*P(0,3) + HK95*P(3,4) + HK97*P(3,5) + HK98*P(3,6) + HK99*P(1,3); +const float HK108 = HK100*P(2,2) + HK101*P(2,3) + HK92*P(0,2) + HK95*P(2,4) + HK97*P(2,5) + HK98*P(2,6) + HK99*P(1,2); +const float HK109 = HK100*P(1,2) + HK101*P(1,3) + HK92*P(0,1) + HK95*P(1,4) + HK97*P(1,5) + HK98*P(1,6) + HK99*P(1,1); +const float HK110 = HK8/(HK102*HK103*HK65 + HK103*HK107*HK82 + HK103*HK108*HK79 + HK103*HK109*HK73 + HK104*HK49*HK91 + HK105*HK49*HK89 + HK106*HK49*HK86 + R_LOS); + + +// Observation Jacobians - axis 0 +Hfusion.at<0>() = -HK7*HK9; +Hfusion.at<1>() = HK14*HK9; +Hfusion.at<2>() = HK17*HK9; +Hfusion.at<3>() = HK18*HK9; +Hfusion.at<4>() = -HK31*HK8; +Hfusion.at<5>() = -HK39*HK8; +Hfusion.at<6>() = -HK43*HK8; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 0 +Kfusion(0) = HK48*HK56; +Kfusion(1) = HK55*HK56; +Kfusion(2) = HK54*HK56; +Kfusion(3) = HK53*HK56; +Kfusion(4) = HK52*HK56; +Kfusion(5) = HK51*HK56; +Kfusion(6) = HK50*HK56; +Kfusion(7) = HK56*(-HK31*P(4,7) - HK39*P(5,7) - HK43*P(6,7) - HK44*P(0,7) + HK45*P(1,7) + HK46*P(2,7) + HK47*P(3,7)); +Kfusion(8) = HK56*(-HK31*P(4,8) - HK39*P(5,8) - HK43*P(6,8) - HK44*P(0,8) + HK45*P(1,8) + HK46*P(2,8) + HK47*P(3,8)); +Kfusion(9) = HK56*(-HK31*P(4,9) - HK39*P(5,9) - HK43*P(6,9) - HK44*P(0,9) + HK45*P(1,9) + HK46*P(2,9) + HK47*P(3,9)); +Kfusion(10) = HK56*(-HK31*P(4,10) - HK39*P(5,10) - HK43*P(6,10) - HK44*P(0,10) + HK45*P(1,10) + HK46*P(2,10) + HK47*P(3,10)); +Kfusion(11) = HK56*(-HK31*P(4,11) - HK39*P(5,11) - HK43*P(6,11) - HK44*P(0,11) + HK45*P(1,11) + HK46*P(2,11) + HK47*P(3,11)); +Kfusion(12) = HK56*(-HK31*P(4,12) - HK39*P(5,12) - HK43*P(6,12) - HK44*P(0,12) + HK45*P(1,12) + HK46*P(2,12) + HK47*P(3,12)); +Kfusion(13) = HK56*(-HK31*P(4,13) - HK39*P(5,13) - HK43*P(6,13) - HK44*P(0,13) + HK45*P(1,13) + HK46*P(2,13) + HK47*P(3,13)); +Kfusion(14) = HK56*(-HK31*P(4,14) - HK39*P(5,14) - HK43*P(6,14) - HK44*P(0,14) + HK45*P(1,14) + HK46*P(2,14) + HK47*P(3,14)); +Kfusion(15) = HK56*(-HK31*P(4,15) - HK39*P(5,15) - HK43*P(6,15) - HK44*P(0,15) + HK45*P(1,15) + HK46*P(2,15) + HK47*P(3,15)); +Kfusion(16) = HK56*(-HK31*P(4,16) - HK39*P(5,16) - HK43*P(6,16) - HK44*P(0,16) + HK45*P(1,16) + HK46*P(2,16) + HK47*P(3,16)); +Kfusion(17) = HK56*(-HK31*P(4,17) - HK39*P(5,17) - HK43*P(6,17) - HK44*P(0,17) + HK45*P(1,17) + HK46*P(2,17) + HK47*P(3,17)); +Kfusion(18) = HK56*(-HK31*P(4,18) - HK39*P(5,18) - HK43*P(6,18) - HK44*P(0,18) + HK45*P(1,18) + HK46*P(2,18) + HK47*P(3,18)); +Kfusion(19) = HK56*(-HK31*P(4,19) - HK39*P(5,19) - HK43*P(6,19) - HK44*P(0,19) + HK45*P(1,19) + HK46*P(2,19) + HK47*P(3,19)); +Kfusion(20) = HK56*(-HK31*P(4,20) - HK39*P(5,20) - HK43*P(6,20) - HK44*P(0,20) + HK45*P(1,20) + HK46*P(2,20) + HK47*P(3,20)); +Kfusion(21) = HK56*(-HK31*P(4,21) - HK39*P(5,21) - HK43*P(6,21) - HK44*P(0,21) + HK45*P(1,21) + HK46*P(2,21) + HK47*P(3,21)); +Kfusion(22) = HK56*(-HK31*P(4,22) - HK39*P(5,22) - HK43*P(6,22) - HK44*P(0,22) + HK45*P(1,22) + HK46*P(2,22) + HK47*P(3,22)); +Kfusion(23) = HK56*(-HK31*P(4,23) - HK39*P(5,23) - HK43*P(6,23) - HK44*P(0,23) + HK45*P(1,23) + HK46*P(2,23) + HK47*P(3,23)); + + +// Observation Jacobians - axis 1 +Hfusion.at<0>() = -HK65*HK9; +Hfusion.at<1>() = -HK73*HK9; +Hfusion.at<2>() = -HK79*HK9; +Hfusion.at<3>() = -HK82*HK9; +Hfusion.at<4>() = -HK8*HK86; +Hfusion.at<5>() = -HK8*HK89; +Hfusion.at<6>() = -HK8*HK91; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 1 +Kfusion(0) = -HK102*HK110; +Kfusion(1) = -HK109*HK110; +Kfusion(2) = -HK108*HK110; +Kfusion(3) = -HK107*HK110; +Kfusion(4) = -HK106*HK110; +Kfusion(5) = -HK105*HK110; +Kfusion(6) = -HK104*HK110; +Kfusion(7) = -HK110*(HK100*P(2,7) + HK101*P(3,7) + HK92*P(0,7) + HK95*P(4,7) + HK97*P(5,7) + HK98*P(6,7) + HK99*P(1,7)); +Kfusion(8) = -HK110*(HK100*P(2,8) + HK101*P(3,8) + HK92*P(0,8) + HK95*P(4,8) + HK97*P(5,8) + HK98*P(6,8) + HK99*P(1,8)); +Kfusion(9) = -HK110*(HK100*P(2,9) + HK101*P(3,9) + HK92*P(0,9) + HK95*P(4,9) + HK97*P(5,9) + HK98*P(6,9) + HK99*P(1,9)); +Kfusion(10) = -HK110*(HK100*P(2,10) + HK101*P(3,10) + HK92*P(0,10) + HK95*P(4,10) + HK97*P(5,10) + HK98*P(6,10) + HK99*P(1,10)); +Kfusion(11) = -HK110*(HK100*P(2,11) + HK101*P(3,11) + HK92*P(0,11) + HK95*P(4,11) + HK97*P(5,11) + HK98*P(6,11) + HK99*P(1,11)); +Kfusion(12) = -HK110*(HK100*P(2,12) + HK101*P(3,12) + HK92*P(0,12) + HK95*P(4,12) + HK97*P(5,12) + HK98*P(6,12) + HK99*P(1,12)); +Kfusion(13) = -HK110*(HK100*P(2,13) + HK101*P(3,13) + HK92*P(0,13) + HK95*P(4,13) + HK97*P(5,13) + HK98*P(6,13) + HK99*P(1,13)); +Kfusion(14) = -HK110*(HK100*P(2,14) + HK101*P(3,14) + HK92*P(0,14) + HK95*P(4,14) + HK97*P(5,14) + HK98*P(6,14) + HK99*P(1,14)); +Kfusion(15) = -HK110*(HK100*P(2,15) + HK101*P(3,15) + HK92*P(0,15) + HK95*P(4,15) + HK97*P(5,15) + HK98*P(6,15) + HK99*P(1,15)); +Kfusion(16) = -HK110*(HK100*P(2,16) + HK101*P(3,16) + HK92*P(0,16) + HK95*P(4,16) + HK97*P(5,16) + HK98*P(6,16) + HK99*P(1,16)); +Kfusion(17) = -HK110*(HK100*P(2,17) + HK101*P(3,17) + HK92*P(0,17) + HK95*P(4,17) + HK97*P(5,17) + HK98*P(6,17) + HK99*P(1,17)); +Kfusion(18) = -HK110*(HK100*P(2,18) + HK101*P(3,18) + HK92*P(0,18) + HK95*P(4,18) + HK97*P(5,18) + HK98*P(6,18) + HK99*P(1,18)); +Kfusion(19) = -HK110*(HK100*P(2,19) + HK101*P(3,19) + HK92*P(0,19) + HK95*P(4,19) + HK97*P(5,19) + HK98*P(6,19) + HK99*P(1,19)); +Kfusion(20) = -HK110*(HK100*P(2,20) + HK101*P(3,20) + HK92*P(0,20) + HK95*P(4,20) + HK97*P(5,20) + HK98*P(6,20) + HK99*P(1,20)); +Kfusion(21) = -HK110*(HK100*P(2,21) + HK101*P(3,21) + HK92*P(0,21) + HK95*P(4,21) + HK97*P(5,21) + HK98*P(6,21) + HK99*P(1,21)); +Kfusion(22) = -HK110*(HK100*P(2,22) + HK101*P(3,22) + HK92*P(0,22) + HK95*P(4,22) + HK97*P(5,22) + HK98*P(6,22) + HK99*P(1,22)); +Kfusion(23) = -HK110*(HK100*P(2,23) + HK101*P(3,23) + HK92*P(0,23) + HK95*P(4,23) + HK97*P(5,23) + HK98*P(6,23) + HK99*P(1,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/gps_yaw_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/gps_yaw_fusion_generated_compare.cpp new file mode 100644 index 0000000000..11c4a3d547 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/gps_yaw_fusion_generated_compare.cpp @@ -0,0 +1,266 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; +template +using SparseVector24f = matrix::SparseVectorf<24, Idxs...>; + +float sq(float in) { + return in * in; +} + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + + float H_YAW[24]; + Vector24f Kfusion; + float _heading_innov_var; + + const float R_YAW = sq(0.3f); + + const float _gps_yaw_offset = 1.5f; + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // First calculate observationjacobians and Kalman gains using sympy generated equations + + // calculate intermediate variables + const float HK0 = sinf(_gps_yaw_offset); + const float HK1 = q0*q3; + const float HK2 = q1*q2; + const float HK3 = 2*HK0*(HK1 - HK2); + const float HK4 = cosf(_gps_yaw_offset); + const float HK5 = powf(q1, 2); + const float HK6 = powf(q2, 2); + const float HK7 = powf(q0, 2) - powf(q3, 2); + const float HK8 = HK4*(HK5 - HK6 + HK7); + const float HK9 = HK3 - HK8; + if (fabsf(HK9) < 1e-3f) { + return 0; + } + const float HK10 = 1.0F/HK9; + const float HK11 = HK4*q0; + const float HK12 = HK0*q3; + const float HK13 = HK0*(-HK5 + HK6 + HK7) + 2*HK4*(HK1 + HK2); + const float HK14 = HK10*HK13; + const float HK15 = HK0*q0 + HK4*q3; + const float HK16 = HK10*(HK14*(HK11 - HK12) + HK15); + const float HK17 = powf(HK13, 2)/powf(HK9, 2) + 1; + if (fabsf(HK17) < 1e-3f) { + return 0; + } + const float HK18 = 2/HK17; + // const float HK19 = 1.0F/(-HK3 + HK8); + const float HK19_inverse = -HK3 + HK8; + if (fabsf(HK19_inverse) < 1e-6f) { + return 0; + } + const float HK19 = 1.0F/HK19_inverse; + const float HK20 = HK4*q1; + const float HK21 = HK0*q2; + const float HK22 = HK13*HK19; + const float HK23 = HK0*q1 - HK4*q2; + const float HK24 = HK19*(HK22*(HK20 + HK21) + HK23); + const float HK25 = HK19*(-HK20 - HK21 + HK22*HK23); + const float HK26 = HK10*(-HK11 + HK12 + HK14*HK15); + const float HK27 = -HK16*P(0,0) - HK24*P(0,1) - HK25*P(0,2) + HK26*P(0,3); + const float HK28 = -HK16*P(0,1) - HK24*P(1,1) - HK25*P(1,2) + HK26*P(1,3); + const float HK29 = 4/powf(HK17, 2); + const float HK30 = -HK16*P(0,2) - HK24*P(1,2) - HK25*P(2,2) + HK26*P(2,3); + const float HK31 = -HK16*P(0,3) - HK24*P(1,3) - HK25*P(2,3) + HK26*P(3,3); + const float HK32 = HK18/(-HK16*HK27*HK29 - HK24*HK28*HK29 - HK25*HK29*HK30 + HK26*HK29*HK31 + R_YAW); + + // calculate observation jacobian + // Observation jacobian and Kalman gain vectors + SparseVector24f<0,1,2,3> Hfusion; + Hfusion.at<0>() = -HK16*HK18; + Hfusion.at<1>() = -HK18*HK24; + Hfusion.at<2>() = -HK18*HK25; + Hfusion.at<3>() = HK18*HK26; + + // calculate the Kalman gains + // only calculate gains for states we are using + Kfusion(0) = HK27*HK32; + Kfusion(1) = HK28*HK32; + Kfusion(2) = HK30*HK32; + Kfusion(3) = HK31*HK32; + for (unsigned row = 4; row <= 23; row++) { + Kfusion(row) = HK32*(-HK16*P(0,row) - HK24*P(1,row) - HK25*P(2,row) + HK26*P(3,row)); + } + + // save output and repeat calculation using legacy matlab generated code + float Hfusion_sympy[24] = {}; + Vector24f Kfusion_sympy; + Hfusion_sympy[0] = Hfusion.at<0>(); + Hfusion_sympy[1] = Hfusion.at<1>(); + Hfusion_sympy[2] = Hfusion.at<2>(); + Hfusion_sympy[3] = Hfusion.at<3>(); + + for (int row=0; row<24; row++) { + Kfusion_sympy(row) = Kfusion(row); + } + + // repeat calculation using matlab generated equations + // calculate observation jacobian + float t2 = sinf(_gps_yaw_offset); + float t3 = cosf(_gps_yaw_offset); + float t4 = q0*q3*2.0f; + float t5 = q0*q0; + float t6 = q1*q1; + float t7 = q2*q2; + float t8 = q3*q3; + float t9 = q1*q2*2.0f; + float t10 = t5+t6-t7-t8; + float t11 = t3*t10; + float t12 = t4+t9; + float t13 = t3*t12; + float t14 = t5-t6+t7-t8; + float t15 = t2*t14; + float t16 = t13+t15; + float t17 = t4-t9; + float t19 = t2*t17; + float t20 = t11-t19; + float t18 = (t20*t20); + + t18 = 1.0f / t18; + float t21 = t16*t16; + float t22 = sq(t11-t19); + + t22 = 1.0f/t22; + float t23 = q1*t3*2.0f; + float t24 = q2*t2*2.0f; + float t25 = t23+t24; + float t26 = 1.0f/t20; + float t27 = q1*t2*2.0f; + float t28 = t21*t22; + float t29 = t28+1.0f; + + float t30 = 1.0f/t29; + float t31 = q0*t3*2.0f; + float t32 = t31-q3*t2*2.0f; + float t33 = q3*t3*2.0f; + float t34 = q0*t2*2.0f; + float t35 = t33+t34; + + memset(&H_YAW, 0, sizeof(H_YAW)); + H_YAW[0] = (t35/(t11-t2*(t4-q1*q2*2.0f))-t16*t18*t32)/(t18*t21+1.0f); + H_YAW[1] = -t30*(t26*(t27-q2*t3*2.0f)+t16*t22*t25); + H_YAW[2] = t30*(t25*t26-t16*t22*(t27-q2*t3*2.0f)); + H_YAW[3] = t30*(t26*t32+t16*t22*t35); + + // Calculate innovation variance and Kalman gains, taking advantage of the fact that only the first 3 elements in H are non zero + // calculate the innovation variance + float PH[4]; + _heading_innov_var = R_YAW; + + for (unsigned row = 0; row <= 3; row++) { + PH[row] = 0.0f; + + for (uint8_t col = 0; col <= 3; col++) { + PH[row] += P(row,col) * H_YAW[col]; + } + + _heading_innov_var += H_YAW[row] * PH[row]; + } + + const float heading_innov_var_inv = 1.f / _heading_innov_var; + + // calculate the Kalman gains + // only calculate gains for states we are using + memset(&Kfusion, 0, sizeof(Kfusion)); + + for (uint8_t row = 0; row <= 15; row++) { + for (uint8_t col = 0; col <= 3; col++) { + Kfusion(row) += P(row,col) * H_YAW[col]; + } + Kfusion(row) *= heading_innov_var_inv; + } + + if (true) { + for (uint8_t row = 22; row <= 23; row++) { + for (uint8_t col = 0; col <= 3; col++) { + Kfusion(row) += P(row,col) * H_YAW[col]; + } + Kfusion(row) *= heading_innov_var_inv; + } + } + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (H_YAW[row] != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_YAW[row]) / fabsf(H_YAW[row]); + } else if (Hfusion_sympy[row] != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_YAW[row]) / fabsf(Hfusion_sympy[row]); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_YAW[row]; + max_new = Hfusion_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: GPS yaw Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: GPS yaw Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: GPS yaw Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: GPS yaw Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/gps_yaw_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/gps_yaw_generated.cpp new file mode 100644 index 0000000000..f63b262958 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/gps_yaw_generated.cpp @@ -0,0 +1,84 @@ +// Sub Expressions +const float HK0 = cosf(ant_yaw); +const float HK1 = sinf(ant_yaw); +const float HK2 = q0*q3; +const float HK3 = q1*q2; +const float HK4 = 2*HK1; +const float HK5 = 2*powf(q3, 2) - 1; +const float HK6 = HK0*(HK5 + 2*powf(q2, 2)) + HK4*(HK2 - HK3); +const float HK7 = 1.0F/HK6; +const float HK8 = 2*HK0; +const float HK9 = -HK1*(HK5 + 2*powf(q1, 2)) + HK8*(HK2 + HK3); +const float HK10 = HK7*HK9; +const float HK11 = HK1*HK10; +const float HK12 = q3*(-HK0 + HK11); +const float HK13 = powf(HK6, -2); +const float HK14 = HK13*powf(HK9, 2) + 1; +const float HK15 = 2*HK7/HK14; +const float HK16 = HK0*q2; +const float HK17 = HK1*q1; +const float HK18 = HK11*q2 + HK16 - 2*HK17; +const float HK19 = HK0*q1 + HK10*(-2*HK16 + HK17); +const float HK20 = -HK0*q0 + HK10*(HK1*q0 + HK8*q3) + HK4*q3; +const float HK21 = HK12*P(0,0) - HK18*P(0,1) - HK19*P(0,2) + HK20*P(0,3); +const float HK22 = 4*HK13/powf(HK14, 2); +const float HK23 = HK12*P(0,1) - HK18*P(1,1) - HK19*P(1,2) + HK20*P(1,3); +const float HK24 = HK12*P(0,2) - HK18*P(1,2) - HK19*P(2,2) + HK20*P(2,3); +const float HK25 = HK12*P(0,3) - HK18*P(1,3) - HK19*P(2,3) + HK20*P(3,3); +const float HK26 = HK15/(HK12*HK21*HK22 - HK18*HK22*HK23 - HK19*HK22*HK24 + HK20*HK22*HK25 + R_YAW); + + +// Observation Jacobians +Hfusion.at<0>() = HK12*HK15; +Hfusion.at<1>() = -HK15*HK18; +Hfusion.at<2>() = -HK15*HK19; +Hfusion.at<3>() = HK15*HK20; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = HK21*HK26; +Kfusion(1) = HK23*HK26; +Kfusion(2) = HK24*HK26; +Kfusion(3) = HK25*HK26; +Kfusion(4) = HK26*(HK12*P(0,4) - HK18*P(1,4) - HK19*P(2,4) + HK20*P(3,4)); +Kfusion(5) = HK26*(HK12*P(0,5) - HK18*P(1,5) - HK19*P(2,5) + HK20*P(3,5)); +Kfusion(6) = HK26*(HK12*P(0,6) - HK18*P(1,6) - HK19*P(2,6) + HK20*P(3,6)); +Kfusion(7) = HK26*(HK12*P(0,7) - HK18*P(1,7) - HK19*P(2,7) + HK20*P(3,7)); +Kfusion(8) = HK26*(HK12*P(0,8) - HK18*P(1,8) - HK19*P(2,8) + HK20*P(3,8)); +Kfusion(9) = HK26*(HK12*P(0,9) - HK18*P(1,9) - HK19*P(2,9) + HK20*P(3,9)); +Kfusion(10) = HK26*(HK12*P(0,10) - HK18*P(1,10) - HK19*P(2,10) + HK20*P(3,10)); +Kfusion(11) = HK26*(HK12*P(0,11) - HK18*P(1,11) - HK19*P(2,11) + HK20*P(3,11)); +Kfusion(12) = HK26*(HK12*P(0,12) - HK18*P(1,12) - HK19*P(2,12) + HK20*P(3,12)); +Kfusion(13) = HK26*(HK12*P(0,13) - HK18*P(1,13) - HK19*P(2,13) + HK20*P(3,13)); +Kfusion(14) = HK26*(HK12*P(0,14) - HK18*P(1,14) - HK19*P(2,14) + HK20*P(3,14)); +Kfusion(15) = HK26*(HK12*P(0,15) - HK18*P(1,15) - HK19*P(2,15) + HK20*P(3,15)); +Kfusion(16) = HK26*(HK12*P(0,16) - HK18*P(1,16) - HK19*P(2,16) + HK20*P(3,16)); +Kfusion(17) = HK26*(HK12*P(0,17) - HK18*P(1,17) - HK19*P(2,17) + HK20*P(3,17)); +Kfusion(18) = HK26*(HK12*P(0,18) - HK18*P(1,18) - HK19*P(2,18) + HK20*P(3,18)); +Kfusion(19) = HK26*(HK12*P(0,19) - HK18*P(1,19) - HK19*P(2,19) + HK20*P(3,19)); +Kfusion(20) = HK26*(HK12*P(0,20) - HK18*P(1,20) - HK19*P(2,20) + HK20*P(3,20)); +Kfusion(21) = HK26*(HK12*P(0,21) - HK18*P(1,21) - HK19*P(2,21) + HK20*P(3,21)); +Kfusion(22) = HK26*(HK12*P(0,22) - HK18*P(1,22) - HK19*P(2,22) + HK20*P(3,22)); +Kfusion(23) = HK26*(HK12*P(0,23) - HK18*P(1,23) - HK19*P(2,23) + HK20*P(3,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/mag_decl_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/mag_decl_fusion_generated_compare.cpp new file mode 100644 index 0000000000..6972e1ad1f --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/mag_decl_fusion_generated_compare.cpp @@ -0,0 +1,227 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; + +float sq(float in) { + return in * in; +} + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + + float Hfusion[24] = {}; + Vector24f H_DECL; + Vector24f Kfusion; + float decl_innov_var; + + const float R_DECL = sq(0.3f); + + const float _gps_yaw_offset = 1.5f; + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + const float magN = 0.04f; + const float magE = -0.03f; + + const float h_field_min = 1e-3f; + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // First calculate observationjacobians and Kalman gains using sympy generated equations + + // Calculate intermediate variables + const float magN_sq = sq(magN); + if (magN_sq < sq(h_field_min)) { + printf("bad numerical conditioning\n"); + return 0; + } + const float HK0 = 1.0F / magN_sq; + const float HK1 = HK0*sq(magE) + 1.0F; + const float HK2 = 1.0F/HK1; + const float HK3 = 1.0F/magN; + const float HK4 = HK2*HK3; + const float HK5 = HK3*magE; + const float HK6 = HK5*P(16,17) - P(17,17); + const float HK7 = 1.0F/sq(HK1); + const float HK8 = HK5*P(16,16) - P(16,17); + const float innovation_variance = -HK0*HK6*HK7 + HK7*HK8*magE/(magN * magN_sq) + R_DECL; + float HK9; + if (innovation_variance > R_DECL) { + HK9 = HK4/innovation_variance; + } else { + printf("bad numerical conditioning\n"); + } + + // Calculate the observation Jacobian + // Note only 2 terms are non-zero which can be used in matrix operations for calculation of Kalman gains and covariance update to significantly reduce cost + Hfusion[16] = -HK0*HK2*magE; + Hfusion[17] = HK4; + + // Calculate the Kalman gains + for (unsigned row = 0; row <= 15; row++) { + Kfusion(row) = -HK9*(HK5*P(row,16) - P(row,17)); + } + + Kfusion(16) = -HK8*HK9; + Kfusion(17) = -HK6*HK9; + + for (unsigned row = 18; row <= 23; row++) { + Kfusion(row) = -HK9*(HK5*P(16,row) - P(17,row)); + } + + // save output and repeat calculation using legacy matlab generated code + float Hfusion_sympy[24]; + Vector24f Kfusion_sympy; + for (int row=0; row<24; row++) { + Hfusion_sympy[row] = Hfusion[row]; + Kfusion_sympy(row) = Kfusion(row); + } + + // repeat calculation using matlab generated equations + // Calculate intermediate variables + float t2 = magE*magE; + float t3 = magN*magN; + float t4 = t2+t3; + // if the horizontal magnetic field is too small, this calculation will be badly conditioned + if (t4 < h_field_min*h_field_min) { + printf("bad numerical conditioning\n"); + return 0; + } + float t5 = P(16,16)*t2; + float t6 = P(17,17)*t3; + float t7 = t2*t2; + float t8 = R_DECL*t7; + float t9 = t3*t3; + float t10 = R_DECL*t9; + float t11 = R_DECL*t2*t3*2.0f; + float t14 = P(16,17)*magE*magN; + float t15 = P(17,16)*magE*magN; + float t12 = t5+t6+t8+t10+t11-t14-t15; + float t13; + if (fabsf(t12) > 1e-6f) { + t13 = 1.0f / t12; + } else { + printf("bad numerical conditioning\n"); + return 0; + } + float t18 = magE*magE; + float t19 = magN*magN; + float t20 = t18+t19; + float t21; + if (fabsf(t20) > 1e-6f) { + t21 = 1.0f/t20; + } else { + printf("bad numerical conditioning\n"); + return 0; + } + + // Calculate the observation Jacobian + // Note only 2 terms are non-zero which can be used in matrix operations for calculation of Kalman gains and covariance update to significantly reduce cost + memset(&H_DECL, 0, sizeof(H_DECL)); + H_DECL(16) = -magE*t21; + H_DECL(17) = magN*t21; + + // Calculate the Kalman gains + Kfusion(0) = -t4*t13*(P(0,16)*magE-P(0,17)*magN); + Kfusion(1) = -t4*t13*(P(1,16)*magE-P(1,17)*magN); + Kfusion(2) = -t4*t13*(P(2,16)*magE-P(2,17)*magN); + Kfusion(3) = -t4*t13*(P(3,16)*magE-P(3,17)*magN); + Kfusion(4) = -t4*t13*(P(4,16)*magE-P(4,17)*magN); + Kfusion(5) = -t4*t13*(P(5,16)*magE-P(5,17)*magN); + Kfusion(6) = -t4*t13*(P(6,16)*magE-P(6,17)*magN); + Kfusion(7) = -t4*t13*(P(7,16)*magE-P(7,17)*magN); + Kfusion(8) = -t4*t13*(P(8,16)*magE-P(8,17)*magN); + Kfusion(9) = -t4*t13*(P(9,16)*magE-P(9,17)*magN); + Kfusion(10) = -t4*t13*(P(10,16)*magE-P(10,17)*magN); + Kfusion(11) = -t4*t13*(P(11,16)*magE-P(11,17)*magN); + Kfusion(12) = -t4*t13*(P(12,16)*magE-P(12,17)*magN); + Kfusion(13) = -t4*t13*(P(13,16)*magE-P(13,17)*magN); + Kfusion(14) = -t4*t13*(P(14,16)*magE-P(14,17)*magN); + Kfusion(15) = -t4*t13*(P(15,16)*magE-P(15,17)*magN); + Kfusion(16) = -t4*t13*(P(16,16)*magE-P(16,17)*magN); + Kfusion(17) = -t4*t13*(P(17,16)*magE-P(17,17)*magN); + Kfusion(18) = -t4*t13*(P(18,16)*magE-P(18,17)*magN); + Kfusion(19) = -t4*t13*(P(19,16)*magE-P(19,17)*magN); + Kfusion(20) = -t4*t13*(P(20,16)*magE-P(20,17)*magN); + Kfusion(21) = -t4*t13*(P(21,16)*magE-P(21,17)*magN); + Kfusion(22) = -t4*t13*(P(22,16)*magE-P(22,17)*magN); + Kfusion(23) = -t4*t13*(P(23,16)*magE-P(23,17)*magN); + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (H_DECL(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_DECL(row)) / fabsf(H_DECL(row)); + } else if (Hfusion_sympy[row] != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy[row] - H_DECL(row)) / fabsf(Hfusion_sympy[row]); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_DECL(row); + max_new = Hfusion_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Mag Declination Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Mag Declination Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Mag Declination Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Mag Declination Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/mag_decl_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/mag_decl_generated.cpp new file mode 100644 index 0000000000..56c59ee421 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/mag_decl_generated.cpp @@ -0,0 +1,67 @@ +// Sub Expressions +const float HK0 = powf(magN, -2); +const float HK1 = HK0*powf(magE, 2) + 1; +const float HK2 = 1.0F/HK1; +const float HK3 = 1.0F/magN; +const float HK4 = HK2*HK3; +const float HK5 = HK3*magE; +const float HK6 = HK5*P(16,17) - P(17,17); +const float HK7 = powf(HK1, -2); +const float HK8 = HK5*P(16,16) - P(16,17); +const float HK9 = HK4/(-HK0*HK6*HK7 + HK7*HK8*magE/powf(magN, 3) + R_DECL); + + +// Observation Jacobians +Hfusion.at<0>() = 0; +Hfusion.at<1>() = 0; +Hfusion.at<2>() = 0; +Hfusion.at<3>() = 0; +Hfusion.at<4>() = 0; +Hfusion.at<5>() = 0; +Hfusion.at<6>() = 0; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = -HK0*HK2*magE; +Hfusion.at<17>() = HK4; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains +Kfusion(0) = -HK9*(HK5*P(0,16) - P(0,17)); +Kfusion(1) = -HK9*(HK5*P(1,16) - P(1,17)); +Kfusion(2) = -HK9*(HK5*P(2,16) - P(2,17)); +Kfusion(3) = -HK9*(HK5*P(3,16) - P(3,17)); +Kfusion(4) = -HK9*(HK5*P(4,16) - P(4,17)); +Kfusion(5) = -HK9*(HK5*P(5,16) - P(5,17)); +Kfusion(6) = -HK9*(HK5*P(6,16) - P(6,17)); +Kfusion(7) = -HK9*(HK5*P(7,16) - P(7,17)); +Kfusion(8) = -HK9*(HK5*P(8,16) - P(8,17)); +Kfusion(9) = -HK9*(HK5*P(9,16) - P(9,17)); +Kfusion(10) = -HK9*(HK5*P(10,16) - P(10,17)); +Kfusion(11) = -HK9*(HK5*P(11,16) - P(11,17)); +Kfusion(12) = -HK9*(HK5*P(12,16) - P(12,17)); +Kfusion(13) = -HK9*(HK5*P(13,16) - P(13,17)); +Kfusion(14) = -HK9*(HK5*P(14,16) - P(14,17)); +Kfusion(15) = -HK9*(HK5*P(15,16) - P(15,17)); +Kfusion(16) = -HK8*HK9; +Kfusion(17) = -HK6*HK9; +Kfusion(18) = -HK9*(HK5*P(16,18) - P(17,18)); +Kfusion(19) = -HK9*(HK5*P(16,19) - P(17,19)); +Kfusion(20) = -HK9*(HK5*P(16,20) - P(17,20)); +Kfusion(21) = -HK9*(HK5*P(16,21) - P(17,21)); +Kfusion(22) = -HK9*(HK5*P(16,22) - P(17,22)); +Kfusion(23) = -HK9*(HK5*P(16,23) - P(17,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/tas_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/tas_fusion_generated_compare.cpp new file mode 100644 index 0000000000..5cc31b84fe --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/tas_fusion_generated_compare.cpp @@ -0,0 +1,227 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" +#include "util.h" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; +template +using SparseVector24f = matrix::SparseVectorf<24, Idxs...>; + +int main() +{ + // Compare calculation of observation Jacobians and Kalman gains for sympy and matlab generated equations + + float airspeed_innov_var; + + Vector24f Kfusion; // Kalman gain vector + + Vector24f Hfusion_sympy; + Vector24f Kfusion_sympy; + + Vector24f Hfusion_matlab; + Vector24f Kfusion_matlab; + + const float R_TAS = sq(1.5f); + + const bool update_wind_only = false; + + // get latest velocity in earth frame + const float vn = 9.0f; + const float ve = 12.0f; + const float vd = -1.5f; + + // get latest wind velocity in earth frame + const float vwn = -4.0f; + const float vwe = 3.0f; + + // create a symmetrical positive dfinite matrix with off diagonals between -1 and 1 and diagonals between 0 and 1 + SquareMatrix24f P; + for (int col=0; col<=23; col++) { + for (int row=0; row<=col; row++) { + if (row == col) { + P(row,col) = (float)rand(); + } else { + P(col,row) = P(row,col) = 2.0f * ((float)rand() - 0.5f); + } + } + } + + // First calculate observationjacobians and Kalman gains using sympy generated equations + + { + // Intermediate variables + const float HK0 = vn - vwn; + const float HK1 = ve - vwe; + const float HK2 = ecl::powf(HK0, 2) + ecl::powf(HK1, 2) + ecl::powf(vd, 2); + const float v_tas_pred = sqrtf(HK2); // predicted airspeed + //const float HK3 = powf(HK2, -1.0F/2.0F); + if (v_tas_pred < 1.0f) { + // calculation can be badly conditioned for very low airspeed values so don't fuse this time + return 0; + } + const float HK3 = 1.0f / v_tas_pred; + const float HK4 = HK0*HK3; + const float HK5 = HK1*HK3; + const float HK6 = 1.0F/HK2; + const float HK7 = HK0*P(4,6) - HK0*P(6,22) + HK1*P(5,6) - HK1*P(6,23) + P(6,6)*vd; + const float HK8 = HK1*P(5,23); + const float HK9 = HK0*P(4,5) - HK0*P(5,22) + HK1*P(5,5) - HK8 + P(5,6)*vd; + const float HK10 = HK1*HK6; + const float HK11 = HK0*P(4,22); + const float HK12 = HK0*P(4,4) - HK1*P(4,23) + HK1*P(4,5) - HK11 + P(4,6)*vd; + const float HK13 = HK0*HK6; + const float HK14 = -HK0*P(22,23) + HK0*P(4,23) - HK1*P(23,23) + HK8 + P(6,23)*vd; + const float HK15 = -HK0*P(22,22) - HK1*P(22,23) + HK1*P(5,22) + HK11 + P(6,22)*vd; + const float HK16 = HK3/(-HK10*HK14 + HK10*HK9 + HK12*HK13 - HK13*HK15 + HK6*HK7*vd + R_TAS); + + // Observation Jacobians + SparseVector24f<4,5,6,22,23> Hfusion; + Hfusion.at<4>() = HK4; + Hfusion.at<5>() = HK5; + Hfusion.at<6>() = HK3*vd; + Hfusion.at<22>() = -HK4; + Hfusion.at<23>() = -HK5; + + if (true) { + // we have no other source of aiding, so use airspeed measurements to correct states + for (unsigned row = 0; row <= 3; row++) { + Kfusion(row) = HK16*(HK0*P(4,row) - HK0*P(row,22) + HK1*P(5,row) - HK1*P(row,23) + P(6,row)*vd); + } + + Kfusion(4) = HK12*HK16; + Kfusion(5) = HK16*HK9; + Kfusion(6) = HK16*HK7; + + for (unsigned row = 7; row <= 21; row++) { + Kfusion(row) = HK16*(HK0*P(4,row) - HK0*P(row,22) + HK1*P(5,row) - HK1*P(row,23) + P(6,row)*vd); + } + } + + Kfusion(22) = HK15*HK16; + Kfusion(23) = HK14*HK16; + + // save output + Hfusion_sympy(4) = Hfusion.at<4>(); + Hfusion_sympy(5) = Hfusion.at<5>(); + Hfusion_sympy(6) = Hfusion.at<6>(); + Hfusion_sympy(22) = Hfusion.at<22>(); + Hfusion_sympy(23) = Hfusion.at<23>(); + Kfusion_sympy = Kfusion; + } + // repeat calculation using matlab generated equations + { + const float v_tas_pred = sqrtf((ve - vwe) * (ve - vwe) + (vn - vwn) * (vn - vwn) + vd * vd); + + // intermediate variable from algebraic optimisation + float SH_TAS[3]; + SH_TAS[0] = 1.0f/v_tas_pred; + SH_TAS[1] = (SH_TAS[0]*(2.0f*ve - 2.0f*vwe))*0.5f; + SH_TAS[2] = (SH_TAS[0]*(2.0f*vn - 2.0f*vwn))*0.5f; + + // Observation Jacobian + Vector24f H_TAS = {}; + H_TAS(4) = SH_TAS[2]; + H_TAS(5) = SH_TAS[1]; + H_TAS(6) = vd*SH_TAS[0]; + H_TAS(22) = -SH_TAS[2]; + H_TAS(23) = -SH_TAS[1]; + + airspeed_innov_var = (R_TAS + SH_TAS[2]*(P(4,4)*SH_TAS[2] + P(5,4)*SH_TAS[1] - P(22,4)*SH_TAS[2] - P(23,4)*SH_TAS[1] + P(6,4)*vd*SH_TAS[0]) + SH_TAS[1]*(P(4,5)*SH_TAS[2] + P(5,5)*SH_TAS[1] - P(22,5)*SH_TAS[2] - P(23,5)*SH_TAS[1] + P(6,5)*vd*SH_TAS[0]) - SH_TAS[2]*(P(4,22)*SH_TAS[2] + P(5,22)*SH_TAS[1] - P(22,22)*SH_TAS[2] - P(23,22)*SH_TAS[1] + P(6,22)*vd*SH_TAS[0]) - SH_TAS[1]*(P(4,23)*SH_TAS[2] + P(5,23)*SH_TAS[1] - P(22,23)*SH_TAS[2] - P(23,23)*SH_TAS[1] + P(6,23)*vd*SH_TAS[0]) + vd*SH_TAS[0]*(P(4,6)*SH_TAS[2] + P(5,6)*SH_TAS[1] - P(22,6)*SH_TAS[2] - P(23,6)*SH_TAS[1] + P(6,6)*vd*SH_TAS[0])); + + float SK_TAS[2]; + SK_TAS[0] = 1.0f / airspeed_innov_var; + SK_TAS[1] = SH_TAS[1]; + + // Kalman gain + Kfusion(0) = SK_TAS[0]*(P(0,4)*SH_TAS[2] - P(0,22)*SH_TAS[2] + P(0,5)*SK_TAS[1] - P(0,23)*SK_TAS[1] + P(0,6)*vd*SH_TAS[0]); + Kfusion(1) = SK_TAS[0]*(P(1,4)*SH_TAS[2] - P(1,22)*SH_TAS[2] + P(1,5)*SK_TAS[1] - P(1,23)*SK_TAS[1] + P(1,6)*vd*SH_TAS[0]); + Kfusion(2) = SK_TAS[0]*(P(2,4)*SH_TAS[2] - P(2,22)*SH_TAS[2] + P(2,5)*SK_TAS[1] - P(2,23)*SK_TAS[1] + P(2,6)*vd*SH_TAS[0]); + Kfusion(3) = SK_TAS[0]*(P(3,4)*SH_TAS[2] - P(3,22)*SH_TAS[2] + P(3,5)*SK_TAS[1] - P(3,23)*SK_TAS[1] + P(3,6)*vd*SH_TAS[0]); + Kfusion(4) = SK_TAS[0]*(P(4,4)*SH_TAS[2] - P(4,22)*SH_TAS[2] + P(4,5)*SK_TAS[1] - P(4,23)*SK_TAS[1] + P(4,6)*vd*SH_TAS[0]); + Kfusion(5) = SK_TAS[0]*(P(5,4)*SH_TAS[2] - P(5,22)*SH_TAS[2] + P(5,5)*SK_TAS[1] - P(5,23)*SK_TAS[1] + P(5,6)*vd*SH_TAS[0]); + Kfusion(6) = SK_TAS[0]*(P(6,4)*SH_TAS[2] - P(6,22)*SH_TAS[2] + P(6,5)*SK_TAS[1] - P(6,23)*SK_TAS[1] + P(6,6)*vd*SH_TAS[0]); + Kfusion(7) = SK_TAS[0]*(P(7,4)*SH_TAS[2] - P(7,22)*SH_TAS[2] + P(7,5)*SK_TAS[1] - P(7,23)*SK_TAS[1] + P(7,6)*vd*SH_TAS[0]); + Kfusion(8) = SK_TAS[0]*(P(8,4)*SH_TAS[2] - P(8,22)*SH_TAS[2] + P(8,5)*SK_TAS[1] - P(8,23)*SK_TAS[1] + P(8,6)*vd*SH_TAS[0]); + Kfusion(9) = SK_TAS[0]*(P(9,4)*SH_TAS[2] - P(9,22)*SH_TAS[2] + P(9,5)*SK_TAS[1] - P(9,23)*SK_TAS[1] + P(9,6)*vd*SH_TAS[0]); + Kfusion(10) = SK_TAS[0]*(P(10,4)*SH_TAS[2] - P(10,22)*SH_TAS[2] + P(10,5)*SK_TAS[1] - P(10,23)*SK_TAS[1] + P(10,6)*vd*SH_TAS[0]); + Kfusion(11) = SK_TAS[0]*(P(11,4)*SH_TAS[2] - P(11,22)*SH_TAS[2] + P(11,5)*SK_TAS[1] - P(11,23)*SK_TAS[1] + P(11,6)*vd*SH_TAS[0]); + Kfusion(12) = SK_TAS[0]*(P(12,4)*SH_TAS[2] - P(12,22)*SH_TAS[2] + P(12,5)*SK_TAS[1] - P(12,23)*SK_TAS[1] + P(12,6)*vd*SH_TAS[0]); + Kfusion(13) = SK_TAS[0]*(P(13,4)*SH_TAS[2] - P(13,22)*SH_TAS[2] + P(13,5)*SK_TAS[1] - P(13,23)*SK_TAS[1] + P(13,6)*vd*SH_TAS[0]); + Kfusion(14) = SK_TAS[0]*(P(14,4)*SH_TAS[2] - P(14,22)*SH_TAS[2] + P(14,5)*SK_TAS[1] - P(14,23)*SK_TAS[1] + P(14,6)*vd*SH_TAS[0]); + Kfusion(15) = SK_TAS[0]*(P(15,4)*SH_TAS[2] - P(15,22)*SH_TAS[2] + P(15,5)*SK_TAS[1] - P(15,23)*SK_TAS[1] + P(15,6)*vd*SH_TAS[0]); + Kfusion(16) = SK_TAS[0]*(P(16,4)*SH_TAS[2] - P(16,22)*SH_TAS[2] + P(16,5)*SK_TAS[1] - P(16,23)*SK_TAS[1] + P(16,6)*vd*SH_TAS[0]); + Kfusion(17) = SK_TAS[0]*(P(17,4)*SH_TAS[2] - P(17,22)*SH_TAS[2] + P(17,5)*SK_TAS[1] - P(17,23)*SK_TAS[1] + P(17,6)*vd*SH_TAS[0]); + Kfusion(18) = SK_TAS[0]*(P(18,4)*SH_TAS[2] - P(18,22)*SH_TAS[2] + P(18,5)*SK_TAS[1] - P(18,23)*SK_TAS[1] + P(18,6)*vd*SH_TAS[0]); + Kfusion(19) = SK_TAS[0]*(P(19,4)*SH_TAS[2] - P(19,22)*SH_TAS[2] + P(19,5)*SK_TAS[1] - P(19,23)*SK_TAS[1] + P(19,6)*vd*SH_TAS[0]); + Kfusion(20) = SK_TAS[0]*(P(20,4)*SH_TAS[2] - P(20,22)*SH_TAS[2] + P(20,5)*SK_TAS[1] - P(20,23)*SK_TAS[1] + P(20,6)*vd*SH_TAS[0]); + Kfusion(21) = SK_TAS[0]*(P(21,4)*SH_TAS[2] - P(21,22)*SH_TAS[2] + P(21,5)*SK_TAS[1] - P(21,23)*SK_TAS[1] + P(21,6)*vd*SH_TAS[0]); + Kfusion(22) = SK_TAS[0]*(P(22,4)*SH_TAS[2] - P(22,22)*SH_TAS[2] + P(22,5)*SK_TAS[1] - P(22,23)*SK_TAS[1] + P(22,6)*vd*SH_TAS[0]); + Kfusion(23) = SK_TAS[0]*(P(23,4)*SH_TAS[2] - P(23,22)*SH_TAS[2] + P(23,5)*SK_TAS[1] - P(23,23)*SK_TAS[1] + P(23,6)*vd*SH_TAS[0]); + + // save output; + Hfusion_matlab = H_TAS; + Kfusion_matlab = Kfusion; + } + + // find largest observation variance difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<24; row++) { + float diff_fraction; + if (Hfusion_matlab(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_matlab(row)); + } else if (Hfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Hfusion_sympy(row) - Hfusion_matlab(row)) / fabsf(Hfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + if (Hfusion_sympy(row) - Hfusion_matlab(row) != 0.0f) { + printf("new,old Hfusion(%i) = %e,%e\n",row,Hfusion_sympy(row),Hfusion_matlab(row)); + } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Hfusion_matlab(row); + max_new = Hfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Airspeed Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Airspeed Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // find largest Kalman gain difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction; + if (Kfusion(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion(row)); + } else if (Kfusion_sympy(row) != 0.0f) { + diff_fraction = fabsf(Kfusion_sympy(row) - Kfusion(row)) / fabsf(Kfusion_sympy(row)); + } else { + diff_fraction = 0.0f; + } + // if (Kfusion_sympy(row) - Kfusion(row) != 0.0f) { + // printf("new,old Kfusion(%i) = %e,%e\n",row,Kfusion_sympy(row),Kfusion(row)); + // } + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = Kfusion(row); + max_new = Kfusion_sympy(row); + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: Airspeed Kfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: Airspeed Kfusion max diff fraction = %e\n",max_diff_fraction); + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/tas_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/tas_generated.cpp new file mode 100644 index 0000000000..5a5bf5e64d --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/tas_generated.cpp @@ -0,0 +1,74 @@ +// Sub Expressions +const float HK0 = vn - vwn; +const float HK1 = ve - vwe; +const float HK2 = powf(HK0, 2) + powf(HK1, 2) + powf(vd, 2); +const float HK3 = powf(HK2, -1.0F/2.0F); +const float HK4 = HK0*HK3; +const float HK5 = HK1*HK3; +const float HK6 = 1.0F/HK2; +const float HK7 = HK0*P(4,6) - HK0*P(6,22) + HK1*P(5,6) - HK1*P(6,23) + P(6,6)*vd; +const float HK8 = HK1*P(5,23); +const float HK9 = HK0*P(4,5) - HK0*P(5,22) + HK1*P(5,5) - HK8 + P(5,6)*vd; +const float HK10 = HK1*HK6; +const float HK11 = HK0*P(4,22); +const float HK12 = HK0*P(4,4) - HK1*P(4,23) + HK1*P(4,5) - HK11 + P(4,6)*vd; +const float HK13 = HK0*HK6; +const float HK14 = -HK0*P(22,23) + HK0*P(4,23) - HK1*P(23,23) + HK8 + P(6,23)*vd; +const float HK15 = -HK0*P(22,22) - HK1*P(22,23) + HK1*P(5,22) + HK11 + P(6,22)*vd; +const float HK16 = HK3/(-HK10*HK14 + HK10*HK9 + HK12*HK13 - HK13*HK15 + HK6*HK7*vd + R_TAS); + + +// Observation Jacobians +Hfusion.at<0>() = 0; +Hfusion.at<1>() = 0; +Hfusion.at<2>() = 0; +Hfusion.at<3>() = 0; +Hfusion.at<4>() = HK4; +Hfusion.at<5>() = HK5; +Hfusion.at<6>() = HK3*vd; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = -HK4; +Hfusion.at<23>() = -HK5; + + +// Kalman gains +Kfusion(0) = HK16*(-HK0*P(0,22) + HK0*P(0,4) - HK1*P(0,23) + HK1*P(0,5) + P(0,6)*vd); +Kfusion(1) = HK16*(-HK0*P(1,22) + HK0*P(1,4) - HK1*P(1,23) + HK1*P(1,5) + P(1,6)*vd); +Kfusion(2) = HK16*(-HK0*P(2,22) + HK0*P(2,4) - HK1*P(2,23) + HK1*P(2,5) + P(2,6)*vd); +Kfusion(3) = HK16*(-HK0*P(3,22) + HK0*P(3,4) - HK1*P(3,23) + HK1*P(3,5) + P(3,6)*vd); +Kfusion(4) = HK12*HK16; +Kfusion(5) = HK16*HK9; +Kfusion(6) = HK16*HK7; +Kfusion(7) = HK16*(HK0*P(4,7) - HK0*P(7,22) + HK1*P(5,7) - HK1*P(7,23) + P(6,7)*vd); +Kfusion(8) = HK16*(HK0*P(4,8) - HK0*P(8,22) + HK1*P(5,8) - HK1*P(8,23) + P(6,8)*vd); +Kfusion(9) = HK16*(HK0*P(4,9) - HK0*P(9,22) + HK1*P(5,9) - HK1*P(9,23) + P(6,9)*vd); +Kfusion(10) = HK16*(-HK0*P(10,22) + HK0*P(4,10) - HK1*P(10,23) + HK1*P(5,10) + P(6,10)*vd); +Kfusion(11) = HK16*(-HK0*P(11,22) + HK0*P(4,11) - HK1*P(11,23) + HK1*P(5,11) + P(6,11)*vd); +Kfusion(12) = HK16*(-HK0*P(12,22) + HK0*P(4,12) - HK1*P(12,23) + HK1*P(5,12) + P(6,12)*vd); +Kfusion(13) = HK16*(-HK0*P(13,22) + HK0*P(4,13) - HK1*P(13,23) + HK1*P(5,13) + P(6,13)*vd); +Kfusion(14) = HK16*(-HK0*P(14,22) + HK0*P(4,14) - HK1*P(14,23) + HK1*P(5,14) + P(6,14)*vd); +Kfusion(15) = HK16*(-HK0*P(15,22) + HK0*P(4,15) - HK1*P(15,23) + HK1*P(5,15) + P(6,15)*vd); +Kfusion(16) = HK16*(-HK0*P(16,22) + HK0*P(4,16) - HK1*P(16,23) + HK1*P(5,16) + P(6,16)*vd); +Kfusion(17) = HK16*(-HK0*P(17,22) + HK0*P(4,17) - HK1*P(17,23) + HK1*P(5,17) + P(6,17)*vd); +Kfusion(18) = HK16*(-HK0*P(18,22) + HK0*P(4,18) - HK1*P(18,23) + HK1*P(5,18) + P(6,18)*vd); +Kfusion(19) = HK16*(-HK0*P(19,22) + HK0*P(4,19) - HK1*P(19,23) + HK1*P(5,19) + P(6,19)*vd); +Kfusion(20) = HK16*(-HK0*P(20,22) + HK0*P(4,20) - HK1*P(20,23) + HK1*P(5,20) + P(6,20)*vd); +Kfusion(21) = HK16*(-HK0*P(21,22) + HK0*P(4,21) - HK1*P(21,23) + HK1*P(5,21) + P(6,21)*vd); +Kfusion(22) = HK15*HK16; +Kfusion(23) = HK14*HK16; + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/util.h b/src/lib/ecl/EKF/python/ekf_derivation/generated/util.h new file mode 100644 index 0000000000..36ba9f4ffc --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/util.h @@ -0,0 +1,24 @@ +#include "../../../../../matrix/matrix/math.hpp" + +typedef matrix::SquareMatrix SquareMatrix24f; + +inline float sq(float in) { + return in * in; +} + +namespace ecl{ + inline float powf(float x, int exp) + { + float ret; + if (exp > 0) { + ret = x; + for (int count = 1; count < exp; count++) { + ret *= x; + } + return ret; + } else if (exp < 0) { + return 1.0f / ecl::powf(x, -exp); + } + return 1.0f; + } +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/vel_bf_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/vel_bf_generated.cpp new file mode 100644 index 0000000000..1f6f9a6b28 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/vel_bf_generated.cpp @@ -0,0 +1,248 @@ +// axis 0 +const float HK0 = q3*ve; +const float HK1 = q2*vd; +const float HK2 = q2*ve + q3*vd; +const float HK3 = q1*ve; +const float HK4 = q0*vd; +const float HK5 = 2*vn; +const float HK6 = HK5*q2; +const float HK7 = -HK5*q3 + q0*ve + q1*vd; +const float HK8 = 2*powf(q2, 2); +const float HK9 = 2*powf(q3, 2); +const float HK10 = q0*q3 + q1*q2; +const float HK11 = q1*q3; +const float HK12 = q0*q2; +const float HK13 = 2*HK2; +const float HK14 = 2*HK10; +const float HK15 = -2*HK0 + 2*HK1; +const float HK16 = -2*HK11 + 2*HK12; +const float HK17 = 2*HK7; +const float HK18 = HK8 + HK9 - 1; +const float HK19 = -2*HK3 + 2*HK4 + 2*HK6; +const float HK20 = -HK13*P(0,1) - HK14*P(0,5) + HK15*P(0,0) + HK16*P(0,6) - HK17*P(0,3) + HK18*P(0,4) + HK19*P(0,2); +const float HK21 = -HK13*P(1,5) - HK14*P(5,5) + HK15*P(0,5) + HK16*P(5,6) - HK17*P(3,5) + HK18*P(4,5) + HK19*P(2,5); +const float HK22 = -HK13*P(1,1) - HK14*P(1,5) + HK15*P(0,1) + HK16*P(1,6) - HK17*P(1,3) + HK18*P(1,4) + HK19*P(1,2); +const float HK23 = -HK13*P(1,6) - HK14*P(5,6) + HK15*P(0,6) + HK16*P(6,6) - HK17*P(3,6) + HK18*P(4,6) + HK19*P(2,6); +const float HK24 = -HK13*P(1,4) - HK14*P(4,5) + HK15*P(0,4) + HK16*P(4,6) - HK17*P(3,4) + HK18*P(4,4) + HK19*P(2,4); +const float HK25 = -HK13*P(1,3) - HK14*P(3,5) + HK15*P(0,3) + HK16*P(3,6) - HK17*P(3,3) + HK18*P(3,4) + HK19*P(2,3); +const float HK26 = -HK13*P(1,2) - HK14*P(2,5) + HK15*P(0,2) + HK16*P(2,6) - HK17*P(2,3) + HK18*P(2,4) + HK19*P(2,2); +const float HK27 = 1.0F/(-HK13*HK22 - HK14*HK21 + HK15*HK20 + HK16*HK23 - HK17*HK25 + HK18*HK24 + HK19*HK26 + R_VEL); + + +H_VEL(0) = 2*HK0 - 2*HK1; +H_VEL(1) = 2*HK2; +H_VEL(2) = 2*HK3 - 2*HK4 - 2*HK6; +H_VEL(3) = 2*HK7; +H_VEL(4) = -HK8 - HK9 + 1; +H_VEL(5) = 2*HK10; +H_VEL(6) = 2*HK11 - 2*HK12; +H_VEL(7) = 0; +H_VEL(8) = 0; +H_VEL(9) = 0; +H_VEL(10) = 0; +H_VEL(11) = 0; +H_VEL(12) = 0; +H_VEL(13) = 0; +H_VEL(14) = 0; +H_VEL(15) = 0; +H_VEL(16) = 0; +H_VEL(17) = 0; +H_VEL(18) = 0; +H_VEL(19) = 0; +H_VEL(20) = 0; +H_VEL(21) = 0; +H_VEL(22) = 0; +H_VEL(23) = 0; + + +Kfusion(0) = -HK20*HK27; +Kfusion(1) = -HK22*HK27; +Kfusion(2) = -HK26*HK27; +Kfusion(3) = -HK25*HK27; +Kfusion(4) = -HK24*HK27; +Kfusion(5) = -HK21*HK27; +Kfusion(6) = -HK23*HK27; +Kfusion(7) = -HK27*(-HK13*P(1,7) - HK14*P(5,7) + HK15*P(0,7) + HK16*P(6,7) - HK17*P(3,7) + HK18*P(4,7) + HK19*P(2,7)); +Kfusion(8) = -HK27*(-HK13*P(1,8) - HK14*P(5,8) + HK15*P(0,8) + HK16*P(6,8) - HK17*P(3,8) + HK18*P(4,8) + HK19*P(2,8)); +Kfusion(9) = -HK27*(-HK13*P(1,9) - HK14*P(5,9) + HK15*P(0,9) + HK16*P(6,9) - HK17*P(3,9) + HK18*P(4,9) + HK19*P(2,9)); +Kfusion(10) = -HK27*(-HK13*P(1,10) - HK14*P(5,10) + HK15*P(0,10) + HK16*P(6,10) - HK17*P(3,10) + HK18*P(4,10) + HK19*P(2,10)); +Kfusion(11) = -HK27*(-HK13*P(1,11) - HK14*P(5,11) + HK15*P(0,11) + HK16*P(6,11) - HK17*P(3,11) + HK18*P(4,11) + HK19*P(2,11)); +Kfusion(12) = -HK27*(-HK13*P(1,12) - HK14*P(5,12) + HK15*P(0,12) + HK16*P(6,12) - HK17*P(3,12) + HK18*P(4,12) + HK19*P(2,12)); +Kfusion(13) = -HK27*(-HK13*P(1,13) - HK14*P(5,13) + HK15*P(0,13) + HK16*P(6,13) - HK17*P(3,13) + HK18*P(4,13) + HK19*P(2,13)); +Kfusion(14) = -HK27*(-HK13*P(1,14) - HK14*P(5,14) + HK15*P(0,14) + HK16*P(6,14) - HK17*P(3,14) + HK18*P(4,14) + HK19*P(2,14)); +Kfusion(15) = -HK27*(-HK13*P(1,15) - HK14*P(5,15) + HK15*P(0,15) + HK16*P(6,15) - HK17*P(3,15) + HK18*P(4,15) + HK19*P(2,15)); +Kfusion(16) = -HK27*(-HK13*P(1,16) - HK14*P(5,16) + HK15*P(0,16) + HK16*P(6,16) - HK17*P(3,16) + HK18*P(4,16) + HK19*P(2,16)); +Kfusion(17) = -HK27*(-HK13*P(1,17) - HK14*P(5,17) + HK15*P(0,17) + HK16*P(6,17) - HK17*P(3,17) + HK18*P(4,17) + HK19*P(2,17)); +Kfusion(18) = -HK27*(-HK13*P(1,18) - HK14*P(5,18) + HK15*P(0,18) + HK16*P(6,18) - HK17*P(3,18) + HK18*P(4,18) + HK19*P(2,18)); +Kfusion(19) = -HK27*(-HK13*P(1,19) - HK14*P(5,19) + HK15*P(0,19) + HK16*P(6,19) - HK17*P(3,19) + HK18*P(4,19) + HK19*P(2,19)); +Kfusion(20) = -HK27*(-HK13*P(1,20) - HK14*P(5,20) + HK15*P(0,20) + HK16*P(6,20) - HK17*P(3,20) + HK18*P(4,20) + HK19*P(2,20)); +Kfusion(21) = -HK27*(-HK13*P(1,21) - HK14*P(5,21) + HK15*P(0,21) + HK16*P(6,21) - HK17*P(3,21) + HK18*P(4,21) + HK19*P(2,21)); +Kfusion(22) = -HK27*(-HK13*P(1,22) - HK14*P(5,22) + HK15*P(0,22) + HK16*P(6,22) - HK17*P(3,22) + HK18*P(4,22) + HK19*P(2,22)); +Kfusion(23) = -HK27*(-HK13*P(1,23) - HK14*P(5,23) + HK15*P(0,23) + HK16*P(6,23) - HK17*P(3,23) + HK18*P(4,23) + HK19*P(2,23)); + + +// axis 1 +const float HK0 = q1*vd - q3*vn; +const float HK1 = 2*ve; +const float HK2 = -HK1*q1 + q0*vd + q2*vn; +const float HK3 = q1*vn + q3*vd; +const float HK4 = q2*vd; +const float HK5 = q0*vn; +const float HK6 = HK1*q3; +const float HK7 = q1*q2; +const float HK8 = q0*q3; +const float HK9 = 2*powf(q1, 2); +const float HK10 = 2*powf(q3, 2); +const float HK11 = q0*q1 + q2*q3; +const float HK12 = 2*HK3; +const float HK13 = 2*HK11; +const float HK14 = 2*HK0; +const float HK15 = -2*HK7 + 2*HK8; +const float HK16 = 2*HK2; +const float HK17 = -2*HK4 + 2*HK5 + 2*HK6; +const float HK18 = HK10 + HK9 - 1; +const float HK19 = HK12*P(0,2) + HK13*P(0,6) + HK14*P(0,0) - HK15*P(0,4) + HK16*P(0,1) - HK17*P(0,3) - HK18*P(0,5); +const float HK20 = HK12*P(2,6) + HK13*P(6,6) + HK14*P(0,6) - HK15*P(4,6) + HK16*P(1,6) - HK17*P(3,6) - HK18*P(5,6); +const float HK21 = HK12*P(2,2) + HK13*P(2,6) + HK14*P(0,2) - HK15*P(2,4) + HK16*P(1,2) - HK17*P(2,3) - HK18*P(2,5); +const float HK22 = HK12*P(2,4) + HK13*P(4,6) + HK14*P(0,4) - HK15*P(4,4) + HK16*P(1,4) - HK17*P(3,4) - HK18*P(4,5); +const float HK23 = HK12*P(1,2) + HK13*P(1,6) + HK14*P(0,1) - HK15*P(1,4) + HK16*P(1,1) - HK17*P(1,3) - HK18*P(1,5); +const float HK24 = HK12*P(2,5) + HK13*P(5,6) + HK14*P(0,5) - HK15*P(4,5) + HK16*P(1,5) - HK17*P(3,5) - HK18*P(5,5); +const float HK25 = HK12*P(2,3) + HK13*P(3,6) + HK14*P(0,3) - HK15*P(3,4) + HK16*P(1,3) - HK17*P(3,3) - HK18*P(3,5); +const float HK26 = 1.0F/(HK12*HK21 + HK13*HK20 + HK14*HK19 - HK15*HK22 + HK16*HK23 - HK17*HK25 - HK18*HK24 + R_VEL); + + +H_VEL(0) = 2*HK0; +H_VEL(1) = 2*HK2; +H_VEL(2) = 2*HK3; +H_VEL(3) = 2*HK4 - 2*HK5 - 2*HK6; +H_VEL(4) = 2*HK7 - 2*HK8; +H_VEL(5) = -HK10 - HK9 + 1; +H_VEL(6) = 2*HK11; +H_VEL(7) = 0; +H_VEL(8) = 0; +H_VEL(9) = 0; +H_VEL(10) = 0; +H_VEL(11) = 0; +H_VEL(12) = 0; +H_VEL(13) = 0; +H_VEL(14) = 0; +H_VEL(15) = 0; +H_VEL(16) = 0; +H_VEL(17) = 0; +H_VEL(18) = 0; +H_VEL(19) = 0; +H_VEL(20) = 0; +H_VEL(21) = 0; +H_VEL(22) = 0; +H_VEL(23) = 0; + + +Kfusion(0) = HK19*HK26; +Kfusion(1) = HK23*HK26; +Kfusion(2) = HK21*HK26; +Kfusion(3) = HK25*HK26; +Kfusion(4) = HK22*HK26; +Kfusion(5) = HK24*HK26; +Kfusion(6) = HK20*HK26; +Kfusion(7) = HK26*(HK12*P(2,7) + HK13*P(6,7) + HK14*P(0,7) - HK15*P(4,7) + HK16*P(1,7) - HK17*P(3,7) - HK18*P(5,7)); +Kfusion(8) = HK26*(HK12*P(2,8) + HK13*P(6,8) + HK14*P(0,8) - HK15*P(4,8) + HK16*P(1,8) - HK17*P(3,8) - HK18*P(5,8)); +Kfusion(9) = HK26*(HK12*P(2,9) + HK13*P(6,9) + HK14*P(0,9) - HK15*P(4,9) + HK16*P(1,9) - HK17*P(3,9) - HK18*P(5,9)); +Kfusion(10) = HK26*(HK12*P(2,10) + HK13*P(6,10) + HK14*P(0,10) - HK15*P(4,10) + HK16*P(1,10) - HK17*P(3,10) - HK18*P(5,10)); +Kfusion(11) = HK26*(HK12*P(2,11) + HK13*P(6,11) + HK14*P(0,11) - HK15*P(4,11) + HK16*P(1,11) - HK17*P(3,11) - HK18*P(5,11)); +Kfusion(12) = HK26*(HK12*P(2,12) + HK13*P(6,12) + HK14*P(0,12) - HK15*P(4,12) + HK16*P(1,12) - HK17*P(3,12) - HK18*P(5,12)); +Kfusion(13) = HK26*(HK12*P(2,13) + HK13*P(6,13) + HK14*P(0,13) - HK15*P(4,13) + HK16*P(1,13) - HK17*P(3,13) - HK18*P(5,13)); +Kfusion(14) = HK26*(HK12*P(2,14) + HK13*P(6,14) + HK14*P(0,14) - HK15*P(4,14) + HK16*P(1,14) - HK17*P(3,14) - HK18*P(5,14)); +Kfusion(15) = HK26*(HK12*P(2,15) + HK13*P(6,15) + HK14*P(0,15) - HK15*P(4,15) + HK16*P(1,15) - HK17*P(3,15) - HK18*P(5,15)); +Kfusion(16) = HK26*(HK12*P(2,16) + HK13*P(6,16) + HK14*P(0,16) - HK15*P(4,16) + HK16*P(1,16) - HK17*P(3,16) - HK18*P(5,16)); +Kfusion(17) = HK26*(HK12*P(2,17) + HK13*P(6,17) + HK14*P(0,17) - HK15*P(4,17) + HK16*P(1,17) - HK17*P(3,17) - HK18*P(5,17)); +Kfusion(18) = HK26*(HK12*P(2,18) + HK13*P(6,18) + HK14*P(0,18) - HK15*P(4,18) + HK16*P(1,18) - HK17*P(3,18) - HK18*P(5,18)); +Kfusion(19) = HK26*(HK12*P(2,19) + HK13*P(6,19) + HK14*P(0,19) - HK15*P(4,19) + HK16*P(1,19) - HK17*P(3,19) - HK18*P(5,19)); +Kfusion(20) = HK26*(HK12*P(2,20) + HK13*P(6,20) + HK14*P(0,20) - HK15*P(4,20) + HK16*P(1,20) - HK17*P(3,20) - HK18*P(5,20)); +Kfusion(21) = HK26*(HK12*P(2,21) + HK13*P(6,21) + HK14*P(0,21) - HK15*P(4,21) + HK16*P(1,21) - HK17*P(3,21) - HK18*P(5,21)); +Kfusion(22) = HK26*(HK12*P(2,22) + HK13*P(6,22) + HK14*P(0,22) - HK15*P(4,22) + HK16*P(1,22) - HK17*P(3,22) - HK18*P(5,22)); +Kfusion(23) = HK26*(HK12*P(2,23) + HK13*P(6,23) + HK14*P(0,23) - HK15*P(4,23) + HK16*P(1,23) - HK17*P(3,23) - HK18*P(5,23)); + + +// axis 2 +const float HK0 = q2*vn; +const float HK1 = q1*ve; +const float HK2 = q3*vn; +const float HK3 = q0*ve; +const float HK4 = 2*vd; +const float HK5 = HK4*q1; +const float HK6 = -HK4*q2 + q0*vn + q3*ve; +const float HK7 = q1*vn + q2*ve; +const float HK8 = q0*q2 + q1*q3; +const float HK9 = q2*q3; +const float HK10 = q0*q1; +const float HK11 = 2*powf(q1, 2); +const float HK12 = 2*powf(q2, 2); +const float HK13 = 2*HK7; +const float HK14 = 2*HK8; +const float HK15 = -2*HK0 + 2*HK1; +const float HK16 = 2*HK10 - 2*HK9; +const float HK17 = 2*HK6; +const float HK18 = HK11 + HK12 - 1; +const float HK19 = -2*HK2 + 2*HK3 + 2*HK5; +const float HK20 = -HK13*P(0,3) - HK14*P(0,4) + HK15*P(0,0) + HK16*P(0,5) - HK17*P(0,2) + HK18*P(0,6) + HK19*P(0,1); +const float HK21 = -HK13*P(3,4) - HK14*P(4,4) + HK15*P(0,4) + HK16*P(4,5) - HK17*P(2,4) + HK18*P(4,6) + HK19*P(1,4); +const float HK22 = -HK13*P(3,3) - HK14*P(3,4) + HK15*P(0,3) + HK16*P(3,5) - HK17*P(2,3) + HK18*P(3,6) + HK19*P(1,3); +const float HK23 = -HK13*P(3,5) - HK14*P(4,5) + HK15*P(0,5) + HK16*P(5,5) - HK17*P(2,5) + HK18*P(5,6) + HK19*P(1,5); +const float HK24 = -HK13*P(3,6) - HK14*P(4,6) + HK15*P(0,6) + HK16*P(5,6) - HK17*P(2,6) + HK18*P(6,6) + HK19*P(1,6); +const float HK25 = -HK13*P(2,3) - HK14*P(2,4) + HK15*P(0,2) + HK16*P(2,5) - HK17*P(2,2) + HK18*P(2,6) + HK19*P(1,2); +const float HK26 = -HK13*P(1,3) - HK14*P(1,4) + HK15*P(0,1) + HK16*P(1,5) - HK17*P(1,2) + HK18*P(1,6) + HK19*P(1,1); +const float HK27 = 1.0F/(-HK13*HK22 - HK14*HK21 + HK15*HK20 + HK16*HK23 - HK17*HK25 + HK18*HK24 + HK19*HK26 + R_VEL); + + +H_VEL(0) = 2*HK0 - 2*HK1; +H_VEL(1) = 2*HK2 - 2*HK3 - 2*HK5; +H_VEL(2) = 2*HK6; +H_VEL(3) = 2*HK7; +H_VEL(4) = 2*HK8; +H_VEL(5) = -2*HK10 + 2*HK9; +H_VEL(6) = -HK11 - HK12 + 1; +H_VEL(7) = 0; +H_VEL(8) = 0; +H_VEL(9) = 0; +H_VEL(10) = 0; +H_VEL(11) = 0; +H_VEL(12) = 0; +H_VEL(13) = 0; +H_VEL(14) = 0; +H_VEL(15) = 0; +H_VEL(16) = 0; +H_VEL(17) = 0; +H_VEL(18) = 0; +H_VEL(19) = 0; +H_VEL(20) = 0; +H_VEL(21) = 0; +H_VEL(22) = 0; +H_VEL(23) = 0; + + +Kfusion(0) = -HK20*HK27; +Kfusion(1) = -HK26*HK27; +Kfusion(2) = -HK25*HK27; +Kfusion(3) = -HK22*HK27; +Kfusion(4) = -HK21*HK27; +Kfusion(5) = -HK23*HK27; +Kfusion(6) = -HK24*HK27; +Kfusion(7) = -HK27*(-HK13*P(3,7) - HK14*P(4,7) + HK15*P(0,7) + HK16*P(5,7) - HK17*P(2,7) + HK18*P(6,7) + HK19*P(1,7)); +Kfusion(8) = -HK27*(-HK13*P(3,8) - HK14*P(4,8) + HK15*P(0,8) + HK16*P(5,8) - HK17*P(2,8) + HK18*P(6,8) + HK19*P(1,8)); +Kfusion(9) = -HK27*(-HK13*P(3,9) - HK14*P(4,9) + HK15*P(0,9) + HK16*P(5,9) - HK17*P(2,9) + HK18*P(6,9) + HK19*P(1,9)); +Kfusion(10) = -HK27*(-HK13*P(3,10) - HK14*P(4,10) + HK15*P(0,10) + HK16*P(5,10) - HK17*P(2,10) + HK18*P(6,10) + HK19*P(1,10)); +Kfusion(11) = -HK27*(-HK13*P(3,11) - HK14*P(4,11) + HK15*P(0,11) + HK16*P(5,11) - HK17*P(2,11) + HK18*P(6,11) + HK19*P(1,11)); +Kfusion(12) = -HK27*(-HK13*P(3,12) - HK14*P(4,12) + HK15*P(0,12) + HK16*P(5,12) - HK17*P(2,12) + HK18*P(6,12) + HK19*P(1,12)); +Kfusion(13) = -HK27*(-HK13*P(3,13) - HK14*P(4,13) + HK15*P(0,13) + HK16*P(5,13) - HK17*P(2,13) + HK18*P(6,13) + HK19*P(1,13)); +Kfusion(14) = -HK27*(-HK13*P(3,14) - HK14*P(4,14) + HK15*P(0,14) + HK16*P(5,14) - HK17*P(2,14) + HK18*P(6,14) + HK19*P(1,14)); +Kfusion(15) = -HK27*(-HK13*P(3,15) - HK14*P(4,15) + HK15*P(0,15) + HK16*P(5,15) - HK17*P(2,15) + HK18*P(6,15) + HK19*P(1,15)); +Kfusion(16) = -HK27*(-HK13*P(3,16) - HK14*P(4,16) + HK15*P(0,16) + HK16*P(5,16) - HK17*P(2,16) + HK18*P(6,16) + HK19*P(1,16)); +Kfusion(17) = -HK27*(-HK13*P(3,17) - HK14*P(4,17) + HK15*P(0,17) + HK16*P(5,17) - HK17*P(2,17) + HK18*P(6,17) + HK19*P(1,17)); +Kfusion(18) = -HK27*(-HK13*P(3,18) - HK14*P(4,18) + HK15*P(0,18) + HK16*P(5,18) - HK17*P(2,18) + HK18*P(6,18) + HK19*P(1,18)); +Kfusion(19) = -HK27*(-HK13*P(3,19) - HK14*P(4,19) + HK15*P(0,19) + HK16*P(5,19) - HK17*P(2,19) + HK18*P(6,19) + HK19*P(1,19)); +Kfusion(20) = -HK27*(-HK13*P(3,20) - HK14*P(4,20) + HK15*P(0,20) + HK16*P(5,20) - HK17*P(2,20) + HK18*P(6,20) + HK19*P(1,20)); +Kfusion(21) = -HK27*(-HK13*P(3,21) - HK14*P(4,21) + HK15*P(0,21) + HK16*P(5,21) - HK17*P(2,21) + HK18*P(6,21) + HK19*P(1,21)); +Kfusion(22) = -HK27*(-HK13*P(3,22) - HK14*P(4,22) + HK15*P(0,22) + HK16*P(5,22) - HK17*P(2,22) + HK18*P(6,22) + HK19*P(1,22)); +Kfusion(23) = -HK27*(-HK13*P(3,23) - HK14*P(4,23) + HK15*P(0,23) + HK16*P(5,23) - HK17*P(2,23) + HK18*P(6,23) + HK19*P(1,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/vel_bf_generated_alt.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/vel_bf_generated_alt.cpp new file mode 100644 index 0000000000..7a66b237c5 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/vel_bf_generated_alt.cpp @@ -0,0 +1,251 @@ +// Sub Expressions +const float HK0 = q3*ve; +const float HK1 = q2*vd; +const float HK2 = -HK1; +const float HK3 = q2*ve; +const float HK4 = q3*vd; +const float HK5 = HK3 + HK4; +const float HK6 = q1*ve; +const float HK7 = q0*vd; +const float HK8 = q2*vn; +const float HK9 = 2*HK8; +const float HK10 = q0*ve; +const float HK11 = q1*vd; +const float HK12 = q3*vn; +const float HK13 = HK10 + HK11 - 2*HK12; +const float HK14 = 2*powf(q2, 2); +const float HK15 = -HK14; +const float HK16 = 2*powf(q3, 2); +const float HK17 = 1 - HK16; +const float HK18 = q0*q3; +const float HK19 = q1*q2; +const float HK20 = HK18 + HK19; +const float HK21 = q1*q3; +const float HK22 = q0*q2; +const float HK23 = 2*HK5; +const float HK24 = 2*HK20; +const float HK25 = -2*HK0 + 2*HK1; +const float HK26 = -2*HK21 + 2*HK22; +const float HK27 = 2*HK13; +const float HK28 = HK16 - 1; +const float HK29 = HK14 + HK28; +const float HK30 = -HK6; +const float HK31 = 2*HK30 + 2*HK7 + 2*HK9; +const float HK32 = -HK23*P(0,1) - HK24*P(0,5) + HK25*P(0,0) + HK26*P(0,6) - HK27*P(0,3) + HK29*P(0,4) + HK31*P(0,2); +const float HK33 = -HK23*P(1,5) - HK24*P(5,5) + HK25*P(0,5) + HK26*P(5,6) - HK27*P(3,5) + HK29*P(4,5) + HK31*P(2,5); +const float HK34 = -HK23*P(1,1) - HK24*P(1,5) + HK25*P(0,1) + HK26*P(1,6) - HK27*P(1,3) + HK29*P(1,4) + HK31*P(1,2); +const float HK35 = -HK23*P(1,6) - HK24*P(5,6) + HK25*P(0,6) + HK26*P(6,6) - HK27*P(3,6) + HK29*P(4,6) + HK31*P(2,6); +const float HK36 = -HK23*P(1,4) - HK24*P(4,5) + HK25*P(0,4) + HK26*P(4,6) - HK27*P(3,4) + HK29*P(4,4) + HK31*P(2,4); +const float HK37 = -HK23*P(1,3) - HK24*P(3,5) + HK25*P(0,3) + HK26*P(3,6) - HK27*P(3,3) + HK29*P(3,4) + HK31*P(2,3); +const float HK38 = -HK23*P(1,2) - HK24*P(2,5) + HK25*P(0,2) + HK26*P(2,6) - HK27*P(2,3) + HK29*P(2,4) + HK31*P(2,2); +const float HK39 = 1.0F/(-HK23*HK34 - HK24*HK33 + HK25*HK32 + HK26*HK35 - HK27*HK37 + HK29*HK36 + HK31*HK38 + R_VEL); +const float HK40 = -HK12; +const float HK41 = HK11 + HK40; +const float HK42 = -2*HK6 + HK7 + HK8; +const float HK43 = q1*vn; +const float HK44 = HK4 + HK43; +const float HK45 = q0*vn; +const float HK46 = 2*HK0; +const float HK47 = 2*powf(q1, 2); +const float HK48 = -HK47; +const float HK49 = q0*q1; +const float HK50 = q2*q3; +const float HK51 = HK49 + HK50; +const float HK52 = 2*HK44; +const float HK53 = 2*HK51; +const float HK54 = 2*HK41; +const float HK55 = 2*HK18 - 2*HK19; +const float HK56 = 2*HK42; +const float HK57 = 2*HK2 + 2*HK45 + 2*HK46; +const float HK58 = HK28 + HK47; +const float HK59 = HK52*P(0,2) + HK53*P(0,6) + HK54*P(0,0) - HK55*P(0,4) + HK56*P(0,1) - HK57*P(0,3) - HK58*P(0,5); +const float HK60 = HK52*P(2,6) + HK53*P(6,6) + HK54*P(0,6) - HK55*P(4,6) + HK56*P(1,6) - HK57*P(3,6) - HK58*P(5,6); +const float HK61 = HK52*P(2,2) + HK53*P(2,6) + HK54*P(0,2) - HK55*P(2,4) + HK56*P(1,2) - HK57*P(2,3) - HK58*P(2,5); +const float HK62 = HK52*P(2,4) + HK53*P(4,6) + HK54*P(0,4) - HK55*P(4,4) + HK56*P(1,4) - HK57*P(3,4) - HK58*P(4,5); +const float HK63 = HK52*P(1,2) + HK53*P(1,6) + HK54*P(0,1) - HK55*P(1,4) + HK56*P(1,1) - HK57*P(1,3) - HK58*P(1,5); +const float HK64 = HK52*P(2,5) + HK53*P(5,6) + HK54*P(0,5) - HK55*P(4,5) + HK56*P(1,5) - HK57*P(3,5) - HK58*P(5,5); +const float HK65 = HK52*P(2,3) + HK53*P(3,6) + HK54*P(0,3) - HK55*P(3,4) + HK56*P(1,3) - HK57*P(3,3) - HK58*P(3,5); +const float HK66 = 1.0F/(HK52*HK61 + HK53*HK60 + HK54*HK59 - HK55*HK62 + HK56*HK63 - HK57*HK65 - HK58*HK64 + R_VEL); +const float HK67 = 2*HK11; +const float HK68 = HK0 - 2*HK1 + HK45; +const float HK69 = HK3 + HK43; +const float HK70 = HK21 + HK22; +const float HK71 = 2*HK69; +const float HK72 = 2*HK70; +const float HK73 = 2*HK6 - 2*HK8; +const float HK74 = 2*HK49 - 2*HK50; +const float HK75 = 2*HK68; +const float HK76 = HK14 + HK47 - 1; +const float HK77 = 2*HK10 + 2*HK40 + 2*HK67; +const float HK78 = -HK71*P(0,3) - HK72*P(0,4) + HK73*P(0,0) + HK74*P(0,5) - HK75*P(0,2) + HK76*P(0,6) + HK77*P(0,1); +const float HK79 = -HK71*P(3,4) - HK72*P(4,4) + HK73*P(0,4) + HK74*P(4,5) - HK75*P(2,4) + HK76*P(4,6) + HK77*P(1,4); +const float HK80 = -HK71*P(3,3) - HK72*P(3,4) + HK73*P(0,3) + HK74*P(3,5) - HK75*P(2,3) + HK76*P(3,6) + HK77*P(1,3); +const float HK81 = -HK71*P(3,5) - HK72*P(4,5) + HK73*P(0,5) + HK74*P(5,5) - HK75*P(2,5) + HK76*P(5,6) + HK77*P(1,5); +const float HK82 = -HK71*P(3,6) - HK72*P(4,6) + HK73*P(0,6) + HK74*P(5,6) - HK75*P(2,6) + HK76*P(6,6) + HK77*P(1,6); +const float HK83 = -HK71*P(2,3) - HK72*P(2,4) + HK73*P(0,2) + HK74*P(2,5) - HK75*P(2,2) + HK76*P(2,6) + HK77*P(1,2); +const float HK84 = -HK71*P(1,3) - HK72*P(1,4) + HK73*P(0,1) + HK74*P(1,5) - HK75*P(1,2) + HK76*P(1,6) + HK77*P(1,1); +const float HK85 = 1.0F/(-HK71*HK80 - HK72*HK79 + HK73*HK78 + HK74*HK81 - HK75*HK83 + HK76*HK82 + HK77*HK84 + R_VEL); + + +// Observation Jacobians - axis 0 +Hfusion.at<0>() = 2*HK0 + 2*HK2; +Hfusion.at<1>() = 2*HK5; +Hfusion.at<2>() = 2*HK6 - 2*HK7 - 2*HK9; +Hfusion.at<3>() = 2*HK13; +Hfusion.at<4>() = HK15 + HK17; +Hfusion.at<5>() = 2*HK20; +Hfusion.at<6>() = 2*HK21 - 2*HK22; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 0 +Kfusion(0) = -HK32*HK39; +Kfusion(1) = -HK34*HK39; +Kfusion(2) = -HK38*HK39; +Kfusion(3) = -HK37*HK39; +Kfusion(4) = -HK36*HK39; +Kfusion(5) = -HK33*HK39; +Kfusion(6) = -HK35*HK39; +Kfusion(7) = -HK39*(-HK23*P(1,7) - HK24*P(5,7) + HK25*P(0,7) + HK26*P(6,7) - HK27*P(3,7) + HK29*P(4,7) + HK31*P(2,7)); +Kfusion(8) = -HK39*(-HK23*P(1,8) - HK24*P(5,8) + HK25*P(0,8) + HK26*P(6,8) - HK27*P(3,8) + HK29*P(4,8) + HK31*P(2,8)); +Kfusion(9) = -HK39*(-HK23*P(1,9) - HK24*P(5,9) + HK25*P(0,9) + HK26*P(6,9) - HK27*P(3,9) + HK29*P(4,9) + HK31*P(2,9)); +Kfusion(10) = -HK39*(-HK23*P(1,10) - HK24*P(5,10) + HK25*P(0,10) + HK26*P(6,10) - HK27*P(3,10) + HK29*P(4,10) + HK31*P(2,10)); +Kfusion(11) = -HK39*(-HK23*P(1,11) - HK24*P(5,11) + HK25*P(0,11) + HK26*P(6,11) - HK27*P(3,11) + HK29*P(4,11) + HK31*P(2,11)); +Kfusion(12) = -HK39*(-HK23*P(1,12) - HK24*P(5,12) + HK25*P(0,12) + HK26*P(6,12) - HK27*P(3,12) + HK29*P(4,12) + HK31*P(2,12)); +Kfusion(13) = -HK39*(-HK23*P(1,13) - HK24*P(5,13) + HK25*P(0,13) + HK26*P(6,13) - HK27*P(3,13) + HK29*P(4,13) + HK31*P(2,13)); +Kfusion(14) = -HK39*(-HK23*P(1,14) - HK24*P(5,14) + HK25*P(0,14) + HK26*P(6,14) - HK27*P(3,14) + HK29*P(4,14) + HK31*P(2,14)); +Kfusion(15) = -HK39*(-HK23*P(1,15) - HK24*P(5,15) + HK25*P(0,15) + HK26*P(6,15) - HK27*P(3,15) + HK29*P(4,15) + HK31*P(2,15)); +Kfusion(16) = -HK39*(-HK23*P(1,16) - HK24*P(5,16) + HK25*P(0,16) + HK26*P(6,16) - HK27*P(3,16) + HK29*P(4,16) + HK31*P(2,16)); +Kfusion(17) = -HK39*(-HK23*P(1,17) - HK24*P(5,17) + HK25*P(0,17) + HK26*P(6,17) - HK27*P(3,17) + HK29*P(4,17) + HK31*P(2,17)); +Kfusion(18) = -HK39*(-HK23*P(1,18) - HK24*P(5,18) + HK25*P(0,18) + HK26*P(6,18) - HK27*P(3,18) + HK29*P(4,18) + HK31*P(2,18)); +Kfusion(19) = -HK39*(-HK23*P(1,19) - HK24*P(5,19) + HK25*P(0,19) + HK26*P(6,19) - HK27*P(3,19) + HK29*P(4,19) + HK31*P(2,19)); +Kfusion(20) = -HK39*(-HK23*P(1,20) - HK24*P(5,20) + HK25*P(0,20) + HK26*P(6,20) - HK27*P(3,20) + HK29*P(4,20) + HK31*P(2,20)); +Kfusion(21) = -HK39*(-HK23*P(1,21) - HK24*P(5,21) + HK25*P(0,21) + HK26*P(6,21) - HK27*P(3,21) + HK29*P(4,21) + HK31*P(2,21)); +Kfusion(22) = -HK39*(-HK23*P(1,22) - HK24*P(5,22) + HK25*P(0,22) + HK26*P(6,22) - HK27*P(3,22) + HK29*P(4,22) + HK31*P(2,22)); +Kfusion(23) = -HK39*(-HK23*P(1,23) - HK24*P(5,23) + HK25*P(0,23) + HK26*P(6,23) - HK27*P(3,23) + HK29*P(4,23) + HK31*P(2,23)); + + +// Observation Jacobians - axis 1 +Hfusion.at<0>() = 2*HK41; +Hfusion.at<1>() = 2*HK42; +Hfusion.at<2>() = 2*HK44; +Hfusion.at<3>() = 2*HK1 - 2*HK45 - 2*HK46; +Hfusion.at<4>() = -2*HK18 + 2*HK19; +Hfusion.at<5>() = HK17 + HK48; +Hfusion.at<6>() = 2*HK51; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 1 +Kfusion(0) = HK59*HK66; +Kfusion(1) = HK63*HK66; +Kfusion(2) = HK61*HK66; +Kfusion(3) = HK65*HK66; +Kfusion(4) = HK62*HK66; +Kfusion(5) = HK64*HK66; +Kfusion(6) = HK60*HK66; +Kfusion(7) = HK66*(HK52*P(2,7) + HK53*P(6,7) + HK54*P(0,7) - HK55*P(4,7) + HK56*P(1,7) - HK57*P(3,7) - HK58*P(5,7)); +Kfusion(8) = HK66*(HK52*P(2,8) + HK53*P(6,8) + HK54*P(0,8) - HK55*P(4,8) + HK56*P(1,8) - HK57*P(3,8) - HK58*P(5,8)); +Kfusion(9) = HK66*(HK52*P(2,9) + HK53*P(6,9) + HK54*P(0,9) - HK55*P(4,9) + HK56*P(1,9) - HK57*P(3,9) - HK58*P(5,9)); +Kfusion(10) = HK66*(HK52*P(2,10) + HK53*P(6,10) + HK54*P(0,10) - HK55*P(4,10) + HK56*P(1,10) - HK57*P(3,10) - HK58*P(5,10)); +Kfusion(11) = HK66*(HK52*P(2,11) + HK53*P(6,11) + HK54*P(0,11) - HK55*P(4,11) + HK56*P(1,11) - HK57*P(3,11) - HK58*P(5,11)); +Kfusion(12) = HK66*(HK52*P(2,12) + HK53*P(6,12) + HK54*P(0,12) - HK55*P(4,12) + HK56*P(1,12) - HK57*P(3,12) - HK58*P(5,12)); +Kfusion(13) = HK66*(HK52*P(2,13) + HK53*P(6,13) + HK54*P(0,13) - HK55*P(4,13) + HK56*P(1,13) - HK57*P(3,13) - HK58*P(5,13)); +Kfusion(14) = HK66*(HK52*P(2,14) + HK53*P(6,14) + HK54*P(0,14) - HK55*P(4,14) + HK56*P(1,14) - HK57*P(3,14) - HK58*P(5,14)); +Kfusion(15) = HK66*(HK52*P(2,15) + HK53*P(6,15) + HK54*P(0,15) - HK55*P(4,15) + HK56*P(1,15) - HK57*P(3,15) - HK58*P(5,15)); +Kfusion(16) = HK66*(HK52*P(2,16) + HK53*P(6,16) + HK54*P(0,16) - HK55*P(4,16) + HK56*P(1,16) - HK57*P(3,16) - HK58*P(5,16)); +Kfusion(17) = HK66*(HK52*P(2,17) + HK53*P(6,17) + HK54*P(0,17) - HK55*P(4,17) + HK56*P(1,17) - HK57*P(3,17) - HK58*P(5,17)); +Kfusion(18) = HK66*(HK52*P(2,18) + HK53*P(6,18) + HK54*P(0,18) - HK55*P(4,18) + HK56*P(1,18) - HK57*P(3,18) - HK58*P(5,18)); +Kfusion(19) = HK66*(HK52*P(2,19) + HK53*P(6,19) + HK54*P(0,19) - HK55*P(4,19) + HK56*P(1,19) - HK57*P(3,19) - HK58*P(5,19)); +Kfusion(20) = HK66*(HK52*P(2,20) + HK53*P(6,20) + HK54*P(0,20) - HK55*P(4,20) + HK56*P(1,20) - HK57*P(3,20) - HK58*P(5,20)); +Kfusion(21) = HK66*(HK52*P(2,21) + HK53*P(6,21) + HK54*P(0,21) - HK55*P(4,21) + HK56*P(1,21) - HK57*P(3,21) - HK58*P(5,21)); +Kfusion(22) = HK66*(HK52*P(2,22) + HK53*P(6,22) + HK54*P(0,22) - HK55*P(4,22) + HK56*P(1,22) - HK57*P(3,22) - HK58*P(5,22)); +Kfusion(23) = HK66*(HK52*P(2,23) + HK53*P(6,23) + HK54*P(0,23) - HK55*P(4,23) + HK56*P(1,23) - HK57*P(3,23) - HK58*P(5,23)); + + +// Observation Jacobians - axis 2 +Hfusion.at<0>() = 2*HK30 + 2*HK8; +Hfusion.at<1>() = -2*HK10 + 2*HK12 - 2*HK67; +Hfusion.at<2>() = 2*HK68; +Hfusion.at<3>() = 2*HK69; +Hfusion.at<4>() = 2*HK70; +Hfusion.at<5>() = -2*HK49 + 2*HK50; +Hfusion.at<6>() = HK15 + HK48 + 1; +Hfusion.at<7>() = 0; +Hfusion.at<8>() = 0; +Hfusion.at<9>() = 0; +Hfusion.at<10>() = 0; +Hfusion.at<11>() = 0; +Hfusion.at<12>() = 0; +Hfusion.at<13>() = 0; +Hfusion.at<14>() = 0; +Hfusion.at<15>() = 0; +Hfusion.at<16>() = 0; +Hfusion.at<17>() = 0; +Hfusion.at<18>() = 0; +Hfusion.at<19>() = 0; +Hfusion.at<20>() = 0; +Hfusion.at<21>() = 0; +Hfusion.at<22>() = 0; +Hfusion.at<23>() = 0; + + +// Kalman gains - axis 2 +Kfusion(0) = -HK78*HK85; +Kfusion(1) = -HK84*HK85; +Kfusion(2) = -HK83*HK85; +Kfusion(3) = -HK80*HK85; +Kfusion(4) = -HK79*HK85; +Kfusion(5) = -HK81*HK85; +Kfusion(6) = -HK82*HK85; +Kfusion(7) = -HK85*(-HK71*P(3,7) - HK72*P(4,7) + HK73*P(0,7) + HK74*P(5,7) - HK75*P(2,7) + HK76*P(6,7) + HK77*P(1,7)); +Kfusion(8) = -HK85*(-HK71*P(3,8) - HK72*P(4,8) + HK73*P(0,8) + HK74*P(5,8) - HK75*P(2,8) + HK76*P(6,8) + HK77*P(1,8)); +Kfusion(9) = -HK85*(-HK71*P(3,9) - HK72*P(4,9) + HK73*P(0,9) + HK74*P(5,9) - HK75*P(2,9) + HK76*P(6,9) + HK77*P(1,9)); +Kfusion(10) = -HK85*(-HK71*P(3,10) - HK72*P(4,10) + HK73*P(0,10) + HK74*P(5,10) - HK75*P(2,10) + HK76*P(6,10) + HK77*P(1,10)); +Kfusion(11) = -HK85*(-HK71*P(3,11) - HK72*P(4,11) + HK73*P(0,11) + HK74*P(5,11) - HK75*P(2,11) + HK76*P(6,11) + HK77*P(1,11)); +Kfusion(12) = -HK85*(-HK71*P(3,12) - HK72*P(4,12) + HK73*P(0,12) + HK74*P(5,12) - HK75*P(2,12) + HK76*P(6,12) + HK77*P(1,12)); +Kfusion(13) = -HK85*(-HK71*P(3,13) - HK72*P(4,13) + HK73*P(0,13) + HK74*P(5,13) - HK75*P(2,13) + HK76*P(6,13) + HK77*P(1,13)); +Kfusion(14) = -HK85*(-HK71*P(3,14) - HK72*P(4,14) + HK73*P(0,14) + HK74*P(5,14) - HK75*P(2,14) + HK76*P(6,14) + HK77*P(1,14)); +Kfusion(15) = -HK85*(-HK71*P(3,15) - HK72*P(4,15) + HK73*P(0,15) + HK74*P(5,15) - HK75*P(2,15) + HK76*P(6,15) + HK77*P(1,15)); +Kfusion(16) = -HK85*(-HK71*P(3,16) - HK72*P(4,16) + HK73*P(0,16) + HK74*P(5,16) - HK75*P(2,16) + HK76*P(6,16) + HK77*P(1,16)); +Kfusion(17) = -HK85*(-HK71*P(3,17) - HK72*P(4,17) + HK73*P(0,17) + HK74*P(5,17) - HK75*P(2,17) + HK76*P(6,17) + HK77*P(1,17)); +Kfusion(18) = -HK85*(-HK71*P(3,18) - HK72*P(4,18) + HK73*P(0,18) + HK74*P(5,18) - HK75*P(2,18) + HK76*P(6,18) + HK77*P(1,18)); +Kfusion(19) = -HK85*(-HK71*P(3,19) - HK72*P(4,19) + HK73*P(0,19) + HK74*P(5,19) - HK75*P(2,19) + HK76*P(6,19) + HK77*P(1,19)); +Kfusion(20) = -HK85*(-HK71*P(3,20) - HK72*P(4,20) + HK73*P(0,20) + HK74*P(5,20) - HK75*P(2,20) + HK76*P(6,20) + HK77*P(1,20)); +Kfusion(21) = -HK85*(-HK71*P(3,21) - HK72*P(4,21) + HK73*P(0,21) + HK74*P(5,21) - HK75*P(2,21) + HK76*P(6,21) + HK77*P(1,21)); +Kfusion(22) = -HK85*(-HK71*P(3,22) - HK72*P(4,22) + HK73*P(0,22) + HK74*P(5,22) - HK75*P(2,22) + HK76*P(6,22) + HK77*P(1,22)); +Kfusion(23) = -HK85*(-HK71*P(3,23) - HK72*P(4,23) + HK73*P(0,23) + HK74*P(5,23) - HK75*P(2,23) + HK76*P(6,23) + HK77*P(1,23)); + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_estimator_covariance_prediction_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_estimator_covariance_prediction_generated.cpp new file mode 100644 index 0000000000..0fb98bc13f --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_estimator_covariance_prediction_generated.cpp @@ -0,0 +1,21 @@ +// Equations for covariance matrix prediction +const float S0 = cosf(psi); +const float S1 = powf(S0, 2); +const float S2 = sinf(psi); +const float S3 = powf(S2, 2); +const float S4 = S0*dvy + S2*dvx; +const float S5 = P(0,2) - P(2,2)*S4; +const float S6 = S0*dvx - S2*dvy; +const float S7 = S0*S2; +const float S8 = P(0,1) + S7*dvxVar - S7*dvyVar; +const float S9 = P(1,2) + P(2,2)*S6; + + +_ekf_gsf[model_index].P(0,0) = P(0,0) - P(0,2)*S4 + S1*dvxVar + S3*dvyVar - S4*S5; +_ekf_gsf[model_index].P(0,1) = -P(1,2)*S4 + S5*S6 + S8; +_ekf_gsf[model_index].P(1,1) = P(1,1) + P(1,2)*S6 + S1*dvyVar + S3*dvxVar + S6*S9; +_ekf_gsf[model_index].P(0,2) = S5; +_ekf_gsf[model_index].P(1,2) = S9; +_ekf_gsf[model_index].P(2,2) = P(2,2) + dazVar; + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_estimator_measurement_update_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_estimator_measurement_update_generated.cpp new file mode 100644 index 0000000000..07a1db0e72 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_estimator_measurement_update_generated.cpp @@ -0,0 +1,68 @@ +// Intermediate variables +const float t0 = powf(P(0,1), 2); +const float t1 = -t0; +const float t2 = P(0,0)*P(1,1) + P(0,0)*velObsVar + P(1,1)*velObsVar + t1 + powf(velObsVar, 2); +const float t3 = 1.0F/t2; +const float t4 = P(1,1) + velObsVar; +const float t5 = P(0,1)*t3; +const float t6 = -t5; +const float t7 = P(0,0) + velObsVar; +const float t8 = P(0,0)*t4 + t1; +const float t9 = t5*velObsVar; +const float t10 = P(1,1)*t7; +const float t11 = t1 + t10; +const float t12 = P(0,1)*P(1,2); +const float t13 = P(0,2)*t4; +const float t14 = P(0,1)*P(0,2); +const float t15 = P(1,2)*t7; +const float t16 = t0*velObsVar; +const float t17 = powf(t2, -2); +const float t18 = t4*velObsVar + t8; +const float t19 = t17*t18; +const float t20 = t17*(t16 + t7*t8); +const float t21 = t0 - t10; +const float t22 = t17*t21; +const float t23 = t14 - t15; +const float t24 = P(0,1)*t23; +const float t25 = t12 - t13; +const float t26 = t16 - t21*t4; +const float t27 = t17*t26; +const float t28 = t11 + t7*velObsVar; +const float t29 = t17*t8; +const float t30 = t17*t28; +const float t31 = P(0,1)*t25; +const float t32 = t23*t4 + t31; +const float t33 = t17*t32; +const float t34 = P(0,1)*velObsVar; +const float t35 = t24 + t25*t7; +const float t36 = t17*t35; + + +// Equations for NE velocity innovation variance's determinante inverse +_ekf_gsf[model_index].S_det_inverse = t3; + + +// Equations for NE velocity innovation variance inverse +_ekf_gsf[model_index].S_inverse(0,0) = t3*t4; +_ekf_gsf[model_index].S_inverse(0,1) = t6; +_ekf_gsf[model_index].S_inverse(1,1) = t3*t7; + + +// Equations for NE velocity Kalman gain +K(0,0) = t3*t8; +K(1,0) = t9; +K(2,0) = t3*(-t12 + t13); +K(0,1) = t9; +K(1,1) = t11*t3; +K(2,1) = t3*(-t14 + t15); + + +// Equations for covariance matrix update +_ekf_gsf[model_index].P(0,0) = P(0,0) - t16*t19 - t20*t8; +_ekf_gsf[model_index].P(0,1) = P(0,1)*(t18*t22 - t20*velObsVar + 1); +_ekf_gsf[model_index].P(1,1) = P(1,1) - t16*t30 + t22*t26; +_ekf_gsf[model_index].P(0,2) = P(0,2) + t19*t24 + t20*t25; +_ekf_gsf[model_index].P(1,2) = P(1,2) + t23*t27 + t30*t31; +_ekf_gsf[model_index].P(2,2) = P(2,2) - t23*t33 - t25*t36; + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_fusion_generated_compare.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_fusion_generated_compare.cpp new file mode 100644 index 0000000000..4be87f85d9 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_fusion_generated_compare.cpp @@ -0,0 +1,315 @@ +#include +#include +#include +#include "../../../../../matrix/matrix/math.hpp" + +typedef matrix::Vector Vector24f; +typedef matrix::SquareMatrix SquareMatrix24f; + +float sq(float in) { + return in * in; +} + +int main() +{ + // Compare calculation of observation Jacobian for sympy and matlab generated equations + + // observation Jacobians + float H_YAW[4]; + + // quaternion inputs must be normalised + float q0 = 2.0f * ((float)rand() - 0.5f); + float q1 = 2.0f * ((float)rand() - 0.5f); + float q2 = 2.0f * ((float)rand() - 0.5f); + float q3 = 2.0f * ((float)rand() - 0.5f); + const float length = sqrtf(sq(q0) + sq(q1) + sq(q2) + sq(q3)); + q0 /= length; + q1 /= length; + q2 /= length; + q3 /= length; + + + // calculate 321 yaw observation matrix using two computational paths to work around singularities + // in calculation of the Jacobians. + + { + // This first comparison is for the 321 sequence option A equations that have a singularity when + // yaw is at +- 90 deg + + // perform calculation using sympy generated equations + const float SA0 = 2*q3; + const float SA1 = 2*q2; + const float SA2 = SA0*q0 + SA1*q1; + const float SA3 = powf(q0, 2) + powf(q1, 2) - powf(q2, 2) - powf(q3, 2); + const float SA4 = powf(SA3, -2); + const float SA5 = 1.0F/(powf(SA2, 2)*SA4 + 1); + const float SA6 = 1.0F/SA3; + const float SA7 = SA2*SA4; + const float SA8 = 2*SA7; + const float SA9 = 2*SA6; + + H_YAW[0] = SA5*(SA0*SA6 - SA8*q0); + H_YAW[1] = SA5*(SA1*SA6 - SA8*q1); + H_YAW[2] = SA5*(SA1*SA7 + SA9*q1); + H_YAW[3] = SA5*(SA0*SA7 + SA9*q0); + + // save output and repeat calculation using legacy matlab generated code + float H_YAW_sympy[4]; + for (int row=0; row<4; row++) { + H_YAW_sympy[row] = H_YAW[row]; + } + + // repeat calculation using matlab generated equations + float t9 = q0*q3; + float t10 = q1*q2; + float t2 = t9+t10; + float t3 = q0*q0; + float t4 = q1*q1; + float t5 = q2*q2; + float t6 = q3*q3; + float t7 = t3+t4-t5-t6; + float t16 = q3*t3; + float t17 = q3*t5; + float t18 = q0*q1*q2*2.0f; + float t19 = t16+t17+t18-q3*t4+q3*t6; + float t24 = q2*t4; + float t25 = q2*t6; + float t26 = q0*q1*q3*2.0f; + float t27 = t24+t25+t26-q2*t3+q2*t5; + float t28 = q1*t3; + float t29 = q1*t5; + float t30 = q0*q2*q3*2.0f; + float t31 = t28+t29+t30+q1*t4-q1*t6; + float t32 = q0*t4; + float t33 = q0*t6; + float t34 = q1*q2*q3*2.0f; + float t35 = t32+t33+t34+q0*t3-q0*t5; + float t8 = t7*t7; + t8 = 1.0f/t8; + float t11 = t2*t2; + float t12 = t8*t11*4.0f; + float t13 = t12+1.0f; + float t14 = 1.0f/t13; + + H_YAW[0] = t8*t14*t19*(-2.0f); + H_YAW[1] = t8*t14*t27*(-2.0f); + H_YAW[2] = t8*t14*t31*2.0f; + H_YAW[3] = t8*t14*t35*2.0f; + + // find largest difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<4; row++) { + float diff_fraction = fabsf(H_YAW_sympy[row] - H_YAW[row]) / fabsf(H_YAW[row]); + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_YAW[row]; + max_new = H_YAW_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: 321 yaw option A Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: 321 yaw option A Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // This second comparison for the 321 sequence option B equations that have a singularity when + // yaw is at 0 and +-190 deg + + // perform calculation using sympy generated equations + const float SB0 = 2*q0; + const float SB1 = 2*q1; + const float SB2 = SB0*q3 + SB1*q2; + const float SB3 = powf(SB2, -2); + const float SB4 = powf(q0, 2) + powf(q1, 2) - powf(q2, 2) - powf(q3, 2); + const float SB5 = 1.0F/(SB3*powf(SB4, 2) + 1); + const float SB6 = 1.0F/SB2; + const float SB7 = SB3*SB4; + const float SB8 = 2*SB7; + const float SB9 = 2*SB6; + + H_YAW[0] = -SB5*(SB0*SB6 - SB8*q3); + H_YAW[1] = -SB5*(SB1*SB6 - SB8*q2); + H_YAW[2] = -SB5*(-SB1*SB7 - SB9*q2); + H_YAW[3] = -SB5*(-SB0*SB7 - SB9*q3); + + // save output and repeat calculation using legacy matlab generated code + for (int row=0; row<4; row++) { + H_YAW_sympy[row] = H_YAW[row]; + } + + float t15 = t2*t2; + t15 = 1.0f/t15; + float t20 = t7*t7; + float t21 = t15*t20*0.25f; + float t22 = t21+1.0f; + float t23 = 1.0f/t22; + + H_YAW[0] = t15*t19*t23*(-0.5f); + H_YAW[1] = t15*t23*t27*(-0.5f); + H_YAW[2] = t15*t23*t31*0.5f; + H_YAW[3] = t15*t23*t35*0.5f; + + // find largest difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction = fabsf(H_YAW_sympy[row] - H_YAW[row]) / fabsf(H_YAW[row]); + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_YAW[row]; + max_new = H_YAW_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: 321 yaw option B Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: 321 yaw option B Hfusion max diff fraction = %e\n",max_diff_fraction); + } + } + + // calculate 312 yaw observation matrix using two computational paths to work around singularities + // in calculation of the Jacobians. + + { + // This first comparison is for the 312 sequence option A equations that have a singularity when + // yaw is at +- 90 deg + + // perform calculation using sympy generated equations + const float SA0 = 2*q3; + const float SA1 = 2*q2; + const float SA2 = SA0*q0 - SA1*q1; + const float SA3 = powf(q0, 2) - powf(q1, 2) + powf(q2, 2) - powf(q3, 2); + const float SA4 = powf(SA3, -2); + const float SA5 = 1.0F/(powf(SA2, 2)*SA4 + 1); + const float SA6 = 1.0F/SA3; + const float SA7 = SA2*SA4; + const float SA8 = 2*SA7; + const float SA9 = 2*SA6; + + H_YAW[0] = SA5*(SA0*SA6 - SA8*q0); + H_YAW[1] = SA5*(-SA1*SA6 + SA8*q1); + H_YAW[2] = SA5*(-SA1*SA7 - SA9*q1); + H_YAW[3] = SA5*(SA0*SA7 + SA9*q0); + + // save output and repeat calculation using legacy matlab generated code + float H_YAW_sympy[4]; + for (int row=0; row<4; row++) { + H_YAW_sympy[row] = H_YAW[row]; + } + + // repeat calculation using matlab generated equations + float t9 = q0*q3; + float t10 = q1*q2; + float t2 = t9-t10; + float t3 = q0*q0; + float t4 = q1*q1; + float t5 = q2*q2; + float t6 = q3*q3; + float t7 = t3-t4+t5-t6; + float t16 = q3*t3; + float t17 = q3*t4; + float t18 = t16+t17-q3*t5+q3*t6-q0*q1*q2*2.0f; + float t23 = q2*t3; + float t24 = q2*t4; + float t25 = t23+t24+q2*t5-q2*t6-q0*q1*q3*2.0f; + float t26 = q1*t5; + float t27 = q1*t6; + float t28 = t26+t27-q1*t3+q1*t4-q0*q2*q3*2.0f; + float t29 = q0*t5; + float t30 = q0*t6; + float t31 = t29+t30+q0*t3-q0*t4-q1*q2*q3*2.0f; + float t8 = t7*t7; + float t15 = t2*t2; + t8 = 1.0f/t8; + float t11 = t2*t2; + float t12 = t8*t11*4.0f; + float t13 = t12+1.0f; + float t14 = 1.0f/t13; + + H_YAW[0] = t8*t14*t18*(-2.0f); + H_YAW[1] = t8*t14*t25*(-2.0f); + H_YAW[2] = t8*t14*t28*2.0f; + H_YAW[3] = t8*t14*t31*2.0f; + + // find largest difference as a fraction of the matlab value + float max_diff_fraction = 0.0f; + int max_row; + float max_old, max_new; + for (int row=0; row<4; row++) { + float diff_fraction = fabsf(H_YAW_sympy[row] - H_YAW[row]) / fabsf(H_YAW[row]); + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_YAW[row]; + max_new = H_YAW_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: 312 yaw option A Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: 312 yaw option A Hfusion max diff fraction = %e\n",max_diff_fraction); + } + + // This second comparison for the 321 sequence option B equations that have a singularity when + // yaw is at 0 and +-190 deg + + // perform calculation using sympy generated equations + const float SB0 = 2*q0; + const float SB1 = 2*q1; + const float SB2 = -SB0*q3 + SB1*q2; + const float SB3 = powf(SB2, -2); + const float SB4 = -powf(q0, 2) + powf(q1, 2) - powf(q2, 2) + powf(q3, 2); + const float SB5 = 1.0F/(SB3*powf(SB4, 2) + 1); + const float SB6 = 1.0F/SB2; + const float SB7 = SB3*SB4; + const float SB8 = 2*SB7; + const float SB9 = 2*SB6; + + H_YAW[0] = -SB5*(-SB0*SB6 + SB8*q3); + H_YAW[1] = -SB5*(SB1*SB6 - SB8*q2); + H_YAW[2] = -SB5*(-SB1*SB7 - SB9*q2); + H_YAW[3] = -SB5*(SB0*SB7 + SB9*q3); + + // save output and repeat calculation using legacy matlab generated code + for (int row=0; row<4; row++) { + H_YAW_sympy[row] = H_YAW[row]; + } + + t15 = 1.0f/t15; + float t19 = t7*t7; + float t20 = t15*t19*0.25f; + float t21 = t20+1.0f; + float t22 = 1.0f/t21; + + H_YAW[0] = t15*t18*t22*(-0.5f); + H_YAW[1] = t15*t22*t25*(-0.5f); + H_YAW[2] = t15*t22*t28*0.5f; + H_YAW[3] = t15*t22*t31*0.5f; + + // find largest difference as a fraction of the matlab value + max_diff_fraction = 0.0f; + for (int row=0; row<4; row++) { + float diff_fraction = fabsf(H_YAW_sympy[row] - H_YAW[row]) / fabsf(H_YAW[row]); + if (diff_fraction > max_diff_fraction) { + max_diff_fraction = diff_fraction; + max_row = row; + max_old = H_YAW[row]; + max_new = H_YAW_sympy[row]; + } + } + + if (max_diff_fraction > 1e-5f) { + printf("Fail: 312 yaw option B Hfusion max diff fraction = %e , old = %e , new = %e , location index = %i\n",max_diff_fraction, max_old, max_new, max_row); + } else { + printf("Pass: 312 yaw option B Hfusion max diff fraction = %e\n",max_diff_fraction); + } + } + + return 0; +} diff --git a/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_generated.cpp b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_generated.cpp new file mode 100644 index 0000000000..cbed2c8658 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/generated/yaw_generated.cpp @@ -0,0 +1,152 @@ +// calculate 321 yaw observation matrix - option A +const float SA0 = 2*q0; +const float SA1 = 2*q1; +const float SA2 = SA0*q3 + SA1*q2; +const float SA3 = -2*powf(q2, 2) - 2*powf(q3, 2) + 1; +const float SA4 = powf(SA3, -2); +const float SA5 = 1.0F/(powf(SA2, 2)*SA4 + 1); +const float SA6 = 1.0F/SA3; +const float SA7 = 2*SA5*SA6; +const float SA8 = 4*SA2*SA4; + + +H_YAW.at<0>() = SA7*q3; +H_YAW.at<1>() = SA7*q2; +H_YAW.at<2>() = SA5*(SA1*SA6 + SA8*q2); +H_YAW.at<3>() = SA5*(SA0*SA6 + SA8*q3); +H_YAW.at<4>() = 0; +H_YAW.at<5>() = 0; +H_YAW.at<6>() = 0; +H_YAW.at<7>() = 0; +H_YAW.at<8>() = 0; +H_YAW.at<9>() = 0; +H_YAW.at<10>() = 0; +H_YAW.at<11>() = 0; +H_YAW.at<12>() = 0; +H_YAW.at<13>() = 0; +H_YAW.at<14>() = 0; +H_YAW.at<15>() = 0; +H_YAW.at<16>() = 0; +H_YAW.at<17>() = 0; +H_YAW.at<18>() = 0; +H_YAW.at<19>() = 0; +H_YAW.at<20>() = 0; +H_YAW.at<21>() = 0; +H_YAW.at<22>() = 0; +H_YAW.at<23>() = 0; + + +// calculate 321 yaw observation matrix - option B +const float SB0 = 2*q0; +const float SB1 = 2*q1; +const float SB2 = SB0*q3 + SB1*q2; +const float SB3 = powf(SB2, -2); +const float SB4 = -2*powf(q2, 2) - 2*powf(q3, 2) + 1; +const float SB5 = 1.0F/(SB3*powf(SB4, 2) + 1); +const float SB6 = SB3*SB4; +const float SB7 = 2*SB5*SB6; +const float SB8 = 4/SB2; + + +H_YAW.at<0>() = SB7*q3; +H_YAW.at<1>() = SB7*q2; +H_YAW.at<2>() = -SB5*(-SB1*SB6 - SB8*q2); +H_YAW.at<3>() = -SB5*(-SB0*SB6 - SB8*q3); +H_YAW.at<4>() = 0; +H_YAW.at<5>() = 0; +H_YAW.at<6>() = 0; +H_YAW.at<7>() = 0; +H_YAW.at<8>() = 0; +H_YAW.at<9>() = 0; +H_YAW.at<10>() = 0; +H_YAW.at<11>() = 0; +H_YAW.at<12>() = 0; +H_YAW.at<13>() = 0; +H_YAW.at<14>() = 0; +H_YAW.at<15>() = 0; +H_YAW.at<16>() = 0; +H_YAW.at<17>() = 0; +H_YAW.at<18>() = 0; +H_YAW.at<19>() = 0; +H_YAW.at<20>() = 0; +H_YAW.at<21>() = 0; +H_YAW.at<22>() = 0; +H_YAW.at<23>() = 0; + + +// calculate 312 yaw observation matrix - option A +const float SA0 = 2*q0; +const float SA1 = 2*q2; +const float SA2 = SA0*q3 - SA1*q1; +const float SA3 = -2*powf(q1, 2) - 2*powf(q3, 2) + 1; +const float SA4 = powf(SA3, -2); +const float SA5 = 1.0F/(powf(SA2, 2)*SA4 + 1); +const float SA6 = 1.0F/SA3; +const float SA7 = 2*SA5*SA6; +const float SA8 = 4*SA2*SA4; + + +H_YAW.at<0>() = SA7*q3; +H_YAW.at<1>() = SA5*(-SA1*SA6 + SA8*q1); +H_YAW.at<2>() = -SA7*q1; +H_YAW.at<3>() = SA5*(SA0*SA6 + SA8*q3); +H_YAW.at<4>() = 0; +H_YAW.at<5>() = 0; +H_YAW.at<6>() = 0; +H_YAW.at<7>() = 0; +H_YAW.at<8>() = 0; +H_YAW.at<9>() = 0; +H_YAW.at<10>() = 0; +H_YAW.at<11>() = 0; +H_YAW.at<12>() = 0; +H_YAW.at<13>() = 0; +H_YAW.at<14>() = 0; +H_YAW.at<15>() = 0; +H_YAW.at<16>() = 0; +H_YAW.at<17>() = 0; +H_YAW.at<18>() = 0; +H_YAW.at<19>() = 0; +H_YAW.at<20>() = 0; +H_YAW.at<21>() = 0; +H_YAW.at<22>() = 0; +H_YAW.at<23>() = 0; + + +// calculate 312 yaw observation matrix - option B +const float SB0 = 2*q0; +const float SB1 = 2*q2; +const float SB2 = -SB0*q3 + SB1*q1; +const float SB3 = powf(SB2, -2); +const float SB4 = 2*powf(q1, 2) + 2*powf(q3, 2) - 1; +const float SB5 = 1.0F/(SB3*powf(SB4, 2) + 1); +const float SB6 = SB3*SB4; +const float SB7 = 2*SB5*SB6; +const float SB8 = 4/SB2; + + +H_YAW.at<0>() = -SB7*q3; +H_YAW.at<1>() = -SB5*(-SB1*SB6 + SB8*q1); +H_YAW.at<2>() = SB7*q1; +H_YAW.at<3>() = -SB5*(SB0*SB6 + SB8*q3); +H_YAW.at<4>() = 0; +H_YAW.at<5>() = 0; +H_YAW.at<6>() = 0; +H_YAW.at<7>() = 0; +H_YAW.at<8>() = 0; +H_YAW.at<9>() = 0; +H_YAW.at<10>() = 0; +H_YAW.at<11>() = 0; +H_YAW.at<12>() = 0; +H_YAW.at<13>() = 0; +H_YAW.at<14>() = 0; +H_YAW.at<15>() = 0; +H_YAW.at<16>() = 0; +H_YAW.at<17>() = 0; +H_YAW.at<18>() = 0; +H_YAW.at<19>() = 0; +H_YAW.at<20>() = 0; +H_YAW.at<21>() = 0; +H_YAW.at<22>() = 0; +H_YAW.at<23>() = 0; + + diff --git a/src/lib/ecl/EKF/python/ekf_derivation/main.py b/src/lib/ecl/EKF/python/ekf_derivation/main.py new file mode 100755 index 0000000000..2bb0d3b719 --- /dev/null +++ b/src/lib/ecl/EKF/python/ekf_derivation/main.py @@ -0,0 +1,640 @@ +#!/usr/bin/env python3 + +from sympy import * +from code_gen import * + +# q: quaternion describing rotation from frame 1 to frame 2 +# returns a rotation matrix derived form q which describes the same +# rotation +def quat2Rot(q): + q0 = q[0] + q1 = q[1] + q2 = q[2] + q3 = q[3] + + # Rot = Matrix([[q0**2 + q1**2 - q2**2 - q3**2, 2*(q1*q2 - q0*q3), 2*(q1*q3 + q0*q2)], + # [2*(q1*q2 + q0*q3), q0**2 - q1**2 + q2**2 - q3**2, 2*(q2*q3 - q0*q1)], + # [2*(q1*q3-q0*q2), 2*(q2*q3 + q0*q1), q0**2 - q1**2 - q2**2 + q3**2]]) + + # Use the simplified formula for unit quaternion to rotation matrix + # as it produces a simpler and more stable EKF derivation given + # the additional constraint: q0^2 + q1^2 + q2^2 + q3^2 = 1 + Rot = Matrix([[1 - 2*q2**2 - 2*q3**2, 2*(q1*q2 - q0*q3), 2*(q1*q3 + q0*q2)], + [2*(q1*q2 + q0*q3), 1 - 2*q1**2 - 2*q3**2, 2*(q2*q3 - q0*q1)], + [2*(q1*q3-q0*q2), 2*(q2*q3 + q0*q1), 1 - 2*q1**2 - 2*q2**2]]) + + return Rot + +def create_cov_matrix(i, j): + if j >= i: + return Symbol("P(" + str(i) + "," + str(j) + ")", real=True) + # legacy array format + # return Symbol("P[" + str(i) + "][" + str(j) + "]", real=True) + else: + return 0 + +def create_yaw_estimator_cov_matrix(): + # define a symbolic covariance matrix + P = Matrix(3,3,create_cov_matrix) + + for index in range(3): + for j in range(3): + if index > j: + P[index,j] = P[j,index] + + return P + +def create_Tbs_matrix(i, j): + return Symbol("Tbs(" + str(i) + "," + str(j) + ")", real=True) + # legacy array format + # return Symbol("Tbs[" + str(i) + "][" + str(j) + "]", real=True) + +def quat_mult(p,q): + r = Matrix([p[0] * q[0] - p[1] * q[1] - p[2] * q[2] - p[3] * q[3], + p[0] * q[1] + p[1] * q[0] + p[2] * q[3] - p[3] * q[2], + p[0] * q[2] - p[1] * q[3] + p[2] * q[0] + p[3] * q[1], + p[0] * q[3] + p[1] * q[2] - p[2] * q[1] + p[3] * q[0]]) + + return r + +def create_symmetric_cov_matrix(): + # define a symbolic covariance matrix + P = Matrix(24,24,create_cov_matrix) + + for index in range(24): + for j in range(24): + if index > j: + P[index,j] = P[j,index] + + return P + +# generate equations for observation vector innovation variances +def generate_observation_vector_innovation_variances(P,state,observation,variance,n_obs): + H = observation.jacobian(state) + innovation_variance = zeros(n_obs,1) + for index in range(n_obs): + H[index,:] = Matrix([observation[index]]).jacobian(state) + innovation_variance[index] = H[index,:] * P * H[index,:].T + Matrix([variance]) + + IV_simple = cse(innovation_variance, symbols("IV0:1000"), optimizations='basic') + + return IV_simple + +# generate equations for observation Jacobian and Kalman gain +def generate_observation_equations(P,state,observation,variance,varname="HK"): + H = Matrix([observation]).jacobian(state) + innov_var = H * P * H.T + Matrix([variance]) + assert(innov_var.shape[0] == 1) + assert(innov_var.shape[1] == 1) + K = P * H.T / innov_var[0,0] + extension="0:1000" + var_string = varname+extension + HK_simple = cse(Matrix([H.transpose(), K]), symbols(var_string), optimizations='basic') + + return HK_simple + +# generate equations for observation vector Jacobian and Kalman gain +# n_obs is the vector dimension and must be >= 2 +def generate_observation_vector_equations(P,state,observation,variance,n_obs): + K = zeros(24,n_obs) + H = observation.jacobian(state) + HK = zeros(n_obs*48,1) + for index in range(n_obs): + H[index,:] = Matrix([observation[index]]).jacobian(state) + innov_var = H[index,:] * P * H[index,:].T + Matrix([variance]) + assert(innov_var.shape[0] == 1) + assert(innov_var.shape[1] == 1) + K[:,index] = P * H[index,:].T / innov_var[0,0] + HK[index*48:(index+1)*48,0] = Matrix([H[index,:].transpose(), K[:,index]]) + + HK_simple = cse(HK, symbols("HK0:1000"), optimizations='basic') + + return HK_simple + +# write single observation equations to file +def write_equations_to_file(equations,code_generator_id,n_obs): + if (n_obs < 1): + return + + if (n_obs == 1): + code_generator_id.print_string("Sub Expressions") + code_generator_id.write_subexpressions(equations[0]) + code_generator_id.print_string("Observation Jacobians") + code_generator_id.write_matrix(Matrix(equations[1][0][0:24]), "Hfusion", False, ".at<", ">()") + code_generator_id.print_string("Kalman gains") + code_generator_id.write_matrix(Matrix(equations[1][0][24:]), "Kfusion", False, "(", ")") + else: + code_generator_id.print_string("Sub Expressions") + code_generator_id.write_subexpressions(equations[0]) + for axis_index in range(n_obs): + start_index = axis_index*48 + code_generator_id.print_string("Observation Jacobians - axis %i" % axis_index) + code_generator_id.write_matrix(Matrix(equations[1][0][start_index:start_index+24]), "Hfusion", False, ".at<", ">()") + code_generator_id.print_string("Kalman gains - axis %i" % axis_index) + code_generator_id.write_matrix(Matrix(equations[1][0][start_index+24:start_index+48]), "Kfusion", False, "(", ")") + + return + +# derive equations for sequential fusion of optical flow measurements +def optical_flow_observation(P,state,R_to_body,vx,vy,vz): + flow_code_generator = CodeGenerator("./generated/flow_generated.cpp") + range = symbols("range", real=True) # range from camera focal point to ground along sensor Z axis + obs_var = symbols("R_LOS", real=True) # optical flow line of sight rate measurement noise variance + + # Define rotation matrix from body to sensor frame + Tbs = Matrix(3,3,create_Tbs_matrix) + + # Calculate earth relative velocity in a non-rotating sensor frame + relVelSensor = Tbs * R_to_body * Matrix([vx,vy,vz]) + + # Divide by range to get predicted angular LOS rates relative to X and Y + # axes. Note these are rates in a non-rotating sensor frame + losRateSensorX = +relVelSensor[1]/range + losRateSensorY = -relVelSensor[0]/range + + # calculate the observation Jacobian and Kalman gains for the X axis + equations = generate_observation_equations(P,state,losRateSensorX,obs_var) + + flow_code_generator.print_string("X Axis Equations") + write_equations_to_file(equations,flow_code_generator,1) + + # calculate the observation Jacobian and Kalman gains for the Y axis + equations = generate_observation_equations(P,state,losRateSensorY,obs_var) + + flow_code_generator.print_string("Y Axis Equations") + write_equations_to_file(equations,flow_code_generator,1) + + flow_code_generator.close() + + # calculate a combined result for a possible reduction in operations, but will use more stack + observation = Matrix([relVelSensor[1]/range,-relVelSensor[0]/range]) + equations = generate_observation_vector_equations(P,state,observation,obs_var,2) + flow_code_generator_alt = CodeGenerator("./generated/flow_generated_alt.cpp") + write_equations_to_file(equations,flow_code_generator_alt,2) + flow_code_generator_alt.close() + + return + +# Derive equations for sequential fusion of body frame velocity measurements +def body_frame_velocity_observation(P,state,R_to_body,vx,vy,vz): + obs_var = symbols("R_VEL", real=True) # measurement noise variance + + # Calculate earth relative velocity in a non-rotating sensor frame + vel_bf = R_to_body * Matrix([vx,vy,vz]) + + vel_bf_code_generator = CodeGenerator("./generated/vel_bf_generated.cpp") + axes = [0,1,2] + H_obs = vel_bf.jacobian(state) # observation Jacobians + K_gain = zeros(24,3) + for index in axes: + equations = generate_observation_equations(P,state,vel_bf[index],obs_var) + + vel_bf_code_generator.print_string("axis %i" % index) + vel_bf_code_generator.write_subexpressions(equations[0]) + vel_bf_code_generator.write_matrix(Matrix(equations[1][0][0:24]), "H_VEL", False, "(", ")") + vel_bf_code_generator.write_matrix(Matrix(equations[1][0][24:]), "Kfusion", False, "(", ")") + + vel_bf_code_generator.close() + + # calculate a combined result for a possible reduction in operations, but will use more stack + equations = generate_observation_vector_equations(P,state,vel_bf,obs_var,3) + + vel_bf_code_generator_alt = CodeGenerator("./generated/vel_bf_generated_alt.cpp") + write_equations_to_file(equations,vel_bf_code_generator_alt,3) + vel_bf_code_generator_alt.close() + +# derive equations for fusion of dual antenna yaw measurement +def gps_yaw_observation(P,state,R_to_body): + obs_var = symbols("R_YAW", real=True) # measurement noise variance + ant_yaw = symbols("ant_yaw", real=True) # yaw angle of antenna array axis wrt X body axis + + # define antenna vector in body frame + ant_vec_bf = Matrix([cos(ant_yaw),sin(ant_yaw),0]) + + # rotate into earth frame + ant_vec_ef = R_to_body.T * ant_vec_bf + + # Calculate the yaw angle from the projection + observation = atan(ant_vec_ef[1]/ant_vec_ef[0]) + + equations = generate_observation_equations(P,state,observation,obs_var) + + gps_yaw_code_generator = CodeGenerator("./generated/gps_yaw_generated.cpp") + write_equations_to_file(equations,gps_yaw_code_generator,1) + gps_yaw_code_generator.close() + + return + +# derive equations for fusion of declination +def declination_observation(P,state,ix,iy): + obs_var = symbols("R_DECL", real=True) # measurement noise variance + + # the predicted measurement is the angle wrt magnetic north of the horizontal + # component of the measured field + observation = atan(iy/ix) + + equations = generate_observation_equations(P,state,observation,obs_var) + + mag_decl_code_generator = CodeGenerator("./generated/mag_decl_generated.cpp") + write_equations_to_file(equations,mag_decl_code_generator,1) + mag_decl_code_generator.close() + + return + +# derive equations for fusion of lateral body acceleration (multirotors only) +def body_frame_accel_observation(P,state,R_to_body,vx,vy,vz,wx,wy): + obs_var = symbols("R_ACC", real=True) # measurement noise variance + Kaccx = symbols("Kaccx", real=True) # measurement noise variance + Kaccy = symbols("Kaccy", real=True) # measurement noise variance + + # use relationship between airspeed along the X and Y body axis and the + # drag to predict the lateral acceleration for a multirotor vehicle type + # where propulsion forces are generated primarily along the Z body axis + + vrel = R_to_body*Matrix([vx-wx,vy-wy,vz]) # predicted wind relative velocity + + # Use this nonlinear model for the prediction in the implementation only + # It uses a ballistic coefficient for each axis and a propeller momentum drag coefficient + # + # accXpred = -sign(vrel[0]) * vrel[0]*(0.5*rho*vrel[0]/BCoefX + MCoef) # predicted acceleration measured along X body axis + # accYpred = -sign(vrel[1]) * vrel[1]*(0.5*rho*vrel[1]/BCoefY + MCoef) # predicted acceleration measured along Y body axis + # + # BcoefX and BcoefY have units of Kg/m^2 + # Mcoef has units of 1/s + + # Use a simple viscous drag model for the linear estimator equations + # Use the the derivative from speed to acceleration averaged across the + # speed range. This avoids the generation of a dirac function in the derivation + # The nonlinear equation will be used to calculate the predicted measurement in implementation + observation = Matrix([-Kaccx*vrel[0],-Kaccy*vrel[1]]) + + acc_bf_code_generator = CodeGenerator("./generated/acc_bf_generated.cpp") + H = observation.jacobian(state) + K = zeros(24,2) + axes = [0,1] + for index in axes: + equations = generate_observation_equations(P,state,observation[index],obs_var) + acc_bf_code_generator.print_string("Axis %i equations" % index) + write_equations_to_file(equations,acc_bf_code_generator,1) + + acc_bf_code_generator.close() + + # calculate a combined result for a possible reduction in operations, but will use more stack + equations = generate_observation_vector_equations(P,state,observation,obs_var,2) + + acc_bf_code_generator_alt = CodeGenerator("./generated/acc_bf_generated_alt.cpp") + write_equations_to_file(equations,acc_bf_code_generator_alt,3) + acc_bf_code_generator_alt.close() + + return + +# yaw fusion +def yaw_observation(P,state,R_to_earth): + yaw_code_generator = CodeGenerator("./generated/yaw_generated.cpp") + + # Derive observation Jacobian for fusion of 321 sequence yaw measurement + # Calculate the yaw (first rotation) angle from the 321 rotation sequence + # Provide alternative angle that avoids singularity at +-pi/2 yaw + angMeasA = atan(R_to_earth[1,0]/R_to_earth[0,0]) + H_YAW321_A = Matrix([angMeasA]).jacobian(state) + H_YAW321_A_simple = cse(H_YAW321_A, symbols('SA0:200')) + + angMeasB = pi/2 - atan(R_to_earth[0,0]/R_to_earth[1,0]) + H_YAW321_B = Matrix([angMeasB]).jacobian(state) + H_YAW321_B_simple = cse(H_YAW321_B, symbols('SB0:200')) + + yaw_code_generator.print_string("calculate 321 yaw observation matrix - option A") + yaw_code_generator.write_subexpressions(H_YAW321_A_simple[0]) + yaw_code_generator.write_matrix(Matrix(H_YAW321_A_simple[1]).T, "H_YAW", False, ".at<", ">()") + + yaw_code_generator.print_string("calculate 321 yaw observation matrix - option B") + yaw_code_generator.write_subexpressions(H_YAW321_B_simple[0]) + yaw_code_generator.write_matrix(Matrix(H_YAW321_B_simple[1]).T, "H_YAW", False, ".at<", ">()") + + # Derive observation Jacobian for fusion of 312 sequence yaw measurement + # Calculate the yaw (first rotation) angle from an Euler 312 sequence + # Provide alternative angle that avoids singularity at +-pi/2 yaw + angMeasA = atan(-R_to_earth[0,1]/R_to_earth[1,1]) + H_YAW312_A = Matrix([angMeasA]).jacobian(state) + H_YAW312_A_simple = cse(H_YAW312_A, symbols('SA0:200')) + + angMeasB = pi/2 - atan(-R_to_earth[1,1]/R_to_earth[0,1]) + H_YAW312_B = Matrix([angMeasB]).jacobian(state) + H_YAW312_B_simple = cse(H_YAW312_B, symbols('SB0:200')) + + yaw_code_generator.print_string("calculate 312 yaw observation matrix - option A") + yaw_code_generator.write_subexpressions(H_YAW312_A_simple[0]) + yaw_code_generator.write_matrix(Matrix(H_YAW312_A_simple[1]).T, "H_YAW", False, ".at<", ">()") + + yaw_code_generator.print_string("calculate 312 yaw observation matrix - option B") + yaw_code_generator.write_subexpressions(H_YAW312_B_simple[0]) + yaw_code_generator.write_matrix(Matrix(H_YAW312_B_simple[1]).T, "H_YAW", False, ".at<", ">()") + + yaw_code_generator.close() + + return + +# 3D magnetometer fusion +def mag_observation_variance(P,state,R_to_body,i,ib): + obs_var = symbols("R_MAG", real=True) # magnetometer measurement noise variance + + m_mag = R_to_body * i + ib + + # separate calculation of innovation variance equations for the y and z axes + m_mag[0]=0 + innov_var_equations = generate_observation_vector_innovation_variances(P,state,m_mag,obs_var,3) + mag_innov_var_code_generator = CodeGenerator("./generated/3Dmag_innov_var_generated.cpp") + write_equations_to_file(innov_var_equations,mag_innov_var_code_generator,3) + mag_innov_var_code_generator.close() + + return + +# 3D magnetometer fusion +def mag_observation(P,state,R_to_body,i,ib): + obs_var = symbols("R_MAG", real=True) # magnetometer measurement noise variance + + m_mag = R_to_body * i + ib + + # calculate a separate set of equations for each axis + mag_code_generator = CodeGenerator("./generated/3Dmag_generated.cpp") + + axes = [0,1,2] + label="HK" + for index in axes: + if (index==0): + label="HKX" + elif (index==1): + label="HKY" + elif (index==2): + label="HKZ" + else: + return + equations = generate_observation_equations(P,state,m_mag[index],obs_var,varname=label) + mag_code_generator.print_string("Axis %i equations" % index) + write_equations_to_file(equations,mag_code_generator,1) + + mag_code_generator.close() + + # calculate a combined set of equations for a possible reduction in operations, but will use slighlty more stack + equations = generate_observation_vector_equations(P,state,m_mag,obs_var,3) + + mag_code_generator_alt = CodeGenerator("./generated/3Dmag_generated_alt.cpp") + write_equations_to_file(equations,mag_code_generator_alt,3) + mag_code_generator_alt.close() + + return + +# airspeed fusion +def tas_observation(P,state,vx,vy,vz,wx,wy): + obs_var = symbols("R_TAS", real=True) # true airspeed measurement noise variance + + observation = sqrt((vx-wx)*(vx-wx)+(vy-wy)*(vy-wy)+vz*vz) + + equations = generate_observation_equations(P,state,observation,obs_var) + + tas_code_generator = CodeGenerator("./generated/tas_generated.cpp") + write_equations_to_file(equations,tas_code_generator,1) + tas_code_generator.close() + + return + +# sideslip fusion +def beta_observation(P,state,R_to_body,vx,vy,vz,wx,wy): + obs_var = symbols("R_BETA", real=True) # sideslip measurement noise variance + + v_rel_ef = Matrix([vx-wx,vy-wy,vz]) + v_rel_bf = R_to_body * v_rel_ef + observation = v_rel_bf[1]/v_rel_bf[0] + + equations = generate_observation_equations(P,state,observation,obs_var) + + beta_code_generator = CodeGenerator("./generated/beta_generated.cpp") + write_equations_to_file(equations,beta_code_generator,1) + beta_code_generator.close() + + return + +# yaw estimator prediction and observation code +def yaw_estimator(): + dt = symbols("dt", real=True) # dt (sec) + psi = symbols("psi", real=True) # yaw angle of body frame wrt earth frame + vn, ve = symbols("vn ve", real=True) # velocity in world frame (north/east) - m/sec + daz = symbols("daz", real=True) # IMU z axis delta angle measurement in body axes - rad + dazVar = symbols("dazVar", real=True) # IMU Z axis delta angle measurement variance (rad^2) + dvx, dvy = symbols("dvx dvy", real=True) # IMU x and y axis delta velocity measurement in body axes - m/sec + dvxVar, dvyVar = symbols("dvxVar dvyVar", real=True) # IMU x and y axis delta velocity measurement variance (m/s)^2 + + # derive the body to nav direction transformation matrix + Tbn = Matrix([[cos(psi) , -sin(psi)], + [sin(psi) , cos(psi)]]) + + # attitude update equation + psiNew = psi + daz + + # velocity update equations + velNew = Matrix([vn,ve]) + Tbn*Matrix([dvx,dvy]) + + # Define the state vectors + stateVector = Matrix([vn,ve,psi]) + + # Define vector of process equations + newStateVector = Matrix([velNew,psiNew]) + + # Calculate state transition matrix + F = newStateVector.jacobian(stateVector) + + # Derive the covariance prediction equations + # Error growth in the inertial solution is assumed to be driven by 'noise' in the delta angles and + # velocities, after bias effects have been removed. + + # derive the control(disturbance) influence matrix from IMU noise to state noise + G = newStateVector.jacobian(Matrix([dvx,dvy,daz])) + + # derive the state error matrix + distMatrix = Matrix([[dvxVar , 0 , 0], + [0 , dvyVar , 0], + [0 , 0 , dazVar]]) + + Q = G * distMatrix * G.T + + # propagate covariance matrix + P = create_yaw_estimator_cov_matrix() + + P_new = F * P * F.T + Q + + P_new_simple = cse(P_new, symbols("S0:1000"), optimizations='basic') + + yaw_estimator_covariance_generator = CodeGenerator("./generated/yaw_estimator_covariance_prediction_generated.cpp") + yaw_estimator_covariance_generator.print_string("Equations for covariance matrix prediction") + yaw_estimator_covariance_generator.write_subexpressions(P_new_simple[0]) + yaw_estimator_covariance_generator.write_matrix(Matrix(P_new_simple[1]), "_ekf_gsf[model_index].P", True) + yaw_estimator_covariance_generator.close() + + # derive the covariance update equation for a NE velocity observation + velObsVar = symbols("velObsVar", real=True) # velocity observation variance (m/s)^2 + H = Matrix([[1,0,0], + [0,1,0]]) + + R = Matrix([[velObsVar , 0], + [0 , velObsVar]]) + + S = H * P * H.T + R + S_det_inv = 1 / S.det() + S_inv = S.inv() + K = (P * H.T) * S_inv + P_new = P - K * S * K.T + + # optimize code + t, [S_det_inv_s, S_inv_s, K_s, P_new_s] = cse([S_det_inv, S_inv, K, P_new], symbols("t0:1000"), optimizations='basic') + + yaw_estimator_observation_generator = CodeGenerator("./generated/yaw_estimator_measurement_update_generated.cpp") + yaw_estimator_observation_generator.print_string("Intermediate variables") + yaw_estimator_observation_generator.write_subexpressions(t) + yaw_estimator_observation_generator.print_string("Equations for NE velocity innovation variance's determinante inverse") + yaw_estimator_observation_generator.write_matrix(Matrix([[S_det_inv_s]]), "_ekf_gsf[model_index].S_det_inverse", False) + yaw_estimator_observation_generator.print_string("Equations for NE velocity innovation variance inverse") + yaw_estimator_observation_generator.write_matrix(Matrix(S_inv_s), "_ekf_gsf[model_index].S_inverse", True) + yaw_estimator_observation_generator.print_string("Equations for NE velocity Kalman gain") + yaw_estimator_observation_generator.write_matrix(Matrix(K_s), "K", False) + yaw_estimator_observation_generator.print_string("Equations for covariance matrix update") + yaw_estimator_observation_generator.write_matrix(Matrix(P_new_s), "_ekf_gsf[model_index].P", True) + yaw_estimator_observation_generator.close() + +def generate_code(): + print('Starting code generation:') + print('Creating symbolic variables ...') + + dt = symbols("dt", real=True) # dt + g = symbols("g", real=True) # gravity constant + + r_hor_vel = symbols("R_hor_vel", real=True) # horizontal velocity noise variance + r_ver_vel = symbols("R_vert_vel", real=True) # vertical velocity noise variance + r_hor_pos = symbols("R_hor_pos", real=True) # horizontal position noise variance + + # inputs, integrated gyro measurements + # delta angle x y z + d_ang_x, d_ang_y, d_ang_z = symbols("dax day daz", real=True) # delta angle x + d_ang = Matrix([d_ang_x, d_ang_y, d_ang_z]) + + # inputs, integrated accelerometer measurements + # delta velocity x y z + d_v_x, d_v_y, d_v_z = symbols("dvx dvy dvz", real=True) + d_v = Matrix([d_v_x, d_v_y,d_v_z]) + + u = Matrix([d_ang, d_v]) + + # input noise + d_ang_x_var, d_ang_y_var, d_ang_z_var = symbols("daxVar dayVar dazVar", real=True) + + d_v_x_var, d_v_y_var, d_v_z_var = symbols("dvxVar dvyVar dvzVar", real=True) + + var_u = Matrix.diag(d_ang_x_var, d_ang_y_var, d_ang_z_var, d_v_x_var, d_v_y_var, d_v_z_var) + + # define state vector + + # attitude quaternion + qw, qx, qy, qz = symbols("q0 q1 q2 q3", real=True) + q = Matrix([qw,qx,qy,qz]) + R_to_earth = quat2Rot(q) + R_to_body = R_to_earth.T + + # velocity in NED local frame (north, east, down) + vx, vy, vz = symbols("vn ve vd", real=True) + v = Matrix([vx,vy,vz]) + + # position in NED local frame (north, east, down) + px, py, pz = symbols("pn pe pd", real=True) + p = Matrix([px,py,pz]) + + # delta angle bias x y z + d_ang_bx, d_ang_by, d_ang_bz = symbols("dax_b day_b daz_b", real=True) + d_ang_b = Matrix([d_ang_bx, d_ang_by, d_ang_bz]) + d_ang_true = d_ang - d_ang_b + + # delta velocity bias x y z + d_vel_bx, d_vel_by, d_vel_bz = symbols("dvx_b dvy_b dvz_b", real=True) + d_vel_b = Matrix([d_vel_bx, d_vel_by, d_vel_bz]) + d_vel_true = d_v - d_vel_b + + # earth magnetic field vector x y z + ix, iy, iz = symbols("magN magE magD", real=True) + i = Matrix([ix,iy,iz]) + + # earth magnetic field bias in body frame + ibx, iby, ibz = symbols("ibx iby ibz", real=True) + + ib = Matrix([ibx,iby,ibz]) + + # wind in local NE frame (north, east) + wx, wy = symbols("vwn, vwe", real=True) + w = Matrix([wx,wy]) + + # state vector at arbitrary time t + state = Matrix([q,v,p,d_ang_b,d_vel_b,i,ib,w]) + + print('Defining state propagation ...') + q_new = quat_mult(q, Matrix([1, 0.5 * d_ang_true[0], 0.5 * d_ang_true[1], 0.5 * d_ang_true[2]])) + v_new = v + R_to_earth * d_vel_true + Matrix([0,0,g]) * dt + p_new = p + v * dt + + d_ang_b_new = d_ang_b + d_vel_b_new = d_vel_b + i_new = i + ib_new = ib + w_new = w + + # predicted state vector at time t + dt + state_new = Matrix([q_new, v_new, p_new, d_ang_b_new, d_vel_b_new, i_new, ib_new, w_new]) + + print('Computing state propagation jacobian ...') + A = state_new.jacobian(state) + G = state_new.jacobian(u) + + P = create_symmetric_cov_matrix() + + print('Computing covariance propagation ...') + P_new = A * P * A.T + G * var_u * G.T + + for index in range(24): + for j in range(24): + if index > j: + P_new[index,j] = 0 + + print('Simplifying covariance propagation ...') + P_new_simple = cse(P_new, symbols("PS0:400"), optimizations='basic') + + print('Writing covariance propagation to file ...') + cov_code_generator = CodeGenerator("./generated/covariance_generated.cpp") + cov_code_generator.print_string("Equations for covariance matrix prediction, without process noise!") + cov_code_generator.write_subexpressions(P_new_simple[0]) + cov_code_generator.write_matrix(Matrix(P_new_simple[1]), "nextP", True, "(", ")") + + cov_code_generator.close() + + # derive autocode for observation methods + print('Generating heading observation code ...') + yaw_observation(P,state,R_to_earth) + print('Generating gps heading observation code ...') + gps_yaw_observation(P,state,R_to_body) + print('Generating mag observation code ...') + mag_observation_variance(P,state,R_to_body,i,ib) + mag_observation(P,state,R_to_body,i,ib) + print('Generating declination observation code ...') + declination_observation(P,state,ix,iy) + print('Generating airspeed observation code ...') + tas_observation(P,state,vx,vy,vz,wx,wy) + print('Generating sideslip observation code ...') + beta_observation(P,state,R_to_body,vx,vy,vz,wx,wy) + print('Generating optical flow observation code ...') + optical_flow_observation(P,state,R_to_body,vx,vy,vz) + print('Generating body frame velocity observation code ...') + body_frame_velocity_observation(P,state,R_to_body,vx,vy,vz) + print('Generating body frame acceleration observation code ...') + body_frame_accel_observation(P,state,R_to_body,vx,vy,vz,wx,wy) + print('Generating yaw estimator code ...') + yaw_estimator() + print('Code generation finished!') + + +if __name__ == "__main__": + generate_code() diff --git a/src/lib/ecl/EKF/python/terrain_flow_derivation/derive_terrain_flow.py b/src/lib/ecl/EKF/python/terrain_flow_derivation/derive_terrain_flow.py new file mode 100644 index 0000000000..c393bd3fe7 --- /dev/null +++ b/src/lib/ecl/EKF/python/terrain_flow_derivation/derive_terrain_flow.py @@ -0,0 +1,98 @@ +""" + +This script calculates the observation scalars (H matrix) for fusing optical flow +measurements for terrain estimation. + +@author: roman +""" + +from sympy import * + +# q: quaternion describing rotation from frame 1 to frame 2 +# returns a rotation matrix derived form q which describes the same +# rotation +def quat2Rot(q): + q0 = q[0] + q1 = q[1] + q2 = q[2] + q3 = q[3] + + Rot = Matrix([[q0**2 + q1**2 - q2**2 - q3**2, 2*(q1*q2 - q0*q3), 2*(q1*q3 + q0*q2)], + [2*(q1*q2 + q0*q3), q0**2 - q1**2 + q2**2 - q3**2, 2*(q2*q3 - q0*q1)], + [2*(q1*q3-q0*q2), 2*(q2*q3 + q0*q1), q0**2 - q1**2 - q2**2 + q3**2]]) + + return Rot + +# take an expression calculated by the cse() method and write the expression +# into a text file in C format +def write_simplified(P_touple, filename, out_name): + subs = P_touple[0] + P = Matrix(P_touple[1]) + fd = open(filename, 'a') + + is_vector = P.shape[0] == 1 or P.shape[1] == 1 + + # write sub expressions + for index, item in enumerate(subs): + fd.write('float ' + str(item[0]) + ' = ' + str(item[1]) + ';\n') + + # write actual matrix values + fd.write('\n') + + if not is_vector: + iterator = range(0,sqrt(len(P)), 1) + for row in iterator: + for column in iterator: + fd.write(out_name + '(' + str(row) + ',' + str(column) + ') = ' + str(P[row, column]) + ';\n') + else: + iterator = range(0, len(P), 1) + + for item in iterator: + fd.write(out_name + '(' + str(item) + ') = ' + str(P[item]) + ';\n') + + fd.write('\n\n') + fd.close() + +########## Symbolic variable definition ####################################### + + +# vehicle velocity +v_x = Symbol("v_x", real=True) # vehicle body x velocity +v_y = Symbol("v_y", real=True) # vehicle body y velocity + +# unit quaternion describing vehicle attitude, qw is real part +qw = Symbol("q0", real=True) +qx = Symbol("q1", real=True) +qy = Symbol("q2", real=True) +qz = Symbol("q3", real=True) +q_att = Matrix([qw, qx, qy, qz]) + +# terrain vertial position in local NED frame +_terrain_vpos = Symbol("_terrain_vpos", real=True) + +_terrain_var = Symbol("_terrain_var", real=True) + +# vehicle vertical position in local NED frame +pos_z = Symbol("z", real=True) + +R_body_to_earth = quat2Rot(q_att) + +# Optical flow around x axis +flow_x = -v_y / (_terrain_vpos - pos_z) * R_body_to_earth[2,2] + +# Calculate observation scalar +H_x = Matrix([flow_x]).jacobian(Matrix([_terrain_vpos])) + +H_x_simple = cse(H_x, symbols('t0:30')) + +# Optical flow around y axis +flow_y = v_x / (_terrain_vpos - pos_z) * R_body_to_earth[2,2] + +# Calculate observation scalar +H_y = Matrix([flow_y]).jacobian(Matrix([_terrain_vpos])) + +H_y_simple = cse(H_y, symbols('t0:30')) + +write_simplified(H_x_simple, "flow_x_observation.txt", "Hx") +write_simplified(H_y_simple, "flow_y_observation.txt", "Hy") + diff --git a/src/lib/ecl/EKF/python/wind_cov_init/derivation.py b/src/lib/ecl/EKF/python/wind_cov_init/derivation.py new file mode 100644 index 0000000000..0b2708d214 --- /dev/null +++ b/src/lib/ecl/EKF/python/wind_cov_init/derivation.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- +""" +Created on Tue Oct 29 14:11:58 2019 + +@author: roman +""" + +from sympy import * + +################## Here are the variables you can change to see the effects on the cov matrix ########################### +yaw_init = 0.5 + +# ground speed in body frame (comes from ekf2) +groundspeed_body_x_init = 5 +groundspeed_body_y_init = 5 + +# true airspeed measured by pitot tube +V_init = 7 + +# heading variance +R_yaw_init = rad(15.0)**2 + +# sideslip variance +R_beta_init = rad(15.0)**2 + +# True airspeed measurement variance +R_tas_init = 1.4**2 + +######################################################################################################################### + +# define symbols: true airspeed, sidslip angle, +V, beta, yaw, groundspeed_body_x, groundspeed_body_y = symbols('V beta yaw vx_body vy_body') +R_tas, R_beta, R_yaw = symbols('R_tas R_beta R_yaw') + + +# body x/y component of relative wind vector ( V is what the airspeed sensor measures) +Vx = V * cos(beta) +Vy = V * sin(beta) + + +# wind in body frame +wind_body_x = groundspeed_body_x - Vx +wind_body_y = groundspeed_body_y - Vy + +# wind in earth frame +wind_n = cos(yaw) * wind_body_x - sin(yaw) * wind_body_y +wind_e = sin(yaw) * wind_body_x + cos(yaw) * wind_body_y +wind_earth = Matrix([wind_n, wind_e]) + +# jacobian of earth wind vector with respect to states with known uncertainties +G = wind_earth.jacobian([V, beta, yaw]) + +# initial covariance matrix +P = Matrix([[R_tas, 0, 0], [0, R_beta,0], [0,0,R_yaw]]) + +# earth wind covariance matrix, assume 0 sideslip angle +P_wind_earth = (G*P*G.T).subs([(beta, 0)]) + +P_wind_earth_numeric = P_wind_earth.subs([(V, V_init),(yaw, yaw_init), (R_tas, R_tas_init), (R_yaw, R_yaw_init), (R_beta, R_beta_init)]) +P_wind_earth_numeric = P_wind_earth_numeric.subs([(groundspeed_body_x, groundspeed_body_x_init), (groundspeed_body_y, groundspeed_body_y_init) ]) + + +print('P[22][22] = ' + str(P_wind_earth_numeric[0,0])) +print('P[22][23] = ' + str(P_wind_earth_numeric[0,1])) +print('P[23][22] = ' + str(P_wind_earth_numeric[1,0])) +print('P[23][23] = ' + str(P_wind_earth_numeric[1,1])) \ No newline at end of file diff --git a/src/lib/ecl/EKF/sensor_range_finder.cpp b/src/lib/ecl/EKF/sensor_range_finder.cpp new file mode 100644 index 0000000000..b4ea510566 --- /dev/null +++ b/src/lib/ecl/EKF/sensor_range_finder.cpp @@ -0,0 +1,142 @@ +/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file sensor_range_finder.cpp + * + * @author Mathieu Bresciani + * + */ + +#include "sensor_range_finder.hpp" + +namespace estimator +{ +namespace sensor +{ + +void SensorRangeFinder::runChecks(const uint64_t current_time_us, const Dcmf &R_to_earth) +{ + updateSensorToEarthRotation(R_to_earth); + updateValidity(current_time_us); +} + +void SensorRangeFinder::updateSensorToEarthRotation(const Dcmf &R_to_earth) +{ + // calculate 2,2 element of rotation matrix from sensor frame to earth frame + // this is required for use of range finder and flow data + _cos_tilt_rng_to_earth = R_to_earth(2, 0) * _sin_pitch_offset + R_to_earth(2, 2) * _cos_pitch_offset; +} + +void SensorRangeFinder::updateValidity(uint64_t current_time_us) +{ + updateDtDataLpf(current_time_us); + + if (isSampleOutOfDate(current_time_us) || !isDataContinuous()) { + _is_sample_valid = false; + _is_regularly_sending_data = false; + return; + } + + _is_regularly_sending_data = true; + + // Don't run the checks unless we have retrieved new data from the buffer + if (_is_sample_ready) { + _is_sample_valid = false; + + if (_sample.quality == 0) { + _time_bad_quality_us = current_time_us; + + } else if (current_time_us - _time_bad_quality_us > _quality_hyst_us) { + // We did not receive bad quality data for some time + + if (isTiltOk() && isDataInRange()) { + updateStuckCheck(); + + if (!_is_stuck) { + _is_sample_valid = true; + _time_last_valid_us = _sample.time_us; + } + } + } + } +} + +void SensorRangeFinder::updateDtDataLpf(uint64_t current_time_us) +{ + // Calculate a first order IIR low-pass filtered time of arrival between samples using a 2 second time constant. + float alpha = 0.5f * _dt_update; + _dt_data_lpf = _dt_data_lpf * (1.0f - alpha) + alpha * (current_time_us - _sample.time_us); + + // Apply spike protection to the filter state. + _dt_data_lpf = fminf(_dt_data_lpf, 4e6f); +} + +inline bool SensorRangeFinder::isSampleOutOfDate(uint64_t current_time_us) const +{ + return (current_time_us - _sample.time_us) > 2 * RNG_MAX_INTERVAL; +} + +inline bool SensorRangeFinder::isDataInRange() const +{ + return (_sample.rng >= _rng_valid_min_val) && (_sample.rng <= _rng_valid_max_val); +} + +void SensorRangeFinder::updateStuckCheck() +{ + // Check for "stuck" range finder measurements when range was not valid for certain period + // This handles a failure mode observed with some lidar sensors + if (((_sample.time_us - _time_last_valid_us) > (uint64_t)10e6)) { + + // require a variance of rangefinder values to check for "stuck" measurements + if (_stuck_max_val - _stuck_min_val > _stuck_threshold) { + _stuck_min_val = 0.0f; + _stuck_max_val = 0.0f; + _is_stuck = false; + + } else { + if (_sample.rng > _stuck_max_val) { + _stuck_max_val = _sample.rng; + } + + if (_stuck_min_val < 0.1f || _sample.rng < _stuck_min_val) { + _stuck_min_val = _sample.rng; + } + + _is_stuck = true; + } + } +} + +} // namespace sensor +} // namespace estimator diff --git a/src/lib/ecl/EKF/sensor_range_finder.hpp b/src/lib/ecl/EKF/sensor_range_finder.hpp new file mode 100644 index 0000000000..d0aa23e046 --- /dev/null +++ b/src/lib/ecl/EKF/sensor_range_finder.hpp @@ -0,0 +1,159 @@ +/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file sensor_range_finder.hpp + * Range finder class containing all the required checks + * + * @author Mathieu Bresciani + * + */ +#pragma once + +#include "Sensor.hpp" +#include + +namespace estimator +{ +namespace sensor +{ + +class SensorRangeFinder : public Sensor +{ +public: + SensorRangeFinder() = default; + ~SensorRangeFinder() override = default; + + void runChecks(uint64_t current_time_us, const matrix::Dcmf &R_to_earth); + bool isHealthy() const override { return _is_sample_valid; } + bool isDataHealthy() const override { return _is_sample_ready && _is_sample_valid; } + bool isRegularlySendingData() const override { return _is_regularly_sending_data; } + + void setSample(const rangeSample &sample) { + _sample = sample; + _is_sample_ready = true; + } + + // This is required because of the ring buffer + // TODO: move the ring buffer here + rangeSample* getSampleAddress() { return &_sample; } + + void setPitchOffset(float new_pitch_offset) + { + if (fabsf(_pitch_offset_rad - new_pitch_offset) > FLT_EPSILON) { + _sin_pitch_offset = sinf(new_pitch_offset); + _cos_pitch_offset = cosf(new_pitch_offset); + _pitch_offset_rad = new_pitch_offset; + } + } + + void setCosMaxTilt(float cos_max_tilt) { _range_cos_max_tilt = cos_max_tilt; } + + void setLimits(float min_distance, float max_distance) { + _rng_valid_min_val = min_distance; + _rng_valid_max_val = max_distance; + } + + void setQualityHysteresis(float valid_quality_threshold_s){ + _quality_hyst_us = uint64_t(valid_quality_threshold_s * 1e6f); + } + + float getCosTilt() const { return _cos_tilt_rng_to_earth; } + + void setRange(float rng) { _sample.rng = rng; } + float getRange() const { return _sample.rng; } + + float getDistBottom() const { return _sample.rng * _cos_tilt_rng_to_earth; } + + void setDataReadiness(bool is_ready) { _is_sample_ready = is_ready; } + void setValidity(bool is_valid) { _is_sample_valid = is_valid; } + + float getValidMinVal() const { return _rng_valid_min_val; } + float getValidMaxVal() const { return _rng_valid_max_val; } + +private: + void updateSensorToEarthRotation(const matrix::Dcmf &R_to_earth); + + void updateValidity(uint64_t current_time_us); + void updateDtDataLpf(uint64_t current_time_us); + bool isSampleOutOfDate(uint64_t current_time_us) const; + bool isDataContinuous() const { return _dt_data_lpf < 2e6f; } + bool isTiltOk() const { return _cos_tilt_rng_to_earth > _range_cos_max_tilt; } + bool isDataInRange() const; + void updateStuckCheck(); + + rangeSample _sample{}; + + bool _is_sample_ready{}; ///< true when new range finder data has fallen behind the fusion time horizon and is available to be fused + bool _is_sample_valid{}; ///< true if range finder sample retrieved from buffer is valid + bool _is_regularly_sending_data{false}; ///< true if the interval between two samples is less than the maximum expected interval + uint64_t _time_last_valid_us{}; ///< time the last range finder measurement was ready (uSec) + + /* + * Stuck check + */ + bool _is_stuck{}; + float _stuck_threshold{0.1f}; ///< minimum variation in range finder reading required to declare a range finder 'unstuck' when readings recommence after being out of range (m) + float _stuck_min_val{}; ///< minimum value for new rng measurement when being stuck + float _stuck_max_val{}; ///< maximum value for new rng measurement when being stuck + + /* + * Data regularity check + */ + static constexpr float _dt_update{0.01f}; ///< delta time since last ekf update TODO: this should be a parameter + float _dt_data_lpf{}; ///< filtered value of the delta time elapsed since the last range measurement came into the filter (uSec) + + /* + * Tilt check + */ + float _cos_tilt_rng_to_earth{}; ///< 2,2 element of the rotation matrix from sensor frame to earth frame + float _range_cos_max_tilt{0.7071f}; ///< cosine of the maximum tilt angle from the vertical that permits use of range finder and flow data + float _pitch_offset_rad{3.14f}; ///< range finder tilt rotation about the Y body axis + float _sin_pitch_offset{0.0f}; ///< sine of the range finder tilt rotation about the Y body axis + float _cos_pitch_offset{-1.0f}; ///< cosine of the range finder tilt rotation about the Y body axis + + /* + * Range check + */ + float _rng_valid_min_val{}; ///< minimum distance that the rangefinder can measure (m) + float _rng_valid_max_val{}; ///< maximum distance that the rangefinder can measure (m) + + /* + * Quality check + */ + uint64_t _time_bad_quality_us{}; ///< timestamp at which range finder signal quality was 0 (used for hysteresis) + uint64_t _quality_hyst_us{}; ///< minimum duration during which the reported range finder signal quality needs to be non-zero in order to be declared valid (us) +}; + +} // namespace sensor +} // namespace estimator diff --git a/src/lib/ecl/EKF/sideslip_fusion.cpp b/src/lib/ecl/EKF/sideslip_fusion.cpp new file mode 100644 index 0000000000..2b966a1b72 --- /dev/null +++ b/src/lib/ecl/EKF/sideslip_fusion.cpp @@ -0,0 +1,214 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file sideslip_fusion.cpp + * sideslip fusion methods. + * equations generated using EKF/python/ekf_derivation/main.py + * + * @author Carl Olsson + * @author Paul Riseborough + * + */ + +#include "ekf.h" +#include +#include + +void Ekf::fuseSideslip() +{ + // get latest estimated orientation + const float &q0 = _state.quat_nominal(0); + const float &q1 = _state.quat_nominal(1); + const float &q2 = _state.quat_nominal(2); + const float &q3 = _state.quat_nominal(3); + + // get latest velocity in earth frame + const float &vn = _state.vel(0); + const float &ve = _state.vel(1); + const float &vd = _state.vel(2); + + // get latest wind velocity in earth frame + const float &vwn = _state.wind_vel(0); + const float &vwe = _state.wind_vel(1); + + // calculate relative wind velocity in earth frame and rotate into body frame + const Vector3f rel_wind_earth(vn - vwn, ve - vwe, vd); + const Dcmf earth_to_body = quatToInverseRotMat(_state.quat_nominal); + const Vector3f rel_wind_body = earth_to_body * rel_wind_earth; + + // perform fusion of assumed sideslip = 0 + if (rel_wind_body.norm() > 7.0f) { + const float R_BETA = sq(_params.beta_noise); // observation noise variance + + // determine if we need the sideslip fusion to correct states other than wind + bool update_wind_only = !_is_wind_dead_reckoning; + + // Intermediate Values + const float HK0 = vn - vwn; + const float HK1 = ve - vwe; + const float HK2 = HK0*q0 + HK1*q3 - q2*vd; + const float HK3 = q0*q2 - q1*q3; + const float HK4 = 2*vd; + const float HK5 = q0*q3; + const float HK6 = q1*q2; + const float HK7 = 2*HK5 + 2*HK6; + const float HK8 = ecl::powf(q0, 2); + const float HK9 = ecl::powf(q3, 2); + const float HK10 = HK8 - HK9; + const float HK11 = ecl::powf(q1, 2); + const float HK12 = ecl::powf(q2, 2); + const float HK13 = HK11 - HK12; + const float HK14 = HK10 + HK13; + const float HK15 = HK0*HK14 + HK1*HK7 - HK3*HK4; + const float HK16 = 1.0F/HK15; + const float HK17 = q0*q1 + q2*q3; + const float HK18 = HK10 - HK11 + HK12; + const float HK19 = HK16*(-2*HK0*(HK5 - HK6) + HK1*HK18 + HK17*HK4); + const float HK20 = -HK0*q3 + HK1*q0 + q1*vd; + const float HK21 = -HK19*HK2 + HK20; + const float HK22 = 2*HK16; + const float HK23 = HK0*q1 + HK1*q2 + q3*vd; + const float HK24 = HK0*q2 - HK1*q1 + q0*vd; + const float HK25 = -HK19*HK23 + HK24; + const float HK26 = HK19*HK24 + HK23; + const float HK27 = HK19*HK20 + HK2; + const float HK28 = HK14*HK19 + 2*HK5 - 2*HK6; + const float HK29 = HK16*HK28; + const float HK30 = HK19*HK7; + const float HK31 = HK17 + HK19*HK3; + const float HK32 = HK13 + HK30 - HK8 + HK9; + const float HK33 = 2*HK31; + const float HK34 = 2*HK26; + const float HK35 = 2*HK25; + const float HK36 = 2*HK27; + const float HK37 = 2*HK21; + const float HK38 = HK28*P(0,22) - HK28*P(0,4) + HK32*P(0,23) - HK32*P(0,5) + HK33*P(0,6) + HK34*P(0,2) + HK35*P(0,1) - HK36*P(0,3) + HK37*P(0,0); + const float HK39 = ecl::powf(HK15, -2); + const float HK40 = -HK28*P(4,6) + HK28*P(6,22) - HK32*P(5,6) + HK32*P(6,23) + HK33*P(6,6) + HK34*P(2,6) + HK35*P(1,6) - HK36*P(3,6) + HK37*P(0,6); + const float HK41 = HK32*P(5,23); + const float HK42 = HK28*P(22,23) - HK28*P(4,23) + HK32*P(23,23) + HK33*P(6,23) + HK34*P(2,23) + HK35*P(1,23) - HK36*P(3,23) + HK37*P(0,23) - HK41; + const float HK43 = HK32*HK39; + const float HK44 = HK28*P(4,22); + const float HK45 = HK28*P(22,22) + HK32*P(22,23) - HK32*P(5,22) + HK33*P(6,22) + HK34*P(2,22) + HK35*P(1,22) - HK36*P(3,22) + HK37*P(0,22) - HK44; + const float HK46 = HK28*HK39; + const float HK47 = -HK28*P(4,5) + HK28*P(5,22) - HK32*P(5,5) + HK33*P(5,6) + HK34*P(2,5) + HK35*P(1,5) - HK36*P(3,5) + HK37*P(0,5) + HK41; + const float HK48 = -HK28*P(4,4) + HK32*P(4,23) - HK32*P(4,5) + HK33*P(4,6) + HK34*P(2,4) + HK35*P(1,4) - HK36*P(3,4) + HK37*P(0,4) + HK44; + const float HK49 = HK28*P(2,22) - HK28*P(2,4) + HK32*P(2,23) - HK32*P(2,5) + HK33*P(2,6) + HK34*P(2,2) + HK35*P(1,2) - HK36*P(2,3) + HK37*P(0,2); + const float HK50 = HK28*P(1,22) - HK28*P(1,4) + HK32*P(1,23) - HK32*P(1,5) + HK33*P(1,6) + HK34*P(1,2) + HK35*P(1,1) - HK36*P(1,3) + HK37*P(0,1); + const float HK51 = HK28*P(3,22) - HK28*P(3,4) + HK32*P(3,23) - HK32*P(3,5) + HK33*P(3,6) + HK34*P(2,3) + HK35*P(1,3) - HK36*P(3,3) + HK37*P(0,3); + //const float HK52 = HK16/(HK33*HK39*HK40 + HK34*HK39*HK49 + HK35*HK39*HK50 - HK36*HK39*HK51 + HK37*HK38*HK39 + HK42*HK43 - HK43*HK47 + HK45*HK46 - HK46*HK48 + R_BETA); + + // innovation variance + _beta_innov_var = (HK33*HK39*HK40 + HK34*HK39*HK49 + HK35*HK39*HK50 - HK36*HK39*HK51 + HK37*HK38*HK39 + HK42*HK43 - HK43*HK47 + HK45*HK46 - HK46*HK48 + R_BETA); + + // Reset covariance and states if the calculation is badly conditioned + if (_beta_innov_var < R_BETA) { + _fault_status.flags.bad_sideslip = true; + + // if we are getting aiding from other sources, warn and reset the wind states and covariances only + const char* action_string = nullptr; + if (update_wind_only) { + resetWindStates(); + resetWindCovariance(); + action_string = "wind"; + + } else { + initialiseCovariance(); + _state.wind_vel.setZero(); + action_string = "full"; + } + ECL_ERR("sideslip badly conditioned - %s covariance reset", action_string); + + return; + } + _fault_status.flags.bad_sideslip = false; + const float HK52 = HK16/_beta_innov_var; + + // Calculate predicted sideslip angle and innovation using small angle approximation + _beta_innov = rel_wind_body(1) / rel_wind_body(0); + + // Compute the ratio of innovation to gate size + _beta_test_ratio = sq(_beta_innov) / (sq(fmaxf(_params.beta_innov_gate, 1.0f)) * _beta_innov_var); + + // if the innovation consistency check fails then don't fuse the sample and indicate bad beta health + if (_beta_test_ratio > 1.0f) { + _innov_check_fail_status.flags.reject_sideslip = true; + return; + + } else { + _innov_check_fail_status.flags.reject_sideslip = false; + } + + // Observation Jacobians + SparseVector24f<0,1,2,3,4,5,6,22,23> Hfusion; + Hfusion.at<0>() = HK21*HK22; + Hfusion.at<1>() = HK22*HK25; + Hfusion.at<2>() = HK22*HK26; + Hfusion.at<3>() = -HK22*HK27; + Hfusion.at<4>() = -HK29; + Hfusion.at<5>() = HK16*(HK18 - HK30); + Hfusion.at<6>() = HK22*HK31; + Hfusion.at<22>() = HK29; + Hfusion.at<23>() = HK16*HK32; + + // Calculate Kalman gains + Vector24f Kfusion; + if (!update_wind_only) { + + Kfusion(0) = HK38*HK52; + Kfusion(1) = HK50*HK52; + Kfusion(2) = HK49*HK52; + Kfusion(3) = HK51*HK52; + Kfusion(4) = HK48*HK52; + Kfusion(5) = HK47*HK52; + Kfusion(6) = HK40*HK52; + + for (unsigned row = 7; row <= 21; row++) { + Kfusion(row) = HK52*(HK28*P(row,22) - HK28*P(4,row) + HK32*P(row,23) - HK32*P(5,row) + HK33*P(6,row) + HK34*P(2,row) + HK35*P(1,row) - HK36*P(3,row) + HK37*P(0,row)); + } + + } + + Kfusion(22) = HK45*HK52; + Kfusion(23) = HK42*HK52; + + const bool is_fused = measurementUpdate(Kfusion, Hfusion, _beta_innov); + + _fault_status.flags.bad_sideslip = !is_fused; + + if (is_fused) { + _time_last_beta_fuse = _time_last_imu; + } + } +} diff --git a/src/lib/ecl/EKF/terrain_estimator.cpp b/src/lib/ecl/EKF/terrain_estimator.cpp new file mode 100644 index 0000000000..2657d8cd08 --- /dev/null +++ b/src/lib/ecl/EKF/terrain_estimator.cpp @@ -0,0 +1,297 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file terrain_estimator.cpp + * Function for fusing rangefinder measurements to estimate terrain vertical position/ + * + * @author Paul Riseborough + * + */ + +#include "ekf.h" +#include +#include + +bool Ekf::initHagl() +{ + bool initialized = false; + + if (!_control_status.flags.in_air) { + // if on ground, do not trust the range sensor, but assume a ground clearance + _terrain_vpos = _state.pos(2) + _params.rng_gnd_clearance; + // use the ground clearance value as our uncertainty + _terrain_var = sq(_params.rng_gnd_clearance); + _time_last_fake_hagl_fuse = _time_last_imu; + initialized = true; + + } else if (shouldUseRangeFinderForHagl() + && _range_sensor.isDataHealthy()) { + // if we have a fresh measurement, use it to initialise the terrain estimator + _terrain_vpos = _state.pos(2) + _range_sensor.getDistBottom(); + // initialise state variance to variance of measurement + _terrain_var = sq(_params.range_noise); + // success + initialized = true; + + } else if (shouldUseOpticalFlowForHagl() + && _flow_for_terrain_data_ready) { + // initialise terrain vertical position to origin as this is the best guess we have + _terrain_vpos = fmaxf(0.0f, _state.pos(2)); + _terrain_var = 100.0f; + initialized = true; + + } else { + // no information - cannot initialise + } + + if (initialized) { + // has initialized with valid data + _time_last_hagl_fuse = _time_last_imu; + } + + return initialized; +} + +void Ekf::runTerrainEstimator() +{ + // If we are on ground, store the local position and time to use as a reference + if (!_control_status.flags.in_air) { + _last_on_ground_posD = _state.pos(2); + } + + // Perform initialisation check and + // on ground, continuously reset the terrain estimator + if (!_terrain_initialised || !_control_status.flags.in_air) { + _terrain_initialised = initHagl(); + + } else { + + // predict the state variance growth where the state is the vertical position of the terrain underneath the vehicle + + // process noise due to errors in vehicle height estimate + _terrain_var += sq(_imu_sample_delayed.delta_vel_dt * _params.terrain_p_noise); + + // process noise due to terrain gradient + _terrain_var += sq(_imu_sample_delayed.delta_vel_dt * _params.terrain_gradient) + * (sq(_state.vel(0)) + sq(_state.vel(1))); + + // limit the variance to prevent it becoming badly conditioned + _terrain_var = math::constrain(_terrain_var, 0.0f, 1e4f); + + // Fuse range finder data if available + if (shouldUseRangeFinderForHagl() + && _range_sensor.isDataHealthy()) { + fuseHagl(); + } + + if (shouldUseOpticalFlowForHagl() + && _flow_for_terrain_data_ready) { + fuseFlowForTerrain(); + _flow_for_terrain_data_ready = false; + } + + // constrain _terrain_vpos to be a minimum of _params.rng_gnd_clearance larger than _state.pos(2) + if (_terrain_vpos - _state.pos(2) < _params.rng_gnd_clearance) { + _terrain_vpos = _params.rng_gnd_clearance + _state.pos(2); + } + } + + updateTerrainValidity(); +} + +void Ekf::fuseHagl() +{ + // get a height above ground measurement from the range finder assuming a flat earth + const float meas_hagl = _range_sensor.getDistBottom(); + + // predict the hagl from the vehicle position and terrain height + const float pred_hagl = _terrain_vpos - _state.pos(2); + + // calculate the innovation + _hagl_innov = pred_hagl - meas_hagl; + + // calculate the observation variance adding the variance of the vehicles own height uncertainty + const float obs_variance = fmaxf(P(9,9) * _params.vehicle_variance_scaler, 0.0f) + + sq(_params.range_noise) + + sq(_params.range_noise_scaler * _range_sensor.getRange()); + + // calculate the innovation variance - limiting it to prevent a badly conditioned fusion + _hagl_innov_var = fmaxf(_terrain_var + obs_variance, obs_variance); + + // perform an innovation consistency check and only fuse data if it passes + const float gate_size = fmaxf(_params.range_innov_gate, 1.0f); + _hagl_test_ratio = sq(_hagl_innov) / (sq(gate_size) * _hagl_innov_var); + + if (_hagl_test_ratio <= 1.0f) { + // calculate the Kalman gain + const float gain = _terrain_var / _hagl_innov_var; + // correct the state + _terrain_vpos -= gain * _hagl_innov; + // correct the variance + _terrain_var = fmaxf(_terrain_var * (1.0f - gain), 0.0f); + // record last successful fusion event + _time_last_hagl_fuse = _time_last_imu; + _innov_check_fail_status.flags.reject_hagl = false; + + } else { + // If we have been rejecting range data for too long, reset to measurement + const uint64_t timeout = static_cast(_params.terrain_timeout * 1e6f); + if (isTimedOut(_time_last_hagl_fuse, timeout)) { + _terrain_vpos = _state.pos(2) + meas_hagl; + _terrain_var = obs_variance; + _terrain_vpos_reset_counter++; + + } else { + _innov_check_fail_status.flags.reject_hagl = true; + } + } +} + +void Ekf::fuseFlowForTerrain() +{ + // calculate optical LOS rates using optical flow rates that have had the body angular rate contribution removed + // correct for gyro bias errors in the data used to do the motion compensation + // Note the sign convention used: A positive LOS rate is a RH rotation of the scene about that axis. + const Vector2f opt_flow_rate = _flow_compensated_XY_rad / _flow_sample_delayed.dt + Vector2f(_flow_gyro_bias); + + // get latest estimated orientation + const float q0 = _state.quat_nominal(0); + const float q1 = _state.quat_nominal(1); + const float q2 = _state.quat_nominal(2); + const float q3 = _state.quat_nominal(3); + + // calculate the optical flow observation variance + const float R_LOS = calcOptFlowMeasVar(); + + // get rotation matrix from earth to body + const Dcmf earth_to_body = quatToInverseRotMat(_state.quat_nominal); + + // calculate the sensor position relative to the IMU + const Vector3f pos_offset_body = _params.flow_pos_body - _params.imu_pos_body; + + // calculate the velocity of the sensor relative to the imu in body frame + // Note: _flow_sample_delayed.gyro_xyz is the negative of the body angular velocity, thus use minus sign + const Vector3f vel_rel_imu_body = Vector3f(-_flow_sample_delayed.gyro_xyz / _flow_sample_delayed.dt) % pos_offset_body; + + // calculate the velocity of the sensor in the earth frame + const Vector3f vel_rel_earth = _state.vel + _R_to_earth * vel_rel_imu_body; + + // rotate into body frame + const Vector3f vel_body = earth_to_body * vel_rel_earth; + + const float t0 = q0 * q0 - q1 * q1 - q2 * q2 + q3 * q3; + + // constrain terrain to minimum allowed value and predict height above ground + _terrain_vpos = fmaxf(_terrain_vpos, _params.rng_gnd_clearance + _state.pos(2)); + const float pred_hagl_inv = 1.f / (_terrain_vpos - _state.pos(2)); + + // Calculate observation matrix for flow around the vehicle x axis + const float Hx = vel_body(1) * t0 * pred_hagl_inv * pred_hagl_inv; + + // Constrain terrain variance to be non-negative + _terrain_var = fmaxf(_terrain_var, 0.0f); + + // Cacluate innovation variance + _flow_innov_var(0) = Hx * Hx * _terrain_var + R_LOS; + + // calculate the kalman gain for the flow x measurement + const float Kx = _terrain_var * Hx / _flow_innov_var(0); + + // calculate prediced optical flow about x axis + const float pred_flow_x = vel_body(1) * earth_to_body(2, 2) * pred_hagl_inv; + + // calculate flow innovation (x axis) + _flow_innov(0) = pred_flow_x - opt_flow_rate(0); + + // calculate correction term for terrain variance + const float KxHxP = Kx * Hx * _terrain_var; + + // innovation consistency check + const float gate_size = fmaxf(_params.flow_innov_gate, 1.0f); + float flow_test_ratio = sq(_flow_innov(0)) / (sq(gate_size) * _flow_innov_var(0)); + + // do not perform measurement update if badly conditioned + if (flow_test_ratio <= 1.0f) { + _terrain_vpos += Kx * _flow_innov(0); + // guard against negative variance + _terrain_var = fmaxf(_terrain_var - KxHxP, 0.0f); + _time_last_flow_terrain_fuse = _time_last_imu; + } + + // Calculate observation matrix for flow around the vehicle y axis + const float Hy = -vel_body(0) * t0 * pred_hagl_inv * pred_hagl_inv; + + // Calculuate innovation variance + _flow_innov_var(1) = Hy * Hy * _terrain_var + R_LOS; + + // calculate the kalman gain for the flow y measurement + const float Ky = _terrain_var * Hy / _flow_innov_var(1); + + // calculate prediced optical flow about y axis + const float pred_flow_y = -vel_body(0) * earth_to_body(2, 2) * pred_hagl_inv; + + // calculate flow innovation (y axis) + _flow_innov(1) = pred_flow_y - opt_flow_rate(1); + + // calculate correction term for terrain variance + const float KyHyP = Ky * Hy * _terrain_var; + + // innovation consistency check + flow_test_ratio = sq(_flow_innov(1)) / (sq(gate_size) * _flow_innov_var(1)); + + if (flow_test_ratio <= 1.0f) { + _terrain_vpos += Ky * _flow_innov(1); + // guard against negative variance + _terrain_var = fmaxf(_terrain_var - KyHyP, 0.0f); + _time_last_flow_terrain_fuse = _time_last_imu; + } +} + +void Ekf::updateTerrainValidity() +{ + // we have been fusing range finder measurements in the last 5 seconds + const bool recent_range_fusion = isRecent(_time_last_hagl_fuse, (uint64_t)5e6); + + // we have been fusing optical flow measurements for terrain estimation within the last 5 seconds + // this can only be the case if the main filter does not fuse optical flow + const bool recent_flow_for_terrain_fusion = isRecent(_time_last_flow_terrain_fuse, (uint64_t)5e6); + + _hagl_valid = (_terrain_initialised && (recent_range_fusion || recent_flow_for_terrain_fusion)); + + _hagl_sensor_status.flags.range_finder = shouldUseRangeFinderForHagl() + && recent_range_fusion + && (_time_last_fake_hagl_fuse != _time_last_hagl_fuse); + + _hagl_sensor_status.flags.flow = shouldUseOpticalFlowForHagl() && recent_flow_for_terrain_fusion; +} diff --git a/src/lib/ecl/EKF/utils.cpp b/src/lib/ecl/EKF/utils.cpp new file mode 100644 index 0000000000..e87566f391 --- /dev/null +++ b/src/lib/ecl/EKF/utils.cpp @@ -0,0 +1,107 @@ +#include "utils.hpp" + +matrix::Dcmf taitBryan312ToRotMat(const matrix::Vector3f &rot312) +{ + // Calculate the frame2 to frame 1 rotation matrix from a 312 Tait-Bryan rotation sequence + const float c2 = cosf(rot312(2)); // third rotation is pitch + const float s2 = sinf(rot312(2)); + const float s1 = sinf(rot312(1)); // second rotation is roll + const float c1 = cosf(rot312(1)); + const float s0 = sinf(rot312(0)); // first rotation is yaw + const float c0 = cosf(rot312(0)); + + matrix::Dcmf R; + R(0, 0) = c0 * c2 - s0 * s1 * s2; + R(1, 1) = c0 * c1; + R(2, 2) = c2 * c1; + R(0, 1) = -c1 * s0; + R(0, 2) = s2 * c0 + c2 * s1 * s0; + R(1, 0) = c2 * s0 + s2 * s1 * c0; + R(1, 2) = s0 * s2 - s1 * c0 * c2; + R(2, 0) = -s2 * c1; + R(2, 1) = s1; + + return R; +} + +float kahanSummation(float sum_previous, float input, float &accumulator) +{ + const float y = input - accumulator; + const float t = sum_previous + y; + accumulator = (t - sum_previous) - y; + return t; +} + +matrix::Dcmf quatToInverseRotMat(const matrix::Quatf &quat) +{ + const float q00 = quat(0) * quat(0); + const float q11 = quat(1) * quat(1); + const float q22 = quat(2) * quat(2); + const float q33 = quat(3) * quat(3); + const float q01 = quat(0) * quat(1); + const float q02 = quat(0) * quat(2); + const float q03 = quat(0) * quat(3); + const float q12 = quat(1) * quat(2); + const float q13 = quat(1) * quat(3); + const float q23 = quat(2) * quat(3); + + matrix::Dcmf dcm; + dcm(0, 0) = q00 + q11 - q22 - q33; + dcm(1, 1) = q00 - q11 + q22 - q33; + dcm(2, 2) = q00 - q11 - q22 + q33; + dcm(1, 0) = 2.0f * (q12 - q03); + dcm(2, 0) = 2.0f * (q13 + q02); + dcm(0, 1) = 2.0f * (q12 + q03); + dcm(2, 1) = 2.0f * (q23 - q01); + dcm(0, 2) = 2.0f * (q13 - q02); + dcm(1, 2) = 2.0f * (q23 + q01); + + return dcm; +} + +bool shouldUse321RotationSequence(const matrix::Dcmf& R) { + return fabsf(R(2, 0)) < fabsf(R(2, 1)); +} + +float getEuler321Yaw(const matrix::Quatf& q) { + // Values from yaw_input_321.c file produced by + // https://github.com/PX4/ecl/blob/master/matlab/scripts/Inertial%20Nav%20EKF/quat2yaw321.m + const float a = 2.f * (q(0) * q(3) + q(1) * q(2)); + const float b = sq(q(0)) + sq(q(1)) - sq(q(2)) - sq(q(3)); + return atan2f(a, b); +} + +float getEuler321Yaw(const matrix::Dcmf& R) { + return atan2f(R(1, 0), R(0, 0)); +} + +float getEuler312Yaw(const matrix::Quatf& q) { + // Values from yaw_input_312.c file produced by + // https://github.com/PX4/ecl/blob/master/matlab/scripts/Inertial%20Nav%20EKF/quat2yaw312.m + const float a = 2.f * (q(0) * q(3) - q(1) * q(2)); + const float b = sq(q(0)) - sq(q(1)) + sq(q(2)) - sq(q(3)); + return atan2f(a, b); +} + +float getEuler312Yaw(const matrix::Dcmf& R) { + return atan2f(-R(0, 1), R(1, 1)); +} + +matrix::Dcmf updateEuler321YawInRotMat(float yaw, const matrix::Dcmf& rot_in) { + matrix::Eulerf euler321(rot_in); + euler321(2) = yaw; + return matrix::Dcmf(euler321); +} + +matrix::Dcmf updateEuler312YawInRotMat(float yaw, const matrix::Dcmf& rot_in) { + const matrix::Vector3f rotVec312(yaw, // yaw + asinf(rot_in(2, 1)), // roll + atan2f(-rot_in(2, 0), rot_in(2, 2))); // pitch + return taitBryan312ToRotMat(rotVec312); +} + +matrix::Dcmf updateYawInRotMat(float yaw, const matrix::Dcmf& rot_in) { + return shouldUse321RotationSequence(rot_in) ? + updateEuler321YawInRotMat(yaw, rot_in) : + updateEuler312YawInRotMat(yaw, rot_in); +} diff --git a/src/lib/ecl/EKF/utils.hpp b/src/lib/ecl/EKF/utils.hpp new file mode 100644 index 0000000000..23b10516bb --- /dev/null +++ b/src/lib/ecl/EKF/utils.hpp @@ -0,0 +1,58 @@ +#include + +#pragma once + +// return the square of two floating point numbers - used in auto coded sections +static constexpr float sq(float var) { return var * var; } + +// converts Tait-Bryan 312 sequence of rotations from frame 1 to frame 2 +// to the corresponding rotation matrix that rotates from frame 2 to frame 1 +// rot312(0) - First rotation is a RH rotation about the Z axis (rad) +// rot312(1) - Second rotation is a RH rotation about the X axis (rad) +// rot312(2) - Third rotation is a RH rotation about the Y axis (rad) +// See http://www.atacolorado.com/eulersequences.doc +matrix::Dcmf taitBryan312ToRotMat(const matrix::Vector3f &rot312); + +// Use Kahan summation algorithm to get the sum of "sum_previous" and "input". +// This function relies on the caller to be responsible for keeping a copy of +// "accumulator" and passing this value at the next iteration. +// Ref: https://en.wikipedia.org/wiki/Kahan_summation_algorithm +float kahanSummation(float sum_previous, float input, float &accumulator); + +// calculate the inverse rotation matrix from a quaternion rotation +// this produces the inverse rotation to that produced by the math library quaternion to Dcmf operator +matrix::Dcmf quatToInverseRotMat(const matrix::Quatf &quat); + +// We should use a 3-2-1 Tait-Bryan (yaw-pitch-roll) rotation sequence +// when there is more roll than pitch tilt and a 3-1-2 rotation sequence +// when there is more pitch than roll tilt to avoid gimbal lock. +bool shouldUse321RotationSequence(const matrix::Dcmf& R); + +float getEuler321Yaw(const matrix::Quatf& q); +float getEuler321Yaw(const matrix::Dcmf& R); + +float getEuler312Yaw(const matrix::Quatf& q); +float getEuler312Yaw(const matrix::Dcmf& R); + +matrix::Dcmf updateEuler321YawInRotMat(float yaw, const matrix::Dcmf& rot_in); +matrix::Dcmf updateEuler312YawInRotMat(float yaw, const matrix::Dcmf& rot_in); + +// Checks which euler rotation sequence to use and update yaw in rotation matrix +matrix::Dcmf updateYawInRotMat(float yaw, const matrix::Dcmf& rot_in); + +namespace ecl{ + inline float powf(float x, int exp) + { + float ret; + if (exp > 0) { + ret = x; + for (int count = 1; count < exp; count++) { + ret *= x; + } + return ret; + } else if (exp < 0) { + return 1.0f / ecl::powf(x, -exp); + } + return 1.0f; + } +} diff --git a/src/lib/ecl/EKF/vel_pos_fusion.cpp b/src/lib/ecl/EKF/vel_pos_fusion.cpp new file mode 100644 index 0000000000..9631304e51 --- /dev/null +++ b/src/lib/ecl/EKF/vel_pos_fusion.cpp @@ -0,0 +1,247 @@ +/**************************************************************************** + * + * Copyright (c) 2015 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file vel_pos_fusion.cpp + * Function for fusing gps and baro measurements/ + * + * @author Roman Bast + * @author Siddharth Bharat Purohit + * @author Paul Riseborough + * + */ + +#include +#include +#include "ekf.h" + +bool Ekf::fuseHorizontalVelocity(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio) +{ + + innov_var(0) = P(4, 4) + obs_var(0); + innov_var(1) = P(5, 5) + obs_var(1); + test_ratio(0) = fmaxf(sq(innov(0)) / (sq(innov_gate(0)) * innov_var(0)), + sq(innov(1)) / (sq(innov_gate(0)) * innov_var(1))); + + const bool innov_check_pass = (test_ratio(0) <= 1.0f); + + if (innov_check_pass) { + _time_last_hor_vel_fuse = _time_last_imu; + _innov_check_fail_status.flags.reject_hor_vel = false; + + fuseVelPosHeight(innov(0), innov_var(0), 0); + fuseVelPosHeight(innov(1), innov_var(1), 1); + + return true; + + } else { + _last_fail_hvel_innov(0) = innov(0); + _last_fail_hvel_innov(1) = innov(1); + _innov_check_fail_status.flags.reject_hor_vel = true; + return false; + } +} + +bool Ekf::fuseVerticalVelocity(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio) +{ + + innov_var(2) = P(6, 6) + obs_var(2); + test_ratio(1) = sq(innov(2)) / (sq(innov_gate(1)) * innov_var(2)); + _vert_vel_innov_ratio = innov(2) / sqrtf(innov_var(2)); + _vert_vel_fuse_time_us = _time_last_imu; + bool innov_check_pass = (test_ratio(1) <= 1.0f); + + // if there is bad vertical acceleration data, then don't reject measurement, + // but limit innovation to prevent spikes that could destabilise the filter + float innovation; + if (_bad_vert_accel_detected && !innov_check_pass) { + const float innov_limit = innov_gate(1) * sqrtf(innov_var(2)); + innovation = math::constrain(innov(2), -innov_limit, innov_limit); + innov_check_pass = true; + } else { + innovation = innov(2); + } + + if (innov_check_pass) { + _time_last_ver_vel_fuse = _time_last_imu; + _innov_check_fail_status.flags.reject_ver_vel = false; + + fuseVelPosHeight(innovation, innov_var(2), 2); + + return true; + + } else { + _innov_check_fail_status.flags.reject_ver_vel = true; + return false; + } +} + +bool Ekf::fuseHorizontalPosition(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio, bool inhibit_gate) +{ + + innov_var(0) = P(7, 7) + obs_var(0); + innov_var(1) = P(8, 8) + obs_var(1); + test_ratio(0) = fmaxf(sq(innov(0)) / (sq(innov_gate(0)) * innov_var(0)), + sq(innov(1)) / (sq(innov_gate(0)) * innov_var(1))); + + const bool innov_check_pass = test_ratio(0) <= 1.0f; + + if (innov_check_pass || inhibit_gate) { + if (inhibit_gate && test_ratio(0) > sq(100.0f / innov_gate(0))) { + // always protect against extreme values that could result in a NaN + return false; + } + if (!_fuse_hpos_as_odom) { + _time_last_hor_pos_fuse = _time_last_imu; + + } else { + _time_last_delpos_fuse = _time_last_imu; + } + + _innov_check_fail_status.flags.reject_hor_pos = false; + + fuseVelPosHeight(innov(0), innov_var(0), 3); + fuseVelPosHeight(innov(1), innov_var(1), 4); + + return true; + + } else { + _innov_check_fail_status.flags.reject_hor_pos = true; + return false; + } +} + +bool Ekf::fuseVerticalPosition(const Vector3f &innov, const Vector2f &innov_gate, const Vector3f &obs_var, + Vector3f &innov_var, Vector2f &test_ratio) +{ + + innov_var(2) = P(9, 9) + obs_var(2); + test_ratio(1) = sq(innov(2)) / (sq(innov_gate(1)) * innov_var(2)); + _vert_pos_innov_ratio = innov(2) / sqrtf(innov_var(2)); + _vert_pos_fuse_attempt_time_us = _time_last_imu; + bool innov_check_pass = test_ratio(1) <= 1.0f; + + // if there is bad vertical acceleration data, then don't reject measurement, + // but limit innovation to prevent spikes that could destabilise the filter + float innovation; + if (_bad_vert_accel_detected && !innov_check_pass) { + const float innov_limit = innov_gate(1) * sqrtf(innov_var(2)); + innovation = math::constrain(innov(2), -innov_limit, innov_limit); + innov_check_pass = true; + } else { + innovation = innov(2); + } + + if (innov_check_pass) { + _time_last_hgt_fuse = _time_last_imu; + _innov_check_fail_status.flags.reject_ver_pos = false; + fuseVelPosHeight(innovation, innov_var(2), 5); + + return true; + + } else { + _innov_check_fail_status.flags.reject_ver_pos = true; + return false; + } +} + +// Helper function that fuses a single velocity or position measurement +void Ekf::fuseVelPosHeight(const float innov, const float innov_var, const int obs_index) +{ + + Vector24f Kfusion; // Kalman gain vector for any single observation - sequential fusion is used. + const unsigned state_index = obs_index + 4; // we start with vx and this is the 4. state + + // calculate kalman gain K = PHS, where S = 1/innovation variance + for (int row = 0; row < _k_num_states; row++) { + Kfusion(row) = P(row, state_index) / innov_var; + } + + SquareMatrix24f KHP; + + for (unsigned row = 0; row < _k_num_states; row++) { + for (unsigned column = 0; column < _k_num_states; column++) { + KHP(row, column) = Kfusion(row) * P(state_index, column); + } + } + + // if the covariance correction will result in a negative variance, then + // the covariance matrix is unhealthy and must be corrected + bool healthy = true; + + for (int i = 0; i < _k_num_states; i++) { + if (P(i, i) < KHP(i, i)) { + // zero rows and columns + P.uncorrelateCovarianceSetVariance<1>(i, 0.0f); + + healthy = false; + } + } + + setVelPosFaultStatus(obs_index, !healthy); + + if (healthy) { + // apply the covariance corrections + P -= KHP; + + fixCovarianceErrors(true); + + // apply the state corrections + fuse(Kfusion, innov); + } +} + +void Ekf::setVelPosFaultStatus(const int index, const bool status) +{ + if (index == 0) { + _fault_status.flags.bad_vel_N = status; + + } else if (index == 1) { + _fault_status.flags.bad_vel_E = status; + + } else if (index == 2) { + _fault_status.flags.bad_vel_D = status; + + } else if (index == 3) { + _fault_status.flags.bad_pos_N = status; + + } else if (index == 4) { + _fault_status.flags.bad_pos_E = status; + + } else if (index == 5) { + _fault_status.flags.bad_pos_D = status; + } +} diff --git a/src/lib/ecl/LICENSE b/src/lib/ecl/LICENSE new file mode 100644 index 0000000000..ec8290fc37 --- /dev/null +++ b/src/lib/ecl/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2015, Lorenz Meier +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of libgnc nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/src/lib/ecl/Makefile b/src/lib/ecl/Makefile new file mode 100644 index 0000000000..0392ba8dd2 --- /dev/null +++ b/src/lib/ecl/Makefile @@ -0,0 +1,154 @@ +############################################################################ +# +# Copyright (c) 2018 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +# Parsing +# -------------------------------------------------------------------- +# assume 1st argument passed is the main target, the +# rest are arguments to pass to the makefile generated +# by cmake in the subdirectory +FIRST_ARG := $(firstword $(MAKECMDGOALS)) +ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) +j ?= 4 +BLUE='\033[1;36m' +NC='\033[0m' # No Color + +NINJA_BIN := ninja +ifndef NO_NINJA_BUILD + NINJA_BUILD := $(shell $(NINJA_BIN) --version 2>/dev/null) + + ifndef NINJA_BUILD + NINJA_BIN := ninja-build + NINJA_BUILD := $(shell $(NINJA_BIN) --version 2>/dev/null) + endif +endif + +ifdef NINJA_BUILD + PX4_CMAKE_GENERATOR := Ninja + PX4_MAKE := $(NINJA_BIN) + + ifdef VERBOSE + PX4_MAKE_ARGS := -v + else + PX4_MAKE_ARGS := + endif +else + ifdef SYSTEMROOT + # Windows + PX4_CMAKE_GENERATOR := "MSYS\ Makefiles" + else + PX4_CMAKE_GENERATOR := "Unix\ Makefiles" + endif + PX4_MAKE = $(MAKE) + PX4_MAKE_ARGS = -j$(j) --no-print-directory +endif + +SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +# Functions +# -------------------------------------------------------------------- +# describe how to build a cmake config +define cmake-build ++@$(eval BUILD_DIR = $(SRC_DIR)/build/$@$(BUILD_DIR_SUFFIX)) ++@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(BUILD_DIR)/Makefile ]; then rm -rf $(BUILD_DIR); fi ++@if [ ! -e $(BUILD_DIR)/CMakeCache.txt ]; then mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && cmake $(2) -G"$(PX4_CMAKE_GENERATOR)" $(CMAKE_ARGS) $(3) $(4) $(5) || (rm -rf $(BUILD_DIR)); fi ++@(cd $(BUILD_DIR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) +endef + + +all: + @$(call cmake-build,$@,$(SRC_DIR)) + +# Documentation +# -------------------------------------------------------------------- +doxygen: + @$(call cmake-build,$@,$(SRC_DIR), "-DBUILD_DOXYGEN=ON") + @cmake --build $(SRC_DIR)/build/doxygen --target doxygen + +# Testing +# -------------------------------------------------------------------- + +.PHONY: test_build test + +test_build: + @$(call cmake-build,$@,$(SRC_DIR), "-DBUILD_TESTING=ON") + +test: test_build + @cmake --build $(SRC_DIR)/build/test_build --target check + +test_build_asan: + @$(call cmake-build,$@,$(SRC_DIR), "-DECL_ASAN=ON", "-DBUILD_TESTING=ON") + +test_asan: test_build_asan + @cmake --build $(SRC_DIR)/build/test_build_asan --target check + +# Code coverage +# -------------------------------------------------------------------- + +coverage_build: + @$(call cmake-build,$@,$(SRC_DIR), "-DCMAKE_BUILD_TYPE=Coverage", "-DBUILD_TESTING=ON") + +coverage: coverage_build + @cmake --build $(SRC_DIR)/build/coverage_build --target coverage + +coverage_html: coverage_build + @cmake --build $(SRC_DIR)/build/coverage_build --target coverage_html + +coverage_html_view: coverage_build + @cmake --build $(SRC_DIR)/build/coverage_build --target coverage_html_view + +# Code formatting +# -------------------------------------------------------------------- +.PHONY: check_format format clang-format + +clang-format: + @echo -e ${BLUE}Check clang-format-6.0 installation${NC} + @if ! hash clang-format-6.0; then sudo apt install clang-format-6.0 -y; fi + +check_format: clang-format + @echo -e ${BLUE}Checking formatting with clang-format${NC} + @$(SRC_DIR)/tools/format.sh 0 + +format: clang-format + @echo -e ${BLUE}Formatting with clang-format${NC} + @$(SRC_DIR)/tools/format.sh 1 + +# Cleanup +# -------------------------------------------------------------------- +.PHONY: clean distclean + +clean: + @rm -rf $(SRC_DIR)/build + +distclean: + @git clean -ff -x -d . + diff --git a/src/lib/ecl/README.md b/src/lib/ecl/README.md new file mode 100644 index 0000000000..19ea0b29a4 --- /dev/null +++ b/src/lib/ecl/README.md @@ -0,0 +1,61 @@ +# ECL + +**Very lightweight Estimation & Control Library.** + +[![DOI](https://zenodo.org/badge/22634/PX4/PX4-ECL.svg)](https://zenodo.org/badge/latestdoi/22634/PX4/PX4-ECL) + +This library solves the estimation & control problems of a number of robots and drones. It accepts GPS, vision and inertial sensor inputs. It is extremely lightweight and efficient and yet has the rugged field-proven performance. + +The library is BSD 3-clause licensed. + +## EKF Documentation + + * [EKF Documentation and Tuning Guide](https://docs.px4.io/master/en/advanced_config/tuning_the_ecl_ekf.html) + +## Building EKF + +### Prerequisites: + + * Matrix: A lightweight, BSD-licensed matrix math library: https://github.com/px4/matrix - it is automatically included as submodule. + + +By following the steps mentioned below you can create a static library which can be included in projects: + +``` +make +// OR +mkdir build/ +cd build/ +cmake .. +make +``` + +## Testing ECL +By following the steps you can run the unit tests + +``` +make test +``` +### Change Indicator / Unit Tests +Change indication is the concept of running the EKF on different data-sets and compare the state of the EKF to a previous version. If a contributor makes a functional change that is run during the change_indication tests, this will produce a different output of the EKF's state. As the tests are run in CI, this checks if a contributor forgot to run the checks themselves and add the [new EKF's state outputs](https://github.com/PX4/ecl/blob/master/test/change_indication/iris_gps.csv) to the pull request. + +The unit tests include a check to see if the pull request results in a difference to the [output data csv file](https://github.com/PX4/ecl/blob/master/test/change_indication/iris_gps.csv) when replaying the [sensor data csv file](https://github.com/PX4/ecl/blob/master/test/replay_data/iris_gps.csv). If a pull request results in an expected difference, then it is important that the output reference file be re-generated and included as part of the pull request. A non-functional pull request should not result in changes to this file, however the default test case does not exercise all sensor types so this test passing is a necessary, but not sufficient requirement for a non-functional pull request. + +The functionality that supports this test consists of: +* Python scripts that extract sensor data from ulog files and writes them to a sensor data csv file. The default [sensor data csv file](https://github.com/PX4/ecl/blob/master/test/replay_data/iris_gps.csv) used by the unit test was generated from a ulog created from an iris SITL flight. +* A [script file](https://github.com/PX4/ecl/blob/master/test/test_EKF_withReplayData.cpp) using functionality provided by the [sensor simulator](https://github.com/PX4/ecl/blob/master/test/sensor_simulator/sensor_simulator.cpp), that loads sensor data from the [sensor data csv file](https://github.com/PX4/ecl/blob/master/test/replay_data/iris_gps.csv) , replays the EKF with it and logs the EKF's state and covariance data to the [output data csv file](https://github.com/PX4/ecl/blob/master/test/replay_data/iris_gps.csv). +* CI action that checks if the logs of the test running with replay data is changing. This helps to see if there are functional changes. + +#### How to run the Change Indicator test during development on your own logs: + +* create sensor_data.csv file from ulog file 'cd test/sensor_simulator/ +python3 createSensorDataFile.py ../replay_data/.csv' +* Setup the test file to use the EKF with the created sensor data by copy&paste an existing test case in [test/test_EKF_withReplayData.cpp](https://github.com/PX4/ecl/blob/master/test/test_EKF_withReplayData.cpp) and adapt the paths to load the right sensor data and write it to the right place, eg +_sensor_simulator.loadSensorDataFromFile("../../../test/replay_data/.csv"); +_ekf_logger.setFilePath("../../../test/change_indication/.csv"); +* You can feed the EKF with the data in the csv file, by running '_sensor_simulator.runReplaySeconds(duration_in_seconds)'. Be aware that replay sensor data will only be available when the corresponding sensor simulation are running. By default only imu, baro and mag sensor simulators are running. You can start a sensor simulation by calling _sensor_simulator._.start(). Be also aware that you still have to setup the EKF yourself. This includes setting the bit mask (fusion_mode in common.h) according to what you intend to fuse. +* In between _sensor_simulator.runReplaySeconds(duration_in_seconds) calls, write the state and covariances to the change_indication file by including a _ekf_logger.writeStateToFile(); line. +* Run the EKF with your data and all the other tests by running 'make test' from the ecl directory. The [default output data csv file](https://github.com/PX4/ecl/blob/master/test/change_indication/iris_gps.csv) changes can then be included in the PR if differences are causing the CI test to fail. + +#### Known Issues +If compiler versions other than GCC 7.5 are used to generate the output data file, then is is possible that the file will cause CI failures due to small numerical differences to file generated by the CI test. diff --git a/src/lib/ecl/airdata/CMakeLists.txt b/src/lib/ecl/airdata/CMakeLists.txt new file mode 100644 index 0000000000..38fda5b8df --- /dev/null +++ b/src/lib/ecl/airdata/CMakeLists.txt @@ -0,0 +1,39 @@ +############################################################################ +# +# Copyright (c) 2018 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(ecl_airdata + WindEstimator.cpp + ) +add_dependencies(ecl_airdata prebuild_targets) +target_compile_definitions(ecl_airdata PRIVATE -DMODULE_NAME="ecl/airdata") +target_include_directories(ecl_airdata PUBLIC ${ECL_SOURCE_DIR}) \ No newline at end of file diff --git a/src/lib/ecl/airdata/WindEstimator.cpp b/src/lib/ecl/airdata/WindEstimator.cpp new file mode 100644 index 0000000000..f755893b58 --- /dev/null +++ b/src/lib/ecl/airdata/WindEstimator.cpp @@ -0,0 +1,366 @@ +/**************************************************************************** + * + * Copyright (c) 2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file WindEstimator.cpp + * A wind and airspeed scale estimator. + */ + +#include "WindEstimator.hpp" + +bool +WindEstimator::initialise(const matrix::Vector3f &velI, const matrix::Vector2f &velIvar, const float tas_meas) +{ + // do no initialise if ground velocity is low + // this should prevent the filter from initialising on the ground + if (sqrtf(velI(0) * velI(0) + velI(1) * velI(1)) < 3.0f) { + return false; + } + + const float v_n = velI(0); + const float v_e = velI(1); + + // estimate heading from ground velocity + const float heading_est = atan2f(v_e, v_n); + + // initilaise wind states assuming zero side slip and horizontal flight + _state(INDEX_W_N) = velI(INDEX_W_N) - tas_meas * cosf(heading_est); + _state(INDEX_W_E) = velI(INDEX_W_E) - tas_meas * sinf(heading_est); + _state(INDEX_TAS_SCALE) = 1.0f; + + // compute jacobian of states wrt north/each earth velocity states and true airspeed measurement + float L0 = v_e * v_e; + float L1 = v_n * v_n; + float L2 = L0 + L1; + float L3 = tas_meas / (L2 * sqrtf(L2)); + float L4 = L3 * v_e * v_n + 1.0f; + float L5 = 1.0f / sqrtf(L2); + float L6 = -L5 * tas_meas; + + matrix::Matrix3f L; + L.setZero(); + L(0, 0) = L4; + L(0, 1) = L0 * L3 + L6; + L(1, 0) = L1 * L3 + L6; + L(1, 1) = L4; + L(2, 2) = 1.0f; + + // get an estimate of the state covariance matrix given the estimated variance of ground velocity + // and measured airspeed + _P.setZero(); + _P(INDEX_W_N, INDEX_W_N) = velIvar(0); + _P(INDEX_W_E, INDEX_W_E) = velIvar(1); + _P(INDEX_TAS_SCALE, INDEX_TAS_SCALE) = 0.0001f; + + _P = L * _P * L.transpose(); + + // reset the timestamp for measurement rejection + _time_rejected_tas = 0; + _time_rejected_beta = 0; + + _wind_estimator_reset = true; + + return true; +} + +void +WindEstimator::update(uint64_t time_now) +{ + if (!_initialised) { + return; + } + + // set reset state to false (is set to true when initialise fuction is called later) + _wind_estimator_reset = false; + + // run covariance prediction at 1Hz + if (time_now - _time_last_update < 1000 * 1000 || _time_last_update == 0) { + if (_time_last_update == 0) { + _time_last_update = time_now; + } + + return; + } + + float dt = (float)(time_now - _time_last_update) * 1e-6f; + _time_last_update = time_now; + + float q_w = _wind_p_var; + float q_k_tas = _tas_scale_p_var; + + float SPP0 = dt * dt; + float SPP1 = SPP0 * q_w; + float SPP2 = SPP1 + _P(0, 1); + + matrix::Matrix3f P_next; + + P_next(0, 0) = SPP1 + _P(0, 0); + P_next(0, 1) = SPP2; + P_next(0, 2) = _P(0, 2); + P_next(1, 0) = SPP2; + P_next(1, 1) = SPP1 + _P(1, 1); + P_next(1, 2) = _P(1, 2); + P_next(2, 0) = _P(0, 2); + P_next(2, 1) = _P(1, 2); + P_next(2, 2) = SPP0 * q_k_tas + _P(2, 2); + _P = P_next; +} + +void +WindEstimator::fuse_airspeed(uint64_t time_now, const float true_airspeed, const matrix::Vector3f &velI, + const matrix::Vector2f &velIvar) +{ + matrix::Vector2f velIvar_constrained = { math::max(0.01f, velIvar(0)), math::max(0.01f, velIvar(1)) }; + + if (!_initialised) { + // try to initialise + _initialised = initialise(velI, velIvar_constrained, true_airspeed); + return; + } + + // don't fuse faster than 10Hz + if (time_now - _time_last_airspeed_fuse < 100 * 1000) { + return; + } + + _time_last_airspeed_fuse = time_now; + + // assign helper variables + const float v_n = velI(0); + const float v_e = velI(1); + const float v_d = velI(2); + + const float k_tas = _state(INDEX_TAS_SCALE); + + // compute kalman gain K + const float HH0 = sqrtf(v_d * v_d + (v_e - _state(INDEX_W_E)) * (v_e - _state(INDEX_W_E)) + (v_n - _state(INDEX_W_N)) * (v_n - _state(INDEX_W_N))); + const float HH1 = k_tas / HH0; + + matrix::Matrix H_tas; + H_tas(0, 0) = HH1 * (-v_n + _state(INDEX_W_N)); + H_tas(0, 1) = HH1 * (-v_e + _state(INDEX_W_E)); + H_tas(0, 2) = HH0; + + matrix::Matrix K = _P * H_tas.transpose(); + + const matrix::Matrix S = H_tas * _P * H_tas.transpose() + _tas_var; + + K /= S(0,0); + // compute innovation + const float airspeed_pred = k_tas * sqrtf((v_n - _state(INDEX_W_N)) * (v_n - _state(INDEX_W_N)) + (v_e - _state(INDEX_W_E)) * + (v_e - _state(INDEX_W_E)) + v_d * v_d); + + _tas_innov = true_airspeed - airspeed_pred; + + // innovation variance + _tas_innov_var = S(0,0); + + bool reinit_filter = false; + bool meas_is_rejected = false; + + meas_is_rejected = check_if_meas_is_rejected(time_now, _tas_innov, _tas_innov_var, _tas_gate, _time_rejected_tas, reinit_filter); + + reinit_filter |= _tas_innov_var < 0.0f; + + if (meas_is_rejected || reinit_filter) { + if (reinit_filter) { + _initialised = initialise(velI, matrix::Vector2f(0.1f, 0.1f), true_airspeed); + } + + // we either did a filter reset or the current measurement was rejected so do not fuse + return; + } + + // apply correction to state + _state(INDEX_W_N) += _tas_innov * K(0, 0); + _state(INDEX_W_E) += _tas_innov * K(1, 0); + _state(INDEX_TAS_SCALE) += _tas_innov * K(2, 0); + + // update covariance matrix + _P = _P - K * H_tas * _P; + + run_sanity_checks(); +} + +void +WindEstimator::fuse_beta(uint64_t time_now, const matrix::Vector3f &velI, const matrix::Quatf &q_att) +{ + if (!_initialised) { + _initialised = initialise(velI, matrix::Vector2f(0.1f, 0.1f), velI.length()); + return; + } + + // don't fuse faster than 10Hz + if (time_now - _time_last_beta_fuse < 100 * 1000) { + return; + } + + _time_last_beta_fuse = time_now; + + const float v_n = velI(0); + const float v_e = velI(1); + const float v_d = velI(2); + + // compute sideslip observation vector + float HB0 = 2.0f * q_att(0); + float HB1 = HB0 * q_att(3); + float HB2 = 2.0f * q_att(1); + float HB3 = HB2 * q_att(2); + float HB4 = v_e - _state(INDEX_W_E); + float HB5 = HB1 + HB3; + float HB6 = v_n - _state(INDEX_W_N); + float HB7 = q_att(0) * q_att(0); + float HB8 = q_att(3) * q_att(3); + float HB9 = HB7 - HB8; + float HB10 = q_att(1) * q_att(1); + float HB11 = q_att(2) * q_att(2); + float HB12 = HB10 - HB11; + float HB13 = HB12 + HB9; + float HB14 = HB13 * HB6 + HB4 * HB5 + v_d * (-HB0 * q_att(2) + HB2 * q_att(3)); + float HB15 = 1.0f / HB14; + float HB16 = (HB4 * (-HB10 + HB11 + HB9) + HB6 * (-HB1 + HB3) + v_d * (HB0 * q_att(1) + 2.0f * q_att(2) * q_att(3))) / + (HB14 * HB14); + + matrix::Matrix H_beta; + H_beta(0, 0) = HB13 * HB16 + HB15 * (HB1 - HB3); + H_beta(0, 1) = HB15 * (HB12 - HB7 + HB8) + HB16 * HB5; + H_beta(0, 2) = 0; + + // compute kalman gain + matrix::Matrix K = _P * H_beta.transpose(); + + const matrix::Matrix S = H_beta * _P * H_beta.transpose() + _beta_var; + + K /= S(0,0); + + // compute predicted side slip angle + matrix::Vector3f rel_wind(velI(0) - _state(INDEX_W_N), velI(1) - _state(INDEX_W_E), velI(2)); + matrix::Dcmf R_body_to_earth(q_att); + rel_wind = R_body_to_earth.transpose() * rel_wind; + + if (fabsf(rel_wind(0)) < 0.1f) { + return; + } + + // use small angle approximation, sin(x) = x for small x + const float beta_pred = rel_wind(1) / rel_wind(0); + + _beta_innov = 0.0f - beta_pred; + _beta_innov_var = S(0,0); + + bool reinit_filter = false; + bool meas_is_rejected = false; + + meas_is_rejected = check_if_meas_is_rejected(time_now, _beta_innov, _beta_innov_var, _beta_gate, _time_rejected_beta, + reinit_filter); + + reinit_filter |= _beta_innov_var < 0.0f; + + if (meas_is_rejected || reinit_filter) { + if (reinit_filter) { + _initialised = initialise(velI, matrix::Vector2f(0.1f, 0.1f), velI.length()); + } + + // we either did a filter reset or the current measurement was rejected so do not fuse + return; + } + + // apply correction to state + _state(INDEX_W_N) += _beta_innov * K(0, 0); + _state(INDEX_W_E) += _beta_innov * K(1, 0); + _state(INDEX_TAS_SCALE) += _beta_innov * K(2, 0); + + // update covariance matrix + _P = _P - K * H_beta * _P; + + run_sanity_checks(); +} + +void +WindEstimator::run_sanity_checks() +{ + for (unsigned i = 0; i < 3; i++) { + if (_P(i, i) < 0.0f) { + // ill-conditioned covariance matrix, reset filter + _initialised = false; + return; + } + + // limit covariance diagonals if they grow too large + if (i < 2) { + _P(i, i) = _P(i, i) > 25.0f ? 25.0f : _P(i, i); + + } else if (i == 2) { + _P(i, i) = _P(i, i) > 0.1f ? 0.1f : _P(i, i); + } + } + + if (!ISFINITE(_state(INDEX_W_N)) || !ISFINITE(_state(INDEX_W_E)) || !ISFINITE(_state(INDEX_TAS_SCALE))) { + _initialised = false; + return; + } + + // check if we should inhibit learning of airspeed scale factor and rather use a pre-set value. + // airspeed scale factor errors arise from sensor installation which does not change and only needs + // to be computed once for a perticular installation. + if (_enforced_airspeed_scale < 0) { + _state(INDEX_TAS_SCALE) = math::max(0.0f, _state(INDEX_TAS_SCALE)); + } else { + _state(INDEX_TAS_SCALE) = _enforced_airspeed_scale; + } + + // attain symmetry + for (unsigned row = 0; row < 3; row++) { + for (unsigned column = 0; column < row; column++) { + float tmp = (_P(row, column) + _P(column, row)) / 2; + _P(row, column) = tmp; + _P(column, row) = tmp; + } + } +} + +bool +WindEstimator::check_if_meas_is_rejected(uint64_t time_now, float innov, float innov_var, uint8_t gate_size, + uint64_t &time_meas_rejected, bool &reinit_filter) +{ + if (innov * innov > gate_size * gate_size * innov_var) { + time_meas_rejected = time_meas_rejected == 0 ? time_now : time_meas_rejected; + + } else { + time_meas_rejected = 0; + } + + reinit_filter = time_now - time_meas_rejected > 5 * 1000 * 1000 && time_meas_rejected != 0; + + return time_meas_rejected != 0; +} diff --git a/src/lib/ecl/airdata/WindEstimator.hpp b/src/lib/ecl/airdata/WindEstimator.hpp new file mode 100644 index 0000000000..0f38a41e87 --- /dev/null +++ b/src/lib/ecl/airdata/WindEstimator.hpp @@ -0,0 +1,136 @@ +/**************************************************************************** + * + * Copyright (c) 2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file WindEstimator.hpp + * A wind and airspeed scale estimator. + */ + +#pragma once + +#include +#include +#include + +class WindEstimator +{ +public: + WindEstimator() = default; + ~WindEstimator() = default; + + // no copy, assignment, move, move assignment + WindEstimator(const WindEstimator &) = delete; + WindEstimator &operator=(const WindEstimator &) = delete; + WindEstimator(WindEstimator &&) = delete; + WindEstimator &operator=(WindEstimator &&) = delete; + + void update(uint64_t time_now); + + void fuse_airspeed(uint64_t time_now, float true_airspeed, const matrix::Vector3f &velI, + const matrix::Vector2f &velIvar); + void fuse_beta(uint64_t time_now, const matrix::Vector3f &velI, const matrix::Quatf &q_att); + + void get_wind(float wind[2]) + { + wind[0] = _state(INDEX_W_N); + wind[1] = _state(INDEX_W_E); + } + + bool is_estimate_valid() { return _initialised; } + + bool check_if_meas_is_rejected(uint64_t time_now, float innov, float innov_var, uint8_t gate_size, + uint64_t &time_meas_rejected, bool &reinit_filter); + + float get_tas_scale() { return _state(INDEX_TAS_SCALE); } + float get_tas_innov() { return _tas_innov; } + float get_tas_innov_var() { return _tas_innov_var; } + float get_beta_innov() { return _beta_innov; } + float get_beta_innov_var() { return _beta_innov_var; } + void get_wind_var(float wind_var[2]) + { + wind_var[0] = _P(0, 0); + wind_var[1] = _P(1, 1); + } + bool get_wind_estimator_reset() { return _wind_estimator_reset; } + + void set_wind_p_noise(float wind_sigma) { _wind_p_var = wind_sigma * wind_sigma; } + void set_tas_scale_p_noise(float tas_scale_sigma) { _tas_scale_p_var = tas_scale_sigma * tas_scale_sigma; } + void set_tas_noise(float tas_sigma) { _tas_var = tas_sigma * tas_sigma; } + void set_beta_noise(float beta_var) { _beta_var = beta_var * beta_var; } + void set_tas_gate(uint8_t gate_size) {_tas_gate = gate_size; } + void set_beta_gate(uint8_t gate_size) {_beta_gate = gate_size; } + + // Inhibit learning of the airspeed scale factor and force the estimator to use _enforced_airspeed_scale as scale factor. + // Negative input values enable learning of the airspeed scale factor. + void enforce_airspeed_scale(float scale) {_enforced_airspeed_scale = scale; } + +private: + enum { + INDEX_W_N = 0, + INDEX_W_E, + INDEX_TAS_SCALE + }; ///< enum which can be used to access state. + + matrix::Vector3f _state; ///< state vector + matrix::Matrix3f _P; ///< state covariance matrix + + float _tas_innov{0.0f}; ///< true airspeed innovation + float _tas_innov_var{0.0f}; ///< true airspeed innovation variance + + float _beta_innov{0.0f}; ///< sideslip innovation + float _beta_innov_var{0.0f}; ///< sideslip innovation variance + + bool _initialised{false}; ///< True: filter has been initialised + + float _wind_p_var{0.1f}; ///< wind process noise variance + float _tas_scale_p_var{0.0001f}; ///< true airspeed scale process noise variance + float _tas_var{1.4f}; ///< true airspeed measurement noise variance + float _beta_var{0.5f}; ///< sideslip measurement noise variance + uint8_t _tas_gate{3}; ///< airspeed fusion gate size + uint8_t _beta_gate{1}; ///< sideslip fusion gate size + + uint64_t _time_last_airspeed_fuse = 0; ///< timestamp of last airspeed fusion + uint64_t _time_last_beta_fuse = 0; ///< timestamp of last sideslip fusion + uint64_t _time_last_update = 0; ///< timestamp of last covariance prediction + uint64_t _time_rejected_beta = 0; ///< timestamp of when sideslip measurements have consistently started to be rejected + uint64_t _time_rejected_tas = + 0; /// +#include + +#define ecl_absolute_time hrt_absolute_time +#define ecl_elapsed_time hrt_elapsed_time +using ecl_abstime = hrt_abstime; + +#if defined(__PX4_NUTTX) +# define ECL_INFO PX4_DEBUG +# define ECL_WARN PX4_DEBUG +# define ECL_ERR PX4_DEBUG +#else +# define ECL_INFO PX4_INFO +# define ECL_WARN PX4_WARN +# define ECL_ERR PX4_ERR +#endif + +#elif defined(__PAPARAZZI) + +#include "std.h" + +#define ecl_absolute_time() (0) +#define ecl_elapsed_time(t) (*t * 0UL) // TODO: add simple time functions + +using ecl_abstime = uint64_t; + +#define ECL_INFO(...) +#define ECL_WARN(...) +#define ECL_ERR(...) + +#else + +#include +#include + +#define ecl_absolute_time() (0) +#define ecl_elapsed_time(t) (*t * 0UL) // TODO: add simple time functions + +using ecl_abstime = uint64_t; + +#define ECL_INFO(X, ...) printf(X "\n", ##__VA_ARGS__) +#define ECL_WARN(X, ...) fprintf(stderr, X "\n", ##__VA_ARGS__) +#define ECL_ERR(X, ...) fprintf(stderr, X "\n", ##__VA_ARGS__) + +#endif /* PX4_POSIX || PX4_NUTTX */ + +#include +#define ISFINITE(x) __builtin_isfinite(x) diff --git a/src/lib/ecl/geo/CMakeLists.txt b/src/lib/ecl/geo/CMakeLists.txt new file mode 100644 index 0000000000..d01a9d6497 --- /dev/null +++ b/src/lib/ecl/geo/CMakeLists.txt @@ -0,0 +1,40 @@ +############################################################################ +# +# Copyright (c) 2018 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(ecl_geo + geo.cpp + ) +add_dependencies(ecl_geo prebuild_targets) +target_compile_definitions(ecl_geo PRIVATE -DMODULE_NAME="ecl/geo") +target_include_directories(ecl_geo PUBLIC ${ECL_SOURCE_DIR}) +target_link_libraries(ecl_geo PRIVATE m) diff --git a/src/lib/ecl/geo/geo.cpp b/src/lib/ecl/geo/geo.cpp new file mode 100644 index 0000000000..ec9e6713f9 --- /dev/null +++ b/src/lib/ecl/geo/geo.cpp @@ -0,0 +1,442 @@ +/**************************************************************************** + * + * Copyright (c) 2012-2014 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file geo.c + * + * Geo / math functions to perform geodesic calculations + * + * @author Thomas Gubler + * @author Julian Oes + * @author Lorenz Meier + * @author Anton Babushkin + */ + +#include "geo.h" +#include + +#include +#include +#include + +using matrix::wrap_pi; +using matrix::wrap_2pi; + +/* + * Azimuthal Equidistant Projection + * formulas according to: http://mathworld.wolfram.com/AzimuthalEquidistantProjection.html + */ + +bool map_projection_initialized(const struct map_projection_reference_s *ref) +{ + return ref->init_done; +} + +uint64_t map_projection_timestamp(const struct map_projection_reference_s *ref) +{ + return ref->timestamp; +} + +// lat_0, lon_0 are expected to be in correct format: -> 47.1234567 and not 471234567 +int map_projection_init_timestamped(struct map_projection_reference_s *ref, double lat_0, double lon_0, uint64_t timestamp) +{ + ref->lat_rad = math::radians(lat_0); + ref->lon_rad = math::radians(lon_0); + ref->sin_lat = sin(ref->lat_rad); + ref->cos_lat = cos(ref->lat_rad); + + ref->timestamp = timestamp; + ref->init_done = true; + + return 0; +} + +//lat_0, lon_0 are expected to be in correct format: -> 47.1234567 and not 471234567 +int map_projection_init(struct map_projection_reference_s *ref, double lat_0, double lon_0) +{ + return map_projection_init_timestamped(ref, lat_0, lon_0, ecl_absolute_time()); +} + +int map_projection_reference(const struct map_projection_reference_s *ref, double *ref_lat_rad, double *ref_lon_rad) +{ + if (!map_projection_initialized(ref)) { + return -1; + } + + *ref_lat_rad = ref->lat_rad; + *ref_lon_rad = ref->lon_rad; + + return 0; +} + +int map_projection_project(const struct map_projection_reference_s *ref, double lat, double lon, float *x, float *y) +{ + if (!map_projection_initialized(ref)) { + return -1; + } + + const double lat_rad = math::radians(lat); + const double lon_rad = math::radians(lon); + + const double sin_lat = sin(lat_rad); + const double cos_lat = cos(lat_rad); + + const double cos_d_lon = cos(lon_rad - ref->lon_rad); + + const double arg = math::constrain(ref->sin_lat * sin_lat + ref->cos_lat * cos_lat * cos_d_lon, -1.0, 1.0); + const double c = acos(arg); + + double k = 1.0; + + if (fabs(c) > 0) { + k = (c / sin(c)); + } + + *x = static_cast(k * (ref->cos_lat * sin_lat - ref->sin_lat * cos_lat * cos_d_lon) * CONSTANTS_RADIUS_OF_EARTH); + *y = static_cast(k * cos_lat * sin(lon_rad - ref->lon_rad) * CONSTANTS_RADIUS_OF_EARTH); + + return 0; +} + +int map_projection_reproject(const struct map_projection_reference_s *ref, float x, float y, double *lat, double *lon) +{ + if (!map_projection_initialized(ref)) { + return -1; + } + + const double x_rad = (double)x / CONSTANTS_RADIUS_OF_EARTH; + const double y_rad = (double)y / CONSTANTS_RADIUS_OF_EARTH; + const double c = sqrt(x_rad * x_rad + y_rad * y_rad); + + if (fabs(c) > 0) { + const double sin_c = sin(c); + const double cos_c = cos(c); + + const double lat_rad = asin(cos_c * ref->sin_lat + (x_rad * sin_c * ref->cos_lat) / c); + const double lon_rad = (ref->lon_rad + atan2(y_rad * sin_c, c * ref->cos_lat * cos_c - x_rad * ref->sin_lat * sin_c)); + + *lat = math::degrees(lat_rad); + *lon = math::degrees(lon_rad); + + } else { + *lat = math::degrees(ref->lat_rad); + *lon = math::degrees(ref->lon_rad); + } + + return 0; +} + +float get_distance_to_next_waypoint(double lat_now, double lon_now, double lat_next, double lon_next) +{ + const double lat_now_rad = math::radians(lat_now); + const double lat_next_rad = math::radians(lat_next); + + const double d_lat = lat_next_rad - lat_now_rad; + const double d_lon = math::radians(lon_next) - math::radians(lon_now); + + const double a = sin(d_lat / 2.0) * sin(d_lat / 2.0) + sin(d_lon / 2.0) * sin(d_lon / 2.0) * cos(lat_now_rad) * cos(lat_next_rad); + + const double c = atan2(sqrt(a), sqrt(1.0 - a)); + + return static_cast(CONSTANTS_RADIUS_OF_EARTH * 2.0 * c); +} + +void create_waypoint_from_line_and_dist(double lat_A, double lon_A, double lat_B, double lon_B, float dist, + double *lat_target, double *lon_target) +{ + if (fabsf(dist) < FLT_EPSILON) { + *lat_target = lat_A; + *lon_target = lon_A; + } else { + float heading = get_bearing_to_next_waypoint(lat_A, lon_A, lat_B, lon_B); + waypoint_from_heading_and_distance(lat_A, lon_A, heading, dist, lat_target, lon_target); + } +} + +void waypoint_from_heading_and_distance(double lat_start, double lon_start, float bearing, float dist, + double *lat_target, double *lon_target) +{ + bearing = wrap_2pi(bearing); + double radius_ratio = static_cast(dist) / CONSTANTS_RADIUS_OF_EARTH; + + double lat_start_rad = math::radians(lat_start); + double lon_start_rad = math::radians(lon_start); + + *lat_target = asin(sin(lat_start_rad) * cos(radius_ratio) + cos(lat_start_rad) * sin(radius_ratio) * cos((double)bearing)); + *lon_target = lon_start_rad + atan2(sin((double)bearing) * sin(radius_ratio) * cos(lat_start_rad), + cos(radius_ratio) - sin(lat_start_rad) * sin(*lat_target)); + + *lat_target = math::degrees(*lat_target); + *lon_target = math::degrees(*lon_target); +} + +float get_bearing_to_next_waypoint(double lat_now, double lon_now, double lat_next, double lon_next) +{ + const double lat_now_rad = math::radians(lat_now); + const double lat_next_rad = math::radians(lat_next); + + const double cos_lat_next = cos(lat_next_rad); + const double d_lon = math::radians(lon_next - lon_now); + + /* conscious mix of double and float trig function to maximize speed and efficiency */ + + const float y = static_cast(sin(d_lon) * cos_lat_next); + const float x = static_cast(cos(lat_now_rad) * sin(lat_next_rad) - sin(lat_now_rad) * cos_lat_next * cos(d_lon)); + + return wrap_pi(atan2f(y, x)); +} + +void +get_vector_to_next_waypoint(double lat_now, double lon_now, double lat_next, double lon_next, float *v_n, float *v_e) +{ + const double lat_now_rad = math::radians(lat_now); + const double lat_next_rad = math::radians(lat_next); + const double d_lon = math::radians(lon_next) - math::radians(lon_now); + + /* conscious mix of double and float trig function to maximize speed and efficiency */ + *v_n = static_cast(CONSTANTS_RADIUS_OF_EARTH * (cos(lat_now_rad) * sin(lat_next_rad) - sin(lat_now_rad) * cos(lat_next_rad) * cos(d_lon))); + *v_e = static_cast(CONSTANTS_RADIUS_OF_EARTH * sin(d_lon) * cos(lat_next_rad)); +} + +void +get_vector_to_next_waypoint_fast(double lat_now, double lon_now, double lat_next, double lon_next, float *v_n, float *v_e) +{ + double lat_now_rad = math::radians(lat_now); + double lon_now_rad = math::radians(lon_now); + double lat_next_rad = math::radians(lat_next); + double lon_next_rad = math::radians(lon_next); + + double d_lat = lat_next_rad - lat_now_rad; + double d_lon = lon_next_rad - lon_now_rad; + + /* conscious mix of double and float trig function to maximize speed and efficiency */ + *v_n = static_cast(CONSTANTS_RADIUS_OF_EARTH * d_lat); + *v_e = static_cast(CONSTANTS_RADIUS_OF_EARTH * d_lon * cos(lat_now_rad)); +} + +void add_vector_to_global_position(double lat_now, double lon_now, float v_n, float v_e, double *lat_res, double *lon_res) +{ + double lat_now_rad = math::radians(lat_now); + double lon_now_rad = math::radians(lon_now); + + *lat_res = math::degrees(lat_now_rad + (double)v_n / CONSTANTS_RADIUS_OF_EARTH); + *lon_res = math::degrees(lon_now_rad + (double)v_e / (CONSTANTS_RADIUS_OF_EARTH * cos(lat_now_rad))); +} + +// Additional functions - @author Doug Weibel + +int get_distance_to_line(struct crosstrack_error_s *crosstrack_error, double lat_now, double lon_now, + double lat_start, double lon_start, double lat_end, double lon_end) +{ + // This function returns the distance to the nearest point on the track line. Distance is positive if current + // position is right of the track and negative if left of the track as seen from a point on the track line + // headed towards the end point. + + int return_value = -1; // Set error flag, cleared when valid result calculated. + crosstrack_error->past_end = false; + crosstrack_error->distance = 0.0f; + crosstrack_error->bearing = 0.0f; + + float dist_to_end = get_distance_to_next_waypoint(lat_now, lon_now, lat_end, lon_end); + + // Return error if arguments are bad + if (dist_to_end < 0.1f) { + return -1; + } + + float bearing_end = get_bearing_to_next_waypoint(lat_now, lon_now, lat_end, lon_end); + float bearing_track = get_bearing_to_next_waypoint(lat_start, lon_start, lat_end, lon_end); + float bearing_diff = wrap_pi(bearing_track - bearing_end); + + // Return past_end = true if past end point of line + if (bearing_diff > M_PI_2_F || bearing_diff < -M_PI_2_F) { + crosstrack_error->past_end = true; + return_value = 0; + return return_value; + } + + crosstrack_error->distance = (dist_to_end) * sinf(bearing_diff); + + if (sinf(bearing_diff) >= 0) { + crosstrack_error->bearing = wrap_pi(bearing_track - M_PI_2_F); + + } else { + crosstrack_error->bearing = wrap_pi(bearing_track + M_PI_2_F); + } + + return_value = 0; + + return return_value; +} + +int get_distance_to_arc(struct crosstrack_error_s *crosstrack_error, double lat_now, double lon_now, + double lat_center, double lon_center, + float radius, float arc_start_bearing, float arc_sweep) +{ + // This function returns the distance to the nearest point on the track arc. Distance is positive if current + // position is right of the arc and negative if left of the arc as seen from the closest point on the arc and + // headed towards the end point. + + // Determine if the current position is inside or outside the sector between the line from the center + // to the arc start and the line from the center to the arc end + float bearing_sector_start = 0.0f; + float bearing_sector_end = 0.0f; + float bearing_now = get_bearing_to_next_waypoint(lat_now, lon_now, lat_center, lon_center); + + int return_value = -1; // Set error flag, cleared when valid result calculated. + crosstrack_error->past_end = false; + crosstrack_error->distance = 0.0f; + crosstrack_error->bearing = 0.0f; + + // Return error if arguments are bad + if (radius < 0.1f) { + return return_value; + } + + if (arc_sweep >= 0.0f) { + bearing_sector_start = arc_start_bearing; + bearing_sector_end = arc_start_bearing + arc_sweep; + + if (bearing_sector_end > 2.0f * M_PI_F) { bearing_sector_end -= (2 * M_PI_F); } + + } else { + bearing_sector_end = arc_start_bearing; + bearing_sector_start = arc_start_bearing - arc_sweep; + + if (bearing_sector_start < 0.0f) { bearing_sector_start += (2 * M_PI_F); } + } + + bool in_sector = false; + + // Case where sector does not span zero + if (bearing_sector_end >= bearing_sector_start && bearing_now >= bearing_sector_start + && bearing_now <= bearing_sector_end) { + + in_sector = true; + } + + // Case where sector does span zero + if (bearing_sector_end < bearing_sector_start && (bearing_now > bearing_sector_start + || bearing_now < bearing_sector_end)) { + + in_sector = true; + } + + // If in the sector then calculate distance and bearing to closest point + if (in_sector) { + crosstrack_error->past_end = false; + float dist_to_center = get_distance_to_next_waypoint(lat_now, lon_now, lat_center, lon_center); + + if (dist_to_center <= radius) { + crosstrack_error->distance = radius - dist_to_center; + crosstrack_error->bearing = bearing_now + M_PI_F; + + } else { + crosstrack_error->distance = dist_to_center - radius; + crosstrack_error->bearing = bearing_now; + } + + // If out of the sector then calculate dist and bearing to start or end point + + } else { + + // Use the approximation that 111,111 meters in the y direction is 1 degree (of latitude) + // and 111,111 * cos(latitude) meters in the x direction is 1 degree (of longitude) to + // calculate the position of the start and end points. We should not be doing this often + // as this function generally will not be called repeatedly when we are out of the sector. + + double start_disp_x = (double)radius * sin((double)arc_start_bearing); + double start_disp_y = (double)radius * cos((double)arc_start_bearing); + double end_disp_x = (double)radius * sin((double)wrap_pi(arc_start_bearing + arc_sweep)); + double end_disp_y = (double)radius * cos((double)wrap_pi(arc_start_bearing + arc_sweep)); + double lon_start = lon_now + start_disp_x / 111111.0; + double lat_start = lat_now + start_disp_y * cos(lat_now) / 111111.0; + double lon_end = lon_now + end_disp_x / 111111.0; + double lat_end = lat_now + end_disp_y * cos(lat_now) / 111111.0; + float dist_to_start = get_distance_to_next_waypoint(lat_now, lon_now, lat_start, lon_start); + float dist_to_end = get_distance_to_next_waypoint(lat_now, lon_now, lat_end, lon_end); + + if (dist_to_start < dist_to_end) { + crosstrack_error->distance = dist_to_start; + crosstrack_error->bearing = get_bearing_to_next_waypoint(lat_now, lon_now, lat_start, lon_start); + + } else { + crosstrack_error->past_end = true; + crosstrack_error->distance = dist_to_end; + crosstrack_error->bearing = get_bearing_to_next_waypoint(lat_now, lon_now, lat_end, lon_end); + } + } + + crosstrack_error->bearing = wrap_pi(crosstrack_error->bearing); + return_value = 0; + + return return_value; +} + +float get_distance_to_point_global_wgs84(double lat_now, double lon_now, float alt_now, + double lat_next, double lon_next, float alt_next, + float *dist_xy, float *dist_z) +{ + double current_x_rad = math::radians(lat_next); + double current_y_rad = math::radians(lon_next); + double x_rad = math::radians(lat_now); + double y_rad = math::radians(lon_now); + + double d_lat = x_rad - current_x_rad; + double d_lon = y_rad - current_y_rad; + + double a = sin(d_lat / 2.0) * sin(d_lat / 2.0) + sin(d_lon / 2.0) * sin(d_lon / 2.0) * cos(current_x_rad) * cos(x_rad); + double c = 2 * atan2(sqrt(a), sqrt(1 - a)); + + const float dxy = static_cast(CONSTANTS_RADIUS_OF_EARTH * c); + const float dz = static_cast(alt_now - alt_next); + + *dist_xy = fabsf(dxy); + *dist_z = fabsf(dz); + + return sqrtf(dxy * dxy + dz * dz); +} + +float mavlink_wpm_distance_to_point_local(float x_now, float y_now, float z_now, + float x_next, float y_next, float z_next, + float *dist_xy, float *dist_z) +{ + float dx = x_now - x_next; + float dy = y_now - y_next; + float dz = z_now - z_next; + + *dist_xy = sqrtf(dx * dx + dy * dy); + *dist_z = fabsf(dz); + + return sqrtf(dx * dx + dy * dy + dz * dz); +} diff --git a/src/lib/ecl/geo/geo.h b/src/lib/ecl/geo/geo.h new file mode 100644 index 0000000000..bc5383df5e --- /dev/null +++ b/src/lib/ecl/geo/geo.h @@ -0,0 +1,218 @@ +/**************************************************************************** + * + * Copyright (C) 2012, 2014 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file geo.h + * + * Definition of geo / math functions to perform geodesic calculations + * + * @author Thomas Gubler + * @author Julian Oes + * @author Lorenz Meier + * @author Anton Babushkin + * Additional functions - @author Doug Weibel + */ + +#pragma once + +#include +#include + +static constexpr float CONSTANTS_ONE_G = 9.80665f; // m/s^2 + +static constexpr float CONSTANTS_STD_PRESSURE_PA = 101325.0f; // pascals (Pa) +static constexpr float CONSTANTS_STD_PRESSURE_KPA = CONSTANTS_STD_PRESSURE_PA / 1000.0f; // kilopascals (kPa) +static constexpr float CONSTANTS_STD_PRESSURE_MBAR = CONSTANTS_STD_PRESSURE_PA / 100.0f; // Millibar (mbar) (1 mbar = 100 Pa) + +static constexpr float CONSTANTS_AIR_DENSITY_SEA_LEVEL_15C = 1.225f; // kg/m^3 +static constexpr float CONSTANTS_AIR_GAS_CONST = 287.1f; // J/(kg * K) +static constexpr float CONSTANTS_ABSOLUTE_NULL_CELSIUS = -273.15f; // °C + +static constexpr double CONSTANTS_RADIUS_OF_EARTH = 6371000; // meters (m) +static constexpr float CONSTANTS_RADIUS_OF_EARTH_F = CONSTANTS_RADIUS_OF_EARTH; // meters (m) + +static constexpr float CONSTANTS_EARTH_SPIN_RATE = 7.2921150e-5f; // radians/second (rad/s) + + +// XXX remove +struct crosstrack_error_s { + bool past_end; // Flag indicating we are past the end of the line/arc segment + float distance; // Distance in meters to closest point on line/arc + float bearing; // Bearing in radians to closest point on line/arc +} ; + +/* lat/lon are in radians */ +struct map_projection_reference_s { + uint64_t timestamp; + double lat_rad; + double lon_rad; + double sin_lat; + double cos_lat; + bool init_done; +}; + +/** + * Checks if projection given as argument was initialized + * @return true if map was initialized before, false else + */ +bool map_projection_initialized(const struct map_projection_reference_s *ref); + +/** + * Get the timestamp of the map projection given by the argument + * @return the timestamp of the map_projection + */ +uint64_t map_projection_timestamp(const struct map_projection_reference_s *ref); + +/** + * Writes the reference values of the projection given by the argument to ref_lat and ref_lon + * @return 0 if map_projection_init was called before, -1 else + */ +int map_projection_reference(const struct map_projection_reference_s *ref, double *ref_lat_rad, double *ref_lon_rad); + +/** + * Initializes the map transformation given by the argument. + * + * Initializes the transformation between the geographic coordinate system and + * the azimuthal equidistant plane + * @param lat in degrees (47.1234567°, not 471234567°) + * @param lon in degrees (8.1234567°, not 81234567°) + */ +int map_projection_init_timestamped(struct map_projection_reference_s *ref, double lat_0, double lon_0, uint64_t timestamp); + +/** + * Initializes the map transformation given by the argument and sets the timestamp to now. + * + * Initializes the transformation between the geographic coordinate system and + * the azimuthal equidistant plane + * @param lat in degrees (47.1234567°, not 471234567°) + * @param lon in degrees (8.1234567°, not 81234567°) + */ +int map_projection_init(struct map_projection_reference_s *ref, double lat_0, double lon_0); + +/* Transforms a point in the geographic coordinate system to the local + * azimuthal equidistant plane using the projection given by the argument +* @param x north +* @param y east +* @param lat in degrees (47.1234567°, not 471234567°) +* @param lon in degrees (8.1234567°, not 81234567°) +* @return 0 if map_projection_init was called before, -1 else +*/ +int map_projection_project(const struct map_projection_reference_s *ref, double lat, double lon, float *x, float *y); + +/** + * Transforms a point in the local azimuthal equidistant plane to the + * geographic coordinate system using the projection given by the argument + * + * @param x north + * @param y east + * @param lat in degrees (47.1234567°, not 471234567°) + * @param lon in degrees (8.1234567°, not 81234567°) + * @return 0 if map_projection_init was called before, -1 else + */ +int map_projection_reproject(const struct map_projection_reference_s *ref, float x, float y, double *lat, double *lon); + +/** + * Returns the distance to the next waypoint in meters. + * + * @param lat_now current position in degrees (47.1234567°, not 471234567°) + * @param lon_now current position in degrees (8.1234567°, not 81234567°) + * @param lat_next next waypoint position in degrees (47.1234567°, not 471234567°) + * @param lon_next next waypoint position in degrees (8.1234567°, not 81234567°) + */ +float get_distance_to_next_waypoint(double lat_now, double lon_now, double lat_next, double lon_next); + +/** + * Creates a new waypoint C on the line of two given waypoints (A, B) at certain distance + * from waypoint A + * + * @param lat_A waypoint A latitude in degrees (47.1234567°, not 471234567°) + * @param lon_A waypoint A longitude in degrees (8.1234567°, not 81234567°) + * @param lat_B waypoint B latitude in degrees (47.1234567°, not 471234567°) + * @param lon_B waypoint B longitude in degrees (8.1234567°, not 81234567°) + * @param dist distance of target waypoint from waypoint A in meters (can be negative) + * @param lat_target latitude of target waypoint C in degrees (47.1234567°, not 471234567°) + * @param lon_target longitude of target waypoint C in degrees (47.1234567°, not 471234567°) + */ +void create_waypoint_from_line_and_dist(double lat_A, double lon_A, double lat_B, double lon_B, float dist, + double *lat_target, double *lon_target); + +/** + * Creates a waypoint from given waypoint, distance and bearing + * see http://www.movable-type.co.uk/scripts/latlong.html + * + * @param lat_start latitude of starting waypoint in degrees (47.1234567°, not 471234567°) + * @param lon_start longitude of starting waypoint in degrees (8.1234567°, not 81234567°) + * @param bearing in rad + * @param distance in meters + * @param lat_target latitude of target waypoint in degrees (47.1234567°, not 471234567°) + * @param lon_target longitude of target waypoint in degrees (47.1234567°, not 471234567°) + */ +void waypoint_from_heading_and_distance(double lat_start, double lon_start, float bearing, float dist, + double *lat_target, double *lon_target); + +/** + * Returns the bearing to the next waypoint in radians. + * + * @param lat_now current position in degrees (47.1234567°, not 471234567°) + * @param lon_now current position in degrees (8.1234567°, not 81234567°) + * @param lat_next next waypoint position in degrees (47.1234567°, not 471234567°) + * @param lon_next next waypoint position in degrees (8.1234567°, not 81234567°) + */ +float get_bearing_to_next_waypoint(double lat_now, double lon_now, double lat_next, double lon_next); + +void get_vector_to_next_waypoint(double lat_now, double lon_now, double lat_next, double lon_next, float *v_n, float *v_e); + +void get_vector_to_next_waypoint_fast(double lat_now, double lon_now, double lat_next, double lon_next, float *v_n, float *v_e); + +void add_vector_to_global_position(double lat_now, double lon_now, float v_n, float v_e, double *lat_res, double *lon_res); + +int get_distance_to_line(struct crosstrack_error_s *crosstrack_error, double lat_now, double lon_now, + double lat_start, double lon_start, double lat_end, double lon_end); + +int get_distance_to_arc(struct crosstrack_error_s *crosstrack_error, double lat_now, double lon_now, + double lat_center, double lon_center, + float radius, float arc_start_bearing, float arc_sweep); + +/* + * Calculate distance in global frame + */ +float get_distance_to_point_global_wgs84(double lat_now, double lon_now, float alt_now, + double lat_next, double lon_next, float alt_next, + float *dist_xy, float *dist_z); + +/* + * Calculate distance in local frame (NED) + */ +float mavlink_wpm_distance_to_point_local(float x_now, float y_now, float z_now, + float x_next, float y_next, float z_next, + float *dist_xy, float *dist_z); diff --git a/src/lib/ecl/geo_lookup/CMakeLists.txt b/src/lib/ecl/geo_lookup/CMakeLists.txt new file mode 100644 index 0000000000..2da77a69af --- /dev/null +++ b/src/lib/ecl/geo_lookup/CMakeLists.txt @@ -0,0 +1,41 @@ +############################################################################ +# +# Copyright (c) 2018 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(ecl_geo_lookup + geo_mag_declination.cpp + geo_mag_declination.h + geo_magnetic_tables.hpp +) +add_dependencies(ecl_geo_lookup prebuild_targets) +target_compile_definitions(ecl_geo_lookup PRIVATE -DMODULE_NAME="ecl/geo_lookup") +target_include_directories(ecl_geo_lookup PUBLIC ${ECL_SOURCE_DIR}) diff --git a/src/lib/ecl/geo_lookup/fetch_noaa_table.py b/src/lib/ecl/geo_lookup/fetch_noaa_table.py new file mode 100755 index 0000000000..92336c0ff0 --- /dev/null +++ b/src/lib/ecl/geo_lookup/fetch_noaa_table.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python3 +############################################################################ +# +# Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +import math +import json +import urllib.request + +SAMPLING_RES = 10 +SAMPLING_MIN_LAT = -90 +SAMPLING_MAX_LAT = 90 +SAMPLING_MIN_LON = -180 +SAMPLING_MAX_LON = 180 + +def constrain(n, nmin, nmax): + return max(min(nmin, n), nmax) + +header = """/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ +""" +print(header) + +print('#include \n') + +LAT_DIM=int((SAMPLING_MAX_LAT-SAMPLING_MIN_LAT)/SAMPLING_RES)+1 +LON_DIM=int((SAMPLING_MAX_LON-SAMPLING_MIN_LON)/SAMPLING_RES)+1 + +print('static constexpr float SAMPLING_RES = {}'.format(SAMPLING_RES) + ';') +print('static constexpr float SAMPLING_MIN_LAT = {}'.format(SAMPLING_MIN_LAT) + ';') +print('static constexpr float SAMPLING_MAX_LAT = {}'.format(SAMPLING_MAX_LAT) + ';') +print('static constexpr float SAMPLING_MIN_LON = {}'.format(SAMPLING_MIN_LON) + ';') +print('static constexpr float SAMPLING_MAX_LON = {}'.format(SAMPLING_MAX_LON) + ';') +print('') +print('static constexpr int LAT_DIM = {}'.format(LAT_DIM) + ';') +print('static constexpr int LON_DIM = {}'.format(LON_DIM) + ';') +print('\n') + +# Declination +params = urllib.parse.urlencode({'lat1': 0, 'lat2': 0, 'lon1': 0, 'lon2': 0, 'latStepSize': 1, 'lonStepSize': 1, 'magneticComponent': 'd', 'resultFormat': 'json'}) +f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) +data = json.loads(f.read()) +print("// Magnetic declination data in radians * 10^-4") +print('// Model: {},'.format(data['model'])) +print('// Version: {},'.format(data['version'])) +print('// Date: {},'.format(data['result'][0]['date'])) +print('static constexpr const int16_t declination_table[{}][{}]'.format(LAT_DIM, LON_DIM) + " {") +print('// LONGITUDE: ', end='') +for l in range(SAMPLING_MIN_LON, SAMPLING_MAX_LON+1, SAMPLING_RES): + print('{0:6d},'.format(l), end='') +print('') +for latitude in range(SAMPLING_MIN_LAT, SAMPLING_MAX_LAT+1, SAMPLING_RES): + params = urllib.parse.urlencode({'lat1': latitude, 'lat2': latitude, 'lon1': SAMPLING_MIN_LON, 'lon2': SAMPLING_MAX_LON, 'latStepSize': 1, 'lonStepSize': SAMPLING_RES, 'magneticComponent': 'd', 'resultFormat': 'json'}) + f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) + data = json.loads(f.read()) + + print('/* LAT: {0:3d} */'.format(latitude) + ' { ', end='') + for p in data['result']: + # declination in radians * 10^-4 + declination_int = constrain(int(round(math.radians(p['declination'] * 10000))), 32767, -32768) + print('{0:6d},'.format(declination_int), end='') + + print(' },') +print("};\n") + +# Inclination +params = urllib.parse.urlencode({'lat1': 0, 'lat2': 0, 'lon1': 0, 'lon2': 0, 'latStepSize': 1, 'lonStepSize': 1, 'magneticComponent': 'i', 'resultFormat': 'json'}) +f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) +data = json.loads(f.read()) +print("// Magnetic inclination data in radians * 10^-4") +print('// Model: {},'.format(data['model'])) +print('// Version: {},'.format(data['version'])) +print('// Date: {},'.format(data['result'][0]['date'])) +print('static constexpr const int16_t inclination_table[{}][{}]'.format(LAT_DIM, LON_DIM) + " {") +print('// LONGITUDE: ', end='') +for l in range(SAMPLING_MIN_LON, SAMPLING_MAX_LON+1, SAMPLING_RES): + print('{0:6d},'.format(l), end='') +print('') +for latitude in range(SAMPLING_MIN_LAT, SAMPLING_MAX_LAT+1, SAMPLING_RES): + params = urllib.parse.urlencode({'lat1': latitude, 'lat2': latitude, 'lon1': SAMPLING_MIN_LON, 'lon2': SAMPLING_MAX_LON, 'latStepSize': 1, 'lonStepSize': SAMPLING_RES, 'magneticComponent': 'i', 'resultFormat': 'json'}) + f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) + data = json.loads(f.read()) + + print('/* LAT: {0:3d} */'.format(latitude) + ' { ', end='') + for p in data['result']: + # inclination in radians * 10^-4 + inclination_int = constrain(int(round(math.radians(p['inclination'] * 10000))), 32767, -32768) + print('{0:6d},'.format(inclination_int), end='') + + print(' },') +print("};\n") + +# total intensity +params = urllib.parse.urlencode({'lat1': 0, 'lat2': 0, 'lon1': 0, 'lon2': 0, 'latStepSize': 1, 'lonStepSize': 1, 'magneticComponent': 'i', 'resultFormat': 'json'}) +f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) +data = json.loads(f.read()) +print("// Magnetic strength data in milli-Gauss * 10") +print('// Model: {},'.format(data['model'])) +print('// Version: {},'.format(data['version'])) +print('// Date: {},'.format(data['result'][0]['date'])) +print('static constexpr const int16_t strength_table[{}][{}]'.format(LAT_DIM, LON_DIM) + " {") +print('// LONGITUDE: ', end='') +for l in range(SAMPLING_MIN_LON, SAMPLING_MAX_LON+1, SAMPLING_RES): + print('{0:5d},'.format(l), end='') +print('') +for latitude in range(SAMPLING_MIN_LAT, SAMPLING_MAX_LAT+1, SAMPLING_RES): + params = urllib.parse.urlencode({'lat1': latitude, 'lat2': latitude, 'lon1': SAMPLING_MIN_LON, 'lon2': SAMPLING_MAX_LON, 'latStepSize': 1, 'lonStepSize': SAMPLING_RES, 'magneticComponent': 'f', 'resultFormat': 'json'}) + f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) + data = json.loads(f.read()) + + print('/* LAT: {0:3d} */'.format(latitude) + ' { ', end='') + for p in data['result']: + totalintensity_int = int(round(p['totalintensity']/10)) + print('{0:5d},'.format(totalintensity_int), end='') + + print(' },') +print("};") diff --git a/src/lib/ecl/geo_lookup/generate_gtest.py b/src/lib/ecl/geo_lookup/generate_gtest.py new file mode 100755 index 0000000000..08c8daae00 --- /dev/null +++ b/src/lib/ecl/geo_lookup/generate_gtest.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python3 +############################################################################ +# +# Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +import json +import urllib.request + +SAMPLING_RES = 5 +SAMPLING_MIN_LAT = -50 +SAMPLING_MAX_LAT = 60 +SAMPLING_MIN_LON = -180 +SAMPLING_MAX_LON = 180 + +header = """/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include + +#include +""" + +print(header) + +print('') + +# Declination +params = urllib.parse.urlencode({'lat1': 0, 'lat2': 0, 'lon1': 0, 'lon2': 0, 'latStepSize': 1, 'lonStepSize': 1, 'magneticComponent': 'd', 'resultFormat': 'json'}) +f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) +data = json.loads(f.read()) + + +print('TEST(GeoLookupTest, declination) {') +for latitude in range(SAMPLING_MIN_LAT, SAMPLING_MAX_LAT+1, SAMPLING_RES): + params = urllib.parse.urlencode({'lat1': latitude, 'lat2': latitude, 'lon1': SAMPLING_MIN_LON, 'lon2': SAMPLING_MAX_LON, 'latStepSize': 1, 'lonStepSize': SAMPLING_RES, 'magneticComponent': 'd', 'resultFormat': 'json'}) + f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) + data = json.loads(f.read()) + + for p in data['result']: + error = 1 + + # thing start getting worse here + if latitude <= -44: + error = 2 + + print('\tEXPECT_NEAR(get_mag_declination_degrees({}, {}), {}, {} + {});'.format(p['latitude'], p['longitude'], p['declination'], p['declination_uncertainty'], error)) +print('}') + +print('') + +print('TEST(GeoLookupTest, inclination) {') +for latitude in range(SAMPLING_MIN_LAT, SAMPLING_MAX_LAT+1, SAMPLING_RES): + params = urllib.parse.urlencode({'lat1': latitude, 'lat2': latitude, 'lon1': SAMPLING_MIN_LON, 'lon2': SAMPLING_MAX_LON, 'latStepSize': 1, 'lonStepSize': SAMPLING_RES, 'magneticComponent': 'i', 'resultFormat': 'json'}) + f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) + data = json.loads(f.read()) + + for p in data['result']: + error = 1.2 + + # thing start getting worse here + if latitude <= -44: + error = 2 + + print('\tEXPECT_NEAR(get_mag_inclination_degrees({}, {}), {}, {} + {});'.format(p['latitude'], p['longitude'], p['inclination'], p['inclination_uncertainty'], error)) +print('}') + +print('') + +print('TEST(GeoLookupTest, strength) {') +for latitude in range(SAMPLING_MIN_LAT, SAMPLING_MAX_LAT+1, SAMPLING_RES): + params = urllib.parse.urlencode({'lat1': latitude, 'lat2': latitude, 'lon1': SAMPLING_MIN_LON, 'lon2': SAMPLING_MAX_LON, 'latStepSize': 1, 'lonStepSize': SAMPLING_RES, 'magneticComponent': 'f', 'resultFormat': 'json'}) + f = urllib.request.urlopen("https://www.ngdc.noaa.gov/geomag-web/calculators/calculateIgrfgrid?%s" % params) + data = json.loads(f.read()) + + for p in data['result']: + error = 500 + + print('\tEXPECT_NEAR(get_mag_strength_tesla({}, {}) * 1e9, {}, {} + {});'.format(p['latitude'], p['longitude'], p['totalintensity'], p['totalintensity_uncertainty'], error)) +print('}') diff --git a/src/lib/ecl/geo_lookup/geo_mag_declination.cpp b/src/lib/ecl/geo_lookup/geo_mag_declination.cpp new file mode 100644 index 0000000000..5b3d06517c --- /dev/null +++ b/src/lib/ecl/geo_lookup/geo_mag_declination.cpp @@ -0,0 +1,128 @@ +/**************************************************************************** + * + * Copyright (c) 2014-2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** +* @file geo_mag_declination.cpp +* +* Calculation / lookup table for Earth's magnetic field declination (deg), inclination (deg) and strength (mTesla). +* Data generated by https://www.ngdc.noaa.gov/geomag-web/#igrfgrid IGRF calculator on 22 Jan 2018 +* +* XXX Lookup table currently too coarse in resolution (only full degrees) +* and lat/lon res - needs extension medium term. +* +*/ + +#include "geo_mag_declination.h" + +#include "geo_magnetic_tables.hpp" + +#include + +#include +#include + +using math::constrain; + +static constexpr unsigned get_lookup_table_index(float *val, float min, float max) +{ + /* for the rare case of hitting the bounds exactly + * the rounding logic wouldn't fit, so enforce it. + */ + + /* limit to table bounds - required for maxima even when table spans full globe range */ + /* limit to (table bounds - 1) because bilinear interpolation requires checking (index + 1) */ + *val = constrain(*val, min, max - SAMPLING_RES); + + return static_cast((-(min) + *val) / SAMPLING_RES); +} + +static constexpr float get_table_data(float lat, float lon, const int16_t table[LAT_DIM][LON_DIM]) +{ + lat = math::constrain(lat, SAMPLING_MIN_LAT, SAMPLING_MAX_LAT); + + if (lon > SAMPLING_MAX_LON) { + lon -= 360; + } + + if (lon < SAMPLING_MIN_LON) { + lon += 360; + } + + /* round down to nearest sampling resolution */ + float min_lat = floorf(lat / SAMPLING_RES) * SAMPLING_RES; + float min_lon = floorf(lon / SAMPLING_RES) * SAMPLING_RES; + + /* find index of nearest low sampling point */ + unsigned min_lat_index = get_lookup_table_index(&min_lat, SAMPLING_MIN_LAT, SAMPLING_MAX_LAT); + unsigned min_lon_index = get_lookup_table_index(&min_lon, SAMPLING_MIN_LON, SAMPLING_MAX_LON); + + const float data_sw = table[min_lat_index][min_lon_index]; + const float data_se = table[min_lat_index][min_lon_index + 1]; + const float data_ne = table[min_lat_index + 1][min_lon_index + 1]; + const float data_nw = table[min_lat_index + 1][min_lon_index]; + + /* perform bilinear interpolation on the four grid corners */ + const float lat_scale = constrain((lat - min_lat) / SAMPLING_RES, 0.f, 1.f); + const float lon_scale = constrain((lon - min_lon) / SAMPLING_RES, 0.f, 1.f); + + const float data_min = lon_scale * (data_se - data_sw) + data_sw; + const float data_max = lon_scale * (data_ne - data_nw) + data_nw; + + return lat_scale * (data_max - data_min) + data_min; +} + +float get_mag_declination_radians(float lat, float lon) { + return get_table_data(lat, lon, declination_table) * 1e-4f; // declination table stored as 10^-4 radians +} + +float get_mag_declination_degrees(float lat, float lon) { + return math::degrees(get_mag_declination_radians(lat, lon)); +} + +float get_mag_inclination_radians(float lat, float lon) { + return get_table_data(lat, lon, inclination_table) * 1e-4f; // inclination table stored as 10^-4 radians +} + +float get_mag_inclination_degrees(float lat, float lon) { + return math::degrees(get_mag_inclination_radians(lat, lon)); +} + +float get_mag_strength_gauss(float lat, float lon) +{ + return get_table_data(lat, lon, strength_table) * 1e-4f; // strength table table stored as milli-Gauss * 10 +} + +float get_mag_strength_tesla(float lat, float lon) +{ + return get_mag_strength_gauss(lat, lon) * 1e-4f; // 1 Gauss == 0.0001 Tesla +} diff --git a/src/lib/ecl/geo_lookup/geo_mag_declination.h b/src/lib/ecl/geo_lookup/geo_mag_declination.h new file mode 100644 index 0000000000..8ec4e6038e --- /dev/null +++ b/src/lib/ecl/geo_lookup/geo_mag_declination.h @@ -0,0 +1,54 @@ +/**************************************************************************** + * + * Copyright (c) 2014-2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** +* @file geo_mag_declination.h +* +* Calculation / lookup table for Earth's magnetic field declination, inclination and strength. +* Data generated by https://www.ngdc.noaa.gov/geomag-web/#igrfgrid IGRF calculator on 22 Jan 2018 +* +*/ + +#pragma once + +// Return magnetic declination in degrees or radians +float get_mag_declination_degrees(float lat, float lon); +float get_mag_declination_radians(float lat, float lon); + +// Return magnetic field inclination in degrees or radians +float get_mag_inclination_degrees(float lat, float lon); +float get_mag_inclination_radians(float lat, float lon); + +// return magnetic field strength in Gauss or Tesla +float get_mag_strength_gauss(float lat, float lon); +float get_mag_strength_tesla(float lat, float lon); diff --git a/src/lib/ecl/geo_lookup/geo_magnetic_tables.hpp b/src/lib/ecl/geo_lookup/geo_magnetic_tables.hpp new file mode 100644 index 0000000000..86a83e12d2 --- /dev/null +++ b/src/lib/ecl/geo_lookup/geo_magnetic_tables.hpp @@ -0,0 +1,125 @@ +/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +static constexpr float SAMPLING_RES = 10; +static constexpr float SAMPLING_MIN_LAT = -90; +static constexpr float SAMPLING_MAX_LAT = 90; +static constexpr float SAMPLING_MIN_LON = -180; +static constexpr float SAMPLING_MAX_LON = 180; + +static constexpr int LAT_DIM = 19; +static constexpr int LON_DIM = 37; + + +// Magnetic declination data in radians * 10^-4 +// Model: WMM-2020, +// Version: 0.5.1.11, +// Date: 2021.2356, +static constexpr const int16_t declination_table[19][37] { +// LONGITUDE: -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, +/* LAT: -90 */ { 26020, 24274, 22529, 20784, 19038, 17293, 15548, 13802, 12057, 10312, 8566, 6821, 5076, 3331, 1585, -160, -1905, -3650, -5396, -7141, -8886,-10632,-12377,-14122,-15868,-17613,-19358,-21104,-22849,-24594,-26340,-28085,-29831, 31256, 29511, 27765, 26020, }, +/* LAT: -80 */ { 22590, 20454, 18510, 16733, 15090, 13550, 12085, 10673, 9297, 7947, 6614, 5295, 3985, 2681, 1373, 55, -1284, -2654, -4061, -5510, -7002, -8536,-10111,-11727,-13389,-15105,-16888,-18758,-20738,-22854,-25126,-27559,-30128, 30061, 27438, 24926, 22590, }, +/* LAT: -70 */ { 14966, 13570, 12448, 11490, 10626, 9798, 8959, 8074, 7123, 6105, 5035, 3941, 2853, 1796, 772, -238, -1274, -2375, -3570, -4863, -6237, -7662, -9106,-10545,-11970,-13384,-14809,-16291,-17907,-19809,-22308,-26075, 30840, 24200, 19629, 16839, 14966, }, +/* LAT: -60 */ { 8375, 8139, 7867, 7601, 7355, 7108, 6806, 6378, 5768, 4952, 3954, 2842, 1719, 685, -205, -969, -1699, -2516, -3508, -4692, -6012, -7374, -8691, -9902,-10968,-11869,-12588,-13084,-13256,-12806,-10720, -3613, 4760, 7561, 8359, 8500, 8375, }, +/* LAT: -50 */ { 5450, 5491, 5441, 5358, 5291, 5259, 5230, 5108, 4770, 4114, 3110, 1841, 497, -694, -1581, -2161, -2566, -3002, -3670, -4660, -5884, -7151, -8291, -9198, -9806,-10057, -9876, -9132, -7634, -5282, -2383, 363, 2471, 3894, 4768, 5244, 5450, }, +/* LAT: -40 */ { 3929, 4024, 4037, 3998, 3944, 3915, 3924, 3917, 3749, 3223, 2211, 777, -790, -2118, -3002, -3473, -3672, -3739, -3895, -4430, -5375, -6439, -7328, -7880, -8005, -7647, -6775, -5398, -3683, -1973, -507, 716, 1757, 2618, 3270, 3698, 3929, }, +/* LAT: -30 */ { 2962, 3049, 3085, 3078, 3026, 2953, 2897, 2866, 2743, 2274, 1254, -254, -1864, -3134, -3895, -4259, -4356, -4167, -3737, -3482, -3801, -4530, -5236, -5605, -5500, -4932, -3983, -2774, -1554, -598, 85, 687, 1307, 1904, 2407, 2765, 2962, }, +/* LAT: -20 */ { 2319, 2367, 2392, 2402, 2367, 2278, 2176, 2102, 1959, 1472, 433, -1044, -2527, -3608, -4165, -4302, -4118, -3581, -2728, -1909, -1595, -1923, -2571, -3053, -3107, -2762, -2133, -1312, -525, -25, 244, 548, 984, 1454, 1869, 2170, 2319, }, +/* LAT: -10 */ { 1926, 1921, 1908, 1913, 1892, 1815, 1712, 1625, 1442, 899, -148, -1518, -2799, -3650, -3945, -3741, -3181, -2408, -1561, -795, -311, -321, -779, -1289, -1514, -1433, -1124, -622, -116, 135, 191, 354, 719, 1147, 1531, 1811, 1926, }, +/* LAT: 0 */ { 1713, 1682, 1633, 1632, 1629, 1567, 1471, 1364, 1112, 497, -535, -1760, -2826, -3435, -3462, -2982, -2222, -1438, -780, -238, 183, 310, 44, -372, -635, -695, -597, -332, -35, 62, 9, 101, 436, 867, 1277, 1589, 1713, }, +/* LAT: 10 */ { 1581, 1591, 1555, 1578, 1610, 1568, 1456, 1277, 904, 188, -829, -1909, -2750, -3111, -2930, -2338, -1565, -848, -325, 61, 389, 547, 396, 75, -164, -273, -293, -207, -98, -133, -266, -236, 60, 503, 975, 1375, 1581, }, +/* LAT: 20 */ { 1405, 1555, 1620, 1716, 1808, 1794, 1647, 1352, 810, -46, -1090, -2050, -2663, -2792, -2480, -1887, -1177, -523, -55, 260, 521, 673, 590, 348, 145, 28, -57, -116, -190, -375, -607, -665, -436, 3, 537, 1050, 1405, }, +/* LAT: 30 */ { 1115, 1482, 1744, 1970, 2133, 2148, 1966, 1549, 824, -206, -1331, -2222, -2653, -2606, -2217, -1642, -988, -366, 103, 414, 648, 800, 786, 639, 488, 364, 214, 12, -263, -634, -1001, -1162, -1008, -588, -15, 593, 1115, }, +/* LAT: 40 */ { 770, 1358, 1852, 2244, 2493, 2539, 2326, 1796, 885, -348, -1599, -2483, -2819, -2677, -2236, -1646, -993, -361, 155, 525, 800, 1004, 1104, 1096, 1020, 874, 614, 215, -315, -918, -1441, -1690, -1579, -1166, -568, 108, 770, }, +/* LAT: 50 */ { 495, 1244, 1924, 2478, 2843, 2948, 2718, 2062, 916, -594, -2035, -2968, -3273, -3087, -2599, -1954, -1243, -542, 79, 590, 1013, 1374, 1661, 1836, 1859, 1678, 1245, 551, -332, -1234, -1920, -2215, -2096, -1655, -1015, -276, 495, }, +/* LAT: 60 */ { 320, 1177, 1983, 2674, 3173, 3379, 3158, 2336, 802, -1187, -2929, -3922, -4178, -3917, -3342, -2593, -1763, -918, -105, 651, 1347, 1983, 2532, 2935, 3104, 2930, 2310, 1214, -189, -1513, -2395, -2715, -2553, -2054, -1351, -539, 320, }, +/* LAT: 70 */ { 125, 1068, 1968, 2765, 3374, 3659, 3388, 2214, -98, -2882, -4855, -5670, -5663, -5165, -4384, -3440, -2407, -1334, -254, 812, 1842, 2812, 3686, 4400, 4858, 4906, 4323, 2886, 720, -1388, -2701, -3154, -2995, -2455, -1694, -812, 125, }, +/* LAT: 80 */ { -447, 481, 1339, 2035, 2416, 2203, 901, -1946, -5362, -7492, -8178, -7990, -7318, -6369, -5256, -4040, -2761, -1445, -112, 1221, 2540, 3825, 5055, 6194, 7191, 7952, 8302, 7884, 6049, 2457, -1054, -2796, -3195, -2887, -2220, -1372, -447, }, +/* LAT: 90 */ { -30329,-28584,-26838,-25093,-23347,-21602,-19857,-18111,-16366,-14621,-12875,-11130, -9385, -7640, -5895, -4149, -2404, -659, 1086, 2831, 4576, 6322, 8067, 9812, 11558, 13303, 15048, 16794, 18539, 20284, 22030, 23775, 25521, 27266, 29012, 30757,-30329, }, +}; + +// Magnetic inclination data in radians * 10^-4 +// Model: WMM-2020, +// Version: 0.5.1.11, +// Date: 2021.2356, +static constexpr const int16_t inclination_table[19][37] { +// LONGITUDE: -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, +/* LAT: -90 */ { -12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12579,-12579,-12579,-12579,-12579,-12579,-12579,-12579,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580,-12580, }, +/* LAT: -80 */ { -13667,-13533,-13373,-13192,-12998,-12796,-12592,-12391,-12199,-12022,-11865,-11731,-11620,-11534,-11470,-11429,-11409,-11412,-11440,-11494,-11577,-11691,-11835,-12008,-12206,-12422,-12651,-12884,-13112,-13325,-13512,-13663,-13768,-13820,-13818,-13765,-13667, }, +/* LAT: -70 */ { -14117,-13798,-13479,-13156,-12823,-12479,-12123,-11764,-11420,-11109,-10855,-10670,-10556,-10503,-10490,-10495,-10504,-10516,-10540,-10597,-10704,-10877,-11121,-11433,-11804,-12220,-12667,-13131,-13597,-14050,-14469,-14817,-15010,-14960,-14730,-14433,-14117, }, +/* LAT: -60 */ { -13525,-13173,-12835,-12503,-12159,-11787,-11371,-10916,-10446,-10013, -9679, -9499, -9492, -9626, -9831,-10028,-10160,-10211,-10203,-10191,-10237,-10391,-10675,-11078,-11572,-12126,-12711,-13307,-13895,-14456,-14953,-15244,-15075,-14693,-14289,-13897,-13525, }, +/* LAT: -50 */ { -12498,-12158,-11829,-11507,-11184,-10837,-10438, -9965, -9434, -8909, -8513, -8378, -8570, -9026, -9591,-10109,-10479,-10655,-10637,-10493,-10350,-10349,-10559,-10966,-11502,-12092,-12679,-13220,-13668,-13968,-14078,-14006,-13803,-13520,-13193,-12847,-12498, }, +/* LAT: -40 */ { -11240,-10895,-10550,-10206, -9866, -9527, -9165, -8738, -8215, -7647, -7212, -7155, -7600, -8416, -9339,-10175,-10844,-11293,-11451,-11301,-10965,-10687,-10665,-10934,-11389,-11893,-12342,-12670,-12833,-12840,-12749,-12610,-12430,-12197,-11911,-11584,-11240, }, +/* LAT: -30 */ { -9601, -9228, -8853, -8464, -8071, -7694, -7335, -6941, -6426, -5812, -5349, -5410, -6156, -7347, -8600, -9704,-10627,-11351,-11771,-11784,-11428,-10921,-10575,-10562,-10806,-11127,-11388,-11508,-11450,-11274,-11097,-10958,-10809,-10600,-10319, -9975, -9601, }, +/* LAT: -20 */ { -7369, -6938, -6528, -6103, -5658, -5226, -4831, -4412, -3842, -3153, -2691, -2922, -4002, -5600, -7232, -8616, -9697,-10489,-10948,-11003,-10657,-10051, -9488, -9233, -9274, -9435, -9580, -9604, -9435, -9162, -8963, -8869, -8757, -8546, -8229, -7820, -7369, }, +/* LAT: -10 */ { -4411, -3889, -3445, -3013, -2556, -2104, -1685, -1221, -587, 124, 503, 108, -1188, -3088, -5069, -6700, -7820, -8475, -8757, -8710, -8317, -7645, -6980, -6625, -6580, -6673, -6793, -6821, -6636, -6338, -6177, -6174, -6122, -5900, -5517, -4994, -4411, }, +/* LAT: 0 */ { -901, -294, 160, 557, 974, 1392, 1787, 2242, 2838, 3426, 3645, 3177, 1911, 20, -2028, -3703, -4741, -5192, -5265, -5106, -4680, -3977, -3272, -2893, -2830, -2902, -3030, -3105, -2977, -2739, -2676, -2804, -2850, -2657, -2233, -1610, -901, }, +/* LAT: 10 */ { 2566, 3178, 3602, 3938, 4291, 4659, 5016, 5414, 5878, 6258, 6308, 5840, 4780, 3230, 1538, 143, -687, -956, -877, -649, -249, 379, 1012, 1354, 1416, 1366, 1263, 1171, 1215, 1322, 1255, 1004, 828, 908, 1259, 1854, 2566, }, +/* LAT: 20 */ { 5419, 5937, 6310, 6601, 6914, 7258, 7605, 7961, 8305, 8514, 8437, 7988, 7166, 6078, 4951, 4030, 3484, 3350, 3489, 3727, 4051, 4509, 4968, 5225, 5280, 5257, 5205, 5149, 5140, 5127, 4960, 4640, 4353, 4269, 4440, 4858, 5419, }, +/* LAT: 30 */ { 7569, 7938, 8252, 8533, 8841, 9190, 9551, 9898, 10182, 10302, 10165, 9752, 9130, 8420, 7756, 7238, 6937, 6885, 7020, 7227, 7469, 7764, 8051, 8225, 8280, 8289, 8288, 8279, 8260, 8182, 7966, 7621, 7272, 7055, 7038, 7230, 7569, }, +/* LAT: 40 */ { 9266, 9485, 9740, 10025, 10352, 10715, 11086, 11429, 11686, 11774, 11629, 11273, 10801, 10327, 9928, 9640, 9485, 9475, 9580, 9738, 9910, 10091, 10262, 10387, 10463, 10521, 10573, 10606, 10592, 10486, 10249, 9903, 9539, 9256, 9113, 9124, 9266, }, +/* LAT: 50 */ { 10801, 10923, 11125, 11396, 11720, 12076, 12433, 12753, 12978, 13041, 12904, 12607, 12241, 11894, 11616, 11426, 11329, 11321, 11384, 11484, 11595, 11709, 11824, 11939, 12056, 12177, 12288, 12361, 12355, 12235, 11992, 11667, 11328, 11044, 10854, 10774, 10801, }, +/* LAT: 60 */ { 12318, 12393, 12545, 12766, 13038, 13341, 13645, 13913, 14091, 14119, 13983, 13732, 13442, 13169, 12946, 12787, 12694, 12660, 12673, 12719, 12785, 12868, 12973, 13103, 13261, 13435, 13600, 13711, 13720, 13604, 13382, 13103, 12824, 12587, 12416, 12325, 12318, }, +/* LAT: 70 */ { 13759, 13804, 13902, 14046, 14228, 14434, 14645, 14827, 14931, 14909, 14768, 14564, 14344, 14139, 13964, 13828, 13733, 13677, 13657, 13668, 13709, 13779, 13881, 14016, 14181, 14368, 14552, 14694, 14743, 14674, 14515, 14317, 14122, 13957, 13837, 13770, 13759, }, +/* LAT: 80 */ { 15003, 15017, 15057, 15118, 15197, 15285, 15365, 15410, 15387, 15303, 15187, 15060, 14936, 14821, 14721, 14638, 14576, 14534, 14515, 14518, 14544, 14593, 14664, 14755, 14866, 14992, 15127, 15258, 15365, 15411, 15376, 15293, 15200, 15117, 15053, 15015, 15003, }, +/* LAT: 90 */ { 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, 15391, }, +}; + +// Magnetic strength data in milli-Gauss * 10 +// Model: WMM-2020, +// Version: 0.5.1.11, +// Date: 2021.2356, +static constexpr const int16_t strength_table[19][37] { +// LONGITUDE: -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, +/* LAT: -90 */ { 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, }, +/* LAT: -80 */ { 6065, 6003, 5924, 5833, 5731, 5619, 5502, 5380, 5258, 5138, 5024, 4918, 4824, 4744, 4681, 4635, 4610, 4608, 4629, 4674, 4744, 4837, 4951, 5082, 5225, 5375, 5524, 5667, 5798, 5912, 6005, 6075, 6119, 6139, 6136, 6111, 6065, }, +/* LAT: -70 */ { 6310, 6178, 6029, 5866, 5688, 5496, 5292, 5077, 4857, 4642, 4439, 4256, 4097, 3966, 3861, 3784, 3736, 3723, 3751, 3825, 3952, 4130, 4357, 4624, 4918, 5225, 5528, 5812, 6062, 6267, 6419, 6515, 6557, 6551, 6503, 6420, 6310, }, +/* LAT: -60 */ { 6194, 6004, 5804, 5597, 5379, 5145, 4889, 4611, 4318, 4028, 3760, 3531, 3351, 3215, 3116, 3042, 2992, 2971, 2996, 3085, 3251, 3500, 3824, 4208, 4629, 5063, 5484, 5869, 6194, 6444, 6609, 6689, 6692, 6630, 6518, 6369, 6194, }, +/* LAT: -50 */ { 5850, 5622, 5391, 5162, 4931, 4687, 4417, 4114, 3785, 3453, 3149, 2908, 2745, 2652, 2603, 2570, 2538, 2512, 2517, 2587, 2757, 3042, 3434, 3903, 4408, 4914, 5390, 5810, 6150, 6393, 6533, 6575, 6534, 6425, 6265, 6068, 5850, }, +/* LAT: -40 */ { 5398, 5153, 4910, 4672, 4438, 4202, 3948, 3664, 3350, 3024, 2724, 2500, 2380, 2353, 2372, 2395, 2402, 2392, 2381, 2408, 2533, 2801, 3213, 3723, 4269, 4794, 5263, 5654, 5947, 6136, 6226, 6230, 6161, 6032, 5852, 5635, 5398, }, +/* LAT: -30 */ { 4881, 4642, 4405, 4171, 3946, 3728, 3509, 3278, 3023, 2748, 2489, 2305, 2232, 2255, 2322, 2394, 2461, 2514, 2539, 2552, 2615, 2806, 3159, 3642, 4172, 4671, 5094, 5414, 5619, 5720, 5747, 5721, 5642, 5511, 5332, 5117, 4881, }, +/* LAT: -20 */ { 4323, 4112, 3905, 3701, 3505, 3323, 3155, 2992, 2815, 2618, 2427, 2291, 2247, 2287, 2375, 2485, 2614, 2745, 2838, 2877, 2900, 2990, 3221, 3599, 4047, 4475, 4827, 5066, 5174, 5183, 5153, 5106, 5023, 4896, 4730, 4534, 4323, }, +/* LAT: -10 */ { 3791, 3632, 3480, 3335, 3199, 3079, 2977, 2886, 2790, 2677, 2556, 2455, 2406, 2425, 2508, 2636, 2792, 2953, 3080, 3146, 3162, 3185, 3302, 3548, 3871, 4193, 4460, 4627, 4665, 4614, 4546, 4482, 4393, 4268, 4120, 3957, 3791, }, +/* LAT: 0 */ { 3412, 3321, 3238, 3166, 3111, 3073, 3049, 3032, 3010, 2963, 2885, 2789, 2706, 2670, 2707, 2808, 2940, 3077, 3194, 3271, 3304, 3325, 3396, 3549, 3755, 3968, 4149, 4257, 4266, 4200, 4112, 4019, 3907, 3775, 3642, 3519, 3412, }, +/* LAT: 10 */ { 3283, 3253, 3234, 3231, 3257, 3305, 3362, 3418, 3455, 3447, 3378, 3263, 3134, 3036, 3005, 3042, 3122, 3220, 3321, 3407, 3471, 3532, 3618, 3734, 3867, 4004, 4124, 4196, 4200, 4140, 4031, 3889, 3727, 3568, 3433, 3338, 3283, }, +/* LAT: 20 */ { 3400, 3404, 3432, 3488, 3581, 3703, 3834, 3953, 4036, 4049, 3976, 3834, 3665, 3522, 3442, 3426, 3459, 3530, 3625, 3722, 3812, 3909, 4019, 4130, 4237, 4347, 4448, 4515, 4527, 4471, 4335, 4135, 3908, 3699, 3537, 3437, 3400, }, +/* LAT: 30 */ { 3723, 3732, 3789, 3891, 4036, 4208, 4385, 4543, 4653, 4680, 4607, 4451, 4259, 4091, 3982, 3933, 3934, 3982, 4067, 4164, 4260, 4365, 4480, 4598, 4717, 4842, 4961, 5048, 5076, 5021, 4866, 4628, 4355, 4101, 3903, 3776, 3723, }, +/* LAT: 40 */ { 4223, 4224, 4292, 4418, 4587, 4776, 4961, 5118, 5223, 5249, 5180, 5030, 4840, 4663, 4532, 4453, 4425, 4444, 4503, 4580, 4665, 4761, 4876, 5009, 5160, 5320, 5471, 5581, 5623, 5571, 5418, 5181, 4907, 4648, 4437, 4294, 4223, }, +/* LAT: 50 */ { 4831, 4828, 4888, 5001, 5149, 5310, 5460, 5580, 5653, 5662, 5597, 5468, 5304, 5137, 4998, 4898, 4841, 4827, 4850, 4899, 4967, 5056, 5175, 5324, 5499, 5683, 5850, 5969, 6016, 5975, 5845, 5649, 5424, 5207, 5027, 4899, 4831, }, +/* LAT: 60 */ { 5392, 5383, 5415, 5481, 5569, 5664, 5750, 5815, 5847, 5836, 5781, 5685, 5562, 5432, 5312, 5214, 5146, 5111, 5108, 5134, 5190, 5275, 5392, 5539, 5705, 5874, 6022, 6128, 6174, 6154, 6071, 5945, 5797, 5653, 5531, 5442, 5392, }, +/* LAT: 70 */ { 5726, 5709, 5709, 5723, 5746, 5773, 5796, 5809, 5807, 5787, 5746, 5687, 5615, 5538, 5463, 5398, 5349, 5321, 5315, 5334, 5378, 5447, 5538, 5647, 5764, 5879, 5979, 6053, 6093, 6097, 6068, 6015, 5947, 5877, 5812, 5761, 5726, }, +/* LAT: 80 */ { 5789, 5772, 5759, 5748, 5738, 5729, 5719, 5707, 5691, 5672, 5649, 5623, 5595, 5567, 5542, 5521, 5506, 5501, 5505, 5520, 5545, 5580, 5623, 5671, 5721, 5769, 5812, 5847, 5871, 5885, 5887, 5880, 5867, 5848, 5828, 5808, 5789, }, +/* LAT: 90 */ { 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, }, +}; diff --git a/src/lib/ecl/mathlib/mathlib.h b/src/lib/ecl/mathlib/mathlib.h new file mode 100644 index 0000000000..8b24c94aea --- /dev/null +++ b/src/lib/ecl/mathlib/mathlib.h @@ -0,0 +1,96 @@ +/**************************************************************************** + * + * Copyright (C) 2012, 2014 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file mathlib.h + * + * Target specific math functions and definitions + * + * @author Siddharth Bharat Purohit + */ +#ifndef MATHLIB_H +#define MATHLIB_H + +#ifdef ECL_STANDALONE + +#ifndef M_PI_F +#define M_PI_F 3.14159265358979323846f +#endif + +#ifndef M_PI_2_F +#define M_PI_2_F (M_PI / 2.0f) +#endif + +#ifndef M_PI +#define M_PI 3.141592653589793238462643383280 +#endif + +namespace math +{ +template +static constexpr Type min(Type val1, Type val2) +{ + return (val1 < val2) ? val1 : val2; +} + +template +static constexpr Type max(Type val1, Type val2) +{ + return (val1 > val2) ? val1 : val2; +} + +template +static constexpr Type constrain(Type val, Type min, Type max) +{ + return (val < min) ? min : ((val > max) ? max : val); +} + +template +static constexpr Type radians(Type degrees) +{ + return (degrees / Type(180)) * Type(M_PI); +} + +template +static constexpr Type degrees(Type radians) +{ + return (radians * Type(180)) / Type(M_PI); +} + +} // namespace math +#else + +#include + +#endif // ECL_STANDALONE +#endif // MATHLIB_H diff --git a/src/lib/ecl/test/CMakeLists.txt b/src/lib/ecl/test/CMakeLists.txt new file mode 100644 index 0000000000..40e3cdbe3b --- /dev/null +++ b/src/lib/ecl/test/CMakeLists.txt @@ -0,0 +1,64 @@ +############################################################################ +# +# Copyright (c) 2019 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +include(gtest.cmake) + +add_subdirectory(sensor_simulator) +add_subdirectory(test_helper) + +set(SRCS + main.cpp + test_EKF_basics.cpp + test_EKF_ringbuffer.cpp + test_EKF_measurementSampling.cpp + test_EKF_imuSampling.cpp + test_AlphaFilter.cpp + test_EKF_fusionLogic.cpp + test_EKF_initialization.cpp + test_EKF_gps_yaw.cpp + test_EKF_gps.cpp + test_EKF_externalVision.cpp + test_EKF_airspeed.cpp + test_EKF_withReplayData.cpp + test_EKF_flow.cpp + test_EKF_terrain_estimator.cpp + test_SensorRangeFinder.cpp + test_geo.cpp + test_geo_lookup.cpp + test_EKF_utils.cpp + ) +add_executable(ECL_GTESTS ${SRCS}) + +target_link_libraries(ECL_GTESTS gtest_main ecl_EKF ecl_sensor_sim ecl_test_helper) + +add_test(NAME ECL_GTESTS COMMAND ECL_GTESTS) diff --git a/src/lib/ecl/test/CMakeLists.txt.in b/src/lib/ecl/test/CMakeLists.txt.in new file mode 100644 index 0000000000..a119c417b4 --- /dev/null +++ b/src/lib/ecl/test/CMakeLists.txt.in @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.4) + +project(googletest-download NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + URL https://github.com/google/googletest/archive/8b6d3f9c4a774bef3081195d422993323b6bb2e0.zip + SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + # Wrap download, configure and build steps in a script to log output + LOG_DOWNLOAD ON + LOG_CONFIGURE ON + LOG_BUILD ON +) + diff --git a/src/lib/ecl/test/change_indication/ekf_gsf_reset.csv b/src/lib/ecl/test/change_indication/ekf_gsf_reset.csv new file mode 100644 index 0000000000..2c2021a84b --- /dev/null +++ b/src/lib/ecl/test/change_indication/ekf_gsf_reset.csv @@ -0,0 +1,391 @@ +Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7],state[8],state[9],state[10],state[11],state[12],state[13],state[14],state[15],state[16],state[17],state[18],state[19],state[20],state[21],state[22],state[23],variance[0],variance[1],variance[2],variance[3],variance[4],variance[5],variance[6],variance[7],variance[8],variance[9],variance[10],variance[11],variance[12],variance[13],variance[14],variance[15],variance[16],variance[17],variance[18],variance[19],variance[20],variance[21],variance[22],variance[23] +15000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +85000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +185000,0.999749,-0.0104069,-0.0107853,-0.0166343,0.000120003,-0.000106777,-0.0115085,1.36672e-05,-4.60598e-06,-0.000265304,1.72362e-15,-3.18881e-15,-1.02506e-16,0,0,-7.93589e-11,0.191514,0.00185997,0.404127,0,0,0,0,0,1.95304e-06,0.00251574,0.0025157,0.00501391,0.256461,0.256461,0.562563,0.126414,0.126414,1.00079,1e-06,1e-06,1e-06,4e-06,4e-06,4.00001e-06,0,0,0,0,0,0,0,0 +285000,0.999745,-0.010498,-0.0111248,-0.0166139,0.00135604,0.000386777,-0.0252008,7.07068e-05,-1.58746e-05,-0.00161356,2.51669e-14,2.38317e-14,-5.59251e-17,0,0,-1.75435e-09,0.191514,0.00185997,0.404127,0,0,0,0,0,2.00622e-06,0.0025808,0.00258074,0.00507893,0.282565,0.282564,0.562506,0.132891,0.132891,0.576885,1e-06,1e-06,1e-06,4e-06,4e-06,4.00001e-06,0,0,0,0,0,0,0,0 +385000,0.999742,-0.0105086,-0.0114167,-0.0165992,0.00279367,0.000841279,-0.0397786,0.000234117,6.61504e-05,-0.00379265,3.97567e-11,-5.70702e-10,-1.26583e-11,0,0,-1.90055e-08,0.191514,0.00185997,0.404127,0,0,0,0,0,2.07976e-06,0.00269232,0.00269222,0.00519394,0.320083,0.320083,0.560114,0.0942307,0.0942307,0.375592,9.99994e-07,9.99994e-07,1e-06,4e-06,4e-06,3.99998e-06,0,0,0,0,0,0,0,0 +485000,0.999736,-0.0105821,-0.0117682,-0.0166396,0.00565568,1.37733e-05,-0.0548207,0.00067319,9.33786e-05,-0.00682881,3.12871e-11,-5.37575e-10,-1.17921e-11,0,0,-9.60387e-08,0.191514,0.00185997,0.404127,0,0,0,0,0,2.19976e-06,0.00285733,0.00285719,0.00535892,0.388412,0.388412,0.553871,0.109483,0.109483,0.287379,9.99994e-07,9.99994e-07,1e-06,4e-06,4e-06,3.99978e-06,0,0,0,0,0,0,0,0 +585000,0.999733,-0.0105813,-0.0120572,-0.0166371,0.00777812,0.000772913,-0.0669065,0.00103104,9.86188e-05,-0.0105822,4.48799e-09,-3.17219e-08,-7.49171e-10,0,0,-3.1415e-07,0.191514,0.00185997,0.404127,0,0,0,0,0,2.32138e-06,0.00302178,0.0030216,0.00557389,0.437997,0.437998,0.542812,0.0905593,0.0905593,0.242024,9.99626e-07,9.99626e-07,1e-06,4e-06,4e-06,3.99919e-06,0,0,0,0,0,0,0,0 +685000,0.999729,-0.0107148,-0.0123314,-0.0165748,0.0105358,-6.92627e-05,-0.079897,0.00191778,0.000106049,-0.0148862,4.46063e-09,-3.12371e-08,-7.38593e-10,0,0,-8.02325e-07,0.191514,0.00185997,0.404127,0,0,0,0,0,2.48169e-06,0.00328539,0.00328518,0.00583886,0.550739,0.55074,0.525906,0.117326,0.117326,0.217499,9.99626e-07,9.99626e-07,1e-06,4e-06,4e-06,3.99786e-06,0,0,0,0,0,0,0,0 +785000,0.999725,-0.0108223,-0.0126169,-0.0165619,0.011657,0.000229059,-0.0924465,0.00210485,5.69564e-05,-0.0206973,2.09481e-08,-2.70114e-07,-6.00229e-09,0,0,-1.43884e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,2.6284e-06,0.00338379,0.00338354,0.00615375,0.570988,0.57099,0.510947,0.101431,0.101431,0.215594,9.96274e-07,9.96274e-07,9.99998e-07,4e-06,4e-06,3.99614e-06,0,0,0,0,0,0,0,0 +885000,0.999721,-0.0109303,-0.0128766,-0.0165376,0.0162462,-0.000778969,-0.10711,0.00348551,-7.81696e-06,-0.0306738,2.09481e-08,-2.70114e-07,-6.00229e-09,0,0,-1.43884e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,2.85507e-06,0.00373878,0.00373848,0.00651869,0.7243,0.724304,0.516584,0.14145,0.14145,0.256222,9.96274e-07,9.96274e-07,9.99998e-07,4e-06,4e-06,3.99615e-06,0,0,0,0,0,0,0,0 +985000,0.999721,-0.0109898,-0.0128333,-0.0165236,0.0126831,-0.00203945,-0.122007,0.000610238,-5.99813e-05,-0.0421172,4.99418e-08,-2.11702e-06,-4.45929e-08,0,0,-1.49185e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,2.78209e-06,0.00300321,0.00300296,0.00693337,0.356058,0.356061,0.523019,0.0107839,0.0107838,0.307346,9.6711e-07,9.67111e-07,9.99974e-07,4e-06,4e-06,3.99611e-06,0,0,0,0,0,0,0,0 +1085000,0.999716,-0.011085,-0.0131015,-0.0165326,0.0163993,-0.00349004,-0.137292,0.00204637,-0.000342056,-0.0550953,4.99418e-08,-2.11702e-06,-4.45929e-08,0,0,-1.49185e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,3.05749e-06,0.00339941,0.00339912,0.00739825,0.478053,0.47806,0.530253,0.0206295,0.0206295,0.369156,9.67111e-07,9.67111e-07,9.99974e-07,4e-06,4e-06,3.99612e-06,0,0,0,0,0,0,0,0 +1185000,0.99972,-0.0110493,-0.0127801,-0.0165422,0.0105042,-0.00320134,-0.151796,0.000948076,-0.000202109,-0.0695985,-6.90706e-07,-6.81453e-06,-1.24191e-07,0,0,-1.57127e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,2.93855e-06,0.00247981,0.00247963,0.0079129,0.267211,0.267215,0.538284,0.00905214,0.00905216,0.441868,8.82401e-07,8.82403e-07,9.99906e-07,4e-06,4e-06,3.9961e-06,0,0,0,0,0,0,0,0 +1285000,0.999717,-0.0110792,-0.013054,-0.0164982,0.0137383,-0.00402021,-0.165326,0.00216359,-0.000581329,-0.0854412,-6.90706e-07,-6.81453e-06,-1.24191e-07,0,0,-1.57127e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,3.21786e-06,0.0028631,0.00286286,0.00847774,0.363878,0.363885,0.547115,0.0191651,0.0191653,0.52572,8.82401e-07,8.82403e-07,9.99906e-07,4e-06,4e-06,3.99611e-06,0,0,0,0,0,0,0,0 +1385000,0.999723,-0.0110103,-0.0127015,-0.0164742,0.00884309,-0.00296782,-0.177908,0.000873293,-0.000243153,-0.102594,-2.04449e-06,-1.2483e-05,-2.09704e-07,0,0,-1.63645e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,3.11044e-06,0.00198877,0.00198865,0.00909238,0.171571,0.171575,0.556743,0.0083586,0.00835862,0.620974,7.70981e-07,7.70983e-07,9.99818e-07,4e-06,4e-06,3.9961e-06,0,0,0,0,0,0,0,0 +1485000,0.999719,-0.0110905,-0.0129045,-0.0164924,0.0119022,-0.00370286,-0.192233,0.00192499,-0.000563666,-0.121082,-2.04449e-06,-1.2483e-05,-2.09704e-07,0,0,-1.63645e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,3.41836e-06,0.00233704,0.00233689,0.00975716,0.242067,0.242074,0.56717,0.0162905,0.0162907,0.727918,7.70981e-07,7.70983e-07,9.99818e-07,4e-06,4e-06,3.99611e-06,0,0,0,0,0,0,0,0 +1585000,0.999724,-0.0109819,-0.0126149,-0.0164979,0.00823143,-0.0020588,-0.205922,0.000810815,-0.000237979,-0.141007,-3.48262e-06,-1.80565e-05,-2.91971e-07,0,0,-1.66801e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,3.4203e-06,0.00173659,0.00173653,0.0104718,0.1272,0.127203,0.578395,0.00753193,0.00753196,0.846859,6.56482e-07,6.56484e-07,9.99726e-07,4e-06,4e-06,3.99612e-06,0,0,0,0,0,0,0,0 +1685000,0.99972,-0.0110818,-0.0127909,-0.0165248,0.0126289,-0.00481329,-0.218062,0.00187481,-0.00059383,-0.162185,-3.48262e-06,-1.80565e-05,-2.91971e-07,0,0,-1.66801e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,3.74773e-06,0.00205275,0.00205267,0.0112365,0.186462,0.186468,0.590421,0.0138714,0.0138716,0.978135,6.56482e-07,6.56484e-07,9.99726e-07,4e-06,4e-06,3.99613e-06,0,0,0,0,0,0,0,0 +1785000,0.999717,-0.0111059,-0.0130337,-0.0165447,0.0174087,-0.0071462,-0.232864,0.00335067,-0.00118341,-0.184735,-3.48262e-06,-1.80565e-05,-2.91971e-07,0,0,-1.66801e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,4.10208e-06,0.00240174,0.00240161,0.0120512,0.266815,0.266826,0.603247,0.0251807,0.0251811,1.1221,6.56482e-07,6.56485e-07,9.99726e-07,4e-06,4e-06,3.99614e-06,0,0,0,0,0,0,0,0 +1885000,0.999724,-0.0109131,-0.0126204,-0.0165675,0.0145994,-0.00608426,-0.247028,0.00209916,-0.000832639,-0.208741,-5.58209e-06,-2.46293e-05,-3.78757e-07,0,0,-1.67365e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,4.14032e-06,0.00180571,0.00180567,0.0129158,0.16315,0.163157,0.616867,0.0123711,0.0123713,1.27914,5.32085e-07,5.32087e-07,9.99632e-07,4e-06,4e-06,3.99615e-06,0,0,0,0,0,0,0,0 +1985000,0.999722,-0.0109281,-0.0127319,-0.0165596,0.0185479,-0.00731918,-0.260969,0.00377431,-0.00151836,-0.234154,-5.58209e-06,-2.46293e-05,-3.78757e-07,0,0,-1.67365e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,4.48496e-06,0.00210689,0.00210684,0.0138305,0.235655,0.235666,0.631289,0.0222676,0.0222681,1.44967,5.32086e-07,5.32087e-07,9.99632e-07,4e-06,4e-06,3.99616e-06,0,0,0,0,0,0,0,0 +2085000,0.999731,-0.0106724,-0.0121965,-0.0165908,0.0123375,-0.00560843,-0.274824,0.00210328,-0.00087578,-0.260959,-8.51046e-06,-3.26707e-05,-4.75077e-07,0,0,-1.64944e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,4.55686e-06,0.00150666,0.0015067,0.0147951,0.146622,0.146627,0.646504,0.0113683,0.0113684,1.6341,4.04342e-07,4.04344e-07,9.99545e-07,4e-06,4e-06,3.99617e-06,0,0,0,0,0,0,0,0 +2185000,0.999729,-0.0107365,-0.0123217,-0.0165933,0.0159377,-0.00628195,-0.289414,0.00351657,-0.00149576,-0.289197,-8.51046e-06,-3.26707e-05,-4.75077e-07,0,0,-1.64944e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,4.91517e-06,0.00174896,0.00174901,0.0158098,0.210266,0.210274,0.662523,0.0203171,0.0203175,1.83289,4.04342e-07,4.04344e-07,9.99546e-07,4e-06,4e-06,3.99618e-06,0,0,0,0,0,0,0,0 +2285000,0.999737,-0.0105501,-0.0117876,-0.0166091,0.0109237,-0.00428364,-0.303984,0.00185086,-0.000737683,-0.318902,-1.13391e-05,-4.00908e-05,-5.59947e-07,0,0,-1.60256e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,5.02567e-06,0.00118464,0.00118478,0.0168743,0.128273,0.128277,0.679335,0.0105102,0.0105103,2.04653,2.90729e-07,2.90728e-07,9.99469e-07,4e-06,4e-06,3.99618e-06,0,0,0,0,0,0,0,0 +2385000,0.999736,-0.0105717,-0.0118673,-0.0166011,0.0131399,-0.00529621,-0.31731,0.0030607,-0.00123697,-0.349949,-1.13391e-05,-4.00908e-05,-5.59947e-07,0,0,-1.60256e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,5.38216e-06,0.00136757,0.00136772,0.0179889,0.181106,0.181111,0.69695,0.0184948,0.0184951,2.27552,2.90729e-07,2.90729e-07,9.99469e-07,4e-06,4e-06,3.99619e-06,0,0,0,0,0,0,0,0 +2485000,0.999743,-0.0103847,-0.0114318,-0.0166135,0.00780226,-0.00292395,-0.329472,0.00155296,-0.000585634,-0.382301,-1.34874e-05,-4.60584e-05,-6.31815e-07,0,0,-1.5468e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,5.5552e-06,0.000896994,0.0008972,0.0191534,0.108508,0.108511,0.715359,0.00967057,0.00967065,2.52037,2.0276e-07,2.02757e-07,9.99406e-07,4e-06,4e-06,3.9962e-06,0,0,0,0,0,0,0,0 +2585000,0.999742,-0.0104239,-0.0115025,-0.0165968,0.00929095,-0.00277751,-0.343195,0.00241653,-0.000866416,-0.415926,-1.34874e-05,-4.60584e-05,-6.31815e-07,0,0,-1.5468e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,5.91664e-06,0.00103011,0.00103034,0.020368,0.15068,0.150684,0.73457,0.0166302,0.0166304,2.78164,2.0276e-07,2.02757e-07,9.99406e-07,4e-06,4e-06,3.99621e-06,0,0,0,0,0,0,0,0 +2685000,0.999746,-0.0103141,-0.0112307,-0.0166006,0.00498836,-0.00082403,-0.356256,0.00115934,-0.00037715,-0.45096,-1.47737e-05,-5.01819e-05,-6.88362e-07,0,0,-1.49624e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,6.15435e-06,0.000671478,0.000671713,0.0216324,0.0902532,0.0902555,0.754576,0.00886233,0.00886238,3.05991,1.40504e-07,1.40497e-07,9.99352e-07,4e-06,4e-06,3.99621e-06,0,0,0,0,0,0,0,0 +2785000,0.999745,-0.0102919,-0.0113506,-0.0166055,0.00587219,-0.00112477,-0.368436,0.00170691,-0.000490661,-0.487199,-1.47737e-05,-5.01819e-05,-6.88362e-07,0,0,-1.49624e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,6.54653e-06,0.000767411,0.000767618,0.0229469,0.123297,0.123301,0.775384,0.0148475,0.0148477,3.35577,1.40504e-07,1.40497e-07,9.99352e-07,4e-06,4e-06,3.99622e-06,0,0,0,0,0,0,0,0 +2885000,0.999746,-0.0102773,-0.0111622,-0.0166504,0.00297893,-0.000395802,-0.380623,0.00081154,-0.000187033,-0.524675,-1.53365e-05,-5.2666e-05,-7.30853e-07,0,0,-1.45928e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,6.87997e-06,0.000505931,0.000506148,0.024311,0.074804,0.074807,0.796988,0.00811991,0.00811996,3.66985,9.81646e-08,9.81522e-08,9.993e-07,4e-06,4e-06,3.99622e-06,0,0,0,0,0,0,0,0 +2985000,0.999747,-0.0102553,-0.0112032,-0.0166067,0.00446986,-0.000166719,-0.394401,0.00120227,-0.000227821,-0.563429,-1.53365e-05,-5.2666e-05,-7.30853e-07,0,0,-1.45928e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,7.2521e-06,0.000575515,0.00057573,0.0257255,0.100801,0.100805,0.819393,0.0132525,0.0132527,4.00278,9.81647e-08,9.81523e-08,9.993e-07,4e-06,4e-06,3.99623e-06,0,0,0,0,0,0,0,0 +3085000,0.999748,-0.0102449,-0.0110944,-0.0165994,0.00203413,0.000269205,-0.406812,0.000597363,-7.47543e-05,-0.603508,-1.55316e-05,-5.4192e-05,-7.6432e-07,0,0,-1.43326e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,7.59609e-06,0.000387005,0.000387189,0.0271894,0.0624176,0.0624208,0.842594,0.00746182,0.00746188,4.35524,6.95679e-08,6.95493e-08,9.99252e-07,4e-06,4e-06,3.99622e-06,0,0,0,0,0,0,0,0 +3185000,0.999747,-0.0102881,-0.0110949,-0.0166652,0.00261467,0.00116192,-0.420885,0.000807255,-1.66481e-05,-0.644885,-1.55316e-05,-5.4192e-05,-7.6432e-07,0,0,-1.43326e-06,0.191514,0.00185997,0.404127,0,0,0,0,0,8.08873e-06,0.000438212,0.000438446,0.0287037,0.083064,0.0830681,0.866595,0.0118841,0.0118843,4.72793,6.9568e-08,6.95494e-08,9.99252e-07,4e-06,4e-06,3.99623e-06,0,0,0,0,0,0,0,0 +3285000,0.701637,0.000871347,-0.0150624,0.712375,0.00205559,0.00109695,-0.433446,0.00041899,5.60196e-05,-0.687606,-1.54297e-05,-5.50655e-05,-7.95374e-07,0,0,-1.41857e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00122249,0.00030044,0.00030043,0.0184788,0.0526107,0.0526128,0.891394,0.00688816,0.00688823,5.12156,5.00578e-08,5.00329e-08,9.99203e-07,4e-06,4e-06,3.99623e-06,0,0,0,0,0,0,0,0 +3385000,0.703027,0.0009077,-0.0150464,0.711003,0.00222349,0.00104745,-0.446891,0.000627231,0.000186165,-0.73161,-1.54298e-05,-5.50654e-05,-8.028e-07,0,0,-1.41857e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00119054,0.000300584,0.000300863,0.00754229,0.053949,0.0539485,0.916993,0.0104947,0.0104948,5.53687,5.00575e-08,5.00327e-08,9.98239e-07,4e-06,4e-06,3.99624e-06,0,0,0,0,0,0,0,0 +3485000,0.70384,0.000912779,-0.0150788,0.710198,0.0020629,0.00171202,-0.459796,0.000367248,0.000148319,-0.776957,-1.51483e-05,-5.56928e-05,8.30235e-07,0,0,-1.41668e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00121458,0.000302527,0.000302862,0.00507472,0.0306476,0.0306386,0.943389,0.00615882,0.00615885,5.97462,3.78057e-08,3.77791e-08,9.93525e-07,4e-06,4e-06,3.99625e-06,0,0,0,0,0,0,0,0 +3585000,0.702861,0.000936012,-0.0150605,0.711167,0.00312702,0.00113959,-0.473305,0.000636736,0.000281521,-0.823619,-1.52408e-05,-5.56188e-05,-3.3147e-06,0,0,-1.41639e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00126726,0.0003072,0.00030755,0.00420134,0.0363313,0.0363062,0.970584,0.00864883,0.00864861,6.43562,3.78022e-08,3.77767e-08,9.86113e-07,4e-06,4e-06,3.99626e-06,0,0,0,0,0,0,0,0 +3685000,0.702933,0.000939886,-0.0150723,0.711096,0.00344369,0.00149284,-0.48707,0.000459848,0.000209357,-0.871597,-1.49485e-05,-5.62066e-05,-1.6323e-06,0,0,-1.44388e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133888,0.00030464,0.000304929,0.00350528,0.0282524,0.0282195,0.998574,0.00544157,0.00544132,6.92065,3.11093e-08,3.10942e-08,9.69546e-07,4e-06,4e-06,3.99624e-06,0,0,0,0,0,0,0,0 +3785000,0.703333,0.000915315,-0.0151066,0.7107,0.00496018,0.00179594,-0.500085,0.000865214,0.000372312,-0.920968,-1.48278e-05,-5.6302e-05,3.69425e-06,0,0,-1.44439e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00142813,0.000311623,0.000311914,0.0030701,0.0375394,0.0374823,1.02737,0.0075113,0.00750991,7.43058,3.10966e-08,3.10862e-08,9.44479e-07,4e-06,4e-06,3.99625e-06,0,0,0,0,0,0,0,0 +3885000,0.703456,0.000963708,-0.0150419,0.710579,0.00458651,0.00125405,-0.514048,0.00134431,0.000522976,-0.971647,-1.47952e-05,-5.63295e-05,5.17044e-06,0,0,-1.44449e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0015296,0.000320156,0.000320435,0.00277173,0.0493655,0.0492895,1.05696,0.0104863,0.0104823,7.96626,3.10798e-08,3.10743e-08,9.09799e-07,4e-06,4e-06,3.99626e-06,0,0,0,0,0,0,0,0 +3985000,0.703211,0.00103389,-0.0149289,0.710824,0.00347091,0.0019525,-0.527857,0.000993822,0.00037343,-1.02366,-1.47515e-05,-5.6789e-05,-5.31838e-07,0,0,-1.5251e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00163627,0.000301087,0.00030118,0.00255298,0.0450911,0.0450389,1.08733,0.00715604,0.00715336,8.52853,2.77693e-08,2.77911e-08,8.65713e-07,4e-06,4e-06,3.99617e-06,0,0,0,0,0,0,0,0 +4085000,0.703228,0.000995615,-0.0148888,0.710808,0.00403674,0.00275245,-0.541046,0.00135098,0.00061975,-1.07709,-1.47458e-05,-5.67943e-05,-2.62964e-07,0,0,-1.52512e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0017439,0.000311253,0.000311333,0.00238852,0.0593387,0.0592727,1.11852,0.0104191,0.0104133,9.11838,2.77444e-08,2.77727e-08,8.14174e-07,4e-06,4e-06,3.99618e-06,0,0,0,0,0,0,0,0 +4185000,0.703088,0.00100845,-0.0147646,0.710949,0.00351098,0.00302234,-0.55546,0.000925745,0.000537039,-1.13184,-1.47742e-05,-5.70989e-05,-3.84606e-06,0,0,-1.65669e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0018603,0.000268403,0.000268164,0.00229042,0.0507241,0.0506995,1.15048,0.00725721,0.00725457,9.73659,2.65264e-08,2.65774e-08,7.71486e-07,4e-06,4e-06,3.99601e-06,0,0,0,0,0,0,0,0 +4285000,0.703296,0.00102692,-0.0147835,0.710743,0.00182314,0.00356943,-0.568617,0.00121654,0.000860023,-1.18808,-1.46737e-05,-5.71896e-05,8.04332e-07,0,0,-1.6571e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00195602,0.000280005,0.000279755,0.00218045,0.0654376,0.0654274,1.18326,0.0109092,0.0109047,10.3843,2.64982e-08,2.65547e-08,7.11163e-07,4e-06,4e-06,3.99602e-06,0,0,0,0,0,0,0,0 +4385000,0.703886,0.00103428,-0.0146685,0.710161,-0.000268434,0.00244277,-0.582867,0.000569534,0.000604775,-1.24554,-1.44425e-05,-5.76626e-05,1.50689e-05,0,0,-1.81533e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00203568,0.000222562,0.000221843,0.00208707,0.0503406,0.0503669,1.21681,0.00736153,0.00736056,11.0623,2.60972e-08,2.61585e-08,6.48903e-07,4e-06,4e-06,3.99581e-06,0,0,0,0,0,0,0,0 +4485000,0.703489,0.0010631,-0.0146466,0.710555,-0.000672014,0.00218402,-0.597721,0.000498423,0.000830294,-1.30454,-1.46501e-05,-5.74653e-05,5.20306e-06,0,0,-1.81465e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00210334,0.000235307,0.00023458,0.00201137,0.0637404,0.063785,1.25118,0.01113,0.0111298,11.7719,2.60702e-08,2.61342e-08,5.87709e-07,4e-06,4e-06,3.99582e-06,0,0,0,0,0,0,0,0 +4585000,0.703942,0.00100433,-0.0145994,0.710106,-0.00106875,0.00245564,-0.612174,0.000136471,0.000533379,-1.36496,-1.45424e-05,-5.77882e-05,1.58621e-05,0,0,-1.90498e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00215288,0.000180449,0.000179163,0.00194492,0.0453619,0.0454026,1.28633,0.00722652,0.00722733,12.5137,2.55276e-08,2.558e-08,5.2855e-07,4e-06,4e-06,3.99563e-06,0,0,0,0,0,0,0,0 +4685000,0.704446,0.000987719,-0.0145742,0.709607,-0.000364425,0.00246148,-0.626181,4.80882e-05,0.000782339,-1.42689,-1.43324e-05,-5.79946e-05,2.60816e-05,0,0,-1.9054e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00219127,0.000193994,0.000192697,0.0018894,0.0566813,0.0567355,1.3223,0.0107973,0.0108002,13.2892,2.55045e-08,2.55575e-08,4.73402e-07,4e-06,4e-06,3.99564e-06,0,0,0,0,0,0,0,0 +4785000,0.704052,0.000900703,-0.0145471,0.709999,-0.000149626,0.00164942,-0.640941,-9.9146e-06,0.000464204,-1.49021,-1.46654e-05,-5.79241e-05,1.51182e-05,0,0,-1.94655e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0022144,0.000150756,0.000148956,0.0018398,0.0391263,0.0391597,1.35905,0.00688943,0.00689096,14.0991,2.44939e-08,2.45313e-08,4.22374e-07,4e-06,4e-06,3.99552e-06,0,0,0,0,0,0,0,0 +4885000,0.704322,0.000884567,-0.0145656,0.70973,0.000604872,0.00170643,-0.655736,-2.667e-07,0.000653911,-1.55502,-1.45737e-05,-5.80164e-05,1.96921e-05,0,0,-1.94659e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00226189,0.000164789,0.000162965,0.00181064,0.048605,0.0486477,1.39662,0.0101116,0.0101152,14.9449,2.44798e-08,2.45171e-08,3.87171e-07,4e-06,4e-06,3.99553e-06,0,0,0,0,0,0,0,0 +4985000,0.70413,0.000908059,-0.0144941,0.709923,0.000156579,0.00197266,-0.670499,2.91234e-05,0.000419559,-1.62127,-1.48166e-05,-5.80501e-05,1.38777e-05,0,0,-1.97057e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00226502,0.000132879,0.000130662,0.00177119,0.0337472,0.0337682,1.43497,0.00647384,0.00647534,15.8273,2.30491e-08,2.30733e-08,3.44408e-07,4e-06,4e-06,3.99547e-06,0,0,0,0,0,0,0,0 +5085000,0.704537,0.00088895,-0.0145282,0.709518,-4.30217e-05,0.00168262,-0.685267,2.9867e-05,0.000603484,-1.68902,-1.46638e-05,-5.82034e-05,2.15627e-05,0,0,-1.97043e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0022619,0.000147101,0.000144854,0.00173686,0.0419261,0.0419527,1.47413,0.00934289,0.00934596,16.7478,2.30342e-08,2.30583e-08,3.06462e-07,4e-06,4e-06,3.99548e-06,0,0,0,0,0,0,0,0 +5185000,0.705085,0.000865908,-0.0144712,0.708975,0.000435831,0.00126992,-0.698872,4.00596e-05,0.000350809,-1.75823,-1.46009e-05,-5.85477e-05,3.12103e-05,0,0,-1.9819e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00225181,0.000122801,0.000120302,0.00170561,0.0298132,0.0298231,1.51409,0.00606765,0.00606883,17.7073,2.12909e-08,2.13057e-08,2.72761e-07,4e-06,4e-06,3.99544e-06,0,0,0,0,0,0,0,0 +5285000,0.705521,0.000892848,-0.0144489,0.708541,-0.000251793,-0.00022385,-0.713212,7.75639e-05,0.00040553,-1.8288,-1.44851e-05,-5.86629e-05,3.70693e-05,0,0,-1.98166e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00223822,0.000136936,0.000134387,0.00167733,0.0371857,0.0371985,1.55485,0.00864401,0.00864614,18.7072,2.12795e-08,2.12943e-08,2.43042e-07,4e-06,4e-06,3.99545e-06,0,0,0,0,0,0,0,0 +5385000,0.705152,0.000985199,-0.0144351,0.708908,-0.000187114,-0.00205154,-0.727386,1.9716e-05,0.000111313,-1.90084,-1.47114e-05,-5.85716e-05,2.86292e-05,0,0,-1.98396e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00222093,0.000116725,0.000114012,0.00165167,0.0271922,0.0271959,1.5964,0.00571041,0.0057112,19.7486,1.92964e-08,1.9305e-08,2.1696e-07,4e-06,4e-06,3.99544e-06,0,0,0,0,0,0,0,0 +5485000,0.705163,0.00102396,-0.0143954,0.708898,-0.000188797,-0.00248183,-0.740667,1.87685e-05,-0.000129287,-1.97423,-1.47394e-05,-5.85441e-05,2.72076e-05,0,0,-1.98406e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00223223,0.000130475,0.000127705,0.00163617,0.0340905,0.0340934,1.63876,0.00806703,0.00806832,20.8329,1.92897e-08,1.92985e-08,1.99486e-07,4e-06,4e-06,3.99545e-06,0,0,0,0,0,0,0,0 +5585000,0.705135,0.00103969,-0.0143704,0.708927,-0.000559596,-0.00251137,-0.755011,-2.47287e-05,-0.000207264,-2.049,-1.47194e-05,-5.83946e-05,2.48532e-05,0,0,-1.98686e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00220894,0.000111809,0.000108968,0.00161449,0.0254952,0.0254928,1.68192,0.00541145,0.00541188,21.9611,1.71228e-08,1.71272e-08,1.78641e-07,4e-06,4e-06,3.99545e-06,0,0,0,0,0,0,0,0 +5685000,0.704826,0.00109142,-0.0143024,0.709235,-0.0017163,-0.00304645,-0.770182,-0.000117786,-0.000470992,-2.12524,-1.48321e-05,-5.82849e-05,1.91091e-05,0,0,-1.98742e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00218451,0.00012486,0.000121954,0.00159493,0.0321107,0.0321057,1.72587,0.00760982,0.00761034,23.1347,1.71158e-08,1.71206e-08,1.60314e-07,4e-06,4e-06,3.99546e-06,0,0,0,0,0,0,0,0 +5785000,0.704597,0.001158,-0.0142999,0.709463,-0.00298092,-0.00280311,-0.00303779,-0.000173468,-0.000396554,-365.429,-1.47112e-05,-5.79885e-05,1.43772e-05,0,0,-1.99699e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0021592,0.000106297,0.000103379,0.00157703,0.024316,0.0243088,9.99879,0.00516443,0.00516454,2.00225,1.48377e-08,1.48397e-08,1.44218e-07,4e-06,4e-06,3.99546e-06,0,0,0,0,0,0,0,0 +5885000,0.704474,0.00116391,-0.0142687,0.709586,-0.00356442,-0.00245435,-0.00579809,-0.000465582,-0.000645752,-365.42,-1.47656e-05,-5.79366e-05,1.16233e-05,0,0,-2.02577e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00213385,0.000118344,0.000115371,0.00156061,0.0306657,0.0306544,9.73938,0.00724604,0.00724594,0.709951,1.48323e-08,1.48347e-08,1.30038e-07,4e-06,4e-06,3.99547e-06,0,0,0,0,0,0,0,0 +5985000,0.704454,0.00120575,-0.0142667,0.709605,-0.00571984,-0.0028318,0.0038086,-0.000963281,-0.000915015,-365.403,-1.47802e-05,-5.79226e-05,1.08868e-05,0,0,-2.12893e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00210866,0.000131138,0.000128104,0.00154558,0.0382562,0.038239,8.83902,0.0101614,0.0101608,0.518921,1.48275e-08,1.48304e-08,1.17561e-07,4e-06,4e-06,3.99546e-06,0,0,0,0,0,0,0,0 +6085000,0.704836,0.00121021,-0.0142873,0.709226,-0.00605772,-0.00136597,-0.0126427,-0.00100289,-0.000611105,-365.405,-1.42615e-05,-5.78232e-05,1.56839e-05,0,0,-2.11806e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00208372,0.000110166,0.000107196,0.00153144,0.0293607,0.0293448,7.28748,0.00694191,0.00694131,0.482341,1.25409e-08,1.25421e-08,1.06524e-07,4e-06,4e-06,3.99537e-06,0,0,0,0,0,0,0,0 +6185000,0.704841,0.00115664,-0.0142604,0.709221,-0.00812101,-0.00189629,-0.0130962,-0.00171753,-0.000762373,-365.401,-1.42919e-05,-5.77947e-05,1.41556e-05,0,0,-2.27441e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00208274,0.000121596,0.000118585,0.00152251,0.0365655,0.0365433,5.96608,0.00972679,0.00972529,0.537941,1.25381e-08,1.25396e-08,9.90897e-08,4e-06,4e-06,3.99522e-06,0,0,0,0,0,0,0,0 +6285000,0.705126,0.00110918,-0.0143353,0.708936,-0.00650199,-0.000383389,-0.0110314,-0.0014345,-0.000436212,-365.395,-1.35721e-05,-5.77621e-05,1.71016e-05,0,0,-2.52806e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00205797,0.000100378,9.74958e-05,0.00150978,0.027926,0.0279096,4.37463,0.00666734,0.00666641,0.516967,1.03584e-08,1.03587e-08,9.0164e-08,4e-06,4e-06,3.99486e-06,0,0,0,0,0,0,0,0 +6385000,0.705519,0.00117359,-0.0142449,0.708547,-0.00755228,-0.000272296,-0.0439104,-0.00215177,-0.000467562,-365.407,-1.34843e-05,-5.78433e-05,2.14701e-05,0,0,-2.11389e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00203442,0.000110358,0.000107414,0.00149798,0.0346565,0.0346349,3.15615,0.00932364,0.00932166,0.485838,1.03553e-08,1.03561e-08,8.22552e-08,4e-06,4e-06,3.99432e-06,0,0,0,0,0,0,0,0 +6485000,0.705697,0.00113938,-0.0143772,0.708367,-0.00584833,0.000222699,-0.0486984,-0.00157909,-0.000211207,-365.407,-1.2701e-05,-5.78901e-05,2.27678e-05,0,0,-2.45022e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00201168,8.9644e-05,8.68632e-05,0.00148661,0.0262591,0.0262451,2.27834,0.00640157,0.00640053,0.448309,8.38415e-09,8.38404e-09,7.52044e-08,4e-06,4e-06,3.99352e-06,0,0,0,0,0,0,0,0 +6585000,0.705451,0.00113562,-0.0143866,0.708611,-0.006002,2.44531e-05,-0.0894239,-0.00212764,-0.000196356,-365.429,-1.27961e-05,-5.78039e-05,1.81227e-05,0,0,-1.27896e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00198971,9.81295e-05,9.53131e-05,0.00147606,0.032432,0.0324152,1.6665,0.00891905,0.00891706,0.410362,8.38163e-09,8.38197e-09,6.88984e-08,4e-06,4e-06,3.99242e-06,0,0,0,0,0,0,0,0 +6685000,0.705358,0.00108481,-0.0144406,0.708704,-0.00346643,0.000572833,-0.0732188,-0.00139551,-7.49692e-05,-365.418,-1.21631e-05,-5.7827e-05,1.5561e-05,0,0,-3.2572e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00196846,7.87145e-05,7.60731e-05,0.00146601,0.0244052,0.0243962,1.24585,0.00613465,0.00613371,0.376164,6.68294e-09,6.68238e-09,6.32624e-08,4e-06,4e-06,3.99095e-06,0,0,0,0,0,0,0,0 +6785000,0.705637,0.00107451,-0.0144157,0.708426,-0.00404707,6.27119e-05,-0.109105,-0.00177304,-2.35534e-05,-365.443,-1.21076e-05,-5.78773e-05,1.82544e-05,0,0,-1.59947e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00196529,8.58082e-05,8.31384e-05,0.00145996,0.0299814,0.0299703,1.01663,0.00850214,0.00850048,0.378799,6.6814e-09,6.68115e-09,5.94214e-08,4e-06,4e-06,3.98955e-06,0,0,0,0,0,0,0,0 +6885000,0.70552,0.00101666,-0.0144,0.708543,-0.00416447,-9.37883e-05,-0.117648,-0.00120493,-1.08863e-05,-365.449,-1.16263e-05,-5.79146e-05,1.60844e-05,0,0,-2.19859e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00194452,6.82889e-05,6.57865e-05,0.00145102,0.0224518,0.0224446,0.787985,0.00586541,0.00586467,0.346716,5.27456e-09,5.27346e-09,5.475e-08,4e-06,4e-06,3.98711e-06,0,0,0,0,0,0,0,0 +6985000,0.705341,0.00106031,-0.0143778,0.708722,-0.00357621,0.000390333,-0.125625,-0.00160351,2.51791e-05,-365.456,-1.16916e-05,-5.78562e-05,1.29562e-05,0,0,-3.13509e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00192484,7.41551e-05,7.16215e-05,0.00144258,0.0274247,0.0274169,0.622716,0.00807552,0.0080742,0.318725,5.27282e-09,5.27209e-09,5.05416e-08,4e-06,4e-06,3.9839e-06,0,0,0,0,0,0,0,0 +7085000,0.704829,0.000989585,-0.014404,0.70923,-0.00193441,-0.000607271,-0.124035,-0.000996326,-1.71486e-05,-365.454,-1.139e-05,-5.7802e-05,6.84206e-06,0,0,-5.87891e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00190546,5.88294e-05,5.64535e-05,0.00143475,0.0204944,0.020491,0.502242,0.00559693,0.00559638,0.294864,4.14257e-09,4.14111e-09,4.67438e-08,4e-06,4e-06,3.97974e-06,0,0,0,0,0,0,0,0 +7185000,0.704701,0.000980985,-0.0143608,0.709359,-0.00293003,-0.00113312,-0.144611,-0.0012319,-9.00088e-05,-365.473,-1.14348e-05,-5.77625e-05,4.72371e-06,0,0,-4.65321e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00188692,6.36306e-05,6.1237e-05,0.00142744,0.0248946,0.0248899,0.412265,0.00764799,0.00764709,0.273973,4.14113e-09,4.14e-09,4.3305e-08,4e-06,4e-06,3.97436e-06,0,0,0,0,0,0,0,0 +7285000,0.704694,0.000957121,-0.014348,0.709366,-0.00235596,-0.00118816,-0.145855,-0.000810848,-0.000137281,-365.474,-1.11323e-05,-5.77481e-05,4.32763e-06,0,0,-8.4585e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00186885,5.05415e-05,4.82731e-05,0.00142056,0.0186212,0.0186186,0.344664,0.00533395,0.00533357,0.255987,3.25218e-09,3.25044e-09,4.01908e-08,4e-06,4e-06,3.96757e-06,0,0,0,0,0,0,0,0 +7385000,0.704594,0.000953149,-0.0143216,0.709465,-0.001501,-0.000369927,-0.156372,-0.00102711,-0.00020002,-365.486,-1.11613e-05,-5.77224e-05,2.96507e-06,0,0,-9.93116e-06,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0018517,5.44677e-05,5.21867e-05,0.0014141,0.0224858,0.0224836,0.292872,0.00722993,0.00722932,0.240117,3.251e-09,3.24954e-09,3.73621e-08,4e-06,4e-06,3.95897e-06,0,0,0,0,0,0,0,0 +7485000,0.704766,0.000981688,-0.0142912,0.709295,-0.00130126,-0.000355452,-0.162695,-0.000642147,-0.000124842,-365.494,-1.09129e-05,-5.77203e-05,3.98699e-06,0,0,-1.31101e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00184799,4.34656e-05,4.12814e-05,0.00140988,0.0168714,0.0168703,0.263719,0.00508038,0.00508014,0.239887,2.56145e-09,2.55947e-09,3.54068e-08,4e-06,4e-06,3.95111e-06,0,0,0,0,0,0,0,0 +7585000,0.704953,0.000969945,-0.0142248,0.70911,-0.00185361,0.000234982,-0.167124,-0.000763735,-0.000135142,-365.5,-1.08755e-05,-5.77526e-05,5.71662e-06,0,0,-1.83433e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00183164,4.6678e-05,4.44832e-05,0.00140397,0.0202658,0.0202642,0.230763,0.00682903,0.00682866,0.226153,2.56044e-09,2.55871e-09,3.30062e-08,4e-06,4e-06,3.93851e-06,0,0,0,0,0,0,0,0 +7685000,0.704873,0.00101446,-0.0141885,0.709191,-0.00199358,0.000430233,-0.16438,-0.000529747,-5.4388e-05,-365.496,-1.07305e-05,-5.7731e-05,4.87237e-06,0,0,-2.98336e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00181591,3.75138e-05,3.53972e-05,0.00139828,0.0152875,0.0152865,0.205196,0.00483939,0.00483923,0.214199,2.02889e-09,2.02685e-09,3.0817e-08,4e-06,4e-06,3.92324e-06,0,0,0,0,0,0,0,0 +7785000,0.704557,0.00100828,-0.0142133,0.709504,-0.00189895,0.00103466,-0.164148,-0.000704925,1.47684e-05,-365.496,-1.07985e-05,-5.76708e-05,1.7129e-06,0,0,-4.09178e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00180092,4.0154e-05,3.80351e-05,0.00139287,0.0182687,0.0182679,0.185138,0.00645146,0.00645122,0.203587,2.02805e-09,2.02623e-09,2.88134e-08,4e-06,4e-06,3.90468e-06,0,0,0,0,0,0,0,0 +7885000,0.704679,0.000995452,-0.0142395,0.709383,-0.00265242,0.0021615,-0.163415,-0.000509539,9.58573e-05,-365.493,-1.06447e-05,-5.77197e-05,2.41554e-06,0,0,-5.5248e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00178634,3.25438e-05,3.05051e-05,0.00138763,0.0138715,0.0138706,0.169383,0.00461294,0.00461283,0.194158,1.61936e-09,1.61733e-09,2.69744e-08,4e-06,4e-06,3.88231e-06,0,0,0,0,0,0,0,0 +7985000,0.704795,0.0010071,-0.0142265,0.709268,-0.00287392,0.00278588,-0.170147,-0.000804805,0.000313097,-365.501,-1.06281e-05,-5.77338e-05,3.16973e-06,0,0,-6.26678e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00177251,3.47291e-05,3.26845e-05,0.00138271,0.0165015,0.0165005,0.157133,0.00610014,0.00609995,0.185907,1.61866e-09,1.61682e-09,2.52901e-08,4e-06,4e-06,3.85599e-06,0,0,0,0,0,0,0,0 +8085000,0.704992,0.000983765,-0.014225,0.709072,-0.0034583,0.00358259,-0.182004,-0.00114143,0.000643535,-365.517,-1.05931e-05,-5.77643e-05,4.7776e-06,0,0,-6.4272e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00176934,3.69893e-05,3.49455e-05,0.00137966,0.0194704,0.0194692,0.152048,0.00803651,0.00803622,0.187037,1.61821e-09,1.6165e-09,2.41174e-08,4e-06,4e-06,3.83329e-06,0,0,0,0,0,0,0,0 +8185000,0.704781,0.000924558,-0.014212,0.709282,-0.0036587,0.00412923,-0.188417,-0.000895104,0.000703705,-365.525,-1.04898e-05,-5.78228e-05,2.69088e-06,0,0,-7.52286e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00175617,3.02272e-05,2.82626e-05,0.00137496,0.0149477,0.0149467,0.144218,0.00577584,0.0057757,0.180003,1.30357e-09,1.30172e-09,2.26618e-08,4e-06,4e-06,3.79857e-06,0,0,0,0,0,0,0,0 +8285000,0.70476,0.000943871,-0.0142711,0.709301,-0.00364089,0.00430616,-0.18704,-0.00127982,0.00113554,-365.523,-1.05008e-05,-5.78123e-05,2.16574e-06,0,0,-9.87422e-05,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00174352,3.21129e-05,3.01476e-05,0.00137052,0.0175671,0.0175662,0.138173,0.00755513,0.00755489,0.173776,1.30303e-09,1.30134e-09,2.13188e-08,4e-06,4e-06,3.75825e-06,0,0,0,0,0,0,0,0 +8385000,0.704821,0.000945192,-0.0142679,0.709241,-0.00294534,0.0042656,-0.186834,-0.000963911,0.00101923,-365.522,-1.03352e-05,-5.79766e-05,2.90754e-06,0,0,-0.0001223,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00173111,2.65195e-05,2.46181e-05,0.00136641,0.0135884,0.0135881,0.133629,0.00547814,0.00547803,0.16837,1.05981e-09,1.05804e-09,2.00803e-08,4e-06,4e-06,3.7124e-06,0,0,0,0,0,0,0,0 +8485000,0.704695,0.000918302,-0.0142879,0.709366,-0.00309942,0.00505222,-0.186367,-0.00130305,0.00147329,-365.522,-1.03521e-05,-5.79611e-05,2.11622e-06,0,0,-0.000147682,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00171924,2.80934e-05,2.61974e-05,0.00136254,0.0159102,0.01591,0.130202,0.00711709,0.00711692,0.163601,1.05937e-09,1.05772e-09,1.89345e-08,4e-06,4e-06,3.66019e-06,0,0,0,0,0,0,0,0 +8585000,0.704549,0.000886908,-0.0142535,0.709512,-0.00277464,0.00578544,-0.186968,-0.000987243,0.00127986,-365.524,-1.02456e-05,-5.81092e-05,7.03993e-07,0,0,-0.0001733,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00170793,2.34387e-05,2.16022e-05,0.00135857,0.0124036,0.0124036,0.127721,0.00520546,0.00520539,0.159494,8.70298e-10,8.68609e-10,1.78745e-08,4e-06,4e-06,3.60191e-06,0,0,0,0,0,0,0,0 +8685000,0.704831,0.000921715,-0.0142187,0.709232,-0.00398998,0.00632279,-0.182581,-0.00130835,0.00188086,-365.519,-1.0201e-05,-5.81475e-05,2.72325e-06,0,0,-0.000210775,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00169703,2.47785e-05,2.29352e-05,0.00135488,0.014474,0.0144733,0.125906,0.00671949,0.00671938,0.155893,8.69926e-10,8.68347e-10,1.68909e-08,4e-06,4e-06,3.53675e-06,0,0,0,0,0,0,0,0 +8785000,0.704644,0.000792309,-0.0141906,0.709419,-0.00331503,0.00639909,-0.181151,-0.00104641,0.0015907,-365.52,-1.01067e-05,-5.83216e-05,1.21479e-06,0,0,-0.000240646,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00169428,2.08744e-05,1.91008e-05,0.00135251,0.0113703,0.0113699,0.12756,0.00495611,0.00495605,0.158895,7.22063e-10,7.20441e-10,1.61995e-08,4e-06,4e-06,3.48332e-06,0,0,0,0,0,0,0,0 +8885000,0.704605,0.000812577,-0.0142084,0.709457,-0.00340032,0.00664521,-0.181555,-0.00139148,0.00227261,-365.522,-1.01197e-05,-5.83098e-05,6.10703e-07,0,0,-0.00026902,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00168394,2.20157e-05,2.02423e-05,0.00134897,0.0132272,0.013227,0.126564,0.00635907,0.00635899,0.156006,7.21747e-10,7.2022e-10,1.5335e-08,4e-06,4e-06,3.40622e-06,0,0,0,0,0,0,0,0 +8985000,0.704522,0.000787063,-0.0141828,0.70954,-0.00248735,0.00510151,-0.17608,-0.00103385,0.00175798,-365.517,-1.00166e-05,-5.85129e-05,-1.76564e-07,0,0,-0.000311693,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00167389,1.8749e-05,1.7024e-05,0.00134553,0.0104704,0.0104705,0.125873,0.00472805,0.00472801,0.153578,6.05071e-10,6.03543e-10,1.45313e-08,4e-06,4e-06,3.32299e-06,0,0,0,0,0,0,0,0 +9085000,0.704424,0.000812424,-0.0142156,0.709637,-0.00273171,0.00518675,-0.177551,-0.00127662,0.00225827,-365.523,-1.00303e-05,-5.85008e-05,-8.01546e-07,0,0,-0.000334757,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00166409,1.97324e-05,1.80089e-05,0.00134241,0.0121445,0.0121446,0.125309,0.00603225,0.00603221,0.151473,6.04809e-10,6.03363e-10,1.37819e-08,4e-06,4e-06,3.23312e-06,0,0,0,0,0,0,0,0 +9185000,0.704762,0.000777087,-0.0142272,0.7093,-0.00134275,0.00404172,-0.17844,-0.00090793,0.00170202,-365.527,-9.88121e-06,-5.8738e-05,1.40244e-06,0,0,-0.000361266,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00165465,1.69711e-05,1.52931e-05,0.00133922,0.00968498,0.00968548,0.124775,0.00451932,0.00451931,0.149641,5.1208e-10,5.10641e-10,1.30823e-08,4e-06,4e-06,3.13695e-06,0,0,0,0,0,0,0,0 +9285000,0.704807,0.000745094,-0.0142761,0.709255,-0.000355368,0.00426384,-0.177126,-0.000992618,0.0021272,-365.528,-9.87583e-06,-5.87426e-05,1.64115e-06,0,0,-0.00039713,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00164569,1.7817e-05,1.61503e-05,0.00133623,0.0112075,0.0112085,0.12426,0.00573566,0.0057357,0.148113,5.11864e-10,5.10496e-10,1.24303e-08,4e-06,4e-06,3.03584e-06,0,0,0,0,0,0,0,0 +9385000,0.70483,0.000655968,-0.014212,0.709233,0.00108009,0.00431285,-0.179315,-0.000561336,0.00159189,-365.535,-9.81888e-06,-5.89033e-05,1.43317e-06,0,0,-0.000421686,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00164355,1.54608e-05,1.38359e-05,0.00133418,0.00900239,0.00900358,0.126539,0.00432825,0.0043283,0.152439,4.37629e-10,4.36262e-10,1.19694e-08,4e-06,4e-06,2.95687e-06,0,0,0,0,0,0,0,0 +9485000,0.705036,0.000639132,-0.014244,0.709029,0.00153981,0.00401024,-0.176763,-0.000435129,0.00202527,-365.538,-9.78868e-06,-5.893e-05,2.80045e-06,0,0,-0.000453068,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00163498,1.62033e-05,1.45868e-05,0.00133135,0.0103905,0.0103919,0.125793,0.00546644,0.00546657,0.151218,4.37448e-10,4.36143e-10,1.13894e-08,4e-06,4e-06,2.8477e-06,0,0,0,0,0,0,0,0 +9585000,0.705142,0.000618044,-0.0142174,0.708923,0.00137831,0.00322516,-0.173482,-0.000178821,0.0014862,-365.539,-9.75995e-06,-5.90826e-05,3.33671e-06,0,0,-0.000490458,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00162676,1.41948e-05,1.2606e-05,0.0013285,0.00840132,0.00840215,0.124843,0.004153,0.0041531,0.150104,3.77397e-10,3.76123e-10,1.0846e-08,4e-06,4e-06,2.73472e-06,0,0,0,0,0,0,0,0 +9685000,0.704981,0.000660546,-0.0142367,0.709083,0.00196541,0.00449687,-0.16784,-5.64145e-06,0.00187809,-365.537,-9.78594e-06,-5.90597e-05,2.1523e-06,0,0,-0.000534221,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00161883,1.48587e-05,1.32694e-05,0.00132579,0.00967862,0.00967981,0.123729,0.0052213,0.00522148,0.149138,3.7725e-10,3.7603e-10,1.0337e-08,4e-06,4e-06,2.61967e-06,0,0,0,0,0,0,0,0 +9785000,0.705165,0.000624355,-0.0141716,0.708902,0.00399379,0.00453037,-0.159684,0.000192897,0.00146327,-365.532,-9.7838e-06,-5.92032e-05,3.00559e-06,0,0,-0.000583046,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00161119,1.31253e-05,1.15581e-05,0.00132306,0.00787449,0.00787586,0.122368,0.00399196,0.00399208,0.148205,3.28326e-10,3.27145e-10,9.85889e-09,4e-06,4e-06,2.50259e-06,0,0,0,0,0,0,0,0 +9885000,0.705135,0.000609532,-0.0141069,0.708933,0.00457251,0.00472747,-0.156763,0.000637002,0.00192846,-365.535,-9.78523e-06,-5.92021e-05,2.93752e-06,0,0,-0.000612422,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00160368,1.37087e-05,1.21437e-05,0.00132065,0.00905362,0.00905518,0.120817,0.00499768,0.00499791,0.147356,3.28208e-10,3.27074e-10,9.41035e-09,4e-06,4e-06,2.38523e-06,0,0,0,0,0,0,0,0 +9985000,0.705035,0.000624333,-0.0141044,0.709032,0.00482334,0.00321058,-0.150943,0.000689848,0.00146859,-365.532,-9.85846e-06,-5.93063e-05,2.24806e-06,0,0,-0.0006534,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00159643,1.22109e-05,1.06614e-05,0.00131819,0.00741027,0.00741119,0.119014,0.00384363,0.00384378,0.146484,2.88024e-10,2.86938e-10,8.98821e-09,4e-06,4e-06,2.26761e-06,0,0,0,0,0,0,0,0 +10085000,0.705138,0.000633032,-0.0140995,0.708929,0.00605275,0.00215124,-0.149472,0.00123842,0.00174748,-365.537,-9.85082e-06,-5.93132e-05,2.59228e-06,0,0,-0.000676961,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00159472,1.27375e-05,1.11917e-05,0.00131655,0.0085064,0.00850711,0.119886,0.00479322,0.00479347,0.151148,2.87979e-10,2.86924e-10,8.68787e-09,4e-06,4e-06,2.1798e-06,0,0,0,0,0,0,0,0 +10185000,0.704931,0.000612942,-0.0141646,0.709134,0.00693731,0.00350649,-0.147031,0.00189406,0.00199552,-365.54,-9.87964e-06,-5.92878e-05,1.28142e-06,0,0,-0.000703358,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00158775,1.32742e-05,1.17402e-05,0.00131425,0.00970733,0.00970852,0.117622,0.00596705,0.00596742,0.150178,2.87894e-10,2.86879e-10,8.30787e-09,4e-06,4e-06,2.06415e-06,0,0,0,0,0,0,0,0 +10285000,0.704839,0.000565385,-0.0141193,0.709227,0.00745443,0.00165146,-0.135629,0.00182321,0.00142237,-365.53,-9.9886e-06,-5.93627e-05,4.54556e-07,0,0,-0.000757747,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00158105,1.18933e-05,1.03756e-05,0.00131191,0.00802481,0.00802506,0.115204,0.00460585,0.00460606,0.149211,2.54632e-10,2.53669e-10,7.94984e-09,4e-06,4e-06,1.95118e-06,0,0,0,0,0,0,0,0 +10385000,0.70484,0.000523147,-0.0140705,0.709227,0.0119197,-0.0206212,0.00583849,0.000974778,-0.0018229,-365.515,-9.98569e-06,-5.93655e-05,5.81095e-07,0,0,-0.000793313,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00157431,1.23747e-05,1.08643e-05,0.00130989,0.0346609,0.0346609,0.0375922,0.12528,0.12528,0.131927,2.54568e-10,2.5364e-10,7.61179e-09,4e-06,4e-06,1.85198e-06,0,0,0,0,0,0,0,0 +10485000,0.704709,0.000532829,-0.0140778,0.709356,0.0133297,-0.020521,0.00333434,0.00221872,-0.00388141,-365.498,-1.00013e-05,-5.93519e-05,-1.32899e-07,0,0,-0.000829472,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00156781,1.28759e-05,1.137e-05,0.00130788,0.0349369,0.0349367,0.038115,0.126249,0.126249,0.11805,2.54512e-10,2.53619e-10,7.29247e-09,4e-06,4e-06,1.77503e-06,0,0,0,0,0,0,0,0 +10585000,0.704761,0.00054605,-0.0141259,0.709304,0.0142947,-0.017948,0.00196683,0.0026891,-0.00381864,-365.488,-9.99948e-06,-5.93428e-05,4.12398e-08,0,0,-0.000850659,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0015616,1.33837e-05,1.18847e-05,0.00130583,0.030892,0.0308918,0.0363718,0.0848492,0.0848492,0.107675,2.54357e-10,2.53496e-10,6.99099e-09,4e-06,4e-06,1.71125e-06,0,0,0,0,0,0,0,0 +10685000,0.704784,0.000566741,-0.0141224,0.709281,0.0149874,-0.019277,-0.000903606,0.0041907,-0.00569478,-365.481,-9.99699e-06,-5.9345e-05,1.51251e-07,0,0,-0.000865459,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00155995,1.39116e-05,1.24156e-05,0.00130459,0.031328,0.0313274,0.0372788,0.0865246,0.0865245,0.102838,2.54352e-10,2.53514e-10,6.77574e-09,4e-06,4e-06,1.67162e-06,0,0,0,0,0,0,0,0 +10785000,0.704823,0.000532088,-0.0141395,0.709242,0.0151645,-0.0183514,-0.00344179,0.00436041,-0.00526823,-365.477,-9.99974e-06,-5.93244e-05,3.19544e-07,0,0,-0.000875425,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00155394,1.44175e-05,1.29328e-05,0.00130267,0.0280823,0.0280814,0.0358719,0.0656291,0.0656291,0.0964069,2.53904e-10,2.53097e-10,6.50217e-09,4e-06,4e-06,1.62027e-06,0,0,0,0,0,0,0,0 +10885000,0.704846,0.000458296,-0.0140995,0.70922,0.0164332,-0.0191593,-0.0074797,0.0059194,-0.00712647,-365.475,-1.00003e-05,-5.93239e-05,2.93293e-07,0,0,-0.000880497,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00154816,1.49563e-05,1.34849e-05,0.00130076,0.0286832,0.0286817,0.0368606,0.0677757,0.0677756,0.0922749,2.53878e-10,2.53099e-10,6.24303e-09,4e-06,4e-06,1.58022e-06,0,0,0,0,0,0,0,0 +10985000,0.705036,0.000450307,-0.0140953,0.709031,0.0160676,-0.0170313,-0.01145,0.00639229,-0.0082993,-365.472,-9.97662e-06,-5.92892e-05,1.13543e-06,0,0,-0.00089076,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00154259,1.54547e-05,1.39883e-05,0.00129884,0.0259851,0.0259838,0.0356087,0.0549231,0.054923,0.0882102,2.52954e-10,2.52204e-10,5.99773e-09,4e-06,4e-06,1.53501e-06,0,0,0,0,0,0,0,0 +11085000,0.705217,0.000437812,-0.014033,0.708852,0.0172814,-0.0170782,-0.0125265,0.00808359,-0.0100506,-365.465,-9.958e-06,-5.93056e-05,1.97307e-06,0,0,-0.000906058,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00153717,1.60249e-05,1.45618e-05,0.00129702,0.0267549,0.0267532,0.0366703,0.0574235,0.0574233,0.08625,2.5294e-10,2.52216e-10,5.76505e-09,4e-06,4e-06,1.50291e-06,0,0,0,0,0,0,0,0 +11185000,0.705135,0.000433744,-0.0140324,0.708934,0.0193682,-0.0153379,-0.0170369,0.00849394,-0.0103267,-365.467,-9.96303e-06,-5.92358e-05,1.61918e-06,0,0,-0.000905623,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00153178,1.64928e-05,1.50341e-05,0.00129535,0.0244484,0.0244462,0.0354981,0.0484756,0.0484754,0.0834873,2.51365e-10,2.50668e-10,5.54446e-09,4e-06,4e-06,1.45948e-06,0,0,0,0,0,0,0,0 +11285000,0.705006,0.000489733,-0.0140571,0.709062,0.0209393,-0.0154776,-0.0194026,0.010516,-0.0118599,-365.465,-9.98257e-06,-5.92187e-05,7.35096e-07,0,0,-0.000913657,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00152672,1.70933e-05,1.56345e-05,0.00129355,0.0253934,0.0253904,0.0365977,0.0512596,0.0512593,0.0828739,2.51362e-10,2.50689e-10,5.3349e-09,4e-06,4e-06,1.43228e-06,0,0,0,0,0,0,0,0 +11385000,0.704942,0.000531934,-0.0140601,0.709126,0.0198969,-0.0138265,-0.0220652,0.00945473,-0.0103294,-365.465,-1.00584e-05,-5.91567e-05,3.1835e-07,0,0,-0.00091902,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00152538,1.75133e-05,1.60539e-05,0.00129246,0.023371,0.0233679,0.0357524,0.0444452,0.0444449,0.0825031,2.48992e-10,2.4834e-10,5.18454e-09,4e-06,4e-06,1.39453e-06,0,0,0,0,0,0,0,0 +11485000,0.704785,0.000521625,-0.0140794,0.709281,0.0198338,-0.0136596,-0.0241811,0.0114423,-0.0117033,-365.465,-1.00765e-05,-5.91409e-05,-4.99146e-07,0,0,-0.000924711,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00152032,1.81229e-05,1.66719e-05,0.00129087,0.0244924,0.0244892,0.0369108,0.0474677,0.0474672,0.0827503,2.48998e-10,2.48368e-10,4.99269e-09,4e-06,4e-06,1.37039e-06,0,0,0,0,0,0,0,0 +11585000,0.704681,0.000515715,-0.0141321,0.709383,0.0167765,-0.0110492,-0.0269367,0.0101289,-0.0101771,-365.465,-1.01632e-05,-5.90745e-05,-9.7963e-07,0,0,-0.000930412,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0015153,1.84585e-05,1.70156e-05,0.00128937,0.0226753,0.022673,0.0357963,0.0419002,0.0418998,0.081036,2.45639e-10,2.45035e-10,4.81026e-09,4e-06,4e-06,1.32486e-06,0,0,0,0,0,0,0,0 +11685000,0.704651,0.000474984,-0.0141328,0.709413,0.0161041,-0.0101934,-0.0302221,0.0117507,-0.0112747,-365.469,-1.017e-05,-5.90685e-05,-1.28682e-06,0,0,-0.000929464,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00151055,1.90788e-05,1.76471e-05,0.00128779,0.0239741,0.0239719,0.036962,0.0451316,0.0451309,0.0818387,2.45653e-10,2.4507e-10,4.63655e-09,4e-06,4e-06,1.30301e-06,0,0,0,0,0,0,0,0 +11785000,0.704684,0.00051513,-0.014159,0.70938,0.0120655,-0.00863116,-0.0324518,0.00955169,-0.00909271,-365.467,-1.02845e-05,-5.89763e-05,-1.30563e-06,0,0,-0.0009378,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00150591,1.93153e-05,1.78854e-05,0.00128622,0.0223003,0.0222986,0.0358415,0.040317,0.0403165,0.0803126,2.41217e-10,2.40659e-10,4.47103e-09,4e-06,4e-06,1.25597e-06,0,0,0,0,0,0,0,0 +11885000,0.704579,0.000501774,-0.0141474,0.709484,0.0135179,-0.00916982,-0.0340462,0.0108538,-0.00998812,-365.467,-1.02958e-05,-5.89664e-05,-1.81997e-06,0,0,-0.000943633,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00150129,1.99504e-05,1.85269e-05,0.00128483,0.023776,0.0237735,0.0370067,0.0437382,0.0437374,0.0814509,2.41239e-10,2.407e-10,4.31341e-09,4e-06,4e-06,1.23574e-06,0,0,0,0,0,0,0,0 +11985000,0.70466,0.000581753,-0.014116,0.709404,0.0111894,-0.00725613,-0.0373883,0.00875395,-0.00791067,-365.47,-1.04031e-05,-5.88741e-05,-1.47845e-06,0,0,-0.000945864,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00150004,2.00659e-05,1.86336e-05,0.00128392,0.0221898,0.0221875,0.0362764,0.0393788,0.0393781,0.0816569,2.35672e-10,2.35151e-10,4.20006e-09,4e-06,4e-06,1.19208e-06,0,0,0,0,0,0,0,0 +12085000,0.70483,0.000586764,-0.0141235,0.709236,0.0122994,-0.0068231,-0.0427829,0.00992472,-0.00863784,-365.475,-1.03875e-05,-5.88877e-05,-7.75462e-07,0,0,-0.000942839,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00149564,2.071e-05,1.92828e-05,0.0012825,0.0238366,0.0238337,0.0374699,0.0429774,0.0429765,0.083042,2.357e-10,2.35196e-10,4.055e-09,4e-06,4e-06,1.17319e-06,0,0,0,0,0,0,0,0 +12185000,0.704785,0.000587707,-0.0141285,0.70928,0.0119708,-0.00455302,-0.0387744,0.00950382,-0.00743261,-365.468,-1.04192e-05,-5.88382e-05,-9.75482e-07,0,0,-0.000967078,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00149128,2.06705e-05,1.9241e-05,0.00128117,0.0222872,0.0222848,0.0363126,0.0388828,0.038882,0.0815538,2.28946e-10,2.28466e-10,3.91654e-09,4e-06,4e-06,1.1234e-06,0,0,0,0,0,0,0,0 +12285000,0.704825,0.000551345,-0.0141384,0.709241,0.0113241,-0.00420901,-0.0390026,0.0106951,-0.00785627,-365.466,-1.04159e-05,-5.88411e-05,-8.30285e-07,0,0,-0.000978054,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00148709,2.13105e-05,1.98916e-05,0.00127986,0.0240913,0.0240889,0.0374901,0.0426507,0.0426496,0.0830372,2.28981e-10,2.28516e-10,3.78441e-09,4e-06,4e-06,1.10545e-06,0,0,0,0,0,0,0,0 +12385000,0.704764,0.000537931,-0.0141492,0.7093,0.0114912,-0.00276289,-0.036313,0.0101453,-0.00672532,-365.461,-1.04534e-05,-5.87967e-05,-1.25878e-06,0,0,-0.000997711,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00148305,2.11047e-05,1.96852e-05,0.00127848,0.0225366,0.0225345,0.0363132,0.0386933,0.0386924,0.0815282,2.21107e-10,2.20665e-10,3.65814e-09,4e-06,4e-06,1.05518e-06,0,0,0,0,0,0,0,0 +12485000,0.704648,0.00049483,-0.01417,0.709415,0.0117606,-0.00162834,-0.0390488,0.0113248,-0.0069487,-365.462,-1.04662e-05,-5.87855e-05,-1.83721e-06,0,0,-0.0010017,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00147903,2.17404e-05,2.03329e-05,0.00127723,0.0244865,0.0244843,0.0374671,0.0426242,0.0426231,0.0830455,2.21148e-10,2.2072e-10,3.53747e-09,4e-06,4e-06,1.038e-06,0,0,0,0,0,0,0,0 +12585000,0.704589,0.00055703,-0.0141553,0.709475,0.00808284,0.000188944,-0.043022,0.00722333,-0.00587007,-365.467,-1.07142e-05,-5.87552e-05,-2.01731e-06,0,0,-0.00100253,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00147499,2.13649e-05,1.99548e-05,0.00127609,0.0228886,0.0228868,0.0362674,0.038716,0.0387151,0.0815005,2.1226e-10,2.11853e-10,3.42203e-09,4e-06,4e-06,9.87778e-07,0,0,0,0,0,0,0,0 +12685000,0.704543,0.000584705,-0.0141165,0.70952,0.00932528,0.00120904,-0.0459248,0.0080841,-0.00580267,-365.472,-1.07174e-05,-5.87524e-05,-2.16158e-06,0,0,-0.00100234,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00147384,2.20017e-05,2.05904e-05,0.00127542,0.0249639,0.0249618,0.0378555,0.0428042,0.042803,0.0847704,2.12319e-10,2.11922e-10,3.33872e-09,4e-06,4e-06,9.75411e-07,0,0,0,0,0,0,0,0 +12785000,0.704551,0.000678744,-0.0140679,0.709514,0.00559552,0.00138477,-0.0471114,0.00430483,-0.00489422,-365.472,-1.09517e-05,-5.87406e-05,-2.17946e-06,0,0,-0.00101179,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00146998,2.14571e-05,2.00358e-05,0.00127424,0.0232888,0.0232868,0.0366016,0.0388833,0.0388824,0.0831192,2.02578e-10,2.02204e-10,3.23177e-09,4e-06,4e-06,9.25347e-07,0,0,0,0,0,0,0,0 +12885000,0.704555,0.000617943,-0.014113,0.709508,0.00642159,0.000817432,-0.0471248,0.00490177,-0.00480661,-365.47,-1.09528e-05,-5.87396e-05,-2.23505e-06,0,0,-0.00102199,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00146628,2.20687e-05,2.06629e-05,0.00127306,0.0254723,0.0254697,0.0377099,0.0431219,0.0431207,0.0846617,2.02628e-10,2.02266e-10,3.12946e-09,4e-06,4e-06,9.09603e-07,0,0,0,0,0,0,0,0 +12985000,0.704689,0.000593102,-0.0141635,0.709375,0.00940676,0.00099227,-0.0449551,0.00778673,-0.0041005,-365.469,-1.08516e-05,-5.87424e-05,-1.79838e-06,0,0,-0.00104045,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0014627,2.13547e-05,1.99434e-05,0.00127185,0.0236921,0.0236895,0.0364284,0.039145,0.039144,0.0829746,1.92239e-10,1.91897e-10,3.03141e-09,4e-06,4e-06,8.6065e-07,0,0,0,0,0,0,0,0 +13085000,0.704491,0.000591553,-0.0141167,0.709573,0.0100246,0.00101124,-0.0450292,0.00875985,-0.0039938,-365.47,-1.08661e-05,-5.87297e-05,-2.45891e-06,0,0,-0.00104649,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00145895,2.19566e-05,2.05471e-05,0.00127093,0.0259565,0.0259533,0.0374763,0.0435249,0.0435235,0.0844518,1.92293e-10,1.91963e-10,2.93738e-09,4e-06,4e-06,8.45359e-07,0,0,0,0,0,0,0,0 +13185000,0.704473,0.000563142,-0.0141164,0.70959,0.0130016,0.00238115,-0.0402653,0.0111274,-0.00331087,-365.462,-1.08067e-05,-5.8724e-05,-2.53829e-06,0,0,-0.0010732,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0014554,2.10935e-05,1.96753e-05,0.00126988,0.024059,0.0240562,0.0361687,0.0394624,0.0394614,0.0827375,1.81488e-10,1.81177e-10,2.84727e-09,4e-06,4e-06,7.97975e-07,0,0,0,0,0,0,0,0 +13285000,0.704555,0.000569141,-0.0141204,0.709509,0.0137054,0.00314897,-0.0383159,0.0124693,-0.00303137,-365.457,-1.07999e-05,-5.87299e-05,-2.23633e-06,0,0,-0.00108591,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00145446,2.16755e-05,2.0261e-05,0.00126921,0.0263844,0.0263814,0.0376412,0.0439725,0.0439711,0.0859871,1.81556e-10,1.81253e-10,2.78213e-09,4e-06,4e-06,7.87028e-07,0,0,0,0,0,0,0,0 +13385000,0.704647,0.000508264,-0.0140749,0.709419,0.0126353,0.00383915,-0.0335426,0.00992921,-0.00254104,-365.447,-1.08827e-05,-5.87439e-05,-1.96998e-06,0,0,-0.00110863,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00145112,2.06759e-05,1.92617e-05,0.00126811,0.0243611,0.0243587,0.0362769,0.0398063,0.0398052,0.0841795,1.70569e-10,1.70285e-10,2.69832e-09,4e-06,4e-06,7.41198e-07,0,0,0,0,0,0,0,0 +13485000,0.704718,0.000534004,-0.0140747,0.709348,0.012884,0.0039349,-0.0325891,0.0112381,-0.00215797,-365.443,-1.08776e-05,-5.87483e-05,-1.74282e-06,0,0,-0.00111816,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00144784,2.12366e-05,1.98229e-05,0.00126707,0.0267236,0.0267209,0.037222,0.0444331,0.0444316,0.0856018,1.7063e-10,1.70356e-10,2.61784e-09,4e-06,4e-06,7.27175e-07,0,0,0,0,0,0,0,0 +13585000,0.704661,0.000542824,-0.0140336,0.709405,0.0115455,0.00552646,-0.0324717,0.00883474,-0.00175463,-365.444,-1.09685e-05,-5.87574e-05,-2.07114e-06,0,0,-0.0011243,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00144465,2.01466e-05,1.87241e-05,0.001266,0.0245748,0.0245731,0.0358388,0.040154,0.040153,0.0837854,1.59685e-10,1.59429e-10,2.5406e-09,4e-06,4e-06,6.8362e-07,0,0,0,0,0,0,0,0 +13685000,0.704739,0.000517846,-0.0140045,0.709328,0.0129978,0.00747803,-0.0358156,0.0100294,-0.00112702,-365.447,-1.09604e-05,-5.87644e-05,-1.70112e-06,0,0,-0.00112427,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00144143,2.06745e-05,1.92573e-05,0.0012651,0.0269541,0.0269526,0.0367099,0.044882,0.0448807,0.0851443,1.59749e-10,1.59502e-10,2.46636e-09,4e-06,4e-06,6.70133e-07,0,0,0,0,0,0,0,0 +13785000,0.704687,0.000532523,-0.0139371,0.709381,0.011564,0.00561167,-0.0357588,0.00944874,-0.00200632,-365.449,-1.10101e-05,-5.88528e-05,-1.84018e-06,0,0,-0.00113181,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00143826,1.95148e-05,1.80856e-05,0.00126421,0.0246936,0.0246924,0.035314,0.0404885,0.0404875,0.0833283,1.49045e-10,1.48815e-10,2.39505e-09,4e-06,4e-06,6.29077e-07,0,0,0,0,0,0,0,0 +13885000,0.704647,0.000485022,-0.0139695,0.709421,0.0125759,0.00587639,-0.0388919,0.0106407,-0.00143902,-365.452,-1.10115e-05,-5.88516e-05,-1.90328e-06,0,0,-0.00113161,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00143515,2.00126e-05,1.85954e-05,0.00126337,0.0270678,0.0270663,0.0361076,0.0453012,0.0453,0.0846236,1.49112e-10,1.4889e-10,2.32646e-09,4e-06,4e-06,6.16151e-07,0,0,0,0,0,0,0,0 +13985000,0.70475,0.000519564,-0.0139324,0.709319,0.0110477,0.00512938,-0.0374337,0.00996845,-0.00227192,-365.452,-1.10498e-05,-5.89387e-05,-1.59477e-06,0,0,-0.00114208,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00143439,1.88112e-05,1.73818e-05,0.00126272,0.0247098,0.0247089,0.0351417,0.0407974,0.0407964,0.0845665,1.38819e-10,1.3861e-10,2.27675e-09,4e-06,4e-06,5.80665e-07,0,0,0,0,0,0,0,0 +14085000,0.704785,0.000498821,-0.0139486,0.709284,0.0115329,0.00545969,-0.0380614,0.0110681,-0.0017526,-365.454,-1.10463e-05,-5.89417e-05,-1.43393e-06,0,0,-0.00114326,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00143142,1.92849e-05,1.78629e-05,0.00126185,0.0270572,0.0270561,0.0358776,0.0456774,0.0456763,0.0858512,1.38888e-10,1.38686e-10,2.21265e-09,4e-06,4e-06,5.68465e-07,0,0,0,0,0,0,0,0 +14185000,0.704851,0.000467223,-0.013912,0.709219,0.0125335,0.00519879,-0.0386296,0.0114095,-0.00151116,-365.457,-1.10303e-05,-5.89714e-05,-1.13617e-06,0,0,-0.001147,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00142852,1.80558e-05,1.66294e-05,0.001261,0.0246233,0.0246224,0.034446,0.041072,0.0410711,0.0839815,1.29114e-10,1.28925e-10,2.15099e-09,4e-06,4e-06,5.32435e-07,0,0,0,0,0,0,0,0 +14285000,0.704895,0.000472268,-0.0138783,0.709176,0.0134654,0.00630423,-0.0377924,0.0127047,-0.000954877,-365.456,-1.10283e-05,-5.89731e-05,-1.04717e-06,0,0,-0.00115314,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00142578,1.85054e-05,1.70797e-05,0.00126007,0.0269348,0.026934,0.0351017,0.046002,0.046001,0.0851999,1.29185e-10,1.29003e-10,2.09161e-09,4e-06,4e-06,5.20816e-07,0,0,0,0,0,0,0,0 +14385000,0.705015,0.000439566,-0.0138319,0.709057,0.0134367,0.00717024,-0.0386984,0.0127365,-0.000797094,-365.458,-1.10268e-05,-5.90112e-05,-6.29513e-07,0,0,-0.00115683,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00142306,1.72787e-05,1.58496e-05,0.00125918,0.0244464,0.024446,0.0336746,0.041307,0.0413063,0.0833355,1.20019e-10,1.19849e-10,2.0344e-09,4e-06,4e-06,4.87469e-07,0,0,0,0,0,0,0,0 +14485000,0.704991,0.000435267,-0.0137799,0.709082,0.0136984,0.00904189,-0.0410764,0.0140889,1.86553e-05,-365.464,-1.10259e-05,-5.9012e-05,-5.85099e-07,0,0,-0.00115424,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00142029,1.77003e-05,1.62721e-05,0.00125846,0.0267086,0.0267086,0.0342514,0.0462704,0.0462696,0.0844873,1.20093e-10,1.19929e-10,1.97931e-09,4e-06,4e-06,4.76444e-07,0,0,0,0,0,0,0,0 +14585000,0.704929,0.000412468,-0.0136447,0.709147,0.0110143,0.00839528,-0.0404193,0.010723,-0.0010318,-365.467,-1.11844e-05,-5.90958e-05,-8.29794e-07,0,0,-0.00116032,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0014196,1.64913e-05,1.50634e-05,0.00125794,0.0241854,0.0241857,0.033267,0.0414998,0.0414993,0.084413,1.11591e-10,1.11436e-10,1.93933e-09,4e-06,4e-06,4.48361e-07,0,0,0,0,0,0,0,0 +14685000,0.705015,0.000385429,-0.0136387,0.709061,0.0129104,0.00610547,-0.0382707,0.0119533,-0.000287614,-365.464,-1.11764e-05,-5.91028e-05,-4.67101e-07,0,0,-0.00116784,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00141696,1.68842e-05,1.54629e-05,0.00125716,0.0263898,0.0263896,0.0337857,0.0464808,0.0464802,0.0855462,1.11667e-10,1.11517e-10,1.88765e-09,4e-06,4e-06,4.3804e-07,0,0,0,0,0,0,0,0 +14785000,0.704997,0.00039478,-0.0135415,0.70908,0.0102702,0.00479311,-0.0349036,0.00893349,-0.00131196,-365.459,-1.13141e-05,-5.91716e-05,-5.11184e-07,0,0,-0.00118139,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00141438,1.57168e-05,1.42924e-05,0.00125638,0.0238561,0.023856,0.0323742,0.0416498,0.0416493,0.0836658,1.03834e-10,1.03693e-10,1.8378e-09,4e-06,4e-06,4.09736e-07,0,0,0,0,0,0,0,0 +14885000,0.70505,0.000388792,-0.0135054,0.709029,0.0117411,0.00647259,-0.0371168,0.0100188,-0.000757374,-365.462,-1.13094e-05,-5.91758e-05,-2.93402e-07,0,0,-0.00118202,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00141186,1.60883e-05,1.46658e-05,0.00125562,0.0259993,0.0259997,0.0328199,0.0466342,0.0466337,0.0847305,1.03911e-10,1.03776e-10,1.78972e-09,4e-06,4e-06,4.00009e-07,0,0,0,0,0,0,0,0 +14985000,0.70497,0.000361283,-0.0134876,0.709109,0.0103175,0.00582094,-0.0334105,0.00834993,-0.000662574,-365.459,-1.13928e-05,-5.91968e-05,-4.63824e-07,0,0,-0.00119413,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00140931,1.4962e-05,1.35453e-05,0.00125494,0.0234704,0.0234707,0.0314435,0.0417579,0.0417576,0.0828889,9.67474e-11,9.66211e-11,1.74331e-09,4e-06,4e-06,3.74223e-07,0,0,0,0,0,0,0,0 +15085000,0.704976,0.000298086,-0.013468,0.709104,0.0109023,0.0060804,-0.0349123,0.00940573,-7.69141e-05,-365.465,-1.13947e-05,-5.91951e-05,-5.4917e-07,0,0,-0.00119102,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00140701,1.53031e-05,1.38967e-05,0.00125409,0.0255409,0.0255413,0.0318211,0.0467328,0.0467324,0.0838864,9.68265e-11,9.67047e-11,1.69853e-09,4e-06,4e-06,3.65088e-07,0,0,0,0,0,0,0,0 +15185000,0.704975,0.000285171,-0.0134328,0.709105,0.00975315,0.00656525,-0.0323697,0.00784243,-4.29327e-05,-365.463,-1.14659e-05,-5.92181e-05,-5.97637e-07,0,0,-0.00120033,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00140468,1.42334e-05,1.283e-05,0.00125331,0.0230367,0.0230372,0.0304856,0.0418261,0.0418258,0.0820866,9.03115e-11,9.01974e-11,1.65527e-09,4e-06,4e-06,3.41678e-07,0,0,0,0,0,0,0,0 +15285000,0.705024,0.000258358,-0.0134757,0.709056,0.0105643,0.00733307,-0.0318047,0.00887089,0.000650889,-365.462,-1.14635e-05,-5.92202e-05,-4.90819e-07,0,0,-0.0012053,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00140413,1.45583e-05,1.31642e-05,0.00125279,0.0250394,0.0250401,0.0312022,0.0467803,0.04678,0.0847775,9.03969e-11,9.02859e-11,1.62381e-09,4e-06,4e-06,3.35269e-07,0,0,0,0,0,0,0,0 +15385000,0.705162,0.000246053,-0.0134296,0.708919,0.00987798,0.00735134,-0.0293938,0.00569513,0.000552551,-365.459,-1.15478e-05,-5.92583e-05,-2.65462e-08,0,0,-0.00121327,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00140186,1.35452e-05,1.21565e-05,0.00125204,0.0225729,0.0225739,0.0298834,0.041857,0.0418568,0.0829472,8.44948e-11,8.43908e-11,1.58308e-09,4e-06,4e-06,3.13857e-07,0,0,0,0,0,0,0,0 +15485000,0.705054,0.000263849,-0.0134403,0.709027,0.0113499,0.00731346,-0.0288746,0.0067483,0.00126726,-365.463,-1.15564e-05,-5.92506e-05,-4.27739e-07,0,0,-0.00121215,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00139964,1.38564e-05,1.24692e-05,0.00125129,0.0244998,0.0245008,0.030153,0.0467808,0.0467807,0.0838506,8.45766e-11,8.44765e-11,1.54374e-09,4e-06,4e-06,3.05927e-07,0,0,0,0,0,0,0,0 +15585000,0.704967,0.000255992,-0.0134004,0.709113,0.00926213,0.00697967,-0.026863,0.00384957,0.00102023,-365.464,-1.16478e-05,-5.92759e-05,-6.59205e-07,0,0,-0.00121573,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00139735,1.29045e-05,1.15227e-05,0.00125065,0.0220807,0.0220816,0.0288844,0.0418537,0.0418536,0.0820687,7.92462e-11,7.91527e-11,1.50568e-09,4e-06,4e-06,2.8659e-07,0,0,0,0,0,0,0,0 +15685000,0.704953,0.000266728,-0.0134304,0.709127,0.00988309,0.00735775,-0.0272771,0.00478465,0.00174283,-365.466,-1.16491e-05,-5.92748e-05,-7.16504e-07,0,0,-0.0012164,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00139518,1.3197e-05,1.18187e-05,0.00124995,0.0239398,0.0239407,0.0290958,0.046739,0.046739,0.0828903,7.93292e-11,7.92393e-11,1.46887e-09,4e-06,4e-06,2.79172e-07,0,0,0,0,0,0,0,0 +15785000,0.704948,0.000254648,-0.0134529,0.709132,0.00958514,0.0056247,-0.0282833,0.00403107,0.000383029,-365.47,-1.16962e-05,-5.93362e-05,-7.63033e-07,0,0,-0.0012159,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00139306,1.23087e-05,1.09371e-05,0.00124924,0.021581,0.0215817,0.0278803,0.0418195,0.0418195,0.0811588,7.45243e-11,7.44402e-11,1.43328e-09,4e-06,4e-06,2.61745e-07,0,0,0,0,0,0,0,0 +15885000,0.704896,0.000212789,-0.0134589,0.709183,0.0109498,0.005828,-0.0275493,0.00508464,0.000944499,-365.472,-1.1699e-05,-5.93336e-05,-8.95592e-07,0,0,-0.00121715,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00139246,1.25781e-05,1.12154e-05,0.00124887,0.0233695,0.0233704,0.0284164,0.0466601,0.0466602,0.0836459,7.46124e-11,7.45307e-11,1.40737e-09,4e-06,4e-06,2.56607e-07,0,0,0,0,0,0,0,0 +15985000,0.704973,0.000155104,-0.0134541,0.709107,0.0102944,0.00472634,-0.0241003,0.00425753,-0.000231796,-365.467,-1.1738e-05,-5.93945e-05,-4.91459e-07,0,0,-0.00122576,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00139021,1.17433e-05,1.03917e-05,0.00124835,0.0210747,0.0210754,0.0272299,0.0417582,0.0417582,0.0818946,7.02855e-11,7.02093e-11,1.37376e-09,4e-06,4e-06,2.40753e-07,0,0,0,0,0,0,0,0 +16085000,0.705028,0.000159554,-0.01348,0.709051,0.0121556,0.00519708,-0.0217901,0.00538006,0.000243581,-365.463,-1.17342e-05,-5.93979e-05,-3.16635e-07,0,0,-0.00123193,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00138817,1.20039e-05,1.06564e-05,0.0012477,0.0227976,0.0227985,0.027362,0.0465488,0.0465489,0.0826213,7.03706e-11,7.02974e-11,1.34122e-09,4e-06,4e-06,2.34393e-07,0,0,0,0,0,0,0,0 +16185000,0.705091,0.000160605,-0.0134356,0.70899,0.0118282,0.00498803,-0.0200079,0.00448208,0.000169109,-365.46,-1.17788e-05,-5.942e-05,-4.57552e-08,0,0,-0.00123823,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0013861,1.12322e-05,9.88713e-06,0.00124711,0.0205721,0.0205728,0.0262324,0.041673,0.0416731,0.0809245,6.64757e-11,6.64076e-11,1.30973e-09,4e-06,4e-06,2.20144e-07,0,0,0,0,0,0,0,0 +16285000,0.705216,0.00017887,-0.0134588,0.708865,0.0140089,0.00495166,-0.0207422,0.00578733,0.000682832,-365.463,-1.17708e-05,-5.94271e-05,3.3013e-07,0,0,-0.00123766,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00138417,1.14812e-05,1.01383e-05,0.00124644,0.0222308,0.0222316,0.0263276,0.0464098,0.04641,0.0815902,6.65618e-11,6.64965e-11,1.27923e-09,4e-06,4e-06,2.14259e-07,0,0,0,0,0,0,0,0 +16385000,0.705169,0.000139985,-0.0134577,0.708912,0.0127651,0.00376831,-0.0197348,0.00485331,0.00056105,-365.462,-1.18273e-05,-5.94392e-05,1.66519e-07,0,0,-0.001242,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00138226,1.07592e-05,9.42608e-06,0.0012458,0.020076,0.0200764,0.0252549,0.0415672,0.0415674,0.079948,6.30546e-11,6.29941e-11,1.2497e-09,4e-06,4e-06,2.01462e-07,0,0,0,0,0,0,0,0 +16485000,0.705144,0.000145306,-0.013415,0.708937,0.0122856,0.00481248,-0.0218717,0.00607998,0.000993397,-365.466,-1.18288e-05,-5.94378e-05,9.76501e-08,0,0,-0.00123963,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00138036,1.09944e-05,9.66129e-06,0.0012452,0.0216742,0.0216747,0.0253183,0.0462474,0.0462476,0.0805559,6.31416e-11,6.30837e-11,1.22107e-09,4e-06,4e-06,1.96028e-07,0,0,0,0,0,0,0,0 +16585000,0.705241,0.000255585,-0.0133556,0.708842,0.00971797,0.00526797,-0.0229298,0.00314186,0.00281743,-365.466,-1.19227e-05,-5.94025e-05,3.41228e-07,0,0,-0.00124129,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137994,1.03383e-05,8.99777e-06,0.00124475,0.0195932,0.0195934,0.0246082,0.041444,0.0414442,0.080558,5.99848e-11,5.993e-11,1.20021e-09,4e-06,4e-06,1.85773e-07,0,0,0,0,0,0,0,0 +16685000,0.705184,0.000255307,-0.0133511,0.708899,0.0104882,0.00604291,-0.0207102,0.00416451,0.0033882,-365.461,-1.19278e-05,-5.9398e-05,9.91293e-08,0,0,-0.00124793,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137816,1.05619e-05,9.22417e-06,0.00124409,0.0211341,0.0211344,0.0246497,0.0460658,0.046066,0.0811337,6.00724e-11,6.00201e-11,1.17309e-09,4e-06,4e-06,1.80767e-07,0,0,0,0,0,0,0,0 +16785000,0.705189,0.000269097,-0.0133116,0.708894,0.00778513,0.00656027,-0.0202197,0.00153913,0.00479548,-365.46,-1.20136e-05,-5.93686e-05,8.74649e-08,0,0,-0.00125039,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137636,9.94272e-06,8.60967e-06,0.00124347,0.0191232,0.0191234,0.0236676,0.0413062,0.0413064,0.0795368,5.72212e-11,5.71722e-11,1.14681e-09,4e-06,4e-06,1.70346e-07,0,0,0,0,0,0,0,0 +16885000,0.705129,0.000283035,-0.0132659,0.708955,0.00801181,0.00778161,-0.018668,0.00234208,0.00547567,-365.456,-1.20155e-05,-5.9367e-05,-1.79249e-09,0,0,-0.00125517,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137447,1.01583e-05,8.82398e-06,0.00124299,0.0206096,0.0206099,0.0236853,0.0458682,0.0458683,0.0800585,5.73097e-11,5.72629e-11,1.12132e-09,4e-06,4e-06,1.65734e-07,0,0,0,0,0,0,0,0 +16985000,0.70506,0.000244227,-0.0131992,0.709025,0.00786525,0.00612263,-0.018293,0.00106306,0.00367767,-365.456,-1.2069e-05,-5.9415e-05,-2.22138e-07,0,0,-0.00125494,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137269,9.58259e-06,8.25373e-06,0.00124242,0.0186688,0.018669,0.0227542,0.0411562,0.0411564,0.0785039,5.47334e-11,5.46893e-11,1.09657e-09,4e-06,4e-06,1.56366e-07,0,0,0,0,0,0,0,0 +17085000,0.705076,0.000210657,-0.0132942,0.709007,0.00914229,0.00722485,-0.0177615,0.00190725,0.00432484,-365.458,-1.20681e-05,-5.94158e-05,-1.82097e-07,0,0,-0.00125466,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137097,9.78342e-06,8.46726e-06,0.00124184,0.0201023,0.0201026,0.0227518,0.0456576,0.0456578,0.0789748,5.48225e-11,5.47806e-11,1.07257e-09,4e-06,4e-06,1.52121e-07,0,0,0,0,0,0,0,0 +17185000,0.705133,0.00022452,-0.0132451,0.708952,0.00925943,0.00775437,-0.0187863,0.000752542,0.00279828,-365.463,-1.21133e-05,-5.94663e-05,-4.83905e-08,0,0,-0.00125113,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00137055,9.25476e-06,7.93904e-06,0.00124147,0.0182314,0.018232,0.022151,0.0409962,0.0409964,0.0790193,5.24929e-11,5.24532e-11,1.05505e-09,4e-06,4e-06,1.44698e-07,0,0,0,0,0,0,0,0 +17285000,0.705105,0.000197579,-0.0132225,0.70898,0.0119322,0.00907131,-0.0150342,0.00181408,0.00363138,-365.456,-1.21138e-05,-5.9466e-05,-7.35042e-08,0,0,-0.00125835,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136878,9.44838e-06,8.13775e-06,0.00124099,0.0196184,0.0196195,0.0221354,0.0454371,0.0454373,0.0794599,5.25826e-11,5.25449e-11,1.03227e-09,4e-06,4e-06,1.40792e-07,0,0,0,0,0,0,0,0 +17385000,0.705156,0.000189041,-0.0131722,0.70893,0.0119766,0.00875514,-0.0131293,0.00164032,0.00221887,-365.453,-1.21424e-05,-5.95157e-05,1.43535e-09,0,0,-0.00126309,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136717,8.95425e-06,7.64607e-06,0.00124036,0.0178169,0.017818,0.0212912,0.0408285,0.0408287,0.0779572,5.04663e-11,5.0432e-11,1.01014e-09,4e-06,4e-06,1.3316e-07,0,0,0,0,0,0,0,0 +17485000,0.705166,0.000190078,-0.0131831,0.70892,0.013034,0.00870401,-0.0113482,0.0028694,0.00309153,-365.451,-1.21419e-05,-5.95161e-05,2.31535e-08,0,0,-0.00126548,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136553,9.14426e-06,7.83957e-06,0.00123983,0.0191592,0.0191604,0.0212613,0.0452096,0.04521,0.0783517,5.05566e-11,5.05242e-11,9.8866e-10,4e-06,4e-06,1.29569e-07,0,0,0,0,0,0,0,0 +17585000,0.705161,0.000134691,-0.0131627,0.708925,0.0135813,0.00762207,-0.00652555,0.00254469,0.00173294,-365.443,-1.21731e-05,-5.95613e-05,8.01887e-08,0,0,-0.00127336,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136382,8.67811e-06,7.38404e-06,0.00123938,0.0174219,0.017423,0.0204671,0.040655,0.0406553,0.0769046,4.86317e-11,4.86026e-11,9.67789e-10,4e-06,4e-06,1.22714e-07,0,0,0,0,0,0,0,0 +17685000,0.705171,0.000101169,-0.0131547,0.708915,0.0152122,0.00869645,-0.00688027,0.00399194,0.00254963,-365.443,-1.21713e-05,-5.9563e-05,1.65929e-07,0,0,-0.00127344,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136217,8.85732e-06,7.56999e-06,0.00123893,0.0187244,0.0187259,0.0204259,0.0449773,0.0449777,0.0772564,4.87226e-11,4.86952e-11,9.47523e-10,4e-06,4e-06,1.19416e-07,0,0,0,0,0,0,0,0 +17785000,0.705294,3.84778e-05,-0.0131415,0.708793,0.0163298,0.00820935,-0.00711588,0.00368088,0.00219548,-365.446,-1.21784e-05,-5.95934e-05,5.91543e-07,0,0,-0.00127264,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136053,8.42098e-06,7.14526e-06,0.00123849,0.0170501,0.0170515,0.0196792,0.0404776,0.0404779,0.0758633,4.69671e-11,4.69432e-11,9.27827e-10,4e-06,4e-06,1.13255e-07,0,0,0,0,0,0,0,0 +17885000,0.705307,4.85199e-05,-0.0131377,0.70878,0.0183194,0.00796005,-0.00639133,0.00540578,0.00303555,-365.446,-1.21777e-05,-5.95941e-05,6.27348e-07,0,0,-0.00127317,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00136015,8.59981e-06,7.32571e-06,0.00123817,0.0183141,0.0183156,0.0198732,0.0447425,0.044743,0.0776546,4.70609e-11,4.70377e-11,9.13443e-10,4e-06,4e-06,1.10977e-07,0,0,0,0,0,0,0,0 +17985000,0.705384,3.65968e-06,-0.0131145,0.708704,0.0190929,0.00569918,-0.00458154,0.00491678,0.00254608,-365.445,-1.21992e-05,-5.96156e-05,7.25106e-07,0,0,-0.0012753,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135876,8.19419e-06,6.92875e-06,0.00123752,0.0166993,0.0167001,0.0191569,0.0402979,0.0402983,0.0762615,4.54557e-11,4.54352e-11,8.94703e-10,4e-06,4e-06,1.05374e-07,0,0,0,0,0,0,0,0 +18085000,0.705293,5.53012e-06,-0.0131351,0.708794,0.0201441,0.0058956,-0.00283966,0.00688354,0.00308844,-365.44,-1.22046e-05,-5.96105e-05,4.62553e-07,0,0,-0.00127906,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135727,8.3667e-06,7.10524e-06,0.00123701,0.0179295,0.0179303,0.0191012,0.0445071,0.0445075,0.0765484,4.5548e-11,4.55281e-11,8.76489e-10,4e-06,4e-06,1.02585e-07,0,0,0,0,0,0,0,0 +18185000,0.705371,-3.41119e-05,-0.0130962,0.708717,0.020318,0.00613237,-0.00137819,0.00692216,0.00271016,-365.438,-1.22307e-05,-5.96289e-05,6.32829e-07,0,0,-0.00128102,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135585,7.98806e-06,6.73335e-06,0.00123646,0.0163712,0.016372,0.0184286,0.0401175,0.0401178,0.0752084,4.40756e-11,4.40582e-11,8.58769e-10,4e-06,4e-06,9.75415e-08,0,0,0,0,0,0,0,0 +18285000,0.705386,-9.54927e-05,-0.0130596,0.708703,0.0208815,0.006072,-0.000307889,0.00897677,0.00332701,-365.436,-1.22329e-05,-5.96267e-05,5.21975e-07,0,0,-0.00128227,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135456,8.148e-06,6.90163e-06,0.00123582,0.0175686,0.0175692,0.0183647,0.0442727,0.0442732,0.0754493,4.41683e-11,4.41515e-11,8.41527e-10,4e-06,4e-06,9.49713e-08,0,0,0,0,0,0,0,0 +18385000,0.705504,-9.55072e-05,-0.0130718,0.708586,0.0218138,0.00718912,0.00106111,0.00879298,0.00297249,-365.432,-1.22609e-05,-5.96467e-05,7.56543e-07,0,0,-0.00128493,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135323,7.79766e-06,6.55643e-06,0.00123523,0.0160643,0.0160653,0.0177332,0.0399374,0.0399378,0.0741608,4.28139e-11,4.27995e-11,8.24763e-10,4e-06,4e-06,9.04272e-08,0,0,0,0,0,0,0,0 +18485000,0.705554,-6.67484e-05,-0.0130674,0.708536,0.0232937,0.00783233,0.000902742,0.0110942,0.00372242,-365.43,-1.22583e-05,-5.96492e-05,8.82926e-07,0,0,-0.00128608,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135289,7.96447e-06,6.7225e-06,0.00123492,0.0172337,0.0172347,0.0178833,0.044041,0.0440415,0.0757906,4.29087e-11,4.28948e-11,8.12513e-10,4e-06,4e-06,8.86607e-08,0,0,0,0,0,0,0,0 +18585000,0.705649,-9.74425e-05,-0.0129997,0.708443,0.0226134,0.00747322,0.000266463,0.00972317,0.00323121,-365.432,-1.23094e-05,-5.96714e-05,1.08087e-06,0,0,-0.00128549,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135157,7.62996e-06,6.39449e-06,0.00123437,0.0157794,0.0157804,0.0172783,0.0397591,0.0397595,0.0745042,4.16588e-11,4.16475e-11,7.96531e-10,4e-06,4e-06,8.45156e-08,0,0,0,0,0,0,0,0 +18685000,0.705627,-0.000142588,-0.0130286,0.708464,0.0234419,0.00744141,-0.00133095,0.0120276,0.00401677,-365.437,-1.23101e-05,-5.96707e-05,1.05068e-06,0,0,-0.00128218,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00135017,7.78384e-06,6.55846e-06,0.00123394,0.0169205,0.0169214,0.0172088,0.0438131,0.0438137,0.0746922,4.17522e-11,4.17415e-11,7.80971e-10,4e-06,4e-06,8.23404e-08,0,0,0,0,0,0,0,0 +18785000,0.705603,-0.00013728,-0.0130074,0.708488,0.0223142,0.00702254,-0.000698626,0.0105258,0.00353438,-365.438,-1.23672e-05,-5.96857e-05,9.52511e-07,0,0,-0.00128206,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134885,7.47317e-06,6.25241e-06,0.00123343,0.0155123,0.015513,0.0166409,0.0395834,0.0395839,0.0734558,4.05952e-11,4.05872e-11,7.65828e-10,4e-06,4e-06,7.85983e-08,0,0,0,0,0,0,0,0 +18885000,0.705699,-0.000131822,-0.012992,0.708392,0.0235165,0.00808348,-0.000222535,0.0128131,0.00432289,-365.436,-1.23615e-05,-5.96911e-05,1.22863e-06,0,0,-0.00128322,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0013475,7.6297e-06,6.41036e-06,0.001233,0.0166295,0.0166303,0.0165699,0.04359,0.0435905,0.0736168,4.0689e-11,4.06815e-11,7.5108e-10,4e-06,4e-06,7.65994e-08,0,0,0,0,0,0,0,0 +18985000,0.705721,-0.000119966,-0.0129803,0.708371,0.0239087,0.0084277,-0.00164931,0.012939,0.00379921,-365.438,-1.23821e-05,-5.97119e-05,1.35434e-06,0,0,-0.00128182,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134611,7.33872e-06,6.12172e-06,0.00123262,0.0152665,0.0152674,0.0160369,0.0394111,0.0394116,0.0724284,3.96149e-11,3.961e-11,7.36726e-10,4e-06,4e-06,7.3217e-08,0,0,0,0,0,0,0,0 +19085000,0.705747,-0.000140573,-0.0129345,0.708346,0.0251797,0.00953037,0.00160335,0.0153729,0.00472563,-365.431,-1.238e-05,-5.9714e-05,1.45564e-06,0,0,-0.00128555,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134479,7.48882e-06,6.27469e-06,0.00123222,0.0163603,0.0163612,0.0159654,0.0433727,0.0433733,0.072565,3.9709e-11,3.97047e-11,7.2274e-10,4e-06,4e-06,7.13796e-08,0,0,0,0,0,0,0,0 +19185000,0.705755,-0.000134377,-0.0128239,0.70834,0.0243853,0.00922398,0.000386275,0.015138,0.0041666,-365.432,-1.24072e-05,-5.97351e-05,1.49219e-06,0,0,-0.00128431,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134446,7.21217e-06,5.99647e-06,0.00123197,0.0150381,0.0150388,0.0156445,0.0392431,0.0392435,0.0727209,3.87102e-11,3.87083e-11,7.12512e-10,4e-06,4e-06,6.8742e-08,0,0,0,0,0,0,0,0 +19285000,0.705699,-0.000100928,-0.0127795,0.708397,0.0251735,0.00906944,0.00255597,0.0175831,0.00508899,-365.426,-1.241e-05,-5.97325e-05,1.35564e-06,0,0,-0.00128767,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134319,7.36583e-06,6.14668e-06,0.00123155,0.0161122,0.0161128,0.0155733,0.043162,0.0431626,0.0728396,3.88046e-11,3.88032e-11,6.99149e-10,4e-06,4e-06,6.70457e-08,0,0,0,0,0,0,0,0 +19385000,0.705749,-0.000132895,-0.0127272,0.708347,0.0232908,0.00775109,0.00623817,0.0153487,0.00444644,-365.42,-1.24671e-05,-5.9754e-05,1.4781e-06,0,0,-0.00129091,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134196,7.09714e-06,5.88665e-06,0.00123111,0.0148262,0.0148266,0.0150939,0.0390798,0.0390802,0.0717009,3.78704e-11,3.78713e-11,6.8613e-10,4e-06,4e-06,6.42412e-08,0,0,0,0,0,0,0,0 +19485000,0.705846,-0.000117169,-0.0127492,0.70825,0.0230393,0.00718392,0.00361323,0.017643,0.00517985,-365.424,-1.24625e-05,-5.97583e-05,1.70203e-06,0,0,-0.00128837,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00134077,7.24607e-06,6.03781e-06,0.00123064,0.0158824,0.0158825,0.0150236,0.0429584,0.0429589,0.0717991,3.7965e-11,3.79665e-11,6.73439e-10,4e-06,4e-06,6.26803e-08,0,0,0,0,0,0,0,0 +19585000,0.705925,-7.98295e-05,-0.0126628,0.708173,0.0212411,0.00581209,0.00312918,0.0154204,0.00448309,-365.426,-1.25117e-05,-5.978e-05,1.97501e-06,0,0,-0.00128732,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133949,6.99895e-06,5.78905e-06,0.0012303,0.0146329,0.014633,0.0145714,0.0389219,0.0389222,0.0706953,3.70899e-11,3.70932e-11,6.61068e-10,4e-06,4e-06,6.01313e-08,0,0,0,0,0,0,0,0 +19685000,0.705892,-9.00264e-05,-0.0127116,0.708206,0.0224745,0.00385958,0.00480809,0.0175977,0.00497062,-365.425,-1.25142e-05,-5.97776e-05,1.85014e-06,0,0,-0.00128746,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133838,7.14227e-06,5.93914e-06,0.00122982,0.0156698,0.0156698,0.0145024,0.0427625,0.0427629,0.070775,3.71848e-11,3.71887e-11,6.49011e-10,4e-06,4e-06,5.86943e-08,0,0,0,0,0,0,0,0 +19785000,0.70593,-4.7533e-05,-0.012702,0.708168,0.0198889,0.0023671,0.00505214,0.0153667,0.00425416,-365.424,-1.25652e-05,-5.97898e-05,1.8993e-06,0,0,-0.00128725,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133817,6.90807e-06,5.70601e-06,0.00122949,0.0144532,0.0144533,0.0142385,0.0387697,0.03877,0.0709596,3.6364e-11,3.63692e-11,6.40189e-10,4e-06,4e-06,5.67172e-08,0,0,0,0,0,0,0,0 +19885000,0.706054,-9.09401e-05,-0.0126502,0.708045,0.0194559,0.00243062,0.0065015,0.0173521,0.00448505,-365.423,-1.25587e-05,-5.97959e-05,2.21887e-06,0,0,-0.00128757,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133702,7.04518e-06,5.84835e-06,0.00122909,0.0154748,0.015475,0.0141712,0.0425746,0.0425748,0.0710249,3.64591e-11,3.64648e-11,6.28649e-10,4e-06,4e-06,5.53875e-08,0,0,0,0,0,0,0,0 +19985000,0.706171,-0.000136792,-0.0126336,0.707928,0.0167788,0.00101164,0.00837313,0.0151036,0.0037948,-365.419,-1.25996e-05,-5.98098e-05,2.49462e-06,0,0,-0.00128857,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133592,6.81139e-06,5.62527e-06,0.00122865,0.0142879,0.0142884,0.013764,0.0386235,0.0386237,0.0699682,3.56848e-11,3.56914e-11,6.17393e-10,4e-06,4e-06,5.32585e-08,0,0,0,0,0,0,0,0 +20085000,0.706327,-0.000158001,-0.0126107,0.707773,0.0170732,-0.00034688,0.00914497,0.0168083,0.00384896,-365.416,-1.25908e-05,-5.98181e-05,2.92353e-06,0,0,-0.00128964,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133479,6.94917e-06,5.76719e-06,0.00122828,0.0152964,0.0152973,0.0136987,0.0423949,0.042395,0.0700182,3.57802e-11,3.57873e-11,6.06419e-10,4e-06,4e-06,5.20327e-08,0,0,0,0,0,0,0,0 +20185000,0.706384,-8.0026e-05,-0.012591,0.707717,0.0150154,-0.00178092,0.011577,0.0138501,0.0032181,-365.412,-1.26428e-05,-5.98246e-05,3.08563e-06,0,0,-0.00129137,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133369,6.73966e-06,5.55389e-06,0.00122788,0.0141373,0.0141386,0.0133158,0.0384837,0.0384837,0.0690023,3.50487e-11,3.50563e-11,5.95712e-10,4e-06,4e-06,5.00938e-08,0,0,0,0,0,0,0,0 +20285000,0.706443,-0.000111695,-0.0125789,0.707658,0.0147169,-0.0030518,0.0100463,0.015332,0.0029754,-365.414,-1.26403e-05,-5.98269e-05,3.20728e-06,0,0,-0.00128996,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133268,6.87425e-06,5.69444e-06,0.00122744,0.0151334,0.0151353,0.0132529,0.0422238,0.0422238,0.0690387,3.51443e-11,3.51524e-11,5.85268e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +20385000,0.706468,-0.000116521,-0.0126139,0.707633,0.0119019,-0.00455875,0.0123594,0.0125349,0.00242678,-365.409,-1.26893e-05,-5.98251e-05,3.18697e-06,0,0,-0.00129206,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133176,6.66428e-06,5.4924e-06,0.0012269,0.0140004,0.014003,0.0128929,0.0383504,0.0383504,0.0680618,3.44516e-11,3.44596e-11,5.75073e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +20485000,0.706508,-8.04726e-05,-0.0126313,0.707592,0.0122238,-0.00516569,0.0124652,0.0137309,0.00194611,-365.41,-1.26889e-05,-5.98255e-05,3.20685e-06,0,0,-0.00129094,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133166,6.80519e-06,5.63286e-06,0.00122653,0.0149836,0.0149867,0.0129748,0.0420614,0.0420615,0.0692652,3.45484e-11,3.45568e-11,5.67609e-10,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +20585000,0.706472,-6.41706e-05,-0.0126774,0.707628,0.0116998,-0.00592422,0.00962808,0.0119845,0.00150939,-365.414,-1.27215e-05,-5.98189e-05,3.10051e-06,0,0,-0.00128803,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00133066,6.60674e-06,5.43891e-06,0.00122609,0.0138755,0.0138787,0.0126306,0.0382238,0.0382239,0.0682927,3.38908e-11,3.38986e-11,5.57831e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20685000,0.706533,-4.55347e-05,-0.0127039,0.707566,0.0124784,-0.00703427,0.0107788,0.0131874,0.000879763,-365.41,-1.27202e-05,-5.98201e-05,3.16555e-06,0,0,-0.00128945,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132977,6.74399e-06,5.57817e-06,0.00122558,0.0148488,0.0148526,0.0125753,0.0419079,0.041908,0.0683072,3.39868e-11,3.3995e-11,5.48287e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20785000,0.70658,-2.61289e-05,-0.0126767,0.70752,0.0105288,-0.00682163,0.0108203,0.0114921,0.000617676,-365.41,-1.2748e-05,-5.98136e-05,3.23278e-06,0,0,-0.00128831,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132881,6.55332e-06,5.38694e-06,0.00122511,0.0137609,0.013765,0.0122533,0.038104,0.0381041,0.0673718,3.33608e-11,3.33683e-11,5.38963e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20885000,0.706693,-4.18182e-05,-0.012673,0.707407,0.010757,-0.00907245,0.0104502,0.0125642,-0.000177488,-365.411,-1.27437e-05,-5.98176e-05,3.44308e-06,0,0,-0.00128735,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132792,6.68501e-06,5.52301e-06,0.00122464,0.0147243,0.0147298,0.0122021,0.0417629,0.0417633,0.0673692,3.34569e-11,3.3465e-11,5.29857e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +20985000,0.706716,-3.63354e-05,-0.0126771,0.707384,0.00949774,-0.0105255,0.0111115,0.0125478,-0.000411205,-365.411,-1.27573e-05,-5.98069e-05,3.48662e-06,0,0,-0.00128683,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132695,6.50037e-06,5.33941e-06,0.0012242,0.0136561,0.0136626,0.0119015,0.0379908,0.0379912,0.0664696,3.28598e-11,3.28668e-11,5.20965e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +21085000,0.70683,-5.20606e-05,-0.0126779,0.707269,0.0101918,-0.0128428,0.011941,0.0135181,-0.0015857,-365.41,-1.27545e-05,-5.98096e-05,3.62475e-06,0,0,-0.0012868,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132695,6.63067e-06,5.47427e-06,0.00122378,0.0146105,0.0146183,0.0119843,0.0416265,0.0416273,0.0675901,3.2957e-11,3.29644e-11,5.14457e-10,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +21185000,0.706837,-2.40992e-05,-0.0126655,0.707263,0.00981364,-0.0127569,0.0113878,0.013408,-0.00166107,-365.413,-1.27695e-05,-5.97915e-05,3.58047e-06,0,0,-0.00128466,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132605,6.45523e-06,5.29538e-06,0.00122327,0.0135604,0.0135681,0.0116988,0.0378841,0.0378848,0.0666951,3.23863e-11,3.23922e-11,5.0592e-10,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +21285000,0.706989,8.09925e-06,-0.0126319,0.707111,0.00970911,-0.014574,0.0128266,0.0143828,-0.00302103,-365.409,-1.27651e-05,-5.97955e-05,3.79145e-06,0,0,-0.00128559,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132533,6.5899e-06,5.42706e-06,0.00122269,0.0145067,0.0145161,0.0116605,0.0414983,0.0414996,0.0666785,3.24827e-11,3.24891e-11,4.97576e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +21385000,0.706953,3.7846e-05,-0.0126126,0.707148,0.00817352,-0.0152197,0.0130346,0.0124972,-0.00220028,-365.411,-1.2792e-05,-5.97619e-05,3.72895e-06,0,0,-0.00128394,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132433,6.41907e-06,5.25285e-06,0.0012223,0.0134731,0.013483,0.0113949,0.0377839,0.0377851,0.0658179,3.19358e-11,3.1941e-11,4.89424e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +21485000,0.707021,4.64958e-05,-0.0125955,0.70708,0.00835762,-0.0163519,0.0130451,0.0132916,-0.00376663,-365.411,-1.27895e-05,-5.97641e-05,3.8471e-06,0,0,-0.00128335,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132349,6.54975e-06,5.38423e-06,0.00122187,0.0144121,0.0144233,0.0113639,0.0413782,0.0413801,0.0657968,3.20323e-11,3.20383e-11,4.81454e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +21585000,0.707025,3.7993e-05,-0.0125506,0.707077,0.00682724,-0.0145948,0.0128771,0.0115124,-0.00280885,-365.414,-1.28124e-05,-5.97297e-05,3.81885e-06,0,0,-0.00128141,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132259,6.37979e-06,5.21306e-06,0.00122139,0.0133934,0.0134038,0.0111172,0.0376899,0.0376917,0.0649691,3.15076e-11,3.15121e-11,4.73665e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +21685000,0.70704,3.31267e-05,-0.0125923,0.707062,0.0075389,-0.0158352,0.0146194,0.0122255,-0.0043474,-365.413,-1.28117e-05,-5.97303e-05,3.85225e-06,0,0,-0.00128106,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132172,6.50778e-06,5.34651e-06,0.00122102,0.0143245,0.0143358,0.0110939,0.0412658,0.0412685,0.064945,3.16042e-11,3.16095e-11,4.66049e-10,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +21785000,0.707023,1.46277e-05,-0.0125739,0.707078,0.00630923,-0.0125438,0.013547,0.0098701,-0.00174825,-365.417,-1.2845e-05,-5.96729e-05,3.77841e-06,0,0,-0.00127863,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132153,6.33932e-06,5.18057e-06,0.00122068,0.0133202,0.0133298,0.0109745,0.037602,0.0376043,0.0651947,3.11008e-11,3.11044e-11,4.60472e-10,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +21885000,0.70706,1.39583e-05,-0.0125295,0.707042,0.00721792,-0.0127876,0.0144374,0.0105434,-0.00301138,-365.418,-1.28452e-05,-5.96727e-05,3.76609e-06,0,0,-0.00127759,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00132081,6.46669e-06,5.30816e-06,0.00122019,0.0142452,0.0142549,0.0109587,0.0411609,0.0411642,0.0651682,3.11975e-11,3.12018e-11,4.53147e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +21985000,0.707111,1.29804e-05,-0.0125562,0.706991,0.00589024,-0.0114891,0.0149181,0.00844984,-0.000632796,-365.419,-1.28727e-05,-5.96232e-05,3.82533e-06,-1.6478e-12,1.64053e-12,-0.001276,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131997,6.3044e-06,5.14839e-06,0.00121969,0.013277,0.0132862,0.0107423,0.0375198,0.0375226,0.064378,3.07122e-11,3.0715e-11,4.45984e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22085000,0.707132,1.9016e-05,-0.0125474,0.706971,0.00623203,-0.0106702,0.0135134,0.00907691,-0.00173073,-365.421,-1.28728e-05,-5.96232e-05,3.82388e-06,1.08181e-09,-1.07726e-09,-0.00127478,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131919,6.43162e-06,5.27695e-06,0.00121928,0.0147976,0.0148069,0.0107347,0.0410653,0.0410692,0.0643515,3.08091e-11,3.08126e-11,4.38977e-10,4.00001e-06,4.00001e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22185000,0.707181,3.98389e-06,-0.0125123,0.706922,0.0056721,-0.00990948,0.0144718,0.00793171,-0.00170483,-365.422,-1.28872e-05,-5.96107e-05,3.87911e-06,-2.25692e-06,-1.38474e-06,-0.00127353,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131837,6.27419e-06,5.11815e-06,0.0012188,0.0150774,0.0150854,0.0105339,0.0374514,0.0374546,0.0635855,3.03421e-11,3.03441e-11,4.3212e-10,3.98819e-06,3.98819e-06,5e-08,0,0,0,0,0,0,0,0 +22285000,0.707156,3.64391e-05,-0.0125508,0.706946,0.00486508,-0.0107222,0.0145767,0.00845968,-0.00274228,-365.424,-1.28884e-05,-5.96096e-05,3.8238e-06,-2.24667e-06,-1.39467e-06,-0.0012724,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131754,6.40361e-06,5.2484e-06,0.00121845,0.0181183,0.0181278,0.0105349,0.0410382,0.0410425,0.0635605,3.0439e-11,3.04418e-11,4.25414e-10,3.9882e-06,3.9882e-06,5e-08,0,0,0,0,0,0,0,0 +22385000,0.707182,2.55828e-05,-0.0125343,0.706921,0.00317433,-0.0100882,0.0161628,0.00731778,-0.0025983,-365.421,-1.28999e-05,-5.9597e-05,3.88615e-06,-7.57871e-06,-4.01562e-06,-0.00127275,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131731,6.25414e-06,5.09821e-06,0.00121818,0.0193376,0.0193463,0.0104512,0.0374669,0.0374705,0.0638335,2.99979e-11,2.9999e-11,4.20503e-10,3.92264e-06,3.92264e-06,5.0002e-08,0,0,0,0,0,0,0,0 +22485000,0.70722,3.13099e-05,-0.0125041,0.706883,0.00314694,-0.00994909,0.01758,0.00763859,-0.00362621,-365.417,-1.28989e-05,-5.95978e-05,3.9315e-06,-7.59767e-06,-3.99748e-06,-0.00127356,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131655,6.37956e-06,5.22376e-06,0.00121779,0.0237276,0.0237368,0.0104605,0.0412312,0.041236,0.0638106,3.0095e-11,3.00968e-11,4.14046e-10,3.92265e-06,3.92265e-06,5.0002e-08,0,0,0,0,0,0,0,0 +22585000,0.707267,5.45766e-06,-0.0124668,0.706837,0.00240174,-0.00890421,0.0166758,0.00579827,-0.0024792,-365.419,-1.29076e-05,-5.95757e-05,3.99152e-06,-2.25019e-05,-5.51651e-07,-0.00127203,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131574,6.24386e-06,5.08857e-06,0.00121734,0.0251085,0.0251162,0.0102858,0.0376874,0.0376913,0.0630809,2.96948e-11,2.96951e-11,4.07725e-10,3.77381e-06,3.77379e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22685000,0.707309,4.12612e-05,-0.0124973,0.706795,0.00170416,-0.00874675,0.0180001,0.00602111,-0.0033686,-365.418,-1.29063e-05,-5.95768e-05,4.05297e-06,-2.24943e-05,-5.60517e-07,-0.00127188,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131499,6.3723e-06,5.21688e-06,0.00121696,0.0305674,0.0305757,0.0103032,0.0417947,0.0417997,0.0630622,2.97921e-11,2.9793e-11,4.0154e-10,3.77382e-06,3.7738e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22785000,0.707229,2.47145e-05,-0.0124713,0.706874,0.000180016,-0.00680691,0.0187784,0.00350611,-0.00292125,-365.414,-1.29284e-05,-5.95613e-05,3.79409e-06,-3.09093e-05,-4.89748e-06,-0.00127247,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131428,6.2654e-06,5.11092e-06,0.00121646,0.0312168,0.0312224,0.0101411,0.0382008,0.0382047,0.0623615,2.9454e-11,2.94537e-11,3.95483e-10,3.53491e-06,3.53485e-06,5e-08,0,0,0,0,0,0,0,0 +22885000,0.707264,3.44389e-05,-0.0124518,0.70684,-0.000665174,-0.00648123,0.0204198,0.00349079,-0.00358456,-365.412,-1.29287e-05,-5.95611e-05,3.78006e-06,-3.09109e-05,-4.89543e-06,-0.00127252,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131362,6.3905e-06,5.23617e-06,0.00121601,0.0373761,0.0373819,0.0101659,0.0427853,0.0427902,0.0623484,2.95514e-11,2.95516e-11,3.89554e-10,3.53492e-06,3.53486e-06,5e-08,0,0,0,0,0,0,0,0 +22985000,0.707299,2.38765e-05,-0.0124334,0.706805,-0.00189168,-0.0060345,0.0214356,0.00132542,-0.00307792,-365.409,-1.29396e-05,-5.95536e-05,3.7984e-06,-3.80799e-05,-7.1951e-06,-0.00127269,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131288,6.32154e-06,5.16845e-06,0.00121557,0.0365647,0.0365686,0.0100149,0.0390068,0.0390105,0.0616756,2.9291e-11,2.92903e-11,3.83748e-10,3.22343e-06,3.22332e-06,5e-08,0,0,0,0,0,0,0,0 +23085000,0.707299,-1.73535e-05,-0.0123891,0.706806,-0.00208618,-0.00587287,0.0215798,0.00112554,-0.00365581,-365.405,-1.29403e-05,-5.9553e-05,3.76622e-06,-3.81531e-05,-7.12178e-06,-0.00127346,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131278,6.44094e-06,5.29267e-06,0.00121533,0.043029,0.0430328,0.0101402,0.0441282,0.0441328,0.0626346,2.93892e-11,2.93887e-11,3.79496e-10,3.22344e-06,3.22333e-06,5.0002e-08,0,0,0,0,0,0,0,0 +23185000,0.70733,2.90151e-05,-0.0123562,0.706776,-0.00701498,-0.00584271,0.0228747,-0.00404903,-0.0030754,-365.401,-1.29668e-05,-5.95462e-05,3.7498e-06,-4.53508e-05,-4.02604e-05,-0.00127402,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131209,6.41898e-06,5.26644e-06,0.00121487,0.0404351,0.0404374,0.00999581,0.0400178,0.0400211,0.061968,2.92105e-11,2.92093e-11,3.73897e-10,2.8724e-06,2.87223e-06,5.0001e-08,0,0,0,0,0,0,0,0 +23285000,0.707331,-3.96789e-05,-0.0123731,0.706774,-0.00749874,-0.00710775,0.0234307,-0.00477582,-0.00373762,-365.401,-1.29666e-05,-5.95463e-05,3.75727e-06,-4.52449e-05,-4.03648e-05,-0.00127315,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131132,6.5361e-06,5.39486e-06,0.00121458,0.046851,0.0468536,0.0100339,0.0456511,0.045655,0.0619687,2.93081e-11,2.93073e-11,3.68415e-10,2.8724e-06,2.87223e-06,5.0001e-08,0,0,0,0,0,0,0,0 +23385000,0.707372,2.18971e-05,-0.0123315,0.706733,-0.011542,-0.00633353,0.021982,-0.00919956,-0.00304959,-365.404,-1.29809e-05,-5.95402e-05,3.75984e-06,-5.34368e-05,-6.62523e-05,-0.00127095,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00131066,6.55595e-06,5.40756e-06,0.00121412,0.0425985,0.0425999,0.00989815,0.041104,0.0411067,0.0613285,2.92036e-11,2.92022e-11,3.63044e-10,2.5166e-06,2.51637e-06,5.0001e-08,0,0,0,0,0,0,0,0 +23485000,0.707436,0.00215851,-0.0101751,0.706701,-0.0183851,-0.00705204,-0.00995534,-0.0106419,-0.00372695,-365.405,-1.29788e-05,-5.9542e-05,3.86039e-06,-5.33635e-05,-6.63323e-05,-0.00127039,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130971,6.94424e-06,5.43277e-06,0.00121387,0.0487182,0.04872,0.00994068,0.0471609,0.0471642,0.0613314,2.93012e-11,2.93004e-11,3.57782e-10,2.5166e-06,2.51637e-06,5e-08,0,0,0,0,0,0,0,0 +23585000,0.70705,0.00751155,-0.0025524,0.707119,-0.0276212,-0.00361727,-0.0416728,-0.010075,-0.00159642,-365.406,-1.29705e-05,-5.95331e-05,3.79611e-06,-7.1756e-05,-5.33723e-05,-0.00127093,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130705,7.75488e-06,5.28903e-06,0.00121491,0.0432262,0.0432221,0.00981123,0.042145,0.0421472,0.0607164,2.92563e-11,2.92551e-11,3.52631e-10,2.1826e-06,2.18229e-06,5e-08,0,0,0,0,0,0,0,0 +23685000,0.706421,0.00736923,0.00369089,0.707744,-0.0581232,-0.011343,-0.0904181,-0.01426,-0.00226884,-365.414,-1.29703e-05,-5.95331e-05,3.80426e-06,-7.16664e-05,-5.34601e-05,-0.0012703,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130448,7.87683e-06,5.46101e-06,0.00121712,0.0489062,0.0488816,0.00994511,0.0485088,0.0485111,0.0616699,2.93546e-11,2.93537e-11,3.48859e-10,2.1826e-06,2.18229e-06,5.0002e-08,0,0,0,0,0,0,0,0 +23785000,0.706128,0.00452115,0.000744216,0.70807,-0.0776397,-0.0200523,-0.144054,-0.0123407,-0.000588632,-365.424,-1.29517e-05,-5.95283e-05,3.83757e-06,-9.42506e-05,3.79269e-07,-0.00127201,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130298,7.51936e-06,5.48783e-06,0.00121782,0.0426883,0.0426399,0.00981938,0.0430581,0.0430598,0.0610601,2.93541e-11,2.93527e-11,3.43885e-10,1.88537e-06,1.88504e-06,5.0002e-08,0,0,0,0,0,0,0,0 +23885000,0.705976,0.00182514,-0.00532704,0.708213,-0.0944699,-0.0290011,-0.197344,-0.0210703,-0.00309525,-365.445,-1.29504e-05,-5.95292e-05,3.89512e-06,-9.40635e-05,2.02299e-07,-0.00127072,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130223,7.27956e-06,5.65977e-06,0.00121792,0.0478434,0.0477678,0.00986977,0.0496075,0.0496087,0.0610809,2.94519e-11,2.94509e-11,3.39011e-10,1.88537e-06,1.88504e-06,5.0001e-08,0,0,0,0,0,0,0,0 +23985000,0.705903,0.000373492,-0.010049,0.708237,-0.0939289,-0.0318753,-0.250222,-0.0250983,-0.00616334,-365.467,-1.29388e-05,-5.9532e-05,3.89575e-06,-9.97755e-05,2.10065e-05,-0.00127123,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130126,7.19096e-06,5.90535e-06,0.00121717,0.0412802,0.0412182,0.0097538,0.0437995,0.0438004,0.0604946,2.94822e-11,2.9481e-11,3.34229e-10,1.63008e-06,1.62981e-06,5.0001e-08,0,0,0,0,0,0,0,0 +24085000,0.705941,0.00157218,-0.00902576,0.708212,-0.0953722,-0.0317933,-0.298164,-0.0345308,-0.0093465,-365.492,-1.29367e-05,-5.95343e-05,4.00687e-06,-9.9924e-05,2.11526e-05,-0.0012723,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00130038,7.46967e-06,5.99968e-06,0.00121697,0.0458681,0.0457998,0.00980986,0.0504249,0.0504243,0.0605247,2.95801e-11,2.95793e-11,3.29545e-10,1.63008e-06,1.62982e-06,5e-08,0,0,0,0,0,0,0,0 +24185000,0.705956,0.0027049,-0.00663558,0.70822,-0.0955245,-0.0314796,-0.345549,-0.0362076,-0.0110676,-365.517,-1.29224e-05,-5.95368e-05,4.05709e-06,-0.000109826,4.65933e-05,-0.00127655,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129913,7.72008e-06,6.02844e-06,0.00121657,0.039348,0.0392893,0.00969997,0.044356,0.0443558,0.0599609,2.96312e-11,2.96304e-11,3.24953e-10,1.41542e-06,1.41531e-06,5e-08,0,0,0,0,0,0,0,0 +24285000,0.705863,0.00322037,-0.00572494,0.708318,-0.105583,-0.0353019,-0.400536,-0.0462597,-0.0144278,-365.558,-1.29241e-05,-5.95349e-05,3.96824e-06,-0.000109668,4.64391e-05,-0.00127539,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129821,7.92347e-06,6.14385e-06,0.00121648,0.0434352,0.0433607,0.00975925,0.0509698,0.0509671,0.0600006,2.97291e-11,2.97287e-11,3.20454e-10,1.41542e-06,1.41532e-06,5e-08,0,0,0,0,0,0,0,0 +24385000,0.705821,0.00334551,-0.0059913,0.708357,-0.113747,-0.0462711,-0.452266,-0.053562,-0.0282105,-365.599,-1.29163e-05,-5.95484e-05,3.9642e-06,-7.93094e-05,5.27449e-05,-0.00127682,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129762,8.05625e-06,6.26809e-06,0.00121609,0.0371757,0.0371084,0.00973829,0.0447351,0.0447335,0.0603551,2.97946e-11,2.97942e-11,3.17157e-10,1.2371e-06,1.23727e-06,5.0002e-08,0,0,0,0,0,0,0,0 +24485000,0.705852,0.00418153,-0.00202534,0.708344,-0.126493,-0.0511453,-0.50309,-0.0655111,-0.0330457,-365.646,-1.29171e-05,-5.95476e-05,3.92416e-06,-7.93327e-05,5.27541e-05,-0.00127695,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129683,8.31149e-06,6.34969e-06,0.00121588,0.0408029,0.0407151,0.0098014,0.0512722,0.0512672,0.0604058,2.98926e-11,2.98925e-11,3.1281e-10,1.2371e-06,1.23727e-06,5.0001e-08,0,0,0,0,0,0,0,0 +24585000,0.705961,0.00474457,0.00180413,0.708232,-0.138416,-0.0636759,-0.552563,-0.0690297,-0.0432376,-365.697,-1.29045e-05,-5.95569e-05,4.05452e-06,-6.79617e-05,7.91883e-05,-0.00127968,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129564,8.52127e-06,6.48935e-06,0.00121527,0.0349392,0.0348448,0.00969882,0.0449548,0.0449516,0.0598672,2.99669e-11,2.9967e-11,3.08542e-10,1.08982e-06,1.09035e-06,5.0001e-08,0,0,0,0,0,0,0,0 +24685000,0.705991,0.00479124,0.00287123,0.708198,-0.162713,-0.0770994,-0.632247,-0.084059,-0.0502872,-365.758,-1.29022e-05,-5.95585e-05,4.15401e-06,-6.7817e-05,7.91097e-05,-0.00127878,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129485,8.66975e-06,6.64917e-06,0.0012151,0.0381802,0.0380371,0.00976429,0.0513697,0.0513613,0.0599273,3.0065e-11,3.00654e-11,3.04362e-10,1.08982e-06,1.09036e-06,5.0001e-08,0,0,0,0,0,0,0,0 +24785000,0.705925,0.00454266,0.00165464,0.70827,-0.177718,-0.0881077,-0.720113,-0.0910971,-0.0602759,-365.828,-1.28975e-05,-5.95717e-05,4.06642e-06,-8.0723e-05,0.000106303,-0.00127902,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129354,8.76338e-06,6.76317e-06,0.00121426,0.0327522,0.0326013,0.00966532,0.0450374,0.0450321,0.0594027,3.01458e-11,3.01465e-11,3.00252e-10,9.68506e-07,9.69552e-07,5e-08,0,0,0,0,0,0,0,0 +24885000,0.705878,0.00618579,0.00317929,0.708299,-0.198875,-0.0991103,-0.743033,-0.109886,-0.0696305,-365.904,-1.28982e-05,-5.95704e-05,4.0174e-06,-8.0599e-05,0.000106176,-0.00127798,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129263,9.14429e-06,6.93472e-06,0.00121399,0.035641,0.03544,0.00973357,0.0513005,0.0512873,0.059472,3.0244e-11,3.02449e-11,2.9623e-10,9.68508e-07,9.69556e-07,5e-08,0,0,0,0,0,0,0,0 +24985000,0.705822,0.0081151,0.005128,0.708324,-0.212027,-0.103926,-0.798036,-0.111601,-0.0756651,-365.978,-1.2896e-05,-5.9581e-05,3.91121e-06,-0.000108723,0.000157548,-0.00128063,0.208606,0.00202596,0.43355,0,0,0,0,0,0.0012913,9.57897e-06,7.12107e-06,0.00121287,0.0306764,0.0304603,0.00972129,0.0450052,0.0449965,0.0598533,3.03297e-11,3.03311e-11,2.93276e-10,8.68376e-07,8.70089e-07,5.0002e-08,0,0,0,0,0,0,0,0 +25085000,0.70579,0.00850416,0.00462844,0.708355,-0.241676,-0.114505,-0.848279,-0.134302,-0.0865846,-366.062,-1.28969e-05,-5.958e-05,3.86444e-06,-0.000108705,0.000157501,-0.00128035,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00129064,9.78292e-06,7.25715e-06,0.00121258,0.0332869,0.0329847,0.00979267,0.0510974,0.0510768,0.059934,3.04279e-11,3.04296e-11,2.89385e-10,8.68379e-07,8.70094e-07,5.0002e-08,0,0,0,0,0,0,0,0 +25185000,0.705809,0.00803166,0.00309492,0.708349,-0.266199,-0.130165,-0.898124,-0.155527,-0.114469,-366.147,-1.28898e-05,-5.95968e-05,3.9087e-06,-8.39847e-05,0.000160978,-0.00128213,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00128864,9.84564e-06,7.36532e-06,0.00121101,0.0287547,0.0284453,0.00969883,0.0448784,0.0448646,0.0594298,3.05166e-11,3.05188e-11,2.85548e-10,7.85512e-07,7.88124e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25285000,0.705862,0.00984468,0.00954719,0.708217,-0.294143,-0.139363,-0.952419,-0.183459,-0.127901,-366.239,-1.28892e-05,-5.95974e-05,3.93965e-06,-8.39912e-05,0.000161009,-0.00128231,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00128762,1.03038e-05,7.73996e-06,0.00121063,0.0311076,0.0307006,0.00977212,0.0507903,0.0507592,0.0595193,3.06149e-11,3.06173e-11,2.81804e-10,7.85515e-07,7.88129e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25385000,0.705931,0.0113368,0.0163196,0.708002,-0.321708,-0.159594,-1.00096,-0.195537,-0.148587,-366.335,-1.28841e-05,-5.96085e-05,3.97967e-06,-8.18096e-05,0.000199448,-0.00128522,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00128464,1.07298e-05,8.334e-06,0.00120825,0.0270272,0.0265783,0.00968056,0.0446761,0.0446546,0.0590314,3.07061e-11,3.07092e-11,2.78105e-10,7.16669e-07,7.20434e-07,5e-08,0,0,0,0,0,0,0,0 +25485000,0.705961,0.0116313,0.0178262,0.707931,-0.369632,-0.182911,-1.05411,-0.230109,-0.165712,-366.443,-1.28822e-05,-5.96091e-05,4.04654e-06,-8.15585e-05,0.00019933,-0.00128341,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00128392,1.09362e-05,8.61811e-06,0.00120794,0.0292598,0.028608,0.00975534,0.0504075,0.0503593,0.0591292,3.08044e-11,3.08078e-11,2.74501e-10,7.16672e-07,7.2044e-07,5e-08,0,0,0,0,0,0,0,0 +25585000,0.706056,0.0111578,0.0158437,0.707891,-0.409508,-0.214786,-1.10929,-0.258798,-0.205169,-366.555,-1.28751e-05,-5.96266e-05,4.08874e-06,-6.05434e-05,0.000213975,-0.00128268,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00128049,1.09903e-05,8.60399e-06,0.00120469,0.0255698,0.0248689,0.00966623,0.0444164,0.0443822,0.0586564,3.08976e-11,3.09018e-11,2.70924e-10,6.59294e-07,6.64579e-07,5e-08,0,0,0,0,0,0,0,0 +25685000,0.706,0.0145559,0.0221361,0.707717,-0.456784,-0.234974,-1.16149,-0.302013,-0.227641,-366.673,-1.28744e-05,-5.96262e-05,4.09733e-06,-6.03462e-05,0.000213852,-0.00128097,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00127958,1.17833e-05,9.35799e-06,0.00120411,0.0276559,0.0267025,0.0098248,0.0499723,0.0498973,0.059638,3.09964e-11,3.10008e-11,2.68339e-10,6.59299e-07,6.64586e-07,5.0002e-08,0,0,0,0,0,0,0,0 +25785000,0.705924,0.0174179,0.0289632,0.70748,-0.498536,-0.260359,-1.20845,-0.317714,-0.255988,-366.793,-1.28722e-05,-5.96382e-05,4.15425e-06,-7.16448e-05,0.000273845,-0.00128264,0.208606,0.00202596,0.43355,0,0,0,0,0,0.00127325,1.25285e-05,1.03678e-05,0.00119915,0.0244007,0.0233146,0.00973577,0.0441157,0.0440609,0.0591653,3.10913e-11,3.10966e-11,2.64858e-10,6.11302e-07,6.18523e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25885000,0.711477,0.0180456,0.0295006,0.701858,-0.568598,-0.289,-1.25821,-0.371077,-0.283504,-366.921,-1.28717e-05,-5.96375e-05,4.15405e-06,-7.14624e-05,0.000273731,-0.00128092,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00208965,1.41317e-05,1.10873e-05,0.00205608,0.0262371,0.025145,0.00981258,0.0495032,0.0493887,0.0592813,3.11913e-11,3.11965e-11,2.64958e-10,6.11307e-07,6.18531e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25985000,0.71042,0.0170351,0.0262406,0.703082,-0.621767,-0.327327,-1.31423,-0.411872,-0.341065,-367.054,-1.28699e-05,-5.96569e-05,4.14287e-06,-4.76616e-05,0.000303256,-0.00127884,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00187495,1.33698e-05,1.05134e-05,0.0018435,0.0232292,0.0223471,0.0097239,0.0437812,0.0437005,0.0588214,3.12847e-11,3.12908e-11,2.64993e-10,5.69138e-07,5.78597e-07,5.0001e-08,0,0,0,0,0,0,0,0 +26085000,0.705141,0.0215948,0.0356425,0.707841,-0.686776,-0.35376,-1.3407,-0.4772,-0.375125,-367.193,-1.28695e-05,-5.96562e-05,4.13847e-06,-4.75875e-05,0.000303119,-0.00127711,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00173439,1.48394e-05,1.20828e-05,0.0017191,0.0253059,0.0243112,0.00980242,0.0489919,0.048852,0.0589385,3.13847e-11,3.13908e-11,2.65092e-10,5.69143e-07,5.78606e-07,5e-08,0,0,0,0,0,0,0,0 +26185000,0.702957,0.0242165,0.0456922,0.70935,-0.734101,-0.386567,-1.31055,-0.499823,-0.417183,-367.326,-1.29011e-05,-5.96919e-05,4.08866e-06,-6.48371e-05,0.000388691,-0.0012773,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00163585,1.59814e-05,1.41094e-05,0.00163332,0.0229007,0.021894,0.00971673,0.0434184,0.0433175,0.0584905,3.14652e-11,3.14729e-11,2.65143e-10,5.29905e-07,5.41559e-07,5e-08,0,0,0,0,0,0,0,0 +26285000,0.70261,0.0252147,0.0483673,0.709482,-0.826104,-0.427716,-1.29853,-0.577769,-0.457915,-367.46,-1.29007e-05,-5.96915e-05,4.08583e-06,-6.48227e-05,0.000388595,-0.00127598,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00158474,1.62786e-05,1.47579e-05,0.00158463,0.0254206,0.0239995,0.00988288,0.0484878,0.0483226,0.0594906,3.15652e-11,3.15729e-11,2.65241e-10,5.29909e-07,5.41568e-07,5.0002e-08,0,0,0,0,0,0,0,0 +26385000,0.703502,0.0243117,0.0447905,0.708863,-0.906015,-0.486499,-1.30344,-0.64537,-0.545831,-367.596,-1.28882e-05,-5.97284e-05,4.07098e-06,-2.76808e-05,0.000407187,-0.00127293,0.216582,0.00210342,0.427819,0,0,0,0,0,0.0015271,1.55542e-05,1.38549e-05,0.00152817,0.0234943,0.0218497,0.00979957,0.0430601,0.0429374,0.0590402,3.16289e-11,3.1638e-11,2.65306e-10,4.93271e-07,5.07135e-07,5.0002e-08,0,0,0,0,0,0,0,0 +26485000,0.703633,0.0318109,0.0596424,0.707341,-0.998926,-0.524907,-1.30746,-0.740373,-0.596443,-367.73,-1.28879e-05,-5.9728e-05,4.06732e-06,-2.77467e-05,0.000407082,-0.00127149,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00148496,1.82824e-05,1.78278e-05,0.00148434,0.0263895,0.0239987,0.00988805,0.0480416,0.0478295,0.0591727,3.17289e-11,3.17379e-11,2.65401e-10,4.93266e-07,5.07143e-07,5.0001e-08,0,0,0,0,0,0,0,0 +26585000,0.703164,0.0384711,0.076528,0.70585,-1.08602,-0.577438,-1.29743,-0.781626,-0.661776,-367.865,-1.29592e-05,-5.98062e-05,3.99981e-06,-4.78226e-05,0.000504187,-0.00126886,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00143619,2.10595e-05,2.32904e-05,0.00143604,0.0250573,0.0220583,0.00981263,0.0427465,0.0425826,0.058733,3.17749e-11,3.17841e-11,2.65475e-10,4.59118e-07,4.75401e-07,5.0001e-08,0,0,0,0,0,0,0,0 +26685000,0.704117,0.039922,0.0799706,0.704437,-1.23105,-0.638568,-1.28712,-0.897445,-0.722545,-368,-1.29589e-05,-5.98055e-05,4.00109e-06,-4.76124e-05,0.000504228,-0.00126693,0.216582,0.00210342,0.427819,0,0,0,0,0,0.0014116,2.15296e-05,2.46175e-05,0.00140738,0.0290285,0.0244099,0.00991722,0.0477179,0.0473976,0.0588711,3.18749e-11,3.1884e-11,2.65567e-10,4.59101e-07,4.75406e-07,5e-08,0,0,0,0,0,0,0,0 +26785000,0.705023,0.0379978,0.074175,0.70427,-1.34997,-0.723901,-1.29054,-0.99289,-0.854074,-368.139,-1.29764e-05,-5.9837e-05,3.94504e-06,9.67945e-06,0.000544653,-0.00126223,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00136603,1.99272e-05,2.19751e-05,0.00136353,0.0278951,0.0225341,0.00984828,0.0425265,0.0422722,0.0584414,3.19062e-11,3.19119e-11,2.65646e-10,4.2751e-07,4.46905e-07,5e-08,0,0,0,0,0,0,0,0 +26885000,0.704593,0.0464842,0.0947254,0.701723,-1.49303,-0.781367,-1.30303,-1.13471,-0.929198,-368.276,-1.29763e-05,-5.98362e-05,3.9459e-06,9.87644e-06,0.000544752,-0.00125972,0.216582,0.00210342,0.427819,0,0,0,0,0,0.0013435,2.38148e-05,3.02154e-05,0.00133821,0.0324709,0.0248816,0.00996095,0.047579,0.0470429,0.0585859,3.20062e-11,3.20118e-11,2.65735e-10,4.27472e-07,4.46906e-07,5e-08,0,0,0,0,0,0,0,0 +26985000,0.70391,0.0535626,0.117379,0.698473,-1.60653,-0.857464,-1.28376,-1.19096,-1.02734,-368.412,-1.31591e-05,-5.9952e-05,3.86647e-06,-8.92822e-06,0.000687443,-0.00125731,0.216582,0.00210342,0.427819,0,0,0,0,0,0.00128375,2.71181e-05,4.00728e-05,0.00128214,0.0318161,0.0231197,0.00998979,0.0424464,0.0420196,0.0590243,3.20286e-11,3.2024e-11,2.6582e-10,3.9856e-07,4.22249e-07,5.0002e-08,0,0,0,0,0,0,0,0 +27085000,0.704561,0.0547525,0.122303,0.696877,-1.81063,-0.947813,-1.25643,-1.36176,-1.1176,-368.542,-1.31591e-05,-5.99517e-05,3.86636e-06,-8.87263e-06,0.000687508,-0.00125601,0.212984,0.00205671,0.429918,-0.00179412,0.00395211,0.00100798,0,0,0.00128463,2.80658e-05,4.28118e-05,0.00127788,0.0382954,0.0258775,0.0101461,0.0477019,0.0467888,0.0591806,3.21286e-11,3.2124e-11,2.6592e-10,3.98569e-07,4.22257e-07,5.0001e-08,0.00143045,1.85606e-05,0.00157849,0.000554823,0.00139834,0.00160316,0,0 +27185000,0.706723,0.0515278,0.112324,0.696614,-2.01184,-1.01045,-1.23919,-1.55799,-1.1945,-368.671,-1.31362e-05,-6.00787e-05,3.867e-06,-6.20795e-05,0.000678066,-0.00125321,0.213282,0.00205708,0.429919,-0.00212632,0.00365717,0.00106893,0,0,0.00122525,2.4852e-05,3.56317e-05,0.00122651,0.0394817,0.0261189,0.0101012,0.0502348,0.0493422,0.0587587,3.21555e-11,3.21302e-11,2.6602e-10,3.82121e-07,4.10655e-07,5.0001e-08,0.00137056,1.84258e-05,0.00153129,0.000344349,0.00133396,0.00155885,0,0 +27285000,0.708236,0.0458775,0.097261,0.697738,-2.17427,-1.07916,-1.22943,-1.76756,-1.29912,-368.801,-1.31366e-05,-6.00783e-05,3.86691e-06,-6.20244e-05,0.000678239,-0.00125112,0.21284,0.00205482,0.430256,-0.00180521,0.00397397,0.00148478,0,0,0.00123128,2.21032e-05,2.9007e-05,0.00123024,0.0458889,0.0288365,0.010246,0.0566769,0.0549379,0.058925,3.22555e-11,3.22302e-11,2.6612e-10,3.82131e-07,4.10662e-07,5.0001e-08,0.00134776,1.83028e-05,0.00152138,0.000264203,0.00131189,0.00154661,0,0 +27385000,0.709877,0.0395126,0.0812662,0.698504,-2.24825,-1.09498,-1.22774,-1.94931,-1.36867,-368.935,-1.32833e-05,-6.02843e-05,3.86912e-06,-0.000143938,0.000733297,-0.00124712,0.21355,0.00206114,0.431966,-0.00223339,0.00408189,0.00380207,0,0,0.00115325,1.83262e-05,2.16374e-05,0.00116774,0.0437521,0.0282207,0.0101443,0.0589016,0.0574089,0.0585062,3.22889e-11,3.22301e-11,2.66219e-10,3.66165e-07,4.01247e-07,5e-08,0.00132998,1.81841e-05,0.0015042,0.000220971,0.0012994,0.00151948,0,0 +27485000,0.710451,0.0337234,0.066163,0.699817,-2.33453,-1.13319,-1.21289,-2.17857,-1.48019,-369.065,-1.32842e-05,-6.02839e-05,3.86913e-06,-0.00014391,0.000733611,-0.00124429,0.213514,0.00206155,0.431645,-0.0023245,0.00451921,0.00404775,0,0,0.00115637,1.63594e-05,1.73812e-05,0.00117124,0.0482633,0.0305543,0.0102491,0.0664303,0.0638113,0.0586805,3.23888e-11,3.23301e-11,2.66319e-10,3.66175e-07,4.01252e-07,5e-08,0.0013156,1.80677e-05,0.00149851,0.000194442,0.00129102,0.00149828,0,0 +27585000,0.711256,0.0290751,0.0535342,0.700289,-2.43366,-1.14442,-1.215,-2.45405,-1.58082,-369.196,-1.31765e-05,-6.035e-05,3.84378e-06,-0.000169799,0.000694048,-0.00123776,0.213006,0.00205402,0.430237,-0.00259589,0.00474693,0.00235461,0,0,0.00107939,1.41292e-05,1.37862e-05,0.00111203,0.0438199,0.0293032,0.0102004,0.0681642,0.0660769,0.0591333,3.243e-11,3.23281e-11,2.66416e-10,3.50987e-07,3.93593e-07,5.0002e-08,0.001304,1.79813e-05,0.00147956,0.000179319,0.00128422,0.00146599,0,0 +27685000,0.711098,0.0281564,0.0513112,0.700653,-2.47218,-1.15928,-1.21611,-2.69928,-1.69598,-369.323,-1.31775e-05,-6.03498e-05,3.84386e-06,-0.000169804,0.000694333,-0.00123558,0.21295,0.00205235,0.430172,-0.00272983,0.00474782,0.00250562,0,0,0.00107935,1.39984e-05,1.34715e-05,0.00111289,0.047002,0.0314853,0.0102874,0.0765563,0.0732239,0.0593169,3.25299e-11,3.24281e-11,2.66516e-10,3.50997e-07,3.93596e-07,5.0002e-08,0.00129206,1.78676e-05,0.00147191,0.00016506,0.00127871,0.00143849,0,0 +27785000,0.711372,0.0286631,0.0532035,0.700213,-2.52954,-1.16133,-1.21429,-2.96885,-1.79354,-369.452,-1.31342e-05,-6.04295e-05,3.81546e-06,-0.000200024,0.000678723,-0.00123055,0.212608,0.00204541,0.429264,-0.00323843,0.00502814,0.00213959,0,0,0.00101391,1.3498e-05,1.32898e-05,0.00106433,0.0422473,0.0300302,0.0101552,0.0777714,0.0751983,0.0588935,3.25775e-11,3.24276e-11,2.66608e-10,3.36704e-07,3.87054e-07,5.0001e-08,0.00128343,1.77559e-05,0.00145499,0.000153682,0.00127474,0.00141011,0,0 +27885000,0.711425,0.0280356,0.0514663,0.700314,-2.56667,-1.17717,-1.21432,-3.22345,-1.91044,-369.584,-1.31363e-05,-6.04295e-05,3.81573e-06,-0.000200077,0.00067929,-0.00122679,0.21267,0.00204627,0.429313,-0.00321718,0.00501213,0.00205443,0,0,0.00101423,1.3454e-05,1.30995e-05,0.00106465,0.0451573,0.0323048,0.0102416,0.0868575,0.0830298,0.0590785,3.26774e-11,3.25276e-11,2.66708e-10,3.36714e-07,3.87054e-07,5.0001e-08,0.00127771,1.76461e-05,0.00145161,0.000145563,0.00127349,0.00139583,0,0 +27985000,0.711797,0.027084,0.0474474,0.700257,-2.64453,-1.18217,-1.21721,-3.53687,-2.02384,-369.714,-1.30211e-05,-6.04451e-05,3.76804e-06,-0.000206739,0.000638439,-0.00122096,0.21199,0.00203899,0.427564,-0.00331226,0.00556867,0.000803681,0,0,0.00096169,1.26582e-05,1.21105e-05,0.00102738,0.0406567,0.0307287,0.0101157,0.0875566,0.0846475,0.0586576,3.27307e-11,3.25317e-11,2.66793e-10,3.23471e-07,3.81328e-07,5e-08,0.00127206,1.75372e-05,0.00143741,0.000138281,0.00127086,0.0013746,0,0 +28085000,0.711339,0.0325556,0.0598808,0.699536,-2.68011,-1.19435,-1.22982,-3.80266,-2.14254,-369.843,-1.30228e-05,-6.04453e-05,3.76831e-06,-0.000206805,0.000638874,-0.00121848,0.212039,0.00203775,0.427607,-0.00353002,0.00551249,0.000914288,0,0,0.000960144,1.39129e-05,1.42333e-05,0.00102605,0.0433439,0.033102,0.0102014,0.0972207,0.0931079,0.0588426,3.28305e-11,3.26317e-11,2.66893e-10,3.23481e-07,3.81325e-07,5e-08,0.00126856,1.74301e-05,0.00143557,0.000133013,0.00127037,0.0013663,0,0 +28185000,0.711198,0.038062,0.074051,0.698044,-2.75233,-1.20598,-0.991707,-4.11004,-2.25473,-369.973,-1.29598e-05,-6.04694e-05,3.72637e-06,-0.000216303,0.000616407,-0.00121263,0.212033,0.00203879,0.426551,-0.00363656,0.00613378,0.000177901,0,0,0.000914973,1.46897e-05,1.65904e-05,0.000993573,0.0390738,0.0311616,0.010088,0.0974248,0.0943246,0.0584244,3.28892e-11,3.26433e-11,2.66972e-10,3.1141e-07,3.76211e-07,5e-08,0.00126498,1.73241e-05,0.00142635,0.000128159,0.00126723,0.00135879,0,0 +28285000,0.713117,0.0309878,0.0584977,0.697912,-2.75168,-1.2179,-0.133125,-4.38515,-2.3759,-370.035,-1.29613e-05,-6.04696e-05,3.72664e-06,-0.000216374,0.0006168,-0.00121061,0.212255,0.00204058,0.426571,-0.00375583,0.00619519,0.000276288,0,0,0.000919446,1.32281e-05,1.36885e-05,0.00099405,0.0399039,0.0324946,0.0102611,0.107529,0.103334,0.0594806,3.2989e-11,3.27433e-11,2.67072e-10,3.11419e-07,3.76209e-07,5.0002e-08,0.00126348,1.72462e-05,0.0014262,0.000125439,0.00126642,0.00135774,0,0 +28385000,0.715465,0.0149603,0.0272696,0.697956,-2.78556,-1.2198,0.734863,-4.72214,-2.49576,-370.014,-1.28418e-05,-6.04684e-05,3.66902e-06,-0.000216985,0.00057638,-0.00120503,0.21123,0.00202779,0.425578,-0.0037794,0.00592815,-0.000810058,0,0,0.000892534,1.06477e-05,9.95026e-06,0.000973511,0.035088,0.0299574,0.0103189,0.107358,0.104149,0.0596518,3.30441e-11,3.27513e-11,2.67148e-10,2.99983e-07,3.71049e-07,5.0001e-08,0.00125716,1.71419e-05,0.00141439,0.000121593,0.0012615,0.00133888,0,0 +28485000,0.715809,0.00534427,0.00799667,0.69823,-2.74237,-1.21228,1.06725,-4.9985,-2.61745,-369.927,-1.28453e-05,-6.0469e-05,3.66965e-06,-0.000217159,0.000577229,-0.00120118,0.209691,0.00200654,0.426183,-0.00368278,0.00428268,-0.000562978,0,0,0.000893884,1.0097e-05,9.49344e-06,0.00097381,0.0360289,0.0317716,0.0103841,0.117677,0.113594,0.0598341,3.31438e-11,3.28513e-11,2.67248e-10,2.99992e-07,3.71036e-07,5.0001e-08,0.00124017,1.70355e-05,0.00139742,0.000118446,0.00124667,0.00129798,0,0 +28585000,0.715119,0.00359995,0.00430183,0.69898,-2.7115,-1.1882,0.968138,-5.33585,-2.73688,-369.836,-1.27087e-05,-6.04609e-05,3.60532e-06,-0.000215266,0.000531024,-0.00119842,0.208557,0.0019921,0.426075,-0.00355947,0.00355227,-0.00240658,0,0,0.000871118,9.99722e-06,9.5543e-06,0.000961364,0.0510604,0.0487556,0.0293229,0.117294,0.114052,0.0600173,3.31912e-11,3.28572e-11,2.67319e-10,2.89034e-07,3.65203e-07,5e-08,0.00122318,1.69289e-05,0.00137297,0.000115287,0.00123161,0.00125002,0,0 +28685000,0.714145,0.00285716,0.00330004,0.699985,-2.63968,-1.17,0.96768,-5.60281,-2.85463,-369.753,-1.27136e-05,-6.04618e-05,3.60622e-06,-0.000215266,0.000531024,-0.00119842,0.20761,0.00197928,0.426448,-0.00347977,0.00253451,-0.0022606,0,0,0.000869842,1.0089e-05,9.68346e-06,0.000963003,0.0752446,0.0740029,0.0528885,0.128053,0.124121,0.0604901,3.32908e-11,3.29571e-11,2.67419e-10,2.89034e-07,3.65203e-07,5e-08,0.0012104,1.68235e-05,0.00135681,0.000112812,0.00122217,0.00121096,0,0 +28785000,0.713498,0.00267185,0.00304701,0.700646,-2.65169,-1.14523,0.969011,-5.93135,-2.96646,-369.67,-1.26284e-05,-6.0463e-05,3.5385e-06,-0.000215266,0.000531024,-0.00119842,0.206785,0.00196865,0.426234,-0.00350441,0.00195684,-0.00320036,0,0,0.000854266,1.00562e-05,9.71316e-06,0.000954194,0.0810502,0.0812193,0.0714108,0.12741,0.124168,0.060496,3.33612e-11,3.30084e-11,2.67482e-10,2.89034e-07,3.65203e-07,5e-08,0.00120066,1.67191e-05,0.00133962,0.000110465,0.00121512,0.00117695,0,0 +28885000,0.713005,0.0026264,0.00322063,0.701147,-2.58339,-1.12873,0.957097,-6.19262,-3.08004,-369.584,-1.26323e-05,-6.04639e-05,3.53922e-06,-0.000215266,0.000531024,-0.00119842,0.20625,0.00196173,0.426366,-0.00344461,0.00141363,-0.00298653,0,0,0.000853744,1.0172e-05,9.82567e-06,0.000955114,0.105397,0.106588,0.0948265,0.138331,0.13463,0.063208,3.34607e-11,3.31083e-11,2.67582e-10,2.89034e-07,3.65203e-07,5e-08,0.00119478,1.66415e-05,0.00133113,0.000108982,0.00121182,0.00115608,0,0 +28985000,0.712747,0.00288729,0.00368981,0.701406,-2.63992,-1.11793,0.941401,-6.52581,-3.19586,-369.505,-1.25814e-05,-6.04544e-05,3.48291e-06,-0.000215266,0.000531024,-0.00119842,0.205659,0.00195399,0.426145,-0.00346729,0.000914439,-0.00311014,0,0,0.000844819,1.01782e-05,9.85245e-06,0.000948198,0.0972423,0.0985785,0.10361,0.137524,0.134295,0.0638551,3.35487e-11,3.31928e-11,2.67645e-10,2.89034e-07,3.65203e-07,5e-08,0.00118828,1.65387e-05,0.00131895,0.000107139,0.00120803,0.00113157,0,0 +29085000,0.712604,0.0030053,0.00404603,0.701548,-2.5771,-1.10242,0.92964,-6.7861,-3.30671,-369.425,-1.25862e-05,-6.04555e-05,3.48378e-06,-0.000215266,0.000531024,-0.00119842,0.205224,0.00194813,0.426252,-0.00345856,0.000453711,-0.00288061,0,0,0.000844836,1.03022e-05,9.96573e-06,0.000948605,0.121688,0.123904,0.126141,0.148527,0.145036,0.0672492,3.36481e-11,3.32928e-11,2.67745e-10,2.89034e-07,3.65203e-07,5e-08,0.00118295,1.64368e-05,0.0013109,0.00010552,0.00120578,0.00111155,0,0 +29185000,0.712576,0.00316694,0.00435897,0.701574,-2.55514,-1.0934,0.898833,-7.06302,-3.41955,-369.356,-1.25886e-05,-6.04552e-05,3.47402e-06,-0.000215266,0.000531024,-0.00119842,0.20526,0.00194921,0.426716,-0.00337293,0.000295567,-0.00337214,0,0,0.000839761,1.03377e-05,1.00117e-05,0.000942642,0.104898,0.106526,0.12468,0.14764,0.144433,0.0680133,3.37431e-11,3.33907e-11,2.67813e-10,2.89034e-07,3.65203e-07,5e-08,0.00117834,1.63362e-05,0.0013021,0.000104054,0.00120361,0.00109398,0,0 +29285000,0.712521,0.00346542,0.0051259,0.701624,-2.49749,-1.0806,0.918311,-7.31511,-3.5281,-369.28,-1.25937e-05,-6.04564e-05,3.47489e-06,-0.000215266,0.000531024,-0.00119842,0.205074,0.0019466,0.426814,-0.00339289,6.80743e-05,-0.0032967,0,0,0.000839919,1.04681e-05,1.01247e-05,0.000942937,0.129363,0.131721,0.146235,0.158684,0.155349,0.0727127,3.38426e-11,3.34906e-11,2.67913e-10,2.89034e-07,3.65203e-07,5e-08,0.00117446,1.62369e-05,0.00129632,0.000102736,0.00120234,0.00107932,0,0 +29385000,0.71258,0.00392188,0.00647275,0.70155,-2.51254,-1.08204,0.904945,-7.5998,-3.64315,-369.212,-1.26037e-05,-6.04582e-05,3.46245e-06,-0.000215266,0.000531024,-0.00119842,0.205176,0.00194691,0.427013,-0.00351251,-4.42015e-05,-0.00326464,0,0,0.000836658,1.05277e-05,1.01809e-05,0.000937588,0.108264,0.109786,0.136867,0.157764,0.15458,0.0729696,3.39385e-11,3.35904e-11,2.67984e-10,2.89034e-07,3.65203e-07,5e-08,0.00117107,1.61389e-05,0.00128984,0.000101542,0.00120098,0.00106667,0,0 +29485000,0.712621,0.00439116,0.0075776,0.701494,-2.46187,-1.07217,0.897173,-7.84816,-3.75075,-369.133,-1.26071e-05,-6.0459e-05,3.46301e-06,-0.000215266,0.000531024,-0.00119842,0.205127,0.00194676,0.427113,-0.00345947,-0.000118347,-0.00328992,0,0,0.000836966,1.06672e-05,1.0302e-05,0.000937751,0.132753,0.134887,0.15744,0.168834,0.165602,0.0784013,3.4038e-11,3.36904e-11,2.68084e-10,2.89034e-07,3.65203e-07,5e-08,0.00116825,1.60421e-05,0.00128589,0.000100455,0.00120029,0.00105639,0,0 +29585000,0.71266,0.00468525,0.00854032,0.701442,-2.41582,-1.05189,0.875198,-8.0924,-3.85134,-369.062,-1.2614e-05,-6.04576e-05,3.45621e-06,-0.000215266,0.000531024,-0.00119842,0.20503,0.00194558,0.426989,-0.00347239,-0.000150345,-0.00313444,0,0,0.000834572,1.07418e-05,1.03823e-05,0.000932946,0.10971,0.11104,0.14392,0.167894,0.16473,0.0793456,3.41325e-11,3.37879e-11,2.68159e-10,2.89034e-07,3.65203e-07,5e-08,0.00116627,1.59706e-05,0.00128178,9.96984e-05,0.00119949,0.00104938,0,0 +29685000,0.712806,0.00495152,0.009184,0.701283,-2.37204,-1.04297,0.863979,-8.3315,-3.95599,-368.986,-1.26168e-05,-6.04582e-05,3.45667e-06,-0.000215266,0.000531024,-0.00119842,0.205033,0.00194552,0.426985,-0.00351064,-0.000162671,-0.00305215,0,0,0.000835046,1.0882e-05,1.05135e-05,0.000932965,0.134196,0.136048,0.163996,0.178987,0.175819,0.0852165,3.42321e-11,3.38879e-11,2.68259e-10,2.89034e-07,3.65203e-07,5e-08,0.00116403,1.58759e-05,0.00127879,9.87653e-05,0.00119901,0.00104155,0,0 +29785000,0.712951,0.00510864,0.00955936,0.701131,-2.36413,-1.03405,0.842732,-8.58435,-4.05944,-368.915,-1.26311e-05,-6.04589e-05,3.44763e-06,-0.000215266,0.000531024,-0.00119842,0.205027,0.00194598,0.427038,-0.0034443,-0.00020533,-0.00290783,0,0,0.000833287,1.09659e-05,1.06052e-05,0.000928543,0.11031,0.111453,0.14677,0.178027,0.174884,0.0836509,3.4324e-11,3.39819e-11,2.68337e-10,2.89034e-07,3.65203e-07,5e-08,0.00116192,1.57824e-05,0.00127473,9.79017e-05,0.00119827,0.00103435,0,0 +29885000,0.713048,0.00513599,0.00968842,0.70103,-2.32568,-1.02638,0.823103,-8.81849,-4.16238,-368.849,-1.26346e-05,-6.04597e-05,3.44818e-06,-0.000215266,0.000531024,-0.00119842,0.205106,0.00194666,0.427072,-0.00350273,-0.000170968,-0.00292606,0,0,0.000833711,1.11036e-05,1.07394e-05,0.000928645,0.134788,0.136381,0.166278,0.189144,0.186015,0.0893806,3.44237e-11,3.40818e-11,2.68437e-10,2.89034e-07,3.65203e-07,5e-08,0.00116011,1.56901e-05,0.00127237,9.7107e-05,0.00119791,0.00102816,0,0 +29985000,0.713171,0.0051348,0.00974835,0.700904,-2.27574,-1.00676,0.802518,-9.04294,-4.25766,-368.78,-1.26344e-05,-6.04547e-05,3.44389e-06,-0.000215266,0.000531024,-0.00119842,0.205129,0.00194707,0.427029,-0.00351313,-0.000115842,-0.00297865,0,0,0.000832294,1.11908e-05,1.0836e-05,0.000924763,0.110554,0.111548,0.147729,0.188164,0.185039,0.0869752,3.45129e-11,3.41723e-11,2.68516e-10,2.89034e-07,3.65203e-07,5e-08,0.00115834,1.55989e-05,0.00126892,9.6366e-05,0.00119729,0.00102225,0,0 +30085000,0.713297,0.00508392,0.0096193,0.700778,-2.23893,-0.999819,0.787104,-9.26854,-4.35796,-368.71,-1.26361e-05,-6.04551e-05,3.44413e-06,-0.000215266,0.000531024,-0.00119842,0.20521,0.0019478,0.427086,-0.00355354,-8.24505e-05,-0.00305694,0,0,0.000832776,1.13301e-05,1.09719e-05,0.000924837,0.135031,0.136429,0.16685,0.199299,0.196197,0.0923689,3.46127e-11,3.42723e-11,2.68616e-10,2.89034e-07,3.65203e-07,5e-08,0.00115682,1.55089e-05,0.00126693,9.56829e-05,0.00119699,0.00101704,0,0 +30185000,0.713464,0.00500769,0.00937589,0.700611,-2.22262,-0.989989,0.781334,-9.5013,-4.45585,-368.633,-1.26465e-05,-6.04537e-05,3.43749e-06,-0.000215266,0.000531024,-0.00119842,0.205231,0.00194848,0.42716,-0.00348292,-8.99103e-05,-0.0030768,0,0,0.000831665,1.14208e-05,1.10703e-05,0.000921317,0.110652,0.111527,0.148928,0.198306,0.195195,0.0914191,3.46994e-11,3.43597e-11,2.68695e-10,2.89034e-07,3.65203e-07,5e-08,0.00115563,1.54424e-05,0.00126432,9.51956e-05,0.00119652,0.00101311,0,0 +30285000,0.713597,0.00487556,0.00916793,0.700479,-2.18565,-0.984999,0.772043,-9.72169,-4.55461,-368.557,-1.26468e-05,-6.04538e-05,3.43752e-06,-0.000215266,0.000531024,-0.00119842,0.205256,0.00194859,0.427192,-0.00350269,-8.79432e-05,-0.00310521,0,0,0.000832172,1.15608e-05,1.12089e-05,0.000921395,0.135132,0.13637,0.168139,0.209453,0.20637,0.0966637,3.47992e-11,3.44597e-11,2.68795e-10,2.89034e-07,3.65203e-07,5e-08,0.00115427,1.53543e-05,0.00126253,9.45919e-05,0.00119624,0.00100843,0,0 +30385000,0.713699,0.00474897,0.00888437,0.70038,-2.13446,-0.980698,0.761873,-9.93005,-4.65384,-368.487,-1.26397e-05,-6.04551e-05,3.4426e-06,-0.000215266,0.000531024,-0.00119842,0.205118,0.0019469,0.427078,-0.00350323,-0.000151606,-0.00292494,0,0,0.000831155,1.16545e-05,1.13101e-05,0.000918343,0.110699,0.111486,0.148705,0.208452,0.205352,0.0930423,3.48836e-11,3.45444e-11,2.68875e-10,2.89034e-07,3.65203e-07,5e-08,0.00115288,1.52671e-05,0.0012597,9.40202e-05,0.00119574,0.00100378,0,0 +30485000,0.713782,0.00460578,0.00861046,0.7003,-2.10033,-0.974901,0.75034,-10.1418,-4.75162,-368.413,-1.26398e-05,-6.04551e-05,3.44262e-06,-0.000215266,0.000531024,-0.00119842,0.205095,0.00194662,0.427101,-0.003487,-0.000177217,-0.00292072,0,0,0.000831605,1.17976e-05,1.14516e-05,0.000918504,0.135181,0.136298,0.167758,0.219605,0.216538,0.0978968,3.49835e-11,3.46444e-11,2.68975e-10,2.89034e-07,3.65203e-07,5e-08,0.00115167,1.5181e-05,0.00125806,9.3488e-05,0.00119548,0.000999598,0,0 +30585000,0.714085,0.00438769,0.00816554,0.699998,-2.08039,-0.973615,0.722534,-10.3584,-4.85148,-368.341,-1.26488e-05,-6.04556e-05,3.47701e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.00082363,1.18906e-05,1.15541e-05,0.000903004,0.110731,0.111447,0.14838,0.218595,0.215468,0.0939819,3.50656e-11,3.47232e-11,2.68646e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +30685000,0.714161,0.00417398,0.00779197,0.699925,-2.04612,-0.966965,0.715629,-10.5647,-4.94856,-368.274,-1.26493e-05,-6.04561e-05,3.47234e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000815573,1.20336e-05,1.16985e-05,0.000888004,0.135217,0.136231,0.167331,0.229753,0.226617,0.0984992,3.51654e-11,3.48192e-11,2.68238e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +30785000,0.714144,0.00401457,0.00739464,0.699948,-2.00775,-0.951528,0.715404,-10.7652,-5.04001,-368.2,-1.26476e-05,-6.0452e-05,3.44607e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000807168,1.21302e-05,1.18031e-05,0.000872205,0.11074,0.111379,0.148062,0.228736,0.225531,0.0944102,3.52453e-11,3.48954e-11,2.67846e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +30885000,0.714125,0.00378453,0.00693223,0.699974,-1.97324,-0.944848,0.705197,-10.9642,-5.13482,-368.132,-1.26478e-05,-6.04521e-05,3.44569e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000802307,1.22768e-05,1.19507e-05,0.00086344,0.135235,0.13615,0.168313,0.239898,0.236709,0.101147,3.53452e-11,3.4993e-11,2.67611e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +30985000,0.71418,0.00360251,0.006335,0.699924,-1.96065,-0.937445,0.704295,-11.1715,-5.22818,-368.063,-1.26623e-05,-6.04514e-05,3.43853e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000795231,1.2376e-05,1.20567e-05,0.000850359,0.110754,0.111332,0.148825,0.23888,0.235623,0.0967575,3.54233e-11,3.50677e-11,2.67268e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31085000,0.714179,0.00334787,0.00577508,0.699931,-1.92695,-0.930775,0.6927,-11.3658,-5.32171,-368.002,-1.26627e-05,-6.04527e-05,3.42414e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000789968,1.25254e-05,1.22081e-05,0.000840662,0.135255,0.13608,0.167937,0.250041,0.246804,0.100985,3.55232e-11,3.51651e-11,2.66964e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31185000,0.714228,0.00311818,0.00537678,0.699885,-1.88862,-0.928557,0.66884,-11.5542,-5.41637,-367.951,-1.26598e-05,-6.04551e-05,3.42943e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000784018,1.26248e-05,1.23166e-05,0.000829894,0.110768,0.111288,0.148553,0.249026,0.245719,0.0965595,3.55995e-11,3.52384e-11,2.66661e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31285000,0.714312,0.00285324,0.00479147,0.699805,-1.85367,-0.920604,0.670304,-11.7413,-5.50877,-367.891,-1.26602e-05,-6.04546e-05,3.43614e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000779706,1.27774e-05,1.2472e-05,0.000821934,0.135271,0.136026,0.167539,0.260186,0.25691,0.100573,3.56995e-11,3.53362e-11,2.66387e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31385000,0.714332,0.00257004,0.00415711,0.69979,-1.83961,-0.920965,0.662394,-11.9365,-5.60451,-367.831,-1.26743e-05,-6.04605e-05,3.42837e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000774652,1.28784e-05,1.25827e-05,0.000812832,0.11078,0.111263,0.148256,0.259173,0.255826,0.0961557,3.57742e-11,3.54081e-11,2.66111e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31485000,0.714231,0.00232922,0.00347272,0.699898,-1.80388,-0.914174,0.659663,-12.1186,-5.69645,-367.77,-1.26744e-05,-6.04623e-05,3.40404e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000771931,1.30359e-05,1.27428e-05,0.000807914,0.135299,0.135993,0.168593,0.270329,0.267028,0.102631,3.58741e-11,3.55068e-11,2.65947e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31585000,0.714279,0.00210833,0.00300758,0.699852,-1.77201,-0.894144,0.652534,-12.2993,-5.78079,-367.711,-1.26788e-05,-6.04525e-05,3.40889e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000767431,1.31397e-05,1.2855e-05,0.000800012,0.110799,0.111246,0.149067,0.269324,0.265947,0.0980172,3.59472e-11,3.5577e-11,2.65686e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31685000,0.714307,0.00182564,0.00231412,0.699826,-1.73819,-0.887168,0.660373,-12.4748,-5.86978,-367.647,-1.2679e-05,-6.04517e-05,3.42092e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000764227,1.32991e-05,1.30196e-05,0.000794369,0.13532,0.135954,0.168214,0.280475,0.277147,0.101972,3.60471e-11,3.56755e-11,2.65447e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31785000,0.714388,0.00145797,0.00152771,0.699747,-1.72938,-0.877698,0.655888,-12.6616,-5.95676,-367.59,-1.26998e-05,-6.04491e-05,3.43065e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000760323,1.34025e-05,1.31358e-05,0.000787505,0.110815,0.111218,0.148778,0.279472,0.276068,0.0974084,3.61185e-11,3.57442e-11,2.65199e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31885000,0.714427,0.00115404,0.000770085,0.699709,-1.69181,-0.868634,0.654225,-12.8326,-6.04408,-367.528,-1.26999e-05,-6.04492e-05,3.42791e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000757686,1.35653e-05,1.3306e-05,0.000782567,0.135354,0.135941,0.167843,0.290619,0.287271,0.101267,3.62185e-11,3.58429e-11,2.64971e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +31985000,0.71436,0.000895659,0.000197154,0.699778,-1.64826,-0.851647,0.649047,-12.9965,-6.1252,-367.47,-1.26964e-05,-6.04422e-05,3.40876e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000754167,1.36723e-05,1.34224e-05,0.000776572,0.110843,0.111214,0.148497,0.289624,0.286195,0.0967615,3.62881e-11,3.59099e-11,2.64731e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32085000,0.714269,0.000568509,-0.000574515,0.699871,-1.61221,-0.843481,0.656055,-13.1595,-6.21006,-367.412,-1.26966e-05,-6.04433e-05,3.3913e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.00075176,1.38379e-05,1.35976e-05,0.000772428,0.135388,0.135915,0.167483,0.300763,0.2974,0.10054,3.63881e-11,3.60088e-11,2.64509e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32185000,0.714186,0.000194576,-0.00150714,0.699955,-1.5975,-0.835816,0.655994,-13.3309,-6.29376,-367.353,-1.27142e-05,-6.04446e-05,3.35222e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000749281,1.39463e-05,1.37206e-05,0.000768069,0.110863,0.111191,0.14926,0.299776,0.29633,0.0984616,3.64561e-11,3.60742e-11,2.64352e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32285000,0.714164,-9.90294e-05,-0.00232031,0.699975,-1.5597,-0.827463,0.651022,-13.4887,-6.37701,-367.297,-1.27144e-05,-6.04453e-05,3.34083e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.00074721,1.41165e-05,1.3902e-05,0.000764327,0.135429,0.135895,0.168465,0.310906,0.307535,0.102359,3.65561e-11,3.61733e-11,2.64132e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32385000,0.714186,-0.000366698,-0.0030093,0.69995,-1.51119,-0.816513,0.654977,-13.6377,-6.45792,-367.228,-1.27072e-05,-6.04422e-05,3.359e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000744313,1.42274e-05,1.40235e-05,0.000759591,0.110894,0.11119,0.148972,0.309928,0.306464,0.0977576,3.66224e-11,3.62365e-11,2.63897e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32485000,0.714118,-0.000536314,-0.00331982,0.700017,-1.47309,-0.806912,0.664551,-13.787,-6.53906,-367.165,-1.27073e-05,-6.04419e-05,3.36613e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.00074233,1.44008e-05,1.42016e-05,0.000756472,0.135467,0.135891,0.168097,0.321051,0.317669,0.10159,3.67224e-11,3.63357e-11,2.63677e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32585000,0.714018,-0.000615755,-0.00362188,0.700118,-1.45773,-0.803047,0.665398,-13.9442,-6.62212,-367.095,-1.27248e-05,-6.04472e-05,3.34544e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000739647,1.45144e-05,1.43183e-05,0.000752249,0.110917,0.111183,0.148643,0.320083,0.316601,0.0970253,3.67869e-11,3.63971e-11,2.6344e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32685000,0.713956,-0.000693474,-0.00373649,0.70018,-1.42059,-0.794611,0.66804,-14.0881,-6.70202,-367.026,-1.27248e-05,-6.04473e-05,3.34252e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000737932,1.46918e-05,1.44963e-05,0.000749453,0.135508,0.135884,0.167672,0.331201,0.327807,0.100793,3.68869e-11,3.64964e-11,2.63219e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32785000,0.713924,-0.000718168,-0.00374626,0.700213,-1.38559,-0.781476,0.66712,-14.229,-6.77837,-366.959,-1.27263e-05,-6.04429e-05,3.3401e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000735981,1.48061e-05,1.46086e-05,0.000746349,0.110944,0.11118,0.14941,0.330237,0.326743,0.0987092,3.69494e-11,3.65557e-11,2.6306e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32885000,0.713772,-0.000690931,-0.00374245,0.700367,-1.35141,-0.773252,0.67147,-14.3657,-6.85627,-366.895,-1.27263e-05,-6.04442e-05,3.31155e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000734383,1.49882e-05,1.47877e-05,0.000743875,0.135539,0.135871,0.168664,0.341352,0.337949,0.102612,3.70494e-11,3.66551e-11,2.62835e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +32985000,0.713727,-0.000639303,-0.00378092,0.700413,-1.34237,-0.769206,0.668127,-14.5132,-6.93462,-366.833,-1.2749e-05,-6.04459e-05,3.32803e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000732071,1.51046e-05,1.49015e-05,0.000740537,0.110965,0.11117,0.14908,0.34039,0.336885,0.0979609,3.71097e-11,3.6712e-11,2.62591e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +33085000,0.713804,-0.00071351,-0.00383379,0.700335,-1.30857,-0.762181,0.667348,-14.6458,-7.01094,-366.765,-1.2749e-05,-6.0444e-05,3.37453e-06,-0.000215266,0.000531024,-0.00119842,0.205161,0.00194731,0.427215,-0.00348432,-0.000183228,-0.0029757,0,0,0.000730698,1.52883e-05,1.50848e-05,0.000738267,0.135576,0.135866,0.16824,0.351504,0.34809,0.101803,3.72097e-11,3.68115e-11,2.62361e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +33185000,0.710873,0.00185336,-0.00316509,0.703311,-1.27686,-0.745609,0.612861,-14.7827,-7.08266,-366.701,-1.28175e-05,-6.04286e-05,3.42813e-06,-0.000215266,0.000531024,-0.00119842,0.207055,0.00198515,0.430444,-0.0033539,-0.0021093,-0.000416084,0,0,0.000542134,1.53164e-05,1.5065e-05,0.000555421,0.110987,0.111125,0.148757,0.349418,0.34701,0.097226,3.70938e-11,3.67217e-11,2.62136e-10,2.89034e-07,3.65203e-07,5e-08,0.000756393,1.48306e-05,0.000862156,8.44374e-05,0.000770037,0.000749026,0,0 +33285000,0.662509,0.0147941,-0.00194264,0.748906,-1.26616,-0.72852,0.585999,-14.9105,-7.15637,-366.64,-1.28289e-05,-6.04209e-05,3.44315e-06,-0.000215266,0.000531024,-0.00119842,0.207072,0.00199622,0.430978,-0.00329909,-0.00214005,1.36931e-05,0,0,0.000466901,1.5813e-05,1.51353e-05,0.000580256,0.135599,0.135797,0.167828,0.360428,0.358201,0.101011,3.71672e-11,3.66798e-11,2.62048e-10,2.89034e-07,3.65203e-07,5e-08,0.000688138,1.45351e-05,0.000808111,7.5957e-05,0.000695112,0.000715667,0,0 +33385000,0.561815,0.012894,-0.00253915,0.827158,-1.27261,-0.720251,0.784257,-15.0459,-7.23113,-366.573,-1.28588e-05,-6.04244e-05,3.44438e-06,-0.000215266,0.000531024,-0.00119842,0.206435,0.00199273,0.431599,-0.00317384,-0.0015679,0.000445093,0,0,0.00036913,1.58275e-05,1.51956e-05,0.000659432,0.110892,0.111011,0.148447,0.359371,0.357132,0.0965058,3.72097e-11,3.6632e-11,2.62005e-10,2.89034e-07,3.65203e-07,5e-08,0.000636249,1.4338e-05,0.000789592,7.0253e-05,0.000632845,0.000704982,0,0 +33485000,0.425874,0.0063304,0.000277993,0.904761,-1.25034,-0.714014,0.816118,-15.173,-7.30304,-366.491,-1.2858e-05,-6.04483e-05,3.42487e-06,-0.000215266,0.000531024,-0.00119842,0.207561,0.00197629,0.431643,-0.00338356,-0.000431814,0.000503812,0,0,0.000269686,1.57942e-05,1.53495e-05,0.000748436,0.13548,0.135635,0.168778,0.370496,0.368326,0.102812,3.73038e-11,3.6683e-11,2.62048e-10,2.89034e-07,3.65203e-07,5e-08,0.000566632,1.42368e-05,0.000781306,6.78064e-05,0.00054328,0.000700114,0,0 +33585000,0.269508,0.000177452,-0.00184593,0.962996,-1.19736,-0.698993,0.757848,-15.2887,-7.36613,-366.427,-1.28508e-05,-6.0453e-05,3.39245e-06,-0.000215266,0.000531024,-0.00119842,0.207082,0.00194721,0.4317,-0.00324329,-0.000246275,0.000585154,0,0,0.000190615,1.57854e-05,1.54802e-05,0.000811462,0.11099,0.111043,0.149174,0.369451,0.367277,0.0981505,3.73533e-11,3.66973e-11,2.62073e-10,2.89034e-07,3.65203e-07,5e-08,0.000451266,1.41149e-05,0.000773282,6.6159e-05,0.00039147,0.000694389,0,0 +33685000,0.103272,-0.00329472,-0.00478803,0.994636,-1.14041,-0.693761,0.769635,-15.406,-7.43594,-366.35,-1.28544e-05,-6.04585e-05,3.38713e-06,-0.000215266,0.000531024,-0.00119842,0.207193,0.00194183,0.43183,-0.00323616,-1.6242e-05,0.000694,0,0,0.000146811,1.58921e-05,1.56643e-05,0.000843183,0.135707,0.13568,0.168374,0.380523,0.378469,0.102014,3.74489e-11,3.67535e-11,2.62087e-10,2.89034e-07,3.65203e-07,5e-08,0.000355392,1.39644e-05,0.000767744,6.45805e-05,0.000264771,0.000690003,0,0 +33785000,-0.0664753,-0.00498524,-0.00635004,0.997755,-1.10134,-0.670226,0.742119,-15.5308,-7.50079,-366.277,-1.28792e-05,-6.05037e-05,3.29677e-06,-0.000215266,0.000531024,-0.00119842,0.206902,0.00187354,0.4317,-0.00294168,1.44582e-05,0.000738467,0,0,0.000143207,1.58887e-05,1.56995e-05,0.000837721,0.111197,0.111065,0.148872,0.379549,0.377421,0.0974252,3.75009e-11,3.67392e-11,2.62023e-10,2.89034e-07,3.65203e-07,5e-08,0.000291115,1.37712e-05,0.000763741,6.20084e-05,0.00018066,0.000686852,0,0 +33885000,-0.234102,-0.00616023,-0.00682731,0.972169,-1.03239,-0.645082,0.731997,-15.637,-7.56742,-366.206,-1.28817e-05,-6.0568e-05,3.20169e-06,-0.000215266,0.000531024,-0.00119842,0.206471,0.00179094,0.431691,-0.0026314,-0.000201895,0.00088249,0,0,0.00017942,1.58848e-05,1.57442e-05,0.000795968,0.136078,0.135721,0.167926,0.390564,0.388598,0.101197,3.75988e-11,3.67452e-11,2.61917e-10,2.89034e-07,3.65203e-07,5e-08,0.000251374,1.35418e-05,0.000761054,5.83622e-05,0.000129483,0.000684741,0,0 +33985000,-0.381924,-0.00479645,-0.0100227,0.924127,-1.01683,-0.607818,0.704079,-15.7647,-7.63024,-366.136,-1.293e-05,-6.06016e-05,3.13057e-06,-0.000215266,0.000531024,-0.00119842,0.206943,0.00175204,0.431696,-0.00231721,0.000228505,0.000986194,0,0,0.000243431,1.57227e-05,1.57272e-05,0.000726096,0.111442,0.111085,0.148531,0.38968,0.387551,0.0966838,3.76534e-11,3.66836e-11,2.61731e-10,2.89034e-07,3.65203e-07,5e-08,0.000226559,1.32936e-05,0.000758763,5.40711e-05,9.89753e-05,0.000683195,0,0 +34085000,-0.490296,-0.00354761,-0.011572,0.871472,-0.961326,-0.560872,0.711615,-15.8636,-7.68905,-366.063,-1.29326e-05,-6.06267e-05,3.09118e-06,-0.000215266,0.000531024,-0.00119842,0.206899,0.00172052,0.431751,-0.00218495,0.000197131,0.00107724,0,0,0.000309876,1.55803e-05,1.57448e-05,0.000657004,0.136342,0.135728,0.168906,0.400659,0.398722,0.103022,3.77526e-11,3.66953e-11,2.61617e-10,2.89034e-07,3.65203e-07,5e-08,0.000214364,1.31079e-05,0.000757494,5.07851e-05,8.43303e-05,0.000682479,0,0 +34185000,-0.56176,-0.00353144,-0.0100117,0.827232,-0.988334,-0.539959,0.717493,-15.9983,-7.75945,-365.991,-1.30026e-05,-6.06811e-05,3.03567e-06,-0.000215266,0.000531024,-0.00119842,0.207366,0.0016923,0.431867,-0.00195143,0.000318715,0.00123449,0,0,0.000360965,1.53421e-05,1.55573e-05,0.000599989,0.111509,0.111065,0.149284,0.399825,0.397681,0.0983492,3.7809e-11,3.66353e-11,2.61395e-10,2.89034e-07,3.65203e-07,5e-08,0.000202793,1.28743e-05,0.000755843,4.66985e-05,7.13163e-05,0.000681557,0,0 +34285000,-0.606288,-0.00435296,-0.00702399,0.795202,-0.9379,-0.490344,0.72034,-16.0945,-7.81144,-365.92,-1.30037e-05,-6.07193e-05,2.97011e-06,-0.000215266,0.000531024,-0.00119842,0.207533,0.00164731,0.431814,-0.00167361,0.000372279,0.00124167,0,0,0.000396069,1.52e-05,1.54066e-05,0.000561193,0.136384,0.135691,0.168467,0.410796,0.408845,0.102201,3.79084e-11,3.66379e-11,2.61217e-10,2.89034e-07,3.65203e-07,5e-08,0.000195472,1.26652e-05,0.000754887,4.31506e-05,6.27592e-05,0.000680966,0,0 +34385000,-0.633274,-0.00525692,-0.00408324,0.773899,-0.941288,-0.46959,0.714426,-16.2159,-7.87296,-365.855,-1.30565e-05,-6.07637e-05,2.92429e-06,-0.000215266,0.000531024,-0.00119842,0.207895,0.00162573,0.431897,-0.00148309,0.000423959,0.0013172,0,0,0.000417446,1.50146e-05,1.51976e-05,0.00053467,0.11152,0.111039,0.148951,0.409971,0.407811,0.0976034,3.79664e-11,3.661e-11,2.61022e-10,2.89034e-07,3.65203e-07,5e-08,0.000189934,1.2481e-05,0.00075385,4.01709e-05,5.68096e-05,0.000680211,0,0 +34485000,-0.649656,-0.00617595,-0.00180585,0.760201,-0.885869,-0.426098,0.716693,-16.3071,-7.91813,-365.787,-1.30573e-05,-6.07944e-05,2.8663e-06,-0.000215266,0.000531024,-0.00119842,0.207857,0.0015867,0.431899,-0.00135796,0.000277602,0.00134384,0,0,0.000430885,1.49206e-05,1.50844e-05,0.000518411,0.136386,0.135654,0.168041,0.420943,0.418978,0.101397,3.80659e-11,3.66437e-11,2.60882e-10,2.89034e-07,3.65203e-07,5e-08,0.000186344,1.23195e-05,0.000753298,3.76872e-05,5.24693e-05,0.000679655,0,0 +34585000,-0.659651,-0.00676496,-0.000357812,0.751542,-0.904302,-0.432232,0.712929,-16.4332,-7.98588,-365.719,-1.31265e-05,-6.08478e-05,2.84417e-06,-0.000215266,0.000531024,-0.00119842,0.208082,0.00157681,0.432126,-0.00131894,0.00017585,0.00153491,0,0,0.000438214,1.47654e-05,1.49198e-05,0.000506855,0.111516,0.111018,0.14863,0.420121,0.417949,0.0968739,3.81255e-11,3.66453e-11,2.6072e-10,2.89034e-07,3.65203e-07,5e-08,0.000183149,1.21763e-05,0.000752528,3.56152e-05,4.91761e-05,0.000678924,0,0 +34685000,-0.665857,-0.00712059,0.000482262,0.746046,-0.845945,-0.389494,0.715353,-16.5207,-8.02726,-365.644,-1.31297e-05,-6.0868e-05,2.79396e-06,-0.000215266,0.000531024,-0.00119842,0.208293,0.00155191,0.432078,-0.00109158,0.000267691,0.00145095,0,0,0.000442993,1.46861e-05,1.48354e-05,0.000500067,0.136384,0.135632,0.167634,0.431094,0.429117,0.100613,3.82248e-11,3.6702e-11,2.6061e-10,2.89034e-07,3.65203e-07,5e-08,0.000181087,1.2049e-05,0.000752143,3.38738e-05,4.66002e-05,0.000678419,0,0 +34785000,-0.669864,-0.00715009,0.00103713,0.742449,-0.852328,-0.392003,0.715158,-16.6369,-8.08896,-365.572,-1.31901e-05,-6.09316e-05,2.72696e-06,-0.000215266,0.000531024,-0.00119842,0.208648,0.00152132,0.432181,-0.000885301,0.000216016,0.00150734,0,0,0.000445357,1.45476e-05,1.46922e-05,0.000494757,0.111513,0.111008,0.149359,0.430273,0.428094,0.0985283,3.82863e-11,3.67327e-11,2.60517e-10,2.89034e-07,3.65203e-07,5e-08,0.000179309,1.19615e-05,0.000751572,3.2744e-05,4.50087e-05,0.000677882,0,0 +34885000,-0.672395,-0.00717407,0.00116688,0.740157,-0.794972,-0.351984,0.718728,-16.7191,-8.12641,-365.499,-1.31892e-05,-6.09492e-05,2.68318e-06,-0.000215266,0.000531024,-0.00119842,0.20863,0.00149722,0.432155,-0.000819266,0.000107403,0.00150712,0,0,0.000446981,1.44746e-05,1.46199e-05,0.000491661,0.136363,0.135614,0.168575,0.441249,0.439264,0.102402,3.83853e-11,3.6803e-11,2.60422e-10,2.89034e-07,3.65203e-07,5e-08,0.000177917,1.18546e-05,0.000751266,3.14302e-05,4.32308e-05,0.000677466,0,0 +34985000,-0.675731,-0.0143868,-0.000978416,0.737008,0.142453,0.244961,-0.0591168,-16.7726,-8.14712,-365.493,-1.32619e-05,-6.10224e-05,2.60189e-06,-0.000215266,0.000531024,-0.00119842,0.208942,0.00146157,0.432346,-0.000645353,-4.2318e-05,0.00175708,0,0,0.000448633,1.43955e-05,1.46588e-05,0.000486796,0.124863,0.112664,0.14918,0.439858,0.438234,0.0977961,3.84483e-11,3.68391e-11,2.60289e-10,2.89034e-07,3.65203e-07,5e-08,0.000176246,1.17561e-05,0.000750642,3.02952e-05,4.17527e-05,0.000676735,0,0 +35085000,-0.675892,-0.0147572,-0.00137601,0.736852,0.365533,0.268508,-0.153203,-16.7386,-8.12239,-365.498,-1.32586e-05,-6.10397e-05,2.55123e-06,-0.000215266,0.000531024,-0.00119842,0.208914,0.0014358,0.432293,-0.000585869,-0.000175063,0.00181746,0,0,0.000448362,1.43358e-05,1.46086e-05,0.00048596,0.152819,0.138202,0.168345,0.450157,0.449435,0.101619,3.85466e-11,3.69201e-11,2.60202e-10,2.89034e-07,3.65203e-07,5e-08,0.000175274,1.16657e-05,0.00075034,2.93084e-05,4.0509e-05,0.00067618,0,0 +35185000,-0.67589,-0.0144955,-0.00145747,0.736859,0.182611,0.216122,-0.114544,-16.805,-8.14587,-365.49,-1.33656e-05,-6.11067e-05,2.45399e-06,-0.000215266,0.000531024,-0.00119842,0.210982,0.0014509,0.43443,-0.000537083,-0.000258926,0.00357278,0,0,0.000434316,1.4159e-05,1.44622e-05,0.000464496,0.118261,0.112123,0.148797,0.449912,0.448385,0.097049,3.8629e-11,3.69403e-11,2.59885e-10,2.89034e-07,3.65203e-07,5e-08,0.000168166,1.15799e-05,0.000742727,2.84445e-05,3.94496e-05,0.000671239,0,0 +35285000,-0.67595,-0.0144947,-0.00152584,0.736804,0.217223,0.256782,-0.103442,-16.7848,-8.12251,-365.492,-1.3362e-05,-6.11263e-05,2.38452e-06,-0.000215266,0.000531024,-0.00119842,0.210996,0.00142079,0.434346,-0.000447471,-0.000397192,0.00361618,0,0,0.000433987,1.41049e-05,1.44068e-05,0.000463866,0.143345,0.1368,0.167833,0.460504,0.459578,0.100813,3.87266e-11,3.70278e-11,2.59797e-10,2.89034e-07,3.65203e-07,5e-08,0.000167482,1.15021e-05,0.000742525,2.76852e-05,3.85376e-05,0.000670818,0,0 +35385000,-0.675961,-0.0143074,-0.00152856,0.736797,0.0965319,0.205077,-0.074608,-16.8402,-8.14582,-365.484,-1.34537e-05,-6.12046e-05,2.32003e-06,-0.000215266,0.000531024,-0.00119842,0.212096,0.00141429,0.43533,-0.000382142,-0.000546866,0.0044943,0,0,0.000427924,1.39639e-05,1.42806e-05,0.000454534,0.114423,0.111524,0.149509,0.460016,0.458538,0.0987259,3.88055e-11,3.70705e-11,2.5962e-10,2.89034e-07,3.65203e-07,5e-08,0.00016408,1.14459e-05,0.000739264,2.71716e-05,3.79316e-05,0.00066866,0,0 +35485000,-0.676103,-0.0143162,-0.00152755,0.736666,0.131015,0.244168,-0.0658565,-16.8284,-8.1237,-365.483,-1.34491e-05,-6.12252e-05,2.23526e-06,-0.000215266,0.000531024,-0.00119842,0.212129,0.0013811,0.435223,-0.000283391,-0.000705013,0.00453103,0,0,0.000427712,1.39173e-05,1.42308e-05,0.000453938,0.139325,0.136165,0.168768,0.4708,0.469727,0.102627,3.89021e-11,3.7162e-11,2.59528e-10,2.89034e-07,3.65203e-07,5e-08,0.000163554,1.13758e-05,0.000739107,2.65529e-05,3.72122e-05,0.000668314,0,0 +35585000,-0.676053,-0.0141989,-0.00149915,0.736715,0.120105,0.195937,-0.0472256,-16.837,-8.14605,-365.481,-1.34761e-05,-6.131e-05,2.27112e-06,-0.000215266,0.000531024,-0.00119842,0.212324,0.00137056,0.435336,-0.000297669,-0.000889389,0.00471809,0,0,0.000424716,1.37926e-05,1.41143e-05,0.000449247,0.112705,0.11124,0.149144,0.470145,0.46869,0.0979729,3.8977e-11,3.7215e-11,2.59344e-10,2.89034e-07,3.65203e-07,5e-08,0.000161543,1.13081e-05,0.000737528,2.59964e-05,3.65755e-05,0.000667157,0,0 +35685000,-0.676114,-0.0141869,-0.00145282,0.736659,0.154043,0.2355,-0.0417179,-16.8228,-8.12469,-365.484,-1.34758e-05,-6.13241e-05,2.20653e-06,-0.000215266,0.000531024,-0.00119842,0.212383,0.00134837,0.435202,-0.000231319,-0.00100411,0.00469496,0,0,0.000424562,1.37527e-05,1.40691e-05,0.00044884,0.137503,0.135854,0.168307,0.481054,0.479878,0.101815,3.90727e-11,3.73096e-11,2.59247e-10,2.89034e-07,3.65203e-07,5e-08,0.000161128,1.12441e-05,0.000737395,2.5495e-05,3.60099e-05,0.000666877,0,0 +35785000,-0.676084,-0.0141049,-0.00145389,0.736688,0.136158,0.189873,-0.0256979,-16.8338,-8.14616,-365.478,-1.35158e-05,-6.13855e-05,2.20671e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000422331,1.36431e-05,1.39571e-05,0.000446272,0.111897,0.111091,0.148799,0.480286,0.478844,0.0972352,3.91478e-11,3.73699e-11,2.58839e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +35885000,-0.67617,-0.014119,-0.00152814,0.736609,0.170019,0.230269,-0.0179605,-16.8185,-8.12521,-365.476,-1.3516e-05,-6.1379e-05,2.14164e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000421045,1.36082e-05,1.39089e-05,0.0004458,0.136627,0.135679,0.167872,0.491278,0.490035,0.10102,3.92477e-11,3.74632e-11,2.58254e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +35985000,-0.676139,-0.0139558,-0.00151844,0.736641,0.13839,0.18195,-0.0131988,-16.8352,-8.14819,-365.477,-1.35662e-05,-6.14309e-05,2.15322e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000418903,1.3509e-05,1.37984e-05,0.000444145,0.111488,0.111002,0.148475,0.490437,0.489001,0.0965131,3.93251e-11,3.75277e-11,2.57619e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36085000,-0.676204,-0.0140058,-0.00154003,0.73658,0.17211,0.221886,-0.00621368,-16.8196,-8.128,-365.473,-1.35664e-05,-6.14254e-05,2.09728e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000418086,1.34818e-05,1.37597e-05,0.000443911,0.136172,0.135577,0.168808,0.501483,0.500194,0.10282,3.94251e-11,3.7623e-11,2.57203e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36185000,-0.676306,-0.0138946,-0.0015672,0.736488,0.139132,0.177352,-0.00154172,-16.8365,-8.15029,-365.47,-1.36166e-05,-6.1459e-05,1.97021e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.00041627,1.33915e-05,1.3658e-05,0.000442796,0.111272,0.110951,0.149193,0.50059,0.499158,0.0981566,3.95032e-11,3.76917e-11,2.56576e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36285000,-0.676421,-0.0139722,-0.0015633,0.736381,0.172497,0.217294,0.0101506,-16.8209,-8.13064,-365.458,-1.36165e-05,-6.14509e-05,1.88554e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000415168,1.33681e-05,1.36208e-05,0.000442391,0.135925,0.135513,0.168393,0.511673,0.510353,0.10202,3.96031e-11,3.77858e-11,2.55986e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36385000,-0.6764,-0.0139006,-0.00157771,0.736401,0.143297,0.176192,0.0104691,-16.8361,-8.15047,-365.457,-1.36621e-05,-6.14896e-05,1.87287e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000413605,1.32857e-05,1.35274e-05,0.000441517,0.111149,0.110916,0.148883,0.510746,0.509315,0.0974302,3.96824e-11,3.7858e-11,2.55362e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36485000,-0.676401,-0.0139602,-0.00163945,0.736399,0.177717,0.215349,0.0151811,-16.82,-8.13089,-365.456,-1.36621e-05,-6.14892e-05,1.86816e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000412574,1.32662e-05,1.34974e-05,0.000441156,0.135781,0.135469,0.167936,0.521854,0.520512,0.101202,3.97823e-11,3.79525e-11,2.54767e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36585000,-0.67651,-0.0139107,-0.00162684,0.7363,0.145889,0.176814,0.0177023,-16.8357,-8.15057,-365.453,-1.37078e-05,-6.15179e-05,1.77872e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.0004112,1.31911e-05,1.34104e-05,0.00044041,0.111076,0.110891,0.148536,0.520903,0.519472,0.0966879,3.98631e-11,3.80276e-11,2.54142e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36685000,-0.676632,-0.0139036,-0.0016102,0.736189,0.179313,0.21658,0.024432,-16.8194,-8.13096,-365.448,-1.37084e-05,-6.15101e-05,1.68843e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.00041058,1.31776e-05,1.33856e-05,0.000440233,0.135693,0.135439,0.16891,0.532027,0.530672,0.103026,3.9963e-11,3.81238e-11,2.53718e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36785000,-0.676744,-0.0138466,-0.00164782,0.736087,0.147372,0.181557,0.0205777,-16.8352,-8.14878,-365.447,-1.37524e-05,-6.15349e-05,1.60008e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000409317,1.31079e-05,1.33061e-05,0.000439573,0.111031,0.110875,0.149286,0.531061,0.52963,0.0983525,4.00455e-11,3.82015e-11,2.53091e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36885000,-0.6769,-0.0139066,-0.00167466,0.735942,0.180361,0.219679,0.0258535,-16.8188,-8.12881,-365.444,-1.37534e-05,-6.15247e-05,1.47762e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000408435,1.30981e-05,1.32855e-05,0.000439252,0.135634,0.135414,0.168467,0.542195,0.540831,0.102204,4.01454e-11,3.82966e-11,2.52485e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +36985000,-0.676971,-0.0138217,-0.00161839,0.735879,0.14846,0.183083,0.0192416,-16.8348,-8.14692,-365.446,-1.37958e-05,-6.15493e-05,1.40847e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000407256,1.30349e-05,1.321e-05,0.00043867,0.111,0.11086,0.14895,0.541219,0.539787,0.097606,4.02295e-11,3.83767e-11,2.51854e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37085000,-0.677031,-0.0138523,-0.00161043,0.735823,0.181974,0.221673,0.0264245,-16.8182,-8.12671,-365.442,-1.37963e-05,-6.15444e-05,1.34791e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000406421,1.30297e-05,1.31937e-05,0.000438391,0.135596,0.135394,0.168038,0.552361,0.550991,0.1014,4.03294e-11,3.84721e-11,2.51242e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37185000,-0.677071,-0.0137881,-0.00160295,0.735787,0.149591,0.18009,0.0251481,-16.8344,-8.14697,-365.445,-1.38369e-05,-6.15723e-05,1.32784e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000405342,1.29717e-05,1.31261e-05,0.00043783,0.110978,0.110847,0.148627,0.551377,0.549944,0.0968758,4.04152e-11,3.85542e-11,2.50606e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37285000,-0.677165,-0.0138099,-0.00165287,0.7357,0.182747,0.218742,0.0308397,-16.8178,-8.12709,-365.442,-1.38377e-05,-6.1565e-05,1.23313e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.00040456,1.29705e-05,1.3116e-05,0.000437577,0.135568,0.135376,0.167628,0.562524,0.561151,0.100615,4.05152e-11,3.86499e-11,2.49985e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37385000,-0.677222,-0.0137494,-0.00160452,0.735648,0.148976,0.177308,0.0279545,-16.834,-8.14709,-365.444,-1.38765e-05,-6.15886e-05,1.1985e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000403821,1.29191e-05,1.30557e-05,0.000437201,0.11096,0.110837,0.149354,0.561535,0.560102,0.0985298,4.06026e-11,3.87349e-11,2.49524e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37485000,-0.677358,-0.0137714,-0.00160899,0.735523,0.18172,0.217394,0.0327342,-16.8174,-8.12741,-365.444,-1.38776e-05,-6.158e-05,1.08376e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000403106,1.29228e-05,1.30496e-05,0.000436947,0.135546,0.135364,0.168569,0.572687,0.57131,0.102403,4.07026e-11,3.88308e-11,2.48896e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37585000,-0.677419,-0.0137049,-0.00160368,0.735468,0.147701,0.17762,0.0376649,-16.8336,-8.14732,-365.439,-1.39142e-05,-6.15973e-05,1.00279e-06,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000402109,1.28751e-05,1.29934e-05,0.000436488,0.110948,0.11083,0.149039,0.571694,0.570259,0.0977956,4.07916e-11,3.89166e-11,2.48248e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37685000,-0.677504,-0.0137564,-0.00166321,0.735389,0.179749,0.217763,0.0484005,-16.8172,-8.12759,-365.429,-1.39148e-05,-6.15904e-05,9.09981e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000401419,1.28832e-05,1.29939e-05,0.000436274,0.135529,0.135355,0.16817,0.582849,0.58147,0.101614,4.08915e-11,3.90126e-11,2.47611e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37785000,-0.677546,-0.0136349,-0.00170518,0.735352,0.146355,0.17797,0.0495964,-16.8331,-8.14748,-365.424,-1.39489e-05,-6.16077e-05,8.6122e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000400489,1.28394e-05,1.29436e-05,0.00043582,0.110939,0.110824,0.148691,0.581853,0.580416,0.097046,4.0982e-11,3.91e-11,2.46955e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37885000,-0.677618,-0.0136449,-0.00172192,0.735286,0.17824,0.217431,0.052976,-16.8169,-8.12775,-365.425,-1.39496e-05,-6.16031e-05,7.94876e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.00039986,1.28518e-05,1.29478e-05,0.000435609,0.135516,0.135346,0.167724,0.593011,0.591629,0.100806,4.10819e-11,3.91962e-11,2.46309e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +37985000,-0.677616,-0.0135622,-0.00176866,0.735288,0.142263,0.177724,0.0486748,-16.8347,-8.14761,-365.425,-1.39827e-05,-6.16192e-05,7.70906e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000399199,1.28141e-05,1.29054e-05,0.000435328,0.110931,0.110818,0.149442,0.592011,0.590574,0.098721,4.11738e-11,3.92859e-11,2.45833e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38085000,-0.677675,-0.0135891,-0.00179806,0.735234,0.173303,0.21693,0.060798,-16.8189,-8.12794,-365.414,-1.39834e-05,-6.16126e-05,6.75209e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000398567,1.28311e-05,1.29148e-05,0.000435169,0.135504,0.135338,0.168699,0.603172,0.601789,0.102619,4.12737e-11,3.93823e-11,2.45179e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38185000,-0.67769,-0.0134859,-0.00177856,0.735222,0.137309,0.176882,0.0523956,-16.8363,-8.14783,-365.417,-1.40139e-05,-6.16252e-05,6.34664e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000397709,1.27977e-05,1.28742e-05,0.000434765,0.110922,0.110813,0.149102,0.60217,0.600731,0.0979671,4.13668e-11,3.94724e-11,2.44508e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38285000,-0.677753,-0.0135127,-0.00180242,0.735163,0.16928,0.214918,0.0581662,-16.8209,-8.12824,-365.413,-1.40145e-05,-6.1621e-05,5.71379e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000397149,1.28192e-05,1.28885e-05,0.000434587,0.135492,0.13533,0.168264,0.613334,0.611949,0.101807,4.14668e-11,3.95689e-11,2.43844e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38385000,-0.677752,-0.0134095,-0.00175973,0.735166,0.138726,0.176519,0.0451602,-16.836,-8.14784,-365.415,-1.40412e-05,-6.16325e-05,5.47238e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000396336,1.27905e-05,1.28528e-05,0.000434204,0.110918,0.11081,0.148773,0.612329,0.610889,0.0972293,4.1561e-11,3.96602e-11,2.43164e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38485000,-0.677821,-0.0134163,-0.00179641,0.735102,0.170731,0.215732,0.0500557,-16.8205,-8.12826,-365.413,-1.40419e-05,-6.1628e-05,4.7825e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000395813,1.2816e-05,1.28719e-05,0.000434039,0.135489,0.135327,0.167845,0.623494,0.622108,0.101013,4.16609e-11,3.97569e-11,2.4249e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38585000,-0.677802,-0.0133504,-0.00172686,0.735121,0.141137,0.177107,0.0359715,-16.8356,-8.14795,-365.421,-1.40668e-05,-6.16367e-05,4.48712e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000395013,1.27925e-05,1.28411e-05,0.000433686,0.110918,0.110808,0.148458,0.622487,0.621046,0.0965076,4.17562e-11,3.98492e-11,2.418e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38685000,-0.677883,-0.0134272,-0.0017594,0.735045,0.172167,0.214328,0.0403196,-16.8199,-8.12841,-365.422,-1.40676e-05,-6.16324e-05,3.81363e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000394743,1.28239e-05,1.28672e-05,0.00043365,0.135485,0.135322,0.16879,0.633654,0.632268,0.102813,4.18562e-11,3.99468e-11,2.41313e-10,2.89034e-07,3.65203e-07,5e-08,0,0,0,0,0,0,0,0 +38785000,-0.677886,-0.0133312,-0.00175637,0.735044,0.137967,0.171878,0.0378667,-16.8372,-8.14999,-365.422,-1.40919e-05,-6.16373e-05,3.33583e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.000393981,1.28039e-05,1.28423e-05,0.000433305,0.0894152,0.0893056,0.127716,0.632597,0.631155,0.0981057,4.19524e-11,4.004e-11,2.40615e-10,2.89034e-07,3.65203e-07,5.0009e-08,0,0,0,0,0,0,0,0 +38885000,-0.677941,-0.0135031,-0.00183415,0.73499,0.152687,0.191495,0.490874,-16.8222,-8.13138,-365.405,-1.40925e-05,-6.16335e-05,2.72971e-07,-0.000215266,0.000531024,-0.00119842,0.212632,0.00135173,0.43538,-0.000222243,-0.00105322,0.00485453,0,0,0.00039351,1.28401e-05,1.28735e-05,0.000433166,0.0898248,0.0896914,0.123339,0.643308,0.641922,0.101577,4.20523e-11,4.0137e-11,2.39922e-10,2.89034e-07,3.65203e-07,5.0019e-08,0,0,0,0,0,0,0,0 diff --git a/src/lib/ecl/test/change_indication/iris_gps.csv b/src/lib/ecl/test/change_indication/iris_gps.csv new file mode 100644 index 0000000000..53825b2dcd --- /dev/null +++ b/src/lib/ecl/test/change_indication/iris_gps.csv @@ -0,0 +1,351 @@ +Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7],state[8],state[9],state[10],state[11],state[12],state[13],state[14],state[15],state[16],state[17],state[18],state[19],state[20],state[21],state[22],state[23],variance[0],variance[1],variance[2],variance[3],variance[4],variance[5],variance[6],variance[7],variance[8],variance[9],variance[10],variance[11],variance[12],variance[13],variance[14],variance[15],variance[16],variance[17],variance[18],variance[19],variance[20],variance[21],variance[22],variance[23] +15000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +85000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +185000,0.979315,-0.00941534,-0.0138038,0.201649,0.000856322,-0.000411629,-0.0109864,5.47934e-05,-6.84752e-06,-0.0416696,5.00889e-13,-3.73116e-13,-2.04073e-14,0,0,-2.00585e-09,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000204663,0.002482,0.00248157,0.00481116,0.256366,0.256365,0.562563,0.126414,0.126414,1.00079,1e-06,1e-06,1e-06,4e-06,4e-06,4.00001e-06,0,0,0,0,0,0,0,0 +285000,0.979308,-0.00949873,-0.0141086,0.20166,0.002379,-0.00213114,-0.0263621,0.000165842,-0.000101819,-0.0412744,4.72333e-12,-1.36589e-12,-1.42115e-13,0,0,-1.03405e-08,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00020737,0.00254707,0.00254659,0.00487353,0.282172,0.282169,0.562506,0.132888,0.132888,0.576885,1e-06,1e-06,1e-06,4e-06,4e-06,4.00001e-06,0,0,0,0,0,0,0,0 +385000,0.979291,-0.00951138,-0.0143965,0.201721,0.00537783,-0.00315158,-0.0396036,0.000429404,-0.00026618,-0.0244167,-1.0942e-09,-7.23618e-10,8.85773e-12,0,0,-2.11601e-07,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000212229,0.00265868,0.00265816,0.00498376,0.319167,0.319162,0.560114,0.0942198,0.0942198,0.375592,9.99994e-07,9.99994e-07,1e-06,4e-06,4e-06,3.99998e-06,0,0,0,0,0,0,0,0 +485000,0.979278,-0.00952859,-0.0147624,0.201755,0.00880115,-0.00649446,-0.0568877,0.0011663,-0.000751267,-0.0284287,-1.35448e-09,-8.91104e-10,1.09489e-11,0,0,-1.48264e-08,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000219099,0.00282371,0.00282311,0.00514201,0.386741,0.386732,0.553871,0.109438,0.109437,0.287379,9.99994e-07,9.99994e-07,1e-06,4e-06,4e-06,3.99978e-06,0,0,0,0,0,0,0,0 +585000,0.979269,-0.0095287,-0.0149642,0.201785,0.0102124,-0.00954547,-0.0751953,0.00161955,-0.00119412,-0.0361541,-5.53152e-08,-3.52001e-08,4.57828e-10,0,0,2.77562e-07,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00022799,0.00298935,0.00298869,0.00534822,0.435949,0.435934,0.542812,0.0904933,0.0904929,0.242024,9.99625e-07,9.99625e-07,1e-06,4e-06,4e-06,3.99919e-06,0,0,0,0,0,0,0,0 +685000,0.979259,-0.00955857,-0.0153322,0.201804,0.0151134,-0.0119584,-0.0797677,0.00292575,-0.0022634,-0.0326607,-5.19032e-08,-3.35021e-08,4.17757e-10,0,0,-1.69524e-06,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000238947,0.003253,0.00325224,0.00560241,0.547191,0.54717,0.525907,0.117148,0.117146,0.217499,9.99625e-07,9.99625e-07,1e-06,4e-06,4e-06,3.99786e-06,0,0,0,0,0,0,0,0 +785000,0.979257,-0.00947261,-0.0154864,0.201808,0.0173967,-0.0110439,-0.0884127,0.00313515,-0.00236293,-0.0373937,-4.47456e-07,-2.53029e-07,4.57112e-09,0,0,-2.80912e-06,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00025184,0.00335582,0.00335498,0.00590458,0.566853,0.566833,0.503498,0.101251,0.10125,0.204568,9.96263e-07,9.96262e-07,9.99997e-07,4e-06,4e-06,3.99537e-06,0,0,0,0,0,0,0,0 +885000,0.979246,-0.00951692,-0.0158372,0.201831,0.0211409,-0.0115711,-0.104516,0.00503006,-0.00352416,-0.0502256,-4.49494e-07,-2.54198e-07,4.59161e-09,0,0,-1.88445e-06,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00026693,0.00371092,0.00370996,0.00625468,0.718475,0.71845,0.475826,0.141035,0.141033,0.198089,9.96263e-07,9.96263e-07,9.99997e-07,4e-06,4e-06,3.99118e-06,0,0,0,0,0,0,0,0 +985000,0.979255,-0.00927553,-0.0159463,0.201791,0.0211795,-0.00880513,-0.116405,0.00449049,-0.00283133,-0.0592977,-1.6037e-06,-1.01145e-06,1.37953e-08,0,0,-2.95381e-06,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000283718,0.00362002,0.00361894,0.00665284,0.661743,0.661727,0.453916,0.116197,0.116196,0.20526,9.83329e-07,9.83328e-07,9.99986e-07,4e-06,4e-06,3.9866e-06,0,0,0,0,0,0,0,0 +1085000,0.979258,-0.00936203,-0.0161338,0.201755,0.030556,-0.0113142,-0.13449,0.00701773,-0.00376993,-0.0779794,-1.61019e-06,-1.01687e-06,1.38204e-08,0,0,-3.32483e-07,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000302726,0.00404907,0.00404789,0.00709903,0.841032,0.841019,0.420545,0.166803,0.166801,0.203829,9.83329e-07,9.83328e-07,9.99986e-07,4e-06,4e-06,3.97832e-06,0,0,0,0,0,0,0,0 +1185000,0.979274,-0.00904449,-0.0160523,0.201702,0.0297317,-0.00982761,-0.130921,0.00569539,-0.0027183,-0.0734185,-3.63716e-06,-2.74135e-06,2.026e-08,0,0,-9.50728e-06,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000323428,0.00374004,0.00373878,0.00759315,0.698898,0.6989,0.38636,0.126795,0.126794,0.203011,9.53858e-07,9.53857e-07,9.9996e-07,4e-06,4e-06,3.96733e-06,0,0,0,0,0,0,0,0 +1285000,0.979284,-0.00891737,-0.016305,0.201639,0.0388641,-0.0104528,-0.137,0.00917325,-0.00377233,-0.0780551,-3.6203e-06,-2.72268e-06,2.02979e-08,0,0,-1.47572e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000346392,0.00421853,0.0042171,0.0081354,0.892068,0.892084,0.352444,0.183037,0.183036,0.20185,9.53858e-07,9.53857e-07,9.9996e-07,4e-06,4e-06,3.95329e-06,0,0,0,0,0,0,0,0 +1385000,0.979303,-0.00855862,-0.01598,0.201587,0.0364758,-0.00769753,-0.134581,0.00685964,-0.002438,-0.0751093,-6.54748e-06,-5.82778e-06,1.53196e-08,0,0,-2.57585e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000371053,0.0037641,0.00376268,0.0087255,0.697876,0.697903,0.320012,0.130672,0.130672,0.199989,9.05208e-07,9.05207e-07,9.9992e-07,4e-06,4e-06,3.93598e-06,0,0,0,0,0,0,0,0 +1485000,0.979297,-0.0084952,-0.0161468,0.201606,0.0419636,-0.00834532,-0.145852,0.010793,-0.00316663,-0.0873161,-6.54149e-06,-5.81958e-06,1.53685e-08,0,0,-2.72374e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000398344,0.00426767,0.00426608,0.00936342,0.894964,0.895005,0.290205,0.188098,0.188099,0.197529,9.05208e-07,9.05207e-07,9.9992e-07,4e-06,4e-06,3.91566e-06,0,0,0,0,0,0,0,0 +1585000,0.9793,-0.00823196,-0.0158364,0.201624,0.0354209,-0.00538601,-0.156301,0.00739539,-0.00196173,-0.0981812,-1.00478e-05,-1.02836e-05,-6.86652e-09,0,0,-3.07102e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000427319,0.00373392,0.00373239,0.0100492,0.683827,0.683864,0.271779,0.129813,0.129814,0.204443,8.38498e-07,8.38499e-07,9.99868e-07,4e-06,4e-06,3.8983e-06,0,0,0,0,0,0,0,0 +1685000,0.979285,-0.0082739,-0.0160536,0.201679,0.0426854,-0.00452515,-0.161557,0.0113214,-0.00239468,-0.103477,-1.00166e-05,-1.0239e-05,-6.57948e-09,0,0,-3.90924e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000458881,0.00424134,0.00423963,0.0107828,0.881816,0.881877,0.247137,0.186204,0.186207,0.20042,8.38498e-07,8.38498e-07,9.99869e-07,4e-06,4e-06,3.87227e-06,0,0,0,0,0,0,0,0 +1785000,0.979293,-0.00838086,-0.0163109,0.201618,0.0521503,-0.00529812,-0.16245,0.0161426,-0.00290156,-0.106004,-9.96722e-06,-1.01647e-05,-6.03789e-09,0,0,-5.09311e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000491985,0.00479068,0.00478877,0.0115649,1.12394,1.12403,0.22547,0.266836,0.266843,0.195906,8.38497e-07,8.38497e-07,9.99869e-07,4e-06,4e-06,3.84277e-06,0,0,0,0,0,0,0,0 +1885000,0.979303,-0.00795909,-0.0157409,0.201628,0.0423569,0.000449667,-0.163765,0.0114988,-0.00145998,-0.110691,-1.35985e-05,-1.56832e-05,-4.85675e-08,0,0,-6.17675e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000526934,0.00414335,0.00414159,0.0123946,0.865117,0.865191,0.206811,0.181391,0.181395,0.191238,7.56526e-07,7.56529e-07,9.99808e-07,4e-06,4e-06,3.81008e-06,0,0,0,0,0,0,0,0 +1985000,0.979297,-0.00800563,-0.0160619,0.201633,0.0494432,0.00106662,-0.162364,0.0161293,-0.00145303,-0.110024,-1.35317e-05,-1.55685e-05,-4.75172e-08,0,0,-7.87975e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000564404,0.00467373,0.00467174,0.0132723,1.10518,1.10528,0.190781,0.259864,0.259874,0.186401,7.56526e-07,7.56528e-07,9.99808e-07,4e-06,4e-06,3.77376e-06,0,0,0,0,0,0,0,0 +2085000,0.9793,-0.00777906,-0.0155154,0.201668,0.0391,0.00357233,-0.160831,0.0111217,-0.000425663,-0.107737,-1.68535e-05,-2.18021e-05,-1.1309e-07,0,0,-9.9046e-05,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000603579,0.0039611,0.00395932,0.0141977,0.846812,0.846886,0.177231,0.175709,0.175714,0.181659,6.63631e-07,6.6364e-07,9.9974e-07,4e-06,4e-06,3.73407e-06,0,0,0,0,0,0,0,0 +2185000,0.979304,-0.00768114,-0.0158078,0.201628,0.0453426,0.00465532,-0.16201,0.0153611,2.89192e-05,-0.112147,-1.68075e-05,-2.17096e-05,-1.12058e-07,0,0,-0.000112763,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000644819,0.00445572,0.00445368,0.0151716,1.08084,1.08095,0.165769,0.251845,0.251856,0.176968,6.63631e-07,6.63638e-07,9.9974e-07,4e-06,4e-06,3.69045e-06,0,0,0,0,0,0,0,0 +2285000,0.979318,-0.00752596,-0.0152285,0.201614,0.033289,0.00645201,-0.159514,0.0101616,0.000503271,-0.112044,-1.95304e-05,-2.82325e-05,-1.98006e-07,0,0,-0.000132649,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000687724,0.00369111,0.00368934,0.0161932,0.820576,0.82064,0.16073,0.169814,0.16982,0.180294,5.65715e-07,5.65733e-07,9.99668e-07,4e-06,4e-06,3.65504e-06,0,0,0,0,0,0,0,0 +2385000,0.979311,-0.00751644,-0.0153657,0.201636,0.0391041,0.00675995,-0.15905,0.0138168,0.00112758,-0.11056,-1.94714e-05,-2.80988e-05,-1.96335e-07,0,0,-0.000154859,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000733381,0.00413709,0.00413516,0.0172627,1.04502,1.04512,0.152358,0.243306,0.243317,0.175628,5.65715e-07,5.65731e-07,9.99668e-07,4e-06,4e-06,3.6043e-06,0,0,0,0,0,0,0,0 +2485000,0.979304,-0.00729423,-0.0147981,0.201722,0.0266756,0.00750853,-0.159892,0.00886131,0.00107749,-0.113769,-2.14775e-05,-3.42862e-05,-2.90868e-07,0,0,-0.000171804,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000781098,0.0033497,0.003348,0.0183794,0.784741,0.784796,0.145445,0.16374,0.163745,0.171309,4.69477e-07,4.69505e-07,9.99594e-07,4e-06,4e-06,3.54969e-06,0,0,0,0,0,0,0,0 +2585000,0.979319,-0.00734512,-0.0148991,0.20164,0.0287248,0.00731753,-0.161903,0.0116264,0.00184637,-0.117672,-2.14429e-05,-3.41985e-05,-2.89673e-07,0,0,-0.000188952,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000830025,0.00373962,0.0037378,0.0195456,0.994296,0.994375,0.139706,0.234128,0.234138,0.167247,4.69477e-07,4.69504e-07,9.99594e-07,4e-06,4e-06,3.49054e-06,0,0,0,0,0,0,0,0 +2685000,0.979316,-0.00734359,-0.0143827,0.201691,0.0190914,0.00787703,-0.160567,0.00716888,0.00141391,-0.116783,-2.2683e-05,-3.93868e-05,-3.79109e-07,0,0,-0.000215073,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000881601,0.00296709,0.00296553,0.0207584,0.73846,0.738507,0.134935,0.157404,0.157408,0.163452,3.80761e-07,3.80797e-07,9.9952e-07,4e-06,4e-06,3.42669e-06,0,0,0,0,0,0,0,0 +2785000,0.979326,-0.00722315,-0.0145043,0.201638,0.0233698,0.00924434,-0.157127,0.00942057,0.00227068,-0.113278,-2.26376e-05,-3.92563e-05,-3.77165e-07,0,0,-0.000246346,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000934726,0.00329917,0.00329743,0.0220203,0.93011,0.93018,0.131058,0.224139,0.224148,0.160024,3.80761e-07,3.80796e-07,9.9952e-07,4e-06,4e-06,3.35873e-06,0,0,0,0,0,0,0,0 +2885000,0.979346,-0.00724213,-0.014116,0.201567,0.016411,0.00675776,-0.157825,0.00579474,0.0015795,-0.114611,-2.32705e-05,-4.34214e-05,-4.58053e-07,0,0,-0.000270141,0.202688,0.0101969,0.433398,0,0,0,0,0,0.000989255,0.00257656,0.00257499,0.0233301,0.684472,0.684515,0.131137,0.150805,0.150809,0.163352,3.03368e-07,3.0341e-07,9.99448e-07,4e-06,4e-06,3.30485e-06,0,0,0,0,0,0,0,0 +2985000,0.979344,-0.00720378,-0.0141789,0.201576,0.0183022,0.00696817,-0.159607,0.00762676,0.00227207,-0.118318,-2.32496e-05,-4.33556e-05,-4.57027e-07,0,0,-0.000290577,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00104694,0.00285357,0.00285189,0.0246874,0.856405,0.856469,0.128356,0.213433,0.21344,0.160286,3.03368e-07,3.03409e-07,9.99448e-07,4e-06,4e-06,3.22896e-06,0,0,0,0,0,0,0,0 +3085000,0.979305,-0.00720812,-0.0139268,0.201782,0.0146371,0.00394695,-0.162243,0.00476311,0.00141294,-0.122497,-2.36123e-05,-4.65892e-05,-5.2187e-07,0,0,-0.000311834,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00110848,0.00220491,0.00220326,0.0260902,0.626621,0.62666,0.125998,0.144047,0.144051,0.157475,2.38761e-07,2.38806e-07,9.99385e-07,4e-06,4e-06,3.14842e-06,0,0,0,0,0,0,0,0 +3185000,0.979297,-0.00718785,-0.0140278,0.201815,0.0172549,0.00345028,-0.16267,0.00639508,0.00174328,-0.127186,-2.35966e-05,-4.65379e-05,-5.21063e-07,0,0,-0.00033257,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00117065,0.00243267,0.00243089,0.0275429,0.77838,0.778436,0.124033,0.202309,0.202316,0.154989,2.38762e-07,2.38805e-07,9.99385e-07,4e-06,4e-06,3.06414e-06,0,0,0,0,0,0,0,0 +3285000,0.979295,-0.00716318,-0.0136869,0.201847,0.0121836,0.00267534,-0.165375,0.00405541,0.00102137,-0.134892,-2.39891e-05,-4.90469e-05,-5.65202e-07,0,0,-0.000349336,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00123455,0.00186869,0.00186693,0.0290434,0.568054,0.568088,0.12229,0.137283,0.137286,0.152715,1.86562e-07,1.86602e-07,9.99333e-07,4e-06,4e-06,2.97565e-06,0,0,0,0,0,0,0,0 +3385000,0.979295,-0.00695292,-0.0137087,0.201856,0.0125998,0.00430885,-0.163308,0.00526318,0.00136763,-0.132681,-2.39662e-05,-4.89753e-05,-5.64115e-07,0,0,-0.000386465,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00130052,0.00205419,0.00205226,0.0305924,0.701273,0.701324,0.120765,0.191123,0.191129,0.150714,1.86562e-07,1.86602e-07,9.99333e-07,4e-06,4e-06,2.88403e-06,0,0,0,0,0,0,0,0 +3485000,0.979301,-0.0069062,-0.0134589,0.201844,0.0106377,0.00620349,-0.161135,0.00337129,0.000998393,-0.132553,-2.41928e-05,-5.08569e-05,-5.9813e-07,0,0,-0.000419676,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00136801,0.0015751,0.00157308,0.0321892,0.512379,0.512409,0.119318,0.130669,0.130671,0.148875,1.45322e-07,1.45357e-07,9.99288e-07,4e-06,4e-06,2.78892e-06,0,0,0,0,0,0,0,0 +3585000,0.979311,-0.00680119,-0.0133752,0.201802,0.0123648,0.00662421,-0.166155,0.00456212,0.001642,-0.140065,-2.41851e-05,-5.08301e-05,-5.97679e-07,0,0,-0.000437857,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00143732,0.00172541,0.00172333,0.0338348,0.628318,0.62836,0.120755,0.18023,0.180235,0.152881,1.45322e-07,1.45357e-07,9.99288e-07,4e-06,4e-06,2.71559e-06,0,0,0,0,0,0,0,0 +3685000,0.979312,-0.00680956,-0.0131976,0.201812,0.00826204,0.00580457,-0.162073,0.00297874,0.00117173,-0.138301,-2.42198e-05,-5.23878e-05,-6.30765e-07,0,0,-0.000476318,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00150919,0.00132455,0.00132234,0.0355273,0.4606,0.46063,0.119312,0.124324,0.124326,0.151255,1.1319e-07,1.13222e-07,9.99251e-07,4e-06,4e-06,2.61583e-06,0,0,0,0,0,0,0,0 +3785000,0.979309,-0.00671833,-0.0132887,0.201824,0.00771957,0.0099721,-0.163017,0.00379107,0.00204625,-0.143126,-2.4213e-05,-5.23606e-05,-6.30248e-07,0,0,-0.000500103,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00158336,0.00144632,0.00144391,0.0372678,0.560928,0.56097,0.117874,0.169836,0.169841,0.149809,1.1319e-07,1.13222e-07,9.99251e-07,4e-06,4e-06,2.5147e-06,0,0,0,0,0,0,0,0 +3885000,0.979295,-0.00664804,-0.0133283,0.20189,0.0071303,0.0115881,-0.160466,0.00463006,0.00318613,-0.144139,-2.42048e-05,-5.23227e-05,-6.29472e-07,0,0,-0.000531961,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00166045,0.00157369,0.00157114,0.0390555,0.67678,0.676841,0.116345,0.230945,0.230953,0.148436,1.1319e-07,1.13222e-07,9.99251e-07,4e-06,4e-06,2.412e-06,0,0,0,0,0,0,0,0 +3985000,0.97928,-0.00671595,-0.0131745,0.201971,0.00629481,0.0103198,-0.159483,0.0028868,0.00253607,-0.143313,-2.39349e-05,-5.3559e-05,-6.68174e-07,0,0,-0.000568684,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00173974,0.00121273,0.00121004,0.0408903,0.500427,0.500466,0.114703,0.160077,0.160081,0.147113,8.83569e-08,8.83869e-08,9.99216e-07,4e-06,4e-06,2.3083e-06,0,0,0,0,0,0,0,0 +4085000,0.979271,-0.00663722,-0.0130944,0.202021,0.00745585,0.0109685,-0.148011,0.00368646,0.00363053,-0.132286,-2.3928e-05,-5.3506e-05,-6.66815e-07,0,0,-0.000626088,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00182083,0.00131564,0.0013129,0.0427741,0.600302,0.600353,0.112992,0.215727,0.215734,0.145898,8.8357e-08,8.83869e-08,9.99216e-07,4e-06,4e-06,2.20496e-06,0,0,0,0,0,0,0,0 +4185000,0.979278,-0.00681727,-0.0129295,0.201995,0.00515359,0.00849869,-0.149563,0.00240525,0.00267145,-0.138516,-2.35238e-05,-5.45021e-05,-7.069e-07,0,0,-0.000644794,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00190239,0.00101869,0.00101588,0.0447065,0.446318,0.446356,0.113892,0.151008,0.151012,0.150204,6.92261e-08,6.92552e-08,9.99183e-07,4e-06,4e-06,2.12776e-06,0,0,0,0,0,0,0,0 +4285000,0.979272,-0.00684619,-0.0129734,0.202016,0.00736674,0.010294,-0.151848,0.00309424,0.00359677,-0.1443,-2.35228e-05,-5.44877e-05,-7.06482e-07,0,0,-0.000664953,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00198711,0.00110224,0.00109931,0.0466863,0.532677,0.53272,0.111906,0.201708,0.201715,0.148982,6.92262e-08,6.92553e-08,9.99183e-07,4e-06,4e-06,2.02548e-06,0,0,0,0,0,0,0,0 +4385000,0.97928,-0.00684161,-0.0129089,0.201985,0.00685068,0.00687378,-0.14312,0.00225649,0.00253016,-0.134677,-2.3123e-05,-5.52734e-05,-7.41769e-07,0,0,-0.00071727,0.202688,0.0101969,0.433398,0,0,0,0,0,0.0020726,0.000858479,0.000855246,0.0487148,0.398816,0.398844,0.109778,0.142641,0.142644,0.14774,5.44924e-08,5.45198e-08,9.99156e-07,4e-06,4e-06,1.92433e-06,0,0,0,0,0,0,0,0 +4485000,0.97927,-0.00687264,-0.0128567,0.202034,0.00763556,0.0101264,-0.139694,0.00305042,0.00343589,-0.133233,-2.31227e-05,-5.52546e-05,-7.41181e-07,0,0,-0.000750459,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00216202,0.000926372,0.000923119,0.05079,0.47343,0.473465,0.107571,0.188896,0.188901,0.146543,5.44925e-08,5.45198e-08,9.99156e-07,4e-06,4e-06,1.82549e-06,0,0,0,0,0,0,0,0 +4585000,0.979255,-0.00693674,-0.0128062,0.202106,0.00658649,0.00680756,-0.139156,0.00220076,0.002516,-0.135953,-2.27794e-05,-5.59659e-05,-7.71834e-07,0,0,-0.000774414,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00225386,0.000726121,0.000722586,0.0529121,0.356965,0.356989,0.105237,0.134949,0.134952,0.145303,4.31223e-08,4.31473e-08,9.99134e-07,4e-06,4e-06,1.72872e-06,0,0,0,0,0,0,0,0 +4685000,0.979267,-0.00687777,-0.0127564,0.202057,0.00616056,0.00770458,-0.130694,0.00292885,0.00331909,-0.129896,-2.27802e-05,-5.59469e-05,-7.7118e-07,0,0,-0.000815646,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00234526,0.000781593,0.000777952,0.0550854,0.421535,0.421569,0.102843,0.177221,0.177226,0.144087,4.31224e-08,4.31474e-08,9.99134e-07,4e-06,4e-06,1.63502e-06,0,0,0,0,0,0,0,0 +4785000,0.979251,-0.00679985,-0.0127388,0.202135,-0.000862814,0.00647328,-0.129287,0.00175576,0.00239712,-0.131268,-2.24764e-05,-5.65517e-05,-7.97218e-07,0,0,-0.000839925,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00244151,0.000616826,0.00061272,0.0573032,0.320162,0.320208,0.100346,0.127885,0.127888,0.142816,3.43201e-08,3.43421e-08,9.99118e-07,4e-06,4e-06,1.5441e-06,0,0,0,0,0,0,0,0 +4885000,0.97924,-0.00672651,-0.0127614,0.202188,-0.000164653,0.00502557,-0.125785,0.00171915,0.00296393,-0.131602,-2.24775e-05,-5.65429e-05,-7.96838e-07,0,0,-0.000865244,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00253949,0.00066246,0.000658122,0.0595697,0.376327,0.376376,0.100234,0.1666,0.166605,0.14675,3.43202e-08,3.43422e-08,9.99118e-07,4e-06,4e-06,1.47795e-06,0,0,0,0,0,0,0,0 +4985000,0.979243,-0.00673665,-0.0127047,0.202178,5.80292e-05,0.00480318,-0.118957,0.000976788,0.00204936,-0.127489,-2.21883e-05,-5.68937e-05,-8.19302e-07,0,0,-0.000898055,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00263775,0.000526476,0.00052176,0.0618852,0.287836,0.287869,0.0975532,0.121403,0.121406,0.145332,2.7481e-08,2.74968e-08,9.99098e-07,4e-06,4e-06,1.3928e-06,0,0,0,0,0,0,0,0 +5085000,0.979229,-0.0065953,-0.012632,0.202256,0.000454212,0.00570448,-0.114668,0.00103788,0.00254555,-0.123521,-2.219e-05,-5.68858e-05,-8.18852e-07,0,0,-0.000928831,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00274064,0.000564003,0.000559104,0.064247,0.336914,0.336952,0.094863,0.156942,0.156947,0.143922,2.74811e-08,2.74969e-08,9.99098e-07,4e-06,4e-06,1.31154e-06,0,0,0,0,0,0,0,0 +5185000,0.979218,-0.00648252,-0.0126381,0.202312,-0.00265282,0.0070653,-0.111608,0.000498689,0.00192633,-0.121206,-2.19282e-05,-5.71121e-05,-8.38835e-07,0,0,-0.000955391,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00284489,0.000451525,0.000445997,0.0666563,0.259644,0.259687,0.0921298,0.115458,0.115462,0.14245,2.21416e-08,2.21499e-08,9.99078e-07,4e-06,4e-06,1.23377e-06,0,0,0,0,0,0,0,0 +5285000,0.979209,-0.00636711,-0.0126132,0.202361,-0.0022369,0.0088154,-0.101069,0.000278826,0.00273218,-0.114803,-2.19305e-05,-5.71058e-05,-8.38313e-07,0,0,-0.000988044,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00295131,0.000482707,0.000476928,0.0691144,0.302394,0.302442,0.0893715,0.148163,0.148169,0.140918,2.21417e-08,2.215e-08,9.99078e-07,4e-06,4e-06,1.15959e-06,0,0,0,0,0,0,0,0 +5385000,0.979212,-0.00631379,-0.0126012,0.202351,-0.00509109,0.00989163,-0.0966152,-7.58475e-05,0.00222194,-0.109622,-2.16174e-05,-5.72396e-05,-8.63242e-07,0,0,-0.00101625,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00305781,0.000389251,0.000382915,0.0716211,0.234681,0.234732,0.0866424,0.109994,0.109997,0.139397,1.79527e-08,1.79541e-08,9.99055e-07,4e-06,4e-06,1.08941e-06,0,0,0,0,0,0,0,0 +5485000,0.97921,-0.00631379,-0.0126669,0.202356,-0.00498517,0.0134521,-0.0935514,-0.000608166,0.00337077,-0.110032,-2.1619e-05,-5.72372e-05,-8.6293e-07,0,0,-0.0010331,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00316707,0.000415413,0.000408766,0.074176,0.272329,0.272383,0.0860335,0.140161,0.140168,0.142808,1.79528e-08,1.79542e-08,9.99055e-07,4e-06,4e-06,1.03924e-06,0,0,0,0,0,0,0,0 +5585000,0.979218,-0.00639376,-0.0126974,0.202312,-0.00539784,0.0148553,-0.085782,-0.000659618,0.00294847,-0.1024,-2.12012e-05,-5.73143e-05,-8.98896e-07,0,0,-0.00106268,0.202688,0.0101969,0.433398,0,0,0,0,0,0.00327644,0.000337577,0.000330443,0.0767791,0.212723,0.212759,0.083268,0.104968,0.104972,0.141135,1.46494e-08,1.46465e-08,9.99028e-07,4e-06,4e-06,9.75474e-07,0,0,0,0,0,0,0,0 +5685000,0.981896,-0.00652952,-0.012503,0.188895,-0.00557599,0.0177653,-0.0859193,-0.00126253,0.00450961,-0.101837,-2.1192e-05,-5.73234e-05,-3.9023e-07,0,0,-0.00107856,0.20342,0.0019756,0.434785,0,0,0,0,0,0.0002153,0.000329109,0.000328702,0.00505963,0.217419,0.217462,0.0805253,0.132177,0.132184,0.139416,1.46493e-08,1.46464e-08,9.98606e-07,4e-06,4e-06,9.15198e-07,0,0,0,0,0,0,0,0 +5785000,0.982427,-0.00642289,-0.0124533,0.186121,-0.00504225,0.0177966,-0.0801795,-0.00108789,0.00387237,-0.0958455,-2.06262e-05,-5.74408e-05,2.00235e-06,0,0,-0.00110298,0.20342,0.0019756,0.434785,0,0,0,0,0,0.000112118,0.000329372,0.000329185,0.00263465,0.153017,0.153043,0.0778503,0.0989639,0.0989681,0.137718,1.21173e-08,1.2113e-08,9.9565e-07,4e-06,4e-06,8.58622e-07,0,0,0,0,0,0,0,0 +5885000,0.982401,-0.006349,-0.0125093,0.186258,-0.00315199,0.0194272,-0.0768537,-0.00147657,0.00577277,-0.0972845,-2.06304e-05,-5.74371e-05,1.87357e-06,0,0,-0.00111362,0.20342,0.0019756,0.434785,0,0,0,0,0,7.69552e-05,0.00033062,0.000330507,0.0018129,0.160754,0.160781,0.0752151,0.121055,0.121062,0.135986,1.21137e-08,1.21095e-08,9.8777e-07,4e-06,4e-06,8.05326e-07,0,0,0,0,0,0,0,0 +5985000,0.982233,-0.00627637,-0.012627,0.187135,-0.00290272,0.0214237,-0.0703361,-0.00176602,0.00779216,-0.0915208,-2.07551e-05,-5.73153e-05,-3.69302e-06,0,0,-0.00113513,0.20342,0.0019756,0.434785,0,0,0,0,0,5.97929e-05,0.000332516,0.000332439,0.00141957,0.17176,0.171787,0.0726587,0.146573,0.146583,0.134281,1.21068e-08,1.21028e-08,9.73208e-07,4e-06,4e-06,7.55447e-07,0,0,0,0,0,0,0,0 +6085000,0.982058,-0.00626863,-0.0125729,0.188055,-0.00342744,0.0203061,-0.067169,-0.00141265,0.00676171,-0.0897615,-2.04081e-05,-5.72192e-05,-1.28395e-05,0,0,-0.00114883,0.20342,0.0019756,0.434785,0,0,0,0,0,5.00653e-05,0.000331894,0.000331844,0.00120495,0.136561,0.136578,0.070154,0.110262,0.110268,0.132549,1.02483e-08,1.02443e-08,9.50007e-07,4e-06,4e-06,7.08585e-07,0,0,0,0,0,0,0,0 +6185000,0.982015,-0.00628007,-0.0125286,0.188282,-0.00458645,0.0229405,-0.0658624,-0.00177156,0.00894771,-0.0892255,-2.04398e-05,-5.71884e-05,-1.42144e-05,0,0,-0.00116029,0.20342,0.0019756,0.434785,0,0,0,0,0,4.66298e-05,0.000334193,0.000334159,0.00113993,0.15255,0.152568,0.0693564,0.131874,0.131881,0.135275,1.0237e-08,1.02333e-08,9.26409e-07,4e-06,4e-06,6.75355e-07,0,0,0,0,0,0,0,0 +6285000,0.982013,-0.00627142,-0.0125538,0.188291,-0.00597455,0.0225917,-0.0669628,-0.00162214,0.00780038,-0.0929807,-1.987e-05,-5.73224e-05,-1.34939e-05,0,0,-0.0011647,0.20342,0.0019756,0.434785,0,0,0,0,0,4.27564e-05,0.000329475,0.000329451,0.00106315,0.132479,0.13249,0.066919,0.101719,0.101723,0.133441,8.87397e-09,8.87093e-09,8.86814e-07,4e-06,4e-06,6.33558e-07,0,0,0,0,0,0,0,0 +6385000,0.982118,-0.00621575,-0.0124862,0.18775,-0.00525502,0.0253149,-0.0663674,-0.00222117,0.0102037,-0.0943801,-1.96809e-05,-5.75095e-05,-4.89202e-06,0,0,-0.00117254,0.20342,0.0019756,0.434785,0,0,0,0,0,4.03345e-05,0.000331718,0.000331705,0.00102171,0.152529,0.152541,0.064573,0.121363,0.121369,0.131646,8.85083e-09,8.84831e-09,8.39139e-07,4e-06,4e-06,5.94583e-07,0,0,0,0,0,0,0,0 +6485000,0.982098,-0.00621581,-0.0124855,0.187856,-0.00723607,0.0214734,-0.0627554,-0.00201732,0.00872198,-0.0913298,-1.9196e-05,-5.75433e-05,-8.25206e-06,0,0,-0.00118633,0.20342,0.0019756,0.434785,0,0,0,0,0,3.87254e-05,0.000320332,0.000320323,0.000999984,0.139657,0.139664,0.0622933,0.0959077,0.095911,0.129843,7.84702e-09,7.84506e-09,7.84381e-07,4e-06,4e-06,5.58086e-07,0,0,0,0,0,0,0,0 +6585000,0.982037,-0.00616262,-0.012444,0.188179,-0.00832063,0.0238437,-0.0640819,-0.00278395,0.0109337,-0.0932065,-1.93263e-05,-5.74141e-05,-1.41143e-05,0,0,-0.00119272,0.20342,0.0019756,0.434785,0,0,0,0,0,3.76512e-05,0.000322226,0.000322224,0.000988297,0.162849,0.162856,0.0600824,0.115047,0.115051,0.128036,7.81786e-09,7.8165e-09,7.2478e-07,4e-06,4e-06,5.23936e-07,0,0,0,0,0,0,0,0 +6685000,0.98197,-0.00614578,-0.012425,0.188527,-0.0111204,0.0236449,-0.0656668,-0.00275724,0.00933894,-0.0931239,-1.89415e-05,-5.73479e-05,-2.05868e-05,0,0,-0.00120193,0.20342,0.0019756,0.434785,0,0,0,0,0,3.68498e-05,0.000302311,0.000302308,0.000981293,0.151603,0.151607,0.0579631,0.0926533,0.0926556,0.126274,7.09027e-09,7.0892e-09,6.63331e-07,4e-06,4e-06,4.9214e-07,0,0,0,0,0,0,0,0 +6785000,0.98193,-0.00617046,-0.0123615,0.188739,-0.0103987,0.0262103,-0.062571,-0.00388787,0.0117941,-0.0925204,-1.89999e-05,-5.72892e-05,-2.31994e-05,0,0,-0.00121135,0.20342,0.0019756,0.434785,0,0,0,0,0,3.78843e-05,0.000303697,0.000303699,0.00102092,0.176676,0.17668,0.0572193,0.112245,0.112248,0.128562,7.0676e-09,7.06698e-09,6.17197e-07,4e-06,4e-06,4.69699e-07,0,0,0,0,0,0,0,0 +6885000,0.9819,-0.00609233,-0.0122915,0.188904,-0.00942212,0.0221579,-0.0593796,-0.00342762,0.00983231,-0.0914365,-1.85525e-05,-5.72832e-05,-2.51605e-05,0,0,-0.0012208,0.20342,0.0019756,0.434785,0,0,0,0,0,3.72109e-05,0.000274968,0.000274963,0.00101176,0.162662,0.162663,0.0551931,0.0913766,0.0913781,0.126737,6.56268e-09,6.56215e-09,5.57006e-07,4e-06,4e-06,4.41494e-07,0,0,0,0,0,0,0,0 +6985000,0.981933,-0.00603974,-0.0122515,0.188735,-0.0106331,0.023923,-0.0558395,-0.00448804,0.0121387,-0.0887999,-1.8458e-05,-5.73749e-05,-2.09188e-05,0,0,-0.0012316,0.20342,0.0019756,0.434785,0,0,0,0,0,3.64954e-05,0.000275803,0.000275802,0.000999225,0.188338,0.188338,0.0532374,0.111854,0.111855,0.124921,6.53438e-09,6.53443e-09,4.9969e-07,4e-06,4e-06,4.15134e-07,0,0,0,0,0,0,0,0 +7085000,0.981903,-0.00607039,-0.0121767,0.188894,-0.0100253,0.0246571,-0.055854,-0.00383763,0.0100993,-0.0898541,-1.8045e-05,-5.73898e-05,-2.09885e-05,0,0,-0.00123729,0.20342,0.0019756,0.434785,0,0,0,0,0,3.57668e-05,0.000240136,0.000240129,0.000983843,0.169111,0.169112,0.0513691,0.0912439,0.0912448,0.123157,6.20827e-09,6.20833e-09,4.46653e-07,4e-06,4e-06,3.90605e-07,0,0,0,0,0,0,0,0 +7185000,0.981862,-0.00599972,-0.0122436,0.189106,-0.0113276,0.0271231,-0.0545323,-0.0049591,0.0127436,-0.0917013,-1.80942e-05,-5.734e-05,-2.32079e-05,0,0,-0.00124189,0.20342,0.0019756,0.434785,0,0,0,0,0,3.49478e-05,0.000240541,0.000240534,0.000965197,0.194009,0.19401,0.0495685,0.112563,0.112564,0.121406,6.18424e-09,6.18484e-09,3.98058e-07,4e-06,4e-06,3.67682e-07,0,0,0,0,0,0,0,0 +7285000,0.981886,-0.00613074,-0.0122782,0.188975,-0.00917033,0.0253157,-0.0506932,-0.00411908,0.0104157,-0.0873216,-1.76878e-05,-5.74148e-05,-2.00399e-05,0,0,-0.00125345,0.20342,0.0019756,0.434785,0,0,0,0,0,3.40852e-05,0.00020161,0.000201596,0.000944478,0.168872,0.168874,0.0478499,0.0913843,0.0913849,0.119707,5.99255e-09,5.99321e-09,3.54381e-07,4e-06,4e-06,3.46347e-07,0,0,0,0,0,0,0,0 +7385000,0.981931,-0.00605755,-0.0122607,0.188744,-0.0114159,0.0283361,-0.0476121,-0.00513873,0.0131894,-0.084075,-1.76007e-05,-5.74978e-05,-1.61786e-05,0,0,-0.00126307,0.20342,0.0019756,0.434785,0,0,0,0,0,3.3156e-05,0.000201784,0.000201771,0.000921671,0.191865,0.191868,0.0461955,0.113139,0.113139,0.118022,5.9732e-09,5.97434e-09,3.15262e-07,4e-06,4e-06,3.26405e-07,0,0,0,0,0,0,0,0 +7485000,0.982011,-0.00617799,-0.0123179,0.18832,-0.0073983,0.0257612,-0.0433781,-0.00406048,0.0106483,-0.0805811,-1.71903e-05,-5.76616e-05,-8.90482e-06,0,0,-0.00127233,0.20342,0.0019756,0.434785,0,0,0,0,0,3.35823e-05,0.000163785,0.000163762,0.000936579,0.162073,0.162076,0.0455781,0.0911172,0.0911176,0.119877,5.87602e-09,5.87718e-09,2.88801e-07,4e-06,4e-06,3.12313e-07,0,0,0,0,0,0,0,0 +7585000,0.982071,-0.00626467,-0.0122796,0.188008,-0.00694957,0.0279156,-0.0393176,-0.00480074,0.0132869,-0.074562,-1.70888e-05,-5.77573e-05,-4.43123e-06,0,0,-0.00128368,0.20342,0.0019756,0.434785,0,0,0,0,0,3.25322e-05,0.000163968,0.000163951,0.000909725,0.182405,0.182409,0.044013,0.112736,0.112736,0.118163,5.86038e-09,5.86197e-09,2.57157e-07,4e-06,4e-06,2.94624e-07,0,0,0,0,0,0,0,0 +7685000,0.982081,-0.00643825,-0.0123618,0.187945,-0.00562819,0.0256366,-0.0377519,-0.00359733,0.0106171,-0.0681839,-1.69127e-05,-5.77764e-05,-3.81229e-06,0,0,-0.00129485,0.20342,0.0019756,0.434785,0,0,0,0,0,3.14895e-05,0.000130195,0.000130172,0.000882896,0.15041,0.150413,0.0425212,0.0900899,0.0900903,0.116504,5.81176e-09,5.81354e-09,2.29368e-07,4e-06,4e-06,2.78148e-07,0,0,0,0,0,0,0,0 +7785000,0.982078,-0.00632317,-0.0123645,0.187965,-0.00425925,0.0269735,-0.0394257,-0.00410649,0.0131864,-0.0722225,-1.69148e-05,-5.77745e-05,-3.90444e-06,0,0,-0.00129457,0.20342,0.0019756,0.434785,0,0,0,0,0,3.04815e-05,0.000130605,0.000130583,0.000855967,0.167809,0.167814,0.0410875,0.111025,0.111025,0.114864,5.79969e-09,5.80182e-09,2.04893e-07,4e-06,4e-06,2.62735e-07,0,0,0,0,0,0,0,0 +7885000,0.982072,-0.00648194,-0.0124491,0.187982,-0.00425326,0.0250931,-0.039086,-0.0030457,0.010392,-0.0749485,-1.68066e-05,-5.77978e-05,-3.11583e-06,0,0,-0.0012958,0.20342,0.0019756,0.434785,0,0,0,0,0,2.95089e-05,0.00010281,0.000102783,0.000829253,0.135919,0.135923,0.0397097,0.0882577,0.0882581,0.113245,5.77775e-09,5.78009e-09,1.83363e-07,4e-06,4e-06,2.48314e-07,0,0,0,0,0,0,0,0 +7985000,0.982106,-0.00642213,-0.0123596,0.187815,-0.00418535,0.0264586,-0.0351745,-0.00351239,0.0129236,-0.0713219,-1.67435e-05,-5.78561e-05,-3.65312e-07,0,0,-0.00130339,0.20342,0.0019756,0.434785,0,0,0,0,0,2.85694e-05,0.000103609,0.000103586,0.000803427,0.150442,0.150445,0.0383974,0.10809,0.108091,0.11168,5.76847e-09,5.7711e-09,1.64507e-07,4e-06,4e-06,2.34867e-07,0,0,0,0,0,0,0,0 +8085000,0.982043,-0.00629908,-0.0123586,0.188148,-0.00335662,0.0298771,-0.0354649,-0.00384367,0.0157294,-0.0737426,-1.68388e-05,-5.77618e-05,-4.64842e-06,0,0,-0.00130453,0.20342,0.0019756,0.434785,0,0,0,0,0,2.86512e-05,0.0001047,0.000104677,0.000807474,0.165739,0.165744,0.0379038,0.131906,0.131907,0.113286,5.76229e-09,5.76512e-09,1.51882e-07,4e-06,4e-06,2.25364e-07,0,0,0,0,0,0,0,0 +8185000,0.982021,-0.00647212,-0.012292,0.18826,-0.00174599,0.0292669,-0.0319319,-0.00268973,0.0128935,-0.0692171,-1.68153e-05,-5.77416e-05,-5.54926e-06,0,0,-0.00131237,0.20342,0.0019756,0.434785,0,0,0,0,0,2.77154e-05,8.34018e-05,8.33788e-05,0.000781495,0.132617,0.132621,0.0366664,0.104242,0.104243,0.111706,5.75243e-09,5.75545e-09,1.36814e-07,4e-06,4e-06,2.13398e-07,0,0,0,0,0,0,0,0 +8285000,0.982032,-0.00644951,-0.0122764,0.188203,0.000397881,0.032119,-0.0293551,-0.00277249,0.0159438,-0.0678704,-1.68115e-05,-5.77432e-05,-5.42374e-06,0,0,-0.00131648,0.20342,0.0019756,0.434785,0,0,0,0,0,2.68052e-05,8.49817e-05,8.49617e-05,0.00075646,0.145222,0.145228,0.0354785,0.126224,0.126225,0.11015,5.74592e-09,5.74915e-09,1.23523e-07,4e-06,4e-06,2.02185e-07,0,0,0,0,0,0,0,0 +8385000,0.982048,-0.00652031,-0.0122682,0.188121,-0.00129426,0.0279218,-0.0276533,-0.00183004,0.0130707,-0.0643388,-1.67669e-05,-5.77682e-05,-4.07191e-06,0,0,-0.00132242,0.20342,0.0019756,0.434785,0,0,0,0,0,2.59611e-05,6.94372e-05,6.94149e-05,0.000732631,0.115822,0.115825,0.0343466,0.099845,0.0998458,0.108647,5.73996e-09,5.74338e-09,1.11819e-07,4e-06,4e-06,1.91714e-07,0,0,0,0,0,0,0,0 +8485000,0.982126,-0.00642234,-0.0122604,0.187718,-0.00182419,0.0310097,-0.0281648,-0.00197141,0.0159665,-0.0683778,-1.66669e-05,-5.78673e-05,4.27485e-07,0,0,-0.00132125,0.20342,0.0019756,0.434785,0,0,0,0,0,2.5153e-05,7.15682e-05,7.15472e-05,0.000709771,0.126255,0.126259,0.0332599,0.119927,0.119928,0.107166,5.73491e-09,5.73849e-09,1.01456e-07,4e-06,4e-06,1.81893e-07,0,0,0,0,0,0,0,0 +8585000,0.982139,-0.00647232,-0.0123588,0.187637,-0.0004561,0.027715,-0.0229869,-0.00142084,0.0131444,-0.0632075,-1.66616e-05,-5.78619e-05,6.02564e-07,0,0,-0.00132813,0.20342,0.0019756,0.434785,0,0,0,0,0,2.43567e-05,6.07682e-05,6.07437e-05,0.000688116,0.100903,0.100905,0.0322244,0.0952197,0.0952204,0.105736,5.73039e-09,5.73413e-09,9.22908e-08,4e-06,4e-06,1.72712e-07,0,0,0,0,0,0,0,0 +8685000,0.982192,-0.00650564,-0.0124431,0.187357,-0.000630147,0.0289149,-0.0241965,-0.00151816,0.0159574,-0.0649191,-1.66192e-05,-5.79034e-05,2.49902e-06,0,0,-0.00132863,0.20342,0.0019756,0.434785,0,0,0,0,0,2.35966e-05,6.34726e-05,6.34506e-05,0.000667393,0.109678,0.109679,0.0312299,0.113467,0.113468,0.104327,5.72644e-09,5.73031e-09,8.41388e-08,4e-06,4e-06,1.64093e-07,0,0,0,0,0,0,0,0 +8785000,0.982176,-0.00654546,-0.0123997,0.187438,0.000633593,0.0256801,-0.0231786,-0.00107484,0.0130318,-0.0615658,-1.66429e-05,-5.78697e-05,1.40318e-06,0,0,-0.00133353,0.20342,0.0019756,0.434785,0,0,0,0,0,2.3567e-05,5.63779e-05,5.63546e-05,0.000667625,0.0883107,0.0883111,0.0308552,0.0906082,0.0906088,0.105686,5.72371e-09,5.72768e-09,7.86137e-08,4e-06,4e-06,1.57979e-07,0,0,0,0,0,0,0,0 +8885000,0.98225,-0.00659785,-0.0123912,0.18705,0.000852273,0.0280891,-0.0198414,-0.000982812,0.0157351,-0.0559502,-1.65725e-05,-5.79348e-05,4.47786e-06,0,0,-0.00134008,0.20342,0.0019756,0.434785,0,0,0,0,0,2.2849e-05,5.96528e-05,5.96339e-05,0.000647689,0.095872,0.095872,0.0299187,0.107175,0.107175,0.104275,5.7205e-09,5.72458e-09,7.19491e-08,4e-06,4e-06,1.50268e-07,0,0,0,0,0,0,0,0 +8985000,0.982337,-0.00659232,-0.0123072,0.186601,3.26901e-05,0.02649,-0.0178767,-0.000705687,0.012964,-0.0576124,-1.64759e-05,-5.80143e-05,8.33141e-06,0,0,-0.00134022,0.20342,0.0019756,0.434785,0,0,0,0,0,2.21731e-05,5.53468e-05,5.53281e-05,0.000628826,0.0780653,0.0780645,0.0290259,0.0861796,0.0861799,0.102911,5.71746e-09,5.72164e-09,6.60018e-08,4e-06,4e-06,1.43045e-07,0,0,0,0,0,0,0,0 +9085000,0.982435,-0.00660708,-0.0123723,0.186079,0.000299583,0.0298128,-0.0192221,-0.000704992,0.0157213,-0.0573178,-1.63948e-05,-5.80929e-05,1.19494e-05,0,0,-0.00134193,0.20342,0.0019756,0.434785,0,0,0,0,0,2.15078e-05,5.91838e-05,5.91673e-05,0.000610846,0.0848525,0.0848514,0.0281683,0.101257,0.101257,0.10157,5.71491e-09,5.71918e-09,6.06666e-08,4e-06,4e-06,1.36252e-07,0,0,0,0,0,0,0,0 +9185000,0.982504,-0.00666188,-0.012403,0.185709,0.00331793,0.0263748,-0.0173314,-0.000350281,0.0132335,-0.0571572,-1.63015e-05,-5.8154e-05,1.46677e-05,0,0,-0.00134353,0.20342,0.0019756,0.434785,0,0,0,0,0,2.08845e-05,5.69332e-05,5.69163e-05,0.000593672,0.0701693,0.0701678,0.0273444,0.0820442,0.0820444,0.100252,5.71139e-09,5.71573e-09,5.58701e-08,4e-06,4e-06,1.2986e-07,0,0,0,0,0,0,0,0 +9285000,0.98254,-0.00651206,-0.0122259,0.185535,0.0053658,0.0284813,-0.0156373,0.000141733,0.0159522,-0.0544668,-1.62805e-05,-5.81723e-05,1.55663e-05,0,0,-0.00134688,0.20342,0.0019756,0.434785,0,0,0,0,0,2.02895e-05,6.13085e-05,6.12958e-05,0.000577423,0.0765141,0.0765122,0.0265586,0.0958495,0.0958496,0.0989779,5.70935e-09,5.71376e-09,5.15604e-08,4e-06,4e-06,1.23864e-07,0,0,0,0,0,0,0,0 +9385000,0.982504,-0.00646949,-0.0122512,0.185725,0.00523315,0.0258833,-0.0140999,0.000551745,0.0133954,-0.0542571,-1.62667e-05,-5.81405e-05,1.33532e-05,0,0,-0.00134813,0.20342,0.0019756,0.434785,0,0,0,0,0,2.02277e-05,6.05267e-05,6.05114e-05,0.000576909,0.0644651,0.0644625,0.0262699,0.0782754,0.0782754,0.100194,5.70331e-09,5.70773e-09,4.8608e-08,4e-06,4e-06,1.19605e-07,0,0,0,0,0,0,0,0 +9485000,0.982541,-0.00649987,-0.0123228,0.185526,0.00468681,0.0261841,-0.0118387,0.00101778,0.0159738,-0.0503257,-1.62521e-05,-5.81521e-05,1.39583e-05,0,0,-0.00135201,0.20342,0.0019756,0.434785,0,0,0,0,0,1.96556e-05,6.54246e-05,6.54119e-05,0.0005614,0.0706862,0.0706822,0.0255293,0.0910322,0.091032,0.0989221,5.70162e-09,5.7061e-09,4.50021e-08,4e-06,4e-06,1.14211e-07,0,0,0,0,0,0,0,0 +9585000,0.982471,-0.00658491,-0.0122843,0.185895,0.00371453,0.0223046,-0.0124202,0.00099815,0.0132583,-0.0532586,-1.62175e-05,-5.81267e-05,1.10523e-05,0,0,-0.0013507,0.20342,0.0019756,0.434785,0,0,0,0,0,1.91311e-05,6.56287e-05,6.56175e-05,0.000546568,0.0608141,0.0608093,0.0248174,0.0749227,0.0749224,0.0976718,5.68788e-09,5.69235e-09,4.17338e-08,4e-06,4e-06,1.09127e-07,0,0,0,0,0,0,0,0 +9685000,0.982466,-0.00657674,-0.0122385,0.185923,0.0033519,0.0236989,-0.00924116,0.00144044,0.0156645,-0.0508359,-1.62411e-05,-5.81016e-05,9.95634e-06,0,0,-0.00135322,0.20342,0.0019756,0.434785,0,0,0,0,0,1.86179e-05,7.10152e-05,7.10081e-05,0.000532516,0.0671607,0.0671546,0.0241379,0.0868553,0.0868546,0.0964633,5.68652e-09,5.69104e-09,3.87731e-08,4e-06,4e-06,1.04347e-07,0,0,0,0,0,0,0,0 +9785000,0.982404,-0.00660661,-0.0121731,0.186252,0.00407497,0.0224435,-0.00980077,0.00134651,0.0130623,-0.0512005,-1.61703e-05,-5.80946e-05,6.77893e-06,0,0,-0.00135366,0.20342,0.0019756,0.434785,0,0,0,0,0,1.81301e-05,7.18012e-05,7.17948e-05,0.000519074,0.0590416,0.0590357,0.0234845,0.0720195,0.0720189,0.0952758,5.6596e-09,5.66407e-09,3.60785e-08,4e-06,4e-06,9.98359e-08,0,0,0,0,0,0,0,0 +9885000,0.982435,-0.00657,-0.0121148,0.186098,0.00602639,0.0227847,-0.00814747,0.00181734,0.0152048,-0.0513286,-1.61485e-05,-5.81157e-05,7.75711e-06,0,0,-0.00135419,0.20342,0.0019756,0.434785,0,0,0,0,0,1.76874e-05,7.76427e-05,7.76397e-05,0.000506281,0.0657425,0.0657355,0.0228605,0.0833479,0.0833468,0.0941276,5.6585e-09,5.66301e-09,3.36275e-08,4e-06,4e-06,9.559e-08,0,0,0,0,0,0,0,0 +9985000,0.982367,-0.0066144,-0.0121693,0.186447,0.00686715,0.0196901,-0.00709096,0.00178742,0.0125992,-0.0523749,-1.6024e-05,-5.81521e-05,5.14676e-06,0,0,-0.00135402,0.20342,0.0019756,0.434785,0,0,0,0,0,1.72612e-05,7.86315e-05,7.86272e-05,0.000494029,0.0589566,0.0589497,0.0222601,0.0695875,0.0695865,0.0929992,5.61074e-09,5.61514e-09,3.13882e-08,4e-06,4e-06,9.15787e-08,0,0,0,0,0,0,0,0 +10085000,0.982334,-0.00655214,-0.0123275,0.186617,0.00566913,0.0180012,-0.00594373,0.00244009,0.0144482,-0.0508065,-1.60604e-05,-5.81153e-05,3.48472e-06,0,0,-0.00135547,0.20342,0.0019756,0.434785,0,0,0,0,0,1.72175e-05,8.48864e-05,8.48814e-05,0.0004933,0.0661907,0.0661814,0.0220469,0.0805227,0.080521,0.094069,5.61007e-09,5.61451e-09,2.98349e-08,4e-06,4e-06,8.87184e-08,0,0,0,0,0,0,0,0 +10185000,0.982246,-0.00650968,-0.0122472,0.187086,0.003333,0.0193462,-0.00430147,0.00288544,0.0163446,-0.0508615,-1.61301e-05,-5.80468e-05,3.37061e-07,0,0,-0.00135577,0.20342,0.0019756,0.434785,0,0,0,0,0,1.68217e-05,9.14159e-05,9.1415e-05,0.000481602,0.0742724,0.0742611,0.0214802,0.0932301,0.0932275,0.0929451,5.60923e-09,5.6137e-09,2.79176e-08,4e-06,4e-06,8.50884e-08,0,0,0,0,0,0,0,0 +10285000,0.982297,-0.00660805,-0.0121446,0.186819,0.00281594,0.0170482,-0.00538176,0.00232278,0.013438,-0.0507841,-1.58795e-05,-5.8202e-05,1.80461e-06,0,0,-0.00135611,0.20342,0.0019756,0.434785,0,0,0,0,0,1.64376e-05,9.22894e-05,9.22893e-05,0.000470458,0.0682568,0.0682461,0.0209387,0.0783775,0.0783752,0.0918582,5.53177e-09,5.53607e-09,2.61613e-08,4e-06,4e-06,8.16647e-08,0,0,0,0,0,0,0,0 +10385000,0.982335,-0.00660808,-0.0120416,0.186626,0.00699285,0.00287798,-0.00294913,0.000765827,6.88046e-05,-0.0491379,-1.58573e-05,-5.82227e-05,2.79528e-06,0,0,-0.00135725,0.20342,0.0019756,0.434785,0,0,0,0,0,1.6071e-05,9.91637e-05,9.9168e-05,0.000459771,0.0349289,0.0349289,0.0374558,0.12528,0.12528,0.0850656,5.53108e-09,5.53542e-09,2.45464e-08,4e-06,4e-06,7.85881e-08,0,0,0,0,0,0,0,0 +10485000,0.982295,-0.00650675,-0.0119909,0.186843,0.00706091,0.00321875,-0.00187173,0.00146081,0.000370722,-0.0446964,-1.58956e-05,-5.81831e-05,1.03011e-06,0,0,-0.00136017,0.20342,0.0019756,0.434785,0,0,0,0,0,1.57154e-05,0.000106315,0.000106322,0.000449517,0.0361708,0.0361706,0.0375587,0.126259,0.126259,0.0794293,5.53045e-09,5.53482e-09,2.30592e-08,4e-06,4e-06,7.59896e-08,0,0,0,0,0,0,0,0 +10585000,0.982335,-0.00644578,-0.0119173,0.186642,0.00544058,0.00323387,-0.000553102,0.0011007,-0.00317636,-0.0438585,-1.58896e-05,-5.83916e-05,2.50761e-06,0,0,-0.00136059,0.20342,0.0019756,0.434785,0,0,0,0,0,1.5393e-05,0.000113132,0.000113141,0.000439706,0.0333783,0.0333778,0.0352684,0.0848775,0.0848775,0.0750998,5.5036e-09,5.50796e-09,2.16902e-08,4e-06,4e-06,7.37646e-08,0,0,0,0,0,0,0,0 +10685000,0.982341,-0.00639246,-0.0119496,0.186607,0.00566659,0.00191043,-0.000423849,0.00164901,-0.00292372,-0.0430392,-1.58965e-05,-5.83845e-05,2.19155e-06,0,0,-0.00136111,0.20342,0.0019756,0.434785,0,0,0,0,0,1.53537e-05,0.000120798,0.000120808,0.000439024,0.0362188,0.0362177,0.0353114,0.08665,0.08665,0.0733583,5.50324e-09,5.50761e-09,2.07333e-08,4e-06,4e-06,7.23007e-08,0,0,0,0,0,0,0,0 +10785000,0.982341,-0.00640472,-0.0120404,0.186601,0.006196,0.00110546,0.000466317,0.00153195,-0.00252646,-0.0402185,-1.57404e-05,-5.85626e-05,1.83383e-06,0,0,-0.00136274,0.20342,0.0019756,0.434785,0,0,0,0,0,1.50285e-05,0.000126114,0.000126124,0.00042965,0.0347413,0.03474,0.0331825,0.0658046,0.0658045,0.0707296,5.40257e-09,5.40681e-09,1.95416e-08,4e-06,4e-06,7.05669e-08,0,0,0,0,0,0,0,0 +10885000,0.982394,-0.00637544,-0.0120832,0.186323,0.00641841,0.00210116,0.000682741,0.00216344,-0.00242339,-0.0396666,-1.57002e-05,-5.86016e-05,3.65397e-06,0,0,-0.001363,0.20342,0.0019756,0.434785,0,0,0,0,0,1.47321e-05,0.000134163,0.000134175,0.000420621,0.0392497,0.0392477,0.0330565,0.0682754,0.0682752,0.0691991,5.40213e-09,5.40639e-09,1.84381e-08,4e-06,4e-06,6.90547e-08,0,0,0,0,0,0,0,0 +10985000,0.9824,-0.00637406,-0.0121729,0.186281,0.00449295,0.00789017,0.00269413,0.00189284,-0.00157927,-0.0369252,-1.57114e-05,-5.87667e-05,3.39601e-06,0,0,-0.00136405,0.20342,0.0019756,0.434785,0,0,0,0,0,1.44268e-05,0.000136303,0.000136314,0.000411994,0.0382734,0.0382717,0.0310419,0.0554723,0.0554721,0.0676382,5.19105e-09,5.19502e-09,1.74165e-08,4e-06,4e-06,6.77251e-08,0,0,0,0,0,0,0,0 +11085000,0.982328,-0.00649111,-0.0121548,0.186662,0.00500588,0.0112018,0.00457871,0.00234247,-0.000684389,-0.0343449,-1.57544e-05,-5.87244e-05,1.43413e-06,0,0,-0.00136519,0.20342,0.0019756,0.434785,0,0,0,0,0,1.41524e-05,0.000144525,0.000144541,0.00040367,0.044399,0.0443969,0.0307745,0.0586838,0.0586836,0.0671414,5.19069e-09,5.19469e-09,1.6468e-08,4e-06,4e-06,6.65589e-08,0,0,0,0,0,0,0,0 +11185000,0.982312,-0.00655742,-0.0121189,0.186746,0.00485234,0.0127055,0.00781423,0.0028122,-0.000195631,-0.0297565,-1.53797e-05,-5.87061e-05,4.12787e-07,0,0,-0.0013667,0.20342,0.0019756,0.434785,0,0,0,0,0,1.3869e-05,0.00014204,0.000142055,0.000395705,0.0430439,0.0430419,0.0288705,0.0496911,0.0496909,0.0661792,4.85454e-09,4.85817e-09,1.55875e-08,4e-06,4e-06,6.55294e-08,0,0,0,0,0,0,0,0 +11285000,0.982292,-0.00655502,-0.0121507,0.186848,0.00369015,0.0132448,0.00888695,0.00319762,0.00115811,-0.0299901,-1.53909e-05,-5.86956e-05,-9.83051e-08,0,0,-0.00136622,0.20342,0.0019756,0.434785,0,0,0,0,0,1.36146e-05,0.000150165,0.000150183,0.000388009,0.0505897,0.0505867,0.0284808,0.0537098,0.0537095,0.0663138,4.85425e-09,4.85791e-09,1.47678e-08,4e-06,4e-06,6.46246e-08,0,0,0,0,0,0,0,0 +11385000,0.982288,-0.00653776,-0.01211,0.186871,0.00228902,0.0130158,0.0079881,0.00257712,0.00113125,-0.0318609,-1.49892e-05,-5.90432e-05,-3.43818e-07,0,0,-0.00136502,0.20342,0.0019756,0.434785,0,0,0,0,0,1.35876e-05,0.000142423,0.000142435,0.000387392,0.0480242,0.0480215,0.0268409,0.0466039,0.0466036,0.0667595,4.40845e-09,4.41162e-09,1.41898e-08,4e-06,4e-06,6.40172e-08,0,0,0,0,0,0,0,0 +11485000,0.982318,-0.00644575,-0.0120838,0.186718,0.000503172,0.0132156,0.00966921,0.00266776,0.00246418,-0.0287011,-1.49815e-05,-5.90502e-05,1.45953e-08,0,0,-0.00136594,0.20342,0.0019756,0.434785,0,0,0,0,0,1.33303e-05,0.000150175,0.000150189,0.000380018,0.0566505,0.0566466,0.0263737,0.0514569,0.0514563,0.0672672,4.40821e-09,4.4114e-09,1.34652e-08,4e-06,4e-06,6.3292e-08,0,0,0,0,0,0,0,0 +11585000,0.982315,-0.00662151,-0.0120382,0.186732,0.00209561,0.0118651,0.0101795,0.00227694,0.00196543,-0.0273955,-1.44785e-05,-5.93091e-05,-1.72816e-07,0,0,-0.00136667,0.20342,0.0019756,0.434785,0,0,0,0,0,1.30866e-05,0.000137638,0.000137648,0.000372917,0.0522695,0.0522666,0.0247175,0.045179,0.0451786,0.0667352,3.89306e-09,3.89569e-09,1.27893e-08,4e-06,4e-06,6.26507e-08,0,0,0,0,0,0,0,0 +11685000,0.982328,-0.0065787,-0.0119823,0.18667,0.00211573,0.0149623,0.0119291,0.00249597,0.00330364,-0.0271928,-1.44735e-05,-5.9314e-05,5.9731e-08,0,0,-0.00136632,0.20342,0.0019756,0.434785,0,0,0,0,0,1.28577e-05,0.000144789,0.000144801,0.00036606,0.0615258,0.0615225,0.024186,0.0508216,0.050821,0.067416,3.89286e-09,3.89552e-09,1.21575e-08,4e-06,4e-06,6.20878e-08,0,0,0,0,0,0,0,0 +11785000,0.982369,-0.00681329,-0.0119198,0.186445,0.000694143,0.0130597,0.0127516,0.00194678,0.00127703,-0.0244623,-1.34996e-05,-5.98214e-05,1.25983e-06,0,0,-0.00136687,0.20342,0.0019756,0.434785,0,0,0,0,0,1.26347e-05,0.000128873,0.000128879,0.000359426,0.055213,0.0552108,0.0226622,0.0447469,0.0447465,0.0669062,3.35983e-09,3.36197e-09,1.15659e-08,4e-06,4e-06,6.15899e-08,0,0,0,0,0,0,0,0 +11885000,0.982356,-0.00689199,-0.0118163,0.186519,0.00302487,0.0138809,0.0117942,0.00206227,0.00258004,-0.0231633,-1.35119e-05,-5.98098e-05,6.87081e-07,0,0,-0.00136687,0.20342,0.0019756,0.434785,0,0,0,0,0,1.24161e-05,0.000135285,0.000135296,0.000353051,0.0647189,0.0647164,0.0220972,0.0510703,0.0510696,0.0676279,3.35968e-09,3.36184e-09,1.10126e-08,4e-06,4e-06,6.11534e-08,0,0,0,0,0,0,0,0 +11985000,0.982376,-0.00704632,-0.0118835,0.186404,0.00465468,0.0139369,0.0109299,0.00290217,0.00117096,-0.0257133,-1.30855e-05,-5.97289e-05,9.25264e-07,0,0,-0.00136602,0.20342,0.0019756,0.434785,0,0,0,0,0,1.23843e-05,0.00011771,0.000117715,0.000352523,0.0567055,0.056704,0.020893,0.0448537,0.0448533,0.068242,2.85241e-09,2.85411e-09,1.06204e-08,4e-06,4e-06,6.08604e-08,0,0,0,0,0,0,0,0 +12085000,0.982358,-0.00696309,-0.0119355,0.186501,0.00596929,0.014132,0.013531,0.00344022,0.00253644,-0.0189922,-1.30931e-05,-5.97217e-05,5.9322e-07,0,0,-0.00136757,0.20342,0.0019756,0.434785,0,0,0,0,0,1.2184e-05,0.00012334,0.000123345,0.000346375,0.0660689,0.0660669,0.0203272,0.0517097,0.0517091,0.0689439,2.85228e-09,2.85401e-09,1.01259e-08,4e-06,4e-06,6.05111e-08,0,0,0,0,0,0,0,0 +12185000,0.982343,-0.0068962,-0.0118901,0.186581,0.00551656,0.0127081,0.0128793,0.00265474,0.00295234,-0.0173716,-1.30623e-05,-6.00089e-05,-2.60925e-07,0,0,-0.00136768,0.20342,0.0019756,0.434785,0,0,0,0,0,1.19678e-05,0.000105658,0.000105658,0.000340436,0.056885,0.0568835,0.0190781,0.0452053,0.045205,0.0683251,2.39885e-09,2.40017e-09,9.66103e-09,4e-06,4e-06,6.01993e-08,0,0,0,0,0,0,0,0 +12285000,0.982328,-0.00694716,-0.0118756,0.18666,0.00287936,0.0117278,0.0113019,0.00308631,0.00416777,-0.0167748,-1.30708e-05,-6.00009e-05,-6.66158e-07,0,0,-0.00136752,0.20342,0.0019756,0.434785,0,0,0,0,0,1.1777e-05,0.00011053,0.000110532,0.000334699,0.065894,0.0658917,0.0185251,0.0524374,0.0524368,0.0689309,2.39875e-09,2.40009e-09,9.22468e-09,4e-06,4e-06,5.99275e-08,0,0,0,0,0,0,0,0 +12385000,0.982338,-0.00705821,-0.0117947,0.186607,0.00175778,0.00864211,0.0118034,0.00247544,0.00288117,-0.0196681,-1.27122e-05,-6.02607e-05,-8.72711e-07,0,0,-0.00136666,0.20342,0.0019756,0.434785,0,0,0,0,0,1.15757e-05,9.37938e-05,9.37907e-05,0.000329146,0.0560318,0.0560301,0.0174138,0.0456228,0.0456224,0.0682426,2.01038e-09,2.01136e-09,8.81378e-09,4e-06,4e-06,5.96819e-08,0,0,0,0,0,0,0,0 +12485000,0.982316,-0.00705973,-0.0117994,0.186723,0.00188832,0.00963648,0.0156822,0.00266592,0.00377806,-0.0176384,-1.27174e-05,-6.02559e-05,-1.11891e-06,0,0,-0.0013668,0.20342,0.0019756,0.434785,0,0,0,0,0,1.14058e-05,9.79772e-05,9.79752e-05,0.000323769,0.0644794,0.0644776,0.0168907,0.053087,0.0530864,0.068727,2.01031e-09,2.01131e-09,8.42736e-09,4e-06,4e-06,5.94689e-08,0,0,0,0,0,0,0,0 +12585000,0.982292,-0.00720988,-0.011759,0.18685,0.00498375,0.00358917,0.017356,0.00377046,0.0010134,-0.0163509,-1.20533e-05,-6.02492e-05,-1.50173e-06,0,0,-0.00136669,0.20342,0.0019756,0.434785,0,0,0,0,0,1.12336e-05,8.27889e-05,8.27832e-05,0.000318552,0.0544597,0.0544584,0.0159113,0.0460115,0.0460112,0.0679731,1.68719e-09,1.68791e-09,8.06283e-09,4e-06,4e-06,5.92719e-08,0,0,0,0,0,0,0,0 +12685000,0.982296,-0.00718598,-0.0117703,0.186828,0.0049456,0.00184828,0.0175079,0.00421142,0.00128482,-0.0134291,-1.20557e-05,-6.02471e-05,-1.60749e-06,0,0,-0.00136692,0.20342,0.0019756,0.434785,0,0,0,0,0,1.12143e-05,8.63727e-05,8.63672e-05,0.000318101,0.0623603,0.0623585,0.0155921,0.0535917,0.0535913,0.0695162,1.68718e-09,1.68791e-09,7.80312e-09,4e-06,4e-06,5.9146e-08,0,0,0,0,0,0,0,0 +12785000,0.982374,-0.00741171,-0.0116578,0.186415,0.00627013,-0.00113143,0.018711,0.0043744,-0.00204704,-0.0118536,-1.13815e-05,-6.02778e-05,-1.294e-07,0,0,-0.00136687,0.20342,0.0019756,0.434785,0,0,0,0,0,1.10358e-05,7.29241e-05,7.29165e-05,0.000313075,0.0525002,0.0524992,0.0147265,0.0463271,0.0463268,0.0686789,1.42245e-09,1.42294e-09,7.47377e-09,4e-06,4e-06,5.89789e-08,0,0,0,0,0,0,0,0 +12885000,0.982427,-0.0073993,-0.0115878,0.186139,0.00583742,-0.00253951,0.019567,0.00501564,-0.00223137,-0.00850925,-1.1365e-05,-6.02929e-05,6.62825e-07,0,0,-0.00136713,0.20342,0.0019756,0.434785,0,0,0,0,0,1.08646e-05,7.59954e-05,7.5989e-05,0.00030822,0.0598047,0.0598034,0.0142917,0.0539345,0.0539341,0.0689184,1.42241e-09,1.42293e-09,7.16305e-09,4e-06,4e-06,5.88393e-08,0,0,0,0,0,0,0,0 +12985000,0.982478,-0.00740638,-0.0115651,0.185873,0.0044277,-0.00093761,0.019962,0.00381947,-0.00169961,-0.00698182,-1.14912e-05,-6.04543e-05,1.32848e-06,0,0,-0.00136707,0.20342,0.0019756,0.434785,0,0,0,0,0,1.06922e-05,6.42758e-05,6.42661e-05,0.000303503,0.0503242,0.0503235,0.0135404,0.0465561,0.0465559,0.0680383,1.20729e-09,1.20763e-09,6.86905e-09,4e-06,4e-06,5.8696e-08,0,0,0,0,0,0,0,0 +13085000,0.982506,-0.00741934,-0.0114843,0.185727,0.00524014,-0.000840708,0.0184055,0.00429806,-0.00174386,-0.00697542,-1.14724e-05,-6.04713e-05,2.22204e-06,0,0,-0.00136674,0.20342,0.0019756,0.434785,0,0,0,0,0,1.05473e-05,6.69182e-05,6.69099e-05,0.000298904,0.0570662,0.0570655,0.0131557,0.0541255,0.0541251,0.068153,1.20727e-09,1.20763e-09,6.59086e-09,4e-06,4e-06,5.85809e-08,0,0,0,0,0,0,0,0 +13185000,0.982526,-0.00744209,-0.0114343,0.185627,0.00156631,-0.00265724,0.0175502,0.00134522,-0.00296034,-0.00598542,-1.14004e-05,-6.08002e-05,2.73099e-06,0,0,-0.00136663,0.20342,0.0019756,0.434785,0,0,0,0,0,1.03984e-05,5.67887e-05,5.67775e-05,0.000294453,0.0480844,0.048084,0.0125086,0.0466987,0.0466985,0.0672452,1.0328e-09,1.03303e-09,6.32763e-09,4e-06,4e-06,5.84518e-08,0,0,0,0,0,0,0,0 +13285000,0.982532,-0.00745756,-0.0114128,0.185594,0.000413542,-0.00361527,0.0158046,0.00137666,-0.00325862,-0.0053302,-1.14007e-05,-6.07999e-05,2.71094e-06,0,0,-0.00136646,0.20342,0.0019756,0.434785,0,0,0,0,0,1.03799e-05,5.9075e-05,5.90644e-05,0.000294066,0.054296,0.0542954,0.0123113,0.0541856,0.0541853,0.068418,1.03282e-09,1.03306e-09,6.13942e-09,4e-06,4e-06,5.83805e-08,0,0,0,0,0,0,0,0 +13385000,0.982523,-0.00741097,-0.0115238,0.185636,-0.000182001,-0.00230827,0.0148917,0.00109753,-0.00241428,-0.00540195,-1.15112e-05,-6.07752e-05,2.37793e-06,0,0,-0.0013662,0.20342,0.0019756,0.434785,0,0,0,0,0,1.02288e-05,5.03544e-05,5.03406e-05,0.000289763,0.045858,0.0458577,0.0117497,0.046763,0.0467629,0.0674648,8.91095e-10,8.9122e-10,5.89975e-09,4e-06,4e-06,5.82555e-08,0,0,0,0,0,0,0,0 +13485000,0.982525,-0.0073859,-0.0114797,0.185629,0.000313297,-0.000562598,0.0156779,0.00110296,-0.00251014,-0.00659982,-1.15105e-05,-6.07757e-05,2.40655e-06,0,0,-0.0013658,0.20342,0.0019756,0.434785,0,0,0,0,0,1.00893e-05,5.23437e-05,5.23305e-05,0.000285575,0.0515609,0.0515608,0.0114679,0.0541361,0.0541359,0.0673942,8.91097e-10,8.91241e-10,5.67234e-09,4e-06,4e-06,5.81687e-08,0,0,0,0,0,0,0,0 +13585000,0.982499,-0.00739711,-0.0115655,0.185761,0.00436685,-0.00104597,0.0170805,0.00401041,-0.00207592,-0.00838528,-1.14205e-05,-6.0437e-05,2.09486e-06,0,0,-0.00136526,0.20342,0.0019756,0.434785,0,0,0,0,0,9.95673e-06,4.48446e-05,4.483e-05,0.000281506,0.0436749,0.0436749,0.0109909,0.0467593,0.0467591,0.0664404,7.75518e-10,7.75583e-10,5.4566e-09,4e-06,4e-06,5.80434e-08,0,0,0,0,0,0,0,0 +13685000,0.982539,-0.00733697,-0.0114756,0.185557,0.00363629,-0.00257605,0.016705,0.00440199,-0.00225866,-0.00593285,-1.14119e-05,-6.04447e-05,2.51021e-06,0,0,-0.00136536,0.20342,0.0019756,0.434785,0,0,0,0,0,9.8151e-06,4.65877e-05,4.65738e-05,0.000277562,0.0489458,0.0489456,0.0107595,0.0539977,0.0539975,0.0663025,7.75529e-10,7.75612e-10,5.25162e-09,4e-06,4e-06,5.79645e-08,0,0,0,0,0,0,0,0 +13785000,0.982524,-0.00729645,-0.0115954,0.185633,0.0104705,0.000419796,0.0168509,0.00803207,-0.000197111,-0.00632278,-1.14884e-05,-6.00097e-05,2.18047e-06,0,0,-0.00136494,0.20342,0.0019756,0.434785,0,0,0,0,0,9.68371e-06,4.0131e-05,4.01157e-05,0.000273724,0.0416202,0.0416203,0.0103574,0.0466982,0.0466981,0.0653593,6.8071e-10,6.80727e-10,5.05689e-09,4e-06,4e-06,5.7833e-08,0,0,0,0,0,0,0,0 +13885000,0.982562,-0.00722279,-0.0115606,0.185435,0.0114501,0.00130085,0.0181317,0.00909869,-8.48051e-05,-0.0039334,-1.14732e-05,-6.00233e-05,2.91339e-06,0,0,-0.00136504,0.20342,0.0019756,0.434785,0,0,0,0,0,9.55932e-06,4.16699e-05,4.16549e-05,0.000269984,0.046483,0.0464832,0.0101736,0.053792,0.0537919,0.0651711,6.8073e-10,6.80763e-10,4.87164e-09,4e-06,4e-06,5.77583e-08,0,0,0,0,0,0,0,0 +13985000,0.98258,-0.0072827,-0.0113241,0.185351,0.0117292,0.00220549,0.0171677,0.00711715,-0.00154341,-0.00356592,-1.13849e-05,-6.03076e-05,3.38523e-06,0,0,-0.00136486,0.20342,0.0019756,0.434785,0,0,0,0,0,9.54961e-06,3.60937e-05,3.60787e-05,0.000269644,0.0396853,0.0396859,0.0099378,0.0465904,0.0465904,0.0652967,6.02391e-10,6.02376e-10,4.73856e-09,4e-06,4e-06,5.76357e-08,0,0,0,0,0,0,0,0 +14085000,0.982508,-0.007274,-0.0112572,0.185736,0.00894342,-0.00218561,0.019003,0.00824242,-0.00156214,-0.00504211,-1.14128e-05,-6.02826e-05,2.03042e-06,0,0,-0.0013644,0.20342,0.0019756,0.434785,0,0,0,0,0,9.42919e-06,3.74617e-05,3.74475e-05,0.000266014,0.0441831,0.0441833,0.00979591,0.0535337,0.0535337,0.0650665,6.02418e-10,6.02418e-10,4.56859e-09,4e-06,4e-06,5.75627e-08,0,0,0,0,0,0,0,0 +14185000,0.982461,-0.00726121,-0.0112001,0.185989,0.00688369,-0.00091874,0.0179842,0.00772832,-0.00111431,-0.00726196,-1.14907e-05,-6.02877e-05,1.15349e-06,0,0,-0.00136354,0.20342,0.0019756,0.434785,0,0,0,0,0,9.31125e-06,3.26303e-05,3.26156e-05,0.000262485,0.0378677,0.0378679,0.00951239,0.0464449,0.0464449,0.0641414,5.37183e-10,5.37144e-10,4.40676e-09,4e-06,4e-06,5.74032e-08,0,0,0,0,0,0,0,0 +14285000,0.982459,-0.00718851,-0.0111882,0.186004,0.00782396,-0.00147497,0.0168476,0.0083296,-0.00129371,-0.00354284,-1.14903e-05,-6.02881e-05,1.1765e-06,0,0,-0.00136381,0.20342,0.0019756,0.434785,0,0,0,0,0,9.19927e-06,3.38556e-05,3.38408e-05,0.000259042,0.0420652,0.0420653,0.00941132,0.0532361,0.053236,0.0638899,5.37217e-10,5.37192e-10,4.25245e-09,4e-06,4e-06,5.7329e-08,0,0,0,0,0,0,0,0 +14385000,0.982471,-0.00726866,-0.0111395,0.185939,0.00876771,-0.0041767,0.016909,0.00802451,-0.00251292,2.86906e-05,-1.14051e-05,-6.03552e-05,1.51995e-06,0,0,-0.00136395,0.20342,0.0019756,0.434785,0,0,0,0,0,9.0898e-06,2.96497e-05,2.96346e-05,0.000255682,0.036195,0.0361951,0.0091779,0.0462688,0.0462688,0.0629937,4.82444e-10,4.8239e-10,4.1052e-09,4e-06,4e-06,5.71494e-08,0,0,0,0,0,0,0,0 +14485000,0.98244,-0.00737315,-0.0111035,0.186101,0.00671263,-0.00404317,0.0206691,0.00872216,-0.00293303,0.00230591,-1.142e-05,-6.0342e-05,7.97016e-07,0,0,-0.001364,0.20342,0.0019756,0.434785,0,0,0,0,0,8.97679e-06,3.07541e-05,3.074e-05,0.000252421,0.0400854,0.0400855,0.00911386,0.0529092,0.0529092,0.0627333,4.82484e-10,4.82443e-10,3.9648e-09,4e-06,4e-06,5.70714e-08,0,0,0,0,0,0,0,0 +14585000,0.982427,-0.00744463,-0.0109684,0.186177,0.00529494,-0.003848,0.019321,0.00563127,-0.00365041,0.000178416,-1.14619e-05,-6.05779e-05,5.90124e-07,0,0,-0.00136336,0.20342,0.0019756,0.434785,0,0,0,0,0,8.96739e-06,2.70796e-05,2.70653e-05,0.000252125,0.0346248,0.034625,0.00900835,0.0460696,0.0460695,0.0628549,4.36173e-10,4.36105e-10,3.8637e-09,4e-06,4e-06,5.68909e-08,0,0,0,0,0,0,0,0 +14685000,0.98245,-0.0074211,-0.0110224,0.186052,0.00457837,-0.00396971,0.0190935,0.00611742,-0.00402324,0.0006808,-1.14559e-05,-6.05831e-05,8.76539e-07,0,0,-0.00136315,0.20342,0.0019756,0.434785,0,0,0,0,0,8.85853e-06,2.80823e-05,2.80677e-05,0.000248954,0.038273,0.0382733,0.00897627,0.052562,0.0525619,0.0625879,4.36218e-10,4.36162e-10,3.73415e-09,4e-06,4e-06,5.68084e-08,0,0,0,0,0,0,0,0 +14785000,0.982494,-0.00743043,-0.0110094,0.185819,0.00624802,0.00186055,0.0188398,0.0050154,0.000890594,0.00263909,-1.1814e-05,-6.05319e-05,1.42491e-06,0,0,-0.00136339,0.20342,0.0019756,0.434785,0,0,0,0,0,8.74854e-06,2.48554e-05,2.48408e-05,0.000245859,0.0331829,0.0331833,0.0088212,0.0458522,0.0458522,0.0617489,3.96704e-10,3.96631e-10,3.61028e-09,4e-06,4e-06,5.65782e-08,0,0,0,0,0,0,0,0 +14885000,0.982538,-0.00736083,-0.0109331,0.185596,0.00485696,-0.000294644,0.0224416,0.0055591,0.000972259,0.00360763,-1.18019e-05,-6.05426e-05,2.00832e-06,0,0,-0.00136321,0.20342,0.0019756,0.434785,0,0,0,0,0,8.6442e-06,2.57703e-05,2.5756e-05,0.000242844,0.0365904,0.0365906,0.00881907,0.0522008,0.0522008,0.0614928,3.96753e-10,3.96691e-10,3.49193e-09,4e-06,4e-06,5.64878e-08,0,0,0,0,0,0,0,0 +14985000,0.982546,-0.00748901,-0.0108292,0.185552,0.00436028,-0.00171632,0.0252411,0.00448116,-0.000490976,0.00502839,-1.17408e-05,-6.06546e-05,2.27634e-06,0,0,-0.00136252,0.20342,0.0019756,0.434785,0,0,0,0,0,8.54851e-06,2.29244e-05,2.29099e-05,0.000239891,0.0318285,0.0318288,0.00869664,0.0456212,0.0456212,0.0607007,3.62804e-10,3.62716e-10,3.37866e-09,4e-06,4e-06,5.62278e-08,0,0,0,0,0,0,0,0 +15085000,0.982547,-0.00743367,-0.0109134,0.185548,0.00432257,-0.00108866,0.0291266,0.0049245,-0.000663707,0.00748319,-1.17418e-05,-6.06539e-05,2.23098e-06,0,0,-0.00136247,0.20342,0.0019756,0.434785,0,0,0,0,0,8.45121e-06,2.37657e-05,2.37503e-05,0.000237018,0.035031,0.0350314,0.00872095,0.0518296,0.0518296,0.060463,3.62861e-10,3.62777e-10,3.27034e-09,4e-06,4e-06,5.61274e-08,0,0,0,0,0,0,0,0 +15185000,0.982542,-0.00756333,-0.0109732,0.185564,0.00304789,-0.00211072,0.0295306,0.00396794,-0.000623816,0.00807687,-1.17753e-05,-6.07043e-05,2.10215e-06,0,0,-0.00136181,0.20342,0.0019756,0.434785,0,0,0,0,0,8.35491e-06,2.12452e-05,2.12291e-05,0.000234209,0.0305859,0.0305863,0.00862591,0.04538,0.04538,0.0597189,3.33468e-10,3.33364e-10,3.16657e-09,4e-06,4e-06,5.58349e-08,0,0,0,0,0,0,0,0 +15285000,0.982565,-0.00766614,-0.0110022,0.185435,0.0028963,-0.00289004,0.029371,0.00428572,-0.00082809,0.00795658,-1.17663e-05,-6.07135e-05,2.57054e-06,0,0,-0.00136126,0.20342,0.0019756,0.434785,0,0,0,0,0,8.34747e-06,2.20222e-05,2.20058e-05,0.000233953,0.0336156,0.033616,0.0087454,0.0514546,0.0514548,0.0604041,3.33541e-10,3.33435e-10,3.09162e-09,4e-06,4e-06,5.57536e-08,0,0,0,0,0,0,0,0 +15385000,0.982532,-0.00774029,-0.0110208,0.185608,0.00397882,-0.000513298,0.0290396,0.00350354,-0.000534122,0.00722103,-1.18175e-05,-6.07421e-05,2.20891e-06,0,0,-0.00136016,0.20342,0.0019756,0.434785,0,0,0,0,0,8.26059e-06,1.97776e-05,1.97607e-05,0.00023121,0.0294484,0.0294489,0.00867053,0.0451323,0.0451325,0.0596871,3.07893e-10,3.07772e-10,2.99532e-09,4e-06,4e-06,5.54269e-08,0,0,0,0,0,0,0,0 +15485000,0.98253,-0.00778175,-0.010981,0.185617,0.00299037,-0.00298153,0.0290753,0.00384224,-0.000672234,0.00814623,-1.18153e-05,-6.07443e-05,2.32344e-06,0,0,-0.00135977,0.20342,0.0019756,0.434785,0,0,0,0,0,8.1754e-06,2.04982e-05,2.04813e-05,0.000228537,0.0323145,0.032315,0.00873759,0.0510796,0.0510797,0.0594972,3.07959e-10,3.07837e-10,2.90305e-09,4e-06,4e-06,5.53029e-08,0,0,0,0,0,0,0,0 +15585000,0.982533,-0.0078596,-0.0109739,0.185599,0.00624614,-0.00526543,0.028687,0.00572256,-0.00416431,0.00716199,-1.15807e-05,-6.07216e-05,2.59652e-06,0,0,-0.00135871,0.20342,0.0019756,0.434785,0,0,0,0,0,8.09361e-06,1.84894e-05,1.84722e-05,0.00022592,0.0283982,0.0283987,0.00868132,0.0448812,0.0448813,0.0588295,2.85416e-10,2.85285e-10,2.81452e-09,4e-06,4e-06,5.49397e-08,0,0,0,0,0,0,0,0 +15685000,0.982566,-0.0078281,-0.0109651,0.185427,0.00795021,-0.00852247,0.0290989,0.00642142,-0.00485629,0.00830979,-1.15734e-05,-6.07288e-05,2.96869e-06,0,0,-0.00135834,0.20342,0.0019756,0.434785,0,0,0,0,0,8.00414e-06,1.91617e-05,1.9144e-05,0.000223368,0.0311161,0.0311167,0.00876472,0.0507067,0.0507069,0.058668,2.85485e-10,2.85353e-10,2.72954e-09,4e-06,4e-06,5.47992e-08,0,0,0,0,0,0,0,0 +15785000,0.982606,-0.00785657,-0.0108766,0.185217,0.0053229,-0.0087541,0.0285071,0.00510668,-0.00393846,0.00954482,-1.16712e-05,-6.07867e-05,3.50719e-06,0,0,-0.00135754,0.20342,0.0019756,0.434785,0,0,0,0,0,7.91772e-06,1.73559e-05,1.73386e-05,0.000220877,0.0274297,0.0274302,0.00872301,0.0446286,0.0446288,0.0580486,2.65539e-10,2.65403e-10,2.64801e-09,4e-06,4e-06,5.4398e-08,0,0,0,0,0,0,0,0 +15885000,0.982575,-0.00790412,-0.0109237,0.185379,0.00395706,-0.00686662,0.0296714,0.00550304,-0.00472135,0.00966296,-1.16784e-05,-6.07794e-05,3.12907e-06,0,0,-0.00135692,0.20342,0.0019756,0.434785,0,0,0,0,0,7.91208e-06,1.7986e-05,1.79682e-05,0.000220651,0.0300123,0.0300128,0.00888931,0.0503384,0.0503386,0.0587789,2.65617e-10,2.65482e-10,2.58902e-09,4e-06,4e-06,5.42836e-08,0,0,0,0,0,0,0,0 +15985000,0.982581,-0.00773361,-0.0108854,0.185355,0.0026808,-0.00546333,0.0262088,0.00449357,-0.00373595,0.00746483,-1.17588e-05,-6.07989e-05,3.02382e-06,0,0,-0.00135488,0.20342,0.0019756,0.434785,0,0,0,0,0,7.82541e-06,1.63558e-05,1.63375e-05,0.000218223,0.0265368,0.0265372,0.00885689,0.0443764,0.0443766,0.0581888,2.47857e-10,2.4772e-10,2.51304e-09,4e-06,4e-06,5.38445e-08,0,0,0,0,0,0,0,0 +16085000,0.982583,-0.00769934,-0.0108741,0.185348,0.00115493,-0.0067497,0.0247665,0.00462049,-0.00436409,0.00899128,-1.17653e-05,-6.07925e-05,2.6876e-06,0,0,-0.00135464,0.20342,0.0019756,0.434785,0,0,0,0,0,7.73617e-06,1.69479e-05,1.69292e-05,0.00021585,0.0290077,0.0290082,0.00896639,0.0499767,0.0499769,0.0580975,2.4793e-10,2.47794e-10,2.43998e-09,4e-06,4e-06,5.36707e-08,0,0,0,0,0,0,0,0 +16185000,0.982569,-0.00762683,-0.0108045,0.185429,-0.00205517,-0.00511598,0.0236577,0.00258404,-0.00341767,0.00586622,-1.18672e-05,-6.08458e-05,2.29184e-06,0,0,-0.00135292,0.20342,0.0019756,0.434785,0,0,0,0,0,7.65393e-06,1.54686e-05,1.54499e-05,0.000213527,0.0257128,0.0257132,0.00894177,0.0441262,0.0441264,0.0575529,2.32015e-10,2.31879e-10,2.36979e-09,4e-06,4e-06,5.31924e-08,0,0,0,0,0,0,0,0 +16285000,0.982567,-0.00768078,-0.0107357,0.185441,-0.00167563,-0.00670988,0.0232212,0.00237889,-0.00402297,0.00726465,-1.18651e-05,-6.08478e-05,2.40038e-06,0,0,-0.0013527,0.20342,0.0019756,0.434785,0,0,0,0,0,7.58209e-06,1.6027e-05,1.60086e-05,0.000211242,0.0280734,0.0280739,0.00906028,0.0496222,0.0496225,0.0575,2.32089e-10,2.31954e-10,2.30226e-09,4e-06,4e-06,5.29983e-08,0,0,0,0,0,0,0,0 +16385000,0.982582,-0.00763769,-0.0107214,0.185365,0.000300856,-0.00600728,0.0238527,0.00323131,-0.00322661,0.00719838,-1.18882e-05,-6.07775e-05,2.72359e-06,0,0,-0.00135171,0.20342,0.0019756,0.434785,0,0,0,0,0,7.51044e-06,1.46795e-05,1.46612e-05,0.00020901,0.024948,0.0249485,0.00904046,0.0438789,0.0438791,0.0569979,2.17753e-10,2.17619e-10,2.23732e-09,4e-06,4e-06,5.24812e-08,0,0,0,0,0,0,0,0 +16485000,0.98258,-0.00774217,-0.010705,0.18537,0.00270007,-0.00761763,0.0257142,0.00337604,-0.00397305,0.010608,-1.18906e-05,-6.07753e-05,2.60342e-06,0,0,-0.00135195,0.20342,0.0019756,0.434785,0,0,0,0,0,7.43488e-06,1.52085e-05,1.51904e-05,0.000206827,0.0272069,0.0272075,0.00916556,0.0492758,0.0492761,0.056983,2.17829e-10,2.17696e-10,2.1748e-09,4e-06,4e-06,5.22657e-08,0,0,0,0,0,0,0,0 +16585000,0.982579,-0.00773803,-0.0107144,0.185377,0.00681905,-0.00845536,0.0291536,0.00304068,-0.0032492,0.01132,-1.19585e-05,-6.07744e-05,2.53947e-06,0,0,-0.00135117,0.20342,0.0019756,0.434785,0,0,0,0,0,7.42619e-06,1.39764e-05,1.39581e-05,0.000206633,0.0242333,0.024234,0.00921464,0.0436353,0.0436354,0.0573301,2.04851e-10,2.04721e-10,2.12945e-09,4e-06,4e-06,5.17688e-08,0,0,0,0,0,0,0,0 +16685000,0.982594,-0.00779942,-0.0106491,0.185296,0.00804522,-0.0123887,0.0294557,0.00378451,-0.00427085,0.0127296,-1.19541e-05,-6.07785e-05,2.75988e-06,0,0,-0.00135076,0.20342,0.0019756,0.434785,0,0,0,0,0,7.35518e-06,1.44784e-05,1.44605e-05,0.000204499,0.0264052,0.0264059,0.00934514,0.0489379,0.0489381,0.0573525,2.04929e-10,2.048e-10,2.07092e-09,4e-06,4e-06,5.15351e-08,0,0,0,0,0,0,0,0 +16785000,0.982617,-0.00766988,-0.010557,0.185187,0.00964729,-0.0124472,0.0282299,0.00317177,-0.00345662,0.0119002,-1.20556e-05,-6.08024e-05,2.89006e-06,0,0,-0.00134922,0.20342,0.0019756,0.434785,0,0,0,0,0,7.28081e-06,1.33461e-05,1.33283e-05,0.000202416,0.0235835,0.0235842,0.00932604,0.0433962,0.0433964,0.0569127,1.93115e-10,1.92989e-10,2.01456e-09,4e-06,4e-06,5.0944e-08,0,0,0,0,0,0,0,0 +16885000,0.982662,-0.00764231,-0.01065,0.184944,0.00846297,-0.0127109,0.0295165,0.0040743,-0.0046986,0.0111231,-1.20469e-05,-6.08104e-05,3.32146e-06,0,0,-0.00134816,0.20342,0.0019756,0.434785,0,0,0,0,0,7.20649e-06,1.3825e-05,1.38064e-05,0.000200374,0.0256718,0.0256726,0.00945884,0.0486101,0.0486103,0.0569709,1.93194e-10,1.9307e-10,1.96022e-09,4e-06,4e-06,5.06879e-08,0,0,0,0,0,0,0,0 +16985000,0.982664,-0.00767585,-0.0106615,0.184932,0.00821488,-0.0130722,0.0296508,0.00365517,-0.00385038,0.0101535,-1.21205e-05,-6.0772e-05,3.41168e-06,0,0,-0.00134683,0.20342,0.0019756,0.434785,0,0,0,0,0,7.14089e-06,1.27807e-05,1.27625e-05,0.000198363,0.0229777,0.0229783,0.0094366,0.0431625,0.0431627,0.0565591,1.82393e-10,1.82272e-10,1.90782e-09,4e-06,4e-06,5.00609e-08,0,0,0,0,0,0,0,0 +17085000,0.982657,-0.00778148,-0.0105942,0.184968,0.00913851,-0.015779,0.0298423,0.00452907,-0.00530889,0.0100005,-1.21226e-05,-6.07698e-05,3.29852e-06,0,0,-0.00134589,0.20342,0.0019756,0.434785,0,0,0,0,0,7.07494e-06,1.32369e-05,1.32192e-05,0.000196398,0.0249955,0.0249961,0.00956979,0.0482925,0.0482927,0.0566505,1.82473e-10,1.82355e-10,1.85731e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +17185000,0.982612,-0.00786103,-0.0105082,0.185208,0.00868766,-0.0197858,0.0309835,0.00301476,-0.00833224,0.0126726,-1.21125e-05,-6.08202e-05,2.87894e-06,0,0,-0.00134531,0.20342,0.0019756,0.434785,0,0,0,0,0,7.07406e-06,1.22695e-05,1.22523e-05,0.000196219,0.0224198,0.0224204,0.00961399,0.0429346,0.0429348,0.0570748,1.72561e-10,1.72445e-10,1.82063e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +17285000,0.982582,-0.00781884,-0.0105039,0.185368,0.00912814,-0.0206036,0.0304826,0.00389041,-0.0103202,0.0132144,-1.21204e-05,-6.08126e-05,2.47356e-06,0,0,-0.00134454,0.20342,0.0019756,0.434785,0,0,0,0,0,7.01066e-06,1.27062e-05,1.26887e-05,0.000194295,0.0243726,0.0243732,0.00974756,0.0479858,0.047986,0.0572,1.72643e-10,1.72529e-10,1.77318e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +17385000,0.982625,-0.00777451,-0.0104758,0.185142,0.00593434,-0.0217932,0.0305007,0.00513464,-0.00755212,0.013818,-1.22699e-05,-6.07162e-05,2.78663e-06,0,0,-0.00134329,0.20342,0.0019756,0.434785,0,0,0,0,0,6.94021e-06,1.18065e-05,1.17895e-05,0.000192415,0.0219061,0.0219064,0.00971511,0.0427135,0.0427137,0.0568307,1.63503e-10,1.63392e-10,1.72736e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +17485000,0.982615,-0.0077787,-0.0105286,0.185191,0.0036407,-0.0229889,0.0299832,0.0055468,-0.00976327,0.0143396,-1.22728e-05,-6.07134e-05,2.63781e-06,0,0,-0.0013425,0.20342,0.0019756,0.434785,0,0,0,0,0,6.87828e-06,1.22254e-05,1.22079e-05,0.000190567,0.0237982,0.0237985,0.0098464,0.0476903,0.0476905,0.0569836,1.63586e-10,1.63477e-10,1.68315e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +17585000,0.982618,-0.00775615,-0.0104641,0.185182,0.00126416,-0.0196678,0.0290029,0.00254584,-0.00798578,0.0125095,-1.24442e-05,-6.07794e-05,2.63833e-06,0,0,-0.00134064,0.20342,0.0019756,0.434785,0,0,0,0,0,6.81725e-06,1.13858e-05,1.13686e-05,0.000188752,0.0214309,0.0214312,0.0098079,0.0424994,0.0424995,0.0566351,1.55134e-10,1.55026e-10,1.64044e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +17685000,0.982648,-0.00785746,-0.0103835,0.185025,0.000303671,-0.0206761,0.030298,0.00264513,-0.0100253,0.0148794,-1.24428e-05,-6.07806e-05,2.70679e-06,0,0,-0.00134043,0.20342,0.0019756,0.434785,0,0,0,0,0,6.74943e-06,1.17872e-05,1.17705e-05,0.000186983,0.0232652,0.0232655,0.00993595,0.047406,0.0474062,0.056812,1.55218e-10,1.55112e-10,1.59919e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +17785000,0.982694,-0.00786184,-0.0103376,0.184782,0.00221934,-0.0193875,0.0300819,0.00327548,-0.00907598,0.0185111,-1.25509e-05,-6.06997e-05,2.8305e-06,0,0,-0.00134046,0.20342,0.0019756,0.434785,0,0,0,0,0,6.67821e-06,1.10006e-05,1.09844e-05,0.000185249,0.02099,0.0209904,0.00989081,0.0422923,0.0422925,0.0564803,1.47376e-10,1.47273e-10,1.55931e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +17885000,0.982704,-0.00781602,-0.0104442,0.184726,0.00450613,-0.0221861,0.0295666,0.00366699,-0.0111721,0.0235294,-1.25497e-05,-6.07009e-05,2.89347e-06,0,0,-0.00134112,0.20342,0.0019756,0.434785,0,0,0,0,0,6.67055e-06,1.13877e-05,1.13705e-05,0.000185098,0.0227778,0.0227782,0.0100905,0.0471331,0.0471333,0.057492,1.47465e-10,1.47363e-10,1.5303e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +17985000,0.982713,-0.00771312,-0.0104232,0.18468,0.00367387,-0.01735,0.0292931,0.00305483,-0.00617511,0.0236537,-1.27992e-05,-6.06352e-05,2.8649e-06,0,0,-0.00134018,0.20342,0.0019756,0.434785,0,0,0,0,0,6.60988e-06,1.06483e-05,1.06313e-05,0.000183391,0.0205832,0.0205836,0.0100374,0.0420928,0.0420929,0.0571639,1.40167e-10,1.40068e-10,1.49271e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +18085000,0.982716,-0.00780592,-0.0103859,0.184664,0.00391364,-0.0185286,0.0289534,0.00350895,-0.0079985,0.0231011,-1.27987e-05,-6.06356e-05,2.88816e-06,0,0,-0.001339,0.20342,0.0019756,0.434785,0,0,0,0,0,6.55406e-06,1.10201e-05,1.10034e-05,0.000181714,0.0223209,0.0223213,0.0101585,0.0468717,0.0468719,0.0573837,1.40253e-10,1.40156e-10,1.45637e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +18185000,0.98276,-0.00782285,-0.0104163,0.184424,0.00348197,-0.0171192,0.0296824,0.0038824,-0.00670711,0.0214714,-1.28755e-05,-6.0592e-05,3.35612e-06,0,0,-0.00133711,0.20342,0.0019756,0.434785,0,0,0,0,0,6.4963e-06,1.03231e-05,1.03065e-05,0.000180069,0.0201997,0.0202001,0.0100983,0.0419006,0.0419007,0.0570652,1.33447e-10,1.33352e-10,1.4212e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +18285000,0.982762,-0.00786677,-0.0103895,0.184418,0.00432219,-0.0185138,0.0289834,0.00421431,-0.00847509,0.0205648,-1.28744e-05,-6.05928e-05,3.4075e-06,0,0,-0.00133576,0.20342,0.0019756,0.434785,0,0,0,0,0,6.44375e-06,1.06816e-05,1.06651e-05,0.000178448,0.0218941,0.0218946,0.0102134,0.0466206,0.0466207,0.0572933,1.33534e-10,1.33441e-10,1.38716e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +18385000,0.982744,-0.00778995,-0.0103891,0.184517,0.0043604,-0.0173248,0.0287601,0.0054797,-0.00713594,0.0201822,-1.29481e-05,-6.05088e-05,3.28497e-06,0,0,-0.00133448,0.20342,0.0019756,0.434785,0,0,0,0,0,6.3941e-06,1.00221e-05,1.00058e-05,0.000176857,0.0198452,0.0198455,0.0101461,0.0417155,0.0417157,0.056981,1.27171e-10,1.27082e-10,1.35423e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +18485000,0.982754,-0.00783213,-0.0104018,0.184461,0.00724385,-0.0176984,0.0284705,0.00614361,-0.00889459,0.0228513,-1.29447e-05,-6.05119e-05,3.45718e-06,0,0,-0.00133445,0.20342,0.0019756,0.434785,0,0,0,0,0,6.39007e-06,1.03685e-05,1.0352e-05,0.000176719,0.0215005,0.021501,0.0103369,0.0463806,0.0463808,0.0580544,1.27262e-10,1.27174e-10,1.33024e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +18585000,0.982732,-0.00767249,-0.010297,0.184587,0.00630977,-0.0167963,0.028138,0.00517282,-0.00754308,0.0245126,-1.30493e-05,-6.05173e-05,3.33686e-06,0,0,-0.00133361,0.20342,0.0019756,0.434785,0,0,0,0,0,6.34314e-06,9.74264e-06,9.72637e-06,0.000175157,0.0195163,0.0195167,0.0102617,0.041538,0.0415381,0.0577365,1.21303e-10,1.21217e-10,1.29911e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +18685000,0.982749,-0.00766315,-0.0102465,0.1845,0.00594197,-0.0165,0.0266789,0.00579191,-0.00920903,0.0239845,-1.30472e-05,-6.05191e-05,3.44179e-06,0,0,-0.00133245,0.20342,0.0019756,0.434785,0,0,0,0,0,6.28982e-06,1.00768e-05,1.00606e-05,0.000173629,0.0211344,0.0211349,0.0103677,0.0461511,0.0461513,0.0579879,1.21391e-10,1.21308e-10,1.26894e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +18785000,0.982754,-0.00759845,-0.0101434,0.184482,0.00482603,-0.0158804,0.0260221,0.00577651,-0.00785403,0.0207082,-1.31268e-05,-6.04889e-05,3.46461e-06,0,0,-0.00132948,0.20342,0.0019756,0.434785,0,0,0,0,0,6.23937e-06,9.48147e-06,9.46581e-06,0.000172127,0.019207,0.0192074,0.010286,0.0413676,0.0413678,0.0576709,1.158e-10,1.15719e-10,1.23973e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +18885000,0.982751,-0.0075621,-0.010157,0.184503,0.00390693,-0.0162525,0.0245573,0.00618808,-0.0095213,0.0177418,-1.31291e-05,-6.04865e-05,3.34306e-06,0,0,-0.00132746,0.20342,0.0019756,0.434785,0,0,0,0,0,6.18845e-06,9.80489e-06,9.78895e-06,0.000170651,0.020789,0.0207894,0.0103865,0.0459315,0.0459317,0.0579258,1.15889e-10,1.1581e-10,1.21141e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +18985000,0.982732,-0.00754448,-0.0102081,0.184597,0.00257784,-0.0158445,0.025063,0.005231,-0.00809927,0.0205575,-1.32172e-05,-6.04826e-05,3.33646e-06,0,0,-0.00132704,0.20342,0.0019756,0.434785,0,0,0,0,0,6.146e-06,9.23803e-06,9.22206e-06,0.000169195,0.0189175,0.0189179,0.0102988,0.0412042,0.0412043,0.0576076,1.10637e-10,1.10561e-10,1.18397e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +19085000,0.98274,-0.00762776,-0.0102171,0.184553,0.000610754,-0.0166425,0.0255961,0.00543371,-0.00968704,0.0167955,-1.32147e-05,-6.04846e-05,3.45836e-06,0,0,-0.00132476,0.20342,0.0019756,0.434785,0,0,0,0,0,6.09942e-06,9.55097e-06,9.53504e-06,0.000167766,0.0204636,0.0204639,0.010394,0.0457218,0.045722,0.0578634,1.10726e-10,1.10652e-10,1.15736e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +19185000,0.982718,-0.00752068,-0.0103503,0.184665,-0.000690114,-0.0160442,0.0256131,0.00457402,-0.00831909,0.0168368,-1.33024e-05,-6.04629e-05,3.20549e-06,0,0,-0.00132376,0.20342,0.0019756,0.434785,0,0,0,0,0,6.09473e-06,9.00994e-06,8.99337e-06,0.000167644,0.0186427,0.0186429,0.0103835,0.0410475,0.0410476,0.0583821,1.05789e-10,1.05718e-10,1.13795e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +19285000,0.982719,-0.00746918,-0.010302,0.184664,-0.00176602,-0.0167059,0.0259673,0.00448704,-0.00995921,0.0169236,-1.33038e-05,-6.04615e-05,3.13127e-06,0,0,-0.00132286,0.20342,0.0019756,0.434785,0,0,0,0,0,6.04643e-06,9.31281e-06,9.29623e-06,0.000166246,0.0201598,0.02016,0.0104753,0.045521,0.0455212,0.0586438,1.05879e-10,1.05809e-10,1.11272e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +19385000,0.982719,-0.00756026,-0.0101911,0.184667,-0.00178253,-0.0129852,0.0276271,0.00383643,-0.0074171,0.0157028,-1.34133e-05,-6.04225e-05,3.00776e-06,0,0,-0.00132102,0.20342,0.0019756,0.434785,0,0,0,0,0,5.99775e-06,8.79377e-06,8.77813e-06,0.000164874,0.0183827,0.0183829,0.0103759,0.040897,0.0408971,0.058309,1.01228e-10,1.01161e-10,1.08825e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +19485000,0.982679,-0.00761981,-0.0100935,0.184885,-0.002689,-0.0136869,0.026908,0.0035784,-0.00874981,0.0154546,-1.34181e-05,-6.0418e-05,2.758e-06,0,0,-0.00131991,0.20342,0.0019756,0.434785,0,0,0,0,0,5.95942e-06,9.08711e-06,9.0719e-06,0.000163514,0.0198719,0.0198721,0.0104628,0.0453286,0.0453287,0.0585671,1.01319e-10,1.01253e-10,1.0645e-09,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +19585000,0.98266,-0.00753745,-0.0101954,0.184984,-0.00485333,-0.0154363,0.0283292,0.00384541,-0.00849338,0.015599,-1.34377e-05,-6.03709e-05,2.68916e-06,0,0,-0.00131858,0.20342,0.0019756,0.434785,0,0,0,0,0,5.91938e-06,8.59013e-06,8.57458e-06,0.000162176,0.0181393,0.0181395,0.0103583,0.0407525,0.0407526,0.0582216,9.69359e-11,9.68728e-11,1.04144e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +19685000,0.982676,-0.00756514,-0.0102093,0.184895,-0.00620855,-0.0149292,0.02758,0.00332797,-0.0100166,0.0154732,-1.34347e-05,-6.03735e-05,2.84178e-06,0,0,-0.00131746,0.20342,0.0019756,0.434785,0,0,0,0,0,5.87515e-06,8.87504e-06,8.85941e-06,0.000160868,0.0196011,0.0196012,0.0104407,0.0451445,0.0451447,0.0584744,9.70273e-11,9.69656e-11,1.01906e-09,4e-06,4e-06,5e-08,0,0,0,0,0,0,0,0 +19785000,0.982665,-0.00763243,-0.010199,0.18495,-0.00704209,-0.0128948,0.0263814,0.00535546,-0.00854123,0.0124724,-1.3476e-05,-6.02812e-05,2.73525e-06,0,0,-0.001315,0.20342,0.0019756,0.434785,0,0,0,0,0,5.87141e-06,8.39729e-06,8.38209e-06,0.000160758,0.017911,0.0179111,0.010419,0.040614,0.0406141,0.0589858,9.28957e-11,9.28361e-11,1.00272e-09,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +19885000,0.982645,-0.00764835,-0.0102883,0.185054,-0.00679977,-0.0129936,0.0261272,0.00461221,-0.00979365,0.0112915,-1.34798e-05,-6.02776e-05,2.53941e-06,0,0,-0.00131361,0.20342,0.0019756,0.434785,0,0,0,0,0,5.82983e-06,8.67406e-06,8.65846e-06,0.000159471,0.0193458,0.0193459,0.0104988,0.0449687,0.0449688,0.0592393,9.29875e-11,9.29293e-11,9.81459e-10,4e-06,4e-06,5.0002e-08,0,0,0,0,0,0,0,0 +19985000,0.982667,-0.00766579,-0.0104105,0.184928,-0.00719878,-0.0124454,0.0235764,0.00476755,-0.00748917,0.00765027,-1.35503e-05,-6.02042e-05,2.60476e-06,0,0,-0.00131052,0.20342,0.0019756,0.434785,0,0,0,0,0,5.78257e-06,8.21485e-06,8.19913e-06,0.000158209,0.0176946,0.0176947,0.0103864,0.0404813,0.0404814,0.0588716,8.90867e-11,8.90308e-11,9.60796e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20085000,0.98268,-0.00767908,-0.01042,0.18486,-0.00673247,-0.0155683,0.0236544,0.00404734,-0.00891611,0.0108347,-1.35505e-05,-6.0204e-05,2.59446e-06,0,0,-0.00131082,0.20342,0.0019756,0.434785,0,0,0,0,0,5.73746e-06,8.4833e-06,8.4675e-06,0.000156968,0.0191062,0.0191063,0.0104625,0.0448005,0.0448006,0.0591173,8.9179e-11,8.91243e-11,9.40728e-10,4e-06,4e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20185000,0.982664,-0.00767039,-0.0105171,0.184937,-0.00585331,-0.0130902,0.0244401,0.00505089,-0.00763288,0.0104005,-1.36041e-05,-6.01426e-05,2.38923e-06,-5.71978e-11,6.08943e-11,-0.00130944,0.20342,0.0019756,0.434785,0,0,0,0,0,5.69586e-06,8.04071e-06,8.02481e-06,0.000155743,0.017711,0.0177112,0.0103482,0.0403543,0.0403543,0.0587434,8.54951e-11,8.54424e-11,9.21219e-10,4.00001e-06,4.00001e-06,5e-08,0,0,0,0,0,0,0,0 +20285000,0.982678,-0.0076699,-0.0105449,0.18486,-0.00897817,-0.0140361,0.0247472,0.00434191,-0.00891404,0.0111065,-1.36053e-05,-6.01414e-05,2.32744e-06,3.47917e-09,-3.70081e-09,-0.00130879,0.20342,0.0019756,0.434785,0,0,0,0,0,5.65034e-06,8.3016e-06,8.28552e-06,0.000154543,0.020097,0.0200976,0.0104216,0.0446478,0.0446478,0.0589806,8.55878e-11,8.55363e-11,9.02265e-10,4.00002e-06,4.00002e-06,5e-08,0,0,0,0,0,0,0,0 +20385000,0.982675,-0.00760779,-0.0105321,0.184882,-0.00982081,-0.0122549,0.0237558,0.00522843,-0.00761246,0.0105516,-1.36439e-05,-6.00837e-05,2.48963e-06,-3.77339e-06,-3.01392e-06,-0.00130693,0.20342,0.0019756,0.434785,0,0,0,0,0,5.61695e-06,7.87642e-06,7.86052e-06,0.00015335,0.0200049,0.0200061,0.0103068,0.0402472,0.0402472,0.0586009,8.21196e-11,8.207e-11,8.83831e-10,3.97867e-06,3.97867e-06,5e-08,0,0,0,0,0,0,0,0 +20485000,0.982694,-0.00762745,-0.0105023,0.184782,-0.0141974,-0.0137991,0.0243692,0.00400361,-0.00889168,0.0101918,-1.36453e-05,-6.00823e-05,2.41712e-06,-3.75588e-06,-3.03244e-06,-0.00130589,0.20342,0.0019756,0.434785,0,0,0,0,0,5.60599e-06,8.13e-06,8.11414e-06,0.000153259,0.0238295,0.0238317,0.0104667,0.0445855,0.0445856,0.0597074,8.22144e-11,8.21656e-11,8.70363e-10,3.97868e-06,3.97868e-06,5.0002e-08,0,0,0,0,0,0,0,0 +20585000,0.982731,-0.00758576,-0.0105026,0.184587,-0.0136541,-0.0135848,0.0240034,0.00496139,-0.0076401,0.00857013,-1.36719e-05,-6.00145e-05,2.71637e-06,-1.43333e-05,-7.53529e-06,-0.00130392,0.20342,0.0019756,0.434785,0,0,0,0,0,5.56497e-06,7.73467e-06,7.71895e-06,0.000152094,0.0243652,0.0243682,0.0103498,0.0402271,0.0402272,0.0593109,7.90181e-11,7.8971e-11,8.52805e-10,3.89698e-06,3.89698e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20685000,0.982724,-0.00751818,-0.0104954,0.184626,-0.0157193,-0.0130916,0.024952,0.00354043,-0.00893399,0.00895249,-1.36762e-05,-6.00105e-05,2.49631e-06,-1.4309e-05,-7.56285e-06,-0.00130317,0.20342,0.0019756,0.434785,0,0,0,0,0,5.52347e-06,7.98169e-06,7.96581e-06,0.00015095,0.0294,0.0294046,0.0104213,0.0447378,0.0447379,0.0595369,7.91116e-11,7.90654e-11,8.35734e-10,3.89699e-06,3.89699e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20785000,0.982749,-0.00704484,-0.0104304,0.184515,-0.0168674,-0.00942404,0.0126098,0.00283969,-0.00756874,0.00755711,-1.37106e-05,-5.99642e-05,2.57598e-06,-2.8563e-05,-1.35879e-05,-0.00130148,0.20342,0.0019756,0.434785,0,0,0,0,0,5.48237e-06,7.63829e-06,7.62186e-06,0.000149823,0.0297474,0.0297527,0.0103044,0.0403813,0.0403814,0.0591356,7.62885e-11,7.62438e-11,8.19119e-10,3.73399e-06,3.73399e-06,5.0001e-08,0,0,0,0,0,0,0,0 +20885000,0.982813,0.00181049,-0.00675651,0.184473,-0.0231451,0.00178984,-0.100859,0.000771729,-0.00792153,0.00198812,-1.37104e-05,-5.99642e-05,2.58376e-06,-2.85094e-05,-1.36409e-05,-0.00130073,0.20342,0.0019756,0.434785,0,0,0,0,0,5.44335e-06,7.87024e-06,7.85969e-06,0.000148725,0.0357917,0.0357985,0.0103726,0.0452034,0.0452038,0.0593471,7.63815e-11,7.63389e-11,8.02946e-10,3.734e-06,3.734e-06,5e-08,0,0,0,0,0,0,0,0 +20985000,0.982815,0.00556131,-0.00302686,0.184483,-0.0320875,0.0202272,-0.242091,0.00037795,-0.00600236,-0.0114643,-1.37015e-05,-5.99136e-05,2.55484e-06,-4.90445e-05,-3.54576e-06,-0.00130379,0.20342,0.0019756,0.434785,0,0,0,0,0,5.40734e-06,7.59233e-06,7.59351e-06,0.000147628,0.0352272,0.0352326,0.0102525,0.0407676,0.0407679,0.0589416,7.40071e-11,7.39669e-11,7.87211e-10,3.49195e-06,3.49196e-06,5e-08,0,0,0,0,0,0,0,0 +21085000,0.982756,0.00412997,-0.00326736,0.184835,-0.0453994,0.0359985,-0.359781,-0.00349296,-0.00313693,-0.0408188,-1.37026e-05,-5.99126e-05,2.5006e-06,-4.90651e-05,-3.52664e-06,-0.00130404,0.20342,0.0019756,0.434785,0,0,0,0,0,5.4217e-06,7.83095e-06,7.82892e-06,0.000147523,0.0417718,0.0417771,0.0104065,0.0460138,0.0460144,0.0600375,7.41024e-11,7.40631e-11,7.75712e-10,3.49196e-06,3.49196e-06,5.0002e-08,0,0,0,0,0,0,0,0 +21185000,0.982703,0.00136568,-0.00485123,0.185118,-0.0459847,0.0394569,-0.484772,-0.00249959,-0.00293285,-0.0746254,-1.36092e-05,-5.98532e-05,2.58339e-06,-8.23897e-05,4.97905e-05,-0.00131189,0.20342,0.0019756,0.434785,0,0,0,0,0,5.40363e-06,7.64917e-06,7.64159e-06,0.000146424,0.0396017,0.0396058,0.0102852,0.04137,0.0413705,0.0596162,7.2216e-11,7.21801e-11,7.60692e-10,3.19348e-06,3.1935e-06,5.0002e-08,0,0,0,0,0,0,0,0 +21285000,0.982654,-0.000853683,-0.00622339,0.185342,-0.0457812,0.0423186,-0.614829,-0.00711754,0.00117077,-0.130766,-1.36132e-05,-5.98496e-05,2.38329e-06,-8.23576e-05,4.97505e-05,-0.00131148,0.20342,0.0019756,0.434785,0,0,0,0,0,5.37508e-06,7.88836e-06,7.87746e-06,0.00014535,0.0462646,0.0462693,0.0103504,0.0470555,0.0470562,0.059816,7.23097e-11,7.22754e-11,7.46068e-10,3.19348e-06,3.1935e-06,5.0001e-08,0,0,0,0,0,0,0,0 +21385000,0.98261,-0.00231886,-0.00688092,0.185541,-0.0389307,0.0391179,-0.739083,-0.00544531,0.00477143,-0.192473,-1.3586e-05,-5.97879e-05,2.32238e-06,-0.000112362,6.47072e-05,-0.00131757,0.20342,0.0019756,0.434785,0,0,0,0,0,5.34955e-06,7.79694e-06,7.78521e-06,0.00014429,0.0424263,0.0424307,0.0102306,0.0421015,0.0421021,0.0593919,7.09032e-11,7.08722e-11,7.31826e-10,2.87004e-06,2.87006e-06,5.0001e-08,0,0,0,0,0,0,0,0 +21485000,0.982584,-0.00316843,-0.00732204,0.185648,-0.033965,0.0356997,-0.874484,-0.0091612,0.00854695,-0.277065,-1.35837e-05,-5.97893e-05,2.41881e-06,-0.000112169,6.45649e-05,-0.00131612,0.20342,0.0019756,0.434785,0,0,0,0,0,5.32383e-06,8.03441e-06,8.02225e-06,0.000143246,0.0488914,0.048897,0.0102953,0.0481774,0.0481784,0.0595834,7.09972e-11,7.09678e-11,7.17955e-10,2.87004e-06,2.87007e-06,5e-08,0,0,0,0,0,0,0,0 +21585000,0.982587,-0.00359918,-0.00730709,0.185625,-0.0252692,0.0325276,-0.997699,-0.00787388,0.0106493,-0.362394,-1.35587e-05,-5.97626e-05,2.50404e-06,-0.000119976,5.83672e-05,-0.00132407,0.20342,0.0019756,0.434785,0,0,0,0,0,5.29134e-06,8.02597e-06,8.01439e-06,0.000142227,0.0436732,0.0436783,0.0101764,0.0428619,0.0428627,0.0591575,7.00061e-11,6.99793e-11,7.04444e-10,2.55045e-06,2.55048e-06,5e-08,0,0,0,0,0,0,0,0 +21685000,0.982577,-0.00395346,-0.00715842,0.185674,-0.0222833,0.0282756,-1.13109,-0.0102458,0.0137349,-0.476509,-1.35551e-05,-5.97645e-05,2.64961e-06,-0.000119565,5.80814e-05,-0.00132125,0.20342,0.0019756,0.434785,0,0,0,0,0,5.26466e-06,8.2638e-06,8.25306e-06,0.000141217,0.0497307,0.0497369,0.0102404,0.0492379,0.0492391,0.0593412,7.01005e-11,7.00752e-11,6.91277e-10,2.55045e-06,2.55048e-06,5e-08,0,0,0,0,0,0,0,0 +21785000,0.982595,-0.00431568,-0.00726168,0.185567,-0.0125715,0.0244035,-1.25878,-0.00290246,0.0129399,-0.589423,-1.34927e-05,-5.97155e-05,2.88187e-06,-0.000144758,5.05706e-05,-0.00132815,0.20342,0.0019756,0.434785,0,0,0,0,0,5.26273e-06,8.32645e-06,8.31591e-06,0.000141135,0.0435922,0.0435975,0.0102094,0.0435685,0.0435694,0.0597949,6.94375e-11,6.94138e-11,6.81644e-10,2.25443e-06,2.25447e-06,5.0002e-08,0,0,0,0,0,0,0,0 +21885000,0.982588,-0.00460807,-0.00737799,0.185594,-0.00895604,0.0200262,-1.37994,-0.00400181,0.0152052,-0.728965,-1.34958e-05,-5.97116e-05,2.70502e-06,-0.000144449,5.03152e-05,-0.00132557,0.20342,0.0019756,0.434785,0,0,0,0,0,5.22655e-06,8.56826e-06,8.55782e-06,0.000140151,0.0491313,0.0491377,0.010274,0.0501397,0.0501411,0.0599768,6.95321e-11,6.95099e-11,6.69054e-10,2.25443e-06,2.25447e-06,5.0001e-08,0,0,0,0,0,0,0,0 +21985000,0.982606,-0.00529228,-0.00767235,0.185471,-0.00779453,0.0168705,-1.36793,-2.05677e-06,0.0127166,-0.864083,-1.34346e-05,-5.96842e-05,2.7728e-06,-0.000129616,2.58454e-05,-0.00133025,0.20342,0.0019756,0.434785,0,0,0,0,0,5.18999e-06,8.68667e-06,8.67653e-06,0.000139181,0.0425096,0.042515,0.0101557,0.0441649,0.0441659,0.0595366,6.91072e-11,6.90866e-11,6.56784e-10,1.99192e-06,1.99196e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22085000,0.982599,-0.00603717,-0.00846323,0.185449,-0.00468422,0.0132382,-1.34861,-0.000692342,0.0141794,-1.00589,-1.34308e-05,-5.96862e-05,2.93212e-06,-0.000129251,2.56151e-05,-0.00132789,0.20342,0.0019756,0.434785,0,0,0,0,0,5.16161e-06,8.93471e-06,8.92349e-06,0.000138215,0.0474788,0.0474853,0.0102202,0.0508169,0.0508185,0.0597118,6.92026e-11,6.91825e-11,6.44818e-10,1.99192e-06,1.99197e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22185000,0.982615,-0.00648161,-0.0087607,0.185333,0.00128142,0.00994086,-1.36351,0.00588682,0.0102279,-1.14714,-1.33528e-05,-5.9647e-05,3.05485e-06,-0.000122781,4.18159e-06,-0.0013256,0.20342,0.0019756,0.434785,0,0,0,0,0,5.12773e-06,9.09603e-06,9.08468e-06,0.000137269,0.0408162,0.0408218,0.0101028,0.0446228,0.044624,0.0592667,6.89519e-11,6.89322e-11,6.33145e-10,1.76376e-06,1.76381e-06,5e-08,0,0,0,0,0,0,0,0 +22285000,0.982603,-0.0072091,-0.00900052,0.185359,0.0072397,0.00484104,-1.36153,0.00629481,0.0110066,-1.28967,-1.3354e-05,-5.96443e-05,2.95912e-06,-0.000122476,3.94772e-06,-0.00132339,0.20342,0.0019756,0.434785,0,0,0,0,0,5.09559e-06,9.34761e-06,9.33697e-06,0.000136336,0.0452663,0.045273,0.0101673,0.0512763,0.0512782,0.0594357,6.90475e-11,6.90282e-11,6.21766e-10,1.76376e-06,1.76381e-06,5e-08,0,0,0,0,0,0,0,0 +22385000,0.982747,-0.00758551,-0.0091905,0.184569,0.00907535,-0.00405208,-1.36343,0.0117062,0.00186289,-1.43403,-1.32713e-05,-5.96057e-05,2.88905e-06,-9.60501e-05,-2.32973e-06,-0.00131942,0.204279,0.00198394,0.434362,0,0,0,0,0,8.01054e-05,9.68679e-06,9.61711e-06,0.00228386,0.0387997,0.0388054,0.010139,0.0449394,0.0449407,0.0598806,6.89111e-11,6.88919e-11,6.1623e-10,1.56905e-06,1.5691e-06,5.0002e-08,0,0,0,0,0,0,0,0 +22485000,0.982441,-0.00774548,-0.00963449,0.186165,0.0135755,-0.0105417,-1.36817,0.012821,0.00111907,-1.57535,-1.32708e-05,-5.96049e-05,2.88818e-06,-9.58064e-05,-2.5044e-06,-0.00131771,0.204279,0.00198394,0.434362,0,0,0,0,0,5.65858e-05,9.69906e-06,9.63932e-06,0.00160817,0.0429237,0.0429303,0.0102049,0.0515041,0.0515061,0.0600492,6.9011e-11,6.89918e-11,6.16329e-10,1.56905e-06,1.56911e-06,5.0002e-08,0,0,0,0,0,0,0,0 +22585000,0.982544,-0.00760745,-0.0102186,0.185592,0.0222062,-0.0167529,-1.36793,0.0246019,-0.00654359,-1.7182,-1.31806e-05,-5.95614e-05,2.88922e-06,-0.000101836,-1.38589e-05,-0.00131491,0.204279,0.00198394,0.434362,0,0,0,0,0,4.38602e-05,9.73885e-06,9.67337e-06,0.00124099,0.0371174,0.0371232,0.0100892,0.0451014,0.0451029,0.0595941,6.89344e-11,6.89151e-11,6.16424e-10,1.3967e-06,1.39677e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22685000,0.982489,-0.00754074,-0.0104169,0.185878,0.0245009,-0.0216086,-1.37138,0.0269293,-0.00850902,-1.86207,-1.31797e-05,-5.95601e-05,2.88739e-06,-0.000101482,-1.41146e-05,-0.00131245,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58578e-05,9.78354e-06,9.72379e-06,0.00101036,0.0411488,0.0411556,0.0101553,0.0515089,0.0515111,0.0597578,6.90344e-11,6.9015e-11,6.16517e-10,1.39671e-06,1.39678e-06,5.0001e-08,0,0,0,0,0,0,0,0 +22785000,0.98244,-0.00748917,-0.0108058,0.186117,0.0277659,-0.0274767,-1.37549,0.0357066,-0.0174404,-2.01001,-1.30702e-05,-5.94932e-05,2.88432e-06,-8.39867e-05,-3.37758e-05,-0.00130777,0.204279,0.00198394,0.434362,0,0,0,0,0,3.0261e-05,9.83171e-06,9.77229e-06,0.000852146,0.0358537,0.0358598,0.0100414,0.0451264,0.0451281,0.0593054,6.89388e-11,6.89195e-11,6.16604e-10,1.24104e-06,1.24111e-06,5e-08,0,0,0,0,0,0,0,0 +22885000,0.982599,-0.00768141,-0.0111331,0.185249,0.0308915,-0.0322484,-1.37736,0.0385993,-0.0203469,-2.15431,-1.30691e-05,-5.94921e-05,2.89153e-06,-8.36701e-05,-3.40368e-05,-0.00130538,0.204279,0.00198394,0.434362,0,0,0,0,0,2.61546e-05,9.89596e-06,9.84021e-06,0.000736863,0.0397591,0.0397665,0.0101078,0.0513938,0.0513963,0.0594648,6.90387e-11,6.90194e-11,6.16687e-10,1.24105e-06,1.24112e-06,5e-08,0,0,0,0,0,0,0,0 +22985000,0.98273,-0.00761778,-0.0115008,0.184531,0.0324072,-0.0357193,-1.38172,0.0472186,-0.0300641,-2.30652,-1.29499e-05,-5.94142e-05,2.89923e-06,-6.43415e-05,-5.39968e-05,-0.00129937,0.204279,0.00198394,0.434362,0,0,0,0,0,2.30316e-05,9.94424e-06,9.88851e-06,0.000649108,0.0348138,0.0348205,0.00999578,0.0450633,0.0450652,0.0590158,6.88806e-11,6.88614e-11,6.16761e-10,1.10176e-06,1.10183e-06,5e-08,0,0,0,0,0,0,0,0 +23085000,0.982786,-0.00763212,-0.011819,0.184211,0.0361628,-0.0406397,-1.37904,0.0506314,-0.0339113,-2.44582,-1.29498e-05,-5.9414e-05,2.8984e-06,-6.42792e-05,-5.40407e-05,-0.00129893,0.204279,0.00198394,0.434362,0,0,0,0,0,2.11136e-05,1.00215e-05,9.96575e-06,0.000595999,0.0385619,0.03857,0.0101493,0.0512081,0.0512109,0.0600599,6.89805e-11,6.89613e-11,6.16838e-10,1.10176e-06,1.10183e-06,5.0002e-08,0,0,0,0,0,0,0,0 +23185000,0.982777,-0.00759405,-0.0120085,0.184247,0.0408877,-0.0404275,-1.38236,0.0616846,-0.0436876,-2.59313,-1.28513e-05,-5.93399e-05,2.89093e-06,-5.33169e-05,-6.46139e-05,-0.00129449,0.204279,0.00198394,0.434362,0,0,0,0,0,1.90356e-05,1.00647e-05,1.00115e-05,0.000537352,0.0338661,0.0338741,0.0100371,0.0449472,0.0449493,0.0596012,6.87456e-11,6.87267e-11,6.16899e-10,9.78441e-07,9.78505e-07,5.0001e-08,0,0,0,0,0,0,0,0 +23285000,0.982825,-0.00807045,-0.0121359,0.183962,0.0447246,-0.0451372,-1.37831,0.0658953,-0.0480089,-2.7374,-1.28502e-05,-5.93386e-05,2.89407e-06,-5.30269e-05,-6.48548e-05,-0.00129226,0.204279,0.00198394,0.434362,0,0,0,0,0,1.73519e-05,1.01467e-05,1.01006e-05,0.00048925,0.0374315,0.0374409,0.0101051,0.050984,0.0509871,0.0597583,6.88455e-11,6.88265e-11,6.16952e-10,9.78442e-07,9.7851e-07,5.0001e-08,0,0,0,0,0,0,0,0 +23385000,0.98279,-0.0080461,-0.012244,0.184143,0.0487945,-0.0439975,-1.37972,0.0768003,-0.0516836,-2.87817,-1.27269e-05,-5.92969e-05,2.87778e-06,-5.44984e-05,-9.38173e-05,-0.00129077,0.204279,0.00198394,0.434362,0,0,0,0,0,1.59414e-05,1.01877e-05,1.01441e-05,0.000449105,0.0329291,0.0329374,0.00999477,0.0448011,0.0448035,0.0593038,6.85382e-11,6.85195e-11,6.16994e-10,8.70426e-07,8.70483e-07,5.0001e-08,0,0,0,0,0,0,0,0 +23485000,0.982839,-0.00814087,-0.0125102,0.18386,0.0522386,-0.0454592,-1.38141,0.0818121,-0.0561871,-3.02191,-1.27256e-05,-5.92958e-05,2.88845e-06,-5.42657e-05,-9.40486e-05,-0.00128872,0.204279,0.00198394,0.434362,0,0,0,0,0,1.47734e-05,1.02812e-05,1.02387e-05,0.000415073,0.0362981,0.036308,0.0100622,0.0507402,0.0507437,0.0594527,6.86381e-11,6.86193e-11,6.17025e-10,8.70427e-07,8.70488e-07,5e-08,0,0,0,0,0,0,0,0 +23585000,0.982866,-0.00839486,-0.0124511,0.18371,0.0523636,-0.0478608,-1.38089,0.0886692,-0.0665896,-3.1678,-1.26527e-05,-5.92167e-05,2.8947e-06,-3.51127e-05,-0.00010036,-0.00128579,0.204279,0.00198394,0.434362,0,0,0,0,0,1.37677e-05,1.03205e-05,1.02832e-05,0.000385882,0.0319584,0.0319672,0.00995369,0.0446389,0.0446415,0.0590029,6.82734e-11,6.8255e-11,6.17044e-10,7.76793e-07,7.76843e-07,5e-08,0,0,0,0,0,0,0,0 +23685000,0.982874,-0.00902859,-0.0129431,0.183601,0.0501613,-0.0499757,-1.28495,0.0938091,-0.0715471,-3.3058,-1.2652e-05,-5.92162e-05,2.90207e-06,-3.49988e-05,-0.00010048,-0.00128468,0.204279,0.00198394,0.434362,0,0,0,0,0,1.31138e-05,1.04266e-05,1.03903e-05,0.000366635,0.035068,0.0350778,0.0101087,0.0504857,0.0504894,0.060043,6.83733e-11,6.83548e-11,6.17076e-10,7.76797e-07,7.76849e-07,5.0002e-08,0,0,0,0,0,0,0,0 +23785000,0.982864,-0.0108157,-0.0156214,0.183348,0.0459138,-0.0447613,-0.967719,0.103965,-0.0754507,-3.42874,-1.25548e-05,-5.91928e-05,2.91936e-06,-3.85172e-05,-0.000118768,-0.0012801,0.204279,0.00198394,0.434362,0,0,0,0,0,1.23367e-05,1.04973e-05,1.04478e-05,0.00034371,0.0307412,0.0307495,0.0100004,0.0444659,0.0444687,0.0595846,6.79676e-11,6.79495e-11,6.17072e-10,6.96257e-07,6.963e-07,5.0002e-08,0,0,0,0,0,0,0,0 +23885000,0.982773,-0.0141658,-0.0197476,0.18321,0.04072,-0.0439238,-0.537188,0.108263,-0.0798371,-3.50717,-1.25542e-05,-5.9192e-05,2.91879e-06,-3.83759e-05,-0.000118883,-0.00127898,0.204279,0.00198394,0.434362,0,0,0,0,0,1.16347e-05,1.0653e-05,1.05843e-05,0.000323507,0.0334523,0.0334623,0.0100705,0.0502113,0.0502153,0.059734,6.80675e-11,6.80493e-11,6.17054e-10,6.96259e-07,6.96305e-07,5.0001e-08,0,0,0,0,0,0,0,0 +23985000,0.982712,-0.0164349,-0.0222246,0.183067,0.0424945,-0.0407328,-0.153095,0.117026,-0.0817609,-3.57572,-1.24702e-05,-5.91684e-05,2.91531e-06,-4.19541e-05,-0.000134679,-0.0012553,0.204279,0.00198394,0.434362,0,0,0,0,0,1.1007e-05,1.07423e-05,1.06653e-05,0.000305607,0.0293238,0.0293333,0.00996488,0.0442785,0.0442816,0.059281,6.76202e-11,6.76023e-11,6.1702e-10,6.26714e-07,6.26753e-07,5.0001e-08,0,0,0,0,0,0,0,0 +24085000,0.982741,-0.0160776,-0.0212974,0.183055,0.0481128,-0.0481906,0.0912157,0.1215,-0.0861634,-3.57915,-1.247e-05,-5.91675e-05,2.90137e-06,-4.18139e-05,-0.000134757,-0.00125449,0.204279,0.00198394,0.434362,0,0,0,0,0,1.04477e-05,1.08441e-05,1.0779e-05,0.000289689,0.0318918,0.0319037,0.0100359,0.0499153,0.0499199,0.0594291,6.772e-11,6.7702e-11,6.1697e-10,6.26715e-07,6.26758e-07,5e-08,0,0,0,0,0,0,0,0 +24185000,0.982863,-0.0132924,-0.0176353,0.183008,0.0591525,-0.052975,0.0835181,0.129613,-0.0908524,-3.59556,-1.24218e-05,-5.91364e-05,2.91248e-06,-4.01547e-05,-0.000141846,-0.00123543,0.204279,0.00198394,0.434362,0,0,0,0,0,9.96451e-06,1.08765e-05,1.08317e-05,0.000275423,0.0281489,0.0281594,0.00993122,0.0440767,0.0440802,0.0589817,6.72533e-11,6.72357e-11,6.16903e-10,5.67009e-07,5.67045e-07,5e-08,0,0,0,0,0,0,0,0 +24285000,0.98296,-0.0108529,-0.0141548,0.18295,0.0621482,-0.0563155,0.0583063,0.135723,-0.0963714,-3.59181,-1.24212e-05,-5.91359e-05,2.91671e-06,-4.00499e-05,-0.000141948,-0.00123447,0.204279,0.00198394,0.434362,0,0,0,0,0,9.52167e-06,1.09731e-05,1.09446e-05,0.000262537,0.0306403,0.0306522,0.0100015,0.0496137,0.0496187,0.0591287,6.73531e-11,6.73354e-11,6.16818e-10,5.67011e-07,5.6705e-07,5e-08,0,0,0,0,0,0,0,0 +24385000,0.983025,-0.00993861,-0.013067,0.182734,0.056483,-0.0499662,0.0747228,0.143498,-0.0969292,-3.58808,-1.23581e-05,-5.91482e-05,2.93621e-06,-4.59944e-05,-0.000156559,-0.00123334,0.204279,0.00198394,0.434362,0,0,0,0,0,9.21656e-06,1.10444e-05,1.10196e-05,0.000253747,0.0270636,0.0270731,0.00998166,0.0438667,0.0438705,0.0595607,6.69078e-11,6.68905e-11,6.16767e-10,5.16697e-07,5.1673e-07,5.0002e-08,0,0,0,0,0,0,0,0 +24485000,0.983066,-0.0101604,-0.0131301,0.1825,0.0507392,-0.0455621,0.0728391,0.14884,-0.101694,-3.58026,-1.23575e-05,-5.91492e-05,2.97261e-06,-4.60979e-05,-0.000156572,-0.00123346,0.204279,0.00198394,0.434362,0,0,0,0,0,8.84876e-06,1.11811e-05,1.11576e-05,0.000242813,0.0293654,0.0293758,0.010053,0.0493027,0.049308,0.0597112,6.70076e-11,6.69902e-11,6.16648e-10,5.16699e-07,5.16735e-07,5.0001e-08,0,0,0,0,0,0,0,0 +24585000,0.983026,-0.0108637,-0.0132322,0.182667,0.0484158,-0.040246,0.0681856,0.153948,-0.0986999,-3.57462,-1.23003e-05,-5.91815e-05,2.97084e-06,-5.40868e-05,-0.000172362,-0.0012323,0.204279,0.00198394,0.434362,0,0,0,0,0,8.5245e-06,1.12643e-05,1.12444e-05,0.000232812,0.0259738,0.0259822,0.00994882,0.0436483,0.0436523,0.0592619,6.65945e-11,6.65774e-11,6.16509e-10,4.74508e-07,4.7454e-07,5.0001e-08,0,0,0,0,0,0,0,0 +24685000,0.983011,-0.01138,-0.0130617,0.182729,0.0450222,-0.0389583,0.0673197,0.158669,-0.102595,-3.56786,-1.23003e-05,-5.91814e-05,2.96816e-06,-5.40765e-05,-0.000172366,-0.00123227,0.204279,0.00198394,0.434362,0,0,0,0,0,8.21802e-06,1.14081e-05,1.13922e-05,0.000223656,0.0281064,0.0281156,0.0100204,0.0489808,0.0489863,0.0594117,6.66942e-11,6.6677e-11,6.16349e-10,4.74511e-07,4.74545e-07,5.0001e-08,0,0,0,0,0,0,0,0 +24785000,0.983037,-0.0115302,-0.0124229,0.182623,0.0424337,-0.0359464,0.0595996,0.162004,-0.0990311,-3.56543,-1.22546e-05,-5.91905e-05,2.97375e-06,-5.69365e-05,-0.00018584,-0.00123134,0.204279,0.00198394,0.434362,0,0,0,0,0,7.92588e-06,1.14913e-05,1.14802e-05,0.000215251,0.0248918,0.024899,0.00991681,0.0434201,0.0434242,0.0589628,6.63233e-11,6.63064e-11,6.16166e-10,4.39348e-07,4.39379e-07,5e-08,0,0,0,0,0,0,0,0 +24885000,0.983041,-0.0113743,-0.0119124,0.182647,0.0394775,-0.0388044,0.0492711,0.166122,-0.102775,-3.56231,-1.22538e-05,-5.91902e-05,2.98667e-06,-5.68645e-05,-0.000185933,-0.00123051,0.204279,0.00198394,0.434362,0,0,0,0,0,7.6695e-06,1.16423e-05,1.16333e-05,0.000207486,0.0268721,0.0268799,0.00998839,0.0486464,0.0486519,0.059112,6.6423e-11,6.6406e-11,6.1596e-10,4.3935e-07,4.39384e-07,5e-08,0,0,0,0,0,0,0,0 +24985000,0.983024,-0.0111809,-0.0116767,0.182766,0.0320931,-0.0334784,0.0417936,0.167287,-0.0945839,-3.55985,-1.21937e-05,-5.92162e-05,2.98735e-06,-6.22381e-05,-0.000204639,-0.00123003,0.204279,0.00198394,0.434362,0,0,0,0,0,7.4979e-06,1.17324e-05,1.17236e-05,0.000202163,0.023832,0.0238382,0.00997098,0.0431809,0.043185,0.0595479,6.61011e-11,6.60843e-11,6.15815e-10,4.10217e-07,4.10248e-07,5.0002e-08,0,0,0,0,0,0,0,0 +25085000,0.983022,-0.0115204,-0.0117322,0.182747,0.0279278,-0.0323749,0.0386714,0.170215,-0.0979214,-3.56169,-1.21924e-05,-5.92145e-05,2.98086e-06,-6.19883e-05,-0.000204853,-0.00122796,0.204279,0.00198394,0.434362,0,0,0,0,0,7.26412e-06,1.18947e-05,1.18872e-05,0.000195388,0.0256638,0.0256705,0.0100438,0.0482987,0.048304,0.0597012,6.62007e-11,6.61838e-11,6.15567e-10,4.1022e-07,4.10253e-07,5.0002e-08,0,0,0,0,0,0,0,0 +25185000,0.982975,-0.0117695,-0.0115782,0.182997,0.0245671,-0.0262608,0.0387007,0.172059,-0.0909426,-3.55944,-1.21651e-05,-5.92482e-05,2.96112e-06,-6.88093e-05,-0.000216102,-0.00122672,0.204279,0.00198394,0.434362,0,0,0,0,0,7.06191e-06,1.19887e-05,1.19829e-05,0.000189082,0.0227925,0.0227978,0.00994115,0.0429299,0.0429339,0.0592509,6.59301e-11,6.59134e-11,6.15293e-10,3.86196e-07,3.86227e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25285000,0.982929,-0.0119194,-0.0109339,0.183275,0.0185127,-0.0271415,0.0334811,0.174178,-0.0935905,-3.55689,-1.21656e-05,-5.92469e-05,2.91926e-06,-6.87072e-05,-0.000216121,-0.00122637,0.204279,0.00198394,0.434362,0,0,0,0,0,6.87001e-06,1.21564e-05,1.21541e-05,0.000183219,0.0244938,0.0244997,0.010014,0.047937,0.0479421,0.059404,6.60297e-11,6.60129e-11,6.14994e-10,3.86199e-07,3.86232e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25385000,0.982931,-0.0120779,-0.0107447,0.183265,0.0115587,-0.0200357,0.03177,0.171366,-0.0835225,-3.55779,-1.21136e-05,-5.92663e-05,2.92161e-06,-7.15143e-05,-0.000232353,-0.00122425,0.204279,0.00198394,0.434362,0,0,0,0,0,6.68349e-06,1.22541e-05,1.22529e-05,0.000177756,0.0217923,0.021797,0.00991274,0.0426666,0.0426706,0.0589597,6.58114e-11,6.57948e-11,6.14666e-10,3.66491e-07,3.66523e-07,5e-08,0,0,0,0,0,0,0,0 +25485000,0.982923,-0.0121235,-0.0104433,0.183322,0.00527909,-0.018835,0.0308575,0.172145,-0.0854621,-3.55648,-1.21134e-05,-5.92654e-05,2.90486e-06,-7.14202e-05,-0.000232415,-0.00122361,0.204279,0.00198394,0.434362,0,0,0,0,0,6.50951e-06,1.24317e-05,1.24316e-05,0.000172653,0.0233715,0.0233767,0.0099857,0.047562,0.0475668,0.0591125,6.5911e-11,6.58943e-11,6.14313e-10,3.66495e-07,3.66527e-07,5e-08,0,0,0,0,0,0,0,0 +25585000,0.98291,-0.0123591,-0.0102623,0.183385,0.00156795,-0.0164647,0.0326254,0.169803,-0.079268,-3.55487,-1.21059e-05,-5.92795e-05,2.88308e-06,-7.35018e-05,-0.000238955,-0.00122293,0.204279,0.00198394,0.434362,0,0,0,0,0,6.34611e-06,1.25328e-05,1.25338e-05,0.000167875,0.0208331,0.0208372,0.00988551,0.0423915,0.0423952,0.0586741,6.57436e-11,6.57271e-11,6.13929e-10,3.50412e-07,3.50443e-07,5e-08,0,0,0,0,0,0,0,0 +25685000,0.982923,-0.0118402,-0.00995921,0.183365,0.000109554,-0.015805,0.0217363,0.169884,-0.0809147,-3.55498,-1.2105e-05,-5.92789e-05,2.89082e-06,-7.33951e-05,-0.000239068,-0.00122192,0.204279,0.00198394,0.434362,0,0,0,0,0,6.23597e-06,1.2719e-05,1.27187e-05,0.000164635,0.0223102,0.0223144,0.010043,0.0471748,0.0471792,0.0597049,6.58433e-11,6.58267e-11,6.13647e-10,3.50417e-07,3.50449e-07,5.0002e-08,0,0,0,0,0,0,0,0 +25785000,0.982942,-0.0116474,-0.00926268,0.183312,-0.00966199,-0.00901111,0.0204885,0.164171,-0.0732803,-3.5579,-1.20812e-05,-5.92884e-05,2.89131e-06,-7.35172e-05,-0.000248105,-0.00121984,0.204279,0.00198394,0.434362,0,0,0,0,0,6.08712e-06,1.28208e-05,1.28218e-05,0.000160373,0.01993,0.0199335,0.00994218,0.0421053,0.0421087,0.0592592,6.5725e-11,6.57084e-11,6.13211e-10,3.37377e-07,3.37408e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25885000,0.982912,-0.011712,-0.00930589,0.183467,-0.016694,-0.00681346,0.0228856,0.162787,-0.0740465,-3.5567,-1.20822e-05,-5.92866e-05,2.82612e-06,-7.34087e-05,-0.00024813,-0.00121948,0.204279,0.00198394,0.434362,0,0,0,0,0,5.94893e-06,1.30159e-05,1.30166e-05,0.000156364,0.0213042,0.0213081,0.0100161,0.046777,0.0467811,0.0594163,6.58245e-11,6.58079e-11,6.12747e-10,3.3738e-07,3.37413e-07,5.0001e-08,0,0,0,0,0,0,0,0 +25985000,0.982906,-0.0118448,-0.00947622,0.183483,-0.0246309,-0.00205005,0.0160916,0.152625,-0.0669289,-3.55701,-1.20609e-05,-5.92726e-05,2.81203e-06,-6.9035e-05,-0.000256219,-0.00121819,0.204279,0.00198394,0.434362,0,0,0,0,0,5.81939e-06,1.31224e-05,1.31224e-05,0.000152589,0.0190781,0.0190812,0.00991618,0.0418092,0.0418123,0.0589764,6.57509e-11,6.57343e-11,6.12249e-10,3.26869e-07,3.26901e-07,5.0001e-08,0,0,0,0,0,0,0,0 +26085000,0.982939,-0.0115498,-0.00942874,0.183329,-0.0300375,-0.00143222,0.0144367,0.149868,-0.0670929,-3.55745,-1.20597e-05,-5.92729e-05,2.84774e-06,-6.89882e-05,-0.000256305,-0.00121749,0.204279,0.00198394,0.434362,0,0,0,0,0,5.69519e-06,1.33251e-05,1.33238e-05,0.000149038,0.0203698,0.0203732,0.00998904,0.0463709,0.0463746,0.059128,6.58504e-11,6.58338e-11,6.11719e-10,3.26873e-07,3.26905e-07,5e-08,0,0,0,0,0,0,0,0 +26185000,0.982935,-0.0115252,-0.00995081,0.183322,-0.0357502,0.00227117,0.00997051,0.141145,-0.0628799,-3.56084,-1.20571e-05,-5.92712e-05,2.8724e-06,-6.70587e-05,-0.000259355,-0.00121564,0.204279,0.00198394,0.434362,0,0,0,0,0,5.58442e-06,1.34333e-05,1.34296e-05,0.000145678,0.0182839,0.0182867,0.00989012,0.0415048,0.0415076,0.0586937,6.58173e-11,6.58007e-11,6.11156e-10,3.18469e-07,3.185e-07,5e-08,0,0,0,0,0,0,0,0 +26285000,0.982934,-0.0115947,-0.0102618,0.183305,-0.0375392,0.00340916,0.00400276,0.137465,-0.0626303,-3.56199,-1.20571e-05,-5.927e-05,2.83889e-06,-6.69576e-05,-0.000259429,-0.00121498,0.204279,0.00198394,0.434362,0,0,0,0,0,5.50401e-06,1.36447e-05,1.36399e-05,0.000143456,0.0195042,0.0195069,0.0100485,0.0459588,0.0459621,0.0597293,6.59169e-11,6.59003e-11,6.10739e-10,3.18474e-07,3.18506e-07,5.0002e-08,0,0,0,0,0,0,0,0 +26385000,0.982966,-0.0110832,-0.0102364,0.183165,-0.0430253,0.00820928,0.00708121,0.125155,-0.0572855,-3.56205,-1.20454e-05,-5.92535e-05,2.81745e-06,-6.23232e-05,-0.000263988,-0.00121481,0.204279,0.00198394,0.434362,0,0,0,0,0,5.39129e-06,1.37508e-05,1.37438e-05,0.000140435,0.0175479,0.0175499,0.00994853,0.041194,0.0411964,0.0592876,6.59188e-11,6.59022e-11,6.10116e-10,3.11815e-07,3.11844e-07,5.0002e-08,0,0,0,0,0,0,0,0 +26485000,0.982976,-0.0108398,-0.0101245,0.183135,-0.0465112,0.0110403,0.0161678,0.120681,-0.0563445,-3.56097,-1.20459e-05,-5.92529e-05,2.79347e-06,-6.23027e-05,-0.000263991,-0.00121479,0.204279,0.00198394,0.434362,0,0,0,0,0,5.2901e-06,1.39684e-05,1.39608e-05,0.000137574,0.0186942,0.0186961,0.0100222,0.045543,0.0455458,0.0594435,6.60183e-11,6.60016e-11,6.09461e-10,3.11819e-07,3.11848e-07,5.0001e-08,0,0,0,0,0,0,0,0 +26585000,0.982964,-0.0103444,-0.0103951,0.183213,-0.0471429,0.0164247,0.0165265,0.112008,-0.0518987,-3.56128,-1.20374e-05,-5.92463e-05,2.76087e-06,-6.07762e-05,-0.00026635,-0.00121317,0.204279,0.00198394,0.434362,0,0,0,0,0,5.19888e-06,1.40741e-05,1.40637e-05,0.00013486,0.0168651,0.0168662,0.00992294,0.0408785,0.0408807,0.0590073,6.60487e-11,6.6032e-11,6.08768e-10,3.06583e-07,3.0661e-07,5.0001e-08,0,0,0,0,0,0,0,0 +26685000,0.982958,-0.0102257,-0.0101026,0.183267,-0.0492305,0.0210182,0.0156607,0.107175,-0.0500258,-3.55981,-1.20384e-05,-5.92449e-05,2.7004e-06,-6.07301e-05,-0.000266359,-0.0012131,0.204279,0.00198394,0.434362,0,0,0,0,0,5.1088e-06,1.42985e-05,1.42885e-05,0.000132295,0.0179618,0.0179626,0.00999637,0.0451261,0.0451286,0.0591629,6.61481e-11,6.61314e-11,6.08042e-10,3.06587e-07,3.06614e-07,5e-08,0,0,0,0,0,0,0,0 +26785000,0.98298,-0.0100583,-0.00959147,0.183185,-0.0546366,0.0225181,0.0143044,0.0960066,-0.047368,-3.56255,-1.20267e-05,-5.92289e-05,2.67678e-06,-5.70449e-05,-0.000267869,-0.00121116,0.204279,0.00198394,0.434362,0,0,0,0,0,5.02047e-06,1.43988e-05,1.43895e-05,0.000129866,0.0162497,0.0162502,0.00989793,0.0405608,0.0405627,0.058732,6.62006e-11,6.6184e-11,6.07278e-10,3.02522e-07,3.02546e-07,5e-08,0,0,0,0,0,0,0,0 +26885000,0.98301,-0.00945814,-0.0096789,0.183052,-0.0605689,0.0249336,0.00992319,0.0902101,-0.045,-3.56188,-1.20257e-05,-5.92296e-05,2.72168e-06,-5.70465e-05,-0.000267893,-0.00121095,0.204279,0.00198394,0.434362,0,0,0,0,0,4.94025e-06,1.46317e-05,1.46204e-05,0.00012756,0.0173014,0.0173019,0.0099712,0.0447116,0.0447136,0.0588873,6.62999e-11,6.62833e-11,6.06478e-10,3.02526e-07,3.02549e-07,5e-08,0,0,0,0,0,0,0,0 +26985000,0.983005,-0.00897064,-0.0101642,0.183077,-0.0664564,0.0289188,0.00795369,0.0788624,-0.041153,-3.56638,-1.20065e-05,-5.92137e-05,2.69368e-06,-5.41856e-05,-0.000270162,-0.00120854,0.204279,0.00198394,0.434362,0,0,0,0,0,4.89007e-06,1.47303e-05,1.47161e-05,0.000126094,0.015697,0.0156972,0.00995662,0.0402436,0.0402451,0.0593287,6.63677e-11,6.63512e-11,6.05876e-10,2.99412e-07,2.99432e-07,5.0002e-08,0,0,0,0,0,0,0,0 +27085000,0.983006,-0.00880188,-0.0104949,0.183062,-0.0688343,0.0358369,0.0117786,0.072024,-0.0378974,-3.56979,-1.20053e-05,-5.92121e-05,2.67938e-06,-5.40001e-05,-0.000270364,-0.00120693,0.204279,0.00198394,0.434362,0,0,0,0,0,4.8176e-06,1.49707e-05,1.49549e-05,0.00012399,0.0167028,0.0167025,0.0100307,0.0443025,0.0443041,0.0594883,6.6467e-11,6.64505e-11,6.0501e-10,2.99416e-07,2.99435e-07,5.0001e-08,0,0,0,0,0,0,0,0 +27185000,0.983014,-0.00886302,-0.0104,0.183023,-0.073825,0.0392384,0.0130277,0.0625141,-0.0339946,-3.57229,-1.19839e-05,-5.91997e-05,2.66708e-06,-5.23828e-05,-0.000271827,-0.00120545,0.204279,0.00198394,0.434362,0,0,0,0,0,4.7478e-06,1.50614e-05,1.50458e-05,0.000121991,0.0151961,0.0151956,0.00993183,0.0399291,0.0399302,0.0590549,6.65422e-11,6.6526e-11,6.04104e-10,2.9706e-07,2.97074e-07,5.0001e-08,0,0,0,0,0,0,0,0 +27285000,0.983022,-0.00903178,-0.0113195,0.182918,-0.0805622,0.0449477,0.115868,0.0548336,-0.0297999,-3.57045,-1.19829e-05,-5.91989e-05,2.66661e-06,-5.22713e-05,-0.000271955,-0.00120444,0.204279,0.00198394,0.434362,0,0,0,0,0,4.67975e-06,1.53102e-05,1.52918e-05,0.000120093,0.0160954,0.0160947,0.0100059,0.0439002,0.0439014,0.0592142,6.66415e-11,6.66252e-11,6.03161e-10,2.97064e-07,2.97077e-07,5.0001e-08,0,0,0,0,0,0,0,0 +27385000,0.982983,-0.0103861,-0.0137866,0.182884,-0.0840409,0.0501301,0.431741,0.0468616,-0.0244058,-3.55223,-1.19538e-05,-5.91732e-05,2.66845e-06,-5.09567e-05,-0.000274021,-0.00119947,0.204279,0.00198394,0.434362,0,0,0,0,0,4.61897e-06,1.5406e-05,1.53817e-05,0.000118275,0.0144659,0.0144651,0.00990694,0.0396134,0.0396142,0.0587804,6.67183e-11,6.67024e-11,6.02174e-10,2.95289e-07,2.95297e-07,5e-08,0,0,0,0,0,0,0,0 +27485000,0.982929,-0.01183,-0.0157551,0.182928,-0.0870663,0.0556456,0.750816,0.0382606,-0.0190985,-3.49461,-1.19539e-05,-5.91712e-05,2.60488e-06,-5.08269e-05,-0.000274162,-0.00119852,0.204279,0.00198394,0.434362,0,0,0,0,0,4.56066e-06,1.56652e-05,1.56364e-05,0.00011655,0.015168,0.0151668,0.0099809,0.0434776,0.0434785,0.0589392,6.68176e-11,6.68016e-11,6.01153e-10,2.95294e-07,2.95299e-07,5e-08,0,0,0,0,0,0,0,0 +27585000,0.982953,-0.0118253,-0.0147595,0.182883,-0.0803061,0.0568046,0.855468,0.0311684,-0.0166449,-3.4338,-1.19114e-05,-5.91439e-05,2.60175e-06,-4.8729e-05,-0.000275938,-0.00118329,0.204279,0.00198394,0.434362,0,0,0,0,0,4.52408e-06,1.57674e-05,1.57427e-05,0.000115529,0.0138082,0.0138065,0.00996655,0.0392818,0.0392824,0.0593844,6.68985e-11,6.68828e-11,6.00382e-10,2.93889e-07,2.9389e-07,5.0002e-08,0,0,0,0,0,0,0,0 +27685000,0.983022,-0.0106774,-0.0118656,0.182794,-0.0768822,0.0524406,0.762495,0.023346,-0.011119,-3.3557,-1.19098e-05,-5.91432e-05,2.61834e-06,-4.85947e-05,-0.000276104,-0.001182,0.204279,0.00198394,0.434362,0,0,0,0,0,4.4676e-06,1.60173e-05,1.60003e-05,0.000113973,0.0147644,0.0147625,0.0100405,0.0430555,0.043056,0.0595475,6.69978e-11,6.6982e-11,5.9929e-10,2.93894e-07,2.93892e-07,5.0002e-08,0,0,0,0,0,0,0,0 +27785000,0.983057,-0.00933575,-0.0102765,0.182775,-0.0750524,0.0479459,0.749894,0.0184369,-0.0102124,-3.28191,-1.18792e-05,-5.91283e-05,2.64737e-06,-4.84146e-05,-0.000275596,-0.00118311,0.204279,0.00198394,0.434362,0,0,0,0,0,4.41779e-06,1.61083e-05,1.60932e-05,0.00011248,0.0135703,0.0135687,0.00994032,0.0389574,0.0389578,0.0591105,6.70663e-11,6.70511e-11,5.98152e-10,2.92857e-07,2.92849e-07,5.0001e-08,0,0,0,0,0,0,0,0 +27885000,0.983055,-0.00895002,-0.0103524,0.182802,-0.0816646,0.0535451,0.791549,0.0106121,-0.00518753,-3.20727,-1.18781e-05,-5.91275e-05,2.64836e-06,-4.82995e-05,-0.000275739,-0.00118204,0.204279,0.00198394,0.434362,0,0,0,0,0,4.37156e-06,1.63741e-05,1.63577e-05,0.000111056,0.0144224,0.0144206,0.0100145,0.0426608,0.042661,0.0592729,6.71654e-11,6.71503e-11,5.96979e-10,2.92862e-07,2.92851e-07,5.0001e-08,0,0,0,0,0,0,0,0 +27985000,0.983054,-0.00939698,-0.010728,0.182759,-0.0815672,0.0540484,0.778886,0.00639563,-0.00473013,-3.13688,-1.1828e-05,-5.90976e-05,2.65328e-06,-4.72525e-05,-0.000276508,-0.00117731,0.204279,0.00198394,0.434362,0,0,0,0,0,4.32509e-06,1.6458e-05,1.64414e-05,0.000109697,0.013298,0.0132961,0.00991511,0.0386505,0.0386506,0.0588406,6.72149e-11,6.72004e-11,5.95759e-10,2.92106e-07,2.92089e-07,5e-08,0,0,0,0,0,0,0,0 +28085000,0.983076,-0.00973108,-0.0107316,0.182626,-0.0852029,0.0538909,0.785106,-0.00190444,0.000701941,-3.05916,-1.18266e-05,-5.90991e-05,2.72952e-06,-4.72613e-05,-0.000276519,-0.00117718,0.204279,0.00198394,0.434362,0,0,0,0,0,4.28088e-06,1.67293e-05,1.67131e-05,0.000108407,0.0141694,0.0141676,0.00998867,0.0422892,0.0422891,0.0590023,6.73139e-11,6.72995e-11,5.94504e-10,2.92111e-07,2.92091e-07,5e-08,0,0,0,0,0,0,0,0 +28185000,0.98308,-0.00922106,-0.0110264,0.182612,-0.0846522,0.0491438,0.790947,-0.00758273,0.000119893,-2.98494,-1.17713e-05,-5.90735e-05,2.73024e-06,-4.60531e-05,-0.000277538,-0.00117463,0.204279,0.00198394,0.434362,0,0,0,0,0,4.23946e-06,1.67968e-05,1.67787e-05,0.000107174,0.013093,0.0130915,0.00988966,0.0383617,0.0383616,0.0585745,6.7334e-11,6.73204e-11,5.932e-10,2.91555e-07,2.91529e-07,5e-08,0,0,0,0,0,0,0,0 +28285000,0.9831,-0.00871027,-0.0113159,0.18251,-0.0898403,0.0515222,0.791506,-0.0162648,0.00519982,-2.9083,-1.17693e-05,-5.90739e-05,2.78743e-06,-4.59714e-05,-0.000277657,-0.00117371,0.204279,0.00198394,0.434362,0,0,0,0,0,4.21694e-06,1.70749e-05,1.70547e-05,0.000106523,0.0139661,0.0139646,0.0100476,0.0419437,0.0419433,0.0596107,6.74333e-11,6.74197e-11,5.92223e-10,2.91561e-07,2.91532e-07,5.0002e-08,0,0,0,0,0,0,0,0 +28385000,0.98309,-0.00874073,-0.0119405,0.182527,-0.0897976,0.0534365,0.792515,-0.0201013,0.0074155,-2.83551,-1.17099e-05,-5.90248e-05,2.85695e-06,-4.43245e-05,-0.000279499,-0.001171,0.204279,0.00198394,0.434362,0,0,0,0,0,4.18354e-06,1.71242e-05,1.71021e-05,0.000105387,0.0129474,0.0129459,0.00994761,0.0380936,0.0380932,0.0591748,6.74155e-11,6.74028e-11,5.90845e-10,2.91133e-07,2.91097e-07,5.0001e-08,0,0,0,0,0,0,0,0 +28485000,0.983087,-0.00906534,-0.0124393,0.18249,-0.0912356,0.0556302,0.793631,-0.0291234,0.0128452,-2.76087,-1.17083e-05,-5.90234e-05,2.85425e-06,-4.41515e-05,-0.000279722,-0.00116936,0.204279,0.00198394,0.434362,0,0,0,0,0,4.14674e-06,1.74077e-05,1.73845e-05,0.000104313,0.0138213,0.0138196,0.0100216,0.0416275,0.0416269,0.0593396,6.75146e-11,6.75018e-11,5.89432e-10,2.91138e-07,2.91099e-07,5.0001e-08,0,0,0,0,0,0,0,0 +28585000,0.983122,-0.00914847,-0.0124121,0.182303,-0.0845042,0.0504101,0.790973,-0.0317059,0.00999707,-2.68532,-1.16156e-05,-5.89825e-05,2.90745e-06,-4.2701e-05,-0.000281974,-0.00116762,0.204279,0.00198394,0.434362,0,0,0,0,0,4.10792e-06,1.74333e-05,1.74103e-05,0.000103292,0.0128521,0.0128506,0.00992172,0.0378487,0.0378482,0.0589081,6.74497e-11,6.7438e-11,5.8797e-10,2.90774e-07,2.90728e-07,5.0001e-08,0,0,0,0,0,0,0,0 +28685000,0.983118,-0.0089468,-0.0118004,0.182371,-0.0843465,0.0501905,0.791808,-0.0401388,0.0150544,-2.61027,-1.16143e-05,-5.89811e-05,2.89452e-06,-4.25425e-05,-0.000282181,-0.00116612,0.204279,0.00198394,0.434362,0,0,0,0,0,4.07759e-06,1.77186e-05,1.7697e-05,0.000102317,0.0137316,0.01373,0.00999428,0.041343,0.0413422,0.0590665,6.75487e-11,6.7537e-11,5.8647e-10,2.90779e-07,2.90729e-07,5e-08,0,0,0,0,0,0,0,0 +28785000,0.983139,-0.00831807,-0.0116114,0.182299,-0.079895,0.0494444,0.790399,-0.04201,0.016466,-2.53806,-1.15447e-05,-5.89157e-05,2.97313e-06,-4.00712e-05,-0.000284627,-0.00116255,0.204279,0.00198394,0.434362,0,0,0,0,0,4.04706e-06,1.77188e-05,1.76969e-05,0.000101387,0.0127982,0.0127968,0.00989509,0.0376287,0.0376281,0.0586394,6.74276e-11,6.74171e-11,5.84923e-10,2.90423e-07,2.90366e-07,5e-08,0,0,0,0,0,0,0,0 +28885000,0.983167,-0.00814114,-0.0113482,0.182175,-0.083926,0.0501727,0.789699,-0.050176,0.0214385,-2.46194,-1.15427e-05,-5.8916e-05,3.02328e-06,-3.99762e-05,-0.000284764,-0.00116152,0.204279,0.00198394,0.434362,0,0,0,0,0,4.03093e-06,1.80096e-05,1.7988e-05,0.000100972,0.0136877,0.0136863,0.0100532,0.0410915,0.0410906,0.0596796,6.75268e-11,6.75163e-11,5.83764e-10,2.90429e-07,2.9037e-07,5.0002e-08,0,0,0,0,0,0,0,0 +28985000,0.983155,-0.00792188,-0.0115739,0.182235,-0.0794639,0.0462508,0.78883,-0.0490932,0.0203889,-2.39073,-1.14436e-05,-5.88442e-05,3.0527e-06,-3.75354e-05,-0.000288188,-0.00115773,0.204279,0.00198394,0.434362,0,0,0,0,0,4.00617e-06,1.7983e-05,1.79605e-05,0.000100115,0.0127843,0.0127832,0.00995269,0.0374352,0.0374344,0.059244,6.73414e-11,6.73322e-11,5.82142e-10,2.90032e-07,2.89966e-07,5.0002e-08,0,0,0,0,0,0,0,0 +29085000,0.983156,-0.00781025,-0.0116154,0.182231,-0.0824372,0.0474254,0.788533,-0.057252,0.0250449,-2.31385,-1.14426e-05,-5.88439e-05,3.0635e-06,-3.74624e-05,-0.000288287,-0.00115702,0.204279,0.00198394,0.434362,0,0,0,0,0,3.97982e-06,1.82781e-05,1.82554e-05,9.93042e-05,0.013684,0.013683,0.0100258,0.0408743,0.0408733,0.0594052,6.744e-11,6.74314e-11,5.80482e-10,2.90038e-07,2.89968e-07,5.0001e-08,0,0,0,0,0,0,0,0 +29185000,0.983184,-0.00776392,-0.0118429,0.18207,-0.0780364,0.044963,0.782766,-0.0545177,0.024313,-2.24538,-1.13384e-05,-5.87491e-05,3.15052e-06,-3.39466e-05,-0.000292124,-0.00115216,0.204279,0.00198394,0.434362,0,0,0,0,0,3.95167e-06,1.8221e-05,1.8198e-05,9.85326e-05,0.0128086,0.0128079,0.00992593,0.037269,0.0372683,0.058974,6.71824e-11,6.71759e-11,5.78775e-10,2.8956e-07,2.89484e-07,5.0001e-08,0,0,0,0,0,0,0,0 +29285000,0.983168,-0.00801099,-0.0118763,0.182144,-0.0796982,0.0498362,0.785161,-0.0623677,0.0290963,-2.16847,-1.13369e-05,-5.87494e-05,3.19167e-06,-3.3888e-05,-0.000292206,-0.00115163,0.204279,0.00198394,0.434362,0,0,0,0,0,3.93182e-06,1.85192e-05,1.84966e-05,9.77925e-05,0.0137183,0.0137174,0.00999874,0.0406921,0.0406911,0.0591342,6.7281e-11,6.72751e-11,5.77031e-10,2.89566e-07,2.89485e-07,5e-08,0,0,0,0,0,0,0,0 +29385000,0.983177,-0.00846187,-0.0113807,0.182103,-0.0750967,0.0482569,0.787374,-0.0602274,0.0301167,-2.09333,-1.12462e-05,-5.86667e-05,3.2543e-06,-3.1012e-05,-0.000295558,-0.00114979,0.204279,0.00198394,0.434362,0,0,0,0,0,3.90928e-06,1.84278e-05,1.84077e-05,9.7091e-05,0.0128545,0.0128538,0.00989946,0.0371307,0.0371299,0.0587073,6.69456e-11,6.69411e-11,5.7524e-10,2.88974e-07,2.88887e-07,5e-08,0,0,0,0,0,0,0,0 +29485000,0.983189,-0.00851289,-0.0112446,0.182045,-0.0773965,0.0480148,0.788628,-0.0678087,0.0349533,-2.01661,-1.12433e-05,-5.86687e-05,3.37194e-06,-3.09671e-05,-0.000295645,-0.00114906,0.204279,0.00198394,0.434362,0,0,0,0,0,3.88932e-06,1.87285e-05,1.87087e-05,9.64227e-05,0.0137781,0.0137775,0.00997183,0.0405444,0.0405434,0.0588664,6.70445e-11,6.70399e-11,5.73413e-10,2.88979e-07,2.8889e-07,5e-08,0,0,0,0,0,0,0,0 +29585000,0.983206,-0.00842603,-0.011248,0.181958,-0.0726347,0.0454999,0.790456,-0.0648485,0.0343831,-1.93855,-1.11348e-05,-5.85844e-05,3.45292e-06,-2.80065e-05,-0.000299585,-0.00114883,0.204279,0.00198394,0.434362,0,0,0,0,0,3.8823e-06,1.86046e-05,1.85849e-05,9.62109e-05,0.0129275,0.0129271,0.0099563,0.0370199,0.0370191,0.0593102,6.66261e-11,6.66231e-11,5.72032e-10,2.88249e-07,2.88155e-07,5.0002e-08,0,0,0,0,0,0,0,0 +29685000,0.98323,-0.0084944,-0.0110389,0.181835,-0.0770057,0.0435612,0.786239,-0.0723054,0.0388729,-1.86376,-1.11316e-05,-5.85857e-05,3.55485e-06,-2.78914e-05,-0.000299766,-0.00114738,0.204279,0.00198394,0.434362,0,0,0,0,0,3.86124e-06,1.89071e-05,1.88879e-05,9.56033e-05,0.0138708,0.0138708,0.0100295,0.0404308,0.0404298,0.059473,6.67251e-11,6.67219e-11,5.70132e-10,2.88255e-07,2.88157e-07,5.0001e-08,0,0,0,0,0,0,0,0 +29785000,0.983239,-0.00835383,-0.0115624,0.181762,-0.0725361,0.0358832,0.782578,-0.0672431,0.0366122,-1.79159,-1.10203e-05,-5.84814e-05,3.67516e-06,-2.39124e-05,-0.00030386,-0.00114435,0.204279,0.00198394,0.434362,0,0,0,0,0,3.84351e-06,1.87485e-05,1.87279e-05,9.50204e-05,0.013029,0.0130293,0.00992946,0.0369366,0.0369359,0.0590419,6.62188e-11,6.62172e-11,5.68185e-10,2.87362e-07,2.8726e-07,5.0001e-08,0,0,0,0,0,0,0,0 +29885000,0.983244,-0.00785565,-0.011951,0.181733,-0.0727631,0.0354254,0.7789,-0.0744133,0.040142,-1.71957,-1.10165e-05,-5.84819e-05,3.7708e-06,-2.37254e-05,-0.000304133,-0.0011422,0.204279,0.00198394,0.434362,0,0,0,0,0,3.82752e-06,1.9054e-05,1.90314e-05,9.44667e-05,0.0139864,0.0139869,0.0100022,0.0403511,0.0403503,0.0592035,6.63176e-11,6.63162e-11,5.66202e-10,2.87368e-07,2.87262e-07,5.0001e-08,0,0,0,0,0,0,0,0 +29985000,0.983241,-0.00796699,-0.0120183,0.181738,-0.0673759,0.0307223,0.775883,-0.0696377,0.0361633,-1.64993,-1.08851e-05,-5.83928e-05,3.81135e-06,-2.02724e-05,-0.000309339,-0.0011382,0.204279,0.00198394,0.434362,0,0,0,0,0,3.81168e-06,1.88572e-05,1.88351e-05,9.39393e-05,0.013143,0.0131436,0.00990196,0.03688,0.0368794,0.0587712,6.57209e-11,6.57217e-11,5.6417e-10,2.86301e-07,2.86191e-07,5e-08,0,0,0,0,0,0,0,0 +30085000,0.983242,-0.00812513,-0.0121592,0.181719,-0.0674516,0.0303673,0.773907,-0.0763786,0.0392446,-1.57607,-1.0886e-05,-5.83903e-05,3.71651e-06,-2.01653e-05,-0.000309477,-0.00113687,0.204279,0.00198394,0.434362,0,0,0,0,0,3.79201e-06,1.91626e-05,1.91404e-05,9.34438e-05,0.0141143,0.0141151,0.00997439,0.0403029,0.0403023,0.0589316,6.58194e-11,6.58208e-11,5.62107e-10,2.86307e-07,2.86194e-07,5e-08,0,0,0,0,0,0,0,0 +30185000,0.98322,-0.00810698,-0.0121695,0.181839,-0.0609628,0.026985,0.773833,-0.0695517,0.0381357,-1.50417,-1.08166e-05,-5.82672e-05,3.64542e-06,-1.54834e-05,-0.000312089,-0.00113429,0.204279,0.00198394,0.434362,0,0,0,0,0,3.79203e-06,1.89286e-05,1.8907e-05,9.33662e-05,0.0132639,0.0132648,0.00995903,0.0368481,0.0368477,0.0593774,6.51327e-11,6.51361e-11,5.60551e-10,2.85061e-07,2.84946e-07,5.0002e-08,0,0,0,0,0,0,0,0 +30285000,0.983208,-0.00814337,-0.0121691,0.181899,-0.0601944,0.0258988,0.774076,-0.0755584,0.0407966,-1.43185,-1.08144e-05,-5.82666e-05,3.67318e-06,-1.53188e-05,-0.000312315,-0.00113248,0.204279,0.00198394,0.434362,0,0,0,0,0,3.7802e-06,1.92338e-05,1.92123e-05,9.29092e-05,0.0142464,0.0142476,0.0100322,0.0402837,0.0402833,0.0595415,6.52313e-11,6.52352e-11,5.58418e-10,2.85068e-07,2.84949e-07,5.0002e-08,0,0,0,0,0,0,0,0 +30385000,0.983199,-0.00812356,-0.012093,0.181955,-0.052288,0.0202996,0.771679,-0.067163,0.0385514,-1.36388,-1.0717e-05,-5.81257e-05,3.83179e-06,-9.45095e-06,-0.00031618,-0.00112816,0.204279,0.00198394,0.434362,0,0,0,0,0,3.77237e-06,1.89632e-05,1.89426e-05,9.24708e-05,0.0133888,0.01339,0.00993136,0.0368389,0.0368388,0.059105,6.44559e-11,6.44618e-11,5.56237e-10,2.83645e-07,2.83524e-07,5.0001e-08,0,0,0,0,0,0,0,0 +30485000,0.983228,-0.00814605,-0.0122317,0.181789,-0.0549856,0.0192951,0.772645,-0.0724856,0.04058,-1.29211,-1.0713e-05,-5.81264e-05,3.93627e-06,-9.27041e-06,-0.000316435,-0.0011262,0.204279,0.00198394,0.434362,0,0,0,0,0,3.75641e-06,1.92681e-05,1.92472e-05,9.20637e-05,0.014384,0.0143855,0.0100044,0.0402905,0.0402905,0.0592678,6.45544e-11,6.45609e-11,5.54026e-10,2.83651e-07,2.83527e-07,5.0001e-08,0,0,0,0,0,0,0,0 +30585000,0.983244,-0.00844959,-0.0125198,0.181668,-0.0497587,0.0167418,0.772287,-0.0651675,0.0376289,-1.22038,-1.06172e-05,-5.8007e-05,4.06243e-06,-4.33654e-06,-0.000320213,-0.00112353,0.204279,0.00198394,0.434362,0,0,0,0,0,3.7431e-06,1.89631e-05,1.89425e-05,9.16738e-05,0.0135138,0.0135152,0.00990431,0.0368499,0.03685,0.0588356,6.36936e-11,6.37018e-11,5.51769e-10,2.82057e-07,2.81932e-07,5e-08,0,0,0,0,0,0,0,0 +30685000,0.983262,-0.00882907,-0.0127546,0.181536,-0.0481581,0.0142174,0.771181,-0.0701293,0.0392223,-1.14932,-1.06149e-05,-5.80064e-05,4.0929e-06,-4.15893e-06,-0.000320456,-0.00112133,0.204279,0.00198394,0.434362,0,0,0,0,0,3.72767e-06,1.9267e-05,1.92464e-05,9.13076e-05,0.0145242,0.0145259,0.0099769,0.0403202,0.0403205,0.0589973,6.37922e-11,6.38008e-11,5.49482e-10,2.82064e-07,2.81936e-07,5e-08,0,0,0,0,0,0,0,0 +30785000,0.98329,-0.00853664,-0.0124744,0.181417,-0.0404798,0.00914845,0.76974,-0.0627323,0.039045,-1.07937,-1.06048e-05,-5.78859e-05,4.10596e-06,7.64025e-07,-0.000320709,-0.00111802,0.204279,0.00198394,0.434362,0,0,0,0,0,3.71223e-06,1.89268e-05,1.89072e-05,9.09619e-05,0.0136399,0.0136416,0.00987737,0.0368786,0.0368789,0.0585694,6.28503e-11,6.28606e-11,5.47151e-10,2.8031e-07,2.8018e-07,5e-08,0,0,0,0,0,0,0,0 +30885000,0.983282,-0.00790745,-0.0123355,0.181498,-0.0402755,0.00477637,0.767396,-0.0667007,0.0397951,-1.00705,-1.06042e-05,-5.78846e-05,4.08081e-06,8.90694e-07,-0.000320873,-0.00111642,0.204279,0.00198394,0.434362,0,0,0,0,0,3.71631e-06,1.92283e-05,1.9208e-05,9.10083e-05,0.0146645,0.0146664,0.0100343,0.0403701,0.0403706,0.059605,6.29492e-11,6.29599e-11,5.45408e-10,2.80317e-07,2.80186e-07,5.0002e-08,0,0,0,0,0,0,0,0 +30985000,0.983283,-0.00806774,-0.0122902,0.181491,-0.0327631,0.000181983,0.768864,-0.0565784,0.0341541,-0.93795,-1.05032e-05,-5.77607e-05,4.09576e-06,5.97806e-06,-0.000325,-0.00111317,0.204279,0.00198394,0.434362,0,0,0,0,0,3.70604e-06,1.88565e-05,1.88372e-05,9.06906e-05,0.0137593,0.0137611,0.00993361,0.0369225,0.036923,0.0591686,6.19319e-11,6.19439e-11,5.43013e-10,2.78416e-07,2.78285e-07,5.0001e-08,0,0,0,0,0,0,0,0 +31085000,0.983245,-0.00821644,-0.0123964,0.181682,-0.031191,-0.00291402,0.767852,-0.0597322,0.0339521,-0.863881,-1.05034e-05,-5.77595e-05,4.05764e-06,6.05154e-06,-0.000325089,-0.00111219,0.204279,0.00198394,0.434362,0,0,0,0,0,3.70193e-06,1.91559e-05,1.91366e-05,9.03842e-05,0.0147932,0.0147952,0.0100067,0.0404359,0.0404368,0.0593326,6.20305e-11,6.20429e-11,5.40589e-10,2.78423e-07,2.7829e-07,5.0001e-08,0,0,0,0,0,0,0,0 +31185000,0.983259,-0.00835003,-0.0125464,0.181591,-0.0265487,-0.00613051,0.769344,-0.0511618,0.0305004,-0.794042,-1.04606e-05,-5.76533e-05,4.22203e-06,1.05695e-05,-0.00032668,-0.00110956,0.204279,0.00198394,0.434362,0,0,0,0,0,3.69381e-06,1.87552e-05,1.87364e-05,9.00976e-05,0.0138703,0.0138722,0.00990683,0.0369785,0.0369792,0.0589006,6.09455e-11,6.09591e-11,5.38125e-10,2.76394e-07,2.76262e-07,5.0001e-08,0,0,0,0,0,0,0,0 +31285000,0.983277,-0.00861763,-0.0126236,0.181475,-0.0236362,-0.00967535,0.773236,-0.0536287,0.0297547,-0.72242,-1.04573e-05,-5.76542e-05,4.31569e-06,1.07257e-05,-0.000326891,-0.00110759,0.204279,0.00198394,0.434362,0,0,0,0,0,3.68373e-06,1.90516e-05,1.90331e-05,8.98285e-05,0.0149051,0.0149072,0.00997874,0.0405141,0.0405152,0.0590581,6.10441e-11,6.10581e-11,5.3563e-10,2.76402e-07,2.76268e-07,5e-08,0,0,0,0,0,0,0,0 +31385000,0.983289,-0.00839327,-0.012434,0.181432,-0.0175885,-0.0152143,0.772563,-0.0448134,0.025855,-0.649569,-1.04285e-05,-5.75644e-05,4.25707e-06,1.43233e-05,-0.000328047,-0.00110505,0.204279,0.00198394,0.434362,0,0,0,0,0,3.67229e-06,1.86245e-05,1.86067e-05,8.95769e-05,0.0139675,0.0139694,0.00987948,0.0370433,0.0370443,0.0586304,5.99007e-11,5.99156e-11,5.33098e-10,2.74271e-07,2.74138e-07,5e-08,0,0,0,0,0,0,0,0 +31485000,0.983273,-0.008143,-0.0127421,0.18151,-0.0176058,-0.0197688,0.769401,-0.0466232,0.0240665,-0.574423,-1.04284e-05,-5.75639e-05,4.24587e-06,1.43713e-05,-0.000328106,-0.00110438,0.204279,0.00198394,0.434362,0,0,0,0,0,3.67958e-06,1.89183e-05,1.88991e-05,8.97011e-05,0.0150208,0.0150228,0.0100368,0.0406016,0.0406029,0.0596691,5.99996e-11,6.00148e-11,5.31207e-10,2.74279e-07,2.74145e-07,5.0002e-08,0,0,0,0,0,0,0,0 +31585000,0.983297,-0.00795374,-0.0132189,0.181353,-0.01307,-0.0204022,0.773012,-0.0356807,0.0216508,-0.503008,-1.0423e-05,-5.74321e-05,4.35597e-06,1.99357e-05,-0.000328229,-0.00110162,0.204279,0.00198394,0.434362,0,0,0,0,0,3.66959e-06,1.8469e-05,1.84489e-05,8.94725e-05,0.0140571,0.0140589,0.00993648,0.0371149,0.0371159,0.059233,5.88048e-11,5.88206e-11,5.28618e-10,2.7206e-07,2.71929e-07,5.0002e-08,0,0,0,0,0,0,0,0 +31685000,0.983322,-0.00795289,-0.0136905,0.181185,-0.015037,-0.0227805,0.769333,-0.0371057,0.0194198,-0.433518,-1.04188e-05,-5.74334e-05,4.48411e-06,2.01364e-05,-0.000328494,-0.00109885,0.204279,0.00198394,0.434362,0,0,0,0,0,3.66039e-06,1.87592e-05,1.87377e-05,8.92557e-05,0.0151144,0.0151162,0.0100091,0.0406946,0.040696,0.059393,5.89034e-11,5.89194e-11,5.26001e-10,2.72068e-07,2.71935e-07,5.0001e-08,0,0,0,0,0,0,0,0 +31785000,0.983334,-0.00812462,-0.0143582,0.181056,-0.00598659,-0.0242308,0.769176,-0.0256238,0.019853,-0.36209,-1.0476e-05,-5.72765e-05,4.59558e-06,2.67672e-05,-0.000326023,-0.00109627,0.204279,0.00198394,0.434362,0,0,0,0,0,3.65226e-06,1.82907e-05,1.82683e-05,8.90496e-05,0.0141371,0.0141387,0.00990935,0.0371903,0.0371915,0.0589613,5.76675e-11,5.76839e-11,5.2335e-10,2.69789e-07,2.69658e-07,5.0001e-08,0,0,0,0,0,0,0,0 +31885000,0.983344,-0.00789873,-0.0141567,0.18103,-0.00222832,-0.0278092,0.767894,-0.0260112,0.0171904,-0.292842,-1.04732e-05,-5.72769e-05,4.66987e-06,2.69547e-05,-0.000326255,-0.00109355,0.204279,0.00198394,0.434362,0,0,0,0,0,3.64684e-06,1.8575e-05,1.85529e-05,8.88548e-05,0.0151954,0.0151971,0.00998161,0.040791,0.0407926,0.0591201,5.7766e-11,5.77828e-11,5.20672e-10,2.69797e-07,2.69665e-07,5e-08,0,0,0,0,0,0,0,0 +31985000,0.983335,-0.0080833,-0.0137372,0.1811,0.00580248,-0.0269993,0.764546,-0.0142095,0.0163743,-0.226457,-1.05169e-05,-5.71455e-05,4.63527e-06,3.24786e-05,-0.000324603,-0.00108915,0.204279,0.00198394,0.434362,0,0,0,0,0,3.64201e-06,1.80874e-05,1.80675e-05,8.86705e-05,0.0142019,0.0142033,0.00988258,0.0372675,0.0372688,0.0586928,5.64979e-11,5.65147e-11,5.17963e-10,2.67477e-07,2.67349e-07,5e-08,0,0,0,0,0,0,0,0 +32085000,0.983352,-0.00846482,-0.0133637,0.181021,0.00596814,-0.0316402,0.766928,-0.0136029,0.0135068,-0.155557,-1.05158e-05,-5.7145e-05,4.64758e-06,3.26115e-05,-0.000324756,-0.00108709,0.204279,0.00198394,0.434362,0,0,0,0,0,3.63408e-06,1.83667e-05,1.83486e-05,8.84994e-05,0.0152585,0.0152601,0.00995464,0.0408875,0.0408891,0.0588505,5.65965e-11,5.66136e-11,5.15228e-10,2.67486e-07,2.67356e-07,5e-08,0,0,0,0,0,0,0,0 +32185000,0.983344,-0.00863623,-0.0136453,0.181035,0.0106012,-0.0329276,0.766962,-0.00268935,0.0146067,-0.0864206,-1.06172e-05,-5.70268e-05,4.63559e-06,3.75742e-05,-0.000320685,-0.00108347,0.204279,0.00198394,0.434362,0,0,0,0,0,3.64122e-06,1.78682e-05,1.78502e-05,8.86945e-05,0.0142447,0.0142459,0.00993935,0.037344,0.0373453,0.0592936,5.53061e-11,5.53231e-11,5.1318e-10,2.65149e-07,2.65023e-07,5.0002e-08,0,0,0,0,0,0,0,0 +32285000,0.98336,-0.00855919,-0.0138982,0.180933,0.0124168,-0.0374801,0.765474,-0.0015267,0.0110549,-0.017388,-1.06146e-05,-5.70274e-05,4.71409e-06,3.77501e-05,-0.000320889,-0.00108073,0.204279,0.00198394,0.434362,0,0,0,0,0,3.63486e-06,1.81443e-05,1.81255e-05,8.85393e-05,0.0153067,0.015308,0.0100122,0.0409808,0.0409825,0.059455,5.54047e-11,5.5422e-11,5.10396e-10,2.65158e-07,2.65031e-07,5.0001e-08,0,0,0,0,0,0,0,0 +32385000,0.983342,-0.00857346,-0.0140175,0.181023,0.0190487,-0.0365901,0.764125,0.00941382,0.0110139,0.0553429,-1.06985e-05,-5.69309e-05,4.68151e-06,4.17412e-05,-0.000317534,-0.00107808,0.204279,0.00198394,0.434362,0,0,0,0,0,3.63217e-06,1.76361e-05,1.76175e-05,8.83895e-05,0.0142804,0.0142814,0.00991272,0.0374177,0.037419,0.0590237,5.41004e-11,5.41174e-11,5.07585e-10,2.62824e-07,2.62701e-07,5.0001e-08,0,0,0,0,0,0,0,0 +32485000,0.983357,-0.0114764,-0.0119474,0.18093,0.0451941,-0.104451,-0.108486,0.013077,0.0021654,0.0638751,-1.0699e-05,-5.69293e-05,4.62809e-06,4.17645e-05,-0.000317554,-0.00107765,0.204279,0.00198394,0.434362,0,0,0,0,0,3.62347e-06,1.79013e-05,1.78943e-05,8.8256e-05,0.0169454,0.0169445,0.00978613,0.0411527,0.0411543,0.0591751,5.41993e-11,5.42159e-11,5.04751e-10,2.62826e-07,2.62702e-07,5e-08,0,0,0,0,0,0,0,0 +32585000,0.983368,-0.0114057,-0.0119113,0.180877,0.0447604,-0.10333,-0.109892,0.0246569,0.00143205,0.045944,-1.09297e-05,-5.68331e-05,4.73734e-06,4.17645e-05,-0.000317554,-0.00107765,0.204279,0.00198394,0.434362,0,0,0,0,0,3.61954e-06,1.72637e-05,1.72566e-05,8.81226e-05,0.0161885,0.0161877,0.00941854,0.0375979,0.0375992,0.0587073,5.2703e-11,5.27168e-11,5.01888e-10,2.62826e-07,2.62702e-07,5e-08,0,0,0,0,0,0,0,0 +32685000,0.983372,-0.0113941,-0.0117747,0.180862,0.0412877,-0.1101,-0.111692,0.0290053,-0.00924481,0.0311782,-1.09297e-05,-5.68324e-05,4.72359e-06,4.17645e-05,-0.000317554,-0.00107765,0.204279,0.00198394,0.434362,0,0,0,0,0,3.61474e-06,1.75275e-05,1.75203e-05,8.79996e-05,0.01789,0.0178897,0.0092221,0.0414576,0.0414592,0.0587818,5.2802e-11,5.28152e-11,4.99006e-10,2.62826e-07,2.62702e-07,5e-08,0,0,0,0,0,0,0,0 +32785000,0.983375,-0.0111893,-0.0118556,0.180851,0.0392107,-0.10575,-0.112326,0.0381662,-0.00810884,0.0162689,-1.11997e-05,-5.67363e-05,4.82837e-06,4.17645e-05,-0.000317554,-0.00107765,0.204279,0.00198394,0.434362,0,0,0,0,0,3.62467e-06,1.67858e-05,1.67779e-05,8.8236e-05,0.0170504,0.0170503,0.00896611,0.037847,0.0378483,0.0591409,5.11984e-11,5.12086e-11,4.96853e-10,2.62826e-07,2.62702e-07,5e-08,0,0,0,0,0,0,0,0 +32885000,0.983395,-0.0111645,-0.0119172,0.180742,0.0396953,-0.113634,-0.113647,0.0421634,-0.0190981,0.00260113,-1.11987e-05,-5.67371e-05,4.87525e-06,4.17645e-05,-0.000317554,-0.00107765,0.204279,0.00198394,0.434362,0,0,0,0,0,3.61863e-06,1.7042e-05,1.70337e-05,8.81268e-05,0.0188427,0.018843,0.00878586,0.041805,0.0418066,0.0591471,5.12973e-11,5.13071e-11,4.93931e-10,2.62829e-07,2.62705e-07,5.0003e-08,0,0,0,0,0,0,0,0 +32985000,0.983406,-0.0110099,-0.0118841,0.180691,0.036885,-0.109295,-0.112651,0.0493599,-0.0196096,-0.0100572,-1.14439e-05,-5.66675e-05,5.00651e-06,4.17567e-05,-0.000318021,-0.00107769,0.204279,0.00198394,0.434362,0,0,0,0,0,3.61598e-06,1.62062e-05,1.61974e-05,8.80189e-05,0.0179236,0.0179243,0.00848981,0.0381265,0.0381278,0.0585942,4.96162e-11,4.96225e-11,4.90985e-10,2.62835e-07,2.62711e-07,5.00129e-08,0,0,0,0,0,0,0,0 +33085000,0.98341,-0.0109785,-0.0119006,0.180675,0.0338246,-0.114517,-0.110424,0.0529277,-0.0307611,-0.0185871,-1.14441e-05,-5.66675e-05,4.99805e-06,4.17562e-05,-0.000318021,-0.00107769,0.204279,0.00198394,0.434362,0,0,0,0,0,3.61207e-06,1.64534e-05,1.64443e-05,8.792e-05,0.019866,0.0198673,0.00834368,0.0421865,0.0421883,0.0585412,4.9715e-11,4.97211e-11,4.88023e-10,2.62845e-07,2.62721e-07,5.00229e-08,0,0,0,0,0,0,0,0 +33185000,0.983418,-0.0107862,-0.0118245,0.180644,0.0298069,-0.110592,-0.10885,0.0584394,-0.03017,-0.0247485,-1.16923e-05,-5.65957e-05,4.96135e-06,4.15614e-05,-0.000320533,-0.00107794,0.204279,0.00198394,0.434362,0,0,0,0,0,3.60662e-06,1.5541e-05,1.55316e-05,8.78266e-05,0.0188842,0.0188856,0.0080967,0.0384297,0.0384311,0.0579684,4.79927e-11,4.79954e-11,4.85038e-10,2.62711e-07,2.62588e-07,5.00304e-08,0,0,0,0,0,0,0,0 +33285000,0.983441,-0.0108595,-0.011834,0.180515,0.0274337,-0.114111,-0.108677,0.0612421,-0.0414122,-0.0332604,-1.16895e-05,-5.65989e-05,5.10616e-06,4.15594e-05,-0.000320531,-0.00107795,0.204279,0.00198394,0.434362,0,0,0,0,0,3.6028e-06,1.57786e-05,1.5769e-05,8.77381e-05,0.0209649,0.0209671,0.00798636,0.0425973,0.0425991,0.0578683,4.80916e-11,4.8094e-11,4.82039e-10,2.62721e-07,2.62598e-07,5.00403e-08,0,0,0,0,0,0,0,0 +33385000,0.983455,-0.0106313,-0.0118913,0.180448,0.0227873,-0.103197,-0.106345,0.0637463,-0.0345886,-0.0417188,-1.20259e-05,-5.65074e-05,5.16472e-06,4.15594e-05,-0.000320531,-0.00107824,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59856e-06,1.48125e-05,1.48024e-05,8.76534e-05,0.0196594,0.0196617,0.00778378,0.0387517,0.0387532,0.0572856,4.63667e-11,4.6366e-11,4.79019e-10,2.62721e-07,2.62598e-07,5.00418e-08,0,0,0,0,0,0,0,0 +33485000,0.983459,-0.0106185,-0.0118457,0.18043,0.0187276,-0.107062,-0.106271,0.0657791,-0.0450709,-0.0524613,-1.20257e-05,-5.65076e-05,5.17633e-06,4.15594e-05,-0.000320531,-0.00107824,0.204279,0.00198394,0.434362,0,0,0,0,0,3.60767e-06,1.504e-05,1.50297e-05,8.79273e-05,0.0215695,0.0215725,0.00777044,0.0430227,0.0430247,0.0579788,4.64658e-11,4.6465e-11,4.76769e-10,2.62721e-07,2.62598e-07,5.00515e-08,0,0,0,0,0,0,0,0 +33585000,0.983487,-0.0103512,-0.0118151,0.180296,0.0148061,-0.100036,-0.102538,0.0675522,-0.0392893,-0.0583093,-1.23025e-05,-5.64273e-05,5.30767e-06,4.15594e-05,-0.000320531,-0.00107888,0.204279,0.00198394,0.434362,0,0,0,0,0,3.60307e-06,1.40426e-05,1.40319e-05,8.78512e-05,0.0200903,0.0200932,0.00760535,0.0390796,0.0390811,0.0573781,4.47724e-11,4.47686e-11,4.7372e-10,2.62721e-07,2.62598e-07,5.00437e-08,0,0,0,0,0,0,0,0 +33685000,0.983496,-0.0103467,-0.0118041,0.180246,0.0108664,-0.10398,-0.104144,0.0688756,-0.0495311,-0.0667976,-1.23017e-05,-5.64282e-05,5.34918e-06,4.15594e-05,-0.000320531,-0.00107891,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59997e-06,1.42599e-05,1.42489e-05,8.77788e-05,0.0220002,0.0220038,0.00755978,0.0434405,0.0434426,0.057215,4.48712e-11,4.48673e-11,4.7066e-10,2.62721e-07,2.62598e-07,5.00524e-08,0,0,0,0,0,0,0,0 +33785000,0.983509,-0.0101496,-0.0118012,0.180189,0.00641581,-0.0963475,-0.0983857,0.0717219,-0.0427707,-0.0728109,-1.25666e-05,-5.63194e-05,5.32166e-06,4.15594e-05,-0.000320531,-0.00107964,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59464e-06,1.32529e-05,1.32417e-05,8.77109e-05,0.0203776,0.0203808,0.00743089,0.0393971,0.0393987,0.0566217,4.32373e-11,4.32309e-11,4.67583e-10,2.62721e-07,2.62598e-07,5.00318e-08,0,0,0,0,0,0,0,0 +33885000,0.983525,-0.0101898,-0.0117586,0.180104,0.00292411,-0.0973977,-0.0979857,0.0721371,-0.0525046,-0.0800861,-1.25644e-05,-5.63217e-05,5.43048e-06,4.15594e-05,-0.000320531,-0.00107972,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59206e-06,1.346e-05,1.34487e-05,8.76441e-05,0.0222622,0.0222663,0.00741446,0.0438329,0.043835,0.0564415,4.33361e-11,4.33296e-11,4.64494e-10,2.62721e-07,2.62598e-07,5.00388e-08,0,0,0,0,0,0,0,0 +33985000,0.983518,-0.00993798,-0.011894,0.180145,0.000498625,-0.0868494,-0.0943615,0.073799,-0.0431352,-0.0833155,-1.2846e-05,-5.61888e-05,5.37944e-06,4.15594e-05,-0.000320531,-0.00108066,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58959e-06,1.24636e-05,1.24517e-05,8.75794e-05,0.0205251,0.0205287,0.00731757,0.0396918,0.0396935,0.0558629,4.17843e-11,4.17755e-11,4.61393e-10,2.62721e-07,2.62598e-07,5.0005e-08,0,0,0,0,0,0,0,0 +34085000,0.983523,-0.00987527,-0.0118975,0.180118,-0.00306447,-0.0913964,-0.0934497,0.0737167,-0.0520798,-0.0900178,-1.28459e-05,-5.6189e-05,5.38106e-06,4.15594e-05,-0.000320531,-0.00108077,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59875e-06,1.2661e-05,1.26488e-05,8.78724e-05,0.0223731,0.0223773,0.00738417,0.0441863,0.0441886,0.0564705,4.18833e-11,4.18746e-11,4.59086e-10,2.62721e-07,2.62598e-07,5.00108e-08,0,0,0,0,0,0,0,0 +34185000,0.983525,-0.00970373,-0.0119365,0.180119,-0.00668622,-0.0814299,-0.091119,0.0757973,-0.0435222,-0.0918185,-1.30842e-05,-5.60687e-05,5.42709e-06,4.15594e-05,-0.000320531,-0.00108154,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59728e-06,1.16907e-05,1.16783e-05,8.78114e-05,0.0205416,0.0205454,0.00731336,0.0399541,0.0399559,0.0558966,4.04285e-11,4.04178e-11,4.55965e-10,2.62721e-07,2.62598e-07,5.00037e-08,0,0,0,0,0,0,0,0 +34285000,0.983528,-0.00959658,-0.0119969,0.1801,-0.00680031,-0.0849691,-0.0900857,0.0751546,-0.0518838,-0.0990843,-1.3083e-05,-5.60698e-05,5.48315e-06,4.15594e-05,-0.000320531,-0.00108164,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59594e-06,1.18788e-05,1.18659e-05,8.7753e-05,0.022342,0.0223463,0.00734865,0.0444904,0.0444927,0.0557153,4.05271e-11,4.05166e-11,4.52836e-10,2.62721e-07,2.62598e-07,5.0004e-08,0,0,0,0,0,0,0,0 +34385000,0.983552,-0.00938221,-0.0120066,0.179981,-0.00964968,-0.0740477,-0.0850889,0.0754486,-0.0430849,-0.102274,-1.33065e-05,-5.59668e-05,5.49651e-06,4.15594e-05,-0.000320531,-0.00108311,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58998e-06,1.09476e-05,1.09344e-05,8.77008e-05,0.0204348,0.0204386,0.00730222,0.0401771,0.0401789,0.0551677,3.91783e-11,3.91661e-11,4.49697e-10,2.62721e-07,2.62598e-07,5.0001e-08,0,0,0,0,0,0,0,0 +34485000,0.983556,-0.00946709,-0.0119364,0.17996,-0.0126689,-0.077798,-0.0836043,0.0743368,-0.0507469,-0.105781,-1.33051e-05,-5.59681e-05,5.55591e-06,4.15594e-05,-0.000320531,-0.00108347,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58878e-06,1.11266e-05,1.11136e-05,8.76459e-05,0.0221805,0.0221847,0.00735996,0.0447379,0.0447403,0.0550007,3.92769e-11,3.92649e-11,4.46552e-10,2.62721e-07,2.62598e-07,5e-08,0,0,0,0,0,0,0,0 +34585000,0.983562,-0.00926919,-0.0117599,0.179949,-0.0128818,-0.0663435,0.662289,0.0747899,-0.0430201,-0.0806858,-1.34861e-05,-5.58695e-05,5.54379e-06,4.15594e-05,-0.000320531,-0.00108484,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58591e-06,1.02432e-05,1.02304e-05,8.75942e-05,0.0191072,0.0191105,0.00733423,0.0403258,0.0403276,0.0544833,3.8038e-11,3.80247e-11,4.434e-10,2.62721e-07,2.62598e-07,5e-08,0,0,0,0,0,0,0,0 +34685000,0.983568,-0.00925611,-0.0114729,0.179933,-0.0146815,-0.063338,1.65295,0.0734175,-0.0495005,0.0321606,-1.34866e-05,-5.5869e-05,5.52527e-06,4.15594e-05,-0.000320531,-0.00108457,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58321e-06,1.04137e-05,1.04015e-05,8.7544e-05,0.0192163,0.0192196,0.00741185,0.0447213,0.0447236,0.0543372,3.81366e-11,3.81235e-11,4.40242e-10,2.62721e-07,2.62598e-07,5e-08,0,0,0,0,0,0,0,0 +34785000,0.983576,-0.00909799,-0.0112412,0.179916,-0.0148925,-0.0519221,2.6195,0.0740976,-0.0418724,0.194292,-1.36331e-05,-5.57803e-05,5.51322e-06,4.15594e-05,-0.000320531,-0.00105859,0.204279,0.00198394,0.434362,0,0,0,0,0,3.59227e-06,9.68481e-06,9.67298e-06,8.7848e-05,0.0163819,0.0163845,0.00745318,0.0402591,0.0402609,0.0545875,3.71288e-11,3.71149e-11,4.37894e-10,2.62721e-07,2.62598e-07,5.0002e-08,0,0,0,0,0,0,0,0 +34885000,0.983581,-0.00908347,-0.0109551,0.179903,-0.0166451,-0.048899,3.60507,0.0725539,-0.0468836,0.484156,-1.36343e-05,-5.57793e-05,5.48955e-06,4.15594e-05,-0.000320531,-0.00105635,0.204279,0.00198394,0.434362,0,0,0,0,0,3.58962e-06,9.84911e-06,9.83783e-06,8.77992e-05,0.0164934,0.016496,0.0075485,0.0443771,0.0443793,0.0544643,3.72274e-11,3.72137e-11,4.34728e-10,2.62721e-07,2.62598e-07,5.0001e-08,0,0,0,0,0,0,0,0 diff --git a/src/lib/ecl/test/gtest.cmake b/src/lib/ecl/test/gtest.cmake new file mode 100644 index 0000000000..94c4103ce5 --- /dev/null +++ b/src/lib/ecl/test/gtest.cmake @@ -0,0 +1,43 @@ +############################################################################ +# +# Copyright (c) 2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +# Download and unpack googletest at configure time +configure_file(${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in googletest-download/CMakeLists.txt) +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . RESULT_VARIABLE result1 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download) +execute_process(COMMAND ${CMAKE_COMMAND} --build . RESULT_VARIABLE result2 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download) +if(result1 OR result2) + message(FATAL_ERROR "Preparing googletest failed: ${result1} ${result2}") +endif() + +# Add googletest, defines gtest and gtest_main targets +add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src ${CMAKE_CURRENT_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL) diff --git a/src/lib/ecl/test/main.cpp b/src/lib/ecl/test/main.cpp new file mode 100644 index 0000000000..02539d2e7b --- /dev/null +++ b/src/lib/ecl/test/main.cpp @@ -0,0 +1,7 @@ +#include + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + std::cout << "Run ECL gtests" << std::endl; + return RUN_ALL_TESTS(); +} diff --git a/src/lib/ecl/test/replay_data/ekf_gsf_reset.csv b/src/lib/ecl/test/replay_data/ekf_gsf_reset.csv new file mode 100644 index 0000000000..906ce73b45 --- /dev/null +++ b/src/lib/ecl/test/replay_data/ekf_gsf_reset.csv @@ -0,0 +1,13605 @@ +4000,imu,-0.19401048,0.16579276,-9.932816,0.00062097755,-0.0051852195,-2.7273085e-05 +8000,imu,-0.20635903,0.20999286,-9.952599,0.0027024136,-0.0055028554,-0.00024916226 +12000,imu,-0.23353885,0.21334836,-9.949475,0.0020378712,-0.0044974005,0.0006671851 +16000,imu,-0.2210752,0.20447312,-9.949531,0.0012649787,-0.0056970855,0.0016992611 +20000,imu,-0.24378736,0.20408408,-10.0107,-0.0022304608,-0.0034200053,-0.0020811968 +24000,imu,-0.25582165,0.21230642,-9.9867,-0.003579689,-0.0048590056,0.0005735666 +28000,imu,-0.22984286,0.23278086,-9.929294,-0.0005366122,-0.00795524,0.003426205 +32000,imu,-0.24912547,0.22281076,-9.965334,-0.0007153945,-0.0062198234,0.0025909329 +36000,imu,-0.24003106,0.18688942,-9.993971,-0.00053226494,-0.0057679517,0.0051812693 +40000,imu,-0.21350482,0.20253521,-9.95618,-0.003352132,-0.0034313863,0.0053668846 +44000,imu,-0.213747,0.21036553,-9.94402,-0.0027953314,-0.0019011205,0.004722874 +48000,imu,-0.20742661,0.1950647,-9.963963,-0.0005913166,-0.002968454,0.0031337845 +52000,gps,488099.0,85456074.0,473977508.0,-0.02,0.0,0.0 +52000,imu,-0.19354638,0.22430144,-9.977678,0.001718874,-0.00391734,-0.0019958944 +56000,imu,-0.19954363,0.23785844,-9.961266,0.0036829163,-0.005181249,-0.0015785797 +60000,imu,-0.2241739,0.21707165,-9.940775,0.0029654012,-0.007527784,-0.00028327422 +64000,imu,-0.2244116,0.24437636,-9.931114,0.0018286058,-0.008044559,0.00050949934 +68000,imu,-0.21935153,0.24689205,-9.934168,-0.00056477176,-0.006164154,0.00014129408 +72000,imu,-0.2131431,0.20299193,-9.95244,-0.0020576941,-0.0057975315,0.0010881079 +76000,imu,-0.19342771,0.21360269,-9.947882,-0.0028552432,-0.006146625,0.0021855233 +80000,imu,-0.20865738,0.2444656,-9.940287,0.0007784929,-0.0053025805,0.0040977816 +84000,imu,-0.216658,0.24091174,-9.967588,0.0019301007,-0.005892203,0.0054122554 +88000,imu,-0.19216669,0.19643727,-9.961537,0.00056979083,-0.007459987,0.00051267486 +92000,imu,-0.17906694,0.17596272,-9.945456,0.0008094108,-0.0056849113,-0.0034699843 +96000,imu,-0.18009263,0.21151417,-9.960159,0.00083657284,-0.0062952554,-0.0042787017 +100000,imu,-0.19911176,0.20511417,-9.941399,-0.002239949,-0.0068942457,-0.0020284983 +104000,imu,-0.16404843,0.16981854,-9.949308,-0.003158864,-0.0040902654,0.0009611725 +108000,imu,-0.15686464,0.18052353,-9.954813,0.00057694217,-0.003277638,-0.0014252305 +112000,imu,-0.2084339,0.20995557,-9.919198,0.0017351925,-0.0031447988,-0.0022485899 +116000,imu,-0.21105912,0.22365513,-9.928848,0.0009666971,-0.0066979863,0.00024926587 +120000,imu,-0.2110458,0.22275178,-9.9665785,0.0019065704,-0.008601323,0.00071805064 +124000,imu,-0.21414062,0.22650409,-9.930073,0.003127265,-0.0034740807,0.00067491 +128000,imu,-0.19839446,0.21595308,-9.922161,-0.0001775087,-0.0051110536,-0.0014207223 +132000,imu,-0.20562842,0.19778298,-9.977891,-0.0033281797,-0.008283696,-0.001670357 +136000,imu,-0.21460322,0.1717737,-9.99581,0.0007731688,-0.0054684663,-0.0005172054 +140000,imu,-0.250935,0.16001377,-9.94965,0.0038045158,-0.0058898777,-0.0015299466 +144000,imu,-0.25129753,0.17747271,-9.94363,0.0014531419,-0.0033021418,-0.0023130942 +148000,imu,-0.22508559,0.19131948,-9.956433,-0.00039349776,-0.0025497456,-0.00081889314 +152000,imu,-0.23497686,0.18234344,-9.957851,-0.0019685042,-0.006419592,0.0002521308 +156000,imu,-0.2687335,0.20420757,-9.976397,-0.0009533427,-0.008409867,-0.0015911041 +160000,imu,-0.25290647,0.2241228,-9.942833,0.0020851875,-0.006653899,-0.0030080853 +164000,imu,-0.21865928,0.24241292,-9.948204,0.00046737693,-0.0037288952,-0.0008953455 +168000,imu,-0.21850264,0.22511074,-9.943821,-0.0012064574,-0.0021211975,0.0022722988 +172000,imu,-0.21026501,0.17022844,-9.916027,-0.0006293019,-0.0030834489,0.0014575082 +176000,imu,-0.20046905,0.1980945,-9.9380665,-0.00013504589,-0.004743587,0.00096437224 +180000,imu,-0.19629446,0.24799526,-9.950787,0.0015493017,-0.004876511,0.001312965 +184000,imu,-0.1944009,0.21587828,-9.929612,0.00037541674,-0.008617494,-0.0011120177 +188000,imu,-0.20173812,0.19589087,-9.946953,-0.0028042689,-0.010059264,-0.0022834793 +192000,imu,-0.24374041,0.21401604,-9.951334,-0.0026918862,-0.007575521,0.00047067276 +196000,imu,-0.24324699,0.20917392,-9.9367895,-0.0003138539,-0.0041678115,0.0014406518 +200000,imu,-0.21426225,0.20362458,-9.960187,0.00077579985,-0.00413456,0.0030202328 +204000,imu,-0.18488738,0.19025356,-9.926258,-0.0007433931,-0.002425631,0.0022920992 +208000,imu,-0.20638356,0.19477527,-9.900505,-0.00014677388,-0.0026736245,-0.0014004126 +212000,imu,-0.2245355,0.2116083,-9.920018,0.00052194623,-0.007199757,-0.00025811425 +216000,imu,-0.1941112,0.1984332,-9.940781,-1.7599157e-05,-0.010004848,-0.00035369597 +220000,imu,-0.17545076,0.19512732,-9.95304,-0.00019575864,-0.009804013,-3.3606906e-05 +224000,imu,-0.20883493,0.21389103,-9.936983,-0.0018519401,-0.006483323,0.0012566476 +228000,imu,-0.2240442,0.2189964,-9.927944,-0.003833567,-0.0061938725,-0.0016608852 +232000,imu,-0.20778129,0.19702785,-9.937042,-0.0025295946,-0.0041165138,-0.0021521978 +236000,imu,-0.19964463,0.20699199,-9.950386,-0.0006080046,-0.0052845892,-0.0018832091 +240000,imu,-0.19155183,0.20485914,-9.963427,-0.001841912,-0.009312243,-0.0029504881 +244000,imu,-0.20376977,0.16449264,-9.923437,-0.0031076907,-0.009380251,0.0010490511 +248000,imu,-0.20868707,0.1972956,-9.954304,-0.0022750834,-0.009395218,0.0014942244 +252000,imu,-0.1943878,0.23112668,-9.976121,-0.0014581946,-0.009131987,-0.00017147075 +256000,imu,-0.17039269,0.20945059,-9.954144,-0.0006190295,-0.0074647996,0.0008614269 +260000,imu,-0.18214086,0.19192193,-9.962634,-0.00012485584,-0.0069667655,-0.00029959145 +264000,imu,-0.19464032,0.19346583,-9.918631,-0.0014838628,-0.0070448285,-9.9367666e-05 +268000,imu,-0.21107145,0.21049137,-9.924763,-0.0051931823,-0.0065399613,0.0031768053 +272000,imu,-0.21438651,0.23203784,-9.940651,-0.0054453113,-0.006343472,0.0019541695 +276000,imu,-0.22617152,0.24151509,-9.935977,-0.0009671327,-0.0049032075,0.00010368941 +280000,imu,-0.2386089,0.24234456,-9.960013,0.0004205494,-0.0069441837,0.0028684784 +284000,imu,-0.21659017,0.25924975,-9.985991,0.0029201733,-0.010023185,0.003029994 +288000,imu,-0.21607442,0.24083796,-9.979038,0.00440905,-0.008604186,0.0039227298 +292000,imu,-0.1824142,0.21085954,-9.9691515,0.00058679434,-0.0071961517,0.0050665867 +296000,imu,-0.17427108,0.2391715,-9.98361,-0.0028740969,-0.0070973183,0.0011548905 +300000,imu,-0.21540326,0.24370937,-9.971365,-0.0025863382,-0.005663767,-0.00054334616 +304000,imu,-0.21411732,0.18720928,-9.960755,-0.0018867165,-0.0060532726,0.00034564926 +308000,imu,-0.22455361,0.16394901,-9.972236,-0.0009773244,-0.0074291416,0.00039756304 +312000,mag,0.010996457,-0.21727313,0.4324648 +312000,imu,-0.2017009,0.20894739,-9.934372,-0.0015401746,-0.006587323,-0.00015291956 +316000,imu,-0.16205123,0.21475115,-9.915459,-0.0014352006,-0.0064409683,-8.8406574e-05 +320000,imu,-0.2113196,0.20102817,-9.938328,-0.0009880986,-0.003598163,0.0003129884 +324000,mag,0.0066870004,-0.21782559,0.42154014 +324000,imu,-0.25809562,0.2180515,-9.929384,0.0006573085,-0.00345609,0.0031982383 +328000,imu,-0.23401439,0.24308527,-9.912451,0.0007886701,-0.0042959694,0.0029796385 +332000,imu,-0.24643692,0.24920335,-9.959747,0.000619452,-0.0051499247,-1.6139302e-05 +336000,mag,0.00852548,-0.22163841,0.42483777 +336000,imu,-0.25550485,0.20813721,-9.991956,0.0031868387,-0.0060108337,-0.0023338955 +340000,imu,-0.22837849,0.22516632,-9.970434,0.0021344444,-0.007955011,-0.0045580002 +344000,imu,-0.22214422,0.2387128,-9.965515,0.0020601798,-0.007865888,-0.0024530482 +348000,imu,-0.19608228,0.21321556,-9.94875,-0.0008369214,-0.005273089,-0.0021348556 +348000,mag,0.006719103,-0.221136,0.42248383 +352000,imu,-0.19358338,0.20411068,-9.924983,-0.0030602496,-0.0053738845,-0.0021935217 +356000,imu,-0.22566418,0.20408463,-9.932435,-0.0032364393,-0.005257908,0.0012684913 +360000,imu,-0.242192,0.2330765,-9.953289,-0.0010262717,-0.0052917674,0.0012260354 +360000,mag,0.006126422,-0.21632084,0.42991766 +364000,imu,-0.236397,0.21288659,-9.937584,0.0010241593,-0.0037018915,-0.0032382347 +368000,imu,-0.20194447,0.1811854,-9.924709,6.560299e-05,-0.003787206,-0.0041273083 +372000,mag,0.010210525,-0.21328333,0.42953438 +372000,imu,-0.19415864,0.19608736,-9.939672,-0.0005415616,-0.005425508,-0.0009342241 +376000,imu,-0.20979488,0.20553981,-9.95361,0.0024968567,-0.0063459324,0.0018688376 +380000,imu,-0.23464827,0.18955381,-9.963521,0.00442786,-0.004949688,0.0018776988 +384000,mag,0.013862284,-0.21499927,0.43116394 +384000,imu,-0.22208092,0.16731241,-9.9559,-0.0003015654,-0.005668273,0.001923263 +388000,imu,-0.16845581,0.17740749,-9.948179,-0.0006345593,-0.005227119,0.0013250768 +392000,imu,-0.18828258,0.1866668,-9.915727,0.0018483563,-0.0065267305,0.0012462087 +396000,imu,-0.2241016,0.20348938,-9.940037,-0.0012315344,-0.008712615,0.0023605486 +396000,mag,0.015181184,-0.21247299,0.4260788 +400000,imu,-0.20642558,0.19156067,-9.97116,-0.0039662668,-0.0065902877,-0.00031214036 +404000,imu,-0.18867207,0.18318914,-9.955864,-0.0018388744,-0.004982434,-0.00217835 +408000,mag,0.0061891945,-0.21732374,0.4329294 +408000,imu,-0.1801093,0.1922594,-9.966253,0.0008496845,-0.004424799,-0.00089954754 +412000,imu,-0.17386529,0.18158063,-9.9628935,-0.0027072665,-0.0056510326,-0.00067670445 +416000,imu,-0.20165363,0.2086147,-9.949108,-0.002845759,-0.008277054,0.0012993093 +420000,imu,-0.2225542,0.2288993,-9.945133,-0.0019344517,-0.0075011235,0.0021937836 +420000,mag,0.010806783,-0.21605335,0.42518348 +424000,imu,-0.22542937,0.20790882,-9.964316,-0.0030937043,-0.0067346427,0.0008993964 +428000,imu,-0.24523176,0.20294297,-9.986221,-0.001095767,-0.0082771005,-0.0014067497 +432000,mag,0.012646546,-0.21782793,0.42951152 +432000,imu,-0.21639712,0.21686912,-9.963144,-0.0031627687,-0.008100007,-0.0038185609 +436000,imu,-0.18741453,0.19073638,-9.940154,-0.0022292214,-0.008406157,-0.0027537749 +440000,imu,-0.20541042,0.18062939,-9.974373,-0.0013039705,-0.008699086,-0.0013974174 +444000,imu,-0.20999603,0.19318816,-9.993056,-0.0026424755,-0.008873686,-0.0039855833 +444000,mag,0.014298593,-0.21986113,0.4249531 +448000,imu,-0.22604296,0.18795538,-9.970966,0.001262001,-0.00873548,-0.0047448846 +452000,gps,488100.0,85456073.0,473977508.0,0.0,-0.01,0.0 +452000,imu,-0.22417375,0.19059195,-9.9534,0.0021720931,-0.0092604635,-0.003931085 +456000,mag,0.0047179256,-0.2119135,0.42422494 +456000,imu,-0.19054621,0.2195087,-9.970892,-0.00016493251,-0.010071885,-0.00296971 +460000,imu,-0.19069305,0.250753,-9.965207,-0.00075336866,-0.0060924436,-0.0038423908 +464000,imu,-0.20601228,0.24116386,-9.950535,-0.001485903,-0.00057717075,-0.0022149442 +468000,mag,0.0067328387,-0.2159102,0.42989567 +468000,imu,-0.21509373,0.19883978,-9.962394,-0.0021578446,-0.0015773434,0.0026402958 +472000,imu,-0.21152627,0.1892976,-9.979028,-0.005523283,-0.0069544055,0.0021212106 +476000,imu,-0.21392995,0.18975782,-9.961878,-0.0039521204,-0.008834934,0.0008043059 +480000,mag,0.007123818,-0.21660267,0.43388733 +480000,imu,-0.21315724,0.2166464,-9.937704,-6.668375e-05,-0.01038421,0.00060809404 +484000,imu,-0.21150085,0.21490957,-9.926352,0.0027960455,-0.010623097,-0.00071437797 +488000,imu,-0.19638932,0.22025788,-9.919569,0.0010398215,-0.0069460943,-0.002353949 +492000,imu,-0.18312192,0.25196952,-9.906361,0.0005560493,-0.006154947,-0.0016583557 +492000,mag,0.0071818056,-0.21749453,0.42802995 +496000,imu,-0.17248426,0.23270397,-9.918215,0.0022798362,-0.0068697827,-0.0015647807 +500000,imu,-0.18327773,0.18652548,-9.930931,-0.0011442692,-0.0047105453,-0.00047226594 +504000,mag,0.010656447,-0.21150732,0.43058902 +504000,imu,-0.21047206,0.17608017,-9.912594,0.0013151462,-0.0058585415,-0.0009519261 +508000,imu,-0.2344793,0.21741652,-9.901831,0.004750524,-0.010078545,0.0009786681 +512000,imu,-0.25321648,0.23124355,-9.904442,0.00095063617,-0.0063637155,0.0033386087 +516000,mag,0.013661328,-0.21688664,0.4263303 +516000,imu,-0.22929004,0.20589118,-9.946492,-0.0033930643,-0.0040478213,0.001570706 +520000,imu,-0.22219375,0.17619018,-9.960173,-0.0022413144,-0.0066396897,-0.0005913895 +524000,imu,-0.2031529,0.18228246,-9.9213505,-0.00053635356,-0.007558135,-0.0020282401 +524000,mag,0.013004187,-0.21903008,0.42644837 +528000,imu,-0.21053816,0.19184913,-9.920546,-0.001861008,-0.008846312,-0.0019244535 +532000,imu,-0.22110412,0.22233054,-9.952486,-0.0012377966,-0.006519715,-0.0030755014 +536000,imu,-0.23322241,0.22777489,-9.95749,0.0026736748,-0.005275013,-0.0011405342 +540000,mag,0.011622905,-0.20885727,0.43032262 +540000,imu,-0.23895502,0.21071714,-9.944848,0.0030122187,-0.0053676586,0.0007424021 +540000,landed,1.0 +544000,imu,-0.22706407,0.1873954,-9.939742,0.0016982248,-0.0033580014,0.00042908682 +548000,imu,-0.2389097,0.1962826,-9.949109,0.0009384276,-0.0034246824,0.001344363 +552000,imu,-0.22955976,0.24005015,-9.965646,0.0015883143,-0.003578289,0.0008119582 +552000,mag,0.014321919,-0.22144072,0.4253891 +556000,imu,-0.19237846,0.22013848,-9.947456,0.0041190954,-0.004287535,0.0019928413 +560000,imu,-0.19176412,0.2198022,-9.933216,0.0013769789,-0.0036979183,0.00046351823 +564000,mag,0.014408644,-0.2174741,0.42360497 +564000,imu,-0.22562417,0.2286998,-9.930839,-0.0023763874,-0.0052795745,0.002307439 +568000,imu,-0.20616038,0.21280636,-9.9338875,-0.002882452,-0.0066561126,0.00538176 +572000,imu,-0.20783365,0.21386606,-9.946249,-0.0011455428,-0.007051344,-0.00016042388 +576000,imu,-0.22581637,0.22903542,-9.957817,8.7110144e-05,-0.0063658645,-0.003099354 +576000,mag,0.011389738,-0.21807836,0.42770046 +580000,imu,-0.2325336,0.22780918,-9.970089,-0.00056157087,-0.002503994,-0.0017987298 +584000,imu,-0.22255385,0.20859411,-9.939636,-0.0042459816,-0.0056582927,-0.00080810534 +588000,mag,0.0072613773,-0.21207392,0.4291722 +588000,imu,-0.2240954,0.20415877,-9.938069,-0.0061995266,-0.008020027,-0.00031369776 +592000,imu,-0.25880772,0.18715629,-9.943594,-0.0064935447,-0.0047263815,-0.00016391711 +596000,imu,-0.20891067,0.18405181,-9.926871,-0.009411678,-0.0047378573,-0.0016806202 +600000,imu,-0.17059296,0.19646062,-9.942913,-0.00463705,-0.006361717,-0.001772056 +600000,mag,0.009529891,-0.21505095,0.43016312 +604000,imu,-0.20657034,0.18667522,-9.963947,0.00038541644,-0.004523251,0.0016953939 +608000,imu,-0.25183427,0.19232285,-9.970604,-0.0014009585,-0.0049315034,0.0021802639 +612000,imu,-0.25019482,0.20270555,-9.95952,-8.557292e-05,-0.003848757,0.0015374912 +612000,mag,0.0056157713,-0.21612774,0.42688996 +616000,imu,-0.20770448,0.19191767,-9.927931,0.0032636514,-0.0022706965,0.00427636 +620000,imu,-0.21009552,0.1816051,-9.928621,0.000955524,-0.0060278275,0.0026740876 +624000,mag,0.020182807,-0.21898884,0.422815 +624000,imu,-0.21760917,0.18580915,-9.966053,-0.0035442263,-0.0066936165,0.00014868336 +628000,imu,-0.21523558,0.17665252,-9.945295,-0.0024004816,-0.005535865,0.0009796531 +632000,imu,-0.21346174,0.16514279,-9.936699,-0.001223373,-0.005587389,0.0030794756 +636000,mag,0.008189579,-0.21910949,0.43254805 +636000,imu,-0.21078917,0.18703821,-9.974098,-0.0031968176,-0.0069384794,7.206017e-05 +640000,imu,-0.22917347,0.21049777,-9.985729,-0.0047973045,-0.00764574,-0.0028467034 +644000,imu,-0.21162283,0.21358497,-9.959279,-0.0029598994,-0.0059375814,-0.0031850524 +648000,mag,0.008081418,-0.21408121,0.42835495 +648000,imu,-0.18908703,0.20958836,-9.933808,-0.00088504853,-0.0062495363,-0.0013345698 +652000,imu,-0.20759717,0.22693032,-9.932273,-0.003559517,-0.0068697506,0.0028544085 +656000,imu,-0.22690812,0.23278633,-9.948117,-0.0035439495,-0.004337768,0.0048859715 +660000,mag,0.009872681,-0.2149092,0.42942527 +660000,imu,-0.22135018,0.22494154,-9.9574585,-0.0008587267,-0.0061273323,0.0026055574 +664000,imu,-0.23067884,0.20485827,-9.944288,-7.813634e-05,-0.008308767,0.001420073 +668000,imu,-0.23417148,0.19654697,-9.966239,-0.0021669078,-0.0064198533,0.0035486966 +672000,mag,0.015675602,-0.21955521,0.41987255 +672000,imu,-0.21142083,0.23043884,-9.985051,-0.0028583794,-0.0022022657,0.0019425084 +676000,imu,-0.19491497,0.24071275,-9.956039,-0.0012675817,-0.001961792,0.0029856632 +680000,imu,-0.17743638,0.22586632,-9.9255905,-0.0010111828,-0.008434883,0.0031535272 +684000,imu,-0.19562042,0.19398576,-9.9534855,-0.0021902234,-0.010680485,-0.0008231184 +684000,mag,0.0062546493,-0.21940812,0.42758334 +688000,imu,-0.20657614,0.20281886,-9.984292,-0.0030358012,-0.008195085,-0.0011825736 +692000,imu,-0.21941568,0.20436567,-9.975151,-0.003734697,-0.0067812162,0.0006128297 +696000,mag,0.012964676,-0.2187085,0.42636466 +696000,imu,-0.23446023,0.19628744,-9.951368,-0.0009650463,-0.006302355,0.0042003323 +700000,imu,-0.21671101,0.22790186,-9.929136,-0.00065455696,-0.007440635,0.0052478 +704000,imu,-0.22958688,0.21788968,-9.927122,-0.0050731143,-0.007757998,0.0011610456 +708000,imu,-0.2546136,0.20737842,-9.924294,-0.0024758969,-0.0063868086,0.00143619 +708000,mag,0.010526296,-0.22235094,0.43649778 +712000,imu,-0.25524744,0.21025391,-9.906963,-0.00053747644,-0.007649035,0.00094055623 +716000,imu,-0.22144133,0.18058532,-9.953004,-1.8576093e-05,-0.007890046,-0.00097331294 +720000,imu,-0.22010632,0.17116599,-9.971539,-0.00046677986,-0.0063140118,0.0011486638 +720000,mag,0.0077556497,-0.21621682,0.42672122 +724000,imu,-0.22595844,0.19700867,-9.95475,-0.0024879486,-0.007040925,0.0018601217 +728000,imu,-0.22615215,0.21020265,-9.958098,-0.0008918893,-0.007475119,-0.0005909343 +732000,mag,0.0075756344,-0.21952529,0.42778394 +732000,imu,-0.23427637,0.22497694,-9.942089,-0.00014889249,-0.004110281,-0.0023938788 +736000,imu,-0.2093857,0.23766476,-9.935608,-0.0029209766,-0.0036174632,-0.0022885948 +740000,imu,-0.22207981,0.21840917,-9.91975,-0.0023263542,-0.0051250174,-0.0011816142 +744000,imu,-0.2246083,0.20641363,-9.944503,-0.00085188926,-0.005649877,-0.001678304 +744000,mag,0.015235408,-0.21473476,0.4249409 +748000,imu,-0.2151179,0.20817025,-9.959687,-0.002866353,-0.0065765525,-0.0015570101 +752000,imu,-0.22992672,0.21638085,-9.933717,-0.002638754,-0.0044482616,0.0018807845 +756000,imu,-0.24297601,0.23964262,-9.961521,-0.0012177061,-0.0051786145,0.0020624963 +756000,mag,0.011370204,-0.21434332,0.4351495 +760000,imu,-0.21430057,0.23877594,-9.99095,0.0005050473,-0.008430673,4.4903387e-05 +764000,imu,-0.19396572,0.22830255,-9.976371,-0.000454173,-0.009976634,2.2124446e-05 +768000,mag,0.012436381,-0.21621723,0.43089372 +768000,imu,-0.21678305,0.22904496,-9.951803,-0.0010477159,-0.0119095715,0.0006303149 +772000,imu,-0.22744781,0.22597495,-9.9358835,-0.0010028207,-0.009731553,0.0009217037 +776000,imu,-0.2327636,0.20784205,-9.933391,-0.001076347,-0.008248083,-0.0009358749 +780000,imu,-0.23202845,0.22367539,-9.944104,-0.0018524205,-0.008429421,-0.0014521488 +780000,mag,0.0066310274,-0.21672937,0.42766616 +784000,imu,-0.23583512,0.24042837,-9.963419,-0.0044811163,-0.00426164,-0.00050567184 +788000,imu,-0.22342733,0.19185974,-9.9596405,-0.0037076126,-0.0010277678,-0.0002830553 +792000,imu,-0.18369317,0.17201434,-9.956425,-0.0009482138,-0.0047036526,-0.0012367661 +792000,baro,487.69434 +792000,mag,0.013653772,-0.21292284,0.42811486 +796000,imu,-0.209674,0.1821708,-9.959488,-0.00016556836,-0.006746732,-0.0022344326 +800000,imu,-0.25601482,0.19615205,-9.97887,-0.003026125,-0.0050345506,-0.0023664318 +804000,mag,0.00827527,-0.21541694,0.43712744 +804000,imu,-0.23843381,0.20731166,-9.958067,-0.0043199956,-0.0042885114,-0.0035434559 +808000,imu,-0.2163475,0.19634643,-9.952311,-0.0020260725,-0.004611235,-0.0012631984 +812000,imu,-0.2249403,0.19914377,-9.964724,-0.0018079716,-0.004093246,0.0007159604 +816000,mag,0.012312191,-0.21473217,0.43074802 +816000,imu,-0.26035872,0.20484781,-9.937624,-0.0037647008,-0.0037429682,-0.0015089252 +820000,imu,-0.2543262,0.17998394,-9.913774,-0.0033194737,-0.005997351,-0.00057346775 +824000,imu,-0.20573545,0.16767602,-9.905544,0.0005925625,-0.008370983,0.0028462806 +828000,mag,0.012535206,-0.21126017,0.4273233 +828000,imu,-0.17855689,0.19062766,-9.952423,0.00084758527,-0.009472739,0.0023830938 +832000,imu,-0.19637126,0.20976895,-9.965744,-0.0038302636,-0.0048432057,0.001334699 +836000,imu,-0.21084341,0.22832105,-9.961297,-0.002656748,-0.0031842662,0.0017585149 +840000,mag,0.00643042,-0.21543537,0.43051553 +840000,imu,-0.1935297,0.21315947,-9.948089,-0.0016031553,-0.0055187093,0.0010290436 +844000,imu,-0.20147225,0.19339234,-9.92345,-0.0027351256,-0.006474956,-0.00079772243 +848000,imu,-0.21270683,0.20665896,-9.938141,-0.0013888209,-0.0051363753,0.00054505985 +852000,mag,0.0065839086,-0.21110377,0.4289404 +852000,imu,-0.19684157,0.2063034,-9.925947,-0.0013025795,-0.003231695,0.0028793379 +852000,gps,488107.0,85456074.0,473977508.0,-0.02,-0.01,-0.01 +856000,imu,-0.21501628,0.19132584,-9.932117,-0.0024708817,-0.0039861547,0.0007833139 +860000,imu,-0.24608746,0.19585976,-9.928173,-0.0041557704,-0.006106748,0.000904047 +864000,mag,0.011969316,-0.21785276,0.42876026 +864000,imu,-0.21765143,0.19187136,-9.916811,-0.0032762908,-0.008415411,0.0034237388 +864000,baro,487.58636 +868000,imu,-0.20186171,0.20509179,-9.949631,-2.7370645e-05,-0.007839231,0.0045595905 +872000,mag,0.016132848,-0.2221017,0.42658302 +872000,imu,-0.20513564,0.25233936,-9.980864,-0.0014745746,-0.0048505547,0.0019593537 +876000,imu,-0.21407178,0.24073327,-9.982126,-0.0030278135,-0.004049264,-0.0024339396 +880000,imu,-0.20655411,0.2249385,-9.964165,-0.0030988427,-0.0039259377,-0.0019436998 +884000,imu,-0.20558444,0.2364278,-9.962091,-0.0024091545,-0.0061392123,-0.0010127098 +888000,mag,0.00854434,-0.22079743,0.42755505 +888000,imu,-0.23784958,0.20896524,-9.942768,-0.0018828465,-0.005509488,-0.0018014484 +892000,imu,-0.23093212,0.21012859,-9.936321,-0.0006539182,-0.0018060167,-0.0008660361 +896000,imu,-0.21029836,0.24189812,-9.968874,0.0010534893,-0.005913379,0.000837581 +900000,mag,0.0118090175,-0.21579187,0.43455616 +900000,imu,-0.20831543,0.22481623,-9.965332,-0.00302951,-0.009132629,0.00040036548 +904000,imu,-0.21386035,0.20665565,-9.935194,-0.003951943,-0.007936208,-0.0021897939 +908000,imu,-0.22155894,0.20720701,-9.939941,-3.086342e-05,-0.009965674,-0.001047175 +912000,mag,0.010765343,-0.21530697,0.43088698 +912000,imu,-0.2220985,0.20183213,-9.932959,0.00044529626,-0.008697835,0.002652266 +916000,imu,-0.20303766,0.20192665,-9.937231,-0.00058892084,-0.0070337323,0.0034205709 +920000,imu,-0.21396974,0.18966858,-9.930729,0.00048245228,-0.0059255557,0.0010091143 +924000,mag,0.008075681,-0.2199254,0.4254238 +924000,imu,-0.23211059,0.1911672,-9.941725,-0.0014567637,-0.004094605,-0.001370215 +928000,imu,-0.23156807,0.17917223,-9.953329,-0.0012231024,-0.00678366,-0.0016184169 +932000,imu,-0.21815363,0.19418749,-9.962001,-0.0006597188,-0.0059228498,-0.001836003 +936000,mag,0.0039342437,-0.21597302,0.42504025 +936000,imu,-0.20566057,0.23997483,-10.01041,-0.001924993,-0.005605903,-0.0008551682 +936000,baro,487.7272 +940000,imu,-0.20837975,0.20960426,-9.973631,-0.0011588135,-0.005707526,0.0015791848 +944000,imu,-0.22143379,0.16861589,-9.934196,0.000709233,-0.005743309,0.005266073 +948000,mag,0.008641276,-0.21745378,0.43155247 +948000,imu,-0.22357775,0.18100293,-9.933523,0.00070796313,-0.007559686,0.0007851203 +952000,imu,-0.18563363,0.18477353,-9.963547,-0.00046351168,-0.006869388,-0.001416189 +956000,imu,-0.19887352,0.18314713,-9.980375,0.0010611975,-0.006757525,0.00032786434 +960000,mag,0.0054044803,-0.21582977,0.43216395 +960000,imu,-0.241251,0.19629739,-9.946409,0.0011678884,-0.007977222,-0.0022854921 +964000,imu,-0.21823461,0.20369221,-9.928883,-0.001964918,-0.007034856,-0.0013115734 +968000,imu,-0.20922571,0.19868402,-9.950088,-0.0054040346,-0.0069720712,-0.00024302298 +972000,imu,-0.23088071,0.21627998,-9.983377,-0.0029370498,-0.008393733,0.0010583389 +972000,mag,0.010716893,-0.21326727,0.4275322 +976000,imu,-0.21595457,0.21714772,-9.962732,-0.00097310724,-0.008086557,0.0033400834 +980000,imu,-0.20226628,0.21021794,-9.941183,-0.00035865104,-0.004299054,0.0035227563 +984000,imu,-0.22097984,0.19000356,-9.929647,-0.000119413584,-0.0030071752,-0.00050630735 +984000,mag,0.013094809,-0.21678454,0.42754564 +988000,imu,-0.24465026,0.19062337,-9.956686,-0.0025949327,-0.0043073366,-0.0012731742 +992000,imu,-0.2378873,0.22333406,-9.978651,-0.0031712125,-0.0066352496,0.0007232116 +996000,imu,-0.22497815,0.20051368,-9.952564,-0.0025581014,-0.008402697,-6.254304e-05 +996000,mag,0.0071670637,-0.21679997,0.42533532 +1000000,imu,-0.22153383,0.18654606,-9.962167,-0.0005188225,-0.007983848,-0.002024778 +1004000,imu,-0.22813755,0.19939478,-9.988199,0.0005592039,-0.00603102,-0.0015200423 +1008000,baro,487.60513 +1008000,mag,0.013935705,-0.2168796,0.4265803 +1008000,imu,-0.21508294,0.19088224,-9.959566,0.00072249805,-0.006272929,-0.0013215044 +1012000,imu,-0.21219866,0.18002203,-9.95902,-0.00024501022,-0.008376645,-0.0013779929 +1016000,imu,-0.23448421,0.17524874,-9.956932,0.00026490682,-0.0062052575,0.0010474268 +1020000,imu,-0.23255466,0.17017338,-9.944191,-0.00070514996,-0.0062329276,0.005380909 +1020000,mag,0.010783005,-0.21450011,0.42732003 +1024000,imu,-0.22568622,0.19629756,-9.964073,-0.0026308305,-0.0077170245,0.0026997654 +1028000,imu,-0.2351605,0.22331819,-9.916563,-0.0023340078,-0.004128335,-0.0019524996 +1032000,imu,-0.24513558,0.22523178,-9.92005,-0.0017991334,-0.004746169,0.0007245344 +1032000,mag,0.011719785,-0.21678507,0.42554456 +1036000,imu,-0.23384733,0.21914946,-9.977375,-0.0012419841,-0.0073460117,-0.00026078976 +1040000,imu,-0.22323501,0.21561216,-9.965259,-0.00050139695,-0.0061871326,-0.0005337934 +1044000,imu,-0.21300474,0.21144778,-9.963523,-0.00031559146,-0.006341976,0.002302165 +1044000,mag,0.005398092,-0.21941535,0.4300218 +1048000,imu,-0.20709905,0.18384801,-9.961906,-0.0018355937,-0.0039641075,0.0018506235 +1052000,imu,-0.20983633,0.18801394,-9.940716,-0.0019210785,-0.00439284,0.0035529952 +1056000,imu,-0.23460531,0.18667522,-9.92765,-0.004775636,-0.006069839,0.00108844 +1056000,mag,0.00906135,-0.21973607,0.42419484 +1060000,imu,-0.2242887,0.16700545,-9.921806,-0.00432698,-0.006457775,-0.0050113588 +1064000,imu,-0.18846065,0.21691382,-9.942543,-0.0010424991,-0.0054117893,-0.005256166 +1068000,imu,-0.21951312,0.21345975,-9.946377,-0.0021931734,-0.0029181677,-0.0022801715 +1068000,mag,0.008064218,-0.21924596,0.43183443 +1072000,imu,-0.25014877,0.19747603,-9.981308,-0.0035621754,-0.001890897,-0.001259611 +1076000,imu,-0.21066853,0.20945539,-9.990135,-0.003224714,-0.004499396,-0.00081545336 +1080000,imu,-0.19061342,0.1953245,-9.948284,-0.0018288774,-0.005730482,-0.0006437347 +1080000,baro,487.61923 +1080000,mag,0.014243506,-0.21407312,0.4338019 +1084000,imu,-0.21892777,0.21200907,-9.919065,-0.0009262708,-0.0063543436,-0.0012812738 +1088000,imu,-0.23594633,0.22435275,-9.965559,-0.000109503286,-0.005519308,0.0005761284 +1092000,imu,-0.24031925,0.19969365,-9.984423,-0.0005199554,-0.0030789624,-0.0012290013 +1092000,mag,0.0034734027,-0.21621713,0.4308219 +1096000,imu,-0.2336653,0.21561222,-9.9433975,-0.0013596339,-0.0040234397,0.00015768543 +1100000,imu,-0.21746373,0.2135478,-9.95476,-0.002225012,-0.0049210913,0.0027777245 +1104000,imu,-0.2114835,0.17656423,-9.959768,-0.0027034432,-0.0045263153,-0.0012229842 +1104000,mag,0.00898217,-0.2206989,0.42810667 +1108000,imu,-0.2188334,0.18941619,-9.966179,0.00223813,-0.0057590785,-0.00042109503 +1112000,imu,-0.24958377,0.22410983,-9.967571,0.005159341,-0.007033731,0.0028200035 +1116000,mag,0.0074632266,-0.2221853,0.4259646 +1116000,imu,-0.2704891,0.21269299,-9.977957,0.0017222353,-0.0051328125,0.0011761138 +1120000,imu,-0.24450925,0.16727915,-9.964958,5.6977646e-05,-0.005917234,-0.00047088534 +1124000,imu,-0.23313704,0.1931697,-9.9550705,0.0014849771,-0.0048710485,-0.000102858365 +1128000,mag,0.009538183,-0.22095756,0.42547372 +1128000,imu,-0.2590748,0.2159847,-9.960975,0.0016322061,-0.004362208,0.0021242935 +1132000,imu,-0.23515527,0.19240472,-9.966547,-0.0005945861,-0.008462689,0.0010202071 +1136000,imu,-0.21719867,0.19558813,-9.964113,-0.0023734642,-0.008186488,-0.0016828348 +1140000,imu,-0.23817429,0.19476102,-9.927122,-0.002600407,-0.0019345541,-0.0020944523 +1140000,mag,0.008379778,-0.21030791,0.43007943 +1144000,imu,-0.229654,0.19704378,-9.9073925,-0.0042439825,-0.0028022567,-0.0010033698 +1148000,imu,-0.20799908,0.21336478,-9.917637,-0.0031578275,-0.004526038,0.0004575056 +1152000,baro,487.60513 +1152000,imu,-0.19171217,0.21599871,-9.924684,-0.0004314549,-0.006678874,0.00036255585 +1152000,mag,0.014488674,-0.21524203,0.43432054 +1156000,imu,-0.21887705,0.20933643,-9.935754,-0.00023654092,-0.00860038,-0.00015619211 +1160000,imu,-0.231866,0.19055267,-9.91711,-0.0036223528,-0.004051983,-0.0019364358 +1164000,imu,-0.20802957,0.1961784,-9.905154,-0.008380729,-0.006089967,-0.0024745376 +1164000,mag,0.004742443,-0.22179618,0.43259227 +1168000,imu,-0.21457075,0.20452188,-9.915649,-0.00732874,-0.005786643,-0.0026678185 +1172000,imu,-0.2419455,0.17478308,-9.931183,-0.0035316055,-0.0039713527,-0.0022081751 +1176000,imu,-0.22150941,0.18997952,-9.949461,0.00045963028,-0.007606269,-0.0012185475 +1176000,mag,0.0099573685,-0.21343844,0.43273377 +1180000,imu,-0.20244491,0.20050307,-9.948189,0.0023334848,-0.007976947,0.0013151529 +1184000,imu,-0.22698048,0.20014957,-9.942236,-0.001700489,-0.0067788777,-0.0013713149 +1188000,imu,-0.23092678,0.22431082,-9.94254,-0.002099497,-0.0074001476,-0.003132998 +1188000,mag,0.010550049,-0.21438277,0.42755395 +1192000,imu,-0.21409798,0.2175366,-9.9142685,-0.001494248,-0.0070660007,-0.00023147643 +1196000,imu,-0.2211436,0.17490123,-9.898643,-0.0014194791,-0.0076797623,-0.0011692136 +1200000,imu,-0.24066481,0.15266754,-9.934952,0.000492094,-0.008079007,-0.003543115 +1200000,mag,0.006051492,-0.21968518,0.42725214 +1204000,imu,-0.21826822,0.18029895,-9.942589,-0.0002402096,-0.0039464175,-0.0010925794 +1208000,imu,-0.22201467,0.21111381,-9.918819,0.00027218804,-0.005769168,0.006828312 +1212000,imu,-0.23479263,0.21470694,-9.925743,-0.0006417214,-0.007921691,0.0044396436 +1212000,mag,0.010321382,-0.21418332,0.4347034 +1216000,imu,-0.24216384,0.21686333,-9.969572,0.00010823507,-0.005486535,0.0011095568 +1220000,baro,487.59106 +1220000,mag,0.0066811536,-0.21296838,0.43063048 +1220000,imu,-0.22943968,0.22840448,-9.981719,-0.0005798236,-0.010152478,0.004030054 +1224000,imu,-0.23016715,0.18042757,-9.967907,-0.0009742671,-0.012288695,0.0025408065 +1228000,imu,-0.23432696,0.19189562,-9.926524,-0.0023524482,-0.010417142,-0.0013997296 +1232000,imu,-0.21762463,0.24848221,-9.919146,-0.0017571991,-0.0072393706,0.0013932902 +1236000,mag,0.018036924,-0.21269363,0.4324836 +1236000,imu,-0.2218624,0.20347218,-9.957435,-0.0018768576,-0.0034299204,0.0014107245 +1240000,imu,-0.22238447,0.1581457,-9.952181,-0.004954914,-0.0060624243,-0.0008352062 +1244000,imu,-0.2312179,0.1630677,-9.958277,-0.0029636587,-0.006637426,0.0021269014 +1248000,imu,-0.22984044,0.19081165,-9.93505,-0.0017487232,-0.0045772465,0.002896471 +1248000,mag,0.008097724,-0.21304657,0.43235815 +1252000,imu,-0.2063275,0.2122567,-9.9296665,-0.00026413827,-0.0032930155,0.0010217753 +1252000,gps,488106.0,85456074.0,473977508.0,0.0,-0.01,0.0 +1256000,imu,-0.20287758,0.22015963,-9.964731,-0.00030674494,-0.0028559563,-0.002503662 +1260000,imu,-0.25322288,0.22636835,-9.936097,0.00069317274,-0.002574496,-0.00089257624 +1260000,mag,0.008074365,-0.21461456,0.42781672 +1264000,imu,-0.26484275,0.24702083,-9.920473,0.0028536948,-0.003960982,0.00094676664 +1268000,imu,-0.2319278,0.21871279,-9.932495,0.0015835642,-0.007491035,0.0012457343 +1272000,imu,-0.24531534,0.20304014,-9.939201,0.00035964348,-0.005995424,0.00075326423 +1272000,mag,0.01454263,-0.21765563,0.42572805 +1272000,baro,487.62863 +1276000,imu,-0.244095,0.234626,-9.962777,-0.0003319401,-0.0050960626,-0.0004661979 +1280000,imu,-0.22084233,0.21245812,-9.959835,0.0007947739,-0.005585502,-0.0018400083 +1284000,imu,-0.21676812,0.22302552,-9.921266,0.0034061612,-0.00496062,-0.00072006526 +1284000,mag,0.014144145,-0.21934374,0.4283151 +1288000,imu,-0.24179348,0.22138181,-9.907104,0.0017719995,-0.0039553177,0.0006126717 +1292000,imu,-0.2480945,0.21717457,-9.917938,-0.0023353582,-0.0019824572,-0.0008415122 +1296000,mag,0.009256147,-0.2173616,0.43585092 +1296000,imu,-0.21239477,0.21681067,-9.929992,-0.0034103473,-0.0017827059,-0.00015130933 +1300000,imu,-0.22340873,0.20886095,-9.952463,-0.002398813,-0.0040705767,0.00050937245 +1304000,imu,-0.21742529,0.19935451,-9.937316,-0.0008682139,-0.007982814,0.0020745576 +1308000,imu,-0.17588362,0.1956015,-9.924798,-0.0013309554,-0.008062598,0.0005844382 +1308000,mag,0.009856414,-0.21722277,0.4260794 +1312000,imu,-0.1667683,0.19272754,-9.931698,-0.003160377,-0.0060083456,-0.0028209195 +1316000,imu,-0.20252293,0.18560049,-9.910129,-0.0014763257,-0.005555951,0.0011451322 +1320000,imu,-0.21074891,0.21444924,-9.906502,0.00043742493,-0.003564855,0.0034297595 +1320000,mag,0.011252616,-0.21791632,0.43363723 +1324000,imu,-0.1998422,0.21762268,-9.905977,-0.0029400878,-0.0033355446,-3.8079415e-05 +1328000,imu,-0.2245292,0.20996095,-9.928084,-0.00496611,-0.007539489,-0.0017355451 +1332000,imu,-0.20336987,0.20515707,-9.929865,-0.0008291844,-0.008191507,-0.00076812104 +1332000,mag,0.0076531935,-0.21650933,0.42653504 +1336000,imu,-0.2081097,0.22380821,-9.922272,0.0018340049,-0.004782624,-0.00012538793 +1340000,imu,-0.23108904,0.2374919,-9.951992,-0.0010835249,-0.006337152,-0.00075525185 +1344000,imu,-0.20732321,0.2048962,-9.943615,-0.0017576027,-0.00813223,0.0018634254 +1344000,baro,487.6427 +1344000,mag,0.011809929,-0.22602549,0.4324631 +1348000,imu,-0.20617747,0.1709545,-9.91968,-0.0021002183,-0.0054967916,0.0014117723 +1352000,imu,-0.2040431,0.18170024,-9.9346,-0.0023318517,-0.005236294,0.002728796 +1356000,mag,0.007291649,-0.21855886,0.43584058 +1356000,imu,-0.2357446,0.24014035,-9.951602,-0.0002545024,-0.006665774,0.005113665 +1360000,imu,-0.23146288,0.25065374,-9.94796,-0.0015317133,-0.0055580656,0.0020576615 +1364000,imu,-0.2256844,0.22566532,-9.918854,-0.00084734405,-0.0064763464,-0.0003827137 +1368000,mag,0.011196263,-0.2148317,0.42765683 +1368000,imu,-0.25922182,0.20476355,-9.916339,-0.0027988974,-0.009693566,-0.00033698068 +1372000,imu,-0.25698662,0.17921244,-9.945873,-0.0048326105,-0.0065315645,0.0011373046 +1376000,imu,-0.2464711,0.18151759,-9.951118,-0.0016532304,-0.002461939,-0.0019570338 +1380000,imu,-0.21835658,0.18972676,-9.926104,0.0030670287,-0.0072970963,-0.0041698967 +1380000,mag,0.012895297,-0.21313529,0.43381646 +1384000,imu,-0.23493677,0.17882761,-9.932707,0.001144009,-0.0073889517,-0.0008611642 +1388000,imu,-0.26524276,0.18253258,-9.96532,-0.0028993166,-0.0061963606,-0.00089706486 +1392000,imu,-0.23384774,0.22912128,-9.946787,-0.003815608,-0.009100183,-0.0016611621 +1392000,mag,0.0099086445,-0.21468934,0.43215004 +1396000,imu,-0.20609713,0.21644628,-9.933634,-0.0025731735,-0.0078094234,0.00095589145 +1400000,imu,-0.20106903,0.17570366,-9.916644,0.00023377613,-0.007876686,0.0035595633 +1404000,mag,0.0060424344,-0.21660817,0.43292537 +1404000,imu,-0.18415639,0.20108482,-9.893386,-0.0013563747,-0.0075379233,-0.0004950295 +1408000,imu,-0.19003351,0.2327593,-9.918723,-0.004656334,-0.0047279913,-0.0028744747 +1412000,imu,-0.19433439,0.21914645,-9.924903,-0.0055148206,-0.004863808,0.0023939942 +1416000,baro,487.58636 +1416000,imu,-0.19544807,0.20159304,-9.935673,-0.0006390696,-0.0065125036,0.0029315627 +1416000,mag,0.0112896105,-0.21781562,0.43047997 +1420000,imu,-0.22162962,0.21123606,-9.952101,0.00062242954,-0.006827292,-0.00048030386 +1424000,imu,-0.24712202,0.21725208,-9.968147,-0.0024207155,-0.00649636,4.7183614e-05 +1428000,imu,-0.24544497,0.22479932,-9.954647,-0.0018288625,-0.007224084,0.00095610804 +1428000,mag,0.00938376,-0.22165106,0.43374595 +1432000,imu,-0.25345865,0.2405464,-9.913933,0.0016729886,-0.0066737095,0.00205169 +1436000,imu,-0.24808852,0.23321103,-9.922104,0.0011525047,-0.0055626635,0.00033603527 +1440000,imu,-0.21215324,0.20349951,-9.954489,-0.0043468755,-0.006614864,-0.0025576963 +1440000,mag,0.0073450636,-0.21397215,0.43095756 +1444000,imu,-0.22003925,0.19497171,-9.991484,-0.005032874,-0.0032568302,-0.002249869 +1448000,imu,-0.20714533,0.20298843,-9.995838,-0.0024492475,0.0011931964,-0.00252234 +1452000,imu,-0.24693541,0.18225431,-9.953086,0.0015225896,-0.00065985054,-0.0013532693 +1452000,mag,0.009647656,-0.20978615,0.4278573 +1456000,imu,-0.24983415,0.18541612,-9.946817,0.0030387098,-0.0039712763,-0.0017629988 +1460000,imu,-0.17030305,0.20965713,-9.951237,0.0017153922,-0.005210986,-0.001438017 +1464000,mag,0.01093873,-0.20961589,0.43462747 +1464000,imu,-0.21512029,0.18978143,-9.94581,-0.0023977342,-0.0063108457,-0.0024708929 +1468000,imu,-0.28578234,0.20673381,-9.965681,-0.0031491423,-0.006377901,-0.0020490591 +1472000,imu,-0.2421666,0.22582921,-9.952651,8.2425555e-05,-0.005642789,0.0012327284 +1476000,imu,-0.1958992,0.20411313,-9.952703,-0.00011273466,-0.005729775,-0.0012379248 +1476000,mag,0.010056486,-0.21482952,0.42749035 +1480000,imu,-0.22621413,0.19810048,-9.947153,0.0002304216,-0.0046177134,-0.0011260407 +1484000,imu,-0.22919512,0.20057152,-9.924774,-0.0021199507,-0.003113556,0.0001785403 +1488000,baro,487.7225 +1488000,mag,0.011215496,-0.21331225,0.43024197 +1488000,imu,-0.23731178,0.19385464,-9.938097,-0.0030503762,-0.0034750274,-0.0010165432 +1492000,imu,-0.26686186,0.20443541,-9.96834,-0.0038736663,-0.0056919544,-0.0028352204 +1496000,imu,-0.2360141,0.22720845,-9.960482,-0.0029524185,-0.0049089757,-0.0017498153 +1500000,imu,-0.2225028,0.21589549,-9.92157,0.002241913,-0.0026134027,-0.00033612445 +1500000,mag,0.012094782,-0.21351331,0.432201 +1504000,imu,-0.2359053,0.19825485,-9.921179,0.0006211864,-0.0054003843,0.00033596696 +1508000,imu,-0.22675139,0.2027584,-9.936964,-0.0014176656,-0.009063806,0.002789748 +1512000,mag,0.012673682,-0.21376704,0.43226662 +1512000,imu,-0.21007058,0.17579743,-9.957249,-0.0010892425,-0.0037351085,0.0008726956 +1516000,imu,-0.19282837,0.19420157,-9.954966,-0.0007033837,-0.0035916364,0.00013845392 +1520000,imu,-0.18334357,0.25023922,-9.9279,0.00043905166,-0.007920982,-0.0013460516 +1524000,mag,0.009647734,-0.2202514,0.42479876 +1524000,imu,-0.19039914,0.25097704,-9.931932,-0.0015566024,-0.00797537,-0.00010481763 +1528000,imu,-0.2422725,0.23538102,-9.9009075,-0.002384841,-0.009382319,0.00038726922 +1532000,imu,-0.2638483,0.22199787,-9.903516,-0.0032901915,-0.0072984453,-0.0005530048 +1536000,imu,-0.20981222,0.20951846,-9.975112,-0.0023551756,-0.008368396,-0.001222203 +1536000,mag,0.00806792,-0.21946156,0.42866412 +1540000,imu,-0.19759765,0.19617626,-9.9872875,0.0011619896,-0.010386219,-0.0019900545 +1544000,imu,-0.21090834,0.24387649,-9.949705,0.0026939346,-0.005438817,0.0006534348 +1548000,imu,-0.21965235,0.24056533,-9.908979,0.0017320917,-0.0029348077,0.0030162209 +1548000,mag,0.012133996,-0.20744163,0.42231107 +1552000,imu,-0.23081784,0.22297636,-9.9074,0.0006944975,-0.0059085656,0.0008474181 +1556000,imu,-0.22015753,0.22738846,-9.922397,-0.0009141398,-0.004665705,-0.0024765877 +1560000,baro,487.5676 +1560000,imu,-0.20688987,0.1905749,-9.955671,-0.0014869217,-0.0046041785,-0.0014413384 +1560000,mag,0.009139878,-0.21137871,0.4293593 +1564000,imu,-0.18673776,0.19049518,-9.950938,0.0005422526,-0.006588825,-0.00042821685 +1568000,imu,-0.21308088,0.21346053,-9.927193,0.001419911,-0.0044302656,-0.0025337765 +1572000,mag,0.007349348,-0.21318093,0.4280835 +1572000,imu,-0.24073392,0.21409483,-9.952578,0.0005265032,-0.0037311052,-0.0031032544 +1576000,imu,-0.26824343,0.20085464,-9.951322,-0.0025373027,-0.007167446,0.0017275203 +1580000,landed,1.0 +1580000,imu,-0.25006115,0.17688306,-9.969503,0.0013546938,-0.005694858,0.0024114638 +1584000,imu,-0.1850183,0.18590726,-9.9545,0.0032989227,-0.0055639204,0.00011089369 +1584000,mag,0.010800629,-0.22250602,0.4347011 +1588000,imu,-0.17822,0.20341112,-9.900007,-0.0034039568,-0.007398997,-0.00061538094 +1592000,imu,-0.18119761,0.18736897,-9.899977,-0.0030009071,-0.007550778,0.00035386425 +1596000,mag,0.013836548,-0.21203578,0.42410868 +1596000,imu,-0.17828396,0.19509716,-9.914258,0.000102409846,-0.007136254,0.0016636729 +1600000,imu,-0.19621189,0.19870374,-9.933787,-0.0024742268,-0.004337111,0.0024729602 +1604000,imu,-0.22706117,0.18234019,-9.922327,-0.0052426467,-0.005692469,-0.00013485302 +1608000,mag,0.012521479,-0.22212851,0.42470178 +1608000,imu,-0.24052264,0.17784873,-9.891087,-0.0047525554,-0.007562337,0.00030708304 +1612000,imu,-0.23396152,0.19381163,-9.903349,-0.0026345204,-0.0038087268,0.0007794333 +1616000,imu,-0.2095966,0.20644474,-9.94323,-0.004033387,-0.0011115888,-0.0048761475 +1620000,imu,-0.19759184,0.14561059,-9.943505,-0.0037012552,-0.0030125035,-0.0034595665 +1620000,mag,0.01546541,-0.21723142,0.4275831 +1624000,imu,-0.1816939,0.13892096,-9.921701,-0.0023067277,-0.005090821,-0.004133874 +1628000,imu,-0.18253651,0.1941754,-9.922161,-0.002465002,-0.006522231,-0.004628166 +1632000,mag,0.014940282,-0.2115584,0.43654814 +1632000,imu,-0.21930334,0.16492139,-9.931524,-0.001662441,-0.0029491305,0.0015507054 +1632000,baro,487.69434 +1636000,imu,-0.21042806,0.1575193,-9.946936,-0.002734284,-0.0025226881,0.0039899703 +1640000,imu,-0.18732077,0.18890394,-9.937282,-0.0027195143,-0.003317962,0.0011829061 +1644000,mag,0.012634325,-0.21193583,0.43311414 +1644000,imu,-0.20542191,0.19804694,-9.9548,-0.0043952996,-0.0030298177,-0.00058641296 +1648000,imu,-0.22342175,0.177042,-9.961384,-0.0050550434,-0.0032834772,-0.00021067758 +1652000,gps,488098.0,85456074.0,473977508.0,-0.01,0.0,0.01 +1652000,imu,-0.20349006,0.1748011,-9.94879,-0.004060476,-0.008648741,0.002137412 +1656000,mag,0.01131919,-0.2205758,0.4277168 +1656000,imu,-0.20839253,0.1872798,-9.944411,-0.00038601182,-0.0097973505,0.0010455878 +1660000,imu,-0.23334536,0.19683766,-9.9096985,0.0031956176,-0.0033297227,-0.0045988406 +1664000,imu,-0.24101906,0.22418429,-9.919223,0.00011514948,-0.0046984586,-0.003705796 +1668000,mag,0.015297384,-0.20929432,0.42871705 +1668000,imu,-0.25375012,0.21588741,-9.9212,0.00034744112,-0.005228861,0.0005998711 +1672000,imu,-0.24154611,0.2171135,-9.900779,0.0022043458,-0.0044239457,-0.0019573593 +1676000,imu,-0.23251118,0.20037533,-9.935313,0.0010510234,-0.004644108,-0.0020450815 +1680000,imu,-0.20112638,0.1686136,-9.920873,-0.0011021072,-0.0039043298,0.0009234845 +1680000,mag,0.014116554,-0.21367246,0.4291701 +1684000,imu,-0.16634688,0.18468662,-9.903857,-0.0021333918,-0.0058957436,-0.0014107443 +1688000,imu,-0.18914443,0.18805736,-9.943371,0.0013408144,-0.007984468,-0.00071542116 +1692000,imu,-0.21721151,0.19310871,-9.966284,0.0015892657,-0.005232683,4.687981e-05 +1692000,mag,0.011293884,-0.21924445,0.42373636 +1696000,imu,-0.22379339,0.19748564,-9.976332,0.0013006964,-0.001209639,-0.000573354 +1700000,imu,-0.2533136,0.19120483,-9.957775,0.0030460325,-0.0023769527,-0.0017834008 +1704000,imu,-0.25923166,0.17228548,-9.949722,0.001872499,-0.008186936,-0.0022031087 +1704000,mag,0.007113549,-0.2189399,0.43618056 +1704000,baro,487.5676 +1708000,imu,-0.23347795,0.19153152,-9.953365,-0.002095528,-0.006404055,0.00016195473 +1712000,imu,-0.21013516,0.22465321,-9.959757,-0.0014591976,-0.004582271,3.543811e-05 +1716000,mag,0.012193528,-0.2176083,0.4309297 +1716000,imu,-0.2208319,0.22429115,-9.944412,-0.0033395507,-0.006168392,-0.0031194675 +1720000,imu,-0.23191112,0.20560001,-9.912106,-0.0067145303,-0.0050099734,-0.0030056618 +1724000,imu,-0.21059158,0.19321589,-9.926846,-0.0045320964,-0.009882635,-0.002346734 +1728000,mag,0.009699121,-0.20451339,0.42893216 +1728000,imu,-0.20866686,0.17999493,-9.951224,-0.0020512722,-0.011793614,-0.0027276464 +1732000,imu,-0.20900618,0.19254221,-9.928143,-0.0019025302,-0.0088466415,0.0014518284 +1736000,imu,-0.21222958,0.20690614,-9.937546,-0.00018054509,-0.0054022213,0.002357193 +1740000,mag,0.016498737,-0.22167772,0.4268592 +1740000,imu,-0.21372843,0.1730353,-9.9846945,0.0002158362,-0.0028668246,-0.0006106191 +1744000,imu,-0.20978443,0.18861724,-9.983575,-0.0027820321,-0.0028640993,0.00017922257 +1748000,imu,-0.19896588,0.18639933,-9.94079,-0.0015183408,-0.0068801325,0.00065525796 +1752000,mag,0.0041101407,-0.2145086,0.42426047 +1752000,imu,-0.21849069,0.20228459,-9.92646,-0.0017375721,-0.006921985,-0.0022973034 +1756000,imu,-0.22467847,0.22600353,-9.953527,-9.711467e-05,-0.0031675634,-0.0034437678 +1760000,imu,-0.21773545,0.2020286,-9.980736,-0.0018274963,-0.0077964794,-0.0029152741 +1764000,imu,-0.2168879,0.2133949,-9.960898,-0.0024745292,-0.011187099,-0.0020259758 +1764000,mag,0.0074376655,-0.21369508,0.42742217 +1768000,imu,-0.2083566,0.20610301,-9.936206,0.0021114487,-0.008505761,0.000636805 +1772000,imu,-0.18669216,0.16689384,-9.9559765,0.0017249527,-0.0052584237,0.0027219325 +1776000,baro,487.6474 +1776000,mag,0.011375987,-0.21874863,0.4290357 +1776000,imu,-0.19571961,0.16945796,-9.948988,-0.00070730026,-0.0067834225,0.0016098619 +1780000,imu,-0.21089399,0.18129739,-9.964777,-0.00094924675,-0.007727339,0.00023132646 +1784000,imu,-0.18572587,0.17333508,-9.972879,0.0012526339,-0.0059683956,-0.00016264069 +1788000,imu,-0.17398745,0.16860957,-9.951731,0.0027519225,-0.003965933,-0.003956461 +1788000,mag,0.010125246,-0.21872137,0.43192127 +1792000,imu,-0.17996728,0.19773947,-9.933477,0.0012740954,-0.0034085724,-0.003981013 +1796000,imu,-0.22513656,0.2109269,-9.934032,-0.00019245135,-0.0048743472,0.00049746834 +1800000,imu,-0.25269055,0.19083668,-9.945785,-6.609806e-05,-0.0060006725,0.0023622124 +1800000,mag,0.005432306,-0.20991455,0.4313204 +1804000,imu,-0.22568679,0.2208862,-9.933807,-0.0005393902,-0.0038689545,-0.000610328 +1808000,imu,-0.18144909,0.20194773,-9.949688,0.00011983568,-0.0037343472,-0.0011428711 +1812000,imu,-0.19557221,0.15935309,-9.958485,0.0007273965,-0.004556926,0.00025107563 +1812000,mag,0.008358565,-0.21930663,0.43189564 +1816000,imu,-0.23379959,0.18863213,-9.929623,0.0011915537,-0.0059090424,0.00063570874 +1820000,imu,-0.22453345,0.19177127,-9.927244,0.001414756,-0.006987161,0.00047138293 +1824000,imu,-0.2074815,0.1892023,-9.941903,0.00055557187,-0.0068482514,-0.0014972889 +1824000,mag,0.0154335145,-0.21949726,0.43295342 +1828000,imu,-0.2054505,0.19948657,-9.950218,-0.0012079617,-0.00792124,-0.0016117528 +1832000,imu,-0.21494097,0.21120998,-9.936724,-0.0007554383,-0.004918653,-0.0013143836 +1836000,imu,-0.2078447,0.23654425,-9.939278,-0.0003637612,-0.005616503,-0.00044024325 +1836000,mag,0.008242653,-0.21168824,0.42573425 +1840000,imu,-0.19303688,0.19785911,-9.965727,-0.0016282066,-0.0061369115,0.002171525 +1844000,imu,-0.20705011,0.18924256,-9.94335,-0.0021944738,-0.0058192397,-0.00019304834 +1848000,imu,-0.24264258,0.22985753,-9.934753,-0.0009960532,-0.0066381064,-0.00042755486 +1848000,baro,487.61453 +1848000,mag,0.0076301848,-0.21528652,0.43639642 +1852000,imu,-0.2206832,0.21222499,-9.9529,-0.0004857,-0.0077864197,0.00077120744 +1856000,imu,-0.19244383,0.18134266,-9.952833,-0.0011519934,-0.0062304228,1.6097968e-06 +1860000,mag,0.0063433014,-0.21550258,0.42670548 +1860000,imu,-0.22094822,0.19928613,-9.951716,-0.0011359411,-0.004313404,-7.67718e-05 +1864000,imu,-0.22736624,0.20037825,-9.94377,-0.0037977495,-0.0055885063,-0.00081018155 +1868000,imu,-0.22219306,0.19530697,-9.958298,-0.0028336148,-0.0019233669,0.0018151614 +1872000,mag,0.007344553,-0.21797146,0.4296644 +1872000,imu,-0.19987652,0.19753857,-9.942511,0.0009401993,-0.0017807159,0.000382671 +1876000,imu,-0.1873556,0.18314108,-9.916637,0.0022701838,-0.005380508,-0.00064030953 +1880000,imu,-0.20609173,0.18883112,-9.936405,-0.0010174096,-0.005383396,0.0011431539 +1884000,mag,0.0059177894,-0.21737769,0.42962626 +1884000,imu,-0.20148903,0.20425378,-9.976796,-0.0010098303,-0.00569595,0.0002451596 +1888000,imu,-0.21131805,0.20465873,-9.949897,0.00011255285,-0.0037786614,-0.0009774556 +1892000,imu,-0.22743282,0.18667936,-9.919718,5.2702922e-05,-0.0025187978,-0.0008921591 +1896000,imu,-0.19855791,0.20090425,-9.970499,0.00046133343,-0.003883077,0.0007666933 +1896000,mag,0.004521134,-0.21770638,0.425925 +1900000,imu,-0.17757751,0.21144609,-9.946393,-0.0006772393,-0.004284035,-0.001266825 +1904000,imu,-0.20049343,0.20296282,-9.930717,0.00020422606,-0.0057174866,-0.0025058738 +1908000,imu,-0.20505056,0.20200942,-9.939703,-9.815583e-05,-0.0053849085,-0.00040179712 +1908000,mag,0.01007897,-0.21865457,0.4234866 +1912000,imu,-0.19754285,0.18687989,-9.947618,-0.0010487008,-0.0060189567,-0.0018067674 +1916000,imu,-0.19785586,0.18859042,-9.957923,-0.0018526554,-0.0070481217,-0.0011805004 +1920000,mag,0.015528232,-0.2169381,0.43148807 +1920000,baro,487.61923 +1920000,imu,-0.18231976,0.1980247,-9.97082,-0.0033977951,-0.0061064027,-0.00016919896 +1924000,imu,-0.18286094,0.20250764,-9.959145,-0.0022450045,-0.004598609,-0.0033381847 +1928000,imu,-0.21289042,0.1833656,-9.932419,0.0008280859,-0.003714282,-0.0031889754 +1932000,mag,0.008474116,-0.21907447,0.43389174 +1932000,imu,-0.24795526,0.18717802,-9.947649,0.0016525642,-0.00572072,-0.001120375 +1936000,imu,-0.24244773,0.18371128,-9.938493,-0.0014866396,-0.0074111386,-0.0029501186 +1940000,imu,-0.22325474,0.17441486,-9.929708,-0.0022650808,-0.007894249,-0.0027878734 +1944000,mag,0.015046192,-0.21797326,0.4313319 +1944000,imu,-0.21626407,0.18658262,-9.937304,0.0021609843,-0.0058380263,0.00041257145 +1948000,imu,-0.21972561,0.20357189,-9.958454,-0.0011370071,-0.0020345503,0.003200166 +1952000,imu,-0.22514136,0.24099995,-9.970203,-0.0039165947,-0.004176894,0.004658879 +1956000,mag,0.0023666748,-0.21833062,0.42825243 +1956000,imu,-0.19609338,0.23696089,-9.950072,0.0008503369,-0.004108623,0.0030781422 +1960000,imu,-0.19343531,0.22577487,-9.928204,-0.0005426854,-0.002805818,-0.00035899293 +1964000,imu,-0.22778009,0.24047728,-9.929057,-0.0023718923,-0.004541965,-0.0014650596 +1968000,mag,0.012313299,-0.21467032,0.42979613 +1968000,imu,-0.23627295,0.2252274,-9.932182,-0.0007300069,-0.006142205,0.0017535863 +1972000,imu,-0.21639408,0.1932109,-9.9382515,-0.0021538653,-0.007400021,0.004390595 +1976000,imu,-0.20956779,0.1922784,-9.92181,-0.0017622521,-0.0036902486,0.004601244 +1980000,imu,-0.22701111,0.17116556,-9.903995,-0.0005839709,0.0005190635,0.0015926221 +1980000,mag,0.010911112,-0.2176578,0.4309737 +1984000,imu,-0.24365282,0.18645225,-9.907583,-0.0024613468,-0.00020356876,-0.001301189 +1988000,imu,-0.21174026,0.20260876,-9.909181,-0.0036318775,-0.0020660954,-0.0026640105 +1992000,mag,0.014726248,-0.21366483,0.42996514 +1992000,baro,487.67557 +1992000,imu,-0.20923266,0.1819926,-9.9257765,-0.0025823158,-0.0020960064,-0.0021350717 +1996000,imu,-0.24780296,0.1905533,-9.925442,-0.0015808727,-0.0044172914,0.00029546805 +2000000,imu,-0.21135676,0.1837934,-9.908755,-0.0015897937,-0.006117894,-0.0024191947 +2004000,imu,-0.19849831,0.183886,-9.920879,0.0008450284,-0.0049433764,-0.0019231997 +2004000,mag,0.009518425,-0.21831696,0.42779332 +2008000,imu,-0.23073743,0.2139704,-9.945264,0.0031275952,-0.004738724,-0.00011067232 +2012000,imu,-0.2294352,0.2128901,-9.967234,-0.00012823276,-0.0040628933,-0.0011397708 +2016000,imu,-0.23641792,0.17711514,-9.975189,-0.0010110906,-0.0026482649,-0.0012810449 +2016000,mag,0.0089427205,-0.21522099,0.42523867 +2020000,imu,-0.24553609,0.19122556,-9.926865,0.0013779998,-0.0038991324,-0.0021627592 +2024000,imu,-0.24476458,0.1889196,-9.906358,0.00014864354,-0.0034338261,-0.0012062311 +2028000,imu,-0.22763094,0.16013224,-9.927761,-0.0012485946,-0.0064568426,-0.002193531 +2028000,mag,0.007814778,-0.21413413,0.42105144 +2032000,imu,-0.22253212,0.19476108,-9.947703,0.0011181792,-0.009063867,-0.0025402892 +2036000,imu,-0.21764636,0.20917594,-9.950593,0.0029754003,-0.0047524064,0.0011085595 +2040000,mag,0.012214604,-0.2144007,0.4232391 +2040000,imu,-0.22171205,0.18998985,-9.946843,0.0028467302,-0.005240775,0.00082102226 +2044000,imu,-0.24013071,0.1962252,-9.967814,-0.0007179402,-0.0068038595,-0.0018514963 +2048000,imu,-0.24112818,0.20835991,-9.968187,-0.0016761969,-0.0052533885,-0.0009268927 +2052000,gps,488101.0,85456074.0,473977508.0,0.03,0.0,0.0 +2052000,mag,0.014136168,-0.21396343,0.43192896 +2052000,imu,-0.22206914,0.19041817,-9.948614,0.0010877678,-0.0065250113,0.002170135 +2056000,imu,-0.1942262,0.17707947,-9.928103,-0.000543427,-0.009091992,0.0020649603 +2060000,imu,-0.22254549,0.14835437,-9.920279,-0.0025054195,-0.0063028145,0.003336007 +2064000,mag,0.016576275,-0.21699587,0.4246849 +2064000,imu,-0.22550532,0.17145713,-9.927539,-0.0023347759,-0.0059401626,0.003292025 +2064000,baro,487.57227 +2068000,imu,-0.21707933,0.21203338,-9.943429,-0.0029882968,-0.006841172,-0.0008105443 +2072000,imu,-0.2238361,0.21180275,-9.943834,-0.0028114084,-0.00635181,-0.0016536808 +2076000,mag,0.006636007,-0.2072136,0.428624 +2076000,imu,-0.22177006,0.21457863,-9.913224,-0.0034224608,-0.006815744,-0.00016707751 +2080000,imu,-0.2175141,0.19924916,-9.925886,-0.0007503642,-0.003978046,0.0002878934 +2084000,imu,-0.2156666,0.16306342,-9.967738,0.004407511,-0.0050560753,-0.0037290733 +2088000,imu,-0.21011317,0.13847551,-9.947239,0.0016713312,-0.008721119,-0.004109457 +2088000,mag,0.01084846,-0.2222557,0.43106914 +2092000,imu,-0.19154023,0.1774497,-9.953562,-0.0020813749,-0.0076479837,-0.00065533246 +2096000,imu,-0.22379787,0.1966591,-9.969904,-0.0036911622,-0.0043499907,0.0013824679 +2100000,imu,-0.25380793,0.2050467,-9.933706,-0.0030672958,-0.00217741,0.004382558 +2100000,mag,0.0072666984,-0.21911113,0.4267137 +2104000,imu,-0.2271778,0.23359224,-9.9462185,-0.0012233736,-0.004005384,0.0020318546 +2108000,imu,-0.19167395,0.22925957,-9.968612,-0.0022063348,-0.0073725823,-0.0030537539 +2108000,mag,0.0041542514,-0.21906093,0.43481055 +2112000,imu,-0.19586147,0.19164889,-9.959106,-0.0042592,-0.0075244657,-0.0036125265 +2116000,imu,-0.2029691,0.1969717,-9.94697,-0.0026019693,-0.00794109,-0.0008695968 +2120000,imu,-0.20810162,0.21083182,-9.964118,-0.00024372705,-0.0063692876,-2.2686558e-05 +2124000,mag,0.007119644,-0.21816349,0.43376082 +2124000,imu,-0.25097856,0.18593086,-9.98724,-0.0008797012,-0.0028465805,-0.003066112 +2128000,imu,-0.23168738,0.18514729,-9.944891,-0.0021228872,-0.0012065689,0.00025115392 +2132000,imu,-0.18512583,0.20656839,-9.935766,-0.0025798546,-0.0055613066,0.0038340932 +2136000,baro,487.53473 +2136000,imu,-0.19829845,0.20629843,-9.960402,-0.001991469,-0.00929839,0.0033517329 +2136000,mag,0.013940998,-0.21484277,0.43309867 +2140000,imu,-0.21659285,0.20072472,-9.958886,-0.0028545733,-0.009323832,0.0013955795 +2144000,imu,-0.2419182,0.20657396,-9.946103,-0.0034973584,-0.0063888044,-0.0018689197 +2148000,imu,-0.21514994,0.21773364,-9.9372425,-0.0032080521,-0.0049172593,-0.0006026291 +2148000,mag,0.0057876008,-0.21332966,0.4303545 +2152000,imu,-0.18417059,0.2261896,-9.933979,-0.002409068,-0.0032248222,-0.00047070888 +2156000,imu,-0.19117412,0.20983683,-9.976907,-0.0011379186,-0.004538843,0.00027590024 +2160000,imu,-0.20245042,0.22127317,-10.003473,-0.0010399949,-0.0072025564,0.0025427972 +2160000,mag,0.010600846,-0.21418911,0.43163717 +2164000,imu,-0.22859707,0.2323528,-9.974075,-0.001991154,-0.0026168225,0.0036184222 +2168000,imu,-0.22443967,0.21997115,-9.9220295,-0.003023408,-0.0060885036,0.002769882 +2172000,imu,-0.21214223,0.20687501,-9.892863,-0.0002926372,-0.00881309,0.0005357839 +2172000,mag,0.008133186,-0.21524917,0.4262159 +2176000,imu,-0.22827178,0.17924114,-9.907513,4.746113e-05,-0.0062526804,0.0010160847 +2180000,imu,-0.22093928,0.19539101,-9.939642,-0.0036621946,-0.006129904,8.285299e-05 +2184000,mag,0.015762923,-0.2176415,0.42737225 +2184000,imu,-0.18899673,0.2210098,-9.958571,-0.0029349525,-0.006449588,-0.0032065792 +2188000,imu,-0.20284858,0.21762696,-9.940456,-0.0019491725,-0.006408404,-0.00085621234 +2192000,imu,-0.22343257,0.21358487,-9.957197,-0.0023249334,-0.003949913,0.0016413071 +2196000,mag,0.0069089523,-0.21686314,0.4271875 +2196000,imu,-0.22893524,0.20503782,-9.973835,-0.0018554777,-0.0031336276,0.002129232 +2200000,imu,-0.23445848,0.22286363,-9.970142,-0.00011783211,-0.0038961435,0.002314364 +2204000,imu,-0.2320532,0.25594115,-9.941229,-0.00014141007,-0.0048885206,0.0006845756 +2208000,mag,0.010698732,-0.21183515,0.43055302 +2208000,imu,-0.2159459,0.20822214,-9.934605,-0.0022067055,-0.00476726,0.001542839 +2208000,baro,487.61923 +2212000,imu,-0.19019061,0.16397838,-9.94128,-0.0021938984,-0.0029248858,0.00036255954 +2216000,imu,-0.21542692,0.19901265,-9.955743,-0.00033189796,-0.006348365,-0.0034710688 +2220000,imu,-0.24487294,0.2103215,-9.972397,-0.0006550384,-0.008443456,-0.0039422316 +2220000,mag,0.009725231,-0.21520956,0.43307626 +2224000,imu,-0.23533902,0.20010544,-9.954058,-0.0031385226,-0.0068259994,-0.001867393 +2228000,imu,-0.24194658,0.19010456,-9.939749,-0.0010611437,-0.0049009984,0.0001313834 +2232000,mag,0.0061061876,-0.21783614,0.42795104 +2232000,imu,-0.23344192,0.1888156,-9.945786,-0.0014731237,-0.003993468,0.0011766484 +2236000,imu,-0.19860585,0.1850871,-9.963136,-0.0040110513,-0.005033237,-0.0008784096 +2240000,imu,-0.20696531,0.18558003,-9.93778,-0.0025285364,-0.00703555,-0.00021817173 +2244000,mag,0.015714316,-0.20976533,0.42684492 +2244000,imu,-0.23247916,0.19753887,-9.922964,-0.0025571177,-0.007217395,0.0027324676 +2248000,imu,-0.21152166,0.2034149,-9.938555,-0.0029484986,-0.0059674648,0.00086523825 +2252000,imu,-0.20423616,0.19498125,-9.949062,-0.0016247965,-0.0058460366,-0.0022658755 +2256000,mag,0.013135532,-0.217612,0.4287797 +2256000,imu,-0.21280995,0.17265081,-9.940155,1.1738094e-05,-0.006259968,-0.0004965572 +2260000,imu,-0.19859236,0.18430947,-9.921692,-0.0016582097,-0.0031338935,-0.0010976925 +2264000,imu,-0.19130687,0.17374568,-9.953596,-0.0026707763,-0.0031621112,-0.004268866 +2268000,imu,-0.19220385,0.15447423,-9.986832,-0.0008572301,-0.0057117757,-0.0028552418 +2268000,mag,0.014243661,-0.20913698,0.4248368 +2272000,imu,-0.18131566,0.17110509,-9.954154,-0.00265675,-0.0055070794,-0.0016000386 +2276000,imu,-0.19786114,0.19014548,-9.954187,-0.005970001,-0.0064183595,-0.002973958 +2280000,mag,0.013272636,-0.21328321,0.42351216 +2280000,baro,487.60043 +2280000,imu,-0.21131219,0.20594181,-9.94442,-0.0029676596,-0.005099871,-0.0010216879 +2284000,imu,-0.17740494,0.20248665,-9.911821,-0.0011203487,-0.004310525,0.0016111527 +2288000,imu,-0.17713787,0.18127629,-9.948472,-0.004191063,-0.0060068583,0.0014281113 +2292000,imu,-0.22730999,0.20066264,-9.937351,-0.0045973933,-0.0073273587,0.00067239674 +2292000,mag,0.0053444956,-0.21458907,0.4315673 +2296000,imu,-0.24988407,0.22855848,-9.935804,-0.0033140995,-0.0048471973,-0.00071546185 +2300000,imu,-0.2308056,0.2059225,-9.954313,-0.0014849738,-0.0025800797,-0.0016199521 +2304000,imu,-0.19209528,0.19452205,-9.923151,-0.0016510637,-0.004965081,-0.000118282966 +2304000,mag,0.011597544,-0.21509568,0.42253926 +2308000,imu,-0.20961213,0.1634635,-9.89305,-0.0044575064,-0.005595855,0.0007729553 +2312000,imu,-0.22550365,0.15844142,-9.893062,-0.0051121395,-0.0047308947,0.0011964254 +2316000,mag,0.0082697105,-0.21388619,0.43477252 +2316000,imu,-0.19302182,0.22292462,-9.910943,-0.0023205697,-0.0073061124,0.001628249 +2320000,imu,-0.20434733,0.23413609,-9.93335,-0.0028747087,-0.005179731,-0.0018044728 +2324000,imu,-0.20955984,0.19078325,-9.949354,-0.00044428918,-0.003336284,-0.0024596876 +2328000,mag,0.008957477,-0.22300632,0.4289037 +2328000,imu,-0.20240732,0.16637483,-9.950406,0.0029166106,-0.004095792,-0.0032921596 +2332000,imu,-0.2252952,0.18111739,-9.965198,-0.0018379086,-0.004056201,-0.0022057067 +2336000,imu,-0.22860202,0.17345005,-9.947645,-0.0054426505,-0.00769501,0.00056523876 +2340000,mag,0.009051933,-0.21157841,0.42654383 +2340000,imu,-0.21695802,0.17171831,-9.912909,-0.003913565,-0.009674649,0.0019734392 +2344000,imu,-0.22848283,0.2042642,-9.924398,0.000207569,-0.007022527,0.0006351154 +2348000,imu,-0.21795344,0.21034472,-9.93821,0.0017831527,-0.0042258147,-0.0014607308 +2352000,mag,0.0039806524,-0.22178556,0.42442927 +2352000,baro,487.58636 +2352000,imu,-0.2223523,0.22189854,-9.946377,0.0019833476,-0.006327874,0.0013347929 +2356000,imu,-0.2185989,0.2293412,-9.961539,0.0025537137,-0.009863275,-0.00054268725 +2360000,imu,-0.23466286,0.20957524,-9.962086,-0.000756436,-0.011440454,0.00065094465 +2364000,mag,0.012875234,-0.21576771,0.43022206 +2364000,imu,-0.22124851,0.18334801,-9.934757,-0.0031910092,-0.006070502,0.002789757 +2368000,imu,-0.20295638,0.17280656,-9.923672,-0.0021147246,-0.00068014505,-0.0009149214 +2372000,imu,-0.24049306,0.21352702,-9.927321,0.001415131,-0.004378694,-0.00043648705 +2376000,mag,0.0048168893,-0.21566834,0.43328506 +2376000,imu,-0.2250166,0.22397967,-9.941072,0.0012183782,-0.009006218,0.0025220166 +2380000,imu,-0.2091341,0.18480219,-9.985325,0.00081462506,-0.007967,0.00035102817 +2384000,imu,-0.19998679,0.21764225,-9.964258,-0.0027195439,-0.004639616,0.0001540883 +2388000,imu,-0.18902111,0.27122238,-9.917648,-0.004911717,-0.002767983,0.0031281188 +2388000,mag,0.009751603,-0.21908122,0.4297666 +2392000,imu,-0.21293186,0.23167445,-9.937885,-0.00036510755,-0.0044535752,-0.0011351982 +2396000,imu,-0.22405457,0.16375633,-9.945932,0.0006167641,-0.007347411,-0.0027356346 +2400000,imu,-0.21107143,0.19254315,-9.9233265,-0.001058437,-0.0069079874,0.0016575436 +2400000,mag,0.008717666,-0.2192658,0.42773378 +2404000,imu,-0.23220325,0.2050806,-9.901172,-0.0028791372,-0.006206147,0.0012520258 +2408000,imu,-0.21852466,0.19622423,-9.905035,-0.0011191278,-0.005303196,-0.0018858869 +2412000,mag,0.008594649,-0.21328476,0.42639685 +2412000,imu,-0.19269148,0.25287116,-9.904455,-1.1122784e-06,-0.0030382825,-0.0034250345 +2416000,imu,-0.18354528,0.25282457,-9.911284,0.00036978035,-0.0029001622,0.0012391077 +2420000,imu,-0.18743801,0.20383893,-9.924812,0.00018067377,-0.008738424,0.0001578742 +2424000,baro,487.60983 +2424000,mag,0.010217803,-0.21879321,0.42824 +2424000,imu,-0.20783073,0.19579925,-9.911154,-0.003073088,-0.008765235,-0.0037712732 +2428000,imu,-0.21230456,0.16225106,-9.912788,-0.00495865,-0.005509567,9.17714e-05 +2432000,imu,-0.22426015,0.16271538,-9.926667,0.00033555314,-0.0068964707,0.0016973361 +2436000,mag,0.0060149455,-0.21838789,0.4250821 +2436000,imu,-0.23322302,0.20289385,-9.914385,0.0008765718,-0.0066915196,0.001219228 +2440000,imu,-0.22433382,0.18356834,-9.901869,-7.748466e-05,-0.0038668686,-0.001009795 +2444000,imu,-0.2273474,0.20128322,-9.928268,0.0016408599,-0.0030826451,-0.0012174206 +2448000,imu,-0.22438484,0.2117283,-9.92744,-0.00083085184,-0.0064149564,-0.00066583947 +2448000,mag,0.009883662,-0.21416123,0.43130502 +2452000,gps,488103.0,85456074.0,473977508.0,0.02,0.0,0.0 +2452000,imu,-0.23216584,0.18581527,-9.919835,-0.00092354295,-0.00935307,-0.0015310872 +2456000,imu,-0.2579542,0.181042,-9.926712,-0.0005174925,-0.006571682,0.0006379211 +2460000,mag,0.00488898,-0.21908197,0.42741632 +2460000,imu,-0.22043484,0.16977231,-9.940256,-0.0012353437,-0.002355485,-0.0008875582 +2464000,imu,-0.20601705,0.18275616,-9.933331,-0.0021087155,-0.0032413732,-0.0035763828 +2468000,imu,-0.23637591,0.21292114,-9.9130535,-0.0025465554,-0.006312018,-0.00082580355 +2472000,mag,0.009753258,-0.21316665,0.42961735 +2472000,imu,-0.2362195,0.18570854,-9.942501,-0.0020184552,-0.007911054,0.0010735568 +2476000,imu,-0.22262962,0.1723335,-9.939651,-0.0024121492,-0.00801816,2.48935e-05 +2480000,imu,-0.21276169,0.18421242,-9.929272,-0.0012646575,-0.006530366,0.00015121324 +2484000,imu,-0.19427122,0.1864889,-9.9522915,0.0005770532,-0.0018569554,0.002799671 +2484000,mag,0.014577603,-0.21407783,0.4263847 +2488000,imu,-0.19905774,0.19107248,-9.928646,-0.0014949838,-0.0008256284,0.0021850974 +2492000,mag,0.012740275,-0.21904312,0.42795935 +2492000,imu,-0.21501578,0.19844235,-9.908268,-0.0010547653,-0.0043203626,-0.0007713969 +2492000,baro,487.6568 +2496000,imu,-0.20547941,0.19661693,-9.950717,-0.000653535,-0.00443664,-0.0020375904 +2500000,imu,-0.2290027,0.20171525,-9.953177,-0.0011309048,-0.0041322927,0.00036989426 +2504000,imu,-0.24869867,0.2094242,-9.930437,0.00044431933,-0.003923203,0.002530197 +2508000,imu,-0.20245707,0.21997932,-9.946445,-0.001836944,-0.005738885,0.0019632597 +2508000,mag,0.008507108,-0.21607642,0.4341166 +2512000,imu,-0.18257353,0.22981678,-9.957209,-0.0038052031,-0.011095271,0.0013676558 +2516000,imu,-0.19997159,0.21589516,-9.963492,-0.003851817,-0.009317528,6.126671e-05 +2520000,mag,0.014085382,-0.21675913,0.42547515 +2520000,imu,-0.19851643,0.20622455,-9.919409,-0.0045522684,-0.0071245274,-0.0019323658 +2524000,imu,-0.2004043,0.21621224,-9.903642,-0.0028866564,-0.008243041,-0.00011517116 +2528000,imu,-0.22983494,0.2061193,-9.930365,-0.0021096214,-0.0065337685,-0.00094168173 +2532000,mag,0.010786715,-0.21816787,0.4286942 +2532000,imu,-0.22670823,0.1746348,-9.924749,-0.0043072873,-0.006936118,-0.00090596965 +2536000,imu,-0.20562774,0.21174887,-9.927677,-0.0045481417,-0.008889649,0.0029582905 +2540000,imu,-0.21940923,0.22736238,-9.937398,-0.0027336287,-0.006166737,0.0019492665 +2544000,baro,487.52063 +2544000,imu,-0.22883683,0.19352071,-9.956135,-0.0033635818,-0.004003387,-0.0016692622 +2544000,mag,0.012326182,-0.2076648,0.42623553 +2548000,imu,-0.2362554,0.18330032,-9.980013,-0.0023349517,-0.0065164287,-0.0024448228 +2552000,imu,-0.24552609,0.22777078,-9.962931,-0.0006782623,-0.0068108835,-0.00041766895 +2556000,imu,-0.23141807,0.21768202,-9.94423,-0.00071418553,-0.0025616847,0.002780886 +2556000,mag,0.013517436,-0.21366812,0.43430838 +2560000,imu,-0.22905976,0.15924396,-9.965717,-0.0035366958,-0.0028375892,0.0021541973 +2564000,imu,-0.23034236,0.19470789,-9.946562,-0.005151241,-0.008499866,0.0030267364 +2568000,mag,0.011877205,-0.21814384,0.42302126 +2568000,imu,-0.20287448,0.2257091,-9.922649,-0.0015145316,-0.006279363,0.0032473723 +2572000,imu,-0.20480058,0.21589907,-9.942905,-0.00031298274,-0.0056824847,-0.0021880576 +2576000,imu,-0.19843349,0.1766424,-9.9385805,-0.0027299656,-0.0071625668,-0.003029491 +2580000,mag,0.015785703,-0.21696149,0.42717016 +2580000,imu,-0.20770702,0.17486009,-9.9188175,0.00023633966,-0.003043735,-0.0027535537 +2584000,imu,-0.2317497,0.19521812,-9.925867,0.002218598,-0.0028930767,-0.00055019313 +2588000,imu,-0.2098262,0.21513696,-9.958647,-0.0015857854,-0.0049864636,-0.00037157917 +2592000,imu,-0.20759025,0.226672,-9.98139,-0.0028512494,-0.005363741,-0.00043673348 +2592000,mag,0.0062789693,-0.21430662,0.43086046 +2596000,imu,-0.21510096,0.20712344,-9.960451,-0.0023221127,-0.0050462577,0.003611387 +2600000,imu,-0.20713407,0.20072764,-9.924187,-0.003240569,-0.004013353,0.003000946 +2604000,imu,-0.21723197,0.16662358,-9.932613,-0.0017369096,-0.0025648528,0.00031560424 +2604000,mag,0.009187504,-0.21658272,0.42754924 +2608000,imu,-0.20404531,0.18166979,-9.941061,-0.00032745642,-0.0045999615,0.0019590277 +2612000,imu,-0.18552038,0.19153911,-9.918074,-0.0009168755,-0.006343675,0.0015335511 +2616000,imu,-0.21305475,0.18334387,-9.913033,-2.9553134e-05,-0.005888361,-0.0010699409 +2616000,baro,487.6333 +2616000,mag,0.008837102,-0.22217558,0.4297166 +2620000,landed,1.0 +2620000,imu,-0.21343589,0.2048235,-9.91406,-0.0022139545,-0.0040007792,0.0001362295 +2624000,imu,-0.2459528,0.18923283,-9.962976,-0.0037653681,-0.0055108042,0.0018397615 +2628000,imu,-0.27732915,0.16655168,-9.93517,-0.002213875,-0.009853879,0.0009216274 +2628000,mag,0.008496371,-0.2109965,0.43064606 +2632000,imu,-0.22452477,0.19112837,-9.8980875,-0.0008269287,-0.01089916,-0.001633929 +2636000,imu,-0.23444456,0.21994263,-9.952356,-0.0013378103,-0.010157951,-0.0025551957 +2640000,mag,0.0048218514,-0.21601242,0.42029485 +2640000,imu,-0.24704476,0.2264664,-9.948671,-0.0013569627,-0.007538616,-0.0022687123 +2644000,imu,-0.21262106,0.2274945,-9.928656,-0.0021929785,-0.007836513,-0.0011973747 +2648000,imu,-0.22326677,0.22502242,-9.914457,-0.0041019893,-0.0051158024,-0.0005427568 +2652000,mag,0.012111649,-0.21743639,0.42455322 +2652000,imu,-0.22602555,0.21125053,-9.917418,-0.005320773,-0.0043522194,-0.0010354364 +2656000,imu,-0.2249933,0.20121674,-9.921501,-0.0015496395,-0.007126156,0.00089989 +2660000,imu,-0.22169355,0.21266904,-9.929327,-0.0015099399,-0.004136398,0.00066192035 +2664000,imu,-0.21960565,0.22465222,-9.957893,-0.003258491,-0.005026667,-0.0028938842 +2664000,mag,0.008806243,-0.21679224,0.43040496 +2668000,imu,-0.24143054,0.22876841,-9.931936,-0.00026562336,-0.0067734206,-0.0010895347 +2672000,imu,-0.20787957,0.22090751,-9.901018,0.0024545637,-0.007913661,-0.00068011787 +2676000,mag,0.006944873,-0.21876629,0.43323362 +2676000,imu,-0.19705984,0.22593653,-9.935845,-0.0007528104,-0.007243458,-0.0020984677 +2680000,imu,-0.23373768,0.20781673,-9.921318,-0.0024441914,-0.0067925924,-0.001205696 +2684000,imu,-0.22073577,0.18120353,-9.888699,0.0033051223,-0.0080740955,0.00013896941 +2688000,mag,0.009568842,-0.21850522,0.42880088 +2688000,imu,-0.20749862,0.20104061,-9.893908,-0.0010124618,-0.0077214125,0.0010706258 +2688000,baro,487.58636 +2692000,imu,-0.19724445,0.22339809,-9.910694,-0.00463654,-0.009666853,-0.000793829 +2696000,imu,-0.18522961,0.20238315,-9.930576,-0.001085655,-0.009659906,-0.00054748385 +2700000,mag,0.012769094,-0.21551734,0.43624163 +2700000,imu,-0.21754065,0.18486391,-9.9442425,-0.0010356914,-0.0060983333,0.001483528 +2704000,imu,-0.22590074,0.20139602,-9.950794,-0.0019139674,-0.0079095485,0.0021461756 +2708000,imu,-0.21244757,0.18416399,-9.935196,0.0022232719,-0.0073021795,0.0003683082 +2712000,mag,0.008715876,-0.21800114,0.43079078 +2712000,imu,-0.22706681,0.15837856,-9.931412,0.003203473,-0.0067177513,-0.00042230147 +2716000,imu,-0.20651025,0.17799346,-9.933817,0.00034782823,-0.010151039,-0.00093196577 +2720000,imu,-0.20192757,0.21273413,-9.934468,0.00025309713,-0.008475986,-0.00090613874 +2724000,imu,-0.24780855,0.1848722,-9.930743,-0.00019992662,-0.007988827,-0.0037770725 +2724000,mag,0.008621189,-0.2121966,0.42761648 +2728000,imu,-0.24068676,0.17192271,-9.926022,-0.00045794854,-0.005751704,-0.0031628236 +2732000,imu,-0.22694859,0.20180416,-9.925339,0.0007362797,-0.006822495,2.9027704e-05 +2736000,imu,-0.2107665,0.20324019,-9.919504,0.00016253718,-0.008107492,0.0019029479 +2736000,mag,0.008938323,-0.21526213,0.4320433 +2740000,imu,-0.18481542,0.1946873,-9.925317,-0.00034734124,-0.005236588,0.0004694724 +2744000,imu,-0.20844561,0.19646397,-9.910046,-0.001922004,-0.0071796454,-0.0016591557 +2748000,mag,0.01389089,-0.20987709,0.42757818 +2748000,imu,-0.22526427,0.19600758,-9.940839,-0.0012855494,-0.0079858415,-0.0013989927 +2752000,imu,-0.2567366,0.18888178,-9.957054,-0.0016682801,-0.0062157535,-0.0020620786 +2756000,imu,-0.25101712,0.21544601,-9.941592,-0.0035541584,-0.008300329,0.00048434458 +2760000,mag,0.015789479,-0.2171734,0.43204206 +2760000,baro,487.60983 +2760000,imu,-0.20603284,0.22652097,-9.948088,0.00041346165,-0.0085884305,0.00216859 +2764000,imu,-0.20927349,0.19809712,-9.90393,-0.00036877298,-0.008466371,0.0023304923 +2768000,imu,-0.21688518,0.19547786,-9.882761,-0.0013939413,-0.009159697,0.00056276046 +2772000,mag,0.010674159,-0.22085439,0.4375066 +2772000,imu,-0.20267478,0.23999427,-9.902132,-0.0018840462,-0.0064784293,0.0002108534 +2776000,imu,-0.23195785,0.25051302,-9.939278,-0.0021058707,-0.004039391,0.0017446957 +2780000,imu,-0.21627799,0.19636488,-9.927342,-0.0013916814,-0.0029499906,0.00053044484 +2784000,imu,-0.18230665,0.16694942,-9.918814,-0.0016446571,-0.0024986016,-0.00028583882 +2784000,mag,0.0060707307,-0.21243824,0.43288773 +2788000,imu,-0.22297224,0.1913963,-9.930279,-0.0010488668,-0.005332101,-0.00044514454 +2792000,imu,-0.23150532,0.22983497,-9.912851,-0.00018101241,-0.0068574734,-0.0015093257 +2796000,imu,-0.23390046,0.23236573,-9.907066,-0.00056252297,-0.005359653,-0.0004145411 +2796000,mag,0.0010270142,-0.21667019,0.42372113 +2800000,imu,-0.21540022,0.1942211,-9.913616,-0.0042742523,-0.004467508,-0.00078180357 +2804000,imu,-0.19413683,0.19551119,-9.925186,-0.003559847,-0.005646986,-0.002170976 +2808000,imu,-0.22901109,0.2233577,-9.922613,-0.0003586103,-0.0054574623,-0.003076478 +2808000,mag,0.001564872,-0.22015733,0.42740875 +2812000,imu,-0.2332882,0.21508972,-9.968289,-0.0022015204,-0.005617427,-0.00153182 +2816000,imu,-0.20237127,0.18229283,-9.978012,-0.0017062145,-0.0059681525,-0.0009187033 +2820000,mag,0.007898286,-0.21888152,0.42518404 +2820000,imu,-0.19880977,0.17464715,-9.937408,0.00024860917,-0.0027822144,-0.0011550359 +2824000,imu,-0.21406396,0.18658756,-9.906533,-0.002626501,-0.005417552,0.0023759855 +2828000,imu,-0.22111881,0.20973171,-9.891787,-0.0050457977,-0.006062997,-0.00040671695 +2832000,mag,0.007814349,-0.21246961,0.4306937 +2832000,baro,487.5535 +2832000,imu,-0.2066002,0.22369988,-9.921057,-0.0031808456,-0.0048825024,-0.0035425054 +2836000,imu,-0.19827592,0.20717923,-9.92776,0.00014974904,-0.007871308,-0.00033259435 +2840000,imu,-0.21785471,0.20472483,-9.912104,-0.0008888236,-0.009344702,0.00011743401 +2844000,imu,-0.21782261,0.18876249,-9.890187,-0.0054731607,-0.008852935,0.003124462 +2844000,mag,0.010611963,-0.22018097,0.42904028 +2848000,imu,-0.22044554,0.17956133,-9.9194565,-0.0033404266,-0.0051811025,0.001364401 +2852000,gps,488110.0,85456074.0,473977508.0,0.0,-0.01,0.01 +2852000,imu,-0.25426066,0.18818283,-9.943653,-0.00096476683,-0.005282646,-0.0028710573 +2856000,mag,0.011879918,-0.21858092,0.4299317 +2856000,imu,-0.22346091,0.19768499,-9.922047,0.0009384193,-0.0073342463,-0.0018551507 +2860000,imu,-0.19039975,0.1834512,-9.905567,0.0011652206,-0.009768386,-0.004102965 +2864000,imu,-0.22584954,0.16919515,-9.91802,-0.004264328,-0.008728579,-0.004221582 +2868000,mag,0.010930361,-0.21792269,0.43199867 +2868000,imu,-0.23199195,0.17991555,-9.934887,-0.0062252395,-0.0013115031,-0.0017001068 +2872000,imu,-0.24576086,0.19458686,-9.930442,-0.004080019,-0.0015177294,-0.0025663243 +2876000,imu,-0.25096652,0.19609699,-9.933544,0.0015782396,-0.004934551,-0.00028617508 +2880000,imu,-0.20028362,0.1807559,-9.899916,0.002441949,-0.00680693,0.0023604103 +2880000,mag,0.0062008426,-0.2149917,0.42901433 +2884000,imu,-0.18010259,0.18743797,-9.896526,-0.0024556427,-0.009225331,0.00041450025 +2888000,imu,-0.19954827,0.20448686,-9.930368,-0.0045894673,-0.0063073887,-0.0011421983 +2892000,mag,0.0044319574,-0.21918443,0.42987794 +2892000,imu,-0.19603106,0.21091399,-9.92765,-0.0025194502,-0.005084776,-0.001032887 +2896000,imu,-0.17177394,0.20909242,-9.936976,0.00043041998,-0.0070528113,-0.0011412475 +2900000,imu,-0.17580539,0.21837112,-9.934055,-0.0014244802,-0.005967379,0.002130286 +2904000,baro,487.59576 +2904000,imu,-0.22325082,0.21011914,-9.916648,-0.003638293,-0.0046727587,0.0040912256 +2904000,mag,0.0055399914,-0.2188064,0.42723498 +2908000,imu,-0.22792384,0.20030598,-9.932613,-0.0029948112,-0.0047354824,0.0014202362 +2912000,imu,-0.21308973,0.18858683,-9.955465,-0.0019197485,-0.004874969,-0.00084292336 +2916000,mag,0.010764806,-0.22110653,0.42901665 +2916000,imu,-0.25902933,0.17270891,-9.976919,-0.0018752014,-0.006049708,-0.0017310691 +2920000,imu,-0.25747058,0.19229744,-9.959244,-0.0007549642,-0.009394239,-4.034616e-05 +2924000,imu,-0.2118035,0.19709764,-9.9503,0.0005872762,-0.009692118,0.00027033803 +2928000,mag,0.011906775,-0.21794125,0.42577487 +2928000,imu,-0.161164,0.20561266,-9.9612465,0.00052118127,-0.009059037,0.00079649076 +2932000,imu,-0.17144282,0.21883482,-9.936281,-0.0006009021,-0.0042281584,0.0042269947 +2936000,imu,-0.21698344,0.19810759,-9.941555,-0.0029086927,-0.0025395444,0.0031680965 +2940000,mag,0.006583586,-0.2154023,0.43345293 +2940000,imu,-0.21907377,0.1836208,-9.950296,-0.0027659612,-0.0073036514,-0.0007354477 +2944000,imu,-0.21319246,0.18204674,-9.958093,-0.0022254148,-0.0055388175,-0.00043358217 +2948000,imu,-0.19760841,0.18472973,-9.954372,-6.9884205e-05,-0.0054622996,0.000748853 +2952000,imu,-0.21081306,0.18194051,-9.951014,-0.0007903445,-0.0042347335,-0.00028173925 +2952000,mag,0.013815494,-0.22277784,0.43285537 +2956000,imu,-0.21602069,0.18901758,-9.941381,-0.00091542373,-0.0042902343,-0.0032146836 +2960000,imu,-0.21277548,0.21213996,-9.923619,0.0015388427,-0.008274777,-0.00084490544 +2964000,imu,-0.21960789,0.21876061,-9.923178,0.00033237727,-0.0074974927,0.0019093361 +2964000,mag,0.012462092,-0.21384817,0.42514947 +2968000,imu,-0.2307947,0.23597112,-9.901966,0.00027837034,-0.0055663018,0.0016040716 +2972000,imu,-0.22371215,0.2526549,-9.923001,-0.00082612893,-0.007575414,0.0032801242 +2976000,baro,487.7319 +2976000,imu,-0.24066556,0.22004552,-9.955448,3.99033e-05,-0.010524066,0.0008809837 +2976000,mag,0.011609381,-0.22627272,0.43090227 +2980000,imu,-0.2544124,0.18979353,-9.954013,0.0017214237,-0.00842695,-4.8228703e-05 +2984000,imu,-0.20649512,0.18869798,-9.931121,0.0037405286,-0.0067166165,0.0029240893 +2988000,imu,-0.21231768,0.17803915,-9.934116,0.002781434,-0.007906656,-0.00046859655 +2988000,mag,0.016082076,-0.21841486,0.42924494 +2992000,imu,-0.22886705,0.17230754,-9.925911,-0.0003618473,-0.005236061,0.00047388737 +2996000,imu,-0.23686033,0.21314958,-9.901161,-0.0001792272,-0.0012518523,0.0027715168 +3000000,mag,0.0090396255,-0.22289743,0.43035436 +3000000,imu,-0.22716148,0.22166859,-9.940996,-0.0026655085,-0.0031586192,-0.0022607944 +3004000,imu,-0.22447611,0.21608743,-9.945486,-0.0017620769,-0.0072771898,-0.0035037377 +3008000,imu,-0.23839927,0.2107447,-9.914934,-0.0018546132,-0.00728276,-0.0026015867 +3012000,mag,0.011929767,-0.21885003,0.42926103 +3012000,imu,-0.22282048,0.18252109,-9.898756,-0.0030223164,-0.008759324,0.0008917403 +3016000,imu,-0.22506598,0.20317183,-9.916231,0.00043294128,-0.008322023,0.005216345 +3020000,imu,-0.21097758,0.20290694,-9.955338,-0.0006759448,-0.006114354,0.0028812606 +3024000,imu,-0.22821951,0.21297994,-9.96953,-0.0035670714,-0.004597265,-0.0013521335 +3024000,mag,0.0076655187,-0.21477011,0.4292934 +3028000,imu,-0.235687,0.20308049,-9.946869,-0.0006017345,-0.0054582134,-0.00083952316 +3032000,imu,-0.21615246,0.18159586,-9.9297905,-0.00020058178,-0.0070342217,0.00033743563 +3036000,mag,0.010045098,-0.21721227,0.4290831 +3036000,imu,-0.22488797,0.21741739,-9.930911,0.0004546478,-0.005154304,0.00017302427 +3040000,imu,-0.2290765,0.21951416,-9.941711,-0.00014368667,-0.0069456915,-0.0020685252 +3044000,imu,-0.21204665,0.20400994,-9.944027,-0.00440106,-0.007100315,-0.0012920327 +3048000,mag,0.0049674287,-0.22064857,0.43095735 +3048000,baro,487.62393 +3048000,imu,-0.1931549,0.22115287,-9.9319935,-0.0036453332,-0.0065460494,0.00088434364 +3052000,imu,-0.23014791,0.23097801,-9.943087,-0.0024643748,-0.0069263466,-0.000719303 +3056000,imu,-0.25344485,0.20426174,-9.942896,-0.0012910484,-0.0067398385,-0.0010981706 +3060000,mag,0.014941075,-0.22413406,0.42986006 +3060000,imu,-0.2218587,0.1738536,-9.909851,-0.00017518718,-0.007060549,0.00043733834 +3063999,imu,-0.21622218,0.16934599,-9.879592,-0.0015408954,-0.0055511827,0.0011651851 +3068000,imu,-0.23985082,0.19883113,-9.909859,-0.0036411092,-0.0036777528,-0.00011257799 +3071999,imu,-0.23684657,0.21415807,-9.928527,-0.0041736686,-0.003699193,0.0018252787 +3071999,mag,0.012473502,-0.21713726,0.42605403 +3076000,imu,-0.23044734,0.19130597,-9.925935,-0.00075017876,-0.0055724685,0.0037710378 +3079999,imu,-0.23681882,0.16850367,-9.923567,-0.0012909635,-0.0056058513,-7.496452e-05 +3084000,imu,-0.21882813,0.20136039,-9.9066,-0.0029260127,-0.0061069764,-0.0016869659 +3084000,mag,0.0038870485,-0.219217,0.42726222 +3087999,imu,-0.20642641,0.24344449,-9.905062,0.002007327,-0.009376766,-0.0008038706 +3092000,imu,-0.22951216,0.22262847,-9.936075,0.0035962309,-0.005500245,-0.001243803 +3095999,mag,0.009414651,-0.21743125,0.42686832 +3095999,imu,-0.24249661,0.19182642,-9.950491,-0.00086615206,-0.000821479,-0.0022796106 +3100000,imu,-0.21692567,0.1797801,-9.937597,-0.0044052782,-0.006963847,-0.003363711 +3103999,imu,-0.2254067,0.18250823,-9.94947,-0.0022318512,-0.009773382,-0.001238603 +3108000,imu,-0.2375691,0.19246726,-9.966767,-0.0013692039,-0.0051950286,0.000638637 +3108000,mag,0.015899237,-0.2152286,0.4282659 +3111999,imu,-0.23295583,0.20207909,-9.928877,-6.3817984e-05,-0.007871227,-0.0018335134 +3116000,baro,487.66147 +3116000,mag,0.0021887268,-0.21640873,0.43073753 +3116000,imu,-0.24133527,0.20085095,-9.905391,0.0012621677,-0.009003351,-0.0022657635 +3119999,imu,-0.2366657,0.19551459,-9.938145,-0.0010607445,-0.00771173,-0.001228213 +3124000,imu,-0.233229,0.22935998,-9.927005,-0.0034641295,-0.0063531366,-0.005202077 +3127999,imu,-0.21656941,0.2174739,-9.9265995,-0.0059752623,-0.003490199,-0.0030168754 +3132000,mag,0.01456171,-0.21584816,0.4270492 +3132000,imu,-0.20389065,0.18452011,-9.962721,-0.0061657364,-0.004628969,-0.0012890989 +3135999,imu,-0.20519024,0.18628947,-9.948146,-0.004922939,-0.0038188135,-0.003676756 +3140000,imu,-0.23584405,0.18106255,-9.900293,-0.004698388,-0.004907702,-0.0014409462 +3143999,imu,-0.23423257,0.18203402,-9.941223,-0.00469034,-0.0051130555,-0.00044341214 +3143999,mag,0.0068087317,-0.21425122,0.43164507 +3148000,imu,-0.19250208,0.18716915,-9.968931,-0.004608523,-0.0008618129,-0.0019524118 +3151999,imu,-0.19905916,0.18947282,-9.9449415,-0.00084178365,-0.004368611,0.0008531427 +3156000,imu,-0.23632309,0.1780208,-9.941715,0.00076622487,-0.009136013,0.0025882297 +3156000,mag,0.0118901525,-0.20659254,0.43313265 +3159999,imu,-0.23496279,0.21041304,-9.933551,-0.0026265017,-0.00787229,0.0008992192 +3164000,imu,-0.20521304,0.25631973,-9.972037,-0.005409102,-0.0058909003,-0.0014184356 +3167999,imu,-0.20370859,0.24260592,-9.96343,-0.0045843045,-0.0038202861,-0.0045294347 +3167999,mag,0.009559717,-0.21268004,0.4314401 +3167999,baro,487.71313 +3172000,imu,-0.20280273,0.22932853,-9.93578,-0.0032230332,-0.004612007,-0.0037953814 +3175999,imu,-0.21742193,0.22560711,-9.941318,-0.0017684811,-0.0047971956,0.0014957363 +3180000,mag,0.008854013,-0.21363842,0.42963827 +3180000,imu,-0.24221162,0.22001356,-9.935462,0.0012124254,-0.004370262,0.0030130276 +3183999,imu,-0.20908958,0.21424833,-9.9179,0.0010470195,-0.006699674,0.0021839915 +3188000,imu,-0.20349243,0.20855924,-9.913238,-0.0010900425,-0.004692031,0.002237283 +3191999,imu,-0.21369651,0.19455574,-9.926409,-0.0026903425,-0.004524578,0.0013721159 +3191999,mag,0.016553905,-0.21097586,0.42843616 +3196000,imu,-0.19767769,0.19113979,-9.926628,-0.00025620413,-0.008173189,0.0012617711 +3199999,imu,-0.20251931,0.19076878,-9.931086,0.0018484341,-0.009687758,0.0016669761 +3204000,mag,0.005954391,-0.22093576,0.4327475 +3204000,imu,-0.19680747,0.1911633,-9.933414,0.0003563375,-0.010653858,0.0023863711 +3207999,imu,-0.21759252,0.21455196,-9.931921,-0.0043885764,-0.007844349,2.9005355e-06 +3212000,imu,-0.2558853,0.21973407,-9.963315,-0.005074178,-0.0016139931,-0.0020057263 +3215999,imu,-0.25543147,0.21878242,-9.955328,-0.00020588344,-0.0022490858,-0.0016701203 +3215999,mag,0.0024916078,-0.22133015,0.42307216 +3220000,imu,-0.22841525,0.21373913,-9.90028,0.00050790573,-0.007028433,-0.0001139613 +3223999,imu,-0.22842643,0.19718353,-9.895674,0.0010284203,-0.0057602786,0.0027563004 +3228000,imu,-0.24664924,0.20574608,-9.911285,0.00019583294,-0.0032529763,0.0023321458 +3228000,mag,0.012594177,-0.2201292,0.43064344 +3231999,imu,-0.23975489,0.22458762,-9.92967,-0.0031048842,-0.0037624564,0.0011160505 +3236000,imu,-0.19341871,0.23214388,-9.954057,-0.0022255052,-0.007448591,0.0021889287 +3239999,baro,487.48776 +3239999,mag,0.004994842,-0.21424904,0.41727033 +3239999,imu,-0.17425582,0.21427047,-9.942626,-0.0054757497,-0.010386528,0.0023706416 +3244000,imu,-0.21658602,0.19340084,-9.911392,-0.0057950467,-0.0073038363,0.0013058622 +3247999,imu,-0.21472318,0.18587068,-9.892269,-0.0012138641,-0.0029893229,-0.0026543639 +3252000,imu,-0.20230371,0.18512931,-9.917745,-0.00020171766,-0.0044633537,-0.0007913921 +3252000,mag,0.0079738675,-0.21774824,0.42553136 +3252000,gps,488101.0,85456073.0,473977508.0,0.0,0.0,-0.04 +3256000,imu,-0.2145718,0.1889558,-9.939184,-0.00021384303,-0.0057135858,0.0040515587 +3260000,mag,0.0069425507,-0.22140607,0.4309739 +3260000,imu,-0.20388779,0.19472875,-9.952061,-0.00067279604,-0.005643422,0.0022853273 +3264000,imu,-0.18302262,0.20879167,-9.938328,-0.004039427,-0.00557335,0.0015403857 +3268000,imu,-0.20043844,0.21741864,-9.902885,-0.004117572,-0.0048687323,0.0008474228 +3272000,imu,-0.21812764,0.20302473,-9.928738,0.0009116642,-0.0059099537,0.0001072372 +3276000,imu,-0.193791,0.1910563,-9.966875,0.0013795496,-0.007348359,-0.0006802107 +3276000,mag,0.004019271,-0.21824779,0.42951918 +3280000,imu,-0.20269012,0.19986562,-9.946384,-0.0002296131,-0.0069521726,-5.8829013e-05 +3284000,imu,-0.2109454,0.17801525,-9.928322,-7.670537e-05,-0.005828367,0.0013209268 +3288000,imu,-0.22824627,0.16175716,-9.921808,0.00024580234,-0.0065077073,-0.0008407519 +3288000,mag,0.008965894,-0.21614788,0.4314661 +3292000,imu,-0.2273367,0.17740881,-9.933016,0.00027629812,-0.0050373203,-0.0030983533 +3296000,imu,-0.21876976,0.19598754,-9.941605,0.0008710509,-0.006793416,-0.0030911241 +3300000,mag,0.0077996985,-0.21439308,0.43132928 +3300000,imu,-0.20928219,0.20102821,-9.938834,-0.0015483093,-0.006198274,-0.001134643 +3304000,imu,-0.20625563,0.19531345,-9.93725,-0.0037090792,-0.0024655433,-0.0001098659 +3308000,imu,-0.20927873,0.2208144,-9.938309,-0.0008537899,-0.00504768,-0.0019903197 +3312000,baro,487.71313 +3312000,mag,0.012779586,-0.2179461,0.4285176 +3312000,imu,-0.18952073,0.24303465,-9.910868,-0.00080066395,-0.006472777,-0.00072552514 +3316000,imu,-0.23863256,0.22956932,-9.909708,-0.004380898,-0.007971946,0.00096220995 +3320000,imu,-0.25987127,0.20472862,-9.94918,-0.0033004666,-0.008383553,-0.0009811468 +3324000,mag,0.014305502,-0.22480382,0.42975318 +3324000,imu,-0.20718679,0.20063578,-9.944954,-0.0001410698,-0.0061121467,-0.0005213065 +3328000,imu,-0.19819444,0.21477085,-9.936489,0.0013865543,-0.006094904,0.00032758102 +3332000,imu,-0.21733275,0.20700805,-9.947287,0.00087654556,-0.0077051134,-0.00016390064 +3336000,imu,-0.22354041,0.18013696,-9.945528,3.8728654e-06,-0.0071693407,0.0025601336 +3336000,mag,0.008536628,-0.21804953,0.41985807 +3340000,imu,-0.20722316,0.18277685,-9.922527,0.003465659,-0.006152571,0.001778753 +3344000,imu,-0.2160894,0.188059,-9.936639,0.003064381,-0.006850022,-0.0047454145 +3348000,mag,0.0070559043,-0.22016835,0.43385032 +3348000,imu,-0.24585961,0.19093485,-9.940198,-0.001694322,-0.0055012894,-0.0029744839 +3352000,imu,-0.21548398,0.20987764,-9.929928,-0.001303099,-0.005842703,-0.0004475242 +3356000,imu,-0.21443233,0.20265253,-9.938704,-0.0019192887,-0.006724445,-0.001796114 +3360000,mag,0.012049519,-0.22040491,0.4295818 +3360000,imu,-0.23529331,0.2248858,-9.966775,-0.0008866304,-0.0071789385,-0.00022536224 +3364000,imu,-0.24459231,0.21726644,-9.960913,0.0002670814,-0.008750289,0.0014076813 +3368000,imu,-0.2533093,0.18472679,-9.963957,-0.0004377127,-0.006169696,0.00046609677 +3372000,mag,0.007015449,-0.21453965,0.42698798 +3372000,imu,-0.26043856,0.17203529,-9.952616,-0.00069797045,-0.004767605,0.000775034 +3376000,imu,-0.24459416,0.19348428,-9.93042,-0.0013082391,-0.004864554,0.0019202098 +3380000,imu,-0.20437598,0.22004725,-9.917589,0.0021608938,-0.005829774,-0.00020364241 +3384000,imu,-0.20307606,0.19031999,-9.914926,0.00194417,-0.006669684,-0.0019045405 +3384000,baro,487.6474 +3384000,mag,0.008991184,-0.21130389,0.4306038 +3388000,imu,-0.22283101,0.18330728,-9.932056,-0.0010839659,-0.0077704634,-0.000899347 +3392000,imu,-0.22608155,0.18234637,-9.932459,0.0014818554,-0.009482304,0.001967079 +3396000,mag,0.011924176,-0.21533045,0.42886478 +3396000,imu,-0.22411041,0.18449359,-9.928276,0.0008034416,-0.006156654,0.0024612313 +3400000,imu,-0.22232679,0.18893127,-9.937834,-0.0021070447,-0.005427247,-0.00050928525 +3404000,imu,-0.23149988,0.19262892,-9.926413,-0.0018284786,-0.0069438005,-0.0034741273 +3408000,mag,0.007159996,-0.21281305,0.42994595 +3408000,imu,-0.2245067,0.19592714,-9.913107,-0.003982918,-0.007906823,-0.0029349967 +3412000,imu,-0.1824131,0.19591425,-9.957645,-0.0004205996,-0.00790154,-0.0017417278 +3416000,imu,-0.17885685,0.22480734,-9.957119,0.0038054674,-0.004602934,-9.229595e-05 +3420000,imu,-0.21750388,0.20877096,-9.930813,0.0002295898,-0.0040830774,0.00058300456 +3420000,mag,0.013407666,-0.2179317,0.4305907 +3424000,imu,-0.22540718,0.17239991,-9.946048,-0.0021177006,-0.0059864153,-0.0011397208 +3428000,imu,-0.22211826,0.17176504,-9.934862,-0.0013281127,-0.0037751312,-0.0013993975 +3432000,mag,0.013457137,-0.21449062,0.43067977 +3432000,imu,-0.21446216,0.19050933,-9.926559,-0.0045825075,-0.0036218725,-0.0011583555 +3436000,imu,-0.17524058,0.22557464,-9.927572,-0.006552542,-0.0060723713,-0.0017372175 +3440000,imu,-0.16454569,0.21702376,-9.940317,-0.004762081,-0.0068627736,-0.0012621861 +3444000,mag,0.012690111,-0.213348,0.42863512 +3444000,imu,-0.19259045,0.19330025,-9.952614,-0.0032103534,-0.0052938685,-0.0020686993 +3448000,imu,-0.2189937,0.18029723,-9.949943,-0.0038931458,-0.002886049,-0.0017498072 +3452000,imu,-0.2263397,0.18318294,-9.930988,-0.0043516024,-0.0055885985,-0.0010890724 +3452000,mag,0.009287101,-0.21916026,0.4288926 +3452000,baro,487.59106 +3456000,imu,-0.20505247,0.20788585,-9.9272995,-0.0033223846,-0.0062364237,-0.00017707451 +3460000,imu,-0.19959293,0.22337064,-9.967828,-0.0018318315,-0.0051641003,0.0003395282 +3464000,imu,-0.2267009,0.2016915,-9.942974,-0.00091595366,-0.0067162625,0.001937832 +3468000,mag,0.013042051,-0.21701716,0.42641315 +3468000,imu,-0.23493373,0.17678231,-9.89448,-0.002875903,-0.0077854046,0.0026267634 +3472000,imu,-0.22336921,0.18326466,-9.885784,-0.000135475,-0.008329259,0.0011569902 +3476000,imu,-0.21189821,0.18402945,-9.912207,-0.0019253928,-0.007873357,0.0025557484 +3480000,mag,0.009941913,-0.21903117,0.42012885 +3480000,imu,-0.20628613,0.19273284,-9.964066,-0.0033893434,-0.0081381155,0.0012748995 +3484000,imu,-0.20817652,0.20482941,-9.955635,0.0019538887,-0.0077418317,-1.9585568e-05 +3488000,imu,-0.21573678,0.18008883,-9.936481,0.0023732304,-0.0056020515,0.0014111771 +3492000,imu,-0.22409487,0.15052283,-9.96608,-0.0025394426,-0.0043036705,0.0033109633 +3492000,mag,0.0068899645,-0.21926486,0.42304298 +3496000,imu,-0.20405924,0.19465283,-9.95747,-0.0038715794,-0.004575735,4.788068e-05 +3500000,imu,-0.2151863,0.22616011,-9.915533,-0.002660197,-0.007326998,-0.0027863975 +3504000,baro,487.67087 +3504000,mag,0.003431659,-0.21302545,0.42982247 +3504000,imu,-0.23170754,0.21160977,-9.905232,-0.003534865,-0.008604389,0.00035339166 +3508000,imu,-0.23220633,0.21765783,-9.92742,-0.0044553936,-0.0059868977,0.001535429 +3512000,imu,-0.24157423,0.19423679,-9.958301,-0.00231045,-0.0047650156,-0.00041832624 +3516000,mag,0.0051897774,-0.21594812,0.4219952 +3516000,imu,-0.2331975,0.1640081,-9.968004,0.0016400386,-0.0029370831,-0.0025267897 +3520000,imu,-0.23890871,0.19150451,-9.956301,-0.00046925448,-0.003958393,-0.0034244617 +3524000,imu,-0.23874094,0.2049387,-9.926098,-0.0006671351,-0.0062882025,-0.0014578956 +3528000,imu,-0.2394886,0.20970678,-9.908847,0.00075796177,-0.005496365,-0.0011012526 +3528000,mag,0.0036285436,-0.22208539,0.42729765 +3532000,imu,-0.2471774,0.19656496,-9.93742,-0.0023690055,-0.0059450795,-0.0012569161 +3536000,imu,-0.22406991,0.19613734,-9.929842,-0.0041744728,-0.0050770105,-0.0004946916 +3540000,imu,-0.21524301,0.23473138,-9.943451,-0.0010236385,-0.0057406174,0.0020507611 +3540000,mag,0.008809912,-0.21119386,0.42965975 +3544000,imu,-0.2431556,0.21723582,-9.965224,-0.0007703212,-0.0069900947,0.0021834425 +3548000,imu,-0.22985429,0.18323058,-9.916087,-0.0005038118,-0.003514162,-0.0008573545 +3552000,imu,-0.20739794,0.18206649,-9.908743,0.0017056363,-0.0034038236,0.0005673053 +3552000,mag,0.012923948,-0.21051557,0.43487668 +3556000,imu,-0.22063008,0.17634882,-9.926642,-0.00015684936,-0.0064589246,0.0016181531 +3560000,imu,-0.21216041,0.15896603,-9.938402,-0.0024287407,-0.004528346,-0.0014700028 +3564000,imu,-0.21871896,0.16805679,-9.943748,-0.00037393204,-0.0020291063,-0.0015622193 +3564000,mag,0.010321322,-0.21599472,0.42351195 +3568000,imu,-0.22373202,0.15958036,-9.932843,0.0010147804,-0.0047931415,0.0006473368 +3572000,imu,-0.23219725,0.17880379,-9.946463,-0.00076954596,-0.0068927887,0.0013113328 +3576000,imu,-0.2259086,0.19926658,-9.9411745,-0.0019630194,-0.0076468987,0.0013777957 +3576000,baro,487.5488 +3576000,mag,0.0074096923,-0.21673983,0.4290738 +3580000,imu,-0.21348777,0.2169842,-9.96029,-0.0038365752,-0.0065515176,0.001961449 +3584000,imu,-0.23110925,0.2256725,-9.946207,-0.0032082873,-0.008616734,0.0030894028 +3588000,imu,-0.22778183,0.19290513,-9.9040165,0.00010518691,-0.008826709,0.0008885352 +3588000,mag,0.0045699566,-0.21765321,0.43209505 +3592000,imu,-0.22040018,0.17746724,-9.942238,-0.0012874411,-0.007299448,0.0022192944 +3596000,imu,-0.21024609,0.14641133,-9.946047,-0.002481238,-0.006821211,0.0053668353 +3600000,imu,-0.22654638,0.15828231,-9.92358,0.0017317822,-0.002909792,0.0034388467 +3600000,mag,0.010682185,-0.21499965,0.42563006 +3604000,imu,-0.219457,0.19216049,-9.908811,-0.0010680475,-0.0049148947,0.0017260644 +3608000,imu,-0.19732653,0.19081523,-9.917478,-0.004352306,-0.0070922016,0.00012391566 +3612000,imu,-0.21686533,0.16690893,-9.942829,-0.0014640635,-0.007663844,0.0030649293 +3612000,mag,0.008190525,-0.21714315,0.4274237 +3616000,imu,-0.23304468,0.1732032,-9.909119,-0.0008955901,-0.008231591,0.0046726633 +3620000,landed,1.0 +3620000,imu,-0.20262614,0.22321394,-9.896172,-0.0010580618,-0.008390229,0.0007105184 +3624000,imu,-0.19211054,0.21766943,-9.9354315,-0.0025803533,-0.006201259,0.0005678067 +3624000,mag,0.010236855,-0.21884103,0.43321043 +3628000,imu,-0.1729047,0.23157945,-9.973236,-0.0022279613,-0.0053559607,0.0010915726 +3632000,imu,-0.180165,0.23895906,-9.981189,-0.0015856094,-0.0048474874,0.0017186217 +3636000,mag,0.01070217,-0.21872613,0.43558058 +3636000,imu,-0.23003513,0.17987378,-9.946474,-0.0010895635,-0.00564748,0.006876769 +3640000,imu,-0.24116597,0.17144172,-9.93811,-0.0003654539,-0.010443208,0.0041918317 +3644000,mag,0.008751004,-0.21876438,0.43349573 +3644000,imu,-0.21762967,0.18117146,-9.942081,-0.0022131107,-0.007840334,-0.0017072833 +3644000,baro,487.60043 +3648000,imu,-0.1937933,0.17731737,-9.955786,-0.0018435946,-0.0032035052,-0.00046682532 +3652000,gps,488102.0,85456074.0,473977508.0,0.02,0.01,-0.04 +3652000,imu,-0.22487527,0.19037542,-9.9655905,-0.0024506734,-0.003976493,0.0021951078 +3656000,imu,-0.22603297,0.18266341,-9.927755,-0.0014817386,-0.006183278,0.0013670233 +3660000,mag,0.013105839,-0.21656254,0.43319842 +3660000,imu,-0.22651821,0.15938218,-9.902613,-0.001053823,-0.0066971118,-0.0015212076 +3664000,imu,-0.21798138,0.14896016,-9.9260645,-0.0013100377,-0.007155276,0.00025270536 +3668000,imu,-0.19689938,0.16622786,-9.920683,-0.0016552273,-0.006825341,0.0007938435 +3672000,imu,-0.23935771,0.1967584,-9.946192,-0.004104372,-0.004946371,0.0030846102 +3672000,mag,0.008447282,-0.21324141,0.42903927 +3676000,imu,-0.25769016,0.19392836,-9.965668,-0.0011489388,-0.005283022,0.0055530574 +3680000,imu,-0.24308068,0.19068816,-9.945975,0.0015774968,-0.005873118,0.003927844 +3684000,imu,-0.25660878,0.21350904,-9.951651,-0.0010962132,-0.007595984,0.004389095 +3684000,mag,0.0108639,-0.21728721,0.43332198 +3688000,imu,-0.25154933,0.1754442,-9.966184,0.0015502515,-0.010577429,0.0044495054 +3692000,imu,-0.22687493,0.1632144,-9.977091,0.00027932765,-0.009420058,-0.001323776 +3696000,baro,487.67557 +3696000,mag,0.0073439167,-0.22362925,0.43006992 +3696000,imu,-0.20775911,0.21170357,-9.921853,-0.002907825,-0.008418833,-0.0030250256 +3700000,imu,-0.22448975,0.19228996,-9.919917,-0.00075138273,-0.008908409,-0.0015124243 +3704000,imu,-0.24464986,0.18564303,-9.912701,-0.0021870064,-0.006293691,-0.0012137323 +3708000,mag,0.013863379,-0.22403221,0.42739466 +3708000,imu,-0.22282362,0.17829618,-9.877666,-0.004252163,-0.0066303844,0.004225851 +3712000,imu,-0.22568288,0.19817486,-9.915027,-0.0042700125,-0.0064684,0.004051983 +3716000,imu,-0.22902508,0.23110719,-9.919506,-0.00331927,-0.0043173884,-0.0009870983 +3720000,imu,-0.23531626,0.2019439,-9.925583,-0.0028567428,-0.006010824,-0.00022856363 +3720000,mag,0.007098223,-0.21606606,0.4333403 +3724000,imu,-0.23517379,0.176309,-9.977054,-0.0028583861,-0.00629473,0.002945367 +3728000,imu,-0.20825937,0.17058012,-9.964284,-0.0034165457,-0.0023224948,0.0019104236 +3732000,mag,0.018055893,-0.21551536,0.42800277 +3732000,imu,-0.20938355,0.16480978,-9.929533,-0.002796919,-0.0036947867,-0.0023497455 +3736000,imu,-0.20366907,0.18259653,-9.967184,0.000562588,-0.006452184,-0.006619225 +3740000,imu,-0.20111883,0.19408342,-9.943306,-0.00017867451,-0.005123564,-0.0049802964 +3744000,mag,0.010502013,-0.22013874,0.42468545 +3744000,imu,-0.19926594,0.19306497,-9.888565,-0.0020438111,-0.005101417,0.00073641783 +3748000,imu,-0.19908649,0.20320462,-9.929518,-0.00094505394,-0.006713074,0.0012363591 +3752000,imu,-0.21117392,0.192309,-9.958418,-0.0021634684,-0.0050045503,0.0012142245 +3756000,imu,-0.21187302,0.15880738,-9.941085,-0.0024114202,-0.0020584706,0.0015469827 +3756000,mag,0.012614258,-0.22021852,0.4258063 +3760000,imu,-0.24477255,0.15071344,-9.907225,-0.0011373258,-0.0037331523,0.00039676364 +3764000,imu,-0.24979605,0.16839807,-9.911676,-0.0035139238,-0.0053035864,0.00039340003 +3768000,mag,0.007882339,-0.22129539,0.43388963 +3768000,baro,487.66147 +3768000,imu,-0.25069094,0.1800123,-9.933285,-0.0051068743,-0.005229923,0.0021825165 +3772000,imu,-0.22591305,0.19362362,-9.917477,-0.0015845763,-0.008131979,0.0032427942 +3776000,imu,-0.19052784,0.19465056,-9.921295,-1.2254026e-05,-0.007843024,0.0010241999 +3780000,mag,0.0070472495,-0.2123901,0.43295082 +3780000,imu,-0.2094558,0.1804372,-9.937424,-0.00019136073,-0.00282729,0.0030829946 +3784000,imu,-0.23251961,0.16172673,-9.926423,-0.002243214,-0.0025387602,0.0047032996 +3788000,imu,-0.25459138,0.1746736,-9.921719,-0.002890283,-0.0062203137,0.0026181107 +3788000,mag,0.008015141,-0.2184946,0.4224136 +3792000,imu,-0.22890082,0.18910487,-9.933847,-0.0010427149,-0.0053931396,0.0024458847 +3796000,imu,-0.20990986,0.20057672,-9.968347,-0.0015008183,-0.0017066607,0.0022773577 +3800000,imu,-0.22890475,0.20538892,-9.973675,-0.0007316576,-0.0027115557,0.00058005354 +3804000,mag,0.011761311,-0.21339074,0.4250135 +3804000,imu,-0.26055127,0.22227865,-9.928177,-1.8399349e-05,-0.0018128165,0.00022062122 +3808000,imu,-0.25507095,0.23141897,-9.920215,-0.0014030377,-0.0003563964,0.003575949 +3812000,imu,-0.21569845,0.21092804,-9.933443,-0.0006478933,-0.0039346376,0.0026021237 +3816000,mag,0.010859736,-0.2193002,0.4313306 +3816000,imu,-0.20741373,0.200881,-9.907711,-0.0013470582,-0.0072469674,-0.0049691764 +3820000,imu,-0.23707387,0.20720208,-9.899836,-0.002449466,-0.0062173833,-0.005625089 +3824000,imu,-0.2507028,0.2100846,-9.948799,2.4039577e-05,-0.007869741,-0.00014834071 +3828000,imu,-0.23086697,0.19971995,-9.939571,0.0007279899,-0.008168396,0.00047300963 +3828000,mag,0.009320596,-0.2155468,0.43304625 +3832000,imu,-0.19068632,0.21594901,-9.919535,0.0006393975,-0.0056221224,-0.0025634358 +3836000,imu,-0.17424566,0.21266836,-9.935654,-0.004014044,-0.0042737797,-0.002465148 +3840000,mag,0.0023886033,-0.20984147,0.4317626 +3840000,baro,487.57227 +3840000,imu,-0.1930717,0.17761104,-9.910292,-0.0024222746,-0.0026397198,0.0001732105 +3844000,imu,-0.20468155,0.17491794,-9.916473,0.0039027315,-0.004185829,-0.0010059839 +3848000,imu,-0.22111669,0.17849778,-9.976293,0.0021509659,-0.0049955426,-0.0018878091 +3852000,imu,-0.23841591,0.2013909,-9.961365,0.0041311043,-0.0050693024,0.00048320447 +3852000,mag,0.011937361,-0.20782031,0.44024652 +3856000,imu,-0.2802879,0.20078965,-9.930994,0.004898742,-0.0078057637,0.0012758621 +3860000,imu,-0.2802804,0.16199571,-9.948587,0.0016697476,-0.008277219,-0.0005263499 +3860000,mag,0.0144220665,-0.21596229,0.42475894 +3864000,imu,-0.25362113,0.20822045,-9.95468,-0.00019000699,-0.008418249,-0.0025745842 +3868000,imu,-0.25594604,0.2462521,-9.963276,0.002452464,-0.010092416,-0.0052299183 +3872000,imu,-0.222357,0.2228708,-9.962693,0.0014562584,-0.0076279207,-0.0047238134 +3876000,mag,0.007224328,-0.21257795,0.42704922 +3876000,imu,-0.21617067,0.21327017,-9.976903,-0.0019030976,-0.003966279,0.00019919795 +3880000,imu,-0.23689774,0.17895144,-9.974594,-0.0004417446,-0.0023180246,0.0013674814 +3884000,imu,-0.21185672,0.16037172,-9.934492,-0.0027633798,-0.005083644,-0.0021855673 +3888000,imu,-0.1954354,0.20402478,-9.911797,-0.0010009854,-0.006611253,-0.0009926772 +3888000,mag,0.010051042,-0.21746062,0.4247074 +3892000,imu,-0.1925474,0.21584627,-9.9124155,0.0015215388,-0.003881752,0.0002962502 +3896000,imu,-0.2112225,0.20950945,-9.924092,0.0027050318,-0.0019265913,0.00089733535 +3900000,imu,-0.21303505,0.21258779,-9.931066,0.0036898488,-0.0036152068,1.9135865e-05 +3900000,mag,0.006853674,-0.21424516,0.42608246 +3904000,imu,-0.19326454,0.18492402,-9.924652,-0.00050523505,-0.0071717673,-0.0033455442 +3908000,imu,-0.23023954,0.17919508,-9.914753,5.3588406e-05,-0.0061010863,-0.0012796217 +3912000,imu,-0.22160724,0.19325076,-9.941677,-0.00033896527,-0.005291463,0.0027875106 +3912000,baro,487.68497 +3912000,mag,0.010131268,-0.2155208,0.4268268 +3916000,imu,-0.19827805,0.1817667,-9.977488,-0.00049136713,-0.0066809533,0.0027590287 +3920000,imu,-0.2339587,0.15978189,-9.978012,-6.720787e-05,-0.0060637975,-0.002508815 +3924000,mag,0.009771571,-0.20782156,0.43611255 +3924000,imu,-0.24194343,0.17335528,-9.957485,0.001483688,-0.004629512,-0.003238642 +3928000,imu,-0.21788235,0.19374202,-9.9345665,0.0035011254,-0.0057303007,-0.0005820134 +3932000,imu,-0.20838636,0.17220058,-9.952314,0.00018956055,-0.0059611867,0.0007631431 +3936000,mag,0.008932585,-0.21782786,0.41829282 +3936000,imu,-0.19957137,0.19249107,-9.9475975,-0.0021258856,-0.0048112967,0.0016825085 +3940000,imu,-0.22515711,0.20807576,-9.932126,-0.0033191263,-0.006903203,6.317636e-05 +3944000,imu,-0.25919777,0.20388153,-9.951349,-0.0029477864,-0.0066129505,0.0006191771 +3948000,imu,-0.21461773,0.2156954,-9.946175,-0.0039057327,-0.006243207,0.0010452698 +3948000,mag,0.015792696,-0.21658862,0.4332887 +3952000,imu,-0.21655115,0.18969092,-9.94735,-0.0007797827,-0.0058573782,0.0010025905 +3956000,imu,-0.2205773,0.16282327,-9.940559,0.001846141,-0.00472882,0.0018496802 +3960000,imu,-0.20354718,0.19555126,-9.927214,-0.0022446357,-0.0065123136,-0.000645287 +3960000,mag,0.0043496834,-0.20854117,0.42636052 +3964000,imu,-0.20492932,0.22127467,-9.930767,0.0004002717,-0.008251139,-0.0009037809 +3968000,imu,-0.17509565,0.19961113,-9.954996,0.004478687,-0.0062000216,4.297827e-05 +3972000,mag,0.005887648,-0.21442848,0.42672524 +3972000,imu,-0.19325408,0.20435517,-9.977919,-7.0312584e-05,-0.005655694,-0.0004442216 +3976000,imu,-0.21768488,0.19594085,-9.954042,-0.0013169544,-0.005938017,-0.000110560555 +3980000,imu,-0.21060951,0.22351308,-9.930559,0.002111964,-0.0064690136,0.00083851785 +3984000,mag,0.0051458282,-0.21920596,0.41988772 +3984000,imu,-0.19374841,0.24340814,-9.918427,0.0014494861,-0.007663715,-0.00026764892 +3984000,baro,487.59576 +3988000,imu,-0.1947099,0.2127852,-9.9284725,-0.002827352,-0.0050676386,-0.003969178 +3992000,imu,-0.23600924,0.21146452,-9.929565,-0.0048415232,-0.0036079308,-0.001412472 +3996000,imu,-0.21947712,0.19393426,-9.913893,-0.0051319636,-0.00088179146,0.00023183497 +3996000,mag,0.013910856,-0.21657678,0.43023086 +4000000,imu,-0.20765042,0.17499019,-9.909464,-0.004574196,-0.0017304512,-0.0023208733 +4004000,imu,-0.20647138,0.18215434,-9.914111,-0.0009621508,-0.0048386063,-0.0027846587 +4008000,mag,0.0069898996,-0.2140772,0.43029556 +4008000,imu,-0.19976832,0.21633482,-9.9424305,0.00017744485,-0.006385743,-0.0036670587 +4012000,imu,-0.2173337,0.2045724,-9.956852,-0.0012762301,-0.004440457,-0.00049074035 +4016000,imu,-0.21824013,0.18517454,-9.941629,0.00027431548,-0.0030380806,0.002886076 +4020000,mag,0.009718638,-0.21598785,0.4317207 +4020000,imu,-0.21294735,0.18436398,-9.934716,0.0015475597,-0.008768617,0.0037046706 +4024000,imu,-0.21100006,0.16419211,-9.940641,-0.0002615681,-0.004981401,0.0023512146 +4028000,imu,-0.23768005,0.1674736,-9.931484,-0.002364646,-0.0037112916,0.0034279295 +4032000,imu,-0.19045277,0.17450576,-9.941139,-0.0030571276,-0.007735407,0.00079244655 +4032000,mag,0.007494904,-0.22491594,0.43258235 +4036000,imu,-0.17072436,0.20707703,-9.955339,-0.0012316142,-0.006332302,-0.0028919957 +4040000,imu,-0.21437751,0.19762589,-9.952719,-0.0028221093,-0.0043834196,-0.000986022 +4044000,mag,0.006565373,-0.22000374,0.4336444 +4044000,imu,-0.20687878,0.18888171,-9.938452,-0.0038719526,-0.004105306,0.0013825486 +4048000,imu,-0.20503071,0.22914039,-9.923667,0.00011153486,-0.0046307286,0.0018016659 +4052000,gps,488101.0,85456074.0,473977508.0,0.01,0.0,-0.03 +4052000,imu,-0.23716468,0.20844154,-9.912982,-0.0004927774,-0.0036688866,0.0013050133 +4056000,mag,0.010113387,-0.21884735,0.42926362 +4056000,imu,-0.22071105,0.19965626,-9.914142,0.00017191558,-0.0019099761,-0.0015652349 +4056000,baro,487.6333 +4060000,imu,-0.20556232,0.1989939,-9.951246,-0.0005315509,-0.0044759517,-0.0067352983 +4064000,imu,-0.23381546,0.16167694,-9.940735,-0.0027688753,-0.008597763,-0.0062481784 +4068000,imu,-0.2092779,0.15924649,-9.917524,-0.0021899557,-0.0069196196,-0.0008788402 +4068000,mag,0.0062937643,-0.21453883,0.4276422 +4072000,imu,-0.21111226,0.18396042,-9.940748,-0.0015588681,-0.0036256604,0.0035150107 +4076000,imu,-0.23229942,0.19578181,-9.968415,0.00043691782,-0.0022234279,0.002743663 +4080000,mag,0.013299079,-0.2231385,0.42937353 +4080000,imu,-0.21520254,0.19885875,-9.946167,0.0022589786,-0.0026713817,-0.0016000541 +4084000,imu,-0.23047993,0.17152731,-9.938762,0.002790851,-0.0061324085,-0.0021594875 +4088000,imu,-0.22235295,0.1738666,-9.962579,0.0016599885,-0.006239546,-0.001982656 +4092000,imu,-0.1793624,0.19071238,-9.9815645,-0.00011881269,-0.0017144537,-0.0012919336 +4092000,mag,0.011680174,-0.21383609,0.4286469 +4096000,imu,-0.17139734,0.17625861,-10.000713,-0.0025346673,-0.0028357974,0.0032144738 +4100000,imu,-0.19568163,0.17205527,-9.988225,-0.0022643574,-0.0041388846,0.00049012864 +4104000,mag,0.011390408,-0.21603885,0.42729884 +4104000,imu,-0.20706958,0.1663221,-9.957977,-0.0011041093,-0.002710548,5.5396715e-05 +4108000,imu,-0.20231026,0.20428191,-9.917574,-0.00032130413,-0.0037999603,-0.0015305676 +4112000,imu,-0.22069442,0.21328808,-9.921858,-0.0005921503,-0.005614353,-0.0019346703 +4116000,imu,-0.23557596,0.17541598,-9.977991,0.00010768119,-0.0055807494,0.00026835297 +4116000,mag,-0.00054144685,-0.21448947,0.4253273 +4120000,imu,-0.2347447,0.1746729,-10.010209,-0.0040128254,-0.005185758,-0.0029807028 +4124000,imu,-0.2177587,0.18901508,-9.988499,-0.0039117,-0.004557187,-0.0031706176 +4128000,baro,487.5629 +4128000,imu,-0.18766735,0.18591273,-9.956857,0.0027919307,-0.005879972,-0.0018597058 +4128000,mag,0.008647084,-0.21730158,0.43028647 +4132000,imu,-0.20702903,0.1850548,-9.916048,0.0033669637,-0.0060721827,-0.0013732623 +4136000,imu,-0.25957757,0.21119718,-9.906565,-0.0018545432,-0.0066962657,-0.0012008013 +4140000,imu,-0.22784767,0.2169782,-9.89643,-0.0028312928,-0.007736302,-0.0012157513 +4140000,mag,0.011121493,-0.21507479,0.4293539 +4144000,imu,-0.19844119,0.19543599,-9.9002,0.001199764,-0.007470697,-0.0012772416 +4148000,imu,-0.21820039,0.1885781,-9.942153,0.00048231918,-0.0072536417,0.0010068658 +4152000,mag,0.010484757,-0.21234334,0.42495835 +4152000,imu,-0.23137853,0.195164,-9.947466,-0.003959243,-0.0066586076,-0.001352435 +4156000,imu,-0.2465747,0.17284946,-9.920061,-0.004080364,-0.0052183364,-0.0019889995 +4160000,imu,-0.23710366,0.15504582,-9.901968,-2.1974914e-05,-0.0028378172,0.00026058982 +4164000,imu,-0.18835138,0.18916489,-9.930626,0.00047166654,-0.0041830284,-0.0018248354 +4164000,mag,0.010487072,-0.21587484,0.42979172 +4168000,imu,-0.1660542,0.19402632,-9.975494,-0.00072471757,-0.0050831405,0.00019556595 +4172000,imu,-0.2036263,0.18492466,-9.960831,-0.0016026747,-0.0039006749,0.0022986531 +4176000,imu,-0.21103877,0.19816086,-9.9315195,-0.0027432675,-0.0046469662,-0.0010836102 +4176000,mag,0.009509581,-0.21524362,0.4275729 +4180000,imu,-0.22012734,0.17142762,-9.944275,-0.004196167,-0.0045161457,-0.002506545 +4184000,imu,-0.23639517,0.13464716,-9.953439,-0.00383639,-0.006267645,0.00035510596 +4188000,imu,-0.21201828,0.20141967,-9.954885,-0.0034209834,-0.007400258,0.0015167098 +4188000,mag,0.008532352,-0.21983375,0.42814818 +4192000,imu,-0.19800107,0.23773466,-9.968786,-0.001902166,-0.0042886776,-0.0004900765 +4196000,imu,-0.2121863,0.21267793,-9.953999,0.0025119733,-0.0017649126,-0.0014541781 +4200000,imu,-0.22288159,0.21147369,-9.944135,-0.00056314934,-0.0044800867,-0.0025355543 +4200000,baro,487.62393 +4200000,mag,0.00840006,-0.22133689,0.42023656 +4204000,imu,-0.2276034,0.18352076,-9.977867,-0.004594251,-0.008377356,-0.0028267745 +4208000,imu,-0.24363297,0.20269263,-9.956277,-0.0022491892,-0.0047285478,-0.0019303996 +4212000,imu,-0.22482887,0.20946702,-9.929201,-0.0017425276,-0.0049398015,-0.0030659046 +4212000,mag,0.0027546529,-0.21208659,0.42782512 +4216000,imu,-0.22133595,0.19844174,-9.956556,-0.0025543938,-0.0075302026,0.00025990422 +4220000,imu,-0.24158028,0.21901844,-9.9643,-0.004208238,-0.003902319,0.0012570318 +4220000,mag,0.010976963,-0.21809402,0.4243255 +4224000,imu,-0.23027861,0.20999028,-9.933182,-0.00308542,-0.0063577136,0.00021791112 +4228000,imu,-0.21811965,0.17894897,-9.915834,-0.00060876436,-0.006943137,0.0006562701 +4232000,imu,-0.19792104,0.17404558,-9.939516,0.00039461596,-0.007120887,0.0013352549 +4236000,mag,0.009238917,-0.21792446,0.43495122 +4236000,imu,-0.17396723,0.21624102,-9.925903,-0.00024155062,-0.00927064,0.003283111 +4240000,imu,-0.22548568,0.21779889,-9.909469,0.00037207006,-0.007733424,0.001912762 +4244000,imu,-0.2682686,0.17427333,-9.907902,-0.0013524318,-0.0079652965,0.0008376322 +4244000,mag,0.012288354,-0.21805176,0.43235964 +4248000,imu,-0.21514064,0.211441,-9.894011,-0.004366879,-0.0060986686,-0.0024562413 +4252000,imu,-0.20013809,0.22000368,-9.921658,-0.0019581106,-0.0055435477,-0.0036421109 +4256000,imu,-0.21529284,0.21248955,-9.94002,-0.0003329281,-0.0062616076,-0.00066988845 +4256000,mag,0.0136968,-0.21822923,0.4264645 +4260000,imu,-0.22255397,0.24266285,-9.93708,-0.0021187274,-0.006455136,-0.0012229388 +4264000,imu,-0.2057546,0.2510733,-9.941511,-0.0023474672,-0.005107665,-0.0036899988 +4268000,imu,-0.18921529,0.25742245,-9.930248,-0.0015748169,-0.006705836,-0.0014709354 +4268000,mag,0.0065889554,-0.21868521,0.43418068 +4272000,baro,487.6333 +4272000,imu,-0.20610516,0.25298157,-9.890873,0.00053741777,-0.008861622,0.00047729805 +4276000,imu,-0.2093621,0.21404834,-9.889034,0.00040706218,-0.006392102,-0.0018708373 +4280000,mag,0.014336518,-0.2211954,0.4310366 +4280000,imu,-0.23023824,0.1724555,-9.941007,0.00016157047,-0.006297919,-0.0016089302 +4284000,imu,-0.2287347,0.20742309,-9.94939,-0.00022017556,-0.0055797696,-0.001626307 +4288000,imu,-0.21803814,0.21138698,-9.938997,-0.0043184827,-0.003954926,-0.0022621301 +4292000,imu,-0.21920165,0.18990515,-9.932907,-0.003483689,-0.006020957,0.0036301974 +4296000,imu,-0.21191889,0.19687626,-9.923482,-0.0017276931,-0.009103946,0.007142644 +4296000,mag,0.013799935,-0.21803544,0.4343607 +4300000,imu,-0.22267923,0.16950877,-9.961823,-0.0042426307,-0.008302244,0.003306341 +4304000,imu,-0.23951969,0.17234822,-9.964248,-0.0047634537,-0.0026217687,0.0028693906 +4308000,imu,-0.2281864,0.19741152,-9.946694,-0.0014673258,-0.0011655157,0.0017321468 +4308000,mag,0.0049445117,-0.21793342,0.43007308 +4312000,imu,-0.22885902,0.21094477,-9.960424,-0.0004453298,-0.005065323,0.0033179622 +4316000,imu,-0.23515844,0.23801184,-9.967947,0.0004916496,-0.006599461,0.0048103365 +4316000,mag,0.0080695925,-0.21107414,0.42861238 +4320000,imu,-0.22229545,0.2246391,-9.975306,0.0034230917,-0.008191712,-0.00041439506 +4324000,imu,-0.21724032,0.20299979,-9.992766,0.0016904593,-0.006818106,0.0005304791 +4328000,imu,-0.21910828,0.19149575,-9.966589,0.00048294937,-0.0065083154,0.00025614575 +4332000,mag,0.016033454,-0.21643728,0.4263671 +4332000,imu,-0.21645519,0.18945614,-9.930498,0.00072898454,-0.008454623,-0.00395869 +4336000,imu,-0.21843739,0.18969294,-9.944301,-0.00035929348,-0.007540272,-0.0054022064 +4340000,imu,-0.23139477,0.176933,-9.959368,-0.0021773505,-0.005531776,-0.0055582193 +4344000,mag,0.0068564983,-0.21576338,0.42696434 +4344000,baro,487.62393 +4344000,imu,-0.2270966,0.18093224,-9.948841,-0.0020188787,-0.0039458293,-0.0017410122 +4348000,imu,-0.19923067,0.21971774,-9.970234,-0.0024286746,-0.0053710644,-2.3713477e-05 +4352000,imu,-0.20010227,0.22241196,-9.959766,-0.0027569914,-0.006022204,-0.0014610474 +4356000,mag,0.013725408,-0.22660859,0.43209454 +4356000,imu,-0.20925292,0.21928312,-9.911142,2.3104767e-05,-0.0063782074,0.0010331459 +4360000,imu,-0.18040332,0.21775219,-9.935247,0.0010888238,-0.0053243446,-0.00019611156 +4364000,imu,-0.20014933,0.20765518,-9.952919,0.002067592,-0.0061647156,-0.0028932965 +4368000,mag,0.006054472,-0.22039913,0.43452 +4368000,imu,-0.22293256,0.19341573,-9.939775,0.0011847084,-0.004999457,-0.003914955 +4372000,imu,-0.21794592,0.17383234,-9.915438,-0.00013824324,-0.004559723,-0.004187149 +4376000,imu,-0.23463666,0.21248801,-9.915516,-0.001255823,-0.0068276213,0.00027387048 +4380000,mag,0.013330415,-0.2182393,0.42773834 +4380000,imu,-0.23555714,0.20299278,-9.936367,-0.0014528122,-0.0062040514,0.0034076106 +4384000,imu,-0.23567086,0.19479153,-9.928232,0.0012650031,-0.0056976364,0.0035635314 +4388000,imu,-0.25705957,0.20983306,-9.927425,0.00068650284,-0.0017953496,0.0014025532 +4392000,imu,-0.22873548,0.19267613,-9.951139,-0.0010636232,-0.0014273053,0.0017147613 +4392000,mag,0.0065231454,-0.21862602,0.42899945 +4396000,imu,-0.20677182,0.20521523,-9.962051,-0.0009314571,-0.0049399687,0.0048556994 +4400000,imu,-0.21169059,0.2095021,-9.951279,-0.0039163227,-0.008558058,0.006661496 +4404000,imu,-0.20530526,0.20300393,-9.931679,-0.0045650895,-0.011325275,0.0035009377 +4404000,mag,0.0064110537,-0.21386494,0.42317685 +4408000,imu,-0.21346691,0.22667299,-9.9027405,-0.0034911137,-0.0104011,0.0017160013 +4412000,imu,-0.22021486,0.21866395,-9.925081,-0.004508041,-0.006506055,0.002710063 +4416000,mag,0.014843432,-0.21841313,0.42834216 +4416000,imu,-0.21754679,0.18482456,-9.947273,-0.0011248715,-0.0054803942,0.002199732 +4416000,baro,487.66147 +4420000,imu,-0.23173298,0.22115085,-9.945993,0.0017287385,-0.0054306537,0.0009635684 +4424000,imu,-0.2096793,0.20125552,-9.95231,-0.0021269494,-0.007041704,0.00046864527 +4428000,mag,0.009903573,-0.21754627,0.43016237 +4428000,imu,-0.21498975,0.16933005,-9.9514,-0.0003965264,-0.006597762,0.0012042882 +4432000,imu,-0.25882423,0.21407174,-9.941629,0.004434414,-0.003872136,-0.001791676 +4436000,imu,-0.2843833,0.21442537,-9.939463,0.001286988,-0.0059896945,-0.0019298673 +4440000,imu,-0.2820987,0.2018552,-9.946451,-0.0022500334,-0.009673579,-0.0010781103 +4440000,mag,0.0112382015,-0.22095217,0.42784348 +4444000,imu,-0.22338043,0.19254178,-9.959757,-0.0014777137,-0.007773738,-0.0010728589 +4448000,imu,-0.19020003,0.19977632,-9.96024,-0.0011444523,-0.0037068601,0.00070708274 +4452000,imu,-0.20333096,0.20977522,-9.976025,-0.002493565,-0.0056857406,0.0022379274 +4452000,gps,488097.0,85456074.0,473977508.0,-0.01,0.01,0.03 +4452000,mag,0.0065953843,-0.21379408,0.4326156 +4456000,imu,-0.22556876,0.18500085,-9.977375,-0.0014596473,-0.008253493,0.003626 +4460000,imu,-0.20295419,0.16868323,-9.943381,-5.4846972e-05,-0.0067527844,0.0038438388 +4460000,mag,0.002161059,-0.22143705,0.42844474 +4464000,imu,-0.18508038,0.17278554,-9.964006,0.0007100218,-0.0038553781,0.0039203865 +4468000,imu,-0.22967046,0.18449628,-9.984381,0.0014344103,-0.0050155143,-4.53822e-05 +4472000,imu,-0.23781908,0.1938599,-9.97308,0.00012048061,-0.0060270373,-0.0019443103 +4476000,imu,-0.22143674,0.16035219,-9.95532,-0.0026974052,-0.006165446,0.00015450266 +4476000,mag,0.008965087,-0.21668515,0.42114702 +4480000,imu,-0.21981025,0.16397153,-9.955011,-0.001918456,-0.0053163613,0.00068398117 +4484000,imu,-0.21652311,0.19814882,-9.936386,0.0021185202,-0.0045268172,0.0003831326 +4488000,imu,-0.2089149,0.18869036,-9.9487505,0.00076473824,-0.0055559375,-0.00050285325 +4488000,baro,487.6568 +4488000,mag,0.015294877,-0.2128623,0.43302357 +4492000,imu,-0.18685952,0.15249017,-9.960051,-0.0025501226,-0.006668791,0.00068927254 +4496000,imu,-0.18561707,0.15003021,-9.931658,-0.00060026074,-0.0066665565,-0.00022924901 +4500000,mag,0.009259316,-0.21765216,0.4306882 +4500000,imu,-0.20126641,0.20488551,-9.917234,-0.0021319469,-0.0048382734,0.000895348 +4504000,imu,-0.19627866,0.22299458,-9.948131,-0.0034964762,-0.0056995824,0.0027163567 +4508000,imu,-0.19452299,0.20795043,-9.948709,-0.0039875708,-0.0049520344,0.0035101457 +4512000,imu,-0.20863898,0.19909242,-9.9464245,-0.004189625,-0.0050412514,0.0028069336 +4512000,mag,0.010015218,-0.21364364,0.42906547 +4516000,imu,-0.18852304,0.2107547,-9.954155,-0.0018982913,-0.0076769083,4.1650197e-05 +4520000,imu,-0.20862916,0.22502318,-9.930059,-0.0037872442,-0.0065961345,0.0016837269 +4524000,mag,0.013569566,-0.21494828,0.43497294 +4524000,imu,-0.24566528,0.20346683,-9.979579,-0.0036650482,-0.0077448883,0.0005310224 +4528000,imu,-0.23015246,0.19267163,-9.981163,-0.0029505035,-0.004947404,-0.0011807455 +4532000,imu,-0.18491787,0.19379057,-9.9498625,-0.0023119813,-0.0042744656,-0.0012670716 +4536000,mag,0.00832398,-0.22292703,0.4301809 +4536000,imu,-0.17531225,0.18223113,-9.958509,-0.00013009881,-0.007389324,-0.0022525094 +4540000,imu,-0.20239046,0.20505384,-9.955938,-0.0006726584,-0.0045316643,-0.00055885065 +4544000,imu,-0.21270949,0.19899467,-9.945379,-0.0038372285,-0.0048807217,0.0015467325 +4548000,imu,-0.2243337,0.1866657,-9.958485,-0.0020200957,-0.0053869365,0.00036113485 +4548000,mag,0.015741138,-0.2155345,0.4351987 +4552000,imu,-0.23693334,0.20594333,-9.944786,-4.4477547e-05,-0.0049089664,-0.0005358383 +4556000,imu,-0.21692185,0.20146792,-9.923716,-0.0015521636,-0.002939623,-0.0005894307 +4560000,imu,-0.1879019,0.1787286,-9.9389305,-0.0008575838,-0.0026857238,-0.00029504608 +4560000,mag,0.011054102,-0.22114015,0.43157834 +4560000,baro,487.60043 +4564000,imu,-0.19153309,0.19634724,-9.961706,-0.003304358,-0.004312552,0.0037849399 +4568000,imu,-0.19000551,0.19692451,-9.942347,-0.0050799465,-0.0059211035,0.0032534592 +4572000,imu,-0.19536881,0.16599499,-9.913631,-0.00044406127,-0.005218239,-0.0012592053 +4572000,mag,0.016540809,-0.20599945,0.4235779 +4576000,imu,-0.216082,0.18861343,-9.93202,0.0028403348,-0.0032834387,-0.001447732 +4580000,imu,-0.2050865,0.18260834,-9.929751,-0.00091915467,-0.0043751984,0.00013885167 +4584000,imu,-0.22119156,0.17268495,-9.927244,-0.0019380675,-0.0061408677,0.000284801 +4584000,mag,0.0019169971,-0.21710235,0.43212155 +4588000,imu,-0.23931068,0.17206869,-9.9258,0.0010430911,-0.0060766307,-0.0002447628 +4592000,imu,-0.2166791,0.19651122,-9.938345,0.0005213442,-0.004513062,0.0009570722 +4596000,imu,-0.19498946,0.21864024,-9.948099,0.0004616085,-0.004396803,0.003257178 +4596000,mag,0.011476445,-0.21553124,0.43370035 +4600000,imu,-0.20792152,0.2034087,-9.9347315,0.0014860551,-0.0052123084,0.002911536 +4604000,imu,-0.2247935,0.20251985,-9.93177,0.0014929859,-0.0064779324,0.0013894073 +4608000,imu,-0.1784645,0.18439129,-9.958374,0.00147687,-0.006616411,-5.1645264e-05 +4608000,mag,0.009191061,-0.21665114,0.427883 +4612000,imu,-0.17625903,0.15922679,-9.975775,-0.00071482285,-0.0045781126,-0.00041877085 +4616000,imu,-0.23247531,0.1650337,-9.942985,-0.0027825558,-0.0040294924,0.000329677 +4620000,landed,1.0 +4620000,imu,-0.25363126,0.19844207,-9.919055,-0.0013203294,-0.002087561,-0.0005211211 +4620000,mag,0.013117005,-0.21255803,0.4266999 +4624000,imu,-0.2468068,0.21923485,-9.947644,-5.313261e-05,9.085691e-05,-0.0001813057 +4628000,imu,-0.23095489,0.20246321,-9.949211,-0.0035195765,-0.005895995,0.0011207584 +4632000,baro,487.53003 +4632000,imu,-0.24629043,0.17561956,-9.922073,-0.0032655993,-0.00793882,0.002412075 +4632000,mag,0.011495056,-0.2132007,0.42947695 +4636000,imu,-0.26598012,0.18012987,-9.939568,0.000771374,-0.0069043273,0.0011275242 +4640000,imu,-0.22256356,0.21754645,-9.958088,-0.0020208717,-0.0077877194,-0.0011514149 +4644000,imu,-0.17020774,0.21189801,-9.954149,-0.004061471,-0.0079757655,-0.0003817964 +4644000,mag,0.0137252845,-0.21307236,0.43398282 +4648000,imu,-0.19281326,0.17567298,-9.967625,-0.002422754,-0.004589008,0.0009513726 +4652000,imu,-0.21736406,0.18430188,-9.963873,-0.0015303172,-0.0056300266,0.0024525365 +4656000,imu,-0.18684062,0.20027788,-9.927936,-0.0012516263,-0.0070714466,0.0007648905 +4656000,mag,0.014117349,-0.21907665,0.43245137 +4660000,imu,-0.19448197,0.20089781,-9.916947,-0.000955141,-0.0058110477,-0.00022871893 +4664000,imu,-0.21481302,0.16178039,-9.922493,0.0006661278,-0.0059166993,-0.0031010471 +4668000,imu,-0.22866681,0.1545407,-9.9222355,-0.0018379544,-0.0072753406,-0.0059377383 +4668000,mag,0.0077675795,-0.20424272,0.4312937 +4672000,imu,-0.2504714,0.17698123,-9.919905,-0.0042630224,-0.0051719295,-0.0028366856 +4676000,imu,-0.220406,0.17822535,-9.952953,-0.0050426056,-0.0027591668,-0.0017046195 +4680000,imu,-0.20122902,0.16616876,-9.951811,-0.0038597973,-0.0064712116,-0.0016095419 +4680000,mag,0.0071475776,-0.22071913,0.43298727 +4684000,imu,-0.22431204,0.17253852,-9.94528,-0.00090792915,-0.0034708541,-0.0016370649 +4688000,imu,-0.242547,0.20582435,-9.978928,-0.0008533292,-0.004631514,0.0006736001 +4692000,mag,0.008849559,-0.21706684,0.4256391 +4692000,imu,-0.23405471,0.22583134,-9.957095,-0.0035965294,-0.0060038315,0.0012222198 +4696000,imu,-0.22186974,0.2251289,-9.955754,-0.0050021815,-0.004029725,-0.0014691441 +4700000,imu,-0.23517445,0.17428197,-9.985146,-0.0018071895,-0.0070085297,-0.0011219808 +4700000,mag,0.006880207,-0.2150739,0.42722347 +4704000,baro,487.61923 +4704000,imu,-0.23619427,0.17578328,-9.991234,-7.605947e-06,-0.0067711826,-2.0874606e-05 +4708000,imu,-0.2108224,0.1930645,-9.959437,0.0010116956,-0.0039240597,0.00039330547 +4712000,imu,-0.22003758,0.1793972,-9.934887,-0.0038181648,-0.005592983,-0.00012734106 +4716000,imu,-0.22492674,0.17320238,-9.938053,-0.004471985,-0.0061181057,-0.002301588 +4716000,mag,0.003174305,-0.2127756,0.4325818 +4720000,imu,-0.21217005,0.20245312,-9.948526,-0.0034191576,-0.0039910106,0.0005789236 +4724000,imu,-0.21176477,0.20299187,-9.911344,-0.0038500298,-0.0037956252,0.001491695 +4728000,imu,-0.19269902,0.19094934,-9.907221,-0.0022346955,-0.0037763382,0.0013932848 +4728000,mag,0.0031754288,-0.21666268,0.42514953 +4732000,imu,-0.18643463,0.1979473,-9.941827,-0.0026944727,-0.0038436833,7.27371e-05 +4736000,imu,-0.18760452,0.17852151,-9.933569,-0.0037984739,-0.0049284203,-0.0026038934 +4740000,mag,0.013041924,-0.21719974,0.42455655 +4740000,imu,-0.20447299,0.20244999,-9.955666,-0.0017804654,-0.002908651,-0.00012477089 +4744000,imu,-0.25268728,0.19355418,-9.9535675,0.0010171579,-0.00032396129,-0.00054218434 +4748000,imu,-0.25732982,0.17023486,-9.936952,-0.002387691,-0.0032050307,0.00032293162 +4752000,mag,0.009267461,-0.21649498,0.4292449 +4752000,imu,-0.20330153,0.17492218,-9.970442,-0.0016227544,-0.003580669,0.0019355891 +4756000,imu,-0.18483904,0.18461095,-10.002497,-0.0013730916,-0.0037819725,-0.002260468 +4760000,imu,-0.20787828,0.18174285,-9.978947,-0.0015989386,-0.005347671,-0.0030543436 +4764000,imu,-0.21958989,0.15330705,-9.958526,-0.0018924342,-0.006833611,-0.0020620548 +4764000,mag,0.016731648,-0.2148928,0.42566836 +4768000,imu,-0.20343202,0.19526078,-9.953772,-0.0056188502,-0.00779748,-0.0018354906 +4772000,imu,-0.19460836,0.2213854,-9.949974,-0.0052639013,-0.0072514378,0.0026278514 +4776000,imu,-0.22562215,0.19430338,-9.943638,-0.0025072724,-0.0075040157,-9.941382e-05 +4776000,baro,487.69434 +4776000,mag,0.0072886553,-0.21779382,0.42637607 +4780000,imu,-0.22688735,0.19030386,-9.933718,0.0012030812,-0.005797509,-0.0018858872 +4784000,imu,-0.20011547,0.16796169,-9.93121,-7.172471e-05,-0.006483024,-0.00033577086 +4788000,mag,0.006081327,-0.21965967,0.4299618 +4788000,imu,-0.21217561,0.1824944,-9.935995,-0.0026397654,-0.0064463853,-0.00061437296 +4792000,imu,-0.22180846,0.17411862,-9.947134,-0.0015658421,-0.004510313,-0.0007182462 +4796000,imu,-0.19500965,0.16571417,-9.95163,-0.0021348067,-0.007073937,-0.0029315285 +4800000,imu,-0.20827216,0.2131074,-9.933022,-0.0027731652,-0.0077408976,-0.002251798 +4800000,mag,0.00959836,-0.22065577,0.42838392 +4804000,imu,-0.21431254,0.20416984,-9.917751,-0.0011393728,-0.0038557032,-0.0013404512 +4808000,imu,-0.16942152,0.19728664,-9.919915,-0.0019791839,-0.003496168,0.0018766822 +4812000,mag,0.004329135,-0.21589752,0.42884025 +4812000,imu,-0.17847902,0.20531586,-9.950271,-0.0009503406,-0.005628261,0.0039277053 +4816000,imu,-0.22982393,0.20194969,-9.983702,6.195464e-05,-0.0055407328,0.0010563727 +4820000,imu,-0.21893632,0.20616634,-9.969093,-0.0021853764,-0.00687903,-0.0015677332 +4824000,imu,-0.22069708,0.19016989,-9.955612,-0.0027897875,-0.0065977606,-0.0021267554 +4824000,mag,0.016545644,-0.21488228,0.43237326 +4828000,imu,-0.24479365,0.18886821,-9.9539795,-0.0027348928,-0.005018797,8.835192e-05 +4832000,imu,-0.21993417,0.18499875,-9.950438,-0.0022077244,-0.0061394083,0.0002467547 +4836000,imu,-0.21492776,0.1962681,-9.934206,-0.0005121107,-0.007870045,0.003220566 +4836000,mag,0.014040896,-0.22010733,0.42482167 +4840000,imu,-0.21081792,0.20987831,-9.929115,-0.00049790955,-0.007954041,0.004582111 +4844000,imu,-0.20422335,0.20294802,-9.9300375,-0.003694746,-0.006352565,-0.0012180607 +4848000,baro,487.6333 +4848000,mag,0.013166187,-0.21287085,0.43127877 +4848000,gps,488103.0,85456074.0,473977508.0,0.0,0.0,-0.04 +4848000,imu,-0.21042529,0.20793037,-9.94155,-0.004675016,-0.005626692,-0.0020195541 +4852000,imu,-0.21542609,0.17665313,-9.962449,-0.0036047196,-0.0057991515,-0.00023560824 +4856000,imu,-0.21045199,0.1617295,-9.951914,-0.0012846028,-0.005068731,-0.0015554243 +4860000,imu,-0.1825965,0.16683434,-9.941519,-0.0021178517,6.495572e-06,-0.0030897534 +4860000,mag,0.009293071,-0.21414343,0.43315297 +4864000,imu,-0.19940753,0.17993519,-9.959255,-0.0034841702,-0.0019063082,-0.0021184706 +4868000,imu,-0.22492519,0.16946761,-9.984825,-0.0036066514,-0.007635558,0.0012938253 +4872000,imu,-0.24959998,0.15375064,-9.977833,-0.0026887518,-0.005615829,0.0009246648 +4872000,mag,0.010400122,-0.215163,0.4255599 +4876000,imu,-0.2596264,0.16378349,-9.961056,0.0013069861,-0.0066576404,-0.0017849434 +4880000,imu,-0.2297926,0.16192153,-9.954788,0.0017842277,-0.011266808,-0.0012390243 +4884000,imu,-0.21644208,0.20497714,-9.944847,0.0013244397,-0.011620195,-0.0013735819 +4884000,mag,0.009516566,-0.20966245,0.4258807 +4888000,imu,-0.20607063,0.19296823,-9.930225,-0.0006110927,-0.0072090984,-0.0024632758 +4892000,imu,-0.23123725,0.17019472,-9.9306965,0.0010385497,-0.0070548723,-0.0023681882 +4896000,imu,-0.22252798,0.19591719,-9.944445,0.002525832,-0.0076963105,-0.00076035445 +4896000,mag,0.0047341036,-0.21867287,0.4288813 +4900000,imu,-0.20313853,0.17461658,-9.943273,0.0004971641,-0.0070015006,0.0011682747 +4904000,imu,-0.19889289,0.17429085,-9.953642,-0.0001242094,-0.008962551,-0.001188677 +4908000,imu,-0.14866798,0.21541664,-9.961193,-0.002123637,-0.0077032675,-0.0012495763 +4908000,mag,0.010381564,-0.21424425,0.42966026 +4912000,imu,-0.1699172,0.22629547,-9.937317,0.0013399988,-0.008466931,-0.002775421 +4916000,imu,-0.22491854,0.22442262,-9.932295,-2.0626478e-05,-0.007892646,-0.004232838 +4920000,imu,-0.22108597,0.20123047,-9.929268,-0.0035487644,-0.005891278,0.0012405766 +4920000,baro,487.638 +4920000,mag,0.010321586,-0.21786128,0.4216521 +4924000,imu,-0.1971593,0.16297147,-9.909695,7.240507e-06,-0.0058265314,0.0032738755 +4928000,imu,-0.19308043,0.15662591,-9.945457,0.002505046,-0.0052056443,0.0017206337 +4932000,mag,0.010775091,-0.21692543,0.43181604 +4932000,imu,-0.21717045,0.2024499,-9.974794,0.00068033696,-0.0064494787,-0.00046356616 +4936000,imu,-0.2227849,0.20325148,-9.954409,-0.0028938737,-0.007762607,-0.0013503397 +4940000,imu,-0.22299424,0.19223286,-9.956141,-0.0023307211,-0.0034346718,0.0008009906 +4944000,mag,0.0005081662,-0.21491967,0.43068647 +4944000,imu,-0.25121552,0.19861028,-9.96462,-0.0013534855,-0.0012933927,0.00031763106 +4948000,imu,-0.22729513,0.17299564,-9.96126,-0.0009979989,-0.004349192,-0.0005367134 +4952000,imu,-0.15825842,0.19099465,-9.949692,-0.00040601616,-0.0027031547,-0.0015241168 +4956000,imu,-0.17527847,0.21860433,-9.943039,0.0010117096,-0.0032707017,-0.003922679 +4956000,mag,0.013521048,-0.22149087,0.4213101 +4960000,imu,-0.21147814,0.21898842,-9.949387,0.0011968369,-0.0076175006,-0.001369453 +4964000,imu,-0.21076074,0.22359356,-9.961771,-0.0024236862,-0.0061833374,0.0037502218 +4968000,imu,-0.21871935,0.23025887,-9.96419,-0.0031900033,-0.0017041868,0.0016385384 +4968000,mag,0.01093642,-0.21942689,0.43079364 +4972000,imu,-0.23828214,0.20376723,-9.957698,-0.0009247158,-0.005207631,-0.0007419974 +4976000,imu,-0.22469985,0.17107421,-9.949976,-0.001496564,-0.007553158,0.0015945813 +4980000,imu,-0.18735032,0.18872948,-9.969198,-0.00065543054,-0.004306102,0.00088428217 +4980000,mag,0.009498444,-0.21141699,0.42539117 +4984000,imu,-0.18048555,0.19693676,-9.984495,0.0017097219,-0.004001168,-0.0006456695 +4988000,imu,-0.18126215,0.19282506,-9.9507885,-0.00013965105,-0.0076484964,-0.002038223 +4992000,baro,487.60983 +4992000,mag,0.011709024,-0.21657413,0.42786357 +4992000,imu,-0.18141896,0.19751576,-9.91681,-0.0034708928,-0.0075850226,-0.00076324545 +4996000,imu,-0.21504638,0.21610743,-9.903397,-0.004613157,-0.0032094866,0.00088416593 +5000000,imu,-0.22483683,0.21394016,-9.908497,-0.0043715835,-0.005107029,0.000625155 +5004000,mag,0.009281917,-0.21695998,0.4260835 +5004000,imu,-0.23734644,0.17731112,-9.9137535,-0.004403629,-0.0070302277,0.0008289778 +5008000,imu,-0.24394622,0.18242349,-9.936247,-0.003910903,-0.0049626417,0.0028825025 +5012000,imu,-0.2202666,0.23000373,-9.967306,-0.005919227,-0.006536737,0.0016562818 +5016000,mag,0.017876098,-0.21800636,0.4310335 +5016000,imu,-0.22447938,0.23039544,-9.981071,-0.005709994,-0.007285333,-0.000108263 +5020000,imu,-0.22409052,0.18023835,-9.959364,-0.0032858972,-0.0054668565,0.002309086 +5024000,imu,-0.24821764,0.17590934,-9.939067,-0.0018296824,-0.0070470693,0.002924784 +5028000,imu,-0.22476353,0.17009157,-9.941812,-0.00045999145,-0.00580037,0.0012242491 +5028000,mag,0.012703589,-0.21905163,0.43057734 +5032000,imu,-0.19835138,0.17710419,-9.941685,-0.0017230627,-0.004459955,0.0018080663 +5036000,imu,-0.21255401,0.21619806,-9.933383,-0.002804115,-0.004867005,0.0011106888 +5040000,mag,0.011210843,-0.21613413,0.4270737 +5040000,imu,-0.2264362,0.21850103,-9.942032,-0.0006955934,-0.004047465,0.00058770564 +5044000,imu,-0.22633694,0.1962047,-9.975151,0.001150497,-0.0054918285,-0.00040177407 +5048000,imu,-0.21621543,0.18771505,-9.958213,-0.00028643303,-0.0044365423,0.00030748974 +5052000,imu,-0.23766184,0.18407564,-9.958244,-0.0013072842,-0.0057482803,0.0011886543 +5052000,mag,0.010097943,-0.22161248,0.42914116 +5056000,imu,-0.22464287,0.16106512,-9.978867,-0.0024569095,-0.008874021,-0.00018201403 +5060000,imu,-0.19285476,0.16560353,-9.92967,-0.00010011704,-0.009528451,0.0026287416 +5060000,mag,0.009657207,-0.21390595,0.4278446 +5064000,imu,-0.2024866,0.2050025,-9.938862,0.0036480809,-0.007290603,0.0028988605 +5064000,baro,487.61453 +5068000,imu,-0.2335068,0.19277453,-9.963034,-0.0027713296,-0.0056173997,-0.0014968693 +5072000,imu,-0.23123932,0.19015045,-9.966483,-0.0053607267,-0.0043357103,-0.00248571 +5076000,imu,-0.21412851,0.21144274,-9.977318,7.338149e-05,-0.0048571443,0.0016778649 +5076000,mag,0.0080798855,-0.21070582,0.42650726 +5080000,imu,-0.20485963,0.20642093,-9.955151,7.348944e-05,-0.010442028,0.0024665964 +5084000,imu,-0.19786802,0.19702391,-9.962666,-0.001750542,-0.009887381,0.0016653703 +5088000,mag,0.010492617,-0.21131131,0.4342953 +5088000,imu,-0.21226403,0.18790464,-9.969591,-0.004067307,-0.005985256,0.0024693455 +5092000,imu,-0.22405806,0.18587519,-9.948679,-0.0010691173,-0.0032919203,0.0022913497 +5096000,imu,-0.20386186,0.1834496,-9.935736,0.0011552875,-0.0016104793,0.0041834563 +5100000,imu,-0.20734048,0.17428623,-9.967059,0.0008050236,-0.0052161594,0.004356594 +5100000,mag,0.008885559,-0.21780299,0.426853 +5104000,imu,-0.23289114,0.16922864,-9.975201,0.0012321309,-0.0064342073,0.0022784201 +5108000,imu,-0.21826005,0.1666571,-9.916051,-0.0005072126,-0.004405961,0.002604297 +5112000,mag,0.0045166155,-0.21713021,0.4290553 +5112000,imu,-0.22562066,0.17966421,-9.908947,-0.0013516286,-0.0041998154,0.00015952035 +5116000,imu,-0.24286494,0.19102249,-9.942907,-0.0031990786,-0.006071335,-0.0007948272 +5120000,imu,-0.21230745,0.1885386,-9.933905,-0.0018713415,-0.0070537534,7.509867e-05 +5124000,mag,0.013652618,-0.21477976,0.4287875 +5124000,imu,-0.21484633,0.1891642,-9.930721,-0.0003446466,-0.0064950427,0.00018028988 +5128000,imu,-0.21973884,0.18426111,-9.952088,-0.0025324472,-0.0077056563,-0.0016076346 +5132000,imu,-0.20004639,0.16862662,-9.964842,-0.0038894613,-0.005599734,-0.0010833745 +5136000,mag,0.013382237,-0.21598051,0.43362623 +5136000,baro,487.6427 +5136000,imu,-0.2138604,0.15602829,-9.941,-0.0034641717,-0.005594408,-0.0015341247 +5140000,imu,-0.22853653,0.1747909,-9.92467,-0.0013502213,-0.009770001,-0.0033688408 +5144000,imu,-0.22889732,0.18065332,-9.933331,-0.002446617,-0.009360531,-0.0023105547 +5148000,mag,0.006521353,-0.21981654,0.4302224 +5148000,imu,-0.21129501,0.19173194,-9.954897,0.001114561,-0.006047174,-0.0009185059 +5152000,imu,-0.18741292,0.21099073,-9.927364,0.003242851,-0.003845421,0.00067835365 +5156000,imu,-0.18021116,0.21333665,-9.899733,-9.904466e-05,-0.0035674297,-0.0004113884 +5160000,mag,0.014483179,-0.21408015,0.43169776 +5160000,imu,-0.21051615,0.1951954,-9.937877,-0.0010158876,-0.004968554,-0.0014993587 +5164000,imu,-0.22381613,0.19024716,-9.905371,-0.0005110466,-0.0074475864,-0.0013875196 +5168000,imu,-0.2080448,0.20282203,-9.915585,-0.0020327826,-0.008525229,0.0004608214 +5172000,mag,0.014233185,-0.2167551,0.43209395 +5172000,imu,-0.19915134,0.21384624,-9.958326,-0.0031755217,-0.002979334,0.0019762947 +5176000,imu,-0.18538162,0.20201801,-9.95488,-0.00087056565,0.00013319113,0.0010704844 +5180000,imu,-0.19955665,0.16104339,-9.959062,0.001845249,-0.0052705174,-0.0012988591 +5184000,mag,0.013554024,-0.21285708,0.42373264 +5184000,imu,-0.2158237,0.16665103,-9.942858,0.00080662884,-0.00920723,0.001697758 +5188000,imu,-0.22515129,0.19595896,-9.938806,-0.005439788,-0.007399834,0.0016900761 +5192000,imu,-0.23716283,0.19643606,-9.931261,-0.005400419,-0.004423153,-0.0010420419 +5196000,imu,-0.21706894,0.19322264,-9.939014,-0.004046882,-0.0031300527,-0.0011854989 +5196000,mag,0.016589748,-0.21683703,0.42038694 +5200000,imu,-0.18824795,0.18500821,-9.928159,-0.0027904017,-0.0015171199,-0.003068633 +5204000,imu,-0.19853336,0.17492118,-9.910491,-0.00055961974,-0.0033853871,-0.0035817611 +5208000,baro,487.60513 +5208000,mag,0.014518915,-0.21623036,0.43059543 +5208000,imu,-0.24060485,0.2016357,-9.925899,0.0010301978,-0.0065978067,-0.0035701143 +5212000,imu,-0.25348532,0.20150593,-9.920298,0.0014518694,-0.007319282,-0.0019963565 +5216000,imu,-0.25312027,0.18468207,-9.926531,-0.0010122384,-0.008524159,0.001516748 +5220000,mag,0.0060859914,-0.21562181,0.4398823 +5220000,imu,-0.24791041,0.17195672,-9.948078,-0.004591548,-0.0069605717,0.0011769818 +5224000,imu,-0.22450109,0.17061834,-9.960171,-0.001293504,-0.0052268943,-0.00029517568 +5228000,imu,-0.2248132,0.1876077,-9.944973,6.914899e-05,-0.0036469365,0.0024514573 +5232000,mag,0.012900592,-0.21487589,0.42784742 +5232000,imu,-0.22047421,0.18023925,-9.930763,-0.002167207,-0.0032179677,0.0024917608 +5236000,imu,-0.2211751,0.17378603,-9.965288,0.001688798,-0.0067960713,-0.0039212396 +5240000,imu,-0.22635221,0.17181672,-9.977723,0.0011643086,-0.007858322,-0.007974657 +5244000,imu,-0.24119529,0.19822332,-9.946454,0.00074377743,-0.0059062093,-0.0049243816 +5244000,mag,0.008153564,-0.22040133,0.42576542 +5248000,imu,-0.23394796,0.22627732,-9.959117,0.00041529976,-0.0070785675,-0.0024985916 +5252000,imu,-0.19162415,0.2046604,-9.973669,5.2720592e-05,-0.009503376,-0.0011535323 +5252000,gps,488098.0,85456074.0,473977508.0,0.0,0.0,0.0 +5256000,mag,0.010394694,-0.21822007,0.4280366 +5256000,imu,-0.18066272,0.18957792,-9.969019,-0.00026782177,-0.008207836,0.00023710109 +5260000,imu,-0.23269662,0.2005379,-9.97002,-0.0024314695,-0.0073006926,0.0021429094 +5264000,imu,-0.26913098,0.22654472,-9.944453,-0.00034919646,-0.008920991,0.0054494664 +5268000,mag,0.011436902,-0.2215615,0.43431088 +5268000,imu,-0.23361854,0.22439493,-9.95928,-9.926465e-05,-0.007677523,0.0049826824 +5272000,imu,-0.23792748,0.21178475,-9.975996,-0.0014155356,-0.004362848,0.0011471402 +5276000,imu,-0.26242426,0.22584769,-9.936791,-0.0010871049,-0.0049290336,-0.00054452545 +5280000,imu,-0.24740951,0.21891004,-9.924248,-0.0008533125,-0.0061569232,-0.0029795975 +5280000,mag,0.01167042,-0.21610285,0.43072098 +5280000,baro,487.5535 +5284000,imu,-0.22893094,0.20605904,-9.953623,0.0021532844,-0.003932659,-0.0018202602 +5288000,imu,-0.24290973,0.18735805,-9.970409,0.0033620566,-0.0049421126,0.0019377967 +5292000,mag,0.012426115,-0.2175264,0.4278681 +5292000,imu,-0.29033512,0.1803847,-9.940498,-0.000586262,-0.006281838,0.0004256758 +5296000,imu,-0.27180704,0.20635314,-9.938259,-0.001809062,-0.004484337,0.00062441645 +5300000,imu,-0.23684525,0.18191715,-9.9655285,0.0008722674,-0.0049410416,0.0019830135 +5304000,imu,-0.20847005,0.19969633,-9.96731,0.002601769,-0.0061304364,-7.147834e-06 +5304000,mag,0.010595251,-0.21485932,0.42754206 +5308000,imu,-0.22635953,0.19338006,-9.963566,-0.00043925302,-0.008821235,0.0022271082 +5312000,imu,-0.27457115,0.19237086,-9.94224,-4.7737685e-05,-0.012050003,0.002116057 +5316000,mag,0.01098327,-0.21849827,0.4233512 +5316000,imu,-0.2568248,0.23073103,-9.92233,-0.00082114077,-0.011051139,-0.0022152262 +5320000,imu,-0.2361038,0.20245488,-9.908077,-0.0030153238,-0.008950753,0.0021181286 +5324000,imu,-0.20783931,0.21177244,-9.934912,0.0019103981,-0.006044355,0.007258081 +5328000,imu,-0.21467623,0.193478,-9.964645,0.0040281266,-0.0062611774,0.0036987658 +5328000,mag,0.010428869,-0.2070066,0.42261437 +5332000,imu,-0.21371,0.17330298,-9.952818,0.0017794968,-0.0059743193,-0.0007438658 +5336000,imu,-0.2236233,0.18559082,-9.91298,-0.0010860235,-0.003674659,-0.0012690682 +5340000,imu,-0.23848353,0.18399736,-9.9113865,-0.0017948832,-0.0040710745,-0.0001327968 +5340000,mag,0.008183486,-0.2134455,0.4293599 +5344000,imu,-0.24249026,0.18740967,-9.963659,-0.0010945101,-0.0066064866,-1.5382546e-05 +5348000,imu,-0.2124455,0.1969249,-9.947994,-0.001573261,-0.0068478873,-5.235676e-05 +5352000,baro,487.6427 +5352000,imu,-0.17214832,0.1680266,-9.917503,-0.00010321048,-0.006064528,0.0028935878 +5352000,mag,0.010108486,-0.21423143,0.4305676 +5356000,imu,-0.19840053,0.14535123,-9.949085,-0.0020859563,-0.0076939133,0.0017454776 +5360000,imu,-0.2202121,0.18489641,-9.953653,-0.004578114,-0.0076424065,0.0013286044 +5364000,mag,0.0055782297,-0.217677,0.42735952 +5364000,imu,-0.21850614,0.18722664,-9.94227,-0.0012385433,-0.007909546,0.0031375878 +5368000,imu,-0.22727951,0.15696381,-9.922176,0.0010627046,-0.006403226,0.00036129504 +5372000,mag,0.0068620252,-0.21800111,0.4271899 +5372000,imu,-0.23060143,0.17383328,-9.927268,-0.0008909112,-0.009989195,-3.1898006e-05 +5376000,imu,-0.24243912,0.20662366,-9.975936,-0.004630128,-0.010850675,1.7511558e-05 +5380000,imu,-0.27171052,0.2149482,-9.978259,-0.0025603096,-0.004700184,-0.0012332129 +5384000,imu,-0.24878871,0.20688774,-9.927516,2.0925536e-05,-0.0061972886,-0.0001732603 +5388000,mag,0.005711516,-0.2104556,0.42823508 +5388000,imu,-0.22458154,0.18362913,-9.900391,0.00055154006,-0.005480184,0.0013202191 +5392000,imu,-0.2314705,0.17602707,-9.928193,0.00095922564,-0.0068740947,0.0004106646 +5396000,imu,-0.22917217,0.18063772,-9.953355,-0.001538291,-0.007090428,0.0002648531 +5400000,imu,-0.2161727,0.19916672,-9.966664,-0.0028684025,-0.0023142905,0.0017343018 +5400000,mag,0.01516415,-0.21767102,0.42372105 +5404000,imu,-0.2261713,0.20040058,-9.943709,-0.001514424,-0.004237059,0.0022410227 +5408000,imu,-0.2410073,0.192176,-9.911968,-0.00074947876,-0.003302333,0.0009626325 +5412000,imu,-0.23296443,0.19656292,-9.94779,-0.00020511127,-0.0051178536,-0.0020810633 +5412000,mag,0.005341306,-0.21455961,0.4333294 +5416000,imu,-0.22232638,0.1930768,-9.974131,0.0021199484,-0.008428196,0.0016167299 +5420000,imu,-0.23151049,0.19674818,-9.913209,3.614081e-05,-0.0070234993,0.004863753 +5424000,mag,0.014487728,-0.22419286,0.42679363 +5424000,imu,-0.2421433,0.19134249,-9.897043,-0.0018310356,-0.0062399297,0.00313079 +5424000,baro,487.61453 +5428000,imu,-0.20128386,0.15520912,-9.929296,-0.00222112,-0.003904252,0.00034307063 +5432000,imu,-0.19181488,0.16957638,-9.922798,-0.0011571236,-0.0024475902,-0.00011258232 +5436000,imu,-0.21954903,0.18934745,-9.9316635,0.0018901023,-0.0056370045,-0.0009927264 +5436000,mag,0.0014748154,-0.21601161,0.43462005 +5440000,imu,-0.20988701,0.16185541,-9.934203,-0.0007239436,-0.007180468,-0.0029918833 +5444000,imu,-0.22578982,0.16621718,-9.942584,-0.0026798788,-0.0075665787,-0.0019111692 +5448000,imu,-0.24217361,0.18531422,-9.964235,-0.0010421581,-0.010136193,-0.00064091204 +5448000,mag,0.011659527,-0.22144064,0.42151427 +5452000,imu,-0.2094945,0.1858668,-9.9480095,-0.0007743442,-0.008916737,0.0012627164 +5456000,imu,-0.19167072,0.16589002,-9.949249,-0.0015061841,-0.008076198,0.0014274062 +5460000,imu,-0.20006713,0.20210515,-9.945811,-0.0015745402,-0.010058127,-0.0015592024 +5460000,mag,0.009861377,-0.21489847,0.43157613 +5464000,imu,-0.18446335,0.2267169,-9.915559,0.0005904761,-0.0054376367,-0.0013992082 +5468000,imu,-0.18563458,0.20963499,-9.930238,-0.0010243221,-0.0022742602,0.0012575703 +5472000,mag,0.011007374,-0.21472834,0.42395893 +5472000,imu,-0.2221165,0.21243733,-9.955213,-0.00071562367,-0.005256224,0.00052067195 +5476000,imu,-0.23304006,0.1962204,-9.925455,0.0015283677,-0.007979563,-0.0003754084 +5480000,imu,-0.22003421,0.1902486,-9.922174,0.0005038792,-0.006766385,-0.0027684195 +5484000,mag,0.008881736,-0.22452065,0.4321797 +5484000,imu,-0.24795511,0.20571966,-9.937683,0.0014212957,-0.0032652016,-0.0025564083 +5488000,imu,-0.26620016,0.22185981,-9.944847,-0.00057857815,-0.005224009,-0.0008775121 +5492000,imu,-0.22530565,0.20626254,-9.952883,-0.0020607952,-0.005291463,-0.0019542947 +5496000,imu,-0.21753141,0.16981424,-9.938259,-0.0023300874,-0.005419974,-0.0024564192 +5496000,baro,487.70844 +5496000,mag,0.011414859,-0.21278723,0.4311935 +5500000,imu,-0.23291352,0.18810646,-9.935779,-0.0021313443,-0.0067179506,-0.0011906006 +5504000,imu,-0.24935758,0.2208831,-9.914084,-0.0010417922,-0.002848475,0.00083397876 +5508000,mag,0.0027515963,-0.21695758,0.435193 +5508000,imu,-0.2237362,0.19791894,-9.930902,-0.00078075094,-0.0026203473,0.0020433196 +5512000,imu,-0.1921493,0.19030209,-9.947149,-0.0030276277,-0.0048273467,0.005578238 +5516000,imu,-0.19495504,0.19168888,-9.918949,-0.0029215026,-0.005283752,0.0043616737 +5520000,mag,0.0074620578,-0.21544361,0.42816398 +5520000,imu,-0.18371364,0.19328263,-9.946661,0.00037088586,-0.0020994514,0.0014334286 +5524000,imu,-0.22715962,0.21267574,-10.004989,0.00041804605,-0.004462773,-0.00039894 +5528000,imu,-0.22535673,0.22488105,-9.987152,-0.0021681017,-0.008260505,-0.0033041746 +5532000,mag,0.00764687,-0.21433616,0.4291735 +5532000,imu,-0.20137775,0.20845543,-9.942631,-0.0014621335,-0.004290234,-0.0029971728 +5536000,imu,-0.2300885,0.16837873,-9.927006,0.00021125228,-0.004785569,-0.0006699532 +5540000,imu,-0.24739623,0.15337676,-9.91238,-0.00048196307,-0.007901857,-0.0013030762 +5540000,mag,0.012379697,-0.21451958,0.42899752 +5544000,imu,-0.24149686,0.18433139,-9.922381,-0.0021292914,-0.005993263,-0.0034893278 +5548000,imu,-0.18047585,0.18659835,-9.933998,-0.002320544,-0.0063821278,-0.0009751218 +5552000,imu,-0.1842958,0.16373605,-9.965055,-7.105317e-05,-0.0065967385,-0.00063231145 +5556000,imu,-0.22782093,0.18673816,-9.965954,-0.0007260499,-0.004160298,-0.0017138893 +5556000,mag,0.016688919,-0.21729101,0.43248412 +5560000,imu,-0.23018265,0.18514855,-9.935469,0.001137763,-0.0069768718,-0.0017266276 +5564000,imu,-0.2306647,0.19038686,-9.917314,0.0024883111,-0.0091894595,-0.00079229934 +5564000,mag,0.0108699305,-0.21777292,0.42803907 +5568000,imu,-0.21908362,0.18797895,-9.909659,0.0012044202,-0.0063007465,-0.00053975126 +5568000,baro,487.59576 +5572000,imu,-0.2254931,0.18229066,-9.976736,0.0005793831,-0.005528217,-0.0004989034 +5576000,imu,-0.20784074,0.17071612,-9.992733,-0.0010574724,-0.005650571,-0.0011592878 +5580000,imu,-0.19387928,0.16744198,-9.946531,-0.0013042922,-0.0043856706,-0.001649638 +5580000,mag,0.0133148385,-0.2118254,0.4319535 +5584000,imu,-0.21876676,0.19052532,-9.927725,0.0005949102,-0.00594,-0.0007565685 +5588000,imu,-0.22107854,0.1788287,-9.943954,-0.00012705514,-0.005606371,-1.8357627e-05 +5592000,imu,-0.21431914,0.19640449,-9.966984,-0.0028133916,-0.0048062587,0.00023607936 +5592000,mag,0.010302181,-0.21311925,0.43036115 +5596000,imu,-0.20573744,0.2164191,-9.949641,-0.0028699243,-0.0038556417,0.0004294671 +5600000,imu,-0.21939376,0.17751205,-9.932588,-0.0002314887,-0.0050670314,0.002426168 +5604000,imu,-0.2376669,0.16857378,-9.953154,0.003594202,-0.0064132763,0.0039062686 +5604000,mag,0.0054512857,-0.22300628,0.42316592 +5608000,imu,-0.23616034,0.1999021,-9.967154,0.0033819636,-0.0037985223,0.004651384 +5612000,imu,-0.20731083,0.21153909,-9.936395,0.0035384563,-0.004084892,0.0021369385 +5616000,imu,-0.19260015,0.1813873,-9.956164,0.0027670292,-0.006356726,-0.00028521047 +5616000,mag,0.010510503,-0.21794114,0.42787865 +5620000,landed,1.0 +5620000,imu,-0.20221251,0.1762614,-9.977055,0.0007732554,-0.008184731,-0.0039410214 +5624000,imu,-0.20317043,0.20194413,-9.949788,0.00020616136,-0.0037517047,-0.0025951322 +5628000,imu,-0.20272425,0.18016662,-9.933985,-0.0009451153,0.00012509807,0.0061798184 +5628000,mag,0.01182533,-0.22165842,0.4273697 +5632000,imu,-0.23546708,0.18986177,-9.931135,-7.701457e-05,-0.007825947,0.0037514027 +5636000,imu,-0.2661424,0.20718752,-9.939894,0.0023097978,-0.009568865,-0.0015954168 +5640000,mag,0.0032688763,-0.21422297,0.42936262 +5640000,baro,487.60513 +5640000,imu,-0.2091299,0.2132383,-9.939997,0.0002721396,-0.0028334502,-0.0010123005 +5644000,imu,-0.19243523,0.1984365,-9.967435,-0.0021716966,-0.0018364849,0.0005166524 +5648000,imu,-0.21712542,0.20011245,-9.96245,-0.0036531438,-0.004750084,0.002978294 +5652000,gps,488108.0,85456074.0,473977508.0,-0.01,-0.01,-0.01 +5652000,mag,0.0087807095,-0.2107453,0.42882794 +5652000,imu,-0.23525825,0.22279993,-9.930829,-0.0019185796,-0.007842241,-0.002254316 +5656000,imu,-0.24534835,0.18135415,-9.942588,0.0015639289,-0.0049634036,-0.004106172 +5660000,imu,-0.22557715,0.17473821,-9.931677,-0.00064072607,-0.0044852635,-0.0011081562 +5664000,mag,0.010159522,-0.22201808,0.42073774 +5664000,imu,-0.20983449,0.1955453,-9.942917,-0.0026445664,-0.0074818516,0.00038986155 +5668000,imu,-0.21214391,0.21928479,-9.987096,0.0027562168,-0.0071724746,0.003516239 +5672000,imu,-0.24000826,0.21470527,-9.986981,0.00365632,-0.008266846,0.0019094971 +5676000,imu,-0.22061124,0.21459365,-9.961827,-0.00060789695,-0.007843164,0.003312816 +5676000,mag,0.0075650252,-0.2100641,0.4250917 +5680000,imu,-0.20350048,0.2369396,-9.975844,-0.000665816,-0.00809271,0.005352902 +5684000,imu,-0.22775348,0.20253876,-9.972939,-0.0020167595,-0.006786377,0.0027342243 +5688000,mag,0.005345297,-0.21463335,0.42990822 +5688000,imu,-0.22120553,0.19929832,-9.96398,-0.0011588398,-0.0049126865,0.0014047635 +5692000,imu,-0.23553589,0.19776888,-9.972164,-0.001877362,-0.007255404,-0.0017193106 +5696000,imu,-0.22816822,0.17241774,-9.932465,-0.0015534649,-0.005519397,-0.0026267627 +5700000,imu,-0.21224374,0.17785884,-9.920107,-0.0002278826,-0.0043679327,0.0007594845 +5700000,mag,0.0026121151,-0.21678092,0.42458686 +5704000,imu,-0.23352414,0.21079151,-9.929832,0.0012075354,-0.009115664,0.001302048 +5708000,imu,-0.25136623,0.21233402,-9.928088,0.003399262,-0.007892438,0.00045481935 +5712000,baro,487.66147 +5712000,mag,0.012268997,-0.22159408,0.4281549 +5712000,imu,-0.24908277,0.19077858,-9.948664,0.001448082,-0.0048951646,-0.00150273 +5716000,imu,-0.22445786,0.19536269,-9.953904,0.0011868066,-0.00641174,-0.0023228768 +5720000,imu,-0.20817241,0.19325693,-9.92006,0.0015047601,-0.0045285677,0.00090099697 +5724000,mag,0.0061268928,-0.206965,0.4368555 +5724000,imu,-0.20410834,0.20665765,-9.90737,-0.002800911,-0.0018765236,0.0023423913 +5728000,imu,-0.20689858,0.21979244,-9.946737,-0.0015422831,-0.004269609,0.0020292215 +5732000,imu,-0.18429674,0.19862099,-9.960991,-0.00030607157,-0.008211214,0.0025739234 +5736000,mag,0.007471921,-0.22090442,0.43564305 +5736000,imu,-0.19287686,0.18138187,-9.916603,-0.0021701625,-0.008127917,0.0006021661 +5740000,imu,-0.2426028,0.18911104,-9.918959,-0.0023306177,-0.0051961737,7.348023e-05 +5744000,imu,-0.25459564,0.21440858,-9.921408,-0.0018501524,-0.0037570542,1.6243896e-05 +5748000,imu,-0.23722313,0.21702069,-9.931899,-0.00061715,-0.006657471,-0.0021842346 +5748000,mag,0.012738216,-0.21448348,0.43260366 +5752000,imu,-0.2404587,0.22038838,-9.950668,-0.0010411602,-0.009034401,-0.0029480762 +5756000,imu,-0.22702408,0.21176977,-9.913078,-0.0015304254,-0.0080593955,-0.0005409265 +5760000,imu,-0.1899732,0.18638803,-9.886144,-0.0024170447,-0.0045092525,0.0027041452 +5760000,mag,0.017083464,-0.21899128,0.4336593 +5764000,imu,-0.177785,0.19695614,-9.891198,-0.0025828178,-0.0055214562,-0.00054277683 +5768000,imu,-0.22629532,0.18122084,-9.926405,-0.0006483373,-0.0063633905,-0.0035784298 +5772000,imu,-0.2207224,0.19279802,-9.921679,0.003485369,-0.0068379664,0.00081685046 +5772000,mag,0.0018005547,-0.2137532,0.4314606 +5776000,imu,-0.19642615,0.20802471,-9.931901,0.003039134,-0.005626207,0.0011890647 +5780000,imu,-0.21391822,0.20526867,-9.9494295,0.0025623608,-0.0023246356,-0.002540836 +5784000,baro,487.638 +5784000,imu,-0.19031593,0.21241784,-9.932705,0.0027350814,-0.0029943523,1.216724e-05 +5784000,mag,0.00725466,-0.22072168,0.4304427 +5788000,imu,-0.20725802,0.1769358,-9.938374,-0.002526012,-0.0052948156,0.003681781 +5792000,imu,-0.21219054,0.15633266,-9.942282,-0.0009298129,-0.006445464,0.00097059715 +5796000,imu,-0.22010413,0.14333108,-9.94315,0.0029204942,-0.0067860177,-0.0027776114 +5796000,mag,0.009366644,-0.21616372,0.43141037 +5800000,imu,-0.2477631,0.152244,-9.942587,0.0013873354,-0.0075614154,-0.0033804425 +5804000,imu,-0.22575939,0.16121095,-9.9341545,-0.001038684,-0.0046058777,-0.0028334868 +5808000,mag,0.010666298,-0.21190992,0.43287376 +5808000,imu,-0.17022832,0.19072828,-9.928243,-0.0042453744,-0.0035019906,-0.0025938703 +5812000,imu,-0.1720942,0.20046458,-9.946752,-0.0037184705,-0.004181897,-0.0005487711 +5816000,imu,-0.19853565,0.18411697,-9.936045,-0.00088077853,-0.0048954138,0.0035178124 +5820000,mag,0.008213536,-0.22020863,0.42750117 +5820000,imu,-0.1899994,0.20897736,-9.934036,0.0010343071,-0.0072801337,0.003811033 +5824000,imu,-0.18604124,0.20841154,-9.973616,0.0010306224,-0.0039562266,0.0017587768 +5828000,imu,-0.24017504,0.20336394,-9.935147,-0.0012954187,-0.0029656999,0.000838848 +5832000,mag,0.007503232,-0.21521847,0.4305763 +5832000,imu,-0.24162243,0.21081334,-9.915897,-0.0019977991,-0.0063321586,0.00012862778 +5836000,imu,-0.20373733,0.19499993,-9.929332,0.0004038682,-0.0055943117,0.00091091753 +5840000,imu,-0.20233911,0.16782506,-9.881713,-0.0009599345,-0.0058514094,0.0028035322 +5844000,mag,0.011715258,-0.21672605,0.4256754 +5844000,imu,-0.210004,0.19567794,-9.892421,-0.00095488474,-0.0045073773,0.0017591253 +5848000,imu,-0.2308844,0.23293567,-9.90955,0.0019150146,-0.0050309133,-0.0005997704 +5852000,imu,-0.24065645,0.20503682,-9.916746,-9.189832e-05,-0.007752666,-0.0019283041 +5856000,mag,0.010379945,-0.21139331,0.42430156 +5856000,baro,487.57697 +5856000,imu,-0.25908315,0.16072626,-9.936802,-0.00076981355,-0.007400481,-0.0029227834 +5860000,imu,-0.24249217,0.1678817,-9.941963,-0.001860449,-0.0056440188,-0.005336607 +5864000,imu,-0.21366945,0.17473193,-9.949817,-0.0027396968,-0.0037260307,-0.0030350932 +5868000,imu,-0.21646191,0.18433997,-9.946771,0.0008340304,-0.0042168973,-0.00085364963 +5868000,mag,0.008263538,-0.21224827,0.42941597 +5872000,imu,-0.20229778,0.19560118,-9.956261,-0.0013763255,-0.009074257,-0.001246875 +5876000,imu,-0.20730272,0.23702072,-9.965189,-0.0024039908,-0.0065887696,0.0015496843 +5880000,imu,-0.22325233,0.22163247,-9.946716,-0.0006519292,-0.0033742483,0.0009492942 +5880000,mag,0.0075849914,-0.22069511,0.43068513 +5884000,imu,-0.19190955,0.20424531,-9.935619,-0.001523634,-0.0069142957,0.00040810218 +5888000,imu,-0.19710973,0.22022282,-9.936313,0.0012456694,-0.007999592,-0.003439699 +5892000,imu,-0.23983529,0.21097289,-9.915777,0.002217317,-0.006205297,-0.0039314656 +5892000,mag,0.004581819,-0.2126462,0.4308476 +5896000,imu,-0.2346515,0.20219736,-9.917633,0.0010921077,-0.0037171633,0.00040843646 +5900000,imu,-0.21277317,0.17904238,-9.926416,-8.716688e-05,-0.003918912,0.00033340082 +5904000,imu,-0.1815545,0.2405656,-9.917585,-0.00022162622,-0.005372615,-0.00031574108 +5904000,mag,0.0064467173,-0.21646604,0.4353518 +5908000,imu,-0.17327523,0.2426677,-9.9304905,-0.0007708155,-0.00612397,-0.0013190259 +5912000,imu,-0.2447686,0.22013083,-9.943039,-0.0029107053,-0.0040465505,0.0018650113 +5916000,imu,-0.2523559,0.21999538,-9.942267,-0.0023751843,-0.0024885484,0.0031782656 +5916000,mag,0.013355534,-0.21370858,0.4254555 +5920000,imu,-0.21578376,0.22105026,-9.956743,-0.0006281755,-0.004908973,0.0011504292 +5924000,imu,-0.22128037,0.23275867,-9.972928,0.00013699796,-0.0067159072,0.0017341075 +5928000,baro,487.58636 +5928000,mag,0.007799281,-0.21840584,0.43288532 +5928000,imu,-0.23250762,0.18583453,-9.993638,0.0036507712,-0.0051021674,0.0006376927 +5932000,imu,-0.2528877,0.18185133,-9.998962,0.002969265,-0.0050490666,0.002450312 +5936000,imu,-0.24205858,0.21075414,-9.980778,-0.0014770485,-0.009463165,0.0039747003 +5940000,imu,-0.21554452,0.20834024,-9.95963,-0.0021454382,-0.010048602,0.00018983045 +5940000,landed,1.0 +5940000,mag,0.012529319,-0.22116315,0.42768994 +5944000,imu,-0.21026742,0.19876347,-9.939083,-0.0034561683,-0.0077220537,-0.0019893786 +5948000,imu,-0.21013829,0.20543034,-9.951926,-0.003459605,-0.0032443712,-0.00038930052 +5952000,imu,-0.22526124,0.20944546,-9.968409,-0.0049739406,-0.0025149991,0.0027311963 +5952000,mag,0.010495766,-0.21496522,0.42744678 +5956000,imu,-0.24793594,0.19673507,-9.944754,-0.0057814545,-0.0072332816,0.0021508753 +5960000,imu,-0.24763055,0.18513249,-9.946396,-0.0025667017,-0.007786226,0.0010132521 +5964000,imu,-0.20592232,0.17486134,-9.955465,-0.0021166287,-0.009287522,-0.00075856753 +5964000,mag,0.009729492,-0.21561582,0.4292698 +5968000,imu,-0.1821563,0.18684663,-9.929045,0.0012653391,-0.0095017655,-0.0012821825 +5972000,imu,-0.21059822,0.20913385,-9.936796,0.00038995725,-0.011419587,0.0011503169 +5976000,imu,-0.23896196,0.19492964,-9.965954,-0.002672696,-0.010197451,0.0011515245 +5976000,mag,0.010070656,-0.22584333,0.42595202 +5980000,imu,-0.2217448,0.18073069,-9.943028,-0.00069916766,-0.003985082,-0.0009111355 +5984000,imu,-0.19297078,0.18006614,-9.934314,-0.00019259633,-0.0049425354,-0.0033798134 +5988000,imu,-0.18900351,0.1490734,-9.946043,-0.00062171725,-0.007511468,-0.00045135737 +5988000,mag,0.010213972,-0.21724652,0.43119052 +5992000,imu,-0.18878436,0.1829056,-9.920541,-0.0015350177,-0.0045373756,0.0028647273 +5996000,imu,-0.20885074,0.23880397,-9.912721,-0.0029228607,-0.0055300808,0.0028008951 +6000000,mag,0.007036441,-0.21974666,0.4274338 +6000000,baro,487.60513 +6000000,imu,-0.23713863,0.23928118,-9.950541,-0.0014347425,-0.008205132,0.0016022644 +6004000,imu,-0.24066287,0.23779911,-9.936653,-0.00074397936,-0.0054814145,-0.0020563845 +6008000,imu,-0.2312035,0.22477345,-9.921137,-0.0025960472,-0.006301656,-0.0026294705 +6012000,mag,0.013648434,-0.20951748,0.4317915 +6012000,imu,-0.19622159,0.19856091,-9.942812,-0.0017504487,-0.0057917205,-0.0024210054 +6016000,imu,-0.19789952,0.18605076,-9.949617,-0.00019933812,-0.007056847,-0.001099973 +6020000,imu,-0.21706975,0.19748214,-9.942339,-0.0018266728,-0.007580868,0.0021086938 +6024000,imu,-0.22437367,0.20883778,-9.930404,-0.003033524,-0.0029499219,0.0013533062 +6024000,mag,0.011846914,-0.21413808,0.4258383 +6028000,imu,-0.23412374,0.19291161,-9.932335,-0.00052607444,-0.0019870868,-0.00030791105 +6032000,imu,-0.21693827,0.18690814,-9.9391365,0.00037138732,-0.0020013188,-0.0012537951 +6036000,mag,0.015636388,-0.22047304,0.42940474 +6036000,imu,-0.19113374,0.20023282,-9.928444,-0.0012034723,-0.005863343,-0.0012330922 +6040000,imu,-0.18619624,0.2050856,-9.934525,-0.003233566,-0.007942482,-0.0054657264 +6044000,imu,-0.20303664,0.1934819,-9.938076,-0.0020461301,-0.004837784,-0.004244338 +6048000,imu,-0.19848591,0.18662742,-9.918865,0.0011777371,-0.005893221,0.0027811055 +6048000,mag,0.0059466506,-0.21900123,0.42890698 +6052000,imu,-0.2126554,0.17927252,-9.922801,-0.0015291519,-0.0068142214,0.0011630738 +6052000,gps,488109.0,85456074.0,473977508.0,0.0,0.01,0.02 +6056000,imu,-0.21323757,0.18462232,-9.951145,-0.0014758772,-0.0046625473,-0.0005796033 +6060000,imu,-0.1741592,0.2071882,-9.95237,0.0025155598,-0.0051262677,-0.00050963997 +6060000,mag,0.011083871,-0.22282593,0.42995325 +6064000,imu,-0.18569341,0.19979694,-9.935741,0.002494212,-0.007604222,-0.0014031577 +6068000,imu,-0.23281954,0.19523008,-9.928654,0.00073047116,-0.0081507,0.0004888994 +6072000,imu,-0.23928711,0.20981655,-9.922933,-0.00048684177,-0.008724851,0.0012201824 +6072000,baro,487.60983 +6072000,mag,0.015063002,-0.2202762,0.42603323 +6076000,imu,-0.19271512,0.18888426,-9.969179,5.207383e-05,-0.006363453,0.0013223714 +6080000,imu,-0.17630208,0.18797536,-9.972015,0.0009274181,-0.005504494,0.00083502266 +6084000,mag,0.013323038,-0.21549913,0.42135382 +6084000,imu,-0.20012367,0.19938654,-9.933895,0.00055414106,-0.003795447,-0.0009291138 +6088000,imu,-0.2300371,0.18675539,-9.92586,-0.0011904933,-0.0027088015,-0.0030076194 +6092000,imu,-0.21994077,0.18715248,-9.932159,-0.0036995749,-0.005158831,-0.0009784377 +6096000,mag,0.011354196,-0.21129599,0.4261458 +6096000,imu,-0.18969831,0.22466058,-9.922567,-0.003486605,-0.0064876606,-0.00068293465 +6100000,imu,-0.2204347,0.2368454,-9.915905,-0.002111184,-0.0074933455,-0.0026649123 +6104000,imu,-0.23144391,0.228372,-9.965393,-0.0043325736,-0.006412778,0.0016661865 +6108000,imu,-0.21947366,0.25607833,-9.96455,-0.0054606604,-0.0060149417,0.0004351154 +6108000,mag,0.006865512,-0.21381585,0.43595806 +6112000,imu,-0.20675534,0.23102991,-9.934158,-0.0012899996,-0.0046101427,-0.0018192799 +6116000,imu,-0.21641326,0.19758482,-9.934689,0.0006610451,-0.0036957834,-0.0008794181 +6120000,imu,-0.23137511,0.20995003,-9.933994,-0.00436237,-0.008071755,-0.0020755036 +6120000,mag,0.009811959,-0.2135099,0.43263802 +6124000,imu,-0.21583962,0.21619555,-9.924399,-0.004497622,-0.0057810135,-0.0029776194 +6128000,imu,-0.20716134,0.18083638,-9.918474,-0.0026642506,-0.0043122713,-0.0023160835 +6132000,imu,-0.21541154,0.17635326,-9.929562,-0.0042850683,-0.0063649896,-0.00025809888 +6132000,mag,0.016120635,-0.21983008,0.42907965 +6136000,imu,-0.22147712,0.19773108,-9.942434,-0.0050266124,-0.0059064813,0.00012431381 +6140000,imu,-0.23307535,0.19459991,-9.939947,-0.0022402576,-0.008052692,-0.0009355256 +6144000,baro,487.57227 +6144000,mag,0.0073792893,-0.21656029,0.4307595 +6144000,imu,-0.25272533,0.19681361,-9.926929,0.00015319769,-0.006848013,-0.0033392338 +6148000,imu,-0.2148408,0.19540165,-9.939146,2.7634167e-05,-0.0025686633,-0.0029178802 +6152000,imu,-0.22284111,0.19059221,-9.949293,0.0012016752,-0.0024119026,-0.0028090386 +6156000,mag,0.008750285,-0.21823075,0.43218088 +6156000,imu,-0.2711749,0.18688142,-9.951107,0.00013636865,-0.006703619,-0.0044787987 +6160000,imu,-0.2480369,0.18693136,-9.934544,0.00047264007,-0.0068286043,-0.00042101202 +6164000,imu,-0.23075831,0.21297728,-9.920235,0.0002762372,-0.0041403356,-0.0013882086 +6168000,mag,0.008437893,-0.22024742,0.4294726 +6168000,imu,-0.20772126,0.2272628,-9.945852,-0.0023925374,-0.0029584384,-0.004452648 +6172000,imu,-0.21062815,0.21254483,-9.968403,-0.002906269,-0.0024493402,-0.0026170698 +6176000,imu,-0.23541173,0.20341751,-9.963563,-5.190525e-05,-0.00042792698,-0.001927352 +6180000,imu,-0.21824269,0.22377993,-9.949814,0.0022244279,-0.002973087,-0.00056650414 +6180000,mag,0.013819967,-0.22192113,0.4317186 +6184000,imu,-0.21624666,0.20596679,-9.944077,0.0020425126,-0.007622276,0.0010841346 +6188000,imu,-0.20697662,0.16541186,-9.954918,0.0011709991,-0.0063978164,-0.0017008857 +6192000,imu,-0.19703978,0.13769776,-9.956932,-6.039903e-05,-0.0069223423,-0.0043753656 +6192000,mag,0.010416808,-0.20775484,0.4302052 +6196000,imu,-0.22260699,0.15143837,-9.928877,0.00015873606,-0.007660293,-0.00258259 +6200000,imu,-0.21014577,0.19816324,-9.9203,-0.0006493695,-0.0064724134,-0.0031269968 +6204000,mag,0.011445523,-0.21965654,0.43146172 +6204000,imu,-0.17345777,0.20628987,-9.924301,-0.00024633206,-0.005956231,-0.0028970619 +6208000,imu,-0.1950674,0.19386218,-9.924845,-0.0013825769,-0.008502015,-0.0010618988 +6212000,imu,-0.2387484,0.1757444,-9.941852,-0.0031523618,-0.009656313,0.001352783 +6216000,baro,487.59106 +6216000,mag,0.014934938,-0.21982162,0.42458156 +6216000,imu,-0.20691009,0.18639751,-9.955888,-0.00041227462,-0.005557922,0.0018068419 +6220000,imu,-0.1809157,0.22393739,-9.929501,-0.0014856365,-0.0054370887,0.0012534274 +6224000,imu,-0.2186884,0.24493936,-9.963003,-0.0050264047,-0.0042614224,0.0024014479 +6228000,mag,0.0072089364,-0.21494731,0.4283717 +6228000,imu,-0.20666832,0.20909722,-9.994373,-0.005065421,-0.003233702,0.001467335 +6232000,imu,-0.18444909,0.15599537,-9.961664,-0.0019213846,-0.0022514092,0.0050430507 +6236000,imu,-0.19275552,0.1877175,-9.958967,-0.00039699074,-0.0002010064,0.0036252656 +6240000,imu,-0.1965801,0.23804575,-9.948666,-0.0011587522,-0.00044075222,-0.0025242555 +6240000,mag,0.008492706,-0.21000826,0.4279914 +6244000,imu,-0.19163579,0.23054452,-9.969781,-0.00048602294,-0.004369955,-0.0014807851 +6248000,imu,-0.18712896,0.19837004,-9.941389,0.00020290432,-0.007385018,-0.0029658019 +6252000,mag,0.006528822,-0.21451937,0.4305959 +6252000,imu,-0.20067436,0.1770893,-9.927259,-0.00022041886,-0.0075200186,-0.0047062053 +6256000,imu,-0.22414668,0.18984905,-9.948494,0.0006258356,-0.0059922403,-0.0015304303 +6260000,imu,-0.21635142,0.19906545,-9.928556,-0.00040371902,-0.0025599215,0.00026348906 +6264000,imu,-0.2195946,0.19075736,-9.924011,-0.0034751454,-0.005482165,0.00035036504 +6264000,mag,0.013032717,-0.21694428,0.42777824 +6268000,imu,-0.22397481,0.15954034,-9.921923,-0.0032063748,-0.007732533,0.0008752061 +6272000,imu,-0.2166156,0.16135684,-9.9441805,-0.0043617613,-0.0047791866,0.0012196761 +6276000,imu,-0.21461305,0.19074991,-9.951123,-0.0043857885,-0.0042632055,-1.8907935e-05 +6276000,mag,0.012474624,-0.21429875,0.43326956 +6280000,imu,-0.21170643,0.19943535,-9.932821,-0.0019277481,-0.0065794326,-0.0017846257 +6284000,imu,-0.23009154,0.20671822,-9.937973,-5.3823984e-05,-0.00790551,-0.0033920757 +6288000,mag,0.012303642,-0.21503066,0.43369615 +6288000,baro,487.61453 +6288000,imu,-0.22092526,0.19456999,-9.93634,0.0004080849,-0.0067224302,-0.003596928 +6292000,imu,-0.1951971,0.21024786,-9.92798,0.00062709214,-0.005515553,-0.0013550693 +6296000,imu,-0.21434793,0.22297221,-9.924812,0.0040030912,-0.005092778,-0.000287541 +6300000,mag,0.0077719726,-0.20962958,0.4360451 +6300000,imu,-0.23856476,0.21488065,-9.933001,0.0048399135,-0.006806954,-0.0022066222 +6304000,imu,-0.24540164,0.24152423,-9.933885,0.0028966488,-0.008040085,-0.00024581785 +6308000,imu,-0.2281021,0.2046233,-9.93095,0.002090787,-0.0034796004,0.0006772863 +6312000,imu,-0.21224172,0.13902095,-9.962231,0.0003406514,-0.0066303,-0.0007725147 +6312000,mag,0.012589265,-0.21183263,0.43374988 +6316000,imu,-0.20259887,0.18266433,-9.99667,0.00034993826,-0.010308051,0.00017960632 +6320000,imu,-0.18835352,0.20231605,-9.996353,0.0027716812,-0.006279888,-0.0008807313 +6324000,imu,-0.2147962,0.19364305,-9.972416,0.0031825572,-0.0052996785,-0.0003216892 +6324000,mag,0.009087672,-0.22148994,0.427585 +6328000,imu,-0.21132904,0.20276272,-9.965122,0.0004065854,-0.0063264645,-0.00044086756 +6332000,imu,-0.20607224,0.19902736,-9.934271,0.00022443231,-0.0058690663,-8.381918e-05 +6336000,mag,0.013061116,-0.21726117,0.4310662 +6336000,imu,-0.2303443,0.20125002,-9.918098,-0.0010355198,-0.00545395,-0.0016476426 +6340000,imu,-0.2172823,0.21071663,-9.942048,-0.00030128483,-0.0024342078,-0.0016251922 +6344000,imu,-0.21159664,0.19843987,-9.941478,0.001689052,-0.0011763873,0.0016600267 +6348000,imu,-0.22450617,0.1854144,-9.93396,0.0015867472,-0.0036139393,0.00246129 +6348000,mag,0.014300821,-0.2169291,0.4303295 +6352000,imu,-0.2070457,0.17233999,-9.928471,0.00017697655,-0.0054293303,0.00012367712 +6356000,imu,-0.1794711,0.17456184,-9.938536,-0.0016158925,-0.0046237623,0.0005392988 +6360000,baro,487.62863 +6360000,mag,0.013318121,-0.21411711,0.430396 +6360000,imu,-0.17018381,0.2010241,-9.9445095,0.00014372924,-0.00227697,0.004050823 +6364000,imu,-0.1999188,0.20725378,-9.944966,-0.0010126625,-0.0022481894,0.002436209 +6368000,imu,-0.21816397,0.19913596,-9.940826,0.0009422631,-0.0051186373,-0.00086998317 +6372000,imu,-0.21896051,0.17374821,-9.913736,0.003828189,-0.0056288578,0.00017621928 +6372000,mag,0.011578764,-0.21708255,0.43607286 +6376000,imu,-0.2137569,0.18472101,-9.912148,-0.0002503914,-0.0036406526,0.0005040378 +6380000,imu,-0.21718249,0.21178229,-9.926022,-0.0007808859,-0.0073664337,2.3146866e-05 +6380000,mag,0.013496379,-0.21394363,0.4374706 +6384000,imu,-0.24941029,0.22180706,-9.912294,-0.0023993067,-0.009498659,0.0020969708 +6388000,imu,-0.22938569,0.2031808,-9.904046,-0.0018147362,-0.00877579,-7.210805e-05 +6392000,imu,-0.18653491,0.18628278,-9.909231,0.001178824,-0.009610639,0.000867062 +6396000,imu,-0.19365093,0.19271798,-9.9187,-0.0023638569,-0.0062877275,0.001947542 +6396000,mag,0.011091498,-0.21572873,0.4349226 +6400000,imu,-0.19521803,0.19750172,-9.924704,-0.005784014,-0.0071801255,-0.0007845448 +6404000,imu,-0.20640518,0.18853268,-9.922777,-0.005134946,-0.007101352,-0.002033378 +6408000,mag,0.012976197,-0.22385886,0.4322802 +6408000,imu,-0.1981452,0.19596684,-9.92063,-0.0022624005,-0.0033079495,-0.0024548643 +6412000,imu,-0.20581117,0.19088617,-9.932979,-0.00034618247,-0.0047015115,-0.0013438817 +6416000,imu,-0.21596852,0.16213585,-9.934516,-0.0003569462,-0.008629624,0.0015003682 +6420000,imu,-0.18988468,0.17122605,-9.909428,-0.00291075,-0.009393102,0.0014755703 +6420000,mag,0.012750027,-0.21311577,0.4304357 +6424000,imu,-0.18553498,0.1976806,-9.904675,-0.0012373574,-0.0057634213,0.0012298654 +6428000,imu,-0.22902837,0.17518266,-9.945814,-0.0047761635,-0.008924817,0.0012376652 +6432000,baro,487.58167 +6432000,imu,-0.2745559,0.16687903,-10.006601,-0.0060953116,-0.008832789,-0.000545509 +6432000,mag,0.014794136,-0.21618965,0.43545908 +6436000,imu,-0.22322923,0.16220583,-10.0119,-2.610738e-05,-0.007653699,-0.0019100821 +6440000,imu,-0.18394393,0.14957084,-9.959158,-0.0008235132,-0.00872518,-0.0024246247 +6444000,mag,0.010416059,-0.21627457,0.4304291 +6444000,imu,-0.20783216,0.20348628,-9.90538,-0.0038636862,-0.004176495,-0.0005728545 +6448000,imu,-0.22701328,0.20933469,-9.910318,-0.000995402,-0.0035646416,0.0022279404 +6452000,gps,488104.0,85456074.0,473977508.0,0.01,0.0,0.049999997 +6452000,imu,-0.21076177,0.20433304,-9.950111,0.0018432308,-0.00638149,0.00072228553 +6456000,mag,0.014980464,-0.21799037,0.42990085 +6456000,imu,-0.18852964,0.18927908,-9.969276,-0.00042401196,-0.0069371937,-0.0005074359 +6460000,imu,-0.20604467,0.17789246,-9.96392,-0.003027131,-0.0072242673,0.0017853795 +6464000,imu,-0.2468065,0.21611463,-9.955734,-0.0045813713,-0.006770213,0.0016418219 +6468000,mag,0.005581439,-0.22153126,0.4347465 +6468000,imu,-0.23757002,0.21342517,-9.930883,-0.0031837164,-0.009749213,-0.0012016925 +6472000,imu,-0.21216801,0.18144421,-9.921086,0.0005486485,-0.011050213,-0.0012228048 +6476000,imu,-0.22084138,0.19628458,-9.931841,-0.001169139,-0.00697418,0.0020553346 +6480000,mag,0.0049390085,-0.21473192,0.43762118 +6480000,imu,-0.20169526,0.18868414,-9.943289,-0.0027511143,-0.007002039,0.0032835265 +6484000,imu,-0.20196831,0.14003229,-9.954418,-0.0014346299,-0.0064629815,-0.0005442721 +6488000,imu,-0.21197408,0.16628581,-9.935291,-0.000641103,-0.0024259866,-0.0033383307 +6492000,imu,-0.19481924,0.17881252,-9.919107,0.0008542596,-0.0043257647,-0.0024822813 +6492000,mag,0.0027025375,-0.21635188,0.42901152 +6496000,imu,-0.20101695,0.17837642,-9.903969,0.0016424318,-0.0084515,0.00022686362 +6500000,imu,-0.21393287,0.1742022,-9.936249,-0.0009832019,-0.008699192,0.00048363977 +6504000,mag,0.0013285122,-0.21617751,0.42587706 +6504000,baro,487.66617 +6504000,imu,-0.25843894,0.114074044,-9.975002,-0.0048921723,-0.009298173,-0.0007770251 +6508000,imu,-0.25002244,0.14602466,-9.962853,-0.0018176482,-0.009407699,-0.0016722162 +6512000,imu,-0.22073245,0.22175613,-9.964022,0.002621527,-0.0073196986,-0.0040127127 +6516000,imu,-0.23167382,0.22410344,-9.956901,0.0040566116,-0.00821193,-0.00116504 +6516000,mag,0.007986046,-0.21776548,0.43105835 +6520000,imu,-0.22022942,0.18564768,-9.955632,0.0011171857,-0.008534256,-0.0007650013 +6524000,imu,-0.21469998,0.1481793,-9.985823,-0.0013610431,-0.0056029996,-0.0013586314 +6528000,mag,0.0074111456,-0.2131565,0.42560533 +6528000,imu,-0.19584236,0.18489768,-9.96804,0.00078047975,-0.0048206667,0.0018889381 +6532000,imu,-0.21651828,0.20576292,-9.919115,-0.0002456712,-0.0049577355,0.00060490874 +6536000,imu,-0.21524712,0.21800436,-9.902338,-0.0063216067,-0.005759898,-0.0026715312 +6540000,mag,0.013225213,-0.21409811,0.43197435 +6540000,imu,-0.20908862,0.21844916,-9.902042,-0.0077786716,-0.00857643,-0.0012636958 +6544000,imu,-0.2266168,0.17631403,-9.904042,-0.00418643,-0.008907509,0.0002121885 +6548000,mag,0.014629114,-0.20784387,0.42715043 +6548000,imu,-0.20745794,0.19556634,-9.9090805,-0.0037603625,-0.0069984915,2.8024495e-05 +6552000,imu,-0.21802449,0.19889669,-9.916937,-0.004210272,-0.006263061,0.00012227173 +6556000,imu,-0.2308075,0.17179891,-9.925375,-0.002750644,-0.0041318284,-0.0011432966 +6560000,imu,-0.22312824,0.19185789,-9.901853,-0.0049793897,-0.0035678707,-0.0024286169 +6564000,imu,-0.19398671,0.2138703,-9.9074745,-0.0046050707,-0.0053319456,-0.0011866081 +6564000,mag,0.010393798,-0.2187805,0.43521988 +6568000,imu,-0.19729137,0.20264664,-9.956066,-0.0013048676,-0.0056428136,-0.0023369202 +6572000,baro,487.6568 +6572000,imu,-0.23163575,0.19033284,-9.943847,-0.0020181206,-0.0034681961,-0.0050354064 +6572000,mag,0.01205658,-0.21695621,0.42886186 +6576000,imu,-0.23730539,0.20014392,-9.935215,-0.00073367415,-0.0024446552,-0.0040410184 +6580000,imu,-0.23468834,0.22192271,-9.921669,-0.0013225754,-0.00495412,-0.0034173785 +6584000,imu,-0.23743516,0.22443765,-9.93892,-0.0014276908,-0.0039703203,-0.0031793423 +6588000,imu,-0.24650402,0.20165777,-9.94789,0.00014364795,-0.0026259138,-0.0010177252 +6588000,mag,0.013112527,-0.2136668,0.42774388 +6592000,imu,-0.24617772,0.19482218,-9.941412,-0.00020278193,-0.005869994,-0.0008112462 +6596000,imu,-0.21660045,0.1859986,-9.968458,7.534954e-05,-0.007483982,-0.0035724489 +6600000,imu,-0.20062125,0.18242872,-9.9463215,0.0011812616,-0.005771046,-0.0029531503 +6600000,mag,0.0184571,-0.21745823,0.42764297 +6604000,imu,-0.17923397,0.1815285,-9.93586,0.0007571512,-0.006034135,-0.0022862507 +6608000,imu,-0.19459334,0.16040494,-9.940163,-0.0014480443,-0.0068109683,-0.0031714889 +6612000,mag,0.0036295715,-0.21905328,0.4292197 +6612000,imu,-0.23025429,0.14496654,-9.927822,0.00077621813,-0.0051806285,0.00227747 +6616000,imu,-0.23399393,0.19476964,-9.926506,-0.0011980132,-0.0024666246,0.0027913537 +6620000,imu,-0.22895646,0.23897116,-9.939599,-0.0053359577,-0.0053996085,-0.00010012132 +6624000,mag,0.012652988,-0.22403571,0.43213785 +6624000,imu,-0.21465921,0.19117835,-9.971959,-0.0014467242,-0.009382797,-0.00057601323 +6624000,baro,487.5535 +6628000,imu,-0.17907998,0.16494356,-9.974449,0.0020977994,-0.0072681266,-0.0035369524 +6632000,mag,0.013332271,-0.21409738,0.42487565 +6632000,imu,-0.17947921,0.18863085,-9.939741,0.00076621235,-0.004614772,-0.0057158866 +6636000,imu,-0.24154478,0.19720389,-9.952179,-0.0014256471,-0.0056249406,-0.004767824 +6640000,imu,-0.25182745,0.20250995,-9.963874,-0.0020635144,-0.0047019133,-0.005108082 +6644000,imu,-0.21861747,0.19118692,-9.95536,-0.0007259404,-0.0043603806,-0.0054886704 +6648000,mag,0.009367466,-0.21319717,0.43170118 +6648000,imu,-0.20652053,0.1781763,-9.964827,-0.0006045802,-0.0061720223,-0.0009734074 +6652000,imu,-0.22148487,0.19066611,-9.991054,-0.00031944425,-0.005541177,0.0021385553 +6656000,imu,-0.20363143,0.20964909,-9.956142,-0.0007074779,-0.0052391733,0.0006837054 +6660000,imu,-0.19300705,0.22096682,-9.956579,-0.001977852,-0.008981212,-0.00070088165 +6660000,mag,0.0022145496,-0.22283494,0.42746767 +6664000,imu,-0.18473193,0.1912985,-9.982868,-0.002006284,-0.010281648,-0.0018984186 +6668000,imu,-0.18525699,0.14671989,-9.946451,-0.0034747683,-0.005344819,-0.0042870766 +6672000,mag,0.010693541,-0.2228412,0.43041745 +6672000,imu,-0.24703227,0.16455863,-9.935092,-0.0045917616,-0.0061056376,-0.00016671447 +6676000,imu,-0.23442608,0.17843811,-9.953873,-0.0031100088,-0.003977672,0.0025562653 +6680000,imu,-0.20147637,0.16165271,-9.958183,-0.0043081213,-0.0046565984,-0.0009999805 +6684000,mag,0.0055119125,-0.21744995,0.42156166 +6684000,imu,-0.2025494,0.17888139,-9.929809,-0.0038096562,-0.007286162,-0.0025395658 +6688000,imu,-0.22564241,0.17543662,-9.947914,0.0010655379,-0.004053242,-0.0003193367 +6692000,imu,-0.23474161,0.20249274,-9.960302,0.0024902485,-0.005111123,-0.0011292808 +6696000,baro,487.69904 +6696000,imu,-0.21994448,0.22708438,-9.957119,-0.0017241687,-0.004035008,-0.0014589302 +6696000,mag,0.011134321,-0.2173773,0.43146703 +6700000,imu,-0.21366729,0.18536402,-9.948767,-0.0031538485,-0.0032777137,0.0013970925 +6704000,imu,-0.16786686,0.1710861,-9.91462,0.0017255865,-0.003224842,-3.9392755e-05 +6708000,mag,0.0069700843,-0.22555628,0.43031758 +6708000,imu,-0.15617934,0.1816149,-9.927882,0.0038266308,-0.002123751,0.00016689318 +6712000,imu,-0.20611493,0.20319393,-9.94957,-0.0006807698,-0.005432744,0.0030279502 +6716000,imu,-0.22979143,0.21079104,-9.955386,-0.0055600046,-0.0056383437,0.00020141549 +6720000,mag,0.0053537334,-0.2143658,0.4277126 +6720000,imu,-0.22903992,0.18899702,-9.94203,-0.0029160252,-0.004366501,-0.0023057156 +6724000,imu,-0.24345973,0.18592215,-9.929726,0.0005400103,-0.0045684865,-0.00034972347 +6728000,imu,-0.24414167,0.18568648,-9.934921,0.00032371507,-0.005133329,-0.0008069797 +6732000,mag,0.0168219,-0.21486282,0.42457712 +6732000,imu,-0.23651837,0.17976047,-9.920895,-0.0024448244,-0.004241482,0.00029284478 +6736000,imu,-0.22906096,0.17542745,-9.918745,-0.0029606272,-0.002968105,0.00083109416 +6740000,imu,-0.2206904,0.18597089,-9.921164,-0.0023501918,-0.0041351495,-9.856229e-05 +6744000,imu,-0.24498542,0.21691222,-9.938135,-0.0029661418,-0.0058420305,0.00017777765 +6744000,mag,0.013982051,-0.2234611,0.43265817 +6748000,imu,-0.23846771,0.20665549,-9.937068,-0.002617298,-0.008838592,0.0002567857 +6752000,imu,-0.20941062,0.19638102,-9.94113,-0.0019576894,-0.009263928,0.0025275867 +6756000,mag,0.009576869,-0.2188865,0.4256835 +6756000,imu,-0.18256244,0.202711,-9.942066,-0.0012199119,-0.0072433236,0.0066808136 +6760000,imu,-0.22122729,0.19115037,-9.926156,-0.0012659109,-0.008339685,0.004436178 +6764000,imu,-0.25636333,0.19101316,-9.922781,-0.0012808678,-0.009506626,-0.0004164234 +6768000,baro,487.60983 +6768000,imu,-0.23497301,0.17666663,-9.9411125,-0.0017507586,-0.006922674,-0.0019722017 +6768000,mag,0.015801044,-0.22295202,0.4229371 +6772000,imu,-0.24530908,0.17188232,-9.976692,-0.0024286457,-0.0050826725,-0.0027510796 +6776000,imu,-0.22819674,0.17862669,-9.957666,-0.000758941,-0.005154591,0.00050330616 +6780000,mag,0.0066563264,-0.20897324,0.42185193 +6780000,imu,-0.20260105,0.18938062,-9.941165,0.00018510644,-0.0022368801,-0.00096963195 +6784000,imu,-0.21156836,0.23291071,-9.956805,-0.002028025,-0.0027484638,-0.0017339619 +6788000,imu,-0.23782101,0.23753609,-9.955246,-0.0012888841,-0.004343947,0.00061745173 +6792000,imu,-0.2081978,0.22603793,-9.938666,-0.0013234515,-0.005905435,-0.0023574508 +6792000,mag,0.0047889473,-0.21405482,0.42682406 +6796000,imu,-0.2183141,0.17779624,-9.927811,-0.00080997986,-0.006314571,-0.0019473494 +6800000,imu,-0.22768897,0.1354544,-9.945572,0.0009044121,-0.00585289,0.002691983 +6804000,imu,-0.2158964,0.18196794,-9.978985,-0.0017076277,-0.006014406,0.0030335889 +6804000,mag,0.006055492,-0.21426,0.42631677 +6808000,imu,-0.2125099,0.21588548,-9.973013,4.4157936e-05,-0.003314508,-0.00069432164 +6812000,imu,-0.20787339,0.23119757,-9.944566,0.0008266135,-0.006784307,-0.0018001588 +6816000,imu,-0.22094159,0.21723159,-9.951014,-0.002457483,-0.008159099,-0.0007750595 +6816000,mag,0.010073622,-0.21211421,0.42732197 +6820000,imu,-0.21090193,0.18062931,-9.937394,-0.003655186,-0.0077056875,0.0011804801 +6824000,imu,-0.2117273,0.20638962,-9.942877,-0.003952157,-0.0069170236,0.0009657313 +6828000,imu,-0.19708052,0.2340482,-9.966748,-0.00063056237,-0.0053394884,-0.00040201235 +6828000,mag,0.012915569,-0.21496941,0.43225622 +6832000,imu,-0.19052306,0.22584794,-9.956488,0.0022731214,-0.008403576,-4.818644e-05 +6836000,imu,-0.21726595,0.18785301,-9.943171,-0.00038871818,-0.0065630837,-0.0024473986 +6840000,mag,0.01120606,-0.21690176,0.43217894 +6840000,imu,-0.22961876,0.17259875,-9.95502,-0.002310525,-0.0066622137,-0.0031311114 +6840000,baro,487.66617 +6844000,imu,-0.2287924,0.2098116,-9.964141,0.0014688739,-0.0059172455,0.0002591819 +6848000,imu,-0.25676998,0.20829965,-9.926298,0.0029151777,-0.0007674437,-0.00022005862 +6852000,imu,-0.26234266,0.2164615,-9.919682,-0.00067000237,-0.002352016,-0.001410447 +6852000,gps,488101.0,85456074.0,473977508.0,-0.01,-0.01,0.03 +6852000,mag,0.013429693,-0.21611673,0.42969444 +6856000,imu,-0.21288246,0.21055084,-9.943256,0.0018659643,-0.004596626,-0.0010201079 +6860000,imu,-0.22283527,0.17792365,-9.940617,0.0048664613,-0.0076415907,-0.0032949622 +6864000,imu,-0.21815333,0.17781319,-9.945662,0.0015568224,-0.005312483,-0.0037251043 +6864000,mag,0.012346548,-0.21632904,0.43087712 +6868000,imu,-0.18584394,0.1743885,-9.959384,-0.0018765999,0.0004451341,0.00013644816 +6872000,imu,-0.20984387,0.184728,-9.97267,-0.0031992046,-0.002079873,0.003169274 +6876000,imu,-0.24783398,0.19536811,-9.970537,-0.0013093633,-0.007160065,0.0036225538 +6876000,mag,0.011352071,-0.21978538,0.42266393 +6880000,imu,-0.24230641,0.18324718,-9.955128,-0.0003777983,-0.006557643,0.00092568516 +6884000,imu,-0.2057119,0.19953418,-9.9517765,0.0001587978,-0.0021315818,-0.0015390877 +6888000,mag,0.014391557,-0.21370637,0.43192023 +6888000,imu,-0.20823085,0.1947177,-9.931362,0.002047018,-0.0027720507,0.00018814928 +6892000,imu,-0.20444271,0.17219807,-9.918656,0.0021511395,-0.0073683034,-0.0005479731 +6896000,imu,-0.2029481,0.17190504,-9.938654,0.0007604935,-0.009318081,-0.0020730032 +6900000,mag,0.01102951,-0.21425544,0.42954808 +6900000,imu,-0.2253964,0.20806862,-9.956978,-0.0030491687,-0.006685134,-0.0017688114 +6904000,imu,-0.22085196,0.21741262,-9.976795,-0.0020074581,-0.004356326,-0.0029769202 +6908000,imu,-0.2173768,0.17619729,-9.984747,0.0016925232,-0.0051967604,-0.0035960719 +6912000,mag,0.006585125,-0.21786919,0.4337251 +6912000,baro,487.62863 +6912000,imu,-0.20293276,0.17145722,-9.942942,0.0029500236,-0.007911435,0.0014375083 +6916000,imu,-0.16659975,0.20046979,-9.929045,0.0016376671,-0.008701874,0.0055249636 +6920000,imu,-0.19444622,0.20071788,-9.923876,-0.0020309077,-0.00567465,-0.00047605162 +6924000,mag,0.0038097575,-0.21708344,0.43066218 +6924000,imu,-0.2136456,0.18831363,-9.915921,-0.0019030657,-0.003787498,-0.002666418 +6928000,imu,-0.19675028,0.19507407,-9.958728,-0.0039014954,-0.004547091,0.0029205936 +6932000,imu,-0.19737881,0.19002722,-9.990201,-0.003722899,-0.0049688905,0.0016193374 +6936000,mag,0.011309134,-0.22330135,0.42713815 +6936000,imu,-0.1940962,0.1899529,-9.958262,-0.0011186765,-0.006254344,-0.0014842495 +6940000,landed,1.0 +6940000,imu,-0.20878196,0.17977884,-9.913752,-0.002877537,-0.0050586765,-0.0025819498 +6944000,imu,-0.220155,0.1863627,-9.918896,-0.0024417546,-0.005593269,-0.0061162044 +6948000,imu,-0.19979155,0.2009344,-9.934058,-0.0009612461,-0.0048885066,-0.003643284 +6948000,mag,0.009747659,-0.21125644,0.43081716 +6952000,imu,-0.21381268,0.15686777,-9.93976,0.0010980284,-0.0035883025,0.0016873113 +6956000,imu,-0.2158269,0.1640574,-9.940213,-0.00018505621,-0.00743382,-5.2175306e-05 +6956000,mag,0.006813774,-0.21870828,0.42906672 +6960000,imu,-0.19379975,0.19097233,-9.937445,-0.00045715633,-0.008188487,-0.004335646 +6964000,imu,-0.22292556,0.17628296,-9.9278755,0.00030648598,-0.0083903335,-0.005235436 +6968000,imu,-0.263265,0.17440604,-9.925585,-0.0011053823,-0.006054098,-0.0052330145 +6972000,mag,0.008158455,-0.21577124,0.42753088 +6972000,imu,-0.23707747,0.1578415,-9.963705,-1.1164529e-05,-0.0066799917,-0.0038195061 +6976000,imu,-0.220953,0.16076736,-9.9821415,0.00067649817,-0.0073361173,-0.0007457366 +6980000,imu,-0.2172043,0.18430611,-9.949644,0.000810556,-0.0066010864,-0.001978359 +6984000,mag,0.006335134,-0.22005026,0.42791066 +6984000,baro,487.5676 +6984000,imu,-0.20884755,0.20026895,-9.940848,-0.0014022563,-0.0074546332,-0.0011270033 +6988000,imu,-0.2334654,0.19799592,-9.962069,-0.0004864554,-0.004864377,-0.00027207713 +6992000,imu,-0.23306778,0.19504993,-9.924997,0.0024278748,-0.0049963947,-0.0023946033 +6996000,imu,-0.23203434,0.18488166,-9.905348,-0.001498328,-0.0068315067,-0.001465631 +6996000,mag,0.01562514,-0.21429148,0.4295097 +7000000,imu,-0.24508083,0.18824217,-9.930681,-0.0028874294,-0.0061062733,0.0011384579 +7004000,mag,0.0069788047,-0.21691677,0.42680693 +7004000,imu,-0.2463474,0.1902009,-9.937131,0.00051797583,-0.0058669383,0.002549312 +7008000,imu,-0.2538107,0.171894,-9.951668,0.00020205272,-0.006833577,-0.0013372193 +7012000,imu,-0.25492364,0.18907452,-9.961748,-0.0020763404,-0.005214096,-0.0010211318 +7016000,imu,-0.22432615,0.17621233,-9.947638,-0.0034100371,-0.004291337,0.002479528 +7020000,mag,0.0060794116,-0.21286671,0.42972896 +7020000,imu,-0.20811814,0.13939019,-9.937498,-0.0027256135,-0.006717164,0.0010120254 +7024000,imu,-0.1977088,0.17818469,-9.955005,-0.0040996517,-0.007945523,0.0013064865 +7028000,imu,-0.2361182,0.19529276,-9.95793,-0.0024875589,-0.006395586,0.000264642 +7028000,mag,0.0067163473,-0.22165668,0.4292349 +7032000,imu,-0.24061584,0.17356837,-9.93815,-0.0015643458,-0.0020037103,-0.00044436316 +7036000,imu,-0.20191771,0.19759353,-9.933081,-0.0008718372,-0.003534323,-0.0002175123 +7040000,imu,-0.20910656,0.21766403,-9.957775,-0.00014214002,-0.008104687,-0.0017432673 +7044000,imu,-0.19815141,0.21467127,-9.971016,-0.0026590093,-0.0063351304,-0.0012203057 +7044000,mag,0.004859744,-0.21663646,0.43352884 +7048000,imu,-0.21350795,0.1939962,-9.942346,-0.0024215877,-0.0046881456,0.00021747338 +7052000,imu,-0.2320717,0.16661313,-9.938686,-0.00093000353,-0.005160952,0.0014941227 +7056000,baro,487.67557 +7056000,mag,0.008736661,-0.22309133,0.42388868 +7056000,imu,-0.21533328,0.1708915,-9.941059,0.0001503383,-0.007171714,0.00040351998 +7060000,imu,-0.24867894,0.16363226,-9.911528,-0.0018224041,-0.006591308,-0.0032057874 +7064000,imu,-0.25148162,0.16407682,-9.932116,-0.0018843716,-0.00469426,-0.003606873 +7067999,mag,0.011043457,-0.22204298,0.4251238 +7067999,imu,-0.20571092,0.19445492,-9.953787,-0.0018151955,-0.0053286077,-0.00073743524 +7072000,imu,-0.20161088,0.18624687,-9.966589,-0.0026294745,-0.0072416654,0.00015551261 +7076000,imu,-0.20726684,0.20143765,-9.961173,8.1134356e-05,-0.0021660333,-0.0008138538 +7080000,imu,-0.22505763,0.19627282,-9.957213,-0.0005583582,-0.0015219634,-0.0009903164 +7080000,mag,0.005257714,-0.21487239,0.43302315 +7083999,imu,-0.23480241,0.18254821,-9.987954,-0.0021387371,-0.004033472,-0.0007610633 +7088000,imu,-0.22703804,0.21244039,-9.960492,7.048223e-05,-0.0040820716,-0.0044737956 +7092000,imu,-0.20994875,0.19429177,-9.931524,-0.0002699381,-0.009032695,-0.0030742618 +7092000,mag,0.0049479804,-0.21680404,0.4299036 +7096000,imu,-0.21748206,0.19834916,-9.929705,-0.0011803318,-0.008054441,0.0016890232 +7099999,imu,-0.23164111,0.20987603,-9.94937,-0.0015313278,-0.0054129623,-0.00022496961 +7099999,mag,0.012654759,-0.21380718,0.41932976 +7104000,imu,-0.19539973,0.18901859,-9.978191,0.0016872891,-0.005147303,-0.0027042064 +7108000,imu,-0.20742863,0.19393753,-9.975458,0.0026592098,-0.0043909396,-0.0005605608 +7112000,imu,-0.22509336,0.18457694,-9.959425,-0.0017488564,-0.005400609,0.0008767303 +7115999,imu,-0.20613438,0.18090093,-9.95829,-0.0021697737,-0.0050235307,0.00043262207 +7115999,mag,0.0088595925,-0.21373568,0.424503 +7120000,imu,-0.20839672,0.17837289,-9.976847,-0.0035875742,-0.0027481182,0.0010674342 +7124000,imu,-0.22504376,0.18124795,-9.981157,-0.0023838559,-0.0010211613,-0.0026145875 +7128000,imu,-0.22475305,0.20713972,-9.964199,3.0814816e-05,-0.004791534,-0.0024352635 +7128000,mag,0.008669025,-0.21370687,0.42542067 +7128000,baro,487.68497 +7131999,imu,-0.20629174,0.18042538,-9.929729,-0.00021961729,-0.008420331,-0.0006206329 +7136000,imu,-0.19424103,0.17300266,-9.931388,-0.00077950576,-0.0059929793,-0.0019718304 +7140000,imu,-0.20728502,0.19149764,-9.938862,-0.0015706492,-0.0051896055,-0.0022719172 +7140000,mag,0.008871843,-0.22164847,0.43053347 +7144000,imu,-0.22171932,0.19770518,-9.939423,-0.0003654714,-0.006300374,-0.0003964734 +7147999,imu,-0.23377515,0.25092202,-9.952078,-0.0009223398,-0.0056815515,-0.0013483033 +7152000,mag,0.013636261,-0.2181015,0.43305278 +7152000,imu,-0.22641104,0.24000949,-9.953627,-0.00074501074,-0.0037808167,-0.0035587936 +7156000,imu,-0.22625154,0.20843054,-9.971439,0.0013205995,-0.0056257024,-0.0020751252 +7160000,imu,-0.2564005,0.22578879,-9.973467,0.0012842491,-0.00625093,3.7787733e-05 +7163999,imu,-0.24208558,0.20608366,-9.960857,-0.0007173995,-0.0033705942,-0.0011956898 +7163999,mag,0.008534381,-0.21325256,0.4274824 +7168000,imu,-0.24580191,0.19693838,-9.942099,-0.0011255644,-0.0035825386,-0.0021407986 +7172000,imu,-0.2367271,0.22493716,-9.932089,-0.0004821602,-0.0029820455,-0.00014208951 +7176000,imu,-0.2189846,0.22057602,-9.944127,-0.0012545722,-0.0036174725,0.0006537409 +7176000,mag,0.006974554,-0.21667428,0.4326998 +7179999,imu,-0.22077459,0.17662638,-9.970938,-0.002620987,-0.0067791543,0.00061229226 +7184000,imu,-0.20954682,0.17551723,-9.985508,-0.0032895077,-0.0051632673,0.0004271008 +7188000,imu,-0.20767877,0.18592657,-9.982628,-0.002199123,-0.00331511,0.0008163168 +7188000,mag,0.005087507,-0.21720462,0.433476 +7192000,imu,-0.22646546,0.16789143,-9.972271,0.0002783671,-0.0062692245,-0.0029662354 +7195999,imu,-0.22980252,0.18443897,-9.966181,-0.00084000756,-0.008038796,-0.004423418 +7200000,baro,487.59106 +7200000,imu,-0.23632024,0.20883192,-9.961826,-0.004976202,-0.0063129603,0.0018048057 +7200000,mag,0.0040804287,-0.21650313,0.4298362 +7204000,imu,-0.2489298,0.18777221,-9.940756,-0.0014652606,-0.0063725733,0.00013246009 +7208000,imu,-0.23244949,0.18506102,-9.930038,0.005063702,-0.007915403,-0.0038913 +7211999,imu,-0.23861758,0.21438038,-9.939063,0.0024088754,-0.006042643,-0.00075663434 +7211999,mag,0.008742267,-0.21159354,0.43061242 +7216000,imu,-0.23450321,0.20548674,-9.955032,0.00017304545,-0.006069183,0.0006756319 +7220000,imu,-0.20404091,0.21098362,-9.952487,-2.9200488e-05,-0.009870011,-0.0014756828 +7224000,mag,0.014781605,-0.20755711,0.43024665 +7224000,imu,-0.23174033,0.18961044,-9.945038,-0.0013112494,-0.007752339,-0.002787664 +7227999,imu,-0.20502314,0.16833416,-9.9874935,0.0015510998,-0.003737628,-0.00310021 +7232000,imu,-0.1737912,0.22750737,-9.990936,0.0013615824,-0.00436156,-0.00022684543 +7236000,imu,-0.23300885,0.235577,-9.963132,-0.0030926543,-0.0059651094,0.0038732297 +7236000,mag,0.009804337,-0.21966147,0.425904 +7240000,imu,-0.24933642,0.20307404,-9.968143,-0.0035403885,-0.0056591467,0.0022862563 +7243999,imu,-0.21958435,0.19318226,-9.9615555,-0.0024367329,-0.004644342,0.0009693525 +7248000,gps,488103.0,85456074.0,473977508.0,0.02,0.0,0.0 +7248000,imu,-0.18751743,0.20754503,-9.927687,-0.0014565934,-0.004185251,0.001038929 +7248000,mag,0.009920923,-0.21175148,0.4286106 +7252000,imu,-0.21289891,0.1982948,-9.914118,-0.000753952,-0.0015961779,0.0015327509 +7256000,imu,-0.24775095,0.19292547,-9.912195,-0.0023320979,-0.0016193552,-0.00013406132 +7259999,imu,-0.21049207,0.19864033,-9.912695,-0.0015577269,-0.0060419417,0.00065294263 +7259999,mag,0.009854893,-0.21124238,0.43020308 +7264000,imu,-0.18470672,0.18104115,-9.930014,0.001063495,-0.006791871,-0.0013236561 +7268000,imu,-0.23158142,0.18216474,-9.920925,0.0009503273,-0.004562888,-0.0021517645 +7272000,baro,487.7225 +7272000,mag,0.006627397,-0.20683213,0.42986646 +7272000,imu,-0.22259718,0.17592217,-9.941395,-0.0016714332,-0.0026162378,0.0008229159 +7275999,imu,-0.17587763,0.16911446,-9.961068,-0.0031968204,-0.0043566576,0.00337743 +7280000,imu,-0.19779775,0.19571441,-9.94252,-0.0026114876,-0.0061418503,0.0029736191 +7284000,mag,0.014019352,-0.2110545,0.42736354 +7284000,imu,-0.22615027,0.2170495,-9.932004,-0.0012607649,-0.004344824,-0.0008058828 +7288000,imu,-0.24047393,0.19948934,-9.940596,-0.0013986995,-0.004075973,0.0007155934 +7291999,imu,-0.21173,0.17471722,-9.938116,-0.0023406094,-0.0050706286,-0.0011619146 +7296000,mag,0.00995309,-0.20444886,0.43235207 +7296000,imu,-0.1894693,0.16375622,-9.945051,-0.0044135237,-0.0060287057,-0.0048543466 +7300000,imu,-0.19242054,0.1587767,-9.917704,-0.0043337266,-0.0044519245,-0.0038114975 +7304000,imu,-0.19290723,0.17818405,-9.908392,-0.00071944244,-0.004486982,-0.003140944 +7307999,imu,-0.21271078,0.19947225,-9.928129,-0.0009539463,-0.006938398,-0.0036621946 +7307999,mag,0.010550067,-0.22360665,0.4261066 +7312000,imu,-0.18593197,0.17660126,-9.928429,-0.0005489758,-0.007273796,-0.0027798656 +7316000,imu,-0.18968701,0.15946682,-9.949066,0.0015844008,-0.00513497,-0.0008338141 +7320000,imu,-0.19699197,0.19179963,-9.946733,0.0024434947,-0.0010772395,-0.002337948 +7320000,mag,0.010653244,-0.21864806,0.430095 +7323999,imu,-0.17394511,0.20666982,-9.945433,0.00040789726,-0.0035150275,-0.0026891378 +7328000,imu,-0.19932923,0.20726925,-9.943115,-0.0040245126,-0.007880334,-0.00088312477 +7332000,mag,0.010756407,-0.22055185,0.4313171 +7332000,imu,-0.21123645,0.21969764,-9.944534,-0.0017673379,-0.007682898,-0.000121312325 +7336000,imu,-0.20859097,0.1887178,-9.956669,-0.0015963032,-0.006673081,0.0023370232 +7339999,imu,-0.20242387,0.1848132,-9.974546,-0.003900978,-0.007470535,-6.6408254e-05 +7344000,imu,-0.19922015,0.21241154,-9.963327,-0.003675852,-0.0062464504,4.4776847e-05 +7344000,baro,487.638 +7344000,mag,0.0054077925,-0.21687996,0.4237744 +7348000,imu,-0.18551126,0.19322312,-9.92308,-0.002386449,-0.0062385905,0.001535404 +7352000,imu,-0.19229351,0.16224726,-9.926687,0.0017173612,-0.006309855,0.001111488 +7355999,mag,0.012812847,-0.21468814,0.43128747 +7355999,imu,-0.20690009,0.17126952,-9.906305,-5.166875e-05,-0.004785448,2.1197346e-05 +7360000,imu,-0.21921752,0.1933924,-9.876501,-0.0042027887,-0.004805155,-0.0002453554 +7364000,imu,-0.24060673,0.17936279,-9.912937,-0.0024069229,-0.0030778528,0.0021103667 +7368000,imu,-0.22777198,0.16862617,-9.949187,-0.00039686463,-0.0024951473,0.0009626831 +7368000,mag,0.011663083,-0.21431643,0.42888954 +7371999,imu,-0.20906332,0.13977276,-9.971159,0.0038983664,-0.0034309665,0.0014425081 +7376000,imu,-0.23644719,0.12664539,-9.9801235,0.0046984158,-0.004229894,0.000936009 +7380000,mag,0.009257191,-0.20934889,0.43291527 +7380000,imu,-0.2392332,0.16412345,-9.967972,0.00080965896,-0.005084337,-0.0005741848 +7384000,imu,-0.21424487,0.1873953,-9.963366,0.0005333856,-0.005646291,-0.00029662804 +7387999,imu,-0.2214303,0.1931372,-9.950446,0.0016722998,-0.0047890963,0.00018026892 +7392000,mag,0.0027258322,-0.22013213,0.4253615 +7392000,imu,-0.2223537,0.19984236,-9.953743,0.0036242756,-0.0035889877,-0.0007988009 +7396000,imu,-0.22811969,0.20967066,-9.9527235,0.00465934,-0.0026717754,-0.0029134485 +7400000,imu,-0.21302173,0.18278041,-9.92712,0.0023827523,-0.003630263,-0.00020113353 +7403999,imu,-0.19781694,0.19048373,-9.883427,-0.0009601494,-0.0049504926,-0.00070024765 +7403999,mag,0.010178546,-0.21518956,0.42843038 +7408000,imu,-0.21524489,0.2297455,-9.895789,-0.0016644645,-0.005545876,-0.004135062 +7412000,imu,-0.2041833,0.20163226,-9.965122,0.00025833477,-0.0057623335,-0.0049705394 +7416000,imu,-0.22261728,0.16650103,-9.9902935,0.00063579844,-0.006850361,-0.0028980426 +7416000,baro,487.6521 +7416000,mag,0.007759191,-0.2225187,0.42211238 +7419999,imu,-0.23452091,0.1982825,-9.964426,0.0009773105,-0.0060071596,-0.0017175729 +7424000,imu,-0.18582742,0.19024421,-9.94878,0.0021220979,-0.0040081134,0.00011933032 +7428000,mag,0.011970794,-0.21990849,0.4250158 +7428000,imu,-0.1841583,0.15746973,-9.94417,-0.0011615361,-0.0066443356,0.0010973284 +7432000,imu,-0.18960546,0.1757199,-9.938198,-0.0014486001,-0.008252473,-0.0008655394 +7435999,imu,-0.2039595,0.17082575,-9.933762,0.0017780632,-0.0057399105,-0.0012297131 +7440000,imu,-0.2009877,0.15242678,-9.913174,0.0022369411,-0.0051383027,-0.0024922357 +7440000,mag,0.012027445,-0.21442029,0.42932656 +7444000,imu,-0.21010345,0.19960953,-9.90603,0.002841761,-0.0048763873,-0.00020917508 +7448000,imu,-0.22779135,0.23483492,-9.918503,0.0009211234,-0.006575006,-0.0019343804 +7452000,imu,-0.24570234,0.20749308,-9.929251,0.00051233044,-0.0065580965,-0.002999142 +7452000,mag,0.012806895,-0.21453145,0.42862976 +7456000,imu,-0.2628629,0.19588204,-9.939495,-0.0003020229,-0.0058428342,-0.0021689953 +7460000,imu,-0.23032683,0.19328178,-9.944192,-0.0011475051,-0.007129339,-0.0021526 +7464000,mag,0.009410076,-0.21138011,0.42836037 +7464000,imu,-0.21322265,0.2021468,-9.952518,-0.000501758,-0.006535746,-0.00079453207 +7468000,imu,-0.21839087,0.20278059,-9.952009,-0.0015704877,-0.0065685217,-0.002454854 +7472000,imu,-0.20740673,0.17485505,-9.927118,-0.00047378198,-0.008459892,-0.004160935 +7476000,mag,0.010983579,-0.21805152,0.43434685 +7476000,imu,-0.20400298,0.16631326,-9.906727,-0.0012895196,-0.00837341,-0.0006790988 +7480000,imu,-0.22539666,0.18828106,-9.919109,-0.0053999196,-0.001988357,-0.00097179884 +7484000,imu,-0.218734,0.17956784,-9.9310665,-0.0025404387,-0.0024113348,-0.001009635 +7484000,mag,0.009166244,-0.21733749,0.42726833 +7488000,imu,-0.22100118,0.17167842,-9.934472,-0.0014761263,-0.005588321,0.0032651275 +7488000,baro,487.6333 +7492000,imu,-0.22475325,0.18066207,-9.948067,-0.0014859879,-0.0040201885,0.0004142696 +7496000,imu,-0.21212216,0.18973106,-9.956159,0.0018478603,-0.0046844436,0.0013675608 +7500000,imu,-0.18883342,0.1993974,-9.950817,0.0008798457,-0.0053308466,0.0021543459 +7500000,mag,0.0150696775,-0.21514982,0.42347848 +7504000,imu,-0.17456663,0.16323218,-9.925191,0.0021538464,-0.005647748,0.0012175966 +7508000,imu,-0.18909338,0.15750702,-9.934994,0.00067622506,-0.006483707,0.0010701024 +7512000,mag,0.009539875,-0.21429868,0.42316067 +7512000,imu,-0.19346952,0.19037753,-9.944903,-0.000553035,-0.0033766064,8.511634e-05 +7516000,imu,-0.19911519,0.19188048,-9.939833,-0.0023760889,-0.0028957066,-0.0006558849 +7520000,imu,-0.22777066,0.2035402,-9.910404,-0.0018323725,-0.005681864,-0.00068548543 +7524000,imu,-0.24966031,0.235079,-9.923933,-0.000137103,-0.0036699492,0.00058811094 +7524000,mag,0.013854654,-0.2185738,0.43221092 +7528000,imu,-0.2181727,0.19077753,-9.958856,-0.0005087631,-0.0045522433,-5.0358452e-05 +7532000,imu,-0.19591436,0.14742923,-9.946796,0.00070125033,-0.0063156546,-0.0014941542 +7536000,imu,-0.21929342,0.17547457,-9.94541,-0.00058780424,-0.004934351,0.00041247706 +7536000,mag,0.012507774,-0.21236652,0.43470773 +7540000,imu,-0.1911166,0.17860365,-9.941892,-0.0050262283,-0.0062600696,0.0011769637 +7544000,imu,-0.19925243,0.19366698,-9.950488,-0.0022088517,-0.0072039613,-0.0020240427 +7548000,imu,-0.22494808,0.17920922,-9.956909,0.001033383,-0.0050653634,-0.004572653 +7548000,mag,0.009680387,-0.21582721,0.4327523 +7552000,imu,-0.20918089,0.18199326,-9.951664,0.0009316038,-0.0023050627,-0.0029717383 +7556000,mag,0.011285876,-0.21033666,0.43038687 +7556000,baro,487.68497 +7556000,imu,-0.21654296,0.22623906,-9.95443,0.0010682624,-0.0031810813,0.0007273021 +7560000,imu,-0.2085607,0.23863791,-9.9434805,-0.0019762574,-0.0048003923,0.0013638482 +7564000,imu,-0.20101643,0.24441633,-9.955215,-0.000702245,-0.00468959,0.0018018209 +7568000,imu,-0.22854683,0.21404603,-9.941472,-3.719465e-05,-0.0048905057,0.0020750004 +7572000,imu,-0.21631978,0.22494914,-9.9203615,-0.00012628833,-0.0033324324,0.0020428242 +7572000,mag,0.007969824,-0.21398109,0.43498945 +7576000,imu,-0.16256702,0.24036014,-9.940404,-0.0018991001,-0.0059874617,0.0027404109 +7580000,imu,-0.16832423,0.17570788,-9.928206,-0.004194331,-0.008642577,-0.00011491768 +7580000,mag,0.008280167,-0.21691124,0.43555397 +7584000,imu,-0.19453847,0.15713263,-9.94554,-0.0022892137,-0.005852115,-0.0013569148 +7588000,imu,-0.19961777,0.20621023,-9.9606085,0.0002660152,-0.00597208,8.8087836e-05 +7592000,imu,-0.209954,0.20166461,-9.938105,0.0012997474,-0.0056451196,0.00051608845 +7596000,imu,-0.22657797,0.18508804,-9.941135,0.00042118656,-0.0046417587,0.0005791127 +7596000,mag,0.008926307,-0.22019038,0.42612353 +7600000,imu,-0.21676382,0.21546552,-9.9419155,0.0005845065,-0.0036766208,0.00041843124 +7604000,imu,-0.2078582,0.21953872,-9.94732,0.00267199,-0.004474119,0.0012047488 +7608000,mag,0.012063116,-0.21555549,0.42581418 +7608000,imu,-0.21124512,0.21046506,-9.948521,-0.0004774905,-0.004594208,-0.00039007122 +7608000,baro,487.5629 +7612000,imu,-0.20817886,0.1849247,-9.957901,-0.0001599927,-0.006503475,-0.00064530474 +7616000,imu,-0.22918193,0.15955217,-9.997812,0.0009721035,-0.0061177816,0.0006123097 +7620000,mag,0.008906284,-0.21957621,0.42864457 +7620000,imu,-0.22231367,0.17463775,-9.982686,-0.0018516794,-0.0029943415,-0.00052262656 +7624000,imu,-0.2211453,0.19660465,-9.927521,-0.000991235,-0.005078992,-0.0011265439 +7628000,imu,-0.2374301,0.17924486,-9.9164915,0.00045794735,-0.007147868,7.719568e-05 +7632000,mag,0.009819576,-0.21029581,0.42518604 +7632000,imu,-0.20231098,0.17619793,-9.952873,0.0014038053,-0.0062213303,-0.0012418289 +7636000,imu,-0.16684431,0.17671461,-9.973232,-0.0006133507,-0.0047782813,-0.0035735175 +7640000,imu,-0.19217344,0.16909084,-9.928741,-0.0009005819,-0.0049490635,0.0002978544 +7644000,mag,0.0045422963,-0.215646,0.425753 +7644000,imu,-0.19697857,0.19851275,-9.897457,0.0006363983,-0.005383854,0.002882187 +7648000,imu,-0.19815609,0.20044427,-9.940781,0.0018783803,-0.0061751595,0.00031039678 +7652000,gps,488103.0,85456074.0,473977508.0,-0.02,0.0,0.049999997 +7652000,imu,-0.23886834,0.20384866,-9.955267,0.0022141002,-0.007267325,-0.0010283588 +7656000,mag,0.0057984777,-0.21550673,0.4207853 +7656000,imu,-0.23747441,0.22044657,-9.964491,-0.00061754795,-0.006754931,-0.00076068385 +7660000,imu,-0.21272442,0.24571185,-9.9418335,-0.0009564578,-0.0043369527,-0.0007088833 +7664000,imu,-0.20300376,0.2160755,-9.910265,0.00261371,-0.0049124174,0.00080508564 +7668000,imu,-0.22054937,0.17481466,-9.948132,0.00047887914,-0.0048888964,0.0015815105 +7668000,mag,0.007409912,-0.21485977,0.43264145 +7672000,imu,-0.20585331,0.18626034,-9.936433,-0.001529432,-0.006871052,0.0018706479 +7676000,imu,-0.20789012,0.19310789,-9.944889,-0.0011174052,-0.008422252,-0.00081686775 +7680000,imu,-0.22343189,0.19916685,-9.950695,0.00030082458,-0.008040748,-0.0016111211 +7680000,baro,487.67087 +7680000,mag,0.014252537,-0.21693863,0.4308301 +7684000,imu,-0.19955012,0.19427474,-9.937304,0.0015577937,-0.0061798086,0.004511087 +7688000,imu,-0.18452832,0.16476403,-9.955426,-0.0017686809,-0.0071624736,0.0024844243 +7692000,imu,-0.20294634,0.16785793,-9.957872,-0.004081718,-0.009080654,-0.0019240027 +7692000,mag,0.0063604023,-0.2169916,0.4281119 +7696000,imu,-0.23191684,0.18589382,-9.934925,-0.0048390455,-0.007888876,-0.0018021766 +7700000,imu,-0.22450098,0.18053202,-9.939349,-0.003907805,-0.008790634,-0.00079910946 +7704000,mag,0.011202215,-0.21744233,0.4237204 +7704000,imu,-0.20951255,0.16570112,-9.963716,-0.0007733696,-0.008657776,-0.0014495642 +7708000,imu,-0.22377649,0.16969286,-9.96908,0.00013091638,-0.007040517,-0.0010950018 +7712000,imu,-0.21928969,0.20078492,-9.942344,0.0002957745,-0.0063142655,5.7633206e-05 +7716000,mag,0.012381723,-0.2123922,0.429238 +7716000,imu,-0.19641408,0.22409642,-9.910576,0.0020108689,-0.008142979,-0.0018725945 +7720000,imu,-0.19211587,0.22947079,-9.932591,0.00055859756,-0.009574663,-0.002620313 +7724000,imu,-0.1929009,0.20822471,-9.94638,-0.0012393491,-0.008339749,-0.0016969665 +7728000,imu,-0.18976194,0.18292092,-9.926299,-0.0033946894,-0.0041786716,-7.903895e-05 +7728000,mag,0.009580748,-0.2118598,0.42556614 +7732000,imu,-0.2104227,0.16198348,-9.906067,-0.0017034269,-0.0036717982,0.0014083583 +7736000,imu,-0.22576194,0.18025732,-9.925206,0.0016681023,-0.006923284,0.0027034823 +7740000,mag,0.00847117,-0.21602367,0.4334003 +7740000,imu,-0.22376478,0.18732436,-9.945832,-0.00038331797,-0.0065216124,0.0028452168 +7744000,imu,-0.21258071,0.15628256,-9.950888,-0.00021211237,-0.00430635,0.0004131492 +7748000,imu,-0.20739114,0.16133828,-9.943239,-0.0014415144,-0.0023589572,-0.0036533636 +7752000,mag,0.00076710223,-0.2157263,0.42769817 +7752000,baro,487.53473 +7752000,imu,-0.2228921,0.17139314,-9.907981,-0.003964239,-0.007333836,-0.0027152942 +7756000,imu,-0.21373318,0.18611585,-9.892643,-0.0011559271,-0.006878409,-0.0013165157 +7760000,imu,-0.18742253,0.22130296,-9.938986,8.2986466e-05,-0.0030734967,-0.0021546853 +7764000,mag,0.003966088,-0.21793795,0.4339329 +7764000,imu,-0.1899367,0.23941123,-9.966784,-0.0012951213,-0.0038881581,-0.0014283163 +7768000,imu,-0.21696351,0.21314153,-9.954866,-0.003952132,-0.0033007148,-0.0010227173 +7772000,imu,-0.19496587,0.19036093,-9.939766,-0.0026721896,-0.0056103864,0.0015022556 +7776000,mag,0.008988445,-0.21571083,0.42298922 +7776000,imu,-0.18715505,0.18988204,-9.931227,0.001157619,-0.006574587,0.0022080042 +7780000,imu,-0.20579523,0.18758453,-9.920937,-7.113313e-05,-0.005077711,0.0026781086 +7784000,imu,-0.20985603,0.18017259,-9.897316,-0.0030485196,-0.003650533,0.0028182275 +7788000,imu,-0.22841999,0.20192958,-9.957666,0.00025333388,-0.00739424,-0.0007400415 +7788000,mag,0.0059024505,-0.22013554,0.42631215 +7792000,imu,-0.23195638,0.19437258,-10.000755,-0.00020054575,-0.009248107,-0.0013596355 +7796000,imu,-0.22713447,0.16938484,-9.955489,-0.0028787013,-0.006792676,0.0028629876 +7800000,imu,-0.19469401,0.1754433,-9.935425,-0.0014977091,-0.006349157,0.00086365914 +7800000,mag,0.016786734,-0.21636201,0.42728445 +7804000,imu,-0.15777186,0.18374962,-9.950388,-0.0026186933,-0.0054387045,-0.0026289932 +7808000,imu,-0.18496946,0.2079677,-9.969214,-0.00093300454,-0.004199974,-0.0025624456 +7812000,imu,-0.216295,0.20674841,-9.947517,0.00038210175,-0.0048339996,-0.0030704688 +7812000,mag,0.007622437,-0.22237049,0.42639026 +7816000,imu,-0.20736364,0.21307188,-9.934814,-0.0007395552,-0.006928654,-0.000111525995 +7820000,imu,-0.19538973,0.20002832,-9.941687,6.103672e-05,-0.0049073687,0.0006321055 +7824000,mag,0.014540055,-0.21278891,0.43282792 +7824000,baro,487.61923 +7824000,imu,-0.1958338,0.18603079,-9.949266,0.00022609098,-0.003435426,-0.0032073532 +7828000,imu,-0.18146208,0.19146699,-9.953197,-0.0020966607,-0.0053677913,-0.0038292443 +7832000,imu,-0.16999744,0.17501199,-9.927818,-0.0013471848,-0.005908679,0.0003077985 +7836000,imu,-0.17004743,0.17057131,-9.936428,-0.0015824441,-0.005493602,0.0038665216 +7836000,mag,0.013849178,-0.21561651,0.43325147 +7840000,imu,-0.1703015,0.1841185,-9.969236,-0.0022764173,-0.005382914,0.0005737312 +7844000,imu,-0.20825334,0.21323085,-9.946245,-0.0015461082,-0.005385581,-0.0040871333 +7848000,imu,-0.21945512,0.22361386,-9.95269,-0.0044900435,-0.004281581,-0.0018218723 +7848000,mag,0.010629279,-0.21435285,0.4281746 +7852000,imu,-0.19088599,0.22597037,-9.964989,-0.003954746,-0.0036838467,0.00060625776 +7856000,imu,-0.19406027,0.22720844,-9.942638,-0.0009782972,-0.0024662467,0.0011853398 +7860000,imu,-0.20545474,0.18665178,-9.953717,0.0008785439,-0.0058519295,-0.0006028118 +7860000,mag,0.005545423,-0.21967268,0.43415424 +7864000,imu,-0.20602041,0.19282442,-9.939224,-0.0001699305,-0.009859919,-0.002400029 +7868000,imu,-0.2056849,0.2188729,-9.930779,0.0008452173,-0.011427064,-0.00017327105 +7872000,imu,-0.20850915,0.20688242,-9.955118,0.0027122486,-0.010062886,0.0008041833 +7872000,mag,0.011036197,-0.21106093,0.42838874 +7876000,imu,-0.22160015,0.2013015,-9.976761,-0.0025309974,-0.0055140993,-0.0017508307 +7880000,imu,-0.2133352,0.1979985,-9.936825,-0.0030450819,-0.004055225,-0.0042774067 +7884000,imu,-0.1902248,0.19198895,-9.9295225,-0.001804395,-0.003994254,-0.0033809908 +7884000,mag,0.0135838445,-0.21246131,0.43091163 +7888000,imu,-0.20854297,0.2022895,-9.948603,-0.004558837,-0.004595621,-0.000638915 +7892000,imu,-0.23716183,0.17694257,-9.939048,-0.0010903068,-0.0054938816,0.0001325146 +7896000,mag,0.009440473,-0.22112249,0.41930678 +7896000,imu,-0.22904515,0.17291598,-9.929415,0.0016852504,-0.005378066,-0.00090245507 +7896000,baro,487.62863 +7900000,imu,-0.216159,0.20596416,-9.915491,-0.0006618663,-0.0063984557,-4.095003e-05 +7904000,imu,-0.21254125,0.21434924,-9.962322,0.00067944394,-0.0075706523,-0.00064946694 +7908000,imu,-0.20065251,0.21440452,-9.967278,0.0025361883,-0.0054751527,-0.00066883053 +7908000,mag,0.007552838,-0.21602301,0.42805243 +7912000,imu,-0.21579333,0.20699653,-9.946792,-0.00045414802,-0.0025980864,-0.0018901651 +7916000,imu,-0.23797745,0.20921467,-9.928922,-0.0016202526,-0.0016322975,-0.00063874363 +7920000,imu,-0.20791866,0.21841398,-9.937303,-0.0013796362,-0.0006302699,0.0013298325 +7920000,mag,0.013852179,-0.21182443,0.42580333 +7924000,imu,-0.18647543,0.20469153,-9.980387,-0.003680458,-0.0026372934,-0.00048924383 +7928000,imu,-0.19638747,0.1858448,-9.952406,-0.0035288113,-0.009169046,-0.0015041233 +7932000,imu,-0.2097737,0.18038568,-9.919691,-0.0019785499,-0.009185881,-0.0017019127 +7932000,mag,0.0056989216,-0.21696402,0.42531514 +7936000,imu,-0.23793831,0.16821954,-9.931503,0.00044782972,-0.0073698196,-0.0010977158 +7940000,imu,-0.21706915,0.16014734,-9.961531,0.0004041655,-0.0071914685,-0.0020803695 +7940000,mag,0.0102267,-0.21018021,0.42942062 +7940000,landed,1.0 +7944000,imu,-0.19813392,0.16342421,-9.960303,-0.00063044706,-0.00428837,-0.00053067174 +7948000,imu,-0.22698596,0.18393874,-9.95098,0.002665555,-0.0065593543,0.0018049392 +7952000,mag,0.010065803,-0.21281154,0.42754716 +7952000,imu,-0.20304883,0.20736529,-9.986714,0.006584145,-0.0075999596,0.0012526273 +7956000,imu,-0.20998229,0.19397911,-9.964127,0.0031773301,-0.0059170285,0.00014955347 +7960000,imu,-0.22090721,0.20197877,-9.94239,-0.0042389575,-0.0054915324,0.00070712354 +7964000,mag,0.010459217,-0.2183352,0.42512983 +7964000,imu,-0.20909879,0.20103754,-9.946388,-0.004950873,-0.0051288065,0.0006317818 +7968000,baro,487.68967 +7968000,imu,-0.17618234,0.16070442,-9.91124,-0.00027917683,-0.005727014,-0.0011598195 +7972000,imu,-0.1579,0.16545665,-9.9043255,-0.0030175496,-0.007072108,-0.0020374965 +7976000,imu,-0.17289367,0.15412815,-9.896642,-0.0056821117,-0.008598639,-0.00028506413 +7980000,mag,0.008341163,-0.21075201,0.42455128 +7980000,imu,-0.17837542,0.16430733,-9.910564,-0.0027368406,-0.006313066,-0.0018889839 +7984000,imu,-0.21118736,0.20962127,-9.942896,-0.00045887302,-0.0040777735,-0.0022890384 +7988000,imu,-0.22576408,0.2375717,-9.918781,-0.00066380075,-0.0061810664,0.0010888572 +7992000,imu,-0.19749478,0.22022401,-9.918829,-0.0014539296,-0.007373088,-0.0015316282 +7992000,mag,0.013351945,-0.2149737,0.4306508 +7996000,imu,-0.1634392,0.1738066,-9.93255,-0.0021444655,-0.006888269,-0.0010981364 +8000000,imu,-0.1958352,0.17546603,-9.952558,-0.0016961246,-0.005505031,0.001826593 +8004000,mag,0.0093789315,-0.21271093,0.42307466 +8004000,imu,-0.22485855,0.18523683,-9.956911,-0.00064080453,-0.0037725258,0.001843437 +8008000,imu,-0.22205734,0.19237044,-9.933847,-0.0029067788,-0.0051557366,0.00038776806 +8012000,imu,-0.20566216,0.18215676,-9.951496,-0.0015786503,-0.005614561,-0.00038801713 +8016000,mag,0.011056456,-0.21953101,0.4298682 +8016000,imu,-0.19141597,0.17978644,-9.932289,0.002308756,-0.0041513364,0.0021850572 +8020000,imu,-0.18445815,0.22382285,-9.920027,0.002161568,-0.0049795317,0.0008486935 +8024000,imu,-0.19341838,0.22481672,-9.934186,-0.00079971924,-0.0072655063,0.00066372915 +8028000,mag,0.0156978,-0.21913807,0.43579185 +8028000,imu,-0.18801217,0.1928601,-9.949106,0.001131838,-0.0087577235,0.0013506246 +8032000,imu,-0.18010837,0.18824975,-9.952369,0.0030803801,-0.008002305,-5.8210222e-05 +8036000,imu,-0.20386419,0.17313412,-9.923704,0.000102216276,-0.005683851,0.001527268 +8040000,baro,487.70374 +8040000,imu,-0.21708468,0.20386875,-9.908974,-0.0004741133,-0.0040387,0.002374542 +8040000,mag,0.009453269,-0.21386886,0.42540637 +8044000,imu,-0.2051484,0.22727619,-9.930058,0.0005113451,-0.003193122,8.859088e-05 +8048000,imu,-0.21227987,0.1700335,-9.974661,-0.001763868,-0.0068373857,-0.0031690982 +8052000,mag,0.011658662,-0.2130445,0.42767516 +8052000,gps,488106.0,85456074.0,473977508.0,0.0,0.0,-0.01 +8052000,imu,-0.2220035,0.16363029,-9.965876,-0.0028879782,-0.0059362934,-0.00053298357 +8056000,imu,-0.20826194,0.16485399,-9.91866,-0.004300679,-0.001879938,-0.0008113639 +8060000,imu,-0.20991577,0.1630637,-9.931495,-0.0042414586,-0.0020131662,-0.0015227343 +8064000,mag,0.012857132,-0.21453242,0.42810914 +8064000,imu,-0.20738675,0.1978344,-9.945078,-0.0009141989,-0.0023094288,0.0011180406 +8068000,imu,-0.2091637,0.18817857,-9.945278,-0.0013446589,-0.0051929215,-0.0020674926 +8072000,imu,-0.21723065,0.19934525,-9.952227,-0.0056629553,-0.0055289273,-0.0012178875 +8076000,mag,0.009191445,-0.21765938,0.43170318 +8076000,imu,-0.20913129,0.2187167,-9.924406,-0.004324912,-0.0030624834,1.4990946e-05 +8080000,imu,-0.21514085,0.16873594,-9.913446,-0.0010819561,-0.00370764,-0.0010148123 +8084000,imu,-0.21822043,0.16093826,-9.9460535,-0.0029928617,-0.0070526595,0.00081168377 +8088000,mag,0.010528934,-0.21789981,0.4314749 +8088000,imu,-0.21384093,0.19279176,-9.962309,-0.00041412568,-0.0081973905,0.0018811747 +8092000,imu,-0.18142015,0.16844182,-9.973351,0.0018824821,-0.0066619944,-0.0016495986 +8096000,imu,-0.15042368,0.1830314,-9.935542,-0.00072189025,-0.0051367003,-0.0017471467 +8100000,mag,0.008264816,-0.21294793,0.42848676 +8100000,imu,-0.17028005,0.20527038,-9.935954,0.00060400023,-0.0040894444,-0.001366666 +8104000,imu,-0.20601878,0.1877076,-9.983882,0.00017322063,-0.0028244047,-0.0016849011 +8108000,imu,-0.23621598,0.16754742,-9.962273,-0.0021541459,-0.0027447196,0.0013931248 +8112000,imu,-0.24463356,0.16257478,-9.941277,-0.0023748619,-0.0052837855,6.0454382e-05 +8112000,baro,487.638 +8112000,mag,0.004533558,-0.21636099,0.4325704 +8116000,imu,-0.21104147,0.17697582,-9.935486,-0.002976183,-0.0070745787,-0.0017018459 +8120000,imu,-0.18894812,0.20022774,-9.945238,-0.0030213967,-0.007869754,0.00048667617 +8124000,mag,0.0054009426,-0.21556444,0.42767963 +8124000,imu,-0.20765866,0.21772648,-9.946613,-0.0016311461,-0.0062707528,-1.2888393e-05 +8128000,imu,-0.20222834,0.2020454,-9.933608,0.0025772168,-0.0063422024,-0.0015401541 +8132000,imu,-0.17897214,0.20606312,-9.933018,0.0005017653,-0.0064887092,-0.00035563487 +8136000,mag,0.009319124,-0.21094927,0.43121126 +8136000,imu,-0.18665516,0.22685404,-9.951311,-0.0032549284,-0.003780518,0.00057236204 +8140000,imu,-0.22566272,0.21220136,-9.928003,-0.003134517,-0.001667482,0.00096872053 +8144000,imu,-0.22583494,0.17624663,-9.911173,-0.001253074,-0.0039273747,0.0014125103 +8148000,imu,-0.2045973,0.18078928,-9.95079,-0.0015647089,-0.005570163,0.0013456484 +8148000,mag,0.0050921883,-0.21903968,0.42700338 +8152000,imu,-0.19886732,0.19452566,-9.962963,-0.0023925079,-0.0048916778,-0.0003315789 +8156000,imu,-0.22442144,0.18029691,-9.944332,-0.001193714,-0.0060383766,-0.001966753 +8160000,mag,0.008273997,-0.21783587,0.4298367 +8160000,imu,-0.22364825,0.16768831,-9.952435,-0.00052910455,-0.002036795,0.0023218498 +8164000,imu,-0.19836186,0.20164764,-9.962782,-0.0012463884,-0.0036740617,0.0030120686 +8168000,imu,-0.18886054,0.2054944,-9.942164,-0.002662656,-0.0065077236,-4.7155925e-05 +8172000,mag,0.01024439,-0.21249476,0.4238226 +8172000,imu,-0.18073954,0.21674073,-9.934673,-0.0035356616,-0.0019254842,-0.0022634517 +8176000,imu,-0.18169451,0.2210111,-9.983538,-0.00074105733,-0.0013465876,-0.0055592177 +8180000,imu,-0.19384979,0.21827318,-9.975095,0.0020266818,-0.0036256427,-0.0043652817 +8184000,mag,0.010615891,-0.21459703,0.43244484 +8184000,baro,487.60513 +8184000,imu,-0.23215958,0.25913182,-9.940416,-0.0009856801,-0.00741686,-0.0018104286 +8188000,imu,-0.22953254,0.24005763,-9.934165,-0.0029772567,-0.010231048,0.00019694514 +8192000,imu,-0.20469537,0.21153824,-9.92833,-0.004309874,-0.0077082687,0.002017509 +8196000,mag,0.008056646,-0.2183951,0.4331192 +8196000,imu,-0.2084803,0.21663724,-9.97077,-0.00432998,-0.0066588055,0.002769964 +8200000,imu,-0.20286602,0.19841486,-9.980381,-0.0032749234,-0.008522169,-0.0011285058 +8204000,imu,-0.19388543,0.1803041,-9.976651,-0.00232938,-0.008374163,-0.0047370195 +8208000,mag,0.010561551,-0.21293704,0.42953706 +8208000,imu,-0.2089785,0.18068813,-9.971332,-0.0010921926,-0.0060901823,-0.0024701 +8212000,imu,-0.22156714,0.14711477,-9.9363,-0.0030919453,-0.006951298,0.0014038349 +8216000,imu,-0.1854733,0.17270233,-9.939565,-0.0023599053,-0.010366728,0.0022804681 +8220000,mag,0.009597267,-0.21472988,0.4275415 +8220000,imu,-0.17022043,0.20558834,-9.960438,0.00090552954,-0.01154157,-0.0008894662 +8224000,imu,-0.18451491,0.18503709,-9.949425,-0.00053774373,-0.010467686,-0.00462713 +8228000,imu,-0.19922858,0.19666946,-9.941244,-0.0012453089,-0.0067057214,-0.0027732055 +8232000,imu,-0.24485002,0.22513115,-9.952322,-0.00018466053,-0.0073791198,0.0011073621 +8232000,mag,0.005347707,-0.2151649,0.42393997 +8236000,imu,-0.25459304,0.20916612,-9.977961,-0.00010927634,-0.008529573,0.00037557358 +8240000,imu,-0.21929777,0.16088165,-9.980062,7.943941e-05,-0.004731781,-0.0025884353 +8244000,imu,-0.18536049,0.15736362,-9.955807,0.00013926087,-0.0042604227,-0.0011321739 +8244000,mag,0.005885125,-0.21470708,0.42659006 +8248000,imu,-0.16709386,0.19385803,-9.959448,-0.0013659365,-0.005534679,0.00081192015 +8252000,imu,-0.21816319,0.16970284,-9.935478,-0.00125242,-0.005696869,0.0012434636 +8256000,imu,-0.24619675,0.14738455,-9.903658,-0.001734193,-0.0047591403,-0.000557396 +8256000,mag,0.012366573,-0.21636544,0.42908835 +8256000,baro,487.60983 +8260000,imu,-0.2330636,0.17173061,-9.911542,-0.0024110982,-0.002849904,-0.0008997035 +8264000,imu,-0.21597454,0.15568642,-9.912065,-0.0007540048,-0.00642567,3.868461e-05 +8268000,imu,-0.17138916,0.17209698,-9.929488,-0.0015843792,-0.0077968244,-0.0032161472 +8268000,mag,0.003821701,-0.21153495,0.43451354 +8272000,imu,-0.2014629,0.19191654,-9.95204,-0.0034366287,-0.002599242,-0.005082093 +8276000,imu,-0.23185089,0.20346035,-9.942299,-0.001202587,-0.0032579785,-0.0061530625 +8280000,imu,-0.23215055,0.2297788,-9.9205065,0.00062742643,-0.0047871373,-0.0047405134 +8280000,mag,0.013391048,-0.2194243,0.42893198 +8284000,imu,-0.24622397,0.19868657,-9.919076,0.0020452235,-0.008088065,-0.0009864267 +8288000,imu,-0.22758542,0.1776985,-9.925668,0.00041556772,-0.011140201,0.002475707 +8292000,mag,0.0060857898,-0.22186095,0.43393245 +8292000,imu,-0.19828962,0.15573125,-9.915834,-0.0004993422,-0.0064788857,0.002992607 +8296000,imu,-0.16260868,0.14048755,-9.939013,-0.0011912476,-0.0041165273,0.0020134079 +8300000,imu,-0.16171408,0.17525926,-9.947939,-0.002461485,-0.0043900125,0.0034259518 +8304000,mag,0.016192904,-0.2139883,0.42914113 +8304000,imu,-0.20592642,0.19769305,-9.955699,0.0005344853,-0.0052031735,0.005078803 +8308000,imu,-0.2046552,0.22294758,-9.979322,0.003007905,-0.0047646193,0.002586658 +8312000,imu,-0.20822577,0.19027498,-9.9656315,0.0002139408,-0.005457566,-0.00066123344 +8316000,mag,0.006450497,-0.2165315,0.43084162 +8316000,imu,-0.20770629,0.17091058,-9.942467,-0.00025194808,-0.0072904583,-0.00065768923 +8320000,imu,-0.18645814,0.18848829,-9.90778,0.0024881815,-0.008227917,-0.0006636272 +8324000,imu,-0.18593328,0.14863138,-9.922749,-0.00064073654,-0.009048012,-0.0012555772 +8328000,mag,0.018173227,-0.21804245,0.42742202 +8328000,baro,487.61453 +8328000,imu,-0.18341666,0.16098832,-9.947094,-5.9156137e-05,-0.009915615,-0.0027165958 +8332000,imu,-0.21456614,0.21287681,-9.96368,0.00041158267,-0.009013774,-0.00048915244 +8336000,imu,-0.23811084,0.22161591,-10.004262,0.0016087501,-0.0050636088,0.0032095874 +8340000,mag,0.005831899,-0.21620026,0.4278188 +8340000,imu,-0.21484287,0.2143364,-9.9922905,0.0034088201,-0.0026292063,0.0022721798 +8344000,imu,-0.16918856,0.21392982,-9.945532,0.0010228562,-0.0047761253,0.0011292279 +8348000,imu,-0.20054787,0.21363236,-9.923901,-4.0807572e-05,-0.004723216,0.0009025031 +8352000,mag,0.01080364,-0.21410055,0.4284151 +8352000,imu,-0.21477851,0.20678566,-9.921226,-0.0009945353,-0.005263811,0.00036322812 +8356000,imu,-0.17382622,0.20734413,-9.973185,-0.0014917703,-0.009908039,0.00012697959 +8360000,imu,-0.226378,0.20853685,-9.981292,-0.00043807292,-0.008401222,0.0021078198 +8364000,imu,-0.24361998,0.18110052,-9.932742,-0.0006910044,-0.006692956,0.004363155 +8364000,mag,0.007109066,-0.21391009,0.4269464 +8368000,imu,-0.240785,0.16730781,-9.923631,-0.0012042485,-0.00414184,0.004535687 +8372000,imu,-0.22452873,0.18691064,-9.912711,-0.0033345828,-0.0028255659,0.0019692108 +8376000,mag,0.014503271,-0.21777312,0.4320146 +8376000,imu,-0.18417296,0.20978324,-9.931054,-0.0043444633,-0.0036276095,-0.0007774588 +8380000,imu,-0.19811931,0.19949892,-9.960826,-0.0019476834,-0.004375196,-0.0017090851 +8384000,imu,-0.23392963,0.18658967,-9.954831,-0.00026526814,-0.0066452087,-0.0034083389 +8388000,mag,0.010331988,-0.21474905,0.4272238 +8388000,imu,-0.24678005,0.20494623,-9.946678,-0.00053411134,-0.0053859456,-0.0013571271 +8392000,imu,-0.22239007,0.22098236,-9.950216,-0.003222514,-0.0057611135,0.00047409238 +8396000,imu,-0.19726133,0.22112167,-9.931433,-0.0013816423,-0.009179445,-0.0026011732 +8400000,mag,0.011249455,-0.21218024,0.4296903 +8400000,imu,-0.20423873,0.22222328,-9.930552,-0.00015869613,-0.008259583,-0.0024452736 +8400000,baro,487.58636 +8404000,imu,-0.20230018,0.20702554,-9.946341,-0.0032710354,-0.006585299,0.000714559 +8408000,imu,-0.19244328,0.19957863,-9.919461,-0.0006981774,-0.0074371733,0.0016682612 +8412000,mag,0.0032139653,-0.2139765,0.42963746 +8412000,imu,-0.21604253,0.17341833,-9.91032,-0.0016145655,-0.007782971,-0.0012895019 +8416000,imu,-0.2326573,0.15543498,-9.943695,-0.00035220254,-0.008842033,0.0008838504 +8420000,imu,-0.23905778,0.18348971,-9.94437,-0.000104926825,-0.006864839,0.0028397043 +8424000,imu,-0.21962896,0.21653679,-9.939979,-0.004894434,-0.0054312223,0.001807181 +8424000,mag,0.0041871713,-0.21126692,0.42967188 +8428000,imu,-0.18464223,0.21793385,-9.965662,-0.005690269,-0.008420563,0.0023344578 +8432000,imu,-0.18478557,0.18896829,-9.959377,-0.0036556905,-0.008904767,-0.00047593736 +8436000,imu,-0.1682536,0.23203506,-9.938583,0.001848445,-0.00953176,-0.0017265838 +8436000,mag,0.0061676344,-0.2137039,0.432054 +8440000,imu,-0.16782671,0.19863594,-9.934418,0.0020443124,-0.0069554076,0.0015935302 +8444000,imu,-0.15890421,0.15260759,-9.952569,-0.0011824076,-0.0019889139,0.0023478433 +8448000,imu,-0.17174959,0.19914378,-9.948021,-0.0028330863,-0.0017763835,0.00031429811 +8448000,mag,0.0032434345,-0.21418138,0.42914283 +8452000,gps,488101.0,85456074.0,473977508.0,0.0,-0.02,0.0 +8452000,imu,-0.22417334,0.18623386,-9.946817,-0.0019711943,-0.004502937,0.0021139907 +8456000,imu,-0.23668134,0.16633637,-9.953535,-0.0013746287,-0.005596262,0.002502321 +8460000,mag,0.015297614,-0.21694754,0.42869747 +8460000,imu,-0.24412474,0.17099814,-9.964497,3.748078e-05,-0.0048687262,0.0023405347 +8464000,imu,-0.24362242,0.15811507,-9.9752655,0.0014081124,-0.004757853,0.0030913108 +8468000,imu,-0.22226958,0.16981289,-9.93899,-0.0013224737,-0.003477051,0.0042737178 +8472000,imu,-0.19867367,0.17601842,-9.91362,-0.00066293316,-0.0023629186,0.003902307 +8472000,mag,0.013278448,-0.21809377,0.43203285 +8472000,baro,487.67087 +8476000,imu,-0.18550134,0.16845256,-9.904641,0.0005167636,-0.0014522965,0.0002671847 +8480000,imu,-0.19622512,0.17474963,-9.913603,-0.0008923043,-0.0020634567,-6.790048e-05 +8484000,mag,0.011216223,-0.22353563,0.43133637 +8484000,imu,-0.19667014,0.18004115,-9.950177,-0.001997835,-0.005146116,0.0010782331 +8488000,imu,-0.18161403,0.20948282,-9.949783,-0.0007480731,-0.0047549866,0.0006731691 +8492000,imu,-0.20328534,0.22842798,-9.931885,-0.0005468475,-0.002749571,0.002340611 +8496000,mag,0.008292151,-0.2160276,0.43160537 +8496000,imu,-0.19312873,0.21060598,-9.928326,-0.0017280759,-0.0046719634,0.0019030923 +8500000,imu,-0.17270415,0.18510126,-9.918629,-0.0021899224,-0.005832633,-0.00021276163 +8504000,imu,-0.18945283,0.17474191,-9.900391,-0.0020063573,-0.0040989285,0.0009178292 +8508000,mag,0.012860566,-0.21041338,0.42953366 +8508000,imu,-0.21227303,0.18167467,-9.946434,-0.00082340057,-0.007577697,-0.0028899007 +8512000,imu,-0.20456088,0.20891023,-9.96552,0.0012987877,-0.008534125,-0.0019439835 +8516000,imu,-0.20584685,0.19616814,-9.948235,0.0008559514,-0.0066575757,0.0007104791 +8520000,imu,-0.18783425,0.15409091,-9.951978,-0.002892125,-0.007716432,-0.00089724985 +8520000,mag,0.009042475,-0.21101521,0.4323511 +8524000,imu,-0.1948094,0.18360952,-9.936181,-0.0012545264,-0.006627951,-0.00051906833 +8528000,imu,-0.2317155,0.18756814,-9.915337,-0.0015935309,-0.0054706926,-0.0020190275 +8532000,imu,-0.17992061,0.17066598,-9.934371,-0.0005741036,-0.004827791,-0.0026009537 +8532000,mag,0.0077441046,-0.21196587,0.43608132 +8536000,imu,-0.15932572,0.16392992,-9.957165,0.002323354,-0.0046287966,-0.0009342805 +8540000,imu,-0.18848923,0.15797168,-9.925608,0.0009812431,-0.0066537745,0.00057381653 +8540000,mag,0.006450272,-0.2128259,0.43451467 +8544000,baro,487.57227 +8544000,imu,-0.19908291,0.19905925,-9.921836,-0.0015709637,-0.0050854627,-0.0007639919 +8548000,imu,-0.21334577,0.24003974,-9.915142,-0.000466562,-0.002944226,-0.0013056876 +8552000,imu,-0.18734129,0.22121975,-9.938485,0.0021412433,-0.0048351525,-0.0019759536 +8556000,imu,-0.16515732,0.17878981,-9.943075,0.0027441927,-0.0061840583,0.00010420292 +8556000,mag,0.010008741,-0.21478716,0.42426223 +8560000,imu,-0.19829053,0.1794481,-9.924861,-0.0024425269,-0.00633012,0.0010603243 +8564000,imu,-0.22941351,0.18592197,-9.951107,-0.004823622,-0.0061349776,-0.0011373172 +8568000,mag,0.009842673,-0.21677803,0.42671075 +8568000,imu,-0.20264588,0.17180614,-9.977554,0.00025801858,-0.007294901,-0.002132387 +8572000,imu,-0.19091946,0.15291421,-9.987758,0.0006853036,-0.0081236055,-0.0005526032 +8576000,imu,-0.19196117,0.17426087,-9.974079,-0.0012049528,-0.005513367,-0.00070941146 +8580000,mag,0.010470183,-0.21747082,0.4345718 +8580000,imu,-0.16548747,0.23403166,-9.957723,-0.0030762672,-0.003902932,-0.0030402108 +8584000,imu,-0.17203583,0.22002009,-9.948609,-0.0018736279,-0.0031857602,-0.0017876858 +8588000,imu,-0.18506175,0.17761321,-9.913704,-0.0002365923,-0.0030350534,-0.00090392545 +8592000,mag,0.00517022,-0.21336237,0.42961714 +8592000,imu,-0.20555997,0.18907838,-9.932258,-0.0011392573,-0.0050839796,0.00028219938 +8596000,imu,-0.20439127,0.16814864,-9.957832,0.0008582868,-0.0055900756,0.0007648705 +8600000,imu,-0.20885399,0.16200778,-9.920935,0.00419521,-0.0035598576,-0.0007592214 +8604000,mag,0.009456853,-0.21270417,0.42732775 +8604000,imu,-0.22034879,0.1974201,-9.910798,0.0010763913,-0.0040078503,-0.0035874697 +8608000,imu,-0.22996722,0.20437141,-9.942865,-0.0013889915,-0.007490839,-0.0009568818 +8612000,imu,-0.22806093,0.20588423,-9.94939,0.0005237385,-0.010210841,0.00015562744 +8616000,imu,-0.20619592,0.18478231,-9.952078,-1.1389588e-05,-0.008055107,-0.0016964937 +8616000,mag,0.008976,-0.21184327,0.43221194 +8616000,baro,487.58167 +8620000,imu,-0.18841481,0.17732687,-9.935272,-8.899056e-06,-0.00442663,-0.00016029607 +8624000,imu,-0.20076099,0.2112125,-9.909439,0.001043576,-0.004721083,-0.00089299504 +8628000,mag,0.009156616,-0.2087677,0.4279843 +8628000,imu,-0.23430681,0.21916023,-9.933125,0.0018382721,-0.0053943126,0.00034931698 +8632000,imu,-0.2134921,0.21584333,-9.952469,0.0017775511,-0.0062595545,-0.0017847911 +8636000,imu,-0.21590757,0.22715296,-9.938331,-0.0018176548,-0.007961731,-0.0010616325 +8640000,imu,-0.20023032,0.20907298,-9.923892,-0.0019865823,-0.007869528,0.0022392105 +8640000,mag,0.010751339,-0.21446225,0.42730254 +8644000,imu,-0.17620637,0.16462728,-9.929598,-0.0006834291,-0.0056153866,-2.6574862e-05 +8648000,imu,-0.18616223,0.17409983,-9.907363,-0.0005512929,-0.006946153,-0.0007555655 +8652000,imu,-0.18628028,0.21487333,-9.940994,0.0025641727,-0.0066942163,0.003034055 +8652000,mag,0.015622469,-0.21424545,0.42157328 +8656000,imu,-0.19044381,0.21324562,-9.95237,0.0018287274,-0.005674367,0.0041702553 +8660000,imu,-0.19900887,0.19823115,-9.928202,-0.00055818807,-0.007939691,0.004144035 +8664000,imu,-0.21888238,0.21943069,-9.930347,-0.0007719882,-0.007910811,0.001321613 +8664000,mag,0.014854343,-0.22152923,0.42375073 +8668000,imu,-0.20573023,0.22541507,-9.9615,0.00032101484,-0.006034958,-0.0027165876 +8672000,imu,-0.19879457,0.1930103,-9.979525,4.916673e-06,-0.005111293,-0.0011660857 +8676000,mag,0.01222398,-0.22078481,0.42602777 +8676000,imu,-0.21980813,0.20503505,-9.948305,-0.000121782265,-0.0023303581,-0.0008625381 +8680000,imu,-0.19171329,0.20938239,-9.9347,-0.0008878141,-0.0017720183,-0.0030112679 +8684000,imu,-0.1995542,0.18648914,-9.968225,-0.0043434785,-0.0020035584,-0.003932216 +8688000,baro,487.5582 +8688000,mag,0.013478676,-0.2151804,0.42844442 +8688000,imu,-0.20694184,0.18684295,-9.999035,-0.005000855,-0.0035339762,4.272644e-06 +8692000,imu,-0.19012645,0.18884735,-9.982275,-0.0021617021,-0.005395925,0.001972537 +8696000,imu,-0.20317942,0.19994603,-9.942138,-0.0010669716,-0.0035303184,0.00299289 +8700000,mag,0.009975469,-0.22094493,0.43323693 +8700000,imu,-0.19833636,0.21558237,-9.923235,-0.0054973797,-0.0048021236,0.00040285222 +8704000,imu,-0.16636886,0.2127734,-9.945377,-0.003179628,-0.005446093,-0.0021910202 +8708000,imu,-0.17230214,0.17801505,-9.938896,0.0018952148,-0.006548375,-0.0003965869 +8712000,imu,-0.19355342,0.17531838,-9.907589,-0.00074046757,-0.006592614,0.002251601 +8712000,mag,0.0033932053,-0.20994677,0.42634043 +8716000,imu,-0.19280723,0.203623,-9.905159,-0.0051813023,-0.006302347,0.00351639 +8720000,imu,-0.20501047,0.18854843,-9.93896,-0.0035494473,-0.004449461,0.0024141283 +8724000,mag,0.0074608414,-0.21639107,0.429344 +8724000,imu,-0.22472037,0.14810055,-9.931257,-0.0010915969,0.0006418242,0.0011663238 +8728000,imu,-0.23455164,0.17413251,-9.938107,-0.004818895,-0.0015009037,-0.0010262738 +8732000,imu,-0.21663508,0.20319726,-9.945368,-0.003193321,-0.0036256814,-0.0027703648 +8736000,mag,0.009370674,-0.21799466,0.4273946 +8736000,imu,-0.20007941,0.20011984,-9.891003,-0.002714769,-0.0032702216,-0.004370657 +8740000,imu,-0.1915373,0.20674555,-9.910914,-0.004449392,-0.0056429394,-0.0036864167 +8744000,imu,-0.20062684,0.22927858,-9.951586,-0.0025783265,-0.005175755,-0.0002308058 +8748000,mag,0.0053113,-0.21744016,0.43214768 +8748000,imu,-0.20027052,0.21054651,-9.932535,0.0007141197,-0.0043181856,-0.001508913 +8752000,imu,-0.19619863,0.17108218,-9.909504,-0.0007700052,-0.0047135307,-0.0015273875 +8756000,imu,-0.18695045,0.1816536,-9.927799,-0.0033165046,-0.003477722,0.00059740426 +8760000,imu,-0.19599167,0.17652793,-9.959109,0.00015853012,-0.0035449294,-0.00028986763 +8760000,mag,0.009169464,-0.21255377,0.42814538 +8760000,baro,487.59576 +8764000,imu,-0.20458111,0.18722077,-9.954353,-0.0014571017,-0.00444458,0.00043773986 +8768000,imu,-0.19940093,0.21609083,-9.944447,-0.0005248727,-0.0060323076,0.00016899817 +8772000,mag,0.01122442,-0.22071032,0.4260132 +8772000,imu,-0.20029001,0.19306432,-9.931532,0.00057707174,-0.0051556802,-0.001206552 +8776000,imu,-0.17408748,0.17544863,-9.888785,-0.0028945168,-0.0029968466,-0.00028912135 +8780000,imu,-0.17287135,0.15303378,-9.875091,-0.0043413723,-0.0026182341,0.0033226192 +8784000,mag,0.011733715,-0.21519212,0.43191648 +8784000,imu,-0.19310251,0.14413169,-9.916122,-0.0006421975,-0.0053085047,0.0015986596 +8788000,imu,-0.20986116,0.19243297,-9.942051,0.001968006,-0.0071754535,0.002025557 +8792000,imu,-0.19320276,0.20148319,-9.935786,-0.0011269179,-0.0059957113,0.00035901464 +8796000,mag,0.0102385795,-0.21544741,0.42607656 +8796000,imu,-0.20100978,0.17726761,-9.941235,-0.0006150732,-0.005290452,-0.0056723356 +8800000,imu,-0.2205586,0.15185866,-9.958582,-0.0017900454,-0.0048504765,-0.0039209467 +8804000,imu,-0.21681839,0.15775774,-9.944244,-0.0022575974,-0.0060792794,-0.00093693886 +8808000,imu,-0.22079146,0.18809731,-9.920546,-0.0020494438,-0.0055918475,-0.0030348336 +8808000,mag,0.0058569964,-0.21596928,0.42482048 +8812000,imu,-0.20158851,0.21964276,-9.945667,-0.00010684671,-0.009966766,-0.001771865 +8816000,imu,-0.19872186,0.21822254,-9.933334,0.001772555,-0.010319523,0.0014582333 +8820000,mag,0.007882728,-0.2179486,0.42978263 +8820000,imu,-0.19774672,0.18050319,-9.929013,0.001187845,-0.00534202,-0.0031042404 +8824000,imu,-0.19092743,0.16708478,-9.953455,0.0015219995,-0.0041969647,-0.004864676 +8828000,imu,-0.19651386,0.1935313,-9.927275,-0.0023436334,-0.0068208743,-0.0011106376 +8832000,baro,487.638 +8832000,imu,-0.17351604,0.19381858,-9.946249,-0.0043663634,-0.009332662,-0.0003652033 +8832000,mag,0.0070271557,-0.21540369,0.42613465 +8836000,imu,-0.16361946,0.16945636,-9.965647,-0.0027539346,-0.0063449,-0.00015927761 +8840000,imu,-0.17132366,0.18903571,-9.95958,0.0004240054,-0.0076660844,4.540955e-06 +8844000,imu,-0.1846829,0.22614221,-9.932578,0.0016631586,-0.004589549,-0.000100245474 +8844000,mag,0.010353596,-0.21934417,0.42313752 +8848000,gps,488094.0,85456074.0,473977508.0,-0.01,0.0,0.0 +8848000,imu,-0.19468656,0.22868915,-9.943361,-0.0017841303,-0.0056298915,-0.0007114829 +8852000,imu,-0.19333792,0.19039628,-9.982309,-0.0031186535,-0.008347561,-0.00033556359 +8856000,imu,-0.20294292,0.18130802,-9.935158,-0.0012544555,-0.0072112177,0.0014717759 +8856000,mag,0.0077285618,-0.21298757,0.43000627 +8860000,imu,-0.23854968,0.17374197,-9.920294,-0.0030546943,-0.0051082755,0.0008763361 +8864000,imu,-0.2522807,0.15785055,-9.948658,-0.0033640945,-0.00338548,-0.0017833485 +8868000,mag,0.011622439,-0.21333763,0.43136907 +8868000,imu,-0.22700888,0.18494448,-9.935959,-0.0017233511,-0.0044184416,-0.0024223437 +8872000,imu,-0.24307066,0.2067398,-9.934803,0.00030270248,-0.0031312325,0.0006274184 +8876000,imu,-0.23446783,0.18448398,-9.950333,0.0006556488,-0.0076251538,-7.3287854e-05 +8880000,mag,0.012272163,-0.2112337,0.42583865 +8880000,imu,-0.22149271,0.14829646,-9.96747,-0.00037305738,-0.0074406294,-0.0036724154 +8884000,imu,-0.24579683,0.14920521,-9.95931,0.00016520602,-0.0058805114,-0.004372357 +8888000,imu,-0.24180064,0.18404287,-9.950375,-0.0027757348,-0.006273172,0.0008156995 +8892000,imu,-0.21161312,0.17739834,-9.954964,-0.0025984838,-0.005649564,0.005015662 +8892000,mag,0.009210977,-0.21161585,0.42218578 +8896000,imu,-0.1913442,0.16709757,-9.941168,-0.001633377,-0.0086711915,0.0029490243 +8900000,imu,-0.22382495,0.19533192,-9.949325,-0.002488457,-0.0085487785,0.00067900895 +8904000,baro,487.5488 +8904000,imu,-0.234253,0.19682619,-9.944995,-0.002531495,-0.00556589,0.0007227662 +8904000,mag,0.013442786,-0.2151616,0.42377713 +8908000,imu,-0.21283987,0.18271898,-9.948526,-3.850464e-05,-0.0035939484,0.00086580164 +8912000,imu,-0.2077516,0.17278722,-9.965139,0.0014251985,-0.00372288,-0.0013515237 +8916000,imu,-0.17788434,0.20074461,-9.93166,0.0017783523,-0.0061285566,-0.00085649884 +8916000,mag,0.01257499,-0.22027975,0.4285793 +8920000,imu,-0.17701146,0.18421511,-9.936378,0.0017117199,-0.0061507476,0.0019199342 +8924000,mag,0.010848969,-0.21935518,0.42303598 +8924000,imu,-0.20861039,0.18188253,-9.957861,-0.0015064988,-0.005851238,0.00091659534 +8928000,imu,-0.225243,0.2284703,-9.9345665,-0.0032303967,-0.0072715264,0.00052087 +8932000,imu,-0.24231851,0.2016382,-9.908703,-0.0047630803,-0.005979249,0.00015312829 +8936000,imu,-0.25472865,0.17877635,-9.926149,-0.00038336683,-0.0039367825,-0.0005071645 +8940000,landed,1.0 +8940000,mag,0.005903874,-0.21539679,0.43027005 +8940000,imu,-0.22749239,0.18778501,-9.974347,0.0032618174,-0.0030135566,-0.0003717173 +8944000,imu,-0.22122954,0.19674544,-9.946529,0.0017091562,-0.0054220306,-0.00069386535 +8948000,imu,-0.22189897,0.18770427,-9.905676,0.002434018,-0.0074336766,-0.00310289 +8952000,mag,0.0060458053,-0.21157858,0.43021575 +8952000,imu,-0.19327721,0.18896659,-9.908106,0.0005976216,-0.004528774,-0.0043589612 +8956000,imu,-0.19669235,0.20784481,-9.916495,1.702119e-07,-0.00031662037,0.0016918948 +8960000,imu,-0.20524368,0.19903433,-9.915811,0.00032319146,0.0011642902,0.0033187312 +8964000,mag,0.0008298372,-0.21942587,0.43639737 +8964000,imu,-0.17453991,0.17987582,-9.920904,-0.001339772,-0.0047097285,-0.0015405557 +8968000,imu,-0.17580938,0.18501121,-9.927315,-0.00020867473,-0.009253989,-0.003382572 +8972000,imu,-0.20816998,0.1695972,-9.939419,0.00018547346,-0.0078018885,-0.005334288 +8976000,mag,0.008864128,-0.21542254,0.43390277 +8976000,baro,487.638 +8976000,imu,-0.22270127,0.17937393,-9.945348,-0.00035807525,-0.008790385,-0.0024027238 +8980000,imu,-0.21842721,0.1955041,-9.932051,0.0012455463,-0.0081138285,7.9824546e-05 +8984000,imu,-0.20143762,0.18242438,-9.952908,0.0041572773,-0.007521672,-0.0021672284 +8984000,mag,0.008731498,-0.2131284,0.43065986 +8988000,imu,-0.20971394,0.16030514,-9.95168,0.004800455,-0.007775846,0.0015760767 +8992000,imu,-0.20949993,0.16296072,-9.945208,0.0015883734,-0.0067415643,0.0045181406 +8996000,imu,-0.19382562,0.1646889,-9.954876,-0.002487862,-0.0072277244,0.0055408413 +8996000,mag,0.005742313,-0.211406,0.42899543 +9000000,imu,-0.19919899,0.16606633,-9.965654,-0.0037257196,-0.0054144417,0.0040713255 +9004000,imu,-0.22076797,0.19457202,-9.926069,-0.0029419656,-0.00440467,0.0004677873 +9008000,imu,-0.22802827,0.19015788,-9.911301,-0.002256718,-0.007005855,-0.00012926699 +9012000,mag,0.0047280644,-0.22123708,0.43182808 +9012000,imu,-0.22181708,0.1833259,-9.969923,-0.0012937615,-0.010043613,-0.00080752023 +9016000,imu,-0.21144916,0.18856919,-9.951689,-0.0020808582,-0.012590561,-0.0013942978 +9020000,mag,0.014345695,-0.21713512,0.43159854 +9020000,imu,-0.18749869,0.22159196,-9.91374,0.00069804746,-0.008884123,0.00047098525 +9024000,imu,-0.21594827,0.22236432,-9.904007,0.0031332043,-0.0031201201,0.00072921003 +9028000,imu,-0.23861304,0.1860569,-9.932247,-0.0004765536,-0.0018381496,-0.0027965351 +9032000,imu,-0.20171122,0.1820591,-9.943027,-0.002918056,-0.0027423939,-0.0020851952 +9036000,mag,0.005963854,-0.2133521,0.43005073 +9036000,imu,-0.21050793,0.20880705,-9.924456,-0.0022318368,-0.00820501,0.0016750466 +9040000,imu,-0.22911975,0.21089686,-9.941855,0.0010744892,-0.007307201,-0.00028630233 +9044000,imu,-0.20065719,0.21446483,-9.943142,-0.00052417966,-0.004129288,0.00046976356 +9048000,mag,0.004183179,-0.21279843,0.43095025 +9048000,baro,487.6521 +9048000,imu,-0.1822238,0.21920434,-9.9309225,-0.0020762482,-0.0076340646,0.00094399136 +9052000,imu,-0.19165379,0.18204932,-9.90202,0.0018377338,-0.0075327866,-0.0008617168 +9056000,imu,-0.2016516,0.17279729,-9.889137,0.0017018903,-0.0062985984,-4.1147476e-05 +9060000,imu,-0.21823928,0.21218015,-9.901299,-0.0014176845,-0.006045025,0.00043079228 +9060000,mag,0.011621323,-0.21322793,0.4269502 +9064000,imu,-0.22112101,0.22019893,-9.894154,-0.0031778964,-0.0055278544,0.0014997671 +9068000,imu,-0.19770378,0.20239507,-9.917905,-0.0024734256,-0.0062890174,-0.0007356693 +9072000,mag,0.0051801396,-0.22017583,0.42928985 +9072000,imu,-0.21235272,0.2118767,-9.976605,-0.0024535204,-0.009513805,0.0004985662 +9076000,imu,-0.19875759,0.15280712,-9.977009,-0.003460788,-0.01086211,-0.00083434297 +9080000,imu,-0.17375281,0.13924453,-9.962906,-0.0026262423,-0.0065669776,-0.0033460006 +9084000,imu,-0.19610845,0.19098951,-9.9005165,-0.0035584928,-0.004421189,-0.0029715556 +9084000,mag,0.0056580165,-0.21504916,0.4284045 +9088000,imu,-0.2113174,0.18828887,-9.88645,-0.0020094453,-0.0062242555,-0.002150393 +9092000,imu,-0.19688334,0.19087274,-9.924288,0.0024513952,-0.0050643007,-0.00045229247 +9096000,mag,0.0143495705,-0.21693894,0.4267434 +9096000,imu,-0.24700238,0.18578894,-9.904083,0.0029963306,-0.005973429,0.00015884101 +9100000,imu,-0.23446845,0.18892045,-9.93502,0.0010247284,-0.0070272107,-0.00044546605 +9104000,imu,-0.15782064,0.21734595,-9.972784,-0.0031554278,-0.0064219865,-0.0012364998 +9108000,imu,-0.17287688,0.20186596,-9.977869,-0.0027803823,-0.008994339,-0.0016238872 +9108000,mag,0.0037113526,-0.2183114,0.4349893 +9112000,imu,-0.19751078,0.18379463,-9.99161,7.800297e-05,-0.007408757,-0.0002099 +9116000,imu,-0.2030257,0.16755249,-9.971617,-0.0020088581,-0.0038289535,0.00022735694 +9116000,mag,0.013147645,-0.21007486,0.43036908 +9116000,baro,487.638 +9120000,imu,-0.22399801,0.16089569,-9.927948,-0.0037514842,-0.0059317653,-0.0047234455 +9124000,imu,-0.23164445,0.18738261,-9.901083,-0.0007105276,-0.008347002,-0.004252854 +9128000,imu,-0.18922833,0.17847368,-9.920061,-0.0012186131,-0.0075514168,0.00079064287 +9132000,imu,-0.1953516,0.17693296,-9.941411,-0.0049212817,-0.005422677,0.0024242918 +9132000,mag,0.009916279,-0.21553765,0.42743355 +9136000,imu,-0.21031988,0.18261106,-9.904852,-0.0013567595,-0.0060582743,-0.0018720507 +9140000,imu,-0.20044275,0.17200132,-9.922741,0.0012860529,-0.007995342,-0.004168338 +9144000,imu,-0.19785798,0.15080424,-9.931866,-0.00010143167,-0.0060510365,0.0010518956 +9144000,mag,0.0113878725,-0.21465568,0.43315122 +9148000,imu,-0.18697885,0.15354966,-9.917091,-0.0014515156,-0.005315947,0.0013434576 +9152000,imu,-0.19413388,0.17032185,-9.915606,-0.0016684765,-0.008267789,-0.0011005105 +9156000,mag,0.008266816,-0.2170233,0.4275353 +9156000,imu,-0.21736273,0.1773408,-9.9209175,-0.0025732236,-0.008231824,-0.0019203695 +9160000,imu,-0.21450427,0.1585114,-9.962445,-0.0016192786,-0.006947452,-0.0026638112 +9164000,imu,-0.22193131,0.15702917,-9.965825,0.0010488343,-0.007108671,-0.0024638257 +9164000,mag,0.018163716,-0.21986338,0.42755246 +9168000,imu,-0.24357903,0.18795916,-9.95085,-0.001432595,-0.0048003336,-0.0014198717 +9172000,imu,-0.23587593,0.20425801,-9.953516,-0.0015680002,-0.0047247773,-0.00024961508 +9176000,imu,-0.23924561,0.19844273,-9.9251,-0.0015104304,-0.005673603,-0.0018246025 +9180000,imu,-0.22635949,0.18290086,-9.940713,-0.00050592574,-0.0058783926,-0.0038003284 +9180000,mag,0.009707198,-0.21371047,0.42864433 +9184000,imu,-0.2167731,0.17555557,-9.981528,-0.0019048429,-0.004705876,-0.0015606947 +9188000,imu,-0.21197057,0.185361,-9.948235,-0.004307784,-0.0029261133,-0.00019617214 +9192000,baro,487.60983 +9192000,imu,-0.17788075,0.18359214,-9.927965,-0.0014606894,-0.006065008,-0.002739631 +9192000,mag,0.0082461275,-0.21583498,0.42399874 +9196000,imu,-0.19391485,0.15543409,-9.956112,0.00061127846,-0.009102322,-0.0017977688 +9200000,imu,-0.23242748,0.17616571,-9.965649,-0.00038579592,-0.0053738835,-0.0015082238 +9204000,mag,0.009470274,-0.21699294,0.42578703 +9204000,imu,-0.24656747,0.18302636,-9.954814,-0.0050300444,-0.007546662,-0.0002867466 +9208000,imu,-0.2334944,0.16824168,-9.957228,-0.004183907,-0.010759044,-2.380741e-05 +9212000,imu,-0.19724646,0.17761253,-9.96077,-0.00223608,-0.007927215,-0.0006344046 +9216000,imu,-0.19307606,0.19396895,-9.94411,-0.003873045,-0.008655827,0.0012362978 +9216000,mag,0.014049369,-0.21721888,0.4256514 +9220000,imu,-0.18722507,0.19107282,-9.916796,-0.0020959515,-0.006929908,0.0007068206 +9224000,imu,-0.18158269,0.17429148,-9.912006,-0.0017895253,-0.002684166,0.0005243501 +9228000,imu,-0.19961604,0.18471685,-9.9278965,-0.002652098,-0.0037071246,0.00073085254 +9228000,mag,0.009630457,-0.21853592,0.42978805 +9232000,imu,-0.20115286,0.18297732,-9.949856,-0.0024386814,-0.008315027,-1.3114114e-05 +9236000,imu,-0.20774871,0.1644842,-9.971962,-0.0036824485,-0.0072089727,0.00015032403 +9240000,imu,-0.228303,0.17487393,-9.950543,-0.0013364048,-0.003425527,-0.0003170394 +9240000,mag,0.0055058682,-0.21848275,0.42996687 +9244000,imu,-0.2174332,0.20761804,-9.923424,-0.0004390184,-0.0032282404,-0.00022181754 +9248000,imu,-0.1948418,0.1993635,-9.957388,-0.0011402485,-0.00498763,-0.00029312304 +9252000,mag,0.012460275,-0.21426083,0.42425996 +9252000,gps,488091.0,85456075.0,473977508.0,0.02,0.01,0.0 +9252000,imu,-0.20518026,0.17015833,-9.965229,0.00047203474,-0.0048441943,0.00041338833 +9256000,imu,-0.22514674,0.1822388,-9.952558,-0.0012313906,-0.0032742885,-0.0006040199 +9260000,imu,-0.24108626,0.19343045,-9.982506,-0.0014975938,-0.0029239764,-0.0026402576 +9264000,imu,-0.21213526,0.1970042,-9.978793,-0.0012957423,-0.0049154437,-0.0002666975 +9264000,mag,0.009515884,-0.21241695,0.43153787 +9264000,baro,487.62863 +9268000,imu,-0.21450916,0.18285094,-9.947113,-0.0010116901,-0.0062436187,0.0025073122 +9272000,imu,-0.21820833,0.152959,-9.951302,-0.0029488779,-0.0062794606,0.002020347 +9276000,mag,0.0092701325,-0.21393126,0.4326535 +9276000,imu,-0.20871146,0.17210679,-9.927023,-0.0019435156,-0.00711418,-0.0015963741 +9280000,imu,-0.2114045,0.19755702,-9.903915,0.0019687433,-0.0074673924,-0.003487709 +9284000,imu,-0.21091455,0.18277791,-9.951009,-0.0007428415,-0.0062606116,-0.0022355353 +9288000,mag,0.01215826,-0.21914543,0.4305846 +9288000,imu,-0.20213121,0.17764139,-9.960876,-0.0023304494,-0.0033938922,-0.00056415866 +9292000,imu,-0.18960875,0.18288219,-9.915146,-0.0020271149,-0.004561097,0.0007585157 +9296000,imu,-0.21578884,0.17861506,-9.923218,-0.0031977363,-0.007361688,0.001698084 +9300000,imu,-0.24521378,0.1776658,-9.952475,-0.0030436432,-0.0071866973,0.00022043637 +9300000,mag,0.015469066,-0.21431129,0.4272822 +9304000,imu,-0.23815158,0.17704748,-9.946615,-0.0020505418,-0.0070872214,-0.0017193694 +9308000,imu,-0.2271728,0.2045347,-9.919499,-0.0018678622,-0.005281504,-0.0005978879 +9312000,imu,-0.19236843,0.19954522,-9.911272,-0.0021959166,-0.0020327284,-0.00088436715 +9312000,mag,0.0073864986,-0.21380872,0.43207285 +9316000,imu,-0.18454474,0.16464265,-9.958264,-0.002017514,-0.005462992,-0.0022075712 +9320000,imu,-0.1955532,0.17668271,-9.982077,-0.0003299692,-0.009210567,-0.0015504722 +9324000,imu,-0.17954513,0.17353006,-9.937011,0.0018767505,-0.008702817,-0.002086931 +9324000,mag,0.005625352,-0.2172346,0.4347466 +9328000,imu,-0.17481163,0.17261826,-9.9223995,0.004069299,-0.005355717,-0.0039617713 +9332000,imu,-0.17349744,0.16875434,-9.948214,0.0037259383,-0.0038838747,-0.0020070344 +9336000,imu,-0.19599922,0.16269012,-9.961282,0.0026442853,-0.0050423373,0.0015401335 +9336000,baro,487.6333 +9336000,mag,0.011376309,-0.21593036,0.4281569 +9340000,imu,-0.21550246,0.19084063,-9.969261,-0.0024391494,-0.0017523823,0.00034948773 +9344000,imu,-0.19079842,0.18911761,-9.983667,-0.005039803,-0.0027963351,0.00011211039 +9348000,imu,-0.15908135,0.1692941,-9.988503,-0.0016682824,-0.0043934993,-0.00023371037 +9348000,mag,0.004163637,-0.21740654,0.43926975 +9352000,imu,-0.16874626,0.1708454,-9.9904,-0.002854557,-0.002219759,-0.0034731312 +9356000,imu,-0.17871584,0.18676424,-9.962695,-0.0034270405,-0.0013970176,-0.0036169987 +9360000,mag,0.0076413075,-0.21570404,0.42604914 +9360000,imu,-0.21393132,0.17477727,-9.944052,-0.0026297742,-0.003520149,-0.0031595235 +9364000,imu,-0.22619532,0.1733198,-9.939939,-0.003822502,-0.004051763,-0.00079504255 +9368000,imu,-0.19647163,0.19831942,-9.918202,0.0008784153,-0.002917821,-0.0008169952 +9372000,imu,-0.1954052,0.18706751,-9.93351,0.0027697517,-0.005397522,-0.0038636127 +9372000,mag,0.013099462,-0.21661869,0.42566577 +9376000,imu,-0.235719,0.18016256,-9.953224,-0.0012929786,-0.006550602,-0.00054803997 +9380000,imu,-0.23114428,0.21154347,-9.974699,-0.0019048357,-0.0032848248,-0.0007414637 +9384000,imu,-0.212774,0.19510134,-9.96748,-0.0029589266,5.087161e-05,-0.0028542278 +9384000,mag,0.011464764,-0.22054891,0.4190349 +9388000,imu,-0.19652957,0.17532305,-9.925975,-0.0036106408,-0.0034423934,-7.3847994e-05 +9392000,imu,-0.19404444,0.18183579,-9.934952,-0.0010505653,-0.005948143,0.0014415141 +9396000,mag,0.014238383,-0.21415299,0.42946637 +9396000,imu,-0.23139119,0.18145515,-9.956219,-0.003027555,-0.0069824248,0.00017412109 +9400000,imu,-0.22839266,0.17469549,-9.946455,-0.0039973482,-0.008486729,-0.00080419885 +9404000,imu,-0.22513425,0.18916667,-9.908983,-8.481341e-05,-0.0057971673,0.0008296865 +9408000,baro,487.6427 +9408000,imu,-0.23414439,0.20777172,-9.87141,0.0011533797,-0.005615873,-0.0006214687 +9408000,mag,0.012134035,-0.21577623,0.43713993 +9412000,imu,-0.2134235,0.21004307,-9.906782,0.0024474484,-0.008727046,-0.0005135021 +9416000,imu,-0.2062485,0.18409063,-9.963002,0.00070271804,-0.008424895,0.0018010836 +9420000,mag,0.009955749,-0.21600822,0.42551568 +9420000,imu,-0.18560182,0.16411921,-9.962175,-0.0037750048,-0.0064034783,0.00060582167 +9424000,imu,-0.17421913,0.18364759,-9.957819,-0.006053074,-0.006225865,-0.0001875106 +9428000,imu,-0.19138047,0.17991492,-9.944773,-0.0055673816,-0.0065599973,0.0004966398 +9432000,imu,-0.17735368,0.17737894,-9.918011,-0.0014330182,-0.008440031,0.0011282446 +9432000,mag,0.009756945,-0.21764173,0.4244827 +9436000,imu,-0.20022239,0.17025317,-9.927531,-0.002512396,-0.0045218687,0.0008684689 +9440000,imu,-0.23864603,0.17205922,-9.910167,-0.004827021,-0.0048554935,-5.6758632e-05 +9444000,imu,-0.21443328,0.21366993,-9.923081,-0.0042617577,-0.0088846935,-0.00077533873 +9444000,mag,0.0133570805,-0.22358854,0.4369646 +9448000,imu,-0.20421928,0.20981173,-9.946209,-0.0029130834,-0.007680792,0.0011169302 +9452000,imu,-0.21624696,0.16369879,-9.911678,-0.0018407456,-0.0053621195,0.00058109657 +9456000,mag,0.011858066,-0.21946412,0.4328256 +9456000,imu,-0.2044388,0.16783917,-9.91782,0.00021313467,-0.003644168,-0.0014761939 +9460000,imu,-0.19690561,0.1756138,-9.959998,0.0008617654,-0.0053671636,-0.00276519 +9464000,imu,-0.20191166,0.1757986,-9.928338,-0.00036352046,-0.005279823,-0.0025409015 +9468000,mag,0.010309249,-0.21281476,0.4296729 +9468000,imu,-0.22110996,0.19410655,-9.911222,0.0007724775,-0.00365826,-0.00068330334 +9472000,imu,-0.23191038,0.18923484,-9.923842,-0.00071180507,-0.0046623726,-0.00022310091 +9476000,imu,-0.2496209,0.17686614,-9.9081745,-0.0015766122,-0.007368333,0.00077920104 +9480000,mag,0.0127768135,-0.21790498,0.4309483 +9480000,baro,487.59576 +9480000,imu,-0.23608088,0.1611495,-9.91049,-0.0019784982,-0.006117471,0.0021499826 +9484000,imu,-0.2162798,0.18471342,-9.879946,-0.0023343754,-0.0050841505,-0.00030195934 +9488000,imu,-0.21460125,0.22860362,-9.895085,-0.0009402835,-0.004306116,-0.00092996936 +9492000,imu,-0.19593866,0.2121008,-9.955124,-0.00096937857,-0.0007894317,0.0008125518 +9492000,mag,0.009973595,-0.21325225,0.4284906 +9496000,imu,-0.22531644,0.18895748,-9.96958,-0.0008120276,-0.001750365,-0.0003092578 +9500000,imu,-0.2706794,0.17198624,-9.942799,-0.00042484794,-0.0043615606,0.0025879103 +9504000,imu,-0.24508749,0.17372239,-9.916643,-0.001893048,-0.0071079256,0.0050005857 +9504000,mag,0.009525194,-0.21171428,0.43041763 +9508000,imu,-0.18710712,0.20405635,-9.905982,-0.0019406532,-0.009886794,0.0021124296 +9512000,imu,-0.18364577,0.22521889,-9.925679,0.002274404,-0.008032015,-0.0019840864 +9516000,imu,-0.21104619,0.19225954,-9.940865,0.0026035311,-0.006580223,-0.0012966022 +9516000,mag,0.008452319,-0.21869968,0.42534783 +9520000,imu,-0.21592885,0.17355733,-9.926174,-0.00083653035,-0.0051261038,0.0016226603 +9524000,imu,-0.21513143,0.20569405,-9.927528,0.00067300233,-0.004090068,-0.0006509519 +9528000,mag,0.01261953,-0.20948035,0.42830583 +9528000,imu,-0.2042687,0.19365638,-9.916404,0.0022846886,-0.007558119,-0.00407201 +9532000,imu,-0.1938923,0.17857581,-9.931231,0.00060455175,-0.0064626765,-0.0028851288 +9536000,imu,-0.1757583,0.18793012,-9.953667,0.0021352377,-0.0065912707,0.00031293562 +9540000,imu,-0.16756798,0.1776657,-9.943201,0.0009975435,-0.007142898,0.0027076628 +9540000,mag,0.01119881,-0.21553777,0.43375242 +9544000,imu,-0.16767542,0.1703858,-9.958262,-0.00084228447,-0.0026679307,0.0012258859 +9548000,imu,-0.18052882,0.1898174,-9.94813,-0.002939622,0.0008848782,0.00028152225 +9552000,mag,0.013041337,-0.21781628,0.4271996 +9552000,baro,487.67557 +9552000,imu,-0.21708149,0.18866287,-9.935124,-0.003515953,-0.0035805812,0.00065399014 +9556000,imu,-0.22554868,0.16948782,-9.939486,0.00070191646,-0.008085371,0.00018341688 +9560000,imu,-0.20214126,0.18467161,-9.951037,-0.0032762606,-0.0038918043,0.00090238685 +9564000,mag,0.004111005,-0.21328507,0.43359435 +9564000,imu,-0.17392686,0.20636037,-9.966043,-0.0055038496,-0.007255556,0.0011347996 +9568000,imu,-0.20186588,0.2042961,-9.9384575,-0.0038222314,-0.009864036,-0.00089194905 +9572000,imu,-0.2313931,0.19852903,-9.921282,-0.0028326206,-0.00881297,-0.002098249 +9576000,mag,0.011857556,-0.21425699,0.42266014 +9576000,imu,-0.21855286,0.18445152,-9.952067,0.00039014858,-0.009148944,0.00029297438 +9580000,imu,-0.22695854,0.16805737,-9.96635,0.000693676,-0.006874083,-0.0019890692 +9584000,imu,-0.21461815,0.17205179,-9.9557705,-0.00065170537,-0.0046552327,-0.005080711 +9588000,imu,-0.17487463,0.15288033,-9.931759,-0.0015022196,-0.005411672,-0.0022633115 +9588000,mag,0.011087217,-0.21916498,0.42856148 +9592000,imu,-0.17753974,0.1613326,-9.9487295,-0.0036431327,-0.005859894,0.002420774 +9596000,imu,-0.21468258,0.18602505,-9.985405,-0.004727657,-0.0031380903,0.0012144659 +9600000,mag,0.0036688745,-0.21934383,0.42675108 +9600000,imu,-0.20999888,0.17104599,-9.936885,-0.00261844,-0.0037084583,-0.0029050459 +9604000,imu,-0.20930645,0.1592243,-9.919584,0.00031002794,-0.006040568,-0.002564694 +9608000,imu,-0.18289486,0.17916705,-9.951897,0.00014938318,-0.0064974986,-0.0010356377 +9612000,imu,-0.1491026,0.20601675,-9.955729,-0.0006123064,-0.0059658056,-0.0001338499 +9612000,mag,0.005871229,-0.21667826,0.428147 +9616000,imu,-0.20402756,0.21637186,-9.948509,-0.0024609095,-0.006836288,-0.0017872646 +9620000,imu,-0.21947922,0.21222448,-9.936547,-0.003579353,-0.00710441,-0.0016276715 +9624000,baro,487.57227 +9624000,imu,-0.17943795,0.19256864,-9.910319,-0.0013947943,-0.007831904,0.0010483621 +9624000,mag,0.008659473,-0.21485057,0.43263367 +9628000,imu,-0.18953364,0.20091286,-9.910616,0.00014281113,-0.0073782033,0.00086526724 +9632000,imu,-0.21142343,0.198417,-9.938112,0.0003948632,-0.0054761283,-0.00073314604 +9636000,imu,-0.2011837,0.20288315,-9.962192,-0.00023403426,-0.006049937,-0.001909958 +9636000,mag,0.016142538,-0.21458988,0.42560595 +9640000,imu,-0.200649,0.19376598,-9.945011,0.00090357615,-0.008303934,-0.002629668 +9644000,imu,-0.20331013,0.17922914,-9.940888,-0.0008533765,-0.008660854,-0.0020454414 +9648000,mag,0.006883584,-0.21330212,0.4286511 +9648000,imu,-0.22412814,0.2042625,-9.913541,-0.0007804377,-0.008374127,-0.0013872756 +9652000,gps,488096.0,85456074.0,473977508.0,0.0,0.0,0.02 +9652000,imu,-0.23013823,0.20580193,-9.865835,0.00077014713,-0.0080956,0.0018985525 +9656000,imu,-0.20319435,0.21203735,-9.919846,-0.00034668282,-0.0072114863,0.0042812116 +9660000,imu,-0.19434348,0.17293611,-9.934835,0.0011047604,-0.0060520926,0.00059286 +9660000,mag,0.005772665,-0.21092609,0.43486962 +9664000,imu,-0.20135468,0.13383348,-9.920332,0.0021740084,-0.006052885,-0.0011687035 +9668000,imu,-0.20433763,0.1692165,-9.945638,0.0025212544,-0.00584454,0.0006688055 +9672000,imu,-0.17234269,0.17297623,-9.975313,0.000104847924,-0.006665857,0.0011329902 +9672000,mag,0.014422075,-0.21342343,0.42769885 +9676000,imu,-0.14525369,0.17652655,-9.984358,-0.0015907598,-0.008084299,-0.0015530586 +9680000,imu,-0.18223119,0.20867874,-9.94582,-0.0007786664,-0.0075831423,-0.002705029 +9684000,imu,-0.20523396,0.18715389,-9.904423,-9.672212e-05,-0.009467644,-0.002809206 +9684000,mag,0.007994325,-0.2163551,0.43111533 +9688000,imu,-0.19715074,0.18241073,-9.922957,8.609451e-06,-0.0067469208,0.0011201305 +9692000,imu,-0.19668442,0.19726989,-9.916495,-0.0018998098,-0.007040113,-0.0016623853 +9696000,mag,0.011264689,-0.21473199,0.43059456 +9696000,baro,487.58636 +9696000,imu,-0.18037128,0.19347759,-9.914963,-0.0034723838,-0.007951626,-0.006929399 +9700000,imu,-0.17260608,0.19848564,-9.958155,-0.0002773233,-0.0047743497,-0.0056734853 +9704000,imu,-0.22580096,0.17103326,-9.96368,0.0016649781,-0.0034446153,-0.0011132311 +9708000,imu,-0.2364974,0.13211918,-9.92383,-0.00027487476,-0.0038059046,0.004446779 +9708000,mag,0.011367294,-0.21414542,0.42834607 +9712000,imu,-0.18202858,0.14049345,-9.927439,-0.00085888867,-0.0057527814,0.0019121887 +9716000,imu,-0.20233478,0.14708948,-9.93349,-0.0009250065,-0.0051970356,0.00036532967 +9720000,imu,-0.20944491,0.15084429,-9.907367,-0.00534474,-0.007880854,-0.0006725717 +9720000,mag,0.013389428,-0.21846844,0.4325542 +9724000,imu,-0.17134356,0.17059399,-9.9386835,-0.0035936811,-0.008090568,-0.0034557034 +9728000,imu,-0.16403374,0.14961518,-9.936632,-0.0017785449,-0.0053629093,-0.00021429232 +9732000,mag,0.011407772,-0.21719332,0.43348867 +9732000,imu,-0.18205258,0.13517846,-9.906616,-0.004702554,-0.006142217,0.0012294013 +9736000,imu,-0.20957595,0.16343808,-9.913458,-0.003487498,-0.005906939,-4.2662923e-05 +9740000,imu,-0.22840811,0.18007955,-9.920557,-0.0042860685,-0.0060240184,0.0003309731 +9744000,imu,-0.21408,0.18255219,-9.920853,-0.0025549727,-0.0064584636,-0.0024750738 +9744000,mag,0.006430174,-0.21740162,0.42934692 +9748000,imu,-0.18228199,0.20122205,-9.939379,0.0018680075,-0.004391119,-0.0025363318 +9752000,imu,-0.18408926,0.22456847,-9.954427,0.0006144427,-0.0023050176,-0.0012854171 +9756000,mag,0.008177272,-0.21247947,0.4348474 +9756000,imu,-0.16923034,0.18044925,-9.9324045,-7.57174e-05,-0.0022028289,-0.0025295152 +9760000,imu,-0.20857337,0.18437906,-9.922365,-0.0009829549,-0.0025910698,-0.0023418863 +9764000,imu,-0.2506902,0.19681191,-9.944697,-0.00059854053,-0.004948102,-0.004106424 +9768000,imu,-0.22452998,0.15109897,-9.925939,0.0044753314,-0.004949371,-0.004091693 +9768000,baro,487.60983 +9768000,mag,0.013984711,-0.2189577,0.43206114 +9772000,imu,-0.1819115,0.16210327,-9.938308,0.004173875,-0.002014962,-0.0010222016 +9776000,imu,-0.18040466,0.15479927,-9.958435,0.00048596252,-0.003892061,-0.0011195753 +9780000,mag,0.01354153,-0.22050881,0.42644653 +9780000,imu,-0.18978167,0.14034384,-9.946377,0.0005213715,-0.0059461542,-0.0012639733 +9784000,imu,-0.19884364,0.14040415,-9.926947,1.4373166e-05,-0.0032938444,-0.0003791348 +9788000,imu,-0.22227381,0.1315664,-9.908016,-0.0023268398,-0.0012210319,0.0018060778 +9792000,mag,0.011632522,-0.21500114,0.42948186 +9792000,imu,-0.20582633,0.16541344,-9.922327,0.00041094777,-0.00404663,0.0022690156 +9796000,imu,-0.18481587,0.20167741,-9.934277,0.0032478562,-0.007327839,-0.00040307548 +9800000,imu,-0.18507089,0.20886238,-9.931937,0.0010536237,-0.0075701093,-0.0008050622 +9804000,imu,-0.17350028,0.19087395,-9.920118,-0.0006012597,-0.0063707223,0.002638471 +9804000,mag,0.010898302,-0.2132791,0.43476442 +9808000,imu,-0.19364434,0.16818507,-9.922376,0.00060107146,-0.0037678096,0.0003365303 +9812000,imu,-0.2406883,0.18892595,-9.932949,0.0010309529,-0.004293232,0.00031496247 +9816000,imu,-0.21071842,0.20597747,-9.932575,0.0020819064,-0.005497354,0.003868085 +9816000,mag,0.008609026,-0.22013344,0.42605865 +9820000,imu,-0.19686563,0.19745903,-9.912636,0.0011389678,-0.0060573043,0.003352529 +9824000,imu,-0.2152631,0.17583592,-9.90938,-0.0010412383,-0.001322278,0.0012652206 +9828000,mag,0.014709785,-0.21499605,0.42594764 +9828000,imu,-0.20075592,0.17682698,-9.913111,-0.001836577,0.0012770931,0.00014825331 +9832000,imu,-0.20592007,0.19693555,-9.931574,-0.00011445393,-0.0037083002,0.0006160222 +9836000,imu,-0.20820352,0.18646654,-9.959241,-0.00052266626,-0.006668029,-0.00054397836 +9840000,baro,487.67087 +9840000,imu,-0.19525075,0.19144794,-9.946026,-0.0047238357,-0.0063764397,-0.0015267201 +9840000,mag,0.011700787,-0.21260758,0.41876045 +9844000,imu,-0.19029537,0.20569053,-9.928687,-0.003806028,-0.0058902,0.002307958 +9848000,imu,-0.19203122,0.19924091,-9.937193,-0.0010455945,-0.007076826,0.0032823829 +9852000,imu,-0.2033268,0.18044631,-9.939264,0.00018032966,-0.00522659,-0.0014473717 +9852000,mag,0.012083783,-0.21376052,0.4316442 +9856000,imu,-0.18919322,0.13491759,-9.922191,-7.060808e-05,-0.004305322,-0.002680554 +9860000,imu,-0.19471751,0.147472,-9.923006,-0.00135051,-0.0055247736,0.00038142074 +9864000,mag,0.012284529,-0.21536846,0.43269205 +9864000,imu,-0.18953294,0.18413728,-9.964089,-0.0010569596,-0.0043554613,0.0035643207 +9868000,imu,-0.16819367,0.1915303,-9.9425335,0.0010283119,-0.0045756362,0.0019362817 +9872000,imu,-0.20648307,0.18926074,-9.879061,0.0013706286,-0.008661159,-0.001485225 +9876000,imu,-0.23065239,0.18712936,-9.896866,-0.0010155934,-0.009613686,-0.00089202536 +9876000,mag,0.00824219,-0.21676081,0.43092972 +9880000,imu,-0.22008467,0.21028443,-9.927826,-0.0011665843,-0.004778782,0.00092998345 +9884000,imu,-0.22870928,0.20616648,-9.927841,-0.000678376,-0.003581871,0.000392215 +9888000,imu,-0.2063348,0.20754026,-9.938286,0.00047832253,-0.0053299707,0.00017146427 +9888000,mag,0.002818243,-0.21342185,0.43027037 +9892000,imu,-0.20324984,0.22037984,-9.946889,0.0011006073,-0.008452686,0.0011974787 +9896000,imu,-0.22842233,0.18043038,-9.912962,0.0016011425,-0.007563416,0.0039978796 +9900000,mag,0.005411583,-0.21135935,0.41993302 +9900000,imu,-0.23939165,0.13291223,-9.89925,0.00027391035,-0.006359938,-0.00042189614 +9904000,imu,-0.21780163,0.11921242,-9.90382,0.0010859246,-0.009720879,-0.003929861 +9908000,imu,-0.19388679,0.17231067,-9.924278,0.0011870639,-0.0096310675,0.0011729489 +9912000,mag,0.013810991,-0.21669254,0.4260615 +9912000,baro,487.60043 +9912000,imu,-0.19421896,0.23046239,-9.952909,-0.0011755342,-0.0065963697,0.0017427346 +9916000,imu,-0.21174625,0.21451981,-9.943444,-0.00067929155,-0.0031661587,-0.0002701138 +9920000,imu,-0.21840835,0.20867705,-9.911795,-0.00026136776,-0.005180145,-0.0005929272 +9924000,mag,0.0077216695,-0.21421508,0.43193066 +9924000,imu,-0.18689196,0.18837678,-9.945305,0.0010092683,-0.0076862406,-7.855274e-05 +9928000,imu,-0.1925157,0.16443034,-9.971327,-0.0022725055,-0.008781712,-0.0024463537 +9932000,imu,-0.22572033,0.1681068,-9.960421,-0.0049145967,-0.0074920706,-0.002678123 +9936000,mag,0.009251452,-0.21471639,0.4327035 +9936000,imu,-0.21432523,0.15049005,-9.964462,-0.001970878,-0.0071170023,0.0009811176 +9940000,imu,-0.1963703,0.15018344,-9.93038,-0.00020548579,-0.0062397635,-0.0007798928 +9940000,landed,1.0 +9944000,imu,-0.20462221,0.16200805,-9.912542,0.0005643949,-0.0035282243,-0.004939236 +9948000,imu,-0.23327777,0.183998,-9.932602,0.0009878144,-0.007659367,-0.0028623522 +9948000,mag,0.0068723755,-0.21421942,0.43420961 +9952000,imu,-0.22667927,0.17188108,-9.9374895,-0.001021894,-0.00622575,0.0023460286 +9956000,imu,-0.22790188,0.15961038,-9.916172,-0.0018408826,-0.004257983,0.0034785788 +9960000,mag,0.010937234,-0.2185248,0.42673874 +9960000,imu,-0.21828817,0.15507434,-9.922686,-0.0017131915,-0.008579142,0.00044557176 +9964000,imu,-0.18767068,0.18146817,-9.929902,-0.0023379393,-0.0076131737,-0.00072339195 +9968000,imu,-0.19815585,0.20433018,-9.937769,-0.0007789962,-0.0039022665,-0.0007389257 +9972000,imu,-0.21527423,0.17244989,-9.950176,-0.0024630208,-0.0048713614,-0.00057791296 +9972000,mag,0.008630565,-0.21698307,0.4289695 +9976000,imu,-0.22429496,0.17830324,-9.933882,-0.002597905,-0.0055466667,0.0037664734 +9980000,imu,-0.20379448,0.18851772,-9.909809,-0.0018667867,-0.005281487,0.0021801132 +9984000,mag,0.009630199,-0.21517156,0.42568576 +9984000,baro,487.6568 +9984000,imu,-0.2149913,0.19768743,-9.919413,-0.004427296,-0.007066436,0.00010400101 +9988000,imu,-0.21431243,0.1955693,-9.937063,-0.0025494797,-0.008905454,-0.0009914972 +9992000,imu,-0.21414101,0.17527129,-9.950722,-0.0010438538,-0.0082607465,-0.0034838365 +9996000,mag,0.007910828,-0.21687053,0.4338262 +9996000,imu,-0.23628758,0.16038784,-9.9180565,-0.0044313343,-0.005553646,-0.0024777155 +10000000,imu,-0.2199179,0.15487391,-9.886799,-0.003106483,-0.0049082916,-3.9661172e-05 +10004000,imu,-0.22297397,0.16208561,-9.929337,0.0003988645,-0.004810129,0.001937253 +10008000,mag,0.0050534136,-0.21484457,0.42785022 +10008000,imu,-0.21314213,0.1688715,-9.9561825,-0.003460768,-0.005152146,-0.0015737085 +10012000,imu,-0.18710044,0.18034683,-9.947453,-0.00087674643,-0.007115865,-0.0046547954 +10016000,imu,-0.21146207,0.18837333,-9.980258,4.7565254e-06,-0.0073613306,-0.0014894914 +10020000,imu,-0.22597152,0.19630085,-9.952145,-0.0005204782,-0.0073598805,-0.0013372211 +10020000,mag,0.0154107725,-0.2184684,0.4285997 +10024000,imu,-0.2186945,0.20092219,-9.8917675,5.0895895e-05,-0.0070759016,-0.0018737585 +10028000,imu,-0.2175186,0.15369055,-9.9163265,-0.0020712346,-0.007396949,-0.0008050777 +10032000,mag,0.010689717,-0.21496466,0.4214692 +10032000,imu,-0.21701264,0.12443542,-9.9168,0.0025619452,-0.00867263,-0.0010621835 +10036000,imu,-0.20447838,0.1628061,-9.932079,0.0022680582,-0.0072115427,-0.0006933229 +10040000,imu,-0.17146572,0.19975367,-9.94883,-0.0014666265,-0.009583436,-0.0014007327 +10044000,mag,0.006884124,-0.2162225,0.42872414 +10044000,imu,-0.1694388,0.21288878,-9.936709,-0.002149239,-0.010439922,-0.0038088204 +10048000,imu,-0.20337835,0.20901337,-9.924721,-0.0026961756,-0.007949775,-0.0018959943 +10052000,gps,488097.0,85456074.0,473977508.0,0.01,-0.02,0.01 +10052000,imu,-0.20014851,0.1977037,-9.937068,0.0011402109,-0.0065018623,0.00013604123 +10056000,imu,-0.23234752,0.17656271,-9.937754,0.0033295713,-0.007565192,0.0007112863 +10056000,baro,487.61923 +10056000,mag,0.009201232,-0.20769489,0.43394262 +10060000,imu,-0.24647757,0.16543709,-9.90045,-0.0008716708,-0.0076972046,0.0012648688 +10064000,imu,-0.24423993,0.1507266,-9.889423,-0.002253198,-0.003332586,0.0006659236 +10068000,imu,-0.25328377,0.15550865,-9.91798,0.0007481919,9.9256344e-05,0.0011840693 +10068000,mag,0.015851833,-0.21232027,0.42550218 +10072000,imu,-0.22157821,0.18044305,-9.921855,-0.00026881573,0.00025023764,-0.00078808836 +10076000,imu,-0.24281584,0.17995846,-9.924469,-0.00037208784,-0.0022953774,-0.0023281884 +10080000,imu,-0.23715974,0.18764648,-9.937789,-0.0010846795,-0.004093946,-0.00092131516 +10080000,mag,0.011646448,-0.21607211,0.43655756 +10084000,imu,-0.19148904,0.19218762,-9.911741,-0.0035357648,-0.004676607,0.00075192744 +10088000,imu,-0.19472344,0.18948105,-9.911882,-0.0012522679,-0.005370577,0.0008742797 +10092000,imu,-0.2164863,0.17324509,-9.9308,-0.0016899875,-0.0064249495,0.00106434 +10092000,mag,0.0117781265,-0.21870218,0.42737654 +10096000,imu,-0.23105216,0.16064121,-9.951516,-0.0002559001,-0.0070269434,-0.0010686836 +10100000,imu,-0.22582416,0.17430922,-9.962385,0.00025167395,-0.005636529,-0.0025538607 +10104000,imu,-0.20378017,0.17907809,-9.9391,-0.00340969,-0.006694541,-0.0010744696 +10104000,mag,0.0066113938,-0.21582486,0.43454847 +10108000,imu,-0.19475213,0.17078276,-9.920965,-0.0055821007,-0.005270143,0.0012176845 +10112000,imu,-0.19219363,0.16774747,-9.931244,-0.004446554,-0.0038831166,-1.7220576e-05 +10116000,mag,0.003383354,-0.22117333,0.4307146 +10116000,imu,-0.21627459,0.17914714,-9.956526,-0.0026242968,-0.007238358,-0.0009128881 +10120000,imu,-0.24803324,0.19170351,-9.945611,-0.0044750287,-0.0064929365,-7.867359e-05 +10124000,imu,-0.21670377,0.1906658,-9.934368,-0.0046580043,-0.0065572853,0.0013161121 +10128000,imu,-0.20502338,0.19196512,-9.947052,-0.00070241967,-0.0081800455,0.003772713 +10128000,baro,487.69904 +10128000,mag,0.0054794764,-0.21330757,0.42919058 +10132000,imu,-0.21383548,0.17504995,-9.950081,-0.0017507314,-0.0068005915,0.003256099 +10136000,imu,-0.20114575,0.18251875,-9.945841,-0.0031974306,-0.005761023,0.0025775463 +10140000,mag,0.01264192,-0.21101409,0.42825955 +10140000,imu,-0.19623528,0.16686742,-9.939762,-0.0037965558,-0.0059100646,0.00061602873 +10144000,imu,-0.15947841,0.14877772,-9.924183,-0.002137752,-0.0059916135,0.00028346427 +10148000,imu,-0.12743464,0.17079796,-9.914921,-0.00091593084,-0.006855895,0.0019883346 +10152000,mag,0.0040747914,-0.21243468,0.43201995 +10152000,imu,-0.1640304,0.21534593,-9.923233,-0.0032335988,-0.009824697,0.0012332273 +10156000,imu,-0.19290209,0.2408498,-9.9364395,-0.0031360197,-0.008018179,-0.000114708324 +10160000,imu,-0.17429739,0.19698863,-9.909726,-0.0028249728,-0.0050276057,-0.0012670119 +10164000,imu,-0.15884072,0.17368677,-9.917981,-0.002860931,-0.008826315,-0.002955505 +10164000,mag,0.0074180835,-0.21354556,0.43932894 +10168000,imu,-0.15823206,0.16832708,-9.947428,-0.003098963,-0.0073116645,-0.006157016 +10172000,imu,-0.17847297,0.17100583,-9.939404,-0.0017494126,-0.004515889,-0.003674122 +10176000,imu,-0.19146748,0.18426052,-9.916712,0.0011853214,-0.006069813,0.00056462304 +10176000,mag,0.01193365,-0.2140591,0.42809433 +10180000,imu,-0.19878708,0.17892878,-9.872545,0.0028433655,-0.006030212,-0.00074084837 +10184000,imu,-0.21332686,0.17136478,-9.900875,0.0023704495,-0.0047448548,-0.0031035834 +10188000,imu,-0.20962614,0.16729677,-9.937754,0.0023700162,-0.0046949494,0.00035520334 +10188000,mag,0.009728077,-0.22088033,0.4304543 +10192000,imu,-0.22733864,0.18415605,-9.942641,-0.00129991,-0.0074863858,0.0027642706 +10196000,imu,-0.25307208,0.20339324,-9.927525,-0.0028704803,-0.0076468876,-0.00042001525 +10200000,imu,-0.24608743,0.19764951,-9.9638195,9.347552e-05,-0.0050240555,-0.00066418166 +10200000,baro,487.5535 +10200000,mag,0.0071177594,-0.21589054,0.4315999 +10204000,imu,-0.22981972,0.18302695,-9.988724,2.2451264e-05,-0.0035508275,0.00080882694 +10208000,imu,-0.22182396,0.15795538,-9.927095,-0.0017755252,-0.0059273723,0.00013452592 +10212000,imu,-0.20450757,0.18075126,-9.926549,-0.0032795095,-0.0068024867,-0.000505894 +10212000,mag,0.01089025,-0.2186198,0.42892894 +10216000,imu,-0.21213523,0.20193297,-9.930984,-0.002501376,-0.0070926454,-0.0012146411 +10220000,imu,-0.22236893,0.17362171,-9.912977,-0.00044847158,-0.0060450365,-0.0002378231 +10220000,mag,0.013478047,-0.21629463,0.42967916 +10224000,imu,-0.2133699,0.15728156,-9.910259,-0.0014842928,-0.0040231375,-5.9711183e-05 +10228000,imu,-0.23615497,0.17311911,-9.931092,-0.0025649287,-0.0026416173,-0.0022802323 +10232000,imu,-0.24880365,0.18561809,-9.9403,0.00023877286,-0.00031278754,-0.0017922352 +10236000,mag,0.005538732,-0.21386273,0.4231938 +10236000,imu,-0.241121,0.17884468,-9.920294,-0.0018635322,-0.0024440282,0.00038723738 +10240000,imu,-0.2233732,0.1562,-9.90575,-0.0025625462,-0.003697589,-0.0010737902 +10244000,imu,-0.22878477,0.15270601,-9.928726,-0.001918369,-0.0022137365,-0.004592579 +10248000,imu,-0.20728712,0.18078785,-9.9048815,-0.0031828864,-0.0017071082,-0.002553412 +10248000,mag,0.0050475714,-0.21800171,0.42700842 +10252000,imu,-0.17170164,0.1963087,-9.886127,-0.0018669579,-0.005126173,-0.0034799755 +10256000,imu,-0.20036182,0.19461605,-9.960758,-0.0029699286,-0.008629886,-0.0025681327 +10260000,mag,0.007887775,-0.21444741,0.4403857 +10260000,imu,-0.23457775,0.19520654,-9.973003,-0.0017752778,-0.0068955803,0.0009149614 +10264000,imu,-0.2168523,0.18706419,-9.943495,0.0006017125,-0.0048521766,-0.0015161593 +10268000,imu,-0.1634711,0.16359957,-9.9311695,-0.00034901267,-0.006108357,-0.0014208049 +10272000,baro,487.57227 +10272000,mag,0.0074346433,-0.21527782,0.43414602 +10272000,imu,-0.18213196,0.16266523,-9.948679,-0.00021512837,-0.0062844567,-0.0016345193 +10276000,imu,-0.21710826,0.18592115,-9.963926,-0.00056287216,-0.005813772,-0.004107682 +10280000,imu,-0.20345616,0.15596242,-9.936401,-0.0008255721,-0.00620975,-0.001781797 +10284000,mag,0.011720626,-0.21286596,0.42776918 +10284000,imu,-0.2105318,0.12745933,-9.956902,-0.001798589,-0.00649828,0.0006720297 +10288000,imu,-0.19426486,0.18491304,-9.963783,-0.001417447,-0.0047019892,0.000739024 +10292000,imu,-0.20483044,0.19918726,-9.907689,-0.0004490712,-0.003723376,-0.0018877735 +10296000,mag,0.0073847966,-0.2158365,0.42357564 +10296000,imu,-0.2441461,0.16457139,-9.897053,-0.0021752487,-0.0046763956,-0.0013410883 +10300000,imu,-0.21286216,0.18296792,-9.900495,-0.0017627487,-0.0060725184,0.00060337404 +10304000,imu,-0.19190492,0.20254506,-9.912689,-0.00020996552,-0.00768874,-0.0010240879 +10308000,mag,0.003939271,-0.21613081,0.43013826 +10308000,imu,-0.20373867,0.17788453,-9.937178,0.00083146297,-0.006654861,0.00068798114 +10312000,imu,-0.2113122,0.14290404,-9.932175,-0.0009294657,-0.002780136,0.0012979696 +10316000,imu,-0.1964791,0.15123105,-9.933335,-0.0036581114,-0.002224768,-0.0006469702 +10320000,imu,-0.19770658,0.18171138,-9.945802,-0.005638323,-0.004143444,0.0016799372 +10320000,mag,0.009656586,-0.21313481,0.4276626 +10324000,imu,-0.2150561,0.18222503,-9.936142,-0.0017428566,-0.0025610838,0.0015732601 +10328000,imu,-0.19665352,0.16388531,-9.9215355,0.0018463761,-0.0011936869,0.0019780993 +10332000,mag,0.012282846,-0.2168621,0.4305461 +10332000,imu,-0.1951865,0.17689818,-9.947995,0.00042314234,-0.0022962939,0.002646871 +10336000,imu,-0.21507597,0.2091274,-9.9472885,-0.0018544231,-0.0058298223,-0.0016997876 +10340000,imu,-0.22953166,0.20810871,-9.925959,-0.001575011,-0.0069517093,0.00018566252 +10344000,baro,487.6474 +10344000,imu,-0.21722353,0.18513599,-9.916681,0.0032686086,-0.008036007,0.0007742479 +10344000,mag,0.0064022224,-0.21464938,0.4334766 +10348000,imu,-0.20683295,0.1644029,-9.923648,0.0029765887,-0.0084241,-0.0015796412 +10352000,imu,-0.19702256,0.1463125,-9.9299965,-0.0011660766,-0.0042236983,0.002838103 +10356000,imu,-0.19093268,0.13847426,-9.937855,-0.0014049921,-0.0031707517,0.0040883147 +10356000,mag,0.013156133,-0.21764228,0.4314475 +10360000,imu,-0.23079878,0.15951703,-9.956516,-0.0006986903,-0.0012671867,0.0021973134 +10364000,imu,-0.22655322,0.176811,-9.944096,-0.0021619482,-0.0025090915,0.0036993918 +10368000,mag,0.012702618,-0.22545093,0.42568633 +10368000,imu,-0.21986869,0.15651728,-9.937411,-0.0024229663,-0.0066676834,0.0011810572 +10372000,imu,-0.21655758,0.15175098,-9.939916,-0.001623999,-0.0043954244,-0.00095823203 +10376000,imu,-0.20870256,0.15956695,-9.950479,-0.0012799624,-0.0047949497,-0.001714985 +10380000,imu,-0.22068386,0.1626211,-9.939585,-0.0019155421,-0.008684916,-0.00086093135 +10380000,mag,0.009055572,-0.21505752,0.43220755 +10384000,imu,-0.2273755,0.17486906,-9.89718,-0.0033952417,-0.006487581,0.0018168399 +10388000,imu,-0.25838464,0.18028307,-9.917751,-0.0026246717,-0.0024349196,-0.000225137 +10392000,mag,0.009560284,-0.22188339,0.4254642 +10392000,imu,-0.23368242,0.19587794,-9.913717,-0.0012305498,-0.0043539773,-8.382502e-05 +10396000,imu,-0.207262,0.18613768,-9.888659,-0.0014453641,-0.0054012975,-0.0006745256 +10400000,imu,-0.22743043,0.14222206,-9.9129505,-0.0028549754,-0.0061680987,-0.00024238875 +10404000,mag,0.004503542,-0.20990586,0.4318042 +10404000,imu,-0.19940963,0.15462106,-9.922358,-0.0021952824,-0.009576153,0.0007412738 +10408000,imu,-0.17057988,0.1614501,-9.907064,0.0018333321,-0.009885874,0.00015840634 +10412000,imu,-0.17234623,0.16766629,-9.925005,0.0034969244,-0.00641433,-0.00078981044 +10416000,mag,0.008006107,-0.21686184,0.42975312 +10416000,imu,-0.14132851,0.21258959,-9.953796,0.00049818563,-0.004347968,-0.0031926038 +10416000,baro,487.53473 +10420000,imu,-0.16628964,0.21586539,-9.92963,-0.0016127739,-0.0032951117,-0.0026199892 +10424000,imu,-0.21129598,0.18805404,-9.911319,-0.003779088,-0.0043170983,-0.003051107 +10428000,mag,0.011894805,-0.20978488,0.43478703 +10428000,imu,-0.19215551,0.17461827,-9.930665,-0.0014432902,-0.004592831,-0.0014292074 +10432000,imu,-0.18632206,0.17401358,-9.9203615,0.002163642,-0.0034922967,0.00031131593 +10436000,imu,-0.17419428,0.20908968,-9.882584,-0.0015645802,-0.0077979956,0.003179322 +10440000,mag,0.011504704,-0.21775939,0.4295408 +10440000,imu,-0.16634774,0.22475381,-9.905853,-0.0011939408,-0.012492431,0.0017733278 +10444000,imu,-0.19396454,0.1880162,-9.9392185,0.002135475,-0.011928376,0.00039800594 +10448000,imu,-0.19440684,0.1601351,-9.932118,-0.00014171327,-0.005538106,0.0016078679 +10452000,imu,-0.22483158,0.17260592,-9.9162445,-0.0029167924,-0.004458388,-0.0003188471 +10452000,gps,488113.0,85456074.0,473977508.0,0.01,0.0,0.02 +10452000,mag,0.01577458,-0.21636163,0.4285824 +10456000,imu,-0.2531279,0.18623027,-9.920865,-0.0018338641,-0.009203623,-0.0017281864 +10460000,imu,-0.2133571,0.15949596,-9.908879,-0.0028662242,-0.007705781,-0.0029916344 +10464000,mag,0.005418707,-0.22039625,0.42884648 +10464000,imu,-0.19734143,0.15951739,-9.918535,-0.0030059116,-0.005485731,-4.873182e-05 +10468000,imu,-0.21871,0.14596432,-9.940953,-0.0015503428,-0.003163291,0.003874259 +10472000,imu,-0.19829963,0.12948197,-9.939616,-0.0017065638,-0.0046045366,0.0040148306 +10476000,imu,-0.20018683,0.17372113,-9.913768,0.0010593082,-0.009508774,0.00034984638 +10476000,mag,0.0054923156,-0.21264057,0.43240622 +10480000,imu,-0.22935864,0.19799384,-9.92503,-0.0010794732,-0.009545753,-0.00036485994 +10484000,imu,-0.19927302,0.17880718,-9.927732,-0.0037575534,-0.0068598404,0.001952252 +10488000,imu,-0.19942006,0.1734242,-9.887851,-0.00034382302,-0.004332588,0.0019400647 +10488000,baro,487.638 +10488000,mag,0.010246409,-0.21821411,0.4240311 +10492000,imu,-0.20878272,0.16521876,-9.898296,0.0006135051,-0.007895491,-0.0012518456 +10496000,imu,-0.18491155,0.15329285,-9.9526,-0.0017030069,-0.010118538,0.00017924192 +10500000,imu,-0.21215326,0.17348157,-9.976232,-0.002041759,-0.005002827,0.0021615103 +10500000,mag,0.0101518715,-0.20991342,0.43010625 +10504000,imu,-0.23900077,0.19827215,-9.940168,-0.0016147521,-0.0045301146,0.002417274 +10508000,imu,-0.2078591,0.19416566,-9.93532,-0.0012660271,-0.007494094,0.00034546334 +10512000,imu,-0.1800616,0.19629891,-9.933962,-0.0020760875,-0.008017023,-0.0036876996 +10512000,mag,0.015565324,-0.21488465,0.4315788 +10516000,imu,-0.18177831,0.20284612,-9.906977,-0.0052994927,-0.0072704065,0.0010997666 +10520000,imu,-0.20379919,0.17880076,-9.919663,-0.003366775,-0.005930575,-0.00059979537 +10524000,imu,-0.18673053,0.17166615,-9.92614,-0.0014832052,-0.0048333593,-0.0033173684 +10524000,mag,0.011236727,-0.21855906,0.43372265 +10528000,imu,-0.18658108,0.17779632,-9.924109,-0.0005094945,-0.0042755185,0.00046409594 +10532000,imu,-0.21403944,0.19332159,-9.932713,0.000235113,-0.004433628,-0.0007868525 +10536000,mag,0.00956506,-0.21372607,0.43072104 +10536000,imu,-0.21536358,0.21660571,-9.920656,-0.0033954866,-0.00636913,-0.0011269149 +10540000,imu,-0.19796953,0.18562008,-9.9186,-0.002502888,-0.0052404674,0.0006896128 +10544000,imu,-0.18122625,0.14902836,-9.904541,-0.0011549647,-0.0031300099,-9.4096344e-05 +10548000,mag,0.009334939,-0.21441114,0.4294937 +10548000,imu,-0.1812326,0.14923055,-9.884329,-0.0020650022,-0.0053434344,-0.0009614342 +10552000,imu,-0.19213523,0.15231664,-9.913305,-0.0012852652,-0.0068728523,0.0009848906 +10556000,imu,-0.22127655,0.17203026,-9.944143,-0.00065119844,-0.008036839,0.0010030814 +10560000,mag,9.2746224e-05,-0.21433116,0.43259555 +10560000,baro,487.5676 +10560000,imu,-0.22833756,0.17036627,-9.948142,0.0007699829,-0.0080993045,-0.00010430883 +10564000,imu,-0.22247288,0.15693384,-9.942316,0.0009373278,-0.009985847,-0.0014579267 +10568000,imu,-0.21913081,0.16532335,-9.941781,-0.002144142,-0.007089199,-0.0024748438 +10572000,mag,0.011451968,-0.21335682,0.42464015 +10572000,imu,-0.22454602,0.18480991,-9.930698,-0.0008076735,-0.008138628,-0.0029497258 +10576000,imu,-0.21332593,0.17027517,-9.914253,-0.001538286,-0.012264014,-0.0013764208 +10580000,imu,-0.20301917,0.1459817,-9.912892,-0.0044287397,-0.00709463,-0.0008259244 +10584000,mag,0.011706959,-0.20966704,0.4280119 +10584000,imu,-0.19977772,0.15629555,-9.915022,-0.003854372,-0.0047693425,-0.0015544245 +10588000,imu,-0.2138659,0.17356859,-9.9376545,-0.0015861097,-0.006232216,-0.0006206345 +10592000,imu,-0.24258459,0.15078224,-9.921089,-0.0010751886,-0.00783185,-0.0023304294 +10596000,mag,0.008715039,-0.21648839,0.42462826 +10596000,imu,-0.22664323,0.14221573,-9.915337,-0.0028725404,-0.008170572,-0.0024882283 +10600000,imu,-0.19569382,0.2030978,-9.926867,-0.0013263623,-0.0045042494,-0.0010997915 +10604000,imu,-0.19523339,0.20325083,-9.917274,-0.0011184401,-0.0029029625,-0.0007145534 +10608000,mag,0.004358848,-0.21710497,0.42897484 +10608000,imu,-0.21750572,0.18167734,-9.915562,-0.002988386,-0.0042008697,-0.0019960615 +10612000,imu,-0.22185658,0.16167732,-9.917367,-0.00142118,-0.008291288,-0.0017567216 +10616000,imu,-0.2194471,0.15075722,-9.937433,0.0018702468,-0.0053336825,0.0028844343 +10620000,mag,0.007378102,-0.21871787,0.427265 +10620000,imu,-0.23011559,0.14845356,-9.959235,0.0019490521,-0.0011600403,0.0017682471 +10624000,imu,-0.22651735,0.15544967,-9.936983,0.00069708534,-0.00731903,-0.002368704 +10628000,imu,-0.23634192,0.1876346,-9.929855,-0.0011586016,-0.010612324,-0.0013197467 +10632000,imu,-0.21263954,0.18150197,-9.945263,-0.00026063755,-0.0069607985,0.00021734276 +10632000,mag,0.017034857,-0.2164094,0.42824197 +10632000,baro,487.61453 +10636000,imu,-0.17942463,0.18867356,-9.958525,0.00109481,-0.005107633,0.0017216662 +10640000,imu,-0.21260598,0.1843041,-9.97032,-0.00072224153,-0.0070897923,2.0142897e-05 +10644000,mag,0.008041386,-0.2205115,0.42649406 +10644000,imu,-0.21768579,0.20172079,-9.962428,3.1295476e-05,-0.008073021,0.00021868097 +10648000,imu,-0.21499798,0.20906384,-9.935637,-0.00076949433,-0.0071633477,0.0018462285 +10652000,imu,-0.26003474,0.19725469,-9.902538,-0.004170647,-0.007548587,0.0013929842 +10656000,imu,-0.25468165,0.19162396,-9.91073,-0.0025309992,-0.009118534,6.21348e-05 +10656000,mag,0.009113056,-0.21750274,0.43025315 +10660000,imu,-0.20117603,0.16564691,-9.946963,-5.39347e-06,-0.004972017,-0.0017546513 +10664000,imu,-0.20517933,0.18093883,-9.940172,0.0008746613,-0.0028974132,-0.0014568543 +10668000,imu,-0.22126256,0.20838869,-9.924946,0.00019652542,-0.0034897178,0.00043667835 +10668000,mag,0.009055914,-0.21193728,0.42998445 +10672000,imu,-0.19233361,0.21096215,-9.925762,0.0032754706,-0.002009578,0.0025128806 +10676000,imu,-0.20304304,0.17293662,-9.899641,0.0022312792,-0.0030288124,0.0015293894 +10680000,mag,0.0057773506,-0.20803112,0.43264663 +10680000,imu,-0.19971207,0.18538338,-9.893119,-0.0039025932,-0.0065386444,-0.0018657097 +10684000,imu,-0.17882806,0.2064168,-9.931253,-0.0029557524,-0.00810517,-5.6809055e-05 +10688000,imu,-0.21346536,0.17177199,-9.957567,-0.0011262265,-0.0071133445,0.001255257 +10692000,mag,0.012691971,-0.21724357,0.4217315 +10692000,imu,-0.19553034,0.169755,-9.949808,3.0894054e-05,-0.006883146,-0.0008154733 +10696000,imu,-0.18700786,0.19130442,-9.957777,0.00029940164,-0.0062806103,-0.0010930586 +10700000,imu,-0.2029826,0.18404318,-9.931734,0.0015785651,-0.003188466,-0.0017102308 +10704000,mag,0.014150275,-0.20572294,0.43158567 +10704000,baro,487.6521 +10704000,imu,-0.21317881,0.17185213,-9.916756,0.00046613638,-0.0048840735,0.0013644928 +10708000,imu,-0.23771906,0.18145056,-9.953336,-0.0027640553,-0.006196704,0.0018085411 +10712000,imu,-0.22694753,0.18809123,-9.945072,-0.002389937,-0.0056154993,0.0009942593 +10716000,mag,0.0076157753,-0.21783778,0.4269408 +10716000,imu,-0.238053,0.19249482,-9.936557,0.0012216261,-0.007142403,-0.0006199327 +10720000,imu,-0.22019888,0.21408343,-9.944933,0.00057714176,-0.0054109553,-0.0027860904 +10724000,imu,-0.22950602,0.21239372,-9.940857,-0.0028294162,-0.0065805367,-0.0024595717 +10728000,imu,-0.26094705,0.17688514,-9.902409,-0.00020336163,-0.0056516742,-0.0011510447 +10728000,mag,0.0050276523,-0.21071827,0.43312946 +10732000,imu,-0.21487954,0.18188368,-9.900573,-0.0010543264,-0.0023179236,-0.0010785089 +10736000,imu,-0.19219032,0.20588802,-9.962872,-0.0056266114,-0.0039754766,-0.0043731756 +10740000,mag,0.0106461635,-0.21560682,0.42433006 +10740000,imu,-0.20191152,0.1730878,-9.942223,-0.005317338,-0.0061174887,-0.002069127 +10744000,imu,-0.21169777,0.16831875,-9.90427,-0.0009622311,-0.0050245323,-0.00097115606 +10748000,imu,-0.22045906,0.17642047,-9.94056,-0.003309407,-0.0015736911,-0.0024874131 +10752000,mag,0.009662596,-0.21511939,0.43045387 +10752000,imu,-0.22452971,0.18387085,-9.920009,-0.0032710133,-0.0053186025,0.0024153648 +10756000,imu,-0.21531755,0.18831551,-9.905358,-0.001419364,-0.0071704173,0.003224337 +10760000,imu,-0.20516539,0.15606886,-9.951193,-0.003934672,-0.0042917626,6.663819e-06 +10764000,mag,0.014993037,-0.21101348,0.43081886 +10764000,imu,-0.20306271,0.15744235,-9.955576,-0.002931913,-0.0077027106,-0.0012043025 +10768000,imu,-0.23883054,0.17879675,-9.953813,-0.00332393,-0.008311865,0.0005084152 +10772000,imu,-0.23542672,0.17316374,-9.944269,-0.0027255476,-0.0053658676,0.0024782184 +10776000,mag,0.014023771,-0.22050984,0.43068758 +10776000,imu,-0.19752818,0.16517355,-9.93261,-0.00015012862,-0.005170499,-0.00036263652 +10776000,baro,487.6474 +10780000,imu,-0.19097382,0.15266314,-9.939884,0.0013132725,-0.003885725,-0.003917731 +10784000,imu,-0.19686022,0.1842248,-9.936769,-0.0028659252,-0.003959778,-0.0023752553 +10788000,mag,0.0068482975,-0.22062668,0.4289236 +10788000,imu,-0.23885408,0.21822065,-9.936779,-0.0041131377,-0.008056272,0.00038811713 +10792000,imu,-0.23517789,0.1791809,-9.943261,-0.0022299225,-0.006095229,0.00013626866 +10796000,imu,-0.1997124,0.17000757,-9.946676,-0.0014919383,-0.0027739324,-0.0009267376 +10800000,imu,-0.22630125,0.21412955,-9.936324,-0.0013780979,-0.0037729642,-0.000417212 +10800000,mag,0.010577203,-0.2197641,0.42418504 +10804000,imu,-0.21902546,0.20965779,-9.943201,-0.004918773,-0.005652136,-0.0007987997 +10808000,imu,-0.17063129,0.16048227,-9.975227,-0.004303025,-0.008807008,-0.00084291294 +10812000,mag,0.012425887,-0.21569762,0.4305124 +10812000,imu,-0.17534268,0.16947204,-9.9380455,0.0005970593,-0.009465202,-0.0002850188 +10816000,imu,-0.18719459,0.20598358,-9.915883,0.00041966338,-0.00778049,-0.0022967984 +10820000,imu,-0.184843,0.2054987,-9.937017,0.0013546859,-0.0032713288,-0.002120387 +10824000,mag,0.011055454,-0.21052715,0.4373281 +10824000,imu,-0.21432419,0.16253594,-9.936836,0.0036555394,-0.0007582438,-0.002676251 +10828000,imu,-0.21242158,0.16116579,-9.953097,-0.0018257126,-0.00065362843,-0.0012787379 +10832000,imu,-0.2114,0.18658334,-9.943136,0.0006024246,-0.00031559385,-0.0007384251 +10836000,mag,0.006921549,-0.2145287,0.42749673 +10836000,imu,-0.22034742,0.20793155,-9.935654,0.0037988108,-0.0015785875,-0.0015985484 +10840000,imu,-0.19560453,0.19882347,-9.921543,0.0013048927,-0.003930059,-0.0017135263 +10844000,imu,-0.17862189,0.16729598,-9.912573,-0.002157391,-0.004554943,-0.0025453975 +10848000,imu,-0.19247091,0.17820165,-9.955678,-0.0039226473,-0.004168447,-0.0014251373 +10848000,baro,487.6568 +10848000,mag,0.012116057,-0.21885821,0.4285374 +10852000,gps,488110.0,85456074.0,473977507.0,0.02,0.01,0.0 +10852000,imu,-0.22993538,0.16225924,-9.940018,-0.002783844,-0.0011591824,-0.0015044363 +10856000,imu,-0.18939264,0.17984086,-9.932682,-0.0021360363,-0.0010534439,0.001888422 +10860000,imu,-0.17907852,0.20048876,-9.954644,-0.001422135,-0.0060231807,0.0011646795 +10860000,mag,0.006474762,-0.21479224,0.43063197 +10864000,imu,-0.21457121,0.17575781,-9.935457,-0.001474471,-0.007079064,-0.0004467757 +10868000,imu,-0.21519223,0.15974729,-9.934524,-0.002287753,-0.003561372,0.0008803914 +10872000,imu,-0.24463321,0.15881875,-9.919695,-0.0015355852,-0.0012579119,-0.000594938 +10872000,mag,0.010229549,-0.21202627,0.43013915 +10876000,imu,-0.24769306,0.18678862,-9.922741,-0.0015477134,-0.005792072,0.0022597036 +10880000,imu,-0.23426753,0.17719987,-9.92408,-0.003214222,-0.005334535,0.00087848614 +10884000,imu,-0.22569247,0.15635704,-9.918409,-0.0017738706,-0.0069361906,-0.0021155234 +10884000,mag,0.008679854,-0.21877438,0.42046526 +10888000,imu,-0.24453731,0.1769039,-9.960234,-0.0012451309,-0.007482133,-0.00014253215 +10892000,imu,-0.22988647,0.18446428,-9.979134,-0.0017307198,-0.0047551724,0.0022656156 +10896000,imu,-0.1648215,0.18544699,-9.984755,-0.003179648,-0.009038418,0.0010384734 +10896000,mag,0.013632079,-0.21895738,0.4308543 +10900000,imu,-0.1831418,0.20170279,-9.947124,-0.0010061928,-0.0063284077,-0.0014832693 +10904000,imu,-0.23157449,0.21264362,-9.9242325,0.0005021611,-0.004567829,-0.00053238583 +10908000,imu,-0.22596473,0.23056693,-9.955263,0.00016153869,-0.006671842,-0.0023170905 +10908000,mag,0.017085027,-0.21306506,0.4267509 +10912000,imu,-0.21510877,0.21646655,-9.949259,0.0016094042,-0.0045945346,-0.0030164695 +10916000,imu,-0.2062312,0.21195154,-9.956736,-0.0004747135,-0.003049533,-0.0013202515 +10920000,imu,-0.19487795,0.21851663,-9.974682,-0.00052068266,-0.0025539738,-0.0017987143 +10920000,baro,487.60513 +10920000,mag,0.011211368,-0.21675287,0.436017 +10924000,imu,-0.18667026,0.19931976,-9.962976,0.00070210814,-0.0036967346,-0.000478366 +10928000,imu,-0.21865633,0.20526446,-9.968584,-0.0012393144,-0.0045790104,-0.0016252213 +10932000,mag,0.014305877,-0.21396992,0.42952693 +10932000,imu,-0.23515758,0.20769547,-9.979235,-0.0016191374,-0.0036771153,-0.00348222 +10936000,imu,-0.2256243,0.18704489,-9.948357,0.00029258186,-0.0037715707,0.00041118514 +10940000,imu,-0.20447895,0.18541895,-9.940139,0.0006210691,-0.0047769845,-0.0014429484 +10940000,landed,1.0 +10944000,mag,0.0034005872,-0.21714632,0.4247913 +10944000,imu,-0.18935639,0.2180243,-9.946718,-0.001452633,-0.007604446,-0.004292126 +10948000,imu,-0.20884013,0.22753039,-9.944221,-0.0025388517,-0.006232791,-0.0012596587 +10952000,imu,-0.21768594,0.18087097,-9.945,-0.001500116,-0.002510617,-0.0009826409 +10956000,mag,0.0103277555,-0.21862711,0.428782 +10956000,imu,-0.19934335,0.17502125,-9.958005,-0.00044104178,-0.004478103,-0.0012393813 +10960000,imu,-0.1947048,0.19648726,-9.953651,0.00016666035,-0.006325511,0.0007692962 +10964000,imu,-0.21096006,0.18923108,-9.932045,-0.0011217883,-0.008091396,0.00039515732 +10968000,imu,-0.19289526,0.19088656,-9.931778,-0.0040600197,-0.0095851375,-0.001991081 +10968000,mag,0.015716301,-0.21811673,0.4164209 +10972000,imu,-0.18549031,0.18692176,-9.92571,-0.0015294908,-0.0051097767,-0.0008566473 +10976000,imu,-0.18634188,0.15321112,-9.940168,-0.00018405258,-0.0056676315,0.0038621703 +10980000,imu,-0.19195974,0.16372593,-9.935135,-0.0013962375,-0.008149608,0.00037438946 +10980000,mag,0.0066524935,-0.21297708,0.42365128 +10984000,imu,-0.22492728,0.17880662,-9.879662,-0.0011563841,-0.00558835,-0.0034640399 +10988000,imu,-0.21364355,0.1447647,-9.911386,-0.00077482034,-0.0071080173,-0.0032234555 +10992000,baro,487.5629 +10992000,mag,0.0087247,-0.21488431,0.43070918 +10992000,imu,-0.23883903,0.14713733,-9.942849,4.752486e-06,-0.0054141604,0.0010741394 +10996000,imu,-0.23842008,0.15762845,-9.924353,0.001510729,-0.0024681315,0.0019581837 +11000000,imu,-0.20535633,0.16390286,-9.940935,0.0034049102,-0.0053805253,-0.0041882796 +11004000,imu,-0.22187981,0.16530806,-9.899547,0.001265795,-0.0068807267,-0.0012191561 +11004000,mag,0.009359971,-0.21542814,0.43043226 +11008000,imu,-0.23661628,0.16760455,-9.91325,-0.001699068,-0.0046862015,0.00056627305 +11012000,imu,-0.23404841,0.19076909,-9.941511,-0.00083706254,-0.00445918,-0.0032366782 +11016000,mag,0.009697738,-0.21988954,0.42466938 +11016000,imu,-0.20893358,0.19310686,-9.922031,0.0038971265,-0.005421269,-0.0043418296 +11020000,imu,-0.21165049,0.15670346,-9.942426,0.0012582919,-0.0044932542,-0.004009758 +11024000,imu,-0.20025623,0.18281214,-9.929548,-0.0020196615,-0.0064832624,-0.0017077571 +11028000,mag,0.006096163,-0.21114771,0.43448243 +11028000,imu,-0.17916223,0.21393803,-9.915747,0.00035193865,-0.0085850675,-0.00040648182 +11032000,imu,-0.20214194,0.18357052,-9.933111,0.00018495803,-0.005152107,-0.0010608807 +11036000,imu,-0.23372751,0.18062243,-9.92806,-0.0011319924,-0.00512236,0.0012921825 +11040000,mag,0.020280005,-0.21319456,0.4234853 +11040000,imu,-0.20354927,0.19608414,-9.932381,-0.0038447902,-0.0056698546,0.0015814056 +11044000,imu,-0.1751702,0.1802052,-9.93364,-0.0008253069,-0.0009873328,-0.0016025114 +11048000,imu,-0.17183033,0.17269985,-9.929029,0.0004403384,-0.00062854163,-0.00047932792 +11052000,mag,0.006511808,-0.21859297,0.43342358 +11052000,imu,-0.1464765,0.17479531,-9.936196,-0.0022513594,-0.0027161143,0.00296348 +11056000,imu,-0.16435477,0.1633826,-9.955148,-0.0023885323,-0.0028381045,-0.0018499729 +11060000,imu,-0.18572843,0.18826416,-9.939386,-0.0013502074,-0.0034119035,-0.002078094 +11064000,baro,487.6427 +11064000,mag,0.014989483,-0.21891798,0.42835945 +11064000,imu,-0.18961763,0.19658467,-9.915056,-0.0008756844,-0.0040352386,0.0018356071 +11068000,imu,-0.19168732,0.19448163,-9.91503,-0.0011469738,-0.005733934,4.9600812e-06 +11072000,imu,-0.17294356,0.1848083,-9.932458,0.00049463095,-0.007869508,-0.00069324765 +11076000,mag,0.017897068,-0.2110301,0.43107197 +11076000,imu,-0.20605671,0.19295137,-9.925844,0.0010877913,-0.005261272,-0.001285608 +11080000,imu,-0.22297141,0.19216087,-9.905385,0.0014253272,-0.0043260586,-0.004881013 +11084000,imu,-0.20727924,0.17009558,-9.954558,-0.00047465056,-0.006381129,-0.00043737833 +11088000,mag,0.015652757,-0.20986274,0.4332414 +11088000,imu,-0.21587393,0.17583384,-9.967059,-0.001273722,-0.0046355953,0.002319836 +11092000,imu,-0.21996926,0.17542435,-9.947224,-0.0004560252,-0.006676021,0.0011763533 +11096000,imu,-0.19014633,0.17327984,-9.944533,-0.0002646265,-0.008411318,0.0026358557 +11100000,imu,-0.19892076,0.1879591,-9.976844,0.0027050027,-0.0063914405,0.005254656 +11100000,mag,0.0034570722,-0.21757355,0.4231214 +11104000,imu,-0.22382654,0.18848039,-9.994766,-0.00012944423,-0.0050767832,0.0035851647 +11108000,imu,-0.22032419,0.17319371,-9.951403,-0.0030006384,-0.0034064432,0.00023582314 +11112000,mag,0.0071301893,-0.22039182,0.4214489 +11112000,imu,-0.22107789,0.18353903,-9.933141,3.56744e-05,-0.0027493348,0.0010632171 +11116000,imu,-0.21367973,0.16505179,-9.952127,0.0006581956,-0.0045961463,-0.0005418952 +11120000,imu,-0.20903113,0.17533419,-9.954552,-0.000897782,-0.009110236,-0.00079867535 +11124000,mag,0.003733982,-0.21518472,0.42919406 +11124000,imu,-0.2075899,0.174742,-9.949568,-0.0012223972,-0.007537205,-0.0005778791 +11128000,imu,-0.19995359,0.15348835,-9.9562645,0.0003718531,-0.004767352,0.002379903 +11132000,imu,-0.18396196,0.15406847,-9.925428,-0.0009767768,-0.007845228,0.0007032692 +11136000,mag,0.006231829,-0.20947789,0.43319753 +11136000,imu,-0.21392386,0.15123047,-9.909571,-0.00074309134,-0.006695786,9.348854e-06 +11136000,baro,487.70374 +11140000,imu,-0.2301567,0.16488527,-9.930017,0.00018986042,-0.0045538573,0.004225093 +11144000,imu,-0.21921006,0.17373502,-9.931892,-0.0016822249,-0.0046903817,0.0030995326 +11148000,mag,0.014590702,-0.21653795,0.43262342 +11148000,imu,-0.24281189,0.16706371,-9.921743,-0.0010926819,-0.005428204,-0.000113738985 +11152000,imu,-0.22434857,0.18916629,-9.921544,-0.0017878748,-0.008205611,0.0012639461 +11156000,imu,-0.20651177,0.19817257,-9.9373455,-0.0006134192,-0.007620762,0.0017730199 +11160000,mag,0.013652924,-0.21276328,0.42700773 +11160000,imu,-0.18058889,0.1932236,-9.952417,0.00088839786,-0.003987229,-0.0009408608 +11164000,imu,-0.15855348,0.17240697,-9.952804,-0.0004952836,-0.0021790361,-0.0027545635 +11168000,mag,0.014958621,-0.21502998,0.42787218 +11168000,imu,-0.20349921,0.111632384,-9.939381,-0.0036776299,-0.0027565993,-0.0041359705 +11172000,imu,-0.21909672,0.13105802,-9.918776,-0.0023882291,-0.00612526,-0.000102181846 +11176000,imu,-0.22367316,0.18451722,-9.934368,-0.0007018203,-0.0061985943,0.00215249 +11180000,imu,-0.22755715,0.18589427,-9.964089,-0.0021636328,-0.005369785,-5.4618933e-05 +11184000,mag,0.0076576527,-0.21440077,0.42587245 +11184000,imu,-0.18727437,0.16656865,-9.95751,-0.0012244785,-0.0062983306,-0.0023310585 +11188000,imu,-0.19901475,0.1799419,-9.94251,-0.0014495066,-0.008746593,-0.0025702314 +11192000,imu,-0.20101927,0.18186559,-9.945351,-0.00051502243,-0.009252122,-0.0006803606 +11196000,mag,0.01339242,-0.2143118,0.43411046 +11196000,imu,-0.19685245,0.16896439,-9.936712,-0.0010177928,-0.007967057,-0.0008357517 +11200000,imu,-0.22178337,0.18013547,-9.895461,-0.000108785884,-0.008735748,0.0006395649 +11204000,imu,-0.19660872,0.18475097,-9.921771,0.0008524755,-0.005770361,0.00036734506 +11208000,imu,-0.1733293,0.15169732,-9.953622,0.0020809965,-0.003708012,-0.0004677814 +11208000,baro,487.60043 +11208000,mag,0.008552147,-0.21584961,0.4250988 +11212000,imu,-0.19326273,0.14168416,-9.922607,0.002490617,-0.007251179,-0.0021704815 +11216000,imu,-0.21725811,0.17043652,-9.9224,-0.0013670364,-0.008579479,-0.0036517587 +11220000,imu,-0.1883186,0.18077582,-9.935304,-0.0013223185,-0.0071729855,-0.0004759382 +11220000,mag,0.008097321,-0.21535373,0.42214534 +11224000,imu,-0.17795187,0.17563438,-9.927493,0.0011658204,-0.007686687,0.002777461 +11228000,imu,-0.21037066,0.18025649,-9.924593,0.0009847082,-0.0048723696,0.0006696914 +11232000,mag,0.0044794106,-0.21807061,0.4305059 +11232000,imu,-0.23206161,0.18759502,-9.955855,-0.0012980013,-0.0044330633,-0.0016542487 +11236000,imu,-0.21965086,0.17523237,-9.960162,-0.003717146,-0.005839576,-0.0021107818 +11240000,imu,-0.20312005,0.15815301,-9.924653,-0.002606864,-0.007466363,-0.0035902106 +11244000,mag,0.008111504,-0.220179,0.4328371 +11244000,imu,-0.21726716,0.15518606,-9.939192,-0.000919122,-0.0063006566,-0.0012670542 +11248000,imu,-0.20579413,0.15708871,-9.938799,-0.0004822203,-0.0073179817,-0.0011072182 +11252000,gps,488101.0,85456074.0,473977508.0,0.0,0.0,0.0 +11252000,imu,-0.1922197,0.16927768,-9.894272,-0.0022162683,-0.009462028,-0.0007036176 +11256000,mag,0.0074700546,-0.21565486,0.4338277 +11256000,imu,-0.18196727,0.18625061,-9.89296,-0.0041672913,-0.0050521195,0.0009062784 +11260000,imu,-0.19758382,0.21215725,-9.93816,-0.0026630636,-0.0076044523,0.00039892652 +11264000,imu,-0.24134818,0.21913464,-9.966992,-0.0016914916,-0.009003752,0.00039983523 +11268000,mag,0.0062863166,-0.21625479,0.4308943 +11268000,imu,-0.22953966,0.16799688,-9.963364,-0.0013280681,-0.0058466457,-0.0027668928 +11272000,imu,-0.18722275,0.16924648,-9.929592,-0.00026695646,-0.0084813805,-0.0017642131 +11276000,imu,-0.1782567,0.17801973,-9.89814,0.0013194794,-0.009710214,-0.0005671474 +11280000,imu,-0.18870951,0.15933558,-9.919706,0.0006580376,-0.0057797926,-0.0035444796 +11280000,mag,0.0037789592,-0.22054537,0.42652568 +11280000,baro,487.61923 +11284000,imu,-0.20220104,0.17569467,-9.934695,0.00029573662,-0.0067686685,-0.0022480357 +11288000,imu,-0.22827098,0.18625192,-9.925013,0.00044388504,-0.007671369,-0.00013983996 +11292000,imu,-0.22130604,0.19339028,-9.946516,-0.001398008,-0.0042851632,0.00055833394 +11292000,mag,0.006754689,-0.20771486,0.42568702 +11296000,imu,-0.19347757,0.20371582,-9.973093,-0.0020222403,-0.0043016737,-0.00060092576 +11300000,imu,-0.20034623,0.16036911,-9.994855,0.00042398905,-0.007484861,0.0017043079 +11304000,mag,0.010894579,-0.22100009,0.42928106 +11304000,imu,-0.20859066,0.15913707,-9.965433,0.0014756039,-0.0068027326,0.001730652 +11308000,imu,-0.1865094,0.19148149,-9.923654,-0.0014761913,-0.0038413545,-0.0014034163 +11312000,imu,-0.20646986,0.19709533,-9.92854,-0.0023331773,-0.00765403,-0.002102105 +11316000,mag,0.0012394603,-0.21337397,0.426934 +11316000,imu,-0.22805357,0.18973188,-9.93562,-0.0018860865,-0.008405427,-0.0004815892 +11320000,imu,-0.23177025,0.16173296,-9.954981,-0.003459427,-0.0076794247,0.0037430678 +11324000,imu,-0.21781042,0.16668096,-9.954922,-0.0028049059,-0.0089326,-0.001657552 +11328000,imu,-0.1725331,0.16513562,-9.954508,-0.0009500206,-0.004936896,-0.004573401 +11328000,mag,0.012506403,-0.2174878,0.4257843 +11332000,imu,-0.18436846,0.176946,-9.94561,0.0004944996,-0.0058729947,0.0022550207 +11336000,imu,-0.2061038,0.17754579,-9.921738,-0.0014985304,-0.011240936,0.0009819765 +11340000,imu,-0.19572863,0.1622452,-9.912422,-0.0033119975,-0.0102690095,0.0005778449 +11340000,mag,0.013775471,-0.21589243,0.4286564 +11344000,imu,-0.20615792,0.16856243,-9.909557,-0.0014452311,-0.008516612,0.00013427265 +11348000,imu,-0.19658242,0.14891885,-9.921997,-0.0016756579,-0.006725319,-0.0034920648 +11352000,baro,487.70844 +11352000,imu,-0.16707829,0.13416187,-9.945595,-0.0005400349,-0.0027931898,-0.00094181875 +11352000,mag,0.007188477,-0.21796843,0.43049327 +11356000,imu,-0.18205243,0.14903902,-9.9477,0.0010213044,-0.0036592723,-0.0007250728 +11360000,imu,-0.20539743,0.15080453,-9.948108,-0.0034544219,-0.00931472,-0.0023396497 +11364000,imu,-0.20858552,0.18868062,-9.962073,-0.004785631,-0.0102807395,0.00016261691 +11364000,mag,0.0051347543,-0.21006174,0.4286321 +11368000,imu,-0.21265721,0.1908281,-9.904121,0.0005460235,-0.0067384727,-0.0005061335 +11372000,imu,-0.22739026,0.16618246,-9.907171,0.0009996736,-0.0068144314,-0.00059589365 +11376000,mag,0.0102752475,-0.21568477,0.42879722 +11376000,imu,-0.21962397,0.17371118,-9.952799,-0.0009940292,-0.006614278,0.0010752531 +11380000,imu,-0.21207601,0.17945164,-9.900415,0.0031708863,-0.0014390867,0.0005678574 +11384000,imu,-0.24666445,0.17740232,-9.919059,0.0024051236,-0.00023161706,0.0017337366 +11388000,imu,-0.22069278,0.17968006,-9.985949,-0.0037559713,-0.0040106303,0.0004710888 +11388000,mag,0.005919075,-0.21626908,0.4345829 +11392000,imu,-0.19633617,0.20850985,-9.943357,-0.0040973825,-0.00770912,-0.0019839979 +11396000,imu,-0.20072255,0.18846025,-9.915487,-0.003069177,-0.010037519,-0.0012164848 +11400000,imu,-0.20379955,0.16471273,-9.951153,-0.0012290281,-0.009533841,-7.702026e-05 +11400000,mag,0.008399468,-0.22075501,0.43389028 +11404000,imu,-0.1939587,0.17169893,-9.961625,7.0212656e-05,-0.007019633,-0.0003875102 +11408000,imu,-0.17562883,0.1773829,-9.943718,-0.0033678515,-0.008835085,0.0038411655 +11412000,imu,-0.21085678,0.19113572,-9.918312,-0.0026150208,-0.009283268,0.0025400629 +11412000,mag,0.010634534,-0.21589664,0.4279093 +11416000,imu,-0.22227904,0.1974769,-9.929553,0.0012747343,-0.004879752,-0.0001590959 +11420000,imu,-0.21670744,0.17906477,-9.957361,-5.2994852e-05,-0.0059967497,0.0016157653 +11424000,mag,0.008732497,-0.22214483,0.4260287 +11424000,baro,487.58167 +11424000,imu,-0.1851072,0.18010733,-9.974288,-0.000318701,-0.0055677327,0.0033216705 +11428000,imu,-0.21735609,0.20799051,-9.960342,-0.0012398062,-0.0027709068,0.0046366965 +11432000,imu,-0.21006915,0.18833502,-9.939426,-0.0036653639,-0.0025189316,0.0046966313 +11436000,imu,-0.17598839,0.18471368,-9.918409,-0.0003831611,-0.007829519,0.0024949943 +11436000,mag,0.0033428476,-0.21720685,0.42496994 +11440000,imu,-0.1911058,0.18027219,-9.9221325,0.0036397823,-0.009594069,-0.0008675525 +11444000,imu,-0.15846795,0.17864941,-9.917024,0.0018886367,-0.0062874905,-0.0006153727 +11448000,mag,0.0059113326,-0.21679488,0.43058813 +11448000,imu,-0.1901676,0.21606834,-9.891191,-1.1052461e-05,-0.0073241526,-0.00082843687 +11452000,imu,-0.23199372,0.20522638,-9.901817,-0.0014624413,-0.0060215485,-0.0009821787 +11456000,imu,-0.22780663,0.20319758,-9.920389,-0.0011348389,-0.005664393,-0.00029009805 +11460000,mag,0.011112832,-0.20960498,0.42442778 +11460000,imu,-0.20460778,0.21314509,-9.930827,-0.00033897944,-0.00810183,-0.0009358003 +11464000,imu,-0.20490742,0.1934566,-9.935136,-0.0004763768,-0.007349133,-0.0012318467 +11468000,imu,-0.22731933,0.17509753,-9.912891,0.00074569444,-0.006791462,-0.0033436082 +11472000,mag,0.0038486796,-0.21197984,0.42962483 +11472000,imu,-0.21603158,0.17406511,-9.8912525,-0.0030768116,-0.0055106645,-0.006473733 +11476000,imu,-0.19731353,0.16793002,-9.908881,-0.0026503685,-0.002526817,-0.0043396982 +11480000,imu,-0.17591839,0.17405418,-9.920879,0.002260417,-0.0022587175,-0.0012720205 +11484000,imu,-0.15349126,0.20649199,-9.914975,-0.0011357805,-0.0039143916,-0.002109496 +11484000,mag,0.0044861874,-0.21564671,0.42767197 +11488000,imu,-0.16660355,0.22331709,-9.941585,-0.0028057338,-0.006775653,-0.0009927257 +11492000,imu,-0.19394672,0.21158649,-9.955576,-0.00024279805,-0.008533135,-0.00060928595 +11496000,baro,487.67087 +11496000,mag,0.0054155192,-0.21404892,0.42888543 +11496000,imu,-0.19829778,0.23209088,-9.94433,-0.0015995989,-0.009922447,-0.0021683432 +11500000,imu,-0.19641717,0.24505821,-9.946959,-0.003074035,-0.009819986,-0.00048764242 +11504000,imu,-0.1800289,0.21322764,-9.946605,-0.0017303226,-0.0061524976,3.98449e-05 +11508000,mag,0.011297849,-0.21843879,0.42746428 +11508000,imu,-0.18221325,0.18024415,-9.954287,-0.00061498786,-0.0066176835,-0.0016488348 +11512000,imu,-0.19743195,0.18423592,-9.937321,-0.00040788608,-0.010112926,-0.0030629241 +11516000,imu,-0.20994279,0.22101462,-9.915923,0.00043576997,-0.009005107,0.0021637767 +11520000,imu,-0.2343739,0.18666692,-9.910534,-0.0007682092,-0.0079211965,0.0063108234 +11520000,mag,0.009508961,-0.21447903,0.42799357 +11524000,imu,-0.21456672,0.16658586,-9.911968,-0.002665951,-0.0056041717,0.002941243 +11528000,imu,-0.18773247,0.19334234,-9.95869,-0.0020137108,-0.0048664757,3.6139492e-05 +11532000,imu,-0.20129777,0.21186225,-9.968405,-0.0038396884,-0.0092666065,-0.0012211513 +11532000,mag,0.0064925314,-0.21284793,0.43333834 +11536000,imu,-0.19357899,0.22191134,-9.946895,-0.0030843043,-0.009031423,0.0001709381 +11540000,imu,-0.18081163,0.20439616,-9.939665,-0.00180752,-0.008128665,0.00072213355 +11544000,imu,-0.22088704,0.18687874,-9.915081,-0.005343937,-0.008291162,-0.00035932308 +11544000,mag,0.015094255,-0.21783434,0.42501485 +11548000,imu,-0.21243718,0.19588408,-9.937557,-0.0025476026,-0.0040950095,-5.337731e-05 +11552000,imu,-0.19093531,0.18944345,-9.959515,0.00052183477,-0.0056517324,0.0024447176 +11552000,mag,0.013545181,-0.21995999,0.42367533 +11556000,imu,-0.2207501,0.16552149,-9.922218,-0.0029575997,-0.0064070392,0.0020437632 +11560000,imu,-0.20810024,0.16352627,-9.920281,-0.004382214,-0.0035984456,-0.0008316904 +11564000,imu,-0.18819907,0.17949964,-9.937425,-0.0035456924,-0.0025572234,-0.0009227511 +11564000,mag,0.009704889,-0.21341564,0.4316789 +11568000,baro,487.66617 +11568000,imu,-0.17239308,0.19487695,-9.939215,-0.003913406,-0.0008231951,0.00031716618 +11572000,imu,-0.16076729,0.17334464,-9.931961,-0.0060312864,-0.0030089393,0.0005386955 +11576000,imu,-0.18632978,0.18534966,-9.918614,-0.0038204002,-0.003947174,0.0032151483 +11580000,mag,0.007340843,-0.22313859,0.43017837 +11580000,imu,-0.21415174,0.18800743,-9.952594,0.0016619406,-0.004780181,0.0048945625 +11584000,imu,-0.2290772,0.20109025,-9.964804,0.00071610324,-0.005380857,0.00047194236 +11588000,imu,-0.22928075,0.20729043,-9.93928,-0.0021252555,-0.0037637255,0.00016882276 +11592000,mag,0.010009608,-0.21330382,0.43343788 +11592000,imu,-0.23739523,0.18855007,-9.894402,-0.00447401,-0.0059623425,0.0010956184 +11596000,imu,-0.24107078,0.1942925,-9.88882,-0.0020899689,-0.006565734,-0.002558962 +11600000,imu,-0.2182017,0.19763938,-9.94513,0.00041245428,-0.0054067834,-0.0040262174 +11604000,imu,-0.19924855,0.23669843,-9.917433,-0.00075936964,-0.0059379204,-0.0013212967 +11604000,mag,0.014238861,-0.22213015,0.425354 +11608000,imu,-0.18888837,0.21240918,-9.90046,-0.0017671313,-0.0049158633,-4.5772005e-05 +11612000,imu,-0.18819213,0.1884039,-9.93139,-0.005190513,-0.006324738,0.0011813308 +11616000,imu,-0.19607785,0.20124449,-9.937719,-0.0042017633,-0.004056978,0.0024962416 +11616000,mag,0.00858394,-0.21750562,0.4218644 +11620000,imu,-0.18106239,0.19285183,-9.96003,-0.0015188965,-0.0030161825,0.0007183725 +11624000,imu,-0.19599777,0.19306716,-9.964285,-0.0009794212,-0.005393164,-0.0013512734 +11628000,mag,0.009042604,-0.21430309,0.42476258 +11628000,imu,-0.19992794,0.20617035,-9.965271,-0.002614076,-0.005611555,-0.0007835224 +11632000,imu,-0.1838463,0.2326928,-9.946894,-0.0037818819,-0.007179434,-0.0010578372 +11636000,imu,-0.19080108,0.2038934,-9.949011,-0.002086178,-0.008248913,-0.0009780896 +11640000,imu,-0.18931216,0.19217798,-9.954618,-0.0020352388,-0.0073884907,-0.00056583935 +11640000,baro,487.68027 +11640000,mag,0.0050833025,-0.21804127,0.4277855 +11644000,imu,-0.15924904,0.20653032,-9.908066,-0.0015190239,-0.0054764566,0.00020421787 +11648000,imu,-0.1491014,0.16778758,-9.919876,0.0001674815,-0.0045369808,0.001983306 +11652000,imu,-0.19775704,0.17298819,-9.941209,-0.0007678739,-0.0054739974,-0.0022209506 +11652000,gps,488103.0,85456074.0,473977508.0,-0.01,0.01,-0.03 +11652000,mag,0.0069201887,-0.22019453,0.4244579 +11656000,imu,-0.1874086,0.18613875,-9.936886,0.0006867684,-0.0064181443,-0.0037123596 +11660000,imu,-0.17447692,0.17858113,-9.947911,0.0019577146,-0.008593126,-0.0026427938 +11664000,imu,-0.19876888,0.19379641,-9.912264,0.0002695797,-0.007855787,-0.0045380616 +11664000,mag,0.008021241,-0.20914392,0.43043935 +11668000,imu,-0.17477417,0.18547444,-9.899234,0.0008213651,-0.003306775,-0.0038931984 +11672000,imu,-0.16256371,0.19917487,-9.9342785,0.0005727195,-0.0016977976,-0.003225289 +11676000,mag,0.008106104,-0.21713248,0.42471665 +11676000,imu,-0.1882881,0.2074579,-9.920971,-0.0001725448,-0.0029052787,-0.0006562435 +11680000,imu,-0.22640607,0.18253377,-9.893349,-0.00084901496,-0.005523904,0.00058044976 +11684000,imu,-0.21220644,0.16139732,-9.916263,-0.0023112758,-0.006424912,-0.00049338886 +11688000,mag,0.015493263,-0.21311262,0.43197867 +11688000,imu,-0.18581441,0.16360536,-9.919336,-0.0040321937,-0.0048475624,-0.0025299801 +11692000,imu,-0.20347832,0.18144527,-9.925373,-0.003187336,-0.0050500976,-0.004294832 +11696000,imu,-0.21380848,0.18401372,-9.970325,0.0020459446,-0.005652374,-0.0033203757 +11700000,mag,0.008740535,-0.21414888,0.4300735 +11700000,imu,-0.20899571,0.18643156,-9.94947,0.002108267,-0.005920674,-0.004355211 +11704000,imu,-0.17544739,0.20696475,-9.928759,-0.00087546004,-0.006601723,-0.0020411548 +11708000,imu,-0.1864087,0.20202513,-9.951229,-0.0008617939,-0.007320574,0.0020240974 +11712000,imu,-0.2345027,0.19949187,-9.94389,-0.0020517968,-0.006605234,0.0022686338 +11712000,mag,0.00964119,-0.21938023,0.42804593 +11712000,baro,487.59576 +11716000,imu,-0.24562317,0.1994635,-9.943379,-0.002331227,-0.003813298,0.0040382217 +11720000,imu,-0.20613524,0.21275558,-9.939323,-0.003918394,-0.0050320504,0.00069379277 +11724000,mag,0.009188054,-0.22244121,0.4251974 +11724000,imu,-0.19266339,0.24036221,-9.950808,-0.0032193435,-0.004992987,-0.0029675725 +11728000,imu,-0.22505715,0.23496965,-9.966276,-0.0010746585,-0.0060510617,9.22783e-05 +11732000,imu,-0.22996135,0.21970493,-9.952885,-0.0019790295,-0.0084756985,-0.0019079684 +11736000,mag,0.0070602684,-0.2196188,0.43039432 +11736000,imu,-0.19922608,0.1799195,-9.940959,-0.0008790765,-0.005242594,-0.0010491611 +11740000,imu,-0.18117939,0.1634017,-9.914845,-0.0025287424,-0.00413612,0.002426777 +11744000,imu,-0.20040646,0.18576282,-9.902349,-0.005837369,-0.004756538,-0.001552492 +11748000,mag,0.0039305207,-0.21301705,0.42823768 +11748000,imu,-0.22939488,0.22854954,-9.892388,-0.0044988277,-0.0053457525,-0.003822579 +11752000,imu,-0.22736657,0.21508928,-9.917374,0.00022476187,-0.008424324,-0.0025287124 +11756000,imu,-0.20522526,0.1866998,-9.944128,0.00010374762,-0.011084879,6.496927e-05 +11760000,imu,-0.2102134,0.19574909,-9.927906,-0.0016615011,-0.010011399,0.0031579935 +11760000,mag,0.0134939905,-0.21216586,0.42960215 +11764000,imu,-0.21225482,0.2303662,-9.953041,-0.00168311,-0.009606985,0.003303051 +11768000,imu,-0.23211202,0.24018021,-9.956823,-0.0012642314,-0.008662197,-0.0038548328 +11772000,imu,-0.23189773,0.20634714,-9.956783,0.0012878871,-0.005093259,-0.0042261756 +11772000,mag,0.0056583295,-0.21669148,0.43263727 +11776000,imu,-0.1979185,0.19753855,-9.970087,0.0026642878,-0.004934139,0.00046407495 +11780000,imu,-0.19235674,0.17736658,-9.931618,-0.0010998022,-0.005906586,0.00036553334 +11784000,mag,0.011509412,-0.21795839,0.42391393 +11784000,imu,-0.19871894,0.12619448,-9.915985,-0.0026286752,-0.0042348653,-0.0015030731 +11784000,baro,487.62393 +11788000,imu,-0.22019827,0.12540534,-9.913473,-0.0016836153,-0.005224215,-0.0022188039 +11792000,imu,-0.22352579,0.15327187,-9.907871,-0.0049723643,-0.0063351057,0.0023215164 +11796000,imu,-0.2372418,0.16440386,-9.917362,-0.0074961944,-0.0025489228,0.0019618694 +11796000,mag,0.012055599,-0.21888213,0.4261632 +11800000,imu,-0.20161045,0.18491538,-9.935403,-0.003392144,-0.00424449,-0.00057700474 +11804000,imu,-0.1841964,0.19701199,-9.9405155,-0.0001053973,-0.004523497,0.00045139945 +11804000,mag,0.006972895,-0.21140409,0.43072283 +11808000,imu,-0.22012776,0.2052671,-9.92556,0.0014256462,-0.0020777474,0.00046052682 +11812000,imu,-0.21858428,0.16466087,-9.900207,0.00054991525,-0.005667004,-0.000490875 +11816000,imu,-0.17208996,0.16046147,-9.917011,-0.0015655125,-0.007150678,-0.0040124604 +11820000,imu,-0.16373816,0.18333106,-9.9560375,-0.00045544893,-0.007051625,-0.0042211325 +11820000,mag,0.014105275,-0.21695861,0.4267268 +11824000,imu,-0.2124502,0.17680107,-9.954844,-0.0015406329,-0.010627372,0.0006559295 +11828000,imu,-0.21023917,0.19138315,-9.9365835,-0.0012060388,-0.009882795,0.0014392522 +11828000,mag,0.01086336,-0.21738882,0.4206588 +11832000,imu,-0.18717629,0.18736371,-9.925728,-0.000102449805,-0.0048370054,-0.00044375594 +11836000,imu,-0.19771016,0.17127965,-9.934368,-0.0019933672,-0.0045704306,0.0005849966 +11840000,imu,-0.21789634,0.15578838,-9.92688,-0.0022200583,-0.0042897696,0.0031107087 +11844000,imu,-0.22478798,0.16754732,-9.954205,-0.0027028634,-0.0035359692,0.0003465943 +11844000,mag,0.0093443645,-0.219357,0.4298969 +11848000,imu,-0.22951946,0.16680267,-9.959968,-0.0042341724,-0.005206594,-0.00075027 +11852000,imu,-0.1971102,0.14530413,-9.899809,0.00180809,-0.007254702,0.0021465009 +11852000,baro,487.62863 +11852000,mag,0.010512254,-0.21646138,0.42482913 +11856000,imu,-0.18226247,0.19335343,-9.9040985,0.002468412,-0.009354249,0.0029399353 +11860000,imu,-0.2001754,0.21925402,-9.941959,0.0008270775,-0.0073995213,0.005746229 +11864000,imu,-0.21091402,0.20329419,-9.948561,0.0003891219,-0.007143855,0.0028372733 +11868000,imu,-0.20146403,0.200251,-9.927031,-0.0006312504,-0.006142289,-0.005264355 +11868000,mag,-0.0004401517,-0.20906325,0.43096647 +11872000,imu,-0.20643046,0.19262138,-9.934296,0.0007930756,-0.0017849905,-0.0029954878 +11876000,imu,-0.21882027,0.18550609,-9.932987,0.00080300984,-0.002654845,-0.0002802184 +11876000,mag,0.00812655,-0.21422085,0.4282188 +11880000,imu,-0.19178644,0.16141737,-9.920568,0.00081852067,-0.0047023143,-0.0021266341 +11884000,imu,-0.21633017,0.17310306,-9.945877,-0.0009806177,-0.0054969504,-0.002766495 +11888000,imu,-0.24117276,0.19724667,-9.9652405,-0.0013744581,-0.006245983,-0.0044447663 +11892000,mag,0.006740316,-0.22044095,0.42895618 +11892000,imu,-0.21684456,0.2085199,-9.971432,-0.0006298841,-0.006246914,-0.002830242 +11896000,imu,-0.20752102,0.20516959,-9.944734,0.00041442658,-0.0068448037,-4.040513e-05 +11900000,imu,-0.20121422,0.17203128,-9.946776,0.00130919,-0.0052532307,-0.00047819322 +11900000,mag,0.012784985,-0.21815142,0.43086725 +11904000,imu,-0.20477074,0.20122975,-9.923712,0.0015052336,-0.0036180678,-0.0008584018 +11904000,baro,487.6568 +11908000,imu,-0.2048639,0.20887664,-9.926882,0.00045370386,-0.0044670925,-0.0015226324 +11912000,imu,-0.18461797,0.17913277,-9.93004,-0.002404274,-0.007902038,-0.0011875222 +11916000,imu,-0.1809941,0.20166266,-9.916325,-0.0014925392,-0.010778788,0.0036380463 +11916000,mag,0.0058599766,-0.2105195,0.42371142 +11920000,imu,-0.18212081,0.20825657,-9.944767,-0.00048749297,-0.008999108,0.0024576967 +11924000,imu,-0.18592408,0.18756929,-9.926207,-0.00022624222,-0.006899172,-0.0031947177 +11928000,imu,-0.19988358,0.16245477,-9.917206,0.001330544,-0.007154017,-0.00226084 +11928000,mag,0.016087186,-0.20947821,0.4281025 +11932000,imu,-0.17908219,0.15989926,-9.926919,-0.0024035801,-0.0069660484,0.0028549859 +11936000,imu,-0.19603544,0.17165245,-9.949758,-0.0042770524,-0.0042137443,0.0036332968 +11940000,mag,0.012016034,-0.21217622,0.42830843 +11940000,landed,1.0 +11940000,imu,-0.2399759,0.18047519,-9.969843,0.0011338628,-0.0040157605,0.0010566433 +11944000,imu,-0.2391073,0.19447263,-9.977434,-2.141114e-05,-0.0066007576,-0.0004996607 +11948000,mag,0.004963182,-0.21311349,0.4272192 +11948000,imu,-0.21694419,0.1915901,-9.956772,-0.00130157,-0.0076893265,-0.0013755187 +11952000,imu,-0.20611954,0.18863748,-9.93944,0.0029757281,-0.007371949,-0.0035343748 +11956000,imu,-0.21624261,0.19585496,-9.914532,0.0017653363,-0.007218286,-0.0035820513 +11960000,imu,-0.22597195,0.19661896,-9.924402,-0.0024957592,-0.007813174,9.703605e-05 +11964000,imu,-0.21197471,0.18785082,-9.926904,-0.0026268407,-0.0064732353,0.001924105 +11964000,mag,0.012195527,-0.21102081,0.43094805 +11968000,imu,-0.19086972,0.17037386,-9.890142,0.0017071008,-0.0032605627,0.003853412 +11972000,imu,-0.19766484,0.15777957,-9.924971,0.0024855756,-0.0020767767,0.0015355839 +11976000,imu,-0.23094806,0.15551265,-9.942852,0.0008086117,-0.0013088451,0.00022839237 +11976000,baro,487.71783 +11976000,mag,0.006017823,-0.21724816,0.435773 +11980000,imu,-0.23077694,0.19582865,-9.925941,0.0005592353,-0.0012222517,0.0009097617 +11984000,imu,-0.23839983,0.19833638,-9.966681,1.5639565e-06,-0.0076052463,-0.002135034 +11988000,mag,0.011492442,-0.21466883,0.42958838 +11988000,imu,-0.2274169,0.19821355,-9.993185,0.0010369328,-0.01075508,-0.0016516511 +11992000,imu,-0.1964122,0.20819531,-9.976288,-0.00013518104,-0.003625387,-0.00029112535 +11996000,imu,-0.22672082,0.1629969,-9.944958,-0.001723098,-0.0020791069,-0.0023431052 +12000000,mag,0.016925141,-0.22478874,0.43270475 +12000000,imu,-0.24163002,0.15841721,-9.933265,-0.00046858535,-0.005754391,-0.004057209 +12004000,imu,-0.20070815,0.15327825,-9.967051,0.00053851603,-0.0057924776,-0.003355928 +12008000,imu,-0.2019302,0.14675234,-9.950702,0.00033444838,-0.0058877547,0.0007456643 +12012000,mag,0.0102347955,-0.21792454,0.42478147 +12012000,imu,-0.23878998,0.18142797,-9.9152565,-0.00078724284,-0.005995766,0.0018253699 +12016000,imu,-0.24136695,0.24332725,-9.915058,-0.0012226057,-0.007255125,-0.00089007954 +12020000,imu,-0.2073032,0.24243595,-9.885414,-0.0031156961,-0.005948993,-0.0024590285 +12024000,imu,-0.16777523,0.18677448,-9.9018345,-0.0037012023,-0.0059216702,-8.239425e-05 +12024000,mag,0.00624215,-0.21250032,0.4275844 +12028000,imu,-0.16869944,0.17975377,-9.946078,-0.00066631724,-0.0103285685,-0.00021502173 +12032000,imu,-0.1743768,0.17872918,-9.961489,0.0002037711,-0.009888622,-0.0039903694 +12036000,mag,0.014187056,-0.21043244,0.43120852 +12036000,imu,-0.18939012,0.13386464,-9.951714,-0.0023062124,-0.0063984785,-0.0025117253 +12040000,imu,-0.22288758,0.11697924,-9.932971,-0.00413182,-0.00063597545,-0.0011081938 +12044000,imu,-0.21616739,0.14589174,-9.953527,-0.0015691369,-0.0009120035,-0.00097450946 +12048000,mag,0.013973144,-0.21487717,0.43278685 +12048000,baro,487.6568 +12048000,imu,-0.17991796,0.15951397,-9.924759,0.0017967718,-0.007557957,-0.0015505207 +12052000,imu,-0.18311691,0.18632917,-9.934509,-0.0011736075,-0.0048626196,-0.0027980106 +12052000,gps,488105.0,85456074.0,473977508.0,0.01,0.0,0.01 +12056000,imu,-0.21167779,0.2050493,-9.953003,-0.003235269,-0.0023810968,-0.00026863514 +12060000,mag,0.009298569,-0.21033685,0.43288884 +12060000,imu,-0.20963314,0.19933105,-9.946493,4.609497e-06,-0.006109732,0.0005907661 +12064000,imu,-0.19621286,0.16785328,-9.9209,0.000913393,-0.007575446,0.000385028 +12068000,imu,-0.19991902,0.16974983,-9.909499,-0.00040287813,-0.0058335387,0.00040250766 +12072000,imu,-0.19709373,0.19293256,-9.935063,-0.0019152728,-0.0074112923,0.00088221446 +12072000,mag,0.013429387,-0.21023238,0.42946595 +12076000,imu,-0.17974511,0.1724199,-9.955665,-0.0041793264,-0.007355554,0.0021794047 +12080000,imu,-0.18195951,0.17666546,-9.96752,-0.0052898065,-0.0042547313,-0.00038518445 +12084000,imu,-0.19606945,0.1845778,-9.938465,-0.0033797708,-0.0050148703,-0.0008053725 +12084000,mag,0.0025953106,-0.21832272,0.42672455 +12088000,imu,-0.18852048,0.18472423,-9.916206,-0.0044132383,-0.007302143,-0.0007909989 +12092000,imu,-0.1678234,0.197035,-9.899803,-0.0049502808,-0.01039473,-0.0007818918 +12096000,imu,-0.18016157,0.18730316,-9.900314,-0.0005196462,-0.0058392924,-0.0013088823 +12096000,mag,0.010784764,-0.21786894,0.42630857 +12100000,imu,-0.1843243,0.17022188,-9.924576,0.000301801,-0.00053526665,-0.0002229631 +12104000,imu,-0.18324795,0.17545189,-9.927253,-0.0021005135,-0.0046497686,0.0013867898 +12108000,mag,0.012397604,-0.21730313,0.4296882 +12108000,imu,-0.21258438,0.2038636,-9.9229765,-0.0011648047,-0.006790514,0.0008443612 +12112000,imu,-0.1993039,0.18866928,-9.925369,-0.0017565886,-0.0029901527,0.0023973805 +12116000,imu,-0.18974446,0.1726022,-9.938206,-0.0034467033,-0.0036962305,-0.0009698842 +12120000,imu,-0.19847082,0.17225035,-9.941981,-0.0014049168,-0.0068995724,-0.00016942876 +12120000,mag,0.013599794,-0.2171838,0.42302498 +12120000,baro,487.53473 +12124000,imu,-0.19085568,0.16717191,-9.956396,-0.0023431603,-0.0031156149,0.003714324 +12128000,imu,-0.20066658,0.1697674,-9.944143,-0.0042423527,-0.00039794037,0.0008399916 +12132000,mag,0.012660713,-0.21949723,0.4224554 +12132000,imu,-0.210817,0.1601838,-9.933078,-0.0020907477,-0.0038822945,-0.0010252888 +12136000,imu,-0.21442984,0.15404722,-9.952255,-0.0006067537,-0.006306646,-0.0011846169 +12140000,imu,-0.20773852,0.16692702,-9.911549,-0.0011143968,-0.009554183,-0.0019117554 +12144000,mag,0.009945448,-0.2139291,0.43634224 +12144000,imu,-0.17798385,0.19450969,-9.915127,-0.00088093005,-0.010556623,-0.00032303372 +12148000,imu,-0.17927662,0.20514315,-9.95122,-0.0015577403,-0.0058940463,-0.0019064273 +12152000,imu,-0.19335729,0.1975592,-9.938295,0.0008736823,-0.0027171092,-0.005395332 +12156000,imu,-0.21428436,0.17624386,-9.896166,0.0040843687,-0.0030981044,-0.0033757277 +12156000,mag,0.006004589,-0.2214881,0.4238646 +12160000,imu,-0.2145276,0.18225338,-9.902867,0.0032687807,-0.0053885384,0.002672723 +12164000,imu,-0.1904628,0.15553942,-9.922543,0.002439672,-0.0068388595,0.0047827326 +12168000,imu,-0.16590196,0.18834502,-9.927601,-0.0007265198,-0.007128794,0.0005285818 +12168000,mag,0.0066435104,-0.20909998,0.4289087 +12172000,imu,-0.170286,0.24763647,-9.936584,-0.002067962,-0.00793769,-0.0012968299 +12176000,imu,-0.21105818,0.21208715,-9.938994,0.0002619701,-0.0043903957,0.002116261 +12180000,imu,-0.21506578,0.18652289,-9.946287,0.0008127549,-0.0040886775,0.0028368726 +12180000,mag,0.0046686577,-0.21804379,0.42877242 +12184000,imu,-0.2044931,0.14791793,-9.924451,0.00065238785,-0.010058389,0.0013538665 +12188000,imu,-0.19600512,0.1538077,-9.911193,-0.0017732505,-0.010666537,-0.0011558266 +12192000,imu,-0.19303618,0.20171118,-9.922472,-0.002828471,-0.008821445,-0.0020553486 +12192000,baro,487.58636 +12192000,mag,0.010280666,-0.21181239,0.42329863 +12196000,imu,-0.19286102,0.17705186,-9.932417,-0.0018726169,-0.009029755,0.0011503508 +12200000,imu,-0.20724949,0.16269863,-9.959192,0.00042685305,-0.010268161,0.002111258 +12204000,mag,0.009320612,-0.22040884,0.42548996 +12204000,imu,-0.19724727,0.17793474,-9.952668,0.00069229404,-0.007863254,0.0018074496 +12208000,imu,-0.18823081,0.1966242,-9.921478,2.8393426e-06,-0.0026825315,0.0004272479 +12212000,imu,-0.21033216,0.21096583,-9.925537,-0.0011383651,-0.001210678,-0.0005916775 +12216000,mag,0.010726747,-0.22107875,0.42758608 +12216000,imu,-0.21517424,0.1892781,-9.935614,-0.0024191877,-0.0027145238,-0.00045300362 +12220000,imu,-0.20925002,0.16813907,-9.939289,-0.00069080235,-0.004442484,-0.00066546345 +12224000,imu,-0.1908363,0.18840657,-9.921814,0.00070369075,-0.0038293228,-0.002751332 +12228000,imu,-0.17973137,0.20378251,-9.921733,-0.0009883565,-0.003982913,-0.0027273556 +12228000,mag,0.00903014,-0.21780173,0.43144897 +12232000,imu,-0.19060618,0.17846987,-9.929361,-0.004187533,-0.0049772966,0.00012367971 +12236000,imu,-0.19865727,0.17021249,-9.948202,0.00067214156,-0.005248019,0.00021000825 +12240000,imu,-0.21121995,0.1762866,-9.964003,0.0030044266,-0.0071959887,0.0006594473 +12240000,mag,0.011065131,-0.21493019,0.4317481 +12244000,imu,-0.21329343,0.18463512,-9.942139,-0.00040037406,-0.005806028,0.0032338588 +12248000,mag,0.0069768224,-0.21393451,0.42949277 +12248000,imu,-0.19936866,0.2289643,-9.935668,-0.0025285163,-0.0030368224,-0.00013100138 +12252000,imu,-0.19391882,0.21853544,-9.950714,-0.0037307523,-0.0051584896,-0.0015112027 +12256000,imu,-0.19840063,0.19261055,-9.950514,-0.0024027054,-0.007182718,0.0014850715 +12260000,imu,-0.20102659,0.22060698,-9.934579,-0.0024851132,-0.0057730814,0.0009956335 +12264000,baro,487.58167 +12264000,mag,0.009916502,-0.2135547,0.42628002 +12264000,imu,-0.2052904,0.22285466,-9.922615,-0.0011172784,-0.005554941,0.0015369959 +12268000,imu,-0.203563,0.19847576,-9.921589,-0.0009529523,-0.005372985,0.00020759557 +12272000,imu,-0.22293416,0.21049473,-9.969444,-0.005590452,-0.005629845,-0.002903546 +12276000,mag,0.007614571,-0.21149403,0.43536422 +12276000,imu,-0.23981318,0.22841285,-9.972996,-0.004522663,-0.0059022075,-0.0029496897 +12280000,imu,-0.21750839,0.21157326,-9.960989,0.001569183,-0.005466834,0.0006473764 +12284000,mag,0.012874867,-0.21648747,0.4295033 +12284000,imu,-0.1788259,0.1811462,-9.935994,0.0008837383,-0.0064442735,0.000105848885 +12288000,imu,-0.18058139,0.15950164,-9.923275,-5.323154e-07,-0.004975543,0.00027432997 +12292000,imu,-0.20687188,0.19894129,-9.943224,-0.002647803,-0.004412749,0.00095561316 +12296000,imu,-0.18137234,0.20315738,-9.936193,-0.003463406,-0.0054641366,0.00038149965 +12300000,imu,-0.17749223,0.18743612,-9.945233,-0.0014030833,-0.005553756,0.0017889412 +12300000,mag,0.005095319,-0.2143765,0.42606732 +12304000,imu,-0.1875009,0.18087488,-9.953519,-0.0013908448,-0.0032912383,5.075192e-05 +12308000,imu,-0.20202653,0.19253689,-9.976774,-0.00050779566,-0.00248806,0.0004797526 +12312000,mag,0.008558784,-0.2222227,0.42357627 +12312000,imu,-0.19878986,0.18804647,-9.949303,-0.0031278422,-0.00482327,-0.00035391076 +12316000,imu,-0.19557378,0.18012072,-9.92853,-0.0021269375,-0.0064565456,-0.0021946041 +12320000,imu,-0.2162157,0.19628559,-9.933832,-0.0024898213,-0.007343354,-0.0024146603 +12324000,mag,0.003743606,-0.20944786,0.4252917 +12324000,imu,-0.22004086,0.1837778,-9.930168,-0.0035617969,-0.007971711,-0.0015960204 +12328000,imu,-0.21739176,0.17298461,-9.943098,-0.000876373,-0.007202966,-0.00091716275 +12332000,imu,-0.1809065,0.17580757,-9.923918,0.0009896334,-0.00844262,0.00082035054 +12336000,mag,0.01012587,-0.21511123,0.43375072 +12336000,baro,487.60983 +12336000,imu,-0.16432829,0.1770654,-9.919462,0.0009741912,-0.008114718,0.0029377195 +12340000,imu,-0.18882155,0.17497626,-9.908457,-0.0024432377,-0.007686177,0.0017206607 +12344000,imu,-0.20132217,0.19039084,-9.893475,-0.0037312177,-0.0071031596,-0.0011510216 +12348000,mag,0.00696805,-0.21568394,0.42820054 +12348000,imu,-0.19437665,0.16656962,-9.917274,-0.0017805474,-0.0049549555,-0.005313592 +12352000,imu,-0.20322537,0.15578021,-9.916553,-0.0006915578,-0.0037096122,-0.0032967466 +12356000,imu,-0.20940533,0.17749983,-9.921633,-0.0004024517,-0.003732161,-0.0013524934 +12360000,imu,-0.18846253,0.17889503,-9.929277,-0.0006018854,-0.0076283156,8.635331e-05 +12360000,mag,0.011164888,-0.20860966,0.4307324 +12364000,imu,-0.17760746,0.18497624,-9.92351,-0.00021295172,-0.007987078,-0.00021779715 +12368000,imu,-0.19366392,0.18257007,-9.936197,-0.00018558028,-0.0048792213,-0.0025327066 +12372000,mag,0.011121606,-0.2183771,0.43340895 +12372000,imu,-0.23735726,0.16480859,-9.92776,-0.0028801663,-0.004965323,-0.0002289732 +12376000,imu,-0.21797672,0.17298621,-9.930271,-0.00453262,-0.004594342,-0.0010695908 +12380000,imu,-0.1711108,0.1927948,-9.94611,-0.0020545244,-0.004778287,-0.005460047 +12384000,imu,-0.18486969,0.18721423,-9.939207,-0.0008081086,-0.006934623,-0.0058355513 +12384000,mag,0.0018217115,-0.2134135,0.4329895 +12388000,imu,-0.20983653,0.17567046,-9.94242,-0.0031230808,-0.006292372,-0.002890348 +12392000,imu,-0.21523473,0.18839493,-9.961227,-0.006211818,-0.0060164304,0.0014994399 +12396000,imu,-0.21111599,0.17460337,-9.969532,-0.0045201946,-0.005508887,0.0016784224 +12396000,mag,0.009049528,-0.21366285,0.4374876 +12400000,imu,-0.21303284,0.17692535,-9.964563,-0.0013987971,-0.005277737,0.0006433233 +12404000,imu,-0.20242567,0.20149045,-9.922929,-0.00084043,-0.007731228,-0.00067876076 +12408000,mag,0.00016248118,-0.21508718,0.43140802 +12408000,baro,487.62863 +12408000,imu,-0.16803202,0.17787868,-9.89913,-0.0017004933,-0.0067935036,-0.00217844 +12412000,imu,-0.18310851,0.15869553,-9.949599,-0.001011794,-0.0060075168,6.728316e-05 +12416000,imu,-0.22233975,0.18931498,-9.96644,-1.7832687e-06,-0.0067153852,-0.0002062217 +12420000,mag,0.009032784,-0.22157475,0.4345136 +12420000,imu,-0.21376741,0.20278767,-9.926741,-0.0015951023,-0.005191395,0.0005210956 +12424000,imu,-0.19281408,0.15923549,-9.91708,-0.0005632475,-0.0071795476,-0.00071866217 +12428000,imu,-0.17205983,0.17104621,-9.938436,-0.0015184924,-0.004221129,0.00040301494 +12432000,imu,-0.16222444,0.18743499,-9.958518,-0.0029983,-0.00088919274,0.004718293 +12432000,mag,0.0064181676,-0.22323978,0.43010134 +12436000,imu,-0.13007338,0.16887893,-9.976175,-0.0023068418,-0.00034160196,0.0064816144 +12440000,imu,-0.16694707,0.19081396,-9.971474,-0.0033619315,-0.0006676919,0.004418169 +12444000,mag,0.014161426,-0.2038234,0.4268118 +12444000,imu,-0.22690348,0.2124527,-9.9527,-0.004969843,-0.0030126218,-0.004035198 +12448000,imu,-0.20384404,0.21077469,-9.960564,-0.0025710762,-0.004482158,-0.006128895 +12452000,imu,-0.15144968,0.21551476,-9.9752,0.0009672817,-0.005724488,-0.0008776741 +12452000,gps,488109.0,85456074.0,473977508.0,-0.03,0.0,-0.02 +12456000,imu,-0.14190121,0.22996323,-9.969149,0.0009989069,-0.0050572855,0.00048150372 +12456000,mag,0.008358798,-0.21875045,0.4324246 +12460000,imu,-0.19659324,0.22327664,-9.927136,0.00017521958,-0.007928672,-8.216876e-05 +12464000,imu,-0.22748154,0.19783944,-9.896131,-0.00011549368,-0.006405508,-0.00044934862 +12468000,mag,0.008270346,-0.22081386,0.4329916 +12468000,imu,-0.22298056,0.17022128,-9.903368,-0.00073815766,-0.0053438996,0.0002267104 +12472000,imu,-0.19849868,0.18347342,-9.933332,-0.0030942874,-0.008632545,-0.0016549025 +12476000,imu,-0.19358122,0.18213786,-9.950207,-0.006017657,-0.0065863184,-0.0061712516 +12480000,mag,0.009482756,-0.21996494,0.4292948 +12480000,imu,-0.21690221,0.17614383,-9.928556,-0.0035834494,-0.0087736985,-0.00420684 +12480000,baro,487.66617 +12484000,imu,-0.20522036,0.20417336,-9.92172,0.0012992604,-0.009370232,0.0011111337 +12488000,imu,-0.20431498,0.17585725,-9.943783,-0.0011067184,-0.0068854247,-3.5499266e-05 +12492000,mag,0.008170541,-0.22353357,0.42798212 +12492000,imu,-0.21206623,0.1739285,-9.920281,-0.0021493188,-0.0042613246,0.0002789682 +12496000,imu,-0.2049143,0.19225314,-9.903494,-0.0017848449,-0.004857733,0.0020896997 +12500000,imu,-0.19557466,0.18874411,-9.92239,-0.004047589,-0.0053033945,-0.00076573325 +12504000,imu,-0.18215221,0.22256963,-9.935791,-0.002489057,-0.0037897858,-0.0030275586 +12504000,mag,0.01107804,-0.20857021,0.43497553 +12508000,imu,-0.18208125,0.22753042,-9.938645,-0.0053755306,-0.00614073,-6.788487e-05 +12512000,imu,-0.15326163,0.2061534,-9.914642,-0.0037811093,-0.005454143,0.001763597 +12516000,mag,0.013258036,-0.20975818,0.431695 +12516000,imu,-0.17294791,0.1884818,-9.945839,0.00018500745,-0.0023336834,0.0011494898 +12520000,imu,-0.21284467,0.20858741,-9.957497,-0.000867677,-0.0021393136,0.002965643 +12524000,imu,-0.17901337,0.18389656,-9.93466,-0.0005512618,-0.007731911,0.0020303852 +12528000,imu,-0.18559748,0.12276595,-9.934469,-0.0021961697,-0.00943784,-0.00088263355 +12528000,mag,0.009652019,-0.21818559,0.42824858 +12532000,imu,-0.21919468,0.15899965,-9.937703,-0.003641931,-0.006904761,-0.0019484134 +12536000,imu,-0.20021409,0.19090764,-9.948828,-0.0038299153,-0.007054239,-0.0013638327 +12540000,mag,0.0040071146,-0.20598102,0.43305764 +12540000,imu,-0.18256375,0.18875794,-9.962172,-0.0016263471,-0.006885687,4.497004e-05 +12544000,imu,-0.18240249,0.19747746,-9.951139,0.00071760593,-0.0065729357,0.0014553913 +12548000,imu,-0.17301351,0.1984514,-9.934357,0.00048630836,-0.007027785,3.310703e-05 +12552000,baro,487.7225 +12552000,imu,-0.16673243,0.15535383,-9.977168,-0.0022563334,-0.006050437,-0.00015950737 +12552000,mag,0.009262779,-0.21657223,0.42685544 +12556000,imu,-0.18819293,0.15775174,-9.968035,-0.0020302085,-0.0036384328,0.0024100617 +12560000,imu,-0.19845092,0.17969105,-9.916372,0.001249109,-0.0061907982,0.001442077 +12564000,imu,-0.2064199,0.17155233,-9.908346,0.0015061564,-0.008374677,0.00051088084 +12564000,mag,0.008544585,-0.2204764,0.4285663 +12568000,imu,-0.22159618,0.17388469,-9.935191,0.0008508638,-0.0076000867,0.00021158447 +12572000,imu,-0.20039274,0.17015238,-9.9695,0.00018518207,-0.00982428,-0.00028022256 +12576000,imu,-0.19897437,0.1852128,-9.987926,-0.0015355428,-0.007038804,0.0022242172 +12576000,mag,0.009864745,-0.21762145,0.43435848 +12580000,imu,-0.19930336,0.19564995,-9.989602,-0.004091996,-0.005317353,0.0020842913 +12584000,imu,-0.19519079,0.17442855,-9.967892,-0.0034743033,-0.008142738,0.0010609945 +12588000,imu,-0.20984614,0.15939176,-9.922414,8.959149e-05,-0.009176378,-0.0007370801 +12588000,mag,0.009480584,-0.21747144,0.433021 +12592000,imu,-0.19808052,0.16274846,-9.931004,0.00065158465,-0.007698484,-0.00094771566 +12596000,imu,-0.18724105,0.18414487,-9.959682,-0.0028757656,-0.006732344,0.001732469 +12596000,mag,0.006510864,-0.21742325,0.4265783 +12600000,imu,-0.19937366,0.2086222,-9.914339,-0.0055720476,-0.005680088,-0.00026624408 +12604000,imu,-0.19443662,0.19253393,-9.905302,-0.0027993547,-0.0029122506,0.000494978 +12608000,imu,-0.1737072,0.19469166,-9.926157,-0.0015467072,-0.0059014577,0.0006996826 +12612000,imu,-0.16943404,0.20501123,-9.930211,-0.0007160203,-0.0065018926,-0.0024300674 +12612000,mag,0.0101012215,-0.21296597,0.42710894 +12616000,imu,-0.19149375,0.16888274,-9.931404,0.00039711493,-0.005461697,0.0008642164 +12620000,imu,-0.20149635,0.17265248,-9.938409,-0.00016885086,-0.008590904,0.0035825607 +12624000,baro,487.6474 +12624000,mag,0.006147202,-0.21180785,0.4311295 +12624000,imu,-0.20116681,0.19287111,-9.912464,7.374424e-05,-0.007825614,0.0034634608 +12628000,imu,-0.21474876,0.18640345,-9.903364,5.9397564e-05,-0.00704006,0.0012078501 +12632000,imu,-0.20398206,0.1682054,-9.932116,0.00011091211,-0.005218165,0.00023495364 +12636000,mag,0.008921523,-0.21670333,0.4274086 +12636000,imu,-0.1838688,0.15819262,-9.934987,0.0010353372,-0.0023762393,0.0015440813 +12640000,imu,-0.18356806,0.16971448,-9.933057,0.00066478405,-0.0040016454,0.0012465933 +12644000,imu,-0.198621,0.18036537,-9.926445,0.0014104942,-0.0054611666,-0.00089939096 +12644000,mag,0.0074065235,-0.21520396,0.42953545 +12648000,imu,-0.19061954,0.19032773,-9.912098,0.0029192406,-0.0058193756,-0.0017470936 +12652000,imu,-0.20369077,0.15301454,-9.925385,-0.0008351169,-0.003985433,-0.001110338 +12656000,imu,-0.2037383,0.13656996,-9.953835,-0.0032117893,-0.0045971363,0.00013206851 +12660000,imu,-0.1782533,0.15601254,-9.934868,-0.00021960564,-0.0074046506,0.0017278175 +12660000,mag,0.011846928,-0.21096382,0.43039846 +12664000,imu,-0.2107024,0.20544042,-9.933018,0.0013929042,-0.0071099657,0.0027765906 +12668000,imu,-0.18917389,0.22155258,-9.949171,0.0011221786,-0.0048872908,0.0010052015 +12668000,mag,0.011634904,-0.20976268,0.43562967 +12672000,imu,-0.17094128,0.17430589,-9.96983,-0.00085419376,-0.0044021136,-0.0028644395 +12676000,imu,-0.19557981,0.16044067,-9.957574,0.0020432037,-0.0067288172,-0.001547978 +12680000,imu,-0.17384787,0.16236411,-9.923001,0.004110837,-0.0054751,0.0021045422 +12684000,mag,0.0063392636,-0.20933387,0.43490034 +12684000,imu,-0.18115944,0.14376694,-9.9186535,-0.0010552371,-0.00606376,0.0009868565 +12688000,imu,-0.22827715,0.13704053,-9.897046,-0.0019144363,-0.008903143,4.1393258e-05 +12692000,imu,-0.23184133,0.19008192,-9.876049,-0.004011907,-0.009095762,-0.00062706246 +12696000,mag,0.0054723592,-0.21739563,0.4268526 +12696000,imu,-0.21720272,0.18689683,-9.920322,-0.0011382727,-0.008660696,-0.00168642 +12696000,baro,487.60513 +12700000,imu,-0.2008371,0.20628248,-9.940926,0.0022874963,-0.0066827214,-0.0005670766 +12704000,imu,-0.16828321,0.23975378,-9.961061,-0.0013854472,-0.0027675424,-0.0035757034 +12708000,imu,-0.17374672,0.18950798,-9.992968,0.0016447977,-0.0039447667,-0.005565478 +12708000,mag,0.0061421026,-0.2186003,0.42842597 +12712000,imu,-0.18846416,0.19147855,-9.972151,0.0010722458,-0.0059121395,-0.0033144017 +12716000,imu,-0.1858171,0.19441313,-9.938488,-0.0016868713,-0.0064280564,-0.0013839059 +12720000,mag,0.005950499,-0.22262065,0.43214065 +12720000,imu,-0.1857669,0.18422373,-9.938606,-0.000624596,-0.008843562,0.0021316942 +12724000,imu,-0.177466,0.1599494,-9.969061,0.00022688534,-0.005811479,0.0010571105 +12728000,imu,-0.1669778,0.14312722,-9.968027,0.0014922813,-0.0054869014,-0.0018879824 +12732000,imu,-0.19388232,0.18541174,-9.94721,0.000819431,-0.00811767,-0.00081561407 +12732000,mag,0.009083114,-0.21274023,0.42526352 +12736000,imu,-0.21105355,0.20348866,-9.932301,-0.0023984406,-0.006550991,-0.0017208871 +12740000,imu,-0.22166139,0.1816907,-9.924721,-0.0031418132,-0.003332171,-0.0020885582 +12744000,imu,-0.22795635,0.1824624,-9.931087,0.00072769145,-0.0041274354,-0.0035109788 +12744000,mag,0.0123656085,-0.21338372,0.42518768 +12748000,imu,-0.22803712,0.17660426,-9.948202,0.0010449842,-0.009272216,-0.00071511423 +12752000,imu,-0.22783214,0.15358885,-9.953053,-0.00063589663,-0.009533223,0.0034723473 +12756000,mag,0.0105051,-0.21526033,0.42835394 +12756000,imu,-0.19524144,0.15162535,-9.939536,-0.00046929048,-0.0055257985,0.0019690709 +12760000,imu,-0.2189143,0.18614192,-9.923232,-0.003386293,-0.005119063,-0.00030688447 +12764000,baro,487.7366 +12764000,mag,0.015017092,-0.21765938,0.4260687 +12764000,imu,-0.22004351,0.20017953,-9.925331,-0.0037886621,-0.0065579917,-0.00014768174 +12768000,imu,-0.19847578,0.1898436,-9.923264,-0.0027782954,-0.0059116585,0.00055852183 +12772000,imu,-0.23759225,0.18902807,-9.964624,-0.0013737768,-0.0053505767,0.0032066035 +12776000,imu,-0.22996682,0.19133142,-9.972149,0.0024256993,-0.005047355,0.004029045 +12780000,mag,0.008025027,-0.21496591,0.4291994 +12780000,imu,-0.18478456,0.18713611,-9.941292,0.0015506627,-0.006527034,-0.0017910236 +12784000,imu,-0.20333329,0.20268124,-9.928595,-0.0013869649,-0.007048268,-0.00059695495 +12788000,imu,-0.22300723,0.20708877,-9.931307,-0.002921809,-0.00391586,0.003064746 +12792000,imu,-0.19527586,0.14159954,-9.971642,-0.0022008638,-0.0030807948,0.0010773861 +12792000,mag,-0.00082116417,-0.21419187,0.42993918 +12796000,imu,-0.20678717,0.14360671,-9.962654,0.00082406326,-0.0069308514,0.00087969674 +12800000,imu,-0.21172693,0.21411309,-9.916361,0.0002434042,-0.0067081125,0.00014151269 +12804000,imu,-0.20209703,0.1985019,-9.929432,-0.0055514844,-0.004715062,-0.00018909933 +12804000,mag,0.01724892,-0.21937338,0.43343744 +12808000,imu,-0.22508658,0.17607981,-9.916481,-0.0033799524,-0.009579211,-0.0013959457 +12812000,imu,-0.24856167,0.20282891,-9.918141,-0.0010396958,-0.0065534553,9.087008e-05 +12816000,imu,-0.23116958,0.17946662,-9.943559,-0.0026920987,-0.0030176425,-0.0029837622 +12816000,baro,487.5441 +12816000,mag,0.014658931,-0.21852459,0.42789146 +12820000,imu,-0.23433474,0.17869864,-9.914852,-0.0012447935,-0.006689159,-0.005315337 +12824000,imu,-0.24476871,0.20505574,-9.919432,-0.0020729746,-0.005494139,-0.002449343 +12828000,mag,0.0034725883,-0.21920446,0.4286995 +12828000,imu,-0.1906908,0.19169807,-9.953416,-0.0021384829,-0.007445132,-0.0015833126 +12832000,imu,-0.17931044,0.19844095,-9.9607525,-0.0021528488,-0.006768361,-0.0021398922 +12836000,imu,-0.20061153,0.1672265,-9.977535,-0.002282817,-0.003471843,-0.0031677536 +12840000,mag,0.00989034,-0.21701789,0.4336193 +12840000,imu,-0.19782427,0.1578358,-9.993891,-0.00198634,-0.005003795,-0.000661922 +12844000,imu,-0.21587503,0.17592484,-9.974316,-0.0046488694,-0.00644335,-0.00033615713 +12848000,imu,-0.24183849,0.16706406,-9.946701,-0.0062447824,-0.0066755493,-0.0020922343 +12852000,imu,-0.23090886,0.18174355,-9.92916,-0.0053871213,-0.0060504684,-0.0034681445 +12852000,mag,0.0034183254,-0.22174357,0.42670706 +12852000,gps,488110.0,85456075.0,473977508.0,0.02,0.0,0.03 +12856000,imu,-0.21410233,0.17044136,-9.951181,-0.0014916426,-0.0049298564,-0.0014113217 +12860000,imu,-0.19535372,0.16470867,-9.9344635,0.0015806139,-0.0017886523,1.5334132e-05 +12864000,imu,-0.19346368,0.15632783,-9.911875,-0.0017029085,-0.0032019287,0.0018570044 +12864000,mag,0.014794508,-0.21359012,0.42481703 +12868000,imu,-0.21032071,0.17167912,-9.923615,-0.003072973,-0.00559467,0.0016421065 +12872000,imu,-0.19035006,0.18616273,-9.910476,-0.0008813299,-0.0059750574,-0.00048959313 +12876000,imu,-0.17350832,0.18417992,-9.9172735,-0.00074856775,-0.008256942,-0.0011245272 +12876000,mag,0.003291058,-0.21747003,0.42968702 +12880000,imu,-0.16609624,0.1821543,-9.920019,-0.0011132276,-0.006982545,-0.00044620252 +12884000,imu,-0.17900532,0.18542059,-9.93671,-0.0017810989,-0.0057435133,-8.010302e-05 +12888000,baro,487.6427 +12888000,imu,-0.18445748,0.18448499,-9.937412,-0.0009359476,-0.008458437,-0.0040879725 +12888000,mag,0.013371996,-0.21505351,0.4323951 +12892000,imu,-0.17898738,0.19356278,-9.902536,-0.0001011425,-0.007945492,-0.0023215844 +12896000,imu,-0.20417553,0.1878302,-9.900314,0.0005689192,-0.0052731964,-0.0006101267 +12900000,imu,-0.19290724,0.1440738,-9.924549,-0.0009848101,-0.006751031,-0.001846972 +12900000,mag,0.0072469753,-0.20889291,0.419018 +12904000,imu,-0.2012853,0.17020111,-9.931185,-0.00070457003,-0.0051193107,-0.0014143281 +12908000,imu,-0.23096305,0.20204026,-9.924595,0.0031611975,-0.00518602,-0.002700685 +12912000,imu,-0.21233217,0.17702281,-9.965851,0.00055409514,-0.008709429,-0.0016439318 +12912000,mag,0.009638181,-0.21134163,0.42714065 +12916000,imu,-0.19283627,0.1549096,-9.981171,-0.0016084815,-0.00727987,-0.00045936144 +12920000,imu,-0.2212367,0.1420809,-9.959071,0.000485352,-0.0048180865,0.00046384594 +12920000,mag,0.0066678976,-0.21209891,0.430299 +12924000,imu,-0.2493122,0.13738228,-9.972578,-0.0006332208,-0.0049593025,0.000505093 +12928000,imu,-0.21126796,0.14817485,-9.942662,-0.004172119,-0.0041242945,-0.002740811 +12932000,mag,0.016026255,-0.21727526,0.43405148 +12932000,imu,-0.19822314,0.15023035,-9.922007,-0.0008617863,-0.003257052,-0.0029026899 +12936000,imu,-0.18883793,0.17885527,-9.944336,-0.00018728945,-0.0042083515,-0.002483673 +12940000,landed,1.0 +12940000,imu,-0.18706484,0.22406346,-9.93951,-0.0061085536,-0.0067623663,-0.0012050833 +12944000,imu,-0.21906117,0.19626792,-9.951134,-0.003945268,-0.007166658,0.002500776 +12948000,imu,-0.20651367,0.17172979,-9.954423,-0.0043849256,-0.006469555,0.0012474764 +12948000,mag,0.010460944,-0.22230214,0.4367833 +12952000,imu,-0.18885644,0.15380785,-9.92526,-0.0027553102,-0.007327013,-0.00085318624 +12956000,imu,-0.17364398,0.14044668,-9.909549,0.00047201704,-0.0054718954,0.00045724137 +12960000,mag,0.014631585,-0.2200432,0.4290407 +12960000,baro,487.70844 +12960000,imu,-0.17412978,0.17365755,-9.928183,-0.0026469692,-0.006126414,0.002670643 +12964000,imu,-0.20757312,0.17833468,-9.938732,-0.0058051827,-0.0054944027,0.0011536963 +12968000,imu,-0.20645125,0.18057625,-9.926935,-0.005144443,-0.0055916896,-0.0014181511 +12972000,mag,0.010015488,-0.21519056,0.43337843 +12972000,imu,-0.21355125,0.22115631,-9.915635,-0.0025710082,-0.008875999,-0.002036418 +12976000,imu,-0.2149446,0.2223474,-9.906378,-0.0017017098,-0.008173889,0.00040913618 +12980000,mag,0.0037809177,-0.22106677,0.42750952 +12980000,imu,-0.21455583,0.18764138,-9.901024,0.0008784497,-0.0061401986,-0.0018118804 +12984000,imu,-0.21566743,0.17271861,-9.92094,0.0012721265,-0.0052170334,-0.0038479806 +12988000,imu,-0.20009771,0.1728366,-9.922659,0.0016710154,-0.0036469507,0.00067745463 +12992000,imu,-0.21280274,0.19114067,-9.930132,0.0016320066,-0.004293445,-3.229503e-05 +12996000,imu,-0.17898855,0.20018306,-9.906977,0.0016500584,-0.00818664,0.0009176391 +12996000,mag,-0.001468548,-0.21895051,0.4274752 +13000000,imu,-0.1797745,0.18471922,-9.87523,0.0012654392,-0.0094713485,0.0020383194 +13004000,imu,-0.20442414,0.16927816,-9.931425,0.000199303,-0.005631374,0.0028654644 +13008000,mag,0.008436739,-0.21775252,0.42319065 +13008000,imu,-0.20372641,0.16961618,-9.929421,-0.0010048398,-0.004411977,0.0026337528 +13012000,imu,-0.2291835,0.17414352,-9.91627,-0.0023731408,-0.007432043,-0.0004056255 +13016000,imu,-0.1916613,0.14641535,-9.933613,-0.0015953009,-0.007048608,-0.0013102473 +13020000,mag,0.01071608,-0.2129796,0.4232495 +13020000,imu,-0.14587162,0.16619979,-9.949855,-0.003836163,-0.0052330783,-0.0019704297 +13024000,imu,-0.17754424,0.19286828,-9.950792,-0.0039855153,-0.0044538584,0.00078682083 +13028000,baro,487.57697 +13028000,mag,0.011141356,-0.21850036,0.43287548 +13028000,imu,-0.18252948,0.189071,-9.91181,-5.941745e-05,-0.00407312,0.002066428 +13032000,imu,-0.17125982,0.18248421,-9.916405,0.0015844796,-0.0057261633,0.0019766542 +13036000,imu,-0.19167396,0.18803863,-9.930347,0.0006575853,-0.0053702705,0.004207431 +13040000,imu,-0.18185362,0.203334,-9.942216,-0.00083681213,-0.0052307216,0.002902307 +13044000,mag,0.0028344037,-0.2162076,0.42710418 +13044000,imu,-0.22007455,0.1968285,-9.94733,-0.005299875,-0.0057967687,-0.0005901978 +13048000,imu,-0.2720555,0.19985113,-9.919477,-0.0052344864,-0.0010724347,-0.001095828 +13052000,imu,-0.25081122,0.18947057,-9.907398,-0.00062581996,-0.00084026303,0.00076746626 +13056000,mag,0.005358972,-0.21368621,0.4314193 +13056000,imu,-0.2150721,0.18304422,-9.913801,-0.0018337565,-0.009598674,0.0010760524 +13060000,imu,-0.1983284,0.17783521,-9.913678,0.0024864122,-0.01152568,-0.00039835478 +13064000,imu,-0.20094782,0.17602898,-9.938353,0.0047027804,-0.0052147456,-0.00019170111 +13068000,mag,0.009636878,-0.21564068,0.42705148 +13068000,imu,-0.19224304,0.20490664,-9.96627,0.00076712476,-0.006047606,0.0014496454 +13072000,imu,-0.20081925,0.19094658,-9.920509,0.00036051567,-0.005932477,0.0020580562 +13076000,imu,-0.18968545,0.15056871,-9.930677,-0.0006337709,-0.005888333,0.0016141585 +13076000,mag,0.010979801,-0.21708524,0.43031365 +13080000,imu,-0.177455,0.16764912,-9.974993,-0.00032102395,-0.0064943465,-0.00069683813 +13080000,baro,487.5488 +13084000,imu,-0.1882526,0.18617307,-9.953788,0.0008522939,-0.00447022,0.0014509796 +13088000,imu,-0.19032113,0.17531615,-9.928081,0.00060324674,-0.005043451,0.0034244494 +13092000,mag,0.0119680045,-0.21953782,0.4354265 +13092000,imu,-0.20803075,0.16007154,-9.928577,-0.00043362885,-0.006540152,0.001356206 +13096000,imu,-0.21704003,0.16954862,-9.951851,-0.0032937834,-0.0065676607,-0.00043587288 +13100000,mag,0.01026473,-0.21870808,0.42891413 +13100000,imu,-0.19605178,0.1776477,-9.930027,-0.006167294,-0.0066509084,-0.00048479228 +13104000,imu,-0.15301058,0.16631822,-9.938697,-0.006052447,-0.0073360084,3.4722587e-05 +13108000,imu,-0.16126937,0.17506568,-9.942484,-0.0047250576,-0.004990172,-0.002217571 +13112000,mag,0.009620834,-0.22066022,0.42591265 +13112000,imu,-0.18992226,0.17909776,-9.931324,-0.0021800399,-0.0038348576,-0.000645781 +13116000,imu,-0.1794304,0.18992724,-9.9333725,0.0018351413,-0.005653793,0.0026812588 +13120000,imu,-0.19450535,0.18774699,-9.915625,0.00028568154,-0.0031833297,0.003379711 +13124000,imu,-0.20260566,0.14888023,-9.928368,-0.0015138021,-0.0004889695,0.0010339002 +13128000,imu,-0.1675688,0.13519193,-9.926931,0.00080328155,-0.003063846,-0.00057192007 +13128000,mag,0.0056359554,-0.2193396,0.43552667 +13132000,imu,-0.16406333,0.15177855,-9.934216,0.001882809,-0.006521336,-0.0011833173 +13136000,imu,-0.1636414,0.15085174,-9.942179,-0.0024572215,-0.008157711,-0.0015039903 +13140000,imu,-0.16395175,0.16733503,-9.958545,-0.0045946077,-0.006948511,0.002084446 +13140000,mag,0.0062150555,-0.21298581,0.42954868 +13144000,imu,-0.1747428,0.19578937,-9.979641,-0.0010903096,-0.0037993982,-0.00031248762 +13148000,imu,-0.20204628,0.17359626,-9.962859,0.00046670318,-0.0069109984,-0.002096671 +13152000,imu,-0.2160807,0.18213153,-9.949909,-0.0024966686,-0.005826131,0.0006520288 +13152000,baro,487.62393 +13152000,mag,0.008531793,-0.21649091,0.43032515 +13156000,imu,-0.2257228,0.1822723,-9.945392,-0.001640677,-0.002565577,0.0013845845 +13160000,imu,-0.21146028,0.18188043,-9.936606,0.0028833204,-0.007024697,0.0018084522 +13164000,imu,-0.18825486,0.21586181,-9.921524,0.0024480112,-0.007904045,-8.524029e-05 +13164000,mag,0.009417389,-0.21387838,0.43220162 +13168000,imu,-0.20613134,0.19285607,-9.928106,0.0011109359,-0.0072197467,-0.0004622883 +13172000,imu,-0.22885345,0.14099526,-9.966388,0.00011139038,-0.006087378,-0.004280665 +13176000,imu,-0.22773457,0.13599938,-9.98443,-0.0006740456,-0.006727672,-0.004714922 +13176000,mag,0.014138471,-0.21167332,0.4235744 +13180000,imu,-0.18590675,0.17374715,-9.969758,-0.0005677599,-0.00773428,0.0005502312 +13184000,imu,-0.17048141,0.18843916,-9.907847,-0.0023856307,-0.003653872,0.0020131285 +13188000,mag,0.009470437,-0.20618808,0.42917836 +13188000,imu,-0.20211688,0.18787383,-9.889313,-0.002136131,-0.0046107005,-5.3941338e-05 +13192000,imu,-0.17955068,0.17541265,-9.926035,-0.004056878,-0.007615978,-0.0016131741 +13196000,mag,0.0048872624,-0.22612146,0.4286408 +13196000,imu,-0.18353216,0.16065206,-9.936073,-0.005253385,-0.0035841553,-0.0013735017 +13200000,imu,-0.22101827,0.19367863,-9.9432125,0.0011291743,-0.004400336,0.0018082535 +13204000,imu,-0.21035174,0.2227057,-9.952643,0.0021260653,-0.0054086456,-0.00034372296 +13208000,imu,-0.22050798,0.21714923,-9.963337,-0.0003285649,-0.004773373,-0.0026373009 +13212000,mag,0.015346779,-0.21839778,0.43668932 +13212000,imu,-0.18291175,0.17699276,-9.958803,-0.00010084795,-0.0057669557,0.0005043743 +13216000,imu,-0.16772987,0.16403885,-9.939207,0.00018633173,-0.0072789374,0.0014607469 +13220000,imu,-0.21819717,0.16703151,-9.940699,-0.00012110648,-0.006126459,0.0026816523 +13224000,imu,-0.19758591,0.17542285,-9.960075,-0.0021515307,-0.0038979643,-0.00015527906 +13224000,baro,487.469 +13224000,mag,0.013814309,-0.21648042,0.42926976 +13228000,imu,-0.18273145,0.19149728,-9.955442,-0.0008572021,-0.0044917474,-0.0026653972 +13232000,imu,-0.20328969,0.18061231,-9.959592,-0.0032108766,-0.0069822986,5.5571883e-05 +13236000,imu,-0.20026168,0.15216173,-9.930567,-0.0020735753,-0.007386242,0.00068776653 +13236000,mag,0.0072416104,-0.22246242,0.42551243 +13240000,imu,-0.19941147,0.1587459,-9.911398,0.0018565897,-0.0066330675,-0.002926781 +13244000,imu,-0.18350922,0.16830106,-9.931024,0.0005049919,-0.0092776455,-0.0021183148 +13248000,mag,0.009431285,-0.20961858,0.43043265 +13248000,imu,-0.19587168,0.13468651,-9.93682,0.0015233062,-0.008778406,-0.0019855185 +13252000,gps,488111.0,85456073.0,473977508.0,0.01,0.0,-0.01 +13252000,imu,-0.2189025,0.15002751,-9.940008,0.0027892652,-0.0067293392,-0.0016451445 +13256000,imu,-0.1792742,0.20139585,-9.924385,0.0019826645,-0.0038273279,0.0012246119 +13260000,imu,-0.1592431,0.20710209,-9.911722,-0.0006432221,-0.00227476,-0.0004081813 +13260000,mag,0.010997278,-0.22021201,0.42316034 +13264000,imu,-0.21272399,0.19492804,-9.939626,0.0008953957,-0.0063044545,0.00098751 +13268000,imu,-0.2434042,0.19831921,-9.935113,-0.0009916896,-0.008190331,0.0015248149 +13272000,imu,-0.19859585,0.18778919,-9.911085,-0.002635816,-0.0045743044,-0.0012049414 +13272000,mag,0.014194241,-0.21747583,0.4268785 +13276000,imu,-0.16650489,0.19035605,-9.923478,-0.0013014214,-0.0034386464,-0.00016777401 +13280000,imu,-0.18651398,0.20260891,-9.916189,-0.0028953897,-0.006066527,-8.06736e-05 +13284000,imu,-0.18011871,0.21202676,-9.923286,-0.005423863,-0.008253704,-0.001181259 +13284000,mag,0.011152083,-0.22168566,0.42545965 +13288000,imu,-0.19014543,0.2001135,-9.936958,-0.0055168835,-0.0067682364,-0.0025310058 +13292000,imu,-0.19548291,0.18026341,-9.940963,-0.005163262,-0.005719614,-0.00056726095 +13296000,imu,-0.18384063,0.18261676,-9.928761,-0.0052587828,-0.004905853,-0.0030352941 +13296000,mag,0.008408776,-0.2172108,0.42720252 +13296000,baro,487.50186 +13300000,imu,-0.17198932,0.17097251,-9.927164,-0.0012543079,-0.0039778254,-0.0069766557 +13304000,imu,-0.20911327,0.12994643,-9.936922,0.002203468,-0.005351686,-0.0021384459 +13308000,imu,-0.22175819,0.16916245,-9.929285,-0.0004969952,-0.002441625,0.0015300578 +13308000,mag,0.008976473,-0.2207883,0.42669812 +13312000,imu,-0.17915401,0.22382717,-9.939244,-0.002975254,1.2975196e-05,0.0040116506 +13316000,imu,-0.178601,0.21094799,-9.948868,8.185839e-05,-0.0040093847,0.0020542582 +13320000,mag,0.007273713,-0.2111069,0.4248739 +13320000,imu,-0.16698435,0.19373375,-9.950619,-0.0032602674,-0.006390329,-0.0009555605 +13324000,imu,-0.17289484,0.17865978,-9.945517,-0.006061733,-0.0061168633,-0.0007656165 +13328000,imu,-0.20032197,0.19151966,-9.943134,-0.0035008672,-0.0027765124,-0.0018286736 +13332000,mag,0.010156658,-0.21718279,0.4302896 +13332000,imu,-0.20145716,0.17386168,-9.946787,-0.0022590035,-0.0038099315,-0.001993137 +13336000,imu,-0.1859843,0.17633608,-9.946291,-0.0010945036,-0.0044398676,-0.0013611472 +13340000,imu,-0.20328966,0.1823381,-9.964916,-0.0013751275,-0.0011099158,-0.0016671504 +13344000,mag,0.011768054,-0.21035817,0.4336486 +13344000,imu,-0.21508852,0.17143019,-9.960042,-0.0016177383,-0.004485711,-0.00073188683 +13348000,imu,-0.21571878,0.17537326,-9.927143,0.0012497498,-0.0042679356,-0.00050338346 +13352000,imu,-0.2114186,0.16250104,-9.941612,0.0034769047,-0.002959875,-0.0022627867 +13356000,imu,-0.2006461,0.21043624,-9.944203,0.0015238206,-0.003687072,-0.0029696636 +13356000,mag,0.012965638,-0.21306893,0.42383346 +13360000,imu,-0.19626512,0.19927874,-9.932978,-0.00135286,-0.0043051634,-0.0024554466 +13364000,imu,-0.19843023,0.15898891,-9.956551,-0.0013369607,-0.006990635,-0.0021570108 +13368000,imu,-0.20941497,0.16158395,-9.960436,-0.0014146982,-0.006695866,-0.002222349 +13368000,mag,0.011895683,-0.21239854,0.42378238 +13368000,baro,487.59576 +13372000,imu,-0.1727989,0.15395172,-9.940582,-0.0031254466,-0.0049909716,-0.0014680909 +13376000,imu,-0.18255445,0.18270917,-9.943395,-0.0036653467,-0.0053251665,0.0008381641 +13380000,imu,-0.19190258,0.18771093,-9.939939,-0.004038733,-0.0046686823,-0.00021540195 +13380000,mag,0.011226189,-0.21370366,0.42257518 +13384000,imu,-0.17320225,0.17167932,-9.9267025,-0.0035366002,-0.0033931339,-0.0013349031 +13388000,imu,-0.17756918,0.17576319,-9.931399,-0.002900357,-0.004616548,-0.00033657797 +13392000,mag,0.0024708842,-0.21559872,0.43248457 +13392000,imu,-0.19220078,0.18873557,-9.947564,-0.0019022385,-0.0057388525,-0.00010780844 +13396000,imu,-0.21722448,0.19455586,-9.967188,-0.0005289686,-0.0057937875,0.00139331 +13400000,imu,-0.19316672,0.18156777,-9.951948,-0.0034978103,-0.0057003694,-0.0004152168 +13404000,imu,-0.2069332,0.17791143,-9.95436,-0.0016444331,-0.007828114,-0.0028729404 +13404000,mag,0.008997345,-0.21469846,0.42689478 +13408000,imu,-0.21735147,0.16447522,-9.962074,0.0020127676,-0.008094177,-0.0015439773 +13412000,imu,-0.21415284,0.15951763,-9.939301,-0.00014544226,-0.006407192,0.00082024565 +13416000,mag,0.005219566,-0.20884648,0.43777576 +13416000,imu,-0.22229698,0.15646023,-9.931709,0.0004276629,-0.007660532,0.0020328697 +13420000,imu,-0.21103062,0.14011167,-9.931072,0.00057390984,-0.0060832924,0.00079114694 +13424000,imu,-0.18319884,0.15312038,-9.933676,0.0008863263,-0.0020440172,-0.001059092 +13428000,mag,0.008116118,-0.21983121,0.43245173 +13428000,imu,-0.19279991,0.16425188,-9.908761,0.0016774791,-0.0025717565,-0.00015802716 +13432000,imu,-0.21976803,0.18030633,-9.889994,0.00082599703,-0.006752783,-0.0014224324 +13436000,imu,-0.20947291,0.19619289,-9.925798,-0.00068451127,-0.005010041,-0.0025052184 +13440000,baro,487.53473 +13440000,mag,0.0071733613,-0.21642743,0.42897964 +13440000,imu,-0.22236112,0.20546916,-9.9475155,-0.0009819716,-0.0018027835,-0.0009064035 +13444000,imu,-0.22283228,0.20628501,-9.943929,-0.0011387549,-0.0051269745,0.000109270964 +13448000,imu,-0.18290533,0.21206893,-9.93619,-0.00076080684,-0.007830385,-0.0015030663 +13452000,imu,-0.1784386,0.21846221,-9.91663,0.0006004091,-0.005513643,-0.0018856325 +13452000,mag,0.02418047,-0.21764508,0.42699143 +13456000,imu,-0.2167837,0.1839996,-9.931889,-0.001194164,-0.004265106,-0.000495545 +13460000,imu,-0.21174012,0.15016635,-9.956293,-0.0037661127,-0.0062163975,-0.0009206203 +13460000,mag,0.010358693,-0.21230581,0.43944263 +13464000,imu,-0.16466185,0.17813873,-9.987425,-0.0013167128,-0.0068998164,-0.0010217975 +13468000,imu,-0.1560594,0.21995981,-9.993825,-0.00026743615,-0.009776425,-0.00035857994 +13472000,imu,-0.22896823,0.21667609,-9.948687,-0.0021734731,-0.010763431,-0.00072798505 +13476000,mag,0.0099211205,-0.22374137,0.42715332 +13476000,imu,-0.23382607,0.19273251,-9.917441,-0.0004895034,-0.006589712,-1.802692e-05 +13480000,imu,-0.1856607,0.18047652,-9.916746,-0.0017315575,-0.0057155727,-0.0016147245 +13484000,imu,-0.18024164,0.1901073,-9.917865,-0.0054215486,-0.006467945,-0.0017528153 +13488000,mag,0.010711936,-0.21612191,0.4301976 +13488000,imu,-0.19505128,0.16730498,-9.886639,-0.003238437,-0.0046405154,0.0007786281 +13492000,imu,-0.18223095,0.16565529,-9.927946,-0.0018808617,-0.0037778325,-0.0028551447 +13496000,imu,-0.1669592,0.17652553,-9.950226,-0.0033680163,-0.0064938837,-0.0014269399 +13496000,mag,0.010545617,-0.21736133,0.4272185 +13500000,imu,-0.1921556,0.15438394,-9.964413,-0.0029503598,-0.0050648763,-0.00082353735 +13504000,imu,-0.17722729,0.1583861,-9.963932,-0.00044869233,-0.0056478884,-0.0045140292 +13508000,imu,-0.15338886,0.1771618,-9.907097,0.0019610785,-0.008484233,-0.0034864673 +13512000,imu,-0.18955642,0.1671524,-9.915977,0.0013312408,-0.0061124787,-0.002647731 +13512000,mag,0.0015121362,-0.2142931,0.4241487 +13512000,baro,487.67087 +13516000,imu,-0.20871565,0.15171464,-9.95462,0.0014501944,-0.0021448224,-0.0015349201 +13520000,mag,0.017210703,-0.21455346,0.42953983 +13520000,imu,-0.1851662,0.17440514,-9.961662,0.0020857523,0.0015998976,0.0011020171 +13524000,imu,-0.16596371,0.20445229,-9.918224,-0.0020893347,-0.0031642122,0.00074894435 +13528000,imu,-0.21140239,0.2063181,-9.924795,-0.0030109598,-0.005707433,-0.0007458099 +13532000,mag,0.0096571585,-0.21338318,0.42416167 +13532000,imu,-0.23758727,0.2079048,-9.955582,-0.0029036046,-0.0034172006,-0.0012535457 +13536000,imu,-0.18394205,0.2004847,-9.93505,-0.0051319003,-0.007240849,-0.0019519321 +13540000,imu,-0.14548293,0.20894642,-9.926012,-0.0034498468,-0.0065822476,-0.0023408441 +13544000,imu,-0.14398183,0.20194311,-9.953518,-0.0019779245,-0.005540558,-0.002648522 +13548000,imu,-0.18722269,0.1550805,-9.948193,-0.0013013848,-0.00921908,-0.00014014915 +13548000,mag,0.012285082,-0.21956109,0.43109262 +13552000,imu,-0.18147847,0.153373,-9.922757,0.0014991417,-0.009546946,0.0037025681 +13556000,imu,-0.17325057,0.18210693,-9.900844,0.0011173683,-0.00825474,0.0032231845 +13560000,mag,0.0034818605,-0.21432722,0.43109584 +13560000,imu,-0.19501793,0.18299435,-9.924921,0.0005798889,-0.006739108,-0.0012109372 +13564000,imu,-0.19054952,0.17269327,-9.951077,0.0019657752,-0.004068185,-0.002836371 +13568000,imu,-0.17951714,0.20076467,-9.943056,-0.0011982898,-0.002974813,-0.0006135522 +13572000,mag,0.009403163,-0.22030431,0.4271993 +13572000,imu,-0.17404217,0.21362509,-9.937639,-0.0027519094,-0.004400487,0.0009913986 +13576000,imu,-0.19209675,0.18562028,-9.927674,-0.0021624777,-0.0034025027,0.0011585294 +13580000,mag,0.00893739,-0.20923425,0.42853928 +13580000,imu,-0.18575066,0.17431922,-9.932906,-0.0010313208,-0.0049523013,-0.0006823828 +13584000,imu,-0.17671618,0.17157696,-9.924601,0.0015468433,-0.0076068086,-0.0005184751 +13584000,baro,487.6333 +13588000,imu,-0.18596387,0.19487055,-9.926021,0.0014850845,-0.005888594,0.0035471385 +13592000,imu,-0.21963444,0.20525111,-9.953085,0.00019558433,-0.0030658292,0.0041580508 +13596000,imu,-0.22027418,0.18842684,-9.958166,-0.0027322231,-0.0002502232,-0.00055388384 +13596000,mag,0.010146994,-0.21502589,0.4354777 +13600000,imu,-0.21322592,0.18932515,-9.947199,-0.0034255125,-0.0006416922,-0.00094246387 +13604000,imu,-0.17924431,0.19464515,-9.923418,-0.0005702617,-0.0040143034,0.0019583604 +13604000,mag,0.004104928,-0.21277727,0.4301695 +13608000,imu,-0.13922721,0.18316601,-9.941843,-8.1453916e-05,-0.004512071,0.0020150584 +13612000,imu,-0.19083212,0.1674853,-9.976813,-0.003042864,-0.0036828122,-0.00012936897 +13616000,imu,-0.20563668,0.16486704,-9.94854,-0.0030216125,-0.005866164,-0.001882729 +13620000,imu,-0.18850827,0.19375385,-9.928345,0.0005882558,-0.0054169293,-0.0019578636 +13620000,mag,0.014691056,-0.2157463,0.42881525 +13624000,imu,-0.18762474,0.19168292,-9.9357815,0.0014063226,-0.0046662544,-0.0025820874 +13628000,imu,-0.17658855,0.16848275,-9.953037,-0.002199899,-0.00695684,0.00015577997 +13632000,imu,-0.16000845,0.18834284,-9.969583,-0.0045932154,-0.005428707,0.00032403148 +13632000,mag,0.022218468,-0.21169712,0.42273402 +13636000,imu,-0.1724061,0.18505074,-9.977161,-0.003054463,-0.003464734,0.0002650245 +13640000,imu,-0.20075217,0.15982743,-9.980837,-0.00072471995,-0.005424612,0.0016381697 +13644000,mag,0.010696377,-0.21982373,0.43229604 +13644000,imu,-0.18727945,0.15559882,-9.957919,0.00032323203,-0.005073824,7.84638e-05 +13648000,imu,-0.18934536,0.16514029,-9.919487,0.0011541523,-0.006145461,-0.00076820905 +13648000,gps,488107.0,85456074.0,473977508.0,0.01,-0.01,0.0 +13652000,imu,-0.20261249,0.17403473,-9.932886,-0.000761097,-0.0066371597,-0.0001547709 +13656000,baro,487.66617 +13656000,mag,0.0069529423,-0.22178511,0.43288076 +13656000,imu,-0.16073218,0.14198104,-9.960218,-0.0013230949,-0.0056629037,0.0016088771 +13660000,imu,-0.13543716,0.123522125,-9.973659,0.003085511,-0.005190432,-0.0020954066 +13664000,imu,-0.15417445,0.15905173,-9.977995,0.00084105786,-0.005356542,-0.0030372906 +13668000,imu,-0.17058218,0.15185913,-9.944406,-0.0022976955,-0.00798351,-0.0014214272 +13668000,mag,0.01161147,-0.21443588,0.42764607 +13672000,imu,-0.19399205,0.14621894,-9.924341,-0.0009709985,-0.0073831934,-0.0021135444 +13676000,imu,-0.18279777,0.17584547,-9.9446945,-0.0019134618,-0.0048968294,0.00015004679 +13680000,imu,-0.1428135,0.17260417,-9.97304,-0.0035581533,-0.0053057102,0.00027609378 +13680000,mag,0.0062144645,-0.22055668,0.43670744 +13684000,imu,-0.15728644,0.17199847,-9.959801,0.00061839406,-0.006864282,0.0018377858 +13688000,imu,-0.18346745,0.21499412,-9.963951,-0.00073187094,-0.007840747,0.0010442125 +13692000,imu,-0.2183582,0.1941259,-9.988447,-0.00347879,-0.007262584,0.0005442351 +13692000,mag,0.008348528,-0.21366496,0.4236363 +13696000,imu,-0.22763398,0.17160155,-9.962936,-0.0013305254,-0.0066360612,0.0017613611 +13700000,imu,-0.18562943,0.1865691,-9.937228,-0.0019463991,-0.0053267675,0.0006116087 +13700000,mag,0.010339988,-0.21416387,0.4306661 +13704000,imu,-0.16349828,0.18267024,-9.978224,-0.0010542688,-0.0062247505,0.000109072054 +13708000,imu,-0.19183476,0.18200715,-9.964407,0.0010518827,-0.008531205,-7.743876e-05 +13712000,imu,-0.21168184,0.18402424,-9.895886,0.0009652302,-0.008739044,0.00346104 +13716000,mag,0.004897804,-0.21250775,0.43001598 +13716000,imu,-0.21363533,0.19251615,-9.918383,-0.0007534077,-0.008391218,0.0033782716 +13720000,imu,-0.24989457,0.20427947,-9.937373,-3.7601763e-05,-0.0053090146,0.0009562136 +13724000,imu,-0.21445647,0.21398892,-9.939814,-0.00064777257,-0.0041856887,0.0019121483 +13728000,mag,0.007526771,-0.22121769,0.42605302 +13728000,imu,-0.19264743,0.21923855,-9.932869,-0.002309415,-0.0056558554,0.0006694 +13728000,baro,487.6427 +13732000,imu,-0.22529173,0.2059032,-9.919103,-0.0019147424,-0.0066382755,-0.0031019147 +13736000,imu,-0.19531074,0.19857033,-9.932163,-0.00087359996,-0.0072550015,0.00038885933 +13740000,imu,-0.16434261,0.20734449,-9.914004,-0.0021313468,-0.006218017,0.00082708814 +13740000,mag,0.010498953,-0.21053973,0.42417118 +13744000,imu,-0.18678062,0.18818817,-9.8881645,-0.0019959891,-0.0034983011,0.0010637909 +13748000,imu,-0.24107668,0.17253982,-9.916241,0.00026876957,-0.00064745574,0.0046332246 +13752000,mag,0.008342742,-0.21874906,0.4369959 +13752000,imu,-0.21566057,0.20225404,-9.927404,0.00081304624,-0.00050143927,0.0002749115 +13756000,imu,-0.19093017,0.20835055,-9.920477,0.00074045843,-0.006515215,0.0002637308 +13760000,imu,-0.20247765,0.18402596,-9.960776,-0.003443138,-0.008029294,-0.00042319088 +13764000,imu,-0.20526275,0.18103369,-9.950515,-0.0034379335,-0.004767801,-0.0030230028 +13764000,mag,0.004508546,-0.21559176,0.42501885 +13768000,imu,-0.21045692,0.18570952,-9.914963,0.00024978432,-0.006423258,-0.00019533969 +13772000,imu,-0.20726852,0.16429892,-9.939518,0.0040788706,-0.007965325,-0.0035643843 +13776000,mag,0.008069688,-0.21827747,0.42626664 +13776000,imu,-0.1926657,0.16124392,-9.960682,0.0048412937,-0.0066877985,-0.0037000352 +13780000,imu,-0.18417352,0.17718448,-9.937578,0.002361839,-0.0052458984,0.0009091522 +13784000,imu,-0.16836002,0.19878154,-9.903942,-0.00016343166,-0.004043659,0.0006993307 +13788000,imu,-0.17129773,0.21188858,-9.919263,-0.0037357002,-0.0031265407,-0.00050496985 +13788000,mag,0.014580004,-0.21283844,0.43270278 +13792000,imu,-0.22819503,0.19675471,-9.945066,-0.0054518664,-0.0051084496,0.0015628131 +13796000,imu,-0.22608529,0.18762125,-9.919479,-0.0018373311,-0.006181792,0.0043271314 +13800000,baro,487.66617 +13800000,mag,0.0065153977,-0.21342455,0.42965016 +13800000,imu,-0.17771548,0.18674457,-9.924902,0.00026556625,-0.0050933594,0.0023880855 +13804000,imu,-0.17591842,0.18629242,-9.9513035,-0.002437164,-0.00779125,0.0008093862 +13808000,imu,-0.2021273,0.17831138,-9.982115,-0.00068005244,-0.005495386,-0.0005279324 +13812000,imu,-0.22252351,0.1668131,-9.971598,-0.0019871308,-0.0018842752,0.0023784323 +13812000,mag,0.012297212,-0.22346693,0.4213846 +13816000,imu,-0.22438136,0.18688071,-9.916176,-0.0038859607,-0.0025689907,0.002531827 +13820000,imu,-0.20167324,0.18093228,-9.950815,-0.0017971536,-0.0020522657,-0.0025948223 +13824000,imu,-0.18474522,0.15330428,-9.983736,-0.0019463759,-0.0019038426,-0.0035728042 +13824000,mag,0.0130015025,-0.21572043,0.43204263 +13828000,imu,-0.18273649,0.16496004,-9.924354,-0.0008311393,-0.0048187478,-0.0016010223 +13832000,imu,-0.18876588,0.1660032,-9.914913,-0.00018931509,-0.00823814,-0.00012876054 +13836000,mag,0.010548956,-0.22141802,0.42858884 +13836000,imu,-0.1905379,0.18112464,-9.962959,-0.00051859324,-0.008536726,-0.001999477 +13840000,imu,-0.16787574,0.16601223,-9.98258,-0.0021235372,-0.0096098045,-0.002134451 +13844000,imu,-0.16959387,0.1554534,-9.977507,-0.0051293294,-0.0075237122,-7.104237e-05 +13848000,mag,0.011687185,-0.22210753,0.42793566 +13848000,imu,-0.19897841,0.17234811,-9.9511175,-0.0041372743,-0.006533439,0.0027445739 +13852000,imu,-0.19796577,0.16895908,-9.94463,-0.0034890433,-0.0059034377,0.00054175674 +13856000,imu,-0.1917777,0.1864555,-9.950394,-0.0045203725,-0.0071983403,-0.00044155453 +13860000,imu,-0.20519343,0.19966829,-9.955127,-0.0035352192,-0.0066955993,0.0027258405 +13860000,mag,0.011456038,-0.21778493,0.43125954 +13864000,imu,-0.21708009,0.20234816,-9.935198,-0.0017557837,-0.006191716,0.0011160998 +13868000,imu,-0.18272385,0.17193316,-9.925465,0.00020367402,-0.0092543075,0.0017633067 +13872000,imu,-0.18502423,0.1605352,-9.94758,-0.0011670444,-0.0065799747,0.0014592572 +13872000,mag,0.006193077,-0.2163383,0.4301612 +13872000,baro,487.61453 +13876000,imu,-0.22208971,0.19493519,-9.971069,-0.0014838557,-0.005056403,4.8435697e-05 +13880000,imu,-0.19983515,0.18414125,-9.965146,0.00073536264,-0.005754143,-0.0011217553 +13884000,mag,0.009276938,-0.21444905,0.4341844 +13884000,imu,-0.18688998,0.16018908,-9.941831,0.00046357248,-0.005043336,-0.00036028714 +13888000,imu,-0.17097394,0.2075622,-9.949474,0.0037938468,-0.00495071,-0.00013959019 +13892000,imu,-0.1467625,0.23351078,-9.946861,-0.00013656149,-0.0056618177,-0.0028352381 +13896000,mag,0.0017301207,-0.22130896,0.42947158 +13896000,imu,-0.17555785,0.20995797,-9.915627,-0.0030967072,-0.0057582306,-0.0016309712 +13900000,imu,-0.15596534,0.22424479,-9.913258,0.0015674033,-0.008265686,-0.00083977537 +13904000,imu,-0.17399569,0.21623184,-9.935192,0.0033453389,-0.0066747074,0.00058487075 +13908000,imu,-0.24525757,0.20136537,-9.946751,0.0036633715,-0.0046797004,0.00049940526 +13908000,mag,0.010409477,-0.21608491,0.43369916 +13912000,imu,-0.23350218,0.17135762,-9.940713,0.0003859576,-0.005561358,-0.0024607629 +13916000,imu,-0.20592931,0.16811496,-9.9236,-0.0033797547,-0.008296751,4.8027585e-05 +13920000,imu,-0.19833347,0.20468704,-9.92396,-0.0022118902,-0.009215064,0.0003686279 +13920000,mag,0.009077702,-0.2206575,0.4331548 +13924000,imu,-0.19822356,0.19361709,-9.950874,-0.0013991387,-0.008083657,-0.0037476397 +13928000,imu,-0.17618373,0.16800153,-9.964961,-0.0029626174,-0.009749135,-0.0023504794 +13932000,mag,0.010746834,-0.20715916,0.4296039 +13932000,imu,-0.17174065,0.1630008,-9.917104,-0.0021148678,-0.01091903,-0.0011266338 +13936000,imu,-0.20353505,0.15310936,-9.91568,-0.0030941095,-0.010778764,0.0011529014 +13940000,imu,-0.23611511,0.15537988,-9.946089,-0.0014382716,-0.0069506406,0.00023052614 +13940000,landed,1.0 +13944000,mag,0.01610922,-0.21840456,0.43050382 +13944000,baro,487.6333 +13944000,imu,-0.21358973,0.19102526,-9.950163,-0.0031462647,-0.004515602,-0.0017616892 +13948000,imu,-0.18060376,0.18367754,-9.941385,-0.004425476,-0.006338182,-0.0006711982 +13952000,imu,-0.19205633,0.17316343,-9.90941,-0.001663118,-0.007592583,-0.0028453507 +13956000,imu,-0.19172296,0.1774797,-9.921134,-0.0009927182,-0.0053495383,-0.002716947 +13956000,mag,0.015074506,-0.21456926,0.43169287 +13960000,imu,-0.20582393,0.18926677,-9.931013,-0.002241608,-0.0057192775,0.0012206207 +13964000,imu,-0.20504102,0.2198142,-9.937,-0.0012061524,-0.00652732,0.0014198512 +13968000,mag,0.0046702866,-0.21092413,0.42729646 +13968000,imu,-0.21060622,0.19615363,-9.9344635,0.003160429,-0.0037771787,-7.0514856e-05 +13972000,imu,-0.17217761,0.19382723,-9.916172,0.0026841708,-0.0035961557,0.001739543 +13976000,imu,-0.15065187,0.22393784,-9.954052,0.0011989153,-0.006004515,-0.0010431099 +13980000,mag,0.0060162353,-0.21344785,0.4305196 +13980000,imu,-0.2163735,0.20980263,-9.952806,0.0004078121,-0.007913524,-0.0018178682 +13984000,imu,-0.22585166,0.18883178,-9.919006,0.0006612782,-0.0064278306,0.00016240036 +13988000,imu,-0.2078999,0.20279935,-9.923332,-0.0021204078,-0.0031983703,0.0014162137 +13992000,imu,-0.19269004,0.21475531,-9.914831,-0.0025780303,-0.0029364445,0.002180786 +13992000,mag,0.011598494,-0.21997654,0.4308213 +13996000,imu,-0.18538372,0.21707572,-9.947002,-0.0008424017,-0.0057077208,0.0019168198 +14000000,imu,-0.20439911,0.2263541,-9.949669,0.00077585876,-0.008859654,0.00016269341 +14004000,mag,0.006897343,-0.22031957,0.43328694 +14004000,imu,-0.2046226,0.22515555,-9.932829,-0.000106548374,-0.0091132,-0.0014268887 +14008000,imu,-0.17895737,0.19312948,-9.942104,-0.0021215277,-0.006803181,0.001980411 +14012000,imu,-0.16067408,0.15627004,-9.9390545,0.00017575931,-0.0026500546,0.0024154815 +14016000,baro,487.6474 +14016000,imu,-0.18029247,0.17333128,-9.909016,0.0001403402,-0.004191746,-0.0006012018 +14016000,mag,0.008589871,-0.20618002,0.43510604 +14020000,imu,-0.2100818,0.18071206,-9.90425,-0.0019972243,-0.006580653,-0.0039345757 +14024000,imu,-0.2290745,0.16691503,-9.946289,-0.004531478,-0.007301555,-0.004394933 +14028000,mag,0.006120948,-0.21080396,0.4267951 +14028000,imu,-0.24975665,0.17422518,-9.94358,-0.006141293,-0.008564569,-0.0028818925 +14032000,imu,-0.22940129,0.17302741,-9.925354,-0.005568818,-0.0066523105,-0.0002763816 +14036000,imu,-0.17923102,0.17988512,-9.931325,-0.0012913682,-0.008559082,0.0011087812 +14040000,mag,0.008733688,-0.2116272,0.43053716 +14040000,imu,-0.17419922,0.18213919,-9.945517,0.0017052825,-0.0075318674,-0.0017879112 +14044000,imu,-0.191125,0.16819318,-9.919838,0.0006737852,-0.003515474,-0.00053318817 +14048000,imu,-0.21244714,0.15771489,-9.913224,2.059112e-05,-0.005576227,-0.001594886 +14052000,mag,0.011568956,-0.2176092,0.42544 +14052000,imu,-0.2203531,0.18266836,-9.931986,-0.0019340655,-0.0050840443,-0.0031345554 +14052000,gps,488108.0,85456074.0,473977508.0,0.02,0.0,-0.02 +14056000,imu,-0.20266116,0.19783121,-9.919703,-0.0019274382,-0.0049023204,-0.0007110762 +14060000,imu,-0.17098802,0.1776082,-9.943455,-0.0013599425,-0.0071081556,0.0011439511 +14064000,imu,-0.17796327,0.18006675,-9.973553,-0.00036731554,-0.0051694163,0.0017751697 +14064000,mag,0.02065406,-0.211584,0.4334769 +14068000,imu,-0.18395573,0.15406696,-9.938963,0.0011345086,-0.008279578,0.0007277456 +14072000,imu,-0.18588015,0.16854821,-9.894781,-0.0020899572,-0.0077455104,-0.0003918849 +14076000,mag,0.0093123065,-0.21611151,0.43057743 +14076000,imu,-0.20609355,0.19839992,-9.899313,-0.0032352365,-0.0036165535,-0.0015752473 +14080000,imu,-0.18094411,0.174005,-9.94128,-0.0015933372,-0.007281497,0.0011498833 +14084000,imu,-0.14712873,0.1617139,-9.916119,0.00029727895,-0.0084298635,0.004382081 +14088000,mag,0.013469397,-0.21785054,0.43148136 +14088000,imu,-0.15071933,0.20023134,-9.888023,-3.183491e-06,-0.0053411485,0.003790476 +14088000,baro,487.6568 +14092000,imu,-0.20122993,0.18930799,-9.919721,-0.001912452,-0.005195174,0.0021901575 +14096000,imu,-0.22257158,0.14639191,-9.908659,-0.003015262,-0.005345937,-0.0009522059 +14100000,mag,0.014771304,-0.21814004,0.4314838 +14100000,imu,-0.20666179,0.16282147,-9.903103,-0.0027332134,-0.0020743906,-0.0023421717 +14104000,imu,-0.19812603,0.18001007,-9.949865,-3.0724543e-05,-0.0029637376,-0.0017796563 +14108000,imu,-0.19663475,0.18667418,-9.952927,0.0020097657,-0.010331263,6.820034e-05 +14108000,mag,0.013367028,-0.2119538,0.42313498 +14112000,imu,-0.19224143,0.18558854,-9.916225,0.0007132476,-0.010993771,0.0019259863 +14116000,imu,-0.1982886,0.16792075,-9.932339,-0.0012060928,-0.006806281,-0.0009097454 +14120000,imu,-0.20579937,0.18024121,-9.943079,0.0001648458,-0.005243147,-0.0017823725 +14124000,imu,-0.19766815,0.19176207,-9.886649,0.0004069171,-0.0030577844,0.00039573046 +14124000,mag,0.006124678,-0.21601702,0.4248536 +14128000,imu,-0.19167005,0.18136755,-9.906488,-0.00076540775,-0.0050604404,0.001280367 +14132000,imu,-0.2058486,0.19523405,-9.970192,-0.003933664,-0.0060779545,0.0031050504 +14136000,mag,0.0049437196,-0.22202514,0.42924708 +14136000,imu,-0.18533054,0.1803416,-9.981442,-0.0031497795,-0.0021250264,0.005202599 +14140000,imu,-0.16540612,0.15887736,-9.957506,0.0018041078,-0.0013686615,0.0026292193 +14144000,imu,-0.18551019,0.15984687,-9.932835,-0.0011064615,-0.0019408765,-0.0010643936 +14148000,mag,0.011267203,-0.21738316,0.43390453 +14148000,imu,-0.19687894,0.17446695,-9.928961,-0.0018367483,-0.0046752533,-0.0036598896 +14152000,imu,-0.21419612,0.17042011,-9.93177,-0.00015932087,-0.0048196116,-0.0038519835 +14156000,imu,-0.21013194,0.16697606,-9.942092,-0.0031478042,-0.0047330507,0.0011075714 +14160000,mag,0.007089439,-0.21292529,0.43048093 +14160000,baro,487.6474 +14160000,imu,-0.17788708,0.1718038,-9.918567,-0.0029238092,-0.006396006,0.0036928419 +14164000,imu,-0.16259703,0.16954127,-9.936935,-0.0010270111,-0.004049693,0.0007686363 +14168000,imu,-0.17443931,0.1881197,-9.962836,-0.0011821961,-0.006130353,-0.0009052069 +14172000,mag,0.0144939795,-0.21567684,0.43663096 +14172000,imu,-0.22314277,0.16091217,-9.96176,0.0010135571,-0.00623739,-0.0003535645 +14176000,imu,-0.24833448,0.14545982,-9.957998,0.0008964342,-0.0024887437,-0.0012449059 +14180000,imu,-0.22029579,0.17871223,-9.929873,-0.0012008991,-0.003370322,-0.0004181881 +14184000,mag,0.0049359836,-0.21460262,0.4272843 +14184000,imu,-0.20202482,0.19413467,-9.921673,-0.0013152645,-0.005611991,-0.0013843722 +14188000,imu,-0.19976556,0.20648709,-9.927345,-0.0045896154,-0.008068924,-0.0026676399 +14192000,imu,-0.18846527,0.18281159,-9.925991,-0.003998396,-0.006940065,0.00088736694 +14196000,mag,0.007300867,-0.2182463,0.43365413 +14196000,imu,-0.18466485,0.18284564,-9.940414,0.0015254508,-0.003589555,0.0008877978 +14200000,imu,-0.20410053,0.19234227,-9.947133,0.0010398331,-0.004932704,-0.0007329984 +14204000,imu,-0.20458275,0.1626116,-9.910583,-0.0017996713,-0.0055242153,-0.0025060973 +14208000,mag,0.017025951,-0.21613614,0.42930222 +14208000,imu,-0.20498413,0.16684166,-9.904905,0.0005603983,-0.0052302666,0.00076603977 +14212000,imu,-0.20230836,0.17585385,-9.920719,0.0034503029,-0.0038316485,0.0048103654 +14216000,imu,-0.20358865,0.17134975,-9.932823,0.0009436034,-0.0030007577,0.0022626934 +14220000,imu,-0.21947962,0.1963274,-9.951839,0.00091065787,-0.0034913877,-0.0011899018 +14220000,mag,0.015029342,-0.21833372,0.42600402 +14224000,imu,-0.19130021,0.19553213,-9.930119,0.002068784,-0.004382512,-0.0012692967 +14228000,imu,-0.15528713,0.17849396,-9.92313,0.0022841378,-0.006802061,-0.0004516836 +14232000,imu,-0.1758493,0.20090461,-9.953049,0.00032738718,-0.0047656065,-1.5125271e-06 +14232000,baro,487.57227 +14232000,mag,0.0050432514,-0.21405092,0.43459082 +14236000,imu,-0.20826197,0.1885009,-9.989454,-0.00057795714,-0.004112838,-0.0015941942 +14240000,imu,-0.20519911,0.15638852,-9.982498,0.003088416,-0.0045225094,-0.0061777546 +14244000,mag,0.0033402534,-0.21337874,0.4301399 +14244000,imu,-0.20397109,0.14658761,-9.971626,0.0027662183,-0.0034567153,-0.0054039 +14248000,imu,-0.18984562,0.15065731,-9.943087,-0.001853033,-0.0042040753,-0.0019283425 +14252000,imu,-0.17384884,0.1657628,-9.903727,-0.0027594925,-0.0038272748,-0.0015108401 +14256000,mag,0.007742854,-0.22011146,0.4321429 +14256000,imu,-0.15834606,0.15702216,-9.913966,-0.0017801097,-0.005029501,0.00064088934 +14260000,imu,-0.18211174,0.13403437,-9.884972,-0.0021165605,-0.0065153665,0.0012298187 +14264000,imu,-0.19937143,0.17488527,-9.913345,-0.0014322593,-0.0066135637,-0.004018122 +14268000,mag,0.00913656,-0.21669948,0.432781 +14268000,imu,-0.17210841,0.20954417,-9.95063,-0.001070996,-0.008047003,-0.0023430767 +14272000,imu,-0.15681499,0.18167382,-9.956936,-0.0027471292,-0.0075207786,0.0008053167 +14276000,imu,-0.16465947,0.19132115,-9.956492,-0.0019561818,-0.0068898154,0.0005544437 +14280000,imu,-0.19786687,0.1761247,-9.922377,-0.00043279774,-0.008659172,-0.00039841898 +14280000,mag,0.01649772,-0.20977584,0.43328068 +14284000,imu,-0.21196634,0.16224566,-9.909462,-0.00028379832,-0.009119109,-0.0016538369 +14288000,imu,-0.16945755,0.18100819,-9.92215,0.0006134033,-0.008033378,-0.00037061702 +14292000,imu,-0.14581734,0.15128249,-9.95516,0.001925956,-0.0050308406,-0.0006869906 +14292000,mag,0.009436517,-0.21504739,0.43691882 +14296000,imu,-0.18287453,0.15032865,-9.958168,0.0006866511,-0.005025983,-0.0015079333 +14300000,imu,-0.19531688,0.17667718,-9.936956,-0.0007437322,-0.0050644204,0.00064265175 +14304000,imu,-0.19445217,0.16883978,-9.940883,0.0009460925,-0.0030447473,-0.0016684423 +14304000,baro,487.68027 +14304000,mag,0.016132535,-0.21850947,0.42994353 +14308000,imu,-0.17717496,0.19894186,-9.924166,-0.00149428,-0.0035879058,-0.002653888 +14312000,imu,-0.19215378,0.21376911,-9.914371,-0.0013119717,-0.0047834893,-0.0014092394 +14316000,imu,-0.20234649,0.1862904,-9.912756,-9.776133e-05,-0.0056279902,-0.0006471458 +14316000,mag,0.0063402443,-0.21687078,0.42783588 +14320000,imu,-0.17337915,0.20499815,-9.92543,-0.0024521947,-0.006245513,-0.0010191926 +14324000,imu,-0.18543652,0.17551027,-9.974354,-0.004256277,-0.004620149,0.0010210173 +14328000,mag,0.0098655755,-0.22121163,0.4267005 +14328000,imu,-0.16854475,0.15286995,-9.967742,-0.0034525162,-0.003024698,0.0021394647 +14332000,imu,-0.14331184,0.19440866,-9.934684,-0.00061054865,-0.004646263,0.0017071669 +14336000,imu,-0.20434545,0.21411908,-9.939005,-0.0026265865,-0.0076180617,0.0016727841 +14340000,mag,0.011085128,-0.2169983,0.4307211 +14340000,imu,-0.22272953,0.19132274,-9.9414835,-0.0017843615,-0.008243156,-0.0003677836 +14344000,imu,-0.17968419,0.16879694,-9.92766,0.0015937656,-0.006531308,0.00027414356 +14348000,mag,0.008097224,-0.2175628,0.42478535 +14348000,imu,-0.17977642,0.18659893,-9.918587,-0.0030969912,-0.0036501007,-0.0024346046 +14352000,imu,-0.18078426,0.20938171,-9.922268,-0.004696917,-0.003921787,-0.0020976686 +14356000,imu,-0.17657283,0.20592083,-9.915411,-0.0024486184,-0.0049106474,-0.0030426518 +14360000,imu,-0.18658261,0.19408602,-9.908421,-0.0008272586,-0.0019143331,-0.0030997957 +14364000,imu,-0.19996196,0.19673999,-9.951509,-0.0017986972,-0.0056246794,0.0018842825 +14364000,mag,0.015998444,-0.22211498,0.43273067 +14368000,imu,-0.20099622,0.16971071,-9.969739,-0.00029085006,-0.007188194,0.0019086208 +14372000,imu,-0.1821014,0.17158265,-9.963936,0.0011772737,-0.004600469,-0.00044504713 +14376000,baro,487.6333 +14376000,mag,0.013642386,-0.2151147,0.4294512 +14376000,imu,-0.20346111,0.17868027,-9.950821,0.0016787592,-0.0060568424,-0.0024755707 +14380000,imu,-0.2383298,0.16797337,-9.92345,0.003228805,-0.004385091,-0.0035661496 +14384000,imu,-0.19916055,0.17573339,-9.921999,-0.0016806,-0.0045146174,0.0013862227 +14388000,imu,-0.1514259,0.1585881,-9.953129,0.0009948182,-0.006835375,0.0035500885 +14388000,mag,0.010342273,-0.21468577,0.42895812 +14392000,imu,-0.17430964,0.1852871,-9.949429,0.004112379,-0.006742129,0.0012662326 +14396000,imu,-0.19052996,0.2023736,-9.906137,-0.00034294318,-0.0070448085,-0.0012529709 +14400000,imu,-0.17578575,0.19801584,-9.919321,0.0005645019,-0.007861269,-0.0022429584 +14400000,mag,0.010438783,-0.21696529,0.42819703 +14404000,imu,-0.17839679,0.18834226,-9.94187,0.0008853591,-0.005173606,0.0018279061 +14408000,imu,-0.19159828,0.19002007,-9.931114,0.001008278,-0.0031552871,0.003927989 +14412000,mag,0.013016534,-0.21829222,0.43667826 +14412000,imu,-0.17723778,0.2083125,-9.921985,0.001642248,-0.006365221,0.0032189945 +14416000,imu,-0.15979129,0.18615544,-9.9175,-0.00083514536,-0.0057097487,0.0010851824 +14420000,imu,-0.20017545,0.18066801,-9.933489,-0.0030552587,-0.0074019,-0.0023018734 +14424000,imu,-0.18711165,0.1843998,-9.957304,-0.004130326,-0.006753709,-0.003020427 +14424000,mag,0.009290238,-0.22056222,0.4304311 +14428000,imu,-0.15189657,0.15708455,-9.93294,-0.003243387,-0.0028865912,-0.0003621924 +14432000,imu,-0.17015032,0.16711591,-9.897881,-0.003259691,-0.006092418,0.0015182073 +14436000,imu,-0.17150754,0.1853329,-9.912994,-0.0021941108,-0.007576679,0.0011889467 +14436000,mag,0.012433905,-0.22092171,0.4310507 +14440000,imu,-0.18464032,0.15770975,-9.939655,-0.000563504,-0.0047112387,4.9367463e-05 +14444000,imu,-0.19856355,0.16714358,-9.938808,0.00056490843,-0.0039153355,0.0018846046 +14448000,imu,-0.21499687,0.20287028,-9.939806,-3.9706916e-05,-0.0043504755,0.0031426311 +14448000,baro,487.7366 +14448000,mag,0.0054808725,-0.22075346,0.43759367 +14452000,imu,-0.20872712,0.20004177,-9.945729,-0.0023998301,-0.002630138,-0.002582682 +14452000,gps,488116.0,85456074.0,473977508.0,-0.01,-0.01,0.0 +14456000,imu,-0.18210056,0.2363498,-9.951416,-0.0015057602,-0.004034829,-0.0012059335 +14460000,mag,0.014211982,-0.22111301,0.43142417 +14460000,imu,-0.17677365,0.21729313,-9.9422245,-0.00090799865,-0.0048779356,0.0012366468 +14464000,imu,-0.1647158,0.16270937,-9.914828,-0.0008214745,-0.0034710122,-0.0016333833 +14468000,imu,-0.18461522,0.16215082,-9.922591,0.0005354487,-0.0057853707,0.0026534689 +14472000,mag,0.007908796,-0.21690077,0.43049926 +14472000,imu,-0.17956342,0.15949112,-9.953862,0.0014586875,-0.005816294,0.002540294 +14476000,imu,-0.16298477,0.19058537,-9.955227,0.0007828042,-0.003875336,0.0026265157 +14480000,imu,-0.16838446,0.1949161,-9.916575,-0.0011331866,-0.006240344,0.0032746873 +14484000,imu,-0.16820595,0.17161015,-9.905066,-0.001621008,-0.005670291,-0.0014079985 +14484000,mag,0.005199272,-0.21933384,0.4264906 +14488000,imu,-0.1791197,0.18008395,-9.918613,0.00023081545,-0.0043386905,-0.0012165244 +14492000,imu,-0.18419729,0.19631088,-9.937146,0.0010142111,-0.005002027,-0.0012993964 +14496000,mag,0.009106501,-0.21704407,0.426514 +14496000,imu,-0.18329057,0.1610676,-9.94631,-0.0027062853,-0.0026462732,-0.0030555679 +14500000,imu,-0.17602122,0.1412914,-9.915594,-0.0030451643,-0.0040143877,0.00197565 +14504000,imu,-0.19370365,0.18064736,-9.906835,-0.0018354148,-0.0058271,0.0022976394 +14508000,mag,0.010996489,-0.2099201,0.4315446 +14508000,imu,-0.18168181,0.2031158,-9.922024,-0.0027849497,-0.003458606,0.00020664968 +14512000,imu,-0.12713122,0.1907271,-9.947268,-0.0046765297,-0.004225549,0.0018162683 +14516000,imu,-0.11562477,0.1872554,-9.95445,-0.0038061778,-0.005014004,0.00041380513 +14520000,baro,487.67557 +14520000,mag,0.010695583,-0.21721426,0.4258815 +14520000,imu,-0.1629408,0.18704793,-9.980631,0.0003825271,-0.0024860022,-0.0029061267 +14524000,imu,-0.19450429,0.19622216,-9.978622,-0.00041837303,-0.002932263,-0.0037995505 +14528000,imu,-0.18137673,0.19216314,-9.941158,0.0012014706,-0.0038032532,-0.0021502369 +14532000,imu,-0.15985924,0.19819364,-9.9119005,0.0016520207,-0.0047783754,-0.00028339835 +14532000,mag,0.01027398,-0.21252766,0.42944494 +14536000,imu,-0.15870973,0.19118379,-9.928951,-0.0031420605,-0.0047605573,0.0031478668 +14540000,imu,-0.18972409,0.17181957,-9.966192,-0.0016554429,-0.0029819913,0.003993799 +14544000,imu,-0.1882905,0.16119069,-9.941277,-3.0154297e-05,-0.0033987134,0.0021412608 +14544000,mag,0.003831957,-0.21586283,0.43386436 +14548000,imu,-0.21072264,0.15339342,-9.945122,-0.00032907637,-0.004924364,-0.0014675272 +14552000,imu,-0.22300744,0.16611218,-9.925727,0.0021734743,-0.006003227,-0.0026165347 +14556000,mag,0.003618848,-0.21663533,0.42863393 +14556000,imu,-0.17909405,0.1657741,-9.918686,-0.0007043182,-0.005852583,0.0034624164 +14560000,imu,-0.18474677,0.16920236,-9.9483595,-0.0038232552,-0.008718572,0.0042018997 +14564000,imu,-0.18753678,0.14986391,-9.936048,-0.0024149225,-0.0064307232,0.0004704584 +14568000,imu,-0.20507519,0.1394049,-9.919909,4.9454236e-05,-0.00331172,-0.0012031058 +14568000,mag,0.010362051,-0.2189275,0.42720088 +14572000,imu,-0.20466018,0.15916745,-9.906284,0.00048068608,-0.0028027755,-0.0012796584 +14576000,imu,-0.18488604,0.1829555,-9.916444,-0.002891119,-0.0044500316,-0.0006305085 +14580000,mag,0.015036649,-0.2235921,0.43344557 +14580000,imu,-0.21563941,0.18692766,-9.919954,-0.0022630703,-0.008408923,-0.00073317793 +14584000,imu,-0.21388379,0.17744775,-9.898928,0.0023432826,-0.0061189276,0.0028051934 +14588000,imu,-0.1896098,0.15225665,-9.901314,0.0022410762,-0.0032348756,0.0022790933 +14592000,baro,487.57697 +14592000,imu,-0.19212098,0.12678267,-9.9329195,0.0005365036,-0.0037282235,0.0011558913 +14592000,mag,0.00586549,-0.2173649,0.43041456 +14596000,imu,-0.20783028,0.16030152,-9.943155,0.000108205175,-0.0060784672,0.0004643911 +14600000,imu,-0.21180937,0.1640186,-9.930082,-0.0014676243,-0.006612918,-0.0041483217 +14604000,mag,0.014229799,-0.2131735,0.4308323 +14604000,imu,-0.2001001,0.13768871,-9.958925,-0.0035135124,-0.0013768856,-0.0034366515 +14608000,imu,-0.20232666,0.14009246,-9.952643,-0.002134129,-0.0029446431,-0.0020407534 +14612000,imu,-0.21488613,0.1398399,-9.912576,-0.0018746097,-0.0077194017,-0.0017137317 +14616000,imu,-0.21592599,0.14414304,-9.925262,-0.0024094777,-0.0048850668,0.0015149093 +14616000,mag,0.013708374,-0.21999098,0.42625028 +14620000,imu,-0.20784476,0.14620753,-9.950087,-0.001965381,-0.0040231748,0.0013614778 +14624000,imu,-0.22299045,0.17713413,-9.954444,-0.003933252,-0.006923087,-0.0011011778 +14628000,imu,-0.24547708,0.20860416,-9.941002,-0.004495038,-0.0069721597,-0.0007528994 +14628000,mag,0.0076879826,-0.2141765,0.42631435 +14632000,imu,-0.2535175,0.18582948,-9.913252,-0.0019070136,-0.004277305,0.00070594525 +14636000,imu,-0.24631402,0.2010427,-9.90497,0.0011757285,-0.002785228,0.00056003296 +14636000,mag,0.008531207,-0.21791646,0.43082187 +14640000,imu,-0.2048952,0.20731278,-9.890766,4.6272897e-05,-0.003367927,0.0010964933 +14644000,imu,-0.186188,0.18644993,-9.895613,-0.0016278888,-0.0069111804,0.0010463177 +14648000,imu,-0.21655008,0.16266224,-9.915296,-0.0019951575,-0.008507236,0.00011123987 +14652000,mag,0.013318221,-0.2156342,0.43018693 +14652000,imu,-0.23111111,0.143956,-9.910244,-8.310102e-05,-0.00812228,-0.0017283964 +14656000,imu,-0.19913973,0.13833039,-9.909927,0.0021544187,-0.008282718,-2.7672639e-05 +14660000,imu,-0.1985718,0.18143794,-9.908087,0.00052509335,-0.0093701845,0.0027424449 +14664000,baro,487.59576 +14664000,mag,0.013359352,-0.2178584,0.43112028 +14664000,imu,-0.24411663,0.21743682,-9.910923,0.000848213,-0.008160381,0.003230871 +14668000,imu,-0.22824787,0.16524829,-9.933406,-0.0006955483,-0.006936151,0.0010999341 +14672000,imu,-0.20910458,0.15286644,-9.952724,-0.004769661,-0.0054707695,0.0011364432 +14676000,imu,-0.21580912,0.17804725,-9.988543,-0.003381297,-0.0024600842,0.0030302084 +14676000,mag,0.008409076,-0.21859385,0.42978278 +14680000,imu,-0.22133285,0.19058348,-9.974506,0.00026396458,-0.0020509728,0.00043861716 +14684000,imu,-0.21634796,0.19011043,-9.912619,-0.002093832,-0.004342038,-0.00017129141 +14688000,mag,0.01118364,-0.21363515,0.431107 +14688000,imu,-0.20111614,0.2043779,-9.9076805,-0.0029310705,-0.0039047583,-0.003911123 +14692000,imu,-0.19076698,0.18622299,-9.932016,-0.0017891709,-0.004948972,-0.0055289995 +14696000,imu,-0.1629729,0.16634682,-9.965078,-0.002216373,-0.009321588,-0.00095182535 +14700000,imu,-0.17025393,0.1821851,-9.969936,-0.002711163,-0.005481232,-0.00028356208 +14700000,mag,0.010815529,-0.21617034,0.43216074 +14704000,imu,-0.175233,0.17362215,-9.952035,-0.0029423535,-0.0016403442,0.0014916084 +14708000,imu,-0.18295985,0.16914879,-9.935667,0.00011291792,-0.0032146901,0.0028027955 +14712000,imu,-0.185189,0.18177463,-9.930613,0.001622979,-0.0031193048,0.0025388165 +14712000,mag,0.005929075,-0.21897505,0.43038395 +14716000,imu,-0.1806967,0.19929299,-9.922495,-0.0016654062,-0.0023468244,0.0019384347 +14720000,imu,-0.1871683,0.18645594,-9.92017,-0.0057930197,-0.004485232,0.00010197118 +14724000,imu,-0.18396339,0.17340252,-9.9300785,-0.0029211317,-0.0064620236,4.0609753e-05 +14724000,mag,0.005398138,-0.21619108,0.42635995 +14728000,imu,-0.1789542,0.15783875,-9.928753,-0.0009716154,-0.007611885,0.0015128774 +14732000,imu,-0.16412593,0.16509508,-9.928922,-0.0010603293,-0.008109987,0.0012126903 +14736000,mag,0.012910279,-0.21452355,0.42894095 +14736000,baro,487.58636 +14736000,imu,-0.17618984,0.19787686,-9.929055,0.00076976576,-0.0050237486,-0.00085050217 +14740000,imu,-0.18430966,0.19661573,-9.904057,0.0019556636,-0.0028967834,0.00020756993 +14744000,imu,-0.1886317,0.19833621,-9.913919,0.0008624433,-0.0057669594,0.0008437213 +14748000,imu,-0.21285027,0.17779769,-9.935747,0.0018626687,-0.0070733004,-0.0004819713 +14748000,mag,0.0045443284,-0.21800275,0.43266994 +14752000,imu,-0.231732,0.15104131,-9.923974,0.0027447934,-0.0046580187,-0.0013694778 +14756000,imu,-0.2123206,0.1844531,-9.942451,-0.0018354065,-0.005083456,0.0043582204 +14760000,mag,0.007216064,-0.21585503,0.42392167 +14760000,imu,-0.17395803,0.18075623,-9.95867,-0.0025304048,-0.0051151295,0.006082791 +14764000,imu,-0.17709155,0.17089088,-9.968517,0.00042485012,-0.0032585182,0.00067363586 +14768000,imu,-0.19242819,0.1850185,-9.957572,0.00083974854,-0.0048486576,0.0016186539 +14772000,mag,0.01503974,-0.2199126,0.4328723 +14772000,imu,-0.22002086,0.1687961,-9.945775,-0.001195276,-0.008734025,-0.000801762 +14776000,imu,-0.23001587,0.16414118,-9.938086,-0.0035147294,-0.007617654,-0.0019472395 +14780000,imu,-0.1974722,0.17719282,-9.932362,-0.0015745654,-0.0054978407,-0.00027295327 +14784000,imu,-0.17034894,0.18352501,-9.950373,-0.0020527157,-0.004069957,-0.0005380098 +14784000,mag,0.012126971,-0.21311839,0.4347962 +14788000,imu,-0.18040386,0.20833036,-9.93253,-0.0030665398,-0.0020139269,0.0033982533 +14792000,imu,-0.21523482,0.21797988,-9.911158,0.0010782569,-0.0068903635,0.0040148636 +14796000,mag,0.006727263,-0.21447739,0.42702994 +14796000,imu,-0.20917836,0.15358822,-9.932524,-0.0009091761,-0.008576779,-0.00011491063 +14800000,imu,-0.17937918,0.12790239,-9.945944,-0.002574584,-0.004866347,-0.00214194 +14804000,imu,-0.174824,0.1462665,-9.941673,-0.0006488217,-0.002877525,0.00056369294 +14808000,mag,0.009248498,-0.21890274,0.4245055 +14808000,imu,-0.16089848,0.14310624,-9.961399,-0.0029847475,-0.003605399,0.0013890474 +14808000,baro,487.68497 +14812000,imu,-0.16220137,0.14639863,-9.94374,-0.0007230211,-0.00561999,-0.00029019892 +14816000,imu,-0.17039004,0.18230075,-9.947953,0.003935119,-0.0068821274,-0.002523887 +14820000,mag,0.0049342047,-0.21101053,0.43063208 +14820000,imu,-0.17602476,0.17149673,-9.964127,0.0027318746,-0.0049586636,-0.0032468657 +14824000,imu,-0.2051693,0.15462856,-9.951082,0.00093267346,-0.0058964193,-0.00070522545 +14828000,imu,-0.17470862,0.18491857,-9.955488,-0.0008494324,-0.007802864,0.0019854489 +14832000,imu,-0.15715146,0.16704318,-9.961445,-0.0018596507,-0.0050499393,0.0009771427 +14832000,mag,0.014973984,-0.21438277,0.43183127 +14836000,imu,-0.15852168,0.17585345,-9.948219,-0.0004111627,-0.0055496595,-0.0032576513 +14840000,imu,-0.13847144,0.18862502,-9.9335785,-0.0009046356,-0.007260878,-0.0022995044 +14844000,imu,-0.12635452,0.1720405,-9.954338,0.00018618279,-0.006547948,-0.00085567485 +14844000,mag,0.01099591,-0.22000772,0.4314725 +14848000,gps,488099.0,85456074.0,473977508.0,0.0,0.0,0.01 +14848000,imu,-0.13616768,0.1643643,-9.9735775,0.0013891308,-0.0058479197,-0.0015171702 +14852000,imu,-0.18095163,0.18158206,-9.99102,-0.0010736826,-0.004403207,0.00034239783 +14856000,mag,0.005396851,-0.21717326,0.42641506 +14856000,imu,-0.19844413,0.17513342,-9.968689,-0.0029133218,-0.006400694,-0.000493014 +14860000,imu,-0.2023175,0.15075001,-9.944874,-0.0007813758,-0.007462036,-0.0013378836 +14864000,imu,-0.17729408,0.17143147,-9.923115,0.0008882421,-0.0045671104,-0.0012708724 +14868000,imu,-0.1629023,0.16645622,-9.9403,-0.002785129,-0.0061736335,-0.0015487244 +14868000,mag,0.0125986105,-0.218155,0.43051985 +14872000,imu,-0.19549105,0.15170774,-9.954073,-0.0007959964,-0.005160216,0.0010380964 +14876000,baro,487.6333 +14876000,mag,0.010225245,-0.21441942,0.4320308 +14876000,imu,-0.17873767,0.1599982,-9.935604,-0.00079366914,-0.004071066,0.0030627283 +14880000,imu,-0.15040696,0.15695459,-9.923264,-0.001742726,-0.0048811133,0.0018027928 +14884000,imu,-0.19404617,0.14126039,-9.904921,-0.0025532031,-0.0040335534,-0.00050194777 +14888000,imu,-0.19952652,0.13389155,-9.92712,-0.0031313843,-0.00469718,0.0004251029 +14892000,mag,0.0065679955,-0.21290936,0.43113726 +14892000,imu,-0.20646478,0.15370531,-9.943047,0.0009256696,-0.0061403965,0.001946516 +14896000,imu,-0.21128681,0.16391073,-9.921733,-0.0023155382,-0.0037166758,-0.0013745488 +14900000,imu,-0.17820923,0.14395061,-9.9405,-0.0034632944,-0.0011306212,-0.0032045837 +14904000,imu,-0.17057574,0.17174712,-9.957877,-0.001859949,-0.0037996224,-0.0019514333 +14904000,mag,0.008553073,-0.21058038,0.42822397 +14908000,imu,-0.156305,0.19193712,-9.93465,-0.002093173,-0.0076142037,-0.0014150693 +14912000,imu,-0.16378018,0.1832336,-9.927519,-3.1344163e-05,-0.007745052,0.00066237175 +14916000,mag,0.012355468,-0.2165353,0.42847884 +14916000,imu,-0.18232161,0.19122456,-9.908098,-0.0015209044,-0.005618403,0.0018888031 +14920000,imu,-0.1983267,0.1717386,-9.920023,-0.0052326154,-0.0019302999,-8.757972e-05 +14924000,imu,-0.20747182,0.16877069,-9.933526,-0.005514029,-0.0030511578,0.0004348952 +14928000,imu,-0.19896671,0.18124062,-9.921988,-0.0040808767,-0.006337393,0.002235717 +14928000,baro,487.60513 +14928000,mag,0.0011552846,-0.21689293,0.42553645 +14932000,imu,-0.18376912,0.17559507,-9.927559,-0.0020563072,-0.0065124827,0.0031087566 +14936000,imu,-0.1812381,0.16043696,-9.937284,-0.0018900518,-0.0060524386,0.000667978 +14940000,landed,1.0 +14940000,imu,-0.16720782,0.13399608,-9.936083,-0.0039810757,-0.004865846,-0.0010447251 +14940000,mag,0.007837713,-0.21426766,0.4346356 +14944000,imu,-0.14902121,0.16854085,-9.95366,-0.0023710583,-0.0067512165,-0.00034990418 +14948000,imu,-0.1939714,0.17307736,-9.959628,0.0009915113,-0.008311637,0.0022796062 +14952000,imu,-0.22541764,0.18296108,-9.920853,-0.00053564424,-0.0076477183,0.0009469059 +14952000,mag,0.008195616,-0.21991248,0.43177965 +14956000,imu,-0.20095924,0.22555983,-9.9490795,-0.003208475,-0.0042238054,0.00025593996 +14960000,imu,-0.19343756,0.17872672,-9.962549,-0.0038074565,-0.0029904111,0.002222615 +14964000,mag,0.011738323,-0.22210714,0.42460594 +14964000,imu,-0.20933187,0.17831337,-9.923555,-0.003960647,-0.0023024415,0.0006618175 +14968000,imu,-0.21546617,0.19382127,-9.9055805,-0.0025115195,-0.0015339683,0.0024176526 +14972000,imu,-0.19560331,0.16801567,-9.903954,-0.0011249561,-0.006339881,0.002257846 +14976000,mag,0.010063326,-0.22010033,0.42806825 +14976000,imu,-0.17710313,0.16355692,-9.893421,-0.0018040938,-0.008096893,0.001398373 +14980000,imu,-0.18469627,0.18978506,-9.910419,-0.0006417982,-0.005754816,0.0013246397 +14984000,imu,-0.22545251,0.20310847,-9.926101,-0.0011332482,-0.0045567243,0.00088288105 +14988000,mag,0.011481438,-0.21736704,0.42826864 +14988000,imu,-0.22856356,0.17662507,-9.896847,-0.001465458,-0.006273446,-0.00034439223 +14992000,imu,-0.19832301,0.18628635,-9.899048,-0.0023370062,-0.00737099,-0.0030091838 +14996000,imu,-0.17570995,0.1901649,-9.930116,-0.0017513812,-0.0064532966,-0.0012410001 +15000000,imu,-0.18006967,0.18770911,-9.937872,0.0024838282,-0.005011314,-0.00047586244 +15000000,baro,487.71313 +15000000,mag,0.008210499,-0.21178584,0.42736015 +15004000,imu,-0.19137071,0.18011144,-9.912289,-0.00041504262,-0.0029586297,-0.00025447024 +15008000,imu,-0.20397791,0.15922369,-9.883207,-0.0050426945,-0.005304911,0.0008732795 +15012000,imu,-0.20952177,0.1532134,-9.902241,-0.004859073,-0.007879876,0.00035472974 +15012000,mag,0.010399458,-0.21743721,0.42952302 +15016000,imu,-0.1965118,0.14808919,-9.929192,-0.00033239217,-0.0041931216,-0.0006557838 +15020000,imu,-0.21186379,0.14430664,-9.894197,0.001129541,-0.002032363,-0.0015772254 +15024000,imu,-0.16608232,0.18178725,-9.893755,-0.0014841136,-0.0033469128,-0.0015206125 +15024000,mag,0.010846388,-0.2201236,0.43029556 +15028000,imu,-0.15671991,0.18743338,-9.959518,-0.00034509873,-0.002080535,-0.0038367934 +15032000,imu,-0.16189638,0.18798499,-9.968159,-0.0026786549,-0.004062372,-0.00397403 +15036000,imu,-0.15791953,0.18782704,-9.925665,-0.003863605,-0.006928969,-0.0039025666 +15036000,mag,0.0076259184,-0.2184639,0.4383679 +15040000,imu,-0.17759952,0.1772388,-9.940541,-0.0031617577,-0.0040460224,-0.002814788 +15044000,imu,-0.19967496,0.20061523,-9.956615,-0.0032575403,-0.0018424422,-0.001736061 +15048000,mag,0.0034668017,-0.21465008,0.4303901 +15048000,imu,-0.20127885,0.19009505,-9.931768,-0.0021290176,-0.0044373036,-0.0020313417 +15052000,imu,-0.167921,0.1870048,-9.917514,-0.00023936582,-0.0065314937,-0.0014751859 +15056000,imu,-0.1654957,0.19646119,-9.932359,0.0018172103,-0.0059826886,-0.00021025335 +15060000,imu,-0.16829912,0.16966215,-9.958036,-7.992981e-06,-0.004706239,0.0014798498 +15060000,mag,0.010278752,-0.21497609,0.42287442 +15064000,imu,-0.21182445,0.15566769,-9.939265,-0.0016932228,-0.0033856083,0.0016525626 +15068000,imu,-0.21854162,0.17516272,-9.928643,-0.0022298424,-0.003562894,0.0009941638 +15072000,baro,487.6427 +15072000,imu,-0.18613884,0.17257354,-9.938063,-0.0019903113,-0.0041761193,0.0017320393 +15072000,mag,0.007725101,-0.21997644,0.43008855 +15075999,imu,-0.17754196,0.16040541,-9.919573,0.0015060819,-0.007130281,0.003646905 +15080000,imu,-0.17585254,0.16470064,-9.917073,0.00073271844,-0.0076721082,0.0005040923 +15084000,mag,0.012090203,-0.21444952,0.43097633 +15084000,imu,-0.19029409,0.16555347,-9.922609,-0.002587941,-0.002442871,-0.0023675316 +15087999,imu,-0.19525564,0.15630208,-9.919508,-0.0026336513,-0.003212658,0.0013483118 +15092000,imu,-0.17769401,0.18427566,-9.931912,-0.00062600133,-0.006016327,0.00051914534 +15096000,mag,0.00683758,-0.21558177,0.42628887 +15096000,imu,-0.16936873,0.23172654,-9.947756,-0.0006153189,-0.0031021424,-0.0010565602 +15100000,imu,-0.14822897,0.20931196,-9.935002,-0.0017410577,-0.0025629895,0.00045148662 +15104000,imu,-0.15146187,0.16681933,-9.916639,-0.0014581502,-0.002982387,8.548116e-05 +15107999,imu,-0.18266718,0.17216516,-9.925178,-0.0012093047,-0.0020799225,0.0032444675 +15107999,mag,0.0068554627,-0.22214848,0.4355558 +15112000,imu,-0.18130895,0.19252095,-9.930077,-0.0011263583,-0.0048593124,0.0029006822 +15116000,imu,-0.15480788,0.18195261,-9.943783,-0.005603236,-0.0070319204,-0.0034174367 +15119999,imu,-0.1664228,0.17702469,-9.933547,-0.0037293984,-0.006831188,-0.0031437704 +15119999,mag,0.0087126875,-0.21715815,0.43511903 +15124000,imu,-0.18431433,0.18126455,-9.949789,-0.0026577956,-0.008394168,-0.001333885 +15128000,imu,-0.16206567,0.15310888,-9.956926,-0.0049055694,-0.008642089,-0.002546529 +15132000,imu,-0.1560576,0.15464973,-9.945141,-0.0030405517,-0.005474364,-0.00082684075 +15132000,mag,0.009568563,-0.21968615,0.42492744 +15136000,imu,-0.19067225,0.15798055,-9.955038,-0.004746572,-0.0023009386,0.0010620514 +15139999,imu,-0.18534318,0.16169988,-9.944647,-0.0056795967,0.00048439225,0.0014658321 +15144000,baro,487.638 +15144000,imu,-0.15450212,0.19020762,-9.959213,-0.0024822392,-0.0037922957,0.00051121105 +15144000,mag,0.01038265,-0.21776024,0.42935523 +15148000,imu,-0.16202728,0.1654175,-9.953123,-0.0022237888,-0.009951906,-0.0020048786 +15151999,imu,-0.18167198,0.16610457,-9.95903,-0.000474128,-0.0084828045,-0.001337103 +15156000,imu,-0.18868598,0.21644197,-9.959459,0.00026744438,-0.007428402,0.00023832239 +15156000,mag,0.0090422295,-0.21653585,0.431624 +15160000,imu,-0.22089157,0.20093435,-9.95356,-0.0011786008,-0.006706584,-0.0027893742 +15164000,imu,-0.23632818,0.17526715,-9.932641,0.00147772,-0.0077329595,-0.0005242267 +15168000,imu,-0.1851173,0.17043419,-9.887367,0.0004915964,-0.0070038647,0.0001873933 +15168000,mag,0.007885319,-0.21649188,0.42990607 +15171999,imu,-0.18985523,0.16193599,-9.873046,-0.0018339894,-0.0041540912,-0.0028049944 +15176000,imu,-0.20988819,0.17753014,-9.905182,-0.00096967194,-0.005249987,-0.0020562478 +15180000,mag,0.009873181,-0.21861492,0.4271044 +15180000,imu,-0.18030953,0.19471858,-9.92687,0.0016915031,-0.004271466,-0.0032175332 +15183999,imu,-0.16188544,0.17328112,-9.894603,0.0042650467,-0.0053131436,-0.0010083484 +15188000,imu,-0.16563107,0.1609757,-9.905428,0.0009913134,-0.008717221,0.0014529381 +15192000,mag,0.011955123,-0.21539958,0.43282825 +15192000,imu,-0.17668186,0.17742829,-9.95923,0.0004177012,-0.009510788,-0.0025816178 +15196000,imu,-0.18049423,0.19798169,-9.978474,0.0011358521,-0.007724507,-0.0023494798 +15200000,imu,-0.14745721,0.20693603,-9.9737015,-0.004590881,-0.005347247,0.0031026825 +15203999,mag,0.012677809,-0.21834366,0.43353263 +15203999,imu,-0.15467542,0.18171865,-9.949778,-0.005023542,-0.0051712883,0.0023944506 +15208000,imu,-0.18692982,0.17107838,-9.941092,-0.0027859819,-0.0022735284,0.00032402287 +15212000,imu,-0.22434166,0.17305434,-9.953054,-0.0053901183,-0.0031507094,0.003381245 +15212000,baro,487.59576 +15212000,mag,0.010439643,-0.21441633,0.42835587 +15215999,imu,-0.21946955,0.16508801,-9.917349,-0.0060526254,-0.0041892626,0.0027119415 +15220000,imu,-0.18452111,0.16788957,-9.900198,-0.0039049524,-0.0020284532,0.00037959692 +15224000,imu,-0.16817766,0.1458122,-9.917564,-0.0045889644,-0.0063709826,0.0010914953 +15228000,mag,0.0093919765,-0.21841568,0.42966643 +15228000,imu,-0.1492046,0.14438619,-9.93063,-0.003534381,-0.0072556403,0.0022287162 +15232000,imu,-0.1767677,0.17929935,-9.960155,0.0014200144,-0.007057309,-6.4537075e-05 +15235999,mag,0.0096286815,-0.2115776,0.4303247 +15235999,imu,-0.18829373,0.18326613,-9.928812,0.0025805063,-0.008725004,-0.0016316131 +15240000,imu,-0.1816207,0.16917935,-9.921354,-0.00065852964,-0.0067263045,-5.3933432e-05 +15244000,imu,-0.19596553,0.15822957,-9.932214,-0.0035520715,-0.007667091,-0.0028869647 +15247999,imu,-0.20213607,0.14972085,-9.915955,-0.0032765402,-0.0096782595,-0.005259299 +15252000,imu,-0.19984207,0.19209343,-9.945343,-0.0033650836,-0.0052702883,-0.0031749795 +15252000,mag,0.010363301,-0.22210416,0.43673056 +15252000,gps,488106.0,85456073.0,473977508.0,0.0,0.0,-0.01 +15256000,imu,-0.20004973,0.19686238,-9.972744,-0.0027819378,-0.003519655,0.0002783017 +15260000,imu,-0.18950853,0.16993476,-9.945179,-0.0010673965,-0.0033573133,-0.0021604353 +15264000,imu,-0.1665281,0.20577268,-9.905001,-0.0034198384,0.00030447432,-0.0027498896 +15264000,baro,487.53003 +15264000,mag,0.0067165704,-0.21726298,0.4362032 +15267999,imu,-0.16673459,0.20027883,-9.911968,-0.003796394,-0.002305751,-0.0013155116 +15272000,imu,-0.1946118,0.16328505,-9.909999,-0.0016519496,-0.009594332,-0.0029023392 +15276000,mag,0.008207855,-0.2182237,0.42671815 +15276000,imu,-0.1985245,0.16876169,-9.929201,-0.002806942,-0.00757577,-0.0009402294 +15279999,imu,-0.1778562,0.18890178,-9.987207,-0.0011489268,-0.0072051473,0.0015313327 +15284000,imu,-0.15060575,0.17387001,-9.967482,0.0012801434,-0.008997118,-0.002460611 +15288000,mag,0.0074436762,-0.21926966,0.42996487 +15288000,imu,-0.16792697,0.14929514,-9.931866,-0.000948828,-0.006027327,-0.004354721 +15292000,imu,-0.19146347,0.16018732,-9.941273,-0.0029334447,-0.0067086346,-0.0007570459 +15296000,imu,-0.15567957,0.15763016,-9.936047,-0.0033945239,-0.0064742635,0.00024530635 +15299999,imu,-0.15971383,0.14609231,-9.909006,-0.00088212785,-0.004311389,-0.0009790523 +15299999,mag,0.015075353,-0.21467736,0.43001473 +15304000,imu,-0.18296771,0.14043668,-9.911717,-0.00050552946,-0.007402369,-0.0011950441 +15308000,imu,-0.1701262,0.13864554,-9.950939,-0.004719619,-0.0093937,-0.0004457628 +15311999,imu,-0.16907053,0.17996494,-9.959358,-0.005287045,-0.0061783195,-0.0010106347 +15311999,mag,0.011676609,-0.21931015,0.43108898 +15316000,imu,-0.17035371,0.17642054,-9.923592,-0.0029689686,-0.0053151175,-0.0014411598 +15320000,imu,-0.17364365,0.16301015,-9.9295635,-0.0013154262,-0.005807637,-0.0021381634 +15324000,mag,0.007228183,-0.20954666,0.43051937 +15324000,imu,-0.20160088,0.1873771,-9.932157,-0.00032864936,-0.006363925,0.0001276007 +15328000,imu,-0.18432653,0.1912075,-9.923052,-0.0013916126,-0.004961138,0.0011317041 +15331999,imu,-0.14013638,0.18365648,-9.956995,0.0005985045,-0.0059269224,0.00024527963 +15336000,mag,0.011625689,-0.21141149,0.43448585 +15336000,imu,-0.17491987,0.1568515,-9.933073,0.0041867737,-0.006282883,0.00199886 +15336000,baro,487.68027 +15340000,imu,-0.21058902,0.15602472,-9.931538,0.0014546361,-0.0036466005,0.0024393727 +15343999,imu,-0.1725508,0.17267874,-9.94556,-0.0053568645,-0.0045153955,0.00230405 +15348000,imu,-0.1601083,0.15730046,-9.917266,-0.00580283,-0.0072028614,0.0021252467 +15348000,mag,0.015823724,-0.21602651,0.42788363 +15352000,imu,-0.17755386,0.14876997,-9.949704,-0.002155083,-0.0069588167,0.0013426645 +15356000,imu,-0.19209474,0.1452885,-9.946259,-0.0012534051,-0.004323949,4.5502777e-05 +15360000,imu,-0.21850613,0.15949816,-9.913831,-0.00048458428,-0.005478731,-0.00026253416 +15360000,mag,0.012876382,-0.21738349,0.43068284 +15363999,imu,-0.21126877,0.16483283,-9.940098,-0.002362649,-0.00524027,-0.00022942675 +15368000,imu,-0.1913445,0.17199998,-9.929106,-0.0013236067,-0.0019608205,-0.0024623119 +15372000,imu,-0.21352479,0.17759165,-9.912701,0.0020274008,-0.0012811775,-0.002403233 +15372000,mag,0.009380154,-0.21436693,0.42842472 +15375999,imu,-0.2068179,0.17677216,-9.937499,0.0022166765,-0.0028271226,-0.00058937684 +15380000,imu,-0.19984087,0.16572493,-9.937279,0.00018221294,-0.0044801505,0.0037448904 +15384000,mag,0.006543482,-0.22236924,0.42657074 +15384000,imu,-0.20452368,0.15178794,-9.902227,-0.0015527816,-0.0055434047,0.0029940284 +15388000,imu,-0.20322937,0.20291613,-9.853348,-0.00064614945,-0.0056972397,-0.0015951163 +15392000,imu,-0.23082203,0.17890346,-9.866981,-0.0007942613,-0.0073244665,-0.00061508105 +15395999,mag,0.012704841,-0.21770844,0.42976683 +15395999,imu,-0.19711855,0.1411086,-9.91565,-0.00060761475,-0.007954463,0.0011208573 +15400000,imu,-0.16736981,0.14284253,-9.918626,-0.002370546,-0.00581541,0.0021482997 +15404000,imu,-0.18346137,0.16062693,-9.927684,-0.0020364039,-0.005713524,-0.0020295957 +15407999,mag,0.0034671873,-0.20931417,0.42377868 +15407999,baro,487.67087 +15407999,imu,-0.160083,0.18533349,-9.925156,0.0011525499,-0.0069217626,-0.0042322916 +15412000,imu,-0.17851,0.17479873,-9.901978,0.0015415904,-0.006709383,0.00036197543 +15416000,imu,-0.2145882,0.16360025,-9.909321,0.0010195075,-0.0037610722,0.0011416089 +15420000,mag,0.005181767,-0.2134049,0.4336084 +15420000,imu,-0.1966815,0.15051778,-9.928316,0.0005806509,-0.0020819674,0.0032614518 +15424000,imu,-0.18908052,0.1820811,-9.932267,0.00077053835,-0.0032365732,0.0018385127 +15427999,imu,-0.19444181,0.1805319,-9.943989,-0.0009961099,-0.0067099207,-0.000832613 +15432000,imu,-0.19577746,0.16376092,-9.927935,-0.00097133295,-0.0067683756,-0.00054693717 +15432000,mag,0.011848287,-0.21549414,0.42295367 +15436000,imu,-0.19568968,0.18523535,-9.930393,0.0025360156,-0.0056189154,-0.00322937 +15439999,imu,-0.18849981,0.16473792,-9.944664,0.002339357,-0.005796046,-0.002047912 +15444000,mag,0.0034041163,-0.21634221,0.4327259 +15444000,imu,-0.18308719,0.14225242,-9.934036,0.0003334281,-0.008173734,-0.00030131117 +15448000,imu,-0.18745151,0.13607015,-9.900925,-0.0021696026,-0.008212804,-0.002838857 +15452000,imu,-0.1797609,0.1335866,-9.874735,-0.002342729,-0.0051415525,0.00062846695 +15456000,imu,-0.18026274,0.15025155,-9.932026,-0.002829324,-0.0056635863,0.0026154183 +15456000,mag,0.0032985338,-0.22101924,0.42769322 +15459999,imu,-0.19023323,0.19617926,-9.959898,-0.001663626,-0.006233763,-0.0017310499 +15464000,imu,-0.19798234,0.16849731,-9.942814,-0.0015983335,-0.006071109,-0.0008861735 +15468000,imu,-0.18068683,0.12132727,-9.913931,-0.0052353404,-0.0066092405,0.00023431004 +15468000,mag,0.0061287894,-0.22062716,0.42870408 +15471999,imu,-0.15430383,0.1736129,-9.880978,-0.0038228352,-0.006597497,0.0030017542 +15476000,imu,-0.19660251,0.17870101,-9.91735,-0.0028303054,-0.0041765855,0.002488213 +15480000,mag,0.008621508,-0.21204393,0.43145356 +15480000,baro,487.67557 +15480000,imu,-0.22127086,0.17322887,-9.95567,-0.0038348376,-0.0047843065,0.0003160731 +15484000,imu,-0.17959356,0.21079363,-9.917536,-0.0027692053,-0.010117477,0.0019074262 +15488000,imu,-0.15848657,0.18657175,-9.883193,-0.0018721224,-0.008141722,-0.00043936394 +15491999,imu,-0.1626278,0.17889331,-9.892319,-0.0023749652,-0.0030756327,-0.0013204891 +15491999,mag,0.0062178886,-0.21703902,0.42731655 +15496000,imu,-0.20028508,0.17419368,-9.918206,-0.002287723,-0.002068143,-0.000120774836 +15500000,imu,-0.20615974,0.18024525,-9.9531,-0.0015125708,-0.006022975,-0.0020046295 +15503999,imu,-0.2010741,0.18669553,-9.943347,-0.0025631967,-0.006498277,-0.00085674407 +15503999,mag,0.007592245,-0.21648984,0.43042576 +15508000,imu,-0.19227155,0.16095756,-9.924553,-0.001349587,-0.0019992834,-0.00018233046 +15512000,imu,-0.1645212,0.16118768,-9.94046,-0.0018713295,0.00044415027,0.0004484646 +15516000,mag,0.0024748854,-0.2121706,0.4289486 +15516000,imu,-0.16305381,0.16952294,-9.949614,-0.0040627522,-0.0012432067,-0.0005499391 +15520000,imu,-0.14756274,0.2016843,-9.931067,-0.0007471341,-0.004644704,7.04756e-05 +15523999,imu,-0.19080389,0.20019327,-9.920076,-0.0019281117,-0.004551695,0.0027190433 +15528000,imu,-0.1915864,0.18923604,-9.93585,-0.0009911788,-0.0070279962,0.0015461801 +15528000,mag,0.012576111,-0.21619353,0.42348745 +15532000,imu,-0.18180503,0.18938121,-9.911126,0.00084195565,-0.009670933,0.002082309 +15536000,imu,-0.21751367,0.1946337,-9.908855,0.00064125546,-0.00588917,0.003131327 +15540000,imu,-0.18450452,0.2149435,-9.926737,0.0011070868,-0.0025857969,-0.002972883 +15540000,mag,0.009921869,-0.21490818,0.42807862 +15544000,imu,-0.17259309,0.18282996,-9.928843,-0.0005683969,-0.0067960033,-0.0053232755 +15548000,imu,-0.1938707,0.16794448,-9.920788,-0.0014763271,-0.008578238,-0.00069397624 +15552000,baro,487.61453 +15552000,mag,0.010704522,-0.21297222,0.423894 +15552000,imu,-0.1778439,0.1886344,-9.930528,0.0006194243,-0.0060282177,0.0013102897 +15555999,imu,-0.18423739,0.16822061,-9.927186,0.0010972816,-0.0064129,0.0014492137 +15560000,imu,-0.20540772,0.14359336,-9.907917,-0.0015051508,-0.008982767,-0.0006080456 +15564000,mag,0.0103433365,-0.2170682,0.43051487 +15564000,imu,-0.20392694,0.14739284,-9.916313,-0.0028458794,-0.008214794,-0.0011397399 +15568000,imu,-0.19883177,0.1819519,-9.915681,-0.0031774743,-0.0055582547,0.0018756251 +15572000,imu,-0.16490597,0.19084711,-9.893913,-0.0035226042,-0.0059928596,0.0032223149 +15575999,mag,0.003398773,-0.21707587,0.4229673 +15575999,imu,-0.15499939,0.18249038,-9.884998,-0.0025434974,-0.005236257,0.0021888672 +15580000,imu,-0.19090118,0.15654498,-9.887814,0.0010060543,-0.0050643235,0.0010134055 +15584000,imu,-0.19971368,0.16818206,-9.9190235,-0.00029495943,-0.0096212085,0.00042968805 +15587999,imu,-0.20247571,0.19833744,-9.94375,-0.0014171873,-0.008968696,0.00022505308 +15587999,mag,0.010070345,-0.21663679,0.42408547 +15592000,imu,-0.18380174,0.18810052,-9.921894,0.0003737269,-0.0037287865,-0.0007554651 +15596000,imu,-0.17990023,0.20193693,-9.939983,-0.0013588059,-0.003576715,-0.0023764838 +15600000,mag,0.00029446115,-0.21587625,0.43134412 +15600000,imu,-0.21807344,0.18530811,-9.950784,-0.003313732,-0.006588543,-0.002292625 +15604000,imu,-0.19638914,0.15542732,-9.9500885,-0.0015551887,-0.00875591,-0.00045998488 +15608000,imu,-0.14647673,0.18191162,-9.915775,0.002202818,-0.008550086,0.0003708732 +15612000,mag,0.015580665,-0.21271418,0.42603377 +15612000,imu,-0.16673335,0.20537418,-9.898899,0.0023527243,-0.0091817845,-0.0006539947 +15616000,imu,-0.19652274,0.19466962,-9.934229,-0.0003791177,-0.00728123,-0.0009693657 +15619999,mag,0.0051934915,-0.21242116,0.43012938 +15619999,imu,-0.17235085,0.17019017,-9.943573,-0.0017450849,-0.0068874937,0.0010243852 +15624000,imu,-0.16620016,0.16009665,-9.933185,-0.0018684956,-0.00819094,0.0015844378 +15624000,baro,487.67087 +15628000,imu,-0.18032777,0.17533997,-9.912708,-0.0021746766,-0.007006099,-0.00010914871 +15632000,imu,-0.19220093,0.17392309,-9.898899,0.001472923,-0.0059721055,-0.00082541833 +15636000,mag,0.0063739717,-0.21242756,0.42488185 +15636000,imu,-0.19705215,0.16100836,-9.918395,0.0031890024,-0.0033004498,-0.0006865108 +15639999,imu,-0.19429256,0.17215927,-9.957608,0.0007980008,-0.003484318,-0.001726655 +15644000,mag,0.004903294,-0.2130621,0.43471244 +15644000,imu,-0.21655877,0.17857547,-9.937592,-0.00239416,-0.004450437,-0.0016437148 +15648000,imu,-0.20485628,0.18191124,-9.908642,-0.005170537,-0.0071463496,-0.000519256 +15651999,gps,488098.0,85456074.0,473977508.0,0.0,-0.01,-0.01 +15651999,imu,-0.18412092,0.20472173,-9.94013,-0.0024592935,-0.0064866696,0.0007403119 +15656000,imu,-0.19943577,0.18557009,-9.945761,-5.40112e-05,-0.0062137255,0.0015836179 +15660000,imu,-0.18849802,0.17226946,-9.914182,0.0007365171,-0.0062088626,3.8964637e-05 +15660000,mag,0.011633932,-0.22058477,0.42638355 +15664000,imu,-0.19796443,0.16395867,-9.923885,0.00016511431,-0.0053497483,0.0008732438 +15668000,imu,-0.19392046,0.14088252,-9.966787,-0.0030623695,-0.007427238,-0.00037140294 +15671999,imu,-0.1763164,0.13760817,-9.949335,-0.0050779236,-0.006021812,-0.0019711887 +15671999,mag,0.0052675996,-0.21501884,0.42881596 +15676000,imu,-0.14654523,0.14909989,-9.92828,-0.0018076315,-0.004974806,0.0018233203 +15680000,imu,-0.15478435,0.17728968,-9.935736,-0.0020261756,-0.00707663,0.0011598492 +15683999,mag,0.011481103,-0.21305482,0.42891178 +15683999,imu,-0.20466807,0.20445314,-9.925928,-0.005999523,-0.009046947,-0.00020699804 +15688000,imu,-0.20112482,0.19507843,-9.922104,-0.003772555,-0.008415068,0.0022869033 +15692000,mag,0.010647534,-0.21546087,0.4286971 +15692000,imu,-0.1977359,0.15522413,-9.919519,-0.0014778706,-0.0058590528,9.696371e-05 +15696000,imu,-0.21206123,0.13900153,-9.892989,-0.0034705724,-0.00600242,-0.00046964866 +15696000,baro,487.68967 +15700000,imu,-0.22474071,0.13428417,-9.89835,-0.0019513391,-0.008466704,0.0011012943 +15703999,imu,-0.18731147,0.1347366,-9.918291,-0.0017217831,-0.010027179,-0.000570849 +15708000,mag,0.009461341,-0.21098891,0.4261957 +15708000,imu,-0.15991917,0.16669506,-9.932659,-0.0045596804,-0.009639974,-0.0011357693 +15712000,imu,-0.1793046,0.18289833,-9.927569,-0.003972858,-0.006941466,-0.00041242357 +15715999,imu,-0.1827716,0.20424297,-9.929048,-0.002870576,-0.0076458408,0.00076930044 +15720000,imu,-0.18436448,0.20858225,-9.96048,-0.00036153785,-0.006275916,-0.00026175575 +15720000,mag,0.00947667,-0.2149938,0.43553555 +15724000,imu,-0.19845137,0.18547525,-9.9457,0.00023601219,-0.0027758337,-0.0007794798 +15728000,imu,-0.21105532,0.16065608,-9.93875,-0.0007614461,-0.006028046,0.0014893992 +15732000,imu,-0.20118591,0.14188118,-9.914543,-0.00067660713,-0.0067846794,0.002659816 +15732000,mag,0.013119159,-0.22208448,0.4247011 +15735999,imu,-0.18971092,0.16705845,-9.91711,-0.0032159807,-0.0036712354,-0.0030641786 +15740000,imu,-0.17769247,0.16378912,-9.952711,-0.002231245,-0.003202933,-0.005503546 +15744000,imu,-0.18907544,0.15579756,-9.95185,-0.00069207104,-0.004575043,-0.0018635027 +15744000,mag,0.0077430527,-0.22148505,0.42747438 +15747999,imu,-0.19421118,0.19343403,-9.952093,-0.0031055366,-0.007283016,-0.00066988723 +15752000,imu,-0.20055872,0.20569539,-9.959477,-0.0030802572,-0.006199819,0.00017036297 +15756000,imu,-0.19615188,0.15811902,-9.934952,-0.0015699706,-0.003547718,-0.00019015835 +15756000,mag,0.00941894,-0.21414259,0.42921168 +15760000,imu,-0.15198065,0.15745507,-9.92083,-0.0019252063,-0.005373552,0.0017074426 +15764000,imu,-0.15191813,0.1693638,-9.941796,-0.0015021941,-0.0061255596,0.0016122275 +15767999,baro,487.7225 +15767999,mag,0.008967343,-0.22073087,0.43105125 +15767999,imu,-0.18172768,0.19307436,-9.934897,-0.00042482195,-0.006744559,-0.0027341342 +15772000,imu,-0.19647798,0.20339167,-9.909304,-0.0014823083,-0.008133534,-0.00020681099 +15776000,imu,-0.16733988,0.18970194,-9.906517,-0.00290688,-0.010304532,0.00035131478 +15779999,mag,0.0056303865,-0.21408825,0.43083337 +15779999,imu,-0.18013796,0.18915348,-9.933657,-0.0018462724,-0.012099466,-0.0013029041 +15784000,imu,-0.18476409,0.17066795,-9.937355,-0.0022194462,-0.0066364533,-0.0018542602 +15788000,mag,0.0060690553,-0.21342523,0.43001243 +15788000,imu,-0.17064127,0.16083774,-9.94195,-0.002098951,-0.0035826871,-0.0034991584 +15792000,imu,-0.16992658,0.15965389,-9.948256,-0.00017936956,-0.005451105,-0.00072101876 +15796000,imu,-0.18856353,0.13234207,-9.947549,-0.0038408139,-0.0060325107,0.0020903386 +15799999,imu,-0.2066679,0.12550764,-9.914997,-0.0042195427,-0.007361552,0.00047992932 +15804000,mag,0.009652682,-0.21453398,0.4346785 +15804000,imu,-0.18890166,0.15692866,-9.898901,-0.0014248332,-0.004839889,0.00025579584 +15808000,imu,-0.190857,0.15781124,-9.912546,-0.0019199692,-0.0040376075,0.0015795877 +15811999,imu,-0.20356403,0.1693334,-9.9184475,-0.0026433638,-0.006488209,0.00042856677 +15816000,mag,0.005466294,-0.2184613,0.4313964 +15816000,imu,-0.21688583,0.15999964,-9.92659,-0.003754807,-0.004273356,-0.00061901123 +15820000,imu,-0.18593372,0.14856778,-9.903076,-0.0034726355,-0.004007073,0.0026131861 +15824000,imu,-0.18653801,0.16542076,-9.888966,-0.00024303327,-0.0034659181,0.0037319032 +15828000,imu,-0.20153545,0.18083954,-9.928594,-0.0016925333,-0.0024868401,-0.0005118795 +15828000,mag,0.014488112,-0.21239379,0.4327844 +15831999,imu,-0.20961407,0.17812176,-9.959091,-0.0035550236,-0.0055578975,-0.00095955696 +15836000,imu,-0.1996346,0.17359862,-9.92089,-0.0021644249,-0.009787091,0.00021444906 +15840000,mag,0.009158668,-0.21934168,0.43219584 +15840000,imu,-0.1952332,0.1820149,-9.890259,-0.0011702228,-0.0088477135,-0.00051846507 +15840000,baro,487.58167 +15844000,imu,-0.19588095,0.18795548,-9.922354,-0.00044879052,-0.005346985,0.0011991583 +15848000,imu,-0.16499168,0.190381,-9.94919,-0.0003072771,-0.003860107,0.0023924003 +15852000,mag,0.0061052414,-0.21227813,0.42266944 +15852000,imu,-0.15978357,0.1613939,-9.900682,-0.00084107305,-0.007233862,-0.0016011951 +15856000,imu,-0.15763803,0.15562147,-9.871,-0.0030511634,-0.009359587,-0.0018200189 +15860000,imu,-0.15708444,0.18791361,-9.928911,-0.0043468396,-0.0057536345,0.0008155852 +15864000,imu,-0.1851446,0.21029046,-9.939995,-0.0039062311,-0.007067061,0.0014341228 +15864000,mag,0.004310156,-0.21541958,0.42902598 +15868000,imu,-0.18824598,0.18293378,-9.913269,-0.00245764,-0.006860658,0.0047386256 +15872000,imu,-0.1620782,0.16074784,-9.929682,0.0010142947,-0.0029254283,0.0018726183 +15876000,mag,0.01503758,-0.21261269,0.42762652 +15876000,imu,-0.17692918,0.1873041,-9.9371,0.0008902032,-0.002932156,-0.0017289792 +15880000,imu,-0.18173987,0.19134298,-9.945744,-0.0037148038,-0.005740445,-0.0014507592 +15884000,imu,-0.20306818,0.17987421,-9.945402,-0.0038290946,-0.00698528,-0.001783647 +15888000,mag,0.016637178,-0.21596122,0.4346364 +15888000,imu,-0.1905984,0.18779185,-9.924742,-0.006945094,-0.0075319065,3.25768e-05 +15892000,imu,-0.1436812,0.17188586,-9.925881,-0.007829534,-0.0067759873,0.0014031485 +15896000,imu,-0.14899063,0.14663441,-9.944218,-0.0016107302,-0.007835923,0.0002474657 +15900000,mag,0.013228249,-0.21658583,0.4279057 +15900000,imu,-0.17988934,0.15873829,-9.94312,0.0005389887,-0.006293573,-0.0003855059 +15904000,imu,-0.18063904,0.15910508,-9.943401,-0.0017325141,-0.004955065,0.00082374277 +15908000,imu,-0.18435779,0.18901777,-9.916531,-0.0019946422,-0.0078044687,0.0008451439 +15912000,imu,-0.20086664,0.18396387,-9.897331,0.0012545334,-0.006243092,0.0014617485 +15912000,baro,487.59106 +15912000,mag,0.010759068,-0.22126675,0.429887 +15916000,imu,-0.16381474,0.15951045,-9.922002,0.0011002095,-0.0041827518,0.0025494597 +15920000,imu,-0.144431,0.1813116,-9.90218,-0.0004925746,-0.005013493,0.002613422 +15924000,mag,0.0063831853,-0.21392067,0.43256858 +15924000,imu,-0.16827396,0.18932523,-9.900906,0.0011647509,-0.0054835803,0.003141539 +15928000,imu,-0.16579181,0.21278629,-9.948433,-0.0017663074,-0.0052005695,0.0033477156 +15932000,imu,-0.16707096,0.20007527,-9.970575,-0.0075262487,-0.0064142034,0.0010557295 +15936000,mag,0.0059671924,-0.22046766,0.42560706 +15936000,imu,-0.20065707,0.18431333,-9.9675045,-0.0049618534,-0.008526329,0.0017154936 +15940000,landed,1.0 +15940000,imu,-0.17093644,0.19694047,-9.949376,-0.0013642362,-0.007890116,0.0006141044 +15944000,imu,-0.17814243,0.20175858,-9.920538,-0.002861938,-0.005985885,-0.00042377246 +15948000,imu,-0.2311874,0.18587977,-9.928301,-0.0018223759,-0.0031389836,0.00030476725 +15948000,mag,0.00966483,-0.2178888,0.42862308 +15952000,imu,-0.20342857,0.17949335,-9.940699,-0.0025834106,-0.004177613,-0.00019350999 +15956000,imu,-0.1707125,0.20096624,-9.933178,-0.00041573553,-0.0065668533,0.0009397789 +15960000,imu,-0.16705373,0.15782595,-9.9522295,0.0013047943,-0.0057793898,-0.0006820726 +15960000,mag,0.011965546,-0.22094265,0.4305957 +15964000,imu,-0.20331225,0.124005355,-9.955654,-0.0018438536,-0.004373882,-0.00015464654 +15968000,imu,-0.21943319,0.12631024,-9.929529,-0.0017284018,-0.0012301642,0.0012239951 +15972000,mag,0.011223024,-0.2129426,0.43151498 +15972000,imu,-0.18894672,0.16570748,-9.918508,-0.0013646665,-0.0028062433,0.002538 +15976000,imu,-0.19932091,0.18447356,-9.923985,-0.002253582,-0.004269471,0.0043690316 +15980000,imu,-0.21016182,0.16970268,-9.885895,-0.0027146405,-0.0051162685,0.0020901128 +15984000,mag,0.009835328,-0.21164598,0.43221593 +15984000,imu,-0.18756118,0.19789612,-9.875047,-0.0013806407,-0.009521513,-0.0009798624 +15984000,baro,487.59106 +15988000,imu,-0.16262773,0.17422733,-9.926204,-0.0014565234,-0.009040959,0.001288152 +15992000,imu,-0.18501103,0.16962223,-9.947865,-0.0026394103,-0.0059622135,-4.765117e-05 +15996000,imu,-0.18869495,0.202059,-9.973578,-0.0028713096,-0.006475248,-0.0011481231 +15996000,mag,0.008117524,-0.21334134,0.43381563 +16000000,imu,-0.18492952,0.18291725,-9.963012,-0.0040523084,-0.008635282,0.00024331777 +16004000,imu,-0.17745243,0.15715297,-9.922197,-0.0037763217,-0.0071699964,-0.0012360566 +16008000,imu,-0.19314943,0.16087286,-9.940048,-0.0009290838,-0.0046664714,-0.0006746417 +16008000,mag,0.008130419,-0.21866275,0.42831042 +16012000,imu,-0.22351484,0.15946406,-9.959439,-0.00062903034,-0.0055856667,0.0013971771 +16016000,imu,-0.17868447,0.1897576,-9.931492,-0.001013616,-0.0046266834,0.0003114299 +16020000,imu,-0.18127707,0.16354498,-9.895075,-0.00061069126,-0.0041509094,-0.0039139707 +16020000,mag,0.008171931,-0.2126637,0.431731 +16024000,imu,-0.20563757,0.12499283,-9.913584,-0.0020940404,-0.0051121446,-0.0026371735 +16028000,imu,-0.21081404,0.1682141,-9.915892,-0.0025926228,-0.005825859,-0.0011493957 +16032000,mag,0.012984017,-0.21848895,0.42455843 +16032000,imu,-0.22036055,0.1749888,-9.906147,-0.0024995499,-0.005573824,-7.620904e-05 +16036000,imu,-0.19955385,0.15941994,-9.913438,-0.0016779617,-0.006023335,0.0025265694 +16040000,imu,-0.169658,0.15344204,-9.925826,-0.0009015729,-0.0024531174,0.0011465434 +16044000,mag,0.0125623075,-0.21805546,0.42899042 +16044000,imu,-0.15381108,0.14675541,-9.957609,-0.0030337195,-0.003949312,-0.0017878416 +16048000,imu,-0.18413642,0.15715936,-9.970662,5.1098286e-05,-0.009873824,-0.00163198 +16052000,gps,488101.0,85456074.0,473977508.0,0.0,0.0,0.01 +16052000,imu,-0.18288697,0.16456926,-9.945912,0.0017798515,-0.010448263,-0.00087626145 +16056000,baro,487.57697 +16056000,mag,0.014484502,-0.21453793,0.42857277 +16056000,imu,-0.15999514,0.18241096,-9.906184,-0.0030558887,-0.005074471,0.0007353046 +16060000,imu,-0.17363903,0.20139316,-9.899961,-0.0032793523,0.0008654482,0.0020710847 +16064000,imu,-0.17869172,0.1571164,-9.916214,-0.0002464033,-0.0036760904,0.0030224768 +16068000,imu,-0.16907643,0.16234413,-9.933825,0.0010713921,-0.008755109,0.0028666116 +16068000,mag,0.011535211,-0.21974804,0.42658883 +16072000,imu,-0.15509677,0.19691777,-9.9395,-0.0016623539,-0.006079563,0.00035168743 +16076000,imu,-0.14372136,0.17508122,-9.915745,-0.0028098791,-0.0042966534,-0.0013375906 +16080000,imu,-0.1588412,0.17310387,-9.898399,0.00011733294,-0.0077735847,-0.0022903422 +16080000,mag,0.0060829474,-0.21363293,0.42141548 +16084000,imu,-0.19820544,0.15145782,-9.909578,0.000788488,-0.010358649,-0.0025902654 +16088000,imu,-0.17372955,0.13142984,-9.932579,0.00079599564,-0.007693493,-0.0017471082 +16092000,mag,0.019729713,-0.21111615,0.42699233 +16092000,imu,-0.13952532,0.15769066,-9.93647,-0.0017492279,-0.003340068,0.00025406305 +16096000,imu,-0.17325744,0.1748822,-9.924551,-0.00380861,-0.004361067,0.002191669 +16100000,imu,-0.19597384,0.21142702,-9.945912,-0.0030930913,-0.006347237,0.0024783332 +16104000,mag,0.013587751,-0.21495654,0.42868575 +16104000,imu,-0.18540955,0.22700027,-9.965544,-0.0026671998,-0.0077544893,0.00080292753 +16108000,imu,-0.18481863,0.21557884,-9.959129,-0.0022991595,-0.006725619,-9.952168e-05 +16112000,imu,-0.19047594,0.19273566,-9.961068,-0.00014221825,-0.0032796387,0.0014799966 +16116000,mag,0.005792521,-0.21890332,0.4283831 +16116000,imu,-0.20271422,0.19599465,-9.937311,0.0010164576,-0.005445472,0.002055421 +16120000,imu,-0.23213768,0.21188611,-9.9168,-0.002355644,-0.006391044,-0.0005441078 +16124000,imu,-0.21256387,0.17915519,-9.929556,-0.0021900854,-0.0047826446,-0.0012864593 +16128000,mag,0.008316699,-0.21209559,0.4315686 +16128000,imu,-0.18277651,0.15739226,-9.929098,-0.00069472846,-0.006095788,0.001832506 +16128000,baro,487.6568 +16132000,imu,-0.21522802,0.17203732,-9.9349785,-0.002102366,-0.0043880884,0.0048901713 +16136000,imu,-0.21769106,0.19970709,-9.9600525,-0.0015482027,-0.0019766917,0.0020669398 +16136000,mag,0.009737773,-0.21310152,0.4309136 +16140000,imu,-0.17733134,0.17394097,-9.947367,-0.00039600494,-0.0064509124,0.00027162692 +16144000,imu,-0.17169514,0.16459431,-9.922522,-0.0006308068,-0.008107868,0.00035291197 +16148000,imu,-0.19485423,0.19873665,-9.93363,-0.0016144075,-0.0072425622,0.0017613418 +16152000,mag,0.0123821115,-0.21539189,0.43077123 +16152000,imu,-0.21155497,0.14986812,-9.935444,-0.0023476027,-0.0064165667,0.000565624 +16156000,imu,-0.19828053,0.1537896,-9.926786,-0.0029654782,-0.0045434204,-0.0037526344 +16160000,imu,-0.17696871,0.19190769,-9.949734,-0.0018051295,-0.0041516717,-0.00020853583 +16164000,mag,0.005888859,-0.21727753,0.42843226 +16164000,imu,-0.1837411,0.1626833,-9.959153,0.00014513775,-0.004377173,0.0027146568 +16168000,imu,-0.17496164,0.15437584,-9.934528,0.00161643,-0.0051888926,-0.0005552125 +16172000,imu,-0.16960731,0.16647199,-9.907469,0.0025815878,-0.005766992,-0.0017994257 +16172000,mag,0.009468272,-0.21049559,0.4278902 +16176000,imu,-0.18651755,0.17514871,-9.907815,0.00073095807,-0.0054643927,0.0008760837 +16180000,imu,-0.16005921,0.16295786,-9.921431,-0.003390233,-0.008220727,0.001017721 +16184000,imu,-0.13803926,0.1367287,-9.921059,-0.0024749655,-0.008431495,-0.0013714057 +16188000,mag,0.009072764,-0.21368365,0.42328832 +16188000,imu,-0.15694386,0.13062434,-9.93297,-0.00037492937,-0.0044347546,-0.0017485212 +16192000,imu,-0.17487383,0.15098771,-9.945045,-0.001520493,-0.0044032503,0.0010049677 +16196000,imu,-0.1996125,0.16072085,-9.931537,7.0744216e-05,-0.002243322,0.00026902574 +16200000,mag,0.005363349,-0.22200418,0.42965156 +16200000,baro,487.69434 +16200000,imu,-0.21145087,0.1457709,-9.912844,0.00017359901,-0.0029555953,-0.00055637554 +16204000,imu,-0.2093963,0.13643171,-9.966351,-0.0014103715,-0.0047245356,-0.00035985993 +16208000,imu,-0.2249681,0.16944635,-9.976773,-0.00074028247,-0.0060995566,-0.001334186 +16212000,imu,-0.20211709,0.19756557,-9.948158,0.0006724282,-0.0066506546,-0.0023580436 +16212000,mag,0.009778482,-0.21825352,0.431662 +16216000,imu,-0.16434328,0.18798162,-9.960342,0.0017274913,-0.006634709,-0.004192965 +16220000,imu,-0.17422113,0.16587275,-9.91431,0.0022336172,-0.0088952035,-0.002699622 +16224000,imu,-0.1606721,0.15906756,-9.889112,0.0014294791,-0.007972332,0.0006364087 +16224000,mag,0.012134417,-0.2232513,0.43784112 +16228000,imu,-0.17643704,0.1637258,-9.935993,-0.00096060854,-0.010578429,-0.00058898114 +16232000,imu,-0.18520297,0.16123934,-9.9365635,-0.0041340925,-0.0076455963,-0.0021042933 +16236000,mag,0.018172726,-0.21405467,0.433731 +16236000,imu,-0.18513499,0.14795722,-9.916362,-0.004135945,-0.0042511523,0.0031523157 +16240000,imu,-0.19133928,0.16754857,-9.921964,-0.0025828008,-0.009694627,0.0035177444 +16244000,mag,0.014429391,-0.21531443,0.43058628 +16244000,imu,-0.1330738,0.18111067,-9.9132185,-0.0038008292,-0.010468016,0.0018392092 +16248000,imu,-0.16917631,0.15765871,-9.932673,-0.002213439,-0.008349051,0.00014857312 +16252000,imu,-0.20624065,0.17364353,-9.916281,0.00046148707,-0.004574014,-0.002329414 +16256000,mag,0.015932066,-0.21960546,0.4266621 +16256000,imu,-0.18851298,0.17679939,-9.905436,0.0020766472,-0.005334554,-0.0013767757 +16260000,imu,-0.20000577,0.1707147,-9.918383,0.0015538362,-0.0057702563,-0.0022252232 +16264000,imu,-0.21503589,0.1617494,-9.915611,-0.0013361638,-0.0038926422,0.00016878557 +16268000,baro,487.61453 +16268000,mag,0.009478468,-0.2139673,0.42928082 +16268000,imu,-0.19771503,0.11570282,-9.930166,-0.0038951584,-0.004076055,0.00026924288 +16272000,imu,-0.19388753,0.13889171,-9.933146,-0.0047877324,-0.009608955,0.0009829825 +16276000,imu,-0.22463252,0.18900281,-9.928039,-0.0011008873,-0.012791118,0.001550369 +16280000,imu,-0.21262516,0.20348324,-9.9241085,0.00091134437,-0.00811725,0.0016769208 +16284000,imu,-0.19789472,0.1940491,-9.923111,-0.000973174,-0.0073477323,0.000867771 +16284000,mag,0.008416129,-0.21856835,0.4354424 +16288000,imu,-0.19455206,0.17807879,-9.9499,-0.00090644014,-0.007671706,-0.0032071287 +16292000,imu,-0.19078541,0.176476,-9.960972,-0.001468853,-0.0048247697,-0.0012571922 +16296000,imu,-0.19171962,0.16144073,-9.938396,-0.002791551,-0.0030973149,-0.0034306524 +16296000,mag,0.006270171,-0.21125251,0.4255388 +16300000,imu,-0.18398125,0.17199463,-9.922287,-0.0019876964,-0.0036750757,-0.005545006 +16304000,imu,-0.16536018,0.18378006,-9.921988,-0.0012831126,-0.004453924,-0.0032860723 +16308000,mag,0.011032957,-0.2115659,0.4307228 +16308000,imu,-0.17534009,0.19954304,-9.93355,-0.0021885936,-0.004879448,2.3324894e-05 +16312000,imu,-0.18316737,0.20508485,-9.957802,-0.002715798,-0.002533189,0.0011105266 +16316000,imu,-0.20005019,0.15060963,-9.969259,-0.0018953152,-0.0027895293,-0.0008884679 +16320000,mag,0.0041055703,-0.21551967,0.42185733 +16320000,baro,487.6474 +16320000,imu,-0.17908227,0.16023192,-9.912961,-0.003131985,-0.00610659,0.0010506727 +16324000,imu,-0.1541673,0.20127307,-9.895387,-0.0044106552,-0.0057061813,0.0017729924 +16328000,imu,-0.17646569,0.15294418,-9.932938,-0.0036518658,-0.004088209,0.0019746884 +16332000,imu,-0.20843431,0.13321282,-9.969891,-0.002745963,-0.003964635,0.0026786274 +16332000,mag,0.006244222,-0.2111729,0.42640254 +16336000,imu,-0.20821536,0.17130312,-9.958373,-0.0031155362,-0.002933265,0.0011856193 +16340000,imu,-0.19007717,0.19249538,-9.926645,-0.0046112277,-0.005718629,0.0012696473 +16344000,imu,-0.19754645,0.21441756,-9.933258,-0.0016984238,-0.008304429,0.0020467823 +16344000,mag,0.010794433,-0.21580829,0.43135616 +16348000,imu,-0.2144067,0.21841039,-9.924619,0.0014958282,-0.006863612,0.0008518558 +16352000,imu,-0.20994067,0.20883341,-9.892001,-0.00086872705,-0.005771453,-0.0010983576 +16356000,mag,0.0039809053,-0.21815449,0.4337891 +16356000,imu,-0.19176826,0.18660541,-9.888536,-0.0023832424,-0.004402934,-0.001932234 +16360000,imu,-0.17853364,0.16710573,-9.938784,-0.0030489808,-0.0034794058,-0.001769249 +16364000,imu,-0.19374564,0.15529479,-9.945555,-0.0031800217,-0.0042275633,-0.0007576244 +16368000,imu,-0.22212228,0.15472057,-9.927501,-0.0013692951,-0.0072429464,-0.0002595929 +16368000,mag,0.0124357985,-0.21316068,0.43443596 +16372000,imu,-0.20584033,0.1973539,-9.951931,-0.0011872419,-0.010670507,0.0005413351 +16376000,imu,-0.20760462,0.2025573,-9.918514,-0.0052339234,-0.008393194,0.0011880493 +16380000,mag,0.0073739546,-0.21998236,0.43193075 +16380000,imu,-0.21587306,0.17760764,-9.906416,-0.0064021884,-0.008212469,0.00022583824 +16384000,imu,-0.20992628,0.1664207,-9.934103,-0.0034562314,-0.009053197,0.0012063236 +16388000,imu,-0.18616775,0.18653442,-9.920786,-0.0050734053,-0.006002705,0.0021364929 +16392000,imu,-0.19021994,0.22348818,-9.929949,-0.004000694,-0.0039087185,0.0034866394 +16392000,mag,0.011171645,-0.21072306,0.4327343 +16392000,baro,487.7272 +16396000,imu,-0.20515186,0.20967695,-9.972747,0.00074852037,-0.0045652417,-0.00054866646 +16400000,imu,-0.16085124,0.17523848,-9.989395,-0.002875328,-0.0062726233,-0.0054178857 +16404000,mag,0.013371898,-0.21711493,0.43135157 +16404000,imu,-0.12413926,0.20167427,-9.989908,-0.0008738146,-0.0033341728,-0.0030933348 +16408000,imu,-0.15659167,0.21076022,-9.961741,0.0025816783,-0.0044264207,0.00040626794 +16412000,imu,-0.16940132,0.19177085,-9.927143,0.00074776984,-0.006748302,0.00046335103 +16416000,imu,-0.18784711,0.17916249,-9.897411,-0.00027560472,-0.007609829,0.0016888537 +16416000,mag,0.013471204,-0.21718188,0.42765442 +16420000,imu,-0.19829479,0.17040065,-9.899126,-0.0024635785,-0.007178341,8.756422e-05 +16424000,imu,-0.17614502,0.18093942,-9.946802,-0.00062038895,-0.0044440283,0.00037260118 +16428000,imu,-0.17388466,0.20176443,-9.953915,-0.00081583485,-0.0049543874,0.004622047 +16428000,mag,0.0060674846,-0.21817832,0.4288065 +16432000,imu,-0.17310807,0.19270772,-9.94348,2.0611764e-05,-0.008718181,0.0018122939 +16436000,imu,-0.1695722,0.17114021,-9.926703,0.0010418855,-0.008738245,0.00026326117 +16436000,mag,0.007283956,-0.21656251,0.43064103 +16440000,imu,-0.16144301,0.16883503,-9.916012,-0.0013867207,-0.006072495,0.0017301086 +16444000,imu,-0.19170547,0.16727209,-9.907436,-0.0024725862,-0.005313724,-0.001494512 +16448000,imu,-0.20949802,0.19167614,-9.919755,-0.00085885526,-0.0035496135,-0.0022127326 +16452000,mag,0.009958678,-0.21581261,0.4356252 +16452000,gps,488106.0,85456074.0,473977508.0,-0.02,0.02,-0.03 +16452000,imu,-0.18253517,0.19806993,-9.928486,-0.0024540839,-0.004449505,-0.0012007627 +16456000,imu,-0.1669893,0.18420702,-9.940594,-0.0024739746,-0.008446049,-0.0018701822 +16460000,imu,-0.15864173,0.18350998,-9.940649,-0.00087793753,-0.008344882,-0.0018273041 +16464000,imu,-0.18698376,0.19715957,-9.917358,-0.0008897304,-0.0071271546,-0.0015993216 +16464000,mag,0.004755403,-0.21560307,0.4351805 +16464000,baro,487.6474 +16468000,imu,-0.17953333,0.20622964,-9.939159,0.0014213079,-0.0062079593,0.00030540483 +16472000,imu,-0.15516815,0.1884955,-9.956665,0.0012394178,-0.005620821,0.0016946188 +16476000,imu,-0.20429367,0.15692236,-9.966632,0.0026194877,-0.0049763876,-0.0006399724 +16476000,mag,0.012334042,-0.20753218,0.4345783 +16480000,imu,-0.19730225,0.15891337,-9.9355755,0.004368867,-0.0009296178,-0.0019487557 +16484000,imu,-0.15602306,0.15844621,-9.893905,0.00023219123,-0.00074080453,-0.002373776 +16488000,mag,0.0032311925,-0.21357672,0.4224306 +16488000,imu,-0.1935669,0.18179698,-9.911071,0.0010368908,-0.0077422685,-0.004238837 +16492000,imu,-0.21739015,0.20715113,-9.916927,0.002524509,-0.006197263,0.00041087565 +16496000,imu,-0.17515203,0.20323013,-9.937031,-0.0005052672,-0.0035608015,0.00085344934 +16500000,mag,0.010149939,-0.22063789,0.42511162 +16500000,imu,-0.18524617,0.19251402,-9.947548,-0.0015662978,-0.008382877,-0.0022028377 +16504000,imu,-0.20308292,0.18433037,-9.932012,2.0551059e-05,-0.007611074,0.00015601123 +16508000,imu,-0.1729796,0.20075172,-9.944891,0.0024827176,-0.004979807,0.0007743214 +16512000,mag,0.015535048,-0.21447542,0.42631474 +16512000,imu,-0.15160123,0.17466807,-9.934044,0.0015278596,-0.005475461,0.001195859 +16516000,imu,-0.15871507,0.16329665,-9.940691,-0.0005088967,-0.006463661,-0.0005767229 +16520000,imu,-0.204705,0.18872805,-9.983065,0.0001844458,-0.008731998,-0.0017290566 +16524000,imu,-0.22386752,0.16070616,-9.967893,0.0020047713,-0.008789337,0.0015335949 +16524000,mag,0.0069486415,-0.21906076,0.43231234 +16528000,imu,-0.18565845,0.16101816,-9.943205,0.0012876542,-0.0052069034,0.0010724968 +16532000,imu,-0.19206645,0.17823528,-9.972604,-0.002930986,-0.0056419666,-0.0010995537 +16536000,imu,-0.20033553,0.17197978,-9.9654,-0.0018080781,-0.0044734795,9.5594994e-05 +16536000,baro,487.59106 +16536000,mag,0.012477813,-0.21494517,0.42362848 +16540000,imu,-0.16936964,0.16915971,-9.959953,0.001812509,-0.0066343485,0.0015373923 +16544000,imu,-0.18047234,0.15493777,-9.983289,-2.7432023e-05,-0.01013275,0.001387356 +16548000,mag,0.010175901,-0.21733904,0.43114132 +16548000,imu,-0.23234257,0.16523232,-9.953801,-0.00094991014,-0.007670302,0.00019468123 +16552000,imu,-0.24401304,0.17572299,-9.921326,0.0006057611,-0.004010958,-0.0015233082 +16556000,imu,-0.23286778,0.17585133,-9.917124,0.0047530606,-0.0028501889,-0.0032063709 +16560000,imu,-0.19951817,0.17918822,-9.9531,0.004079765,-0.0047440245,-0.004014828 +16560000,mag,0.015599803,-0.21233633,0.43116018 +16564000,imu,-0.18324618,0.15693212,-9.974501,-6.704241e-05,-0.005535534,-0.0024810215 +16568000,imu,-0.17261858,0.16038582,-9.936569,-0.0018016302,-0.007259727,-0.0012555984 +16572000,imu,-0.1671415,0.17562295,-9.9379015,-0.0030776844,-0.008851449,-0.0013607728 +16572000,mag,0.008307384,-0.21454345,0.43191686 +16576000,imu,-0.2211349,0.19831683,-9.9667225,-0.0023943144,-0.007744905,-0.0010182868 +16580000,imu,-0.23015471,0.2222117,-9.977146,-0.00021797455,-0.00598381,-0.000805227 +16584000,imu,-0.19370963,0.21118616,-9.976477,0.0013760069,-0.00620966,-0.0020757578 +16584000,mag,0.005217258,-0.2133532,0.4317068 +16588000,imu,-0.18924338,0.17255302,-9.977372,-0.0012838355,-0.007951599,-0.0020515432 +16592000,imu,-0.18857646,0.17392765,-9.963522,-0.004332579,-0.0063886885,-0.0011154483 +16596000,mag,0.008762401,-0.21104367,0.42801008 +16596000,imu,-0.18345554,0.21645842,-9.932552,-0.002427678,-0.00681362,-0.00056409795 +16600000,imu,-0.18100429,0.19936694,-9.9058895,0.0029448294,-0.010836208,-0.004694913 +16604000,imu,-0.14362909,0.17160253,-9.909142,0.0019820891,-0.010231995,-0.005014349 +16608000,mag,0.01196012,-0.21314318,0.42802435 +16608000,baro,487.5629 +16608000,imu,-0.13295469,0.1622887,-9.911698,0.00014494259,-0.005509192,-0.003868252 +16612000,imu,-0.16384569,0.14564922,-9.940849,-0.0017190139,-0.007223693,-0.0039007769 +16616000,imu,-0.1794672,0.15781303,-9.978481,-0.0038218182,-0.006494038,0.00032433003 +16620000,imu,-0.1691668,0.18123482,-9.967307,0.0012501464,-0.0037682448,-4.323672e-05 +16620000,mag,0.0056468854,-0.22123821,0.42980343 +16624000,imu,-0.20902655,0.15093039,-9.954563,0.002503669,-0.006633617,-0.00084571156 +16628000,imu,-0.22902581,0.17656095,-9.933308,-0.0014311372,-0.004631784,0.00294537 +16632000,mag,0.0010340366,-0.2153269,0.43138474 +16632000,imu,-0.17316812,0.19805561,-9.911232,-0.00484504,-0.004660161,0.0030553387 +16636000,imu,-0.19024318,0.16312411,-9.920048,-0.002494867,-0.0049172356,-0.0010873287 +16640000,imu,-0.21449533,0.18027684,-9.9300375,0.0022220241,-0.0029152334,-0.0004588639 +16644000,mag,0.0067106914,-0.21882245,0.4272027 +16644000,imu,-0.191755,0.18283607,-9.955423,0.00086167787,-0.0045524263,-0.0011461535 +16648000,imu,-0.17934883,0.16736193,-9.979757,-0.0012946536,-0.006768628,-0.0012117461 +16652000,imu,-0.1742545,0.15508972,-9.951447,-0.0010798322,-0.0042675454,0.002078749 +16656000,imu,-0.19882704,0.124418974,-9.937822,-0.0002795766,-0.0007916545,0.0001286168 +16656000,mag,0.015215022,-0.21620017,0.42618436 +16660000,imu,-0.21636769,0.15055856,-9.944759,0.0010500595,-0.0051698894,-0.0028011687 +16664000,imu,-0.18920195,0.18192741,-9.922964,0.001190201,-0.006546083,0.0016194058 +16668000,imu,-0.1854473,0.18435377,-9.900799,-0.0010368652,-0.006621519,0.004577603 +16668000,mag,0.009705444,-0.21960044,0.44042498 +16672000,imu,-0.20665812,0.2095229,-9.916646,-0.0019081122,-0.0070488914,-0.0003111952 +16676000,mag,0.0076264613,-0.21557346,0.42577592 +16676000,imu,-0.16546777,0.20856567,-9.923958,0.00040465742,-0.005564608,-0.0030504537 +16680000,imu,-0.12756304,0.19533555,-9.931419,-0.0001664058,-0.006642167,-0.0018868556 +16680000,baro,487.62863 +16684000,imu,-0.1403374,0.18919939,-9.957722,-0.0017276971,-0.0048335674,-0.0017295363 +16688000,imu,-0.16810763,0.19413534,-9.942977,-0.003598125,-0.003594035,-0.0014340298 +16692000,imu,-0.19945106,0.1960329,-9.936716,-0.0027630965,-0.0067115747,-0.0005513385 +16692000,mag,0.0039982623,-0.21604276,0.43388858 +16696000,imu,-0.20474328,0.18640679,-9.935416,0.00063663186,-0.008868609,-0.0015671991 +16700000,imu,-0.20735738,0.2093879,-9.915097,0.0013149888,-0.005024839,0.001012093 +16704000,mag,0.0038637351,-0.21385401,0.42352173 +16704000,imu,-0.19933778,0.20858744,-9.911594,-0.0005320126,-0.0035193763,0.0046033016 +16708000,imu,-0.17697804,0.16643648,-9.939718,-0.0022101626,-0.00526951,0.00021774639 +16712000,imu,-0.18932435,0.17687348,-9.965537,-2.2387947e-06,-0.0053975256,-0.0034156716 +16716000,imu,-0.19185789,0.19876426,-9.932331,-0.00054633763,-0.0063602673,-0.0021689474 +16716000,mag,0.007075043,-0.2130642,0.43315268 +16720000,imu,-0.17820016,0.1787337,-9.929596,-0.0027172933,-0.0075498777,-0.0011574628 +16724000,imu,-0.2067438,0.14211576,-9.941114,-0.0035453574,-0.0064885165,-4.3632073e-05 +16728000,imu,-0.22531763,0.15191591,-9.922648,-0.0013642687,-0.008181119,0.0010622729 +16728000,mag,0.016216423,-0.21310467,0.42787853 +16732000,imu,-0.22182342,0.17744541,-9.918628,0.0006578513,-0.008014515,-0.0012463265 +16736000,imu,-0.19766243,0.1732034,-9.917782,-0.001285509,-0.0046375236,-0.00061220425 +16736000,mag,0.0070425565,-0.2170348,0.42092556 +16740000,imu,-0.18323357,0.19216932,-9.93453,-0.0013270214,-0.0029007583,-0.001003831 +16744000,imu,-0.18034557,0.23705204,-9.962009,0.0021964307,-0.0024768552,-0.0019218685 +16748000,imu,-0.18014179,0.21694331,-9.9591055,0.0017977601,-0.0073944554,0.0029225724 +16752000,baro,487.58167 +16752000,mag,0.010612131,-0.22060278,0.42905867 +16752000,imu,-0.16539825,0.17799838,-9.945308,-0.0032676796,-0.008112543,0.0010457961 +16756000,imu,-0.17586929,0.17631423,-9.937225,-0.0014890808,-0.0056695454,-0.0012739614 +16760000,imu,-0.17672674,0.13984486,-9.925436,0.00011784728,-0.0071617253,-0.0019346505 +16764000,imu,-0.14972281,0.1660255,-9.931902,-0.003143792,-0.005965423,-0.0022753163 +16764000,mag,0.01028874,-0.21605612,0.4259186 +16768000,imu,-0.21008462,0.19427937,-9.929446,-0.0030053419,-0.0038708453,-0.0011169714 +16772000,imu,-0.21768144,0.16370319,-9.925,-0.0008554121,-0.001038103,-0.00016880316 +16776000,mag,0.009882812,-0.21386066,0.42668954 +16776000,imu,-0.17975923,0.16869123,-9.928211,-0.0043726284,-0.0004050476,0.002956187 +16780000,imu,-0.17666072,0.17427579,-9.930145,-0.0044691563,-0.0039878394,0.0011590874 +16784000,imu,-0.18607429,0.15403287,-9.943838,-0.00027426434,-0.00475963,4.8988277e-05 +16788000,mag,0.013832366,-0.21304229,0.42461234 +16788000,imu,-0.20347112,0.18443507,-9.9289665,1.7342612e-05,-0.006086783,0.0027487646 +16792000,imu,-0.18867794,0.19597787,-9.922611,-0.0013761506,-0.007344379,0.0030885513 +16796000,mag,0.0103125395,-0.21142325,0.43135908 +16796000,imu,-0.17758778,0.13495421,-9.921774,-0.003266334,-0.005933282,0.0021850225 +16800000,imu,-0.19937941,0.14878401,-9.950601,-0.0028563852,-0.004092303,0.0019316563 +16804000,imu,-0.19145307,0.19620024,-9.970421,-0.0004549504,-0.005338917,0.0019092516 +16808000,imu,-0.1938551,0.15803294,-9.9547415,-0.00038724396,-0.004907516,0.0010363598 +16812000,mag,0.0063072084,-0.21789065,0.43400556 +16812000,imu,-0.19407855,0.15966487,-9.940072,-0.0015874227,-0.0033173962,0.0004990896 +16816000,imu,-0.14270036,0.1841183,-9.924601,0.0005889343,-0.004597602,-0.002905525 +16820000,imu,-0.117710486,0.16318107,-9.955017,-1.804519e-05,-0.003950757,-0.0036361755 +16824000,mag,0.010675859,-0.21565479,0.43483317 +16824000,imu,-0.17729926,0.16484234,-9.986387,-0.000936176,-0.003141832,0.0023208703 +16824000,baro,487.59106 +16828000,imu,-0.21237564,0.18679722,-9.981168,-0.0015149113,-0.0060969205,-9.126753e-06 +16832000,imu,-0.19474041,0.18023667,-9.933729,-0.0027074504,-0.008907419,-0.0037652561 +16836000,imu,-0.18127388,0.17293277,-9.9179945,-0.0019754088,-0.0053887106,0.001069338 +16836000,mag,0.007604016,-0.22100821,0.42938635 +16840000,imu,-0.1678551,0.16564788,-9.934654,-0.0027792095,-0.0017095682,0.0050224965 +16844000,imu,-0.16067085,0.17111312,-9.931711,0.0026602542,-0.0026866365,0.005957247 +16848000,imu,-0.16753677,0.18649845,-9.922555,0.0033845059,-0.0059998767,0.001937833 +16848000,mag,0.010204334,-0.21395041,0.4255455 +16852000,gps,488104.0,85456074.0,473977508.0,-0.01,-0.01,-0.049999997 +16852000,imu,-0.18838437,0.18069072,-9.932736,-0.00084948144,-0.0069159637,0.00041120136 +16856000,imu,-0.16639572,0.17044993,-9.919699,-0.0014150412,-0.004314066,0.002568837 +16860000,mag,0.007164219,-0.21447438,0.42956322 +16860000,imu,-0.1737951,0.1530775,-9.926413,-0.0001504063,-0.0060158996,0.0018004717 +16864000,imu,-0.17302892,0.20424855,-9.953666,0.0011131327,-0.006374134,-0.000924982 +16868000,imu,-0.1459941,0.22621062,-9.935099,0.0005031385,-0.0063521964,-0.0017008877 +16872000,mag,0.0045910766,-0.21472698,0.42864895 +16872000,imu,-0.13299142,0.18519275,-9.9247265,0.0028869698,-0.007872816,0.0003368415 +16876000,imu,-0.1425808,0.16963987,-9.935305,-0.0009894761,-0.0046848566,0.0010168216 +16880000,imu,-0.15992439,0.16322386,-9.929346,-0.0025158783,-0.0022842314,0.0011797557 +16884000,imu,-0.17084953,0.16585398,-9.914833,-0.0004923879,-0.004902357,-0.00024207743 +16884000,mag,0.008530032,-0.2158713,0.43367022 +16888000,imu,-0.21819109,0.17253274,-9.905714,-0.0023313242,-0.008251088,-0.0010769697 +16892000,imu,-0.22948565,0.16612945,-9.894027,-0.0002082843,-0.0052709053,-0.00018951387 +16896000,baro,487.59576 +16896000,mag,0.00818555,-0.2150281,0.42433712 +16896000,imu,-0.2003792,0.1637671,-9.901947,-0.0006165808,-0.005178935,5.870854e-05 +16900000,imu,-0.18240206,0.17914814,-9.922374,-0.0024336479,-0.007843075,-1.7537843e-05 +16904000,imu,-0.17668071,0.1752588,-9.931255,-0.0008821352,-0.0066879084,0.00012106321 +16908000,mag,0.00916125,-0.21305948,0.43375838 +16908000,imu,-0.16407618,0.164321,-9.903587,-2.8691775e-05,-0.0035298206,0.002279874 +16912000,imu,-0.16427808,0.16498709,-9.909407,0.0008120628,-0.0030867879,0.0029087155 +16916000,imu,-0.16400447,0.1544067,-9.915289,0.00044685815,-0.0059483326,0.0025693704 +16920000,imu,-0.15966205,0.16382232,-9.924408,0.00038655,-0.0056065903,2.4901537e-05 +16920000,mag,0.006483041,-0.2190336,0.4281917 +16924000,imu,-0.1775612,0.16367559,-9.940149,-0.00032656296,-0.003123537,-0.0028232676 +16928000,imu,-0.18658407,0.16208202,-9.942712,-0.0036717914,-0.0058240267,-0.0014248873 +16932000,imu,-0.18480924,0.16639583,-9.9822445,-0.0038257032,-0.0078081503,0.000782977 +16932000,mag,0.0040228534,-0.21453688,0.43267143 +16936000,imu,-0.19344926,0.16939063,-9.951535,-0.004659506,-0.0047213654,-0.00014549596 +16940000,landed,1.0 +16940000,imu,-0.1608862,0.1742816,-9.902234,-0.0024471222,-0.002071782,-7.2427654e-05 +16944000,mag,0.01064684,-0.21497221,0.42836922 +16944000,imu,-0.18285993,0.20231475,-9.921395,-0.00058598636,-0.0049876925,0.00039235348 +16948000,imu,-0.21388091,0.1902712,-9.945803,-0.00095997145,-0.004397103,-0.0017964039 +16952000,imu,-0.17730725,0.15482052,-9.951571,0.000397374,-0.0028374076,0.0015298912 +16956000,mag,0.00089807616,-0.21370655,0.42652833 +16956000,imu,-0.16159448,0.16053085,-9.917275,-0.0013020154,-0.0040565114,0.0037214425 +16960000,imu,-0.18388703,0.15901673,-9.913142,-0.00085084373,-0.0019878885,0.0026500945 +16964000,imu,-0.20586795,0.17569755,-9.928445,-0.0023771776,-0.0030070536,0.001747859 +16968000,imu,-0.19620776,0.15648775,-9.907692,-0.0030145103,-0.006274295,0.00017938914 +16968000,mag,0.0061849323,-0.2140073,0.4260621 +16968000,baro,487.67087 +16972000,imu,-0.18865159,0.13795725,-9.928762,-0.00046483654,-0.0076122275,-0.0028199095 +16976000,imu,-0.16932575,0.16404326,-9.968039,-0.0009987392,-0.0023138786,-0.006362475 +16980000,mag,0.015857503,-0.2186015,0.43103862 +16980000,imu,-0.14466779,0.15012269,-9.934672,-0.0015386982,-0.0019016238,-0.0040331604 +16984000,imu,-0.14958705,0.14795186,-9.883185,-0.0020701634,-0.006729705,-0.00072158 +16988000,imu,-0.18084365,0.19315022,-9.910763,-0.003986454,-0.00966237,-0.0003606963 +16992000,mag,0.0060877968,-0.21499723,0.4312878 +16992000,imu,-0.19328576,0.18583539,-9.924978,-0.0058860546,-0.0092619965,0.00034405375 +16996000,imu,-0.19309881,0.16823281,-9.932451,-0.003946302,-0.004590457,0.0019504185 +17000000,imu,-0.18355328,0.16415714,-9.943334,-0.0013102354,-0.0051167975,0.00373717 +17004000,mag,0.0118700275,-0.22022057,0.42821562 +17004000,imu,-0.17064431,0.15111904,-9.906037,-0.0035061592,-0.009374911,0.0013097528 +17008000,imu,-0.17642075,0.15322506,-9.864813,-0.0005424294,-0.007463066,-0.0027926255 +17012000,imu,-0.18080786,0.15833268,-9.898869,-0.001204975,-0.005538034,-0.0034812756 +17016000,imu,-0.16467154,0.17149277,-9.963972,-0.0039737346,-0.004778205,-0.0020559556 +17016000,mag,0.014656827,-0.2185267,0.4355509 +17020000,imu,-0.16678466,0.1621231,-9.966274,-0.0018554688,-0.0044791023,-0.0015095767 +17024000,imu,-0.19255829,0.14061327,-9.983318,-0.0029079895,-0.008013804,-5.6131503e-05 +17028000,mag,0.007120614,-0.21241315,0.43465662 +17028000,imu,-0.17406857,0.17900877,-9.939176,-0.0031791471,-0.0071044993,0.0020086542 +17032000,imu,-0.15027247,0.19018164,-9.897737,-0.0030419107,-0.00629544,-0.00046466893 +17036000,imu,-0.1560787,0.19198021,-9.932874,-0.0022404552,-0.007890801,0.0006752465 +17040000,imu,-0.14395547,0.19805975,-9.944296,-0.0033202334,-0.0068894885,0.0021912125 +17040000,mag,0.01127725,-0.21420477,0.43245485 +17040000,baro,487.6568 +17044000,imu,-0.17178315,0.1623603,-9.935951,-0.004071469,-0.007992901,-0.00088722684 +17048000,imu,-0.2105689,0.16261454,-9.94703,-0.0031236825,-0.008232022,-0.0021910423 +17052000,imu,-0.21698895,0.16727367,-9.9384365,-0.003459682,-0.0079135345,-0.00190327 +17052000,mag,0.009036032,-0.2129278,0.43238533 +17056000,imu,-0.20700741,0.15283546,-9.928717,-0.0014030184,-0.007884175,6.4086016e-05 +17060000,imu,-0.17664823,0.16240664,-9.90823,0.0004004509,-0.0071994998,0.0009864686 +17064000,mag,0.010661021,-0.21238574,0.43041506 +17064000,imu,-0.1550873,0.16549471,-9.89336,-0.0024603067,-0.0068086516,-0.0002878395 +17068000,imu,-0.14920549,0.16214545,-9.930063,-0.0035881614,-0.0035196044,1.671402e-05 +17072000,imu,-0.14459357,0.1656248,-9.917868,-0.0049353624,-0.004257041,0.0009884872 +17076000,mag,0.009594117,-0.21477787,0.43020317 +17076000,imu,-0.14684853,0.143535,-9.8977785,-0.0040988284,-0.0064847167,0.0014626955 +17080000,imu,-0.16333921,0.1680997,-9.871729,0.0012680178,-0.0040952824,0.0028918702 +17084000,imu,-0.16919306,0.19806246,-9.902935,0.0009666025,-0.004484263,0.0027768104 +17088000,mag,0.0065143653,-0.21943107,0.4275117 +17088000,imu,-0.14299172,0.17692153,-9.922246,-0.00021654666,-0.0051187957,-7.2582894e-05 +17092000,imu,-0.15288103,0.17764667,-9.894287,0.00022783696,-0.0060398555,-0.0026955716 +17096000,imu,-0.18285857,0.20060481,-9.902983,-0.0023726642,-0.0072760764,-0.002576252 +17100000,imu,-0.17682102,0.16805756,-9.916631,-0.0023635263,-0.007118188,0.0007985997 +17100000,mag,0.011532063,-0.2113585,0.42892778 +17104000,imu,-0.18214521,0.14157163,-9.935106,-0.00073663815,-0.008228289,0.0010913912 +17108000,imu,-0.14539944,0.14684585,-9.919466,-0.0014154334,-0.0056596133,0.0013270273 +17112000,mag,0.008413219,-0.21136051,0.42782676 +17112000,imu,-0.13477707,0.11399023,-9.910052,0.0005727089,-0.0049923873,0.0013644923 +17112000,baro,487.68027 +17116000,imu,-0.1258282,0.14697751,-9.917231,0.00031059305,-0.0061449017,0.0009429855 +17120000,imu,-0.1295465,0.21770653,-9.924642,-0.0012554099,-0.0062891888,-0.0023594375 +17124000,mag,0.009989826,-0.21693979,0.4317666 +17124000,imu,-0.16413406,0.19683534,-9.938103,0.0009071977,-0.010915063,-0.0029287292 +17128000,imu,-0.14174846,0.16315638,-9.928478,0.0007882036,-0.008468594,0.0003053401 +17132000,imu,-0.16783881,0.14381093,-9.911383,-0.0003662335,-0.0028981438,0.00039764727 +17136000,mag,0.0090858275,-0.21305601,0.43259203 +17136000,imu,-0.18688819,0.1386889,-9.891735,-0.002447177,-0.003774951,0.0017120306 +17140000,imu,-0.18940148,0.16130933,-9.904468,-0.0041926983,-0.005688356,0.00033319826 +17144000,imu,-0.18000472,0.1739311,-9.923888,-0.0024001,-0.007725236,-0.0017360441 +17148000,mag,0.012533285,-0.21998052,0.4332323 +17148000,imu,-0.15473841,0.2115982,-9.900731,-0.0022865736,-0.009185438,-0.002031071 +17152000,imu,-0.17975631,0.19431014,-9.894582,-0.0011283833,-0.005351137,-0.0017700237 +17156000,imu,-0.19618079,0.15113145,-9.93378,0.0012184,-0.0025538693,-0.002908669 +17160000,mag,0.013366048,-0.21503058,0.4261986 +17160000,imu,-0.17748052,0.17862217,-9.944012,0.0009089766,-0.0035007447,-0.00011083275 +17164000,imu,-0.18088761,0.19253463,-9.940916,0.0003535829,-0.0032963168,0.0006083899 +17168000,imu,-0.17622104,0.15808943,-9.953363,-0.00088662485,-0.003448435,-0.0017420406 +17172000,imu,-0.15440571,0.13193604,-9.9422245,-0.00057429634,-0.0042400304,0.00023257776 +17172000,mag,0.009817823,-0.21491411,0.42544743 +17176000,imu,-0.16475272,0.15093307,-9.953314,-0.0025935047,-0.006074165,0.0021089374 +17180000,imu,-0.1565992,0.1691996,-9.951026,-0.0034876526,-0.0074291257,0.0009667702 +17184000,imu,-0.17118457,0.16511095,-9.946993,-0.003916799,-0.0096862335,0.0012621138 +17184000,baro,487.50656 +17184000,mag,0.009536908,-0.21299203,0.42529333 +17188000,imu,-0.1754114,0.16517803,-9.9552765,-0.0064027663,-0.006584551,0.004906385 +17192000,imu,-0.16997226,0.14948982,-9.933033,-0.00729796,-0.0020323994,0.0029147558 +17196000,imu,-0.1939651,0.13749935,-9.912224,-0.0062511256,-0.0038072402,-0.00021021267 +17196000,mag,0.009467605,-0.21374945,0.42951795 +17200000,imu,-0.17439517,0.15168677,-9.902456,-0.002501475,-0.004744786,-0.00095003995 +17204000,imu,-0.1701586,0.16097218,-9.915434,0.0012247658,-0.0035909752,-0.0032966197 +17208000,imu,-0.18350357,0.1622554,-9.947888,-5.7628265e-05,-0.0059248605,-0.00028343624 +17208000,mag,0.010270421,-0.21414286,0.43081394 +17212000,imu,-0.17955501,0.16727567,-9.953913,-0.0012452721,-0.0067563476,0.0012266691 +17216000,imu,-0.19519311,0.17008667,-9.959522,0.00093666476,-0.006315302,-0.0011911795 +17220000,imu,-0.16877182,0.14007293,-9.913367,0.0020293389,-0.0076132696,-0.00037818003 +17220000,mag,0.008400623,-0.22025642,0.42931065 +17224000,imu,-0.12552926,0.12832662,-9.899076,-0.0012741849,-0.0063011204,0.0013026195 +17228000,imu,-0.1504245,0.1509596,-9.89989,-0.0026032939,-0.004525849,0.0012656463 +17232000,mag,0.00923112,-0.21625441,0.4330426 +17232000,imu,-0.17720178,0.15395601,-9.905258,0.0004847904,-0.0045747138,-0.00053201703 +17236000,imu,-0.17556252,0.17446478,-9.94357,-0.0034383086,-0.0046726097,-7.433295e-05 +17240000,imu,-0.15995494,0.16806741,-9.912369,-0.001550416,-0.004947254,0.0024633938 +17244000,imu,-0.1791521,0.17165177,-9.926418,-0.0002724193,-0.0056241886,0.0016399014 +17244000,mag,0.011604303,-0.21559948,0.43218237 +17248000,imu,-0.21418099,0.15181915,-9.926022,-0.0022197727,-0.0060878866,-0.00021014542 +17252000,imu,-0.18920498,0.12584771,-9.900938,-0.00024968098,-0.0033788448,0.0021112068 +17252000,gps,488102.0,85456074.0,473977508.0,0.0,-0.01,0.02 +17256000,baro,487.6521 +17256000,mag,0.011294478,-0.21810892,0.4264445 +17256000,imu,-0.15875843,0.15303908,-9.915581,0.00010602928,-0.00339533,0.0013515392 +17260000,imu,-0.15509583,0.1259568,-9.935759,0.0013705873,-0.006291396,0.00030721945 +17264000,imu,-0.15767635,0.12368283,-9.944451,-0.00046691575,-0.0037292999,0.0013293494 +17268000,imu,-0.16551305,0.13097982,-9.949474,-0.0023960494,-0.006164934,0.0007700297 +17268000,mag,0.013933619,-0.21803796,0.4270981 +17272000,imu,-0.17175873,0.16706705,-9.957324,0.0016327444,-0.009086235,-0.0009571149 +17276000,imu,-0.16316184,0.21421376,-9.939452,0.0034716225,-0.006369189,-1.44740825e-05 +17276000,mag,0.0014992416,-0.21212606,0.434532 +17280000,imu,-0.16747716,0.16700561,-9.912996,0.0029601937,-0.008197786,0.0009199263 +17284000,imu,-0.15451132,0.13655001,-9.924427,0.0012688929,-0.007246991,-0.0010526393 +17288000,imu,-0.14906123,0.15835752,-9.926027,-0.002372375,-0.0035085762,-0.0023819783 +17292000,imu,-0.18839155,0.16098592,-9.903648,-0.0023751913,-0.0035391229,-0.0026166656 +17292000,mag,0.008690339,-0.21913782,0.42756405 +17296000,imu,-0.19023232,0.15848576,-9.915888,9.831094e-05,-0.0026517322,-0.0023987794 +17300000,imu,-0.17605528,0.17271116,-9.961035,0.0021992736,-0.0037738658,-0.00151654 +17304000,mag,0.011367426,-0.21560061,0.4342917 +17304000,imu,-0.16390172,0.1368847,-9.979893,-0.00058399874,-0.006196972,-8.364415e-05 +17308000,imu,-0.17557546,0.13841316,-9.986902,-0.0020515912,-0.0074056117,0.0003362769 +17312000,imu,-0.17149991,0.16951236,-9.972219,-0.0013788758,-0.007611591,0.0009676842 +17316000,imu,-0.13274407,0.17663218,-9.920633,9.5159334e-07,-0.005634614,-6.93896e-05 +17316000,mag,0.016565582,-0.21985288,0.43502596 +17320000,imu,-0.15224284,0.19439718,-9.92062,0.0016547773,-0.0049471506,-0.0023082092 +17324000,imu,-0.18195768,0.16062091,-9.9443,0.0011591685,-0.0037712005,-0.0012341306 +17328000,imu,-0.16467959,0.15977187,-9.972139,0.0014967917,-0.003554964,0.0012624388 +17328000,baro,487.60513 +17328000,mag,0.0078079104,-0.21670471,0.43103498 +17332000,imu,-0.14213613,0.18141095,-9.942698,0.0010091558,-0.005350348,-0.0010822656 +17336000,imu,-0.14733204,0.18317954,-9.92398,-0.00068057317,-0.004347352,-0.0036001152 +17340000,mag,0.013602063,-0.2188897,0.43580472 +17340000,imu,-0.16622527,0.18732956,-9.964855,-0.0011602911,-0.006311981,-0.0035569968 +17344000,imu,-0.17746255,0.20017028,-9.960802,-0.00076045626,-0.0069852956,-6.6844594e-05 +17348000,imu,-0.20163721,0.18925148,-9.935148,-0.0017218429,-0.006432643,0.0006191397 +17352000,imu,-0.17945892,0.17951743,-9.91703,-0.00044073243,-0.008366445,-0.0028189493 +17352000,mag,0.0108598005,-0.21114704,0.43118387 +17356000,imu,-0.13303193,0.16726398,-9.928436,-0.0019845464,-0.007184405,-0.0017160138 +17360000,imu,-0.16944452,0.15788147,-9.926657,-0.004616678,-0.0047434433,0.0009788518 +17364000,mag,0.012570677,-0.22255737,0.42684248 +17364000,imu,-0.18332823,0.15715694,-9.910644,-0.0031708118,-0.0031902269,-0.0009926456 +17368000,imu,-0.19242863,0.15292531,-9.924465,-0.0017621418,-0.004777176,-0.0018273927 +17372000,imu,-0.17782418,0.18848501,-9.910849,-0.0010748816,-0.00785049,0.00047772608 +17376000,imu,-0.16922304,0.18866572,-9.889662,-0.0024525432,-0.009140642,0.0007018241 +17376000,mag,0.0100640245,-0.20841396,0.43443725 +17380000,imu,-0.21635194,0.17462467,-9.915731,-0.0011561217,-0.008095111,0.001998599 +17384000,imu,-0.19566123,0.18944556,-9.9158325,8.261912e-05,-0.006714225,0.0016610769 +17388000,mag,0.008909334,-0.21478109,0.43574756 +17388000,imu,-0.17656323,0.18216248,-9.914495,0.0014379882,-0.0060643875,0.002013282 +17392000,imu,-0.16825846,0.18000425,-9.92038,0.0036292486,-0.0075881463,0.0033635213 +17396000,imu,-0.17581952,0.19776358,-9.903106,0.0012326178,-0.010036852,0.00039888997 +17400000,imu,-0.1880573,0.17058267,-9.913913,-0.00085213257,-0.009980727,-0.0010339168 +17400000,baro,487.62863 +17400000,mag,0.007599599,-0.21858016,0.42636096 +17404000,imu,-0.17271975,0.15608838,-9.901456,-0.003544743,-0.0068584164,0.00045849435 +17408000,imu,-0.19316283,0.1979089,-9.9119625,-0.002817553,-0.006498359,-0.00066606706 +17412000,mag,0.008670494,-0.21923956,0.4244169 +17412000,imu,-0.21415508,0.18509579,-9.948353,0.00074633985,-0.005153778,-0.0030917577 +17416000,imu,-0.19728655,0.1653727,-9.9745245,0.002722623,-0.0039914143,-0.0026276626 +17420000,imu,-0.18851045,0.17005126,-9.947004,0.0014809048,-0.008173767,0.0009698572 +17424000,mag,0.008110509,-0.21298885,0.42792153 +17424000,imu,-0.20088755,0.15525495,-9.915083,-0.0036656733,-0.010744028,0.005156997 +17428000,imu,-0.20767388,0.15943867,-9.920516,-0.005739443,-0.007900443,0.0013047901 +17432000,imu,-0.19540563,0.17992787,-9.923838,-0.0036974878,-0.0044787205,-0.0031174456 +17436000,mag,0.009771478,-0.22329381,0.42777154 +17436000,imu,-0.1697254,0.18766356,-9.950826,-0.0012477137,-0.0065423767,-0.002808545 +17440000,imu,-0.14924747,0.175405,-9.946573,-0.0012905623,-0.008020509,-0.0028355059 +17444000,imu,-0.14643496,0.15710025,-9.914856,-0.002241933,-0.0070222295,-0.0034516833 +17448000,mag,0.011796675,-0.21106483,0.42680666 +17448000,imu,-0.17737612,0.14987612,-9.914671,-0.0009174053,-0.005329251,-0.003099236 +17452000,imu,-0.20495003,0.16443692,-9.92011,-0.00049681193,-0.0061669196,-0.0006533306 +17456000,imu,-0.20291466,0.16682619,-9.902529,-0.0002411419,-0.0046967086,-0.000935545 +17460000,mag,0.013844105,-0.21941333,0.43352708 +17460000,imu,-0.18680765,0.16332673,-9.899554,-0.0012740555,-0.0026903562,-3.9421568e-05 +17464000,imu,-0.16429469,0.17084403,-9.946667,-0.0037341556,-0.0037376091,0.0023191406 +17468000,imu,-0.18485425,0.16064991,-9.949127,-0.0034300792,-0.003058039,0.0018618957 +17472000,imu,-0.2028338,0.14636184,-9.917694,-0.0019680082,-0.004994719,-0.00085856684 +17472000,baro,487.52063 +17472000,mag,0.011382398,-0.2119811,0.42979196 +17476000,imu,-0.17564344,0.17128295,-9.93998,-0.00079346244,-0.008426914,-0.00031076666 +17480000,imu,-0.18670106,0.1791091,-9.941069,-0.0027571116,-0.0069652935,0.0001582129 +17484000,imu,-0.17505552,0.15883039,-9.910776,-0.0022321097,-0.00443976,0.0031973557 +17484000,mag,0.004764305,-0.2108341,0.42492834 +17488000,imu,-0.1652307,0.16768785,-9.934247,-0.0013328401,-0.0048092073,0.0028265852 +17492000,imu,-0.2020029,0.19872496,-9.956524,-0.0017243628,-0.005797396,0.00025662477 +17496000,imu,-0.18337107,0.19634494,-9.928539,-0.0057401587,-0.0072387094,0.0043255817 +17496000,mag,0.005662008,-0.21415532,0.43024367 +17500000,imu,-0.14403546,0.16733101,-9.922371,-0.0072253537,-0.008387894,0.0022294058 +17504000,imu,-0.17902803,0.1775616,-9.929092,-0.0016641616,-0.0087677175,-0.0013252541 +17504000,mag,0.006827023,-0.2136755,0.43314254 +17508000,imu,-0.2202309,0.15647829,-9.923358,0.0016783753,-0.009140982,0.0027044686 +17512000,imu,-0.20195648,0.12828878,-9.905964,0.00041130497,-0.0053954544,0.0019691526 +17516000,imu,-0.18286441,0.14067061,-9.921615,-0.004304739,-0.0036317047,-0.0015765326 +17520000,imu,-0.15830837,0.18684132,-9.953166,-0.004665762,-0.0056329444,0.0012519299 +17520000,mag,0.0057717795,-0.21651253,0.43203104 +17524000,imu,-0.14018688,0.21199514,-9.946911,-0.0050980668,-0.005478063,0.0023741263 +17528000,imu,-0.15394032,0.1805075,-9.929237,-0.0020260003,-0.004745052,-0.0005683983 +17528000,mag,0.010323707,-0.21546035,0.42953858 +17532000,imu,-0.17532834,0.16186787,-9.932671,-0.0012110149,-0.0042235386,-0.0013950876 +17536000,imu,-0.17080544,0.14872633,-9.9388,-0.0017976034,-0.008220905,-0.0013473062 +17540000,imu,-0.17139038,0.14592794,-9.930405,-0.00026221768,-0.006097433,-0.002068871 +17544000,imu,-0.18391113,0.14737868,-9.906223,0.0010383908,-0.0033358105,0.0007671061 +17544000,baro,487.58167 +17544000,mag,0.011563939,-0.21375062,0.4265251 +17548000,imu,-0.17884277,0.18139784,-9.913825,-0.00033537028,-0.0046621487,0.0030340406 +17552000,imu,-0.20128188,0.21052966,-9.91939,-0.0030657598,-0.0033039916,0.002209218 +17556000,mag,0.009482178,-0.22331674,0.42550668 +17556000,imu,-0.20094267,0.1735537,-9.899319,-0.0027378746,-0.004399706,-0.0011376542 +17560000,imu,-0.16121158,0.15737273,-9.905904,-0.002265149,-0.0038688977,-0.0021223375 +17564000,imu,-0.16353628,0.15056624,-9.907399,-0.0003625922,-0.0044737924,0.00143228 +17568000,imu,-0.17899781,0.14206426,-9.910445,-0.002530983,-0.0051254886,0.0020031952 +17568000,mag,0.0073289173,-0.20965499,0.42981994 +17572000,imu,-0.19404629,0.1479417,-9.937908,-0.005225044,-0.004113517,0.0012692807 +17576000,imu,-0.17486688,0.10753841,-9.946105,-0.0034841357,-0.004696121,0.00011446696 +17580000,mag,0.01794723,-0.21113229,0.42207512 +17580000,imu,-0.14311242,0.10501795,-9.905407,-0.00024157092,-0.006608548,-0.0029271694 +17584000,imu,-0.13159342,0.14087568,-9.889866,-0.0014489079,-0.007255726,-0.003831733 +17588000,imu,-0.14089698,0.15186466,-9.931824,-0.0036349765,-0.0043428037,-0.0003590679 +17592000,mag,0.0094185565,-0.21212988,0.4254778 +17592000,imu,-0.16922395,0.18701153,-9.937224,-0.0033464353,-0.0046129427,0.0013419214 +17596000,imu,-0.17711693,0.18860507,-9.913782,-0.0023166721,-0.0064658243,0.0011104228 +17600000,imu,-0.16092141,0.16178168,-9.927065,-0.002867549,-0.005849627,0.0023276792 +17604000,imu,-0.14837894,0.13774559,-9.928937,-0.003256907,-0.0077092582,6.6456174e-05 +17604000,mag,0.010740037,-0.21929131,0.42541802 +17608000,imu,-0.17700978,0.1420295,-9.902124,-0.00087007234,-0.0078168865,0.0007934174 +17612000,imu,-0.20714818,0.1675246,-9.9185505,-9.642953e-05,-0.004576096,0.00038776218 +17612000,mag,0.013701723,-0.21647556,0.4287594 +17612000,baro,487.66617 +17616000,imu,-0.2109907,0.20898002,-9.934721,-0.0012031847,-0.0040251734,-0.0017049826 +17620000,imu,-0.16174614,0.20903878,-9.925814,0.0020292376,-0.0048888554,-0.0006382435 +17624000,imu,-0.14170477,0.15678225,-9.955874,0.0017189243,-0.004831153,-0.0006585304 +17628000,imu,-0.17019129,0.12424725,-9.964343,0.000946808,-0.004633889,-0.0019526908 +17628000,mag,0.0019399957,-0.21916959,0.42650878 +17632000,imu,-0.19763717,0.13335109,-9.936689,0.000114128874,-0.0049277665,0.00045136706 +17636000,imu,-0.20877114,0.16937886,-9.936081,-0.0050737835,-0.0063009644,0.0030538517 +17640000,imu,-0.17235035,0.1630535,-9.932538,-0.0064606485,-0.007068936,0.0005617687 +17640000,mag,0.0041570705,-0.21075085,0.433972 +17644000,imu,-0.14298505,0.16824938,-9.945812,-0.0025396629,-0.0049960283,-0.00038317678 +17648000,imu,-0.1559447,0.18234417,-9.958424,0.00078323914,-0.0032711653,-0.0019709659 +17648000,mag,0.007959019,-0.21650945,0.43100595 +17652000,gps,488097.0,85456073.0,473977508.0,0.02,0.0,0.02 +17652000,imu,-0.17355296,0.17648724,-9.957307,-0.0021919808,-0.0038192247,-0.0018036973 +17656000,imu,-0.18888576,0.15192239,-9.953244,-0.002465285,-0.003837797,0.0013626926 +17660000,imu,-0.18887895,0.16356726,-9.942375,-0.00064193556,-0.0071127787,0.0002827394 +17664000,baro,487.62863 +17664000,mag,0.009138198,-0.2224889,0.4303831 +17664000,imu,-0.17627178,0.18615761,-9.93792,-0.0016286919,-0.0062521757,0.0009783055 +17668000,imu,-0.18989602,0.15161459,-9.927303,-0.0009103482,-0.004955015,0.0034635207 +17672000,imu,-0.18237418,0.14663243,-9.927153,-0.0016487141,-0.0075315153,0.002836753 +17676000,mag,0.012761096,-0.21785524,0.43055 +17676000,imu,-0.14448798,0.19095851,-9.914942,-0.004392303,-0.007812729,0.00057496846 +17680000,imu,-0.16203386,0.1759147,-9.915207,-0.0005043035,-0.0072511295,0.0014372609 +17684000,imu,-0.15069519,0.17903359,-9.919541,0.00059994904,-0.0062073134,0.0033946477 +17688000,mag,0.0060380744,-0.21915002,0.4360375 +17688000,imu,-0.11699237,0.18371363,-9.910423,-0.0023653295,-0.004874785,0.0018698968 +17692000,imu,-0.15019134,0.14629154,-9.917591,-0.0032945278,-0.0037788292,0.0023944725 +17696000,imu,-0.18544209,0.16013177,-9.932543,-0.0026949325,-0.0054681837,0.0030217848 +17700000,imu,-0.20379002,0.1779582,-9.940424,-0.00071744825,-0.006718631,-0.001065682 +17700000,mag,0.014149427,-0.21827613,0.4313697 +17704000,imu,-0.19733259,0.18914513,-9.937643,-0.0036681434,-0.003963157,-0.00085715635 +17708000,imu,-0.18277666,0.18576315,-9.91576,-0.0029795687,-0.002384014,-0.00071467494 +17712000,mag,0.009043956,-0.21072106,0.42768872 +17712000,imu,-0.1735003,0.13775797,-9.905127,2.3737926e-05,-0.0027842694,-0.00033915258 +17716000,imu,-0.1747571,0.13139006,-9.928126,-0.0015481457,-0.004159192,0.0024107122 +17720000,imu,-0.17819643,0.1463898,-9.939885,-0.0010492306,-0.004511693,0.0008566369 +17724000,mag,0.009196417,-0.21215816,0.43419808 +17724000,imu,-0.1835762,0.14925754,-9.938779,-0.00022652448,-0.0046318225,0.00027363808 +17728000,imu,-0.19171818,0.16540952,-9.915398,-0.0019183374,-0.006443819,0.001899445 +17732000,imu,-0.18097323,0.1664008,-9.885345,-0.00335982,-0.004751528,0.0032136852 +17736000,baro,487.7319 +17736000,imu,-0.1685857,0.13584642,-9.915401,-0.0013019248,-0.004876754,0.0024384724 +17736000,mag,0.015041961,-0.21014951,0.42917836 +17740000,imu,-0.1859013,0.124466866,-9.934366,-0.00053974293,-0.004067522,3.258727e-05 +17744000,imu,-0.20176381,0.16252948,-9.913036,-0.00513809,-0.0028590248,-0.002257897 +17748000,mag,0.016122919,-0.21747868,0.42693847 +17748000,imu,-0.21274225,0.15613958,-9.928539,-0.0051169973,-0.005279091,-0.0032722503 +17752000,imu,-0.20741536,0.15490721,-9.937082,-0.00058362517,-0.006962306,-0.0015079508 +17756000,imu,-0.17886594,0.16529268,-9.938232,0.0026381463,-0.0064075417,-0.00012124774 +17760000,imu,-0.18370527,0.20092864,-9.943211,0.0037134856,-0.0055212067,-0.0018502825 +17760000,mag,0.013938421,-0.21450484,0.42420846 +17764000,imu,-0.19235907,0.19998837,-9.932156,-0.0012491865,-0.005755932,0.0015895055 +17768000,imu,-0.17004949,0.15461178,-9.925707,-0.002443217,-0.006783978,0.003592775 +17772000,imu,-0.17148529,0.1647401,-9.949703,-0.0038855278,-0.009501843,0.00187075 +17772000,mag,0.009742844,-0.21507868,0.425665 +17776000,imu,-0.15986022,0.19106747,-9.968192,-0.0036147276,-0.007725612,-0.0022489836 +17780000,imu,-0.14486165,0.18101567,-9.961807,0.0015110961,-0.004038085,-0.0021297443 +17784000,imu,-0.17233214,0.15306811,-9.951742,0.00090260105,-0.0051052324,0.0008573973 +17784000,mag,0.008475354,-0.2203401,0.43249565 +17788000,imu,-0.18203345,0.17752595,-9.9457,0.00032832756,-0.0045853965,-0.0006839526 +17792000,imu,-0.1856536,0.17978083,-9.921694,-0.00046306144,-0.0040145507,0.001522283 +17796000,mag,0.008054104,-0.21453586,0.42983475 +17796000,imu,-0.187634,0.15253983,-9.893721,-0.003358261,-0.005711336,0.0023907651 +17800000,imu,-0.1501325,0.17068282,-9.899319,-0.0045870673,-0.0067354646,-0.00080869655 +17804000,imu,-0.14733322,0.157536,-9.936608,-0.0030443817,-0.005339294,-0.0007418407 +17808000,mag,0.0070169503,-0.2184848,0.429393 +17808000,baro,487.6333 +17808000,imu,-0.16668311,0.15156052,-9.974372,-0.0017353087,-0.0052932785,0.0047036163 +17812000,imu,-0.1600261,0.20000331,-9.944454,-0.00047204504,-0.0054449425,0.006811539 +17816000,imu,-0.15911251,0.18530703,-9.917313,-0.00070396485,-0.007113189,0.000389331 +17820000,mag,0.008223137,-0.21757388,0.42909712 +17820000,imu,-0.15691316,0.15042399,-9.918906,-0.0023160086,-0.009453875,-0.0026789894 +17824000,imu,-0.1493577,0.15388624,-9.928488,-0.003688751,-0.010500183,0.0023174244 +17828000,imu,-0.18274176,0.14747065,-9.921387,-0.0026696553,-0.009248756,0.0019392223 +17832000,imu,-0.23927008,0.1519783,-9.898546,-0.0006792378,-0.0053695324,-0.003942763 +17832000,mag,0.013675059,-0.2208418,0.42557693 +17836000,imu,-0.18633837,0.15005383,-9.917017,0.0015055133,-0.00515352,-0.0035072153 +17840000,imu,-0.15675431,0.15132844,-9.93499,0.0017524301,-0.0058808853,-0.0013134421 +17844000,imu,-0.19076908,0.15780036,-9.93243,-0.0023311062,-0.005354061,-0.0016088547 +17844000,mag,0.0052151997,-0.21336195,0.43191123 +17848000,imu,-0.16546053,0.13906495,-9.912851,-0.0032267238,-0.0034235497,-0.0010911679 +17852000,imu,-0.16460842,0.15808888,-9.903873,-0.00066077703,-0.0013629011,-0.0023597628 +17856000,imu,-0.17921223,0.13308662,-9.961779,-0.00042599422,-0.0036184106,-0.0016679827 +17856000,mag,0.015764028,-0.21980835,0.4340428 +17860000,imu,-0.18086967,0.13416754,-9.962185,-0.003171036,-0.0075435545,0.00025177666 +17864000,imu,-0.21618152,0.17173764,-9.903769,-0.0021472487,-0.009370976,0.0012875898 +17868000,mag,0.00632602,-0.21849018,0.4328752 +17868000,imu,-0.2240712,0.15957776,-9.8882885,0.0007319004,-0.009846197,-0.0012871587 +17872000,imu,-0.20861939,0.16790351,-9.936224,0.0013891322,-0.009449651,-0.0033690738 +17876000,imu,-0.19269502,0.1755677,-9.960986,0.00041261382,-0.006579018,-0.0018415864 +17880000,imu,-0.18625717,0.18225087,-9.947151,1.5852318e-05,-0.0043914653,-0.001700897 +17880000,mag,0.017574962,-0.21264845,0.42262265 +17880000,baro,487.6568 +17884000,imu,-0.2007401,0.17415945,-9.933294,0.0007938906,-0.005623518,0.001216846 +17888000,imu,-0.1893082,0.16481836,-9.925297,-0.0006257324,-0.005449993,0.0023329735 +17892000,mag,0.010033151,-0.20936812,0.43203416 +17892000,imu,-0.19086906,0.16918993,-9.919321,-0.0032836944,-0.006934618,4.6202673e-05 +17896000,imu,-0.22170645,0.1528726,-9.906247,-0.00012833535,-0.0061444934,0.0025602682 +17900000,imu,-0.20600742,0.16213669,-9.929813,0.0018440334,-0.005258885,0.0009307915 +17904000,imu,-0.17656204,0.1777978,-9.908251,-0.0038602792,-0.00453134,-0.0020042164 +17904000,mag,0.0024748065,-0.2137887,0.42875028 +17908000,imu,-0.20763677,0.16565545,-9.91334,-0.0019728085,-0.0028005152,-5.921952e-05 +17912000,imu,-0.22195897,0.14890064,-9.91454,-0.0040529,-0.0034664106,0.0007009116 +17916000,imu,-0.23258632,0.15169413,-9.897308,-0.006435255,-0.004447517,0.0015721516 +17916000,mag,0.012768447,-0.2217897,0.42608252 +17920000,imu,-0.21968499,0.1869601,-9.929369,-0.0034400702,-0.0058632465,-0.00028992977 +17924000,imu,-0.18293071,0.1777017,-9.94985,-0.0028585799,-0.004945997,-0.0033207338 +17928000,imu,-0.19633876,0.14047302,-9.952398,-0.0045952853,-0.005635418,-0.0026505422 +17928000,mag,0.004243611,-0.21539289,0.4317921 +17932000,imu,-0.19553816,0.12437321,-9.914555,-0.0027443783,-0.0064881756,-0.0019105126 +17936000,imu,-0.18591589,0.106556475,-9.900437,-0.0003727677,-0.0054821237,-0.0021976305 +17940000,landed,1.0 +17940000,imu,-0.20285548,0.16779262,-9.928818,-0.0020374907,-0.0049114455,-0.0044835224 +17940000,mag,0.012694832,-0.21391141,0.42927632 +17944000,imu,-0.21137667,0.18132605,-9.936558,0.001239263,-0.0021594425,-0.0061866706 +17948000,imu,-0.21358004,0.14609517,-9.937481,0.0016169611,-0.004619531,-0.005262034 +17952000,imu,-0.20666604,0.18153067,-9.928522,-0.00048048672,-0.007593382,-0.0014954904 +17952000,mag,0.011631796,-0.22251809,0.42757198 +17952000,baro,487.60983 +17956000,imu,-0.18211162,0.18789755,-9.902761,0.0010529188,-0.004206639,0.0014961609 +17960000,imu,-0.17147078,0.17882,-9.896743,0.0006249037,-0.005199772,0.001167681 +17964000,imu,-0.18034613,0.17306565,-9.931353,-0.00186075,-0.0071074544,0.0004628667 +17964000,mag,0.0027736865,-0.21244729,0.42692593 +17968000,imu,-0.18108961,0.16390534,-9.942381,-0.00060330355,-0.0070311376,-0.00052051415 +17972000,imu,-0.17637433,0.17352156,-9.92005,-0.0006558973,-0.007167426,-0.0028090728 +17976000,mag,0.015697107,-0.21482417,0.42447278 +17976000,imu,-0.20137247,0.19646843,-9.923118,-0.0038794847,-0.0066878167,-0.001414712 +17980000,imu,-0.18926649,0.18857265,-9.915907,-0.0027115091,-0.0036562348,-0.0006054103 +17984000,imu,-0.17396447,0.1823683,-9.946661,-0.001618655,-0.0027518661,-0.0017156802 +17988000,mag,0.010264237,-0.21764383,0.43274173 +17988000,imu,-0.2070814,0.18460771,-9.981356,-0.00082106853,-0.0061712647,-0.0009803808 +17992000,imu,-0.22304195,0.17436413,-9.938544,0.0014419808,-0.008577482,-0.0005878886 +17996000,imu,-0.20155796,0.17616932,-9.916166,-0.0012493802,-0.008193017,0.0025228315 +18000000,mag,0.009059129,-0.22151898,0.43295053 +18000000,imu,-0.17586306,0.16842562,-9.911422,-0.003057708,-0.0054354756,0.0010032889 +18004000,imu,-0.1763281,0.16148874,-9.922834,-0.002170414,-0.005402226,-0.0012893232 +18008000,imu,-0.20535874,0.16387635,-9.949855,-0.0018494764,-0.005514614,-0.00017912225 +18012000,mag,0.012562871,-0.21632649,0.4380543 +18012000,imu,-0.2188212,0.16850111,-9.95673,0.00096020644,-0.004822034,0.0006603596 +18016000,imu,-0.20457742,0.17079237,-9.973446,0.0007924673,-0.007744579,9.249852e-05 +18020000,imu,-0.16810949,0.16935389,-9.959597,-0.0030006054,-0.009646045,-0.00184541 +18024000,imu,-0.1476353,0.17015907,-9.924644,-0.0014937375,-0.009587999,-0.0006961349 +18024000,baro,487.5488 +18024000,mag,0.0074575767,-0.20608181,0.42496064 +18028000,imu,-0.15799636,0.18014248,-9.921127,-0.0009688681,-0.00667876,0.002743587 +18032000,imu,-0.16077064,0.16104385,-9.923482,-0.0009108219,-0.004184834,0.0017518826 +18036000,imu,-0.17786881,0.12759782,-9.915459,-0.00041168052,-0.0069631003,0.001262851 +18036000,mag,0.0020968097,-0.2198919,0.42763248 +18040000,imu,-0.20116916,0.12431758,-9.902781,-0.0009498411,-0.009471554,0.0026306629 +18044000,imu,-0.19006324,0.1669325,-9.90473,-0.0017808612,-0.006359377,0.0016271181 +18048000,imu,-0.15564728,0.19756652,-9.931372,-0.004589782,-0.0047878986,2.3709044e-05 +18048000,mag,0.004427322,-0.21619001,0.4255878 +18052000,gps,488100.0,85456074.0,473977508.0,0.01,0.0,0.01 +18052000,imu,-0.17492205,0.1870298,-9.940794,-0.0042226487,-0.00631979,-0.0007362182 +18056000,imu,-0.20006022,0.18208624,-9.919638,-0.0011073272,-0.0045270636,-0.0027726898 +18060000,mag,-0.0006899078,-0.21903497,0.426551 +18060000,imu,-0.15433744,0.16644894,-9.890587,-0.00040253557,-0.0043785674,-0.0019146365 +18064000,imu,-0.13118991,0.16647863,-9.918133,-0.0039862404,-0.0038553935,0.0011241564 +18068000,imu,-0.15953897,0.17935349,-9.948496,-0.0033603848,-0.0026192341,-0.0012192355 +18072000,imu,-0.16995254,0.18921077,-9.919673,-0.0015565264,-0.005746918,-0.0037540987 +18072000,mag,0.011628909,-0.21732703,0.43551695 +18076000,imu,-0.16083768,0.17365132,-9.914106,-0.0018659126,-0.008354719,-0.0028661527 +18080000,imu,-0.14942575,0.13255793,-9.954765,-0.0008790359,-0.010469872,-0.00023946718 +18084000,mag,0.011938496,-0.21402478,0.43272877 +18084000,imu,-0.1695112,0.15276562,-9.990378,-0.0004925124,-0.010313666,0.0031286192 +18088000,imu,-0.1896016,0.1626553,-9.9654045,-0.0020814773,-0.008071084,0.0023472619 +18092000,imu,-0.19846621,0.17184852,-9.961456,-0.00038060447,-0.0050304825,-0.0003574984 +18096000,imu,-0.20098872,0.20646359,-9.972155,-0.00013529774,-0.0051139602,0.000714978 +18096000,mag,0.011586209,-0.2185288,0.42955127 +18096000,baro,487.62863 +18100000,imu,-0.20137498,0.22706896,-9.975045,-0.001824653,-0.006200679,0.00074502936 +18104000,imu,-0.175703,0.22314902,-9.954261,-0.002640516,-0.0038483522,0.00089715666 +18108000,imu,-0.1447202,0.17135577,-9.911415,-0.00223322,-0.004312948,-0.0008895053 +18108000,mag,0.016146682,-0.21625967,0.4286324 +18112000,imu,-0.14694375,0.16994466,-9.89646,0.001483258,-0.0069981194,-0.0026413999 +18116000,imu,-0.17453052,0.19298835,-9.896524,0.0015461135,-0.005751271,-0.0005458673 +18120000,mag,0.010542141,-0.21319382,0.4246427 +18120000,imu,-0.18687323,0.1732863,-9.932035,0.00023335953,-0.0029856176,-0.0002010542 +18124000,imu,-0.1680953,0.16005373,-9.928658,-0.0014570978,-0.005861074,0.00014739123 +18128000,imu,-0.1620343,0.17821397,-9.904088,-0.0002206416,-0.006952776,0.00089898234 +18132000,mag,0.0047743474,-0.21717103,0.42714846 +18132000,imu,-0.15079698,0.14530048,-9.916668,-0.00026566588,-0.002692081,0.0040646736 +18136000,imu,-0.166522,0.14352596,-9.939408,0.00027971904,-0.0032196173,0.0026394501 +18140000,imu,-0.19714454,0.1554081,-9.944762,-0.003515026,-0.007994433,-0.0003983216 +18144000,imu,-0.18941969,0.14895165,-9.921456,-0.0076734433,-0.0074164984,0.0012004753 +18144000,mag,0.009851634,-0.21402931,0.43055224 +18148000,imu,-0.17380613,0.19188708,-9.89621,-0.0046587824,-0.004023516,0.0029852914 +18152000,imu,-0.18196708,0.17520852,-9.902742,-0.0017755055,-0.0060203504,-8.941287e-06 +18156000,mag,0.013076742,-0.21104933,0.42311284 +18156000,imu,-0.17959762,0.15648371,-9.930385,-0.0004948052,-0.0062133917,-0.0020523742 +18160000,imu,-0.16724423,0.17511542,-9.941782,-0.0022569685,-0.0037092508,-0.00015876749 +18164000,imu,-0.1514402,0.17194687,-9.923043,-0.0035787998,-0.004343088,-0.0031913365 +18168000,imu,-0.15514347,0.13970973,-9.932987,-0.0017669323,-0.0042429185,-0.0036695807 +18168000,mag,0.00830442,-0.21762869,0.4324148 +18168000,baro,487.61923 +18172000,imu,-0.1921432,0.14841835,-9.945214,-0.0018104713,-0.0033902444,-0.003290933 +18176000,imu,-0.21418387,0.15829962,-9.924329,-0.0035461995,-0.0045304997,-0.0033570495 +18180000,imu,-0.16744643,0.139479,-9.93707,-0.0025633704,-0.0058266395,-0.0027693945 +18180000,mag,0.006999726,-0.22059892,0.4280136 +18184000,imu,-0.1335203,0.15021004,-9.936216,-0.00010486247,-0.003911602,-0.004697741 +18188000,imu,-0.16425535,0.17307253,-9.936392,-0.0006305359,-0.0042464877,-0.0040719653 +18192000,imu,-0.16869184,0.17567088,-9.929765,-0.0032991276,-0.003559275,-0.0016641684 +18192000,mag,0.0042407145,-0.21679002,0.43436772 +18196000,imu,-0.1678245,0.15911746,-9.932171,-0.0022673106,-0.0028354276,-7.270595e-05 +18200000,imu,-0.17455474,0.17530994,-9.937613,-0.0028636148,-0.0030865557,0.0009489431 +18204000,mag,-0.0010175246,-0.21753067,0.4229391 +18204000,imu,-0.19136222,0.1877758,-9.922341,-0.0027789285,-0.0048091537,0.0004392445 +18208000,imu,-0.20091604,0.18567877,-9.917342,-0.0010641413,-0.0043053273,-0.0026777198 +18212000,imu,-0.1725162,0.19037162,-9.914425,-0.0034680464,-0.0030638685,-0.0024810713 +18216000,mag,0.007963053,-0.21846893,0.42087883 +18216000,imu,-0.15525523,0.18911351,-9.933567,-0.0017389166,-0.0071628974,-0.0017213636 +18220000,imu,-0.18289113,0.19366862,-9.939682,-0.00066587626,-0.007523226,-0.0024907875 +18224000,imu,-0.20636663,0.18208328,-9.951056,-0.0017353757,-0.006089677,-0.00045766807 +18228000,imu,-0.2063438,0.16688436,-9.95327,9.6270174e-05,-0.0054457067,0.001177843 +18228000,mag,0.006981006,-0.22292045,0.4297275 +18232000,imu,-0.17554864,0.1934392,-9.929445,-0.003318732,-0.004505495,0.0022836935 +18236000,imu,-0.166761,0.19854273,-9.906363,-0.0017627705,-0.0057034846,0.0011832933 +18240000,mag,0.018690873,-0.21632393,0.4370462 +18240000,baro,487.60513 +18240000,imu,-0.18450838,0.1502375,-9.903859,-0.0007970075,-0.008428337,-0.0026372438 +18244000,imu,-0.18361706,0.14663392,-9.925503,-0.0046262653,-0.0074218586,-0.00084941956 +18248000,imu,-0.18044218,0.16808261,-9.940045,-0.0031557595,-0.0049558682,-0.00012106858 +18252000,imu,-0.17427167,0.17719495,-9.93095,-0.0009698551,-0.0031849751,-0.0025670105 +18252000,mag,0.011195674,-0.21646953,0.4263424 +18256000,imu,-0.20674983,0.19227327,-9.927113,0.004188287,-0.0017857979,-0.0014051528 +18260000,imu,-0.21588641,0.18058474,-9.927189,0.0027228359,-0.0033989926,-0.0024404896 +18264000,mag,0.00803095,-0.21041384,0.43059564 +18264000,imu,-0.19731885,0.16741213,-9.922771,-0.0026136767,-0.0028294134,-0.001571556 +18268000,imu,-0.15910205,0.17226166,-9.912495,-0.0028590185,-0.004732487,-0.0033877746 +18272000,imu,-0.16214244,0.17692779,-9.921728,-0.0014026518,-0.005672189,-0.0053647785 +18276000,mag,0.008990249,-0.21773042,0.426388 +18276000,imu,-0.17776917,0.1737346,-9.9327755,-0.0027351335,-0.0049345796,-0.0040623453 +18280000,imu,-0.17359576,0.16217782,-9.925864,-0.00030884144,-0.0069091762,-0.0031853586 +18284000,imu,-0.1883305,0.16640384,-9.924721,0.004472624,-0.005329394,-0.0017815393 +18288000,imu,-0.17638412,0.17075033,-9.922274,-0.0012095104,-0.0056585376,-0.0017430376 +18288000,mag,0.010638788,-0.21174602,0.4274828 +18292000,imu,-0.17603225,0.16980338,-9.94594,-0.005295234,-0.007580811,-0.0022748185 +18296000,imu,-0.16524968,0.15483817,-9.970886,-0.0030817746,-0.006196978,-0.0015299927 +18300000,mag,0.019516693,-0.21531026,0.4266947 +18300000,imu,-0.14355604,0.17275973,-9.958061,-0.0010093581,-0.0051265755,-0.002607645 +18304000,imu,-0.13239211,0.20284517,-9.934488,-0.0013993566,-0.0067150136,-0.0013431517 +18308000,imu,-0.14351484,0.16428788,-9.929132,-0.0028215318,-0.005552275,0.002756943 +18312000,mag,0.011467742,-0.22350909,0.42663074 +18312000,imu,-0.15177482,0.16494927,-9.946962,-0.0053390283,-0.007714875,0.0020863134 +18312000,baro,487.59576 +18316000,imu,-0.14876562,0.16250321,-9.955361,-0.006527466,-0.0068186573,0.0007544551 +18320000,imu,-0.14875373,0.16306174,-9.920759,-0.0039503383,-0.002377501,-0.0018474675 +18324000,mag,0.0089885965,-0.21482052,0.42979357 +18324000,imu,-0.15553305,0.14397879,-9.912397,-0.001888015,-0.0049334727,-0.001907613 +18328000,imu,-0.15708405,0.11358431,-9.914158,0.0005606325,-0.004556581,-0.0017236575 +18332000,imu,-0.14746837,0.14000946,-9.942552,-0.0014696788,-0.0030826072,-0.004848145 +18332000,mag,0.010135566,-0.21299261,0.4286647 +18336000,imu,-0.16080017,0.16314508,-9.95084,-0.0020029743,-0.0046053575,-0.0023653635 +18340000,imu,-0.16936117,0.18467282,-9.948609,0.0012513704,-0.0059979307,-0.0018435435 +18344000,imu,-0.16133898,0.17225026,-9.928986,0.0018886673,-0.007257625,-0.004286581 +18348000,imu,-0.17196375,0.15721916,-9.922861,0.0010700633,-0.0070183794,-0.003148646 +18348000,mag,0.009578431,-0.21316254,0.4236645 +18352000,imu,-0.16694339,0.1375281,-9.938622,-0.0027013402,-0.0057163727,-0.00056083745 +18356000,imu,-0.14168963,0.13897912,-9.928403,-0.00077928934,-0.007320151,-0.00058003335 +18360000,imu,-0.17123556,0.14724183,-9.923162,-0.0007321971,-0.0056522335,-0.0016351751 +18360000,mag,0.0044767773,-0.22113891,0.43214265 +18364000,imu,-0.19020492,0.16423959,-9.910252,-0.0005711736,-0.004818322,-0.0002782273 +18368000,imu,-0.17064017,0.1969106,-9.931238,-0.001781529,-0.0074834395,-0.0015958025 +18372000,imu,-0.18112524,0.16517478,-9.929092,-0.0017080972,-0.008272467,0.000101351936 +18372000,mag,0.0137850875,-0.2170656,0.4267841 +18376000,imu,-0.1476977,0.16664468,-9.915493,0.0020825213,-0.008376213,0.0016500067 +18380000,imu,-0.12424208,0.16108172,-9.933403,-0.00057440426,-0.0072930516,0.0017979658 +18384000,baro,487.5582 +18384000,mag,0.008192514,-0.21724261,0.42918146 +18384000,imu,-0.18275064,0.14744152,-9.95234,-0.002781794,-0.007970841,0.0030152646 +18388000,imu,-0.19629614,0.16845433,-9.958769,-0.0037937374,-0.010124258,0.001388978 +18392000,imu,-0.15966105,0.13544701,-9.959233,0.0003412906,-0.0059293965,-0.000491591 +18396000,mag,0.005166528,-0.21240067,0.4302877 +18396000,imu,-0.1454156,0.12174727,-9.953925,0.0031811683,-0.0023888883,-0.004183917 +18400000,imu,-0.15882538,0.14062454,-9.931908,6.540237e-05,-0.0050468487,-0.0037284112 +18404000,imu,-0.19473198,0.15609817,-9.927046,0.00037232542,-0.0051543056,-0.0027410812 +18408000,mag,0.012725518,-0.21510568,0.43077967 +18408000,imu,-0.18311247,0.16281703,-9.91943,0.0016426122,-0.0057751248,-0.0035365007 +18412000,imu,-0.11715846,0.14896847,-9.907135,-5.8527935e-06,-0.0082088495,-0.0015130074 +18416000,mag,0.011181818,-0.21773204,0.42665812 +18416000,imu,-0.12662494,0.15098806,-9.930664,-0.0025636454,-0.004955747,0.001069721 +18420000,imu,-0.18003035,0.13272683,-9.940113,-0.004669252,-0.0026527196,0.0028273417 +18424000,imu,-0.19251446,0.13751848,-9.94404,-0.003960983,-0.0057107303,0.000250485 +18428000,imu,-0.20300065,0.15837206,-9.92734,-0.0022560563,-0.008948117,-0.0003562689 +18432000,mag,0.015463154,-0.21700224,0.431328 +18432000,imu,-0.1973742,0.16856243,-9.926256,-0.0009655654,-0.0091497945,0.0009550938 +18436000,imu,-0.17518044,0.19269079,-9.958794,-0.0008554442,-0.0074306973,0.00089342863 +18440000,imu,-0.17527473,0.18587874,-9.990625,-0.002134988,-0.00907847,0.0019966185 +18444000,mag,0.011714797,-0.21041778,0.4284864 +18444000,imu,-0.20698191,0.19012412,-9.987656,0.0011470495,-0.008129044,0.0010852504 +18448000,imu,-0.18991369,0.20310204,-9.948209,0.0030987829,-0.007684859,-0.0004854452 +18452000,gps,488103.0,85456074.0,473977508.0,0.0,0.0,0.02 +18452000,imu,-0.1649854,0.17806411,-9.907253,0.0014700033,-0.006879157,0.001994732 +18456000,baro,487.68027 +18456000,mag,0.0058408487,-0.21602163,0.42541406 +18456000,imu,-0.17393112,0.15681504,-9.905298,-0.001794826,-0.0054148617,0.0020655477 +18460000,imu,-0.16115773,0.17477709,-9.94348,-0.0031833793,-0.0044037644,0.0006122747 +18464000,imu,-0.16760103,0.16640478,-9.952255,-0.0010827066,-0.006017818,0.00032894226 +18468000,imu,-0.17959845,0.18110251,-9.941677,-0.002086466,-0.0067702807,0.00045340773 +18468000,mag,0.012436017,-0.2113599,0.42834175 +18472000,imu,-0.17339694,0.1892809,-9.95332,-0.0039532604,-0.0028545717,0.0008480097 +18476000,imu,-0.1585809,0.17663752,-9.940127,-0.004247713,-0.0055445335,-0.0036905098 +18480000,mag,0.0050257402,-0.21522151,0.43510315 +18480000,imu,-0.16696063,0.20939986,-9.925799,-0.00022205673,-0.007115931,0.0003414597 +18484000,imu,-0.16001931,0.21511124,-9.967217,0.0012009433,-0.00455675,0.004258235 +18488000,imu,-0.15896136,0.18873923,-9.95903,-0.0027623994,-0.000955524,-0.001762605 +18492000,mag,0.0144865,-0.21985105,0.43187246 +18492000,imu,-0.16800913,0.18548517,-9.898988,-0.00034601364,0.00019970442,-0.0032299978 +18496000,imu,-0.17340234,0.19218014,-9.916878,0.0024032027,-0.0058204955,-0.0009647617 +18500000,imu,-0.17822126,0.17998193,-9.931938,-0.001868787,-0.009645611,0.0029622144 +18504000,mag,0.008028831,-0.21386002,0.4320696 +18504000,imu,-0.18736449,0.15996741,-9.920976,-0.0026033067,-0.006494416,0.0035318735 +18508000,imu,-0.21093073,0.15444297,-9.944937,-0.0012036749,-0.004192831,0.00078792666 +18512000,imu,-0.18686417,0.16307297,-9.942247,0.0007163103,-0.0062390724,0.0009769337 +18516000,mag,0.00918414,-0.21495132,0.4266911 +18516000,imu,-0.15700719,0.14886294,-9.9234,0.00034414092,-0.008185587,-0.0007749218 +18520000,imu,-0.17570502,0.12391321,-9.917751,0.0007670229,-0.008378473,-0.0014260932 +18524000,baro,487.638 +18524000,mag,0.0126227755,-0.21423247,0.42830113 +18524000,imu,-0.18677063,0.16287303,-9.929918,0.0024018642,-0.0055894977,-0.0031406528 +18528000,imu,-0.19885483,0.19473158,-9.971651,-0.0007301672,-0.005902038,-0.0047766548 +18532000,imu,-0.21507832,0.17947015,-9.966596,-0.0007802735,-0.0057094367,-0.0008925873 +18536000,imu,-0.16924086,0.1588261,-9.9190235,-0.0006993074,-0.0046866476,-0.00041475895 +18540000,imu,-0.15704933,0.16043237,-9.914257,-0.0010336358,-0.0065498087,-0.00026074416 +18540000,mag,0.0070296703,-0.21224032,0.42688632 +18544000,imu,-0.18075123,0.18087219,-9.930346,-0.0032539696,-0.0068747904,-0.0011872768 +18548000,imu,-0.13226426,0.15318844,-9.921936,-0.0052455175,-0.0058938665,0.00041299895 +18552000,imu,-0.12148737,0.14171262,-9.92432,-0.0022453945,-0.005260511,0.004588354 +18552000,mag,0.011984962,-0.21516651,0.42737377 +18556000,imu,-0.17221177,0.1622696,-9.9551735,-0.0016507376,-0.00553429,0.00058047863 +18560000,imu,-0.20585957,0.13867915,-9.950856,-0.0020887991,-0.005159709,-0.00048627227 +18564000,imu,-0.19678888,0.13279988,-9.936443,-0.0019494075,-0.0044719484,0.00079200475 +18564000,mag,0.015999759,-0.21503496,0.43406016 +18568000,imu,-0.17416975,0.16444744,-9.935665,-0.0026610459,-0.0025513815,-0.0010296894 +18572000,imu,-0.17788425,0.16491167,-9.927367,-0.0030350552,-0.0033025388,-9.7475626e-05 +18576000,mag,0.012887988,-0.21316871,0.43089214 +18576000,baro,487.7413 +18576000,imu,-0.18740842,0.15281028,-9.908367,-0.003951425,-0.004724901,-0.0009707644 +18580000,imu,-0.16592744,0.15678166,-9.906304,-0.001148702,-0.0052597723,-0.0018014307 +18584000,imu,-0.136386,0.16893464,-9.950549,-9.456192e-05,-0.0052278144,-0.003076395 +18588000,imu,-0.13388911,0.16342168,-9.944958,-0.005396068,-0.004129632,-0.0021273901 +18588000,mag,0.010362485,-0.21577346,0.42626035 +18592000,imu,-0.13999796,0.17186219,-9.916494,-0.0044001746,-0.006325634,0.001198952 +18596000,imu,-0.14926302,0.20210437,-9.939818,-0.0009818587,-0.0073467507,1.3380401e-06 +18600000,imu,-0.16697872,0.20857759,-9.949664,-0.0018923894,-0.005279416,-0.00042576613 +18600000,mag,0.008306689,-0.21800648,0.42706344 +18604000,imu,-0.15417196,0.16100878,-9.955285,-0.0041211727,-0.0040959828,0.0008753641 +18608000,imu,-0.15069333,0.15872377,-9.954657,-0.0021721981,-0.0062008603,-0.0006797745 +18612000,mag,0.013026909,-0.2176758,0.4315445 +18612000,imu,-0.19396833,0.18356818,-9.91841,0.0028368717,-0.007078909,-0.0023647381 +18616000,imu,-0.19397482,0.18256666,-9.910631,0.0016931314,-0.006096529,-0.0031949738 +18620000,imu,-0.16476679,0.17788279,-9.958689,1.12013395e-05,-0.005375816,-0.0014433765 +18624000,imu,-0.16395617,0.16592655,-9.974783,-0.0031971845,-0.00737505,0.0022030484 +18624000,mag,0.0013283615,-0.21772738,0.4243481 +18628000,imu,-0.18883526,0.17840654,-9.957239,-0.004147324,-0.0067633837,0.001330701 +18632000,imu,-0.21427935,0.15663636,-9.932779,-0.0018470146,-0.004554588,0.00080649834 +18636000,imu,-0.20446378,0.15729977,-9.89674,-0.0021906355,-0.0042465697,0.006151198 +18636000,mag,0.009756676,-0.2203426,0.4319765 +18640000,imu,-0.16148567,0.20025414,-9.900997,-0.0037940305,-0.004543144,0.004851911 +18644000,imu,-0.15840451,0.18794374,-9.926149,-0.004131861,-0.0066324696,-0.0022493922 +18648000,baro,487.6474 +18648000,mag,0.005756549,-0.21296172,0.42858177 +18648000,imu,-0.18403883,0.17502934,-9.904448,-0.0018393846,-0.007767923,4.5079607e-05 +18652000,imu,-0.19850965,0.19327213,-9.874575,-0.0015177222,-0.008628245,0.004061227 +18656000,imu,-0.19641723,0.18433242,-9.902219,-0.0037248975,-0.005237739,0.004228202 +18660000,mag,0.011863196,-0.21638894,0.4255829 +18660000,imu,-0.1918533,0.16178796,-9.935963,-0.0050813383,-0.0046333857,0.00077926536 +18664000,imu,-0.19852054,0.17266567,-9.93034,-0.0051544337,-0.0060606194,-0.0019892498 +18668000,imu,-0.21393888,0.1623321,-9.919197,-0.0027082898,-0.005336479,0.00090887694 +18668000,mag,0.009972239,-0.21881019,0.431663 +18672000,imu,-0.20047057,0.16554455,-9.933598,-0.0015925628,-0.005095185,0.0006128361 +18676000,imu,-0.15872936,0.18337452,-9.937881,-0.0016450328,-0.0032548278,-0.004522127 +18680000,imu,-0.16093889,0.17687683,-9.917994,-0.0005391209,-0.004145074,-0.0026605015 +18684000,mag,0.00783262,-0.21639164,0.4268345 +18684000,imu,-0.17349154,0.17659865,-9.918298,0.000576352,-0.004104995,0.0028633599 +18688000,imu,-0.18358314,0.15450543,-9.893581,-0.00012145476,-0.005831359,0.00044411322 +18692000,imu,-0.20809385,0.17994063,-9.880356,-0.0018557884,-0.00904326,-0.0024781215 +18696000,mag,0.006040088,-0.21386324,0.43171394 +18696000,imu,-0.18815708,0.20116447,-9.91711,-0.0029911706,-0.0077143693,0.00079567 +18700000,imu,-0.1657232,0.18928725,-9.927986,-0.004891562,-0.0061631966,-0.0005977726 +18704000,imu,-0.16177014,0.19084415,-9.92215,-0.0017730051,-0.0056036543,-0.004039567 +18708000,imu,-0.15466896,0.17293343,-9.954956,-0.0003078553,-0.0060215187,-0.00278945 +18708000,mag,0.012171061,-0.21879654,0.436081 +18712000,imu,-0.1595266,0.14305916,-9.963999,0.00031326033,-0.0077413376,-0.0020764703 +18716000,imu,-0.15921257,0.15846024,-9.923018,-0.0005341814,-0.0069057923,-0.0008803354 +18720000,baro,487.67557 +18720000,mag,0.009221526,-0.21763079,0.4257108 +18720000,imu,-0.18096092,0.19801304,-9.907501,-0.0036049937,-0.004689087,0.00010509119 +18724000,imu,-0.19109787,0.1808018,-9.908962,-0.001799134,-0.006123976,-0.0006565267 +18728000,imu,-0.16897127,0.17753044,-9.923378,-0.0018782751,-0.0077304267,-0.0012412275 +18732000,imu,-0.15434808,0.17548795,-9.94021,-0.0018367814,-0.0068507358,0.0008432337 +18732000,mag,0.0065789283,-0.21055625,0.42736214 +18736000,imu,-0.14988981,0.15394242,-9.939016,0.0017726489,-0.0054303263,0.002936253 +18740000,imu,-0.13649145,0.16988812,-9.947727,-0.0006181247,-0.0066878176,-0.00028501448 +18744000,mag,0.0055245897,-0.21776345,0.42638016 +18744000,imu,-0.14345063,0.16741958,-9.943861,-0.0033694613,-0.008200362,-0.00039588285 +18748000,imu,-0.18422835,0.14654145,-9.917979,-0.0018289981,-0.00855982,-0.0013139376 +18752000,imu,-0.19448406,0.1640985,-9.927667,-0.004683048,-0.0057693557,-0.0010500541 +18756000,mag,0.01027904,-0.21388572,0.43040425 +18756000,imu,-0.20727637,0.20474939,-9.929771,-0.005740591,-0.004728458,0.00029698104 +18760000,imu,-0.20294598,0.15669136,-9.917719,-0.004742795,-0.0064037656,-0.0007250548 +18764000,imu,-0.1684233,0.14134932,-9.929011,-0.0036905727,-0.0042948416,0.0009783083 +18768000,imu,-0.16746083,0.19442247,-9.934319,-0.0028392863,-0.0033851764,0.0029367714 +18768000,mag,0.013713946,-0.21207231,0.42711124 +18772000,imu,-0.1751433,0.17457019,-9.90634,-0.0016164184,-0.0035831619,0.0018882205 +18776000,imu,-0.17521662,0.17503498,-9.875937,0.004071567,-0.002702738,0.0015706858 +18780000,imu,-0.1946517,0.17017642,-9.916178,0.0049053794,-0.00406737,0.0013228973 +18780000,mag,0.003944624,-0.22201844,0.43142062 +18784000,imu,-0.20175649,0.1447923,-9.946344,9.425188e-05,-0.0041632745,-0.0010836221 +18788000,mag,0.018776461,-0.21289493,0.42785138 +18788000,imu,-0.14251739,0.17453955,-9.95384,-0.0039088214,-0.004042016,-0.00016808031 +18788000,baro,487.52533 +18792000,imu,-0.12835945,0.19408639,-9.939415,-0.0033670315,-0.0034719245,-0.000105390194 +18796000,imu,-0.16751054,0.19213055,-9.921375,-1.459523e-05,-0.0055268425,-0.0003633066 +18800000,imu,-0.17900051,0.19981308,-9.945452,0.0009314769,-0.00930437,0.0038613311 +18804000,imu,-0.1765754,0.17841505,-9.951704,0.00067691284,-0.0074823652,0.0032151905 +18804000,mag,0.007936097,-0.2187334,0.4331408 +18808000,imu,-0.13782774,0.15911758,-9.923571,-0.0036604095,-0.0058253724,0.00047828758 +18812000,imu,-0.16143383,0.15043281,-9.910618,-0.0037496737,-0.006775981,-0.0005860167 +18812000,mag,0.009309497,-0.21187048,0.43034127 +18816000,imu,-0.17797284,0.13966127,-9.923119,-0.00021546448,-0.007287735,-0.0008404989 +18820000,imu,-0.13224481,0.1400729,-9.954615,-0.0036969394,-0.0062633,0.0029653413 +18824000,imu,-0.14705671,0.1568366,-9.957733,-0.0040427065,-0.0063038343,0.00050676474 +18828000,mag,0.007480334,-0.21763456,0.43298632 +18828000,imu,-0.14236996,0.17221133,-9.941179,-8.436531e-05,-0.0061834636,-0.002633809 +18832000,imu,-0.17264205,0.17266276,-9.957123,-0.00058927236,-0.007602236,-0.000388133 +18836000,imu,-0.18384671,0.15896487,-9.959758,-0.0036807582,-0.0069282604,0.00032364734 +18840000,imu,-0.1540909,0.18016247,-9.93166,-0.0057764435,-0.0022817198,-0.000595776 +18840000,baro,487.69434 +18840000,mag,0.013346072,-0.21115977,0.4327809 +18844000,imu,-0.18328172,0.20566785,-9.892916,-0.004069677,-0.0013959075,0.00078125217 +18848000,imu,-0.17252357,0.1732983,-9.930809,0.00040312542,-0.0043672067,-0.0011576074 +18852000,gps,488098.0,85456074.0,473977508.0,0.02,0.0,-0.03 +18852000,imu,-0.15040886,0.16398099,-9.96874,-0.00023835851,-0.006116877,0.00020042846 +18852000,mag,0.010319624,-0.21914297,0.42213503 +18856000,imu,-0.15328957,0.19052911,-9.945444,-0.0022731586,-0.007468667,0.0034353083 +18860000,imu,-0.18105152,0.17704205,-9.953573,-0.0017230354,-0.0069320495,0.0010399368 +18860000,mag,0.012077017,-0.21599808,0.42584646 +18864000,imu,-0.18929976,0.14732912,-9.940893,0.00031394622,-0.0058091315,0.00044059704 +18868000,imu,-0.17377687,0.16659737,-9.897624,0.0030484435,-0.005106428,-0.00019944292 +18872000,imu,-0.18446212,0.19012241,-9.896374,0.0038338217,-0.0053794207,-0.0013148669 +18876000,mag,0.004992443,-0.2172271,0.42898113 +18876000,imu,-0.18567938,0.16995396,-9.937891,0.0032771544,-0.0071126246,-0.0011350919 +18880000,imu,-0.20603773,0.14352277,-9.970331,0.00013099733,-0.00636347,0.0020033391 +18884000,mag,0.009117576,-0.21316275,0.43482888 +18884000,imu,-0.21094036,0.16022365,-9.941679,-0.00034518592,-0.007949517,0.005090435 +18888000,imu,-0.17674553,0.17513312,-9.947144,-0.00040442016,-0.010408292,0.004169408 +18892000,imu,-0.17025732,0.1750682,-9.961504,-0.0017411172,-0.009045029,0.0033330498 +18896000,imu,-0.17285305,0.17682846,-9.917197,-0.0006613035,-0.0057544145,0.0018182592 +18900000,mag,0.012880812,-0.21187532,0.42873952 +18900000,imu,-0.18772075,0.17947227,-9.911219,-0.0010564,-0.005144411,0.00070991024 +18904000,imu,-0.20664069,0.19540223,-9.930265,-0.002268698,-0.00749016,-0.0012437935 +18908000,imu,-0.17936249,0.18032043,-9.931282,-0.0031820547,-0.009688042,-0.0022984939 +18912000,mag,0.013070608,-0.21055128,0.42575398 +18912000,imu,-0.14976306,0.16858898,-9.90992,-0.003466451,-0.006256938,-0.002320978 +18912000,baro,487.62393 +18916000,imu,-0.17979103,0.16973883,-9.917219,-0.0048641018,-0.0037640794,-0.00085991627 +18920000,imu,-0.1921337,0.1697077,-9.957569,-0.0037136986,-0.0039286437,0.0010166862 +18924000,imu,-0.17453703,0.16544805,-9.957617,-0.0020900199,-0.0031694765,-0.0008178452 +18924000,mag,0.012873931,-0.21803942,0.42762792 +18928000,imu,-0.159252,0.15621386,-9.937108,-0.000979544,-0.0053755674,0.0014631912 +18932000,imu,-0.17249015,0.16173838,-9.934435,0.001493087,-0.007886692,0.0016219716 +18932000,mag,0.013949282,-0.2124853,0.4252606 +18936000,imu,-0.20026384,0.18458568,-9.918764,-0.0005787514,-0.0035497139,-0.002154144 +18940000,landed,1.0 +18940000,imu,-0.20936622,0.16164325,-9.916651,-0.0012135489,-0.0015988575,0.00075802585 +18944000,imu,-0.17292953,0.14874363,-9.921524,0.002408282,-0.0038798745,0.0035066775 +18948000,mag,0.0037794006,-0.21707799,0.4295411 +18948000,imu,-0.1319198,0.16717157,-9.911283,0.0015241317,-0.005393083,0.0028694274 +18952000,imu,-0.14470123,0.18673895,-9.916159,0.0009363545,-0.00913766,0.0024620136 +18956000,mag,0.006331628,-0.21504262,0.4282533 +18956000,imu,-0.13134195,0.16751641,-9.95296,6.982814e-05,-0.009651765,0.0033223527 +18960000,imu,-0.14902677,0.1542753,-9.969126,-0.0028258013,-0.006427856,0.0058020614 +18964000,imu,-0.18036947,0.1580807,-9.970247,-0.0014065107,-0.0033235152,0.0012725802 +18968000,imu,-0.15834337,0.14325108,-9.99197,-0.00087238173,-0.0059859515,-0.0019632329 +18972000,imu,-0.1506645,0.14939302,-9.97628,0.00016323676,-0.0058500376,0.00091705023 +18972000,mag,0.00898818,-0.21454154,0.4301275 +18976000,imu,-0.152459,0.13992698,-9.94642,-0.0040348303,-0.0044854414,-0.0006205063 +18980000,imu,-0.15874854,0.15584518,-9.933532,-0.0071381056,-0.0054144454,-0.0003679048 +18980000,baro,487.6427 +18980000,mag,0.008595531,-0.2109209,0.4342151 +18984000,imu,-0.16386822,0.170458,-9.921577,-0.0037772844,-0.0056058397,0.0020130484 +18988000,imu,-0.1499607,0.19024856,-9.913524,-0.0033649525,-0.0064356346,0.0019363811 +18992000,imu,-0.15614884,0.19479264,-9.931261,-0.002954486,-0.0072928234,-0.0010555404 +18996000,imu,-0.16520457,0.17681524,-9.935152,-0.0009345872,-0.007634333,0.00013235188 +18996000,mag,0.012126467,-0.21464533,0.43421447 +19000000,imu,-0.14748764,0.15705557,-9.920089,-0.0041306894,-0.006864553,0.0020533842 +19004000,imu,-0.12932457,0.15546651,-9.914814,-0.0031643114,-0.0078991065,-0.0018643987 +19008000,imu,-0.15723637,0.15972818,-9.939333,0.003063402,-0.005434447,-0.00070568605 +19008000,mag,0.012549385,-0.21766807,0.43018273 +19012000,imu,-0.15743235,0.15764563,-9.951128,-0.00066227047,-0.002466053,0.0017020436 +19016000,imu,-0.16295946,0.1639715,-9.943312,-0.0020462738,-0.0049989745,-9.699387e-05 +19020000,mag,0.011638584,-0.21260479,0.43603072 +19020000,imu,-0.2003513,0.16078156,-9.930521,-0.0012222383,-0.008490185,-0.0025481437 +19024000,imu,-0.1710917,0.15849832,-9.906048,-0.0027130109,-0.008516387,0.0026206814 +19028000,imu,-0.1524803,0.19246508,-9.909773,-0.0013085564,-0.005322431,0.0042821607 +19032000,baro,487.49246 +19032000,imu,-0.16063118,0.20783481,-9.918909,-0.00058677496,-0.0020492764,-0.0016472412 +19032000,mag,0.009323582,-0.21502112,0.42921132 +19036000,imu,-0.17274363,0.17716597,-9.90613,-0.0013471037,-0.00404521,-0.004028989 +19040000,imu,-0.18568772,0.17781273,-9.885685,-0.0021190383,-0.0037800104,-0.0022862935 +19044000,imu,-0.17533123,0.18577941,-9.892237,-0.004991055,-0.0024888383,0.0009840628 +19044000,mag,0.0011732106,-0.21232466,0.43002126 +19048000,imu,-0.18886918,0.17103145,-9.922995,-0.004064531,-0.0054521114,0.0049745175 +19052000,imu,-0.17220281,0.16842227,-9.937609,-0.00066801114,-0.006828719,0.005036395 +19052000,mag,0.0020336132,-0.21749793,0.42227083 +19056000,imu,-0.1535336,0.15406644,-9.916173,0.00013633263,-0.008428081,-0.00097389135 +19060000,imu,-0.20577669,0.14903516,-9.912802,-8.259308e-05,-0.008988617,-0.0012659315 +19064000,imu,-0.18386005,0.14235762,-9.94152,0.0025558055,-0.0041619204,-0.0023484265 +19068000,mag,0.0141211515,-0.21615796,0.43147478 +19068000,imu,-0.17719823,0.15549432,-9.9416275,0.003352487,-0.0019282333,-0.0031320176 +19072000,imu,-0.19503707,0.16049384,-9.9029045,0.0017257521,-0.0047011958,-0.00026521168 +19076000,imu,-0.18044037,0.15763092,-9.876766,0.0018143534,-0.002574013,0.0027758148 +19080000,imu,-0.17352018,0.15092666,-9.906686,-0.0010378975,-0.0009613594,0.004925561 +19080000,mag,0.010003229,-0.20803586,0.43075374 +19084000,imu,-0.16595699,0.15346365,-9.968173,-0.0012050153,-0.0033950412,0.0015138686 +19088000,imu,-0.17346337,0.19195011,-9.982256,8.321928e-05,-0.00469606,9.880074e-05 +19092000,imu,-0.1750545,0.19301677,-9.940844,4.4702152e-05,-0.0044364864,0.00049394043 +19092000,mag,0.015652856,-0.21294633,0.43548644 +19096000,imu,-0.18691957,0.18370126,-9.935001,0.001570723,-0.0035633473,0.0005844792 +19100000,imu,-0.19092906,0.18707694,-9.933457,0.0039002215,-0.006001136,0.0006624121 +19100000,mag,0.016044624,-0.21350633,0.4201037 +19104000,baro,487.62393 +19104000,imu,-0.17637253,0.19963278,-9.921658,0.003959666,-0.007429972,-0.0017752345 +19108000,imu,-0.1465087,0.17589925,-9.939238,0.0012078432,-0.0050690654,0.00067763537 +19112000,imu,-0.13329744,0.1444298,-9.929846,0.00059544557,-0.0058772177,0.00038698755 +19116000,imu,-0.13418393,0.1691502,-9.919798,-0.0008625434,-0.0072352802,-0.0041596983 +19116000,mag,0.0052010273,-0.21587516,0.4268199 +19120000,imu,-0.1498157,0.16628681,-9.958227,-0.003713945,-0.006635745,-0.0009835853 +19124000,imu,-0.16425219,0.14981315,-9.952767,-0.0015792268,-0.004672799,0.0019514823 +19128000,mag,0.004509796,-0.21712013,0.43021247 +19128000,imu,-0.20081916,0.1429963,-9.911165,0.0005692162,-0.004353068,-0.00058496185 +19132000,imu,-0.21511811,0.16394307,-9.912001,-0.0015184755,-0.0056273723,0.0007390199 +19136000,imu,-0.19130668,0.18956934,-9.915148,-0.00018853706,-0.0069563542,0.0020838664 +19140000,imu,-0.18942742,0.18416323,-9.9122715,0.002419944,-0.007137439,0.003831923 +19140000,mag,0.007895745,-0.21981521,0.4295995 +19144000,imu,-0.1820271,0.18386205,-9.926066,-0.0006483526,-0.0051110247,0.0032759535 +19148000,imu,-0.17762336,0.17608352,-9.940552,-0.0002870685,-0.0031781255,0.0011698178 +19152000,imu,-0.18412188,0.16599703,-9.962589,0.0008859293,-0.004136342,0.00021560072 +19152000,mag,0.014564788,-0.21646547,0.4335562 +19156000,imu,-0.18214081,0.1556993,-9.950693,-0.0015817628,-0.008215796,-0.0017100775 +19160000,imu,-0.15794232,0.18093373,-9.929167,-0.00089206605,-0.0068455026,-0.0013417514 +19164000,imu,-0.18556002,0.19543378,-9.94248,-0.0001560531,-0.0038266457,-0.0012312301 +19164000,mag,0.0077405074,-0.21540256,0.43179995 +19168000,imu,-0.16332221,0.17488937,-9.946049,-0.0011990113,-0.004768011,0.0023971493 +19172000,mag,0.008168482,-0.21104853,0.4322902 +19172000,imu,-0.12043801,0.19393817,-9.9380245,-0.0005125335,-0.00093540206,0.003556656 +19176000,imu,-0.15940863,0.17871425,-9.938986,-0.0014374474,-0.0008148041,0.0011573775 +19176000,baro,487.5441 +19180000,imu,-0.15210861,0.15260716,-9.9387865,-0.002052336,-0.0061052516,-0.0023499893 +19184000,imu,-0.15051219,0.16733474,-9.940296,0.0023329519,-0.0057103494,-0.003024459 +19188000,mag,0.017584572,-0.22144338,0.42842355 +19188000,imu,-0.17997926,0.17445363,-9.936903,0.0016506499,-0.006030513,-0.00022428216 +19192000,imu,-0.16718256,0.18961899,-9.920134,-0.00075227686,-0.0069677546,-0.00070738985 +19196000,imu,-0.1588718,0.17790125,-9.91181,-0.0029283077,-0.007424915,7.629697e-05 +19200000,mag,0.0043728477,-0.22380352,0.43287632 +19200000,imu,-0.18279299,0.18822795,-9.900662,-0.0039478624,-0.0066371094,2.5087531e-05 +19204000,imu,-0.17926395,0.19938362,-9.897823,-0.00069287425,-0.008565628,0.0015054058 +19208000,imu,-0.18763565,0.20584783,-9.91758,0.00192899,-0.009035127,0.0037514218 +19212000,imu,-0.22767642,0.17646009,-9.926425,0.0011515607,-0.0088758785,0.0001776702 +19212000,mag,0.008144105,-0.2131493,0.42689207 +19216000,imu,-0.23984545,0.15450071,-9.918129,-0.002778262,-0.009236544,-0.0015317609 +19220000,imu,-0.18962848,0.1844315,-9.932025,-0.0026644175,-0.007080412,-0.0007775336 +19224000,imu,-0.1615736,0.18012775,-9.954746,-0.0035438414,-0.0043063494,-0.00035356788 +19224000,mag,0.0077987197,-0.21595654,0.42684135 +19228000,imu,-0.13983715,0.1754003,-9.968979,-0.0038000587,-0.0014687788,-0.0007745932 +19232000,imu,-0.12713951,0.1815031,-9.936741,-0.0010630862,-0.0054363534,-0.00025866105 +19236000,imu,-0.15303291,0.18467985,-9.910299,-0.0022041586,-0.0068038604,0.00012746105 +19236000,mag,0.01259511,-0.2154788,0.43018374 +19240000,imu,-0.19290164,0.18962969,-9.917843,-0.00034758815,-0.0026413968,-0.001732711 +19244000,imu,-0.20074004,0.17423359,-9.924013,0.004545152,-0.0018217614,-0.001201327 +19248000,mag,0.009552783,-0.21447001,0.43242708 +19248000,imu,-0.14829998,0.16327561,-9.942114,0.0043156208,-0.004116476,-0.0021141742 +19248000,baro,487.5535 +19252000,gps,488113.0,85456074.0,473977508.0,0.0,0.0,0.0 +19252000,imu,-0.16233084,0.15430816,-9.952751,0.0015541508,-0.0046852995,0.0007206859 +19256000,imu,-0.17885956,0.17256518,-9.967986,0.0014235332,-0.004703281,0.0017659348 +19260000,mag,0.0032570001,-0.21858278,0.43506056 +19260000,imu,-0.16762447,0.17396496,-9.966995,-0.00156899,-0.00559556,-5.3452426e-05 +19264000,imu,-0.17159426,0.14821374,-9.953485,-0.0036837829,-0.005534396,0.002224354 +19268000,imu,-0.1683827,0.16946834,-9.9400215,0.00032004216,-0.0045740465,0.0024477337 +19268000,mag,0.008725583,-0.2128186,0.42700192 +19272000,imu,-0.15165246,0.17931527,-9.914988,0.0015325788,-0.005507902,-0.0001463911 +19276000,imu,-0.19359016,0.1502072,-9.9116,0.00080483325,-0.009344673,-0.0016940269 +19280000,imu,-0.25128233,0.1250361,-9.918514,0.0027216065,-0.00781612,0.00092412747 +19284000,imu,-0.24504404,0.12226036,-9.943465,-0.00046537528,-0.0032461518,0.0016663768 +19284000,mag,0.009742792,-0.21599808,0.4358695 +19288000,imu,-0.22049633,0.14036706,-9.930908,-0.0035361964,-0.0037393512,-0.00052623526 +19292000,imu,-0.16574699,0.17409575,-9.889412,0.0005488184,-0.0043384656,-5.6966022e-05 +19296000,mag,0.008763667,-0.21570241,0.42241606 +19296000,imu,-0.17704758,0.1981109,-9.917757,0.0002278595,-0.005681284,0.002574838 +19300000,imu,-0.19135323,0.1883795,-9.933299,-0.0020824783,-0.006636396,0.0025289604 +19304000,imu,-0.18639684,0.1509369,-9.927247,-0.00069295324,-0.0061659757,0.0018695911 +19308000,mag,0.00809467,-0.21667935,0.4298122 +19308000,imu,-0.21081132,0.17101754,-9.902913,-0.0015291211,-0.002076284,0.001765449 +19312000,imu,-0.18655777,0.18872572,-9.885566,-0.0020429068,-0.0019511296,0.00051611516 +19316000,imu,-0.18327582,0.1703872,-9.911842,-0.0005810995,-0.006748198,-0.0012948768 +19320000,mag,0.006168196,-0.21054591,0.4285146 +19320000,baro,487.53003 +19320000,imu,-0.18499763,0.15792611,-9.922734,0.00086146285,-0.008674788,-0.0019517184 +19324000,imu,-0.1553537,0.15890032,-9.913019,-0.0009700767,-0.0064798584,-0.0023722947 +19328000,imu,-0.15534914,0.1760264,-9.901648,-0.0034932618,-0.0058359415,-0.0009798539 +19332000,mag,0.0114094475,-0.21797913,0.42685932 +19332000,imu,-0.17432025,0.17668422,-9.934362,-0.0011601042,-0.007363213,-0.00019920028 +19336000,imu,-0.16697454,0.1887839,-9.964564,-0.0022201834,-0.00293288,-0.0008664878 +19340000,imu,-0.1633738,0.1754167,-9.930168,-0.0034907197,-7.359308e-05,-0.002200731 +19344000,imu,-0.14322512,0.1608947,-9.917318,-0.0021535764,-0.00251332,-0.00049576664 +19344000,mag,0.0051770965,-0.21941943,0.42906222 +19348000,imu,-0.13908948,0.16489306,-9.938588,-0.0027288292,-0.0039175404,-0.00074611837 +19352000,imu,-0.19156557,0.15135261,-9.936575,-0.003904661,-0.0046809916,-0.001100833 +19356000,imu,-0.21739921,0.13960794,-9.899045,-0.002133178,-0.0059622554,0.0043375064 +19356000,mag,0.01665073,-0.21419165,0.431961 +19360000,imu,-0.15739153,0.14228423,-9.889455,-0.00041869417,-0.006142918,0.004610926 +19364000,imu,-0.147908,0.17966543,-9.903835,-0.0027134225,-0.006321178,0.0021012204 +19368000,mag,0.011201817,-0.21412441,0.42444885 +19368000,imu,-0.20286313,0.18179114,-9.931614,-0.0047234623,-0.0055563045,-0.0010952485 +19372000,imu,-0.18856664,0.16575003,-9.907629,-0.0011061854,-0.006577692,-0.002521249 +19376000,imu,-0.17427035,0.1734756,-9.884579,0.00013615833,-0.0069018546,-0.0013593202 +19380000,imu,-0.17800236,0.1763212,-9.933465,-0.0016054609,-0.0050768238,-0.00052462687 +19380000,mag,0.007789429,-0.22124836,0.42894664 +19384000,imu,-0.18046579,0.17962547,-9.943886,0.0008449484,-0.0061224685,0.0012398023 +19388000,imu,-0.21793115,0.17151487,-9.947096,0.00021870347,-0.0065005976,4.411304e-05 +19392000,baro,487.68967 +19392000,mag,0.009486628,-0.21795985,0.43011528 +19392000,imu,-0.23501441,0.19906428,-9.963625,-0.0018957994,-0.00557353,-0.00121593 +19396000,imu,-0.2108159,0.20974827,-9.944662,-1.3653007e-05,-0.008095624,0.0018944766 +19400000,imu,-0.19152987,0.1868549,-9.927728,0.0017821712,-0.0046767346,0.0012452891 +19404000,imu,-0.16433233,0.19328469,-9.941584,0.0023010222,-0.004542953,-0.0029750955 +19404000,mag,0.014386292,-0.21880153,0.4261729 +19408000,imu,-0.14540324,0.18874161,-9.971346,0.0015467006,-0.007966649,-0.0008357096 +19412000,imu,-0.14197877,0.18341053,-9.971115,0.0030141773,-0.0049310266,0.00051695126 +19416000,imu,-0.16027945,0.16529988,-9.950506,0.0037108732,-0.003987547,-0.0017249259 +19416000,mag,0.0100757545,-0.21622881,0.4308977 +19420000,imu,-0.1770447,0.15172338,-9.945322,-9.398005e-05,-0.005860254,0.001131341 +19424000,imu,-0.18211855,0.1746019,-9.934739,-0.00242592,-0.008749922,0.0027190947 +19428000,mag,0.009944688,-0.21443968,0.42762095 +19428000,imu,-0.16674295,0.2048809,-9.933296,-0.0008097787,-0.008750369,0.0004706692 +19432000,imu,-0.16060793,0.18725905,-9.948622,-0.0031771443,-0.006442095,-0.0015627141 +19436000,imu,-0.1694824,0.15113823,-9.925396,-0.008162992,-0.006003063,-0.0012460405 +19440000,imu,-0.17650688,0.17153144,-9.916134,-0.0047274223,-0.0077419826,-0.001858664 +19440000,mag,0.004821592,-0.212555,0.4271335 +19444000,imu,-0.18784176,0.18555826,-9.932722,-0.00093811203,-0.008832317,-0.0019634257 +19448000,imu,-0.17759125,0.20541875,-9.91711,-0.001714233,-0.0075296056,-0.001961407 +19452000,imu,-0.17835169,0.19099613,-9.939594,-0.004194619,-0.006674316,-0.00026395332 +19452000,mag,0.009094456,-0.21870334,0.42642456 +19456000,imu,-0.20640738,0.15556015,-9.921803,-0.0054239044,-0.008101478,0.0021943862 +19460000,imu,-0.19122481,0.1701376,-9.898993,-0.0039350353,-0.009178526,-0.001722434 +19464000,baro,487.67557 +19464000,mag,0.0138113815,-0.21239324,0.42668247 +19464000,imu,-0.17360884,0.16566609,-9.920015,-0.0031696688,-0.0066255294,-0.00069466385 +19468000,imu,-0.18111192,0.17446749,-9.93067,-0.0037614391,-0.0041925185,0.002406067 +19472000,imu,-0.16283527,0.2039706,-9.945063,-0.0028008076,-0.0058248094,-2.5747881e-06 +19476000,imu,-0.17783687,0.17530547,-9.940182,-0.00055934105,-0.00851952,0.0017943743 +19476000,mag,0.0138186095,-0.20632003,0.43977362 +19480000,imu,-0.20255488,0.12247136,-9.927883,-0.0028274371,-0.00570463,0.0016535345 +19484000,mag,0.015562998,-0.21647596,0.42941236 +19484000,imu,-0.20141853,0.13444108,-9.953043,0.0014380531,-0.0039052838,-0.0011877448 +19488000,imu,-0.17088993,0.1773076,-9.972502,0.0031103373,-0.007161589,-0.0024155995 +19492000,imu,-0.14463112,0.15644081,-9.945873,-0.0017660001,-0.0067479704,-0.0008971543 +19496000,imu,-0.14730108,0.14622332,-9.943985,-0.003861136,-0.004842258,0.0015314922 +19500000,mag,0.014747272,-0.21085969,0.41948617 +19500000,imu,-0.16421583,0.17239672,-9.940105,-0.0037630273,-0.0048393086,-0.0014702154 +19504000,imu,-0.18968192,0.15853837,-9.895627,0.0014640545,-0.0051115016,-0.0007572302 +19508000,imu,-0.17916915,0.17503268,-9.888737,-4.1560488e-05,-0.0057197465,0.0030357563 +19512000,mag,0.016395431,-0.21581522,0.43301204 +19512000,imu,-0.17333706,0.17390855,-9.927759,-0.0019653486,-0.006430125,0.003646284 +19516000,imu,-0.19607535,0.16269955,-9.936182,-0.0008967082,-0.008357858,0.0031528426 +19520000,imu,-0.21282208,0.17517783,-9.909168,-0.0002525936,-0.008600462,0.0019504562 +19524000,mag,0.007793589,-0.21939984,0.4305142 +19524000,imu,-0.20680282,0.1560931,-9.904033,0.00043920736,-0.00275769,-0.0018517678 +19528000,imu,-0.20086372,0.1419786,-9.9139805,0.0007988702,-0.0030530707,-0.001487183 +19532000,imu,-0.17389664,0.17409475,-9.926643,0.001718817,-0.0075196764,0.0030174684 +19536000,baro,487.6333 +19536000,imu,-0.1582638,0.20958504,-9.911096,-0.00030442825,-0.007249303,0.00396093 +19536000,mag,0.01372743,-0.21512505,0.4316939 +19540000,imu,-0.18401866,0.16196348,-9.910961,-0.0006729695,-0.008030758,0.002647997 +19544000,imu,-0.19733982,0.1303568,-9.934534,0.0027559598,-0.007519706,-0.00042828807 +19548000,imu,-0.21025524,0.16326314,-9.94577,0.0014687637,-0.004042036,0.0009477908 +19548000,mag,0.0076460373,-0.20838422,0.4329245 +19552000,imu,-0.18401444,0.17736751,-9.956351,-0.0023618538,-0.0035239006,0.0014196682 +19556000,mag,0.009911567,-0.21577068,0.4323066 +19556000,imu,-0.16621321,0.18844649,-9.934088,0.0014351846,-0.004419947,-2.271413e-06 +19560000,imu,-0.18097907,0.1930947,-9.9098015,0.00031231288,-0.0057010273,0.0010027017 +19564000,imu,-0.18386512,0.17218596,-9.920021,-0.0017939864,-0.007108822,-0.0008346115 +19568000,imu,-0.17901453,0.18190026,-9.941415,0.0012345441,-0.0056124665,0.0006645449 +19572000,imu,-0.18505256,0.18983258,-9.932931,-0.00043253147,-0.0070888144,0.002530924 +19572000,mag,0.0062326817,-0.2161922,0.42958304 +19576000,imu,-0.16442902,0.18228121,-9.937862,-0.00089937943,-0.0062820707,0.0013697227 +19580000,imu,-0.16424102,0.18239577,-9.955986,-0.0036049841,-0.0021889815,0.0022483985 +19584000,imu,-0.18947217,0.1746314,-9.932009,-0.0038082104,-0.001149113,0.0022954335 +19584000,mag,0.01446499,-0.21306165,0.4290424 +19588000,imu,-0.18947479,0.16820003,-9.912621,-0.001631638,-0.0038843676,-0.0016213235 +19592000,imu,-0.18100223,0.1653797,-9.927502,-0.0028883684,-0.004229701,-0.0032353285 +19596000,imu,-0.179871,0.17740063,-9.952158,-0.0029652312,-0.0042644767,-0.0015195484 +19596000,mag,0.007411045,-0.21681121,0.42802066 +19600000,imu,-0.17716813,0.16725083,-9.934219,-0.004146315,-0.007917683,7.057501e-05 +19604000,imu,-0.1891574,0.14164196,-9.91918,-0.0036540322,-0.008766217,0.0011970197 +19608000,mag,0.0031787553,-0.21113577,0.43068567 +19608000,imu,-0.18915147,0.13941714,-9.9184475,-0.002292928,-0.010821025,-3.081601e-05 +19608000,baro,487.62393 +19612000,imu,-0.19679442,0.14949244,-9.908722,-0.001349177,-0.011108744,-0.00017475152 +19616000,imu,-0.19288465,0.1599187,-9.930904,-0.00037210577,-0.008671167,0.0012265483 +19620000,mag,0.0067818095,-0.21347077,0.42614752 +19620000,imu,-0.17550632,0.16802937,-9.932175,-0.0019432685,-0.0076069306,0.0033034259 +19624000,imu,-0.20758598,0.18447068,-9.901255,-0.0061978083,-0.0043658195,0.003942973 +19628000,imu,-0.22640279,0.20807363,-9.881092,-0.0051880004,-0.0019628764,0.0008263902 +19632000,imu,-0.20904198,0.19741158,-9.880512,-0.0018793205,-0.005336661,-0.00020823671 +19632000,mag,0.012578643,-0.21004283,0.43026203 +19636000,imu,-0.16410929,0.17605771,-9.897457,-0.0010701988,-0.00800054,0.00018465717 +19640000,imu,-0.19406387,0.16422811,-9.919226,-0.00067447976,-0.006607814,-0.0013543258 +19644000,mag,0.01081629,-0.21613503,0.42877093 +19644000,imu,-0.21124414,0.17908642,-9.889137,-0.0016682908,-0.005581421,-0.0016627379 +19648000,imu,-0.2084111,0.1753781,-9.892616,-0.0021210047,-0.0047633196,-0.0011043297 +19652000,imu,-0.2050533,0.15220653,-9.941643,-0.0012801929,-0.006661604,-0.00067670096 +19652000,gps,488099.0,85456074.0,473977508.0,0.0,0.0,-0.02 +19656000,mag,0.010048258,-0.22038282,0.42590374 +19656000,imu,-0.19263227,0.17890817,-9.922216,0.00088683725,-0.00980693,-0.001860359 +19660000,imu,-0.18044522,0.17158411,-9.931549,-0.0014837292,-0.0058181533,-0.003473904 +19664000,imu,-0.1535231,0.13847989,-9.945011,-0.0029541214,-0.00528116,-0.0019783261 +19668000,mag,0.009265531,-0.21373203,0.42717296 +19668000,imu,-0.16338286,0.13845903,-9.933673,-0.0006566845,-0.0061907577,0.0013458554 +19672000,imu,-0.19020273,0.14715019,-9.910414,-0.0014461539,-0.0070216605,0.0011151033 +19676000,imu,-0.21542084,0.13497053,-9.912668,-0.0035282958,-0.008373748,0.0010673745 +19680000,imu,-0.21091716,0.14815614,-9.9686165,-0.0022029516,-0.006965374,0.0018145341 +19680000,baro,487.60983 +19680000,mag,0.0051806867,-0.21013515,0.43084943 +19684000,imu,-0.20287392,0.18651938,-9.949074,0.000415092,-0.0066455626,-0.0019337918 +19688000,imu,-0.16069882,0.20628323,-9.91083,-0.0009042419,-0.007088558,-0.00329536 +19692000,mag,0.007947479,-0.21685843,0.43072692 +19692000,imu,-0.14089003,0.1843425,-9.9146185,-0.00015975443,-0.00826835,0.0016296112 +19696000,imu,-0.19559214,0.16402031,-9.909855,-0.000117197946,-0.0060786996,0.0016485923 +19700000,imu,-0.1872626,0.17199697,-9.906859,-0.0019688115,-0.00696688,-0.0017380976 +19704000,imu,-0.17602277,0.16519149,-9.920373,0.0015265963,-0.009656487,-0.0015484185 +19704000,mag,0.012252588,-0.21604535,0.43470052 +19708000,imu,-0.1911232,0.15753782,-9.941763,0.0025125782,-0.010170256,0.000735915 +19712000,imu,-0.16957678,0.14647397,-9.942949,0.001193438,-0.008004378,0.0012699482 +19716000,mag,0.006345076,-0.21417575,0.43427348 +19716000,imu,-0.17133218,0.1723449,-9.942917,0.0012847091,-0.006704324,0.0018481814 +19720000,imu,-0.20684612,0.20332092,-9.934305,0.0010095075,-0.007175475,0.0029664354 +19724000,imu,-0.19665736,0.1871044,-9.91085,-0.0025906726,-0.0074701607,-0.0001557133 +19724000,mag,0.009503126,-0.21762764,0.42639276 +19728000,imu,-0.17348576,0.17850628,-9.9393015,-0.0045710644,-0.008251859,0.0016397716 +19732000,imu,-0.18926865,0.19090958,-9.95487,-0.0035437644,-0.0053970125,-0.00045476787 +19736000,imu,-0.17705822,0.20977238,-9.906351,-0.0020685128,-0.0058675716,-0.0047184923 +19740000,imu,-0.16674536,0.20745575,-9.939028,0.002359965,-0.0075688916,-0.00029347427 +19740000,mag,0.007050785,-0.21141903,0.42429182 +19744000,imu,-0.17984572,0.179396,-9.9349575,0.00032997885,-0.007278916,0.0007927514 +19748000,imu,-0.20978606,0.15665466,-9.915633,-0.002282721,-0.006203557,0.0015196336 +19752000,baro,487.5676 +19752000,mag,0.015069226,-0.22277635,0.43369412 +19752000,imu,-0.2027621,0.17138143,-9.951467,-0.0016442494,-0.0053301505,0.00030265783 +19756000,imu,-0.17439978,0.17737614,-9.944363,-0.00038847918,-0.005738759,-0.0014434065 +19760000,imu,-0.17217019,0.15679671,-9.957899,-0.00057257176,-0.005460936,-0.00044028452 +19764000,mag,0.008427038,-0.22256343,0.42654842 +19764000,imu,-0.19327058,0.15612406,-9.941282,-0.0031100868,-0.004917922,-0.0040651117 +19768000,imu,-0.19938591,0.17789358,-9.894754,-0.0028693823,-0.005314274,-0.00202998 +19772000,mag,0.007842235,-0.20960166,0.4298996 +19772000,imu,-0.20189044,0.19355907,-9.907902,-0.0013043855,-0.0048322547,-0.0004585081 +19776000,imu,-0.19984916,0.17754593,-9.94367,-0.0009653652,-0.0029044284,-0.0022077095 +19780000,imu,-0.1728912,0.19792765,-9.942253,-0.0036812753,-0.008031088,-0.00020919162 +19784000,imu,-0.17793384,0.201444,-9.947958,-0.004147807,-0.007746538,0.0016832793 +19788000,mag,0.0058105234,-0.21414971,0.43292305 +19788000,imu,-0.15727027,0.14999123,-9.938421,0.0026996937,-0.0018131759,0.0023838931 +19792000,imu,-0.1464303,0.16354895,-9.947003,0.0031023251,-0.005144178,0.00079641474 +19796000,mag,0.013956002,-0.21859187,0.43148297 +19796000,imu,-0.18864658,0.18983734,-9.960075,-0.002580494,-0.0059974175,0.0013001055 +19800000,imu,-0.21083698,0.17801158,-9.94677,-0.0033850616,-0.0048545315,-9.548444e-05 +19804000,imu,-0.18396805,0.16968866,-9.925266,-0.0032049245,-0.006621032,-0.0016661312 +19808000,imu,-0.13694042,0.1812254,-9.893914,-0.0011030879,-0.0071057184,-0.0005007206 +19812000,imu,-0.1567193,0.18217818,-9.910685,-0.00035884962,-0.0058612106,-0.001686384 +19812000,mag,0.012882855,-0.21340449,0.4230398 +19816000,imu,-0.1874099,0.18020247,-9.93513,0.00027708188,-0.007173099,-0.0016138535 +19820000,mag,0.011013389,-0.22383234,0.42658025 +19820000,imu,-0.17555329,0.1852531,-9.945913,-0.00046604872,-0.0063589467,-0.0017982813 +19824000,imu,-0.19384158,0.17517729,-9.959324,-0.0010818318,-0.0025620814,0.0021398836 +19824000,baro,487.6427 +19828000,imu,-0.22188854,0.1777783,-9.905344,-0.0015234913,-0.0028224958,0.0026095998 +19832000,imu,-0.19295608,0.19870354,-9.879402,-0.0005666532,-0.005658477,0.0013847369 +19836000,imu,-0.20274922,0.19754748,-9.9227295,0.0012495882,-0.009764015,-0.0005480323 +19836000,mag,0.012359062,-0.21736112,0.42480895 +19840000,imu,-0.20287353,0.20175682,-9.923168,-0.00060621876,-0.010447512,-0.0018535034 +19844000,imu,-0.18129282,0.18172534,-9.898978,0.0012806386,-0.0061554424,-0.0014264283 +19848000,mag,0.013081571,-0.20799322,0.42917082 +19848000,imu,-0.19387326,0.14883317,-9.894947,-0.0024476217,-0.0031665373,-0.0016060828 +19852000,imu,-0.1795303,0.17608713,-9.911882,-0.0054835333,-0.0018207708,0.0006979865 +19856000,imu,-0.15989146,0.20210086,-9.902258,-0.000818706,0.001207865,-0.0003563925 +19860000,mag,0.007955662,-0.2166738,0.42426133 +19860000,imu,-0.17252016,0.20707212,-9.905027,-0.001822466,-0.0015234766,0.00045365142 +19864000,imu,-0.16619302,0.19832629,-9.922929,-0.0027868787,-0.0036245114,0.0007587714 +19868000,imu,-0.1328752,0.1850184,-9.9137535,7.6294324e-05,-0.003922607,-1.6789805e-05 +19872000,imu,-0.1478482,0.19237621,-9.908037,-0.00026322456,-0.0060050227,0.0005253522 +19872000,mag,0.015831882,-0.21485576,0.4311943 +19876000,imu,-0.16807681,0.19012904,-9.932646,-0.0037066857,-0.004319104,-0.00049385126 +19880000,imu,-0.17241907,0.18570286,-9.954605,-0.006242936,-0.005535108,0.0009949994 +19884000,mag,0.0068314048,-0.21985847,0.42904514 +19884000,imu,-0.17061988,0.17456372,-9.934422,-0.0053502033,-0.0059166877,0.0026052457 +19888000,imu,-0.15263739,0.16779906,-9.90349,-0.0040801535,-0.00270825,-0.0015809878 +19892000,imu,-0.1440725,0.17215429,-9.885011,-0.00050351233,-0.0036495337,-0.0043232036 +19896000,mag,0.013069944,-0.21669143,0.4285682 +19896000,baro,487.5582 +19896000,imu,-0.17514236,0.18012194,-9.877179,0.00143585,-0.0064781806,-0.0032371234 +19900000,imu,-0.19420335,0.197665,-9.892048,-0.0009758371,-0.0059497324,-0.0047065034 +19904000,imu,-0.20364481,0.16019419,-9.915463,1.2431747e-05,-0.0075095654,-0.006696218 +19908000,imu,-0.21866968,0.15545875,-9.912249,-0.0029242898,-0.00693646,-0.0008805427 +19908000,mag,0.013114833,-0.21955916,0.42924783 +19912000,imu,-0.21747032,0.20738076,-9.913977,-0.0040292,-0.0042659193,0.0009188268 +19916000,imu,-0.17077279,0.18323696,-9.926117,-0.0041758316,-0.0059460807,-0.00072624657 +19920000,imu,-0.16568865,0.15221772,-9.963603,-0.006012074,-0.0055354782,-0.00018260589 +19920000,mag,0.0070192954,-0.2149888,0.42616287 +19924000,imu,-0.17675737,0.16625176,-9.9597435,-0.0026062976,-0.0038182274,-0.0005156039 +19928000,imu,-0.15680763,0.19293807,-9.920746,-0.0012848334,-0.0028144144,0.0017489927 +19932000,mag,0.011141501,-0.2117967,0.43240517 +19932000,imu,-0.17867061,0.20173316,-9.92144,-0.0016585706,-0.0047209794,0.0030466667 +19936000,imu,-0.19514617,0.15560259,-9.937992,0.00013016173,-0.006343408,0.0007125256 +19940000,landed,1.0 +19940000,imu,-0.211054,0.13856372,-9.92899,-0.00036705242,-0.006523574,0.0006939167 +19944000,mag,0.017551217,-0.214526,0.42692593 +19944000,imu,-0.1820171,0.17428756,-9.907588,-0.005726809,-0.0065959627,0.0011974277 +19948000,imu,-0.16228265,0.1944063,-9.923052,-0.0051319315,-0.005746126,0.0023316622 +19952000,imu,-0.21842322,0.18251926,-9.9589405,-0.0047038547,-0.003857072,0.0045444616 +19956000,mag,0.008993434,-0.21750876,0.43081367 +19956000,imu,-0.21886656,0.18247241,-9.940115,-0.00464789,-0.0044566314,0.002053853 +19960000,imu,-0.18301637,0.20385179,-9.912888,-0.0006084881,-0.005577744,0.0013434519 +19964000,imu,-0.17976332,0.2053439,-9.92948,-0.002900977,-0.0066510523,0.0018209387 +19968000,mag,0.0055207475,-0.22530764,0.43057188 +19968000,baro,487.52063 +19968000,imu,-0.18823367,0.17795189,-9.926216,-0.0026538977,-0.0069998642,0.0027649375 +19972000,imu,-0.1801713,0.1740911,-9.948819,0.00040843405,-0.0050608357,0.00040578184 +19976000,imu,-0.16368562,0.18676618,-9.927188,-0.0002271896,-0.0054075923,-0.00040842564 +19980000,imu,-0.17851982,0.1781673,-9.884817,-0.0013387818,-0.0058717215,-0.00029503534 +19980000,mag,0.015427002,-0.21518032,0.42853782 +19984000,imu,-0.1668089,0.18920101,-9.886524,-0.00015886786,-0.0057144607,-0.0031665685 +19988000,imu,-0.14190692,0.1708175,-9.897958,0.00026183765,-0.0053356984,-0.001574616 +19992000,mag,0.016107898,-0.21694909,0.42888182 +19992000,imu,-0.17779344,0.15032908,-9.8951435,-0.0023414828,-0.0044275685,0.0007913115 +19996000,imu,-0.20181744,0.19082849,-9.913815,-0.0044246456,-0.0024040046,-0.0013724155 +20000000,imu,-0.17527398,0.19132191,-9.952126,-0.005413239,-0.0005784254,-0.0039423937 +20000000,mag,0.015461464,-0.21397704,0.4299765 +20004000,imu,-0.1922172,0.16900484,-9.943079,-0.0047407732,-0.0032945368,-0.00082432467 +20008000,imu,-0.18640888,0.15413871,-9.941214,-0.0031303216,-0.0042441636,0.0023450425 +20012000,mag,0.014015575,-0.2181546,0.43182343 +20012000,imu,-0.13477665,0.16670124,-9.929973,-0.0026912275,-0.006381609,0.0021891724 +20016000,imu,-0.15700749,0.18996397,-9.93758,-0.0016960342,-0.008343857,9.502402e-05 +20020000,imu,-0.20049205,0.2051515,-9.939899,-0.0017193534,-0.0033047006,0.0036426042 +20024000,imu,-0.2046597,0.17054236,-9.930521,-0.0012595272,-0.0008339278,0.0072932076 +20028000,mag,0.010663146,-0.22032365,0.4291265 +20028000,imu,-0.1840389,0.14499,-9.9623,-0.00029632702,-0.0026738935,0.00412965 +20032000,imu,-0.18509431,0.18106842,-9.983959,-9.904297e-05,-0.004887291,0.0012904321 +20036000,imu,-0.1903671,0.20472461,-9.955597,0.0011139933,-0.004364693,0.0026569052 +20040000,imu,-0.18655306,0.18719363,-9.916573,-9.845126e-05,-0.0052524554,0.0027773352 +20040000,baro,487.6521 +20040000,mag,0.011965669,-0.21671343,0.42882073 +20044000,imu,-0.1818791,0.1695327,-9.931774,0.0003575094,-0.005270138,-0.0002606483 +20048000,imu,-0.17434451,0.17894831,-9.940176,-0.00024336205,-0.0061094873,-0.0003099093 +20052000,mag,0.006826422,-0.21500953,0.43010357 +20052000,gps,488106.0,85456074.0,473977508.0,-0.01,0.0,0.02 +20052000,imu,-0.21274532,0.18134509,-9.929966,-0.0010681355,-0.006089108,-0.002438012 +20056000,imu,-0.22699109,0.182848,-9.958078,-0.00087979954,-0.0045429515,-0.001668963 +20060000,mag,0.012811917,-0.2170276,0.43892676 +20060000,imu,-0.20096973,0.17409803,-9.940403,-0.0014154437,-0.0054968246,-0.0012230383 +20064000,imu,-0.20603476,0.17467733,-9.917878,-0.00041814565,-0.005573951,-0.0011130457 +20068000,imu,-0.20066711,0.19619872,-9.933969,0.002083313,-0.008591654,0.0024301917 +20072000,imu,-0.16713291,0.18992789,-9.916626,0.00070788205,-0.008250265,0.0017932876 +20076000,mag,0.017525496,-0.20885354,0.4282355 +20076000,imu,-0.1770336,0.16352205,-9.912867,-0.004243752,-0.0095873,-0.00022214079 +20080000,imu,-0.2105942,0.17386569,-9.908306,-0.0049043545,-0.0067705214,-0.0032501018 +20084000,imu,-0.209829,0.15990582,-9.909393,-0.0014252118,-0.0076251137,-0.0014602613 +20088000,mag,0.0064325384,-0.2161586,0.42730245 +20088000,imu,-0.19253096,0.12647976,-9.925161,0.0026995803,-0.010926307,0.0038723696 +20092000,imu,-0.18502244,0.12618254,-9.926802,0.00024088442,-0.008751317,0.0045269094 +20096000,imu,-0.1857934,0.18707798,-9.912462,-0.002379296,-0.009907995,0.0033999882 +20100000,imu,-0.20545942,0.19847739,-9.899483,-0.0037588833,-0.009119378,0.0013355347 +20100000,mag,0.01001533,-0.21677785,0.4289172 +20104000,imu,-0.18709886,0.14478047,-9.929987,0.00025543745,-0.008194503,-0.0015780898 +20108000,imu,-0.18592457,0.17630483,-9.968672,0.0027136714,-0.0083165355,0.0006921355 +20112000,imu,-0.23092583,0.19422396,-9.945774,0.00030784387,-0.006000424,0.005079277 +20112000,baro,487.52533 +20112000,mag,0.015465517,-0.21997994,0.4310374 +20116000,imu,-0.22518334,0.16698502,-9.905914,0.00071947364,-0.0035644963,0.004087995 +20120000,imu,-0.19005097,0.17992167,-9.914184,-0.00091279973,-0.008420352,0.00033296418 +20124000,imu,-0.1686541,0.17491584,-9.941368,-0.0015390246,-0.008403723,0.0004060435 +20124000,mag,0.010036892,-0.21230307,0.4280135 +20128000,imu,-0.1658547,0.1749945,-9.952026,0.0012647428,-0.0030544894,0.0018686183 +20132000,imu,-0.16877308,0.17023885,-9.913969,0.001428718,-0.004545769,-0.0015724 +20132000,mag,0.00961626,-0.21465436,0.4226672 +20136000,imu,-0.17828561,0.14896935,-9.904212,-0.002902653,-0.008177825,-0.0018660801 +20140000,imu,-0.16848019,0.13573574,-9.921993,-0.0021620567,-0.008706172,-0.0014852879 +20144000,imu,-0.16949522,0.16543138,-9.905373,-9.8431934e-05,-0.007982515,-0.0021286784 +20148000,imu,-0.16938175,0.18077897,-9.881792,-0.00071855704,-0.0052288487,0.0013645007 +20148000,mag,0.009632904,-0.22079813,0.42742756 +20152000,imu,-0.16295528,0.144142,-9.896014,-0.0011275746,-0.0021411316,-6.744848e-06 +20156000,imu,-0.15789607,0.15876928,-9.923754,-0.00033108427,-0.00436036,-0.002702727 +20160000,imu,-0.14232981,0.1729114,-9.930132,-0.000772742,-0.0060104276,-0.0022302605 +20160000,mag,0.008367108,-0.21871422,0.43458703 +20164000,imu,-0.17898747,0.1668085,-9.920013,-0.00472418,-0.0065182443,-0.002738706 +20168000,imu,-0.20608072,0.1906143,-9.928567,-0.004642444,-0.0077767656,-0.0016842992 +20172000,imu,-0.16780701,0.20537229,-9.912352,-0.0014843403,-0.0079535935,0.0009765023 +20172000,mag,0.012082578,-0.21864286,0.42944783 +20176000,imu,-0.18185377,0.202804,-9.878458,3.276117e-05,-0.0073549342,0.0024266539 +20180000,imu,-0.2244812,0.19140649,-9.917948,-0.0004629004,-0.0062260614,0.0008012189 +20184000,imu,-0.2248889,0.18039884,-9.931447,-0.0016180759,-0.009415016,-0.0043857167 +20184000,baro,487.67087 +20184000,mag,0.014429993,-0.21075255,0.42793146 +20188000,imu,-0.20005071,0.17442779,-9.94867,-0.00092072185,-0.009606704,-0.0038640134 +20192000,imu,-0.1805318,0.1683814,-9.947758,-0.001508597,-0.007360937,0.00026275613 +20192000,mag,0.009090001,-0.21493177,0.42370257 +20196000,imu,-0.17468077,0.17804,-9.927624,0.0001970316,-0.0055181687,3.335569e-05 +20200000,imu,-0.16534793,0.19899088,-9.943092,0.00014335378,-0.004904019,-0.00045291812 +20204000,imu,-0.1572659,0.19199933,-9.933765,-0.002026467,-0.0067695556,0.0021883235 +20208000,mag,0.010366868,-0.22037913,0.43394148 +20208000,imu,-0.18119036,0.15093715,-9.956762,-0.0021917403,-0.0069698766,0.002623352 +20212000,imu,-0.2363747,0.18939249,-9.947815,-0.0041661644,-0.0075835376,0.00037150283 +20216000,imu,-0.21848416,0.22590537,-9.924631,-0.0046308786,-0.008878881,-0.0010334732 +20220000,mag,0.012292947,-0.21452428,0.43713236 +20220000,imu,-0.17051515,0.19953296,-9.930752,-0.00037516074,-0.006494477,-0.00087647943 +20224000,imu,-0.17154089,0.18265969,-9.932617,0.0007188078,-0.003071516,-0.00014659418 +20228000,imu,-0.16218519,0.1657086,-9.967859,-0.0020305635,-0.0027543944,-0.0010978935 +20232000,imu,-0.16247052,0.17101978,-9.954405,-0.0037996497,-0.004172536,-0.00052781956 +20232000,mag,0.010049592,-0.20980129,0.42957 +20236000,imu,-0.19643983,0.18331604,-9.913904,-0.0032596707,-0.005602658,0.0009654103 +20240000,mag,0.010953591,-0.20709181,0.42758957 +20240000,imu,-0.19302732,0.19217603,-9.901031,0.001692696,-0.004315146,0.0010127963 +20244000,imu,-0.18735108,0.18871716,-9.926426,0.0034351316,-0.0017374342,-0.0004730026 +20248000,imu,-0.18295184,0.1625892,-9.957237,0.0011929938,-0.0035033284,0.0016138109 +20252000,imu,-0.18601397,0.1840333,-9.957218,-0.001228868,-0.0039215577,0.0011304225 +20256000,imu,-0.17812932,0.20138912,-9.960251,-0.0035155993,-0.004913917,-0.0010964171 +20256000,mag,0.015520073,-0.21562995,0.427638 +20256000,baro,487.62863 +20260000,imu,-0.16230915,0.19406281,-9.952093,-0.0035879447,-0.0069498103,-0.00095280306 +20264000,imu,-0.18085194,0.19212341,-9.92721,-0.0013372655,-0.005705301,-0.0025289392 +20268000,mag,0.005732033,-0.21590787,0.43314835 +20268000,imu,-0.1833091,0.17244986,-9.898667,-0.0006635621,-0.0047483672,-0.0028783083 +20272000,imu,-0.20620383,0.1537294,-9.894655,-0.0017883019,-0.0036488865,0.00017825018 +20276000,imu,-0.19315116,0.16292526,-9.9303875,-0.0018978668,-0.004728421,0.003102888 +20280000,imu,-0.16803867,0.17916241,-9.945742,-0.0016404378,-0.004954762,0.0035957121 +20280000,mag,0.010760628,-0.21962254,0.42541316 +20284000,imu,-0.17599194,0.18160601,-9.941362,-0.0014424255,-0.0075735613,0.0021006009 +20288000,imu,-0.19807172,0.1874885,-9.939695,-0.0027171287,-0.005150566,0.0015153628 +20292000,mag,0.008267943,-0.21820913,0.4292068 +20292000,imu,-0.22347178,0.18555266,-9.952077,-0.0023150037,-0.0009141938,0.0011285722 +20296000,imu,-0.19244218,0.17712629,-9.965256,-0.004226891,-0.005444594,-0.0008100406 +20300000,imu,-0.14170608,0.18450236,-9.95225,-0.0046203122,-0.006480666,-0.0030105535 +20300000,mag,0.015217975,-0.21369503,0.42723593 +20304000,imu,-0.15297268,0.1673229,-9.929234,-0.0027685307,-0.008116568,-0.0010379762 +20308000,imu,-0.1816492,0.17857713,-9.9015875,-0.0034058732,-0.0064060073,0.0012163594 +20312000,imu,-0.18754345,0.20157908,-9.925974,-0.0033095495,-0.0034808277,0.0018283259 +20316000,imu,-0.21008027,0.18624155,-9.921245,-0.0011631812,-0.004088177,0.0019029928 +20316000,mag,0.012737813,-0.21514885,0.42226696 +20320000,imu,-0.21218699,0.17207585,-9.891698,-0.0015863216,-0.008297456,-0.0019252504 +20324000,imu,-0.21492659,0.15598886,-9.91272,-0.0014355708,-0.008924835,-0.0035503511 +20328000,mag,0.01247075,-0.21717006,0.42978626 +20328000,baro,487.53473 +20328000,imu,-0.2037316,0.1697038,-9.893084,2.369171e-05,-0.006648519,-0.001401811 +20332000,imu,-0.16924366,0.16864859,-9.866767,-0.0020797816,-0.008706751,-0.002158668 +20336000,imu,-0.18013614,0.17668831,-9.903411,-0.0013616409,-0.0070878244,-0.0019982185 +20340000,mag,0.0089044925,-0.21641655,0.42399013 +20340000,imu,-0.19832003,0.1960393,-9.9413185,-0.002365194,-0.005474069,0.0021888544 +20344000,imu,-0.19282052,0.18642242,-9.946857,-0.002295169,-0.006987726,-0.00031058528 +20348000,imu,-0.16879818,0.18250549,-9.952002,-0.0019280924,-0.00857869,-0.0006217891 +20352000,imu,-0.14243108,0.18754749,-9.9307995,-0.0030792553,-0.008577301,0.0010763489 +20352000,mag,0.00857833,-0.21247709,0.42810997 +20356000,imu,-0.15343687,0.20205024,-9.910558,-0.004509619,-0.009370371,0.00057493127 +20360000,imu,-0.19214585,0.19325258,-9.913782,-0.0033452357,-0.006265947,6.715724e-05 +20364000,imu,-0.18043655,0.19028889,-9.930863,-7.9304584e-05,-0.005875115,-0.0030309332 +20364000,mag,0.0017873755,-0.21868905,0.42712724 +20368000,imu,-0.18812665,0.18037009,-9.924342,-0.0014999944,-0.008949669,-0.005119451 +20372000,imu,-0.22893861,0.1671483,-9.91552,-0.0044317185,-0.0076011824,-0.0032047636 +20376000,mag,0.0064351503,-0.21653405,0.42599005 +20376000,imu,-0.19159678,0.17503408,-9.923858,-0.003545549,-0.005285762,0.0028078842 +20380000,imu,-0.17147654,0.15540682,-9.920988,-0.0006283964,-0.003123018,0.003207336 +20384000,imu,-0.18889345,0.17388064,-9.937922,-0.00338278,-0.0028743958,-0.0015591753 +20388000,imu,-0.184461,0.16747834,-9.960752,-0.0032518294,-0.0026368313,-0.0009677744 +20388000,mag,0.0062740264,-0.2091318,0.43328497 +20392000,imu,-0.17663682,0.16971193,-9.948059,0.00067130354,-0.0039563626,-0.00064620626 +20396000,imu,-0.17294468,0.21609338,-9.937824,-0.00044101724,-0.0066932607,-0.00071879197 +20400000,baro,487.6568 +20400000,mag,0.005879667,-0.21424249,0.43111232 +20400000,imu,-0.16093808,0.2039272,-9.932405,-0.0022560689,-0.007402223,0.0015369445 +20404000,imu,-0.16950905,0.17086212,-9.915573,-0.0027313253,-0.007112011,-2.1353135e-05 +20408000,imu,-0.17013915,0.19692628,-9.912904,-0.0021489123,-0.004348109,-0.0015585596 +20412000,mag,0.015200413,-0.22258268,0.42416748 +20412000,imu,-0.1657246,0.21293814,-9.912883,0.0007675482,-0.0055830264,0.00062087824 +20416000,imu,-0.16685355,0.16021171,-9.945196,0.0023411373,-0.009040618,0.00021235882 +20420000,imu,-0.185975,0.16288579,-9.944857,0.00025342,-0.0076534627,1.5848389e-05 +20424000,imu,-0.1976023,0.16176665,-9.9447,-0.0011961964,-0.006458735,0.0014708339 +20424000,mag,0.005314031,-0.21590458,0.4280094 +20428000,imu,-0.17362203,0.14826506,-9.951052,-0.001764061,-0.005990366,0.0028441572 +20432000,imu,-0.17426309,0.16079761,-9.918142,0.0010540455,-0.007288161,0.0009380927 +20436000,mag,0.013532285,-0.2175686,0.43119094 +20436000,imu,-0.18673846,0.15256174,-9.916459,0.0010526237,-0.009568741,-0.0011610761 +20440000,imu,-0.16329965,0.14107318,-9.916776,-0.004670735,-0.0088222865,0.004074843 +20444000,imu,-0.15211041,0.16094746,-9.886092,-0.0033216546,-0.009733205,0.0022741007 +20448000,imu,-0.18863055,0.15990312,-9.86579,-0.00045047494,-0.009170692,-0.0004374818 +20448000,mag,0.0128914835,-0.21579833,0.43150738 +20452000,gps,488113.0,85456074.0,473977508.0,0.0,0.0,-0.03 +20452000,imu,-0.21028402,0.1660115,-9.897348,-0.0044654924,-0.0059026983,0.0010488349 +20456000,imu,-0.20584914,0.1882509,-9.916702,-0.0053879456,-0.0062204716,-0.0015854774 +20460000,imu,-0.19394982,0.16803443,-9.91098,-0.0005358545,-0.006716338,-0.0038047065 +20460000,mag,0.009066283,-0.21246204,0.42713213 +20464000,imu,-0.19696873,0.1709491,-9.929195,-0.00024579905,-0.009096727,-0.004196345 +20468000,imu,-0.16603275,0.17425102,-9.939507,-0.0013797733,-0.0085848505,-0.0033572342 +20472000,mag,0.009087476,-0.2180479,0.43064144 +20472000,baro,487.6474 +20472000,imu,-0.17458615,0.18580727,-9.927799,0.00090498023,-0.0059330193,-0.0049172654 +20476000,imu,-0.20664278,0.16814148,-9.900311,0.00096310896,-0.005431509,-0.0027083568 +20480000,imu,-0.17274392,0.15657717,-9.924068,-9.206128e-05,-0.004241995,0.00132065 +20484000,imu,-0.1386008,0.17016032,-9.94089,-0.0013034107,-0.0073609045,0.0005207911 +20484000,mag,0.003965831,-0.2154648,0.42693853 +20488000,imu,-0.14864416,0.16625513,-9.959,-0.0009408923,-0.0083773825,-0.0018289287 +20492000,imu,-0.17933829,0.1534461,-9.96696,0.0011362397,-0.005017711,-0.0017075047 +20496000,mag,0.009185955,-0.21477343,0.42880294 +20496000,imu,-0.19611025,0.16787395,-9.936251,-0.00058631215,-0.0029149589,0.00039592132 +20500000,imu,-0.1989525,0.1950467,-9.949038,-0.0026528114,-0.0058747693,0.00036843037 +20504000,imu,-0.17334665,0.17726551,-9.968079,-0.0007189455,-0.008224374,-4.4945886e-05 +20508000,mag,0.008378621,-0.21190403,0.4256696 +20508000,imu,-0.17123094,0.12868907,-9.943893,-0.0039717485,-0.0075530442,-0.0016368893 +20512000,imu,-0.19868273,0.137701,-9.915621,-0.004015082,-0.0082812635,-0.0038401154 +20516000,imu,-0.20550331,0.18136613,-9.922874,-0.0013552346,-0.00669988,-0.0028046793 +20520000,imu,-0.1896796,0.19084835,-9.932211,-0.0047799572,-0.0066640708,-0.003159464 +20520000,mag,0.00688236,-0.2088657,0.43154564 +20524000,imu,-0.19020928,0.19393964,-9.947971,-0.002429948,-0.007086149,-0.0013852601 +20528000,imu,-0.2231847,0.19200586,-9.965235,6.3080435e-05,-0.0058921855,0.0041702962 +20532000,imu,-0.19105572,0.20925689,-9.951447,-0.0016232793,-0.0075957747,0.005009339 +20532000,mag,0.013389319,-0.21997333,0.42847332 +20536000,imu,-0.15671763,0.20060076,-9.934458,-0.0030388688,-0.009532472,0.0025872681 +20540000,imu,-0.17678025,0.16059555,-9.930347,-0.0047820513,-0.011861844,-0.0031717168 +20544000,baro,487.68027 +20544000,imu,-0.1681593,0.13956581,-9.938572,-0.0045646536,-0.009293219,-0.001710333 +20544000,mag,0.01210823,-0.21653819,0.43224066 +20548000,imu,-0.1835455,0.13520388,-9.957865,-0.002302332,-0.009040027,0.0022981514 +20552000,imu,-0.19069792,0.14200874,-9.9200115,-0.0019140309,-0.008658336,0.0003080742 +20556000,imu,-0.17352019,0.15839039,-9.907439,-0.0021293215,-0.005128433,0.0004685446 +20556000,mag,0.008097888,-0.2170127,0.42844278 +20560000,imu,-0.20199832,0.19355808,-9.928182,0.0015880407,-0.005302433,0.00011436247 +20564000,mag,0.006412999,-0.21686882,0.43379492 +20564000,imu,-0.20041266,0.19470887,-9.915939,-0.001700852,-0.0070805713,-0.00091665715 +20568000,imu,-0.17496482,0.15689835,-9.920342,-0.005796591,-0.007556539,6.86952e-05 +20572000,imu,-0.19411469,0.1678141,-9.947601,-0.0034380218,-0.00308286,0.0013743875 +20576000,imu,-0.19907624,0.17047888,-9.934399,-0.0014053596,-0.004173786,0.0012350014 +20580000,imu,-0.17001402,0.13776405,-9.947797,0.0019980883,-0.005550901,0.00070493395 +20580000,mag,0.006478826,-0.21113236,0.42782053 +20584000,imu,-0.15250233,0.14059067,-9.950693,-0.0014574692,-0.006436375,-0.00018635216 +20588000,imu,-0.16539264,0.16669855,-9.921327,-0.002402707,-0.005796136,-0.0012105636 +20592000,mag,0.012504129,-0.21198511,0.42841408 +20592000,imu,-0.20453133,0.17471926,-9.921121,-0.0012841909,-0.0047893897,-0.0036380803 +20596000,imu,-0.20730239,0.18486169,-9.900637,-0.0044632372,-0.0054697655,-0.0037022515 +20600000,imu,-0.1617297,0.17157085,-9.9157295,-0.0003918101,-0.0053637754,0.00013840587 +20604000,mag,0.010061165,-0.21577647,0.4398086 +20604000,imu,-0.14696702,0.15190603,-9.931231,0.003403595,-0.0070591886,0.0010706515 +20608000,imu,-0.15701073,0.18186904,-9.9451885,0.0012006045,-0.0070155654,0.0020173774 +20612000,imu,-0.17109351,0.17134875,-9.954363,-0.00012943902,-0.008042456,0.0029308961 +20616000,mag,0.007289825,-0.21801727,0.4322813 +20616000,baro,487.53003 +20616000,imu,-0.17791125,0.15548597,-9.947098,-0.0010745202,-0.0084031485,0.00013535327 +20620000,imu,-0.18899117,0.15859155,-9.946052,0.00024661567,-0.007358537,-0.003146246 +20624000,imu,-0.18221025,0.18893926,-9.947121,0.00027400872,-0.0049939705,-0.0033647032 +20628000,imu,-0.18641862,0.19098851,-9.947546,-0.002499419,-0.0044286037,-0.0019068851 +20628000,mag,0.014565329,-0.2187182,0.43028527 +20632000,imu,-0.1848723,0.15841253,-9.926979,-0.00073625945,-0.004076701,-0.0022679826 +20636000,imu,-0.15254563,0.16299087,-9.912426,-0.0022389963,-0.0037694362,-0.0037370215 +20640000,imu,-0.17277296,0.16577756,-9.928248,-0.0041929116,-0.0057885493,-0.0028611056 +20640000,mag,0.004626912,-0.21682511,0.42900693 +20644000,imu,-0.2160047,0.16753742,-9.957092,-0.0022465868,-0.006983319,-0.0021041078 +20648000,imu,-0.2055525,0.15308748,-9.937681,-0.002059978,-0.008633005,-0.00066332694 +20652000,imu,-0.18796623,0.16204928,-9.917768,-0.0033193224,-0.007920188,0.0006619075 +20652000,mag,0.011896282,-0.21660689,0.42972547 +20656000,imu,-0.18009484,0.1604583,-9.935619,-0.0018976952,-0.007407731,-0.001105754 +20660000,imu,-0.20018996,0.17890817,-9.899723,-0.0027611314,-0.009072708,-0.001058893 +20664000,imu,-0.20617375,0.19754916,-9.902643,-0.003827206,-0.009021551,0.00042815122 +20664000,mag,0.013819799,-0.21091448,0.42353892 +20668000,imu,-0.20300457,0.15418215,-9.944412,-0.0028162005,-0.009845696,0.000818286 +20672000,imu,-0.21976168,0.14500555,-9.905059,-0.003156682,-0.007322924,0.0002775684 +20676000,mag,0.011561634,-0.21485277,0.42258587 +20676000,imu,-0.20057991,0.20032935,-9.904846,-0.00010043652,-0.006339464,-0.0019539252 +20680000,imu,-0.1736241,0.2127799,-9.942587,0.00060484663,-0.009071178,-0.00090355205 +20684000,imu,-0.15877447,0.15079999,-9.967543,0.0015997378,-0.006324937,0.0035949002 +20684000,mag,0.006231013,-0.21091712,0.43588993 +20688000,baro,487.5676 +20688000,imu,-0.17666405,0.1647816,-9.956251,7.092244e-06,-0.0050170063,0.0037955397 +20692000,imu,-0.154742,0.20653142,-9.895248,-0.0045959973,-0.00416948,-7.018119e-05 +20696000,imu,-0.1623584,0.19610415,-9.878284,-0.005004349,-0.00475878,-0.001405051 +20700000,mag,0.0061455686,-0.21476598,0.42608663 +20700000,imu,-0.1843328,0.17754398,-9.931759,5.8104164e-05,-0.0067454567,-2.8072366e-06 +20704000,imu,-0.15804885,0.16192463,-9.931423,0.00041346624,-0.00720842,0.00012100222 +20708000,imu,-0.14215016,0.16313228,-9.882311,-0.0002721052,-0.0074769496,0.0012572382 +20712000,imu,-0.18982401,0.16527726,-9.925011,0.002611883,-0.00621595,0.0006672792 +20712000,mag,0.010899144,-0.2155216,0.43130505 +20716000,imu,-0.21057978,0.18425581,-9.953847,-0.00063724077,-0.0074672843,0.00010543445 +20720000,imu,-0.18540733,0.2009952,-9.934828,-0.0010447226,-0.0076004206,0.0009188458 +20724000,imu,-0.18345284,0.18765192,-9.942378,-0.0014883991,-0.005960392,0.0011549285 +20724000,mag,0.0081812525,-0.2183947,0.42988616 +20728000,imu,-0.18314368,0.1562764,-9.952171,-0.003034439,-0.005662046,-8.6674016e-05 +20732000,imu,-0.16819829,0.17364967,-9.945686,-0.0028542285,-0.007101971,-0.0013189571 +20736000,imu,-0.1557714,0.19848049,-9.946407,-0.0015903349,-0.0050568925,-0.001554346 +20736000,mag,0.013623278,-0.21908452,0.42795175 +20740000,imu,-0.17623132,0.18714543,-9.935846,0.0006877381,-0.0035016714,-0.0035735187 +20744000,imu,-0.18116161,0.17925884,-9.911531,-0.00065078586,-0.004554745,-0.0014509629 +20748000,imu,-0.1680283,0.19476032,-9.888623,-0.0011663953,-0.0053696027,0.0005436283 +20748000,mag,0.010268058,-0.21685456,0.42778367 +20752000,imu,-0.16409048,0.22131945,-9.918467,-0.0006398114,-0.0054182988,-0.004135159 +20756000,imu,-0.19819368,0.20453401,-9.947136,-0.0014757958,-0.003594787,-0.00414803 +20760000,baro,487.66617 +20760000,mag,0.014540307,-0.21295708,0.43018502 +20760000,imu,-0.22295707,0.18226333,-9.939202,-9.620132e-05,-0.001000283,-0.0011113108 +20764000,imu,-0.19500804,0.1627877,-9.940432,0.0003489654,-0.0039035317,-0.00068981387 +20768000,imu,-0.17209816,0.15269728,-9.938244,0.00060385064,-0.0062824325,0.001032281 +20772000,mag,0.008752048,-0.21354796,0.42601737 +20772000,imu,-0.17251839,0.17203501,-9.912925,0.00060058053,-0.005942409,0.00019508238 +20776000,imu,-0.18971339,0.18925817,-9.914125,-6.244605e-05,-0.00862924,0.0005714515 +20780000,imu,-0.1944966,0.18299218,-9.942332,0.00021746427,-0.0083483625,0.002237937 +20784000,mag,0.012409257,-0.20775159,0.42049804 +20784000,imu,-0.19751258,0.1738737,-9.902578,-0.0013773176,-0.0070435475,0.0008770081 +20788000,imu,-0.20328793,0.17506027,-9.903643,-0.0015364201,-0.0060937633,0.0021330072 +20792000,imu,-0.18599169,0.1762432,-9.950401,-0.0009407573,-0.0068319533,0.003013495 +20796000,imu,-0.21643645,0.18123405,-9.9810705,-0.0021507004,-0.0071878023,-0.00041721534 +20796000,mag,0.014274861,-0.21678324,0.42234266 +20800000,imu,-0.22357556,0.20436473,-9.966784,-0.0019253462,-0.0050822757,-0.0013098933 +20804000,imu,-0.19571072,0.19065996,-9.931402,-0.0023249865,-0.006327234,0.0010287304 +20808000,mag,0.005460442,-0.21831708,0.43454382 +20808000,imu,-0.15218267,0.15597722,-9.922995,-0.002789981,-0.0042400174,-0.0027004008 +20812000,imu,-0.13771795,0.16015567,-9.885222,-0.0006413436,-0.0017269596,-0.0062086806 +20816000,imu,-0.20895228,0.16498159,-9.888258,-0.001544726,-0.007320644,-0.0011010641 +20820000,mag,0.011049269,-0.21288505,0.4333115 +20820000,imu,-0.22871943,0.17787866,-9.899885,-0.000852942,-0.010135028,0.0015587694 +20824000,imu,-0.22133741,0.17516051,-9.891464,-0.003751901,-0.0052466085,-0.00037191468 +20828000,imu,-0.2187159,0.16949633,-9.943628,-0.006301616,-0.0032710636,-0.0012615059 +20832000,mag,0.012664872,-0.21361813,0.43098685 +20832000,imu,-0.19463387,0.17268695,-9.929588,-0.004229251,-0.007413195,-0.0034781499 +20832000,baro,487.62863 +20836000,imu,-0.2011463,0.15749894,-9.916758,-0.0018488336,-0.0066479915,-0.003700939 +20840000,imu,-0.21274108,0.16246289,-9.9527,0.00036697244,-0.0068924674,-0.00045019694 +20844000,imu,-0.22479492,0.17997903,-9.941228,-0.0012022546,-0.008777956,0.00092465885 +20844000,mag,0.01210177,-0.20845068,0.42843947 +20848000,gps,488100.0,85456075.0,473977508.0,0.0,0.0,-0.01 +20848000,imu,-0.21701087,0.17194436,-9.920728,0.00016097001,-0.009150464,-0.00052299735 +20852000,imu,-0.20906553,0.1600404,-9.935972,-0.00079813326,-0.0094650155,0.0011606478 +20856000,imu,-0.19196191,0.16081631,-9.958269,-0.0026746357,-0.005266114,0.0033008712 +20856000,mag,0.010535749,-0.22294122,0.43203026 +20860000,imu,-0.17623657,0.17203121,-9.958597,-0.0021608134,-0.002337865,0.001094014 +20864000,imu,-0.22119105,0.1816082,-9.966293,-0.00015508715,-0.0021823498,-0.0002735301 +20868000,mag,0.008646853,-0.2205985,0.42799082 +20868000,imu,-0.22416139,0.17811705,-9.939461,0.00229452,-0.0034718597,-0.0011991516 +20872000,imu,-0.19096133,0.19144867,-9.916655,0.0015322088,-0.003963563,-0.0014802943 +20876000,imu,-0.17069376,0.21005912,-9.912467,0.0023621956,-0.0052161124,0.0025875955 +20880000,mag,0.018685661,-0.21417251,0.4365428 +20880000,imu,-0.16653717,0.19951057,-9.911232,-0.00058032497,-0.0058692577,0.004619988 +20884000,imu,-0.16133961,0.17080279,-9.929989,-0.0024109283,-0.0057927137,0.0006522501 +20888000,imu,-0.18155497,0.15629426,-9.9210415,-0.0016854652,-0.0051055914,-0.0025854937 +20892000,imu,-0.20199864,0.19305533,-9.914022,-0.005857703,-0.0049519404,-0.0016811059 +20892000,mag,0.01561735,-0.21670283,0.4242995 +20896000,imu,-0.18045866,0.19452979,-9.913497,-0.0073356996,-0.007977831,0.00023367118 +20900000,imu,-0.17830293,0.14041615,-9.919624,-0.00039092597,-0.007305438,0.0018049319 +20904000,imu,-0.20509228,0.1535064,-9.922697,0.0043722955,-0.004921443,0.00040054423 +20904000,baro,487.60983 +20904000,mag,0.007964894,-0.20950384,0.43231127 +20908000,imu,-0.23133221,0.20059569,-9.916675,0.001963931,-0.007137694,-1.8384279e-05 +20912000,imu,-0.21185455,0.18481664,-9.926699,0.00066182524,-0.011013611,0.0019480808 +20916000,mag,0.012256975,-0.21176612,0.43108916 +20916000,imu,-0.16931957,0.17927423,-9.926989,0.0025027182,-0.009084838,0.0025244518 +20920000,imu,-0.17632884,0.18329194,-9.922499,0.0019161158,-0.004554947,0.0015124524 +20924000,imu,-0.18706866,0.16828057,-9.935177,-0.0023988828,-0.0034382914,0.0014063527 +20928000,mag,0.00033556623,-0.20941076,0.4303015 +20928000,imu,-0.17075035,0.1905792,-9.945439,-0.0034514947,-0.0056969323,0.0007650309 +20932000,imu,-0.19064939,0.19087376,-9.939856,-0.0017258839,-0.004449118,0.0013217984 +20936000,imu,-0.18603528,0.16232741,-9.946125,0.00060339324,-0.0032221938,0.0045969393 +20940000,mag,0.0130635435,-0.21518745,0.42856213 +20940000,landed,1.0 +20940000,imu,-0.16595617,0.17499661,-9.939074,-0.0011349984,-0.0037615618,0.0025416496 +20944000,imu,-0.18010664,0.19120835,-9.90386,-0.0027066513,-0.0048434827,-0.0004176895 +20948000,imu,-0.17668122,0.18575808,-9.897701,-0.0017801026,-0.008278326,-0.002694793 +20952000,imu,-0.19550589,0.1701722,-9.8925495,-0.0027129303,-0.0063104047,-0.0027063184 +20952000,mag,0.008474233,-0.21481155,0.4344626 +20956000,imu,-0.19152537,0.170729,-9.917769,-0.0015872162,-0.004779072,-0.0015183704 +20960000,imu,-0.14122018,0.19614749,-9.918568,-0.00043153128,-0.006934442,0.00026969993 +20964000,mag,0.008669992,-0.20831299,0.4300069 +20964000,imu,-0.16189563,0.18685177,-9.888658,-0.001367616,-0.006296288,0.0006941791 +20968000,imu,-0.22262874,0.1772867,-9.940693,-0.0006575898,-0.008044275,-0.0018261943 +20972000,imu,-0.23308809,0.20634861,-9.929367,-0.00020807823,-0.00671023,0.0019180991 +20976000,mag,0.008788939,-0.22333132,0.4246757 +20976000,baro,487.59106 +20976000,imu,-0.2268445,0.19639179,-9.895136,-0.00021357369,-0.002604139,0.0022911555 +20980000,imu,-0.2222519,0.1575532,-9.928004,-0.0015841085,-0.0039483956,-0.0014524326 +20984000,imu,-0.18890771,0.17396453,-9.958186,-0.0054115728,-0.005911809,-0.0006198325 +20988000,mag,0.012650811,-0.21373646,0.42931497 +20988000,imu,-0.21385829,0.18870862,-9.938738,-0.0051032,-0.006395831,-0.0023493841 +20992000,imu,-0.21260144,0.17035979,-9.93569,-0.004598352,-0.006814555,-0.0029518867 +20996000,imu,-0.19007218,0.17042892,-9.928252,-0.0044452394,-0.0070235995,-0.00074582524 +21000000,mag,0.013109666,-0.21695207,0.4279191 +21000000,imu,-0.19954416,0.17138539,-9.924495,-0.002735076,-0.004161797,-0.0004093203 +21004000,imu,-0.18011451,0.16704792,-9.915611,-0.0027208703,-0.0044609937,-0.0029625017 +21008000,imu,-0.18629192,0.18228664,-9.890234,-0.0018349307,-0.005915846,-0.0065124524 +21012000,imu,-0.21224031,0.17828964,-9.930664,0.00082975934,-0.0056255367,-0.002149837 +21012000,mag,0.01246033,-0.22076473,0.42156208 +21016000,imu,-0.21311617,0.16775335,-9.952056,0.0005356664,-0.00891169,0.00039953607 +21020000,imu,-0.17875628,0.14204624,-9.927399,0.00028649683,-0.009392834,-0.00063368684 +21024000,mag,0.014773498,-0.2112095,0.42947727 +21024000,imu,-0.17504407,0.14918077,-9.878894,-0.0022099696,-0.0063542887,0.00011427724 +21028000,imu,-0.21018,0.19231038,-9.918045,-0.001608902,-0.003247614,0.00015034137 +21032000,imu,-0.20012236,0.19510078,-9.937379,-0.00039876797,-0.003929053,-0.0004896914 +21036000,mag,0.011037392,-0.21877754,0.4283761 +21036000,imu,-0.1766626,0.18244323,-9.919993,-0.0024113185,-0.0068400064,-0.0024975778 +21040000,imu,-0.16713268,0.15171456,-9.930168,0.00024133183,-0.004006047,-0.00085249386 +21044000,imu,-0.18671013,0.13553816,-9.905167,-0.00074566226,-0.0013305045,0.00025374538 +21048000,baro,487.6521 +21048000,mag,0.0058903876,-0.21175823,0.43176264 +21048000,imu,-0.21426716,0.14893058,-9.910391,-0.0004403971,-0.00473815,-0.0012940991 +21052000,imu,-0.22887233,0.1827853,-9.913135,0.0011464893,-0.008290469,-0.00065268273 +21056000,imu,-0.22029006,0.18056068,-9.914063,-0.00032857797,-0.007551336,0.0013386112 +21060000,mag,0.0082859425,-0.2160076,0.42990345 +21060000,imu,-0.19443187,0.15560575,-9.93466,-0.0012703703,-0.007109079,0.00023672052 +21064000,imu,-0.18614116,0.16152297,-9.943265,-0.0011680431,-0.0069591627,-0.0011449803 +21068000,imu,-0.15430054,0.14502476,-9.943172,-0.0007327509,-0.0039024067,-4.561658e-05 +21072000,mag,0.011750364,-0.21633312,0.42921162 +21072000,imu,-0.17085531,0.15562059,-9.944651,-3.898317e-05,-0.005613614,0.00081668235 +21076000,imu,-0.20054168,0.16544905,-9.921261,-0.0011004593,-0.0059067523,-0.0011157091 +21080000,imu,-0.20909292,0.15434955,-9.893892,-0.0027994853,-0.004409902,-0.0010314516 +21084000,imu,-0.22477958,0.1721747,-9.925872,-0.0030313686,-0.0068069594,-0.002929929 +21084000,mag,0.009482308,-0.21961866,0.4276573 +21088000,imu,-0.2056897,0.21294206,-9.956398,-0.0013256978,-0.007902222,-0.0050389124 +21092000,imu,-0.18033,0.20700654,-9.933384,0.0007795519,-0.0029133102,0.001947514 +21096000,mag,0.010763128,-0.21897273,0.4320394 +21096000,imu,-0.15223143,0.1758075,-9.934303,-0.0010450906,-0.0024108086,0.0042935624 +21100000,imu,-0.1669358,0.1713054,-9.902065,-0.0041735196,-0.009653246,-0.0012098001 +21104000,imu,-0.19969243,0.16910501,-9.858589,-0.0032363802,-0.010834858,-0.0015249251 +21108000,mag,0.008773259,-0.22204736,0.43225557 +21108000,imu,-0.21109265,0.18530795,-9.881834,-0.0003547243,-0.004589204,-0.0025108655 +21112000,imu,-0.23936671,0.17494598,-9.932889,-0.0017554684,-0.0030960275,-0.0029879317 +21116000,imu,-0.19561762,0.1585992,-9.9327755,-0.0023047184,-0.004812134,-0.00095764356 +21120000,imu,-0.1664967,0.16497439,-9.945095,0.0009013796,-0.0035826445,-0.0018888203 +21120000,baro,487.67087 +21120000,mag,0.009064443,-0.21175212,0.42110935 +21124000,imu,-0.18797757,0.13573287,-9.948128,-0.0005533619,-0.0061650597,-0.00069691543 +21128000,imu,-0.17417635,0.14741671,-9.925907,-0.0025477712,-0.008383476,0.0016318724 +21132000,imu,-0.14178696,0.17973103,-9.928574,-0.002084547,-0.00848091,0.00040851295 +21132000,mag,0.007207548,-0.21864475,0.42705587 +21136000,imu,-0.13120499,0.13834387,-9.9195,-0.0002778791,-0.006489464,-0.0014854155 +21140000,imu,-0.15247983,0.16453727,-9.922032,-0.0011769322,-0.0037337204,0.003749293 +21144000,imu,-0.18849374,0.19271441,-9.921648,-0.0019493727,-0.004533451,0.004969391 +21144000,mag,0.0075563905,-0.21349865,0.42718008 +21148000,imu,-0.1951046,0.15913571,-9.921425,-0.0009893377,-0.0058602495,-0.0012018833 +21152000,imu,-0.16005927,0.15643811,-9.91173,-0.0027016231,-0.0059764795,-0.002685588 +21156000,imu,-0.16614085,0.20908625,-9.914696,-0.004396707,-0.006324544,-0.0024622 +21156000,mag,0.010778367,-0.21031009,0.42792714 +21160000,imu,-0.19920933,0.21018319,-9.935558,-0.0027463555,-0.0050843046,-0.00134028 +21164000,imu,-0.19179553,0.16615109,-9.922362,0.0019113768,-0.0053534694,-7.265467e-06 +21168000,imu,-0.17603818,0.15737203,-9.908855,0.0030949437,-0.005424011,0.00051941926 +21168000,mag,0.00922005,-0.21341872,0.42772174 +21172000,imu,-0.19130161,0.16891116,-9.924047,0.002173762,-0.006164835,0.0023218696 +21176000,imu,-0.19078584,0.18479562,-9.919144,0.00059219426,-0.006618917,0.0014229609 +21180000,mag,0.009688894,-0.21752137,0.43094072 +21180000,imu,-0.16433921,0.18841894,-9.92324,-0.0041547734,-0.006621173,-0.0027943696 +21184000,imu,-0.16300336,0.17777011,-9.931023,-0.0011312395,-0.008460305,-0.0033186479 +21188000,imu,-0.17335412,0.20953451,-9.939106,0.0013843945,-0.0067991945,0.0010591766 +21192000,mag,0.007903723,-0.21614979,0.43278363 +21192000,baro,487.5488 +21192000,imu,-0.17184032,0.20671068,-9.919781,-0.001598591,-0.007083317,5.972732e-05 +21196000,imu,-0.20400766,0.15764278,-9.897718,0.0013441886,-0.008237032,-0.0023120118 +21200000,imu,-0.23663622,0.15806687,-9.941633,0.0019615311,-0.0062500136,-0.0017318439 +21204000,mag,0.013804133,-0.21391307,0.4336402 +21204000,imu,-0.21046111,0.15874831,-9.958771,-0.0024717036,-0.0054451036,3.6972774e-06 +21208000,imu,-0.19942963,0.16072066,-9.934486,-0.0026162928,-0.0063521313,-0.0013033879 +21212000,imu,-0.18364018,0.19221568,-9.93464,-2.997308e-06,-0.007325231,-0.004331789 +21216000,imu,-0.17305008,0.2020025,-9.941561,-0.00041103267,-0.0046640616,-0.00017874915 +21216000,mag,0.012127602,-0.21344429,0.4299168 +21220000,imu,-0.21171471,0.16425475,-9.928518,0.00072949036,-0.0041226777,0.0024855915 +21224000,imu,-0.22372311,0.14452176,-9.912352,-0.0008624183,-0.0062648808,0.0018454843 +21228000,mag,0.013660418,-0.20607075,0.43627018 +21228000,imu,-0.1940816,0.14850603,-9.920483,-0.0022161338,-0.0078928955,-0.00092173833 +21232000,imu,-0.19938946,0.15647635,-9.923359,0.00042813964,-0.007496208,-0.003272781 +21236000,imu,-0.20415422,0.18348481,-9.911879,-0.0029806837,-0.003358232,-0.0023164018 +21240000,imu,-0.21316211,0.21260147,-9.886618,-0.0014418698,-0.004861494,-0.00041886297 +21240000,mag,0.016176915,-0.21892774,0.4286 +21244000,imu,-0.20816338,0.19432437,-9.891687,-3.0268178e-05,-0.004316473,0.0008976435 +21248000,imu,-0.17521733,0.17301808,-9.920583,-0.00020471802,-0.0020295398,-0.0003603789 +21252000,imu,-0.15909381,0.1673573,-9.929068,0.0021301552,-0.0049468866,-0.0018657552 +21252000,mag,0.008890422,-0.21436925,0.42919272 +21252000,gps,488097.0,85456074.0,473977508.0,0.0,0.01,-0.02 +21256000,imu,-0.17239527,0.17111228,-9.953645,-0.0019934622,-0.0065471106,-0.0029516583 +21260000,imu,-0.20469278,0.17672218,-9.947847,-0.0022655255,-0.007109561,-0.0038660374 +21264000,mag,0.012861926,-0.2167624,0.4291506 +21264000,baro,487.60513 +21264000,imu,-0.19726649,0.17922261,-9.947074,0.0011696989,-0.007473797,-0.002271717 +21268000,imu,-0.1794246,0.18664858,-9.954536,0.001290971,-0.006269615,-0.00029087672 +21272000,imu,-0.19340003,0.18353148,-9.920186,0.0006238658,-0.0058465037,-0.0049295616 +21276000,mag,0.012427604,-0.21746804,0.43396294 +21276000,imu,-0.22837006,0.1720735,-9.906277,0.0005337859,-0.006459613,-0.0047264933 +21280000,imu,-0.22271055,0.17637901,-9.912806,-0.0011773199,-0.004730837,0.0018122853 +21284000,imu,-0.2110374,0.18255341,-9.874347,-0.0006257292,-0.005587746,-0.00012950279 +21288000,imu,-0.2252952,0.1615304,-9.870501,0.0019543462,-0.009017432,0.0020654302 +21288000,mag,0.014608287,-0.21884778,0.42729506 +21292000,imu,-0.22890511,0.19310167,-9.935099,0.0011298131,-0.0075520277,0.006630131 +21296000,imu,-0.20194477,0.1936169,-9.926422,-0.0025087204,-0.0062208544,0.0005855082 +21300000,imu,-0.17901501,0.1336473,-9.923549,-0.0018377719,-0.0042964667,-0.0036172995 +21300000,mag,0.0066899057,-0.22697045,0.4318623 +21304000,imu,-0.20457694,0.15653336,-9.924313,-0.0014069413,-0.003179068,-0.0010900312 +21308000,imu,-0.21643889,0.17315853,-9.911718,-0.0011467594,-0.0064884303,0.0008201207 +21312000,mag,0.00090683805,-0.21399416,0.42065457 +21312000,imu,-0.1895972,0.15490079,-9.941038,-0.0017866566,-0.0074168793,0.0029574728 +21316000,imu,-0.2005301,0.18325806,-9.9275465,-0.0025113148,-0.0042745885,0.0019446175 +21320000,imu,-0.2100846,0.19110535,-9.916552,-0.0006219145,-0.0052368916,-0.0034781212 +21324000,mag,0.009048796,-0.21487522,0.42772543 +21324000,imu,-0.17306897,0.18316793,-9.917462,0.0012058193,-0.0073113986,-0.0033954685 +21328000,imu,-0.17294571,0.20360766,-9.935179,0.0019264417,-0.0051613403,-0.0012253855 +21332000,imu,-0.17932318,0.20123713,-9.948988,0.0005313687,-0.005846176,0.00041213626 +21336000,baro,487.66617 +21336000,imu,-0.15267034,0.17371374,-9.926325,-0.0009305394,-0.007448373,0.0010194734 +21336000,mag,0.010430559,-0.21305065,0.4299092 +21340000,imu,-0.15938234,0.15906253,-9.88369,-0.0012118245,-0.004606625,0.0012191052 +21344000,imu,-0.18824407,0.15001908,-9.892353,-0.0027652115,-0.0035744305,-1.6866556e-05 +21348000,imu,-0.22049592,0.12372184,-9.915306,-0.0032954908,-0.0033063807,-0.001858766 +21348000,mag,0.011829117,-0.2155865,0.43313375 +21352000,imu,-0.21949172,0.14898758,-9.894604,-0.0048883106,-0.004634383,-0.0009274639 +21356000,imu,-0.18339525,0.2016061,-9.904726,-0.0036867566,-0.010171082,-0.00080756575 +21360000,mag,0.012693288,-0.21434142,0.4303176 +21360000,imu,-0.18273804,0.18077804,-9.919506,0.0029228274,-0.0094448095,0.0010359135 +21364000,imu,-0.22351635,0.16441011,-9.9087105,0.00091486576,-0.0041267807,0.001430297 +21368000,imu,-0.20846719,0.19482811,-9.921603,-0.0009843581,-0.0018855678,0.00096758606 +21372000,mag,0.012645639,-0.21438318,0.4297763 +21372000,imu,-0.17985162,0.20496005,-9.914457,0.0025016367,-0.005348114,0.0036230083 +21376000,imu,-0.20660913,0.16910535,-9.891528,8.849774e-05,-0.008409011,0.0010106723 +21380000,imu,-0.19953278,0.14520578,-9.939701,-0.003353513,-0.0058875713,-0.0016966719 +21384000,mag,0.0060616513,-0.2143906,0.42916608 +21384000,imu,-0.17275327,0.16745542,-9.936427,-0.0030743987,-0.0039953818,-0.0011841306 +21388000,imu,-0.20222743,0.18529037,-9.921863,-0.0018723841,-0.005320515,0.0022439458 +21392000,imu,-0.19309449,0.18156134,-9.949842,0.00082377665,-0.0067886882,0.00381347 +21396000,mag,0.012259306,-0.21715677,0.4349031 +21396000,imu,-0.17053652,0.17461509,-9.904495,0.00047646736,-0.0052493303,-0.0014713564 +21400000,imu,-0.19457445,0.18990189,-9.844133,-0.0012405885,-0.00580258,-0.0008179112 +21404000,imu,-0.18189847,0.19565098,-9.893114,-0.0030605155,-0.008561746,-0.0012302349 +21408000,baro,487.61923 +21408000,imu,-0.15453433,0.21593304,-9.938368,-0.00015746224,-0.007348673,-0.004886335 +21408000,mag,0.012499615,-0.21975987,0.42740083 +21412000,imu,-0.1568895,0.1997217,-9.931717,0.0010662876,-0.006778781,-0.0012976484 +21416000,imu,-0.20850989,0.17751342,-9.942361,-0.0049080616,-0.00834357,0.0047544516 +21420000,imu,-0.2166185,0.18894145,-9.878298,-0.0039946707,-0.005660774,0.004054468 +21420000,mag,0.011992918,-0.21839625,0.4288117 +21424000,imu,-0.16866815,0.1691487,-9.875433,-0.0010651258,-0.0015622086,0.0010439032 +21428000,imu,-0.18301451,0.15318736,-9.950009,-0.00032597317,-0.0043569924,0.0010091572 +21432000,imu,-0.2068264,0.15475795,-9.940465,-2.2061055e-05,-0.0074016866,-0.0004682761 +21432000,mag,0.0030263388,-0.21259888,0.431717 +21436000,imu,-0.17692849,0.1661408,-9.9631195,3.8659724e-05,-0.0050049606,0.0013591631 +21440000,imu,-0.17615253,0.18297555,-9.944048,-0.0021814897,-0.006456378,0.0021746145 +21444000,imu,-0.1847608,0.19491686,-9.890828,-0.004450567,-0.010059632,0.00063295587 +21444000,mag,0.01290411,-0.21399269,0.43408477 +21448000,imu,-0.1803025,0.17322683,-9.927092,-0.003279826,-0.008716539,0.0032611785 +21452000,imu,-0.18824247,0.14516047,-9.949055,-6.7468856e-05,-0.0042939,0.00188644 +21456000,imu,-0.1992088,0.14705452,-9.9208,0.00010242372,-0.0013515335,-0.0024072032 +21456000,mag,0.012639996,-0.21935575,0.43465728 +21460000,imu,-0.18905833,0.15793522,-9.926842,-0.0032407178,-0.0047980505,-0.0026910168 +21464000,imu,-0.19370452,0.16940692,-9.941679,-0.0021927166,-0.00803179,-0.0012760933 +21468000,imu,-0.22343148,0.19099408,-9.921814,0.00022736046,-0.0044861906,-0.001779008 +21468000,mag,0.010162267,-0.21714206,0.42645937 +21472000,imu,-0.19757494,0.16118208,-9.900717,0.00085028185,-0.0020539237,-0.002420315 +21476000,imu,-0.18279782,0.11857242,-9.915578,-0.00026313015,-0.006525745,-0.0002718822 +21480000,imu,-0.1698607,0.13518256,-9.940512,0.00064638065,-0.009110792,-0.0015896189 +21480000,baro,487.68027 +21480000,mag,0.012880672,-0.21867822,0.4258561 +21484000,imu,-0.1750026,0.17176361,-9.959415,-0.00024580475,-0.0063101617,-0.0048342263 +21488000,imu,-0.17849427,0.18738742,-9.952634,-0.004295231,-0.0042580436,-0.0063708713 +21492000,mag,0.0071038743,-0.21476206,0.4297816 +21492000,imu,-0.14305751,0.19455509,-9.927906,-0.003884994,-0.0024004579,-0.0052595115 +21496000,imu,-0.15083483,0.17987438,-9.917398,-0.00038267,-0.0026813543,-0.0024337803 +21500000,imu,-0.18178658,0.16762507,-9.943615,-0.0016949935,-0.0049019516,0.00011420927 +21504000,imu,-0.1806848,0.21197733,-9.960469,-0.00081713375,-0.0050375736,0.00067251944 +21504000,mag,0.010718741,-0.21638076,0.4278353 +21508000,imu,-0.18935326,0.23481844,-9.914391,0.0011820792,-0.0061030644,0.00087112485 +21512000,imu,-0.20210695,0.1762419,-9.920933,-0.0010080071,-0.005267027,0.0016453783 +21516000,imu,-0.18577138,0.1602235,-9.925373,-0.00059667614,-0.004901304,-0.00216601 +21516000,mag,0.0085128,-0.21538179,0.42644042 +21520000,imu,-0.19443482,0.17059521,-9.896858,-0.00029573627,-0.0066365907,-0.002808176 +21524000,imu,-0.17627664,0.14962998,-9.924949,-0.00021291316,-0.0058464077,0.0009929584 +21524000,mag,0.00810626,-0.21863002,0.4266057 +21528000,imu,-0.14699778,0.17443733,-9.913806,-0.0007284912,-0.0061562187,0.0029460262 +21532000,imu,-0.16871122,0.20175563,-9.88028,-0.00263075,-0.004942894,0.00047625814 +21536000,imu,-0.18165587,0.19454943,-9.9210415,-0.0028185654,-0.0013061241,-0.00035123256 +21540000,imu,-0.2187789,0.16922925,-9.936973,-0.0013697166,-0.00024467983,-0.0004061139 +21540000,mag,0.0027668746,-0.2119777,0.42462245 +21544000,imu,-0.22601631,0.15459299,-9.906591,0.0015282793,-0.0061048195,0.000986418 +21548000,imu,-0.18161577,0.15712667,-9.920586,0.0027119399,-0.007346281,0.0028224834 +21552000,imu,-0.17279626,0.17282644,-9.935012,0.0010269937,-0.0026272135,0.0014519255 +21552000,baro,487.62393 +21552000,mag,0.015696112,-0.21364814,0.4236829 +21556000,imu,-0.15446287,0.17939086,-9.927913,4.212583e-05,-0.00266947,0.0014468525 +21560000,imu,-0.14864059,0.15566419,-9.919165,-0.0038431722,-0.002648815,0.0016377043 +21564000,mag,0.004328329,-0.21722497,0.43184045 +21564000,imu,-0.14335775,0.14045565,-9.885841,-0.006226212,-0.0054836124,0.0021132824 +21568000,imu,-0.15457007,0.14377104,-9.89839,-0.004653473,-0.007411538,0.00021748107 +21572000,imu,-0.17018569,0.17604734,-9.907715,5.593759e-06,-0.006191529,-0.0011385104 +21576000,imu,-0.1686388,0.18722384,-9.890368,0.001447417,-0.00464269,-0.0011260284 +21576000,mag,0.015411099,-0.22068308,0.432548 +21580000,imu,-0.19206347,0.14786509,-9.925465,-0.0012603455,-0.0049331267,-0.00033252977 +21584000,imu,-0.19878477,0.14159225,-9.940158,-0.0013193158,-0.005306299,0.0008512374 +21588000,mag,0.010893127,-0.20779634,0.43270245 +21588000,imu,-0.22644512,0.1646397,-9.905546,0.00046346223,-0.005355326,-0.0015157926 +21592000,imu,-0.22869591,0.17055583,-9.892626,0.001630181,-0.0074217245,-0.0017837327 +21596000,imu,-0.18017894,0.18001582,-9.899958,0.000836407,-0.006281106,0.0005718569 +21600000,mag,0.0105086835,-0.21780877,0.4259905 +21600000,imu,-0.17572382,0.20422916,-9.89081,0.0018157398,-0.0050325585,-0.00033186722 +21604000,imu,-0.19614753,0.18621986,-9.898598,0.0017037157,-0.0050911624,0.0008310763 +21608000,imu,-0.18380609,0.17293462,-9.903985,-0.0011657969,-0.0053645307,0.00090597663 +21612000,imu,-0.15403596,0.16961464,-9.893286,-0.0044301646,-0.004517931,-0.0005867172 +21612000,mag,0.011775467,-0.21378572,0.4314769 +21616000,imu,-0.14999633,0.15997301,-9.9394655,-0.0037196432,-0.002510004,-0.0017013461 +21620000,imu,-0.17436913,0.12979159,-9.919632,-0.0013006163,-0.0040224358,0.0011369637 +21624000,baro,487.61453 +21624000,imu,-0.19548756,0.1160925,-9.897163,-0.0013123314,-0.0070833187,0.0019325969 +21624000,mag,0.0111789005,-0.22568157,0.42519897 +21628000,imu,-0.20681897,0.15523823,-9.935692,-0.002407605,-0.009509475,0.0011360071 +21632000,imu,-0.18590602,0.16332887,-9.94178,-0.004507251,-0.007686798,0.0022539413 +21636000,imu,-0.18745968,0.17138453,-9.940133,-0.0021480033,-0.007389123,0.0003729307 +21636000,mag,0.011098104,-0.21972047,0.42708114 +21640000,imu,-0.199908,0.18698235,-9.928399,-0.0020794335,-0.005541666,-0.0031997107 +21644000,imu,-0.16912022,0.17666785,-9.932659,-0.0049916436,-0.0044125384,-0.0054653343 +21648000,imu,-0.18307382,0.17486814,-9.896549,-0.0022013388,-0.007923316,3.0084773e-05 +21648000,mag,0.013454839,-0.21550664,0.43438423 +21652000,imu,-0.18133262,0.18209425,-9.907244,-0.00077937765,-0.00783226,0.0022487189 +21652000,gps,488095.0,85456074.0,473977508.0,-0.01,0.03,-0.03 +21656000,imu,-0.17670299,0.17405963,-9.944935,-0.0024279011,-0.009671238,0.00239246 +21660000,mag,0.014412345,-0.21234408,0.43222558 +21660000,imu,-0.19665727,0.17016412,-9.911301,-0.00510747,-0.006824172,0.0030193527 +21664000,imu,-0.16430056,0.1499975,-9.916853,-0.003891515,-0.0030401112,0.0025099646 +21668000,imu,-0.1835386,0.15092082,-9.893643,-0.002671622,-0.0060138972,0.00058762106 +21672000,imu,-0.21151792,0.17792782,-9.870224,-0.0039647752,-0.008165563,-0.0008303616 +21672000,mag,0.0045696287,-0.21790208,0.42286164 +21676000,imu,-0.18278569,0.16668205,-9.902979,-0.0037153256,-0.011179538,0.0017848725 +21680000,imu,-0.16498116,0.14547804,-9.893159,-0.0019134984,-0.007893244,0.0010871848 +21684000,mag,0.012374939,-0.21566191,0.42512178 +21684000,imu,-0.18063414,0.15762243,-9.914225,0.0009236364,-0.004879127,0.0017596133 +21688000,imu,-0.18706092,0.15054785,-9.94067,0.003628283,-0.00739279,0.0021023506 +21692000,imu,-0.16640833,0.1416963,-9.909062,0.0011315315,-0.009815488,0.0024362865 +21696000,baro,487.68967 +21696000,imu,-0.18232694,0.13966277,-9.879754,-0.0010330243,-0.011677262,0.005633592 +21696000,mag,0.0035948013,-0.21586865,0.42870048 +21700000,imu,-0.17924777,0.15050258,-9.891425,-0.00040521237,-0.0060525127,0.002731951 +21704000,imu,-0.1413384,0.15516214,-9.918686,-0.0029882842,-0.001442053,-0.0007801174 +21708000,imu,-0.15750262,0.14267372,-9.941719,-0.0046126065,-0.001378191,-0.00087131676 +21708000,mag,0.0041642184,-0.21042682,0.4260702 +21712000,imu,-0.1751874,0.1837158,-9.972552,-0.0030702816,-0.0032824376,0.00034762887 +21716000,imu,-0.17972067,0.17891167,-9.945692,-0.0010219462,-0.006402525,-0.0028674519 +21720000,imu,-0.20610416,0.17026474,-9.890255,0.002352821,-0.00719009,-0.005691847 +21720000,mag,0.009287722,-0.21173167,0.4353087 +21724000,imu,-0.19597891,0.18690781,-9.896841,-0.0003827981,-0.0053267577,-0.001290823 +21728000,imu,-0.1821951,0.1946734,-9.925062,-0.0039468165,-0.0049817283,-0.001670947 +21732000,mag,0.010208975,-0.21802929,0.43497214 +21732000,imu,-0.16551197,0.20066011,-9.922924,0.00014487207,-0.0056014527,-0.0006559191 +21736000,imu,-0.14246783,0.21345977,-9.909119,-0.002842189,-0.005443329,0.0006831434 +21740000,imu,-0.16616951,0.18154612,-9.9220915,-0.0058259605,-0.006150296,-0.0010436333 +21744000,mag,0.013787989,-0.21810254,0.43178114 +21744000,imu,-0.18149216,0.16971253,-9.914099,-0.004017285,-0.0019539802,0.0005679796 +21748000,imu,-0.193544,0.16170923,-9.9094,-0.0034298934,-0.003218207,0.0020768251 +21752000,imu,-0.19183752,0.15587436,-9.951952,-0.0025435477,-0.0060997033,0.0008281525 +21756000,mag,0.0054172636,-0.2110904,0.4271688 +21756000,imu,-0.17332451,0.18583716,-9.93922,-0.0014795011,-0.0037449775,-0.0028648018 +21760000,imu,-0.17966905,0.18605182,-9.94611,-0.0005439156,-0.0043387567,-0.0021473495 +21764000,imu,-0.16950494,0.17000736,-9.958477,-0.0009488412,-0.0048147426,-0.0016263907 +21768000,imu,-0.14729431,0.14687805,-9.909704,-0.00080374954,-0.0065360893,-0.002207879 +21768000,mag,0.009305019,-0.21158902,0.4330817 +21768000,baro,487.62393 +21772000,imu,-0.1554077,0.1453407,-9.917482,-0.0014120378,-0.0032764147,0.00018641455 +21776000,imu,-0.15186572,0.16619787,-9.920107,-0.0031775949,-0.00332934,-0.00073495606 +21780000,imu,-0.15737411,0.18887861,-9.877209,-0.0021435388,-0.004169271,-0.0016477935 +21780000,mag,0.011442095,-0.21463494,0.42723355 +21784000,imu,-0.15895417,0.18225493,-9.893091,-0.0017369181,0.0005069058,-0.000314784 +21788000,imu,-0.15363647,0.14108369,-9.938763,-0.0010699983,-0.0036304845,0.001193171 +21792000,mag,0.017441384,-0.2152177,0.4231374 +21792000,imu,-0.17774355,0.13358417,-9.918226,0.0022962345,-0.006983884,0.0011912582 +21796000,imu,-0.14562142,0.16030274,-9.919737,0.0010424629,-0.007015642,0.00048024172 +21800000,landed,1.0 +21800000,imu,-0.14009498,0.18289794,-9.935568,-0.0049168854,-0.008098246,0.0019593867 +21804000,mag,0.012421768,-0.21497412,0.4230482 +21804000,imu,-0.17897774,0.18552856,-9.89349,-0.0020747148,-0.01053578,0.00030058823 +21808000,imu,-0.20699693,0.18082675,-9.898404,-3.1183696e-05,-0.0110448785,-0.00074935146 +21812000,imu,-0.21409398,0.18423213,-9.907124,-0.00040276258,-0.0066192495,8.772144e-05 +21816000,imu,-0.20610821,0.16364065,-9.918537,0.0015759921,-0.0013943296,-0.0028157667 +21816000,mag,0.008222132,-0.22006126,0.4223935 +21820000,imu,-0.19901916,0.16161723,-9.914881,0.0004134037,-0.0042612692,-0.0032973539 +21824000,imu,-0.18402846,0.15342067,-9.913265,-0.0013469286,-0.008097988,0.00019110563 +21828000,mag,0.0063104113,-0.2139807,0.43152446 +21828000,imu,-0.15714979,0.15745018,-9.933077,-0.0025895603,-0.0031007791,-0.0007998659 +21832000,imu,-0.14417712,0.18884636,-9.919569,-0.004053397,-0.00078040536,-0.0022605187 +21836000,imu,-0.14779854,0.18825659,-9.908064,-0.0035198922,-0.0019547145,-2.563378e-05 +21840000,baro,487.71313 +21840000,imu,-0.13574511,0.16868155,-9.888385,-0.0037938822,-0.0043599354,2.328936e-05 +21840000,mag,0.011976829,-0.21246931,0.42891514 +21844000,imu,-0.15597925,0.17273496,-9.885857,-0.0024420393,-0.004563912,-0.0021830366 +21848000,imu,-0.1901557,0.17737855,-9.930482,0.0016772724,-0.0043125777,-0.0039059832 +21852000,imu,-0.18333372,0.1632739,-9.939163,0.0021217712,-0.004346935,-0.003924578 +21852000,mag,0.012417136,-0.21828721,0.43261108 +21856000,imu,-0.19038221,0.14542866,-9.905451,-0.0018408326,-0.00682244,-0.00012100459 +21860000,imu,-0.17441031,0.16360228,-9.912401,-0.004747125,-0.008263658,0.001806801 +21864000,mag,0.0044656284,-0.21290009,0.43285996 +21864000,imu,-0.1682452,0.18453296,-9.911726,-0.0027261486,-0.00820663,-0.001564766 +21868000,imu,-0.19414899,0.16444296,-9.895914,-0.0002492434,-0.008370169,-0.0009499703 +21872000,imu,-0.1864135,0.12791494,-9.91168,0.0005809123,-0.0039786487,0.0003096592 +21876000,imu,-0.17699039,0.13782483,-9.937244,-0.001079429,-0.0024201793,-8.1953156e-05 +21876000,mag,0.0037896405,-0.2095122,0.43491244 +21880000,imu,-0.16956462,0.18612461,-9.9221,-0.000770968,-0.0042643873,-0.0001482446 +21884000,imu,-0.16407803,0.17638403,-9.894566,0.0005570296,-0.0036709134,-0.00082339655 +21888000,imu,-0.18704,0.18197876,-9.906105,-0.0022612845,-0.0037119095,-0.00028669668 +21888000,mag,0.014109113,-0.21989708,0.42765602 +21892000,imu,-0.19008937,0.19294187,-9.910707,-0.0036351387,-0.00483606,0.0014361927 +21896000,imu,-0.17538622,0.16004583,-9.925926,-0.0047723833,-0.003024183,0.00026280608 +21900000,mag,0.014887776,-0.21630363,0.4269848 +21900000,imu,-0.17807895,0.1625146,-9.956692,-0.00629967,-0.004705457,-0.002469539 +21904000,imu,-0.18849784,0.1558957,-9.941538,-0.0018313675,-0.0076730046,-0.0016003839 +21908000,imu,-0.20560883,0.13816054,-9.89282,-7.783668e-05,-0.0067217536,-0.0022485538 +21912000,mag,0.008369496,-0.21389395,0.42994824 +21912000,baro,487.60983 +21912000,imu,-0.1977335,0.14768325,-9.88028,-0.0014041027,-0.005618556,-0.0025580956 +21916000,imu,-0.18047701,0.16308697,-9.898348,0.0009047989,-0.0047338256,-0.0014146513 +21920000,imu,-0.18845785,0.17908213,-9.910076,-0.0012869625,-0.0069227233,0.00016763105 +21924000,mag,0.009132279,-0.21436258,0.43066028 +21924000,imu,-0.16323489,0.19742802,-9.919973,-0.0030073526,-0.007931436,0.002224352 +21928000,imu,-0.16232584,0.191993,-9.923432,-0.0012527719,-0.0048651565,-0.0017302921 +21932000,imu,-0.22142097,0.1627315,-9.943649,-0.0024932781,-0.0049374546,-0.0017199515 +21936000,mag,0.009456967,-0.22142668,0.42805856 +21936000,imu,-0.23906851,0.1683883,-9.923524,0.00046828526,-0.0075871963,0.0027801946 +21940000,imu,-0.21901622,0.16810909,-9.876633,7.956242e-06,-0.0074262596,0.002831435 +21944000,imu,-0.19473779,0.15749958,-9.882162,-0.0025560118,-0.0047896937,0.0008512296 +21948000,imu,-0.1684717,0.16341113,-9.915813,-0.002450646,-0.0056610988,0.0014214279 +21948000,mag,0.0060156854,-0.2141979,0.42717382 +21952000,imu,-0.17441317,0.16372286,-9.925107,-0.0024685832,-0.0069033545,0.0008733953 +21956000,imu,-0.18037824,0.16392897,-9.925165,-0.00013147674,-0.0052745473,-0.002397215 +21960000,imu,-0.17740288,0.19587722,-9.917347,-0.00064759114,-0.007806653,0.00059357844 +21960000,mag,0.012801938,-0.21240781,0.43549144 +21964000,imu,-0.1994214,0.20864545,-9.896454,-0.0038877164,-0.008152999,0.0012954447 +21968000,imu,-0.19275656,0.18428096,-9.926057,-0.0054147756,-0.00623634,-0.0016930217 +21972000,imu,-0.16706899,0.16934524,-9.9285755,-0.0047598504,-0.0042294064,-0.000866683 +21972000,mag,0.008700553,-0.21330716,0.43334913 +21976000,imu,-0.17259148,0.14908092,-9.907963,-0.0015950573,-0.002618042,0.00018030214 +21980000,imu,-0.18282127,0.18766926,-9.909437,0.0017530428,-0.006425488,-0.00031916727 +21984000,imu,-0.15880752,0.19348009,-9.913593,0.0010290055,-0.008651451,-0.00082755095 +21984000,baro,487.67557 +21984000,mag,0.009843228,-0.21089193,0.42612413 +21988000,imu,-0.16550277,0.14847946,-9.921268,0.0002261624,-0.009738515,-0.001903177 +21992000,mag,0.009997961,-0.21832883,0.42775366 +21992000,imu,-0.16990066,0.13552894,-9.931455,0.001712855,-0.009681337,-0.00017986623 +21996000,imu,-0.18868989,0.14168756,-9.911478,-0.001175893,-0.009034621,0.0019097622 +22000000,imu,-0.20294479,0.15954562,-9.89687,-0.0042825225,-0.0093086595,0.0027064895 +22004000,imu,-0.16450843,0.17558125,-9.910282,-0.0036292882,-0.0077830674,0.002724473 +22008000,imu,-0.16127275,0.19251193,-9.928707,-0.0029417975,-0.008744324,0.000777935 +22008000,mag,0.011430752,-0.21436462,0.43010527 +22012000,imu,-0.16133219,0.2064817,-9.951826,-0.0032167346,-0.008568942,0.001368744 +22016000,imu,-0.16130266,0.17127174,-9.966676,-0.0029239717,-0.0074520153,0.003353944 +22020000,imu,-0.15196487,0.14658944,-9.963783,-0.0027225248,-0.0071505415,0.0015932682 +22020000,mag,0.004434327,-0.2180173,0.43030953 +22024000,imu,-0.13054535,0.16928616,-9.919477,-0.00333306,-0.004786445,-0.0010784436 +22028000,imu,-0.15661377,0.16913396,-9.936137,-0.0014394148,-0.0052750227,-0.0014630936 +22028000,mag,0.010780523,-0.21380673,0.4300955 +22032000,imu,-0.16565552,0.16810225,-9.955695,0.0009939461,-0.0055833887,-0.0006968518 +22036000,imu,-0.17181762,0.14094599,-9.921813,-0.0006178827,-0.0023667596,-0.0005222064 +22040000,imu,-0.17175546,0.13829298,-9.933013,-0.004212013,-0.004117547,0.0009999066 +22044000,imu,-0.15646996,0.16290602,-9.937962,-0.002707467,-0.005245932,0.00090804073 +22044000,mag,0.007470127,-0.20924807,0.4304494 +22048000,imu,-0.16140842,0.15855123,-9.941383,0.00095839973,-0.0018669526,-0.0018159305 +22052000,imu,-0.16403577,0.17127314,-9.965231,0.0017576293,-0.0020046749,0.00022560413 +22052000,gps,488107.0,85456074.0,473977508.0,0.0,0.0,0.01 +22056000,imu,-0.17702362,0.19574796,-9.94969,-0.0007746544,-0.007350182,0.00025907435 +22056000,mag,0.010970049,-0.21717642,0.4310441 +22056000,baro,487.6568 +22060000,imu,-0.17083055,0.19050206,-9.905664,-0.00154317,-0.008012236,-0.0025046451 +22064000,mag,0.011075262,-0.21224636,0.43013558 +22064000,imu,-0.14414245,0.16899192,-9.902727,-0.0020045054,-0.0040031057,-0.0010598338 +22068000,imu,-0.16767648,0.1735427,-9.951855,-0.0025429372,-0.00277616,-0.0010838986 +22068000,landed,0.0 +22072000,imu,-0.2051029,0.18563406,-9.950593,0.00029097835,-0.0031973408,-0.0015798674 +22076000,imu,-0.17494184,0.19506913,-9.925034,-0.0013623413,-0.0048113386,-0.0031463618 +22076000,mag,0.011575905,-0.21657518,0.42629832 +22080000,imu,-0.13413148,0.19783585,-9.946375,-0.0019684925,-0.006103949,-0.003491252 +22080000,landed,0.0 +22084000,imu,-0.17838465,0.1795232,-9.925757,0.0010014843,-0.009587106,-0.0017258248 +22088000,imu,-0.18720318,0.14722452,-9.895605,0.00030038718,-0.008907244,-0.0023948916 +22092000,mag,0.015054039,-0.21704425,0.42226106 +22092000,imu,-0.17561516,0.13611232,-9.908083,0.00079223583,-0.007482451,-0.0010096863 +22096000,imu,-0.1867707,0.1782966,-9.909338,0.0014578861,-0.004921165,-0.00052216643 +22100000,imu,-0.17522556,0.21878193,-9.9203,-0.00014084637,-0.0026322755,0.00095616654 +22104000,mag,0.007234192,-0.21380754,0.4292405 +22104000,imu,-0.16634195,0.20231776,-9.915606,-0.0011870925,-0.005014652,0.0036602605 +22108000,imu,-0.14201996,0.17380404,-9.900793,-0.001074249,-0.002571222,0.0019145485 +22112000,imu,-0.14269838,0.16095126,-9.881361,-0.00031893345,-0.0053940336,0.0011041531 +22116000,mag,0.012224156,-0.21357413,0.42268765 +22116000,imu,-0.17997459,0.14853261,-9.885624,0.00043604214,-0.0086566005,0.0010235265 +22120000,imu,-0.174663,0.15570754,-9.939928,0.00062663073,-0.0070019336,0.0015826416 +22124000,imu,-0.15807296,0.13208994,-9.949751,-0.0006847702,-0.0067670466,-0.0020571386 +22128000,imu,-0.19659328,0.12146759,-9.910173,-0.0019767522,-0.0035584914,-0.0015865592 +22128000,mag,0.0069432184,-0.2114606,0.42946067 +22128000,baro,487.67557 +22132000,imu,-0.19211051,0.15430024,-9.899242,-0.0025028484,-0.003730826,0.0013789946 +22136000,imu,-0.1665447,0.16734587,-9.903568,-0.003723801,-0.0076712593,0.00088700565 +22140000,mag,0.007821774,-0.21112794,0.4297626 +22140000,imu,-0.21461056,0.17604907,-9.880962,-0.0019661242,-0.00921368,0.00051062636 +22144000,imu,-0.19218324,0.20479639,-9.902845,-0.00044875735,-0.007023144,-0.0012650746 +22148000,imu,-0.13947192,0.20880276,-9.941189,-0.0026071155,-0.0045830924,-0.00057131203 +22152000,imu,-0.1652239,0.1724889,-9.931116,-0.0018535375,-0.002974309,-0.00030817257 +22152000,mag,0.007289685,-0.21249086,0.42444792 +22156000,imu,-0.18922314,0.1721428,-9.942185,-0.0010516063,-0.0038767008,-0.0012805451 +22160000,mag,0.008449699,-0.21434471,0.42725903 +22160000,imu,-0.19437669,0.16707858,-9.929146,-0.003149205,-0.002231072,-0.002682689 +22164000,imu,-0.17160004,0.17755362,-9.911497,-0.0037069542,-0.0025409283,-0.001594288 +22168000,imu,-0.16381314,0.1793637,-9.906513,-0.00078038574,-0.0051191463,-0.0010406927 +22172000,imu,-0.18073612,0.16453484,-9.910364,-0.0015696358,-0.00418822,0.0004496014 +22176000,mag,0.011580073,-0.21984962,0.4246553 +22176000,imu,-0.17745104,0.18313785,-9.887605,-0.0036034477,-0.0026112406,0.0009900843 +22180000,imu,-0.19498137,0.18197522,-9.894472,-0.0038355594,-0.0015493444,-0.0014887005 +22184000,imu,-0.19498765,0.19487987,-9.930313,-0.000516463,-0.0051177484,-0.003923866 +22188000,mag,0.013487689,-0.21277532,0.42899692 +22188000,imu,-0.16849732,0.20431627,-9.941795,-0.0006533138,-0.0073502352,-0.00016172857 +22192000,imu,-0.19541845,0.19382383,-9.950632,-0.0022167715,-0.008204144,0.003932938 +22196000,imu,-0.20005783,0.1837463,-9.911758,-0.0007279479,-0.0065293056,-0.0009704039 +22200000,imu,-0.19434473,0.16103256,-9.894287,-0.00026735436,-0.0063381726,-0.0011246561 +22200000,mag,0.0073727244,-0.2111386,0.4339675 +22200000,baro,487.68497 +22204000,imu,-0.19858146,0.1725027,-9.913237,0.000540567,-0.009432655,0.0011463121 +22208000,imu,-0.20157462,0.16599983,-9.928567,-0.0028328854,-0.00903958,-0.00048550236 +22212000,imu,-0.18059124,0.15377115,-9.937498,-0.002479884,-0.0067399526,-0.0004030584 +22212000,mag,0.014150626,-0.21287496,0.426714 +22216000,imu,-0.17167121,0.17907701,-9.924103,-0.0030090695,-0.009146871,0.0011971038 +22220000,imu,-0.15950394,0.19436873,-9.901232,-0.0015033738,-0.011075497,-0.0013210373 +22224000,imu,-0.13932534,0.17630692,-9.894673,0.001215687,-0.0078166295,-0.0027357845 +22224000,mag,0.012819564,-0.2157959,0.42864394 +22228000,imu,-0.16129851,0.15263122,-9.884367,-0.0012935804,-0.008294325,0.0034788346 +22232000,imu,-0.18739885,0.17517942,-9.892332,-0.003140114,-0.009470549,0.0070694247 +22236000,imu,-0.19793157,0.17100504,-9.931577,-0.0015880566,-0.0066878865,0.0042813513 +22236000,mag,0.0053450214,-0.21726032,0.42483142 +22240000,imu,-0.1964213,0.16818939,-9.90683,6.260234e-05,-0.005026688,0.00045188543 +22244000,imu,-0.20695287,0.20746481,-9.89793,-0.003188157,-0.004660845,0.00026428385 +22244000,mag,0.015467181,-0.22342682,0.43179736 +22248000,imu,-0.18745461,0.18723616,-9.937027,-0.0022297583,-0.0038009884,-0.000757181 +22252000,imu,-0.16605118,0.1923567,-9.926378,0.0042827367,-0.005835846,-0.002010975 +22256000,imu,-0.17751852,0.1938395,-9.890076,0.003319118,-0.0075159967,-0.0026716306 +22260000,imu,-0.21246317,0.15079097,-9.895566,-0.002315345,-0.00738434,-0.0051952545 +22260000,mag,0.0037250204,-0.21584423,0.42624786 +22264000,imu,-0.19439363,0.19253604,-9.932346,-0.0014208485,-0.007912829,-0.005893369 +22268000,imu,-0.15086636,0.20449226,-9.9271755,-0.0036838835,-0.0049848966,-0.0023957274 +22272000,baro,487.62393 +22272000,mag,0.0032311864,-0.2197235,0.42973757 +22272000,imu,-0.1739209,0.1809487,-9.941994,-0.0065291803,-0.0040896707,0.0014622989 +22276000,imu,-0.1921078,0.19462547,-9.942,-0.002671704,-0.0031639491,0.003628868 +22280000,imu,-0.17602162,0.16444285,-9.9069195,-0.00054149685,-0.0045823054,0.0019283075 +22284000,imu,-0.19218811,0.140204,-9.895304,0.0007223956,-0.010081998,-0.000988684 +22284000,mag,0.010684078,-0.21146353,0.43251815 +22288000,imu,-0.1836234,0.18303113,-9.890718,-5.501873e-05,-0.0071944874,0.0016229238 +22292000,imu,-0.15385954,0.17755727,-9.903324,-0.0006250012,-0.006751941,-9.214121e-05 +22296000,imu,-0.16909838,0.16197576,-9.911678,-0.0011626452,-0.0072988374,-0.0020112484 +22296000,mag,0.003887037,-0.21230346,0.4343493 +22300000,imu,-0.1738612,0.16499239,-9.905291,-0.0035346542,-0.0060156356,0.0032049594 +22304000,imu,-0.1966857,0.15970834,-9.892864,-0.0009746632,-0.005271062,0.0041399985 +22308000,imu,-0.20486334,0.1572411,-9.892389,0.0019762884,-0.003593827,0.0016504234 +22308000,mag,0.011510968,-0.21260786,0.42979828 +22312000,imu,-0.17642906,0.16985784,-9.913465,-0.0018377248,-0.0031526033,-0.00045077887 +22316000,imu,-0.2002984,0.18590657,-9.921448,-0.0031715087,-0.006243646,-0.0014673985 +22320000,imu,-0.19117786,0.16419221,-9.913209,-0.0006167961,-0.01020057,0.00036252916 +22320000,mag,0.01842548,-0.21096879,0.43241233 +22324000,imu,-0.1740535,0.19037586,-9.919187,-0.0011888295,-0.009479096,0.0022175298 +22328000,imu,-0.20283997,0.22158577,-9.930544,-0.0032225568,-0.008986112,0.002369894 +22332000,mag,0.013686112,-0.21781886,0.42922375 +22332000,imu,-0.16066152,0.21467476,-9.928345,-0.0029569524,-0.0064947526,0.00011420488 +22336000,imu,-0.14875112,0.16237259,-9.931862,-0.0012039564,-0.005253696,-0.0021289887 +22340000,imu,-0.19400428,0.15467897,-9.945423,-0.0019083255,-0.004915414,-0.0016517037 +22344000,mag,0.010834071,-0.2176878,0.42909548 +22344000,imu,-0.20336255,0.16976508,-9.938325,-0.0012656845,-0.003918341,-0.0008003429 +22344000,baro,487.5676 +22348000,imu,-0.18093374,0.18500227,-9.924238,0.0014732273,-0.0035048372,-0.0011463829 +22352000,imu,-0.18546945,0.21444668,-9.94519,0.00096691167,-0.004215017,-0.0017475516 +22356000,imu,-0.19459337,0.22950974,-9.915779,0.00077503663,-0.006040337,-0.0003959267 +22356000,mag,0.0108673,-0.21051341,0.4326626 +22360000,imu,-0.17933297,0.18875195,-9.903854,-1.066586e-05,-0.004960832,0.0019321851 +22364000,imu,-0.1612288,0.13015267,-9.899484,-0.0014332015,-0.004196603,0.0033587967 +22368000,imu,-0.15514125,0.13228565,-9.901551,-0.0013706086,-0.0044786124,0.0022303595 +22368000,mag,0.0070947977,-0.21319015,0.4277724 +22372000,imu,-0.16330315,0.1756545,-9.932711,-0.004665468,-0.0049694693,-0.0007742859 +22376000,imu,-0.18720533,0.20446119,-9.923023,-0.005883881,-0.003401987,0.00064113206 +22380000,mag,0.011272625,-0.21478018,0.43341777 +22380000,imu,-0.17221525,0.18912281,-9.946435,-0.004452756,-0.004060054,0.0026570153 +22384000,imu,-0.15036537,0.1924059,-9.942456,-0.0019423565,-0.004610833,0.0020200692 +22388000,imu,-0.17470387,0.18267743,-9.914977,0.00081120414,-0.0042154635,0.00051865913 +22392000,imu,-0.19243889,0.16079158,-9.931038,0.0030897418,-0.0057433136,0.0019615516 +22392000,mag,0.017455412,-0.22090904,0.4352198 +22396000,imu,-0.19011337,0.16498782,-9.916034,-0.0006790326,-0.0029628023,0.0017093458 +22400000,imu,-0.15533252,0.1850784,-9.922117,-0.0033118362,-0.0010029883,-0.0012896792 +22404000,imu,-0.17255083,0.18747218,-9.942153,-0.0011669805,-0.0034908706,-0.0019898235 +22404000,mag,0.008534497,-0.21169679,0.42323104 +22408000,imu,-0.21124552,0.1645263,-9.936582,-0.0021198003,-0.0060629,-0.00017450437 +22412000,imu,-0.18945052,0.15675983,-9.927889,-0.0009199867,-0.006185043,-0.001701628 +22416000,baro,487.59576 +22416000,mag,0.009892273,-0.21638283,0.42884114 +22416000,imu,-0.18254444,0.19088297,-9.930473,-0.0008869204,-0.0051389094,-0.0047547664 +22420000,imu,-0.16755849,0.166261,-9.969618,-0.0023267907,-0.0032743088,-0.0019284069 +22424000,imu,-0.1405091,0.15008447,-9.92577,0.0022231876,-0.005644472,0.0021330707 +22428000,imu,-0.16611846,0.18729623,-9.874312,0.0024997618,-0.0076751313,-0.0005183997 +22428000,mag,0.011617019,-0.21279095,0.42764723 +22432000,imu,-0.18231475,0.17526338,-9.913535,-0.001187774,-0.0061624097,-0.0019348334 +22436000,imu,-0.18538584,0.17460687,-9.885485,0.00025704224,-0.0064187283,0.0011008263 +22440000,mag,0.014256351,-0.21516491,0.43264154 +22440000,imu,-0.18387657,0.18258843,-9.8648205,-0.0014400645,-0.0072606225,-0.0024747185 +22444000,imu,-0.1799157,0.16740166,-9.920452,-0.004984107,-0.0067544472,-0.001992969 +22448000,gps,488104.0,85456073.0,473977508.0,0.01,0.01,0.0 +22448000,imu,-0.17899632,0.17457815,-9.962194,-0.0033652834,-0.006012232,0.003100894 +22452000,mag,0.009936753,-0.21284448,0.4313985 +22452000,imu,-0.15288079,0.17551772,-9.950555,-0.00047723335,-0.0076258453,0.0018093385 +22456000,imu,-0.14990339,0.17465991,-9.92191,-8.400767e-05,-0.00801944,0.0011747878 +22460000,imu,-0.16318183,0.16463977,-9.921974,-0.0023548098,-0.0051671583,-0.00019654895 +22460000,mag,0.0065304264,-0.2104279,0.438668 +22464000,imu,-0.14713755,0.16770284,-9.924181,-0.0044226693,-0.0049253562,-0.0017769752 +22468000,imu,-0.170309,0.1833349,-9.9235935,-0.003603863,-0.0064516263,-0.0002136497 +22472000,imu,-0.17197192,0.16567503,-9.910339,-0.001592048,-0.006106266,-0.00093813485 +22476000,mag,0.003307364,-0.21365486,0.42495635 +22476000,imu,-0.14618558,0.17342289,-9.935659,-0.0019230149,-0.003275545,-0.00064615987 +22480000,imu,-0.1417234,0.17326087,-9.93784,-0.00017067313,-0.0039351056,0.00050294294 +22484000,imu,-0.17339191,0.17598563,-9.924568,0.0028559698,-0.004748114,0.00073968276 +22488000,mag,0.0071737138,-0.20904362,0.42722884 +22488000,baro,487.68027 +22488000,imu,-0.2076999,0.1901054,-9.929768,4.9685135e-05,-0.0007632689,-0.0018679331 +22492000,imu,-0.17839614,0.19130972,-9.929254,-0.00018467839,-0.0021905461,-0.0030836428 +22496000,imu,-0.1541464,0.1941215,-9.938191,0.00029964678,-0.006741729,-0.0017693165 +22500000,mag,0.012957221,-0.21704902,0.43130004 +22500000,imu,-0.1875152,0.1622982,-9.943687,-0.0029352442,-0.0076995166,-0.001820234 +22504000,imu,-0.22266059,0.1579567,-9.943138,-0.002715408,-0.00599255,-0.00034842984 +22508000,imu,-0.20242268,0.1951112,-9.9393215,-0.0026456523,-0.0021558402,-0.0018292381 +22512000,mag,0.0093473,-0.20996577,0.43439385 +22512000,imu,-0.18742596,0.19009103,-9.932426,-0.007104767,-0.0025907515,-0.0026088783 +22516000,imu,-0.1823329,0.17573369,-9.934094,-0.005028243,-0.0066699553,-0.0014084299 +22520000,imu,-0.15846352,0.17697147,-9.9296665,-0.0014689793,-0.0029534278,-0.0019114573 +22524000,mag,0.011558545,-0.2167976,0.43395326 +22524000,imu,-0.17736748,0.18424614,-9.918789,-0.00047080917,-0.00037972556,-2.4808509e-05 +22528000,imu,-0.21257696,0.18722697,-9.917519,0.0017853029,-0.006248531,0.00039701982 +22532000,imu,-0.20081425,0.1715125,-9.920116,0.00035396192,-0.008095662,0.000733743 +22536000,imu,-0.15853798,0.16032703,-9.9185,-0.0034558477,-0.005646453,-0.0003674106 +22536000,mag,0.0051684887,-0.21203092,0.43314072 +22540000,imu,-0.15551114,0.13787037,-9.925852,-0.004484141,-0.0047483267,-0.00031436488 +22544000,imu,-0.2099581,0.1435048,-9.960725,-9.057027e-05,-0.0036572346,0.0023045896 +22548000,imu,-0.20714349,0.17113453,-9.941044,0.0013339414,-0.0018029294,0.0016496296 +22548000,mag,0.012581656,-0.2167402,0.4277473 +22552000,imu,-0.1614154,0.1870621,-9.924423,-0.00029894075,-0.0048862756,0.0012091605 +22556000,imu,-0.13855839,0.16265774,-9.951616,-0.0018880275,-0.008376843,0.0024062565 +22560000,mag,0.012045451,-0.21052542,0.42886037 +22560000,imu,-0.16690525,0.14818111,-9.936688,-0.0016467718,-0.008723201,-0.000103249884 +22560000,baro,487.61923 +22564000,imu,-0.1842534,0.16136067,-9.905291,-0.0040619867,-0.00794515,-0.0017681814 +22568000,imu,-0.19154596,0.1596926,-9.889029,-0.0040694885,-0.0055895,-4.843978e-05 +22572000,mag,0.012861366,-0.20922956,0.42205295 +22572000,imu,-0.17751577,0.16635983,-9.895062,0.0024036882,-0.0060307668,0.0012958787 +22576000,imu,-0.15674673,0.16556682,-9.931614,0.00059429265,-0.0073398347,0.0006077646 +22580000,imu,-0.17971444,0.16691485,-9.951086,-0.0024610765,-0.004277693,-0.0016218744 +22584000,mag,0.0056820866,-0.21205051,0.4306724 +22584000,imu,-0.18342656,0.16647594,-9.9297695,-0.0004386645,-0.003103251,0.002102983 +22588000,imu,-0.20273528,0.16811341,-9.923534,0.0009800612,-0.0065538054,0.004675103 +22592000,imu,-0.20465337,0.15600216,-9.946463,0.0022409777,-0.008735749,0.0013670534 +22596000,mag,0.0122175105,-0.21711491,0.43782863 +22596000,imu,-0.18760593,0.14148296,-9.926585,0.00079870713,-0.007943619,-0.00036021412 +22600000,imu,-0.193644,0.15986985,-9.906593,-8.922704e-05,-0.006462316,0.00086270954 +22604000,imu,-0.17545924,0.1647429,-9.904142,-0.0018051821,-0.006675813,-2.8681327e-05 +22608000,mag,0.0015256755,-0.21080926,0.43259427 +22608000,imu,-0.16347739,0.18127663,-9.906755,-0.0048936605,-0.008798383,-3.9816536e-05 +22612000,imu,-0.17429844,0.17759188,-9.930187,-0.0031288401,-0.008313077,0.000105872685 +22616000,imu,-0.14211378,0.17729759,-9.910495,-0.0021432003,-0.0064615994,-0.0013531167 +22620000,mag,0.011469472,-0.21956392,0.42887023 +22620000,imu,-0.14188561,0.215962,-9.861211,-0.0012927933,-0.006115771,-0.0017031439 +22624000,imu,-0.184753,0.212931,-9.89403,0.0013582726,-0.0051140594,-0.0014929613 +22628000,imu,-0.16711062,0.20380853,-9.936943,0.0006149838,-0.005741452,-0.0026496262 +22632000,imu,-0.14627759,0.21130206,-9.911894,-0.0018894094,-0.0073021543,-0.0018998265 +22632000,baro,487.62863 +22632000,mag,0.014355986,-0.22137573,0.4237424 +22636000,imu,-0.15259269,0.20421669,-9.897373,-0.0016270423,-0.006788326,0.0017473171 +22640000,imu,-0.15390024,0.1840878,-9.910854,-0.0017107114,-0.004795079,0.003502983 +22644000,mag,0.011593884,-0.21553439,0.4319166 +22644000,imu,-0.14543584,0.1582382,-9.912107,-0.0029827163,-0.0048005856,0.0019307202 +22648000,imu,-0.16079687,0.14379661,-9.918272,-0.0030997386,-0.004138158,-0.0004435395 +22652000,gps,488106.0,85456073.0,473977508.0,0.0,0.0,0.01 +22652000,imu,-0.19548264,0.17133687,-9.921856,-0.001901327,-0.0072372807,0.0005427228 +22656000,mag,0.013320743,-0.2147067,0.42830646 +22656000,imu,-0.17596301,0.20912294,-9.910484,-0.0016219843,-0.009803832,-0.0008950585 +22660000,imu,-0.15132707,0.1969358,-9.922853,-0.004452159,-0.008070337,-0.0022358121 +22664000,imu,-0.15949063,0.16189925,-9.9289,-0.0023483543,-0.006107565,0.00064479583 +22668000,imu,-0.17141497,0.16872345,-9.908904,0.002265552,-0.004966473,0.0006327865 +22668000,mag,0.014307497,-0.21023284,0.42811704 +22672000,imu,-0.1821975,0.18585451,-9.888947,-0.0011473331,-0.006533498,-0.0014227488 +22676000,imu,-0.18590263,0.18677889,-9.9191065,-0.004895979,-0.0091675185,-0.0010208482 +22680000,imu,-0.19031157,0.20852461,-9.93959,-0.00081691315,-0.010538371,-1.0061927e-05 +22680000,mag,0.011229891,-0.21297799,0.4279073 +22684000,imu,-0.19459395,0.1997072,-9.925385,0.0008764553,-0.00811953,-0.00053301075 +22688000,imu,-0.18000409,0.15570764,-9.936587,-0.0024920038,-0.006607779,-0.002969394 +22692000,mag,0.0035880571,-0.21568766,0.4299397 +22692000,imu,-0.16488177,0.14176671,-9.91548,-0.0043154047,-0.004424202,1.3771615e-05 +22696000,imu,-0.18147947,0.17689703,-9.897499,-0.0030609076,-0.0041075666,0.002271275 +22700000,imu,-0.19365898,0.20563234,-9.901837,0.00013936414,-0.008346551,0.00020665824 +22704000,mag,0.008420918,-0.20781459,0.43403074 +22704000,imu,-0.18403338,0.17231536,-9.923052,0.00020018559,-0.009121733,0.0008691817 +22704000,baro,487.57227 +22708000,imu,-0.18485905,0.18774806,-9.925477,0.0006786157,-0.005165668,0.0034222933 +22712000,imu,-0.18167892,0.19216149,-9.922918,-0.00015707791,-0.003452046,0.0033620887 +22716000,mag,0.0029569943,-0.21757142,0.43768018 +22716000,imu,-0.13999078,0.16189341,-9.928305,-0.002934874,-0.0015245541,0.0016030518 +22720000,imu,-0.15883179,0.18485807,-9.908937,-0.0013984898,-0.0012040754,0.0014001044 +22724000,imu,-0.20262265,0.19927491,-9.923063,0.000452191,-0.005345363,-0.00021415605 +22728000,imu,-0.19511992,0.1996912,-9.917398,0.0004303328,-0.0060862387,-0.00055469363 +22728000,mag,0.006105832,-0.21509701,0.43560797 +22732000,imu,-0.1811746,0.20295212,-9.936239,-0.0010227307,-0.007784916,-0.0023176242 +22736000,imu,-0.14784463,0.17785658,-9.973806,-0.00085145026,-0.008582517,-0.004141034 +22740000,imu,-0.13369781,0.12597361,-9.922718,-0.0001571721,-0.0065297587,-0.0034865076 +22740000,mag,0.0070267105,-0.21611741,0.42773905 +22744000,imu,-0.10926294,0.14863472,-9.888359,0.0002923006,-0.0035506939,-0.004277317 +22748000,imu,-0.13357362,0.18137918,-9.918528,-0.0027278163,-0.0025037236,-0.005315611 +22752000,mag,0.010377712,-0.21118008,0.43221486 +22752000,imu,-0.17423922,0.16567346,-9.93936,-0.0039177756,-0.003360247,-0.002651729 +22756000,imu,-0.17051494,0.17530225,-9.935734,-0.0018558687,-0.005220038,0.0029448585 +22760000,imu,-0.17113549,0.1655673,-9.922898,-0.0034843942,-0.0036888344,0.002026869 +22764000,mag,0.006224349,-0.21779467,0.4308673 +22764000,imu,-0.16027737,0.1583334,-9.938935,-0.0044304943,-0.0014063136,-0.0017847967 +22768000,imu,-0.17124693,0.17942555,-9.939739,-0.0010858574,-0.0047167125,-0.0017099235 +22772000,imu,-0.16525653,0.17487566,-9.946684,0.00047842308,-0.007454736,-0.0019295265 +22776000,baro,487.58636 +22776000,mag,0.006561043,-0.21861765,0.42251575 +22776000,imu,-0.15090996,0.14034085,-9.947901,-0.0010027895,-0.007666053,-0.0020257267 +22780000,imu,-0.1861555,0.14769179,-9.925625,-0.0007992469,-0.006819168,0.001250172 +22784000,imu,-0.20116273,0.1686495,-9.916047,-0.0011099876,-0.007106798,0.0007506331 +22788000,imu,-0.17888044,0.18221717,-9.921991,-0.0023555893,-0.008012778,0.000831298 +22788000,mag,0.007947836,-0.21234551,0.42911685 +22792000,imu,-0.17335162,0.19022115,-9.913824,0.00058268884,-0.0096214,0.00034159631 +22796000,imu,-0.1838415,0.17086796,-9.901648,0.0019358979,-0.008825812,-0.0016401111 +22800000,imu,-0.16987872,0.18248606,-9.91427,-0.0034675568,-0.0073481738,-0.0016192154 +22800000,mag,0.009319991,-0.21856052,0.4284675 +22804000,imu,-0.15797117,0.20291723,-9.9149685,-0.0035272266,-0.006323824,-0.004498897 +22808000,imu,-0.16457438,0.20474151,-9.9170475,-0.0034008976,-0.00531209,-0.005420964 +22812000,imu,-0.16696031,0.19022138,-9.896425,-0.0001324954,-0.00543488,-0.002609333 +22812000,mag,0.007605105,-0.21156245,0.4292413 +22816000,imu,-0.1928339,0.17665635,-9.889926,0.004381276,-0.0045566144,0.0017953077 +22820000,imu,-0.18935123,0.15531455,-9.935247,0.0006655686,-0.0061194436,0.00051730475 +22824000,imu,-0.16379568,0.1438296,-9.922272,0.0005663302,-0.0072268955,-0.0017198799 +22824000,mag,0.012333599,-0.21820828,0.42457005 +22828000,imu,-0.17180657,0.16169241,-9.896746,-0.00054493186,-0.0051531144,0.00042186148 +22832000,imu,-0.17843324,0.14623852,-9.899779,-0.0008964622,-0.002177369,0.0026097458 +22836000,mag,0.009334595,-0.22061543,0.4246869 +22836000,imu,-0.16461837,0.1491064,-9.900198,0.0019170631,-0.0024325028,0.001128499 +22840000,imu,-0.15716854,0.15439954,-9.918703,0.0019511378,-0.0050701667,0.0014381874 +22844000,imu,-0.16753218,0.16355003,-9.928599,0.0015595685,-0.006212885,0.0015693884 +22848000,imu,-0.16763188,0.1852256,-9.907425,-0.0022067446,-0.005430151,-0.0008744414 +22848000,baro,487.6333 +22848000,mag,0.0043596565,-0.21336122,0.4283296 +22852000,imu,-0.1628854,0.1897002,-9.906506,-0.004943112,-0.0056212884,-9.8415345e-05 +22856000,imu,-0.18131939,0.16922577,-9.927188,-0.0033195093,-0.0064290804,-0.00033363575 +22860000,mag,0.008934552,-0.21293738,0.428101 +22860000,imu,-0.20290479,0.13696828,-9.91609,-0.0009901896,-0.0070325863,-0.00077348086 +22864000,imu,-0.19835979,0.15826373,-9.912594,0.00028050854,-0.007944514,-0.0018104129 +22868000,imu,-0.17047209,0.18056834,-9.931055,-0.0005013587,-0.0050657936,-0.00201167 +22872000,imu,-0.15895268,0.22554553,-9.954299,-0.0025052736,-0.004925094,-0.0008687921 +22872000,mag,0.011917352,-0.21424241,0.42670175 +22876000,imu,-0.17400506,0.24404131,-9.945646,-0.002303379,-0.0052602827,-0.00046958373 +22880000,imu,-0.19033428,0.17434448,-9.914234,-0.0023328029,-0.0050778743,-0.00023537884 +22884000,mag,0.012733953,-0.21799842,0.42793444 +22884000,imu,-0.17612553,0.16136366,-9.909258,-0.0024010367,-0.0056171585,-0.0024429592 +22888000,imu,-0.15303516,0.1893444,-9.9224415,-0.0020723615,-0.0041562985,-0.004997209 +22892000,imu,-0.16973862,0.19622634,-9.937073,-0.003269521,-0.004494116,-0.0008267741 +22896000,mag,0.01338922,-0.21929337,0.42860505 +22896000,imu,-0.21165311,0.18756846,-9.940207,-0.003186663,-0.0030177669,0.0032690524 +22900000,imu,-0.21034797,0.16616005,-9.925854,-0.001424297,-0.004107363,0.0023782877 +22904000,imu,-0.17391026,0.16585867,-9.936822,-0.0035026907,-0.006270252,0.00021260355 +22908000,mag,0.009781458,-0.21698952,0.42819273 +22908000,imu,-0.1757788,0.17631349,-9.959477,-0.0038213811,-0.0073225875,-0.00014988052 +22912000,imu,-0.20191273,0.18382365,-9.954941,-0.0020982786,-0.008955778,-0.0003058888 +22916000,imu,-0.20171583,0.17514864,-9.93782,-0.001805328,-0.007996977,0.0001347469 +22920000,baro,487.58167 +22920000,mag,0.015670177,-0.2194481,0.42569885 +22920000,imu,-0.1856404,0.19018006,-9.946302,-0.0005100494,-0.006000646,0.00025872476 +22924000,imu,-0.16995764,0.19888878,-9.938913,-0.00055347185,-0.0053397403,-0.0016213219 +22928000,imu,-0.16980383,0.16299257,-9.890623,-0.00038340702,-0.0077082976,-0.00081945246 +22932000,imu,-0.20307204,0.14256044,-9.862324,0.0026114397,-0.005648615,-3.085694e-05 +22932000,mag,0.012868741,-0.21689567,0.42912298 +22936000,imu,-0.17044488,0.1362658,-9.883753,0.00073025515,-0.00248002,-0.00087256654 +22940000,imu,-0.15995482,0.12966707,-9.930795,-0.003549634,-0.0029118042,9.286419e-05 +22944000,imu,-0.18543518,0.18253303,-9.934118,-0.0024839735,-0.0039016162,0.0015062162 +22944000,mag,0.015779639,-0.21560635,0.4268179 +22948000,imu,-0.16105828,0.19088864,-9.910683,0.00054391293,-0.007040035,0.0005428847 +22952000,imu,-0.1760883,0.1621321,-9.903506,0.00044028714,-0.0065522245,0.0025009187 +22956000,imu,-0.20395365,0.1692596,-9.927789,-0.0027525937,-0.0048712506,0.0008733806 +22956000,mag,0.009699536,-0.21842805,0.42877132 +22960000,imu,-0.19842613,0.1577793,-9.9603615,-0.0023875562,-0.006967604,0.0004543021 +22964000,imu,-0.17543271,0.1796313,-9.937537,-0.0027206356,-0.007048241,0.00050457683 +22968000,imu,-0.19525394,0.18749677,-9.892687,-0.00047448534,-0.0049691387,-0.0039124014 +22968000,mag,0.00871994,-0.20778656,0.43158913 +22972000,imu,-0.21528742,0.16755575,-9.8995,0.00088982825,-0.0042800163,-0.00091256644 +22976000,imu,-0.18867764,0.16566372,-9.944622,-0.00093639514,-0.004652414,-0.0014772932 +22980000,mag,0.0070001017,-0.21176787,0.42871514 +22980000,imu,-0.16262206,0.16158941,-9.955721,-0.0015271459,-0.0035340702,-0.0032588427 +22984000,imu,-0.15980893,0.14855379,-9.933561,-0.002317195,-0.0032780499,-0.0009726914 +22988000,imu,-0.17833696,0.1510412,-9.913019,-0.0035655508,-0.007409898,-0.001468422 +22992000,mag,0.00036678097,-0.2138957,0.43179336 +22992000,imu,-0.14969093,0.17689097,-9.91954,-0.0017200434,-0.0075114234,-0.0023734707 +22992000,baro,487.5582 +22996000,imu,-0.14904246,0.15728216,-9.936816,0.0005982323,-0.004237275,-0.0021977527 +23000000,imu,-0.20481005,0.13492556,-9.9589,-4.7717873e-05,-0.00041811322,-0.0031962078 +23004000,imu,-0.18981092,0.16503225,-9.94549,-0.00151321,-0.0026676948,-0.002375709 +23004000,mag,0.008455043,-0.20897266,0.43660942 +23008000,imu,-0.15155964,0.19278514,-9.922602,-0.0027037093,-0.0070360014,0.0003338992 +23012000,imu,-0.14619374,0.18399537,-9.952875,-0.0006284548,-0.0025807135,0.0017721435 +23016000,imu,-0.16870487,0.1757511,-9.954872,0.00044557615,-0.002766624,0.0036039778 +23016000,mag,0.01028588,-0.21974593,0.4307699 +23020000,imu,-0.16355616,0.17977703,-9.936225,-0.00034720628,-0.004191619,0.0019877641 +23024000,imu,-0.14616467,0.18813074,-9.939977,-0.003575847,-0.0024876778,-0.00017081895 +23028000,imu,-0.18248284,0.17460859,-9.943623,-0.005745535,-0.0021355415,-0.0012997538 +23028000,mag,0.0072627636,-0.211948,0.426822 +23032000,imu,-0.21157609,0.18714085,-9.921198,0.000100670186,-0.002441253,-0.0015139119 +23036000,imu,-0.2089963,0.16708913,-9.928642,0.002405927,-0.0041069076,-0.0008799699 +23040000,mag,0.012183343,-0.21566644,0.4279424 +23040000,imu,-0.19992556,0.13446207,-9.923298,-0.0013005522,-0.00035439528,-0.0007379917 +23044000,imu,-0.18839316,0.16849253,-9.912374,-0.0025030393,-0.0007798502,-0.0006649086 +23048000,imu,-0.20855701,0.2129711,-9.936456,0.0008367209,-0.006211956,-0.0021895047 +23052000,gps,488110.0,85456073.0,473977508.0,-0.03,0.0,0.01 +23052000,mag,0.009578335,-0.21573827,0.42299697 +23052000,imu,-0.19702381,0.21516223,-9.971043,0.0038737557,-0.006306737,0.000653236 +23056000,imu,-0.17889062,0.1789587,-9.982787,0.002065439,-0.0054099904,0.0024416095 +23060000,imu,-0.19599402,0.13306259,-9.949249,-0.00033416823,-0.0043264646,-0.0029672983 +23064000,imu,-0.17046195,0.10603566,-9.919575,-0.0013378551,-0.0069981413,-0.002208743 +23064000,mag,0.007146682,-0.2210436,0.4236722 +23064000,baro,487.57227 +23068000,imu,-0.14446211,0.1383967,-9.908185,-0.0045367717,-0.008015014,0.0016271181 +23072000,imu,-0.14736208,0.18004593,-9.938387,-0.0051958775,-0.0063578766,0.0046586255 +23076000,mag,0.011297527,-0.21202886,0.42576832 +23076000,imu,-0.16474843,0.20652722,-9.941139,-0.0010192691,-0.005254889,0.0055634757 +23080000,imu,-0.19272818,0.16915041,-9.9403925,-0.0011702252,-0.0069185686,-0.0005898475 +23080000,landed,0.0 +23084000,imu,-0.20094097,0.14088787,-9.935327,-0.001370349,-0.0055317427,-0.0037687533 +23084000,mag,0.0059798015,-0.21369104,0.42898938 +23088000,imu,-0.17719747,0.15377468,-9.921633,-0.0005388339,-0.0035309712,-0.002389313 +23092000,imu,-0.17647472,0.14638934,-9.938244,-0.00069587794,-0.0063964217,-0.0067959675 +23096000,imu,-0.19276541,0.15731452,-9.931862,-0.0005820379,-0.008800665,-0.005712917 +23100000,mag,0.0074422574,-0.21137093,0.42685947 +23100000,imu,-0.20602533,0.17804451,-9.895079,0.0004533758,-0.008734899,-0.00046782044 +23104000,imu,-0.19271627,0.16280657,-9.907594,0.0020845362,-0.0038697177,0.0012224135 +23108000,imu,-0.17369674,0.14341547,-9.940153,0.00034750358,-0.0051810923,0.0043852595 +23112000,mag,0.008408071,-0.2128689,0.4266731 +23112000,imu,-0.18178333,0.17095017,-9.914092,0.00019415788,-0.008268274,0.0036062635 +23116000,imu,-0.18200755,0.18728708,-9.905814,-0.0003073593,-0.005892179,-0.0011809316 +23120000,imu,-0.17464322,0.17732824,-9.920816,-0.0027133822,-0.009737544,-0.0035417986 +23124000,mag,0.006598758,-0.21386655,0.43018985 +23124000,imu,-0.17303774,0.17678814,-9.91558,-0.0019063777,-0.011208079,-0.00340149 +23128000,imu,-0.19914582,0.19189855,-9.898684,-0.001757567,-0.007325384,-0.001670079 +23132000,baro,487.5582 +23132000,imu,-0.21092081,0.16966498,-9.904336,-0.004121603,-0.0042398227,0.0023972995 +23132000,mag,0.015105025,-0.2157847,0.42634574 +23136000,imu,-0.18811435,0.14909552,-9.905315,-0.0054686936,-0.0063007004,0.003453286 +23140000,imu,-0.1465809,0.16886017,-9.907051,-0.0011673159,-0.008800452,0.00072899763 +23144000,imu,-0.1774754,0.162311,-9.899321,0.0009362074,-0.007866685,-0.0036857182 +23148000,imu,-0.20456666,0.16217412,-9.892908,-0.0024373468,-0.0072948057,-0.0027383382 +23148000,mag,0.0055946847,-0.22294566,0.4328384 +23152000,imu,-0.19017808,0.13447212,-9.910677,-0.001961242,-0.0053403573,0.0007958882 +23156000,imu,-0.204331,0.15866596,-9.943476,-0.0006613649,-0.004849445,0.00034496907 +23160000,mag,0.015682353,-0.20482816,0.4262203 +23160000,imu,-0.18868582,0.19655351,-9.972168,-0.0013650323,-0.005297214,0.0006284249 +23164000,imu,-0.1807405,0.16334188,-9.96744,-0.0013956972,-0.0064011626,-0.0017807612 +23168000,imu,-0.18351349,0.16607429,-9.972712,-0.0019248181,-0.0056224605,-0.0014362663 +23172000,imu,-0.19538906,0.18007979,-9.944155,0.0026070399,-0.0037256395,-0.00034961663 +23172000,mag,0.01103616,-0.21875714,0.42734796 +23176000,imu,-0.20413874,0.17896333,-9.92384,0.004088708,-0.0045469417,1.0623365e-05 +23180000,imu,-0.16495723,0.1784981,-9.941417,0.0011286316,-0.006761336,0.0019525471 +23184000,imu,-0.16105568,0.17620143,-9.914156,0.0021549896,-0.005581488,0.00023933595 +23184000,baro,487.57697 +23184000,mag,0.007483576,-0.21498956,0.42897704 +23188000,imu,-0.20624208,0.16469002,-9.909039,0.0001075404,-0.0032497598,-0.00079601223 +23192000,imu,-0.2065304,0.14014252,-9.953278,-0.003573199,-0.0036779216,-0.00036585028 +23196000,imu,-0.20647812,0.14931443,-9.910723,-0.0056906817,-0.0075106444,0.0023345507 +23196000,mag,0.010781674,-0.2125403,0.42517573 +23200000,imu,-0.20815197,0.15972337,-9.9066515,-0.004502545,-0.007963141,-9.870277e-05 +23204000,imu,-0.17402595,0.16297513,-9.937847,-0.0021147563,-0.005379464,-0.0015922394 +23208000,mag,0.0050059846,-0.21623799,0.43603054 +23208000,imu,-0.15313902,0.18957928,-9.899544,-0.0023770262,-0.005477058,0.000627927 +23212000,imu,-0.15971527,0.18533324,-9.914301,-0.0021805041,-0.0060472824,-0.0008827337 +23216000,imu,-0.19034512,0.15189387,-9.937096,-0.0016032897,-0.005948797,-0.00061330904 +23220000,mag,0.012994118,-0.21935602,0.42259622 +23220000,imu,-0.2014015,0.15535153,-9.936558,-0.00531804,-0.006450286,0.0012925474 +23224000,imu,-0.20324185,0.1812925,-9.923346,-0.0075701294,-0.008564733,0.0049518044 +23228000,imu,-0.22214484,0.18048814,-9.909837,-0.004922088,-0.008654409,0.003129498 +23232000,imu,-0.20935234,0.17753677,-9.912033,-0.0045816423,-0.0070768315,-0.001696387 +23232000,mag,0.011125845,-0.21749805,0.42437035 +23236000,imu,-0.20173553,0.1875031,-9.926582,-0.0014039212,-0.008111686,-0.00026810137 +23240000,imu,-0.20966452,0.19128048,-9.953576,0.0016511423,-0.007511883,0.0018177456 +23240000,mag,0.0110366,-0.21570227,0.43148518 +23244000,imu,-0.18552153,0.19851358,-9.917684,-0.0013013412,-0.00402629,0.0020772428 +23248000,imu,-0.15471405,0.21154161,-9.891344,-0.00064495584,-0.003045917,-0.00041614153 +23252000,imu,-0.17152742,0.17806889,-9.909819,-0.0014762309,-0.005170972,-0.0015248794 +23256000,imu,-0.17987803,0.15774518,-9.910843,-0.0039151018,-0.004266217,6.864665e-05 +23256000,mag,0.008097053,-0.21613508,0.42404437 +23256000,baro,487.7413 +23260000,imu,-0.17503873,0.18242398,-9.931063,-0.0011077094,-0.0015996516,0.0009149388 +23264000,imu,-0.19479173,0.19073415,-9.916936,0.00016446618,-0.00476471,0.0023387778 +23268000,imu,-0.20489387,0.15942715,-9.891485,-0.002186572,-0.0037309898,0.0024314425 +23268000,mag,0.012127812,-0.21627417,0.42798397 +23272000,imu,-0.19729719,0.16588362,-9.934944,-0.0020018124,-0.00068271416,-0.0006761097 +23276000,imu,-0.19462961,0.16789807,-9.946354,0.0005932349,-0.005570761,-7.316537e-05 +23280000,imu,-0.17551406,0.1334035,-9.920155,-0.0022451293,-0.0057669915,0.0011469267 +23280000,mag,0.0109523935,-0.21636093,0.42873943 +23284000,imu,-0.14699987,0.13961527,-9.900185,-0.00348302,-0.00496805,-0.00050046854 +23288000,imu,-0.16506629,0.1730507,-9.89075,-0.0028488738,-0.0074793426,-0.0021992044 +23292000,imu,-0.16735929,0.16487683,-9.904127,-0.0024325615,-0.006443003,-0.00633688 +23292000,mag,0.009636365,-0.21834774,0.43463385 +23296000,imu,-0.18442017,0.15893391,-9.921404,-0.000118181895,-0.0059696212,-0.004227038 +23300000,imu,-0.18630013,0.1825259,-9.9347515,-0.0007692325,-0.0054238383,-0.0010222392 +23304000,mag,0.007924787,-0.20780125,0.42588407 +23304000,imu,-0.17120841,0.1532182,-9.915644,-0.0024831973,-0.005421846,-0.0004660138 +23308000,imu,-0.20580658,0.118963584,-9.91951,-0.003437764,-0.005791901,0.0021153004 +23312000,imu,-0.20581272,0.13101488,-9.937124,-0.001829759,-0.004731339,0.0022611339 +23316000,imu,-0.18737952,0.14084162,-9.946167,0.0013086069,-0.0052526304,0.0015560158 +23316000,mag,0.008577932,-0.22139788,0.42452073 +23320000,imu,-0.19352975,0.15067266,-9.936949,0.002338847,-0.006679633,-0.002234958 +23324000,imu,-0.18533015,0.16969648,-9.9425535,0.0034280142,-0.005483275,-0.0005302917 +23328000,imu,-0.1670166,0.16933037,-9.954866,0.0014986175,-0.0050938926,0.0016723272 +23328000,baro,487.6568 +23328000,mag,0.009210069,-0.21624848,0.43045652 +23332000,imu,-0.18960664,0.1566482,-9.926125,-0.003068931,-0.005443239,-0.0010839207 +23336000,imu,-0.18901476,0.1558443,-9.929831,-0.004006472,-0.006939301,-0.0012211457 +23340000,mag,0.007417682,-0.2139257,0.42580748 +23340000,imu,-0.16003439,0.17862184,-9.932251,-0.0016158995,-0.0070202705,0.0025667027 +23344000,imu,-0.16084132,0.17859146,-9.894993,0.0018034668,-0.0054831007,0.0021352249 +23348000,imu,-0.17781493,0.17189126,-9.88855,0.0026002754,-0.008067669,-0.00046018834 +23352000,mag,0.010505255,-0.22024326,0.4277244 +23352000,imu,-0.19170998,0.1837974,-9.911633,0.0024624988,-0.0061765504,-0.00058682717 +23356000,imu,-0.18931308,0.18225892,-9.925825,0.001645313,-0.0047299312,-0.001796686 +23360000,imu,-0.17227367,0.15711166,-9.958423,-0.0020216443,-0.00882684,-0.0010312721 +23364000,mag,0.012126646,-0.2169785,0.43081272 +23364000,imu,-0.16963038,0.15289463,-9.969545,0.00091507076,-0.008312157,-0.0002872113 +23368000,imu,-0.17754933,0.15883236,-9.934439,0.0014305263,-0.0059073702,-0.0029771058 +23372000,imu,-0.1826565,0.17586975,-9.92199,-0.0011835647,-0.0071832812,-0.0041210926 +23376000,mag,0.012776376,-0.2173191,0.43240467 +23376000,imu,-0.20017141,0.19904181,-9.931624,-0.00028118154,-0.0062070554,0.0008898372 +23380000,imu,-0.19390908,0.18459171,-9.937591,0.0018868278,-0.006072062,0.0017305934 +23384000,imu,-0.18588938,0.17525566,-9.958051,0.0034010888,-0.008136045,0.00022671527 +23388000,imu,-0.1751447,0.20352754,-9.995497,0.0022107183,-0.006897539,0.0011303431 +23388000,mag,0.010322747,-0.22000924,0.43519402 +23392000,imu,-0.16808158,0.21749969,-10.067089,0.0020583507,-0.0042854697,0.0024317645 +23396000,imu,-0.21170756,0.19338538,-10.113661,0.0029194702,-0.0046476983,-0.00048485873 +23400000,mag,0.009531162,-0.2162091,0.4262109 +23400000,imu,-0.21439138,0.19887921,-10.098873,0.0066413274,-0.005527037,-0.002819831 +23400000,baro,487.6333 +23404000,imu,-0.17609109,0.21749042,-10.092065,0.0091522485,-0.005488313,-0.003939004 +23408000,imu,-0.16121076,0.2184061,-10.111844,0.013842175,-0.0035333748,-0.004586509 +23412000,imu,-0.20081411,0.21332371,-10.150455,0.020857066,-0.0053815013,-0.0040068473 +23412000,mag,0.009893309,-0.21467881,0.42588475 +23416000,imu,-0.20902565,0.23653577,-10.178918,0.026672812,-0.006522233,-0.00027930364 +23420000,imu,-0.17891993,0.244842,-10.195646,0.02975479,-0.0047377446,0.0024186084 +23424000,mag,0.009994094,-0.21736723,0.42915872 +23424000,imu,-0.19463447,0.2117364,-10.241664,0.036438696,-0.004188098,0.00010943394 +23428000,imu,-0.21037132,0.21085842,-10.290234,0.043494627,-0.0058309883,0.0024460775 +23432000,mag,0.015747739,-0.21747938,0.43106496 +23432000,imu,-0.20452318,0.23325396,-10.306292,0.047907673,-0.00622068,0.004508444 +23436000,imu,-0.17725447,0.23467225,-10.307123,0.053486556,-0.0048297965,0.00070031546 +23440000,imu,-0.1772435,0.2277422,-10.32709,0.059393995,-0.0068708146,0.00027729542 +23444000,imu,-0.19280624,0.21205933,-10.303731,0.068430156,-0.007919725,-0.00013160749 +23448000,mag,0.011204957,-0.2161509,0.43203104 +23448000,imu,-0.19524992,0.20820332,-10.324043,0.07915132,-0.0077043776,-0.0008473041 +23452000,imu,-0.1939196,0.22217786,-10.376244,0.08726831,-0.006267922,0.0021076202 +23452000,gps,488100.0,85456074.0,473977508.0,-0.01,0.01,-0.01 +23456000,imu,-0.19606295,0.21696535,-10.357585,0.092422314,-0.00688562,0.0013661929 +23460000,imu,-0.18623051,0.22608927,-10.3462105,0.09805745,-0.0072115385,-0.0018657133 +23460000,mag,0.013861813,-0.20911811,0.42502812 +23464000,imu,-0.1699655,0.25366306,-10.329727,0.10430669,-0.0056237816,-0.0014548352 +23468000,imu,-0.19112033,0.2731681,-10.330405,0.112673655,-0.0054047573,0.0025907499 +23472000,imu,-0.19322437,0.22970696,-10.355833,0.119142614,-0.005338444,-0.0018087662 +23472000,baro,487.60983 +23472000,mag,0.006348853,-0.21566965,0.43562046 +23476000,imu,-0.18313727,0.19688004,-10.329593,0.12766115,-0.006592043,-0.0048616887 +23480000,imu,-0.19146894,0.19936535,-10.3092785,0.13407475,-0.007168527,-0.00332612 +23484000,imu,-0.1726479,0.19172154,-10.321433,0.13824745,-0.0046770326,0.0018133762 +23484000,mag,0.011819021,-0.2154451,0.43493643 +23488000,imu,-0.16112536,0.18636322,-10.282036,0.1454378,-0.0028997948,0.004408142 +23492000,imu,-0.19015725,0.1820959,-10.281855,0.15189616,-0.0061376,0.0007526111 +23496000,mag,0.015550119,-0.21492094,0.43332872 +23496000,imu,-0.15861514,0.19056793,-10.298573,0.16019833,-0.008194743,0.0024694828 +23500000,imu,-0.133199,0.17746012,-10.24008,0.16642281,-0.0056693424,0.00064340705 +23504000,imu,-0.14696777,0.16631772,-10.256083,0.16934787,-0.006378848,-0.0024492987 +23508000,mag,0.009152421,-0.20822594,0.42848206 +23508000,imu,-0.17583698,0.1930218,-10.273771,0.17507592,-0.0063292608,-0.00022369668 +23512000,imu,-0.19707853,0.2057947,-10.257598,0.1809302,-0.003082695,0.00077276136 +23516000,imu,-0.19781506,0.170428,-10.278015,0.18479054,-0.0013755495,0.00044317695 +23520000,imu,-0.16741486,0.12764674,-10.2486725,0.1883148,-0.000112310896,0.003954795 +23520000,mag,0.0048482246,-0.20632422,0.43238175 +23524000,imu,-0.14287008,0.08582355,-10.255156,0.19209626,0.0012325131,0.0043516215 +23528000,imu,-0.16272098,0.094114326,-10.311304,0.19386214,0.00080149015,0.0032517312 +23532000,mag,0.010356804,-0.21409811,0.43607542 +23532000,imu,-0.1554021,0.13186368,-10.293038,0.19593455,0.0056133736,0.0055748615 +23536000,imu,-0.1788253,0.14322051,-10.2400875,0.1947998,0.011363543,0.007029565 +23540000,imu,-0.16783385,0.10838951,-10.227716,0.19413967,0.017538225,0.0096557345 +23544000,mag,0.006040154,-0.20567903,0.43263382 +23544000,baro,487.5582 +23544000,imu,-0.15330356,0.08243607,-10.256093,0.19517642,0.026710216,0.009945579 +23548000,imu,-0.21148422,0.10880708,-10.281282,0.1951792,0.035340868,0.009153776 +23552000,imu,-0.22403029,0.085799895,-10.27476,0.19744325,0.04274495,0.013736364 +23556000,imu,-0.18989518,0.06746299,-10.232644,0.19317332,0.047742505,0.016928362 +23556000,mag,0.009987922,-0.20504779,0.42996272 +23560000,imu,-0.15306765,0.07519501,-10.191933,0.1912058,0.05269761,0.016908476 +23564000,imu,-0.15725037,0.07420214,-10.1784725,0.19025868,0.062336642,0.021569198 +23568000,mag,0.010274067,-0.20931557,0.4391394 +23568000,imu,-0.18627116,0.12011552,-10.197033,0.18676384,0.07139773,0.023446409 +23572000,imu,-0.16844624,0.14189462,-10.215494,0.18485814,0.07680393,0.02075272 +23576000,imu,-0.16941059,0.14284353,-10.212267,0.18316843,0.08002715,0.019240936 +23580000,mag,0.0025495244,-0.20934615,0.438223 +23580000,imu,-0.19751823,0.1733857,-10.205122,0.17886478,0.08781958,0.021373041 +23584000,imu,-0.15486166,0.1758418,-10.217832,0.17809375,0.09735297,0.024515102 +23588000,imu,-0.15902357,0.15444623,-10.251926,0.17477557,0.10200091,0.020926462 +23592000,mag,0.007735076,-0.20204048,0.43136448 +23592000,imu,-0.20097195,0.111805275,-10.270512,0.16865714,0.10493012,0.018638385 +23596000,imu,-0.19024852,0.10738688,-10.287224,0.1663507,0.10660542,0.021049688 +23600000,imu,-0.17351234,0.16217996,-10.277256,0.16198297,0.11115409,0.021376401 +23604000,imu,-0.15739383,0.1783612,-10.319279,0.15692294,0.11353147,0.018577432 +23604000,mag,0.0022694122,-0.20654403,0.42493755 +23608000,imu,-0.1732853,0.1585849,-10.342468,0.14692417,0.11271784,0.018523501 +23612000,imu,-0.19014804,0.1763875,-10.335176,0.13594005,0.11261973,0.0183657 +23616000,imu,-0.17171563,0.17771448,-10.3608265,0.12705284,0.11225335,0.019476498 +23616000,mag,0.011533547,-0.19708422,0.4363851 +23616000,baro,487.66617 +23620000,imu,-0.15319642,0.16641723,-10.363537,0.122343846,0.10605088,0.017846156 +23624000,imu,-0.16044655,0.17305516,-10.404328,0.117053986,0.10240079,0.016078386 +23628000,mag,0.0034067729,-0.19419016,0.43891317 +23628000,imu,-0.14588164,0.15961228,-10.427134,0.10375122,0.10193378,0.01896856 +23632000,imu,-0.17653553,0.16311382,-10.41827,0.09289501,0.09639553,0.018961204 +23636000,imu,-0.2219138,0.15495633,-10.412485,0.08089301,0.09020493,0.018658908 +23640000,mag,0.006268896,-0.20205821,0.43747097 +23640000,imu,-0.20543775,0.15473363,-10.4222975,0.072121896,0.08288132,0.016781569 +23644000,imu,-0.18824643,0.17744784,-10.474462,0.06845644,0.078485206,0.014263301 +23648000,imu,-0.1601646,0.18283452,-10.522028,0.058057874,0.07706358,0.015482807 +23652000,mag,0.0062160697,-0.19901559,0.43559524 +23652000,imu,-0.15178344,0.18488485,-10.506872,0.045440525,0.07228123,0.017432554 +23656000,imu,-0.17493238,0.19814236,-10.468007,0.036891237,0.06657814,0.018435488 +23660000,imu,-0.1696637,0.1885894,-10.482494,0.03104809,0.060926624,0.019078618 +23660000,mag,0.0040637874,-0.20355462,0.43611374 +23664000,imu,-0.17929973,0.16236992,-10.496693,0.022634694,0.05464399,0.016536547 +23668000,imu,-0.18096632,0.15841073,-10.505594,0.015084415,0.051796094,0.01448984 +23672000,imu,-0.19250175,0.17050482,-10.4942875,0.0065986365,0.048763197,0.012513902 +23676000,imu,-0.17114928,0.1899442,-10.496976,-0.0021633736,0.04193328,0.012399919 +23676000,mag,0.0027257914,-0.20636414,0.4388214 +23680000,imu,-0.1506617,0.18005706,-10.543655,-0.01055259,0.0410522,0.01393231 +23684000,imu,-0.1841172,0.15577683,-10.561504,-0.020088175,0.040118035,0.0137337325 +23688000,imu,-0.17613018,0.16081773,-10.547025,-0.0244454,0.03480377,0.0155247 +23688000,mag,0.004872911,-0.20567416,0.4356666 +23688000,baro,487.60513 +23692000,imu,-0.17566386,0.17227654,-10.536604,-0.029142365,0.028808476,0.012600752 +23696000,imu,-0.17587757,0.18873094,-10.530436,-0.038290482,0.020371413,0.009344189 +23700000,mag,0.0015628663,-0.20142967,0.43360797 +23700000,imu,-0.17870566,0.21318555,-10.521149,-0.046435215,0.015440255,0.013209917 +23704000,imu,-0.20609364,0.19643444,-10.5097,-0.051471364,0.012997319,0.011771532 +23708000,imu,-0.22162029,0.19166155,-10.511074,-0.058836646,0.012614196,0.009623962 +23712000,mag,0.0070934948,-0.20283069,0.43708122 +23712000,imu,-0.1874048,0.20089535,-10.5259495,-0.06524102,0.011876962,0.008463929 +23716000,imu,-0.16990682,0.18198918,-10.517745,-0.06659308,0.005954645,0.008524689 +23720000,imu,-0.18566342,0.16674578,-10.515228,-0.068730004,-0.0013482197,0.011764577 +23724000,mag,0.0039553563,-0.2026114,0.44094887 +23724000,imu,-0.17719151,0.17817774,-10.492211,-0.07521759,-0.0011236818,0.0122866025 +23728000,imu,-0.15125607,0.16833593,-10.473501,-0.081948586,-0.0021686843,0.0117170615 +23732000,imu,-0.14423446,0.15525208,-10.493873,-0.0846603,-0.00899355,0.0113921305 +23736000,mag,0.003269104,-0.20496733,0.42820928 +23736000,imu,-0.15568167,0.18766615,-10.491238,-0.08888736,-0.008005077,0.009222123 +23740000,imu,-0.15438446,0.19617742,-10.443298,-0.09166654,-0.008417057,0.0063103233 +23744000,imu,-0.16926008,0.15889947,-10.471029,-0.09455147,-0.014782266,0.00860408 +23748000,mag,0.008000089,-0.20164832,0.4323706 +23748000,imu,-0.21372733,0.15940136,-10.483957,-0.100615665,-0.020130344,0.010068134 +23752000,imu,-0.2063578,0.14374787,-10.446436,-0.10469907,-0.023372838,0.009246082 +23756000,imu,-0.19684035,0.12893273,-10.46324,-0.10917897,-0.025800623,0.009643508 +23760000,mag,0.0045436607,-0.21322443,0.43834138 +23760000,imu,-0.18844783,0.15595484,-10.455837,-0.1107685,-0.026734158,0.008253961 +23760000,baro,487.68967 +23764000,imu,-0.17405686,0.15361637,-10.45027,-0.11010856,-0.027282583,0.0064413077 +23768000,imu,-0.20575666,0.16522487,-10.472563,-0.11500386,-0.030360576,0.0075394553 +23772000,mag,0.0035268997,-0.20905142,0.43427137 +23772000,imu,-0.21122545,0.15021281,-10.458219,-0.11661506,-0.033387426,0.00833679 +23776000,imu,-0.172236,0.1419397,-10.426985,-0.11941672,-0.036895353,0.0070007048 +23780000,imu,-0.15697297,0.1802331,-10.43085,-0.12581767,-0.040944986,0.006592343 +23784000,imu,-0.19018736,0.16058157,-10.4165,-0.12417391,-0.039029453,0.008266967 +23784000,mag,0.0051538763,-0.2058383,0.44324946 +23788000,imu,-0.19774786,0.15408503,-10.428942,-0.12232919,-0.03963874,0.008937584 +23792000,imu,-0.1785056,0.20015876,-10.458893,-0.12816858,-0.04138818,0.006884241 +23796000,mag,0.007159812,-0.20184971,0.43466994 +23796000,imu,-0.15803696,0.16049586,-10.456173,-0.12735464,-0.043444034,0.0059262444 +23800000,imu,-0.15782252,0.120386325,-10.446691,-0.12769523,-0.04608117,0.0058074794 +23804000,imu,-0.18077356,0.13803022,-10.435301,-0.13243872,-0.045124248,0.0076642544 +23808000,imu,-0.19130358,0.124959186,-10.448183,-0.13032106,-0.048556246,0.008406675 +23808000,mag,0.0019282107,-0.20422223,0.43238217 +23812000,imu,-0.17451873,0.1556212,-10.4779625,-0.13083218,-0.049085706,0.008155149 +23816000,imu,-0.15051574,0.17104417,-10.460965,-0.13315292,-0.046277963,0.007294535 +23820000,imu,-0.14945173,0.1559926,-10.428625,-0.13272244,-0.04858641,0.005564131 +23820000,mag,0.0035539018,-0.20429921,0.4337002 +23824000,imu,-0.18012305,0.17930561,-10.4350395,-0.1290448,-0.05133296,0.0056881006 +23828000,imu,-0.19663864,0.16882075,-10.433018,-0.12770388,-0.05272644,0.006214876 +23832000,mag,0.0068934527,-0.20966412,0.43573898 +23832000,imu,-0.17831555,0.14321946,-10.413544,-0.12906298,-0.05599392,0.0067347325 +23832000,baro,487.69904 +23836000,imu,-0.16352127,0.16997966,-10.398718,-0.12931469,-0.056869432,0.0070524607 +23840000,imu,-0.14111368,0.16426344,-10.412298,-0.12540613,-0.05785477,0.010249791 +23844000,mag,0.0033165836,-0.21213011,0.43095225 +23844000,imu,-0.1531238,0.1320071,-10.443938,-0.12400638,-0.058530185,0.00838169 +23848000,imu,-0.17518154,0.14487123,-10.451365,-0.12586756,-0.05854894,0.0033801135 +23852000,gps,488119.0,85456074.0,473977507.0,-0.08,-0.02,-0.14999999 +23852000,mag,0.004969298,-0.20497094,0.43456325 +23852000,imu,-0.15487723,0.14956923,-10.487957,-0.12588795,-0.058560245,0.003819819 +23856000,imu,-0.17962536,0.13907038,-10.484213,-0.12543614,-0.061792895,0.0062773586 +23860000,imu,-0.2146914,0.15752354,-10.455511,-0.121137574,-0.06216295,0.005488449 +23864000,imu,-0.17627835,0.17553164,-10.479105,-0.1218331,-0.05962457,0.0002940347 +23868000,imu,-0.14840445,0.14700623,-10.470861,-0.120324455,-0.06020052,0.0012242821 +23868000,mag,0.006284265,-0.2071501,0.43473434 +23872000,imu,-0.18711638,0.14974315,-10.47831,-0.11523119,-0.060542263,0.0029157181 +23876000,imu,-0.20181176,0.1923994,-10.473284,-0.11538753,-0.060427405,0.00259787 +23880000,imu,-0.18438295,0.16924815,-10.455013,-0.11485464,-0.060831074,0.0068991957 +23880000,mag,0.00911222,-0.21476766,0.4306686 +23884000,imu,-0.18698025,0.13780223,-10.477545,-0.11305904,-0.0625589,0.008474422 +23888000,imu,-0.17031753,0.119210534,-10.46819,-0.10874362,-0.061829347,0.002159115 +23892000,mag,-0.0012568805,-0.20931537,0.43666154 +23892000,imu,-0.14505893,0.108798936,-10.45126,-0.10749975,-0.06002251,0.00045754435 +23896000,imu,-0.14805329,0.1503023,-10.456725,-0.10838778,-0.05862223,0.005929522 +23900000,baro,487.66617 +23900000,mag,0.009956471,-0.21022327,0.42945334 +23900000,imu,-0.15880221,0.15931608,-10.475077,-0.10451494,-0.057034995,0.003665011 +23904000,imu,-0.19912264,0.14297177,-10.494226,-0.102908805,-0.05491377,-5.902934e-05 +23908000,imu,-0.22634088,0.15308335,-10.486482,-0.10633162,-0.056056973,0.001513414 +23912000,imu,-0.20599136,0.1596652,-10.4632225,-0.10073555,-0.056772523,0.0032617801 +23916000,mag,0.009099018,-0.20713043,0.43224615 +23916000,imu,-0.1957998,0.1625253,-10.471679,-0.09685021,-0.057813343,0.004346789 +23920000,imu,-0.18350253,0.16963342,-10.51284,-0.10226855,-0.05583799,0.0029839224 +23924000,imu,-0.1567305,0.1421763,-10.4918,-0.098760106,-0.054616455,0.0014218121 +23928000,mag,0.0037549653,-0.21516193,0.431876 +23928000,imu,-0.1546222,0.13143286,-10.467954,-0.09543646,-0.055919014,0.0016665313 +23932000,imu,-0.16838226,0.14509572,-10.479685,-0.09725282,-0.053985126,0.0009389966 +23936000,imu,-0.17875886,0.12218238,-10.485867,-0.094760105,-0.053745795,0.00081530533 +23940000,mag,0.0076798974,-0.20920779,0.43647867 +23940000,imu,-0.1985954,0.13283716,-10.466213,-0.09240193,-0.05345361,0.0019163694 +23944000,imu,-0.20283785,0.15517828,-10.454798,-0.0938184,-0.05198852,0.00091710966 +23948000,imu,-0.16211723,0.16594608,-10.457817,-0.091847494,-0.05007896,0.000256236 +23948000,mag,0.007475463,-0.21152939,0.42768583 +23952000,baro,487.7225 +23952000,imu,-0.1581071,0.16088259,-10.457497,-0.08593402,-0.04835895,0.0015744868 +23956000,imu,-0.17959109,0.15021211,-10.465602,-0.08293015,-0.047093652,0.0017352011 +23960000,imu,-0.17343235,0.17371167,-10.442907,-0.07975167,-0.050189894,0.0016240592 +23964000,mag,0.0131846955,-0.20712414,0.42859355 +23964000,imu,-0.18910228,0.16854417,-10.459467,-0.07588695,-0.051776927,0.0026742488 +23968000,imu,-0.1762475,0.13525565,-10.465572,-0.06992791,-0.04833299,0.00309029 +23972000,imu,-0.1815312,0.13386449,-10.450806,-0.059670966,-0.045057412,0.0037217736 +23972000,mag,0.0048210523,-0.21510644,0.42826462 +23976000,imu,-0.17406857,0.14610702,-10.445949,-0.05127215,-0.040322345,0.0032960076 +23980000,imu,-0.12166201,0.13481694,-10.409718,-0.04724354,-0.036200065,0.00065273466 +23984000,imu,-0.14635703,0.15964724,-10.392458,-0.040723845,-0.03670474,0.0023472419 +23988000,mag,0.0031694395,-0.21446896,0.430307 +23988000,imu,-0.17896882,0.16574872,-10.430922,-0.034003757,-0.033451132,0.0029180676 +23992000,imu,-0.17589006,0.13057984,-10.439455,-0.027836677,-0.027666515,0.0029102874 +23996000,imu,-0.18114743,0.13834684,-10.440729,-0.020735646,-0.026166663,0.0049121925 +24000000,imu,-0.17919865,0.1580844,-10.451737,-0.012504095,-0.027141247,0.004192426 +24000000,mag,0.010537601,-0.22117269,0.43243983 +24004000,imu,-0.16790897,0.15452287,-10.429495,-0.0041812416,-0.025433723,0.0015074641 +24008000,imu,-0.16844702,0.14365834,-10.4018955,0.0020477315,-0.023270072,0.00030688065 +24012000,mag,0.007018119,-0.21762696,0.42516473 +24012000,imu,-0.1600419,0.15969038,-10.407046,0.010790316,-0.022331204,0.0014737817 +24016000,imu,-0.16507474,0.13567038,-10.429874,0.018719614,-0.019223701,0.00081422296 +24020000,mag,0.007310631,-0.21476464,0.43237218 +24020000,imu,-0.15893878,0.10744532,-10.441959,0.021368394,-0.017345596,0.00020312142 +24020000,baro,487.60513 +24024000,imu,-0.13376328,0.17316297,-10.438578,0.026897386,-0.014980916,0.001983641 +24028000,imu,-0.15868159,0.19469173,-10.444929,0.0347233,-0.012090912,0.0026776697 +24032000,imu,-0.17061025,0.16938494,-10.453774,0.04142734,-0.008558602,0.002104868 +24036000,imu,-0.15884614,0.17896158,-10.416157,0.043495357,-0.0055504055,0.0016390525 +24036000,mag,0.010810583,-0.21443827,0.4299004 +24040000,imu,-0.18180689,0.1541713,-10.409393,0.04407626,-0.00550632,-0.00027497535 +24044000,imu,-0.18718508,0.123106904,-10.401211,0.048292533,-0.0026825294,0.0013023373 +24048000,imu,-0.15646622,0.13303177,-10.401667,0.05156943,0.00047383842,0.00022055372 +24048000,mag,0.01338103,-0.21310896,0.43026412 +24052000,imu,-0.1723243,0.14481331,-10.406019,0.056344062,0.003427172,-0.0018088073 +24056000,imu,-0.21689638,0.15509221,-10.398567,0.056783933,0.0039233095,0.0006897979 +24060000,imu,-0.20277408,0.13896583,-10.428263,0.058878466,0.0022597557,0.00026199297 +24060000,mag,0.008740521,-0.21170144,0.42987803 +24064000,imu,-0.17397046,0.13580285,-10.414894,0.060776584,0.0037565334,-0.0026096415 +24068000,mag,0.011398988,-0.22012116,0.42586246 +24068000,imu,-0.14814897,0.11674322,-10.403231,0.058309834,0.006637275,-0.0010310406 +24072000,baro,487.59576 +24072000,imu,-0.13769884,0.13391618,-10.429322,0.05949912,0.0081353625,-0.00037286998 +24076000,imu,-0.15582842,0.18503848,-10.426838,0.060971398,0.008879267,-0.0047883936 +24080000,imu,-0.16896975,0.1600015,-10.412386,0.057819765,0.012253225,-0.0031261644 +24080000,landed,0.0 +24084000,imu,-0.15477048,0.13371952,-10.392065,0.058714967,0.014914028,0.00037386356 +24084000,mag,0.010727516,-0.21245655,0.43049395 +24088000,imu,-0.15876478,0.13751748,-10.366489,0.060326423,0.0132438755,-0.00065480283 +24092000,imu,-0.17376089,0.16340655,-10.39275,0.054917447,0.013425637,-0.0010268406 +24096000,imu,-0.17864743,0.14766857,-10.426199,0.05729428,0.014589006,-0.0009649338 +24096000,mag,0.004831119,-0.21009834,0.42961663 +24100000,imu,-0.174662,0.12042939,-10.4262905,0.058340617,0.013433145,0.00031701065 +24104000,imu,-0.15182203,0.14487873,-10.430262,0.05651106,0.014726911,0.0049440684 +24108000,imu,-0.16155137,0.18003166,-10.429283,0.056453306,0.013149019,0.0012391316 +24108000,mag,0.0078122313,-0.21106347,0.42937827 +24112000,imu,-0.17262585,0.18439789,-10.433968,0.051935356,0.011378652,-8.144352e-05 +24116000,mag,0.009208608,-0.21167427,0.43374956 +24116000,imu,-0.17453127,0.15602253,-10.463589,0.052098498,0.011966882,0.0022866353 +24120000,imu,-0.18427582,0.13873707,-10.468775,0.051024333,0.011670633,-0.00269236 +24124000,imu,-0.16473995,0.1478137,-10.440094,0.049013283,0.012961818,-0.0020862946 +24128000,imu,-0.15050566,0.17193493,-10.439192,0.049811285,0.014658742,0.0028729339 +24132000,mag,0.009134744,-0.21171638,0.4334564 +24132000,imu,-0.15005869,0.14789797,-10.426748,0.049771342,0.014080517,0.0021158678 +24136000,imu,-0.14282173,0.15260553,-10.431205,0.04777941,0.014175712,0.0006212338 +24140000,imu,-0.17163959,0.16834804,-10.444122,0.0440499,0.011310536,0.0019623449 +24144000,mag,0.008154606,-0.209661,0.43749732 +24144000,baro,487.76007 +24144000,imu,-0.17729564,0.15652025,-10.460902,0.044021364,0.009328498,0.0027108134 +24148000,imu,-0.1522593,0.1440455,-10.465182,0.04585421,0.0096230265,0.0012280158 +24152000,imu,-0.18404502,0.09723588,-10.446567,0.048528586,0.011697062,-0.0015042602 +24156000,mag,0.006527028,-0.20769736,0.42706048 +24156000,imu,-0.19145568,0.11673211,-10.451019,0.0462643,0.010814035,-0.0011219861 +24160000,imu,-0.1679163,0.1364208,-10.457291,0.042196434,0.009715093,0.00017752268 +24164000,imu,-0.1799742,0.14403966,-10.456421,0.044156816,0.010830385,0.0011001595 +24168000,imu,-0.18751135,0.1490245,-10.454414,0.043314256,0.007009543,-0.001018024 +24168000,mag,0.011227145,-0.20538352,0.43288985 +24172000,imu,-0.20168507,0.14927916,-10.448858,0.040580466,0.008771456,-0.0011256335 +24176000,imu,-0.18985462,0.14322548,-10.45237,0.041360103,0.008997798,0.0021874378 +24180000,mag,0.008106856,-0.21249975,0.43065393 +24180000,imu,-0.16023995,0.14385198,-10.466043,0.03835809,0.0053971987,0.0024643329 +24184000,imu,-0.16710903,0.17335847,-10.440568,0.035574272,0.0074704364,0.002744372 +24188000,imu,-0.20986632,0.16369474,-10.446007,0.03518955,0.0106261,0.0005302067 +24192000,mag,0.007791396,-0.21763913,0.43508607 +24192000,imu,-0.19554129,0.1349699,-10.445759,0.032512583,0.008774897,0.00054179836 +24196000,imu,-0.1615851,0.13843653,-10.428619,0.030464975,0.0074376035,0.003596249 +24200000,imu,-0.17789894,0.16097036,-10.436716,0.028804502,0.0090635,0.0033675898 +24204000,imu,-0.1856755,0.14910191,-10.465563,0.026584601,0.008580884,0.0011897677 +24204000,mag,0.0061962944,-0.21721907,0.4386106 +24208000,imu,-0.15517366,0.13406193,-10.493959,0.027381985,0.0032535587,0.0027316883 +24212000,imu,-0.16663617,0.16656007,-10.509478,0.02771253,0.0015005972,0.0061561526 +24216000,imu,-0.20772131,0.1795833,-10.476751,0.023063,0.005062857,0.004103283 +24216000,mag,0.002757214,-0.21507668,0.42925203 +24216000,baro,487.80704 +24220000,imu,-0.20545219,0.13790296,-10.444658,0.022449965,0.0020910578,0.0024273428 +24224000,imu,-0.1979302,0.12902474,-10.461567,0.02617097,-0.003021187,0.0028185328 +24228000,mag,0.0007220425,-0.21280026,0.43081307 +24228000,imu,-0.19021398,0.15497465,-10.476305,0.023125475,-0.003067823,0.0016327613 +24232000,imu,-0.17141572,0.17269754,-10.491159,0.016752128,-0.00047093007,0.00091776805 +24236000,imu,-0.14806028,0.14600669,-10.489021,0.014912475,0.002260651,-0.0005936068 +24240000,mag,0.0063430388,-0.20828514,0.43354368 +24240000,imu,-0.1374186,0.1475752,-10.471874,0.014181163,0.00034794083,0.0009251386 +24244000,imu,-0.1867247,0.16768703,-10.496715,0.0153076,-0.00436428,-0.0006411939 +24248000,imu,-0.21068333,0.13674782,-10.4960575,0.01814268,-0.0057098833,-0.0022965395 +24252000,imu,-0.17949486,0.13990596,-10.473231,0.01739396,-0.004786698,0.00097383064 +24252000,mag,0.010143799,-0.20731716,0.43212193 +24252000,gps,488218.0,85456072.0,473977503.0,-0.11,-0.06,-0.35 +24256000,imu,-0.18879116,0.1435103,-10.470753,0.012009196,-0.0015947748,0.00365879 +24260000,imu,-0.16246668,0.13049889,-10.444714,0.012520282,-0.00104172,0.002785348 +24264000,imu,-0.14706177,0.13890831,-10.452052,0.011315974,-0.0052726823,0.00049657165 +24264000,mag,0.0073594414,-0.20887521,0.43363503 +24268000,imu,-0.16819139,0.14966024,-10.48651,0.0065379697,-0.005977679,0.0014232772 +24272000,imu,-0.18718673,0.16452897,-10.492134,0.007143604,-0.0072975797,0.0030933018 +24276000,mag,0.0097787995,-0.21045958,0.43473765 +24276000,imu,-0.19656873,0.15325736,-10.453903,0.0050057215,-0.008188996,0.0014527226 +24280000,imu,-0.16981763,0.1403872,-10.423233,0.0024923547,-0.0076008174,-0.00083791016 +24284000,imu,-0.1518439,0.13039637,-10.436853,0.0011592624,-0.007268962,0.0029506804 +24288000,imu,-0.13377094,0.14109294,-10.452793,0.0030975821,-0.008406137,0.004992647 +24288000,mag,0.00083231303,-0.21008384,0.4342993 +24288000,baro,487.77887 +24292000,imu,-0.16165993,0.1543444,-10.467618,0.0042701527,-0.010122773,0.0045330143 +24296000,imu,-0.20190836,0.14427334,-10.485219,0.0016458342,-0.011546063,0.0021403385 +24300000,mag,0.010450016,-0.20796545,0.42943576 +24300000,imu,-0.17711587,0.15042223,-10.485773,-0.00064612174,-0.011313409,-0.0011163575 +24304000,imu,-0.16289327,0.15301841,-10.470248,0.00042403757,-0.011597742,0.0006455944 +24308000,imu,-0.15064248,0.14767443,-10.454613,0.0003720007,-0.013213435,0.0027715357 +24312000,mag,0.0070785168,-0.20075738,0.43295097 +24312000,imu,-0.14353012,0.14734173,-10.452091,-0.0044805487,-0.011400637,0.0016763825 +24316000,imu,-0.16343945,0.15915519,-10.457684,-0.0046754614,-0.012950564,-0.0017466769 +24320000,imu,-0.13847093,0.1581594,-10.471483,-0.00640791,-0.015988309,0.000393908 +24324000,imu,-0.13695346,0.13893704,-10.468973,-0.01096635,-0.016593508,0.00096726924 +24324000,mag,0.005179678,-0.21236244,0.43268925 +24328000,imu,-0.16894421,0.1313856,-10.475029,-0.009799119,-0.014172279,-0.00064299844 +24332000,imu,-0.17026442,0.1035791,-10.488817,-0.008096996,-0.016442906,0.002154353 +24336000,mag,0.00704842,-0.20519316,0.4356515 +24336000,imu,-0.18176055,0.12989345,-10.482584,-0.009679133,-0.0188485,0.0031342665 +24340000,imu,-0.19479662,0.16463687,-10.480427,-0.010889795,-0.017487593,0.00077337725 +24344000,imu,-0.21721429,0.14070956,-10.458527,-0.010634596,-0.016712967,0.00042146273 +24348000,mag,0.0017184862,-0.21774842,0.42980292 +24348000,imu,-0.23072976,0.16355503,-10.423311,-0.009195582,-0.01745946,0.002275197 +24352000,imu,-0.21240842,0.20069957,-10.426147,-0.009262176,-0.017974427,0.004189448 +24356000,imu,-0.1587562,0.1657686,-10.463099,-0.008555015,-0.015854701,0.002274319 +24360000,mag,0.00918465,-0.20536487,0.43176997 +24360000,imu,-0.16071643,0.12428828,-10.486879,-0.0077716056,-0.013478662,-0.00019056941 +24360000,baro,487.77417 +24364000,imu,-0.19829693,0.15737523,-10.469536,-0.0060855774,-0.011601332,0.0026230044 +24368000,imu,-0.1824569,0.15912777,-10.445514,-0.0024106787,-0.010011195,0.0013816933 +24372000,imu,-0.1639347,0.13673735,-10.446369,0.00040191857,-0.0049689314,-0.002284273 +24372000,mag,0.0073340316,-0.21498942,0.4358299 +24376000,imu,-0.16299127,0.12567824,-10.456025,0.0044262162,-0.0010944871,-0.0018022448 +24380000,imu,-0.16121641,0.12143204,-10.460602,0.011035676,0.0024378474,-0.0007907436 +24384000,imu,-0.15964076,0.12856117,-10.436598,0.015855847,0.005780309,-0.00060390384 +24384000,mag,0.0031653983,-0.20899305,0.43767992 +24388000,imu,-0.16258544,0.12850937,-10.452135,0.019028863,0.008147345,-0.0001987124 +24392000,imu,-0.16402219,0.1388226,-10.485956,0.028456025,0.012712068,-0.0006300244 +24396000,imu,-0.14110519,0.121630974,-10.472383,0.03354575,0.016973654,-0.00019163567 +24396000,mag,0.0075151836,-0.21055594,0.43294758 +24400000,imu,-0.13930303,0.14839977,-10.496918,0.0370248,0.021254446,0.0023796028 +24404000,imu,-0.17274636,0.18211348,-10.476539,0.042781003,0.024820251,0.0002710032 +24408000,imu,-0.18443531,0.15498602,-10.4413185,0.04787024,0.024998117,0.00013994263 +24408000,mag,0.0029283562,-0.2032676,0.43115893 +24412000,imu,-0.17831153,0.16183868,-10.451163,0.05499625,0.026973363,0.00048338893 +24416000,imu,-0.18386817,0.15540537,-10.43494,0.061586425,0.032873705,-0.0027318764 +24420000,imu,-0.17772484,0.15632783,-10.443892,0.06443891,0.034814484,-0.0021564888 +24420000,mag,0.010091593,-0.20774849,0.43559065 +24424000,imu,-0.18002328,0.13632323,-10.465895,0.06491612,0.03297174,-0.0031597542 +24428000,mag,0.009246632,-0.2069308,0.43653738 +24428000,imu,-0.20801023,0.10624419,-10.437876,0.06852891,0.034527767,-0.000836987 +24432000,imu,-0.20006636,0.13374291,-10.420412,0.07415727,0.040811703,-0.0028010902 +24432000,baro,487.85397 +24436000,imu,-0.19471613,0.16957831,-10.419429,0.07861783,0.043228045,-0.0025246625 +24440000,imu,-0.19796029,0.16113704,-10.408506,0.08310273,0.045284986,0.00038594342 +24444000,imu,-0.1859324,0.12578605,-10.425507,0.08613756,0.046084616,0.00039374008 +24444000,mag,0.005969746,-0.20753215,0.42889765 +24448000,imu,-0.15755177,0.09480541,-10.445269,0.08631105,0.04679727,0.0008238765 +24452000,imu,-0.1766153,0.13487196,-10.439154,0.08599733,0.04906965,-0.0011804737 +24456000,mag,0.0035481115,-0.20420481,0.429708 +24456000,imu,-0.20197672,0.17385948,-10.414948,0.08536208,0.049412437,7.431769e-05 +24460000,imu,-0.18244597,0.14582637,-10.40785,0.084792785,0.052200526,-0.0019721244 +24464000,imu,-0.1582555,0.15635826,-10.470251,0.08445754,0.05395817,-0.0041643805 +24468000,imu,-0.12001622,0.14695698,-10.468088,0.084470004,0.05455265,-0.0013828047 +24468000,mag,0.0028211165,-0.2113531,0.43555456 +24472000,imu,-0.13294333,0.13603152,-10.389363,0.08400919,0.05586224,-0.00041549964 +24476000,imu,-0.17361411,0.13029087,-10.392797,0.082688235,0.054748747,-0.0032726682 +24480000,imu,-0.1988785,0.14082548,-10.428089,0.08026201,0.053194553,-0.0037113202 +24480000,mag,0.005331744,-0.20872867,0.43623713 +24484000,imu,-0.19378081,0.15970096,-10.445257,0.079866454,0.052755892,-0.0021209395 +24488000,imu,-0.1533441,0.13775215,-10.418798,0.077756554,0.056626588,-0.0026398639 +24492000,imu,-0.15052763,0.14477333,-10.397772,0.07498397,0.05534152,-0.0025147914 +24492000,mag,0.000791065,-0.20697317,0.4398176 +24496000,imu,-0.16645381,0.15480149,-10.431065,0.07636144,0.05067052,-0.0042917184 +24500000,imu,-0.18153426,0.14338666,-10.446621,0.077701315,0.051462665,6.611233e-05 +24504000,baro,487.9291 +24504000,mag,0.006235875,-0.20489594,0.42664602 +24504000,imu,-0.16672662,0.15753382,-10.464346,0.075467385,0.04750167,0.00037247024 +24508000,imu,-0.14458826,0.1540134,-10.429279,0.07173926,0.045014326,-0.004901015 +24512000,imu,-0.17859584,0.11442381,-10.427745,0.06924968,0.046890773,-0.00057170657 +24516000,imu,-0.18709555,0.10368219,-10.472955,0.06775718,0.047373503,0.00031774986 +24516000,mag,0.0070747994,-0.20319715,0.43008152 +24520000,imu,-0.17082462,0.13874277,-10.467295,0.06858552,0.045901097,-0.0021115297 +24524000,imu,-0.17120302,0.14629199,-10.467299,0.07128592,0.043915324,-0.0008658981 +24528000,imu,-0.15311444,0.14709295,-10.427895,0.06947837,0.040227976,-0.00022149952 +24528000,mag,0.0069189053,-0.20246194,0.43519446 +24532000,imu,-0.109490044,0.14351974,-10.404549,0.06305919,0.038869314,0.0016970646 +24536000,imu,-0.1305976,0.12387747,-10.418811,0.062018212,0.04076983,0.0004017384 +24540000,imu,-0.1966426,0.1328421,-10.447475,0.06398718,0.040031824,-0.0024039082 +24540000,mag,0.006111802,-0.2037574,0.4284866 +24544000,imu,-0.1670175,0.11919178,-10.470863,0.06334344,0.035984546,-0.000564673 +24548000,imu,-0.15373048,0.099492855,-10.447798,0.06057904,0.032966096,-0.0020995482 +24552000,mag,0.0065686284,-0.21024577,0.4311279 +24552000,imu,-0.16924667,0.12150185,-10.455137,0.05624552,0.034324244,-0.0016873408 +24556000,imu,-0.17308238,0.11621658,-10.489208,0.05117333,0.033527955,-0.0005100194 +24560000,imu,-0.17660588,0.09463301,-10.480686,0.05087944,0.029698798,-0.0024364244 +24564000,mag,0.004582312,-0.20488057,0.4285027 +24564000,imu,-0.15060759,0.11606519,-10.473387,0.0502724,0.030839702,-0.001850953 +24568000,imu,-0.17142843,0.1428385,-10.462684,0.044918727,0.03264381,-0.002398482 +24572000,imu,-0.19770434,0.15032879,-10.449558,0.04263329,0.02971939,-0.0025251897 +24576000,mag,0.0050387895,-0.19693047,0.432125 +24576000,baro,487.96198 +24576000,imu,-0.19577327,0.14428788,-10.467509,0.04131387,0.0288923,-0.00016288832 +24580000,imu,-0.20085421,0.1307909,-10.463287,0.03446822,0.030489266,0.0014295971 +24584000,imu,-0.16879976,0.11304083,-10.459993,0.031576533,0.02712442,0.0005584155 +24588000,imu,-0.13741896,0.12988679,-10.505801,0.031028394,0.02254503,0.000714184 +24588000,mag,0.0050199693,-0.20545332,0.4354224 +24592000,imu,-0.16283834,0.16580456,-10.516257,0.03249116,0.019791093,0.0035146114 +24596000,imu,-0.19975734,0.1488953,-10.52129,0.03164281,0.019653076,0.0019433687 +24596000,mag,0.006573046,-0.2057733,0.43458536 +24600000,imu,-0.22807103,0.11555814,-10.52001,0.024868142,0.018294381,-0.0008534535 +24604000,imu,-0.2008251,0.123353064,-10.474365,0.024748934,0.015741922,4.4928216e-05 +24608000,imu,-0.18573964,0.12065548,-10.450684,0.025274651,0.01652821,0.00031905726 +24612000,mag,0.0015742193,-0.20513836,0.4416591 +24612000,imu,-0.18832447,0.0955209,-10.440306,0.024718419,0.019026542,-0.0010093764 +24616000,imu,-0.1646501,0.10847346,-10.465218,0.024276227,0.01482846,-0.0011794561 +24620000,imu,-0.19757842,0.14107728,-10.502802,0.02264762,0.01100617,0.00077665417 +24624000,imu,-0.21084587,0.16402468,-10.509243,0.021414887,0.0136166485,0.0010365905 +24624000,mag,0.0034252186,-0.20946425,0.43596357 +24628000,imu,-0.17730957,0.14141546,-10.491352,0.02129402,0.010951895,-0.0002956591 +24632000,imu,-0.17836037,0.14237797,-10.464567,0.019292776,0.007567032,-0.0003089402 +24636000,imu,-0.1715048,0.1592482,-10.469391,0.01555328,0.00659332,-0.001202219 +24636000,mag,0.0015327755,-0.20454228,0.43354097 +24640000,imu,-0.18034099,0.11545496,-10.496693,0.015002868,0.0063770385,-0.0008443656 +24644000,mag,0.0009185939,-0.20652983,0.43121362 +24644000,imu,-0.17677747,0.11584574,-10.612091,0.012982308,0.006192566,0.0036852513 +24648000,imu,-0.15245053,0.14298578,-10.787676,0.008864154,0.005069355,0.000685589 +24648000,baro,487.99014 +24652000,gps,488414.0,85456070.0,473977499.0,-0.14,-0.03,-0.59 +24652000,imu,-0.15383983,0.15316924,-10.905537,0.0073838183,0.004260276,-0.0035321258 +24656000,imu,-0.14432883,0.1595402,-11.00321,0.005001601,0.0019548119,-0.0022516306 +24656000,mag,0.0075472607,-0.20316432,0.43706408 +24660000,imu,-0.17135885,0.1547716,-11.09955,0.00483981,0.0010314496,-0.0012239169 +24664000,imu,-0.19960405,0.17453547,-11.144661,0.003595802,-0.00018433302,0.001335275 +24668000,imu,-0.16492581,0.1666649,-11.148996,-0.0018441064,-0.0030213029,0.0018783035 +24672000,imu,-0.16405568,0.11946344,-11.183548,-0.0049542277,-0.0016016605,0.0008632139 +24672000,mag,0.00013013516,-0.19722575,0.4309534 +24676000,imu,-0.18609047,0.12686405,-11.199377,-0.004629829,-0.0030892633,0.0037941157 +24680000,imu,-0.17014973,0.15829536,-11.192256,-0.007133559,-0.006415455,0.009129131 +24684000,imu,-0.15457624,0.15367647,-11.207132,-0.008514699,-0.008482841,0.006345462 +24684000,mag,0.008625547,-0.20227626,0.44099006 +24688000,imu,-0.16818774,0.15769032,-11.238555,-0.0034209609,-0.010768347,0.00086256664 +24692000,imu,-0.16848502,0.15738595,-11.250124,-0.0061728694,-0.01174112,-0.00057496375 +24696000,mag,0.0014492477,-0.20292057,0.4391844 +24696000,imu,-0.13863607,0.14635348,-11.219412,-0.01599573,-0.014768433,7.153578e-05 +24700000,imu,-0.13453627,0.1353579,-11.195513,-0.01694382,-0.016767757,0.0066600153 +24704000,imu,-0.14215621,0.1197759,-11.170904,-0.015426065,-0.018874997,0.0039692484 +24708000,imu,-0.15068638,0.11348139,-11.108226,-0.016529202,-0.018048933,0.00022763482 +24708000,mag,-0.0035145406,-0.2084013,0.43494397 +24712000,imu,-0.13755953,0.096598156,-11.05264,-0.016760673,-0.017027114,0.00082997873 +24716000,imu,-0.15357122,0.08589402,-11.027393,-0.018704813,-0.021033077,0.00048292786 +24720000,mag,0.006988017,-0.20027675,0.43804622 +24720000,imu,-0.18047255,0.090438604,-11.016594,-0.021683095,-0.022894016,0.003117596 +24720000,baro,488.06995 +24724000,imu,-0.17405814,0.123751715,-11.009693,-0.021330683,-0.024381008,0.003944299 +24728000,imu,-0.17454097,0.15990742,-10.956502,-0.02533975,-0.024957526,0.005261597 +24732000,imu,-0.17439224,0.16393575,-10.900601,-0.028816195,-0.020879146,0.0028263342 +24732000,mag,0.0010475527,-0.200159,0.43020737 +24736000,imu,-0.18662049,0.13642095,-10.846073,-0.029322052,-0.020380171,0.00088283664 +24740000,imu,-0.19187576,0.11561139,-10.776181,-0.030436985,-0.025004733,0.00052233716 +24744000,imu,-0.21022977,0.13124336,-10.746271,-0.029640285,-0.027649121,0.0012852377 +24744000,mag,0.0050313864,-0.20142123,0.43121403 +24748000,imu,-0.207365,0.12452532,-10.696468,-0.03465542,-0.023707654,0.0046027885 +24752000,imu,-0.20083924,0.11158266,-10.628042,-0.03446443,-0.019048503,0.002026555 +24756000,imu,-0.17820661,0.12561028,-10.562139,-0.029481057,-0.022586003,0.00014367276 +24756000,mag,0.0004704655,-0.20495182,0.43203118 +24760000,imu,-0.16518763,0.12813073,-10.507255,-0.026928086,-0.022540877,0.0005913471 +24764000,imu,-0.17805475,0.121239364,-10.504828,-0.03001917,-0.020952962,-0.002133863 +24768000,mag,0.0009017156,-0.1986954,0.43471918 +24768000,imu,-0.17636698,0.1158285,-10.487703,-0.028704597,-0.02228207,-0.0008163506 +24772000,imu,-0.16709313,0.14303656,-10.382496,-0.02178742,-0.021275865,0.00108493 +24776000,imu,-0.14825279,0.14165589,-10.3074665,-0.018250598,-0.020853218,-0.0012094239 +24780000,imu,-0.13888267,0.1306324,-10.278532,-0.015346872,-0.019949172,-0.002392674 +24780000,mag,-0.00023724092,-0.20044899,0.4354571 +24784000,imu,-0.12893157,0.13612467,-10.211586,-0.013414808,-0.01851277,0.00091082236 +24788000,imu,-0.13216662,0.11831631,-10.239937,-0.006670075,-0.017684702,0.0044500562 +24792000,mag,0.0022113535,-0.20698263,0.43595913 +24792000,imu,-0.14951666,0.1308802,-10.251726,-0.0026479494,-0.01940179,0.002043254 +24792000,baro,488.0887 +24796000,imu,-0.16125584,0.14238317,-10.185396,-0.00015262612,-0.019091671,0.000625262 +24800000,imu,-0.17126536,0.12291463,-10.152875,0.0053808065,-0.017213741,0.0011206628 +24804000,imu,-0.16280095,0.09093801,-10.11762,0.009335764,-0.013384455,0.00021737341 +24804000,mag,0.0064326087,-0.20264143,0.43958804 +24808000,imu,-0.15180038,0.09390689,-10.099396,0.017569961,-0.009793105,0.0014976542 +24812000,imu,-0.15772253,0.110408634,-10.073105,0.028017031,-0.012392532,0.0010953576 +24816000,imu,-0.16435191,0.12658462,-10.070089,0.031790987,-0.010620185,0.0012637192 +24816000,mag,-0.0035473774,-0.20812897,0.44018438 +24820000,imu,-0.14924699,0.14645451,-10.0345545,0.035342995,-0.008579403,0.0004700207 +24824000,imu,-0.14527014,0.13183561,-10.009267,0.04029021,-0.008491252,-0.00034025204 +24828000,mag,0.0073414044,-0.2020328,0.43821543 +24828000,imu,-0.16866404,0.09911107,-10.06474,0.044135753,-0.006563066,0.0005200576 +24832000,imu,-0.15916348,0.10215687,-10.066959,0.049489737,-0.008102899,0.0017224076 +24836000,imu,-0.14305955,0.11523932,-10.055932,0.051846292,-0.008283181,0.0014850452 +24840000,mag,0.004804053,-0.20097819,0.4384159 +24840000,imu,-0.17060307,0.12947704,-10.067528,0.05636253,-0.0068327817,-0.0007910553 +24844000,imu,-0.18316343,0.13408071,-10.067334,0.061612982,-0.0077197244,0.0003070415 +24848000,imu,-0.150114,0.11950663,-10.080188,0.06583095,-0.004572081,9.515339e-05 +24852000,imu,-0.16020852,0.13256626,-10.121074,0.06796368,-0.003360847,-0.00023923196 +24852000,mag,-0.00038332053,-0.20018148,0.4370856 +24856000,imu,-0.17708512,0.14735962,-10.16062,0.06615982,-0.005386932,-0.0010125394 +24860000,imu,-0.13853937,0.11512641,-10.185417,0.06847039,-0.0019303227,-0.00147624 +24864000,baro,488.18262 +24864000,imu,-0.13084136,0.09571549,-10.234455,0.06864981,-0.00039444095,-0.002061791 +24864000,mag,0.0022586836,-0.20655577,0.43597773 +24868000,imu,-0.17191422,0.12815318,-10.281408,0.06851539,-0.0006121715,-0.002339995 +24872000,imu,-0.18604258,0.11551802,-10.304391,0.07022105,0.00014505038,0.00043736032 +24876000,imu,-0.19293916,0.10664323,-10.283475,0.06983586,0.0005358205,0.0009162732 +24876000,mag,0.0040558577,-0.20089473,0.43132147 +24880000,imu,-0.19071609,0.12894145,-10.291311,0.06867469,-0.00037441144,0.00095602695 +24884000,imu,-0.16134037,0.14623202,-10.347187,0.06846148,-0.0005090679,0.0027552838 +24888000,imu,-0.15950581,0.14174044,-10.36532,0.07058509,0.00038826917,0.000525902 +24888000,mag,0.0027480966,-0.20313025,0.4382995 +24892000,imu,-0.18813199,0.10572844,-10.397457,0.070025295,-0.0005221469,-0.0031335365 +24896000,imu,-0.17695883,0.061295766,-10.423088,0.06883171,-0.0044499272,-0.005515862 +24900000,imu,-0.17265327,0.063251816,-10.446482,0.067306,-0.005619397,-0.006806848 +24900000,mag,-0.0015426332,-0.19873294,0.43343198 +24904000,imu,-0.16185698,0.08999871,-10.475307,0.06466307,-0.0031496796,-0.0039729723 +24908000,imu,-0.12323425,0.107510224,-10.481655,0.06470382,-0.0044158534,2.3754816e-05 +24912000,mag,0.0033082317,-0.19735229,0.43680888 +24912000,imu,-0.14643642,0.14458275,-10.480467,0.067209706,-0.003519563,-0.0021366365 +24916000,imu,-0.16462626,0.12079534,-10.513353,0.06359099,-0.00068442523,-0.003600478 +24920000,imu,-0.15647331,0.10144283,-10.526575,0.058242947,-0.00049607514,-0.0013141235 +24924000,imu,-0.13362047,0.11859313,-10.525723,0.0596691,-0.0010268403,0.00030173585 +24924000,mag,0.007317374,-0.197408,0.43913704 +24928000,imu,-0.15357646,0.14202136,-10.522198,0.059113007,-0.002518379,0.002063718 +24932000,imu,-0.1730178,0.1685304,-10.52454,0.05562179,-0.0035456477,-0.00017654618 +24936000,mag,0.0005906506,-0.19731098,0.43683678 +24936000,imu,-0.16500758,0.14902082,-10.565397,0.050182387,-0.0024936001,0.0009935203 +24936000,baro,488.24365 +24940000,imu,-0.1900011,0.12086389,-10.536373,0.048815593,-0.0021128936,0.0035192464 +24944000,imu,-0.17409843,0.10600938,-10.510938,0.051826306,-0.002380533,0.0024291622 +24948000,imu,-0.16778019,0.12746409,-10.528884,0.049153328,-0.005704464,0.0032196967 +24948000,mag,-0.0014149187,-0.20321941,0.43232897 +24952000,imu,-0.16480103,0.16281094,-10.559838,0.04447207,-0.009251522,0.00095312635 +24956000,imu,-0.1684323,0.166,-10.557625,0.041982576,-0.011772796,-0.00031499565 +24960000,mag,0.005006192,-0.20426954,0.43132368 +24960000,imu,-0.16009179,0.15230729,-10.514111,0.04341702,-0.010782135,0.0033718164 +24964000,imu,-0.1515504,0.10048852,-10.5297365,0.043576214,-0.009180255,0.001936426 +24968000,imu,-0.15991151,0.08125119,-10.560478,0.040586133,-0.012642376,0.00014380907 +24972000,imu,-0.14605626,0.10400313,-10.54846,0.040872335,-0.0143187065,0.0009051492 +24972000,mag,-0.002243888,-0.19835757,0.44285247 +24976000,imu,-0.15757701,0.12422211,-10.512633,0.038487174,-0.016465977,0.0019159047 +24980000,imu,-0.16605823,0.14677192,-10.51227,0.031571854,-0.017437618,0.0037815715 +24984000,mag,0.0037911683,-0.19709623,0.4369689 +24984000,imu,-0.17559025,0.13559312,-10.534777,0.028095298,-0.01609733,0.002809155 +24988000,imu,-0.18411039,0.1254453,-10.494027,0.028547592,-0.016174968,0.00037430477 +24992000,imu,-0.16601783,0.11128084,-10.472447,0.028137809,-0.01660479,0.001424651 +24996000,imu,-0.15449741,0.10446008,-10.467146,0.023618922,-0.015967242,0.00033567613 +24996000,mag,0.0031310203,-0.19546598,0.43788946 +25000000,imu,-0.1494008,0.107128434,-10.465101,0.021016954,-0.014893881,1.36583585e-05 +25004000,imu,-0.15513703,0.11139621,-10.467839,0.016659725,-0.013714044,0.000626882 +25008000,imu,-0.15368807,0.12308858,-10.454334,0.010868128,-0.014259604,-0.001693151 +25008000,baro,488.22488 +25008000,mag,-0.0035141597,-0.20411602,0.4390288 +25012000,imu,-0.14550373,0.1316198,-10.472278,0.008929645,-0.017405149,-0.002372162 +25016000,imu,-0.15557319,0.14115794,-10.477465,0.006841116,-0.017342027,-0.0011993985 +25020000,mag,0.0065656495,-0.20175862,0.43109584 +25020000,imu,-0.16614302,0.16429724,-10.453327,0.005587117,-0.015948597,0.0009835878 +25024000,imu,-0.15604873,0.12037468,-10.416437,0.0032827372,-0.016675172,0.00030765275 +25028000,imu,-0.14473587,0.09420053,-10.400934,-0.00039986073,-0.018589944,-0.00077832746 +25032000,mag,0.003751815,-0.20245443,0.43375713 +25032000,imu,-0.15303499,0.13230193,-10.413424,-0.0033779142,-0.017487159,-0.002127694 +25036000,imu,-0.15594658,0.14849366,-10.411573,-0.0055673085,-0.01595981,-0.002515625 +25040000,imu,-0.15605976,0.1399553,-10.418315,-0.011242862,-0.01918726,0.002125805 +25044000,mag,0.003654116,-0.20098028,0.436398 +25044000,imu,-0.18174355,0.10922716,-10.443671,-0.0140814055,-0.01901791,0.00543969 +25048000,imu,-0.17844076,0.1069127,-10.43726,-0.012161407,-0.018014632,0.0029684822 +25052000,gps,488697.0,85456065.0,473977491.0,-0.26,-0.11,-0.78 +25052000,imu,-0.160153,0.11077203,-10.417776,-0.013807566,-0.021784373,0.004222867 +25056000,imu,-0.18280268,0.10329793,-10.408081,-0.016954161,-0.024081236,0.0026047528 +25056000,mag,0.004344329,-0.19965173,0.43630904 +25060000,imu,-0.18278706,0.09979899,-10.432446,-0.017549763,-0.024387173,-0.001930964 +25064000,imu,-0.15822865,0.09154302,-10.465147,-0.018627984,-0.022255775,0.0024782533 +25068000,imu,-0.16393358,0.0949504,-10.458174,-0.022344105,-0.019499827,0.0026847909 +25068000,mag,0.008209784,-0.19856313,0.43544644 +25072000,imu,-0.18551931,0.101290055,-10.39887,-0.023640187,-0.022302931,0.0014074725 +25076000,imu,-0.18886468,0.08540681,-10.384787,-0.025333622,-0.024159595,0.0036136105 +25076000,mag,-0.00083395734,-0.19682772,0.44098112 +25080000,landed,0.0 +25080000,imu,-0.19322312,0.11072412,-10.40518,-0.029124983,-0.021011828,-0.00024328915 +25080000,baro,488.3047 +25084000,imu,-0.17128117,0.15753894,-10.394402,-0.028019827,-0.020716822,-0.00359459 +25088000,imu,-0.18177369,0.14194834,-10.411096,-0.02563797,-0.019643849,0.0003823935 +25092000,imu,-0.17594102,0.14169784,-10.435511,-0.026072485,-0.015620193,0.000923198 +25092000,mag,0.008171617,-0.20347708,0.43918347 +25096000,imu,-0.14851514,0.13009647,-10.433136,-0.030201638,-0.019204495,2.8095095e-05 +25100000,imu,-0.15137208,0.090566784,-10.442913,-0.032252982,-0.023806445,0.0023691652 +25104000,mag,-0.0015667785,-0.20522884,0.43639967 +25104000,imu,-0.12659268,0.09328493,-10.427425,-0.03162917,-0.022572704,0.004962995 +25108000,imu,-0.11749275,0.08585175,-10.401318,-0.036649704,-0.021688078,0.0048813783 +25112000,imu,-0.09548939,0.0886986,-10.415165,-0.036824264,-0.02216907,0.0016683349 +25116000,mag,0.0062033674,-0.19742745,0.43629605 +25116000,imu,-0.12618113,0.099248566,-10.435404,-0.03346601,-0.02286272,0.00019861045 +25120000,imu,-0.17206544,0.091609694,-10.4525,-0.03560643,-0.022798933,-0.0019320599 +25124000,imu,-0.1409239,0.08435457,-10.414387,-0.03731571,-0.02264445,0.000253647 +25128000,mag,0.0064245695,-0.20130776,0.43539363 +25128000,imu,-0.13833785,0.10172806,-10.401476,-0.036984205,-0.027022008,0.0011814062 +25132000,imu,-0.16063376,0.07676461,-10.454924,-0.036461942,-0.02670368,-0.0005049909 +25136000,imu,-0.11357228,0.08177032,-10.46505,-0.04004871,-0.02472967,0.0017882239 +25136000,mag,0.010653225,-0.20299505,0.4361421 +25140000,imu,-0.10898294,0.10307493,-10.45035,-0.041795388,-0.02570968,0.0019497031 +25144000,imu,-0.14513662,0.09255922,-10.445055,-0.04371989,-0.025991527,0.0026052827 +25148000,imu,-0.1602782,0.11777782,-10.465477,-0.044453967,-0.02947588,0.0027226312 +25148000,mag,0.0040592803,-0.20162478,0.43431714 +25152000,imu,-0.1621378,0.0994283,-10.473974,-0.043872427,-0.031010972,0.0018202754 +25152000,baro,488.3094 +25156000,imu,-0.1237869,0.118860446,-10.458627,-0.03916641,-0.026569227,0.00021526487 +25160000,imu,-0.12677056,0.13790059,-10.468311,-0.03286733,-0.02375044,-0.00014710746 +25164000,mag,0.0017873199,-0.19593407,0.43915588 +25164000,imu,-0.14901525,0.09552102,-10.452709,-0.030067181,-0.021913804,0.00020507054 +25168000,imu,-0.135716,0.1072071,-10.441418,-0.02049629,-0.019439733,0.00015790899 +25172000,imu,-0.10166466,0.119466536,-10.488602,-0.0112456,-0.015044504,-0.0010186855 +25176000,imu,-0.12078947,0.105921045,-10.539295,-0.0023165257,-0.01029571,-0.003707991 +25176000,mag,0.008689287,-0.19891126,0.43485418 +25180000,imu,-0.17278898,0.118104205,-10.5055275,0.007662671,-0.006233316,-0.003191004 +25184000,imu,-0.1607655,0.11033818,-10.479503,0.014761529,0.00033629755,-0.0010067453 +25188000,imu,-0.14145176,0.09109111,-10.518888,0.0244817,0.0057267025,-0.00074203033 +25188000,mag,0.005875969,-0.20490988,0.43453884 +25192000,imu,-0.15976378,0.09105883,-10.527518,0.03532808,0.010468624,0.00021702486 +25196000,imu,-0.18148085,0.09538483,-10.490845,0.0464898,0.015522735,-0.0012173045 +25200000,imu,-0.18347606,0.10976696,-10.466381,0.058457095,0.021386135,-0.002691953 +25200000,mag,0.0014032325,-0.19689368,0.43274716 +25204000,imu,-0.14600521,0.09805103,-10.491442,0.068375625,0.027831545,0.0009514749 +25208000,imu,-0.14542112,0.07490973,-10.518168,0.077957466,0.03333492,-0.0020628478 +25212000,imu,-0.13940609,0.089714184,-10.512191,0.089676075,0.041898556,-0.0037238554 +25212000,mag,-0.0029415623,-0.19804093,0.4443007 +25216000,imu,-0.11754174,0.085360765,-10.483731,0.102182835,0.050960723,-0.0021394154 +25220000,imu,-0.13936973,0.073096134,-10.490637,0.11414767,0.055798136,-0.0043036933 +25224000,mag,0.01311725,-0.19912846,0.43286183 +25224000,baro,488.43146 +25224000,imu,-0.15565145,0.076532856,-10.495474,0.12083574,0.05624552,-0.0020507586 +25228000,imu,-0.16054925,0.07647225,-10.474448,0.123223215,0.05691959,-0.00088971056 +25232000,imu,-0.16075858,0.10157615,-10.462574,0.13129127,0.06299847,-0.0011655744 +25236000,imu,-0.1707317,0.11018455,-10.482662,0.13655357,0.06721569,-0.003017519 +25236000,mag,0.0027660097,-0.19860202,0.43183616 +25240000,imu,-0.17017443,0.060180448,-10.490183,0.13945055,0.07342113,-0.004812847 +25244000,imu,-0.14909029,0.07555628,-10.467902,0.14285581,0.08021569,-0.0013275116 +25248000,mag,0.00045915437,-0.20242837,0.43967345 +25248000,imu,-0.13528822,0.115485005,-10.446537,0.14246088,0.07942022,-0.0022679905 +25252000,imu,-0.12912007,0.09046486,-10.462071,0.14644346,0.079932936,-0.00447465 +25256000,imu,-0.14748982,0.085867435,-10.462576,0.15129907,0.086294815,-0.004264234 +25260000,mag,0.0037546956,-0.19642514,0.43530458 +25260000,imu,-0.14837335,0.055604167,-10.430326,0.15269889,0.08911609,-0.0077272216 +25264000,imu,-0.14596692,0.050340828,-10.45779,0.15539066,0.088156365,-0.007897562 +25268000,imu,-0.14979795,0.08057514,-10.469162,0.15467021,0.08737365,-0.0040606647 +25272000,imu,-0.10482922,0.06856095,-10.479296,0.15483345,0.08621076,-0.0028673583 +25272000,mag,0.0076630036,-0.19272688,0.43081048 +25276000,imu,-0.11777654,0.053325415,-10.478585,0.15587924,0.0845435,-0.0042701764 +25280000,imu,-0.15877095,0.065404445,-10.45224,0.15407956,0.08452354,-0.004993645 +25284000,imu,-0.1567826,0.076795265,-10.4676285,0.15404063,0.08570839,-0.006944816 +25284000,mag,0.004613088,-0.19690411,0.4429345 +25288000,imu,-0.13790946,0.08358443,-10.474842,0.15137205,0.08639135,-0.006157066 +25292000,imu,-0.13887945,0.065265715,-10.439831,0.14972349,0.08665167,-0.004079497 +25296000,imu,-0.14705127,0.068324655,-10.4116955,0.14793292,0.09006372,-0.0074542346 +25296000,baro,488.54416 +25296000,mag,-0.0024740358,-0.19651528,0.43320224 +25300000,imu,-0.14874083,0.1070886,-10.439638,0.14369057,0.08872199,-0.0067231646 +25304000,imu,-0.15680839,0.08209082,-10.469233,0.13944463,0.08211149,-0.0033131624 +25308000,imu,-0.14762002,0.08071128,-10.454804,0.1355927,0.08120004,-0.002072708 +25308000,mag,0.009519605,-0.19592124,0.4379747 +25312000,imu,-0.15183166,0.06863935,-10.45882,0.13773045,0.08150215,-0.0040265005 +25316000,imu,-0.16262178,0.083375454,-10.46057,0.13674042,0.07733358,-0.0071510663 +25320000,imu,-0.14138173,0.09359081,-10.431231,0.1317436,0.074062355,-0.004147198 +25320000,mag,-0.0039670584,-0.19984947,0.4372711 +25324000,imu,-0.14584446,0.06048895,-10.424244,0.1299933,0.0744722,-0.0010487024 +25328000,imu,-0.18413313,0.06504992,-10.4388075,0.1252775,0.071822256,-0.0023572734 +25332000,mag,-2.1770247e-05,-0.19034669,0.43841657 +25332000,imu,-0.16328725,0.074131764,-10.441872,0.12091084,0.07051739,-0.00587525 +25336000,imu,-0.13347189,0.0659164,-10.449638,0.1194252,0.070312575,-0.00719564 +25340000,mag,0.0009133186,-0.18690968,0.4382761 +25340000,imu,-0.1661204,0.061552454,-10.468876,0.11570426,0.0684063,-0.004969278 +25344000,imu,-0.18375039,0.07989177,-10.459755,0.10763781,0.06498081,-0.004828736 +25348000,imu,-0.15262246,0.066779874,-10.424284,0.104158886,0.065122634,-0.004187701 +25352000,imu,-0.16358662,0.052096557,-10.434152,0.103980206,0.061110333,-0.0030195646 +25356000,mag,-0.00033191938,-0.19535081,0.43538404 +25356000,imu,-0.16789325,0.058481857,-10.455827,0.10189024,0.054839987,-0.002288297 +25360000,imu,-0.13983679,0.10171145,-10.459484,0.09749279,0.05585055,-0.0034332494 +25364000,imu,-0.1309803,0.08997944,-10.439203,0.09151629,0.054311927,-0.0038392432 +25368000,baro,488.61456 +25368000,imu,-0.11475052,0.050028168,-10.412983,0.08459864,0.05311438,-0.0016122225 +25368000,mag,-4.5413166e-05,-0.18936355,0.44190812 +25372000,imu,-0.121141456,0.060852516,-10.4486885,0.079668686,0.04793372,-0.0020975661 +25376000,imu,-0.1509379,0.06987822,-10.494965,0.07870845,0.046083253,-0.005364505 +25380000,mag,-0.00096148107,-0.19357806,0.44181427 +25380000,imu,-0.16775689,0.052966844,-10.481925,0.074413955,0.045554273,-0.004523738 +25384000,imu,-0.160317,0.065589406,-10.439893,0.070265785,0.043298364,-0.0025503144 +25388000,imu,-0.13916686,0.08260364,-10.415016,0.065806635,0.04261768,-0.0019093788 +25392000,mag,0.0012122693,-0.19251251,0.43229342 +25392000,imu,-0.14076218,0.073571555,-10.422255,0.06298266,0.037047688,-0.003914618 +25396000,imu,-0.14916798,0.06443136,-10.460448,0.057082403,0.033107407,-0.0019420438 +25400000,imu,-0.14713785,0.07042258,-10.460663,0.053594034,0.028571853,0.0036081641 +25404000,imu,-0.16786589,0.09946623,-10.448935,0.056232873,0.024552526,0.0010684582 +25404000,mag,0.0045314636,-0.1885398,0.44226652 +25408000,imu,-0.18735023,0.087908715,-10.469448,0.052065782,0.025043674,-0.0007651014 +25412000,imu,-0.18402377,0.07935783,-10.4785595,0.043774594,0.024891028,0.00036888997 +25416000,mag,0.00062365906,-0.18962519,0.43860176 +25416000,imu,-0.1760135,0.114826806,-10.4669895,0.0393456,0.021534229,-6.33158e-05 +25420000,imu,-0.15807,0.09919905,-10.475264,0.037490565,0.01620531,0.00066120864 +25424000,imu,-0.13515387,0.04610357,-10.471024,0.032465354,0.013700396,-0.0009763213 +25428000,mag,-0.003058603,-0.18906747,0.4336139 +25428000,imu,-0.115223505,0.04081826,-10.460432,0.026370255,0.013246631,-0.0014774168 +25432000,imu,-0.13106024,0.079108104,-10.460512,0.025026318,0.013864764,-0.0010727262 +25436000,imu,-0.1441231,0.055457316,-10.462948,0.02370498,0.012029327,-0.0023762062 +25436000,baro,488.72256 +25436000,mag,0.00087104924,-0.19074176,0.44241112 +25440000,imu,-0.15151691,0.034291886,-10.482252,0.022868661,0.0068331137,-0.00035691302 +25444000,imu,-0.1763941,0.09295198,-10.460747,0.02074873,0.0032526336,0.00020305552 +25448000,imu,-0.14925882,0.07896789,-10.477411,0.014994561,0.0011296895,-0.00083764707 +25452000,mag,-0.008230524,-0.19566497,0.4393678 +25452000,gps,489072.0,85456059.0,473977479.0,-0.38,-0.14,-1.01 +25452000,imu,-0.10646431,0.052737944,-10.4934025,0.011218013,0.0025974817,-0.0009969899 +25456000,imu,-0.15010834,0.05968185,-10.497545,0.0060952404,-0.00020858266,0.00018372343 +25460000,imu,-0.16964366,0.07645432,-10.502861,0.0019287172,-0.006795142,0.0032506287 +25464000,imu,-0.1680305,0.09975553,-10.4742775,-0.0019399065,-0.006619169,0.0040809857 +25464000,mag,-0.005017464,-0.1854373,0.43875685 +25468000,imu,-0.1857844,0.10121489,-10.464057,-0.0073468136,-0.007992894,0.0022510074 +25472000,imu,-0.1591035,0.08154018,-10.444382,-0.010974693,-0.010048848,0.0011083493 +25476000,mag,-0.0020368712,-0.19096646,0.44368607 +25476000,imu,-0.1666251,0.0061196038,-10.454062,-0.012610845,-0.009453844,0.00054258126 +25480000,imu,-0.15688041,0.010343814,-10.474929,-0.01721387,-0.012134413,0.0005770219 +25484000,imu,-0.14251989,0.08976611,-10.485499,-0.020726915,-0.012456236,0.0007195796 +25488000,mag,-0.0011948593,-0.19177912,0.441119 +25488000,imu,-0.18013005,0.09738256,-10.484902,-0.019215168,-0.013251032,-0.00055737887 +25488000,baro,488.74603 +25492000,imu,-0.19198315,0.04810774,-10.464283,-0.021443494,-0.016039362,-0.0025108473 +25496000,imu,-0.15695438,0.034074865,-10.48023,-0.02241707,-0.018454308,-0.0018689581 +25500000,imu,-0.12649246,0.050880156,-10.500185,-0.023945631,-0.019714627,-0.00016138342 +25500000,mag,-0.011851199,-0.20014487,0.44881532 +25504000,imu,-0.10964531,0.06831227,-10.5056715,-0.031286165,-0.020801773,0.0017282078 +25508000,imu,-0.13156046,0.09182274,-10.500284,-0.03624239,-0.02383711,0.002145035 +25512000,imu,-0.15837176,0.07858875,-10.476506,-0.036632128,-0.02364656,-0.00016813737 +25512000,mag,-0.0060108844,-0.18756413,0.43708467 +25516000,imu,-0.17003937,0.057461787,-10.457718,-0.039079405,-0.025604954,-0.00028468578 +25520000,imu,-0.1438858,0.0864956,-10.449085,-0.04088147,-0.027968729,-0.004012566 +25524000,mag,-0.0036304886,-0.1897301,0.44513887 +25524000,imu,-0.14630425,0.09017165,-10.469971,-0.0413547,-0.025511185,-0.0042679952 +25528000,imu,-0.15740444,0.058326982,-10.492595,-0.045874324,-0.02832512,0.0010841815 +25532000,imu,-0.12514198,0.07259103,-10.49385,-0.048266355,-0.03252356,0.003361214 +25536000,mag,0.0015238738,-0.19447322,0.42815465 +25536000,imu,-0.1325866,0.050584905,-10.46987,-0.04937352,-0.03473799,0.005175039 +25540000,imu,-0.13325319,0.056121375,-10.456949,-0.053873308,-0.03648336,0.00028499073 +25544000,imu,-0.13408741,0.09334041,-10.471729,-0.05677157,-0.03698982,-0.0015015755 +25548000,mag,0.003531782,-0.18935874,0.43939534 +25548000,imu,-0.16877927,0.058237102,-10.482991,-0.052915975,-0.039194282,0.0019253864 +25552000,imu,-0.16520405,0.035741616,-10.49436,-0.050873928,-0.037698075,-0.000152181 +25556000,imu,-0.13720316,0.04279793,-10.481752,-0.05126073,-0.03660363,-0.0017426109 +25560000,imu,-0.17389046,0.05690919,-10.494373,-0.049497906,-0.03503861,0.0010998053 +25560000,baro,488.91504 +25560000,mag,0.006256547,-0.19003496,0.44368184 +25564000,imu,-0.17503302,0.06028763,-10.5302,-0.043026254,-0.032402236,0.0030318766 +25568000,imu,-0.14343292,0.05270281,-10.520811,-0.03457587,-0.03086435,-0.00012966957 +25572000,mag,-0.0009071344,-0.18807147,0.44250438 +25572000,imu,-0.12267992,0.06577503,-10.519927,-0.026542703,-0.028487602,-0.005817657 +25576000,imu,-0.13745064,0.06384795,-10.494977,-0.015916973,-0.029048182,-0.008313514 +25580000,imu,-0.17771056,0.054062758,-10.466968,-0.0062344526,-0.024660936,-0.003907168 +25584000,imu,-0.15291755,0.046284143,-10.483668,0.004016437,-0.018863115,-0.0023063552 +25584000,mag,-0.004734979,-0.18973918,0.44199586 +25588000,imu,-0.124649875,0.05789463,-10.463629,0.01673276,-0.011464021,-0.003212908 +25592000,imu,-0.15766224,0.058635514,-10.456717,0.030404331,-0.003025548,-0.0011830825 +25596000,imu,-0.14308406,0.04563034,-10.497124,0.045902386,-0.000981519,-0.0014192536 +25596000,mag,0.0014650117,-0.19533807,0.44055536 +25600000,imu,-0.113604665,0.033176035,-10.492031,0.058331408,0.002869465,0.000721876 +25604000,imu,-0.11166771,0.032934338,-10.471766,0.0674382,0.0061126533,0.0006193585 +25608000,mag,-0.00501483,-0.19069435,0.44059914 +25608000,imu,-0.11396694,0.073417686,-10.490231,0.08276862,0.0068722945,-0.00089188805 +25612000,imu,-0.14574541,0.062414,-10.486242,0.09700941,0.011867332,0.00035188865 +25616000,imu,-0.1242187,0.047871906,-10.476166,0.10715874,0.019356666,0.0020610732 +25620000,imu,-0.112515725,0.092273146,-10.472109,0.120023824,0.025588976,0.0015497744 +25620000,mag,-0.00025027734,-0.1924371,0.4468464 +25624000,imu,-0.11350665,0.052173387,-10.468115,0.13347943,0.031040698,-0.0009973038 +25628000,imu,-0.07925675,0.025105746,-10.480885,0.1426204,0.032802094,-0.0018817625 +25632000,imu,-0.07950933,0.03433611,-10.437023,0.15265307,0.03513515,-0.002185289 +25632000,mag,-0.0030898305,-0.18659766,0.436248 +25632000,baro,488.93854 +25636000,imu,-0.14119674,0.0075241323,-10.4238615,0.1613179,0.042014334,-0.0032788627 +25640000,imu,-0.15147597,0.043054633,-10.451689,0.16545507,0.047795687,-0.0040859315 +25644000,imu,-0.09862329,0.05403241,-10.445971,0.17329106,0.050764296,-0.003800294 +25644000,mag,-0.0026116401,-0.18467616,0.4436051 +25648000,imu,-0.122419804,0.05781595,-10.456968,0.17976192,0.051877018,-0.0029795761 +25652000,imu,-0.15837213,0.06771024,-10.453562,0.18603837,0.053949136,-0.00278444 +25656000,mag,-0.00056519225,-0.18955787,0.44435367 +25656000,imu,-0.15720323,0.04887498,-10.438433,0.18730183,0.056320783,-0.0021391902 +25660000,imu,-0.15966909,0.020943886,-10.423948,0.18751524,0.05909143,0.0007410608 +25664000,imu,-0.13930555,0.011003202,-10.414478,0.19181734,0.06264624,-0.0019244357 +25668000,mag,0.00063062867,-0.1890979,0.43895283 +25668000,imu,-0.12017712,0.042876523,-10.437071,0.18970674,0.06153871,-0.003148684 +25672000,imu,-0.1099903,0.06213,-10.436189,0.19077104,0.06190296,-0.0002705286 +25676000,imu,-0.121436365,0.049897615,-10.420398,0.19250575,0.06460984,-0.0018184283 +25680000,imu,-0.15064242,0.016953828,-10.445393,0.1914271,0.062707745,-0.0007260395 +25680000,mag,-0.0032680645,-0.18324666,0.44513223 +25684000,imu,-0.12862226,0.026002655,-10.42644,0.1885075,0.06077611,0.0009037809 +25688000,imu,-0.10128914,0.06299993,-10.393526,0.18781202,0.061208002,-0.0006537897 +25692000,imu,-0.11879449,0.06400811,-10.415957,0.18778133,0.059127294,-0.00046074763 +25692000,mag,0.0018332041,-0.18093373,0.43904543 +25696000,imu,-0.13997369,0.05730471,-10.425945,0.18098873,0.05937891,-0.00063395005 +25700000,imu,-0.14661655,0.041733354,-10.441892,0.17599674,0.061809085,-0.002541357 +25704000,baro,489.0512 +25704000,mag,-0.0006890846,-0.18527712,0.4416385 +25704000,imu,-0.128873,0.03555299,-10.47117,0.17114466,0.061249986,-0.0022890482 +25708000,imu,-0.14271921,0.0541436,-10.434536,0.16766128,0.061450046,-0.0010200827 +25712000,imu,-0.14313143,0.03576375,-10.396024,0.1650714,0.06157694,-0.0007319065 +25716000,imu,-0.12386244,0.02490628,-10.423616,0.16046043,0.056682635,0.0016512404 +25716000,mag,0.0016575896,-0.18696152,0.4465365 +25720000,imu,-0.13478234,0.038927082,-10.4567795,0.15903524,0.052550115,0.0012147818 +25724000,imu,-0.1372445,0.017593134,-10.45095,0.15326993,0.052345693,-0.0010137123 +25728000,imu,-0.11027654,0.013101127,-10.430131,0.14426407,0.052827135,-0.0012957761 +25728000,mag,-0.0054073017,-0.17898072,0.4451612 +25732000,imu,-0.07275145,0.02848009,-10.4347315,0.13926513,0.053364664,-0.0006756603 +25736000,imu,-0.07883391,0.02961842,-10.4155445,0.13453744,0.05170094,0.00014119336 +25740000,mag,-0.0037412765,-0.18300967,0.43925294 +25740000,imu,-0.11772525,0.05498568,-10.43274,0.13063462,0.051731307,-0.0032797244 +25744000,imu,-0.17050728,0.05264135,-10.461367,0.12632139,0.048989404,-0.005919131 +25748000,imu,-0.18173629,0.03915814,-10.424231,0.11684974,0.047919825,-0.0030762593 +25752000,mag,-0.0063481303,-0.17667694,0.43659514 +25752000,imu,-0.15930435,0.055770736,-10.420472,0.11167585,0.047343746,-0.0027907107 +25756000,imu,-0.15074766,0.05090208,-10.440212,0.112237886,0.04146762,-0.0030922282 +25760000,imu,-0.12957102,0.021490974,-10.4552555,0.106394604,0.039825983,-0.0019809906 +25764000,imu,-0.113267675,0.018075919,-10.449325,0.10253272,0.04261212,-0.004054374 +25764000,mag,-0.007252588,-0.17308727,0.4527578 +25768000,imu,-0.13602455,0.012721284,-10.430546,0.10078447,0.039175164,-0.001174001 +25772000,imu,-0.13373038,0.0375467,-10.451046,0.09360917,0.030627768,0.0012129273 +25776000,imu,-0.13277124,0.058793746,-10.456607,0.08550831,0.028274348,-0.0034881176 +25776000,baro,489.12164 +25776000,mag,-0.005438408,-0.18427615,0.44066286 +25780000,imu,-0.1486024,0.03521127,-10.421407,0.08094111,0.030698461,-0.002833416 +25784000,imu,-0.17202213,0.0261387,-10.454554,0.078805715,0.030628512,0.00032448265 +25788000,mag,-0.004084915,-0.17594108,0.4445643 +25788000,imu,-0.15957025,0.042792287,-10.490585,0.074644506,0.027101863,-0.0022570721 +25792000,imu,-0.14754117,0.048931602,-10.491761,0.06823456,0.02318097,-0.0021587824 +25796000,imu,-0.13820465,0.022547377,-10.476031,0.06558647,0.02193032,0.0024363815 +25800000,mag,-0.0058152475,-0.1812805,0.44192135 +25800000,imu,-0.11761941,0.02995354,-10.449604,0.06284658,0.022851791,0.0057018185 +25804000,imu,-0.14082815,0.039619096,-10.458057,0.055183336,0.018932372,0.003829512 +25808000,imu,-0.15508637,0.022451509,-10.441233,0.048118755,0.014761731,-0.00052799477 +25812000,mag,-0.007048185,-0.1756642,0.4488028 +25812000,imu,-0.1443797,0.013852699,-10.461029,0.0433324,0.013618263,-0.0013768629 +25816000,imu,-0.14479096,0.042312548,-10.461115,0.03803036,0.009004174,-0.001324436 +25820000,imu,-0.12710772,0.05308788,-10.425712,0.032212313,0.0029039588,0.0015132244 +25824000,imu,-0.09235542,0.027468115,-10.435971,0.028447064,0.0019749084,0.0024973277 +25824000,mag,-0.0015714894,-0.1766404,0.43957925 +25828000,imu,-0.08929439,0.014018383,-10.438986,0.023759168,0.0007439792,0.0012136844 +25832000,imu,-0.11558521,0.048916243,-10.4241295,0.016907863,-0.0013844061,0.00048388814 +25836000,imu,-0.13252342,0.045773905,-10.387815,0.010673907,-0.0032564295,0.00044133607 +25836000,mag,-0.010205725,-0.17170909,0.4458054 +25840000,imu,-0.13908553,-0.005510853,-10.417234,0.0037422848,-0.006772525,0.0016035305 +25844000,imu,-0.1363933,-0.01565675,-10.466333,-0.000604155,-0.00896604,-0.00029411382 +25848000,imu,-0.10107598,0.0367745,-10.44082,-0.004586018,-0.010331312,-0.0017429236 +25848000,baro,489.16858 +25848000,mag,0.001377395,-0.18743767,0.4428012 +25852000,imu,-0.10116029,0.04855451,-10.454878,-0.009857527,-0.0134219285,-0.0015333674 +25852000,gps,489540.0,85456049.0,473977462.0,-0.55,-0.21,-1.29 +25856000,imu,-0.12766492,0.013641034,-10.47263,-0.014242916,-0.016757984,-0.0013346494 +25860000,imu,-0.13430184,0.036436908,-10.415453,-0.019672997,-0.015871823,1.0416719e-05 +25860000,mag,0.0021889366,-0.1764903,0.45297056 +25864000,imu,-0.107307054,0.04335004,-10.3981,-0.026087888,-0.017819755,0.0016252041 +25868000,imu,-0.11056659,0.032161202,-10.407932,-0.028233437,-0.021771643,-0.0008647215 +25872000,mag,-0.004742951,-0.17242679,0.453372 +25872000,imu,-0.14179957,0.011835508,-10.406992,-0.028911153,-0.023254309,-0.0036205554 +25876000,imu,-0.14431673,0.006942073,-10.438258,-0.036617782,-0.027317787,-0.0017333681 +25880000,imu,-0.1256907,0.032540243,-10.44405,-0.04428612,-0.029559514,-0.0037672378 +25884000,mag,-0.0069315624,-0.1781,0.44896752 +25884000,imu,-0.101469845,0.03878642,-10.438337,-0.04548969,-0.028397877,-0.0024898548 +25888000,imu,-0.11760999,0.037508044,-10.439449,-0.045886707,-0.0322977,0.0021977844 +25892000,imu,-0.13341677,0.05548302,-10.427139,-0.048325073,-0.03299422,0.00047635578 +25896000,mag,-0.00077476446,-0.17983152,0.4459374 +25896000,imu,-0.11524504,0.02181888,-10.440073,-0.052192736,-0.029797938,0.0006439847 +25900000,imu,-0.12029198,-0.019442217,-10.450256,-0.05665181,-0.03154185,0.0020586704 +25904000,imu,-0.13357598,-0.009399643,-10.447613,-0.060383167,-0.03491801,-2.8688533e-05 +25908000,imu,-0.13960929,0.005155593,-10.421949,-0.063346885,-0.03710958,-0.00094094384 +25908000,mag,-0.008823196,-0.1833634,0.43892962 +25912000,imu,-0.12917796,0.010272223,-10.412659,-0.06441375,-0.039419852,-0.00054323045 +25916000,imu,-0.10720123,-0.004329284,-10.427118,-0.06668039,-0.039860323,-0.0002773323 +25920000,imu,-0.11451429,-0.007335932,-10.413809,-0.07119072,-0.04111776,0.0016295305 +25920000,baro,489.29535 +25920000,mag,-0.002798554,-0.17922395,0.44969562 +25924000,imu,-0.15212572,0.016073557,-10.449408,-0.075313665,-0.044352915,0.0028617033 +25928000,imu,-0.1405314,0.022720166,-10.472897,-0.07694631,-0.0446401,0.0023653833 +25932000,imu,-0.123202205,0.03316002,-10.454161,-0.08022115,-0.046729073,0.0024294052 +25932000,mag,-0.001506163,-0.17527895,0.4477519 +25936000,imu,-0.11638616,0.023225278,-10.486475,-0.08149624,-0.0477858,0.0026092797 +25940000,imu,-0.09935534,-0.030564182,-10.513689,-0.08440674,-0.048700497,0.00052764144 +25944000,mag,-0.006401176,-0.17785174,0.44409382 +25944000,imu,-0.091492,-0.04357009,-10.452481,-0.08825632,-0.051526368,-0.0014027352 +25948000,imu,-0.12137972,-0.014464764,-10.414236,-0.08788655,-0.050331123,0.0016347638 +25952000,imu,-0.1389592,0.020684408,-10.443454,-0.08645798,-0.04694943,0.001759043 +25956000,mag,-0.0063332533,-0.18010214,0.43605864 +25956000,imu,-0.13183081,0.021586612,-10.428673,-0.0827041,-0.04438044,-0.000312268 +25960000,imu,-0.15015697,-0.0075005093,-10.385504,-0.07796047,-0.04157301,2.874894e-05 +25964000,imu,-0.110477336,-0.0385611,-10.475258,-0.068737976,-0.03791587,0.0015229703 +25968000,mag,-0.0007080381,-0.176909,0.43526176 +25968000,imu,-0.07777593,-0.040606,-10.63574,-0.058003254,-0.03687241,0.009937461 +25972000,imu,-0.11902697,0.012887721,-10.722852,-0.041447803,-0.03414795,0.02032244 +25976000,imu,-0.1224624,0.027552523,-10.767226,-0.019312441,-0.028944166,0.029998347 +25980000,mag,0.001171261,-0.18259902,0.4390964 +25980000,imu,-0.1038832,-0.0076236706,-10.773476,0.0014462108,-0.022464572,0.043893863 +25984000,imu,-0.10723023,0.011384666,-10.7673855,0.021595184,-0.014823385,0.061438847 +25988000,imu,-0.09874328,0.0215748,-10.743584,0.04102465,-0.010655821,0.072990626 +25992000,baro,489.38455 +25992000,imu,-0.12249345,0.025547016,-10.729467,0.064030446,-0.0033589385,0.08028573 +25992000,mag,-0.006587329,-0.17824648,0.44430974 +25996000,imu,-0.1352965,0.023595162,-10.685356,0.09141819,0.0050109,0.086947694 +26000000,imu,-0.12529735,0.0068796915,-10.615891,0.1165054,0.011491287,0.092786714 +26004000,mag,-0.0119677475,-0.17796661,0.44535023 +26004000,imu,-0.11045362,-0.036982507,-10.539486,0.13734052,0.019425033,0.09689298 +26008000,imu,-0.09238355,-0.028798591,-10.469511,0.15741202,0.03062217,0.097034656 +26012000,imu,-0.08623348,0.012279016,-10.445297,0.17575206,0.038961235,0.10272182 +26016000,mag,-0.0073780874,-0.17618807,0.4484581 +26016000,imu,-0.10183206,-0.023356443,-10.409944,0.1924734,0.04717715,0.11010466 +26020000,imu,-0.1371446,0.005504696,-10.368592,0.20631965,0.057904657,0.11061058 +26024000,imu,-0.12737516,0.008543885,-10.329494,0.21651022,0.06191696,0.107508816 +26028000,mag,-0.008728496,-0.17841418,0.44107905 +26028000,imu,-0.078485,-0.03963172,-10.280931,0.22485706,0.065241955,0.10694347 +26032000,imu,-0.07634104,-0.035479743,-10.2321,0.23409143,0.07073965,0.11031961 +26036000,imu,-0.09214792,-0.03696314,-10.160583,0.24126586,0.07432326,0.11288137 +26040000,imu,-0.10210699,-0.022074634,-10.0898285,0.2444571,0.07878991,0.10963237 +26040000,mag,-0.00443795,-0.17540908,0.44429755 +26044000,imu,-0.10646665,-0.019890033,-10.062702,0.24472477,0.0846706,0.10605535 +26048000,imu,-0.115247,-0.04796457,-10.067756,0.24288677,0.0885587,0.10489163 +26052000,mag,-0.0073397486,-0.1713685,0.44870195 +26052000,imu,-0.107636444,-0.04618158,-10.012209,0.24430256,0.09230532,0.10194574 +26056000,imu,-0.09878929,-0.012417817,-9.912349,0.24472888,0.09615496,0.09802583 +26060000,imu,-0.11326727,-0.0042616418,-9.889843,0.24263467,0.09947042,0.095305294 +26064000,baro,489.47845 +26064000,mag,-0.009197279,-0.17175911,0.44261026 +26064000,imu,-0.13319778,-0.018621715,-9.877804,0.24104047,0.1045648,0.092112966 +26068000,imu,-0.13960633,-0.017644767,-9.857647,0.23576884,0.10548235,0.08929381 +26072000,imu,-0.13149658,-0.03492766,-9.838731,0.23346595,0.104815416,0.091077715 +26076000,mag,-0.0058548297,-0.17205417,0.45596057 +26076000,imu,-0.113010004,-0.027680224,-9.796824,0.23163697,0.10693306,0.087343715 +26080000,landed,0.0 +26080000,imu,-0.08883229,0.0058967136,-9.751991,0.22741207,0.1065415,0.082977444 +26084000,imu,-0.10489669,0.0025473458,-9.709997,0.22244799,0.10739286,0.08271897 +26084000,mag,-0.017159358,-0.16905226,0.44811818 +26088000,imu,-0.112559915,-0.019678993,-9.695152,0.21739037,0.11018549,0.07908292 +26092000,imu,-0.08681874,-0.027088668,-9.648765,0.21808013,0.11635742,0.075361006 +26096000,imu,-0.08584793,-0.013383575,-9.606148,0.21590692,0.11733586,0.072192386 +26100000,mag,-0.009132402,-0.17333804,0.44810337 +26100000,imu,-0.123282455,-0.04113376,-9.609114,0.21154954,0.11541881,0.07048525 +26104000,imu,-0.118751675,-0.083264306,-9.624024,0.20456025,0.11912152,0.06814898 +26108000,imu,-0.10594362,-0.06848898,-9.620227,0.1993295,0.121570155,0.06143171 +26112000,mag,-0.009408162,-0.16753508,0.4551 +26112000,imu,-0.13092887,-0.031371202,-9.601049,0.1978912,0.12076881,0.056641255 +26116000,imu,-0.13559623,-0.007437422,-9.611748,0.1964985,0.117332675,0.05378708 +26120000,imu,-0.11901517,-0.0112224845,-9.642366,0.19259797,0.115556784,0.04989167 +26124000,imu,-0.13209093,-0.016168326,-9.642965,0.1906041,0.11270512,0.049797386 +26124000,mag,-0.0071853297,-0.16811937,0.4490954 +26128000,imu,-0.1506097,-0.020310724,-9.603061,0.19125174,0.108739704,0.045485254 +26132000,mag,-0.014025314,-0.17179435,0.46131292 +26132000,imu,-0.110820726,-0.039298203,-9.6011095,0.185486,0.11069547,0.03935686 +26132000,baro,489.5489 +26136000,imu,-0.037305124,-0.02526254,-9.598539,0.1817146,0.1089857,0.036681596 +26140000,imu,-0.057932183,-0.040765725,-9.610077,0.1776732,0.104540944,0.033828795 +26144000,imu,-0.10513005,-0.068821736,-9.658793,0.17275394,0.1027422,0.03392301 +26148000,mag,-0.016689042,-0.16949248,0.45880467 +26148000,imu,-0.123764694,-0.06813377,-9.707657,0.16893727,0.0978381,0.033241987 +26152000,imu,-0.13440849,-0.06710275,-9.712314,0.16483264,0.095629975,0.03204382 +26156000,imu,-0.10128166,-0.020729326,-9.693655,0.16067597,0.09145256,0.03082869 +26160000,imu,-0.058927666,-0.012441974,-9.7172575,0.15700676,0.08719788,0.02891287 +26160000,mag,-0.015128792,-0.16225526,0.45205638 +26164000,imu,-0.07724871,-0.038385652,-9.719902,0.15352982,0.083089694,0.026355987 +26168000,imu,-0.13382809,-0.050263233,-9.724466,0.14742473,0.074203335,0.02052718 +26172000,mag,-0.0120267235,-0.16566439,0.44440672 +26172000,imu,-0.11944511,-0.060254715,-9.745469,0.14235842,0.07123677,0.015216739 +26176000,imu,-0.06727734,-0.0713444,-9.734676,0.13965023,0.070555456,0.016144022 +26180000,imu,-0.055637266,-0.043029554,-9.767934,0.13308392,0.06404351,0.01790545 +26184000,imu,-0.106863655,-0.02467185,-9.803616,0.12641288,0.057193097,0.014269581 +26184000,mag,-0.015651204,-0.16517828,0.44802266 +26188000,imu,-0.13765848,-0.018950492,-9.75029,0.12088763,0.051793892,0.008767962 +26192000,imu,-0.10378708,-0.0015050176,-9.734339,0.116887726,0.048631996,0.0057255914 +26196000,imu,-0.092170015,-0.009950625,-9.766499,0.11071323,0.046991512,0.0063145137 +26196000,mag,-0.017580835,-0.16844471,0.44641897 +26200000,imu,-0.10012767,-0.02703095,-9.780161,0.1013311,0.043533657,0.003170785 +26204000,imu,-0.08392724,-0.05033198,-9.817398,0.09841544,0.039485678,-0.0017236305 +26208000,imu,-0.06434204,-0.04537286,-9.818432,0.094347164,0.037549578,-0.0024886886 +26208000,baro,489.7085 +26208000,mag,-0.012596492,-0.1626173,0.4522548 +26212000,imu,-0.07844815,-0.058690622,-9.8190155,0.082965925,0.038735714,-0.002337586 +26216000,imu,-0.10328191,-0.05481086,-9.8061075,0.07783036,0.03308888,-1.4841892e-05 +26220000,imu,-0.08918621,-0.033354897,-9.803099,0.07740479,0.025610778,0.00090748514 +26220000,mag,-0.016190851,-0.16225564,0.45511386 +26224000,imu,-0.075740114,-0.032251593,-9.830777,0.07077672,0.026444336,-0.0053178445 +26228000,imu,-0.07859732,-0.016053906,-9.850164,0.06196193,0.025092348,-0.007493974 +26232000,mag,-0.02071346,-0.16025005,0.44814485 +26232000,imu,-0.084944695,-0.03056875,-9.840764,0.056053773,0.020073388,-0.005868073 +26236000,imu,-0.0922569,-0.06064405,-9.848817,0.05233541,0.015551925,-0.008596504 +26240000,imu,-0.10578324,-0.04838763,-9.886959,0.04459052,0.014901874,-0.009116203 +26244000,mag,-0.015886374,-0.16316912,0.45377508 +26244000,imu,-0.09404622,-0.028747689,-9.863882,0.036430772,0.014181097,-0.006281774 +26248000,imu,-0.079943314,-0.050265115,-9.868824,0.027944295,0.0085117305,-0.007814882 +26252000,imu,-0.11150776,-0.03088768,-9.894522,0.021242348,0.0039719082,-0.012299751 +26252000,gps,490072.0,85456034.0,473977436.0,-0.87,-0.32999998,-1.39 +26256000,imu,-0.11869627,0.0009885185,-9.895805,0.019700684,-0.0005456072,-0.011568867 +26256000,mag,-0.02024804,-0.16081929,0.45135987 +26260000,imu,-0.11031535,-0.007440514,-9.91554,0.0151287345,-0.0044449847,-0.012010182 +26264000,imu,-0.11845645,-0.016836219,-9.936648,0.0063914545,-0.008547874,-0.013452302 +26268000,imu,-0.12905999,-0.06525482,-9.938765,0.0013874066,-0.012185784,-0.010664535 +26268000,mag,-0.007994733,-0.16200489,0.45142874 +26272000,imu,-0.08915061,-0.0563603,-9.950705,-0.0023105154,-0.014836004,-0.01027092 +26276000,imu,-0.074735574,-0.0141340075,-9.931425,-0.008399155,-0.019491818,-0.013868835 +26276000,mag,-0.016780099,-0.16276515,0.45168838 +26280000,baro,489.74136 +26280000,imu,-0.121912315,-0.051070884,-9.924297,-0.015875474,-0.02235338,-0.017213073 +26284000,imu,-0.12175194,-0.06373362,-9.9233265,-0.022610594,-0.024959639,-0.017814167 +26288000,imu,-0.1124636,-0.04583529,-9.925137,-0.02706046,-0.029766167,-0.017952845 +26292000,imu,-0.105646834,-0.031092143,-9.977684,-0.033099584,-0.032486293,-0.016067658 +26292000,mag,-0.013163225,-0.15621789,0.4444642 +26296000,imu,-0.08825426,-0.0074639395,-9.9754,-0.040054142,-0.03246004,-0.015278625 +26300000,imu,-0.06775542,-0.02293738,-9.981886,-0.04944126,-0.032734483,-0.017716845 +26304000,imu,-0.073796295,-0.08655657,-9.9933815,-0.056144863,-0.034915112,-0.018224126 +26304000,mag,-0.015765646,-0.15553595,0.45070273 +26308000,imu,-0.10270299,-0.084748484,-9.976863,-0.05988103,-0.038238436,-0.019008957 +26312000,imu,-0.10486467,-0.058779724,-9.971521,-0.06840913,-0.041077748,-0.021461064 +26316000,mag,-0.01178993,-0.16149576,0.45184094 +26316000,imu,-0.10543552,-0.06362741,-9.975918,-0.0749486,-0.04268145,-0.021477032 +26320000,imu,-0.117834434,-0.07239875,-9.995363,-0.07870598,-0.045934148,-0.019897103 +26324000,imu,-0.107377216,-0.07064362,-9.986178,-0.084550984,-0.045129914,-0.020176377 +26328000,mag,-0.015801085,-0.1607643,0.44639403 +26328000,imu,-0.07511413,-0.06122601,-9.989933,-0.090046994,-0.04424875,-0.019232891 +26332000,imu,-0.09353086,-0.071973726,-9.972247,-0.095077865,-0.046116326,-0.018963752 +26336000,imu,-0.1249941,-0.09053389,-9.957769,-0.097596474,-0.050876155,-0.021451248 +26340000,imu,-0.117032364,-0.086064175,-9.978409,-0.09749667,-0.056343593,-0.021322066 +26340000,mag,-0.015345491,-0.15694453,0.4490595 +26344000,imu,-0.10779834,-0.06419136,-9.94504,-0.101425126,-0.056386612,-0.021978073 +26348000,imu,-0.11249535,-0.08748959,-9.982063,-0.10398125,-0.058976922,-0.023622068 +26352000,imu,-0.10829161,-0.07394162,-10.036923,-0.100046344,-0.05930714,-0.023877442 +26352000,mag,-0.007522388,-0.16649178,0.44885075 +26352000,baro,489.8259 +26356000,imu,-0.0906648,-0.06547691,-10.0392685,-0.0943238,-0.059251595,-0.02308293 +26360000,imu,-0.078338094,-0.059866454,-10.050546,-0.0846954,-0.058465946,-0.019502247 +26364000,mag,-0.013989445,-0.16998746,0.44779393 +26364000,imu,-0.076435186,-0.06936236,-10.042246,-0.07249649,-0.055200562,-0.020715656 +26368000,imu,-0.08404634,-0.07979051,-10.093456,-0.059593808,-0.050732516,-0.020635521 +26372000,imu,-0.08558723,-0.053407915,-10.113129,-0.04358485,-0.043806016,-0.020262832 +26376000,mag,-0.015668578,-0.16554952,0.45168737 +26376000,imu,-0.08858744,-0.08631674,-10.088359,-0.021099871,-0.03774098,-0.025606828 +26380000,imu,-0.08984694,-0.110089734,-10.10812,0.004992576,-0.033243127,-0.02287436 +26384000,imu,-0.108986534,-0.07447658,-10.079767,0.028991047,-0.025117753,-0.021966845 +26388000,imu,-0.11644867,-0.0922402,-10.059276,0.055627346,-0.010844835,-0.028300628 +26388000,mag,-0.014879454,-0.16643578,0.4507595 +26392000,imu,-0.086211205,-0.09778202,-10.086709,0.086987786,0.0018025523,-0.027810184 +26396000,mag,-0.019054532,-0.16643098,0.44318554 +26396000,imu,-0.07627141,-0.068240635,-10.094465,0.117871076,0.012352547,-0.026561819 +26400000,imu,-0.038576856,-0.07466302,-10.077791,0.14734681,0.023800611,-0.028239155 +26404000,imu,-0.02353403,-0.096983306,-10.062122,0.17715056,0.03668925,-0.028112413 +26408000,imu,-0.07659534,-0.11421367,-10.046335,0.2017123,0.047326885,-0.02976096 +26412000,mag,-0.010582569,-0.16294461,0.45217916 +26412000,imu,-0.10160054,-0.09161763,-10.013325,0.23472965,0.054062523,-0.031022893 +26416000,imu,-0.08855141,-0.107407436,-9.992954,0.26267707,0.063079946,-0.032556925 +26420000,imu,-0.07193044,-0.097144805,-10.027155,0.28219274,0.07703922,-0.0358638 +26424000,baro,489.9949 +26424000,mag,-0.01670842,-0.1572719,0.4483775 +26424000,imu,-0.082160115,-0.07989841,-10.05804,0.30652997,0.08413113,-0.03164729 +26428000,imu,-0.06650985,-0.11802365,-10.050528,0.32942903,0.09160815,-0.030047802 +26432000,imu,-0.04527446,-0.11977482,-10.026064,0.35334948,0.102662966,-0.03241274 +26436000,mag,-0.011323784,-0.15570512,0.44959885 +26436000,imu,-0.073982224,-0.13173257,-10.022678,0.36959437,0.109545775,-0.03273435 +26440000,imu,-0.0771917,-0.14378762,-10.005325,0.38435656,0.11813498,-0.037495434 +26444000,imu,-0.034096517,-0.14314237,-9.968063,0.39875728,0.12956373,-0.03825261 +26448000,imu,-0.03425309,-0.13535202,-9.978855,0.407063,0.13324487,-0.032649793 +26448000,mag,-0.01205106,-0.15725785,0.45107773 +26452000,imu,-0.014847681,-0.11502254,-9.982487,0.41653708,0.13692553,-0.03313307 +26456000,imu,-0.006934191,-0.09761727,-9.973016,0.42806342,0.14507368,-0.03598322 +26460000,imu,-0.05276715,-0.11015833,-9.981998,0.4355367,0.14551547,-0.036410555 +26460000,mag,-0.015964014,-0.14948502,0.45286322 +26464000,imu,-0.062103614,-0.11813811,-10.003357,0.4377209,0.14611685,-0.036702022 +26468000,imu,-0.034431823,-0.13153397,-9.981341,0.43842012,0.14799166,-0.035819665 +26468000,mag,-0.021315413,-0.15373766,0.45195338 +26472000,imu,-0.021438077,-0.14529425,-9.962264,0.43795046,0.15118389,-0.0370398 +26476000,imu,-0.044979557,-0.13349389,-9.942545,0.43561497,0.15746267,-0.037722684 +26480000,imu,-0.045616288,-0.14987828,-9.926804,0.43309155,0.15830792,-0.03857091 +26484000,imu,-0.06420311,-0.14146224,-9.928342,0.43184525,0.15520091,-0.0404175 +26484000,mag,-0.018075885,-0.15235078,0.45630372 +26488000,imu,-0.1041439,-0.16134588,-9.9195795,0.43114704,0.15696484,-0.03956582 +26492000,imu,-0.10069997,-0.15980409,-9.917625,0.42439914,0.15656817,-0.039408255 +26496000,imu,-0.09633404,-0.13611612,-9.896298,0.4156325,0.15465716,-0.039005425 +26496000,baro,489.9855 +26496000,mag,-0.024335926,-0.14656112,0.45381 +26500000,imu,-0.085300185,-0.15719907,-9.891371,0.41018164,0.15545689,-0.039409872 +26504000,imu,-0.074492484,-0.11605991,-9.9220705,0.40461552,0.1531802,-0.04193226 +26508000,imu,-0.0670541,-0.07311362,-9.927056,0.3985878,0.1546533,-0.041573204 +26508000,mag,-0.022585794,-0.14356917,0.4647257 +26512000,imu,-0.055958286,-0.09565945,-9.903362,0.38991624,0.15524048,-0.037897207 +26516000,imu,-0.10890657,-0.086073026,-9.8838,0.3844573,0.15335605,-0.03853494 +26520000,mag,-0.022646183,-0.14524569,0.4595569 +26520000,imu,-0.09214228,-0.08858472,-9.8920555,0.3781259,0.1537834,-0.040725067 +26524000,imu,-0.024360582,-0.14425872,-9.921556,0.36705762,0.15517078,-0.038631815 +26528000,imu,-0.0360868,-0.14893563,-9.909799,0.35877216,0.15502813,-0.03632139 +26532000,mag,-0.022478873,-0.13897051,0.4593932 +26532000,imu,-0.07268202,-0.12576962,-9.87648,0.35359317,0.14845298,-0.036685295 +26536000,imu,-0.08911455,-0.12380036,-9.872753,0.3439114,0.1407958,-0.039214917 +26540000,imu,-0.101317324,-0.11994948,-9.896473,0.33222392,0.13737321,-0.04164933 +26544000,mag,-0.02974044,-0.14014961,0.4571615 +26544000,imu,-0.109959826,-0.11812574,-9.907314,0.3227481,0.13477306,-0.041253887 +26548000,imu,-0.09118892,-0.11374051,-9.89148,0.31657052,0.12850195,-0.039511926 +26552000,imu,-0.081379324,-0.116135135,-9.898781,0.30707243,0.12189797,-0.039827164 +26556000,imu,-0.09977001,-0.1283394,-9.907572,0.2920786,0.12060089,-0.03892908 +26556000,mag,-0.02886028,-0.1301994,0.45410764 +26560000,imu,-0.09428773,-0.12804994,-9.879886,0.27811357,0.121429555,-0.03870702 +26564000,imu,-0.07710338,-0.12667294,-9.861132,0.26560882,0.11555673,-0.038685873 +26568000,baro,490.1686 +26568000,mag,-0.028348243,-0.13655312,0.45253378 +26568000,imu,-0.047718868,-0.15325537,-9.880167,0.25883052,0.107909426,-0.038086638 +26572000,imu,-0.031701922,-0.14901419,-9.90806,0.2471132,0.10077928,-0.038262155 +26576000,imu,-0.06811939,-0.13592751,-9.89859,0.23321521,0.09107012,-0.036734406 +26580000,mag,-0.026997212,-0.13445918,0.45921725 +26580000,imu,-0.09354192,-0.15619765,-9.886245,0.2226135,0.08650467,-0.035563096 +26584000,imu,-0.09225032,-0.13037924,-9.904428,0.21056929,0.08330865,-0.034252234 +26588000,imu,-0.07377695,-0.0792711,-9.899745,0.19969246,0.076642774,-0.03445441 +26592000,imu,-0.05238673,-0.11712369,-9.903879,0.18928443,0.074798174,-0.035319645 +26592000,mag,-0.023216847,-0.13617963,0.4619793 +26596000,imu,-0.08642191,-0.1596943,-9.948093,0.17672026,0.07009637,-0.034932632 +26600000,mag,-0.025840595,-0.134934,0.46061164 +26600000,imu,-0.09556207,-0.14696863,-9.935194,0.16240449,0.065169364,-0.035399884 +26604000,imu,-0.05791083,-0.15627456,-9.890702,0.15139578,0.062909596,-0.03497577 +26608000,imu,-0.05827115,-0.15072607,-9.894567,0.13873371,0.05617827,-0.03568968 +26612000,imu,-0.057060584,-0.13365094,-9.915676,0.12895821,0.04939061,-0.033861645 +26616000,imu,-0.029967548,-0.14050706,-9.935177,0.11975902,0.04337984,-0.034968883 +26616000,mag,-0.02293357,-0.12747884,0.4722059 +26620000,imu,-0.032844253,-0.113202,-9.91045,0.10961434,0.035227273,-0.03574564 +26624000,imu,-0.071963765,-0.09570794,-9.90885,0.099421255,0.02898057,-0.034012426 +26628000,imu,-0.07637295,-0.13445002,-9.959608,0.08597378,0.026438054,-0.03341409 +26628000,mag,-0.025237981,-0.13459605,0.45431203 +26632000,imu,-0.09094563,-0.17366561,-9.951028,0.07614964,0.020020602,-0.02868614 +26636000,imu,-0.08643254,-0.16805236,-9.933775,0.06787813,0.012746781,-0.028759336 +26640000,imu,-0.044390038,-0.14071465,-9.948263,0.054450173,0.00853045,-0.032645747 +26640000,mag,-0.026592532,-0.13081145,0.4635313 +26640000,baro,490.30008 +26644000,imu,-0.046184134,-0.16464272,-9.964852,0.04108747,0.007566943,-0.033223286 +26648000,imu,-0.068546355,-0.17629144,-9.963723,0.031086048,0.004219363,-0.030178266 +26652000,imu,-0.10065471,-0.1573172,-9.956367,0.020118559,-0.0016609862,-0.029053183 +26652000,mag,-0.027629556,-0.12613004,0.4576977 +26652000,gps,490616.0,85456011.0,473977398.0,-1.24,-0.52,-1.38 +26656000,imu,-0.068519615,-0.15367399,-9.955986,0.0075213504,-0.006295634,-0.029545613 +26660000,imu,-0.011102656,-0.17912735,-9.943548,-0.002584755,-0.012642035,-0.028833477 +26660000,mag,-0.018082613,-0.13504295,0.46065077 +26664000,imu,-0.035869345,-0.18477726,-9.954614,-0.012296654,-0.018678045,-0.027127154 +26668000,imu,-0.07925114,-0.16552183,-9.952435,-0.021527782,-0.019947344,-0.0260428 +26672000,imu,-0.06712866,-0.14551365,-9.949431,-0.026610037,-0.021942524,-0.02836999 +26676000,mag,-0.026464598,-0.128719,0.4656234 +26676000,imu,-0.03798989,-0.13350312,-9.9687195,-0.036650818,-0.03106018,-0.027047243 +26680000,imu,-0.048157036,-0.139596,-9.972404,-0.04654335,-0.03863293,-0.022822117 +26684000,imu,-0.05072478,-0.14341134,-9.9613,-0.055532727,-0.041079834,-0.023681015 +26688000,mag,-0.025274495,-0.13328625,0.46233746 +26688000,imu,-0.054075576,-0.14656551,-9.96935,-0.06435363,-0.04103471,-0.02355313 +26692000,imu,-0.03601317,-0.14495412,-9.965656,-0.0732867,-0.043199785,-0.022981657 +26696000,imu,-0.012524938,-0.15586157,-9.954718,-0.079599686,-0.051518187,-0.02382814 +26700000,imu,-0.051676393,-0.18338183,-9.97418,-0.087953,-0.056087125,-0.022214636 +26700000,mag,-0.024099197,-0.13241923,0.45636597 +26704000,imu,-0.084203616,-0.19122614,-9.985834,-0.096553,-0.056665014,-0.020375995 +26708000,imu,-0.04812871,-0.19219649,-9.996146,-0.1033241,-0.059735473,-0.017659754 +26712000,mag,-0.023853047,-0.1350244,0.4670941 +26712000,baro,490.40805 +26712000,imu,-0.023504604,-0.18397805,-9.969534,-0.1062919,-0.06388547,-0.01816274 +26716000,imu,-0.057649728,-0.16948184,-9.958021,-0.11290867,-0.06457679,-0.021367116 +26720000,imu,-0.073221475,-0.16883354,-9.962414,-0.124963,-0.064765945,-0.02309278 +26724000,imu,-0.055244636,-0.19628604,-9.986027,-0.13092679,-0.07014328,-0.020976232 +26724000,mag,-0.028980426,-0.14153476,0.46184453 +26728000,imu,-0.038568832,-0.21106483,-10.006222,-0.1347372,-0.077346824,-0.018704327 +26732000,imu,-0.04078255,-0.21319458,-9.990746,-0.1433378,-0.07999413,-0.01762025 +26736000,mag,-0.02700626,-0.124506906,0.4590849 +26736000,imu,-0.027864609,-0.20161228,-9.992626,-0.15360048,-0.079594895,-0.014413382 +26740000,imu,-0.048522487,-0.16870679,-9.990098,-0.15862374,-0.080323406,-0.017804673 +26744000,imu,-0.075064205,-0.16790047,-10.008919,-0.16230474,-0.08446808,-0.020480048 +26748000,imu,-0.033719163,-0.17719272,-10.018518,-0.16475229,-0.086789295,-0.016758926 +26748000,mag,-0.022131402,-0.13863927,0.46032137 +26752000,imu,-0.022917397,-0.21090496,-10.037262,-0.1632879,-0.08428182,-0.016660443 +26756000,imu,-0.03261341,-0.2413343,-10.083922,-0.15823884,-0.082863964,-0.018913012 +26760000,imu,-0.03662037,-0.21373944,-10.096774,-0.14689411,-0.07640748,-0.020979479 +26760000,mag,-0.025743315,-0.14335287,0.4602273 +26764000,imu,-0.05042231,-0.19170777,-10.0839405,-0.12745507,-0.071013704,-0.019838056 +26768000,imu,-0.031587273,-0.2267773,-10.107708,-0.107723445,-0.06266139,-0.01672293 +26772000,mag,-0.018223926,-0.14106272,0.45449078 +26772000,imu,-0.01744723,-0.23672038,-10.162407,-0.081072144,-0.050184164,-0.022109818 +26776000,imu,-0.051129885,-0.22207485,-10.193924,-0.04773061,-0.038567286,-0.02467933 +26780000,imu,-0.06544772,-0.21962437,-10.204669,-0.016168598,-0.022866394,-0.01775195 +26784000,baro,490.50665 +26784000,imu,-0.031846937,-0.2382104,-10.208892,0.019029373,-0.009090089,-0.01608008 +26784000,mag,-0.022237875,-0.14163423,0.46443957 +26788000,imu,-0.019129064,-0.2436471,-10.245342,0.05672162,0.0056892997,-0.019363686 +26792000,imu,0.011071466,-0.2432211,-10.243581,0.09087206,0.024070675,-0.023834283 +26796000,imu,0.015089033,-0.25620466,-10.211475,0.12952876,0.038110565,-0.023563875 +26796000,mag,-0.02078371,-0.13615203,0.46114093 +26800000,imu,0.012798343,-0.23806553,-10.243731,0.17464803,0.05315912,-0.020684235 +26804000,imu,0.0033780937,-0.23704213,-10.236591,0.21511872,0.069600984,-0.022527955 +26808000,mag,-0.023990784,-0.1373617,0.46216977 +26808000,imu,-0.031797066,-0.23881969,-10.192302,0.25357527,0.08450456,-0.025799295 +26812000,imu,0.007064704,-0.24356207,-10.174254,0.29176962,0.09941592,-0.028572075 +26816000,imu,0.0186436,-0.27017114,-10.174667,0.32902712,0.11438137,-0.031091098 +26820000,imu,-0.031476285,-0.25181773,-10.181288,0.36617708,0.13148554,-0.03143182 +26820000,mag,-0.02124045,-0.13052158,0.4693983 +26824000,imu,-0.03787149,-0.25736147,-10.174763,0.40023366,0.14594896,-0.030502148 +26828000,imu,0.0029918835,-0.29717875,-10.174912,0.43009406,0.16059172,-0.0275202 +26832000,mag,-0.023830602,-0.141164,0.46143067 +26832000,imu,0.02877549,-0.28983712,-10.179802,0.45700178,0.1740008,-0.028331026 +26836000,imu,-0.0067656515,-0.27682456,-10.160439,0.485112,0.18929657,-0.030874783 +26840000,imu,-0.03932203,-0.24502917,-10.125626,0.50688654,0.2041061,-0.031274054 +26844000,mag,-0.029324116,-0.124117054,0.45854202 +26844000,imu,-0.04093789,-0.23453762,-10.15141,0.52671707,0.21347106,-0.032955702 +26848000,imu,-0.0063229045,-0.26287076,-10.164197,0.5465988,0.22272038,-0.035035715 +26852000,imu,0.01977879,-0.2784835,-10.138479,0.5613844,0.22999863,-0.037712306 +26856000,baro,490.5865 +26856000,mag,-0.021094756,-0.12906587,0.46390468 +26856000,imu,0.015964534,-0.29221827,-10.10969,0.5716606,0.23739322,-0.03682523 +26860000,imu,0.016849589,-0.29300824,-10.085089,0.5757938,0.24365059,-0.035678916 +26864000,imu,0.0115565695,-0.26544812,-10.079416,0.58047116,0.24432777,-0.03673236 +26868000,imu,0.0057698777,-0.25087395,-10.0716305,0.5815996,0.2481291,-0.03777908 +26868000,mag,-0.025170943,-0.10993403,0.4627181 +26872000,imu,0.013256041,-0.24032995,-10.082741,0.5798194,0.25278968,-0.040858936 +26876000,imu,0.00352498,-0.25109652,-10.062254,0.5819969,0.25222924,-0.04243717 +26880000,imu,-0.054756597,-0.28435263,-10.0151615,0.5787312,0.25561267,-0.04158431 +26880000,mag,-0.028092662,-0.119952135,0.46747348 +26884000,imu,-0.04470577,-0.2811851,-9.992277,0.5682921,0.2564315,-0.040702384 +26888000,imu,-0.020300075,-0.26500416,-9.999628,0.5622952,0.25735524,-0.038945246 +26892000,imu,0.015099436,-0.26413068,-10.008643,0.5590383,0.25910136,-0.042038947 +26892000,mag,-0.025471188,-0.11034804,0.46641624 +26896000,imu,0.018514477,-0.2688801,-9.982655,0.55104864,0.25766164,-0.04184117 +26900000,imu,0.0023598599,-0.26690608,-9.966642,0.54152215,0.25860995,-0.03884906 +26904000,mag,-0.02673966,-0.110838376,0.47083393 +26904000,imu,-0.021358237,-0.27111858,-9.953827,0.52646667,0.255377,-0.039362375 +26908000,imu,-0.04714761,-0.2615594,-9.944344,0.51296955,0.24968345,-0.044707052 +26912000,imu,-0.019130524,-0.2667728,-9.935324,0.5046714,0.24498743,-0.049661364 +26916000,mag,-0.042242203,-0.10393492,0.46702427 +26916000,imu,-0.013773571,-0.2845877,-9.915031,0.48996106,0.24168138,-0.046928555 +26920000,imu,-0.019454073,-0.27219123,-9.896859,0.47881317,0.23792094,-0.044407826 +26924000,imu,-0.013409882,-0.26606524,-9.882406,0.4694971,0.23552775,-0.041871067 +26928000,mag,-0.030144576,-0.11319939,0.47827423 +26928000,baro,490.64752 +26928000,imu,-0.014263032,-0.2717955,-9.875917,0.4564752,0.2328878,-0.04157166 +26932000,imu,-0.01351667,-0.26645085,-9.866457,0.4453417,0.22772306,-0.044287708 +26936000,imu,-0.0061834883,-0.296377,-9.858528,0.43520933,0.2234944,-0.04619195 +26940000,mag,-0.040228143,-0.098625615,0.4694337 +26940000,imu,-0.0026711142,-0.3109723,-9.865938,0.42348915,0.21584119,-0.046873864 +26944000,imu,0.0032449174,-0.27587312,-9.855922,0.408381,0.20687008,-0.044941083 +26948000,imu,-0.013806434,-0.27487397,-9.81007,0.39331105,0.20254886,-0.04367069 +26952000,imu,0.0027906466,-0.30243534,-9.820981,0.37998003,0.19496389,-0.04467232 +26952000,mag,-0.03761411,-0.09884268,0.47032604 +26956000,imu,-0.0023255912,-0.30866084,-9.857584,0.36403593,0.18332638,-0.043790318 +26960000,imu,-0.032545745,-0.28641996,-9.841763,0.3468771,0.17078918,-0.042322926 +26964000,imu,-0.04195766,-0.27124172,-9.826649,0.33259976,0.16399273,-0.04355946 +26964000,mag,-0.041140556,-0.10297503,0.47112814 +26968000,imu,-0.006065637,-0.2681543,-9.825613,0.31875297,0.1614715,-0.044631023 +26972000,imu,-0.0036379588,-0.26491985,-9.825552,0.30459324,0.15684354,-0.042377237 +26976000,mag,-0.04196429,-0.1000756,0.46505234 +26976000,imu,-0.020922769,-0.2800557,-9.840589,0.29232976,0.15163355,-0.04211911 +26980000,imu,-0.013087553,-0.29954255,-9.83589,0.28041562,0.14624143,-0.04166825 +26984000,imu,-0.055238537,-0.2994977,-9.829699,0.26594868,0.13905266,-0.039484143 +26988000,mag,-0.04203929,-0.092054255,0.47459832 +26988000,imu,-0.040162813,-0.2778095,-9.845049,0.24913776,0.1306287,-0.03690164 +26992000,imu,0.007126833,-0.26907557,-9.879602,0.23247261,0.12260879,-0.03957124 +26996000,imu,0.006334714,-0.29450727,-9.871807,0.214017,0.11346919,-0.042026784 +27000000,baro,490.7461 +27000000,mag,-0.044563986,-0.09700677,0.46904796 +27000000,imu,-0.016204778,-0.33057648,-9.807737,0.19823153,0.10452746,-0.0384675 +27004000,imu,-0.019173512,-0.31417322,-9.8040495,0.18388121,0.09692844,-0.039631054 +27008000,imu,-0.01127718,-0.3014926,-9.824762,0.16928722,0.0908496,-0.04227303 +27012000,mag,-0.035287604,-0.09288605,0.47089905 +27012000,imu,-0.00787705,-0.32020152,-9.85305,0.15711159,0.08198982,-0.039867807 +27016000,imu,-0.017283289,-0.3022412,-9.89561,0.14338568,0.074828506,-0.036097467 +27020000,imu,0.0067281052,-0.30122852,-9.879866,0.13241993,0.06958455,-0.0339828 +27024000,imu,0.016435243,-0.30737007,-9.859507,0.12239536,0.063942,-0.033037234 +27024000,mag,-0.03825049,-0.08792749,0.47337353 +27028000,imu,0.0037427198,-0.28808877,-9.883005,0.10828177,0.056264844,-0.035296634 +27032000,imu,0.011683276,-0.31157073,-9.913903,0.09425079,0.045540232,-0.034287523 +27036000,mag,-0.038105264,-0.09741757,0.4677481 +27036000,imu,0.006730049,-0.31910533,-9.908501,0.08006046,0.038969945,-0.03403256 +27040000,imu,0.0030927965,-0.29472595,-9.906391,0.06398534,0.034157652,-0.03448608 +27044000,mag,-0.041691586,-0.09971155,0.4681833 +27044000,imu,0.013662237,-0.29091948,-9.8977375,0.053234022,0.027273986,-0.03322151 +27048000,imu,0.0043682745,-0.31468353,-9.889805,0.04267566,0.018104339,-0.031448867 +27052000,gps,491191.0,85455976.0,473977341.0,-1.88,-0.74,-1.3399999 +27052000,imu,0.018233627,-0.32959777,-9.917109,0.030644601,0.011012953,-0.030261423 +27056000,imu,0.022579437,-0.3279086,-9.913691,0.01670556,0.008451211,-0.02884011 +27060000,imu,0.015098555,-0.33209765,-9.930533,0.0013838349,0.001598808,-0.027211292 +27060000,mag,-0.046199597,-0.09713822,0.4657381 +27064000,imu,0.0055122655,-0.33670104,-9.937871,-0.006505326,-0.009279739,-0.02870465 +27068000,imu,0.0065317005,-0.33600897,-9.943491,-0.01423206,-0.0172178,-0.02879018 +27072000,mag,-0.044921577,-0.09424514,0.47133785 +27072000,baro,490.7696 +27072000,imu,0.03230983,-0.34721518,-9.965524,-0.02666165,-0.021363337,-0.027455812 +27076000,imu,0.046861354,-0.3865865,-9.971174,-0.040719874,-0.025887053,-0.026979765 +27080000,landed,0.0 +27080000,imu,0.05878272,-0.37392023,-9.984102,-0.053516164,-0.033993203,-0.026562516 +27084000,mag,-0.040793203,-0.09830315,0.46772382 +27084000,imu,0.027952943,-0.32999447,-9.991232,-0.06296703,-0.040789794,-0.024268 +27088000,imu,0.0164941,-0.29510358,-9.972553,-0.0761934,-0.043997414,-0.02167487 +27092000,imu,0.020159353,-0.30206463,-9.960522,-0.090145506,-0.053370126,-0.0194674 +27096000,mag,-0.04573254,-0.10382192,0.46684518 +27096000,imu,0.010329313,-0.32648054,-9.974539,-0.09971829,-0.060472872,-0.020314936 +27100000,imu,0.05939646,-0.33294895,-9.98344,-0.112539314,-0.06529343,-0.020039182 +27104000,imu,0.07039679,-0.3378149,-9.99007,-0.12083062,-0.07476189,-0.019279236 +27108000,mag,-0.04380212,-0.0935798,0.4672356 +27108000,imu,0.031126961,-0.3458901,-9.977524,-0.12909217,-0.07804641,-0.017663918 +27112000,imu,0.027068758,-0.36046198,-9.982941,-0.14390177,-0.08388809,-0.016132621 +27116000,imu,0.051521465,-0.35594052,-9.978362,-0.15249579,-0.09244425,-0.018460805 +27116000,mag,-0.03975957,-0.09810609,0.47419804 +27120000,imu,0.050859664,-0.35908702,-9.957644,-0.15876909,-0.09463009,-0.020235427 +27124000,imu,0.026454035,-0.356701,-9.9842005,-0.1709043,-0.097399525,-0.018315433 +27128000,imu,0.05621358,-0.3577925,-10.004389,-0.1816818,-0.100769594,-0.018270824 +27132000,imu,0.04992427,-0.3656402,-9.971476,-0.19335043,-0.10325725,-0.018849393 +27132000,mag,-0.039979897,-0.10054543,0.4687872 +27136000,imu,0.04942371,-0.3704406,-9.953038,-0.20435326,-0.1059731,-0.01409988 +27140000,imu,0.05592932,-0.3675519,-9.95158,-0.2118862,-0.10832982,-0.015316573 +27144000,imu,0.061069515,-0.35010678,-9.928219,-0.2178329,-0.112549916,-0.015929002 +27144000,baro,490.9433 +27144000,mag,-0.035743654,-0.095312975,0.4724221 +27148000,imu,0.11089026,-0.36719134,-9.942547,-0.22311851,-0.11939638,-0.013934335 +27152000,imu,0.08650117,-0.41650802,-9.957373,-0.23231946,-0.121964216,-0.01097991 +27156000,imu,0.042699296,-0.41856247,-9.975655,-0.2424596,-0.121353924,-0.009677294 +27156000,mag,-0.034523375,-0.10301837,0.46702287 +27160000,imu,0.05778507,-0.41144434,-9.998374,-0.24662662,-0.12745413,-0.011510999 +27164000,imu,0.06271557,-0.3943077,-9.937847,-0.25051984,-0.12985231,-0.010828517 +27168000,imu,0.08186292,-0.36227283,-9.900225,-0.25813696,-0.12667485,-0.010201587 +27168000,mag,-0.03911064,-0.10626803,0.46844319 +27172000,imu,0.061822407,-0.3867861,-9.939941,-0.26265842,-0.12850107,-0.010982852 +27176000,imu,0.021702046,-0.38855672,-9.95715,-0.26657167,-0.13291183,-0.0087033035 +27180000,mag,-0.0355194,-0.09778443,0.46334854 +27180000,imu,0.026424065,-0.3959813,-9.947265,-0.2715141,-0.13237885,-0.004490863 +27184000,imu,0.042240426,-0.42587554,-9.9618,-0.27588457,-0.13292003,-0.005557983 +27188000,imu,0.05106028,-0.38512787,-9.974062,-0.2753203,-0.13770837,-0.005485962 +27192000,imu,0.047716193,-0.37920722,-9.960945,-0.27672592,-0.14072496,-0.0048022554 +27192000,mag,-0.033837676,-0.102746546,0.46126556 +27196000,imu,0.07096108,-0.4128203,-9.9552765,-0.28281933,-0.14237632,-0.006724683 +27200000,imu,0.08897662,-0.4457351,-9.976855,-0.2843123,-0.13868132,-0.006102973 +27204000,imu,0.089768164,-0.43641883,-9.9757595,-0.28432631,-0.13633594,-0.0051999837 +27204000,mag,-0.035728868,-0.10966573,0.47249606 +27208000,imu,0.06208827,-0.42417577,-9.96834,-0.28954867,-0.13895541,-0.006683931 +27212000,imu,0.0326616,-0.44158784,-9.995249,-0.2922013,-0.1413552,-0.0072616236 +27216000,baro,491.07477 +27216000,imu,0.05524876,-0.42541662,-9.987808,-0.29082787,-0.14292024,-0.0049178735 +27216000,mag,-0.032710984,-0.111987956,0.46751657 +27220000,imu,0.08654423,-0.4576741,-9.955267,-0.2894135,-0.14000623,-0.0025020256 +27224000,imu,0.0929694,-0.46802983,-9.97644,-0.2896414,-0.13843128,-0.0032188806 +27228000,imu,0.07760081,-0.45158017,-9.963505,-0.2893943,-0.14175679,-0.00553334 +27228000,mag,-0.030586634,-0.10751762,0.47239596 +27232000,imu,0.081897154,-0.4397518,-9.912194,-0.28980783,-0.14088891,-0.003320473 +27236000,imu,0.10617279,-0.45188674,-9.93211,-0.29593307,-0.14226198,-0.0009802607 +27240000,imu,0.09478741,-0.46657857,-9.944992,-0.2982559,-0.14318544,-6.906018e-05 +27240000,mag,-0.033633053,-0.10715963,0.4727263 +27244000,imu,0.063727215,-0.46189705,-9.964998,-0.29684344,-0.14302966,0.0028317089 +27248000,imu,0.11381543,-0.46687797,-10.012684,-0.29751983,-0.14536597,0.0013129951 +27252000,imu,0.12276473,-0.47148535,-10.019777,-0.29870045,-0.14580102,0.000304233 +27252000,mag,-0.027250798,-0.10751186,0.4696589 +27256000,imu,0.084206685,-0.46013552,-9.949034,-0.3042613,-0.14435162,0.0018789603 +27260000,imu,0.09314776,-0.4756599,-9.911087,-0.30941892,-0.14452226,0.0051758294 +27264000,mag,-0.03337255,-0.12204721,0.4683631 +27264000,imu,0.09970942,-0.4946799,-9.956413,-0.30774432,-0.14650851,0.0038064246 +27268000,imu,0.11138086,-0.4691983,-9.934088,-0.30914614,-0.14548796,0.0006676281 +27272000,imu,0.07405572,-0.46146476,-9.934246,-0.3091965,-0.14498381,0.0013379892 +27276000,imu,0.06586589,-0.4791196,-9.942712,-0.30910647,-0.14522229,0.0009720353 +27276000,mag,-0.03035443,-0.113621764,0.46521857 +27280000,imu,0.088937595,-0.4877972,-9.916026,-0.3120784,-0.1468378,0.0014463589 +27284000,imu,0.08605789,-0.49126068,-9.930296,-0.31300485,-0.14630435,0.0023968285 +27288000,imu,0.062437642,-0.47916442,-9.9248295,-0.31548777,-0.14532252,0.0020186903 +27288000,baro,491.16867 +27288000,mag,-0.027228646,-0.12042006,0.46627146 +27292000,imu,0.05882474,-0.47273245,-9.9118395,-0.31424782,-0.14492342,0.0024464298 +27296000,imu,0.072083965,-0.47473648,-9.926205,-0.3085977,-0.14115947,0.0043126936 +27300000,mag,-0.028604629,-0.12158373,0.46351424 +27300000,imu,0.09575604,-0.4744379,-9.961287,-0.3079371,-0.13898335,0.006195868 +27304000,imu,0.122948796,-0.49538055,-9.945923,-0.31145513,-0.14141645,0.00725606 +27308000,imu,0.09348732,-0.51227456,-9.925112,-0.3137463,-0.14193308,0.0052363267 +27312000,mag,-0.029470334,-0.121679,0.4617809 +27312000,imu,0.104736045,-0.5035425,-9.935915,-0.31607345,-0.13760656,0.0043286816 +27316000,imu,0.12891537,-0.48482656,-9.915618,-0.31325954,-0.13722625,0.005668235 +27320000,imu,0.07411434,-0.49833018,-9.894873,-0.3116137,-0.13896513,0.009267039 +27324000,imu,0.0701445,-0.5103902,-9.888744,-0.312966,-0.14038804,0.012217837 +27324000,mag,-0.022364113,-0.12183601,0.4689215 +27328000,imu,0.11991164,-0.5212339,-9.906082,-0.31305012,-0.1418938,0.009476597 +27332000,imu,0.10464893,-0.53580064,-9.915882,-0.31286156,-0.14283763,0.0072027347 +27336000,mag,-0.026898593,-0.12214858,0.46095583 +27336000,imu,0.09706899,-0.5260193,-9.923885,-0.309996,-0.14196199,0.0073098345 +27340000,imu,0.10381578,-0.5305982,-9.927692,-0.31134805,-0.14082749,0.009976772 +27344000,imu,0.10330709,-0.53135604,-9.901576,-0.31394106,-0.14094345,0.012571228 +27348000,imu,0.08780922,-0.56037354,-9.913023,-0.31330648,-0.14127684,0.010786281 +27348000,mag,-0.030608028,-0.13081479,0.46076444 +27352000,imu,0.060518272,-0.56435126,-9.934411,-0.31463486,-0.14017916,0.009405724 +27356000,imu,0.073942415,-0.5166785,-9.921232,-0.31451684,-0.13908288,0.012027182 +27360000,mag,-0.021707613,-0.12474011,0.46385026 +27360000,baro,491.23438 +27360000,imu,0.0890973,-0.50998986,-9.915157,-0.31089452,-0.13859832,0.014328304 +27364000,imu,0.087697715,-0.5168064,-9.914781,-0.30960226,-0.13937038,0.014560304 +27368000,imu,0.11368497,-0.51992625,-9.893978,-0.30952418,-0.14338455,0.012849301 +27372000,mag,-0.022870777,-0.1233029,0.4618923 +27372000,imu,0.13797367,-0.5421718,-9.845951,-0.31490406,-0.14265427,0.011879659 +27376000,imu,0.11653905,-0.5334491,-9.826794,-0.316944,-0.14228901,0.010893728 +27380000,imu,0.118627004,-0.5198676,-9.837794,-0.31354693,-0.14335695,0.011017348 +27384000,mag,-0.024571473,-0.13014606,0.45802477 +27384000,imu,0.12132011,-0.5441511,-9.818731,-0.31296527,-0.14251496,0.014818086 +27388000,imu,0.09659733,-0.54566526,-9.7692375,-0.31286195,-0.14300977,0.015545617 +27392000,imu,0.06059373,-0.5724501,-9.752453,-0.30994728,-0.14518782,0.011693415 +27396000,imu,0.0818546,-0.5755047,-9.749526,-0.30646136,-0.14637712,0.010195633 +27396000,mag,-0.026923602,-0.12843625,0.46213812 +27400000,imu,0.11945112,-0.550641,-9.714293,-0.30629238,-0.14178677,0.01274311 +27404000,imu,0.09351425,-0.5449187,-9.738555,-0.30462667,-0.13558541,0.013048685 +27408000,imu,0.10176499,-0.5628024,-9.771257,-0.30289173,-0.1380637,0.012990252 +27408000,mag,-0.019583775,-0.1295515,0.46056855 +27412000,imu,0.11884016,-0.5777861,-9.735949,-0.30305547,-0.1431192,0.012665686 +27416000,imu,0.14817262,-0.55670136,-9.7197,-0.30291003,-0.1438566,0.010331661 +27420000,imu,0.14140485,-0.56158227,-9.731461,-0.3009094,-0.14353076,0.012838691 +27420000,mag,-0.022759361,-0.14118105,0.46068707 +27424000,imu,0.11115053,-0.55448264,-9.747212,-0.3014841,-0.14475453,0.01315227 +27428000,imu,0.14204347,-0.5642484,-9.760298,-0.30396307,-0.14616449,0.011119612 +27432000,mag,-0.022624828,-0.1444282,0.4576144 +27432000,imu,0.12482688,-0.5830862,-9.766753,-0.3022896,-0.1429973,0.013050441 +27432000,baro,491.41748 +27436000,imu,0.08687338,-0.57287806,-9.777145,-0.3000569,-0.14006267,0.013586316 +27440000,imu,0.08700168,-0.58568984,-9.806976,-0.29979536,-0.14279169,0.014437813 +27444000,imu,0.10374048,-0.56598616,-9.8223095,-0.29744616,-0.14082174,0.014782506 +27444000,mag,-0.017686155,-0.13442628,0.4609732 +27448000,imu,0.11685475,-0.5775822,-9.824593,-0.29150522,-0.14034137,0.01455686 +27452000,imu,0.09666608,-0.5875265,-9.810055,-0.29032823,-0.14138524,0.015266736 +27452000,gps,491720.0,85455928.0,473977259.0,-2.6,-1.03,-1.35 +27456000,imu,0.10023888,-0.5506827,-9.787693,-0.2915489,-0.13580832,0.014748951 +27456000,mag,-0.019350896,-0.14282721,0.45761067 +27460000,imu,0.1447208,-0.5482768,-9.800089,-0.29163903,-0.13256854,0.01405601 +27464000,imu,0.13493401,-0.56643504,-9.817095,-0.28964177,-0.13430743,0.015110854 +27468000,mag,-0.013254393,-0.14676659,0.45729306 +27468000,imu,0.10595885,-0.5889868,-9.801178,-0.28368738,-0.13752435,0.01491007 +27472000,imu,0.10828477,-0.6017603,-9.8105545,-0.28549698,-0.13368994,0.015005579 +27476000,imu,0.12098748,-0.5999317,-9.8356695,-0.28529054,-0.12723243,0.01548966 +27480000,mag,-0.015895141,-0.13972652,0.46042678 +27480000,imu,0.1222109,-0.58395547,-9.839287,-0.27878812,-0.12741315,0.014984258 +27484000,imu,0.12100436,-0.5877295,-9.859249,-0.27588463,-0.13082899,0.013865788 +27488000,imu,0.12854101,-0.5897153,-9.898224,-0.2787738,-0.12859853,0.012865223 +27492000,mag,-0.023042658,-0.14530618,0.45596802 +27492000,imu,0.14701548,-0.57485837,-9.917366,-0.27640247,-0.12258477,0.014871339 +27496000,imu,0.14292073,-0.597336,-9.901669,-0.26927388,-0.124513984,0.014808396 +27500000,imu,0.11844609,-0.59496975,-9.891184,-0.2654375,-0.12700005,0.01561902 +27504000,baro,491.47852 +27504000,imu,0.13195206,-0.5900931,-9.916904,-0.2641333,-0.1258566,0.015989367 +27504000,mag,-0.012487172,-0.15521897,0.45767862 +27508000,imu,0.124313794,-0.6135596,-9.958363,-0.26887992,-0.12762736,0.011487341 +27512000,imu,0.12749445,-0.6142917,-9.958261,-0.26900053,-0.12716071,0.011261387 +27516000,mag,-0.0172419,-0.15220907,0.45575035 +27516000,imu,0.16853702,-0.6281448,-9.945114,-0.26616293,-0.12597531,0.012361051 +27520000,imu,0.15033296,-0.61674863,-9.92809,-0.2655746,-0.12684272,0.013376282 +27524000,imu,0.14851004,-0.6206513,-9.915911,-0.26124954,-0.12494453,0.014704207 +27528000,imu,0.14526057,-0.6384121,-9.921127,-0.2606739,-0.12197069,0.013531376 +27528000,mag,-0.018292984,-0.15607601,0.4575878 +27532000,imu,0.12814765,-0.62746274,-9.930904,-0.26301992,-0.119457215,0.013460205 +27536000,imu,0.126795,-0.60015064,-9.939543,-0.25966686,-0.11940744,0.012516126 +27540000,mag,-0.015533845,-0.15727082,0.4614385 +27540000,imu,0.15134546,-0.59373146,-9.939304,-0.25796816,-0.119290575,0.011652732 +27544000,imu,0.19374582,-0.62600964,-9.924608,-0.25771365,-0.115890086,0.012350555 +27548000,mag,-0.011710502,-0.14912966,0.45544767 +27548000,imu,0.13975549,-0.62386996,-9.926682,-0.24968871,-0.11584269,0.015160587 +27552000,imu,0.12450978,-0.61145544,-9.928206,-0.24492073,-0.11557647,0.016856126 +27556000,imu,0.14419958,-0.6281496,-9.901013,-0.24467057,-0.112491265,0.013996323 +27560000,imu,0.14561903,-0.6635633,-9.913336,-0.24203598,-0.1096,0.013480913 +27564000,mag,-0.016487591,-0.15222685,0.45879835 +27564000,imu,0.14999452,-0.64754033,-9.944841,-0.23384383,-0.1068793,0.016240366 +27568000,imu,0.14321908,-0.60989606,-9.952746,-0.22851557,-0.10543974,0.0140661085 +27572000,imu,0.14210767,-0.63357955,-9.952162,-0.21966077,-0.101465926,0.0134815695 +27576000,imu,0.14357436,-0.6366851,-9.942467,-0.20476136,-0.09534081,0.013620295 +27576000,baro,491.502 +27576000,mag,-0.015378303,-0.15826535,0.45464748 +27580000,imu,0.14747962,-0.6298063,-9.947165,-0.19293262,-0.09057198,0.012554437 +27584000,imu,0.15181912,-0.64177865,-9.933527,-0.18340462,-0.08641051,0.0133117605 +27588000,mag,-0.011154523,-0.15686859,0.45312047 +27588000,imu,0.15994158,-0.63595045,-9.939348,-0.17670843,-0.080438934,0.012226526 +27592000,imu,0.15146263,-0.6042914,-9.940046,-0.16403238,-0.073646866,0.014882795 +27596000,imu,0.17644703,-0.62857133,-9.932278,-0.15075356,-0.067387335,0.015774315 +27600000,mag,-0.008344288,-0.16246536,0.45282778 +27600000,imu,0.15888439,-0.6498054,-9.939037,-0.13562147,-0.0625894,0.011380097 +27604000,imu,0.15079822,-0.6161353,-9.915192,-0.12109874,-0.061569,0.00775704 +27608000,imu,0.16980208,-0.61938554,-9.8963375,-0.11099684,-0.06004017,0.008052453 +27612000,mag,-0.02152594,-0.15833749,0.45165214 +27612000,imu,0.14114493,-0.625149,-9.916437,-0.09848363,-0.053783476,0.0069963443 +27616000,imu,0.17004432,-0.6634708,-9.937028,-0.08213413,-0.04471043,0.006447494 +27620000,imu,0.16558313,-0.6874731,-9.907349,-0.06825229,-0.037248194,0.0097974725 +27624000,mag,-0.011480721,-0.15888895,0.45641023 +27624000,imu,0.1692037,-0.66506475,-9.916332,-0.06076244,-0.032473296,0.010656908 +27628000,imu,0.21943742,-0.6652702,-9.938726,-0.048251867,-0.029470112,0.006218993 +27632000,imu,0.18526255,-0.6726864,-9.926142,-0.035139244,-0.022296978,0.0050411997 +27636000,mag,-0.015134648,-0.16335268,0.44983265 +27636000,imu,0.15739812,-0.6483925,-9.897888,-0.02691409,-0.017780794,0.0049821585 +27640000,imu,0.1587457,-0.653169,-9.893221,-0.015685111,-0.014139557,0.0070366045 +27644000,imu,0.14109814,-0.6701024,-9.9214,-0.007003866,-0.007132362,0.008026518 +27648000,imu,0.14879918,-0.66813314,-9.900558,-0.0029436438,-0.0020115804,0.0061771744 +27648000,mag,-0.0148077905,-0.15199846,0.45981914 +27648000,baro,491.64755 +27652000,imu,0.12948328,-0.67944145,-9.87319,0.0061482484,-0.000998448,0.008708857 +27656000,imu,0.11027851,-0.64991075,-9.886353,0.013516815,-0.00079318107,0.009337382 +27660000,mag,-0.013885923,-0.1582081,0.4545064 +27660000,imu,0.13962357,-0.6440835,-9.883076,0.017804675,0.004208256,0.008540581 +27664000,imu,0.17456755,-0.644221,-9.858074,0.023257753,0.008857478,0.006315153 +27668000,imu,0.18221258,-0.63213414,-9.86404,0.025107393,0.009921796,0.0051158033 +27672000,mag,-0.014871729,-0.15473768,0.4493238 +27672000,imu,0.16016719,-0.66679996,-9.855776,0.027350893,0.012950132,0.006308575 +27676000,imu,0.16438621,-0.6682471,-9.86419,0.033255186,0.015956562,0.0069338423 +27680000,imu,0.12045598,-0.65060014,-9.900544,0.039619796,0.014763916,0.0054161106 +27684000,mag,-0.015122528,-0.15274106,0.4490411 +27684000,imu,0.107900344,-0.64578056,-9.88731,0.04098007,0.017177012,0.0059965453 +27688000,imu,0.14575738,-0.63282794,-9.881468,0.043677732,0.021340286,0.006692922 +27692000,imu,0.12874769,-0.6320058,-9.880323,0.044514608,0.023415497,0.0025291862 +27696000,mag,-0.021802576,-0.15107624,0.45555863 +27696000,imu,0.13609588,-0.6429602,-9.8633175,0.04376898,0.02335583,0.0011430623 +27700000,imu,0.14616363,-0.66684467,-9.842855,0.045951955,0.024154583,0.0028636937 +27704000,imu,0.13430986,-0.6848078,-9.857328,0.04452705,0.02601495,0.0028124298 +27708000,mag,-0.009932861,-0.16190292,0.45181325 +27708000,imu,0.11328977,-0.6725107,-9.87809,0.041638665,0.02430345,0.005357788 +27712000,imu,0.105453506,-0.68178236,-9.867954,0.03934385,0.02367245,0.005063238 +27716000,imu,0.1344448,-0.6587259,-9.855356,0.038725868,0.025238484,0.0019179322 +27720000,mag,-0.013734007,-0.15433596,0.45615909 +27720000,baro,491.65225 +27720000,imu,0.15506323,-0.660333,-9.854351,0.036815893,0.024431387,0.00067051995 +27724000,imu,0.14846148,-0.6958178,-9.854925,0.03936041,0.024780009,0.0007017309 +27728000,imu,0.15544839,-0.6645583,-9.885433,0.038894806,0.025530243,0.0038914063 +27732000,mag,-0.011079169,-0.15488978,0.4489969 +27732000,imu,0.17729682,-0.6453764,-9.885773,0.033358447,0.022613775,0.0038684956 +27736000,imu,0.16366586,-0.66545177,-9.859129,0.0330249,0.020318313,-0.002285393 +27740000,imu,0.13205501,-0.69349355,-9.867914,0.032269184,0.020695047,-0.0020918003 +27744000,imu,0.12512551,-0.6934755,-9.862183,0.026652452,0.0177344,-0.0011753878 +27744000,mag,-0.014814232,-0.15886123,0.45854652 +27748000,imu,0.118265085,-0.6923591,-9.863801,0.025174541,0.015025753,-0.0012494852 +27752000,imu,0.112424806,-0.68981695,-9.857101,0.026146278,0.015269272,0.0024421418 +27756000,imu,0.13462818,-0.66301316,-9.859711,0.022539964,0.013869172,0.0017758926 +27756000,mag,-0.012346498,-0.16132705,0.45317012 +27760000,imu,0.15636599,-0.6355103,-9.852393,0.02209001,0.011315875,0.004042269 +27764000,imu,0.14295839,-0.6686274,-9.848769,0.020229176,0.006605881,0.0023716856 +27768000,imu,0.1480341,-0.7143165,-9.863756,0.015453998,0.004971587,-0.0015296423 +27768000,mag,-0.010532481,-0.15627007,0.45910856 +27772000,imu,0.15415342,-0.70845956,-9.865541,0.013140311,0.0066260374,0.0017239 +27776000,mag,-0.020331025,-0.15515517,0.45589092 +27776000,imu,0.15469763,-0.6877337,-9.872381,0.011911366,0.0050230594,0.005366065 +27780000,imu,0.14876474,-0.7136702,-9.887384,0.007034891,-0.0016703837,0.0056258426 +27784000,imu,0.1056854,-0.69256765,-9.860376,0.0048286375,-0.0045426344,0.002834281 +27788000,imu,0.15067804,-0.6475321,-9.837129,0.002381883,-0.0014896985,-7.860229e-06 +27792000,imu,0.18787785,-0.6728851,-9.839165,-0.0024760617,-0.0024743904,9.140922e-05 +27792000,baro,491.90576 +27792000,mag,-0.019483434,-0.15609372,0.45012546 +27796000,imu,0.15043664,-0.6547797,-9.85788,-0.0057228417,-0.0041654087,0.0006492999 +27800000,imu,0.14000344,-0.6415766,-9.862613,-0.007177191,-0.009212225,-0.0005911552 +27804000,imu,0.1660955,-0.66659945,-9.858362,-0.008874737,-0.01137285,-0.0013171614 +27804000,mag,-0.009795791,-0.15639888,0.4563491 +27808000,imu,0.18281467,-0.65986115,-9.904599,-0.011587694,-0.010811637,0.0008878236 +27812000,imu,0.13462552,-0.6602249,-9.9193945,-0.014767065,-0.015235639,0.0008909842 +27816000,imu,0.10406913,-0.69512534,-9.890923,-0.021776764,-0.017397046,0.00025779332 +27816000,mag,-0.0135884425,-0.1612085,0.4511388 +27820000,imu,0.12651038,-0.66999096,-9.878294,-0.023416609,-0.018384587,0.003371198 +27824000,imu,0.15328647,-0.6443066,-9.885187,-0.025162492,-0.019279672,0.0015917384 +27828000,mag,-0.015213403,-0.15570953,0.4523037 +27828000,imu,0.14919004,-0.6429775,-9.883919,-0.030452901,-0.019520678,0.0026361125 +27832000,imu,0.13670821,-0.64229804,-9.867536,-0.03347976,-0.021431323,0.0034123026 +27836000,imu,0.14702469,-0.6848411,-9.861668,-0.03713619,-0.022676518,0.0023886403 +27840000,mag,-0.005029385,-0.15983874,0.44914067 +27840000,imu,0.15157107,-0.7109335,-9.877306,-0.038817152,-0.021646032,0.0044613937 +27844000,imu,0.14584614,-0.7032084,-9.870617,-0.040904548,-0.02180065,0.002945285 +27848000,imu,0.14284147,-0.699943,-9.836662,-0.04712473,-0.025606403,3.0968877e-05 +27852000,imu,0.15488261,-0.72999305,-9.84554,-0.049975254,-0.030089749,-6.720844e-05 +27852000,gps,492234.0,85455869.0,473977160.0,-2.8799999,-1.15,-1.29 +27852000,mag,-0.009188252,-0.15861315,0.4546987 +27856000,imu,0.1715056,-0.72795385,-9.86953,-0.051023494,-0.028098691,0.0041140066 +27860000,imu,0.15882489,-0.7301486,-9.860713,-0.05160876,-0.030459486,0.006923837 +27864000,mag,-0.022731325,-0.1572504,0.4530707 +27864000,baro,491.887 +27864000,imu,0.18189509,-0.72030675,-9.876085,-0.054150462,-0.037754707,0.005376355 +27868000,imu,0.18658103,-0.67690635,-9.909346,-0.059316333,-0.036907036,0.0020049575 +27872000,imu,0.16689092,-0.674922,-9.908504,-0.064389735,-0.035072107,-0.00071889936 +27876000,mag,-0.009812316,-0.15697852,0.4538572 +27876000,imu,0.18119916,-0.6993691,-9.890283,-0.067643024,-0.037323877,0.0007757305 +27880000,imu,0.19829613,-0.70500934,-9.901164,-0.06793386,-0.03943827,0.003303156 +27884000,imu,0.19800535,-0.6995426,-9.889736,-0.069416106,-0.041916613,0.003094377 +27888000,mag,-0.0074163517,-0.15637358,0.44523633 +27888000,imu,0.18067935,-0.69641834,-9.882194,-0.0704813,-0.04506666,0.0014138276 +27892000,imu,0.16595525,-0.6884542,-9.914022,-0.07480053,-0.04572112,0.00083024136 +27896000,imu,0.1605841,-0.6980706,-9.914137,-0.07790973,-0.047111135,0.00247894 +27900000,mag,-0.0092272125,-0.1537811,0.4511508 +27900000,imu,0.17515928,-0.72101384,-9.915188,-0.0799067,-0.05174221,0.005153004 +27904000,imu,0.16495754,-0.71213526,-9.934882,-0.08270786,-0.04879957,0.0061414903 +27908000,imu,0.16404435,-0.68738395,-9.912661,-0.08281849,-0.04966239,0.0057407953 +27912000,imu,0.1857535,-0.7109309,-9.897131,-0.08532676,-0.0552199,0.0047270386 +27912000,mag,-0.012293108,-0.15623799,0.45929652 +27916000,imu,0.16070297,-0.72116333,-9.911985,-0.08894638,-0.053645656,0.0058243987 +27920000,imu,0.15835425,-0.7009427,-9.930063,-0.09393362,-0.054778833,0.009803242 +27924000,imu,0.1713507,-0.6899573,-9.920977,-0.09542228,-0.057915326,0.007892952 +27924000,mag,-0.010657964,-0.17010811,0.45721808 +27928000,imu,0.15676896,-0.67446655,-9.899563,-0.094118565,-0.055302437,0.003007265 +27932000,imu,0.14797752,-0.6566089,-9.871819,-0.09466975,-0.053460572,0.0026295076 +27936000,baro,492.04663 +27936000,imu,0.15687528,-0.63756424,-9.841362,-0.09212537,-0.054545637,0.0073980135 +27936000,mag,-0.010381711,-0.16148254,0.45401916 +27940000,imu,0.17259055,-0.65627545,-9.871326,-0.09273118,-0.054553334,0.00732932 +27944000,imu,0.16110778,-0.7038707,-9.891216,-0.098991506,-0.054691363,0.0060897125 +27944000,mag,-0.016484857,-0.16003232,0.45437422 +27948000,imu,0.15845257,-0.74409735,-9.888453,-0.10263374,-0.05419232,0.006174813 +27952000,imu,0.17805251,-0.70419735,-9.91279,-0.0969527,-0.05434146,6.2005965e-05 +27956000,imu,0.19490227,-0.6647946,-9.955227,-0.08799231,-0.051996276,-0.00012343012 +27960000,imu,0.19696137,-0.6887572,-9.941043,-0.081866205,-0.04998974,-0.000909428 +27960000,mag,-0.015857244,-0.154963,0.45323417 +27964000,imu,0.17503858,-0.7146694,-9.931108,-0.07439059,-0.046303943,-0.00077762833 +27968000,imu,0.18302989,-0.7403956,-9.99625,-0.06279172,-0.042881697,0.0034436483 +27972000,imu,0.18534735,-0.732351,-9.995881,-0.046137284,-0.036693316,0.0013071588 +27972000,mag,-0.0074286843,-0.1611549,0.45472813 +27976000,imu,0.16696058,-0.708906,-9.987552,-0.027345058,-0.027352393,0.0036063637 +27980000,imu,0.19312327,-0.6946957,-10.013762,-0.010198777,-0.022810385,0.005074052 +27984000,mag,-0.010074102,-0.16088255,0.44742325 +27984000,imu,0.19498083,-0.7059775,-10.032887,0.009875116,-0.013767987,0.002164015 +27988000,imu,0.17334914,-0.72075117,-10.025713,0.033629805,-0.004383044,0.0018733594 +27992000,imu,0.15454316,-0.74834466,-10.027085,0.0554989,0.003768465,0.000812206 +27996000,mag,-0.0137399705,-0.16274992,0.45100015 +27996000,imu,0.16354366,-0.7526313,-10.066339,0.07516312,0.014618844,-0.0006663241 +28000000,imu,0.1639193,-0.751647,-10.039894,0.10110682,0.026544394,-0.0024855228 +28004000,imu,0.16507289,-0.72598475,-10.037045,0.1294952,0.037745547,-0.0034838882 +28008000,baro,492.05133 +28008000,imu,0.19591248,-0.6858584,-10.046565,0.15256181,0.04627101,-0.00091774913 +28008000,mag,-0.014622323,-0.16407487,0.4538232 +28012000,imu,0.20057483,-0.7087442,-10.028931,0.1758587,0.0552928,-0.0010222099 +28016000,imu,0.20165002,-0.7310478,-10.015541,0.19481081,0.06728024,-0.0041175894 +28020000,mag,-0.01793959,-0.15976714,0.4514195 +28020000,imu,0.18239522,-0.7309861,-9.993769,0.2136873,0.07598346,-0.0013011862 +28024000,imu,0.18850943,-0.7002888,-10.024303,0.23720391,0.0837994,0.00075582066 +28028000,imu,0.21408628,-0.6914057,-10.02771,0.2572523,0.09194223,-0.0029045427 +28032000,mag,-0.013776666,-0.15560086,0.44959188 +28032000,imu,0.21898162,-0.72073704,-10.006407,0.27224988,0.09755614,-0.0069898698 +28036000,imu,0.18711916,-0.74569774,-9.985648,0.28814232,0.10629101,-0.0092785 +28040000,imu,0.1603485,-0.74442333,-9.965137,0.3045862,0.116128944,-0.0072414787 +28044000,imu,0.14732322,-0.7298014,-9.96846,0.3188199,0.12387207,-0.005190198 +28044000,mag,-0.010277977,-0.15015642,0.44926557 +28048000,imu,0.1333242,-0.7347617,-9.965296,0.3319544,0.1300159,-0.0078639565 +28052000,imu,0.16627702,-0.73368937,-10.010315,0.3395347,0.13602725,-0.008576868 +28056000,imu,0.19564466,-0.7041311,-10.020374,0.34581482,0.13881814,-0.007477262 +28056000,mag,-0.021726783,-0.15849943,0.46293312 +28060000,imu,0.17866011,-0.69516164,-10.000788,0.35415858,0.14173123,-0.008991152 +28064000,imu,0.17194115,-0.69550425,-10.026437,0.3582239,0.1486459,-0.0070468546 +28068000,mag,-0.01850968,-0.1568261,0.4546533 +28068000,imu,0.18217327,-0.67970747,-9.992861,0.3623134,0.14963117,-0.0065858364 +28072000,imu,0.18520188,-0.6982342,-9.964649,0.36586738,0.14970815,-0.008865679 +28076000,baro,492.27667 +28076000,imu,0.19359721,-0.720848,-9.946511,0.36780638,0.15156703,-0.007986207 +28080000,imu,0.17334746,-0.7120292,-9.94805,0.36909813,0.1514709,-0.008916022 +28080000,mag,-0.011241602,-0.1444024,0.4647633 +28080000,landed,0.0 +28084000,imu,0.18046582,-0.7231079,-9.970253,0.37190515,0.15765211,-0.015502555 +28088000,imu,0.20819628,-0.74856764,-9.939166,0.37524226,0.16453229,-0.01614713 +28092000,mag,-0.013969863,-0.14459239,0.46138588 +28092000,imu,0.21467113,-0.74868673,-9.944061,0.37582785,0.16647804,-0.0125103025 +28096000,imu,0.22062317,-0.7278257,-9.9509,0.37277135,0.1650358,-0.014655261 +28100000,imu,0.1732169,-0.68638366,-9.90259,0.36656883,0.16469918,-0.0149815455 +28104000,imu,0.13149142,-0.66981894,-9.8691845,0.36347118,0.16124569,-0.012404477 +28104000,mag,-0.014996356,-0.14491902,0.4640512 +28108000,imu,0.1787031,-0.69085425,-9.924786,0.35949773,0.1565276,-0.014364325 +28112000,imu,0.18890393,-0.6874952,-9.918566,0.3525468,0.15509655,-0.018253181 +28116000,mag,-0.0126243085,-0.14214537,0.4540707 +28116000,imu,0.14240053,-0.65671164,-9.87118,0.3468914,0.15390572,-0.018416187 +28120000,landed,0.0 +28120000,imu,0.12697828,-0.68004507,-9.883348,0.34207606,0.15506807,-0.01693766 +28124000,mag,-0.017823286,-0.14076178,0.45379946 +28124000,imu,0.1513628,-0.7227124,-9.876019,0.3367234,0.15346861,-0.016563406 +28128000,imu,0.2046938,-0.74042594,-9.880947,0.33135578,0.15263887,-0.0149015365 +28132000,imu,0.20785663,-0.7663153,-9.882245,0.3262455,0.15420058,-0.016297365 +28136000,imu,0.17862698,-0.7544792,-9.872202,0.32034916,0.15082373,-0.017783277 +28140000,imu,0.17181274,-0.7211486,-9.849791,0.30962095,0.1478249,-0.014333178 +28140000,mag,-0.016513303,-0.14398447,0.4589892 +28144000,imu,0.15504938,-0.6722587,-8.92096,0.29702857,0.14504889,-0.0133537315 +28148000,imu,0.11249787,-0.5966369,-7.2704134,0.2805232,0.13293529,-0.01674562 +28152000,mag,-0.02568198,-0.14133567,0.4551161 +28152000,imu,0.09708187,-0.52630186,-5.960573,0.25451013,0.11887002,-0.018618397 +28152000,baro,492.31894 +28156000,imu,0.09765819,-0.4564267,-4.984479,0.22460869,0.10635679,-0.017238466 +28160000,imu,0.04607063,-0.4109729,-4.219818,0.19927233,0.08632348,-0.016604546 +28164000,mag,-0.021866854,-0.13482176,0.46099558 +28164000,imu,0.001286325,-0.35381532,-3.6030762,0.17339891,0.06773432,-0.016964098 +28168000,imu,-0.021525607,-0.29365045,-3.1364322,0.14726667,0.052519854,-0.016162697 +28172000,imu,-0.05554283,-0.28628927,-2.7907135,0.12046268,0.035592467,-0.012330251 +28176000,imu,-0.044675108,-0.23787263,-2.5123312,0.08951193,0.017897995,-0.01604048 +28176000,mag,-0.023820134,-0.13985659,0.4578259 +28180000,imu,-0.02059499,-0.23293985,-2.250567,0.060085706,0.0031404728,-0.020194763 +28184000,imu,-0.061304376,-0.23130925,-2.0400667,0.033180997,-0.011161377,-0.02203909 +28188000,imu,-0.092221975,-0.14595015,-1.8853469,0.0048729912,-0.026815098,-0.024916757 +28188000,mag,-0.020989908,-0.13442731,0.46557733 +28192000,imu,-0.07574956,-0.118695535,-1.7717655,-0.022991577,-0.037754368,-0.022834998 +28196000,imu,-0.07972015,-0.14816861,-1.659594,-0.053537004,-0.05013222,-0.021329014 +28200000,imu,-0.094778776,-0.15410958,-1.5881536,-0.084740326,-0.060748905,-0.02042697 +28200000,mag,-0.025531828,-0.14252762,0.46694624 +28204000,imu,-0.06503165,-0.121619076,-1.5349935,-0.11303044,-0.07087537,-0.017863115 +28208000,imu,-0.062155332,-0.10427043,-1.447953,-0.14331575,-0.08265262,-0.018773848 +28212000,mag,-0.021472083,-0.14044309,0.45609137 +28212000,imu,-0.06984024,-0.13893156,-1.4196243,-0.17503624,-0.093435206,-0.022725353 +28216000,imu,-0.061833635,-0.13456593,-1.3856974,-0.2049672,-0.10275724,-0.025122168 +28220000,imu,-0.06767465,-0.11325491,-1.3276513,-0.23566957,-0.110583186,-0.026765252 +28224000,mag,-0.013840686,-0.14330524,0.45929024 +28224000,imu,-0.04801904,-0.12009262,-1.322382,-0.26680097,-0.11861356,-0.027957134 +28224000,baro,492.3565 +28228000,imu,-0.08180908,-0.10738183,-1.278332,-0.29533082,-0.12683624,-0.03127501 +28232000,imu,-0.105963066,-0.12547968,-1.210966,-0.3213455,-0.1386807,-0.029684078 +28236000,mag,-0.011790347,-0.13542934,0.46226785 +28236000,imu,-0.08950563,-0.1724907,-1.2037942,-0.34767452,-0.14637883,-0.028020483 +28240000,imu,-0.09879209,-0.15387759,-1.2257392,-0.37252095,-0.15363583,-0.030176524 +28244000,imu,-0.10016577,-0.11359196,-1.2075677,-0.3985415,-0.16040523,-0.02902724 +28248000,imu,-0.108063,-0.1271618,-1.1477549,-0.4230209,-0.16556133,-0.027213044 +28248000,mag,-0.022370372,-0.14635646,0.46422789 +28252000,imu,-0.09892467,-0.13495399,-1.1161386,-0.4433126,-0.16933727,-0.028752755 +28252000,gps,492760.0,85455806.0,473977053.0,-3.07,-1.2099999,-1.3399999 +28256000,imu,-0.090786554,-0.14071701,-1.1432263,-0.46717414,-0.17020664,-0.029075425 +28260000,imu,-0.08148781,-0.11923769,-1.1447403,-0.48854887,-0.17493027,-0.025806658 +28260000,mag,-0.019026652,-0.14963,0.45970017 +28264000,imu,-0.062624596,-0.08297489,-1.1328249,-0.5095479,-0.18300013,-0.026827823 +28268000,imu,-0.088827774,-0.092234336,-1.1478496,-0.5274314,-0.18929826,-0.030265281 +28272000,mag,-0.021195848,-0.14899577,0.45325434 +28272000,imu,-0.08980499,-0.12302266,-1.096354,-0.5430769,-0.19522607,-0.032970715 +28276000,imu,-0.08639898,-0.13980918,-1.083214,-0.5613026,-0.20095654,-0.03000245 +28280000,imu,-0.08347973,-0.1245243,-1.1206839,-0.5794452,-0.20146315,-0.027566012 +28284000,imu,-0.09168977,-0.10364378,-1.0970876,-0.59295696,-0.20382847,-0.02973446 +28284000,mag,-0.012036535,-0.15658773,0.46487913 +28288000,imu,-0.086386316,-0.1047102,-1.083796,-0.6056208,-0.20891573,-0.030894803 +28292000,imu,-0.07244629,-0.102114774,-1.1056488,-0.6205897,-0.21347179,-0.032359574 +28296000,imu,-0.083407104,-0.14092447,-1.0897304,-0.6313517,-0.21772574,-0.028558075 +28296000,mag,-0.01455763,-0.15417013,0.44864848 +28296000,baro,492.4457 +28300000,imu,-0.065557554,-0.14039686,-1.0638214,-0.64085823,-0.22025894,-0.027842885 +28304000,imu,-0.0828095,-0.10929587,-1.0634748,-0.6522864,-0.22545248,-0.028743159 +28308000,mag,-0.010873752,-0.16426237,0.46047956 +28308000,imu,-0.07255494,-0.1019473,-1.079767,-0.6619214,-0.23104177,-0.030787578 +28312000,imu,-0.04653564,-0.11916608,-1.0513372,-0.6669343,-0.23527677,-0.030532025 +28316000,imu,-0.068066366,-0.13748689,-1.050528,-0.6758417,-0.23630293,-0.028992658 +28320000,mag,-0.013431556,-0.16256054,0.45563912 +28320000,imu,-0.08714187,-0.13721208,-1.0795422,-0.6811959,-0.23711799,-0.029811643 +28324000,imu,-0.06890653,-0.1431994,-1.0636117,-0.68275243,-0.24107316,-0.027077245 +28328000,imu,-0.037897605,-0.1426706,-1.0659907,-0.6879609,-0.23861524,-0.026403653 +28332000,imu,-0.031208972,-0.1371462,-1.0517242,-0.69345,-0.23825994,-0.0263152 +28332000,mag,-0.0056200763,-0.16564976,0.4559744 +28336000,imu,-0.043878317,-0.096660994,-1.0331392,-0.6965958,-0.24147923,-0.026376553 +28340000,imu,-0.05398398,-0.09320881,-1.0401719,-0.69374377,-0.24325167,-0.025798311 +28344000,imu,-0.0394923,-0.11074106,-1.0716233,-0.69413894,-0.2417442,-0.027980428 +28344000,mag,-0.012966265,-0.17149124,0.4447436 +28348000,imu,-0.051899124,-0.12313417,-1.1159503,-0.6944975,-0.23883708,-0.027750634 +28352000,imu,-0.056342926,-0.14601737,-1.182412,-0.69549984,-0.23991601,-0.023886096 +28356000,imu,-0.06671351,-0.13395864,-1.2254472,-0.6952575,-0.23753475,-0.02394474 +28356000,mag,-0.0039023259,-0.17732649,0.4472118 +28360000,imu,-0.07757501,-0.1371655,-1.2202303,-0.6893058,-0.23242998,-0.023986215 +28364000,imu,-0.05270727,-0.17701618,-1.224019,-0.68864924,-0.22907148,-0.021420697 +28368000,imu,-0.041321084,-0.19770426,-1.3769355,-0.68452984,-0.22429231,-0.02301206 +28368000,mag,-0.005660333,-0.179247,0.454301 +28368000,baro,492.36588 +28372000,imu,-0.03386952,-0.1795824,-1.6175965,-0.67808545,-0.21864419,-0.024210354 +28376000,imu,-0.05074204,-0.1973289,-1.8377221,-0.672215,-0.21284749,-0.020482458 +28380000,mag,-0.009583186,-0.18267797,0.44008324 +28380000,imu,-0.023191523,-0.21559945,-2.0104077,-0.6660321,-0.20760816,-0.019932542 +28384000,imu,0.014954006,-0.23859604,-2.114015,-0.6546638,-0.20677328,-0.020215845 +28388000,imu,0.0051013026,-0.29230234,-2.3644814,-0.640796,-0.20637739,-0.014182974 +28392000,mag,-0.0038069887,-0.1849327,0.44020712 +28392000,imu,0.013442383,-0.30091903,-2.7725449,-0.63096863,-0.20127325,-0.01271203 +28396000,imu,0.02552412,-0.33854628,-3.1133442,-0.6154064,-0.19851714,-0.015049628 +28400000,imu,0.02283135,-0.372842,-3.3646693,-0.5950557,-0.19812644,-0.016203891 +28404000,imu,0.0012071971,-0.40023857,-3.7535872,-0.5780576,-0.19618341,-0.015204772 +28404000,mag,-0.0016169699,-0.18639375,0.4421757 +28408000,imu,0.010901154,-0.43283096,-4.2866507,-0.5595496,-0.19258593,-0.008742954 +28412000,imu,0.044534065,-0.46788558,-4.6878586,-0.53746706,-0.19059925,-0.008008861 +28416000,imu,0.08180873,-0.5082448,-4.999288,-0.5173861,-0.18666144,-0.00926924 +28416000,mag,-0.0012358661,-0.19429629,0.44360217 +28420000,imu,0.10718839,-0.49969408,-5.269066,-0.49387604,-0.17924328,-0.0054453313 +28424000,imu,0.10417937,-0.53269875,-5.666877,-0.47511145,-0.17554243,-0.0013613008 +28428000,mag,0.003422945,-0.18964614,0.44911408 +28428000,imu,0.11474815,-0.5448574,-6.22081,-0.45357955,-0.1704029,-0.00047229382 +28432000,imu,0.13717718,-0.5705881,-6.620455,-0.42744112,-0.16108733,-0.0030673225 +28436000,imu,0.14651272,-0.6240608,-6.8934383,-0.40310648,-0.15080723,-0.0022162732 +28440000,imu,0.15525797,-0.609988,-7.163763,-0.3788315,-0.14126745,0.0013835742 +28440000,mag,-0.0014684452,-0.18471481,0.44325563 +28440000,baro,492.3377 +28444000,imu,0.1611537,-0.61322904,-7.3711576,-0.36014983,-0.13210273,0.0029727237 +28448000,imu,0.14259973,-0.59773254,-7.6609435,-0.3366156,-0.12215474,0.005685343 +28452000,imu,0.16237354,-0.6320947,-8.095393,-0.30872342,-0.11819342,0.0064554997 +28452000,mag,0.0015866325,-0.19520885,0.446277 +28456000,imu,0.17006753,-0.69352406,-8.4323635,-0.2847856,-0.11407776,0.0046199835 +28460000,mag,-0.0002222424,-0.20169687,0.4408411 +28460000,imu,0.17242172,-0.7085857,-8.662837,-0.26394394,-0.10581441,0.005694654 +28464000,imu,0.20442271,-0.71495634,-8.978428,-0.24548997,-0.10155818,0.010362416 +28468000,imu,0.20835432,-0.7309709,-9.366448,-0.22522181,-0.09399968,0.011709087 +28472000,imu,0.19169411,-0.74965245,-9.655022,-0.20663682,-0.08953495,0.012084272 +28476000,imu,0.19778341,-0.74906296,-9.850685,-0.19165799,-0.08625124,0.0153539805 +28476000,mag,0.0022084457,-0.20035808,0.4411151 +28480000,imu,0.22112602,-0.7614348,-10.046673,-0.17795746,-0.0768173,0.016107313 +28484000,imu,0.2148954,-0.7874178,-10.25634,-0.16390541,-0.06963343,0.019195255 +28488000,mag,0.0038073286,-0.2063813,0.43861014 +28488000,imu,0.22866026,-0.8397291,-10.431194,-0.15048283,-0.06512348,0.020211443 +28492000,imu,0.22953069,-0.8359948,-10.617201,-0.1369579,-0.05722603,0.016925702 +28496000,imu,0.2097358,-0.7852344,-10.7629795,-0.12639202,-0.053276204,0.018755205 +28500000,imu,0.23109788,-0.8175834,-10.849457,-0.118254706,-0.05299823,0.021451632 +28500000,mag,0.0039786873,-0.20676582,0.43702313 +28504000,imu,0.24471231,-0.84076667,-10.924889,-0.11175111,-0.047418628,0.022395976 +28508000,imu,0.26554018,-0.799764,-10.996915,-0.102571025,-0.04274995,0.021493852 +28512000,baro,492.2673 +28512000,mag,0.0014551312,-0.20659119,0.43810615 +28512000,imu,0.2538877,-0.8131665,-11.064465,-0.09733025,-0.042947978,0.021858102 +28516000,imu,0.23212814,-0.834505,-11.112698,-0.09429067,-0.03997398,0.021385405 +28520000,imu,0.26632947,-0.8227056,-11.159823,-0.08831105,-0.036557473,0.022330672 +28524000,mag,0.003429018,-0.1981898,0.42972165 +28524000,imu,0.24567816,-0.85547584,-11.165993,-0.08564968,-0.036507677,0.025466343 +28528000,imu,0.1916963,-0.8742298,-11.153879,-0.083429635,-0.033716887,0.022443917 +28532000,imu,0.20512691,-0.8438347,-11.148985,-0.07749323,-0.032077316,0.021995176 +28536000,imu,0.23244315,-0.8412972,-11.110685,-0.07221832,-0.028312737,0.024409894 +28536000,mag,0.005747261,-0.19537106,0.43685699 +28540000,imu,0.22263032,-0.8294988,-11.082968,-0.068885,-0.025857905,0.026477242 +28544000,imu,0.23433056,-0.82202834,-11.100334,-0.06510606,-0.028884526,0.026571956 +28548000,mag,-0.0021593333,-0.19545706,0.433277 +28548000,imu,0.24631482,-0.8369108,-11.063198,-0.064813964,-0.026059741,0.024759637 +28552000,imu,0.24839066,-0.8268257,-10.980991,-0.05956434,-0.021774003,0.02670301 +28556000,imu,0.25775906,-0.81832063,-10.931947,-0.05327212,-0.023592148,0.029121678 +28560000,mag,0.0042154207,-0.2056055,0.43743536 +28560000,imu,0.22644208,-0.8156336,-10.891218,-0.056045007,-0.023567231,0.027855106 +28564000,imu,0.20743367,-0.81609994,-10.819813,-0.059895363,-0.022115668,0.02943897 +28568000,imu,0.20798466,-0.81432086,-10.727482,-0.055553284,-0.018811205,0.028670473 +28572000,mag,0.0023075591,-0.20733206,0.4268356 +28572000,imu,0.19985346,-0.7929928,-10.64591,-0.049528193,-0.015942004,0.02790027 +28576000,imu,0.17544049,-0.80305725,-10.5721245,-0.045287345,-0.016992597,0.030302128 +28580000,imu,0.18721744,-0.8055836,-10.540682,-0.041841973,-0.015987847,0.030361984 +28584000,imu,0.2049175,-0.7734663,-10.489777,-0.041702945,-0.015633347,0.027825654 +28584000,mag,0.0051814355,-0.2064349,0.43680054 +28584000,baro,492.22034 +28588000,imu,0.1817897,-0.78256315,-10.386383,-0.04101924,-0.017724678,0.028408654 +28592000,imu,0.17077915,-0.787726,-10.316671,-0.0403681,-0.01721054,0.02799255 +28596000,imu,0.17507313,-0.78268933,-10.291994,-0.035571616,-0.011168186,0.029872896 +28596000,mag,0.0033064627,-0.20356949,0.43418732 +28600000,imu,0.16551608,-0.8025528,-10.227325,-0.030675365,-0.008951862,0.033958573 +28604000,imu,0.1827078,-0.7865074,-10.157782,-0.0332149,-0.013783942,0.029228956 +28608000,mag,0.003659816,-0.20489663,0.43134722 +28608000,imu,0.18887405,-0.7605764,-10.129299,-0.031304225,-0.0153687745,0.03099048 +28612000,imu,0.17853609,-0.74852425,-10.044275,-0.030382974,-0.007559284,0.03403286 +28616000,imu,0.18721272,-0.7568729,-9.984686,-0.030310512,-0.0036666717,0.029649997 +28620000,imu,0.18992215,-0.75912833,-9.955481,-0.026073502,-0.009266249,0.029531665 +28620000,mag,0.0036387,-0.20285232,0.43687212 +28624000,imu,0.21445459,-0.7337128,-9.889635,-0.024472069,-0.009732693,0.030023279 +28628000,imu,0.19536883,-0.73387223,-9.851236,-0.025136529,-0.0077822716,0.028062122 +28628000,mag,0.0033536097,-0.19586203,0.44203386 +28632000,imu,0.18858382,-0.7794053,-9.821003,-0.023307072,-0.007528445,0.029493818 +28636000,imu,0.18664663,-0.7685311,-9.793571,-0.019945947,-0.009301815,0.028408162 +28640000,imu,0.16757964,-0.7295404,-9.747128,-0.020796089,-0.007846087,0.027683446 +28644000,mag,0.0013094465,-0.20083575,0.43519065 +28644000,imu,0.16831808,-0.7335959,-9.72857,-0.021026766,-0.0069372547,0.02810976 +28648000,gps,492733.0,85455742.0,473976943.0,-2.98,-1.15,0.9 +28648000,imu,0.18924162,-0.73597986,-9.717007,-0.021250715,-0.010883254,0.025712779 +28652000,mag,-0.00014414416,-0.20491709,0.432637 +28652000,imu,0.20861346,-0.75558615,-9.680191,-0.022842033,-0.010731744,0.02649069 +28656000,baro,492.1734 +28656000,imu,0.19185203,-0.7412862,-9.65423,-0.022839945,-0.0051172576,0.027576631 +28660000,imu,0.19171533,-0.72880954,-9.634968,-0.018934526,-0.006567497,0.027554307 +28664000,imu,0.21491161,-0.72340626,-9.62101,-0.019953148,-0.010436206,0.02871135 +28668000,mag,0.008940342,-0.19971262,0.42983332 +28668000,imu,0.19765559,-0.7228584,-9.631155,-0.021247815,-0.009310013,0.027249835 +28672000,imu,0.1538932,-0.7304365,-9.629266,-0.01794806,-0.008320454,0.027429651 +28676000,imu,0.1428842,-0.7447743,-9.581445,-0.017577574,-0.0063556437,0.026382832 +28680000,mag,-0.0026151603,-0.20651339,0.43643683 +28680000,imu,0.16205436,-0.7618858,-9.592278,-0.016592672,-0.008397793,0.025766397 +28684000,imu,0.15366319,-0.7397217,-9.642113,-0.01733564,-0.008668086,0.024268372 +28688000,imu,0.12437488,-0.72869486,-9.636976,-0.016955154,-0.004867061,0.02289024 +28692000,mag,0.005561242,-0.20366248,0.4305892 +28692000,imu,0.12563574,-0.75016046,-9.62508,-0.014229786,-0.0050631952,0.027571099 +28696000,imu,0.1510166,-0.7727545,-9.625475,-0.011294767,-0.007788386,0.02830625 +28700000,mag,0.0028657406,-0.2063158,0.4377356 +28700000,imu,0.17418374,-0.7299549,-9.626179,-0.012386572,-0.00787056,0.027238952 +28704000,imu,0.17525363,-0.6879099,-9.656512,-0.012231833,-0.008019719,0.024781195 +28708000,imu,0.1680547,-0.68651575,-9.716703,-0.010021521,-0.007707541,0.02132363 +28712000,imu,0.18303123,-0.69994736,-9.733274,-0.009628787,-0.0064087156,0.02090497 +28716000,imu,0.21814817,-0.73858935,-9.738859,-0.010630373,-0.0048811682,0.022625484 +28716000,mag,0.000120344615,-0.21195236,0.43699375 +28720000,imu,0.2007823,-0.72721267,-9.77309,-0.0136531545,-0.004274093,0.022669362 +28724000,imu,0.15254742,-0.736494,-9.750826,-0.014062865,-0.003112904,0.021518467 +28728000,mag,-0.0005230248,-0.20402096,0.43128148 +28728000,baro,492.11237 +28728000,imu,0.16013509,-0.76238173,-9.758503,-0.013293781,-0.0038772747,0.02027369 +28732000,imu,0.19706659,-0.74948114,-9.809223,-0.01189061,-0.0064347433,0.019561077 +28736000,imu,0.17697677,-0.7242513,-9.837755,-0.011260678,-0.006703665,0.022500373 +28740000,imu,0.16879278,-0.709431,-9.855248,-0.010237048,-0.0054005915,0.023520133 +28740000,mag,0.00388798,-0.2092735,0.44182175 +28744000,imu,0.18589348,-0.72912794,-9.864224,-0.0121867675,-0.0043740594,0.024092596 +28748000,imu,0.16468245,-0.7312824,-9.853579,-0.013627231,-0.0062391725,0.0234813 +28748000,mag,-0.00018601041,-0.2045223,0.43231305 +28752000,imu,0.17097932,-0.7332624,-9.887036,-0.012033589,-0.006872432,0.017400619 +28756000,imu,0.2172535,-0.7146431,-9.920933,-0.011598985,-0.00621742,0.01625868 +28760000,imu,0.18029007,-0.7034262,-9.937397,-0.01262781,-0.005442907,0.017365329 +28764000,imu,0.15318659,-0.7340014,-9.918789,-0.012178303,-0.0047676703,0.018486718 +28764000,mag,0.002257467,-0.2030278,0.4329902 +28768000,imu,0.16060379,-0.7372956,-9.913918,-0.008448096,-0.0072453814,0.01839879 +28772000,imu,0.16096452,-0.7053613,-9.9625,-0.008521904,-0.010554811,0.017881835 +28776000,mag,0.0009475081,-0.20105863,0.43953386 +28776000,imu,0.16935483,-0.6722798,-9.956516,-0.007272572,-0.008831704,0.021378772 +28780000,imu,0.14505269,-0.69011384,-9.96163,-0.0021644095,-0.0055782585,0.018375326 +28784000,mag,0.00070263195,-0.2077196,0.43420637 +28784000,imu,0.17784163,-0.72096395,-10.017958,-0.0024969408,-0.0025273818,0.01707566 +28788000,imu,0.19293427,-0.73335606,-10.05469,-0.0018363242,-0.0045099747,0.015655916 +28792000,imu,0.16872099,-0.7328253,-10.012154,0.0014544266,-0.008324358,0.015957085 +28796000,mag,-0.0007817421,-0.20092888,0.43569362 +28796000,imu,0.15317139,-0.7023367,-9.967284,0.0015642336,-0.006029772,0.016784295 +28800000,baro,492.05133 +28800000,imu,0.1486066,-0.6804611,-10.003888,-0.0022951579,-0.0034324196,0.013023923 +28804000,imu,0.1593239,-0.6825101,-10.002651,-0.002326911,-0.0028342907,0.012254362 +28808000,imu,0.17205393,-0.69982934,-9.974742,0.00039246285,-0.0028742545,0.015297512 +28812000,imu,0.1519643,-0.7331613,-9.997827,-0.00071983726,-0.004812519,0.017731646 +28812000,mag,0.008750575,-0.20069197,0.43612462 +28816000,imu,0.14043711,-0.75815165,-10.003474,0.001390957,-0.0038594871,0.016603589 +28820000,imu,0.14962721,-0.74964815,-10.030455,0.0007806371,0.0006921806,0.017198564 +28824000,imu,0.14652058,-0.7150253,-10.041024,-0.0008320933,0.0017812657,0.01731783 +28824000,mag,0.005220624,-0.20211594,0.4325683 +28828000,imu,0.14326623,-0.6836101,-10.040878,0.0012710122,0.0021085227,0.014482435 +28832000,imu,0.14643794,-0.68651336,-10.020084,0.00069062633,-0.0016986708,0.010863072 +28836000,imu,0.15671146,-0.7002339,-9.995655,-0.00024474828,-0.005138013,0.012305729 +28836000,mag,0.009656411,-0.20362331,0.43648103 +28840000,imu,0.13594754,-0.7258864,-9.996431,0.003714896,-0.003648587,0.014395834 +28844000,mag,0.001874952,-0.20206474,0.43293124 +28844000,imu,0.15951964,-0.7389712,-9.989471,0.00269128,-0.004627584,0.014754896 +28848000,imu,0.1747922,-0.71078515,-9.996467,-0.0018817286,-0.0045502908,0.014466422 +28852000,imu,0.16247192,-0.71522194,-10.001612,8.445416e-05,-0.0013061502,0.013314996 +28856000,imu,0.18189877,-0.7243484,-9.980363,0.0040644957,-0.0012412112,0.012769699 +28860000,imu,0.17239138,-0.6920864,-9.977226,0.004116379,-0.005464992,0.012511357 +28860000,mag,-0.007936599,-0.20672534,0.4363087 +28864000,imu,0.17590795,-0.65807164,-9.985911,-8.484784e-05,-0.0050499504,0.014396949 +28868000,imu,0.18069221,-0.6615005,-9.949032,-0.0006949019,-0.0003959614,0.016268758 +28872000,baro,492.03253 +28872000,imu,0.15835175,-0.69293827,-9.925787,0.0013734129,0.0007279571,0.01472103 +28872000,mag,-0.0027495462,-0.20567635,0.4375201 +28876000,imu,0.16258591,-0.67309463,-9.922539,0.0025206797,-0.0027926555,0.014069656 +28880000,imu,0.17158239,-0.66941553,-9.93944,0.0024379652,-0.0028445453,0.014626924 +28884000,imu,0.15729523,-0.70054656,-9.981953,0.0022718739,-0.0030641528,0.008760303 +28884000,mag,0.00042043993,-0.20699231,0.43993613 +28888000,imu,0.17717522,-0.71194994,-9.944089,0.0059906286,-0.0028078042,0.0075363857 +28892000,mag,-0.004566058,-0.21274738,0.4355174 +28892000,imu,0.18297498,-0.6873767,-9.89864,0.0044826283,-0.001982887,0.013193992 +28896000,imu,0.1572235,-0.67034477,-9.947904,0.0022635537,-0.0031043345,0.011963564 +28900000,imu,0.1476095,-0.6920964,-9.956144,0.004954093,-0.0014523232,0.008564141 +28904000,imu,0.16397731,-0.6724599,-9.910671,0.004238839,-0.0025296458,0.00964476 +28908000,mag,-0.0018644563,-0.20320943,0.43269992 +28908000,imu,0.16602412,-0.6636867,-9.893544,0.003395549,-0.004963783,0.01122365 +28912000,imu,0.15390924,-0.6783088,-9.935822,0.005237737,-0.0042971903,0.009988776 +28916000,imu,0.1440705,-0.6496893,-9.959732,0.0036669394,-0.005523656,0.00763977 +28920000,imu,0.14094096,-0.6770638,-9.930956,0.004767684,-0.0076330807,0.007395808 +28920000,mag,0.003770408,-0.19786997,0.44017747 +28924000,imu,0.1376327,-0.7056643,-9.923927,0.0062407246,-0.006875579,0.011028209 +28928000,imu,0.13021503,-0.6682764,-9.946758,0.005157593,-0.005626828,0.0121251065 +28932000,imu,0.15402876,-0.6725909,-9.949958,0.0065982095,-0.0031425024,0.010526641 +28932000,mag,0.0006215174,-0.20423241,0.43744305 +28936000,imu,0.13306838,-0.6524804,-9.964378,0.006051987,-0.0042599686,0.007252355 +28940000,imu,0.100109294,-0.66679245,-9.947796,0.0023129145,-0.0036565121,0.007002433 +28944000,mag,0.004924695,-0.20259434,0.4362373 +28944000,imu,0.12637264,-0.6966209,-9.909927,0.0038838624,0.00024710153,0.008965454 +28944000,baro,491.90576 +28948000,imu,0.13659249,-0.66840297,-9.9420185,0.0071571404,-7.359191e-05,0.008764759 +28952000,imu,0.15701018,-0.7096481,-9.951462,0.005961619,-0.0021242436,0.009659948 +28956000,imu,0.18874274,-0.7201261,-9.953781,0.006207543,-0.0013843153,0.007158665 +28956000,mag,0.0048334063,-0.20160241,0.44120926 +28960000,imu,0.18456225,-0.6747255,-9.919151,0.008985583,-0.0019710434,0.007178221 +28964000,imu,0.17241755,-0.64500684,-9.93737,0.008370519,-0.002854833,0.007893623 +28968000,mag,-0.005330448,-0.20367011,0.43800658 +28968000,imu,0.14707509,-0.67169595,-9.971289,0.004708701,-0.0007791854,0.0059975595 +28972000,imu,0.13790958,-0.6665267,-9.937242,0.005485259,0.00078786886,0.006512423 +28976000,imu,0.12115131,-0.6349687,-9.920469,0.0066989893,-0.00107538,0.005690415 +28980000,imu,0.14544237,-0.6851819,-9.919209,0.00553957,-0.0027423014,0.0039608106 +28980000,mag,-0.004097722,-0.20017375,0.43191737 +28984000,imu,0.18768632,-0.7186643,-9.928822,0.0019427045,-0.00465097,0.003563516 +28988000,imu,0.18407556,-0.7068842,-9.915499,-0.0009936106,-0.0048271473,0.0048265387 +28992000,mag,0.0052713724,-0.20362726,0.4391596 +28992000,imu,0.18024287,-0.68709683,-9.899996,0.0026005504,-0.0017080427,0.004787299 +28996000,imu,0.14524692,-0.6865514,-9.930607,0.007868265,-0.0026431489,0.0013119183 +29000000,imu,0.14061269,-0.6884926,-9.946531,0.009161989,-0.0028780156,0.0041656108 +29004000,imu,0.15819913,-0.6571538,-9.920729,0.011145878,-0.0030558715,0.0073864176 +29004000,mag,0.0032706948,-0.20630103,0.4346132 +29008000,imu,0.14802659,-0.6442569,-9.926731,0.008888369,-0.005172498,0.0062491265 +29012000,imu,0.15263155,-0.67496175,-9.921528,0.004859185,-0.0020481518,0.005218467 +29016000,baro,491.84473 +29016000,imu,0.16764838,-0.6639431,-9.926104,0.006739967,-0.0018439539,0.0065090423 +29016000,mag,0.0011471737,-0.20165704,0.4299239 +29020000,imu,0.17265728,-0.67045134,-9.948978,0.005263283,-0.0058924523,0.007629825 +29024000,imu,0.1549155,-0.68691367,-9.9726715,0.0044352524,-0.006840701,0.0058029704 +29028000,imu,0.14313209,-0.6628029,-9.969868,0.004421983,-0.006852484,0.0059126792 +29028000,mag,-0.0015555868,-0.20076856,0.43882143 +29032000,imu,0.13528907,-0.67005366,-9.9466095,0.0006746906,-0.00554314,0.0056236093 +29036000,imu,0.14168635,-0.6813047,-9.946917,0.0018839206,-0.0037334557,0.004607911 +29040000,imu,0.13567364,-0.6739584,-9.954733,0.006632029,-0.003822841,0.0053598923 +29040000,mag,-0.00374208,-0.19945928,0.43647474 +29044000,imu,0.14344919,-0.62451524,-9.967665,0.007545588,-0.0035036318,0.00415771 +29048000,imu,0.1603086,-0.61829215,-9.973974,0.006641387,0.0016582101,0.0032697045 +29052000,gps,492377.0,85455679.0,473976840.0,-2.69,-1.12,0.82 +29052000,mag,-0.001975148,-0.20105335,0.43638903 +29052000,imu,0.14925084,-0.6411105,-9.965599,0.006034235,0.0024150375,0.0037350466 +29056000,imu,0.16856048,-0.6409398,-9.970089,0.0065393317,-0.0015094422,0.0046607098 +29060000,imu,0.17100677,-0.65357137,-9.995644,0.006017391,-0.001765129,0.003982894 +29064000,imu,0.15464908,-0.67261297,-10.020809,0.006149193,0.0011459171,0.002438468 +29064000,mag,0.0070697265,-0.20420633,0.43276665 +29068000,imu,0.18049932,-0.70246655,-10.0095825,0.006416151,-0.00048310964,0.0057845996 +29072000,imu,0.16842307,-0.66625506,-10.00532,0.004730894,-0.001368923,0.0046408297 +29076000,imu,0.13205968,-0.64926314,-10.018965,0.007083108,0.00010875331,0.00064652617 +29076000,mag,0.00073252997,-0.20358619,0.43126637 +29080000,imu,0.15832469,-0.6788656,-9.998285,0.006711876,-0.004298535,-0.0014311841 +29084000,imu,0.16384733,-0.6679632,-9.98386,0.005471677,-0.0072241025,0.0003766042 +29088000,baro,491.82596 +29088000,mag,-0.0023788144,-0.20553671,0.43566304 +29088000,imu,0.1613828,-0.65392876,-10.014609,0.0051816246,-0.004637047,0.0028619338 +29092000,imu,0.1657389,-0.6789229,-10.013566,0.0051593035,-0.00024964366,-0.0003713446 +29096000,imu,0.15036482,-0.6733441,-9.992592,0.0068248212,-0.0028033198,-0.0028085536 +29096000,mag,0.005766369,-0.20400941,0.43238035 +29100000,imu,0.15328988,-0.6439504,-9.986673,0.003916727,-0.0066054966,-0.0008740299 +29104000,imu,0.16239202,-0.64946073,-9.985266,0.0027941314,-0.002829451,0.0034168528 +29108000,imu,0.1698348,-0.69652516,-9.989397,0.0052720523,-0.0023598124,0.0037988396 +29108000,mag,0.0074623493,-0.20658976,0.43123043 +29112000,imu,0.1580166,-0.70809525,-9.978427,0.006465943,-0.0023153753,7.2579176e-05 +29116000,imu,0.14240357,-0.6726859,-10.001656,0.004715626,-0.0020585204,0.0013962516 +29120000,landed,0.0 +29120000,imu,0.16600165,-0.6664844,-10.020867,0.0030819136,-0.0032416293,0.0055191168 +29124000,mag,0.001890442,-0.20825912,0.43741837 +29124000,imu,0.1928528,-0.65246063,-9.967264,0.0035548166,-0.004528344,0.004087091 +29128000,imu,0.1696496,-0.63866735,-9.959105,0.006314396,-0.004858571,-0.0007198991 +29132000,imu,0.13199444,-0.6651171,-10.000254,0.0064414833,-0.0024408603,0.00023045173 +29136000,mag,0.0029675176,-0.20387991,0.43096918 +29136000,imu,0.12867227,-0.66908395,-9.996218,0.000305645,-0.0031734004,0.0020251435 +29140000,imu,0.13479312,-0.64371765,-9.989707,0.00032130282,-0.0060276845,-0.0007442424 +29144000,imu,0.14054781,-0.66460097,-9.967371,0.0024940893,-0.006677655,-0.0011534407 +29148000,mag,-0.004653974,-0.2099243,0.42901453 +29148000,imu,0.18285105,-0.6758149,-9.921337,0.0022676715,-0.0066913012,1.5848698e-05 +29152000,imu,0.18260044,-0.60417527,-9.908485,0.004268826,-0.008728353,0.00035835922 +29156000,imu,0.15532008,-0.57562304,-9.904655,0.0053463704,-0.008218418,0.0006961439 +29160000,imu,0.15948346,-0.62481326,-9.91267,0.004332193,-0.005273366,0.0031791197 +29160000,mag,0.0035232066,-0.20789878,0.43463892 +29160000,baro,491.75552 +29164000,imu,0.16892305,-0.6519787,-9.903967,0.0043192348,-0.0022899678,0.004570717 +29168000,imu,0.16515067,-0.66179746,-9.860091,0.0035353613,-0.0041655144,0.0019346223 +29172000,mag,0.001529941,-0.1954307,0.43308052 +29172000,imu,0.11748462,-0.661926,-9.835379,0.0037720725,-0.0063505964,0.0007939946 +29176000,imu,0.12667385,-0.67405087,-9.836441,0.0061047664,-0.005408841,0.0019193547 +29180000,imu,0.16384603,-0.6686494,-9.830147,0.0041240207,-0.0011107821,0.0042986693 +29184000,imu,0.13802087,-0.64669365,-9.792774,0.0038174149,0.0002964611,0.0043195616 +29184000,mag,0.00342452,-0.19943124,0.43357167 +29188000,imu,0.11128652,-0.63855565,-9.775417,0.004415897,-0.0002137547,0.0010339317 +29192000,imu,0.12963293,-0.64239186,-9.765261,0.0035689163,0.0002351253,0.001784084 +29196000,imu,0.16087279,-0.638815,-9.736389,0.0031345426,-0.0013640808,0.006191039 +29196000,mag,0.006048746,-0.19920745,0.42868993 +29200000,imu,0.16544276,-0.6099438,-9.70693,0.0034391235,-0.00046890063,0.003967056 +29204000,imu,0.14277217,-0.60601217,-9.672806,0.0063169636,0.0009859181,0.0013866414 +29208000,landed,0.0 +29208000,imu,0.1309416,-0.63491064,-9.640955,0.009344561,0.002718842,0.00035393584 +29208000,mag,-0.0013652428,-0.20014167,0.44255564 +29212000,imu,0.135935,-0.61689895,-9.638586,0.008613007,0.0011130136,1.838162e-05 +29216000,imu,0.1262716,-0.60660136,-9.650091,0.009242715,-0.0014276155,0.0003947238 +29220000,mag,-0.007792028,-0.20864062,0.42992312 +29220000,imu,0.12195277,-0.62302375,-9.648527,0.009811432,0.002054764,-0.0013675465 +29224000,imu,0.11861154,-0.6326069,-9.620446,0.009045216,0.003698785,-0.00035912672 +29228000,imu,0.10316974,-0.6302799,-9.585227,0.011931375,0.0011062152,0.00019346776 +29232000,imu,0.12166555,-0.63841695,-9.587198,0.014623479,-9.7824e-05,0.0024193062 +29232000,mag,0.001845952,-0.20506535,0.4367571 +29232000,baro,491.7086 +29236000,imu,0.15904796,-0.6410516,-9.596918,0.01678454,0.00076950464,0.0054637133 +29240000,imu,0.1643041,-0.62222844,-9.597785,0.017723238,0.0032194848,0.004032393 +29244000,mag,0.0036515938,-0.20240393,0.43580985 +29244000,imu,0.15836965,-0.6375732,-9.563595,0.016322784,0.0034483902,0.0037034866 +29248000,imu,0.14778842,-0.6349099,-9.547863,0.01495355,0.0014477535,0.0048987675 +29252000,imu,0.13186795,-0.6153586,-9.581942,0.017288495,0.003040654,0.0044618323 +29256000,imu,0.12491779,-0.6005918,-9.541286,0.019976033,0.004111423,0.0028688975 +29256000,mag,0.00040240935,-0.20393144,0.43551642 +29260000,imu,0.12564185,-0.59855205,-9.547961,0.021857444,0.000989377,0.00034454415 +29264000,imu,0.14025626,-0.6058839,-9.5658,0.023575347,-0.0030431764,0.0015612111 +29268000,mag,-0.0061839847,-0.20427725,0.4346052 +29268000,imu,0.14627507,-0.62645376,-9.545635,0.022594437,-0.0036753463,0.0012662185 +29272000,imu,0.15587398,-0.6362386,-9.566437,0.022126012,-0.0013397004,0.00059964485 +29276000,imu,0.13598822,-0.6341583,-9.561066,0.02158286,0.0019368062,-0.00022600366 +29280000,mag,0.002127156,-0.20016368,0.43821156 +29280000,imu,0.10852277,-0.6194698,-9.5835285,0.021853816,0.0019171587,0.00022033868 +29284000,imu,0.12688258,-0.60977674,-9.612043,0.020264287,-0.00034847917,-0.00094531046 +29288000,imu,0.14955953,-0.6062718,-9.618151,0.020065218,0.0019071127,-0.002460562 +29292000,imu,0.1579436,-0.5934368,-9.617049,0.024025584,0.0035224652,-0.001679085 +29292000,mag,-0.0039873323,-0.20018944,0.4350493 +29296000,imu,0.15562952,-0.5942901,-9.623365,0.0225748,0.003896439,0.0003710436 +29300000,imu,0.16786805,-0.6101351,-9.643124,0.02209894,0.0050637657,0.0026001811 +29304000,mag,-0.0032487242,-0.20270053,0.44175223 +29304000,baro,491.67102 +29304000,imu,0.17951904,-0.60259026,-9.652197,0.023046397,0.004484848,0.00054430816 +29308000,imu,0.16283627,-0.60873204,-9.671072,0.0236731,0.004811963,0.0021373115 +29312000,imu,0.14290172,-0.6369055,-9.688961,0.024677344,0.007853591,0.0015652166 +29316000,imu,0.14722091,-0.6120132,-9.690776,0.021906422,0.0064049624,-0.0034498617 +29316000,mag,-0.008485838,-0.20789576,0.43602782 +29320000,imu,0.15897141,-0.57915974,-9.71567,0.020960828,0.0027515765,-0.003996846 +29324000,imu,0.15896706,-0.57283646,-9.693017,0.021899547,0.0027328986,-0.00035143754 +29328000,mag,0.0059780255,-0.20183438,0.43309262 +29328000,imu,0.13715485,-0.59958774,-9.704712,0.023795126,0.0038043342,0.0012450728 +29332000,imu,0.14486346,-0.62055284,-9.755259,0.023782559,0.002849426,0.00092967466 +29336000,imu,0.15435994,-0.61003035,-9.743495,0.021402957,0.0021515756,-0.0020536913 +29340000,mag,-0.005726177,-0.20386386,0.43256152 +29340000,imu,0.14322326,-0.5914392,-9.760323,0.0226698,0.0030167352,-0.002785269 +29344000,imu,0.14509603,-0.59268546,-9.7759075,0.02619084,0.004839585,-0.00079358084 +29348000,imu,0.115097985,-0.6112333,-9.771843,0.023987336,0.0062869526,-0.001803325 +29348000,mag,0.001968219,-0.20761564,0.4374184 +29352000,imu,0.10717271,-0.59069794,-9.805185,0.019892234,0.008426659,-0.002451153 +29356000,imu,0.09959731,-0.5814132,-9.829163,0.022093052,0.008054264,-0.004245757 +29360000,imu,0.114432216,-0.6173714,-9.807819,0.02365263,0.0067463093,-0.0014820914 +29364000,imu,0.13552415,-0.6496052,-9.822588,0.021073697,0.010770468,0.00207768 +29364000,mag,-0.0074407277,-0.20359086,0.42635274 +29368000,imu,0.1366928,-0.6181127,-9.847206,0.020357009,0.012272085,-0.0016812723 +29372000,imu,0.14917758,-0.59510714,-9.860115,0.022763807,0.012565845,-0.003571849 +29376000,baro,491.55365 +29376000,mag,-0.0005014063,-0.20075636,0.43897012 +29376000,imu,0.1543653,-0.60884565,-9.845263,0.022116514,0.00885696,-0.004755673 +29380000,imu,0.15430477,-0.60476506,-9.807225,0.022245236,0.0060070525,-0.0071265874 +29384000,imu,0.10882555,-0.61691165,-9.847227,0.023904415,0.010399118,-0.0030794884 +29388000,imu,0.13215595,-0.626681,-9.881317,0.022873435,0.012134824,-0.0010327975 +29388000,mag,0.0036983595,-0.20267633,0.43254066 +29392000,imu,0.14322129,-0.6270573,-9.879957,0.021958629,0.007836924,-0.0022167272 +29396000,imu,0.1331256,-0.61402804,-9.895039,0.019862214,0.0067996713,0.0003494176 +29400000,mag,0.0014922481,-0.20651327,0.43698582 +29400000,imu,0.12906921,-0.60389084,-9.905478,0.020086862,0.0049679326,0.0005656604 +29404000,imu,0.12929389,-0.60432017,-9.903068,0.019231062,0.0014388614,7.574915e-05 +29408000,imu,0.14158563,-0.59784275,-9.888367,0.0202062,0.0048199366,-0.002352379 +29408000,mag,0.0024530631,-0.19763003,0.4395819 +29412000,imu,0.109167896,-0.595207,-9.884647,0.021072121,0.0034336324,-0.0007235723 +29416000,imu,0.09559998,-0.6168093,-9.918993,0.018330144,0.0014201093,0.0011420482 +29420000,imu,0.12600905,-0.6291562,-9.922571,0.015990227,0.00121289,-0.00237956 +29424000,mag,-0.0024723064,-0.19934586,0.43915537 +29424000,imu,0.14605495,-0.60305256,-9.920087,0.01523025,0.0017999918,-0.0026731375 +29428000,imu,0.13734376,-0.58092797,-9.931318,0.017879067,0.0026972708,-0.00096733734 +29432000,imu,0.12827551,-0.59080005,-9.920219,0.0220229,-3.0686086e-05,-0.00032290618 +29436000,mag,-0.005069208,-0.20261401,0.43463767 +29436000,imu,0.12747027,-0.5900418,-9.903086,0.021746848,-0.00060756435,-0.0019186385 +29440000,imu,0.1406242,-0.5870133,-9.908692,0.021852493,0.0019005241,-0.0016614053 +29444000,imu,0.12181713,-0.60517913,-9.920786,0.024910782,0.00387695,-0.0019652883 +29448000,imu,0.09272301,-0.6031364,-9.926939,0.02263643,0.0020141886,-7.397301e-05 +29448000,mag,-0.0027130842,-0.19593996,0.43835142 +29448000,baro,491.47385 +29452000,imu,0.105891064,-0.5944152,-9.929909,0.02066283,0.002638511,0.00031481285 +29452000,gps,492049.0,85455622.0,473976748.0,-2.46,-1.04,0.84 +29456000,imu,0.1164001,-0.6105093,-9.913346,0.02168437,0.0043981513,-0.0030327584 +29456000,mag,0.0014459059,-0.20001243,0.4372878 +29460000,imu,0.12709099,-0.63489074,-9.902029,0.023619538,0.0018702603,-0.0037600491 +29464000,imu,0.13582924,-0.6377443,-9.891346,0.024328094,-0.0029439668,-0.00026237385 +29468000,imu,0.12749547,-0.6356568,-9.905026,0.023021024,-0.0009264939,0.00017417812 +29472000,imu,0.13696362,-0.60919625,-9.892205,0.021022532,0.0030975358,-0.002609576 +29472000,mag,0.002814723,-0.20140693,0.42499715 +29476000,imu,0.13280568,-0.5634341,-9.891967,0.021450963,0.002463497,-0.0010318959 +29480000,imu,0.13045576,-0.5945267,-9.889613,0.020920899,0.0047426224,-0.0008977079 +29484000,imu,0.13919531,-0.6096553,-9.889492,0.018854242,0.004593091,-0.0016390464 +29484000,mag,0.00018512398,-0.20193928,0.43361238 +29488000,imu,0.16142741,-0.59192723,-9.9258,0.022607705,0.0018243615,-0.00073710294 +29492000,imu,0.15564093,-0.584026,-9.957558,0.021441363,-0.00016580125,0.0010839999 +29496000,mag,0.0049304767,-0.2000035,0.43021512 +29496000,imu,0.14222628,-0.6024876,-9.921286,0.017988529,0.0019336167,0.0012541463 +29500000,imu,0.15357529,-0.5913118,-9.891029,0.020826817,0.0036225067,0.0016003076 +29504000,mag,-0.00031278314,-0.2013807,0.4352709 +29504000,imu,0.14595124,-0.5618643,-9.917901,0.01788179,0.0017302146,0.002974976 +29508000,imu,0.1358132,-0.6120557,-9.907827,0.01649417,0.0022270791,0.0027319496 +29512000,imu,0.14866513,-0.6150262,-9.893765,0.01954663,0.0035875225,0.0020460049 +29516000,imu,0.14118162,-0.57227784,-9.9030695,0.021417513,0.0036509586,0.0023220927 +29520000,mag,0.00041378936,-0.19442081,0.43442568 +29520000,baro,491.502 +29520000,imu,0.114965074,-0.54811156,-9.927422,0.021309955,0.0038226463,0.0012945251 +29524000,imu,0.114388734,-0.5799468,-9.936459,0.018397769,0.0029117458,-0.0025780671 +29528000,imu,0.1228534,-0.627747,-9.945847,0.018752903,0.003340393,-0.004011465 +29532000,imu,0.14496624,-0.6114148,-9.941008,0.015435624,0.00651948,-0.006359263 +29532000,mag,0.0066451486,-0.19850312,0.44335592 +29536000,imu,0.16889873,-0.6019584,-9.915682,0.015867552,0.0051341876,-0.008418428 +29540000,imu,0.12742779,-0.6023211,-9.901787,0.019919736,0.00092164846,-0.0063616866 +29544000,imu,0.09856926,-0.5706557,-9.932405,0.016855521,0.0033828823,-0.004010845 +29544000,mag,-0.009352024,-0.1982908,0.4310971 +29548000,imu,0.11597479,-0.5821979,-9.945601,0.013372842,0.008343744,-0.002167866 +29552000,imu,0.1102781,-0.6081508,-9.91952,0.013003095,0.007208163,-0.00050361565 +29556000,mag,-0.0011475366,-0.19683687,0.43584234 +29556000,imu,0.112251565,-0.61271524,-9.921262,0.014256517,0.003842592,-0.00074905175 +29560000,imu,0.132827,-0.631465,-9.9055805,0.012116697,0.0057775946,-0.0019462388 +29564000,imu,0.11748496,-0.62511724,-9.9323845,0.010373896,0.006997737,-0.0051287003 +29568000,mag,-0.003451409,-0.20220907,0.437607 +29568000,imu,0.08557859,-0.58734775,-9.955196,0.011567757,0.005420385,-0.0034081072 +29572000,imu,0.11862147,-0.56323546,-9.926784,0.012690433,0.0033226854,0.0017381159 +29576000,imu,0.1042375,-0.56019324,-9.919362,0.014771226,0.0010555838,0.00011728437 +29580000,mag,0.00036162592,-0.20117724,0.43906555 +29580000,imu,0.09448163,-0.5650159,-9.933781,0.016531106,0.0013798772,-0.00036953788 +29584000,imu,0.13786837,-0.5488221,-9.928302,0.015614094,0.002230049,-0.0042109867 +29588000,imu,0.13757542,-0.54383373,-9.932198,0.013563441,0.0025106047,-0.005094552 +29592000,mag,0.00023918098,-0.20064141,0.42764443 +29592000,imu,0.15564585,-0.57502407,-9.9394455,0.011434587,0.00124826,-0.0011975521 +29592000,baro,491.37054 +29596000,imu,0.13848725,-0.59205335,-9.943535,0.011701434,0.002312918,-0.00088234665 +29600000,imu,0.10761849,-0.59974355,-9.934331,0.012927931,0.001903717,-0.0012821413 +29604000,imu,0.11205563,-0.59444183,-9.91193,0.012847818,-0.000460525,-0.00078914827 +29604000,mag,-0.0047378717,-0.1962675,0.4393129 +29608000,imu,0.13221994,-0.56539726,-9.923466,0.013326604,-0.0004281511,-0.0025587152 +29612000,imu,0.1453343,-0.564718,-9.914341,0.012096748,0.0018813575,-0.0031186647 +29616000,mag,0.00033027932,-0.20426333,0.4342304 +29616000,imu,0.14811236,-0.5798566,-9.927919,0.010050549,0.0028453413,-0.005458784 +29620000,imu,0.12617958,-0.5756358,-9.920933,0.012047205,-0.00037188776,-0.0074072112 +29624000,imu,0.12994,-0.5778509,-9.896624,0.013733455,-0.0010404794,-0.00630807 +29628000,mag,-0.0064575537,-0.1992753,0.4408507 +29628000,imu,0.14391959,-0.5852751,-9.935564,0.010618984,-0.0008237879,-0.0057826145 +29632000,imu,0.11954486,-0.56630564,-9.943663,0.012255112,-0.0023563912,-0.0052713742 +29636000,imu,0.15427512,-0.57607967,-9.914083,0.01425557,-0.0044774967,-0.0051020323 +29640000,imu,0.141482,-0.5698276,-9.938924,0.010822918,-0.005434853,-0.006979007 +29640000,mag,0.0038023605,-0.20711906,0.44106317 +29644000,imu,0.10799281,-0.5605058,-9.951782,0.0103254,-0.0035181262,-0.0063474355 +29648000,imu,0.13521564,-0.5913879,-9.953329,0.012159411,-0.0028260802,-0.00082022167 +29652000,mag,-0.0014599569,-0.19911571,0.44143832 +29652000,imu,0.13666072,-0.59875184,-9.961464,0.012255491,-0.0015532128,-0.0035149292 +29656000,imu,0.10384479,-0.57465106,-9.946737,0.010940873,-0.002459979,-0.0026871958 +29660000,mag,-0.003038763,-0.19982052,0.43176988 +29660000,imu,0.09574199,-0.5422048,-9.937881,0.008775866,-0.0046157106,-0.003377097 +29664000,baro,491.2954 +29664000,imu,0.14372948,-0.5450488,-9.963146,0.008894176,-0.002103038,-0.00812112 +29668000,imu,0.14997366,-0.56127614,-9.970343,0.010967354,-0.00043619037,-0.006248037 +29672000,imu,0.11321144,-0.5678591,-9.933757,0.010494803,-0.0005494051,-0.0043768045 +29676000,mag,-0.0012638412,-0.20005408,0.44541553 +29676000,imu,0.103260174,-0.56552905,-9.937052,0.00929756,-0.00013661884,-0.0038181483 +29680000,imu,0.123173885,-0.5661984,-9.957962,0.010640224,-0.00080871396,-0.00068130577 +29684000,imu,0.14816652,-0.5690308,-9.994089,0.010526458,-0.0017896866,-0.0016096965 +29684000,mag,0.0029867727,-0.2039796,0.44171873 +29688000,imu,0.14779972,-0.55787367,-10.004718,0.0068875477,-0.001777868,-0.007150093 +29692000,imu,0.14183989,-0.55219424,-9.969985,0.01009098,-0.0009809278,-0.0069060326 +29696000,imu,0.1382479,-0.5365086,-9.978874,0.010293307,-0.0007387223,-0.007078304 +29700000,imu,0.13123763,-0.537846,-9.978595,0.0036575813,-0.0032840238,-0.00831906 +29700000,mag,0.0014575839,-0.19865544,0.43507007 +29704000,imu,0.100610375,-0.5467441,-9.969512,0.0061246525,-0.004200126,-0.006876852 +29708000,imu,0.08391239,-0.55776006,-9.985944,0.009968003,-0.0030672872,-0.005273248 +29712000,mag,0.001470686,-0.19982694,0.4424253 +29712000,imu,0.09674467,-0.57485217,-9.991577,0.0076044304,-0.002132771,-0.0051497086 +29716000,imu,0.11749591,-0.58298343,-9.995436,0.0019166874,0.00068425894,-0.0063605704 +29720000,imu,0.13846657,-0.58742577,-9.99683,-7.927852e-06,-0.00059079466,-0.0066111665 +29724000,mag,-0.0006051169,-0.20089336,0.43653914 +29724000,imu,0.13850704,-0.5652239,-10.0091715,0.00454441,-0.0034515834,-0.0046880296 +29728000,imu,0.13158652,-0.5708495,-10.005867,0.004971736,-0.0030058485,-0.0030520675 +29732000,imu,0.14326757,-0.5659042,-9.979851,0.0024378,-0.0032317191,-0.0028091902 +29736000,imu,0.11730989,-0.5549727,-9.988407,-4.6161178e-05,-0.0022326082,-0.00075929373 +29736000,baro,491.3001 +29736000,mag,0.0005951262,-0.20090468,0.4452027 +29740000,imu,0.123251125,-0.580572,-9.9952965,0.002050237,-0.0021554348,-9.684139e-05 +29744000,imu,0.12910064,-0.60726124,-10.015267,0.0058308854,0.00012742843,-0.0019121369 +29748000,mag,0.0012297074,-0.19791389,0.43851668 +29748000,imu,0.11290714,-0.57061744,-10.010477,0.0063757277,-0.0041964008,-0.0026074694 +29752000,imu,0.1364934,-0.523593,-9.956817,0.0065873154,-0.005488502,-0.0027527423 +29756000,imu,0.15481663,-0.5248328,-9.960514,0.0064367894,-0.0002525634,-0.0010285254 +29760000,mag,-0.0035372141,-0.19520602,0.44257325 +29760000,imu,0.17924638,-0.5238318,-9.994151,0.006394078,-0.0007762001,-0.0030555287 +29764000,imu,0.1501027,-0.50850266,-10.015646,0.0033585676,-0.0009863226,-0.005580953 +29768000,imu,0.13352932,-0.5165947,-10.003663,0.0039886273,-0.0038407305,-0.00094817975 +29772000,imu,0.16156578,-0.52616805,-9.986405,0.006621896,-0.0066878037,-0.0006926972 +29772000,mag,0.002428979,-0.19738157,0.44031668 +29776000,imu,0.1387513,-0.5312448,-9.992222,0.0044222386,-0.006805756,-0.0049327575 +29780000,imu,0.12688473,-0.55836695,-9.985603,0.00313603,-0.0050519058,-0.0027382076 +29784000,mag,-0.0031032641,-0.20154357,0.4357335 +29784000,imu,0.13601239,-0.5486283,-9.990553,0.004538309,-0.007821517,-0.0039734556 +29788000,imu,0.11562243,-0.5450657,-9.978323,0.0027590576,-0.006952752,-0.0056902613 +29792000,imu,0.12067765,-0.565537,-9.960505,0.0024987515,-0.0034283886,-0.0030456139 +29796000,mag,0.00028713734,-0.19889772,0.43594998 +29796000,imu,0.14091295,-0.5685869,-9.995016,0.0022557944,-0.006926382,-0.001619462 +29800000,imu,0.1329101,-0.54368997,-10.008131,0.0035951098,-0.006760512,-0.0007241839 +29804000,imu,0.10507059,-0.5199321,-9.980659,0.006005909,-0.004515482,-0.001048611 +29808000,baro,491.29074 +29808000,mag,9.7201984e-05,-0.19433,0.43842745 +29808000,imu,0.09388712,-0.5475065,-9.974096,0.0016704616,-0.0072405,-0.0010362755 +29812000,imu,0.11518204,-0.5731059,-9.996203,0.0013421514,-0.010431991,-0.00020575056 +29816000,imu,0.15335551,-0.549285,-10.009739,0.0021374584,-0.008666007,4.72125e-05 +29820000,imu,0.14811783,-0.5125248,-9.979428,-0.00204485,-0.0052738204,-0.0027741035 +29820000,mag,-0.007321987,-0.20405176,0.4455759 +29824000,imu,0.105860576,-0.51244336,-9.979307,-0.0015742914,-0.0025572658,-0.0037271574 +29828000,imu,0.12670314,-0.5307209,-10.006021,0.0010463928,-0.003928082,-0.003400502 +29832000,imu,0.16327724,-0.52289003,-9.976727,0.00055014866,-0.006330093,-0.0035313375 +29832000,mag,-0.0015835189,-0.20051469,0.43933043 +29836000,imu,0.12960927,-0.5017275,-9.971401,0.0013702385,-0.0035718984,-0.0050193737 +29840000,imu,0.10978129,-0.5308056,-9.981897,0.0018757252,-0.0022081267,-0.006042795 +29844000,imu,0.12242229,-0.54726326,-9.975007,-0.0026811988,-0.0048382143,-0.0039406107 +29844000,mag,-0.00030423634,-0.19879842,0.433257 +29848000,imu,0.10063162,-0.53145105,-9.967937,-0.004087653,-0.0032986242,-0.0008393051 +29852000,imu,0.10634412,-0.5165665,-9.961675,-0.0014059416,-0.0029029364,-0.0015807278 +29852000,gps,491707.0,85455567.0,473976663.0,-2.29,-0.98999995,0.81 +29856000,mag,0.0011099876,-0.20129102,0.43257186 +29856000,imu,0.14316975,-0.52178526,-9.981821,-0.0032093935,-0.006418583,-0.003739119 +29860000,imu,0.14798924,-0.5680062,-9.954993,-0.0006277856,-0.0038737913,-0.0032529382 +29864000,imu,0.12293142,-0.5598653,-9.959631,0.002266474,-0.004067844,-0.0025745393 +29868000,mag,-0.006323184,-0.20224725,0.43345648 +29868000,imu,0.11895126,-0.5251186,-9.983192,0.00015864051,-0.0035131476,-0.0016371874 +29872000,imu,0.14214052,-0.50393856,-9.955717,-0.0008593572,-0.0010314404,-0.00076080055 +29876000,imu,0.13158883,-0.5195555,-9.971101,0.00199667,-0.004395878,-0.0020708104 +29880000,imu,0.12480593,-0.54895777,-9.99136,0.0054607163,-0.0023449352,-0.0033530323 +29880000,mag,-0.0043050195,-0.20296656,0.44243968 +29880000,baro,491.15927 +29884000,imu,0.16291904,-0.54128957,-10.007407,0.00682738,0.0014543685,-0.0033236686 +29888000,imu,0.16935591,-0.5382692,-9.980248,0.007576613,-0.0005334064,-0.0023620056 +29892000,imu,0.11487634,-0.53657,-9.982208,0.0058144447,0.0010907534,-0.003634328 +29892000,mag,-0.00019487484,-0.20574416,0.43950647 +29896000,imu,0.10300963,-0.55415386,-9.999367,0.0029830104,-0.00057057675,-0.006840999 +29900000,imu,0.1170643,-0.54606694,-9.991274,0.004723956,-0.008301007,-0.005937247 +29904000,mag,0.0029920575,-0.20334387,0.43943086 +29904000,imu,0.10771429,-0.5314692,-10.005181,0.0046184575,-0.00742976,-0.004371899 +29908000,imu,0.12936887,-0.54280627,-10.00676,0.0056451513,-0.0019003231,-0.0030064983 +29912000,imu,0.12888354,-0.54341954,-10.0182495,0.0058346223,-0.004257227,-0.0030377218 +29916000,imu,0.12963802,-0.524548,-10.0201645,0.0033452963,-0.003929404,-0.005798489 +29916000,mag,-0.0039829197,-0.19722775,0.43781188 +29920000,imu,0.15704417,-0.53516847,-10.032982,0.0020458773,-0.0025573408,-0.006199591 +29924000,imu,0.1431626,-0.54943746,-10.018198,-0.0007018097,-0.0024962015,-0.004325535 +29928000,mag,-0.0072582946,-0.20067787,0.4448481 +29928000,imu,0.113504454,-0.52544606,-10.026936,-0.00074876595,-0.0005879585,-0.003482465 +29932000,imu,0.10383423,-0.50522715,-10.030727,-0.002115993,-0.002465525,-0.0043527214 +29936000,imu,0.10594553,-0.530347,-10.010246,-0.0037403903,-0.004656768,-0.0041288864 +29940000,imu,0.09702948,-0.564727,-10.015952,-0.0030325658,-0.0043699658,-0.0026930792 +29940000,mag,0.0033933735,-0.2002454,0.4361533 +29944000,imu,0.10276398,-0.55465823,-10.015345,-0.0019520121,-0.0059815086,-0.0038298804 +29948000,imu,0.12635532,-0.5331605,-10.007677,-0.003338576,-0.005809185,-0.004611141 +29952000,baro,491.09824 +29952000,mag,0.0019206342,-0.20001802,0.43995875 +29952000,imu,0.13521591,-0.5416091,-10.005106,-0.0044983253,-0.004040911,-0.0007802179 +29956000,imu,0.13427499,-0.53781164,-10.011924,-0.0063017053,-0.007674639,-0.0039916006 +29960000,imu,0.14307804,-0.5109835,-10.007133,-0.003961364,-0.009489221,-0.0059102112 +29964000,mag,0.0010175755,-0.19869654,0.43184108 +29964000,imu,0.11306989,-0.5463435,-10.038476,-0.0030920622,-0.011305678,-0.0012192241 +29968000,imu,0.10147287,-0.58605176,-10.046503,-0.0034232216,-0.01016843,-0.002415239 +29972000,imu,0.123596735,-0.58031183,-10.047096,-0.0030593153,-0.008408446,-0.0028257067 +29976000,mag,-0.0012932596,-0.19826025,0.43384513 +29976000,imu,0.10392684,-0.526831,-10.012883,-0.005200897,-0.00971844,-0.0038267453 +29980000,imu,0.10832669,-0.5055266,-9.996764,-0.0017798302,-0.00945168,-0.0053257667 +29984000,imu,0.13722472,-0.5228686,-10.010089,-0.0021851126,-0.009408833,-0.004154945 +29988000,mag,-0.0061066537,-0.19615598,0.43577966 +29988000,imu,0.13363092,-0.50678974,-9.977798,-0.0030081398,-0.010522074,-0.00024380091 +29992000,imu,0.11654623,-0.5050278,-9.995057,0.00031291004,-0.009363122,-0.0014800759 +29996000,imu,0.14441612,-0.5057326,-10.013554,0.00010593947,-0.003102981,-0.0039970134 +30000000,imu,0.15254334,-0.49625763,-10.016806,0.0015528332,-0.0032927245,-0.004240257 +30000000,mag,0.0006702265,-0.19984539,0.4321469 +30004000,imu,0.098467246,-0.51398283,-9.995838,0.00095185527,-0.0075401603,-0.005082437 +30008000,imu,0.11828937,-0.5367212,-9.988589,-0.0018662572,-0.009869516,-0.0037675423 +30012000,mag,0.0033100906,-0.198292,0.43707082 +30012000,imu,0.14198726,-0.5209822,-10.008675,0.0007066209,-0.010002232,-0.0026035395 +30016000,imu,0.1131815,-0.49140102,-10.007484,0.001297858,-0.00775879,-0.004995531 +30020000,imu,0.09188173,-0.49337536,-10.006617,-0.002282292,-0.009299533,-0.007929111 +30024000,baro,491.0231 +30024000,mag,-0.0024412693,-0.20499663,0.4336848 +30024000,imu,0.09621042,-0.5467122,-10.005138,-0.004685602,-0.010040429,-0.0040442254 +30028000,imu,0.1052476,-0.5451816,-9.994447,-0.004399696,-0.0076471004,-0.0040118564 +30032000,imu,0.10793339,-0.5075351,-9.977141,-0.0036854954,-0.005523612,-0.0032651543 +30036000,mag,-0.0039584455,-0.19629477,0.4336955 +30036000,imu,0.13351804,-0.5375301,-9.991699,-0.0025975916,-0.008552863,-0.00015550706 +30040000,imu,0.120935485,-0.54086757,-9.984209,-0.0057935235,-0.011720492,-0.002190961 +30044000,mag,-0.009048459,-0.19832297,0.4371835 +30044000,imu,0.116624095,-0.5214382,-9.993577,-0.0069047203,-0.009846931,-0.00493064 +30048000,imu,0.10594165,-0.542707,-10.020838,-0.005017349,-0.00625156,-0.0052540563 +30052000,imu,0.08881827,-0.547612,-10.022535,-0.0062738974,-0.003975726,-0.0037189657 +30056000,imu,0.114144094,-0.52489346,-10.004215,-0.0067477296,-0.0074470197,-0.0035210305 +30060000,imu,0.12263206,-0.522989,-9.9818325,-0.0038956942,-0.009507853,-0.0016095965 +30060000,mag,-0.00027992594,-0.19312519,0.4364586 +30064000,imu,0.12322407,-0.5129915,-9.970312,-0.0030311986,-0.006378596,-0.0021773553 +30068000,mag,-0.003275318,-0.20075011,0.43269575 +30068000,imu,0.12366571,-0.51463574,-9.953137,-0.00851847,-0.006299826,-0.0042534764 +30072000,imu,0.12857984,-0.51168084,-9.976443,-0.009341767,-0.0042147087,-0.0013110854 +30076000,imu,0.1610266,-0.5016633,-9.985983,-0.006975102,-0.005751113,-0.0014470007 +30080000,imu,0.13370661,-0.5068051,-9.997616,-0.007864445,-0.008391522,-0.003331185 +30084000,imu,0.12968826,-0.5171315,-10.031696,-0.006011046,-0.0054727243,-0.00398237 +30084000,mag,0.0002863841,-0.20313223,0.43990257 +30088000,imu,0.161737,-0.51274925,-10.010991,-0.0020010504,-0.0062773395,-0.005759174 +30092000,imu,0.14951131,-0.498605,-9.978296,-0.0027358688,-0.008375745,-0.0061657103 +30096000,imu,0.1283524,-0.50092125,-9.955112,-0.002853196,-0.007083986,-0.0045476914 +30096000,mag,-9.481395e-05,-0.19893096,0.42961243 +30096000,baro,490.9292 +30100000,imu,0.1236797,-0.5060864,-9.9142475,-0.0010529024,-0.006993612,-0.0011956168 +30104000,imu,0.1264205,-0.5204702,-9.943683,-0.0034530738,-0.007072718,-0.003965525 +30108000,imu,0.12043272,-0.5208194,-10.01759,-0.0058706235,-0.007707904,-0.010274691 +30108000,mag,-0.0033673663,-0.19844265,0.43932357 +30112000,imu,0.11783503,-0.5295843,-10.02622,-0.0044345367,-0.010055743,-0.009869648 +30116000,imu,0.11823876,-0.5345807,-10.019011,-0.0050045685,-0.009331663,-0.003994648 +30120000,mag,0.005860355,-0.19360897,0.42813623 +30120000,imu,0.10917537,-0.5159901,-10.023777,-0.009342159,-0.010032867,-0.00018779917 +30124000,imu,0.10262747,-0.506141,-10.010633,-0.006440104,-0.012038678,-1.188447e-05 +30128000,imu,0.09696117,-0.48102456,-9.9883585,-0.0030092085,-0.013692285,-0.0027286345 +30132000,imu,0.09173997,-0.4684055,-9.988398,-0.0062063434,-0.009774701,-0.0034873136 +30132000,mag,-0.00064427924,-0.20196186,0.43715832 +30136000,imu,0.07291186,-0.51190984,-10.003652,-0.010338911,-0.007503732,0.0002736359 +30140000,imu,0.10250859,-0.508876,-10.019369,-0.010755973,-0.0116974,-0.0024298339 +30144000,mag,0.006643445,-0.19711222,0.4374882 +30144000,imu,0.15720609,-0.49955213,-10.031998,-0.009181326,-0.012598546,-0.0075071715 +30148000,imu,0.1441539,-0.5256248,-10.007509,-0.0076627,-0.008013093,-0.0076192785 +30152000,imu,0.098307535,-0.5295176,-9.984871,-0.00778296,-0.005113443,-0.0060365414 +30156000,imu,0.10916115,-0.50929874,-9.995732,-0.007871104,-0.009418825,-0.003835793 +30156000,mag,-0.0015185905,-0.20034446,0.43454352 +30160000,imu,0.14164001,-0.47895738,-10.012051,-0.009092283,-0.01011964,-0.0053156894 +30164000,baro,490.90573 +30164000,mag,0.0035357,-0.19630632,0.4325392 +30164000,imu,0.110165924,-0.5013081,-10.018463,-0.0100887995,-0.009325581,-0.0049337307 +30168000,imu,0.12522185,-0.49566558,-10.014586,-0.0052720928,-0.009060571,-0.0043738303 +30172000,imu,0.10849743,-0.46204507,-10.011257,-0.0065250807,-0.0073548565,-0.0033257753 +30176000,imu,0.07632404,-0.48675853,-10.017801,-0.008344711,-0.0055540665,-0.0014438021 +30180000,imu,0.10113309,-0.51514965,-10.021208,-0.008697587,-0.0034248922,-0.0011434128 +30180000,mag,-0.006243889,-0.20050815,0.42981574 +30184000,imu,0.11322322,-0.5244601,-10.020685,-0.0067852624,-0.0050251763,-0.0026905332 +30188000,imu,0.09953202,-0.5012446,-10.00458,-0.0060943053,-0.007314215,-0.003531945 +30192000,imu,0.09174323,-0.50465435,-9.991539,-0.011478802,-0.0063056936,-0.00023427652 +30192000,mag,-0.0028899724,-0.19484839,0.43462914 +30196000,imu,0.08782893,-0.5367562,-10.021017,-0.008463018,-0.0046987673,-0.0018018039 +30200000,imu,0.102339625,-0.5530612,-10.021634,-0.007049239,-0.0051866807,-0.0023452241 +30204000,imu,0.1057542,-0.543457,-10.012779,-0.011673099,-0.004012843,-0.0010883091 +30204000,mag,0.00035079542,-0.1986725,0.44019473 +30208000,landed,0.0 +30208000,imu,0.09111299,-0.49657056,-10.022456,-0.0110802185,-0.006802228,-0.005593529 +30212000,imu,0.10123121,-0.5047048,-10.025724,-0.007978971,-0.009454855,-0.00799429 +30216000,baro,490.7602 +30216000,mag,0.0010243255,-0.20467594,0.43398178 +30216000,imu,0.08090084,-0.5275348,-10.028887,-0.0066963583,-0.008112718,-0.0037914508 +30220000,imu,0.07401229,-0.5063402,-10.031795,-0.009001952,-0.0077900975,-0.00068406266 +30224000,imu,0.08772577,-0.52293354,-9.996809,-0.0062056277,-0.008080163,-0.001340252 +30228000,mag,0.0020289558,-0.2010646,0.4357187 +30228000,imu,0.10142896,-0.5509067,-9.983251,-0.0011904407,-0.008071014,-0.0042386167 +30232000,imu,0.09669801,-0.49814123,-10.013823,-0.0033001844,-0.0048431563,-0.004654249 +30236000,imu,0.09562676,-0.46414894,-10.00868,-0.0053882054,-0.0063236794,-0.0042372383 +30240000,imu,0.11981726,-0.47533026,-10.019299,-0.0049478514,-0.007880835,-0.004921795 +30240000,mag,-0.0030292927,-0.20190383,0.43789434 +30244000,imu,0.11120222,-0.4728911,-10.005732,-0.0055226646,-0.0075065275,-0.0056876745 +30248000,imu,0.10200506,-0.5185367,-9.961826,-0.005784541,-0.007999343,-0.003526513 +30252000,mag,-0.008625868,-0.19533059,0.439536 +30252000,imu,0.09557861,-0.58193856,-9.996642,-0.0044004624,-0.01012659,0.00062949787 +30252000,gps,491386.0,85455514.0,473976582.0,-2.1399999,-0.98999995,0.79999995 +30256000,imu,0.10244131,-0.53756124,-10.017855,-0.0030171229,-0.010655701,-0.00029207455 +30260000,imu,0.099316284,-0.48072907,-9.975892,-0.0021376717,-0.008221611,-0.0041530486 +30264000,imu,0.09315199,-0.49416152,-9.969809,-0.0029825054,-0.0085820975,-0.0048281495 +30264000,mag,0.005023145,-0.1951788,0.43490365 +30268000,imu,0.10116633,-0.5036338,-9.989279,-0.0043404973,-0.008701099,-0.003745625 +30272000,imu,0.09589423,-0.4954391,-9.98612,-0.004969063,-0.007820232,-0.0040863957 +30276000,mag,0.007009827,-0.20659122,0.43752816 +30276000,imu,0.106667414,-0.47824252,-9.981004,-0.0061420137,-0.0066660964,-0.004218933 +30280000,imu,0.102467686,-0.48614657,-9.9690895,-0.0065327436,-0.0038170451,-0.0045244903 +30284000,mag,-0.00400522,-0.20642908,0.4361688 +30284000,imu,0.11091478,-0.5328601,-9.981453,-0.004312494,-0.0033394888,-0.0038714951 +30288000,imu,0.11281776,-0.5174865,-9.992572,-0.0061435373,-0.007459364,-0.00026737442 +30288000,baro,490.89633 +30292000,imu,0.08304356,-0.48122925,-9.984213,-0.008083322,-0.00830107,0.00061774586 +30296000,imu,0.09003168,-0.4874131,-10.005742,-0.007557176,-0.0065518925,-0.00055752345 +30300000,imu,0.114858255,-0.48254302,-10.044088,-0.011290727,-0.008741023,-0.0009617127 +30300000,mag,-0.0005724906,-0.19401869,0.4393839 +30304000,imu,0.117702425,-0.48696896,-10.037838,-0.011863291,-0.008392547,-0.004335984 +30308000,imu,0.11471763,-0.5138208,-10.0249195,-0.01094254,-0.007879779,-0.0049927463 +30312000,mag,-0.0018152533,-0.20700173,0.44252646 +30312000,imu,0.12184125,-0.5232387,-10.052699,-0.010480916,-0.009921399,-0.006697084 +30316000,imu,0.107997224,-0.51515126,-10.018862,-0.01131637,-0.009185439,-0.010941587 +30320000,imu,0.092459336,-0.52272135,-9.98725,-0.01094155,-0.006785824,-0.0051544444 +30324000,imu,0.118335545,-0.49825928,-9.987904,-0.0072103576,-0.0049898103,0.0014761672 +30324000,mag,-0.0039229826,-0.19590855,0.43429586 +30328000,imu,0.11419314,-0.4992727,-9.987759,-0.008368923,-0.008268516,0.0015188149 +30332000,imu,0.08725074,-0.5204907,-9.985694,-0.008547257,-0.0097647915,-0.0008107197 +30332000,mag,0.0012711121,-0.19867226,0.4362853 +30336000,imu,0.088504225,-0.51188415,-10.002222,-0.006584782,-0.009435233,-0.0020488072 +30340000,imu,0.08495626,-0.5160453,-10.023823,-0.0058878525,-0.009150802,-0.00046787463 +30344000,imu,0.08904402,-0.49849385,-10.018526,-0.004528124,-0.008800979,-0.0018374509 +30348000,imu,0.10226751,-0.47404155,-10.013243,-0.004160413,-0.008809983,-0.0033421165 +30348000,mag,-0.00056373456,-0.18787344,0.4384958 +30352000,imu,0.12998609,-0.4926548,-10.007799,-0.003695665,-0.009344214,-0.000814901 +30356000,imu,0.16165307,-0.5025008,-10.01796,-0.00030833963,-0.010664074,0.0012703792 +30360000,mag,0.0074098413,-0.19840263,0.440281 +30360000,imu,0.14293349,-0.49156818,-10.03446,-0.0013068962,-0.008197754,-0.0028149884 +30360000,baro,490.6569 +30364000,imu,0.111018054,-0.48437357,-10.045683,-0.004403797,-0.006913673,-0.005506296 +30368000,imu,0.12232717,-0.47940952,-10.048082,-0.0063612615,-0.008726932,-0.00450755 +30372000,mag,-0.0008453943,-0.19647406,0.43607932 +30372000,imu,0.10833354,-0.5153313,-10.032869,-0.005296853,-0.0071894825,-0.0020433697 +30376000,imu,0.11190987,-0.52668303,-10.03377,-0.0035873118,-0.0062728925,-0.0013345791 +30380000,imu,0.1319349,-0.51669174,-10.037054,-0.004979748,-0.012625781,-0.0033210067 +30384000,imu,0.08482828,-0.4880283,-10.039304,-0.0056822714,-0.0119681815,-0.0013999051 +30384000,mag,-0.0033368568,-0.20067191,0.4361924 +30388000,imu,0.07761874,-0.46379358,-10.042529,-0.008719161,-0.011939959,-0.0042667594 +30392000,imu,0.107245706,-0.49734056,-10.02228,-0.0081890775,-0.012026272,-0.004936012 +30396000,imu,0.12090199,-0.5008075,-10.045279,-0.007699109,-0.00672142,-0.003966172 +30396000,mag,0.0016596835,-0.20229538,0.44235253 +30400000,imu,0.10972807,-0.475678,-10.05559,-0.011333977,-0.007590101,-0.0040170406 +30404000,imu,0.089887865,-0.47936222,-10.01679,-0.010275065,-0.008338202,-0.0013930931 +30408000,imu,0.0771513,-0.4728474,-9.998905,-0.0066720005,-0.010269881,-0.0017354416 +30408000,mag,-0.0024574632,-0.19959293,0.43562838 +30412000,imu,0.073499605,-0.4809959,-10.013192,-0.0039491667,-0.011782336,-0.004166742 +30416000,imu,0.06756608,-0.49223757,-10.046001,-0.0064290096,-0.010122881,-0.0020710318 +30420000,imu,0.088730365,-0.49491942,-10.055058,-0.00816594,-0.009791183,0.00077882153 +30420000,mag,-0.002543532,-0.20478985,0.43640992 +30424000,imu,0.12945274,-0.4830716,-10.036488,-0.0035690279,-0.0116998395,0.00011687407 +30428000,imu,0.12528363,-0.46832258,-10.027985,-0.008094421,-0.008453465,0.0038397815 +30432000,mag,0.0017182713,-0.19756095,0.4323638 +30432000,imu,0.12198591,-0.4643281,-10.016201,-0.009678132,-0.0070598745,0.00018389784 +30432000,baro,490.6616 +30436000,imu,0.09650782,-0.4537607,-10.007563,-0.0068479064,-0.0074569867,-0.0044940067 +30440000,imu,0.077000536,-0.48180744,-10.00454,-0.0055992934,-0.006940144,-0.0028396822 +30444000,imu,0.10566065,-0.4721133,-10.018619,-0.0055510155,-0.0054422733,-0.003955321 +30444000,mag,-0.0008706356,-0.1990459,0.4460337 +30448000,imu,0.1366415,-0.4540765,-10.009468,-0.0078136595,-0.0048484537,-0.0032806154 +30452000,imu,0.11002101,-0.45240405,-9.994169,-0.0048464187,-0.0056655155,-0.0028773162 +30456000,mag,0.0040460094,-0.20227273,0.43239427 +30456000,imu,0.099793226,-0.46146083,-10.035341,-0.004644848,-0.005742283,-0.0030442113 +30460000,imu,0.14956844,-0.4721563,-10.037982,-0.006075739,-0.008014749,-0.0030182633 +30464000,imu,0.13375258,-0.47622707,-10.018902,-0.005125353,-0.009191824,-0.004519272 +30468000,imu,0.09115684,-0.47835958,-9.987811,-0.00865323,-0.008092566,-0.0017484382 +30468000,mag,0.0035431504,-0.19932055,0.43657282 +30472000,imu,0.07737665,-0.47797376,-10.0091505,-0.011406216,-0.0041127456,0.0018083751 +30476000,imu,0.092655465,-0.47322765,-10.042598,-0.0060281223,-0.004314321,0.0015235988 +30476000,mag,-0.0019155414,-0.20118518,0.4318033 +30480000,imu,0.104992844,-0.44587484,-10.037272,-0.0051266137,-0.0067795063,-0.0007215287 +30484000,imu,0.09687175,-0.4914176,-10.084299,-0.008558136,-0.007596669,-0.00012462967 +30488000,imu,0.081645675,-0.499579,-10.162161,-0.01237749,-0.007976423,0.00023942115 +30492000,imu,0.1081141,-0.46715254,-10.227499,-0.014143409,-0.0066809966,-0.0041461107 +30492000,mag,0.0033874002,-0.20502353,0.43778077 +30496000,imu,0.119088694,-0.49673706,-10.252878,-0.011461184,-0.008605583,-0.004789718 +30500000,imu,0.08003667,-0.5159754,-10.276459,-0.010413872,-0.011974079,-0.0040761936 +30504000,imu,0.09387597,-0.49131694,-10.270214,-0.011883464,-0.011345562,-0.0038973298 +30504000,baro,490.64752 +30504000,mag,-0.0030297835,-0.20437919,0.43201023 +30508000,imu,0.10028611,-0.4819888,-10.263655,-0.014187786,-0.008939007,-0.0033057423 +30512000,imu,0.093712434,-0.4793882,-10.3145275,-0.014661904,-0.009549776,-0.00347738 +30516000,mag,0.0024218394,-0.20383623,0.44177487 +30516000,imu,0.1043178,-0.4624908,-10.357348,-0.014520028,-0.011562043,-0.00279746 +30520000,imu,0.11885153,-0.47955155,-10.360178,-0.013886571,-0.011316549,-0.0018807288 +30524000,imu,0.1229349,-0.4876431,-10.366184,-0.009943552,-0.008401279,-0.0027878801 +30524000,mag,0.00083258515,-0.20290896,0.44164371 +30528000,imu,0.08601698,-0.49832267,-10.378662,-0.010139434,-0.007253382,-0.0060477024 +30532000,imu,0.11583329,-0.5203737,-10.371773,-0.011633148,-0.00995442,-0.0042544464 +30536000,imu,0.13152847,-0.51699656,-10.363122,-0.011250045,-0.010227995,9.464124e-05 +30540000,mag,0.00037392738,-0.19406423,0.4423293 +30540000,imu,0.07444068,-0.5138975,-10.33589,-0.008843994,-0.01004003,0.000497008 +30544000,imu,0.11334902,-0.49342018,-10.291307,-0.008378935,-0.010076961,0.00029477914 +30548000,imu,0.167265,-0.4749721,-10.272562,-0.011728536,-0.009616116,-0.0018455152 +30552000,mag,-0.00052830065,-0.20115007,0.43655542 +30552000,imu,0.13622159,-0.4861547,-10.275856,-0.010692882,-0.009988595,-0.0060611735 +30556000,imu,0.09436678,-0.47982508,-10.256813,-0.009648383,-0.010992395,-0.0056510945 +30560000,imu,0.088249736,-0.45747352,-10.237941,-0.008029357,-0.012055387,-0.0050066183 +30564000,mag,0.0002061926,-0.20202588,0.43886775 +30564000,imu,0.106371,-0.44037157,-10.232664,-0.0073059667,-0.010940871,-0.0061887093 +30568000,imu,0.12613249,-0.4438982,-10.211925,-0.008039513,-0.010252556,-0.0030637623 +30572000,imu,0.14086044,-0.46542907,-10.189569,-0.008544964,-0.010816707,-0.0014429814 +30576000,imu,0.13874513,-0.49222702,-10.168236,-0.0100009,-0.010727344,-0.004171249 +30576000,mag,0.001398758,-0.19623232,0.43612382 +30576000,baro,490.62872 +30580000,imu,0.10542977,-0.48917112,-10.162601,-0.008680137,-0.01083656,-0.005730201 +30584000,imu,0.09045762,-0.46265042,-10.134119,-0.0064478857,-0.0081177065,-0.0025877329 +30588000,imu,0.098013766,-0.4560864,-10.097086,-0.011175502,-0.007797633,0.00019538353 +30588000,mag,0.008935357,-0.19838655,0.43823305 +30592000,imu,0.094321035,-0.45631856,-10.076246,-0.011581891,-0.012418431,-0.003189868 +30596000,imu,0.07751541,-0.46596563,-10.055231,-0.010561971,-0.012783566,-0.0026084133 +30600000,imu,0.09027104,-0.46439517,-10.0443535,-0.011561103,-0.009804393,-0.0009938024 +30600000,mag,-0.0024915105,-0.20329829,0.43519163 +30604000,imu,0.12948115,-0.4302035,-10.036167,-0.007244823,-0.010268187,0.00024650316 +30608000,imu,0.11205474,-0.42689183,-10.019404,-0.008441065,-0.010191034,-0.00010000558 +30612000,imu,0.0741356,-0.45059052,-10.009044,-0.014786748,-0.010137708,-0.005082178 +30612000,mag,-0.0006255492,-0.20264418,0.4386601 +30616000,imu,0.09024026,-0.4756624,-10.0084915,-0.01307531,-0.009999593,-0.004705055 +30620000,imu,0.11596891,-0.47100943,-9.969839,-0.008322037,-0.008645687,-0.003819718 +30624000,mag,-0.00045226206,-0.20637155,0.43709302 +30624000,imu,0.12806557,-0.45427567,-9.961712,-0.011697376,-0.005762419,-0.004424502 +30628000,imu,0.1217702,-0.4593617,-9.977575,-0.010748568,-0.0049658464,-0.0045533753 +30632000,imu,0.10815844,-0.4722467,-9.955631,-0.00603196,-0.008121745,-0.007844547 +30636000,mag,0.0005720182,-0.19953758,0.4333022 +30636000,imu,0.09648484,-0.45972368,-9.928309,-0.009323751,-0.008809464,-0.0071987254 +30640000,imu,0.10285412,-0.44626182,-9.924344,-0.014805345,-0.009430265,-0.0027636755 +30644000,imu,0.09917289,-0.44695115,-9.91065,-0.013459297,-0.009558895,-0.0026653912 +30648000,imu,0.09902001,-0.4782259,-9.909107,-0.0103346035,-0.0058136224,-0.0036538667 +30648000,mag,6.6961686e-05,-0.20012929,0.43723935 +30648000,baro,490.4785 +30652000,imu,0.11756895,-0.47755674,-9.8994,-0.010214952,-0.0071647232,-0.003963893 +30652000,gps,491076.0,85455462.0,473976506.0,-2.03,-0.94,0.72999996 +30656000,imu,0.093483485,-0.46989745,-9.869158,-0.011446401,-0.009416964,-0.0036010188 +30660000,imu,0.07902804,-0.49163577,-9.859647,-0.010143824,-0.007504961,-0.0016352411 +30660000,mag,0.001695143,-0.20453131,0.44168735 +30664000,imu,0.08510834,-0.45545918,-9.854063,-0.00797401,-0.0063885124,0.001534704 +30668000,mag,0.0024059785,-0.19841973,0.43384865 +30668000,imu,0.09566974,-0.44330442,-9.864465,-0.008122553,-0.0052054967,0.0024185139 +30672000,imu,0.12410157,-0.4696461,-9.867455,-0.004452779,-0.0067008426,0.00077635696 +30676000,imu,0.12189846,-0.4541257,-9.859383,-0.0048846104,-0.010654407,-0.0010753217 +30680000,imu,0.117465556,-0.44887245,-9.857962,-0.008071443,-0.010510898,0.0015820595 +30684000,mag,0.009548523,-0.20502833,0.4364083 +30684000,imu,0.12946366,-0.45703498,-9.875724,-0.005280737,-0.0074438704,0.00067631796 +30688000,imu,0.10258435,-0.42394066,-9.910177,-0.0037092816,-0.0070601837,-0.0014641813 +30692000,imu,0.088023275,-0.4232994,-9.884886,-0.006349976,-0.0067385645,0.0009073931 +30692000,mag,8.733117e-05,-0.2049248,0.43960637 +30696000,imu,0.09582092,-0.43744606,-9.873107,-0.00809671,-0.007395803,-0.00081968604 +30700000,imu,0.10194941,-0.42290884,-9.897234,-0.0073233442,-0.010332569,-0.0010956305 +30704000,imu,0.105876245,-0.44536734,-9.901686,-0.006919515,-0.011048198,-0.0007706812 +30708000,imu,0.08957973,-0.47429574,-9.887867,-0.008804801,-0.0074800034,-0.0016127216 +30708000,mag,0.002547235,-0.20515762,0.43455964 +30712000,imu,0.06826617,-0.4635039,-9.923277,-0.008269667,-0.010152112,-0.0035869041 +30716000,mag,-0.0019796733,-0.19490334,0.43075854 +30716000,baro,490.45032 +30716000,imu,0.08537833,-0.48425686,-9.95483,-0.009682474,-0.011468414,-0.004308789 +30720000,imu,0.08030501,-0.4803954,-9.917715,-0.011975663,-0.011769343,-0.0054313666 +30724000,imu,0.07063109,-0.45080805,-9.929589,-0.0118967015,-0.0126427915,-0.0067885835 +30728000,imu,0.08994506,-0.4497176,-9.9677305,-0.012875792,-0.012486845,-0.0039486894 +30732000,mag,-0.0039125937,-0.20143718,0.43214148 +30732000,imu,0.0870312,-0.44173372,-9.95643,-0.012910858,-0.0097998995,-0.0031785355 +30736000,imu,0.097503036,-0.43001986,-9.928717,-0.0117544085,-0.0070300237,-0.002976123 +30740000,imu,0.10479288,-0.42883435,-9.95067,-0.0087287715,-0.008368428,-0.0017641268 +30744000,imu,0.10402365,-0.44907185,-9.99478,-0.0077095665,-0.010012561,-0.0012196476 +30744000,mag,0.002424412,-0.2019059,0.43494242 +30748000,imu,0.09987585,-0.43096992,-10.004692,-0.008513938,-0.0106388675,-0.0022810332 +30752000,imu,0.08706224,-0.4407977,-9.991081,-0.008851183,-0.008324047,-0.0018734852 +30756000,mag,-0.0019131959,-0.20635633,0.44191363 +30756000,imu,0.084315,-0.46085235,-10.001917,-0.009288248,-0.007461095,-0.002337003 +30760000,imu,0.10493389,-0.42038238,-10.023334,-0.008305377,-0.0089781275,-0.0063238414 +30764000,imu,0.09704736,-0.4141757,-10.01929,-0.0066499417,-0.009906513,-0.0067262505 +30768000,mag,-0.003689894,-0.19405046,0.42861915 +30768000,imu,0.10531029,-0.4235534,-9.974891,-0.008439983,-0.010313096,-0.0024983445 +30768000,baro,490.3611 +30772000,imu,0.120510295,-0.4462087,-9.997427,-0.00935887,-0.009027411,-0.0012017142 +30776000,imu,0.102302365,-0.4653864,-10.044241,-0.011602033,-0.009215419,0.00038454143 +30780000,mag,-6.247185e-05,-0.20199741,0.43216997 +30780000,imu,0.12757176,-0.4441378,-10.0377865,-0.011528077,-0.010577085,0.0028734151 +30784000,imu,0.12543398,-0.4562765,-10.018478,-0.008821195,-0.009089493,-1.9720348e-05 +30788000,imu,0.112185,-0.46784446,-10.003307,-0.01222164,-0.005671938,0.0018064906 +30792000,mag,0.0026712941,-0.20151445,0.4365895 +30792000,imu,0.11934894,-0.4314347,-10.028003,-0.015023561,-0.004745674,0.004766169 +30796000,imu,0.11823645,-0.43644223,-10.043308,-0.012923673,-0.0069232252,0.0002933932 +30800000,imu,0.12154275,-0.45319146,-10.041166,-0.011740133,-0.009727228,-0.0010864631 +30804000,imu,0.13092451,-0.45738342,-10.027526,-0.011329131,-0.011963793,0.00044134486 +30804000,mag,0.00033243405,-0.20304285,0.44110775 +30808000,imu,0.10187125,-0.47474283,-10.0021105,-0.010981759,-0.010163192,-6.794757e-05 +30812000,imu,0.060919117,-0.47819573,-10.020308,-0.012917919,-0.0060077584,-0.0009600494 +30816000,imu,0.06818972,-0.465056,-10.021936,-0.010099902,-0.00955739,-0.0011818353 +30816000,mag,0.0027554028,-0.19954938,0.43571666 +30820000,imu,0.09561728,-0.45147115,-9.995792,-0.008222121,-0.0120697925,0.0004011867 +30824000,imu,0.13826822,-0.43674356,-10.02692,-0.01012814,-0.007990759,0.0011221332 +30828000,imu,0.12746969,-0.4124584,-10.035791,-0.010978858,-0.008126537,-0.0014899229 +30828000,mag,-0.0028411325,-0.20717704,0.4341447 +30832000,imu,0.07943143,-0.40659073,-10.01214,-0.012106567,-0.0058871475,-0.003724084 +30836000,imu,0.0683508,-0.437018,-10.003271,-0.013457824,-0.007145404,-0.004589222 +30840000,baro,490.42215 +30840000,imu,0.08357245,-0.44706357,-9.999132,-0.0145076,-0.008818659,5.3761032e-05 +30840000,mag,0.00015375043,-0.19717005,0.4322222 +30844000,imu,0.07768454,-0.4407287,-9.995697,-0.011127886,-0.0078523075,0.0046040313 +30848000,imu,0.09004031,-0.43734413,-9.982797,-0.008104297,-0.010741467,0.0023575025 +30852000,imu,0.12390265,-0.44501477,-9.979688,-0.0071994863,-0.011525966,0.0038139843 +30852000,mag,-0.0029736827,-0.19844703,0.43482286 +30856000,imu,0.11961089,-0.4564989,-9.983562,-0.0070441277,-0.011096915,0.00405407 +30860000,imu,0.12434814,-0.44470775,-9.980776,-0.0089124665,-0.012245941,-0.0006626835 +30864000,imu,0.11320837,-0.4585632,-10.003279,-0.010296722,-0.012100791,-0.0017469407 +30864000,mag,0.0056270384,-0.19992954,0.43855596 +30868000,imu,0.078350455,-0.48044056,-9.999192,-0.0101146875,-0.011830302,0.0015627191 +30872000,imu,0.07670246,-0.459803,-9.98563,-0.010697329,-0.013330788,0.0038920124 +30876000,mag,0.0023029223,-0.19765599,0.44617838 +30876000,imu,0.10006626,-0.415361,-9.957528,-0.011979597,-0.016081752,0.00412353 +30880000,imu,0.10880168,-0.3970543,-9.94651,-0.011221553,-0.0115406485,0.0007782941 +30884000,imu,0.10062802,-0.39540967,-9.974851,-0.011772112,-0.011190249,-0.00052132003 +30888000,mag,-0.0067383917,-0.19909325,0.4362758 +30888000,imu,0.092394665,-0.42640123,-9.973019,-0.012046882,-0.01282437,-8.150869e-05 +30892000,imu,0.06953401,-0.45816672,-9.961099,-0.013994903,-0.011397501,-0.001633367 +30896000,imu,0.054030485,-0.44982058,-9.9633045,-0.010962648,-0.010444422,-0.0013974423 +30900000,mag,-0.00021968994,-0.20232448,0.435307 +30900000,imu,0.06686016,-0.4131562,-9.9752035,-0.008035432,-0.011712144,-0.0036403388 +30904000,imu,0.08338519,-0.41820207,-9.961876,-0.014220498,-0.014384978,-0.0037102103 +30908000,imu,0.054760627,-0.4680183,-9.9643345,-0.012434706,-0.012925854,0.0027299465 +30912000,mag,0.004099847,-0.20170902,0.43868953 +30912000,imu,0.064939104,-0.46681982,-9.969357,-0.0072655044,-0.010923077,0.0026980732 +30912000,baro,490.32825 +30916000,imu,0.087950006,-0.4480777,-9.97109,-0.009738307,-0.010358122,-0.00045292045 +30920000,imu,0.07809237,-0.43488365,-9.9714,-0.013095907,-0.014031125,0.0021363697 +30924000,mag,0.0022982517,-0.20927991,0.43872 +30924000,imu,0.09946306,-0.4387424,-9.964714,-0.013532448,-0.015093762,0.0013907237 +30928000,imu,0.111997396,-0.44906908,-9.948074,-0.012426019,-0.010753741,-0.0017728081 +30932000,imu,0.090648435,-0.43240315,-9.912336,-0.012172464,-0.010078371,-0.0021214255 +30936000,imu,0.09757207,-0.44611692,-9.937552,-0.01281998,-0.009750103,0.00076696835 +30936000,mag,0.0010598362,-0.20451908,0.43895745 +30940000,imu,0.10116565,-0.4540748,-9.969215,-0.012524621,-0.007786681,-0.0013805226 +30944000,imu,0.10325922,-0.41281697,-9.963446,-0.010566538,-0.010935527,-0.0032041941 +30948000,imu,0.10583685,-0.39041674,-9.944856,-0.01126274,-0.011375405,-0.003113843 +30948000,mag,0.0026766662,-0.20481871,0.43754104 +30952000,imu,0.1075124,-0.39339268,-9.946508,-0.013396599,-0.01324834,-0.0045236237 +30956000,imu,0.10980116,-0.41044277,-9.92222,-0.013727725,-0.014601689,-0.0013222724 +30956000,mag,-0.002773458,-0.20075257,0.4341934 +30960000,imu,0.060463168,-0.41558552,-9.914433,-0.012993513,-0.011554834,-0.0010986585 +30964000,imu,0.04892856,-0.39911196,-9.984743,-0.013858756,-0.010955962,-0.0029988 +30968000,mag,-0.0032973732,-0.20280465,0.43766978 +30968000,imu,0.07627768,-0.40642223,-9.970692,-0.01580146,-0.0125318505,-0.0033444886 +30972000,imu,0.10357431,-0.42399856,-9.939929,-0.01509789,-0.013971347,-0.0036254623 +30976000,imu,0.089566216,-0.4049506,-9.941647,-0.013007646,-0.012552544,-0.0010266344 +30980000,imu,0.07460437,-0.4026516,-9.957884,-0.012223125,-0.010761244,-0.00086560135 +30984000,imu,0.08521527,-0.44144392,-9.964354,-0.014127369,-0.012733521,-0.0009114313 +30984000,baro,490.34702 +30984000,mag,0.0021210823,-0.19711143,0.43339613 +30988000,imu,0.095540285,-0.44353858,-9.949598,-0.0146722235,-0.012153273,-0.00057945313 +30992000,imu,0.12550473,-0.43849733,-9.969034,-0.01531148,-0.0077287424,-0.0017507587 +30996000,imu,0.10804466,-0.4624089,-9.982563,-0.012884729,-0.0057378244,-0.0021649997 +30996000,mag,0.0043879347,-0.20261152,0.43480197 +31000000,imu,0.06118616,-0.45346332,-9.965581,-0.012951918,-0.0038168123,-0.003417993 +31004000,imu,0.07475093,-0.4138302,-9.9608,-0.013436488,-0.005632346,-0.000577673 +31008000,imu,0.14137974,-0.40786618,-9.96249,-0.012965277,-0.007986103,0.0012399585 +31008000,mag,-0.001463812,-0.20551409,0.4371685 +31012000,imu,0.1000037,-0.39741018,-9.967663,-0.0148672145,-0.0073873303,0.0008907605 +31016000,imu,0.02518368,-0.40052164,-9.988104,-0.012841306,-0.0071711834,-0.0018226072 +31020000,imu,0.038254626,-0.4147055,-9.995075,-0.013410808,-0.007716929,-0.0030139436 +31020000,mag,-9.10075e-05,-0.20005403,0.44075465 +31024000,imu,0.054874495,-0.3885424,-9.996395,-0.015398797,-0.010630931,-0.0017539986 +31028000,mag,0.000984069,-0.20216976,0.43563464 +31028000,imu,0.084514916,-0.40489882,-9.993424,-0.015034701,-0.013125272,-0.0012120531 +31032000,imu,0.08753692,-0.4168183,-9.984707,-0.014049292,-0.014195959,-0.0021658456 +31036000,imu,0.08410369,-0.39802623,-9.98604,-0.014642639,-0.012050562,-0.0022985328 +31040000,imu,0.08115202,-0.41854042,-9.978418,-0.011717804,-0.014531157,-0.0020395345 +31044000,imu,0.07015172,-0.434038,-9.97847,-0.008018086,-0.015588575,-0.0038444337 +31044000,mag,-0.00018887455,-0.19983408,0.4310446 +31048000,imu,0.06081706,-0.42505437,-9.990141,-0.007495516,-0.0117345145,-0.0025578805 +31052000,imu,0.10089212,-0.42675686,-9.986554,-0.008857183,-0.010695404,-0.0032078389 +31052000,gps,490806.0,85455411.0,473976434.0,-1.91,-0.94,0.63 +31056000,mag,-0.0062363227,-0.20195693,0.43696237 +31056000,imu,0.13026749,-0.41661072,-9.9961,-0.011405204,-0.011041299,-0.002303606 +31056000,baro,490.2625 +31060000,imu,0.10274558,-0.40384585,-9.994594,-0.011883987,-0.0112005975,-0.0009278563 +31063999,imu,0.09208082,-0.4186044,-9.976446,-0.01294838,-0.010492182,-0.0016303273 +31068000,imu,0.06980045,-0.392532,-9.991577,-0.013606053,-0.010489087,-0.002689278 +31068000,mag,0.0012219077,-0.20553944,0.4355675 +31072000,imu,0.097307846,-0.3797205,-9.967933,-0.012241878,-0.011332613,-0.0018257363 +31076000,imu,0.09947088,-0.41682923,-9.979546,-0.011550454,-0.012279213,0.00021201736 +31080000,mag,0.0005136105,-0.20415534,0.43483087 +31080000,imu,0.06892579,-0.43361977,-10.002622,-0.0118852,-0.015619673,-0.0009880728 +31084000,imu,0.087466866,-0.41549265,-9.978553,-0.012720272,-0.013463382,0.0042029102 +31088000,imu,0.07427624,-0.38900277,-9.971835,-0.012747973,-0.008999441,0.0028498091 +31091999,imu,0.067931354,-0.4136029,-9.956076,-0.012575916,-0.010519445,-0.0030298955 +31091999,mag,0.0054575503,-0.20726511,0.43510538 +31096000,imu,0.07846285,-0.40961725,-9.965458,-0.01201337,-0.011175007,-0.00020861994 +31100000,imu,0.086117014,-0.38294044,-9.984872,-0.010782537,-0.0105425045,-0.00049346406 +31103999,imu,0.09781964,-0.40773657,-9.978119,-0.0105351955,-0.011809193,0.00058027345 +31103999,mag,-0.0019131019,-0.19641076,0.42667732 +31108000,imu,0.08918889,-0.37927333,-9.972633,-0.010688598,-0.0130685065,0.0022548733 +31112000,imu,0.08698426,-0.35752043,-9.973813,-0.008860399,-0.008410752,-3.818617e-06 +31115999,imu,0.07472836,-0.394135,-9.973341,-0.009340202,-0.0069264146,-0.00014869543 +31115999,mag,-0.0031972502,-0.20468433,0.4410206 +31120000,imu,0.04367754,-0.4160226,-9.951684,-0.0099873785,-0.0070204753,-0.00021107604 +31124000,imu,0.06815419,-0.40373164,-9.94202,-0.010461899,-0.0058023753,4.2603122e-05 +31127999,mag,0.0045137526,-0.19999018,0.4360134 +31127999,imu,0.102055274,-0.40636814,-9.922615,-0.008890165,-0.0049405685,-0.0007606524 +31127999,baro,490.30478 +31132000,imu,0.07916173,-0.4272912,-9.921055,-0.009407981,-0.0059025935,-0.0027828764 +31136000,imu,0.059720084,-0.3961994,-9.966101,-0.012224391,-0.007117107,-0.0020887025 +31140000,imu,0.06723218,-0.3935257,-9.9781275,-0.0108916,-0.006537486,-0.0020969252 +31140000,mag,0.0054831062,-0.20804729,0.43016678 +31144000,imu,0.07467183,-0.41715926,-9.959549,-0.010792926,-0.008484872,0.003257603 +31148000,imu,0.057781026,-0.42109215,-9.946802,-0.009480765,-0.009557204,0.0029257466 +31148000,mag,-0.003818359,-0.20770825,0.43807644 +31152000,imu,0.05172076,-0.39704162,-9.945366,-0.0074788732,-0.009117195,-0.0035490636 +31155999,imu,0.09164694,-0.37246546,-9.91976,-0.008606356,-0.010295294,-0.000925021 +31160000,imu,0.09138568,-0.39336312,-9.909191,-0.009892716,-0.010830242,-0.0013762525 +31164000,imu,0.06806241,-0.43703306,-9.938868,-0.011376062,-0.0067109773,-0.001804217 +31164000,mag,0.0046436596,-0.2037769,0.43388858 +31167999,imu,0.098233074,-0.42225528,-9.914103,-0.01033579,-0.0077299634,-1.9430938e-05 +31172000,imu,0.07924968,-0.40330327,-9.904806,-0.008143608,-0.009871363,-0.0014816788 +31176000,mag,-0.00020170596,-0.20819992,0.43654177 +31176000,imu,0.05580449,-0.4064628,-9.935906,-0.009381723,-0.008965657,-0.0015433251 +31179999,imu,0.062459383,-0.3953994,-9.910807,-0.0077150567,-0.0077502904,-0.003104917 +31184000,imu,0.059315603,-0.39715186,-9.9071455,-0.009085765,-0.009243186,-0.004433649 +31188000,imu,0.08963952,-0.41637054,-9.969439,-0.01163974,-0.014222499,-0.0010190638 +31188000,mag,-0.00023250215,-0.20293593,0.43424162 +31191999,imu,0.07465268,-0.39210534,-9.943995,-0.010368758,-0.011243898,-0.0018043605 +31196000,imu,0.06649285,-0.36939454,-9.894583,-0.0077799764,-0.0065592267,-0.0046073054 +31200000,imu,0.10936993,-0.42630744,-9.885043,-0.0056928718,-0.008042146,-0.003286943 +31200000,baro,490.1874 +31200000,mag,-0.0009897352,-0.19870196,0.43385297 +31204000,imu,0.12394086,-0.42995164,-9.86758,-0.007227456,-0.009044082,-0.0028347059 +31208000,landed,0.0 +31208000,imu,0.13562956,-0.40274194,-9.905273,-0.010063945,-0.010965029,-0.003778382 +31212000,mag,0.0061622555,-0.20659067,0.4331445 +31212000,imu,0.09962841,-0.42261702,-9.8773575,-0.008932381,-0.012848742,-0.0037768807 +31216000,imu,0.0729032,-0.41539133,-9.823682,-0.011659843,-0.012009699,-0.0033020298 +31219999,imu,0.08935841,-0.40647733,-9.848414,-0.01332767,-0.009569807,-0.001358089 +31219999,mag,0.004241632,-0.20585474,0.43612173 +31224000,imu,0.08137446,-0.40451813,-9.86031,-0.012070102,-0.009549451,-0.00045943772 +31228000,imu,0.08155784,-0.37721866,-9.864735,-0.013655131,-0.012861722,-0.0009219145 +31231999,imu,0.09091528,-0.3864538,-9.873894,-0.01741581,-0.012761777,0.0013523509 +31236000,imu,0.08189833,-0.4406291,-9.843178,-0.018261291,-0.010841805,0.003856919 +31236000,mag,0.0021922018,-0.19907498,0.43334216 +31240000,imu,0.08953507,-0.42436048,-9.831388,-0.014319808,-0.0084334165,0.002257812 +31243999,imu,0.124474846,-0.382313,-9.830517,-0.01376918,-0.00820135,0.00080384436 +31248000,mag,-0.0010553226,-0.20636818,0.43526855 +31248000,imu,0.11285903,-0.4096134,-9.810757,-0.013772992,-0.008665327,0.0008526097 +31252000,imu,0.105481386,-0.4154287,-9.803583,-0.015709618,-0.01041097,0.0006418385 +31255999,imu,0.10283119,-0.42137736,-9.835535,-0.015194415,-0.010218979,-0.0011211573 +31260000,imu,0.071399845,-0.45104235,-9.875547,-0.013800622,-0.007866578,-0.0015628608 +31260000,mag,0.006303809,-0.20236634,0.43263492 +31264000,imu,0.081029326,-0.43186313,-9.856255,-0.015085893,-0.010999162,-0.0008812972 +31268000,imu,0.10384162,-0.40527886,-9.827824,-0.015839392,-0.010677676,-0.0010695495 +31272000,mag,0.0005390801,-0.20495436,0.43289018 +31272000,baro,490.11697 +31272000,imu,0.101691574,-0.40504742,-9.823856,-0.015718807,-0.010366063,-0.0009889907 +31276000,imu,0.08214624,-0.40276226,-9.813954,-0.013157167,-0.0127049405,-0.004137908 +31280000,imu,0.077500306,-0.41461903,-9.829173,-0.012330355,-0.012969094,-0.0049625835 +31283999,mag,-0.0037961463,-0.2048989,0.43649957 +31283999,imu,0.08548595,-0.40381175,-9.822809,-0.015798373,-0.013027107,-0.0020863796 +31288000,imu,0.08476815,-0.3823998,-9.825264,-0.015754316,-0.010217918,-0.00014255765 +31292000,imu,0.05325398,-0.38994586,-9.82183,-0.014487139,-0.010840306,-0.0012360608 +31295999,imu,0.039306723,-0.4008116,-9.811735,-0.016553916,-0.011581477,-0.0021706426 +31295999,mag,-0.0011176325,-0.20657372,0.42943525 +31300000,imu,0.07862535,-0.40473682,-9.844716,-0.01945957,-0.008942256,-0.0012443033 +31304000,imu,0.06836149,-0.41345,-9.854851,-0.019804062,-0.008002919,0.00082826696 +31307999,mag,0.00088664505,-0.20804256,0.43493092 +31307999,imu,0.057836108,-0.428146,-9.848285,-0.015862806,-0.011131398,0.0015046606 +31312000,imu,0.059738673,-0.4169497,-9.867895,-0.013640358,-0.011793634,-0.001415216 +31316000,imu,0.054904282,-0.4048304,-9.873882,-0.012191228,-0.0072395774,-0.003518886 +31319999,imu,0.07179782,-0.4010713,-9.849987,-0.015323427,-0.009797432,-0.0032179512 +31319999,mag,0.0026604338,-0.20774937,0.43372324 +31324000,imu,0.110599816,-0.3967428,-9.862902,-0.016769268,-0.011065563,0.0007617976 +31328000,imu,0.10262861,-0.37985837,-9.89278,-0.017633745,-0.009243202,0.0015637265 +31332000,imu,0.07487841,-0.37967876,-9.890497,-0.018321566,-0.011254598,-0.0016180965 +31332000,mag,0.00012519318,-0.20209509,0.4329501 +31336000,imu,0.077995,-0.42032054,-9.905968,-0.015491973,-0.010689971,-0.0058479602 +31340000,imu,0.09030704,-0.43842113,-9.91157,-0.015314105,-0.009471912,-0.0043835975 +31340000,mag,0.0020498822,-0.20674235,0.43313736 +31344000,imu,0.109129205,-0.40629196,-9.931517,-0.015805067,-0.010706737,-0.0007396272 +31344000,baro,490.03717 +31347999,imu,0.07804109,-0.3647991,-9.936292,-0.016234633,-0.010228265,-0.0033775766 +31352000,imu,0.06633175,-0.3583305,-9.923383,-0.013849383,-0.010785799,-0.0006986107 +31356000,mag,0.0012336815,-0.20414808,0.4338447 +31356000,imu,0.086660504,-0.38772452,-9.934435,-0.015405722,-0.01433309,0.005109164 +31359999,imu,0.101705365,-0.39768893,-9.923302,-0.013191201,-0.014426417,0.0035555111 +31364000,imu,0.082589656,-0.38199356,-9.944114,-0.0096652685,-0.01341495,0.00039152364 +31368000,imu,0.076189205,-0.39297196,-9.962137,-0.012928787,-0.011768124,0.00089607044 +31368000,mag,0.0030838917,-0.2079698,0.4371624 +31371999,imu,0.10308783,-0.42342487,-9.957018,-0.009486382,-0.01244872,5.8693262e-05 +31376000,imu,0.086346656,-0.41179857,-9.9469185,-0.0076897433,-0.014184608,-0.00018969893 +31380000,mag,0.004619424,-0.21370992,0.43981287 +31380000,imu,0.07076515,-0.3952155,-9.922142,-0.0112629505,-0.012909874,-0.001998917 +31383999,imu,0.084480554,-0.39247352,-9.893366,-0.013608714,-0.014073737,-0.0040791384 +31388000,mag,-0.0028558653,-0.2015805,0.43366787 +31388000,imu,0.085411355,-0.38534164,-9.922581,-0.017279712,-0.0147224385,0.00054191257 +31392000,imu,0.08437111,-0.39995983,-9.948107,-0.016437713,-0.015303265,0.0018178883 +31396000,imu,0.093748644,-0.37325442,-9.929232,-0.015211427,-0.01548741,0.0006664899 +31400000,imu,0.06978633,-0.36181396,-9.923338,-0.017569276,-0.017351748,-0.0003214494 +31404000,mag,0.007442955,-0.20487884,0.43829888 +31404000,imu,0.07284665,-0.4007267,-9.925032,-0.015961047,-0.017903456,0.0006934787 +31408000,imu,0.07656273,-0.39912468,-9.938388,-0.018651128,-0.014828096,0.0013372152 +31411999,imu,0.06188655,-0.37720555,-9.9086075,-0.019947559,-0.013730885,-0.0016415134 +31416000,mag,0.0019321755,-0.20310834,0.43500873 +31416000,imu,0.05091593,-0.38870347,-9.909449,-0.017225863,-0.014552101,-0.00023507197 +31416000,baro,490.06064 +31420000,imu,0.049535196,-0.37375262,-9.934555,-0.017229835,-0.018625997,-0.0027053487 +31423999,imu,0.056883782,-0.39084673,-9.916217,-0.018429339,-0.017861178,-0.0025787083 +31428000,mag,0.0034124935,-0.20031051,0.4311386 +31428000,imu,0.052844726,-0.43009531,-9.928139,-0.01638231,-0.015910977,-0.0007284657 +31432000,imu,0.10076704,-0.40127018,-9.930618,-0.0134343775,-0.016362539,0.0006629681 +31435999,imu,0.08345905,-0.38896608,-9.915909,-0.012617693,-0.016322205,0.002504534 +31440000,imu,0.040997412,-0.4088617,-9.919081,-0.010718546,-0.015746104,0.0019961873 +31440000,mag,-0.0075128,-0.20547304,0.4356292 +31444000,imu,0.05905948,-0.39355505,-9.917597,-0.012321059,-0.0127502475,0.0023043687 +31447999,imu,0.0436825,-0.35019758,-9.942677,-0.012424892,-0.010198637,0.0015844423 +31447999,gps,490543.0,85455363.0,473976367.0,-1.81,-0.88,0.63 +31452000,imu,0.050227255,-0.36339238,-9.942379,-0.010871215,-0.011234315,0.00010921101 +31452000,mag,-0.00064358086,-0.20016225,0.431898 +31456000,imu,0.087106355,-0.4108868,-9.873176,-0.010420153,-0.012301724,0.0016803681 +31460000,imu,0.07760645,-0.3980986,-9.85927,-0.006600584,-0.009577029,0.002499111 +31464000,imu,0.0861062,-0.3815374,-9.895705,-0.009355888,-0.007731529,0.0010277834 +31464000,mag,-0.003323949,-0.20653683,0.43402773 +31468000,imu,0.08509444,-0.4000197,-9.907677,-0.013520966,-0.007964876,0.0015501449 +31472000,imu,0.070172064,-0.39907855,-9.90289,-0.010527425,-0.0046779863,0.0005175689 +31475999,mag,-0.0019050094,-0.20215382,0.438145 +31475999,imu,0.06334828,-0.38916248,-9.906452,-0.009800286,-0.0038330378,-0.0025767183 +31480000,imu,0.05285564,-0.36823845,-9.931904,-0.011004147,-0.0056073195,0.0003287643 +31484000,imu,0.075984746,-0.3551801,-9.91997,-0.015196458,-0.0062322104,0.003268618 +31487999,mag,0.0073817256,-0.19723268,0.4323777 +31487999,imu,0.060060102,-0.3578656,-9.912437,-0.017603306,-0.0068315775,0.00038383188 +31487999,baro,489.9902 +31492000,imu,0.06078365,-0.3563719,-9.930325,-0.01554617,-0.007663171,0.0010138922 +31496000,imu,0.09206094,-0.3789982,-9.890423,-0.014123695,-0.011191083,0.001441657 +31499999,imu,0.08498947,-0.38668227,-9.87977,-0.017373206,-0.0074920966,0.0015397654 +31499999,mag,0.0034676786,-0.20431998,0.43237472 +31504000,imu,0.05840467,-0.38089246,-9.912758,-0.0190634,-0.007798491,-0.00070736813 +31508000,imu,0.06919699,-0.35877067,-9.912209,-0.01569385,-0.012772468,0.0016022119 +31512000,imu,0.09747301,-0.35327673,-9.899878,-0.013211098,-0.009813563,0.002591684 +31512000,mag,0.0018473115,-0.2074651,0.43083626 +31516000,imu,0.08673111,-0.3905446,-9.90596,-0.009754589,-0.009351318,-0.00071913353 +31520000,imu,0.10129417,-0.38800752,-9.935482,-0.00944333,-0.010257706,-0.0025147065 +31524000,mag,0.0048581106,-0.19862585,0.4313627 +31524000,imu,0.11815983,-0.35530505,-9.929995,-0.01258674,-0.007649394,-0.0043903016 +31528000,imu,0.099483415,-0.3367333,-9.9123,-0.011230024,-0.006058541,-0.00409282 +31532000,imu,0.07148253,-0.3413473,-9.92963,-0.011724849,-0.0071470123,-0.0035798056 +31536000,imu,0.0658798,-0.38794297,-9.922419,-0.010546664,-0.011017514,-0.0017463847 +31536000,mag,0.004881296,-0.20727628,0.4356571 +31539999,imu,0.08505069,-0.39978713,-9.893565,-0.0054550027,-0.0122377835,-0.002077247 +31544000,imu,0.061354548,-0.3922288,-9.897875,-0.007983824,-0.012893493,-0.001828854 +31548000,mag,0.0023929002,-0.19946161,0.4365126 +31548000,imu,0.05321658,-0.3813675,-9.926395,-0.008994016,-0.013142087,-0.0013322617 +31551999,imu,0.07669422,-0.38052207,-9.931892,-0.006332485,-0.010057724,0.0012136719 +31556000,imu,0.088921495,-0.41377413,-9.93763,-0.008826581,-0.010598942,0.0018238743 +31560000,mag,0.0039969417,-0.2005645,0.4362638 +31560000,baro,489.9104 +31560000,imu,0.0797668,-0.40091217,-9.937381,-0.009079983,-0.011321135,-0.0012572241 +31563999,imu,0.08028668,-0.3976091,-9.916838,-0.005808206,-0.007975691,-0.00051136076 +31568000,imu,0.095024064,-0.3400609,-9.8896885,-0.0045169373,-0.007836837,0.0015457381 +31572000,imu,0.10148536,-0.3259228,-9.858054,-0.006906054,-0.009686833,0.001222352 +31572000,mag,-0.004323745,-0.20952632,0.4359201 +31576000,imu,0.08953278,-0.38983926,-9.856349,-0.011408326,-0.010125527,0.0020274087 +31580000,imu,0.075799234,-0.424223,-9.870981,-0.01128274,-0.011409074,0.0074687107 +31584000,imu,0.09890382,-0.39869076,-9.877813,-0.0102061415,-0.011525628,0.0048999344 +31584000,mag,0.0054740077,-0.20242201,0.4335693 +31588000,imu,0.07898678,-0.3560748,-9.89072,-0.010718262,-0.011214963,-0.00039173182 +31591999,imu,0.057988893,-0.35634193,-9.89595,-0.008791882,-0.012649027,0.00083646236 +31596000,imu,0.057965696,-0.33746374,-9.858402,-0.008071292,-0.012543013,0.0024824515 +31596000,mag,0.0039054186,-0.21267249,0.43572256 +31600000,imu,0.059730507,-0.345034,-9.814331,-0.008538724,-0.012145741,0.0018103743 +31603999,imu,0.052100323,-0.36791697,-9.841745,-0.011200719,-0.013091448,-0.00059989793 +31608000,imu,0.049119733,-0.3377085,-9.848607,-0.0132957315,-0.0084214145,-0.0010912305 +31608000,mag,-0.004188707,-0.20501314,0.43282062 +31612000,imu,0.04056131,-0.3613814,-9.79768,-0.013719448,-0.007459888,0.001367843 +31615999,imu,0.057118785,-0.37599644,-9.807753,-0.01346739,-0.010537198,0.0017653906 +31620000,imu,0.07080201,-0.3449369,-9.806188,-0.015667917,-0.01177917,-0.00021793548 +31620000,mag,0.0046520527,-0.20396115,0.43919513 +31624000,imu,0.04120384,-0.3637299,-9.795731,-0.01782945,-0.010965547,0.00030223967 +31627999,imu,0.07404325,-0.36144996,-9.843552,-0.017907523,-0.009139485,0.0009452601 +31632000,imu,0.11030195,-0.35923755,-9.835152,-0.017491674,-0.009545432,0.0018049993 +31632000,baro,489.8916 +31632000,mag,0.008235221,-0.20497395,0.4298333 +31636000,imu,0.078288965,-0.37353623,-9.802278,-0.017051177,-0.010019217,0.0024206298 +31640000,imu,0.04924706,-0.3665609,-9.808456,-0.017362708,-0.012014396,-0.00084332464 +31644000,mag,0.0018860631,-0.20687237,0.43447003 +31644000,imu,0.085910514,-0.34829497,-9.811977,-0.017721172,-0.0117254695,-0.0009381656 +31648000,imu,0.07304278,-0.31838876,-9.8068695,-0.016229393,-0.013262878,0.0040151128 +31652000,mag,-0.0006021659,-0.20579419,0.43694198 +31652000,imu,0.06729288,-0.30470935,-9.826426,-0.016280485,-0.015848286,0.0033799277 +31656000,imu,0.11028815,-0.3219446,-9.841057,-0.01661617,-0.0147943385,0.0010589261 +31660000,imu,0.09212877,-0.34708118,-9.807678,-0.017793758,-0.01539167,-0.0006172931 +31664000,imu,0.06447185,-0.33635125,-9.800375,-0.01759127,-0.012489466,-0.0014652029 +31667999,mag,0.0010548929,-0.21208926,0.43011865 +31667999,imu,0.04365014,-0.3277756,-9.798774,-0.014178688,-0.013413547,0.0011014945 +31672000,imu,0.039854273,-0.34582323,-9.801899,-0.016323108,-0.013912259,0.0028131024 +31676000,imu,0.05865431,-0.35554826,-9.830059,-0.01855173,-0.009929468,0.0043471227 +31679999,mag,0.0052087195,-0.20600209,0.43208718 +31679999,imu,0.06673007,-0.36357188,-9.835189,-0.017674383,-0.014477512,0.0018032896 +31684000,imu,0.07799305,-0.33513215,-9.855801,-0.017960533,-0.016093092,-0.0050693136 +31688000,imu,0.08524045,-0.31568742,-9.812113,-0.020965785,-0.012574482,-0.00037387732 +31691999,mag,0.00195392,-0.20530804,0.43149155 +31691999,imu,0.044898733,-0.33357227,-9.778347,-0.023076983,-0.014090166,0.0066843806 +31696000,imu,0.058549557,-0.33375376,-9.820305,-0.020836655,-0.0171605,0.0017512107 +31700000,imu,0.097056344,-0.31792864,-9.830177,-0.02132073,-0.014423753,-0.0013457539 +31704000,imu,0.07940307,-0.36734557,-9.835613,-0.020717219,-0.009953376,-0.0002767318 +31704000,baro,489.88223 +31704000,mag,-0.00030034862,-0.21002184,0.44395894 +31708000,imu,0.06601379,-0.3901546,-9.826643,-0.01926823,-0.011441028,-0.002028698 +31712000,imu,0.054405168,-0.36266246,-9.8136015,-0.021105744,-0.014193895,-0.0023759604 +31716000,mag,0.010850403,-0.20732379,0.43143734 +31716000,imu,0.05704043,-0.32526827,-9.851833,-0.01861374,-0.013309249,-0.00083930674 +31719999,imu,0.0683455,-0.3115468,-9.853274,-0.019259412,-0.012323977,-0.0010957578 +31724000,imu,0.05219911,-0.35464293,-9.835817,-0.016336422,-0.011913052,-0.00041163593 +31728000,imu,0.025293179,-0.3924524,-9.865028,-0.013666751,-0.014006551,0.0008859727 +31728000,mag,0.008543831,-0.20007288,0.43884984 +31731999,imu,0.045962386,-0.38016957,-9.867191,-0.015382626,-0.012706174,-0.0010885672 +31736000,imu,0.06373751,-0.36264855,-9.864391,-0.016694583,-0.011783596,0.00027309684 +31740000,mag,0.0037750453,-0.20236106,0.43120804 +31740000,imu,0.050001677,-0.37004346,-9.906118,-0.018554054,-0.013239739,-0.0016896082 +31743999,imu,0.056755006,-0.35768488,-9.910693,-0.017232781,-0.011556008,-0.005024462 +31748000,imu,0.06462115,-0.3543419,-9.878764,-0.016882483,-0.011243667,-0.0010804451 +31752000,imu,0.07048678,-0.34712267,-9.861428,-0.018299906,-0.009118273,-0.0010704806 +31752000,mag,-0.0052593364,-0.20455913,0.43589675 +31755999,imu,0.084365875,-0.33036575,-9.8656435,-0.016854387,-0.010555055,0.002766951 +31760000,imu,0.09330429,-0.32391363,-9.886156,-0.016560832,-0.015046112,0.0033330698 +31764000,imu,0.08622541,-0.3365484,-9.895834,-0.018920219,-0.013452669,-0.00045315162 +31764000,mag,0.005349113,-0.20236857,0.43039733 +31768000,imu,0.056943003,-0.3445221,-9.91526,-0.017355427,-0.010385007,0.00014573349 +31772000,imu,0.048862673,-0.32555437,-9.891964,-0.016587831,-0.010252522,0.00013065407 +31776000,baro,489.8071 +31776000,imu,0.044007733,-0.33796763,-9.906605,-0.017113864,-0.010964326,0.00061613554 +31776000,mag,0.0027470065,-0.19846566,0.43574825 +31780000,imu,0.06771156,-0.32942972,-9.937686,-0.016490174,-0.015289343,-0.0009562909 +31783999,imu,0.09860029,-0.3395298,-9.933857,-0.014724928,-0.0143290665,-0.0032341394 +31788000,imu,0.10905182,-0.3791985,-9.934999,-0.014401845,-0.010261173,-0.0006944732 +31788000,mag,0.0035018865,-0.20996298,0.43939105 +31792000,imu,0.10546845,-0.3602985,-9.896707,-0.017971313,-0.012510097,-0.00011886704 +31795999,imu,0.09963764,-0.34511405,-9.921565,-0.019505786,-0.011919687,-0.0023947319 +31800000,mag,0.004071386,-0.20776302,0.43574476 +31800000,imu,0.09676924,-0.36709777,-9.955097,-0.017980404,-0.011053113,-0.00048619168 +31804000,imu,0.09826307,-0.3853214,-9.926179,-0.017176602,-0.0123303505,0.00070303224 +31807999,imu,0.083489895,-0.36608863,-9.916597,-0.017969074,-0.014052808,-0.001469713 +31812000,imu,0.059810787,-0.36115623,-9.912111,-0.017272642,-0.013613577,-0.0033452543 +31812000,mag,0.008541623,-0.20734847,0.43009076 +31816000,imu,0.048534006,-0.33419594,-9.909851,-0.013988684,-0.0138974795,-0.0012804201 +31819999,imu,0.04476267,-0.3378294,-9.918642,-0.016152002,-0.011874088,0.00056829344 +31824000,imu,0.086116605,-0.34362757,-9.94445,-0.020031316,-0.010737184,-0.0010129038 +31824000,mag,-0.0045154896,-0.20610869,0.43569672 +31828000,imu,0.07377455,-0.354093,-9.942383,-0.018555423,-0.013121384,-0.0016079176 +31832000,imu,0.057470113,-0.3697576,-9.930908,-0.015479835,-0.012711156,-0.0017714998 +31836000,mag,0.0021312833,-0.20449159,0.4373913 +31836000,imu,0.077051625,-0.32750332,-9.893543,-0.016839,-0.0135532105,-0.0009846924 +31840000,imu,0.083973914,-0.30733216,-9.893203,-0.017616095,-0.012125266,0.0014602417 +31844000,mag,0.007178566,-0.20836553,0.42994982 +31844000,imu,0.048889235,-0.3354444,-9.917322,-0.018060038,-0.010723278,-0.0010507095 +31847999,baro,489.76953 +31847999,imu,0.02366507,-0.38074923,-9.884573,-0.017720407,-0.01293876,-0.0008924948 +31852000,gps,490278.0,85455317.0,473976305.0,-1.67,-0.84,0.64 +31852000,imu,0.046190266,-0.34424382,-9.912385,-0.014038038,-0.012138876,0.00068114983 +31856000,imu,0.037218213,-0.31428832,-9.943874,-0.015072139,-0.010817967,-0.0013778845 +31859999,mag,0.000341066,-0.20294522,0.4380199 +31859999,imu,0.06341943,-0.33487046,-9.942137,-0.013039693,-0.012678912,-0.004588269 +31864000,imu,0.09641474,-0.34054863,-9.919846,-0.0122647,-0.015483312,-0.0008895895 +31868000,imu,0.105837665,-0.35296166,-9.899155,-0.015463403,-0.016733842,0.0022945248 +31871999,mag,-0.0009899327,-0.19960745,0.4341274 +31871999,imu,0.09480956,-0.35912752,-9.899673,-0.016144898,-0.011557205,-0.0012055646 +31876000,imu,0.088132694,-0.34955472,-9.887075,-0.0142572,-0.0101424595,-0.0016961187 +31880000,imu,0.07634841,-0.36180934,-9.939193,-0.01019127,-0.013789216,-0.001054199 +31883999,mag,-0.0025757218,-0.20690908,0.43181896 +31883999,imu,0.04653862,-0.35984784,-9.954927,-0.011995302,-0.014676695,-7.218926e-05 +31888000,imu,0.053370386,-0.32843873,-9.900563,-0.012900119,-0.01216567,0.00019847618 +31892000,imu,0.042323254,-0.32521832,-9.888552,-0.010450082,-0.0135732535,-0.001563096 +31896000,mag,0.002286397,-0.20496565,0.43631446 +31896000,imu,0.05234114,-0.3269085,-9.884774,-0.010388351,-0.015205828,-0.0038043857 +31900000,imu,0.0614832,-0.31271884,-9.863628,-0.010347438,-0.010159014,-0.0039729043 +31904000,imu,0.03678137,-0.31710216,-9.857142,-0.012333529,-0.007892381,-0.0017506038 +31908000,imu,0.03858367,-0.33274242,-9.895874,-0.014499886,-0.010481954,-0.00093624735 +31908000,mag,0.0006442253,-0.20620923,0.43766952 +31911999,imu,0.056702577,-0.3397097,-9.951286,-0.014274572,-0.012545449,-0.00091036037 +31916000,imu,0.044943728,-0.35497606,-9.943832,-0.012943091,-0.013591921,-0.001483859 +31920000,imu,0.022375844,-0.36367851,-9.9023,-0.010075894,-0.013267661,-0.0033331707 +31920000,baro,489.73666 +31920000,mag,0.006532644,-0.20774293,0.43344292 +31923999,imu,0.03242244,-0.34088367,-9.9156,-0.010185481,-0.009791065,-0.0005380461 +31928000,imu,0.056165814,-0.3289044,-9.940809,-0.013267509,-0.0062855966,0.0026511408 +31932000,imu,0.06476305,-0.32126826,-9.935046,-0.0160796,-0.00880113,0.00018835449 +31932000,mag,0.009914144,-0.20368293,0.43919903 +31935999,imu,0.06166806,-0.3280825,-9.916187,-0.015069983,-0.011277743,-0.000117160176 +31940000,mag,0.0018519221,-0.2097015,0.43355873 +31940000,imu,0.08912405,-0.3329595,-9.928852,-0.010962679,-0.008890548,0.0024589198 +31944000,imu,0.09564498,-0.35833216,-9.929435,-0.011718903,-0.0064115427,0.0021969492 +31947999,imu,0.06052326,-0.35450682,-9.921774,-0.012304126,-0.008407277,0.0017511442 +31952000,imu,0.039283253,-0.33155406,-9.945173,-0.011939925,-0.012446789,0.002549969 +31956000,mag,0.0002147441,-0.20615456,0.4390979 +31956000,imu,0.024646115,-0.32082897,-9.959991,-0.009981873,-0.009242859,0.002881771 +31960000,imu,0.017322,-0.31454563,-9.958063,-0.011503163,-0.0076064426,0.003219778 +31964000,mag,-0.0004080925,-0.21061829,0.4322406 +31964000,imu,0.035863735,-0.35609198,-9.933178,-0.013288495,-0.009020887,0.0051443093 +31968000,imu,0.03429265,-0.3827314,-9.888435,-0.012464877,-0.0090570515,0.0010387657 +31972000,imu,0.036513668,-0.36413944,-9.878304,-0.014869891,-0.00947015,-0.0003672868 +31975999,imu,0.05698098,-0.35742375,-9.879803,-0.017742721,-0.011588772,0.003461106 +31980000,mag,0.005896423,-0.2104085,0.43121845 +31980000,imu,0.04090166,-0.32223174,-9.862851,-0.014430614,-0.013461078,0.0020296534 +31984000,imu,0.04917286,-0.27214357,-9.8733015,-0.010689739,-0.011605801,0.0013644961 +31987999,imu,0.07720536,-0.29658747,-9.883047,-0.013156279,-0.011064534,0.0006272156 +31992000,mag,0.006010731,-0.19795454,0.43456337 +31992000,baro,489.732 +31992000,imu,0.057248224,-0.29270416,-9.862957,-0.015403984,-0.010614712,0.0027824887 +31996000,imu,0.035426028,-0.30062222,-9.86351,-0.016740514,-0.012953083,0.0037097302 +31999999,imu,0.043599606,-0.33580244,-9.856411,-0.014834594,-0.015533558,0.0022569941 +32004000,imu,0.07642026,-0.32102215,-9.843642,-0.013275516,-0.011153468,-0.0005998494 +32004000,mag,0.003782871,-0.20421447,0.43290725 +32008000,imu,0.070458576,-0.3071126,-9.854378,-0.014692209,-0.011895286,-0.0013222647 +32012000,imu,0.039424777,-0.31531024,-9.847155,-0.017163383,-0.011727182,0.0022001937 +32016000,imu,0.05919908,-0.3544769,-9.855995,-0.018157762,-0.010109528,0.0012168142 +32016000,mag,0.0009162288,-0.20907176,0.43747586 +32020000,imu,0.063909456,-0.34284133,-9.821833,-0.015646163,-0.011048669,0.0011746789 +32024000,imu,0.030950643,-0.30487216,-9.77051,-0.016242342,-0.013073885,0.00111851 +32028000,mag,0.007418684,-0.20934367,0.43191198 +32028000,imu,0.052583747,-0.31501174,-9.771067,-0.015054046,-0.017266914,0.0022193627 +32032000,imu,0.06419747,-0.31795165,-9.76417,-0.01279979,-0.0151969595,0.0031134703 +32036000,imu,0.038030125,-0.3111853,-9.783752,-0.01553435,-0.015011592,0.0019279706 +32039999,mag,0.0010171086,-0.2010037,0.42726558 +32039999,imu,0.04375277,-0.30096924,-9.7929945,-0.015938416,-0.011642909,-0.00042944588 +32044000,imu,0.06707965,-0.31929952,-9.769499,-0.0144000985,-0.008650291,-0.002112432 +32048000,imu,0.06912731,-0.33578038,-9.76691,-0.015185119,-0.01359158,0.00012067453 +32048000,mag,-0.003487223,-0.20757298,0.43540356 +32051999,imu,0.06633516,-0.3125118,-9.7630005,-0.017978864,-0.014799959,0.0029250102 +32056000,imu,0.074157014,-0.31905508,-9.76952,-0.020102112,-0.015639953,0.003409862 +32060000,imu,0.02937912,-0.31856892,-9.774473,-0.017275795,-0.017095491,0.0010109564 +32063999,baro,489.67096 +32063999,imu,0.022885626,-0.29485142,-9.768011,-0.01694434,-0.013591098,0.0029705125 +32063999,mag,0.00061979936,-0.20838149,0.43503636 +32068000,imu,0.05213529,-0.3177353,-9.77298,-0.021566233,-0.011639374,0.00291148 +32072000,imu,0.050746072,-0.3141954,-9.7568035,-0.019523485,-0.009566436,-0.0010668349 +32076000,mag,0.0075243693,-0.2099507,0.42253527 +32076000,imu,0.058260478,-0.28722247,-9.747511,-0.019472545,-0.010461695,0.00061850133 +32080000,imu,0.036093038,-0.29902178,-9.777502,-0.021266082,-0.014907756,0.0022740725 +32084000,imu,0.02135624,-0.31754425,-9.809039,-0.023234654,-0.01356182,0.0036299801 +32088000,imu,0.04598659,-0.31558487,-9.800489,-0.023531746,-0.011730136,-0.0010677137 +32088000,mag,0.0011316696,-0.20544204,0.4274112 +32091999,imu,0.04563909,-0.3065898,-9.757109,-0.018189434,-0.012674159,-0.003998621 +32096000,imu,0.043016583,-0.33250195,-9.774877,-0.015775574,-0.014307952,-0.0004497472 +32100000,imu,0.047480498,-0.33799088,-9.805455,-0.019701928,-0.015361487,0.0018426019 +32100000,mag,-0.0002512066,-0.2127047,0.4343327 +32103999,imu,0.02288925,-0.318028,-9.804892,-0.022316871,-0.013177581,0.00094540464 +32108000,imu,0.0052001737,-0.30383974,-9.819461,-0.018377643,-0.011763318,-0.00092337327 +32112000,mag,0.0008845929,-0.20757037,0.43809867 +32112000,imu,0.042170886,-0.2759885,-9.820114,-0.014757532,-0.016695688,-0.0022067067 +32115999,imu,0.064808086,-0.26575375,-9.80387,-0.021091444,-0.01622339,-0.004885138 +32120000,imu,0.07201178,-0.29316968,-9.801631,-0.024301024,-0.016954405,-0.0019245615 +32124000,imu,0.024373038,-0.30382448,-9.853195,-0.020934088,-0.015091644,-0.0012533637 +32124000,mag,0.005869845,-0.2117234,0.4310339 +32127999,imu,-0.008319467,-0.30521455,-9.880865,-0.019948635,-0.012961034,-0.0022537946 +32132000,imu,0.045493796,-0.30179775,-9.881723,-0.018213017,-0.012166708,0.0019281061 +32136000,mag,0.0038638571,-0.20287727,0.43384957 +32136000,imu,0.052461516,-0.28294012,-9.873776,-0.021231847,-0.014101691,0.0034743364 +32136000,baro,489.6287 +32140000,imu,0.043390743,-0.32230288,-9.864402,-0.022974106,-0.018666126,0.0009249546 +32144000,imu,0.058875397,-0.31860065,-9.897417,-0.022255754,-0.012871752,-0.00028796055 +32148000,mag,0.004799077,-0.21287331,0.4322069 +32148000,imu,0.06322583,-0.29471263,-9.915503,-0.021148613,-0.013541261,0.00026871313 +32152000,imu,0.027805563,-0.31679803,-9.870071,-0.020802556,-0.015800348,0.0026563792 +32155999,imu,0.00013339531,-0.29459947,-9.86688,-0.019172324,-0.014897029,0.0014752194 +32160000,imu,-0.01060723,-0.30610013,-9.906956,-0.02092349,-0.014065573,0.000178241 +32160000,mag,-0.0038151501,-0.2130764,0.43178314 +32164000,imu,0.002553286,-0.32156256,-9.910578,-0.02350778,-0.013142947,-0.0010806964 +32167999,imu,0.02360794,-0.2880481,-9.902769,-0.021025801,-0.014203597,-0.002827179 +32172000,imu,0.033119865,-0.2902926,-9.895269,-0.0185794,-0.014900322,-0.0019427675 +32172000,mag,-3.053654e-05,-0.20793849,0.43617114 +32176000,imu,0.04127205,-0.29533488,-9.894841,-0.017857973,-0.014975965,0.0022459668 +32179999,imu,0.04374469,-0.30133098,-9.868866,-0.021181472,-0.016569525,0.0032299045 +32184000,imu,0.029276919,-0.31370395,-9.889656,-0.020943798,-0.016299805,0.0019497139 +32184000,mag,-0.002339207,-0.2101866,0.43470666 +32188000,imu,-0.0058730682,-0.32674718,-9.9152355,-0.01852736,-0.01359562,0.0011555176 +32191999,imu,-0.002950855,-0.3257464,-9.931406,-0.018828932,-0.015714949,-0.003419525 +32196000,imu,0.049460575,-0.30479896,-9.9661045,-0.020650852,-0.017862486,-0.0007490294 +32196000,mag,0.00707378,-0.20119403,0.43129343 +32200000,imu,0.051997803,-0.2910502,-9.947508,-0.018203503,-0.014621907,0.0042737713 +32204000,imu,0.035897546,-0.29633844,-9.9434,-0.015737915,-0.014013535,0.00312691 +32208000,mag,0.0034931602,-0.20508885,0.4294505 +32208000,baro,489.60522 +32208000,landed,0.0 +32208000,imu,0.0649556,-0.33238864,-9.95487,-0.016426103,-0.014676046,0.00060372625 +32212000,imu,0.06326563,-0.31207642,-9.943838,-0.01722138,-0.010404717,0.0018142591 +32216000,imu,0.014213863,-0.30069357,-9.933159,-0.016647086,-0.011202934,0.0037709796 +32219999,mag,0.0060056346,-0.2070993,0.43192872 +32219999,imu,0.01592179,-0.32447338,-9.943876,-0.014584706,-0.015207305,0.003433499 +32224000,imu,0.061732985,-0.29073876,-9.9484215,-0.015379702,-0.013429603,-0.00028245256 +32228000,imu,0.042678304,-0.24616075,-9.937704,-0.015066613,-0.00978553,-0.003139412 +32231999,mag,-0.0011807597,-0.21246089,0.43060443 +32231999,imu,0.051386394,-0.24310115,-9.931215,-0.012594369,-0.012162024,-0.0036401001 +32236000,imu,0.08182906,-0.2752241,-9.951218,-0.014882165,-0.010970893,-0.0023878622 +32240000,imu,0.03633123,-0.25778294,-9.951319,-0.015976427,-0.009492744,2.2057018e-05 +32243999,mag,0.006067791,-0.21484098,0.43974012 +32243999,imu,0.0069791055,-0.24569595,-9.909422,-0.01735606,-0.01448852,4.2534997e-05 +32248000,imu,0.027133636,-0.29579854,-9.88824,-0.019035785,-0.013575365,0.00064831093 +32252000,imu,0.03131537,-0.32960832,-9.8661,-0.018052788,-0.012853904,0.00026528214 +32252000,gps,490010.0,85455272.0,473976246.0,-1.53,-0.82,0.64 +32255999,imu,0.044985615,-0.2781634,-9.875802,-0.019061286,-0.014797843,0.00015806546 +32255999,mag,0.003978099,-0.20577441,0.43968916 +32260000,imu,0.075226955,-0.27329123,-9.855883,-0.017602647,-0.015441919,0.0022337302 +32264000,imu,0.088213325,-0.30839652,-9.872877,-0.015863106,-0.016660294,0.0015714333 +32268000,mag,0.003743223,-0.21190464,0.4397596 +32268000,imu,0.06750595,-0.30425677,-9.900911,-0.013949018,-0.0154369995,0.002814866 +32272000,imu,0.05259029,-0.32167932,-9.888716,-0.015592344,-0.010050075,0.00023559653 +32276000,mag,0.0027947817,-0.21215658,0.4324689 +32276000,imu,0.056194782,-0.29348382,-9.908735,-0.01752068,-0.010637325,-0.0006767667 +32280000,imu,0.04267904,-0.28723964,-9.896117,-0.019085534,-0.015206999,-0.0015445481 +32280000,baro,489.42212 +32283999,imu,0.008283522,-0.30040076,-9.888393,-0.02086234,-0.01579067,-0.0031228466 +32288000,imu,0.027677776,-0.3062123,-9.892473,-0.01713703,-0.013673873,-2.9779918e-05 +32292000,mag,0.007032544,-0.20959054,0.43360668 +32292000,imu,0.04130979,-0.2889887,-9.85033,-0.015183022,-0.011694706,-0.00018954033 +32295999,imu,0.039206382,-0.27135798,-9.862667,-0.018728599,-0.014610621,0.0006125256 +32300000,imu,0.035207085,-0.28855866,-9.920635,-0.017102197,-0.015894081,0.00278753 +32304000,imu,0.03570624,-0.3003894,-9.888874,-0.01502037,-0.016355116,0.00062397274 +32304000,mag,0.007836231,-0.20540898,0.4371153 +32307999,imu,0.045837373,-0.3121915,-9.890239,-0.01702299,-0.014127538,-0.0019623092 +32312000,imu,0.0011483785,-0.315441,-9.881642,-0.015390718,-0.012115766,0.000261925 +32316000,mag,0.010996571,-0.20944141,0.43469495 +32316000,imu,0.00032262976,-0.30443224,-9.867489,-0.015405451,-0.0161752,0.0010981349 +32319999,imu,0.042486887,-0.29751495,-9.909519,-0.018841946,-0.015713666,0.00066907454 +32324000,imu,0.05415625,-0.2941379,-9.916342,-0.016159035,-0.012563096,-0.00015786517 +32328000,imu,0.052292474,-0.27896497,-9.891922,-0.013848071,-0.010619327,0.00088333874 +32328000,mag,0.0052921884,-0.20335665,0.43164152 +32332000,imu,0.03992184,-0.30874294,-9.895252,-0.016372558,-0.011086678,0.0033047537 +32336000,imu,0.029410431,-0.31144467,-9.912301,-0.018001702,-0.01252592,0.004549346 +32340000,imu,0.041834455,-0.28172743,-9.912871,-0.015883315,-0.011569672,0.0019882757 +32340000,mag,-0.0032511668,-0.21400598,0.43225157 +32344000,imu,0.0440141,-0.29698288,-9.921228,-0.012347467,-0.010196179,0.0023397645 +32347999,imu,0.058412686,-0.29106247,-9.899286,-0.012625629,-0.010482519,0.0048032706 +32352000,imu,0.06507907,-0.2791934,-9.88184,-0.013576073,-0.013220405,0.0029193766 +32352000,mag,0.006745087,-0.20671415,0.42593563 +32352000,baro,489.41272 +32356000,imu,0.041555997,-0.29375604,-9.8937645,-0.0120452,-0.014163755,0.0030188097 +32359999,imu,0.047454294,-0.2969022,-9.888487,-0.014009059,-0.01249019,0.0015688376 +32364000,mag,0.004594797,-0.21200305,0.43344826 +32364000,imu,0.034690842,-0.31360072,-9.897838,-0.016595613,-0.009625937,-0.00087837636 +32368000,imu,0.009681746,-0.3170302,-9.88322,-0.012653961,-0.008832025,-0.0040193056 +32371999,imu,0.010134542,-0.3101497,-9.844626,-0.009896394,-0.01262004,-0.0003601679 +32376000,mag,0.005907814,-0.2102179,0.43839327 +32376000,imu,0.026948022,-0.29758346,-9.870687,-0.008165209,-0.010713759,0.0023188214 +32380000,imu,0.05898692,-0.2795437,-9.895273,-0.006805666,-0.008058656,-0.00127565 +32383999,imu,0.05900305,-0.27078235,-9.8850155,-0.009095034,-0.010242415,0.0053961193 +32388000,mag,0.003542482,-0.20650636,0.43046796 +32388000,imu,0.08098485,-0.2665483,-9.866417,-0.012251564,-0.012735056,0.00656824 +32392000,imu,0.049176805,-0.26882875,-9.853531,-0.008905703,-0.011912034,0.0026858968 +32396000,imu,-0.00061711867,-0.29349658,-9.842226,-0.004627168,-0.010288716,0.00221391 +32400000,mag,0.0025287194,-0.21601838,0.43034348 +32400000,imu,0.0664427,-0.298115,-9.85904,-0.002624015,-0.009098383,0.0035674942 +32404000,imu,0.08948019,-0.29150856,-9.852245,-0.003174813,-0.0070987763,0.004377148 +32408000,imu,0.032073334,-0.30180344,-9.824045,-0.008237426,-0.0078545,0.002444234 +32411999,imu,0.0032813326,-0.26496923,-9.852983,-0.0071759606,-0.0081648175,-0.00070794526 +32411999,mag,0.0057085566,-0.21188742,0.43094763 +32416000,imu,0.032747857,-0.25081924,-9.861936,-0.008018829,-0.00966206,0.0012635001 +32420000,imu,0.059634924,-0.25753608,-9.814524,-0.007900171,-0.010334833,0.0039215605 +32423999,baro,489.41742 +32423999,imu,0.04934814,-0.27917564,-9.777433,-0.007252167,-0.0095314775,0.0009220953 +32423999,mag,0.0076704207,-0.20725468,0.43446875 +32428000,imu,0.050046492,-0.30688763,-9.78324,-0.012220517,-0.010404322,-0.0015190296 +32432000,imu,0.017829752,-0.29334697,-9.80091,-0.014187081,-0.01004802,-0.001879332 +32435999,mag,0.009148105,-0.21331401,0.43003798 +32435999,imu,0.035544876,-0.25535828,-9.786848,-0.013126387,-0.007325709,0.0020334146 +32440000,imu,0.08436335,-0.2285562,-9.756889,-0.008770159,-0.0047192243,0.0047054 +32444000,imu,0.06482386,-0.25487822,-9.776887,-0.007321991,-0.0061630914,0.006426903 +32447999,imu,0.045532376,-0.28391516,-9.775721,-0.0075613176,-0.0074556707,0.008054896 +32447999,mag,0.0024178308,-0.20990144,0.43086493 +32452000,imu,0.038330022,-0.2809125,-9.776945,-0.0075735655,-0.00704956,0.0034320662 +32456000,imu,0.023934074,-0.26397574,-9.808434,-0.008078195,-0.0067645125,-0.00018371265 +32460000,imu,0.033064216,-0.26302597,-9.824997,-0.009805009,-0.007750108,0.004333162 +32460000,mag,0.002069603,-0.20899706,0.43200496 +32464000,imu,0.05577008,-0.26055422,-9.844667,-0.0066005667,-0.0061657755,0.006416181 +32468000,imu,0.063911766,-0.27226818,-9.825256,-0.00193802,-0.004439916,0.0029357206 +32472000,imu,0.05811844,-0.28987858,-9.819233,-0.005156344,-0.005554782,0.0033825575 +32472000,mag,0.0028970793,-0.21009834,0.4346064 +32475999,imu,0.04245928,-0.28495866,-9.826057,-0.008135965,-0.003815375,0.0052984883 +32480000,imu,0.052183587,-0.2614086,-9.783262,-0.009142286,-0.0069283075,0.00442398 +32484000,imu,0.056334317,-0.26729128,-9.774184,-0.009077934,-0.01143359,0.0022857508 +32484000,mag,0.011212479,-0.21096464,0.43272027 +32487999,imu,0.025489666,-0.29190633,-9.827602,-0.0077589964,-0.009644941,0.0011936656 +32492000,imu,0.009631263,-0.27563822,-9.85568,-0.006830057,-0.00833182,0.0024627952 +32496000,imu,0.021844614,-0.26377583,-9.854519,-0.011422808,-0.0066682,0.0032325815 +32496000,mag,0.008709257,-0.2084845,0.4363307 +32496000,baro,489.26248 +32499999,imu,0.026724018,-0.28459105,-9.854069,-0.012977598,-0.008478979,0.0031970835 +32504000,imu,0.05085944,-0.28071246,-9.870754,-0.008570418,-0.011374753,0.002083977 +32508000,imu,0.04954285,-0.27059016,-9.917963,-0.008132353,-0.011413575,0.0005129201 +32508000,mag,0.004164096,-0.21579623,0.43312624 +32512000,imu,0.04814631,-0.25649518,-9.891769,-0.010479437,-0.009918504,0.0022966398 +32516000,imu,0.03754666,-0.23103522,-9.867534,-0.01226085,-0.006982913,0.0051175132 +32520000,imu,0.015276062,-0.25571418,-9.902966,-0.011268683,-0.007856543,0.004906656 +32520000,mag,0.004633071,-0.20870687,0.43284717 +32524000,imu,0.029153034,-0.2746213,-9.89776,-0.009563038,-0.006863035,0.0040899524 +32528000,mag,-0.00047241803,-0.20792635,0.42769736 +32528000,imu,0.0378393,-0.2508961,-9.905006,-0.010816209,-0.008009588,0.0024625952 +32532000,imu,0.049935155,-0.24234498,-9.909286,-0.010287969,-0.012031737,-0.0003059167 +32536000,imu,0.059285942,-0.24063751,-9.927423,-0.009154535,-0.01220298,0.001155619 +32539999,imu,0.055644438,-0.21936606,-9.925582,-0.008617359,-0.010208872,0.004544988 +32544000,mag,-0.00078039157,-0.21274301,0.43391782 +32544000,imu,0.03009071,-0.2330345,-9.908187,-0.0074448152,-0.008214582,0.0038391748 +32548000,imu,0.014353356,-0.26838574,-9.917192,-0.007811642,-0.0097174,0.001453964 +32551999,imu,0.045601025,-0.26089525,-9.891752,-0.006217068,-0.012262222,0.00020845933 +32556000,mag,0.0065217637,-0.21437499,0.429177 +32556000,imu,0.036110133,-0.24921,-9.878788,-0.0059020985,-0.0104181,0.0017434941 +32560000,imu,0.018511474,-0.25530523,-9.903293,-0.0023133561,-0.0071771727,0.000478706 +32563999,imu,0.035532612,-0.25899708,-9.929256,-0.0026765047,-0.010012352,0.00031680643 +32568000,imu,0.030045802,-0.27678424,-9.927545,-0.0019574547,-0.009808177,0.0016504648 +32568000,mag,0.003911976,-0.20691575,0.42480555 +32568000,baro,489.27188 +32572000,imu,0.01707521,-0.25707904,-9.903675,0.0014765235,-0.008577616,0.00018236763 +32576000,imu,0.020406472,-0.24492267,-9.928535,-0.0011696029,-0.010841402,-0.0014682128 +32580000,imu,0.019708952,-0.2674233,-9.937986,-0.0024170526,-0.009038879,0.00079250394 +32580000,mag,0.0013231246,-0.21905017,0.42830196 +32584000,imu,0.017164677,-0.25259852,-9.930901,-0.004148321,-0.0054749446,0.0007370077 +32588000,imu,0.030038964,-0.21796472,-9.936157,-0.0061695366,-0.004438554,-0.00025820953 +32591999,mag,0.0046152496,-0.21537879,0.42893142 +32591999,imu,0.025681987,-0.20761974,-9.921072,-0.0046906555,-0.0074507645,0.00086658495 +32596000,imu,0.02753698,-0.22299653,-9.925614,-0.0012285364,-0.010720161,-0.0010623459 +32600000,imu,0.015632264,-0.26302475,-9.912905,-0.0011381863,-0.007932343,-0.00071392243 +32603999,imu,0.028861979,-0.3101281,-9.899865,-0.0021183442,-0.0034828284,0.0009285831 +32603999,mag,0.00443667,-0.21206361,0.43659005 +32608000,imu,0.032225523,-0.28939793,-9.940281,-0.003930238,-0.0013768905,0.0005364481 +32612000,imu,0.013695159,-0.27633286,-9.968973,-0.0052370895,-0.0027395014,0.0017338414 +32616000,mag,0.0036106957,-0.20927943,0.431923 +32616000,imu,0.0070984988,-0.25406063,-9.951902,-0.0069007226,-0.0049921684,0.0011137667 +32620000,imu,0.030246131,-0.21427187,-9.929312,-0.003476999,-0.0060396153,3.3711523e-05 +32624000,imu,0.049377352,-0.23751946,-9.933889,-0.00036640087,-0.005622714,0.0022947188 +32624000,mag,0.0019302953,-0.20620273,0.43637177 +32628000,imu,0.052411735,-0.25767255,-9.952994,-0.0023143284,-0.005580388,0.0025871645 +32632000,imu,0.04506381,-0.27141044,-9.944219,-0.0024175362,-0.006295936,0.0024579298 +32636000,imu,0.003196041,-0.26433,-9.921549,-0.0044843173,-0.0059637213,0.003071269 +32640000,baro,489.19205 +32640000,imu,0.05379119,-0.2731652,-9.913506,-0.006280112,-0.0075905924,0.0044543953 +32640000,mag,0.0078106727,-0.2097727,0.4353783 +32644000,imu,0.045044392,-0.28734994,-9.907197,-0.006425497,-0.005214152,0.0020021137 +32648000,imu,-0.020839043,-0.27893993,-9.902016,-0.0041176556,-0.005439644,0.0025926575 +32652000,mag,0.0033756935,-0.21474968,0.43290913 +32652000,gps,489757.0,85455229.0,473976193.0,-1.42,-0.78,0.65999997 +32652000,imu,0.006036862,-0.25212514,-9.929741,-0.0028059247,-0.0101158535,0.0036534925 +32656000,imu,0.00968636,-0.23940796,-9.9314575,-0.0022507592,-0.008844584,0.0022336454 +32660000,imu,0.011880016,-0.2748837,-9.921026,-0.002747668,-0.008666881,0.0015446917 +32664000,imu,0.03830894,-0.27061075,-9.898525,-0.0051063355,-0.010954935,0.000577772 +32664000,mag,0.002897006,-0.20782062,0.433249 +32668000,imu,0.04319845,-0.24784699,-9.890583,-0.004994021,-0.010720027,0.002367255 +32672000,imu,0.07377851,-0.23756546,-9.9230175,-0.004870179,-0.010972573,0.0026448655 +32676000,mag,0.005902295,-0.20578541,0.4330634 +32676000,imu,0.047457155,-0.2491342,-9.947901,-0.00533712,-0.009361341,0.003648854 +32680000,imu,-0.012096895,-0.29070717,-9.905018,-0.004359301,-0.0061232303,0.0024253551 +32684000,imu,0.0055538006,-0.2685544,-9.857952,-0.0038894454,-0.0030228656,0.0027266354 +32688000,imu,0.030429121,-0.22153224,-9.910209,-0.003942919,-0.0036649378,0.0049643484 +32688000,mag,0.003988696,-0.21011241,0.42981833 +32692000,imu,0.027143534,-0.22650854,-9.917886,-0.003716639,-0.0076758014,0.0010265164 +32696000,imu,0.013865081,-0.23257954,-9.912722,-0.005812491,-0.008361683,-0.00061950716 +32700000,mag,0.0036645173,-0.20884687,0.43248844 +32700000,imu,0.020668542,-0.2544121,-9.936129,-0.0058467085,-0.0032788536,0.0029717884 +32704000,imu,0.027297605,-0.24806039,-9.900459,-0.0033100229,-0.0009519643,0.0037176544 +32708000,imu,0.033958264,-0.23941608,-9.894016,-0.0035518953,-0.0037408026,0.0022038608 +32712000,mag,0.0056640184,-0.20914187,0.43289363 +32712000,baro,489.18268 +32712000,imu,0.06881964,-0.25994313,-9.900223,-0.002833176,-0.0077302037,0.0021912341 +32716000,imu,0.073168226,-0.27081633,-9.925301,-0.002363832,-0.0068927053,0.0004972854 +32720000,imu,0.026393577,-0.27237105,-9.946742,-0.00034158488,-0.0026790707,-0.00020716216 +32724000,imu,0.0021314821,-0.2506338,-9.932646,-0.0005787739,-0.0058949436,-0.00018459547 +32724000,mag,0.006913304,-0.21204218,0.4323084 +32728000,imu,-0.01216288,-0.24173196,-9.952186,-0.0019488435,-0.008887451,-0.0014621707 +32732000,imu,-0.036647357,-0.23409252,-9.982826,-0.00023095847,-0.004293924,0.001753878 +32736000,imu,-0.03810162,-0.24441196,-9.961561,-0.00085568114,-0.0031527728,0.0028104219 +32736000,mag,0.008353868,-0.21429665,0.42256603 +32740000,imu,0.010398477,-0.2373946,-9.9585495,0.00017031783,-0.005029144,0.0013027122 +32744000,mag,0.00093966484,-0.21010911,0.42839566 +32744000,imu,0.047180504,-0.24313715,-9.9613085,0.0039257687,-0.0064054327,0.0022919653 +32748000,imu,0.05798652,-0.27539057,-9.912828,0.0046866573,-0.00746682,0.0018178445 +32752000,imu,0.054446988,-0.2678834,-9.896683,0.0022945318,-0.00832634,9.428403e-05 +32756000,mag,0.005898715,-0.20920447,0.42953205 +32756000,imu,0.018673802,-0.24585368,-9.9265175,-0.0006838354,-0.0072682826,-0.0014792181 +32760000,imu,-0.00869169,-0.23377821,-9.931805,-0.0021253442,-0.0049717575,-0.002135198 +32764000,imu,0.011637808,-0.24379364,-9.917686,-0.0041144765,-0.0053763757,0.00057960174 +32768000,imu,0.043299515,-0.24431178,-9.903061,-0.0059579164,-0.006605093,0.0033138108 +32772000,mag,0.0035331228,-0.21303952,0.43093008 +32772000,imu,0.039481893,-0.23525637,-9.911303,-0.0012767634,-0.0070667295,0.00023676812 +32776000,imu,0.031873263,-0.23643371,-9.897479,-0.0007260475,-0.0034963565,-0.00040345395 +32780000,imu,0.018790554,-0.2246102,-9.897865,-0.004093807,-0.004449436,0.0013018273 +32784000,imu,0.013576344,-0.21518937,-9.917408,-0.0047588744,-0.0027275782,0.0006394542 +32784000,mag,0.004155778,-0.20622401,0.4367669 +32784000,baro,489.1498 +32788000,imu,0.004652377,-0.24727024,-9.884507,-0.0035064574,0.0005020618,0.00078894466 +32792000,mag,0.0026561501,-0.21170695,0.4285795 +32792000,imu,-0.011827148,-0.24867891,-9.904476,-0.0023152886,-0.0063589243,-0.00075333455 +32796000,imu,-0.0031367722,-0.25420827,-9.879787,-0.0044438154,-0.008793843,-0.00031640707 +32800000,imu,0.02127213,-0.27474576,-9.864884,-0.0065134955,-0.005431536,-6.4777305e-05 +32804000,imu,0.017739005,-0.2622555,-9.904257,-0.005086808,-0.0040494357,0.00041831366 +32808000,mag,0.004051484,-0.20685573,0.43145868 +32808000,imu,0.023279788,-0.23302205,-9.887387,-0.0044400645,-0.0071369717,0.0051260316 +32812000,imu,0.060328726,-0.21539845,-9.87093,-0.0041758595,-0.009494572,0.0053162086 +32816000,imu,0.041052893,-0.21326776,-9.87828,-0.000756561,-0.0076659424,0.00057419186 +32820000,mag,0.0022701556,-0.21137676,0.4335941 +32820000,imu,0.001551809,-0.2335093,-9.881867,-0.0019395275,-0.006358838,-0.002041186 +32824000,imu,0.008014546,-0.25770703,-9.877012,-0.0018116103,-0.0064809136,-0.0016453092 +32828000,imu,0.029004872,-0.2275107,-9.862778,0.001890912,-0.008385065,0.0021951986 +32832000,imu,0.019547103,-0.21989562,-9.85281,0.00068789267,-0.009789049,0.0070815026 +32832000,mag,0.004643172,-0.20892355,0.43239424 +32836000,imu,0.013871489,-0.23781496,-9.867052,0.00023821273,-0.008974278,0.006494622 +32840000,imu,0.043614823,-0.2670297,-9.857769,-0.0021145926,-0.008435293,0.003720968 +32844000,mag,0.01043643,-0.21033373,0.43376508 +32844000,imu,0.028516501,-0.22400463,-9.881407,-0.004798195,-0.006016315,0.0019954364 +32848000,imu,0.05191179,-0.2031778,-9.878197,-0.0009338557,-0.0056139478,0.0029449984 +32852000,imu,0.06828361,-0.22534792,-9.819981,0.002316626,-0.0070118164,0.003047453 +32856000,imu,0.037465457,-0.21263303,-9.839276,0.0026246782,-0.0056137857,0.0006229473 +32856000,mag,0.0022138741,-0.21244808,0.43477982 +32856000,baro,489.18268 +32860000,imu,0.01881484,-0.21387571,-9.86289,0.0023857884,-0.005257479,-0.00034508738 +32864000,imu,-0.004163183,-0.20618439,-9.819165,0.0013550883,-0.007083788,0.0016384452 +32868000,imu,0.01851807,-0.2063825,-9.790842,0.0026968482,-0.0066285334,0.003113286 +32868000,mag,0.0061730244,-0.21265161,0.43110105 +32872000,imu,0.028255124,-0.20333284,-9.838219,0.0043327794,-0.0035423727,0.0031688751 +32876000,mag,-0.007975489,-0.2068066,0.43601355 +32876000,imu,0.04350786,-0.17621031,-9.879374,-0.00065095455,-0.0028977552,0.006248945 +32880000,imu,0.036155064,-0.18852277,-9.882766,-0.002133798,-0.005478776,0.006361151 +32884000,imu,0.015077716,-0.2417865,-9.887844,-7.0540766e-05,-0.0072564743,0.0026190553 +32888000,imu,0.013749832,-0.24275854,-9.914911,-0.00095578795,-0.0089870235,0.001552268 +32892000,mag,0.009277689,-0.21729334,0.43130004 +32892000,imu,0.004129928,-0.21951261,-9.904022,-0.004564741,-0.0069350055,0.00065093423 +32896000,imu,0.015545522,-0.19696333,-9.870806,-0.005590545,-0.0037873976,-0.0005881765 +32900000,imu,0.0005523042,-0.1943035,-9.87039,-0.0027164936,-0.005680733,0.0009813851 +32904000,imu,-0.012079712,-0.2400761,-9.859456,-0.0017402936,-0.009840404,0.0031967591 +32904000,mag,0.006970412,-0.20905362,0.4324134 +32908000,imu,0.028698355,-0.25908855,-9.859997,-0.001124468,-0.009561168,0.00470057 +32912000,imu,0.013879543,-0.2611087,-9.889782,-0.002405692,-0.0048778504,0.004361392 +32916000,imu,0.0023042397,-0.2520439,-9.903798,-0.0015055233,-0.0045339544,0.0021671911 +32916000,mag,0.0028997066,-0.20836762,0.43550515 +32920000,imu,-0.008526968,-0.21826047,-9.917014,-0.0007676346,-0.007101092,0.0013628304 +32924000,imu,-0.041891117,-0.23521318,-9.90961,-0.002446084,-0.008581155,0.0040490273 +32928000,imu,-0.0041660136,-0.25271583,-9.912222,-0.0008574568,-0.007865257,0.008766677 +32928000,mag,0.006320834,-0.20664552,0.4277572 +32928000,baro,489.0465 +32932000,imu,0.034566898,-0.23726378,-9.923463,0.002808576,-0.007975395,0.005949034 +32936000,mag,0.011834291,-0.21084052,0.4377088 +32936000,imu,0.066750206,-0.22002405,-9.917613,0.003082584,-0.008392128,0.0048680874 +32940000,imu,0.052741315,-0.23737726,-9.92968,0.0024077708,-0.007958432,0.006038091 +32944000,imu,0.015315043,-0.25029665,-9.931941,0.0011436441,-0.009188021,0.0011257154 +32948000,imu,0.010166692,-0.2305648,-9.927874,-0.0017866567,-0.009574791,0.0026306144 +32952000,mag,0.0019731133,-0.21132177,0.43328026 +32952000,imu,-0.004237124,-0.21455064,-9.917549,-0.0005300745,-0.010464614,0.0016472726 +32956000,imu,-0.01841576,-0.21123934,-9.918188,-0.0011937089,-0.011229551,-0.0002846475 +32960000,imu,0.01036796,-0.22093678,-9.937117,-0.004739446,-0.006963343,0.004526676 +32964000,imu,0.019017057,-0.20549205,-9.9547615,-0.0031318613,-0.0041181357,0.0032485295 +32964000,mag,0.006824845,-0.20228514,0.43377167 +32968000,imu,-0.0036060316,-0.21664625,-9.970179,-0.0025411514,-0.0056010755,0.0035955121 +32972000,mag,0.008838692,-0.21637148,0.43460596 +32972000,imu,0.009124085,-0.23834458,-9.952827,-0.0034388716,-0.0054751304,0.004258318 +32976000,imu,0.022898728,-0.23835365,-9.923164,-0.0009112795,-0.0058748703,0.0003648718 +32980000,imu,0.0038783455,-0.22332694,-9.93067,-0.0020432537,-0.008647398,0.0026172856 +32984000,imu,0.01670721,-0.20779413,-9.958136,-0.0050290683,-0.0072753006,0.0066219848 +32988000,mag,0.009345756,-0.2084793,0.43348694 +32988000,imu,0.03784733,-0.23181574,-9.974422,-0.004636569,-0.0064512035,0.007299639 +32992000,imu,0.016126059,-0.23078209,-9.964703,-0.004880053,-0.0052401796,0.0049883234 +32996000,imu,0.015596939,-0.20037219,-9.945,-0.0059303395,-0.0034905532,0.002069422 +33000000,baro,489.00424 +33000000,imu,0.012379868,-0.20586039,-9.908165,-0.004588312,-0.0036786525,0.001980978 +33000000,mag,0.013387021,-0.21254395,0.4320773 +33004000,imu,0.0035516932,-0.22336243,-9.907442,-0.004542059,-0.004853215,0.0031313472 +33008000,imu,0.041502193,-0.21740331,-9.94352,-0.0065927734,-0.0055014207,0.0014646145 +33012000,imu,0.029349541,-0.24710825,-9.948687,-0.006906242,-0.0058420515,0.0007619426 +33012000,mag,0.007263829,-0.20986429,0.4323815 +33016000,imu,-0.008692748,-0.26703638,-9.952847,-0.0064219446,-0.005687735,-0.00038890328 +33020000,imu,0.023581479,-0.22160631,-9.964806,-0.00741745,-0.005131705,-0.0008882936 +33024000,imu,0.00808548,-0.22040689,-9.984552,-0.0071262848,-0.004117962,-0.0001143886 +33024000,mag,0.009671409,-0.21529402,0.43490946 +33028000,imu,-0.017484477,-0.25632948,-9.972662,-0.002941907,-0.0025151428,0.0008539867 +33032000,imu,0.012029267,-0.2212413,-9.935747,-0.0012804904,-0.0053366413,-0.0003362634 +33036000,mag,-0.0013635586,-0.21194108,0.4309549 +33036000,imu,0.029301746,-0.1914606,-9.937177,-0.00095521443,-0.0047203624,0.00072691013 +33040000,imu,0.037998877,-0.2121957,-9.943505,-0.0015094231,-0.0039686095,0.0029849522 +33044000,imu,0.035961553,-0.217354,-9.914369,-0.0038331237,-0.00838534,-0.00081253384 +33048000,mag,0.002395606,-0.20787449,0.43455312 +33048000,imu,0.01221738,-0.21612482,-9.916424,-0.0017154835,-0.007283941,-0.0025620768 +33052000,gps,489490.0,85455189.0,473976144.0,-1.31,-0.74,0.62 +33052000,imu,-0.009680934,-0.22517091,-9.911873,0.0023058427,-0.0046760226,0.00018675934 +33056000,imu,-0.0016125848,-0.20464233,-9.898387,0.0010388872,-0.0057971184,0.0035039731 +33060000,mag,0.010292824,-0.21250111,0.428746 +33060000,imu,0.031581,-0.2138101,-9.9320545,0.00051653525,-0.006721454,0.0054560467 +33064000,imu,0.035541058,-0.23542325,-9.926207,0.0022020582,-0.006662102,0.00435635 +33068000,imu,0.005621761,-0.19366369,-9.938651,0.0012088591,-0.0076468084,0.0013777204 +33072000,mag,0.0092855375,-0.21938644,0.4347172 +33072000,imu,0.0011016265,-0.18655808,-9.965531,-0.0030037614,-0.008952618,0.0017497086 +33072000,baro,488.84464 +33076000,imu,0.015657987,-0.21440044,-9.941833,-0.005018751,-0.0056269327,0.0005658914 +33080000,imu,0.014459424,-0.22044274,-9.943309,-0.0019983547,-0.00526924,-0.0010968837 +33084000,imu,-0.012443417,-0.22046956,-9.966667,-0.001856378,-0.009039822,0.00019479815 +33084000,mag,0.004340468,-0.2056316,0.43105534 +33088000,imu,-0.025736704,-0.21719985,-9.938614,-0.0023347773,-0.007970653,0.00061870494 +33092000,mag,0.004041048,-0.21151406,0.430638 +33092000,imu,0.0017612523,-0.21269497,-9.932943,-0.0031773448,-0.0047050556,0.002530012 +33096000,imu,-0.0072793635,-0.20309171,-9.928617,-0.0055864817,-0.0050976845,0.005969117 +33100000,imu,-0.03223909,-0.20872392,-9.92853,-0.0032597084,-0.007218167,0.002920466 +33104000,imu,0.0106175905,-0.20334065,-9.957157,-0.0024754705,-0.0045285462,0.0014713588 +33108000,imu,0.026719753,-0.2200203,-9.9310665,-0.004203534,-0.002218318,0.0025115614 +33108000,mag,0.0039002774,-0.21459028,0.43206507 +33112000,imu,0.004707848,-0.2198348,-9.934682,-0.003691336,-0.0054752026,0.00457985 +33116000,imu,0.0127654895,-0.19078624,-9.950039,-0.0031944122,-0.0068607666,0.006767834 +33116000,mag,0.0076234294,-0.21444201,0.4298558 +33120000,imu,0.0045468467,-0.21534501,-9.950636,-0.0032740156,-0.0047573154,0.0025329532 +33124000,imu,0.02367995,-0.23390657,-9.984907,-0.0021322796,-0.0059124576,0.0027187248 +33128000,imu,0.033616986,-0.22873442,-9.984808,-0.0016469208,-0.0071958024,0.0020225642 +33132000,mag,0.00963055,-0.2105218,0.43087268 +33132000,imu,0.022996152,-0.2169738,-9.952965,-0.0028062118,-0.006422864,0.003801465 +33136000,imu,0.023031853,-0.20696159,-9.9389515,-0.003050719,-0.006270409,0.0064817434 +33140000,imu,0.0110473,-0.21540226,-9.941603,-0.00058223045,-0.010753064,0.0028389061 +33144000,baro,488.93384 +33144000,mag,0.008828562,-0.20990513,0.43651453 +33144000,imu,-0.011127163,-0.23035198,-9.9340315,-0.0003264925,-0.013866752,0.0029201242 +33148000,imu,-0.005919941,-0.21035549,-10.132127,0.0010341188,-0.011040082,0.0132294595 +33152000,imu,0.036614716,-0.19859433,-10.499744,0.017212277,-0.01516772,0.034963768 +33156000,mag,0.0038405047,-0.21548252,0.43480477 +33156000,imu,-0.001530329,-0.21468185,-10.800734,0.041149445,-0.024423325,0.07214754 +33160000,imu,-0.04894297,-0.21809445,-11.0367775,0.06591282,-0.037378754,0.12007566 +33164000,imu,-0.020609833,-0.20929296,-11.196982,0.096286416,-0.055783335,0.1710076 +33168000,mag,0.004276151,-0.20883736,0.43027547 +33168000,imu,0.024310207,-0.1927983,-11.292946,0.13106337,-0.07514366,0.2271409 +33172000,imu,0.038980067,-0.19354893,-11.39338,0.16752638,-0.09740343,0.28559625 +33176000,imu,-0.0015835988,-0.21468167,-11.522041,0.20466891,-0.11903176,0.34926015 +33180000,mag,-0.0011916279,-0.22104937,0.4337242 +33180000,imu,-0.006598303,-0.19368175,-11.549467,0.23753871,-0.13763921,0.41986644 +33184000,imu,-0.027304325,-0.19573803,-11.512552,0.2671055,-0.16054603,0.48799217 +33188000,imu,-0.038548153,-0.2350567,-11.508221,0.29509994,-0.18143436,0.55684483 +33192000,mag,0.009513455,-0.21498808,0.44213474 +33192000,imu,0.004187089,-0.21129902,-11.493301,0.3182875,-0.19425794,0.6286857 +33196000,imu,-0.009889798,-0.19145715,-11.442844,0.33477017,-0.2060781,0.69813544 +33200000,imu,-0.04029623,-0.21202685,-11.411167,0.34708226,-0.21650168,0.7688364 +33204000,mag,-0.00057338283,-0.20517053,0.43122447 +33204000,imu,-0.044298515,-0.20195232,-11.305456,0.35325575,-0.22537977,0.8366667 +33208000,landed,0.0 +33208000,imu,-0.031535346,-0.17679313,-11.110117,0.3540817,-0.23204833,0.9034258 +33212000,imu,-0.009281791,-0.19138876,-10.987392,0.34930754,-0.23222636,0.9720159 +33212000,mag,0.00045083385,-0.19957235,0.4365083 +33216000,imu,0.019907743,-0.20507523,-10.87519,0.34038544,-0.23188621,1.0420774 +33216000,baro,488.7883 +33220000,imu,0.018640313,-0.1871734,-10.770054,0.32791978,-0.23099807,1.1098552 +33224000,imu,0.002352653,-0.16704315,-10.7208805,0.3096827,-0.21808296,1.1769567 +33228000,imu,-0.02868668,-0.1377867,-10.582522,0.28901592,-0.20457676,1.2446896 +33228000,mag,-0.005094614,-0.20049468,0.43546733 +33232000,imu,-0.028078405,-0.14008157,-10.396727,0.2689503,-0.19801296,1.3116353 +33236000,imu,0.003910444,-0.18179813,-10.235542,0.24499384,-0.19382437,1.3718872 +33240000,imu,0.003344178,-0.18588851,-10.083942,0.21695888,-0.18383667,1.4311696 +33240000,mag,-0.001645893,-0.20024179,0.43134692 +33244000,imu,0.008955084,-0.17864865,-9.971167,0.19199513,-0.17024599,1.492592 +33248000,imu,-0.0073189503,-0.14351128,-9.8166,0.16252556,-0.15643162,1.5537738 +33252000,mag,-0.0035125848,-0.20102555,0.43294796 +33252000,imu,-0.021971056,-0.14909704,-9.636093,0.13310812,-0.13952495,1.616745 +33256000,imu,-0.025418337,-0.14821082,-9.499832,0.10889828,-0.12432625,1.6719053 +33260000,imu,-0.0069640502,-0.12255472,-9.364541,0.085754566,-0.10934991,1.7279792 +33264000,imu,-0.0057718875,-0.13701843,-9.233783,0.06371826,-0.09427541,1.7878045 +33264000,mag,-0.011849487,-0.20354953,0.4339087 +33268000,imu,-0.052746892,-0.15265176,-9.086956,0.044557117,-0.086148106,1.8453774 +33272000,imu,-0.0817121,-0.14965172,-8.957485,0.026711747,-0.08122371,1.8936627 +33276000,mag,-0.0096893925,-0.20446844,0.4319949 +33276000,imu,-0.08497074,-0.15040937,-8.867342,0.00644102,-0.070944026,1.9457211 +33280000,imu,-0.04846625,-0.17899852,-8.761814,-0.0068710884,-0.056055415,1.9998811 +33284000,imu,-0.024273148,-0.15597142,-8.637521,-0.017475147,-0.047307387,2.0506442 +33288000,mag,-0.019803766,-0.20406663,0.43600485 +33288000,imu,-0.048450403,-0.11860689,-8.532623,-0.02615768,-0.04323673,2.1019185 +33288000,baro,488.854 +33292000,imu,-0.085035846,-0.09471492,-8.416237,-0.03414776,-0.03649172,2.1473281 +33296000,imu,-0.11425373,-0.1085134,-8.298854,-0.03921561,-0.028509507,2.1939042 +33300000,imu,-0.11358925,-0.152455,-8.234398,-0.04094765,-0.020647768,2.238241 +33300000,mag,-0.02014502,-0.20069602,0.44202742 +33304000,imu,-0.0847006,-0.16653135,-8.11503,-0.04287599,-0.01399724,2.282754 +33308000,imu,-0.09505369,-0.1343695,-8.018771,-0.037487697,-0.0125678545,2.3304367 +33312000,imu,-0.1049288,-0.1283346,-7.9671125,-0.03495463,-0.009233298,2.3715692 +33312000,mag,-0.027964387,-0.19773225,0.4389652 +33316000,imu,-0.10558967,-0.16330919,-7.8718133,-0.033326045,-0.00061651086,2.409503 +33320000,imu,-0.11369172,-0.17438169,-7.818805,-0.026332477,0.0051555927,2.4489684 +33324000,imu,-0.12841097,-0.16920032,-7.7787933,-0.021930512,0.0126458295,2.4849582 +33324000,mag,-0.041340485,-0.19407797,0.4387395 +33328000,imu,-0.16088623,-0.15912521,-7.7379856,-0.014238688,0.016398316,2.5201616 +33332000,imu,-0.12719871,-0.14737792,-7.7261486,-0.006591021,0.021793898,2.5559978 +33336000,mag,-0.03777283,-0.19315022,0.43759143 +33336000,imu,-0.11599728,-0.16171151,-7.6930265,-0.0016859611,0.027876554,2.5916843 +33340000,imu,-0.12641571,-0.20450611,-7.6715555,0.006385246,0.03381609,2.6239176 +33344000,imu,-0.12441126,-0.18897718,-7.679575,0.00982436,0.044617355,2.6534712 +33348000,mag,-0.044486243,-0.19579762,0.4366846 +33348000,imu,-0.14160785,-0.17321734,-7.7365427,0.015666325,0.054010767,2.6844995 +33352000,imu,-0.12777765,-0.2199867,-7.790891,0.023554519,0.059229262,2.714013 +33356000,imu,-0.14156716,-0.20850344,-7.791043,0.0276264,0.06623234,2.742372 +33360000,imu,-0.17345268,-0.17620651,-7.8293347,0.031244574,0.073677205,2.7732487 +33360000,baro,488.7789 +33360000,mag,-0.06410782,-0.19052416,0.43368247 +33364000,imu,-0.16902623,-0.16064577,-7.8683133,0.038066357,0.07753114,2.801041 +33368000,imu,-0.17453718,-0.16293643,-7.933529,0.042253066,0.08521417,2.8254824 +33372000,mag,-0.0649233,-0.18744496,0.4391762 +33372000,imu,-0.1718965,-0.187813,-8.056283,0.04153832,0.09344811,2.8489907 +33376000,imu,-0.13893962,-0.22106773,-8.149916,0.046935182,0.10237369,2.871532 +33380000,imu,-0.13098858,-0.25257924,-8.200825,0.050181434,0.111288436,2.8987398 +33384000,imu,-0.15020585,-0.2484667,-8.226118,0.04774623,0.11521518,2.9232857 +33384000,mag,-0.0708407,-0.18563704,0.43896905 +33388000,imu,-0.19146171,-0.22056392,-8.355339,0.0461377,0.12312953,2.9418178 +33392000,imu,-0.17598116,-0.21226269,-8.55615,0.046117242,0.13253494,2.9667933 +33392000,mag,-0.069229454,-0.18063354,0.43861333 +33396000,imu,-0.14861447,-0.24827924,-8.675879,0.046797205,0.13647954,2.9858403 +33400000,imu,-0.19838396,-0.26711616,-8.758024,0.04466272,0.1413842,2.9988382 +33404000,imu,-0.219939,-0.2551095,-8.798593,0.039654754,0.14710774,3.0177228 +33408000,imu,-0.19399458,-0.22088395,-8.923497,0.036128074,0.14972496,3.038275 +33408000,mag,-0.08652219,-0.18273857,0.43577427 +33412000,imu,-0.19526884,-0.2183519,-9.135099,0.03632662,0.15349187,3.0580297 +33416000,imu,-0.22359826,-0.2554084,-9.249081,0.03610679,0.15623467,3.0755222 +33420000,imu,-0.2516985,-0.24945875,-9.300039,0.033736672,0.1566988,3.0923798 +33420000,mag,-0.09156869,-0.18344411,0.43843365 +33424000,imu,-0.24516188,-0.25520757,-9.349478,0.032982368,0.15635075,3.1075258 +33428000,imu,-0.22184488,-0.24976672,-9.466788,0.026175842,0.15746255,3.1227732 +33432000,imu,-0.2270603,-0.23972647,-9.6350155,0.019135732,0.15857825,3.137217 +33432000,baro,488.70847 +33432000,mag,-0.10460845,-0.17132686,0.44110975 +33436000,imu,-0.25359964,-0.2462779,-9.7687435,0.015321966,0.15861677,3.1483114 +33440000,imu,-0.25712594,-0.2567932,-9.865244,0.006816441,0.1609149,3.1610003 +33444000,imu,-0.26837674,-0.27614072,-9.921484,0.0024167593,0.16114236,3.1744797 +33444000,mag,-0.11417758,-0.17811555,0.43577978 +33448000,imu,-0.26728398,-0.23478368,-10.01271,-0.00071093003,0.16142689,3.1888616 +33452000,imu,-0.27543846,-0.23787276,-10.105232,-0.0044865147,0.16010267,3.201304 +33452000,gps,489257.0,85455151.0,473976098.0,-1.2099999,-0.66999996,0.69 +33456000,mag,-0.11725138,-0.17047317,0.44115612 +33456000,imu,-0.34584507,-0.259719,-10.166029,-0.007856271,0.1563112,3.2125142 +33460000,imu,-0.3474911,-0.23118483,-10.212476,-0.01266808,0.1553246,3.2212646 +33464000,imu,-0.32667214,-0.2288862,-10.245491,-0.020350212,0.15400563,3.2295609 +33468000,mag,-0.12467073,-0.159478,0.43569878 +33468000,imu,-0.31584042,-0.25577542,-10.317608,-0.02866264,0.14857815,3.2401319 +33472000,imu,-0.29748344,-0.26514578,-10.411329,-0.032767184,0.1445078,3.2491536 +33476000,imu,-0.3007334,-0.25109738,-10.478556,-0.03581415,0.14485821,3.2579312 +33480000,mag,-0.12525763,-0.1607452,0.4339348 +33480000,imu,-0.29487324,-0.24396986,-10.48707,-0.04185821,0.1450361,3.265307 +33484000,imu,-0.29091722,-0.24766949,-10.446768,-0.045684732,0.14111045,3.2700872 +33488000,imu,-0.3025667,-0.26413926,-10.426795,-0.04808549,0.13694566,3.2776062 +33492000,imu,-0.28998563,-0.26639956,-10.432696,-0.054119755,0.1344427,3.292422 +33492000,mag,-0.13760833,-0.15170752,0.4358569 +33496000,imu,-0.2888975,-0.24260373,-10.4263,-0.05745707,0.13275953,3.2977962 +33500000,imu,-0.33449468,-0.22027183,-10.456293,-0.06027466,0.1261578,3.2996385 +33504000,imu,-0.361296,-0.22672305,-10.459927,-0.06668273,0.12127436,3.3094964 +33504000,baro,488.66623 +33504000,mag,-0.1418742,-0.14220783,0.42696416 +33508000,imu,-0.37029046,-0.22939667,-10.449006,-0.070299655,0.120850846,3.3145783 +33512000,imu,-0.36773866,-0.20599726,-10.452189,-0.071338266,0.119350106,3.3221116 +33516000,imu,-0.3629495,-0.19297954,-10.376574,-0.073229514,0.11744447,3.3295681 +33516000,mag,-0.15195215,-0.13789012,0.43737352 +33520000,imu,-0.34718207,-0.19213954,-10.310556,-0.07475279,0.11244881,3.3297813 +33524000,imu,-0.37583283,-0.1915833,-10.320179,-0.07460656,0.10690732,3.3343618 +33528000,mag,-0.15759847,-0.13025218,0.4376548 +33528000,imu,-0.42034835,-0.212638,-10.321344,-0.07467049,0.10492645,3.3388538 +33532000,imu,-0.42623064,-0.20466198,-10.274685,-0.077379405,0.10234259,3.340754 +33536000,imu,-0.4229825,-0.18288551,-10.221552,-0.081149206,0.094147086,3.3449214 +33540000,mag,-0.16196102,-0.12664983,0.43508458 +33540000,imu,-0.40873235,-0.21601011,-10.217268,-0.08175681,0.08762176,3.3497427 +33544000,imu,-0.39145166,-0.2502608,-10.200952,-0.08253826,0.085251644,3.3520036 +33548000,imu,-0.37110254,-0.23193297,-10.142792,-0.08405279,0.08200788,3.3545768 +33552000,imu,-0.38597035,-0.18995343,-10.103798,-0.0858662,0.07977972,3.3559303 +33552000,mag,-0.16440319,-0.12927291,0.4318573 +33556000,imu,-0.41100848,-0.168384,-10.07539,-0.0867838,0.07583549,3.3613665 +33560000,imu,-0.44667146,-0.18327956,-10.045288,-0.08121244,0.073051624,3.3652477 +33564000,imu,-0.45581388,-0.21869905,-10.01555,-0.08164806,0.072557025,3.3652358 +33564000,mag,-0.16652717,-0.11605031,0.4346 +33568000,imu,-0.42326808,-0.21494518,-9.989969,-0.0866734,0.06771001,3.370371 +33572000,imu,-0.422287,-0.1948705,-9.958572,-0.08584843,0.06274538,3.3722095 +33576000,imu,-0.44582075,-0.17583442,-9.909241,-0.08291416,0.06052269,3.3742785 +33576000,baro,488.61926 +33576000,mag,-0.17411892,-0.109133564,0.43078795 +33580000,imu,-0.4499247,-0.17752151,-9.8759365,-0.082389556,0.058124218,3.3771462 +33584000,imu,-0.43848038,-0.19405472,-9.887682,-0.08595157,0.054563425,3.3791964 +33588000,mag,-0.18098874,-0.10931955,0.43236682 +33588000,imu,-0.45379263,-0.16481633,-9.854154,-0.08715462,0.054510575,3.377928 +33592000,imu,-0.45918885,-0.15940505,-9.801315,-0.086861365,0.05569699,3.3795083 +33596000,imu,-0.46324334,-0.14609212,-9.823342,-0.08509589,0.053829733,3.3827362 +33596000,mag,-0.18867236,-0.09882181,0.4325781 +33600000,imu,-0.4738134,-0.1449429,-9.830772,-0.084022425,0.049791716,3.3823428 +33604000,imu,-0.4928321,-0.17825912,-9.794984,-0.084957846,0.050956864,3.382452 +33608000,imu,-0.50596815,-0.15161708,-9.776278,-0.08477821,0.05108105,3.3849058 +33612000,mag,-0.19473046,-0.08907944,0.43862644 +33612000,imu,-0.49296442,-0.14132905,-9.778803,-0.08354538,0.04501493,3.389156 +33616000,imu,-0.4768871,-0.12317575,-9.756397,-0.08280619,0.041696683,3.389289 +33620000,imu,-0.46739098,-0.114467815,-9.742067,-0.082027175,0.043833595,3.385663 +33624000,imu,-0.48453763,-0.13362972,-9.739208,-0.07873827,0.043038744,3.385377 +33624000,mag,-0.19643712,-0.082566,0.43377817 +33628000,imu,-0.49370423,-0.13248563,-9.752758,-0.077678226,0.040320866,3.3897028 +33632000,mag,-0.1985998,-0.081328355,0.43538886 +33632000,imu,-0.50414366,-0.14370444,-9.777411,-0.07700377,0.03922955,3.3894567 +33636000,imu,-0.5179316,-0.13914856,-9.791187,-0.07593681,0.039765395,3.3901215 +33640000,imu,-0.542599,-0.14851011,-9.792881,-0.07479012,0.039329037,3.3935294 +33644000,imu,-0.5714931,-0.17438042,-9.762573,-0.074987695,0.03767247,3.3939104 +33648000,baro,488.52066 +33648000,mag,-0.1972681,-0.07310783,0.43524626 +33648000,imu,-0.5467037,-0.15211147,-9.790893,-0.07426596,0.03655153,3.3927457 +33652000,imu,-0.54889417,-0.115118556,-9.816818,-0.072010174,0.03375117,3.3899932 +33656000,imu,-0.55411744,-0.101159245,-9.814676,-0.07140963,0.029647622,3.3915153 +33660000,imu,-0.5246763,-0.11270632,-9.845783,-0.06828111,0.029138269,3.3922162 +33660000,mag,-0.20722555,-0.058906104,0.42958143 +33664000,imu,-0.5133289,-0.13666724,-9.857124,-0.06783918,0.026777167,3.3931723 +33668000,imu,-0.5095854,-0.11460353,-9.869423,-0.06748659,0.023818523,3.3948793 +33672000,imu,-0.54827404,-0.06039034,-9.9081,-0.06702693,0.024883242,3.390064 +33672000,mag,-0.20010403,-0.04912214,0.429946 +33676000,imu,-0.56349367,-0.06412861,-9.925293,-0.0672683,0.021518236,3.3893828 +33680000,imu,-0.54432905,-0.08410522,-9.929026,-0.065907925,0.021067673,3.3898628 +33684000,mag,-0.21094699,-0.04556856,0.42640737 +33684000,imu,-0.54393363,-0.08999543,-9.940916,-0.06328062,0.018241549,3.3895812 +33688000,imu,-0.53782445,-0.09060376,-9.951925,-0.06179737,0.014674635,3.39127 +33692000,imu,-0.5523448,-0.07410583,-9.964687,-0.061598875,0.01670704,3.3904772 +33696000,imu,-0.5869261,-0.04904623,-9.975105,-0.057673614,0.015210306,3.3888059 +33696000,mag,-0.2058187,-0.030331923,0.43061867 +33700000,imu,-0.5828787,-0.040610366,-10.010828,-0.058554865,0.010863757,3.3908224 +33704000,imu,-0.57336813,-0.05868111,-10.011297,-0.05926266,0.009886895,3.392126 +33704000,mag,-0.20642796,-0.022971805,0.4258855 +33708000,imu,-0.57051456,-0.048789427,-10.008038,-0.051591143,0.008488051,3.39391 +33712000,imu,-0.57405126,-0.03476939,-10.038006,-0.048067167,0.007972076,3.394662 +33716000,imu,-0.6133455,-0.013166689,-10.047726,-0.0500091,0.009401742,3.393608 +33720000,imu,-0.59658825,-0.03452661,-10.070026,-0.04821877,0.0067384434,3.3957021 +33720000,baro,488.43146 +33720000,mag,-0.20620279,-0.021838577,0.430359 +33724000,imu,-0.56224936,-0.05029795,-10.098759,-0.04631466,0.0055474225,3.3963714 +33728000,imu,-0.6059655,-0.033031926,-10.134012,-0.044941187,0.0059843026,3.3948493 +33732000,mag,-0.21344961,-0.012336106,0.4274519 +33732000,imu,-0.6258243,-0.055345487,-10.135197,-0.04648156,0.0076226867,3.394429 +33736000,imu,-0.5867158,-0.03209553,-10.086168,-0.047174666,0.00905486,3.3947191 +33740000,imu,-0.5836017,-0.006988685,-10.104708,-0.042126734,0.008338845,3.3935926 +33744000,imu,-0.59958565,0.01347046,-10.128723,-0.04006583,0.009031362,3.3961606 +33744000,mag,-0.20841658,-0.0022690475,0.4299759 +33748000,imu,-0.60153025,0.0054164585,-10.090071,-0.04584431,0.0074180216,3.3965306 +33752000,imu,-0.600596,-0.025267031,-10.079704,-0.048414372,0.003328084,3.3938835 +33756000,imu,-0.581463,0.0031731827,-10.079704,-0.04562562,0.0023592003,3.3956547 +33756000,mag,-0.20510906,0.0033354526,0.42710543 +33760000,imu,-0.59046036,0.021614123,-10.09932,-0.04502334,0.0035608548,3.394908 +33764000,imu,-0.64428943,0.029146811,-10.085442,-0.044480428,0.006510048,3.3972697 +33768000,mag,-0.20815364,0.016237369,0.4251312 +33768000,imu,-0.64989203,0.027855765,-10.051938,-0.043479793,0.006292038,3.3973336 +33772000,imu,-0.6139437,0.04427787,-10.08902,-0.041061807,0.002230001,3.3945222 +33776000,imu,-0.61908585,0.047215153,-10.089998,-0.040194277,0.006538633,3.395992 +33780000,mag,-0.21111317,0.022771928,0.43291965 +33780000,imu,-0.6309285,0.063904405,-10.070148,-0.041147843,0.010873742,3.3961484 +33784000,imu,-0.6282097,0.08522244,-10.057812,-0.041968342,0.008779141,3.3926992 +33788000,imu,-0.6284843,0.05571952,-10.059549,-0.042295054,0.0075933486,3.3907523 +33792000,imu,-0.6333176,0.048899874,-10.043558,-0.03980108,0.0046034134,3.3922043 +33792000,baro,488.45493 +33792000,mag,-0.20213023,0.026027484,0.43288678 +33796000,imu,-0.6409781,0.042185593,-10.036703,-0.037405416,0.0030574298,3.393349 +33800000,imu,-0.63582575,0.0820507,-10.039665,-0.037264325,0.0043803523,3.3939748 +33804000,mag,-0.2050598,0.048771895,0.43471846 +33804000,imu,-0.6342279,0.11414206,-10.029046,-0.034237567,0.004242666,3.3947978 +33808000,imu,-0.62557685,0.08471069,-10.023453,-0.03282738,0.0031740898,3.39724 +33812000,imu,-0.6146089,0.08891949,-9.987101,-0.032875907,0.0019017892,3.399069 +33816000,imu,-0.58877647,0.09708958,-9.982606,-0.030700568,0.0015916387,3.397452 +33816000,mag,-0.20389315,0.047437876,0.42946008 +33820000,imu,-0.5925074,0.096153826,-10.01041,-0.028899172,0.0018904568,3.3975391 +33824000,imu,-0.62702405,0.117724,-9.990386,-0.028772771,0.0034719356,3.3985846 +33828000,mag,-0.20370686,0.055980787,0.43633768 +33828000,imu,-0.62131363,0.13800097,-9.968746,-0.028815847,0.0027025682,3.3959985 +33832000,imu,-0.6133137,0.12976927,-9.983608,-0.025745258,0.0009854804,3.3960176 +33836000,mag,-0.20045221,0.061536323,0.42692664 +33836000,imu,-0.6068982,0.12119718,-9.969728,-0.020238273,0.0019489457,3.3943157 +33840000,imu,-0.6257553,0.11267387,-9.952005,-0.020867683,0.0014154662,3.3932476 +33844000,imu,-0.61514896,0.11073102,-9.970968,-0.02400838,0.0005619203,3.3963175 +33848000,imu,-0.6078013,0.14025027,-9.997707,-0.02062206,3.0021532e-05,3.3953214 +33852000,imu,-0.64909184,0.1686481,-9.988968,-0.02044469,-0.0020169471,3.3938265 +33852000,gps,488940.0,85455116.0,473976055.0,-1.17,-0.64,0.71 +33852000,mag,-0.19947207,0.06953152,0.4293822 +33856000,imu,-0.6830862,0.16390151,-9.997908,-0.023542032,-0.003359741,3.3900976 +33860000,imu,-0.6995147,0.15297018,-10.064385,-0.024284184,-0.003437091,3.3847876 +33864000,imu,-0.6772884,0.15719907,-10.072356,-0.025960885,-0.003444403,3.3816137 +33864000,baro,488.44556 +33864000,mag,-0.19857648,0.07736204,0.42799807 +33868000,imu,-0.61441916,0.17337927,-10.070121,-0.030851312,-0.005710814,3.380075 +33872000,imu,-0.61469245,0.2030821,-10.094677,-0.03641116,-0.0069418442,3.3755994 +33876000,mag,-0.18726084,0.08396725,0.43120435 +33876000,imu,-0.6319133,0.20482987,-10.102968,-0.03845156,-0.0071174875,3.3699765 +33880000,imu,-0.621017,0.18744428,-10.098026,-0.04431984,-0.009023254,3.3600583 +33884000,imu,-0.62749153,0.18477365,-10.094954,-0.04818437,-0.010260693,3.348058 +33888000,mag,-0.18816498,0.0992856,0.43129393 +33888000,imu,-0.624959,0.20967689,-10.126667,-0.05110543,-0.011340158,3.338199 +33892000,imu,-0.6527276,0.22192764,-10.138891,-0.057228386,-0.012984091,3.3246775 +33896000,imu,-0.66789365,0.21172655,-10.129393,-0.061618995,-0.018100759,3.312193 +33900000,mag,-0.19154815,0.101479806,0.43035194 +33900000,imu,-0.66774523,0.20701198,-10.1078415,-0.06573202,-0.025056753,3.298274 +33904000,imu,-0.6436837,0.221866,-10.137047,-0.07130509,-0.024218855,3.2844172 +33908000,imu,-0.62261885,0.24062896,-10.173473,-0.081364,-0.021420913,3.2664018 +33912000,imu,-0.62355244,0.22793567,-10.191762,-0.08613526,-0.021249365,3.2445617 +33912000,mag,-0.17924707,0.10775612,0.42685288 +33916000,imu,-0.59876204,0.23601225,-10.183406,-0.08735565,-0.023094628,3.228882 +33920000,imu,-0.60447145,0.2573163,-10.175733,-0.09224176,-0.02819384,3.213019 +33924000,mag,-0.17603613,0.11611093,0.43179452 +33924000,imu,-0.63115007,0.2696756,-10.219219,-0.09845202,-0.030317385,3.1897674 +33928000,imu,-0.651188,0.2953654,-10.248125,-0.103743345,-0.028742341,3.167048 +33932000,imu,-0.6375928,0.2729772,-10.210066,-0.103576005,-0.029877366,3.14569 +33936000,imu,-0.60806525,0.24905728,-10.182827,-0.10486012,-0.031868324,3.1227546 +33936000,baro,488.3235 +33936000,mag,-0.16877449,0.12282624,0.433603 +33940000,imu,-0.61621106,0.2685632,-10.202912,-0.10855164,-0.030944956,3.0996785 +33944000,imu,-0.5976913,0.29290003,-10.193598,-0.11344022,-0.033466473,3.0747828 +33948000,imu,-0.6103873,0.30614093,-10.197866,-0.11385246,-0.03400931,3.0470035 +33948000,mag,-0.16477661,0.1324908,0.42897367 +33952000,imu,-0.6313256,0.30348176,-10.194923,-0.11086208,-0.032299,3.0196745 +33956000,mag,-0.1650704,0.13416508,0.42897785 +33956000,imu,-0.63550436,0.29739997,-10.174494,-0.11089638,-0.03340676,2.995634 +33960000,imu,-0.641223,0.3197399,-10.124666,-0.1124045,-0.037230074,2.9708388 +33964000,imu,-0.6075927,0.33425966,-10.118557,-0.11444763,-0.03854211,2.942075 +33968000,imu,-0.6103713,0.31897974,-10.153597,-0.114446566,-0.034906015,2.9104955 +33972000,imu,-0.60981953,0.3141111,-10.136157,-0.11211461,-0.03618821,2.8806655 +33972000,mag,-0.15413773,0.13606639,0.43470684 +33976000,imu,-0.5752138,0.30843645,-10.097184,-0.10808907,-0.03740251,2.8570619 +33980000,imu,-0.583727,0.3217915,-10.086803,-0.10828975,-0.03517709,2.8285124 +33984000,imu,-0.59681594,0.33364987,-10.089402,-0.107547194,-0.03449705,2.796183 +33984000,mag,-0.15508746,0.14381544,0.43704894 +33988000,imu,-0.58875287,0.32119936,-10.063179,-0.1029886,-0.03687614,2.76779 +33992000,imu,-0.6048926,0.332072,-10.027838,-0.09711365,-0.039121263,2.7372446 +33996000,imu,-0.616053,0.35184592,-9.988064,-0.095830634,-0.037802033,2.704877 +33996000,mag,-0.14872468,0.1477042,0.43800753 +34000000,imu,-0.58244884,0.33948594,-9.958605,-0.093410626,-0.03763725,2.672989 +34004000,imu,-0.5573454,0.3451458,-9.967981,-0.08904217,-0.037866123,2.6444087 +34008000,mag,-0.13927726,0.15333772,0.4281691 +34008000,imu,-0.588604,0.34813195,-9.965912,-0.08702646,-0.03548409,2.614873 +34008000,baro,488.25305 +34012000,imu,-0.59030807,0.33601305,-9.945118,-0.08270097,-0.035946198,2.5836368 +34016000,imu,-0.59034383,0.35235348,-9.9167595,-0.07669144,-0.03640212,2.5539346 +34020000,imu,-0.59773684,0.35436302,-9.868021,-0.07245491,-0.034230575,2.5237226 +34020000,mag,-0.13819756,0.15340364,0.4313177 +34024000,imu,-0.5756624,0.3510393,-9.871502,-0.07139773,-0.0319596,2.494142 +34028000,imu,-0.55749017,0.35036087,-9.871088,-0.067377366,-0.031440843,2.4668322 +34032000,mag,-0.13669553,0.15624672,0.43558928 +34032000,imu,-0.55896866,0.34918723,-9.841683,-0.060793195,-0.033353224,2.4348865 +34036000,imu,-0.56654584,0.36742905,-9.838524,-0.05707456,-0.033945818,2.4020298 +34040000,imu,-0.5443536,0.36001348,-9.833799,-0.056883212,-0.038645692,2.371317 +34044000,mag,-0.12717927,0.15795207,0.43868628 +34044000,imu,-0.57046485,0.35484815,-9.836096,-0.053852618,-0.0417654,2.336279 +34048000,imu,-0.5837073,0.37255713,-9.837223,-0.046088092,-0.033925742,2.3052168 +34052000,imu,-0.5442856,0.4087446,-9.822586,-0.042752095,-0.028847026,2.2765715 +34056000,mag,-0.1250222,0.16030501,0.4320698 +34056000,imu,-0.5437225,0.40273076,-9.818957,-0.042337295,-0.031886455,2.2458072 +34060000,imu,-0.5621004,0.36378628,-9.802812,-0.03848254,-0.03176491,2.2159848 +34064000,imu,-0.5480337,0.36806417,-9.795292,-0.03746377,-0.032638222,2.185351 +34068000,mag,-0.1263281,0.16633819,0.43710005 +34068000,imu,-0.53514636,0.36957195,-9.783145,-0.034379862,-0.03540881,2.1531496 +34072000,imu,-0.5439607,0.37425476,-9.772404,-0.028020253,-0.036319796,2.1254191 +34076000,imu,-0.55890715,0.3663719,-9.747786,-0.02428616,-0.03584172,2.0969388 +34080000,mag,-0.12321563,0.17342845,0.42922267 +34080000,baro,488.23898 +34080000,imu,-0.55588025,0.3763889,-9.753239,-0.020994555,-0.031494543,2.0635853 +34084000,imu,-0.55550927,0.4106496,-9.793266,-0.021888493,-0.030557858,2.0340881 +34088000,imu,-0.5558536,0.4157542,-9.799604,-0.018467853,-0.03277207,2.0074573 +34092000,mag,-0.11281164,0.17729317,0.42697725 +34092000,imu,-0.54907143,0.4321909,-9.815988,-0.011081957,-0.031383935,1.97869 +34096000,imu,-0.5277976,0.42850918,-9.814806,-0.013056712,-0.031996038,1.9473387 +34100000,imu,-0.5309986,0.40695575,-9.816338,-0.013126152,-0.03429332,1.9167922 +34104000,imu,-0.5405966,0.39089143,-9.842167,-0.005044248,-0.03386781,1.8887872 +34104000,mag,-0.107694626,0.18213932,0.43195212 +34108000,imu,-0.5433576,0.39135635,-9.825106,0.0010803096,-0.032466438,1.859748 +34112000,imu,-0.55758524,0.4039033,-9.8310175,0.0017348699,-0.031427518,1.8303809 +34116000,mag,-0.09986809,0.17945237,0.43944195 +34116000,imu,-0.5461969,0.40637755,-9.842308,0.002572211,-0.031679735,1.8047998 +34120000,imu,-0.5506091,0.38920033,-9.811883,0.0060252673,-0.031384956,1.7795734 +34124000,imu,-0.5305597,0.40519542,-9.83091,0.009033658,-0.029818617,1.7506332 +34128000,mag,-0.09609372,0.17093587,0.43989217 +34128000,imu,-0.5116612,0.42799792,-9.868824,0.009685943,-0.02958568,1.7212987 +34132000,imu,-0.52801585,0.4183385,-9.875948,0.013976182,-0.032180447,1.6918676 +34136000,imu,-0.5428728,0.41630292,-9.860618,0.018215613,-0.03418988,1.6641734 +34140000,mag,-0.09633471,0.17794722,0.43281972 +34140000,imu,-0.5376666,0.41149342,-9.886932,0.014524464,-0.03278093,1.6365652 +34144000,imu,-0.51251525,0.4228026,-9.921934,0.014732195,-0.035362516,1.6082842 +34148000,imu,-0.51178825,0.4022926,-9.919622,0.018556971,-0.036141757,1.583801 +34152000,mag,-0.08650185,0.18582466,0.43427953 +34152000,imu,-0.525901,0.41881603,-9.893745,0.02077714,-0.03651279,1.561084 +34152000,baro,488.16855 +34156000,imu,-0.4900862,0.4484163,-9.876472,0.023430446,-0.036690682,1.5349758 +34160000,imu,-0.4830736,0.44169176,-9.905041,0.02529735,-0.035367854,1.5075613 +34164000,imu,-0.5234265,0.42512232,-9.923449,0.026164945,-0.03371341,1.4801459 +34164000,mag,-0.085908756,0.18728027,0.4403449 +34168000,imu,-0.52562416,0.42019022,-9.918907,0.02417654,-0.03344782,1.4540383 +34172000,imu,-0.50989735,0.4230457,-9.936594,0.024557456,-0.03682944,1.4330305 +34176000,mag,-0.088709705,0.19024025,0.42983958 +34176000,imu,-0.51976824,0.41719642,-9.919989,0.028985413,-0.03510249,1.4123307 +34180000,imu,-0.5211779,0.43314362,-9.8938675,0.031432573,-0.037864022,1.3880211 +34184000,imu,-0.5202652,0.43673348,-9.926895,0.033444148,-0.03889804,1.3660665 +34188000,imu,-0.51221055,0.45974845,-9.929356,0.03482693,-0.034327336,1.3434938 +34188000,mag,-0.079474494,0.19057411,0.43556878 +34192000,imu,-0.5009133,0.46102905,-9.962313,0.034917645,-0.035251968,1.3170395 +34196000,imu,-0.50443876,0.46252933,-9.988197,0.03808412,-0.035578057,1.2929835 +34200000,imu,-0.50158346,0.47068334,-9.940893,0.041034598,-0.03398628,1.269156 +34200000,mag,-0.08635094,0.1872767,0.43212363 +34204000,imu,-0.4932207,0.45172238,-9.92307,0.04022002,-0.03352008,1.2469714 +34208000,landed,0.0 +34208000,imu,-0.49143103,0.4396036,-9.933901,0.043594938,-0.032286704,1.2262475 +34212000,imu,-0.4920509,0.46932203,-9.952848,0.043590985,-0.030167365,1.2074883 +34212000,mag,-0.07519253,0.19495678,0.4346886 +34216000,imu,-0.48512578,0.48026878,-9.930164,0.04312205,-0.030111609,1.1863716 +34220000,imu,-0.5115321,0.4450692,-9.917406,0.044644423,-0.030311616,1.1633906 +34224000,imu,-0.5360033,0.426737,-9.933508,0.04344683,-0.029824728,1.142138 +34224000,mag,-0.07384102,0.19212428,0.4314549 +34224000,baro,488.15915 +34228000,imu,-0.5084535,0.4380073,-9.9109125,0.04435245,-0.03400031,1.1202226 +34232000,imu,-0.48338628,0.49245253,-9.9070835,0.0486302,-0.033596855,1.0984337 +34236000,mag,-0.07064709,0.19664977,0.4370834 +34236000,imu,-0.48984745,0.50772274,-9.902403,0.050183095,-0.03094854,1.0767145 +34240000,imu,-0.4969894,0.47934493,-9.8707905,0.047553197,-0.03295815,1.0560776 +34244000,imu,-0.5013188,0.483624,-9.859253,0.05001912,-0.03360049,1.0386891 +34248000,imu,-0.47969633,0.49588737,-9.85935,0.051317036,-0.034259826,1.0216051 +34248000,mag,-0.06471275,0.18996564,0.4296789 +34252000,gps,488647.0,85455083.0,473976014.0,-1.09,-0.56,0.68 +34252000,imu,-0.47937897,0.48048994,-9.849325,0.050576076,-0.032727916,1.0040272 +34256000,imu,-0.49063748,0.4832912,-9.85338,0.05184068,-0.031043222,0.9868372 +34260000,mag,-0.065752216,0.19553012,0.4359435 +34260000,imu,-0.47512496,0.48599082,-9.872435,0.055314403,-0.029108135,0.9686293 +34264000,imu,-0.4885904,0.4567184,-9.875673,0.0580528,-0.02999121,0.951035 +34268000,imu,-0.4969659,0.44626606,-9.8595085,0.058365654,-0.03179421,0.9351422 +34272000,mag,-0.059394147,0.20542754,0.43163592 +34272000,imu,-0.49346283,0.45385548,-9.853565,0.053325642,-0.030612383,0.9160444 +34276000,imu,-0.46792194,0.47875872,-9.837481,0.05261302,-0.030459777,0.89696074 +34280000,imu,-0.47606334,0.47665894,-9.803002,0.057039622,-0.030588312,0.8801177 +34284000,mag,-0.060770847,0.19796653,0.431471 +34284000,imu,-0.4722215,0.4723379,-9.837365,0.058920555,-0.03067796,0.86320865 +34288000,imu,-0.46633065,0.49475366,-9.847412,0.05372013,-0.030169666,0.8474265 +34292000,imu,-0.4950978,0.5289982,-9.850404,0.05087252,-0.031830974,0.83206767 +34296000,imu,-0.47353777,0.5127276,-9.857212,0.057676025,-0.031794097,0.81865674 +34296000,baro,488.0934 +34296000,mag,-0.053189788,0.20007206,0.4246504 +34300000,imu,-0.48331356,0.463456,-9.843335,0.058232374,-0.03158334,0.8019283 +34304000,imu,-0.4983713,0.48572105,-9.85631,0.053861003,-0.030761555,0.78645885 +34304000,mag,-0.059610285,0.20368865,0.43243968 +34308000,imu,-0.4940356,0.46272075,-9.848511,0.04932476,-0.028659284,0.7749561 +34312000,imu,-0.47021642,0.44870383,-9.850438,0.049068242,-0.026045483,0.75923914 +34316000,imu,-0.48134327,0.4830173,-9.866558,0.05356942,-0.023330249,0.7430504 +34320000,imu,-0.4567101,0.48386803,-9.867146,0.055330686,-0.024353618,0.72803545 +34320000,mag,-0.059418015,0.20590559,0.4307131 +34324000,imu,-0.4445924,0.4771694,-9.853161,0.053723343,-0.024775533,0.7138371 +34328000,imu,-0.46028244,0.46984756,-9.878809,0.05190067,-0.026578646,0.7020212 +34332000,mag,-0.055023015,0.19967516,0.4387384 +34332000,imu,-0.46454453,0.4608547,-9.892532,0.053471036,-0.02715567,0.69049037 +34336000,imu,-0.50347173,0.45840672,-9.875795,0.05364529,-0.026364185,0.6783035 +34340000,imu,-0.47256052,0.46518946,-9.894154,0.052574705,-0.025438564,0.6625158 +34344000,imu,-0.46094632,0.4792891,-9.911047,0.05583582,-0.025100501,0.65130574 +34344000,mag,-0.048921265,0.20322974,0.42933622 +34348000,imu,-0.4373313,0.5065908,-9.883282,0.054968752,-0.027064815,0.63774997 +34352000,imu,-0.42376316,0.5114323,-9.870934,0.050764065,-0.026839571,0.6237106 +34356000,mag,-0.051753797,0.2003999,0.43384945 +34356000,imu,-0.46043545,0.48240414,-9.893294,0.04675596,-0.026032249,0.61909986 +34360000,imu,-0.46639973,0.47688067,-9.898348,0.049769867,-0.026738582,0.60775316 +34364000,imu,-0.4696251,0.50748795,-9.897297,0.052256368,-0.030140847,0.5911036 +34368000,mag,-0.04686968,0.20557143,0.42933965 +34368000,baro,488.12628 +34368000,imu,-0.44938314,0.50316197,-9.906547,0.05062912,-0.031576455,0.5805111 +34372000,imu,-0.43738365,0.45959628,-9.928774,0.05072764,-0.028253013,0.5699634 +34376000,imu,-0.45261437,0.46267378,-9.937172,0.04899761,-0.026782405,0.56049323 +34380000,mag,-0.050053988,0.2059138,0.4236625 +34380000,imu,-0.42683217,0.5048087,-9.924234,0.048250005,-0.027773838,0.55376816 +34384000,imu,-0.4424297,0.5272913,-9.918045,0.049146857,-0.0289606,0.5401752 +34388000,imu,-0.4737357,0.51704115,-9.933613,0.05300316,-0.026876263,0.52616733 +34392000,mag,-0.041976508,0.20350377,0.43489063 +34392000,imu,-0.4373805,0.48172873,-9.906074,0.051512543,-0.025592504,0.5162915 +34396000,imu,-0.45873106,0.49046597,-9.857901,0.045451064,-0.023532216,0.5071778 +34400000,imu,-0.49291202,0.5090719,-9.876003,0.043768823,-0.019661738,0.4993677 +34404000,imu,-0.44769216,0.48905557,-9.893053,0.044009555,-0.022379272,0.4900341 +34404000,mag,-0.0425837,0.20145755,0.4315964 +34408000,imu,-0.43109733,0.4873821,-9.899309,0.042314213,-0.02176981,0.48098478 +34412000,imu,-0.42861903,0.51968163,-9.905597,0.041822962,-0.018206628,0.47082153 +34412000,mag,-0.045626972,0.20208463,0.4312556 +34416000,imu,-0.4163373,0.5148857,-9.876723,0.04264896,-0.016112987,0.46067813 +34420000,imu,-0.41971767,0.47903147,-9.845658,0.04206194,-0.015405194,0.44989765 +34424000,imu,-0.42750815,0.47674635,-9.859291,0.043095816,-0.013503617,0.44098637 +34428000,mag,-0.04148332,0.20406066,0.4316104 +34428000,imu,-0.4311273,0.50711507,-9.880083,0.043947104,-0.013802722,0.43572825 +34432000,imu,-0.3930415,0.50988424,-9.893118,0.04458319,-0.015485039,0.42662778 +34436000,imu,-0.3970201,0.51058096,-9.914396,0.04720031,-0.014881973,0.41708156 +34440000,imu,-0.41552323,0.5067951,-9.900757,0.04416076,-0.019437384,0.40960255 +34440000,baro,487.97604 +34440000,mag,-0.04017139,0.20819424,0.43237716 +34444000,imu,-0.40778565,0.48618758,-9.878298,0.039047703,-0.01922472,0.4029577 +34448000,imu,-0.42097855,0.4814267,-9.871906,0.041656576,-0.018554369,0.3966636 +34452000,mag,-0.039992787,0.21061204,0.42900968 +34452000,imu,-0.42293215,0.4884636,-9.858182,0.04279357,-0.022188514,0.3864908 +34456000,imu,-0.42593682,0.49802098,-9.85414,0.040932924,-0.021687591,0.3772233 +34460000,imu,-0.4190302,0.48675218,-9.8667345,0.03847194,-0.018996846,0.37110955 +34464000,imu,-0.4427899,0.47452784,-9.906848,0.03901349,-0.019512828,0.36074078 +34464000,mag,-0.040219888,0.20792414,0.43060786 +34468000,imu,-0.44359696,0.48657236,-9.915031,0.040392805,-0.023537146,0.35578957 +34472000,imu,-0.40764672,0.48846582,-9.884107,0.040368907,-0.022460325,0.3528697 +34476000,mag,-0.03718518,0.20506458,0.4304687 +34476000,imu,-0.42430407,0.4588418,-9.877804,0.038035743,-0.01792522,0.3440635 +34480000,imu,-0.42735216,0.48394474,-9.889385,0.034364134,-0.017395068,0.3395332 +34484000,imu,-0.4015071,0.5137149,-9.902736,0.03134752,-0.02036059,0.33320415 +34488000,imu,-0.41914806,0.48628348,-9.889271,0.031013438,-0.018310165,0.3254904 +34488000,mag,-0.03848107,0.20394923,0.43639007 +34492000,imu,-0.45301515,0.48563546,-9.857897,0.034939427,-0.01522607,0.322232 +34496000,imu,-0.46570116,0.515945,-9.867556,0.033236567,-0.015327741,0.31660062 +34500000,imu,-0.45742038,0.5185736,-9.883385,0.03085198,-0.01550103,0.30720025 +34500000,mag,-0.037313897,0.21058826,0.43397805 +34504000,imu,-0.44172508,0.4745957,-9.899675,0.031254955,-0.016685886,0.29847905 +34508000,imu,-0.4206517,0.47457474,-9.903815,0.02916789,-0.016557192,0.29624203 +34512000,imu,-0.41291535,0.4876319,-9.878784,0.03223794,-0.014968816,0.29349837 +34512000,baro,487.95258 +34512000,mag,-0.031185217,0.20662235,0.42890522 +34516000,imu,-0.40226513,0.48677963,-9.89819,0.03221297,-0.01146714,0.29055998 +34520000,imu,-0.3941944,0.53499466,-9.871443,0.028719978,-0.010597706,0.2857337 +34524000,imu,-0.4257288,0.51679796,-9.865374,0.030129023,-0.014239609,0.27790013 +34524000,mag,-0.03851068,0.21052599,0.43330464 +34528000,imu,-0.41586334,0.5162519,-9.9104185,0.02858994,-0.015710687,0.2715735 +34532000,imu,-0.41236994,0.5011913,-9.879741,0.0281225,-0.013303927,0.26308358 +34536000,mag,-0.03560231,0.20607284,0.43721518 +34536000,imu,-0.4443128,0.47334707,-9.844684,0.029066268,-0.009976509,0.2591444 +34540000,imu,-0.4346448,0.48061278,-9.858818,0.029023184,-0.011578939,0.25630182 +34544000,imu,-0.41888118,0.4515693,-9.859872,0.029177567,-0.013634828,0.2509211 +34548000,imu,-0.40654102,0.46137363,-9.857527,0.029609257,-0.012003348,0.24469417 +34548000,mag,-0.037181664,0.20792735,0.42772147 +34552000,imu,-0.40326646,0.47556946,-9.892919,0.030870626,-0.011513462,0.2398366 +34556000,imu,-0.42099684,0.4808888,-9.924401,0.027592,-0.011578097,0.23564984 +34560000,imu,-0.40183532,0.4834458,-9.913244,0.022843054,-0.009572264,0.22920585 +34560000,mag,-0.039367296,0.21148612,0.43328938 +34564000,imu,-0.39178473,0.4716956,-9.913728,0.023938775,-0.011480978,0.22737995 +34568000,imu,-0.4141659,0.47414836,-9.9267025,0.024296239,-0.013615246,0.2266488 +34572000,imu,-0.41445786,0.4850972,-9.924923,0.022967028,-0.011040425,0.21933301 +34572000,mag,-0.030997837,0.20856723,0.4288857 +34576000,imu,-0.42319053,0.4697335,-9.898881,0.02054734,-0.009613253,0.21306606 +34580000,imu,-0.4375437,0.4733742,-9.88673,0.017619498,-0.010193823,0.20934837 +34584000,imu,-0.42010534,0.4909695,-9.918524,0.018078629,-0.01245319,0.20639749 +34584000,baro,487.8164 +34584000,mag,-0.03192934,0.20441896,0.43432614 +34588000,imu,-0.4149611,0.48486617,-9.919736,0.021102352,-0.013639592,0.20309377 +34592000,imu,-0.4182375,0.46258062,-9.938339,0.020422313,-0.010589904,0.19696043 +34596000,imu,-0.43086928,0.46394426,-9.952428,0.020730583,-0.0112209665,0.19392753 +34596000,mag,-0.03354056,0.20890604,0.42958626 +34600000,imu,-0.4316681,0.46663365,-9.905387,0.020415561,-0.013372106,0.18854336 +34604000,imu,-0.40683433,0.4622635,-9.927735,0.019541096,-0.011916521,0.1846259 +34608000,mag,-0.030059848,0.22208373,0.42964157 +34608000,imu,-0.40858114,0.46902704,-9.936348,0.019847937,-0.013832178,0.18536331 +34612000,imu,-0.43894708,0.47417164,-9.926864,0.015178537,-0.012784985,0.18017007 +34616000,imu,-0.45495787,0.4830807,-9.95144,0.016160969,-0.009911852,0.17534639 +34620000,mag,-0.02674538,0.21389325,0.43403205 +34620000,imu,-0.4220351,0.47071314,-9.90972,0.017251572,-0.012486177,0.17371126 +34624000,imu,-0.3662949,0.47377098,-9.896612,0.0147561375,-0.009793518,0.17096253 +34628000,imu,-0.39220878,0.510373,-9.949579,0.014700131,-0.0079887,0.16941251 +34632000,imu,-0.43007427,0.530567,-9.949265,0.015731504,-0.011222032,0.16685997 +34632000,mag,-0.025222996,0.21092251,0.43019274 +34636000,imu,-0.3933944,0.51771814,-9.897501,0.017675577,-0.01106087,0.15948361 +34640000,imu,-0.37983006,0.47523043,-9.916636,0.014049607,-0.010187167,0.15588997 +34644000,imu,-0.4145947,0.463203,-9.937452,0.011349006,-0.011072217,0.15743999 +34644000,mag,-0.027723474,0.21589112,0.42259338 +34648000,imu,-0.43472975,0.47354117,-9.949903,0.01405738,-0.011271715,0.15592708 +34652000,imu,-0.41599643,0.51339704,-9.948212,0.014231185,-0.01163938,0.14978299 +34652000,gps,488361.0,85455056.0,473975976.0,-1.02,-0.51,0.71 +34656000,imu,-0.38736212,0.50875026,-9.928725,0.012771854,-0.009755938,0.1491569 +34656000,mag,-0.026665632,0.21439938,0.43210375 +34656000,baro,487.85397 +34660000,imu,-0.41938165,0.4708911,-9.928646,0.0114183165,-0.009721176,0.14958946 +34664000,imu,-0.45929188,0.4943196,-9.921177,0.010676612,-0.012390153,0.14217295 +34668000,imu,-0.428859,0.5017169,-9.943894,0.010815924,-0.009767053,0.13697247 +34668000,mag,-0.024828332,0.21627101,0.42710155 +34672000,imu,-0.4019253,0.4863935,-9.938573,0.009918865,-0.0085017225,0.13399458 +34676000,imu,-0.4102155,0.48214325,-9.9432535,0.009487564,-0.0061362917,0.13120082 +34680000,imu,-0.42557335,0.5001047,-9.958889,0.011861692,-0.0052566617,0.12953551 +34680000,mag,-0.026864069,0.2087687,0.43275863 +34684000,imu,-0.4258932,0.5057317,-9.940234,0.011667646,-0.0075480663,0.12925415 +34688000,imu,-0.4183147,0.48586172,-9.935881,0.012590153,-0.008947268,0.12835515 +34692000,mag,-0.029909674,0.20831977,0.43195307 +34692000,imu,-0.40714946,0.4774046,-9.962715,0.0123396255,-0.008428422,0.12795164 +34696000,imu,-0.42165256,0.48879614,-9.961029,0.010018239,-0.008884672,0.1253245 +34700000,imu,-0.4362346,0.4897373,-9.936846,0.012540899,-0.00916208,0.12350203 +34704000,mag,-0.031470552,0.21548145,0.431762 +34704000,imu,-0.43141317,0.49036667,-9.9513645,0.014388171,-0.010665825,0.12097598 +34708000,imu,-0.41254172,0.49159986,-9.961623,0.013258592,-0.011524296,0.117003165 +34712000,imu,-0.4231335,0.4794791,-9.95911,0.009907284,-0.011966763,0.11470119 +34716000,mag,-0.024457935,0.2131534,0.41888008 +34716000,imu,-0.4344452,0.482145,-9.941002,0.007737133,-0.014365067,0.11042168 +34720000,imu,-0.40387803,0.48539346,-9.927633,0.009826945,-0.012296309,0.10900208 +34724000,imu,-0.39249474,0.47961503,-9.926262,0.009671041,-0.01025833,0.10896738 +34728000,baro,487.75537 +34728000,imu,-0.4128341,0.46433386,-9.922808,0.0053272876,-0.01189696,0.108387165 +34728000,mag,-0.027952764,0.20526706,0.42807576 +34732000,imu,-0.41625696,0.467234,-9.9223995,0.0059237736,-0.010709844,0.10334084 +34736000,imu,-0.41189992,0.50238365,-9.929565,0.008768524,-0.009704067,0.10009618 +34740000,imu,-0.40088138,0.50993407,-9.91459,0.0068964637,-0.010517331,0.10148017 +34740000,mag,-0.025947662,0.21280298,0.4344212 +34744000,imu,-0.4182547,0.5099268,-9.925431,0.007995853,-0.008429994,0.103712544 +34748000,mag,-0.016492348,0.21428183,0.42778933 +34748000,imu,-0.40862408,0.48687705,-9.916134,0.005696396,-0.009162555,0.10071964 +34752000,imu,-0.37429643,0.45866746,-9.888872,0.0017957255,-0.009801116,0.09619118 +34756000,imu,-0.39841402,0.46410847,-9.926708,0.004570055,-0.010016071,0.09590555 +34760000,imu,-0.41099733,0.47295994,-9.932238,0.005419687,-0.011541994,0.093564846 +34764000,mag,-0.020704981,0.21579544,0.42937824 +34764000,imu,-0.42152148,0.48692334,-9.915728,0.0056100097,-0.010880054,0.09191373 +34768000,imu,-0.3992526,0.45634192,-9.924295,0.006809717,-0.010787539,0.08923349 +34772000,imu,-0.3768549,0.44331655,-9.93733,0.007694094,-0.011066379,0.08687906 +34776000,imu,-0.39575958,0.4761341,-9.933732,0.004382525,-0.010154969,0.08408979 +34776000,mag,-0.019771244,0.2118134,0.43021727 +34780000,imu,-0.4228747,0.5035898,-9.918034,0.0051975404,-0.012262121,0.08308792 +34784000,imu,-0.3920365,0.48764333,-9.90259,0.0069849743,-0.013224954,0.0831466 +34788000,mag,-0.02811247,0.21619856,0.43360108 +34788000,imu,-0.36702222,0.45361155,-9.897743,0.0053264867,-0.009618814,0.08041367 +34792000,imu,-0.3709747,0.4537996,-9.906952,0.005445756,-0.008136515,0.07841699 +34796000,imu,-0.35845453,0.48938686,-9.894597,0.0057736784,-0.008758937,0.077313945 +34800000,mag,-0.029348008,0.21995376,0.4337516 +34800000,imu,-0.37468362,0.5003782,-9.908531,0.0039072772,-0.007025343,0.08098252 +34800000,baro,487.70844 +34804000,imu,-0.40574872,0.47583908,-9.941519,0.0032977692,-0.005448208,0.07810669 +34808000,imu,-0.42682132,0.47922564,-9.949331,0.0028384007,-0.0038361435,0.07206696 +34812000,mag,-0.029648867,0.21156634,0.43048856 +34812000,imu,-0.43170398,0.45829648,-9.934883,-0.00038370828,-0.005518777,0.07495103 +34816000,imu,-0.37293544,0.4604279,-9.907998,0.0008026072,-0.005690795,0.07269202 +34820000,mag,-0.028583482,0.20856711,0.42284316 +34820000,imu,-0.3941619,0.45809406,-9.886105,-0.00085827376,-0.003924136,0.06598692 +34824000,imu,-0.4518186,0.4613829,-9.910746,-0.003516938,-0.004315222,0.065549746 +34828000,imu,-0.39163232,0.4807449,-9.940634,-0.0012422364,-0.0035297528,0.06793237 +34832000,imu,-0.35800225,0.500431,-9.92515,0.0020476754,-0.006643102,0.067038156 +34836000,mag,-0.025745133,0.21244304,0.42942768 +34836000,imu,-0.3935843,0.50063765,-9.910542,0.0021166191,-0.010099914,0.06548086 +34840000,imu,-0.4054016,0.45441192,-9.8868475,-0.00027402263,-0.007864003,0.064105324 +34844000,imu,-0.36913586,0.4479359,-9.899408,-0.0024373052,-0.0068474617,0.06424463 +34848000,mag,-0.022850668,0.20512953,0.43363002 +34848000,imu,-0.36890954,0.48045582,-9.919372,-0.0015841776,-0.007354594,0.06254374 +34852000,imu,-0.38606894,0.46421525,-9.918586,0.00056580646,-0.007052987,0.058424756 +34856000,imu,-0.39234266,0.4569066,-9.906668,-0.0010520156,-0.006876489,0.056622814 +34860000,mag,-0.021575173,0.20995277,0.42935523 +34860000,imu,-0.37372077,0.49879268,-9.897207,-0.0031767571,-0.005034665,0.05976136 +34864000,imu,-0.36095825,0.5114005,-9.901039,-0.0044749174,-0.00440717,0.05962591 +34868000,imu,-0.38545835,0.47905427,-9.888583,-0.002548134,-0.0066518914,0.056890246 +34872000,baro,487.7413 +34872000,imu,-0.39911184,0.4883645,-9.881008,-0.0008731093,-0.007966877,0.056897912 +34872000,mag,-0.020488143,0.20935227,0.42953515 +34876000,imu,-0.39482665,0.49673033,-9.901136,-0.00011001804,-0.004735427,0.05473584 +34880000,imu,-0.3831567,0.45274216,-9.907022,0.0018009105,-0.0056247697,0.05509573 +34880000,mag,-0.024833394,0.20955694,0.42751887 +34884000,imu,-0.38167113,0.4486494,-9.900441,0.001624066,-0.008875453,0.055559415 +34888000,imu,-0.38751987,0.46313727,-9.906036,-0.00043336416,-0.007363069,0.05119709 +34892000,imu,-0.38311982,0.46900457,-9.878204,0.00073789293,-0.0059335255,0.050654005 +34896000,imu,-0.366701,0.46246314,-9.891745,0.0023417093,-0.0101463385,0.05517622 +34896000,mag,-0.019333951,0.20872848,0.43396816 +34900000,imu,-0.39242655,0.44133472,-9.927449,0.0020761893,-0.012195673,0.053209957 +34904000,imu,-18.690708,15.845883,-26.753544,0.6274264,0.5930605,-0.021546436 +34908000,imu,-31.328869,26.810429,-38.756847,0.6267718,1.6240549,0.480255 +34908000,mag,-0.027032414,0.21720043,0.4299188 +34912000,imu,-48.111614,69.013016,-82.2147,0.00014865455,1.0225166,0.5258131 +34916000,imu,-35.490707,57.961613,-70.44076,-0.0037907083,-0.007783771,0.00072106073 +34920000,imu,-0.3595069,0.25684863,-10.371541,-0.0033619485,-0.009774186,0.0003136534 +34920000,mag,-0.02036488,0.21506569,0.4328852 +34924000,imu,-0.19517761,0.32698947,-10.5004635,-0.0077457614,-0.016458284,-0.0015898118 +34928000,imu,-0.34402364,0.76886624,-11.311893,-0.018506208,-0.028830128,0.0028969073 +34932000,imu,-0.7139927,1.4639134,-12.428729,-0.033553172,-0.059561428,0.01728024 +34932000,mag,-0.030820744,0.21872476,0.42357102 +34936000,imu,-0.7866024,1.7056715,-12.784569,-0.03973271,-0.10880827,0.03511116 +34940000,mag,-0.027506476,0.21588303,0.43411782 +34940000,imu,-0.5470675,1.3055798,-12.436894,-0.04148186,-0.14929466,0.047890536 +34944000,imu,-0.2585815,0.72251254,-11.968727,-0.050915245,-0.1755658,0.054014146 +34944000,baro,487.6521 +34948000,imu,-0.23731935,0.49595803,-10.680889,-0.050884295,-0.18456574,0.053224422 +34952000,imu,-0.44757697,0.63056713,-8.841444,-0.04064496,-0.17596978,0.053492296 +34956000,mag,-0.02631358,0.21407624,0.42601103 +34956000,imu,-0.6141384,0.8167162,-7.5238857,-0.018981887,-0.15622081,0.05522111 +34960000,imu,-0.7745019,1.0093441,-6.51188,0.0088273315,-0.12700821,0.058285676 +34964000,imu,-0.92463124,1.1308802,-5.7247496,0.040994845,-0.08904083,0.063359685 +34968000,mag,-0.025947208,0.21831422,0.43307844 +34968000,imu,-1.0376655,1.1912483,-5.153824,0.079180956,-0.046155013,0.0647266 +34972000,imu,-1.1390412,1.2730983,-4.716072,0.11917742,-0.0014518397,0.06649605 +34976000,imu,0.15555957,2.6826205,-5.5416822,0.068303294,0.12399035,0.07155149 +34980000,mag,-0.021782417,0.20913957,0.42746085 +34980000,imu,0.3172348,3.085259,-5.6014643,-0.001480318,0.27190974,0.07696076 +34984000,imu,-0.8844938,2.158155,-4.502557,-0.0012979431,0.36121005,0.07490088 +34988000,imu,-0.001034081,16.947979,-19.321634,-0.0038845905,0.19991492,0.02673208 +34988000,mag,-0.029011613,0.21718541,0.4300464 +34992000,imu,0.16208994,18.545855,-22.095413,-0.0077484054,-0.0033898307,-0.007231128 +34996000,imu,-0.38658518,2.7863293,-9.924686,-0.006580095,-0.003794109,0.0042079263 +35000000,imu,-0.18983337,0.15475385,-9.923388,-0.00022820159,-0.00769726,0.0055447775 +35004000,mag,-0.027095098,0.21160899,0.42437536 +35004000,imu,-0.20436089,0.15582643,-9.917179,-0.0017172984,-0.0061712665,0.004721786 +35008000,imu,-0.22386172,0.1739376,-9.924203,-0.00405949,-0.0030303053,0.0038395224 +35012000,imu,-0.23532654,0.1368226,-9.909976,0.0007601411,-0.004601805,0.0036696682 +35016000,imu,-0.25430506,0.154994,-9.883098,-0.000781792,-0.0056336536,0.0034418479 +35016000,mag,-0.029924393,0.21218391,0.42415917 +35016000,baro,487.57697 +35020000,imu,-0.2553562,0.18130352,-9.868788,-0.0060534296,-0.0048357006,0.0012842817 +35024000,imu,-0.2382385,0.16076577,-9.891331,-0.0056395745,-0.004924124,0.0011844127 +35028000,imu,-0.20374718,0.17862748,-9.908356,-0.0029609175,-0.0065650265,0.0015835016 +35028000,mag,-0.026606074,0.20910558,0.42906657 +35032000,imu,-0.17393602,0.19835667,-9.898327,-0.00040247786,-0.006512351,0.00063059083 +35036000,imu,-0.20201533,0.20748526,-9.88083,-0.0006173929,-0.005101525,-0.0022464583 +35040000,imu,-0.21828243,0.19141142,-9.848981,-0.0017158831,-0.0058308323,-0.00056933356 +35040000,mag,-0.024479363,0.20863366,0.43088713 +35044000,imu,-0.20932864,0.21141177,-9.8818445,-0.001708379,-0.007353882,0.0020542964 +35048000,imu,-0.24017617,0.20757867,-9.918467,-0.0016511485,-0.0061918516,0.0017882069 +35052000,mag,-0.03034215,0.21286249,0.4297933 +35052000,imu,-0.21610464,0.18912917,-9.903522,0.0003105457,-0.004504314,0.0024748167 +35052000,gps,488111.0,85455032.0,473975943.0,-0.19999999,0.0,-0.01 +35056000,imu,-0.1987761,0.17510504,-9.8986845,0.00043407897,-0.0062129516,0.0010435894 +35060000,imu,-0.24442592,0.148765,-9.903574,0.00036424084,-0.0053733326,-0.00024664414 +35064000,mag,-0.02625443,0.22063775,0.42779654 +35064000,imu,-0.21296597,0.18019313,-9.934837,0.00085200847,-0.0049060723,-0.0007991797 +35068000,imu,-0.19172563,0.17122911,-9.915558,-0.0008445989,-0.0058216234,-0.0015727794 +35072000,imu,-0.2057826,0.19371529,-9.870089,-0.0030755454,-0.0036308204,1.4132467e-05 +35076000,mag,-0.027531821,0.21504821,0.43205386 +35076000,imu,-0.1946157,0.19622722,-9.885952,-0.00536013,-0.0015478303,-0.0022057977 +35080000,imu,-0.20671377,0.14404474,-9.90766,-0.003281899,-0.0026886151,-0.0029093297 +35084000,imu,-0.21491694,0.16075483,-9.899885,-0.00015150708,-0.0051135016,-0.00092959806 +35088000,imu,-0.2229571,0.18648174,-9.913323,0.0013205111,-0.0065707183,-0.002275941 +35088000,baro,487.6333 +35088000,mag,-0.020832276,0.2123712,0.42408732 +35092000,imu,-0.22888191,0.19502999,-9.934229,-0.00032686596,-0.007005523,-0.00135286 +35096000,imu,-0.21451175,0.18842115,-9.917371,-0.0030280554,-0.007791976,-0.0004375404 +35100000,imu,-0.21271873,0.1706453,-9.905917,-0.002093569,-0.0072726533,-0.0004294728 +35100000,mag,-0.026242927,0.21310394,0.42604634 +35104000,imu,-0.22997965,0.15970631,-9.907302,-0.0035518522,-0.0043280963,-0.0017180747 +35108000,imu,-0.19821131,0.15085012,-9.906417,-0.004697647,-0.003911513,-0.0022275725 +35112000,imu,-0.18711267,0.18680193,-9.907487,-0.0029717141,-0.0056546773,0.00090024783 +35112000,mag,-0.024782343,0.21519658,0.4276939 +35116000,imu,-0.22211677,0.1949815,-9.901121,-0.0009919006,-0.0031009368,0.001619807 +35120000,imu,-0.23065862,0.17354062,-9.916992,0.000856183,-0.0011943761,-0.00038735406 +35124000,imu,-0.22483152,0.17948835,-9.924079,-0.00092375727,-0.0024819975,0.00077742053 +35124000,mag,-0.029390194,0.21597835,0.42865363 +35128000,imu,-0.23939112,0.1721562,-9.913785,-0.00271901,-0.0041364958,-0.0007214737 +35132000,imu,-0.21819419,0.17454673,-9.875612,0.00043505288,-0.007677146,-0.00051602075 +35136000,imu,-0.17488387,0.2018328,-9.862879,-0.0017284644,-0.0066142855,-0.00028995582 +35136000,mag,-0.030385077,0.22113737,0.43994904 +35140000,imu,-0.19238278,0.19359072,-9.899712,-0.0062349597,-0.0032482059,0.0006866182 +35144000,imu,-0.23747972,0.17752856,-9.890051,-0.0042444346,-0.0042233635,0.0021652847 +35148000,imu,-0.2296018,0.18411924,-9.893633,-0.004636098,-0.0051909066,-0.0010115327 +35148000,mag,-0.027806915,0.2128822,0.43461767 +35152000,imu,-0.21751009,0.17627932,-9.898442,-0.0041360725,-0.00461998,-0.0032682018 +35156000,imu,-0.23394364,0.1820917,-9.893932,-0.0034704704,-0.0051884814,-0.00095543393 +35160000,mag,-0.02731806,0.21370775,0.43772453 +35160000,baro,487.62863 +35160000,imu,-0.24544607,0.19837022,-9.896962,-0.0025642442,-0.0069707814,-0.001059639 +35164000,imu,-0.260237,0.17642811,-9.901108,-0.00033483512,-0.0059537194,-0.0027450768 +35168000,imu,-0.22937998,0.18382539,-9.919341,-0.00015403332,-0.004041344,0.00018512686 +35172000,imu,-0.23993993,0.21212348,-9.92372,-0.00023106839,-0.004827405,0.0017194073 +35172000,mag,-0.029847281,0.21472472,0.4316747 +35176000,imu,-0.26580042,0.21500957,-9.924765,-0.002192161,-0.003976219,-7.074376e-05 +35180000,imu,-0.2508142,0.21044575,-9.922949,-0.0023799762,-0.006165685,-0.00080465205 +35184000,imu,-0.24199021,0.19724022,-9.916311,-0.0013148219,-0.006972552,-0.0011679 +35184000,mag,-0.025485775,0.22046201,0.43240777 +35188000,imu,-0.24852511,0.17990956,-9.904093,-0.0018060522,-0.004730757,-0.0055539426 +35192000,imu,-0.2492626,0.18574278,-9.9161,0.00028794783,-0.0040331315,-0.003093131 +35196000,imu,-0.22481067,0.18811606,-9.939367,-0.0012781214,-0.0042686253,0.000989205 +35196000,mag,-0.020972714,0.20974573,0.42691913 +35200000,imu,-0.21530095,0.20410946,-9.915691,-0.003960978,-0.00680161,0.00089794357 +35204000,imu,-0.21252143,0.238126,-9.867014,-0.0029355183,-0.006078756,-0.00044266318 +35208000,mag,-0.030156221,0.21276039,0.43172303 +35208000,imu,-0.2095143,0.19433014,-9.867742,-0.00340885,-0.0057686237,-0.0021673222 +35208000,landed,0.0 +35212000,imu,-0.2216874,0.17093393,-9.908748,-0.0020994244,-0.007312868,-0.0012339124 +35216000,imu,-0.24670213,0.21285903,-9.892284,-0.0030203837,-0.0072412593,0.0025945015 +35220000,mag,-0.022964275,0.21695718,0.43488568 +35220000,imu,-0.2516738,0.21987282,-9.883053,-0.0010243261,-0.005942402,0.0013615992 +35224000,imu,-0.27558878,0.19763422,-9.915428,-0.0014895083,-0.0034960723,-0.002343948 +35228000,imu,-0.23900563,0.1892313,-9.903734,-0.0062385104,-0.0035504745,0.00037549107 +35232000,mag,-0.03140435,0.21911307,0.42907307 +35232000,imu,-0.22011963,0.18894152,-9.890898,-0.0028495095,-0.0038854673,-0.001049831 +35232000,baro,487.57697 +35236000,imu,-0.23429863,0.19486809,-9.894463,-0.0006371275,-0.0055243038,-0.0039609023 +35240000,imu,-0.19181666,0.17275812,-9.889804,-0.003166445,-0.0081374785,-0.001869789 +35244000,mag,-0.027039165,0.21978542,0.4305891 +35244000,imu,-0.19144115,0.17976099,-9.893316,-0.003971453,-0.003518704,-0.00034144093 +35248000,imu,-0.17791723,0.19956401,-9.885857,-0.0046946974,-9.428291e-05,-0.001117189 +35252000,imu,-0.20873901,0.20873451,-9.874273,-0.0032863293,-0.0037488304,-0.0024737422 +35256000,mag,-0.026894875,0.21212144,0.42827752 +35256000,imu,-0.25954524,0.21843952,-9.895768,-0.002431194,-0.0059895795,-0.0041209934 +35260000,imu,-0.23685664,0.21997675,-9.888447,-0.0038202212,-0.0069533926,-0.0017821239 +35264000,imu,-0.22456148,0.19068274,-9.858273,-0.0023706479,-0.005078045,0.0010548421 +35268000,imu,-0.23236854,0.18873838,-9.85833,0.00012677879,-0.0035934455,0.0019289996 +35268000,mag,-0.026836352,0.2193726,0.43380573 +35272000,imu,-0.23104505,0.20913006,-9.905161,0.00012650281,-0.0046704737,0.0011658408 +35276000,imu,-0.21279414,0.21058168,-9.921367,-0.0014003232,-0.0041420795,-0.0015803439 +35280000,imu,-0.22837788,0.23118709,-9.905115,-0.003952291,-0.0041746115,-0.002574603 +35280000,landed,0.0 +35280000,mag,-0.028766625,0.21394119,0.42435578 +35284000,imu,-0.23107147,0.23254256,-9.916515,-0.0049123135,-0.005709907,-0.0033174464 +35288000,mag,-0.023351224,0.20702268,0.4308569 +35288000,imu,-0.21560073,0.24494986,-9.880613,-0.002510503,-0.0037786926,-0.0030842521 +35292000,imu,-0.24248043,0.24743594,-9.879036,0.00019557403,-0.0031434875,-0.002326146 +35296000,imu,-0.25683463,0.21136515,-9.936977,-0.0015599135,-0.0043665734,-0.0023088744 +35300000,imu,-0.23592025,0.18532942,-9.946596,-0.00469438,-0.0045808614,-0.0025556698 +35304000,baro,487.59576 +35304000,mag,-0.03127844,0.21696039,0.42009106 +35304000,imu,-0.2041927,0.1566335,-9.8994255,-0.0021807135,-0.0069587547,0.0017746909 +35308000,imu,-0.21773088,0.17447989,-9.855103,-0.0007694621,-0.0061948565,0.002591908 +35312000,imu,-0.2235581,0.2187507,-9.86307,-0.00021239664,-0.0016059066,-0.00309658 +35316000,imu,-0.21367025,0.1852187,-9.875427,-0.0023628187,-0.0010195379,-0.003424164 +35316000,mag,-0.019642642,0.2108647,0.42757377 +35320000,imu,-0.23760155,0.18204276,-9.885602,-0.0033973414,-0.0025238919,0.00035754696 +35324000,imu,-0.24860768,0.19920513,-9.901568,-0.0012014648,-0.0025700494,8.909031e-05 +35328000,imu,-0.23221166,0.18528429,-9.920854,-8.9533074e-05,-0.0065389806,-0.0007057741 +35328000,mag,-0.02575914,0.21486875,0.4255097 +35332000,imu,-0.24970391,0.1811841,-9.94223,0.0006088634,-0.007872177,0.00030425627 +35336000,imu,-0.22030409,0.1853211,-9.927267,-0.0044988017,-0.0066209356,-0.00033407402 +35340000,mag,-0.02452362,0.21594091,0.43458724 +35340000,imu,-0.20953205,0.1966749,-9.87426,-0.002685459,-0.0085372925,0.0018559138 +35344000,imu,-0.22928478,0.17849423,-9.849173,0.0033243843,-0.0087435525,0.0018515843 +35348000,imu,-0.20507018,0.16791855,-9.867447,0.002877991,-0.008018439,-0.00058002514 +35352000,mag,-0.022862006,0.21432021,0.4295883 +35352000,imu,-0.21837872,0.18777171,-9.899492,-0.001956156,-0.006095999,0.0011287259 +35356000,imu,-0.21000238,0.19689782,-9.941338,-0.0017535378,-0.003492917,-0.0001464694 +35360000,imu,-0.20269382,0.19696194,-9.930066,-0.0009047322,-0.004918887,-0.0032664994 +35364000,mag,-0.022648316,0.20973472,0.43172362 +35364000,imu,-0.23317116,0.21149154,-9.888409,-0.005086472,-0.0089858575,-0.0030502735 +35368000,imu,-0.22464827,0.20788294,-9.877396,-0.0029876628,-0.0080725085,-0.00076946 +35372000,imu,-0.21233639,0.1746383,-9.920744,-0.00071284885,-0.004888333,-0.0008321839 +35376000,mag,-0.027213026,0.21548566,0.42969522 +35376000,imu,-0.19863623,0.17482455,-9.909602,-0.0008790886,-0.006537866,-0.0017134346 +35376000,baro,487.5676 +35380000,imu,-0.20438002,0.19598572,-9.901328,-0.0008790387,-0.0062068673,0.0017133892 +35384000,imu,-0.22900283,0.20991248,-9.919523,0.0010655656,-0.004473665,0.0046361634 +35388000,imu,-0.2448295,0.2365123,-9.905742,0.00019671583,-0.0044614538,0.0054928837 +35388000,mag,-0.020520654,0.21016736,0.42496538 +35392000,imu,-0.2174855,0.22359899,-9.903151,-0.002614495,-0.0022533818,0.00014025452 +35396000,imu,-0.18683827,0.19476375,-9.8903675,-0.00060033076,-0.00209214,-0.0023844624 +35400000,imu,-0.23400372,0.19213423,-9.911646,-0.00019085231,-0.0049349694,-0.0003203417 +35400000,mag,-0.025941525,0.2146704,0.43560612 +35404000,imu,-0.22698484,0.21258965,-9.909143,-0.0012988787,-0.007241469,-0.004796616 +35408000,imu,-0.19241965,0.22026281,-9.879618,-0.00060598424,-0.0065042307,-0.0034061742 +35412000,mag,-0.024636552,0.21330406,0.42861378 +35412000,imu,-0.19870104,0.2043018,-9.893279,0.00053417555,-0.0041328315,0.0021244073 +35416000,imu,-0.22400947,0.18833068,-9.901028,0.0005115472,-0.003295189,0.002352895 +35420000,imu,-0.24951942,0.18021123,-9.874894,0.0008685653,-0.005435183,-0.0014342781 +35424000,imu,-0.21883827,0.18774828,-9.916893,0.000697751,-0.007026665,-0.0018241194 +35424000,mag,-0.022284811,0.22331601,0.42681962 +35428000,imu,-0.18414769,0.1597665,-9.94871,-0.0011193801,-0.0054365257,-2.0480857e-05 +35432000,imu,-0.20065364,0.1701989,-9.90223,-0.0037174008,-0.00671049,0.000110065295 +35432000,mag,-0.024024868,0.21454091,0.43219936 +35436000,imu,-0.19665414,0.1942034,-9.862976,-0.0033880258,-0.008567061,0.00017127277 +35440000,imu,-0.19746056,0.17936166,-9.845554,-0.0014300236,-0.0070196353,0.0017955864 +35444000,baro,487.66617 +35444000,imu,-0.23941314,0.17826645,-9.877665,-0.0002153431,-0.004804729,0.0024448624 +35444000,mag,-0.028664023,0.21754491,0.4263011 +35448000,imu,-0.23182368,0.20092414,-9.901894,0.001691164,-0.005146256,0.0010406645 +35452000,imu,-0.22135177,0.2230097,-9.921403,-0.0034540885,-0.004075383,0.0013937763 +35452000,gps,488104.0,85455032.0,473975942.0,0.01,0.0,0.0 +35456000,imu,-0.23328243,0.23304814,-9.909071,-0.004872377,-0.00470627,0.0011002362 +35460000,mag,-0.029092506,0.20948294,0.43276688 +35460000,imu,-0.22016037,0.20459773,-9.886374,0.00014870378,-0.0069659124,0.0013696076 +35464000,imu,-0.21480677,0.1742299,-9.905585,-0.00072576426,-0.0066848383,0.0026989868 +35468000,imu,-0.21933115,0.21176922,-9.927088,-0.0023948587,-0.005347529,0.0042915964 +35472000,imu,-0.18712336,0.2163811,-9.908256,0.0008550759,-0.004438266,0.0023770868 +35472000,mag,-0.024861673,0.2133243,0.43055838 +35476000,imu,-0.20223695,0.19038002,-9.881658,-0.0003236669,-0.00483462,0.0004971462 +35480000,imu,-0.25525302,0.20315477,-9.870944,-0.004758907,-0.0070425905,-0.0007943082 +35484000,imu,-0.25036472,0.209213,-9.902931,-0.00563351,-0.009080599,-0.0018665657 +35484000,mag,-0.024960008,0.20267838,0.4248554 +35488000,imu,-0.23173302,0.20034644,-9.93949,-0.0048534456,-0.005294008,-0.0012451165 +35492000,imu,-0.2443816,0.19370623,-9.906543,-0.0035536443,-0.0030147778,-0.0024647687 +35496000,mag,-0.023986716,0.21477576,0.425809 +35496000,imu,-0.25962433,0.2088735,-9.916933,-0.0010159648,-0.0050004134,-0.0023701615 +35496000,baro,487.67557 +35500000,imu,-0.23605855,0.2335162,-9.910555,0.00043680516,-0.0067812647,0.0021483016 +35504000,imu,-0.2330608,0.19003074,-9.873277,-0.001059462,-0.0049628927,0.0026188807 +35508000,imu,-0.24288484,0.16423453,-9.872918,0.0003202521,-0.0038566021,-0.000847535 +35508000,mag,-0.02308261,0.21465553,0.43243566 +35512000,imu,-0.22342616,0.20321658,-9.889627,0.00049015903,-0.005311629,7.4735704e-05 +35516000,imu,-0.20097,0.20902728,-9.904076,-0.0022138231,-0.0047229985,-0.0001576652 +35520000,mag,-0.026473703,0.21985587,0.42719457 +35520000,imu,-0.21089521,0.24159499,-9.914114,-0.0037004307,-0.0045549977,-0.00036597747 +35524000,imu,-0.2179242,0.23689927,-9.926197,-0.0038496652,-0.006016969,0.0008923959 +35528000,imu,-0.24303816,0.20154887,-9.917603,-0.0029185365,-0.008896086,0.00095154153 +35532000,mag,-0.03171712,0.21098417,0.4316834 +35532000,imu,-0.26898542,0.20119892,-9.9158,-0.0030714078,-0.007622296,0.0020387731 +35536000,imu,-0.24181437,0.19035678,-9.907794,-0.0047018463,-0.004243593,0.0014374835 +35540000,landed,0.0 +35540000,imu,-0.2160355,0.19125088,-9.898157,-0.0033418923,-0.0049778935,0.00081883685 +35544000,imu,-0.21381734,0.18698558,-9.895204,-0.00081619964,-0.003318084,0.0010852541 +35544000,mag,-0.027245177,0.21882771,0.43073246 +35548000,imu,-0.18574639,0.20237717,-9.929348,-0.0019444961,-0.003253023,0.0016864104 +35552000,imu,-0.18276936,0.19496077,-9.936985,-0.0047206106,-0.0074981754,-0.001128147 +35556000,imu,-0.21307139,0.15473221,-9.900475,-0.001981794,-0.0065127104,-0.0042071976 +35556000,mag,-0.019263348,0.22217268,0.43284696 +35560000,imu,-0.20330603,0.17859197,-9.895618,0.0017578691,-0.0059011276,-0.00517594 +35564000,imu,-0.2523334,0.20512475,-9.907444,3.0034282e-05,-0.006871216,-0.0026541452 +35564000,mag,-0.032554146,0.21193625,0.42166054 +35568000,imu,-0.25742736,0.1762872,-9.888978,-0.0005902966,-0.0057213563,0.0029948996 +35568000,baro,487.6474 +35572000,imu,-0.19910516,0.17295411,-9.881392,-0.0024402365,-0.0058799214,0.0030170048 +35576000,imu,-0.2094588,0.17186512,-9.912346,-0.0017685711,-0.005177274,0.001356038 +35580000,imu,-0.2148081,0.20317833,-9.904775,0.0021348502,-0.005770349,2.5925288e-05 +35580000,mag,-0.03302481,0.20656624,0.43086028 +35584000,imu,-0.21553579,0.23383026,-9.9165325,0.0018895663,-0.007994564,-0.0029068124 +35588000,imu,-0.22927879,0.20090966,-9.908771,0.0016502556,-0.007260611,-0.0003942644 +35592000,mag,-0.035279088,0.21919002,0.43099645 +35592000,imu,-0.22564864,0.19875579,-9.874025,0.00027971077,-0.0059312596,0.00072023424 +35596000,imu,-0.24640383,0.2120929,-9.885445,-0.0031282457,-0.0061592176,-0.0015286562 +35600000,imu,-0.23696125,0.19881912,-9.899226,-0.00028414797,-0.007909248,-0.00036074576 +35604000,mag,-0.018751932,0.21021539,0.42763174 +35604000,imu,-0.19787996,0.20834471,-9.901558,0.0006324467,-0.0063927644,-0.0025006274 +35608000,imu,-0.2241993,0.19679564,-9.919033,-0.0007795294,-0.0038267435,-0.0006616492 +35612000,imu,-0.24590485,0.17947726,-9.903721,-0.0016979012,-0.0064060404,0.0037744222 +35616000,imu,-0.21191905,0.20285709,-9.895797,-0.0044178963,-0.007712022,0.0016590689 +35616000,mag,-0.029942147,0.21012871,0.4323819 +35620000,imu,-0.17459881,0.17910358,-9.896287,-0.0030668979,-0.0060044443,-0.0006330003 +35624000,imu,-0.2031494,0.1802633,-9.898449,-0.0032985422,-0.003896931,-0.0017128151 +35628000,imu,-0.22420159,0.17411894,-9.890253,-0.0008027001,-0.004138189,-0.0023641502 +35628000,mag,-0.023972115,0.21160372,0.4259594 +35632000,imu,-0.18923211,0.1899495,-9.867823,-0.00018240223,-0.0035103562,-0.0009013953 +35636000,imu,-0.20639785,0.2264359,-9.927727,-0.0016485883,-0.002740117,-0.00021943131 +35640000,baro,487.68027 +35640000,imu,-0.2444493,0.1838782,-9.962948,0.0011293347,-0.0072652674,0.0015157289 +35640000,mag,-0.029682966,0.21416321,0.42028293 +35644000,imu,-0.23046799,0.17232615,-9.9173565,-0.0016065548,-0.008424108,-0.00015691317 +35648000,mag,-0.02614919,0.21470426,0.42410362 +35648000,imu,-0.21372059,0.18051772,-9.876677,-0.004659573,-0.008312756,0.0005283401 +35652000,imu,-0.22762603,0.18204609,-9.8676815,-0.0010821633,-0.008862287,0.0031045398 +35656000,imu,-0.22096837,0.19169185,-9.898311,-0.0007080831,-0.007462057,-0.0014429055 +35660000,mag,-0.023676466,0.22282238,0.41966414 +35660000,imu,-0.21938102,0.21383744,-9.899502,-0.0014459387,-0.0059188595,-0.002477183 +35664000,imu,-0.24093157,0.21082088,-9.883532,0.0017454122,-0.0034657146,-0.003284349 +35668000,imu,-0.22457491,0.20406303,-9.883789,0.0018423732,-0.007447195,-0.0054489085 +35672000,imu,-0.21401122,0.17983675,-9.878605,-4.5169876e-05,-0.011374078,-0.00092282525 +35676000,mag,-0.02212191,0.21868674,0.43257332 +35676000,imu,-0.2208915,0.18018502,-9.898308,5.516088e-05,-0.0074629625,0.0008056617 +35680000,imu,-0.22880144,0.2318585,-9.912911,-0.0009997755,-0.006729872,-0.0023473382 +35684000,imu,-0.23795599,0.2349895,-9.912088,-0.0013463937,-0.008084902,0.0012734213 +35688000,mag,-0.030623127,0.21943474,0.4290908 +35688000,imu,-0.2035228,0.21074833,-9.905207,-0.0038145385,-0.00531736,0.00069702667 +35692000,imu,-0.19040631,0.18551221,-9.914516,-0.0017531461,-0.003389625,0.00087283814 +35696000,imu,-0.20508233,0.1821712,-9.915207,0.002231354,-0.0039867167,0.0032393876 +35700000,mag,-0.030466259,0.21271122,0.4314222 +35700000,imu,-0.23370829,0.20763242,-9.882275,0.0005514912,-0.0048871404,0.00072566286 +35704000,imu,-0.25484774,0.18763061,-9.881269,-0.0008898401,-0.004839509,-0.0011659561 +35708000,imu,-0.2524459,0.19548705,-9.917059,-0.0016535671,-0.005435821,-0.00017349598 +35712000,baro,487.62393 +35712000,imu,-0.26329547,0.21658993,-9.905006,-0.003188601,-0.0036613275,0.0022573099 +35712000,mag,-0.022559104,0.21732478,0.4306597 +35716000,imu,-0.23800856,0.18495981,-9.895838,-0.0040774923,-0.001924393,-0.00091734703 +35720000,imu,-0.21507075,0.19163874,-9.919928,-0.0013909471,-0.0025478802,-0.004161723 +35724000,mag,-0.027141202,0.21854573,0.42962536 +35724000,imu,-0.2273699,0.20172444,-9.92692,-0.0009314713,-0.007206308,-0.002449548 +35728000,imu,-0.23025054,0.21231277,-9.908043,-0.00064045517,-0.008195063,0.0011307109 +35732000,imu,-0.2186124,0.22590815,-9.899311,-0.0013407732,-0.0062422818,0.003301767 +35736000,imu,-0.19680224,0.22414236,-9.911608,-0.0013063969,-0.007822096,0.001709634 +35736000,mag,-0.024418324,0.21270919,0.43039086 +35740000,imu,-0.20374581,0.20190798,-9.911858,-0.00039103028,-0.0073259217,-0.002720595 +35744000,imu,-0.20929204,0.18335353,-9.910564,-0.0008077513,-0.004967446,-0.0031093145 +35748000,imu,-0.20315218,0.1797029,-9.8827915,-0.001206847,-0.0028901559,-0.0041267746 +35748000,mag,-0.0272063,0.21044102,0.42148745 +35752000,imu,-0.24101517,0.20370817,-9.873035,-0.0026943118,-0.0041957796,-0.0040745446 +35756000,imu,-0.26448405,0.22922547,-9.907717,-0.0026165138,-0.0046935957,0.0002738133 +35756000,mag,-0.0234132,0.21550648,0.42784512 +35760000,imu,-0.24392357,0.20356025,-9.922762,-0.00035380796,-0.0049061086,-0.0020363806 +35764000,imu,-0.21745855,0.20563632,-9.910516,0.0008078278,-0.0062635425,-0.0046705487 +35768000,imu,-0.2342322,0.24691929,-9.880131,-0.0026386108,-0.0066474993,-0.001676152 +35772000,mag,-0.02718499,0.21479401,0.4291973 +35772000,imu,-0.20295796,0.21354407,-9.851471,-0.0028555673,-0.0056189303,0.00081153883 +35776000,imu,-0.18941803,0.18530636,-9.8603525,-0.0017212764,-0.005333189,0.002496149 +35780000,imu,-0.22936775,0.212857,-9.888002,-0.0026069386,-0.0073853987,0.0013830995 +35784000,imu,-0.20406121,0.19591881,-9.905735,-0.0007400145,-0.0047016265,-0.0018429657 +35784000,mag,-0.03081127,0.21396984,0.43009886 +35784000,baro,487.61923 +35788000,imu,-0.2087369,0.17417803,-9.903177,-0.0010040606,-0.0034432912,-6.954521e-05 +35792000,imu,-0.22850122,0.18347538,-9.889818,-0.0025416976,-0.0029849375,0.00041461605 +35796000,mag,-0.026219003,0.20946889,0.4345187 +35796000,imu,-0.22115147,0.18762831,-9.9033165,-0.0030201774,-0.0040496853,-0.0023598536 +35800000,imu,-0.243525,0.1934002,-9.88831,-0.0023521949,-0.0076850667,-0.0014408194 +35804000,imu,-0.24922708,0.20382383,-9.875992,-0.003306847,-0.0070210057,0.0007582809 +35808000,imu,-0.22666189,0.17383309,-9.876068,-0.006496738,-0.006748247,-0.002118852 +35808000,mag,-0.023929847,0.21437038,0.42793623 +35812000,imu,-0.23971188,0.16707371,-9.854862,-0.0028059245,-0.006991566,-0.0022112406 +35816000,imu,-0.23512658,0.1967379,-9.878771,0.001598439,-0.007935335,0.0018588372 +35820000,imu,-0.20610628,0.20679341,-9.910196,-0.0029641422,-0.0052363626,0.0024870876 +35820000,mag,-0.025299441,0.22240724,0.4252747 +35824000,imu,-0.20266742,0.21915738,-9.895779,-0.0062407735,-0.0029269673,0.0036711614 +35828000,imu,-0.23432228,0.21435244,-9.898774,-0.002221548,-0.0037951407,0.0009833066 +35832000,mag,-0.029147647,0.21774271,0.42280298 +35832000,imu,-0.25516817,0.19882259,-9.920275,-0.0009296338,-0.0060017128,-0.0026153428 +35836000,imu,-0.24977443,0.19110031,-9.881248,-0.00335618,-0.005105772,-0.0007268754 +35840000,landed,1.0 +35840000,mag,-0.034130193,0.2188521,0.42682025 +35840000,imu,-0.25118265,0.19431905,-9.886457,-0.0030842314,-0.0046074605,0.0001094466 +35844000,imu,-0.2670391,0.1829074,-9.903499,-0.0008771066,-0.00671272,-0.0009302765 +35848000,gps,488098.0,85455031.0,473975942.0,-0.01,-0.01,-0.02 +35848000,imu,-0.27067983,0.17861982,-9.8985615,-0.0007822564,-0.003945368,-0.0020467911 +35852000,mag,-0.027578097,0.20909557,0.43077257 +35852000,imu,-0.22566411,0.19612998,-9.908026,-0.00077372766,-0.0029522302,-0.0036503528 +35856000,baro,487.6568 +35856000,imu,-0.19072887,0.2170056,-9.906126,0.000621478,-0.0041994043,-0.0016075665 +35860000,imu,-0.2136456,0.20576029,-9.917111,-0.0022261129,-0.0040511927,0.0015604217 +35864000,imu,-0.20876715,0.17026296,-9.899031,-0.004230451,-0.0054419995,0.0021428189 +35868000,imu,-0.19820592,0.18330872,-9.866949,-0.0030183133,-0.005738384,0.0020774587 +35868000,mag,-0.03050461,0.215481,0.4330707 +35872000,imu,-0.20941551,0.21232705,-9.870917,-0.0013512337,-0.0036517377,0.0043026004 +35876000,imu,-0.19775301,0.20616432,-9.885134,-0.0019832049,-0.0074537783,0.0024759877 +35880000,mag,-0.0285576,0.21160884,0.42383346 +35880000,imu,-0.2164113,0.18624929,-9.87825,-0.0016005796,-0.008732485,0.0017870051 +35884000,imu,-0.23767011,0.17906587,-9.894997,-0.0013361594,-0.004798242,0.0015842923 +35888000,imu,-0.23329481,0.19454578,-9.898329,-0.0030082075,-0.0062134457,0.00060612464 +35892000,imu,-0.2205826,0.22758117,-9.89355,-0.004590277,-0.0065785195,0.0018009486 +35892000,mag,-0.023969151,0.21429265,0.42795676 +35896000,imu,-0.22546056,0.23508693,-9.885336,-0.005615516,-0.005392428,0.00045084752 +35900000,imu,-0.20846671,0.23691693,-9.867598,-0.00015390136,-0.006313663,-0.001007926 +35900000,mag,-0.028852753,0.21728572,0.42629614 +35904000,imu,-0.18472809,0.22524832,-9.878677,0.002471925,-0.009459764,-0.0004050946 +35908000,imu,-0.2060351,0.1969997,-9.885817,-0.0023904773,-0.007938761,0.0039986777 +35912000,imu,-0.2093404,0.17147605,-9.898765,-0.003373743,-0.0072142435,0.0009740787 +35916000,imu,-0.21199927,0.18157296,-9.897509,-0.0010062904,-0.009750492,-0.0011609249 +35916000,mag,-0.029908236,0.21599647,0.43020707 +35920000,imu,-0.2192929,0.21677257,-9.873568,1.8546363e-05,-0.0078903055,0.003541858 +35924000,imu,-0.20044887,0.22450997,-9.891848,0.000378688,-0.008304458,0.0027807897 +35928000,imu,-0.20666763,0.21777451,-9.915331,-0.0014978885,-0.006035458,-0.00030922145 +35928000,mag,-0.025276344,0.21764989,0.430706 +35928000,baro,487.66147 +35932000,imu,-0.22952935,0.18685529,-9.882197,-0.0045119193,-0.005452461,-0.0015826056 +35936000,imu,-0.22700721,0.21307199,-9.881945,-0.0017557906,-0.0036774531,-0.0043179756 +35940000,mag,-0.031231206,0.21154784,0.4229603 +35940000,imu,-0.24248116,0.21203957,-9.897555,0.00052731123,-0.0020627216,-0.005201767 +35944000,imu,-0.22220457,0.16356719,-9.8873415,-0.0003447107,-0.0046791793,-0.003959834 +35948000,imu,-0.22890928,0.17515703,-9.90055,0.00010203692,-0.0049655507,-0.002559362 +35948000,mag,-0.037340835,0.21179746,0.42726326 +35952000,imu,-0.22125085,0.185138,-9.87252,-0.0016742564,-0.0067734793,-0.0014779095 +35956000,imu,-0.16514447,0.19127008,-9.846417,0.00010664369,-0.009171109,-0.00087705354 +35960000,imu,-0.18710133,0.16324645,-9.903836,0.0015877294,-0.012016457,-0.0012335716 +35964000,imu,-0.21736984,0.15005203,-9.927786,-0.0019148791,-0.00966091,-0.00013771809 +35964000,mag,-0.025681306,0.2154371,0.43145642 +35968000,imu,-0.21578363,0.18398784,-9.899429,-0.0034794526,-0.004408429,0.003104686 +35972000,imu,-0.20373923,0.19697256,-9.877989,-0.0051629376,-0.0059385435,0.0027367016 +35976000,imu,-0.18986154,0.1851647,-9.892964,-0.0033158984,-0.008098723,0.0013810212 +35976000,mag,-0.026703622,0.20817937,0.4305868 +35980000,imu,-0.20511791,0.1906132,-9.921768,-0.0013955786,-0.0054814243,0.0009497321 +35984000,imu,-0.24131155,0.2159674,-9.926337,-0.0034685973,-0.003665437,0.0006693917 +35988000,mag,-0.022912815,0.2091563,0.4350066 +35988000,imu,-0.2592079,0.23214749,-9.9107485,-0.0026660871,-0.0031992574,-0.0027978795 +35992000,imu,-0.26322812,0.21280435,-9.892957,-0.00095826614,-0.002331706,-0.0032340102 +35996000,mag,-0.022545828,0.21805334,0.43037072 +35996000,imu,-0.26216945,0.19539343,-9.880793,-0.0003581522,-0.0034433734,0.0013080005 +36000000,imu,-0.22224788,0.19722728,-9.87173,-0.002019504,-0.0051262984,-3.4580527e-05 +36000000,baro,487.61453 +36004000,imu,-0.20226915,0.20663837,-9.8919735,-0.0029076864,-0.0065096067,-0.0002910231 +36008000,mag,-0.022989593,0.20828211,0.43199176 +36008000,imu,-0.23583105,0.18671091,-9.90919,0.0010984254,-0.006066334,0.0020097506 +36012000,imu,-0.23634538,0.17991537,-9.9074955,0.0028177833,-0.0034586694,0.00013056504 +36016000,imu,-0.20828933,0.21500562,-9.913385,0.00043296075,-0.004448559,-0.0004995949 +36020000,imu,-0.22343393,0.22771052,-9.883584,3.6050733e-05,-0.0041358136,-0.0006811963 +36024000,mag,-0.030869367,0.21427621,0.42796022 +36024000,imu,-0.26680058,0.18144466,-9.867897,0.00058167614,-0.0030479429,0.00012306208 +36028000,imu,-0.27418196,0.13667431,-9.91445,-0.0030390467,-0.0066451356,-0.0007987816 +36032000,imu,-0.2545585,0.15882412,-9.924119,-0.0018983246,-0.0103132045,0.0004137498 +36036000,imu,-0.24834074,0.16674156,-9.888346,-0.0012410936,-0.007463309,0.0015104172 +36036000,mag,-0.025290003,0.21464589,0.42235354 +36040000,imu,-0.25635105,0.19745249,-9.880138,-0.0047166175,-0.0059468453,0.0003323287 +36044000,imu,-0.22616976,0.21994892,-9.872995,-0.0038824014,-0.0060522277,0.00057760905 +36048000,mag,-0.020877514,0.21957958,0.42667162 +36048000,imu,-0.19864717,0.19872689,-9.867343,-0.0009877295,-0.0048375707,1.2138037e-05 +36052000,imu,-0.20911944,0.19448361,-9.895514,-0.0013302946,-0.007242468,0.00042355043 +36056000,imu,-0.22155362,0.19952966,-9.883532,-0.0023259078,-0.0040032207,-0.0005492263 +36060000,imu,-0.21005166,0.20466286,-9.86377,-0.0033179587,-0.0036485477,-0.0026406054 +36060000,mag,-0.029200802,0.21385483,0.42521545 +36064000,imu,-0.22183535,0.19588564,-9.8637705,-0.0015102031,-0.0067460495,-0.0023134875 +36068000,imu,-0.16837943,0.19121367,-9.88888,0.0008263833,-0.0068564564,0.002216719 +36072000,mag,-0.03438743,0.21502489,0.4302073 +36072000,baro,487.6521 +36072000,imu,-0.14508013,0.1824097,-9.9014,-0.0011114655,-0.006508324,0.0021735663 +36076000,imu,-0.20778275,0.18730855,-9.910437,0.0004890956,-0.0037512558,2.169813e-05 +36080000,imu,-0.18583944,0.20924029,-9.933748,-0.00045214154,-0.0021394624,-0.0008486048 +36084000,mag,-0.027023032,0.2128644,0.42936686 +36084000,imu,-0.18607637,0.21248713,-9.931955,-0.0011015099,-0.0018943425,-0.001808315 +36088000,imu,-0.2099202,0.18180563,-9.908419,-8.8437366e-05,-0.004239415,0.0008669632 +36092000,imu,-0.20270625,0.17272669,-9.890456,-0.002148314,-0.0054836418,2.5769521e-05 +36096000,imu,-0.2183172,0.19720533,-9.907223,-0.0018288487,-0.0075180405,-0.0005592162 +36096000,mag,-0.020947108,0.2132943,0.42703247 +36100000,imu,-0.23553951,0.21117242,-9.898683,-0.00039389692,-0.007646166,0.0009519908 +36104000,imu,-0.22555515,0.19611077,-9.88196,0.00030349105,-0.0038812524,-0.0007979314 +36108000,imu,-0.21746983,0.18337524,-9.887923,-0.0031814245,-0.0043695164,-0.0029949045 +36108000,mag,-0.02807834,0.21460207,0.4316111 +36112000,imu,-0.21106496,0.18228684,-9.888388,-0.003928614,-0.005076746,-0.0034236682 +36116000,imu,-0.2030336,0.16007982,-9.876761,0.0016148721,-0.0064992826,-0.00032999154 +36120000,imu,-0.20740937,0.17565489,-9.883735,-0.000680413,-0.0062957075,0.00064064504 +36120000,mag,-0.022359183,0.2126291,0.42657608 +36124000,imu,-0.21714446,0.1767773,-9.872967,-0.0032071753,-0.004632253,0.0011491077 +36128000,imu,-0.21946612,0.18375075,-9.863819,-0.0006797681,-0.008523914,0.0010934157 +36132000,mag,-0.022688782,0.21649288,0.43266913 +36132000,imu,-0.22887065,0.21009307,-9.895664,-0.0024868508,-0.008523088,-0.0022310927 +36136000,imu,-0.2256045,0.20272456,-9.905468,-0.0061446205,-0.006229914,-0.0032213475 +36140000,imu,-0.18475223,0.16495165,-9.8883,-0.005809697,-0.006889861,-0.0037574552 +36144000,mag,-0.02594258,0.21627524,0.42577398 +36144000,imu,-0.21840179,0.17206,-9.894655,-0.00493807,-0.0076700826,-0.001905687 +36144000,baro,487.5582 +36148000,imu,-0.2321583,0.16453679,-9.916052,-0.0024639321,-0.0054598083,-0.0005745236 +36152000,imu,-0.21263196,0.15397154,-9.910714,0.000370021,-0.0041265655,-0.0007920549 +36156000,imu,-0.24306673,0.19805342,-9.894837,0.0013605683,-0.00446133,0.002321697 +36156000,mag,-0.027582789,0.21221092,0.42583618 +36160000,imu,-0.23290025,0.22760598,-9.886728,-0.00069349114,-0.004018327,0.0035448398 +36164000,imu,-0.2172595,0.24882792,-9.908652,-0.003063509,-0.0065956623,-0.002047943 +36164000,mag,-0.020198107,0.2147748,0.42974117 +36168000,imu,-0.2176934,0.23598202,-9.886505,0.0010352276,-0.0072126887,-0.0045196805 +36172000,imu,-0.21435583,0.19958808,-9.859696,-0.0016109239,-0.006267806,-0.0030255616 +36176000,imu,-0.20555076,0.18126664,-9.884516,-0.0027243907,-0.0064920513,-0.00080233807 +36180000,imu,-0.1842785,0.2048344,-9.894869,-0.0014289208,-0.0076040723,-0.0020108828 +36180000,mag,-0.02436752,0.21271406,0.42474055 +36184000,imu,-0.20806995,0.19186087,-9.887065,-0.0041455775,-0.006265967,-0.0037615811 +36188000,imu,-0.25001395,0.17606284,-9.873481,-0.0020748926,-0.0024468263,0.0014563059 +36192000,imu,-0.2264845,0.17091231,-9.867423,-4.222388e-05,-0.0017026947,0.0014215 +36192000,mag,-0.03052229,0.21728234,0.4333023 +36196000,imu,-0.24289542,0.16254908,-9.864773,-0.0028796494,-0.0039555286,0.00021865354 +36200000,imu,-0.2343117,0.19153132,-9.887945,-0.006013704,-0.0059283823,0.0016348097 +36204000,mag,-0.026708454,0.21438286,0.4346834 +36204000,imu,-0.19114527,0.20980309,-9.926867,-0.0016430139,-0.007422904,-0.00019950383 +36208000,imu,-0.21585324,0.19335,-9.917681,-0.0008524218,-0.0048550526,0.00030377405 +36212000,imu,-0.20840222,0.18689072,-9.881031,-0.001427344,-0.0033693013,0.0016553182 +36216000,imu,-0.19277978,0.19448312,-9.882987,0.00038575355,-0.005878665,0.0012013784 +36216000,mag,-0.028784668,0.21981442,0.4205841 +36216000,baro,487.5488 +36220000,imu,-0.2018835,0.19333978,-9.913542,-0.002391288,-0.0057741664,0.001333181 +36224000,imu,-0.19472274,0.21606612,-9.925714,-0.0027923721,-0.005727701,0.0009279454 +36228000,mag,-0.025627786,0.21544547,0.43120337 +36228000,imu,-0.19688521,0.19715652,-9.902456,0.0006855322,-0.0052857413,0.0013401854 +36232000,imu,-0.23664343,0.19443688,-9.916853,0.0011693127,-0.0064483793,0.0013080282 +36236000,imu,-0.25084823,0.20097883,-9.914928,-0.0027267986,-0.007753643,2.5434543e-05 +36240000,mag,-0.026661847,0.21240227,0.42526647 +36240000,imu,-0.22877997,0.20055296,-9.890669,-0.0013681346,-0.0055529573,-0.0016392869 +36244000,imu,-0.21379055,0.20951377,-9.897175,0.0031045205,-0.006466077,-0.0036164334 +36248000,imu,-0.24610592,0.18935022,-9.931074,0.0008491339,-0.0074954103,0.0003989761 +36252000,gps,488102.0,85455032.0,473975942.0,0.0,0.0,-0.01 +36252000,imu,-0.25592685,0.19227754,-9.952242,0.0013824579,-0.005842115,0.003222725 +36252000,mag,-0.025723722,0.21228284,0.4195126 +36256000,imu,-0.22391881,0.20078935,-9.91304,0.00335498,-0.0034695363,0.00035574194 +36260000,imu,-0.23072241,0.18721081,-9.887624,0.00084927084,-0.00765234,-0.0015350205 +36260000,mag,-0.02650208,0.21535103,0.4248698 +36264000,imu,-0.23204365,0.17238535,-9.883978,-0.00022179532,-0.0077088964,-0.003952283 +36268000,imu,-0.20951822,0.19455469,-9.877375,0.00038011445,-0.0023521828,-0.00064788945 +36272000,imu,-0.21392485,0.17662759,-9.876587,0.002212542,-0.0069410843,0.0026370902 +36276000,imu,-0.23582245,0.17394818,-9.870924,0.00025903867,-0.005699031,8.604049e-05 +36276000,mag,-0.026831185,0.21267113,0.42719617 +36280000,imu,-0.2669744,0.19894217,-9.898263,-0.0034904198,-0.0010445614,-0.0018657658 +36284000,baro,487.67087 +36284000,imu,-0.24128985,0.20425437,-9.899902,-0.0031452978,-0.004595768,-0.0010371899 +36288000,mag,-0.020834677,0.21195896,0.432165 +36288000,imu,-0.21377331,0.22848102,-9.871889,-0.0016015687,-0.0058815414,0.0012673899 +36292000,imu,-0.22643076,0.22793062,-9.92169,-0.0008911263,-0.005380131,0.00027653878 +36296000,imu,-0.21085683,0.21253578,-9.92314,-0.0014832275,-0.00644121,-0.001069061 +36300000,imu,-0.20488365,0.20889696,-9.893272,0.0011987402,-0.007981883,-0.00011788888 +36300000,mag,-0.03553938,0.22171469,0.42756706 +36304000,imu,-0.20647453,0.2105128,-9.87875,-0.0001585459,-0.0061982824,-5.5412063e-05 +36308000,imu,-0.20014572,0.19422518,-9.884111,-0.0061799036,-0.004731986,-0.00062456774 +36312000,mag,-0.023100361,0.21824376,0.42598972 +36312000,imu,-0.20406322,0.16316931,-9.933289,-0.005664371,-0.004711769,-0.0010555327 +36316000,imu,-0.19140062,0.18288434,-9.910023,-0.0021006914,-0.006330994,-0.00079625304 +36320000,imu,-0.18278244,0.20412831,-9.8903675,-0.0034703673,-0.007816054,0.0009880048 +36324000,mag,-0.023486925,0.21535756,0.42566943 +36324000,imu,-0.22483253,0.20825613,-9.911719,-0.0027939773,-0.0070987544,0.0011424543 +36328000,imu,-0.22849596,0.1959592,-9.919364,0.0007947429,-0.006207274,0.0014483655 +36332000,mag,-0.029258152,0.21879861,0.43432748 +36332000,imu,-0.21697327,0.16541538,-9.905018,0.002338448,-0.0030256095,0.0018824978 +36336000,baro,487.60043 +36336000,imu,-0.23659652,0.14946705,-9.896265,0.0013690884,-0.0010731107,0.000856397 +36340000,imu,-0.26133665,0.15737684,-9.907808,0.00017902686,-0.0048617395,-0.0017806046 +36344000,imu,-0.25009578,0.19186237,-9.897207,-0.0007693254,-0.009986723,-0.0035326416 +36348000,mag,-0.030157093,0.21516673,0.4298477 +36348000,imu,-0.1826198,0.18141842,-9.899853,-0.0042952863,-0.00812016,-0.004400207 +36352000,imu,-0.1605821,0.1848498,-9.88578,-0.004962985,-0.006490022,-0.004395939 +36356000,imu,-0.18502547,0.2223157,-9.853592,-0.0009363701,-0.00684022,-0.0006374171 +36360000,imu,-0.2141485,0.21103358,-9.881159,0.0028798485,-0.0055220975,0.0026669567 +36360000,mag,-0.026426537,0.21150939,0.4309316 +36364000,imu,-0.20039992,0.22263902,-9.896797,0.0016165237,-0.0017885673,0.0041615926 +36368000,imu,-0.16348822,0.22440839,-9.889106,-0.0003022865,-0.0015696011,0.00036158785 +36372000,imu,-0.17952162,0.19158222,-9.917483,0.0007043632,-0.0035277226,-0.002736114 +36372000,mag,-0.03049621,0.21713449,0.42636874 +36376000,imu,-0.19406492,0.18237887,-9.912544,-0.00012982819,-0.0039581247,0.001029379 +36380000,imu,-0.18153813,0.1680377,-9.889874,-0.0022616852,-0.0069797,0.0018806771 +36384000,imu,-0.18104002,0.16670546,-9.890044,-0.0016858085,-0.0067602904,-0.0038883337 +36384000,mag,-0.029847091,0.21390007,0.4316499 +36388000,imu,-0.20222607,0.18879418,-9.900454,-0.0031598369,-0.0018576684,-0.0034474682 +36392000,imu,-0.21815318,0.216753,-9.9125,-0.0026639197,-0.004204289,0.0017596894 +36396000,imu,-0.22611125,0.21460795,-9.909882,-0.00047447684,-0.0067013153,0.0007659229 +36396000,mag,-0.028707976,0.21130303,0.43208596 +36400000,imu,-0.20987472,0.23017162,-9.881336,-0.0014604189,-0.0058900467,-0.0016039243 +36404000,imu,-0.21049368,0.2294866,-9.888505,0.00021755352,-0.0068062437,0.0013633309 +36404000,mag,-0.033075266,0.21515654,0.42777362 +36408000,imu,-0.23575605,0.19060309,-9.935858,-0.0012083001,-0.0070846668,0.0021327836 +36408000,baro,487.67087 +36412000,imu,-0.25060362,0.19338961,-9.924105,-0.0038874114,-0.006900136,0.0030207685 +36416000,imu,-0.22942293,0.18913828,-9.896474,-0.0004077885,-0.0027003996,0.0031642278 +36420000,mag,-0.025378624,0.21348293,0.4317676 +36420000,imu,-0.2149474,0.20259474,-9.891286,-7.321781e-05,-0.0005469672,-0.0004959292 +36424000,imu,-0.2363331,0.21841352,-9.875601,-0.0015968775,-0.0027421808,0.00076998706 +36428000,imu,-0.20708224,0.20733194,-9.898061,-0.0038791099,-0.0039047387,-0.00021004774 +36432000,imu,-0.19470601,0.20705,-9.9067745,-0.003907504,-0.0038064509,-0.0013102036 +36432000,mag,-0.026884543,0.21478334,0.4269347 +36436000,imu,-0.21623488,0.1979224,-9.858667,7.9844445e-05,-0.006232746,0.0009919415 +36440000,imu,-0.22379217,0.18292297,-9.8561325,0.000972171,-0.0068942574,0.0022657984 +36444000,mag,-0.02918138,0.21945973,0.4279499 +36444000,imu,-0.20359416,0.21062005,-9.896027,-0.0023774598,-0.00460084,0.0010370464 +36448000,imu,-0.20668767,0.19536453,-9.887199,-0.0036846262,-0.004189079,-0.0007999053 +36452000,imu,-0.23496994,0.18642329,-9.825738,-0.0027947833,-0.004319639,-0.002176804 +36456000,mag,-0.030856704,0.21341804,0.4273696 +36456000,imu,-0.24337721,0.20976454,-9.82728,-0.0035059599,-0.004264622,-0.002581176 +36460000,imu,-0.2273598,0.2127723,-9.878483,-0.0006934452,-0.005912055,-0.0002595992 +36464000,imu,-0.20573053,0.19841729,-9.896929,-2.3926545e-05,-6.632226e-05,-0.0009520187 +36468000,imu,-0.21124336,0.2010834,-9.906074,-0.0011903903,0.0010627686,-0.0011527321 +36468000,mag,-0.030662576,0.21742041,0.43196133 +36472000,imu,-0.20963731,0.1874601,-9.89576,0.0011446204,-0.004588008,-0.0009575753 +36476000,imu,-0.20569754,0.17019954,-9.879476,0.0025065432,-0.005838762,9.917596e-05 +36480000,baro,487.62393 +36480000,imu,-0.21865875,0.22275388,-9.873522,0.0022733142,-0.009321645,-0.00034345133 +36480000,mag,-0.031766478,0.21425058,0.43432587 +36484000,imu,-0.23018995,0.23004243,-9.884704,0.001417484,-0.007859604,-0.00071439927 +36488000,imu,-0.22299528,0.21458814,-9.886483,-0.0012468572,-0.006849646,-0.000843682 +36492000,imu,-0.22131428,0.21367371,-9.885958,-0.00048844784,-0.0065432684,0.0004617238 +36492000,mag,-0.020000061,0.2178849,0.42703384 +36496000,imu,-0.20866752,0.18284042,-9.889486,0.0027281023,-0.005508575,0.003991959 +36500000,imu,-0.18626328,0.16535275,-9.872295,0.0015246201,-0.0065857777,0.00024219659 +36504000,imu,-0.1988132,0.19333635,-9.875531,-0.00044215593,-0.006411472,6.139415e-05 +36504000,mag,-0.01985575,0.2196248,0.42698115 +36508000,imu,-0.2360496,0.21111,-9.884486,-0.002310938,-0.008816075,0.005164415 +36512000,imu,-0.24033156,0.18969835,-9.887667,-0.0018795287,-0.0078001493,0.0046760626 +36516000,mag,-0.024761908,0.22172815,0.42444268 +36516000,imu,-0.22162646,0.16717699,-9.873095,0.00039989664,-0.0019102521,-0.00023647342 +36520000,imu,-0.19989513,0.17242326,-9.859122,-0.0024363836,-0.0036333073,0.0011642155 +36524000,imu,-0.19499627,0.18089955,-9.869786,-0.0025162434,-0.0033091793,0.0019863315 +36528000,imu,-0.22249304,0.16516627,-9.856577,0.00016108254,-0.0029756825,0.0004432796 +36528000,mag,-0.023661584,0.21093681,0.4277604 +36532000,imu,-0.22843572,0.17078093,-9.886845,-0.0026157303,-0.0068148077,0.0006307819 +36536000,imu,-0.20788759,0.19177605,-9.894874,-0.004416842,-0.0072184624,-0.00021459135 +36540000,imu,-0.2246888,0.16803671,-9.863649,-0.0041952496,-0.0071024937,0.0009171265 +36540000,mag,-0.024159277,0.21736111,0.4306493 +36544000,imu,-0.23592606,0.16692588,-9.862603,-0.001901244,-0.0057754265,0.00011939997 +36548000,imu,-0.19831757,0.19640738,-9.863078,0.0010949732,-0.0045340015,-0.000704459 +36552000,imu,-0.20780113,0.18349612,-9.865629,-0.0010377652,-0.003652815,-1.1187399e-05 +36552000,baro,487.60043 +36552000,mag,-0.02727647,0.21982704,0.4288011 +36556000,imu,-0.23596494,0.15655203,-9.891251,-0.0014908599,-0.0040178946,-0.0011114543 +36560000,imu,-0.22772929,0.18742514,-9.910407,-0.00059830863,-0.006176106,-0.0007436327 +36564000,imu,-0.21879348,0.20410389,-9.891035,-0.00026584615,-0.007270553,-0.00015874047 +36564000,mag,-0.023383131,0.21268626,0.43060127 +36568000,imu,-0.22588566,0.16597742,-9.8958435,0.0029395535,-0.005295374,-0.001886183 +36572000,imu,-0.21851219,0.1630426,-9.88979,0.0021141756,-0.006048325,-0.0020413648 +36576000,mag,-0.030800227,0.21588841,0.42996478 +36576000,imu,-0.20904292,0.19273646,-9.853607,-0.0011957749,-0.005342767,-0.0004848485 +36580000,imu,-0.20494384,0.22270122,-9.854916,-7.465897e-05,-0.0037812593,-0.0005327504 +36584000,imu,-0.22990847,0.22743829,-9.864826,0.0007527997,-0.0058796015,-0.0008697525 +36588000,mag,-0.027946912,0.21431005,0.42318574 +36588000,imu,-0.23972276,0.19722328,-9.873564,0.00065696926,-0.0059534847,0.0015905607 +36592000,imu,-0.21816587,0.17731085,-9.91135,0.0025949392,-0.0072221425,0.000658685 +36596000,imu,-0.21936867,0.16675138,-9.909294,0.0041920305,-0.0076396298,-0.00015373393 +36600000,imu,-0.1955479,0.1764588,-9.877449,0.0042948304,-0.00588384,0.00053407386 +36600000,mag,-0.02410168,0.21753047,0.43472195 +36604000,imu,-0.22568357,0.20706545,-9.881046,0.0005865811,-0.006164904,-0.00038108634 +36608000,imu,-0.24576879,0.24187426,-9.899614,0.0005690886,-0.0072680227,0.00052943034 +36612000,mag,-0.025048971,0.21581784,0.42963547 +36612000,imu,-0.22429658,0.22786996,-9.875247,0.0012575974,-0.0061410367,0.0014536103 +36616000,imu,-0.21675149,0.18720417,-9.873315,0.00014307858,-0.0048665493,0.0019151055 +36620000,imu,-0.22969155,0.18683252,-9.884502,0.002221359,-0.0036870157,0.003538274 +36624000,imu,-0.22820559,0.17809144,-9.865896,-0.0019221918,-0.005856787,0.0013061092 +36624000,mag,-0.022329222,0.21880136,0.42944807 +36624000,baro,487.61923 +36628000,imu,-0.21577162,0.19987218,-9.883473,-0.006775219,-0.0078665465,0.0019792293 +36632000,imu,-0.24552998,0.21816173,-9.94307,-0.0038576608,-0.0062643373,0.004940037 +36636000,imu,-0.24432567,0.17800532,-9.904598,-0.003089931,-0.0055540297,0.0013765346 +36636000,mag,-0.023506472,0.2076067,0.42698014 +36640000,imu,-0.20381089,0.16784513,-9.871515,-0.0014413615,-0.0053170137,0.00014031006 +36644000,mag,-0.028566908,0.21231945,0.43056628 +36644000,imu,-0.2189669,0.16584477,-9.892081,0.0029012486,-0.005273905,0.0009708773 +36648000,imu,-0.240174,0.18505196,-9.875244,-0.00022383535,-0.006939333,-0.0013240194 +36652000,gps,488093.0,85455032.0,473975942.0,0.0,0.01,-0.03 +36652000,imu,-0.21127263,0.20882107,-9.894823,0.0007473931,-0.0072440826,-0.00358389 +36656000,imu,-0.206729,0.21275316,-9.894661,0.002645934,-0.0044437824,-0.0019009773 +36660000,mag,-0.020674888,0.21159631,0.4314797 +36660000,imu,-0.1969826,0.19747406,-9.895973,-0.0023971128,-0.0032546378,0.00040414196 +36664000,imu,-0.20512429,0.1760465,-9.895422,-0.007236016,-0.0058967136,-0.0008989444 +36668000,mag,-0.022226783,0.21513624,0.4321101 +36668000,imu,-0.2175566,0.18483494,-9.8820095,-0.005727861,-0.009361144,0.0016184112 +36672000,imu,-0.21060142,0.1918999,-9.870168,-0.0022070932,-0.010226822,0.0030584335 +36676000,imu,-0.18808015,0.20232923,-9.846453,-0.0025011788,-0.007666514,-0.0021985986 +36680000,imu,-0.1874919,0.17578784,-9.89538,-0.004106146,-0.0049782395,-0.0026587206 +36684000,mag,-0.028184209,0.21740645,0.42907134 +36684000,imu,-0.22431672,0.13892607,-9.918829,-0.0059333695,-0.005741575,-0.0020962323 +36688000,imu,-0.22310215,0.17153533,-9.890625,-0.0042004497,-0.004082378,-0.0021686666 +36692000,imu,-0.21743968,0.1861855,-9.886288,-0.0026250337,-0.0016291491,-0.0015166375 +36696000,baro,487.58167 +36696000,imu,-0.22331244,0.16736168,-9.920408,-0.0018708057,-0.0041653323,-0.0016683402 +36696000,mag,-0.028829483,0.21155307,0.43180433 +36700000,imu,-0.19993117,0.19709322,-9.931255,0.0007639164,-0.005914197,0.00027913824 +36704000,imu,-0.2037839,0.19155623,-9.916861,0.00046669354,-0.004851807,0.0032796438 +36708000,imu,-0.22458626,0.16699383,-9.907345,0.0005309879,-0.004258437,0.0031990001 +36708000,mag,-0.029859886,0.21275109,0.4280491 +36712000,imu,-0.20275143,0.1780773,-9.876518,-0.0011796844,-0.0047773994,-0.0010072397 +36716000,imu,-0.19430645,0.19236653,-9.879593,-0.004400322,-0.007113359,0.0009332802 +36720000,mag,-0.025469402,0.2153931,0.42897457 +36720000,imu,-0.20039567,0.21550737,-9.858986,-0.0052388213,-0.0058408733,0.002793923 +36724000,imu,-0.22078878,0.22121274,-9.82943,-0.0034072117,-0.004496197,0.0009921939 +36728000,imu,-0.2414262,0.22148986,-9.863363,-0.0003541253,-0.004208233,0.00075681834 +36732000,imu,-0.21905333,0.2243909,-9.9130535,0.00015988627,-0.0040060356,0.0014042265 +36732000,mag,-0.023343299,0.21393369,0.42855585 +36736000,imu,-0.21905048,0.18942279,-9.882921,-0.0021693553,-0.004749055,0.00447302 +36740000,imu,-0.20552146,0.20835824,-9.871859,-0.0013111713,-0.0042571207,0.0030541879 +36744000,imu,-0.20941362,0.2146691,-9.891836,0.0016285344,-0.0048752893,-0.0010815572 +36744000,mag,-0.019484082,0.21495761,0.4267989 +36748000,imu,-0.2548723,0.18108636,-9.848477,-0.00086391205,-0.005853193,0.0014488397 +36752000,imu,-0.26043558,0.20241658,-9.865236,-0.00032596578,-0.0062180045,0.0026344592 +36756000,mag,-0.021439197,0.20931856,0.42262867 +36756000,imu,-0.22356787,0.19831319,-9.885714,0.00036359622,-0.004627692,0.0010581057 +36760000,imu,-0.22229561,0.13833657,-9.846058,-0.0020280993,-0.0063082487,0.0010578329 +36764000,imu,-0.23730916,0.123819016,-9.866077,-0.0030555488,-0.00828179,-0.0004053757 +36768000,baro,487.66147 +36768000,mag,-0.024958955,0.21615894,0.4259804 +36768000,imu,-0.21900904,0.17559136,-9.891127,-0.003023746,-0.0056239367,0.0008062127 +36772000,imu,-0.22222747,0.1971293,-9.868029,-0.0003344329,-0.006021564,0.00052473025 +36776000,imu,-0.23351067,0.20501052,-9.844212,-0.00027655708,-0.0071319398,0.0003177243 +36780000,mag,-0.029476838,0.21988522,0.4326995 +36780000,imu,-0.23396148,0.19093634,-9.843399,-0.0040336936,-0.0069410973,0.0012770076 +36784000,imu,-0.22947642,0.19860317,-9.853058,-0.0035320807,-0.004613549,-0.0013926575 +36788000,imu,-0.22055364,0.24064401,-9.901043,0.0004545845,-0.0051868036,-0.00012218257 +36788000,mag,-0.024509942,0.20899703,0.41805092 +36792000,imu,-0.20548312,0.21452042,-9.919259,0.0025580102,-0.0068340176,0.00369888 +36796000,imu,-0.21029663,0.15006202,-9.860069,-0.00018262843,-0.00575531,0.003883114 +36800000,imu,-0.23245147,0.15808794,-9.880419,-0.0019388192,-0.004822017,0.0016207685 +36804000,mag,-0.023843365,0.21700338,0.4266882 +36804000,imu,-0.24114831,0.20032214,-9.91624,-0.0021239072,-0.0040552346,-0.0019527024 +36808000,imu,-0.2121093,0.19311959,-9.897072,-0.0032090922,-0.0056885006,-0.001465631 +36812000,imu,-0.19299689,0.16884282,-9.876324,0.00077218795,-0.0073827477,0.0005644893 +36816000,mag,-0.026103621,0.21624842,0.4289858 +36816000,imu,-0.22240347,0.17357945,-9.872853,0.0024490417,-0.007660157,0.0013548149 +36820000,imu,-0.21886507,0.1430504,-9.878611,-0.0043692286,-0.006328712,0.00069998007 +36824000,imu,-0.18070045,0.14062257,-9.90641,-0.006878387,-0.004694864,-0.0002587087 +36828000,imu,-0.16066799,0.18325347,-9.928448,-0.003050445,-0.003525943,-0.0009459723 +36828000,mag,-0.029033815,0.2191529,0.4258025 +36832000,imu,-0.17064524,0.18478334,-9.895468,0.0006681763,-0.004580404,0.0010277957 +36836000,imu,-0.21589327,0.19401236,-9.887818,-0.00065519824,-0.007340427,0.0039727488 +36840000,mag,-0.017270148,0.21771523,0.42529315 +36840000,landed,1.0 +36840000,baro,487.61453 +36840000,imu,-0.21280105,0.19575956,-9.897619,-9.218821e-06,-0.0070337416,-0.0019469842 +36844000,imu,-0.21599637,0.16956858,-9.894545,0.0014011601,-0.004428776,-0.0045410567 +36848000,imu,-0.23706229,0.18776426,-9.868725,-0.0027663119,-0.0027456204,-0.00087104936 +36852000,imu,-0.22852483,0.22468913,-9.879836,-0.0031769292,-0.0051852553,8.8482964e-05 +36852000,mag,-0.023687104,0.21979113,0.4336595 +36856000,imu,-0.21668589,0.18105137,-9.906355,-0.0027022131,-0.0074644703,-0.0014480377 +36860000,imu,-0.21021993,0.18133253,-9.910663,0.00084249774,-0.0052846763,-0.0017527107 +36864000,mag,-0.03194691,0.21592732,0.433511 +36864000,imu,-0.19968043,0.21213014,-9.908623,0.0034292073,-0.0034465957,0.00027471047 +36868000,imu,-0.17880845,0.16558322,-9.867718,0.0015299242,-0.0013278932,0.00083747495 +36872000,imu,-0.17787965,0.19772364,-9.863953,-0.00075569696,-0.0040836195,0.003259416 +36876000,imu,-0.1997518,0.2356823,-9.885622,-0.002672984,-0.0052169356,0.001477462 +36876000,mag,-0.023475442,0.20873997,0.44028464 +36880000,imu,-0.2041445,0.20288064,-9.878179,-0.0026785694,-0.002891209,-0.00013449026 +36884000,imu,-0.21236464,0.20637171,-9.868462,-0.0024825537,-0.0070382683,-0.0005300633 +36888000,imu,-0.22376868,0.20155667,-9.868986,-7.186098e-05,-0.007138739,-0.0024654507 +36888000,mag,-0.026173934,0.21071313,0.43246788 +36892000,imu,-0.21786092,0.17864215,-9.882589,0.0023469147,-0.005714245,0.00028157982 +36896000,imu,-0.22672212,0.1579606,-9.88089,0.0054833707,-0.004970304,0.0007122056 +36900000,imu,-0.21092899,0.147504,-9.8743305,0.0032519987,-0.004879224,-0.00073425804 +36900000,mag,-0.020698382,0.22044499,0.42926458 +36904000,imu,-0.22988838,0.15968008,-9.866604,0.00042799668,-0.0070167836,-0.0012022266 +36908000,imu,-0.23246394,0.17694725,-9.866445,0.0013129306,-0.0066978065,-0.0023913626 +36912000,mag,-0.02228318,0.21839914,0.43274996 +36912000,baro,487.62393 +36912000,imu,-0.19232394,0.20538485,-9.890236,-0.0017090808,-0.0066013956,-0.0025686028 +36916000,imu,-0.2174322,0.23389088,-9.905277,-0.0029848802,-0.010786839,-0.0016543346 +36920000,imu,-0.22755641,0.2382504,-9.909071,-0.0005621023,-0.010188711,0.00030173594 +36924000,mag,-0.027910722,0.21433611,0.42925814 +36924000,imu,-0.20294002,0.21371853,-9.922037,0.0013080642,-0.007048975,0.0032099246 +36928000,imu,-0.20744395,0.19192213,-9.9209175,-0.0013393575,-0.0059012105,0.0039019433 +36932000,imu,-0.21611415,0.21317048,-9.8873205,-0.003185846,-0.0048305877,0.0047672815 +36936000,mag,-0.027695637,0.21466452,0.42670748 +36936000,imu,-0.20632252,0.21214588,-9.867281,-0.0013118964,-0.004068111,0.003314118 +36940000,imu,-0.1916556,0.18095972,-9.871904,0.000282354,-0.004276202,-0.00019741191 +36944000,imu,-0.23114106,0.16944191,-9.886832,0.001187031,-0.0083299875,-0.0012947622 +36948000,imu,-0.2526266,0.15401776,-9.931123,-9.963014e-05,-0.007429397,-0.0014385387 +36948000,mag,-0.030056186,0.21257704,0.4252819 +36952000,imu,-0.2457952,0.17672734,-9.923826,-0.0016443499,-0.006946609,-0.002329207 +36956000,imu,-0.24243364,0.19228642,-9.880053,-0.002175313,-0.0064515457,-0.0008833271 +36960000,imu,-0.20930934,0.1775095,-9.894789,-0.0018801445,-0.0027597323,-0.0005521529 +36960000,mag,-0.02984207,0.21611996,0.43431288 +36964000,imu,-0.19909458,0.18940878,-9.884064,-0.0018251447,-0.0034914494,-0.0019665912 +36968000,imu,-0.20348105,0.21370114,-9.862873,-0.0010729249,-0.008040155,0.00026830108 +36972000,mag,-0.031404108,0.20977813,0.42537346 +36972000,imu,-0.18923505,0.23640469,-9.861097,0.0007309068,-0.008921263,0.0031312353 +36976000,imu,-0.19930841,0.22361238,-9.865833,-0.0015595062,-0.006812881,0.003308609 +36980000,imu,-0.24864142,0.18207525,-9.870672,-0.0023862808,-0.006415755,-0.0002236243 +36984000,imu,-0.25879884,0.19997267,-9.891755,-0.0025485079,-0.006592968,-0.0008305163 +36984000,baro,487.61453 +36984000,mag,-0.022685219,0.21096598,0.43212655 +36988000,imu,-0.22935276,0.18891555,-9.8735695,-0.0010740085,-0.0058526737,0.0022375474 +36992000,imu,-0.2242423,0.1920253,-9.852493,3.283794e-05,-0.0071871444,-0.0015897568 +36996000,mag,-0.022542922,0.21457799,0.42761078 +36996000,imu,-0.24970211,0.21877968,-9.88044,0.00038604022,-0.005949705,-0.003342689 +37000000,imu,-0.24481976,0.21073239,-9.890009,0.0023659694,-0.0047203293,0.0009933934 +37004000,imu,-0.22916031,0.18435328,-9.87693,0.002932857,-0.006759638,0.0013445509 +37008000,mag,-0.030770076,0.21566579,0.42810008 +37008000,imu,-0.22534396,0.19444554,-9.893383,0.00013631702,-0.0039889715,-0.0024591526 +37012000,imu,-0.22913772,0.22756179,-9.882481,-0.004005198,-0.0013023982,-0.0030940026 +37016000,imu,-0.19098796,0.21866687,-9.845266,-0.0017647103,-0.0011060111,0.0012557814 +37020000,mag,-0.031975638,0.22488235,0.4282426 +37020000,imu,-0.16995992,0.21611081,-9.874563,0.001280219,-0.0034381675,0.0012257585 +37024000,imu,-0.19631077,0.20081349,-9.894445,0.0012404892,-0.0072915964,0.0010932233 +37028000,imu,-0.21455525,0.21256469,-9.863335,-0.000706083,-0.005273225,0.0039974446 +37032000,imu,-0.22114067,0.2206201,-9.863781,-0.00061096315,-0.006594271,0.0010829673 +37032000,mag,-0.02363441,0.21647596,0.4312773 +37036000,imu,-0.21924543,0.19077714,-9.873719,-0.0011890415,-0.008862089,-0.002120865 +37040000,imu,-0.21740425,0.15416458,-9.862248,-0.003612094,-0.0055321055,-0.000886965 +37044000,mag,-0.028101465,0.21313922,0.43532085 +37044000,imu,-0.2016451,0.15438342,-9.905788,-0.005809923,-0.0057555144,-0.0007933647 +37048000,imu,-0.19655016,0.15765923,-9.898241,-0.005168711,-0.009166318,-0.00036496355 +37052000,gps,488102.0,85455032.0,473975942.0,0.0,0.0,0.0 +37052000,imu,-0.1899934,0.19763929,-9.864717,-0.002498691,-0.008912566,-0.0011015881 +37056000,baro,487.6568 +37056000,imu,-0.21032262,0.23025434,-9.850403,0.00091516227,-0.0066497377,-0.0008306346 +37056000,mag,-0.024632128,0.21441878,0.43077675 +37060000,imu,-0.19537875,0.18707919,-9.861536,-0.0010776557,-0.0068364507,-0.00045298398 +37064000,imu,-0.18105108,0.1658026,-9.879438,-0.0033800164,-0.004491234,-0.0004763931 +37068000,mag,-0.025330292,0.2144722,0.4285206 +37068000,imu,-0.211344,0.16862758,-9.880318,0.000893871,-0.003618472,0.0011035849 +37072000,imu,-0.21797124,0.19481805,-9.8539295,0.0014412872,-0.0057520047,0.0011607026 +37076000,imu,-0.23516971,0.20912828,-9.828348,-0.0006103078,-0.006787605,0.0017723086 +37080000,mag,-0.030931199,0.22055396,0.43130264 +37080000,imu,-0.22717062,0.1759885,-9.872097,-0.0022846085,-0.00751986,0.000580024 +37084000,imu,-0.1781928,0.1898122,-9.910685,0.002736386,-0.006859643,-0.0017678003 +37088000,imu,-0.20426881,0.2072352,-9.90741,0.0031951,-0.006125888,0.0007577182 +37092000,mag,-0.028327469,0.21255144,0.42776054 +37092000,imu,-0.2492012,0.21553123,-9.881633,-0.0016099828,-0.0077412114,0.005348845 +37096000,imu,-0.21866363,0.226758,-9.86451,-0.001168104,-0.008514935,0.0023757757 +37100000,imu,-0.22250879,0.20025513,-9.855413,-0.0030523168,-0.00936949,-0.0015159366 +37104000,mag,-0.030346006,0.21733934,0.42846057 +37104000,imu,-0.23255546,0.1789701,-9.861004,-0.0032593561,-0.0072576604,0.00037874316 +37108000,imu,-0.21705551,0.1791665,-9.874134,-0.0011922409,-0.0038472798,0.00041921638 +37112000,imu,-0.20594437,0.1981958,-9.86978,0.00079007633,-0.00462646,0.0012782556 +37116000,mag,-0.02396785,0.2144462,0.42397213 +37116000,imu,-0.18666895,0.21890976,-9.866325,0.0010571656,-0.005785393,0.0029909797 +37120000,imu,-0.19499764,0.20352706,-9.862001,0.00013294606,-0.006728035,0.0010607464 +37124000,imu,-0.21662998,0.18527007,-9.886732,-0.0012228625,-0.006005023,-0.00047922254 +37128000,mag,-0.023567526,0.2180072,0.43068096 +37128000,baro,487.67557 +37128000,imu,-0.22092171,0.1750764,-9.887627,-0.0027317696,-0.0056523974,-0.0020752703 +37132000,imu,-0.21380962,0.17221744,-9.851688,-0.0018056583,-0.0047206967,-0.0009078687 +37136000,mag,-0.02912622,0.21521942,0.42583653 +37136000,imu,-0.19126102,0.19226557,-9.882154,-5.901335e-06,-0.0045535252,0.0020520047 +37140000,imu,-0.1965484,0.20680146,-9.873691,0.00054845586,-0.005110143,-0.0007854137 +37144000,imu,-0.2046077,0.19778942,-9.829569,-0.0008208316,-0.004574608,0.0010735554 +37148000,imu,-0.21365029,0.17477174,-9.836361,-0.0017077094,-0.0010708252,0.00018729991 +37152000,imu,-0.23786934,0.16108467,-9.878439,-0.0026267532,-0.005035981,-0.00068665604 +37152000,mag,-0.028322114,0.21594045,0.42836243 +37156000,imu,-0.2281169,0.17648724,-9.898735,-0.0031856408,-0.006844426,0.0009022062 +37160000,imu,-0.2184481,0.20780353,-9.87714,-0.0037905283,-0.0014884425,6.3998865e-05 +37164000,mag,-0.02521812,0.21260923,0.44061193 +37164000,imu,-0.22206023,0.2472646,-9.86866,-0.0045260782,-0.0016733401,0.0010232534 +37168000,imu,-0.21793032,0.22945894,-9.856331,-0.0014978282,-0.0036323236,0.0024616146 +37172000,imu,-0.1949834,0.20606534,-9.850803,0.0025826022,-0.00723516,0.0023891802 +37176000,imu,-0.2095085,0.20760447,-9.866468,0.001284734,-0.00677807,0.0009769262 +37176000,mag,-0.023565425,0.2138606,0.43232006 +37180000,imu,-0.23716614,0.18724582,-9.899382,-0.0016215472,-0.00793904,-0.0021202771 +37184000,imu,-0.21542506,0.19993472,-9.90962,-0.00011861605,-0.0084547615,-0.0012461812 +37188000,imu,-0.19747345,0.19421156,-9.901308,0.00089855667,-0.0071538645,0.0021795249 +37188000,mag,-0.032271717,0.21928546,0.42971766 +37192000,imu,-0.21248908,0.19802581,-9.868402,-0.0016865557,-0.009410487,-0.0009306817 +37196000,imu,-0.20682012,0.2235099,-9.846257,6.849501e-05,-0.0076516606,-0.00066345674 +37200000,baro,487.62393 +37200000,imu,-0.21049345,0.19392776,-9.878372,0.00088058325,-0.005572715,-0.0019949495 +37200000,mag,-0.025158063,0.2155654,0.42958084 +37204000,imu,-0.21950643,0.15709959,-9.891361,-0.0026741037,-0.0078694485,-0.0011437432 +37208000,imu,-0.2209149,0.17345914,-9.894728,-0.003271256,-0.0060695377,0.00025204697 +37212000,imu,-0.2421116,0.18812095,-9.890512,-0.00085372315,-0.004431521,0.0023803452 +37212000,mag,-0.026213866,0.21588165,0.42907783 +37216000,imu,-0.20624575,0.17183535,-9.886367,0.0010193437,-0.004861156,0.0013314309 +37220000,imu,-0.2016619,0.17453764,-9.860063,-0.0028911652,-0.004863539,-0.0017440058 +37224000,imu,-0.21359497,0.19397752,-9.847423,-0.0028336176,-0.0030871658,0.0019291128 +37224000,mag,-0.027755218,0.21825752,0.4301078 +37228000,imu,-0.19701457,0.21361105,-9.902316,0.0018011744,-0.0014438682,0.0020101215 +37232000,imu,-0.20955023,0.20352246,-9.911921,0.001057738,-0.004115852,-0.0007531777 +37236000,mag,-0.026043769,0.21357614,0.42504612 +37236000,imu,-0.21781535,0.18105812,-9.879189,-0.0016507828,-0.0038193148,-0.0017648332 +37240000,imu,-0.21149874,0.19448094,-9.891701,-0.0028637713,-0.0014348349,-0.0014209431 +37244000,imu,-0.20689206,0.19869238,-9.903572,-0.002602704,-0.0025498779,-0.004718845 +37248000,mag,-0.024208108,0.21393311,0.42775643 +37248000,imu,-0.21509616,0.16031735,-9.887401,-0.00023534698,-0.0043936893,-0.005675186 +37252000,imu,-0.24700327,0.15828063,-9.867563,-0.0013976768,-0.006637824,-0.0005712729 +37256000,imu,-0.23850097,0.21144386,-9.88354,-0.0042492766,-0.004667589,0.0011419685 +37260000,imu,-0.2221449,0.20354062,-9.878925,-0.0002665985,-0.004887536,0.0006218935 +37260000,mag,-0.029131357,0.21516061,0.43312937 +37264000,imu,-0.22004072,0.1956657,-9.856227,-0.0017640613,-0.006800504,0.0011432412 +37268000,imu,-0.20201191,0.21738029,-9.850079,-0.0064997263,-0.0047381376,-9.04004e-06 +37272000,baro,487.68027 +37272000,imu,-0.20548765,0.2235546,-9.859571,-0.004020664,-0.0052965027,-0.0021148815 +37272000,mag,-0.025279224,0.21177359,0.42948437 +37276000,imu,-0.1904483,0.20871082,-9.9127445,-0.0008321417,-0.006455507,-0.001712472 +37280000,imu,-0.18258119,0.18131517,-9.942181,-0.0034827502,-0.0057035675,0.0006168119 +37284000,mag,-0.021844402,0.21548814,0.43084496 +37284000,imu,-0.18540227,0.1844747,-9.910374,-0.005409981,-0.005303174,0.0031654763 +37288000,imu,-0.19357616,0.20516579,-9.851839,-0.003913025,-0.006027676,0.0026889986 +37292000,imu,-0.19085172,0.18343593,-9.858528,-0.00048534508,-0.004697605,0.0018671545 +37296000,imu,-0.19907048,0.1864652,-9.891434,0.0006198441,-0.0034074923,0.0018632609 +37296000,mag,-0.021842726,0.21388525,0.42727768 +37300000,imu,-0.22251341,0.19641714,-9.870661,0.00030026826,-0.0042400714,0.0011062307 +37304000,imu,-0.18847191,0.19107902,-9.873917,-0.0019102151,-0.0056575527,0.0016044093 +37308000,imu,-0.18920381,0.2257646,-9.894197,-0.001272266,-0.008912267,0.0010253458 +37308000,mag,-0.024348143,0.21760793,0.42890263 +37312000,imu,-0.23370028,0.22065979,-9.840223,0.0016290664,-0.0107750725,0.0012413049 +37316000,imu,-0.22905171,0.20373584,-9.8225975,0.0007233062,-0.008209888,0.0010139411 +37320000,imu,-0.22764193,0.2109124,-9.839516,-0.00055397564,-0.0044362093,0.00095992506 +37320000,mag,-0.028753506,0.2180607,0.42453665 +37324000,imu,-0.22040473,0.16282552,-9.858643,-0.0016402118,-0.0020725229,0.0015245373 +37328000,imu,-0.2096752,0.13586754,-9.884684,-0.00026953605,-0.002920483,0.0032329953 +37332000,mag,-0.03129743,0.21136767,0.42654687 +37332000,imu,-0.2315159,0.18788463,-9.8953705,-0.0015382842,-0.0075374707,0.0008050764 +37336000,imu,-0.21959934,0.20481892,-9.869684,-0.00021454747,-0.010364924,-0.00030489772 +37340000,imu,-0.21594411,0.18662812,-9.860132,0.0018562479,-0.0067392318,0.0021797454 +37344000,mag,-0.025874734,0.22307262,0.42361704 +37344000,imu,-0.21552522,0.20048973,-9.890778,0.00025850846,-0.0046200375,0.000912365 +37344000,baro,487.67087 +37348000,imu,-0.16140656,0.20183824,-9.863586,0.00031527982,-0.0068084826,-0.0019037444 +37352000,imu,-0.1515618,0.19851078,-9.877281,0.00042475597,-0.007398671,-0.00140125 +37356000,imu,-0.19827358,0.17603444,-9.888599,-0.0018018355,-0.006064174,0.0020624953 +37356000,mag,-0.026332943,0.21292992,0.4338969 +37360000,imu,-0.20198734,0.17151867,-9.868443,9.3219416e-05,-0.0039653517,0.0024100067 +37364000,imu,-0.18094015,0.20273711,-9.884439,0.0020158943,-0.0031253658,0.0009730253 +37368000,mag,-0.022269558,0.21810372,0.42270467 +37368000,imu,-0.19061494,0.18651067,-9.899782,0.0020488105,-0.0045002173,-5.209796e-05 +37372000,imu,-0.21530843,0.1488419,-9.904161,0.0009848011,-0.0071172128,-2.3326911e-05 +37376000,imu,-0.23099717,0.15753089,-9.882087,-0.0028767148,-0.0057800855,0.0034513213 +37380000,imu,-0.21537128,0.18684927,-9.891546,-0.0006281108,-0.0030621353,0.0020904732 +37380000,mag,-0.023582509,0.21240386,0.42998517 +37384000,imu,-0.22597584,0.17002565,-9.905662,0.001442368,-0.005400082,-0.00045625595 +37388000,imu,-0.25622022,0.18545935,-9.875284,-0.0009937106,-0.007971845,-0.0013947431 +37392000,mag,-0.026614754,0.22339928,0.42983785 +37392000,imu,-0.26221618,0.19837333,-9.885544,-0.0008910701,-0.006728544,-8.257807e-05 +37396000,imu,-0.23886079,0.16311356,-9.878608,-0.0011116281,-0.0024953487,0.002524999 +37400000,imu,-0.23009372,0.15285116,-9.855774,-0.0035512003,-0.0027944662,0.0018780319 +37404000,imu,-0.22876705,0.16013391,-9.86414,-0.0057018274,-0.0076672076,0.0016221174 +37404000,mag,-0.023982115,0.22034706,0.42626715 +37408000,imu,-0.21424401,0.1712678,-9.867056,-0.0035973026,-0.0069298577,2.8081431e-05 +37412000,imu,-0.23568653,0.1979431,-9.883752,0.00096655526,-0.004838077,0.0002575954 +37416000,imu,-0.24111158,0.22681212,-9.884356,0.0043664086,-0.0065320153,-0.0013860193 +37416000,mag,-0.02772997,0.21569061,0.42869312 +37416000,baro,487.66617 +37420000,imu,-0.22788872,0.21822302,-9.863813,0.0037386443,-0.0075879265,-0.0016868516 +37424000,imu,-0.22199991,0.18176563,-9.891739,0.0010945742,-0.005195096,0.0018622737 +37428000,imu,-0.2004417,0.17120588,-9.881989,-0.001441272,-0.0040595056,0.003263808 +37428000,mag,-0.031427506,0.21550533,0.43501917 +37432000,imu,-0.21203136,0.1837726,-9.840473,-0.0053014234,-0.005124374,0.0022460565 +37436000,imu,-0.246354,0.18896972,-9.866496,-0.0042385953,-0.004944482,0.0016761494 +37440000,mag,-0.030762294,0.21814245,0.43887874 +37440000,imu,-0.23046708,0.19283037,-9.877348,-0.0046606637,-0.008794657,0.0011094356 +37444000,imu,-0.20822665,0.22651386,-9.851146,-0.004910984,-0.006406409,-0.0003413159 +37448000,imu,-0.23355243,0.22019666,-9.860153,-0.0017661655,-0.004215662,0.0004034639 +37452000,gps,488106.0,85455032.0,473975942.0,0.0,0.0,0.02 +37452000,mag,-0.025144935,0.21800344,0.43155277 +37452000,imu,-0.23765513,0.20102535,-9.872107,0.0018783684,-0.008286035,2.87729e-05 +37456000,imu,-0.22047165,0.19877718,-9.863987,0.001009835,-0.008450218,-0.000905366 +37460000,imu,-0.2072177,0.15936713,-9.861491,-0.00089666864,-0.0066058836,-0.0018012769 +37464000,imu,-0.21039647,0.14116038,-9.871771,-0.00029101875,-0.0066029215,-0.0018940825 +37464000,mag,-0.016684733,0.21511477,0.4253687 +37468000,imu,-0.21309224,0.1680195,-9.870949,0.0008225083,-0.007872079,-0.00046756028 +37472000,imu,-0.20602214,0.20074266,-9.883108,0.0014547554,-0.006947938,8.061483e-05 +37476000,imu,-0.23622334,0.21847306,-9.887772,-0.0022025276,-0.0035615917,-0.00019684894 +37476000,mag,-0.025058642,0.21590015,0.42821798 +37480000,imu,-0.24240917,0.20325944,-9.882315,-0.0016381925,-0.0027387724,-0.00037621328 +37484000,imu,-0.22095473,0.16877228,-9.8786125,-0.0007941744,-0.0048628515,5.139571e-05 +37488000,baro,487.62863 +37488000,imu,-0.21081896,0.17407541,-9.857721,0.00079192955,-0.0032451497,-0.0007068538 +37488000,mag,-0.020976627,0.21610239,0.4171785 +37492000,imu,-0.20516595,0.15997417,-9.8491955,-0.0013111493,-0.0023511038,0.0010682336 +37496000,imu,-0.20195004,0.15587531,-9.869476,-0.005704099,-0.0060097235,0.0018035686 +37500000,mag,-0.030483423,0.21775295,0.42753336 +37500000,imu,-0.20264742,0.1999416,-9.886366,-0.003065338,-0.0076127555,0.001023246 +37504000,imu,-0.23135844,0.20966177,-9.882811,-0.0014702433,-0.009219375,0.0014101011 +37508000,imu,-0.2062617,0.19658008,-9.881521,-0.0013971535,-0.0085407905,0.0021340593 +37512000,imu,-0.1766316,0.17930113,-9.860081,-0.0011181182,-0.0047953962,0.0011987878 +37512000,mag,-0.03647019,0.21578021,0.43137282 +37516000,imu,-0.21578756,0.16141249,-9.86262,-0.002195058,-0.0035756996,0.00204363 +37520000,imu,-0.21516077,0.14274015,-9.894283,-0.00187297,-0.0038233548,0.0012635575 +37524000,imu,-0.19786304,0.14597595,-9.902079,-0.0006367906,-0.00505554,-0.0002734861 +37524000,mag,-0.021974647,0.20799223,0.42750454 +37528000,imu,-0.2122485,0.19826238,-9.8358965,-0.00036478258,-0.006238901,0.0021008553 +37532000,imu,-0.23325789,0.22723965,-9.809218,-0.0040736725,-0.009452827,0.00076396664 +37536000,imu,-0.22673583,0.22893573,-9.854641,-0.006925767,-0.0071201557,0.0032345334 +37536000,mag,-0.025717622,0.22158177,0.4304059 +37540000,imu,-0.20224261,0.212579,-9.891232,-0.002934729,-0.0031333503,0.004485509 +37544000,imu,-0.18898809,0.19044943,-9.906345,0.0018477261,-0.004358953,-0.0011717903 +37548000,mag,-0.025647474,0.21052165,0.42972952 +37548000,imu,-0.18348153,0.18526663,-9.872345,0.0025109106,-0.007600878,-0.0033797338 +37552000,imu,-0.18063271,0.16050942,-9.900352,0.00025347888,-0.008935052,-0.0021505072 +37556000,imu,-0.20851865,0.14733927,-9.887755,-0.0017678173,-0.005044847,-0.001408305 +37560000,mag,-0.019471472,0.211997,0.4299375 +37560000,imu,-0.24736269,0.16705473,-9.847315,-0.002809629,-0.005597277,-3.1102867e-05 +37560000,baro,487.57697 +37564000,imu,-0.2807916,0.18097772,-9.884184,7.2502764e-05,-0.005333644,-0.0027119296 +37568000,imu,-0.27381957,0.19979057,-9.891651,0.0024614593,-0.004029949,-0.00412126 +37572000,imu,-0.23555103,0.19936322,-9.905609,0.001306642,-0.005742044,-0.0012882397 +37572000,mag,-0.021594487,0.2222486,0.42748752 +37576000,imu,-0.2050974,0.1508259,-9.882187,0.00058439764,-0.004518005,-0.00055967586 +37580000,imu,-0.2145411,0.12830478,-9.830746,-0.0010610034,-0.0023628217,-0.0016568592 +37584000,imu,-0.24188092,0.15104099,-9.838072,-0.0022150383,-0.0031115012,-0.003403441 +37584000,mag,-0.022808384,0.21573414,0.42662042 +37588000,imu,-0.23400816,0.17915188,-9.862391,0.0008269508,-0.007182079,-9.036846e-05 +37592000,imu,-0.2404747,0.17609213,-9.863836,0.0011477312,-0.007550957,0.0010744816 +37596000,mag,-0.029573804,0.21436375,0.43653473 +37596000,imu,-0.24621613,0.1735326,-9.894462,-0.0012297415,-0.0052231257,-0.00014140243 +37600000,imu,-0.2598648,0.20806664,-9.923567,-8.871855e-06,-0.005292315,-0.0020719192 +37604000,mag,-0.026394146,0.2078863,0.42384025 +37604000,imu,-0.2635339,0.20054458,-9.895023,0.0012907934,-0.005873503,-0.0032516944 +37608000,imu,-0.26420313,0.18033552,-9.881159,-0.0002447429,-0.00224914,-0.00097570533 +37612000,imu,-0.25514802,0.20383789,-9.874071,-0.0010123734,5.181488e-05,-0.0026625008 +37616000,imu,-0.21639839,0.19038771,-9.861336,-0.002753004,-0.0038144675,-0.004556807 +37620000,mag,-0.020752838,0.21614465,0.42626658 +37620000,imu,-0.18595196,0.1765949,-9.849419,-0.0048476877,-0.0061790394,-0.00027284192 +37624000,imu,-0.18262327,0.1630948,-9.854044,-0.0038939428,-0.0026606284,0.005724716 +37628000,imu,-0.20827457,0.15766922,-9.865143,-0.0015644861,-0.0016795003,0.0034799199 +37628000,mag,-0.030771118,0.2194417,0.4395656 +37628000,baro,487.5676 +37632000,imu,-0.21050471,0.16734163,-9.845369,0.0002701823,-0.004184592,-0.0017819422 +37636000,imu,-0.2033745,0.18233433,-9.851685,0.001456298,-0.0054533836,-0.00042450393 +37640000,imu,-0.23095633,0.1888994,-9.857674,-0.0036430752,-0.006036222,0.0027157357 +37644000,mag,-0.023718582,0.21036398,0.42872524 +37644000,imu,-0.2296199,0.17854647,-9.882141,-0.0055898977,-0.0045936494,0.00065176305 +37648000,imu,-0.2187104,0.20422001,-9.920647,-0.0017363994,-0.0057130354,-0.001157203 +37652000,imu,-0.22022805,0.20248972,-9.907543,-0.0010975306,-0.006372812,-0.00090250483 +37656000,mag,-0.019932043,0.21692468,0.42842096 +37656000,imu,-0.20828086,0.18562746,-9.8780775,6.298131e-05,-0.004064065,-0.0015457001 +37660000,imu,-0.22520569,0.17679226,-9.87501,-0.0007625717,-0.0018701105,-0.0019361448 +37664000,imu,-0.2399509,0.16158022,-9.868819,0.0006954623,-0.0022741861,-0.00022265465 +37668000,imu,-0.23051879,0.17897257,-9.871281,-0.0019012925,-0.0054318365,0.00049576774 +37668000,mag,-0.030799268,0.21289961,0.42919683 +37672000,imu,-0.2244651,0.19252434,-9.875787,-0.006864376,-0.007032189,-0.000614123 +37676000,imu,-0.22656536,0.17749958,-9.85858,-0.0045344895,-0.0072508105,-0.0010543751 +37676000,mag,-0.029174488,0.21408886,0.4321489 +37680000,baro,487.5629 +37680000,imu,-0.20821206,0.1845528,-9.85368,-0.00370477,-0.0052843364,0.0006512605 +37684000,imu,-0.22622174,0.18165983,-9.866156,-0.0035953892,-0.006515708,0.0013688215 +37688000,imu,-0.22761318,0.1613463,-9.8650675,-0.00043814493,-0.008239044,-0.00010245712 +37692000,imu,-0.20894626,0.19623323,-9.863604,-0.001619512,-0.005293137,0.0004590852 +37692000,mag,-0.025708161,0.21509358,0.42596012 +37696000,imu,-0.21501282,0.18448393,-9.890071,-0.0017759847,-0.0027137115,0.0016431108 +37700000,imu,-0.23114073,0.15469284,-9.893168,-0.0019949172,-0.0015420687,0.0008732989 +37704000,mag,-0.026946906,0.21142623,0.42471683 +37704000,imu,-0.22867456,0.1442625,-9.873318,-0.0042386865,-0.0027569009,-5.1658502e-05 +37708000,imu,-0.22176574,0.17384098,-9.881574,-0.0023092595,-0.00466597,0.0013939105 +37712000,imu,-0.22832295,0.21085493,-9.901989,-0.00038057702,-0.0022909348,0.0040037916 +37716000,mag,-0.026052482,0.21716191,0.43191546 +37716000,imu,-0.22657248,0.19336997,-9.876832,-0.0010867333,-0.0046398942,0.0044835396 +37720000,imu,-0.22190818,0.1900495,-9.858903,-0.004421254,-0.006399771,0.0026664939 +37724000,imu,-0.22073412,0.22144458,-9.899723,-0.0062870886,-0.0038302846,0.001794239 +37728000,mag,-0.029412718,0.22755872,0.42440784 +37728000,imu,-0.20761892,0.22955157,-9.920303,-0.00520523,-0.0076736696,-0.0010415327 +37732000,imu,-0.20262304,0.18244721,-9.897053,-0.0051120976,-0.010304043,-0.00012693627 +37736000,imu,-0.2323742,0.17817733,-9.860043,-0.003120525,-0.007085451,0.0018234545 +37740000,mag,-0.019790718,0.21487598,0.4368628 +37740000,imu,-0.2220759,0.1732575,-9.865097,-0.00083042047,-0.002502556,0.0012082105 +37744000,imu,-0.1895107,0.15289845,-9.878078,-0.00013218458,-0.0021847296,5.290936e-05 +37748000,imu,-0.19306874,0.17475292,-9.835861,0.0018242011,-0.005444941,-0.003015241 +37748000,mag,-0.029823368,0.21344648,0.4286921 +37752000,baro,487.6521 +37752000,imu,-0.21686311,0.19030677,-9.876957,0.0014249466,-0.008090489,-0.0053159394 +37756000,imu,-0.23338905,0.21376987,-9.924845,0.0011176383,-0.006626709,-0.004878639 +37760000,imu,-0.25951743,0.1844355,-9.873887,5.4452106e-05,-0.0071072993,-0.0021223256 +37764000,mag,-0.02663,0.21004651,0.43189558 +37764000,imu,-0.25229988,0.13357516,-9.871195,-0.0035025983,-0.00845096,0.000705569 +37768000,imu,-0.24383962,0.14141093,-9.859914,-0.0038540442,-0.008152932,0.0014180792 +37772000,mag,-0.02757448,0.21703322,0.4209396 +37772000,imu,-0.22850178,0.16689518,-9.826929,-0.004527196,-0.005666119,0.00014975472 +37776000,imu,-0.18993226,0.18734835,-9.827067,-0.0058790236,-0.0050411373,0.0013284691 +37780000,imu,-0.16510507,0.20262258,-9.846127,-0.0038081338,-0.005844088,0.001576149 +37784000,imu,-0.1714158,0.17999242,-9.846232,-0.004045725,-0.0067114555,-0.0008122398 +37788000,mag,-0.020349372,0.21961787,0.43055803 +37788000,imu,-0.2169266,0.18307823,-9.81517,-0.0030137112,-0.007087984,0.0012408115 +37792000,imu,-0.24447682,0.21415529,-9.865656,-0.0038744865,-0.00458076,0.0029714736 +37796000,mag,-0.030424701,0.21326295,0.42363876 +37796000,imu,-0.21800914,0.19458248,-9.885729,-0.0041791443,-0.0039412132,0.0029588523 +37800000,imu,-0.19030839,0.20447642,-9.869582,-0.0028219267,-0.0041995966,0.00030640792 +37804000,imu,-0.19777128,0.18973923,-9.855649,-0.0022368364,-0.0067441734,-0.0017393434 +37808000,imu,-0.21453473,0.17426895,-9.846494,0.00048717708,-0.0076190643,-0.00067456655 +37812000,imu,-0.2201958,0.17525573,-9.869225,-0.00032045424,-0.006110002,-0.0012874297 +37812000,mag,-0.021464903,0.21464705,0.43528786 +37816000,imu,-0.21770617,0.18734594,-9.879223,-0.0036335324,-0.004474646,0.0006458662 +37820000,imu,-0.22800446,0.19374897,-9.8832245,-0.0025711728,-0.0027059463,-3.9076927e-05 +37824000,mag,-0.024100294,0.21394499,0.42742282 +37824000,imu,-0.2481997,0.17921773,-9.85433,-0.0002953256,-0.005983581,-0.0021432447 +37824000,baro,487.69904 +37828000,imu,-0.2584726,0.18141195,-9.821992,-0.001091225,-0.0067126867,0.0009661769 +37832000,imu,-0.22423223,0.19530217,-9.838577,-0.00088189903,-0.0064101624,0.00045182314 +37836000,mag,-0.028412152,0.21291752,0.42988348 +37836000,imu,-0.20366958,0.18881823,-9.854822,-0.0039940206,-0.008363172,-0.0021857074 +37840000,imu,-0.22684696,0.17729242,-9.861618,-0.0041577816,-0.005714396,-0.0023292862 +37840000,landed,1.0 +37844000,imu,-0.22852042,0.16838858,-9.8793545,-0.0018579772,-0.0052917623,-0.0015945575 +37848000,imu,-0.20055394,0.17163384,-9.85561,-0.0012966233,-0.0065116975,-0.00044993826 +37848000,mag,-0.025965525,0.2158085,0.4269322 +37852000,imu,-0.19773601,0.20835873,-9.859114,0.0015684182,-0.008238003,0.0009988587 +37852000,gps,488109.0,85455032.0,473975942.0,-0.01,0.0,0.0 +37856000,imu,-0.19290209,0.20153975,-9.887388,0.00020458509,-0.0036148939,0.00067239755 +37860000,mag,-0.022453193,0.21618406,0.43299663 +37860000,imu,-0.22044638,0.18052359,-9.857124,-0.0014168819,-2.2632532e-06,-0.0020842713 +37864000,imu,-0.2576585,0.15944935,-9.834281,0.00042755308,-0.0029780911,-0.00078257796 +37868000,imu,-0.24392027,0.1703846,-9.89686,0.0010483069,-0.0046651172,0.0008274363 +37872000,imu,-0.21790326,0.19878213,-9.910538,-0.0018462627,-0.006653032,-0.0021362235 +37872000,mag,-0.02975368,0.21173374,0.43514946 +37876000,imu,-0.2149753,0.18409553,-9.872177,-0.0015748353,-0.0073654447,-0.00028572907 +37880000,imu,-0.2256327,0.15960552,-9.860257,0.00061023235,-0.005005372,0.0033954836 +37884000,mag,-0.028571488,0.20935306,0.4317421 +37884000,imu,-0.21470904,0.15049374,-9.847219,-0.002976217,-0.0039111213,0.003968123 +37888000,imu,-0.2153917,0.16485184,-9.872694,-0.004232826,-0.0056732367,0.0030140216 +37892000,baro,487.6568 +37892000,imu,-0.2422665,0.2080846,-9.885786,-0.0032255324,-0.007849128,0.00052584434 +37896000,imu,-0.22849421,0.19581293,-9.857307,-0.0033813752,-0.007621782,-0.004683873 +37896000,mag,-0.021741658,0.21684368,0.4291795 +37900000,imu,-0.22541474,0.15452044,-9.884333,-0.0025589527,-0.005140859,-0.0054466887 +37904000,imu,-0.25445667,0.16843581,-9.896922,-0.0035016045,-0.0049188766,-0.00390467 +37904000,mag,-0.02891181,0.21762478,0.42304927 +37908000,imu,-0.21761885,0.17845905,-9.86531,-0.0022783896,-0.0052407244,-0.0030093954 +37912000,imu,-0.1918199,0.15911007,-9.859776,-0.0024358125,-0.0068010674,-0.0013173549 +37916000,imu,-0.20464268,0.1709349,-9.859264,-0.002053165,-0.0050070593,-0.0019190563 +37920000,mag,-0.027151916,0.21521914,0.42677066 +37920000,imu,-0.20204253,0.20517369,-9.85999,-0.0022131768,-0.0028854134,-0.00033589583 +37924000,imu,-0.21643637,0.20469396,-9.853912,-0.0020783863,-0.0045293975,-0.0005914032 +37928000,imu,-0.2223346,0.20945212,-9.831215,-0.0017096302,-0.0048950696,-0.00063465966 +37932000,mag,-0.027484972,0.213505,0.4287698 +37932000,imu,-0.20793279,0.21624887,-9.844972,-0.005261178,-0.0073543363,0.00024282488 +37936000,imu,-0.20682794,0.19056767,-9.882841,-0.002894593,-0.008061022,-0.0028323515 +37940000,imu,-0.21556103,0.19105145,-9.872753,2.4276616e-05,-0.002080399,-0.0029573939 +37944000,baro,487.58636 +37944000,imu,-0.23588926,0.19520685,-9.846287,-0.00021004847,-0.0018717723,0.0018315946 +37944000,mag,-0.03371922,0.21951017,0.42782885 +37948000,imu,-0.24745998,0.14769903,-9.828037,-0.0023830517,-0.004340412,0.0041742995 +37952000,imu,-0.23555422,0.16956313,-9.8282795,-0.0015893365,-0.0046736766,0.00420958 +37956000,imu,-0.2095925,0.19825672,-9.854496,-0.00038465258,-0.006192811,0.0005398188 +37956000,mag,-0.020305887,0.21301278,0.42559657 +37960000,imu,-0.21549447,0.16417128,-9.869876,-0.0009821049,-0.005002652,-0.0012314229 +37964000,imu,-0.21745619,0.17169003,-9.877135,0.0025905077,-0.0019133877,-0.0010861665 +37968000,mag,-0.024547676,0.22093855,0.4288684 +37968000,imu,-0.20255452,0.22763859,-9.889106,0.0011093499,-0.0013048456,-0.0020090034 +37972000,imu,-0.19710064,0.21514934,-9.853224,-0.0034621176,-0.0027799667,0.00073721464 +37976000,imu,-0.21638224,0.18348114,-9.837928,-0.0014881759,-0.0035122726,-0.0009112412 +37980000,imu,-0.2318525,0.18923211,-9.848972,0.00075673586,-0.0039963643,-0.0001252778 +37980000,mag,-0.026696768,0.20899986,0.428341 +37984000,imu,-0.21015838,0.18686785,-9.834577,-0.00021537692,-0.0073043033,0.0027991894 +37988000,mag,-0.025962967,0.21524857,0.4326772 +37988000,imu,-0.20256835,0.18183675,-9.857517,-0.0008706849,-0.0046907254,0.00076987874 +37992000,imu,-0.22752841,0.17636007,-9.873819,-0.002921121,-0.00045400724,-0.0026289306 +37996000,imu,-0.24861528,0.16101144,-9.8398285,-0.0039632265,-0.0044043465,-0.004102322 +38000000,imu,-0.24364427,0.16758889,-9.830957,-0.0009578494,-0.004429671,0.00035928606 +38004000,mag,-0.025661152,0.21305296,0.43079174 +38004000,imu,-0.23221026,0.17414433,-9.854568,3.148978e-05,-0.0023909702,0.0005703969 +38008000,imu,-0.20983756,0.16536112,-9.846928,-0.002458337,-0.0018589075,-0.00042947548 +38012000,imu,-0.20044938,0.1817135,-9.864968,-0.0023775278,-0.0039081,0.00074001617 +38016000,imu,-0.21344736,0.19594704,-9.8725815,-0.00029058554,-0.0032513926,0.0017123367 +38016000,mag,-0.02823263,0.21993093,0.4308947 +38016000,baro,487.5441 +38020000,imu,-0.22899115,0.18470709,-9.848901,-0.0010769534,-0.0016307916,0.0001509518 +38024000,imu,-0.19499478,0.16653588,-9.845952,-0.0035198696,-0.0069944384,-0.0032181563 +38028000,mag,-0.02603451,0.21506727,0.42979786 +38028000,imu,-0.1762025,0.1880954,-9.8228035,-0.005185344,-0.008959827,-0.003993909 +38032000,imu,-0.21513802,0.18563874,-9.855615,-0.0012181198,-0.007167511,-0.004333819 +38036000,imu,-0.20472074,0.16790217,-9.857016,0.0010422625,-0.008445193,0.0007327087 +38040000,mag,-0.02137295,0.21638666,0.424705 +38040000,imu,-0.21890181,0.17413817,-9.849428,-0.0021686503,-0.008480181,0.0014288253 +38044000,imu,-0.21629453,0.17137994,-9.889275,-0.0023070266,-0.004601746,-0.0028523733 +38048000,imu,-0.20552388,0.16429247,-9.869896,0.00036074666,-0.0036709777,-0.0021651203 +38052000,mag,-0.02658612,0.21694846,0.42246443 +38052000,imu,-0.24009085,0.173454,-9.86725,0.0014799718,-0.008356894,-0.00096806197 +38056000,imu,-0.22933593,0.16519111,-9.87986,9.558129e-07,-0.010910667,-0.0010285829 +38060000,imu,-0.21808298,0.16888237,-9.904875,-0.00060909643,-0.009019141,-0.0004472595 +38064000,imu,-0.23230371,0.18257305,-9.886431,-0.0005414895,-0.00704079,0.0006163761 +38064000,mag,-0.020892281,0.20980056,0.42733437 +38068000,imu,-0.20559153,0.18917705,-9.845604,-0.0016130173,-0.0036645462,-9.460078e-05 +38072000,mag,-0.023012536,0.21629885,0.42672095 +38072000,imu,-0.20159307,0.19674344,-9.842392,-0.0021049704,-0.005913635,-0.00016383812 +38076000,imu,-0.23104808,0.17747247,-9.832649,-0.001974557,-0.0078469515,0.00066346955 +38080000,imu,-0.25040132,0.17768136,-9.841169,-0.0011238344,-0.0058416133,0.0006293187 +38084000,imu,-0.26512378,0.18890907,-9.839249,0.00031172423,-0.005827563,-0.00026022596 +38088000,mag,-0.02751492,0.21913417,0.42547 +38088000,imu,-0.24438182,0.1771928,-9.864909,-0.0015166904,-0.004505527,0.00012952491 +38088000,baro,487.62863 +38092000,imu,-0.2365847,0.1707278,-9.89413,-0.003614371,-0.0060749757,-0.0026078457 +38096000,imu,-0.2193552,0.18516953,-9.8648815,-0.0019149667,-0.008546224,-0.0031556347 +38100000,mag,-0.023393236,0.21648787,0.4322691 +38100000,imu,-0.19534245,0.19699365,-9.874994,-0.0026633,-0.0044327592,0.0011732606 +38104000,imu,-0.21148014,0.18343122,-9.886536,-0.0038190638,-0.003937845,0.002237273 +38108000,imu,-0.219998,0.14304659,-9.852039,-0.0053801467,-0.008580459,-0.0002747543 +38112000,mag,-0.030846355,0.21212298,0.42597577 +38112000,imu,-0.18923822,0.13745324,-9.848347,-0.0051833275,-0.0072362428,-0.0025254057 +38116000,imu,-0.18410276,0.14989486,-9.846022,-0.0015238917,-0.0064985794,-0.00090638973 +38120000,imu,-0.2116041,0.14591393,-9.842978,0.0036116613,-0.008971493,0.001003588 +38124000,mag,-0.02870684,0.22147024,0.43027684 +38124000,imu,-0.21220273,0.17389332,-9.856981,0.0013669685,-0.009950277,-0.0005369565 +38128000,imu,-0.20951238,0.19444308,-9.902363,-0.004207092,-0.005785594,-0.00017150088 +38132000,imu,-0.20668443,0.19262211,-9.882996,-0.0015493318,-0.0029969704,0.000730886 +38136000,imu,-0.19763911,0.19452755,-9.859493,-0.00020985665,-0.0065587373,-0.00044920488 +38136000,mag,-0.026968744,0.21446714,0.43034905 +38140000,imu,-0.21467495,0.18892118,-9.881346,-0.00056190294,-0.0060846135,9.795899e-05 +38144000,imu,-0.21748994,0.17834045,-9.859419,-0.0010659335,-0.0046820845,0.0004898873 +38148000,imu,-0.18220259,0.18036152,-9.852699,-1.451946e-05,-0.00914597,-0.0017872322 +38148000,mag,-0.02753471,0.21397275,0.42131776 +38152000,imu,-0.19956663,0.16202807,-9.861284,0.0015203598,-0.010594668,-0.0014538488 +38156000,imu,-0.25017902,0.15843289,-9.884379,0.0010979116,-0.0073232036,0.0014715432 +38160000,imu,-0.26964957,0.18851714,-9.881294,0.0003912063,-0.005967123,-0.0009447359 +38160000,baro,487.6474 +38160000,mag,-0.023587782,0.21227317,0.42728558 +38164000,imu,-0.23470801,0.18269214,-9.859135,-0.00030236968,-0.004660537,-0.0014296612 +38168000,imu,-0.20453864,0.17239547,-9.880112,0.00071699073,-0.003977774,0.0019456872 +38172000,imu,-0.20677248,0.17735708,-9.870249,0.00076811505,-0.005388271,0.002183442 +38172000,mag,-0.025892282,0.20929597,0.43086356 +38176000,imu,-0.19413298,0.1672698,-9.836932,0.000570545,-0.004982104,0.002924103 +38180000,imu,-0.2351307,0.15162107,-9.856624,-0.001203637,-0.004080138,0.0003320095 +38184000,imu,-0.23118922,0.15621373,-9.876051,-0.0015531137,-0.0051813084,-0.001718286 +38184000,mag,-0.023503775,0.21592085,0.43048948 +38188000,imu,-0.20174494,0.17543596,-9.8780365,0.00093917735,-0.004811086,0.0017147113 +38192000,imu,-0.21912938,0.18198858,-9.860774,-0.0013718591,-0.004084284,0.0018708541 +38196000,mag,-0.021046484,0.21156381,0.42194718 +38196000,imu,-0.24533424,0.14354791,-9.852455,-0.0046892175,-0.008108494,0.0018076235 +38200000,imu,-0.27809134,0.14471523,-9.869335,-0.0018834637,-0.008712567,0.0009449318 +38204000,imu,-0.24922663,0.18575749,-9.866345,6.35218e-05,-0.008010833,-0.00025764183 +38204000,mag,-0.030977303,0.21486005,0.43272334 +38208000,imu,-0.20856874,0.20049407,-9.860731,-0.0032627075,-0.009432601,0.0010355366 +38212000,imu,-0.21186227,0.19350095,-9.893169,0.00024064082,-0.009141171,-0.0016181946 +38216000,imu,-0.23715395,0.17754965,-9.891238,0.0035444358,-0.007745104,-0.0031465867 +38220000,imu,-0.21675685,0.19841929,-9.870028,-0.0006853166,-0.0029101132,-0.0025033064 +38220000,mag,-0.025594132,0.21368173,0.43346015 +38224000,imu,-0.20187242,0.20958757,-9.84564,-0.002826854,-0.0032384312,-0.0019984776 +38228000,imu,-0.21430686,0.16827193,-9.835368,-0.00226763,-0.0055593816,0.0016953781 +38232000,baro,487.62393 +38232000,mag,-0.029287847,0.21442987,0.4323762 +38232000,imu,-0.21030723,0.14618108,-9.896906,-0.002098203,-0.004280106,0.00014381084 +38236000,imu,-0.19913962,0.17672828,-9.901559,-0.0027222298,-0.0050942837,-0.0053169862 +38240000,imu,-0.2117507,0.19529217,-9.829462,-0.0010452779,-0.0059218286,-0.0020688258 +38244000,mag,-0.020211263,0.21080951,0.42657226 +38244000,imu,-0.21099153,0.19429868,-9.80759,-0.0009335902,-0.003914322,0.003753067 +38248000,imu,-0.20077345,0.18950677,-9.863358,-0.0015833174,-0.0046640956,0.0036551913 +38252000,imu,-0.20853436,0.1936402,-9.874673,-0.0014429132,-0.0068837544,0.000985703 +38252000,gps,488108.0,85455032.0,473975942.0,0.0,0.0,-0.03 +38256000,mag,-0.028471718,0.21374288,0.42676607 +38256000,imu,-0.17546268,0.16375661,-9.828654,-0.0016017403,-0.004368999,0.00060219824 +38260000,imu,-0.16745906,0.16817507,-9.857383,-0.0024882986,-0.002515438,0.0025161896 +38264000,imu,-0.19246349,0.21569762,-9.890956,0.00056446204,-0.0020249553,0.0010112808 +38268000,mag,-0.028024111,0.21691841,0.42418945 +38268000,imu,-0.19482489,0.21598923,-9.881805,0.0006290749,-0.004042138,-0.0027187455 +38272000,imu,-0.17915834,0.22684462,-9.859073,-0.004448563,-0.004065596,-0.0029001029 +38276000,imu,-0.2018043,0.21944113,-9.848852,-0.0030140814,-0.003134127,-0.0015777999 +38280000,mag,-0.020357493,0.21289916,0.42435035 +38280000,imu,-0.22732548,0.18633561,-9.886097,-0.0023646075,-0.0065101017,0.00015048329 +38284000,imu,-0.21007623,0.19188964,-9.892521,-0.0008508042,-0.00746756,0.0019149566 +38288000,imu,-0.2005878,0.21849264,-9.873401,-0.000102440434,-0.007799892,0.0012300326 +38292000,mag,-0.027230375,0.21962717,0.41994718 +38292000,imu,-0.2064611,0.18411441,-9.887146,-0.0018452973,-0.009679729,0.00052038307 +38296000,imu,-0.21081941,0.19176537,-9.903325,-0.00074397033,-0.008410558,0.00057189417 +38300000,imu,-0.19584663,0.18849352,-9.885381,-0.001091102,-0.0051749917,-0.001261178 +38304000,baro,487.57697 +38304000,imu,-0.20782906,0.15142931,-9.859965,-0.0025122527,-0.007986179,-0.00042288442 +38304000,mag,-0.030938935,0.21314743,0.43479747 +38308000,imu,-0.21885331,0.16081154,-9.844475,-0.00053117453,-0.012205341,0.0024083655 +38312000,imu,-0.2113334,0.16090222,-9.867196,0.0014387445,-0.011812667,0.0018260019 +38316000,imu,-0.23994422,0.17210947,-9.874205,0.00068514416,-0.007180702,0.00035080174 +38316000,mag,-0.025586484,0.22005379,0.42545444 +38320000,imu,-0.23036727,0.16273569,-9.86727,0.00054700946,-0.0060429857,-0.0009837871 +38324000,imu,-0.20527075,0.16922848,-9.890236,-0.0022896717,-0.006143505,-0.0025924125 +38328000,imu,-0.22047392,0.18005206,-9.884932,-0.0029584928,-0.0028436095,-0.001946227 +38328000,mag,-0.022804145,0.21760683,0.4318541 +38332000,imu,-0.20973139,0.1796431,-9.861807,-0.0020442149,-0.0047178525,-0.00025381226 +38336000,imu,-0.2307671,0.20159267,-9.882238,-0.0041675633,-0.0052683917,-0.00085635873 +38340000,mag,-0.030160181,0.20717466,0.42864403 +38340000,imu,-0.26578832,0.17992783,-9.87668,-0.0032972912,-0.0032781078,-0.002329648 +38344000,imu,-0.24422154,0.16130349,-9.8706,-0.0009212627,-0.004195967,-0.0009194899 +38348000,imu,-0.22289571,0.17023472,-9.896807,-0.00097566395,-0.004309375,0.0003580862 +38352000,imu,-0.23063165,0.18705824,-9.862352,0.00045605408,-0.005642909,0.0013093692 +38352000,mag,-0.03287327,0.22326162,0.42391422 +38356000,imu,-0.24870996,0.18721484,-9.841795,-0.001025217,-0.007758954,-0.00093599834 +38360000,imu,-0.23091826,0.18377197,-9.865385,-0.004159235,-0.006380217,-0.00084488484 +38364000,mag,-0.022889057,0.22168078,0.4242989 +38364000,imu,-0.21089786,0.177681,-9.880581,-0.0019750942,-0.005143566,-0.0011406741 +38368000,imu,-0.2315004,0.1785161,-9.871422,0.00010455118,-0.006063918,-0.003471769 +38372000,imu,-0.23042774,0.19708371,-9.878838,-0.00019932605,-0.006449939,0.00034421647 +38376000,baro,487.6333 +38376000,mag,-0.019724598,0.21664427,0.43093494 +38376000,imu,-0.21231146,0.14293635,-9.893422,-0.0012993987,-0.005292733,0.0036696214 +38380000,imu,-0.23626503,0.122728206,-9.912629,0.00022898971,-0.0042403475,0.0030109345 +38384000,imu,-0.2528032,0.16546935,-9.903059,-0.0003265377,-0.0037265797,-0.004469972 +38388000,imu,-0.2551198,0.16382723,-9.887754,-0.003332084,-0.0055442057,-0.0034473888 +38388000,mag,-0.02697327,0.21353915,0.43132442 +38392000,imu,-0.23097658,0.18337409,-9.874092,-0.0024307037,-0.006526483,0.0036228902 +38396000,imu,-0.2078877,0.19381097,-9.860303,-0.001626207,-0.0060727466,0.003916803 +38400000,mag,-0.02464317,0.22270028,0.43314952 +38400000,imu,-0.21121989,0.15843852,-9.862734,-0.0018823534,-0.005425392,-0.000407609 +38404000,imu,-0.20815967,0.19045727,-9.855636,-0.00048508093,-0.0068259533,-0.000374111 +38408000,imu,-0.23387213,0.20059124,-9.869886,0.0001308634,-0.008125974,0.004110272 +38412000,imu,-0.2292715,0.15773909,-9.86644,0.0011253752,-0.007139175,0.0028919866 +38412000,mag,-0.023202552,0.21742052,0.42868114 +38416000,imu,-0.21076,0.17855716,-9.87005,0.0010603571,-0.008113781,-2.6093938e-05 +38420000,imu,-0.24390498,0.20885798,-9.867477,-0.0011368981,-0.0054771304,-0.0012338712 +38424000,imu,-0.24778728,0.19116695,-9.849959,-0.00020439737,-0.004377896,-0.00042640758 +38424000,mag,-0.021408968,0.21694402,0.4246114 +38428000,imu,-0.19646683,0.21753289,-9.838991,-0.00012651876,-0.005246504,-0.00045814595 +38432000,imu,-0.18268457,0.22768982,-9.859186,-0.0020907829,-0.0039453963,-0.0012649056 +38436000,imu,-0.21464658,0.204468,-9.860257,-0.002049933,-0.0042130267,-0.00012936062 +38436000,mag,-0.025493883,0.21971153,0.42710093 +38440000,imu,-0.2277447,0.19500552,-9.835783,-0.0032641822,-0.004061498,-0.00079898327 +38444000,imu,-0.2192842,0.19317529,-9.853571,-0.0027600545,-0.004119827,-0.002635185 +38448000,mag,-0.029350536,0.2093729,0.42406604 +38448000,imu,-0.21950153,0.17970803,-9.878078,-0.0019686297,-0.006442209,-0.0033929278 +38448000,baro,487.6521 +38452000,imu,-0.23116228,0.18148668,-9.880727,-0.0028142293,-0.008353249,-0.0021641117 +38456000,imu,-0.21043801,0.19020434,-9.868209,-0.0017366209,-0.0072348523,0.00089279533 +38460000,mag,-0.031603556,0.21264587,0.43002978 +38460000,imu,-0.2056702,0.16188079,-9.853106,-0.00021137648,-0.0047824755,0.0014847997 +38464000,imu,-0.22958523,0.1543019,-9.829035,-0.0017552599,-0.003524908,0.0012434459 +38468000,imu,-0.2324867,0.18251513,-9.855406,-0.002117393,-0.0062917466,-0.00046057644 +38468000,mag,-0.024550712,0.22066808,0.43131667 +38472000,imu,-0.22645736,0.20826913,-9.898682,-0.0044333227,-0.0034887071,-0.0018525583 +38476000,imu,-0.21170177,0.2060054,-9.899628,-0.0071410383,-0.00292135,0.0004141356 +38480000,imu,-0.22338861,0.16922988,-9.88354,-0.00579409,-0.004678047,0.002208158 +38484000,imu,-0.23527122,0.17036189,-9.880317,-0.0016061611,-0.004115673,0.0007583887 +38484000,mag,-0.030528601,0.2180573,0.42809287 +38488000,imu,-0.24484055,0.17827944,-9.890791,0.0028933955,-0.0078030997,0.0004996498 +38492000,imu,-0.24310176,0.1411683,-9.893637,-0.0016668391,-0.0063538803,0.0016950044 +38496000,mag,-0.03090486,0.21872805,0.43333653 +38496000,imu,-0.21582483,0.16324331,-9.881865,-0.004575087,-0.0039583454,0.0007880461 +38500000,imu,-0.23453315,0.18809222,-9.88722,-0.0024533528,-0.0048189587,-0.0010896837 +38504000,imu,-0.24678043,0.20537342,-9.8784485,-0.0031927046,-0.0054771886,-0.0015812868 +38508000,mag,-0.034743875,0.21042848,0.4304058 +38508000,imu,-0.22763476,0.21715179,-9.84766,-0.000517871,-0.0051954025,-0.0025233123 +38512000,imu,-0.26332954,0.2032645,-9.831791,0.0012104288,-0.0039658323,-0.0040672086 +38516000,imu,-0.29297262,0.19781992,-9.858201,-0.00254479,-0.0040370645,-0.00030664448 +38520000,mag,-0.026179835,0.21674608,0.43280506 +38520000,baro,487.638 +38520000,imu,-0.25540257,0.18233494,-9.885639,-0.0007153869,-0.005710416,0.0014052037 +38524000,imu,-0.24120802,0.20242457,-9.884214,0.0021946658,-0.0074457545,-0.00020566433 +38528000,imu,-0.24484392,0.20370306,-9.899046,-0.00022603864,-0.007009571,-0.0009034324 +38532000,imu,-0.19539502,0.18177015,-9.886707,-0.00088133884,-0.005564534,-0.0025381013 +38532000,mag,-0.02778095,0.21132104,0.42810085 +38536000,imu,-0.18088591,0.17910549,-9.8601055,-0.0013407479,-0.007797259,-0.00057523785 +38540000,imu,-0.21099584,0.20005226,-9.870434,-0.001211823,-0.005188023,0.0006341748 +38544000,mag,-0.023161272,0.21329354,0.43198273 +38544000,imu,-0.21313024,0.19123416,-9.904735,0.0007388655,-0.0025305469,0.001978402 +38548000,imu,-0.21387155,0.20213427,-9.874869,0.0017962704,-0.007965925,0.0025138853 +38552000,imu,-0.2338705,0.23573269,-9.853953,0.0014269755,-0.008422579,-0.001203576 +38556000,mag,-0.032937154,0.2159474,0.42835495 +38556000,imu,-0.23246464,0.19849186,-9.879496,-0.000109348526,-0.007572246,0.0004658298 +38560000,imu,-0.22339547,0.17980757,-9.882853,-0.0028583598,-0.008162786,-0.000649333 +38564000,imu,-0.22855909,0.174212,-9.866444,-0.0009498236,-0.0065018306,-0.003793222 +38568000,mag,-0.022867998,0.20912531,0.4322052 +38568000,imu,-0.20889357,0.1747206,-9.857458,0.001565576,-0.005502672,-0.0016503044 +38572000,imu,-0.1841088,0.18255582,-9.863474,0.0011836552,-0.0061033107,-0.0018402425 +38576000,imu,-0.19782078,0.2115814,-9.863989,0.0016394327,-0.0076085394,-0.0014128491 +38580000,imu,-0.23563623,0.20620452,-9.866709,0.00056454085,-0.0101172095,0.0007008369 +38580000,mag,-0.021598704,0.22564523,0.42660004 +38584000,imu,-0.21715567,0.17730494,-9.858484,-0.0015916312,-0.01208438,-0.00147783 +38588000,imu,-0.17563644,0.20219575,-9.831505,-0.004398341,-0.0096474085,-0.0015388458 +38588000,mag,-0.024931027,0.2144651,0.42690912 +38592000,imu,-0.16794193,0.17856668,-9.849737,-0.0033121423,-0.008551697,0.0022296868 +38592000,baro,487.69904 +38596000,imu,-0.15968037,0.1682794,-9.871891,0.0010029139,-0.0055397376,-0.0009573514 +38600000,imu,-0.1790895,0.1961446,-9.8493,0.0012869694,-0.003872581,-0.0039151898 +38604000,imu,-0.22946228,0.15486583,-9.84152,0.00016840658,-0.006547224,-0.00093676295 +38604000,mag,-0.0305215,0.21572678,0.43290433 +38608000,imu,-0.24159329,0.14012437,-9.864875,0.0005187696,-0.006741163,0.0028278464 +38612000,imu,-0.25393575,0.16184478,-9.866032,-0.001886753,-0.0076648695,0.0052585155 +38616000,imu,-0.23430741,0.17373654,-9.841504,-0.0028849721,-0.007176574,0.003751407 +38616000,mag,-0.025147127,0.21590641,0.42213503 +38620000,imu,-0.2030803,0.1836742,-9.833055,-0.0020967342,-0.0070743226,0.0003463614 +38624000,mag,-0.025135608,0.21868367,0.4239718 +38624000,imu,-0.21428707,0.19144936,-9.814522,-0.0003441207,-0.008550031,-0.00554546 +38628000,imu,-0.19922054,0.2034586,-9.859951,-0.00041962444,-0.0044626542,-0.0053080507 +38632000,imu,-0.21418163,0.20251842,-9.891884,-0.0013611336,0.00018556799,-0.00104022 +38636000,imu,-0.20894706,0.19688922,-9.869881,0.00029282615,-0.0031689433,0.00013905413 +38640000,imu,-0.19202372,0.2162359,-9.844581,-0.0012875348,-0.005057557,0.00016908743 +38640000,mag,-0.031176565,0.21874876,0.4261751 +38644000,imu,-0.19503964,0.23496208,-9.818844,-0.00055471616,-0.0046513076,0.0016521972 +38648000,imu,-0.17842597,0.18832298,-9.845037,0.00188389,-0.00069698325,0.004836038 +38652000,imu,-0.1772384,0.16574647,-9.852763,-0.0014884658,0.0017175216,0.0009815834 +38652000,gps,488105.0,85455032.0,473975942.0,-0.01,-0.01,0.0 +38652000,mag,-0.024554495,0.21815258,0.43254802 +38656000,imu,-0.19344656,0.15815502,-9.834286,-0.0026198793,-0.005085225,-0.0018373843 +38660000,imu,-0.18234888,0.15754177,-9.844635,-0.0010680301,-0.009109495,0.00079644483 +38664000,baro,487.6521 +38664000,imu,-0.16615273,0.17912899,-9.861565,-0.0020707229,-0.0067534507,0.0018860088 +38664000,mag,-0.01694503,0.21651566,0.4272161 +38668000,imu,-0.2052728,0.1767657,-9.858981,-0.00065420684,-0.00068223465,0.00045619457 +38672000,imu,-0.22205156,0.17630154,-9.862955,0.0026173508,-0.0006385078,0.0024824878 +38676000,mag,-0.025437228,0.21967463,0.43393523 +38676000,imu,-0.20478779,0.17780666,-9.898891,0.00109128,-0.0048774043,9.636125e-05 +38680000,imu,-0.19603074,0.19472472,-9.898581,-0.0022314473,-0.0021217584,-0.0039399914 +38684000,imu,-0.20733756,0.18991022,-9.882309,-0.0019320496,-0.0033640868,6.255651e-05 +38688000,mag,-0.028308822,0.21327862,0.4284538 +38688000,imu,-0.22648183,0.18677866,-9.89244,-0.0029138692,-0.007774303,0.001916038 +38692000,imu,-0.21292415,0.19947404,-9.889414,-0.00074792583,-0.005942439,-0.0012274508 +38696000,imu,-0.20655215,0.21065821,-9.875864,0.0014382481,-0.005031592,-0.0045972294 +38700000,mag,-0.0248632,0.20469184,0.42311302 +38700000,imu,-0.19583574,0.1908153,-9.846748,8.493132e-05,-0.004237037,-0.0004514897 +38704000,imu,-0.18225604,0.17921329,-9.85492,-0.0020278967,-0.0040361346,0.0035211039 +38708000,imu,-0.2234517,0.18693013,-9.872309,-0.0031837176,-0.003571074,0.0011770319 +38712000,mag,-0.025124231,0.21415657,0.42896962 +38712000,imu,-0.232009,0.18084145,-9.856783,-0.000825858,-0.0020493038,1.14681825e-05 +38716000,imu,-0.2172854,0.18769816,-9.863834,-0.00086974143,-0.0067023565,0.0018940205 +38720000,imu,-0.19933328,0.21355885,-9.870054,-0.00087363744,-0.0069899224,0.00028471297 +38724000,mag,-0.023562238,0.21941294,0.42922193 +38724000,imu,-0.21315642,0.21109506,-9.874972,-0.0006347056,-0.005830429,-0.0036749926 +38728000,imu,-0.23524538,0.18860865,-9.8655,-0.0011560362,-0.010224651,-0.0013662816 +38732000,imu,-0.20825273,0.20097803,-9.896891,0.0012622393,-0.008772881,-0.0006740718 +38736000,baro,487.58636 +38736000,mag,-0.026926212,0.21925586,0.42652044 +38736000,imu,-0.18621127,0.18949732,-9.911903,0.0024440917,-0.005686545,-0.0030102965 +38740000,imu,-0.1980945,0.16603824,-9.863493,0.000387059,-0.007736533,-0.0017573165 +38744000,imu,-0.21596745,0.17892395,-9.867674,-0.0022254784,-0.008537538,0.0021708738 +38748000,imu,-0.22540286,0.17665245,-9.897054,-0.0052641425,-0.0070560565,0.0015210687 +38748000,mag,-0.029476328,0.21373795,0.42650208 +38752000,imu,-0.23201036,0.18077387,-9.875,-0.005330613,-0.005828586,-0.0021585277 +38756000,imu,-0.2329103,0.20068277,-9.833622,-0.002295714,-0.005795598,0.0002409538 +38760000,imu,-0.22754043,0.19673061,-9.82662,-0.0002129247,-0.0052144113,0.0017539825 +38760000,mag,-0.025500635,0.2107448,0.42428645 +38764000,imu,-0.23736528,0.18313782,-9.851301,0.0002636457,-0.002869399,0.0020151213 +38768000,imu,-0.23778248,0.16958608,-9.848944,-0.00042682354,-0.0043048677,1.387957e-05 +38772000,imu,-0.2129851,0.17252944,-9.832132,-0.0034988767,-0.007531201,-0.0039598267 +38772000,mag,-0.030311957,0.21923651,0.41746017 +38776000,imu,-0.22347344,0.17209686,-9.857952,-0.0023721263,-0.006498411,-0.00449094 +38780000,imu,-0.208645,0.16265614,-9.867678,0.00051936624,-0.0029233212,-0.0032643317 +38784000,mag,-0.023612516,0.21951826,0.4291056 +38784000,imu,-0.1887011,0.19258338,-9.867348,-0.0007728038,-0.0051508048,-0.0032392398 +38788000,imu,-0.18909928,0.22079425,-9.875567,-0.0016152166,-0.0046104575,0.0004010978 +38792000,imu,-0.17153095,0.19814986,-9.855751,-0.00083016354,-0.0020747955,-6.604261e-05 +38796000,mag,-0.02230622,0.21235104,0.42926505 +38796000,imu,-0.21556461,0.19240925,-9.840687,-0.0006711744,-0.003890541,-0.0013755488 +38800000,imu,-0.25699276,0.17462328,-9.858055,-0.0018131549,-0.0076690293,0.0014134349 +38804000,imu,-0.1889447,0.18528368,-9.845487,-0.0004010848,-0.010443278,0.0017380596 +38808000,imu,-0.16484696,0.19684117,-9.851428,0.0005642784,-0.0057182913,0.002951385 +38808000,mag,-0.027343139,0.21781327,0.4301131 +38808000,baro,487.58636 +38812000,imu,-0.20577024,0.14218584,-9.860255,0.0012559036,-0.0023949973,0.00041209906 +38816000,imu,-0.22024134,0.15405025,-9.883289,0.000772516,-0.00389063,0.00019093644 +38820000,imu,-0.22700398,0.18504398,-9.894693,-0.0013327317,-0.0056798095,0.00020958348 +38820000,mag,-0.020524206,0.21479128,0.42173928 +38824000,imu,-0.21368137,0.19446088,-9.8364525,-0.0018664682,-0.0037701235,-0.0018401165 +38828000,imu,-0.20724863,0.21420161,-9.839483,-0.0006878182,-0.0020246876,-0.0011269118 +38832000,mag,-0.029967042,0.21406041,0.4323836 +38832000,imu,-0.22089827,0.17218721,-9.874232,0.00089097366,-0.0059354636,-0.0017538029 +38836000,imu,-0.22828025,0.17025065,-9.8683405,-0.0013748137,-0.0077305976,0.00013048014 +38840000,imu,-0.21525498,0.18686107,-9.850843,-0.0019988753,-0.005308041,0.0033726878 +38840000,landed,1.0 +38844000,imu,-0.20798324,0.16519554,-9.844362,9.2128634e-05,-0.00434858,0.002186336 +38844000,mag,-0.028936973,0.20950186,0.43093213 diff --git a/src/lib/ecl/test/replay_data/iris_gps.csv b/src/lib/ecl/test/replay_data/iris_gps.csv new file mode 100644 index 0000000000..52edaae228 --- /dev/null +++ b/src/lib/ecl/test/replay_data/iris_gps.csv @@ -0,0 +1,28065 @@ +4000,mag,0.19900002,-0.08000001,0.425 +4000,airspeed,-3.8915408,-3.8006773 +4000,imu,-0.19039628,0.2204511,-9.916949,-0.004373984,-0.0073366207,0.009990946 +4000,baro,487.76007 +8000,baro,487.52533 +8000,airspeed,1.6324044,1.5943117 +8000,mag,0.19900002,-0.08000001,0.425 +8000,imu,-0.19429994,0.2230178,-9.943116,-0.0012155428,-0.00805666,-8.888751e-05 +16000,airspeed,3.1330945,3.0599856 +16000,baro,487.51123 +16000,imu,-0.24724339,0.25354087,-9.995117,-0.00021091003,0.00021157907,-0.003070909 +16000,mag,0.19900002,-0.08000001,0.425 +20000,baro,487.51123 +20000,imu,-0.2258892,0.21247704,-9.929575,-0.006910082,-0.005524135,-0.0012703774 +20000,airspeed,-3.1167936,-3.044065 +20000,mag,0.19900002,-0.08000001,0.425 +24000,imu,-0.22905506,0.20289268,-9.926108,-0.010401021,-0.009816669,-0.000370818 +24000,airspeed,3.086056,3.0140147 +24000,mag,0.19900002,-0.08000001,0.425 +24000,baro,487.67557 +28000,baro,487.6521 +28000,airspeed,3.6234045,3.5388243 +28000,imu,-0.30363065,0.16636705,-9.938398,-0.010934597,-0.0038260072,-9.417348e-05 +28000,mag,0.19900002,-0.08000001,0.425 +36000,airspeed,-2.8570287,-2.7903423 +36000,baro,487.62863 +36000,mag,0.19900002,-0.08000001,0.425 +36000,imu,-0.11411343,0.18757562,-9.937008,-0.0076178336,-0.006803972,-0.0030141622 +40000,imu,-0.19140004,0.16731775,-9.98205,0.001510324,-0.0034615544,0.003291812 +40000,airspeed,2.999741,2.9297323 +40000,baro,487.57697 +40000,mag,0.202,-0.08200001,0.43 +44000,airspeed,-0.5236635,-0.5114421 +44000,mag,0.202,-0.08200001,0.43 +44000,imu,-0.28855398,0.17992304,-9.996114,-0.0016734495,-0.004202661,0.0041757375 +44000,baro,487.57697 +48000,airspeed,-2.3563135,-2.3013217 +48000,mag,0.202,-0.08200001,0.43 +48000,imu,-0.28458363,0.20252106,-9.971776,0.00072270544,-0.0022320542,0.003009383 +48000,baro,487.57227 +52000,imu,-0.19317588,0.1791592,-9.90356,0.00675006,0.0006373318,0.007991517 +52000,airspeed,3.3339858,3.2561362 +52000,mag,0.202,-0.08200001,0.43 +52000,baro,487.78354 +56000,imu,-0.198616,0.15665895,-9.905176,0.0025543123,-0.0061966297,0.00507774 +56000,mag,0.202,-0.08200001,0.43 +56000,baro,487.6333 +56000,airspeed,-4.8807325,-4.766809 +60000,imu,-0.21471842,0.16542847,-9.985847,-0.0056284363,-0.0074091717,0.00048466562 +60000,mag,0.202,-0.08200001,0.43 +60000,airspeed,-3.1547196,-3.0810626 +60000,baro,487.7507 +64000,baro,487.7507 +64000,imu,-0.20947778,0.14578237,-9.9412155,-0.0034853772,-0.0053059254,0.0019968536 +64000,mag,0.202,-0.08200001,0.43 +64000,airspeed,-1.2340686,-1.2052554 +68000,imu,-0.20526755,0.12096661,-9.922711,-0.0013432433,-0.005400543,0.005817186 +68000,mag,0.202,-0.08200001,0.43 +68000,baro,487.49246 +68000,airspeed,2.6344495,2.5729792 +72000,mag,0.202,-0.08200001,0.43 +72000,baro,487.58636 +72000,airspeed,-2.1100423,-2.0607965 +72000,imu,-0.19943474,0.16783252,-10.003072,-0.0049934164,-0.007856635,0.00034923523 +76000,mag,0.202,-0.08200001,0.43 +76000,airspeed,2.425043,2.3684456 +76000,baro,487.58636 +76000,imu,-0.23909166,0.21856856,-10.027581,-0.007902474,-0.009141217,-0.004959958 +80000,imu,-0.20133416,0.2251525,-9.970411,-0.004561737,-0.00603448,-0.0055775493 +80000,baro,487.70844 +80000,mag,0.202,-0.08200001,0.43 +80000,airspeed,3.846146,3.7563543 +84000,baro,487.70844 +84000,airspeed,-3.12756,-3.0545442 +84000,imu,-0.15288159,0.21681352,-9.915536,-0.00072700204,-0.0066040815,-0.002214163 +84000,mag,0.202,-0.08200001,0.43 +88000,baro,487.66617 +88000,imu,-0.19243692,0.254468,-9.912291,-0.0055906447,-0.0077335024,0.0054032058 +88000,airspeed,3.2398324,3.1642041 +88000,mag,0.202,-0.08200001,0.43 +96000,airspeed,-4.494932,-4.3900127 +96000,baro,487.638 +96000,imu,-0.2217898,0.25099865,-9.966931,-0.000741833,-0.006385103,0.004951824 +96000,mag,0.2,-0.08200001,0.42900002 +100000,airspeed,3.6804338,3.5945177 +100000,imu,-0.24255675,0.20787728,-9.937983,0.0006801065,-0.010353352,0.0027957251 +100000,baro,487.67557 +100000,mag,0.2,-0.08200001,0.42900002 +108000,imu,-0.20208001,0.26266062,-10.024985,-0.004314713,0.0007485694,0.0037441312 +108000,baro,487.5488 +108000,mag,0.2,-0.08200001,0.42900002 +108000,airspeed,1.8443867,1.8013448 +112000,airspeed,4.101377,4.005638 +112000,baro,487.66147 +112000,imu,-0.1665317,0.28483495,-9.963138,-0.0014854776,0.0011846496,0.0056396686 +112000,mag,0.2,-0.08200001,0.42900002 +116000,airspeed,3.2130165,3.1380148 +116000,baro,487.66147 +116000,imu,-0.12851664,0.25304976,-9.897738,-0.0010178728,-0.010586393,0.005943726 +116000,mag,0.2,-0.08200001,0.42900002 +120000,imu,-0.1676234,0.18435779,-9.957789,-0.003161033,-0.01466727,-0.0012868871 +120000,airspeed,-3.6673193,-3.5817208 +120000,baro,487.62393 +120000,mag,0.2,-0.08200001,0.42900002 +128000,airspeed,1.5388387,1.5029138 +128000,mag,0.2,-0.08200001,0.42900002 +128000,imu,-0.21851292,0.20558885,-10.004604,-0.005907442,-0.007572579,0.0013213203 +128000,baro,487.69904 +132000,airspeed,2.2566347,2.2039526 +132000,imu,-0.25046766,0.18821421,-9.952548,-0.00093401305,-0.0067009456,0.007842169 +136000,imu,-0.2118618,0.25636646,-9.904377,-0.00037048574,-0.008770449,0.0097455485 +136000,baro,487.5488 +136000,airspeed,0.7699956,0.7520265 +136000,mag,0.2,-0.08200001,0.42900002 +140000,airspeed,2.9598722,2.8907797 +140000,baro,487.66147 +140000,imu,-0.23962022,0.2347103,-9.900027,-0.008405955,-0.009347715,0.002312994 +140000,mag,0.2,-0.08200001,0.42900002 +144000,baro,487.62863 +144000,mag,0.2,-0.084000014,0.42800003 +144000,airspeed,-1.9254422,-1.8805 +144000,imu,-0.29342657,0.21195418,-9.89367,-0.0036212758,-0.0068545965,0.0028112994 +148000,airspeed,-2.008782,-1.9618889 +148000,baro,487.67557 +148000,mag,0.2,-0.084000014,0.42800003 +148000,imu,-0.29452536,0.21800734,-9.855605,-9.787512e-05,-0.009150771,0.0019097253 +156000,mag,0.2,-0.084000014,0.42800003 +156000,baro,487.67087 +156000,airspeed,2.6192718,2.558128 +156000,imu,-0.21894912,0.13427661,-9.993549,-2.9987077e-05,-0.006724255,0.002287079 +160000,mag,0.2,-0.084000014,0.42800003 +160000,imu,-0.23165311,0.19027121,-9.957826,-0.0037035448,-0.008046484,0.0035795942 +160000,baro,487.62863 +160000,airspeed,-2.5929847,-2.5324612 +164000,baro,487.60513 +164000,imu,-0.23229337,0.21919836,-9.964935,-0.0007394288,-0.00883596,-0.000878475 +164000,mag,0.2,-0.084000014,0.42800003 +164000,airspeed,-1.9805572,-1.9343317 +168000,mag,0.2,-0.084000014,0.42800003 +168000,imu,-0.25014117,0.2515421,-9.930281,0.0006074393,-0.0027179357,-0.004156228 +168000,airspeed,3.984313,3.8913083 +168000,baro,487.6568 +172000,imu,-0.19703944,0.2789215,-9.916921,-0.004498489,-0.0018251876,-0.003963978 +172000,baro,487.6568 +172000,airspeed,2.6978815,2.6349056 +172000,mag,0.2,-0.084000014,0.42800003 +180000,imu,-0.22945318,0.21148257,-9.936302,-0.0007389217,-0.005524559,-0.0028587768 +180000,baro,487.62393 +180000,airspeed,-1.4260327,-1.3927479 +180000,mag,0.2,-0.084000014,0.42800003 +184000,airspeed,-1.6384842,-1.6002523 +184000,baro,487.50186 +184000,imu,-0.20960285,0.21626095,-9.968708,-0.004338729,-0.007207108,-0.0026388145 +184000,mag,0.2,-0.084000014,0.42800003 +188000,mag,0.2,-0.084000014,0.42800003 +188000,airspeed,1.0169702,0.9932349 +188000,baro,487.59576 +188000,imu,-0.2415028,0.23454906,-9.912485,-0.003919853,-0.0033350212,0.0036120247 +192000,mag,0.2,-0.084000014,0.42800003 +192000,airspeed,-2.916432,-2.8483632 +192000,imu,-0.2693398,0.28457806,-9.972599,-0.0013995338,-0.004661225,0.0039432556 +192000,baro,487.60513 +196000,airspeed,-3.397635,-3.3182933 +196000,mag,0.19700001,-0.084000014,0.42800003 +196000,imu,-0.20750345,0.28279012,-10.036033,0.0017333453,-0.010572916,0.00027519834 +196000,baro,487.8164 +200000,imu,-0.16402811,0.26013583,-10.004425,-1.1522389e-05,-0.0133842705,0.00023492843 +200000,airspeed,4.1041846,4.008408 +200000,baro,487.5488 +200000,gps,488103.0,85456073.0,473977508.0,-0.01,-0.01,0.0 +200000,mag,0.19700001,-0.084000014,0.42800003 +208000,airspeed,-2.1555533,-2.1052756 +208000,mag,0.19700001,-0.084000014,0.42800003 +208000,imu,-0.23588197,0.25594774,-9.917561,-0.00094606716,-0.012938091,0.0018755571 +208000,baro,487.34692 +212000,mag,0.19700001,-0.084000014,0.42800003 +212000,baro,487.59106 +212000,imu,-0.24792698,0.2169675,-9.912309,-0.0011420968,-0.010240342,-0.0015006523 +212000,airspeed,3.041871,2.9708772 +216000,airspeed,-1.8524823,-1.8092448 +216000,mag,0.19700001,-0.084000014,0.42800003 +216000,baro,487.61453 +216000,imu,-0.24688692,0.25085098,-9.935488,-0.0025530835,-0.0105688125,-0.002438673 +224000,baro,487.69434 +224000,mag,0.19700001,-0.084000014,0.42800003 +224000,imu,-0.22936606,0.18235202,-9.96905,-0.0058647017,0.0028926183,-0.00031479192 +224000,airspeed,-0.5360664,-0.52355194 +228000,mag,0.19700001,-0.084000014,0.42800003 +228000,baro,487.67557 +232000,mag,0.19700001,-0.084000014,0.42800003 +232000,imu,-0.20033987,0.16056474,-9.969437,0.0005104606,-0.0075023556,-0.003859611 +232000,baro,487.76007 +232000,airspeed,-2.3647342,-2.3095205 +236000,airspeed,3.779048,3.6908119 +236000,imu,-0.30028105,0.19063166,-10.010806,-0.0046907295,-0.004389915,-0.0040974277 +236000,mag,0.19700001,-0.084000014,0.42800003 +236000,baro,487.76007 +240000,baro,487.68497 +240000,airspeed,-0.050592646,-0.049411584 +240000,mag,0.19700001,-0.084000014,0.42800003 +240000,imu,-0.26243928,0.21500567,-9.965559,-0.0070427866,-0.0030351735,-0.0062361676 +248000,mag,0.201,-0.08200001,0.432 +248000,baro,487.62863 +248000,imu,-0.23307744,0.19675153,-9.979401,-0.0024147318,-0.0026810572,0.0015106 +248000,airspeed,3.1291292,3.056092 +252000,mag,0.201,-0.08200001,0.432 +252000,baro,487.67557 +252000,imu,-0.30882594,0.20853285,-9.921799,-0.006037097,-0.0020451061,-0.0025336156 +252000,airspeed,-2.49256,-2.4343734 +256000,baro,487.53003 +256000,airspeed,-2.452343,-2.395116 +256000,imu,-0.29565823,0.15509874,-9.871297,-0.005227279,-0.0061461567,-0.0008332728 +256000,mag,0.201,-0.08200001,0.432 +260000,imu,-0.19138789,0.12857348,-9.853985,0.0018881417,-0.010464245,0.005385214 +260000,mag,0.201,-0.08200001,0.432 +260000,baro,487.6521 +260000,airspeed,4.083604,3.9882817 +264000,mag,0.201,-0.08200001,0.432 +264000,imu,-0.13314438,0.17768401,-9.954887,0.0024153453,-0.012468153,0.0045445487 +264000,airspeed,2.6153474,2.5542984 +264000,baro,487.6521 +268000,baro,487.7413 +268000,airspeed,-3.61113,-3.5268183 +268000,imu,-0.17130971,0.21890102,-9.983576,-0.006093748,-0.004048122,0.002638365 +268000,mag,0.201,-0.08200001,0.432 +272000,imu,-0.20201717,0.25907323,-9.974087,-0.0040240195,-0.0010302489,0.0034100548 +272000,airspeed,3.4395428,3.3592498 +272000,baro,487.67557 +272000,mag,0.201,-0.08200001,0.432 +276000,imu,-0.16469039,0.22647771,-9.945434,-0.0021065974,-0.0052745547,0.0020842021 +276000,airspeed,-2.4792666,-2.4214046 +280000,mag,0.201,-0.08200001,0.432 +280000,baro,487.5535 +280000,airspeed,-2.5203063,-2.4614904 +280000,imu,-0.18187279,0.1838863,-9.892673,-0.0041640517,-0.0070119603,-0.0012380589 +284000,baro,487.5629 +284000,airspeed,-2.9388263,-2.8702419 +284000,imu,-0.20589274,0.21263908,-9.924832,-0.0016543721,-0.0045780134,0.0012049141 +284000,mag,0.201,-0.08200001,0.432 +288000,baro,487.60983 +288000,mag,0.201,-0.08200001,0.432 +292000,imu,-0.21152164,0.17942917,-9.912548,-0.0036877568,-0.0024912318,0.0016395012 +292000,airspeed,-2.4200203,-2.3635318 +296000,imu,-0.2784029,0.18926306,-9.904213,-0.006751635,-0.006346306,0.0018570072 +296000,baro,487.5394 +296000,mag,0.201,-0.08200001,0.432 +296000,airspeed,2.0497916,2.0019577 +300000,imu,-0.21781833,0.18086411,-9.879922,-0.0051538525,-0.010544747,0.0064364937 +300000,baro,487.6427 +300000,mag,0.2,-0.08000001,0.42600003 +300000,airspeed,1.0729342,1.0478897 +304000,baro,487.5676 +304000,mag,0.2,-0.08000001,0.42600003 +304000,airspeed,-1.7929372,-1.7510943 +304000,imu,-0.18450922,0.20940624,-9.95019,0.00081399194,-0.009497912,0.008499722 +308000,airspeed,4.489173,4.3844066 +308000,imu,-0.19172268,0.31107533,-10.017656,-0.001818407,-0.0040626936,0.0037697342 +308000,baro,487.5676 +308000,mag,0.2,-0.08000001,0.42600003 +312000,mag,0.2,-0.08000001,0.42600003 +312000,imu,-0.21116687,0.28637677,-10.020726,-0.0047051795,-0.002604707,-0.0042177374 +312000,baro,487.61453 +312000,airspeed,-1.6228936,-1.5850147 +316000,mag,0.2,-0.08000001,0.42600003 +316000,airspeed,3.671757,3.586057 +316000,baro,487.61453 +316000,imu,-0.19526397,0.2525227,-9.981572,-0.0048326966,-0.0023808172,-0.0033235673 +320000,imu,-0.19325036,0.27682477,-9.976663,-0.0035761879,-0.0064072325,-0.0016293172 +320000,airspeed,2.3841496,2.3285105 +320000,baro,487.5582 +320000,mag,0.2,-0.08000001,0.42600003 +324000,baro,487.60983 +324000,mag,0.2,-0.08000001,0.42600003 +324000,airspeed,-2.4016945,-2.3456385 +324000,imu,-0.26261878,0.21741877,-9.934749,-0.0025591135,-0.0052623674,-0.0030638136 +328000,imu,-0.2478366,0.22000068,-9.92067,-0.00032494735,0.0014718985,-0.0013642992 +328000,mag,0.2,-0.08000001,0.42600003 +328000,baro,487.53473 +328000,airspeed,-0.21017718,-0.20527254 +332000,baro,487.51123 +332000,airspeed,2.7812095,2.7163115 +332000,imu,-0.20363511,0.28841904,-9.990466,0.002722196,-0.005997758,0.0017308774 +332000,mag,0.2,-0.08000001,0.42600003 +340000,baro,487.67087 +340000,imu,-0.21089818,0.21233918,-9.917739,-0.00637632,-0.009676074,-0.0037729354 +340000,airspeed,1.8387365,1.7958136 +340000,mag,0.2,-0.08000001,0.42600003 +348000,mag,0.2,-0.08000001,0.42600003 +348000,imu,-0.22771777,0.20293859,-9.913026,0.0016817808,-0.011056357,0.0050279535 +348000,baro,487.5394 +348000,airspeed,-4.157149,-4.060138 +352000,mag,0.2,-0.08000001,0.42600003 +352000,imu,-0.18628484,0.20339178,-9.922595,-0.00026076348,-0.008031081,0.0064247823 +352000,baro,487.71783 +352000,airspeed,-1.8059115,-1.7637498 +356000,mag,0.2,-0.08200001,0.42600003 +356000,imu,-0.20987628,0.177284,-9.909027,0.0016883407,-0.006016517,0.002039618 +356000,airspeed,3.7339456,3.6468046 +356000,baro,487.5676 +364000,baro,487.5582 +364000,airspeed,-2.1213603,-2.071854 +364000,imu,-0.24857186,0.154523,-9.958939,-0.0013509521,-0.0075746505,-0.0027409468 +364000,mag,0.2,-0.08200001,0.42600003 +368000,airspeed,-2.0087488,-1.9618751 +368000,imu,-0.21984746,0.18641816,-9.977293,-0.00032818996,-0.0060098926,-0.003135638 +368000,baro,487.52063 +368000,mag,0.2,-0.08200001,0.42600003 +372000,airspeed,2.2089999,2.1574342 +372000,imu,-0.19298697,0.2845782,-10.081232,-0.0026913031,-0.0054351236,-0.0013518218 +372000,baro,487.66617 +372000,mag,0.2,-0.08200001,0.42600003 +376000,imu,-0.19857384,0.21957852,-10.002381,-0.0012985899,-0.005621779,0.0030753613 +376000,mag,0.2,-0.08200001,0.42600003 +376000,airspeed,-1.1894045,-1.1616311 +376000,baro,487.79294 +380000,mag,0.2,-0.08200001,0.42600003 +380000,airspeed,-3.249629,-3.173748 +380000,baro,487.79294 +380000,imu,-0.22672687,0.13192189,-9.917526,0.0020959158,-0.0056863786,0.009779526 +388000,imu,-0.15003365,0.16673589,-9.980913,2.0387894e-05,-0.00773218,-0.0023727666 +388000,baro,487.71783 +388000,mag,0.2,-0.08200001,0.42600003 +388000,airspeed,-2.879658,-2.8124285 +392000,imu,-0.17805229,0.16347446,-10.017004,0.002730005,-0.0075294967,0.00079852797 +392000,mag,0.2,-0.08200001,0.42600003 +392000,airspeed,0.6098448,0.59560716 +392000,baro,487.71783 +396000,imu,-0.26831564,0.19230987,-9.9437895,0.002926241,-0.009747738,-0.0039525805 +396000,mag,0.2,-0.08200001,0.42600003 +396000,airspeed,-1.8529357,-1.80971 +396000,baro,487.40326 +400000,gps,488104.0,85456074.0,473977508.0,-0.01,0.0,-0.02 +404000,mag,0.19800001,-0.07900001,0.43 +404000,baro,487.76007 +404000,imu,-0.19839863,0.197635,-9.9518,-0.008957819,-0.007917879,-0.00024259096 +404000,airspeed,-3.93175,-3.8399482 +408000,airspeed,-2.6095383,-2.548635 +408000,imu,-0.24512471,0.23534669,-10.023304,-0.0044735237,-0.01050207,0.0021240383 +408000,baro,487.58636 +408000,mag,0.19800001,-0.07900001,0.43 +416000,airspeed,3.7836266,3.6953146 +416000,mag,0.19800001,-0.07900001,0.43 +416000,imu,-0.18399467,0.22163914,-9.931791,0.00015558045,-0.003056474,0.0066054994 +416000,baro,487.61923 +420000,imu,-0.22389434,0.17800228,-9.906566,0.0005936248,-0.0007070839,-0.00072134094 +420000,mag,0.19800001,-0.07900001,0.43 +420000,baro,487.5582 +420000,airspeed,1.7537682,1.7128402 +424000,baro,487.5582 +424000,imu,-0.2741873,0.17907815,-9.964764,-0.003844656,-0.0030703628,-0.0021171053 +424000,mag,0.19800001,-0.07900001,0.43 +424000,airspeed,2.104551,2.0554368 +428000,mag,0.19800001,-0.07900001,0.43 +428000,baro,487.52533 +428000,imu,-0.25922304,0.24953957,-10.012262,-0.0048932564,-0.0073045986,0.0015105875 +428000,airspeed,2.079084,2.0305681 +432000,airspeed,2.698628,2.6356347 +432000,mag,0.19800001,-0.07900001,0.43 +432000,imu,-0.23140447,0.20079468,-9.955938,-0.0038406411,-0.01052152,8.227194e-05 +432000,baro,487.6521 +440000,imu,-0.238375,0.19864784,-10.032683,0.0018301408,-0.006208867,-0.0025662913 +440000,airspeed,-1.1765937,-1.1491419 +440000,mag,0.19800001,-0.07900001,0.43 +440000,baro,487.4643 +444000,imu,-0.20996219,0.18025269,-9.971417,0.002189627,-0.006647312,-0.002204512 +444000,airspeed,-3.7381191,-3.650869 +444000,mag,0.19800001,-0.07900001,0.43 +444000,baro,487.61923 +448000,mag,0.19800001,-0.07900001,0.43 +448000,airspeed,3.271037,3.1946666 +448000,imu,-0.20336698,0.15678847,-9.970483,0.0004278951,-0.010471293,-0.0023058425 +448000,baro,487.7366 +452000,airspeed,-4.327812,-4.2267475 +452000,imu,-0.25119188,0.14660814,-9.966091,0.0012919492,-0.0065220096,0.0021048195 +452000,mag,0.19800001,-0.07900001,0.43 +452000,baro,487.8211 +456000,airspeed,4.0581484,3.9634535 +456000,baro,487.51593 +456000,mag,0.201,-0.08100001,0.42700002 +456000,imu,-0.2470309,0.13604765,-9.9389,-0.00046994266,-0.0065721283,0.009983434 +460000,imu,-0.23196359,0.19213535,-9.981863,-0.003969583,-0.009271581,0.005107719 +460000,mag,0.201,-0.08100001,0.42700002 +460000,baro,487.51593 +460000,airspeed,-3.5042999,-3.4225287 +464000,mag,0.201,-0.08100001,0.42700002 +464000,imu,-0.25258303,0.25006995,-9.880097,-0.003366944,-0.002745241,-0.0033507762 +464000,baro,487.78824 +464000,airspeed,-2.156671,-2.1063118 +468000,mag,0.201,-0.08100001,0.42700002 +468000,baro,487.78824 +468000,airspeed,-1.1325682,-1.1061223 +468000,imu,-0.2743525,0.25440156,-9.8882265,-0.0024009666,-0.0038678886,0.0015195219 +472000,mag,0.201,-0.08100001,0.42700002 +472000,imu,-0.24977455,0.24155782,-10.01169,-0.0014494951,-0.008594957,-0.00027040305 +472000,baro,487.6427 +472000,airspeed,-2.6113608,-2.5504062 +476000,mag,0.201,-0.08100001,0.42700002 +476000,imu,-0.22633009,0.23381841,-9.98585,-9.637049e-05,-0.006484768,-0.0007672736 +476000,baro,487.66617 +476000,airspeed,-3.964585,-3.8720376 +480000,mag,0.201,-0.08100001,0.42700002 +480000,baro,487.66617 +480000,airspeed,-1.4370072,-1.4034624 +480000,imu,-0.20381323,0.22484955,-9.982332,0.00023971307,-0.0067646173,0.004389504 +484000,mag,0.201,-0.08100001,0.42700002 +484000,airspeed,-1.2899476,-1.2598357 +484000,baro,487.66617 +484000,imu,-0.19102192,0.1658403,-9.978996,-0.002462301,-0.0024409562,0.0035701627 +488000,mag,0.201,-0.08100001,0.42700002 +488000,airspeed,-1.5223738,-1.486845 +488000,baro,487.5676 +488000,imu,-0.19675745,0.1747665,-9.93417,-0.0026166257,-0.003219466,0.0066673434 +492000,mag,0.201,-0.08100001,0.42700002 +492000,baro,487.5676 +492000,airspeed,1.0464603,1.0220382 +492000,imu,-0.2500097,0.17138101,-9.906774,-0.007868534,-0.006268059,0.0021864453 +496000,imu,-0.22820461,0.12903939,-9.894676,-0.0070503415,-0.006972788,-0.0089032445 +496000,mag,0.201,-0.08100001,0.42700002 +496000,airspeed,3.471802,3.390775 +496000,baro,487.58636 +504000,mag,0.201,-0.08100001,0.42700002 +504000,airspeed,1.8403955,1.7974384 +504000,imu,-0.21801756,0.22926597,-9.947479,-0.0031089152,-0.00053695677,-0.0039355066 +504000,baro,487.62863 +508000,mag,0.201,-0.08100001,0.42700002 +508000,imu,-0.2839753,0.19457626,-10.022328,-0.0055998783,0.0013286126,-0.0020784382 +508000,airspeed,2.6392262,2.5776234 +508000,baro,487.62863 +512000,baro,487.58636 +512000,airspeed,-2.9045973,-2.8368073 +512000,mag,0.19900002,-0.08100001,0.42900002 +512000,imu,-0.1987674,0.22005318,-10.041304,-0.0050481246,-0.0034147338,-0.001271312 +520000,baro,487.4502 +520000,airspeed,-3.5017593,-3.4200604 +520000,mag,0.19900002,-0.08100001,0.42900002 +520000,imu,-0.21604253,0.22594222,-9.888419,-0.00086446,-0.006786663,-0.0021220697 +524000,baro,487.4643 +524000,airspeed,-0.82394105,-0.8047173 +524000,mag,0.19900002,-0.08100001,0.42900002 +524000,imu,-0.25235564,0.25219935,-9.988002,0.0006848107,-0.005266312,0.0012538717 +528000,imu,-0.26132116,0.19889952,-10.028053,-6.0974962e-05,-0.00082727463,-0.0020279346 +528000,airspeed,-2.6588326,-2.59677 +532000,baro,487.6427 +532000,airspeed,2.4608061,2.4033656 +532000,imu,-0.24688436,0.23311247,-9.939537,-0.0016510608,-0.0025450825,0.00049464457 +532000,mag,0.19900002,-0.08100001,0.42900002 +536000,baro,487.58636 +536000,imu,-0.21216677,0.22844031,-9.963752,-0.0032255265,-0.0041776565,0.00525902 +536000,mag,0.19900002,-0.08100001,0.42900002 +536000,airspeed,-2.3402874,-2.2856684 +544000,baro,487.4643 +544000,mag,0.19900002,-0.08100001,0.42900002 +544000,imu,-0.21487106,0.17657231,-9.988943,0.0049548023,-0.005697584,-0.0005591504 +544000,airspeed,-0.15401553,-0.15042208 +548000,airspeed,2.71369,2.6503751 +548000,baro,487.4643 +548000,mag,0.19900002,-0.08100001,0.42900002 +548000,imu,-0.28146166,0.25135374,-9.992013,0.010267351,-0.008016799,0.005332004 +552000,imu,-0.32678923,0.2267737,-10.014362,0.0039559,-0.0045631765,0.002341761 +552000,mag,0.19900002,-0.08100001,0.42900002 +552000,airspeed,-3.2339337,-3.1584396 +552000,baro,487.68027 +560000,baro,487.57227 +560000,imu,-0.24630025,0.18468828,-9.965507,0.0035249686,-0.0040892577,1.4186837e-05 +560000,airspeed,-1.624233,-1.5863267 +560000,mag,0.19900002,-0.08100001,0.42900002 +564000,baro,487.6333 +564000,airspeed,1.7867461,1.7450407 +564000,imu,-0.30210096,0.23355012,-9.978487,0.0038568801,-0.003164552,0.00406309 +564000,mag,0.2,-0.08100001,0.42900002 +568000,mag,0.2,-0.08100001,0.42900002 +568000,airspeed,-3.1470835,-3.0735862 +568000,baro,487.84927 +568000,imu,-0.25075078,0.18336253,-9.990145,-0.00019250835,-0.0106208995,0.0020540967 +576000,mag,0.2,-0.08100001,0.42900002 +576000,airspeed,-2.1299968,-2.0803046 +576000,baro,487.43143 +576000,imu,-0.25702772,0.18851334,-9.905804,-0.0038965882,0.0012504015,-0.003609253 +580000,airspeed,0.863522,0.84337634 +580000,imu,-0.23888181,0.19368082,-9.86352,-0.006881575,-0.00032518743,-0.0016225567 +580000,baro,487.43143 +580000,mag,0.2,-0.08100001,0.42900002 +584000,baro,487.6568 +584000,airspeed,-4.0028877,-3.9094484 +584000,imu,-0.19237964,0.22887927,-9.885906,-0.00484432,-0.0034595234,0.0010367982 +584000,mag,0.2,-0.08100001,0.42900002 +588000,baro,487.50656 +588000,airspeed,1.7917416,1.7499331 +588000,imu,-0.15744875,0.23463579,-9.9015875,0.00011115985,-0.0073742885,0.00086721353 +588000,mag,0.2,-0.08100001,0.42900002 +596000,mag,0.2,-0.08100001,0.42900002 +596000,baro,487.5441 +596000,imu,-0.24415812,0.17987536,-9.88455,-0.005751431,-0.0025964112,-0.0033123256 +596000,airspeed,-2.7851627,-2.720168 +600000,imu,-0.19299373,0.1921869,-9.858478,-0.014405414,-0.006299584,-0.0042924187 +600000,gps,488102.0,85456073.0,473977508.0,-0.01,0.0,-0.01 +600000,airspeed,3.2091277,3.1342196 +600000,landed,1.0 +600000,baro,487.6474 +600000,mag,0.2,-0.08100001,0.42900002 +604000,baro,487.6474 +604000,airspeed,2.1019123,2.052849 +604000,mag,0.2,-0.08100001,0.42900002 +604000,imu,-0.20710984,0.21000724,-9.881017,-0.012430284,-0.005748134,-0.0046446505 +612000,mag,0.2,-0.08100001,0.42900002 +612000,airspeed,1.9526598,1.9070928 +612000,baro,487.53473 +612000,imu,-0.22238667,0.17887689,-9.954087,0.0016637244,-0.009059459,-0.0020108067 +616000,mag,0.2,-0.08300001,0.42600003 +616000,imu,-0.18161505,0.20129731,-9.951384,0.0050789486,-0.009732193,0.0025967276 +616000,airspeed,-2.2247717,-2.1728554 +616000,baro,487.53003 +620000,airspeed,0.5219096,0.5097284 +620000,baro,487.60513 +620000,mag,0.2,-0.08300001,0.42600003 +620000,imu,-0.2344005,0.20061113,-9.938831,-0.0022548554,-0.007552394,-0.0022869213 +624000,mag,0.2,-0.08300001,0.42600003 +624000,baro,487.60513 +628000,mag,0.2,-0.08300001,0.42600003 +628000,baro,487.62863 +628000,imu,-0.20603646,0.23741221,-9.87881,-0.001818429,-0.008075764,-0.00020757089 +628000,airspeed,3.026533,2.95589 +632000,baro,487.62863 +632000,imu,-0.22108428,0.14561929,-9.845197,-0.0017441569,-0.009191121,-0.0019108471 +632000,mag,0.2,-0.08300001,0.42600003 +632000,airspeed,2.9764965,2.9070213 +636000,airspeed,-3.8382058,-3.7485976 +636000,mag,0.2,-0.08300001,0.42600003 +636000,baro,487.71783 +636000,imu,-0.26284155,0.09732138,-9.923503,0.0017323048,-0.009914607,-0.006227833 +640000,baro,487.60043 +640000,imu,-0.2146676,0.15626015,-9.940549,0.00040091056,-0.0023984925,-0.0017727723 +640000,mag,0.2,-0.08300001,0.42600003 +640000,airspeed,-0.5762161,-0.5627675 +648000,airspeed,3.5449877,3.4622722 +648000,imu,-0.25061086,0.23062725,-9.904149,-0.00026533057,-0.009624223,0.008280957 +648000,mag,0.2,-0.08300001,0.42600003 +648000,baro,487.48776 +652000,mag,0.2,-0.08300001,0.42600003 +652000,imu,-0.2664216,0.23535554,-9.998166,0.0010384946,-0.0051988843,0.0022231757 +652000,airspeed,-2.311753,-2.2578056 +652000,baro,487.5441 +656000,imu,-0.23901072,0.26008084,-10.024165,-0.00020766829,-0.013687108,0.007532574 +656000,baro,487.60983 +656000,mag,0.2,-0.08300001,0.42600003 +656000,airspeed,-2.4460328,-2.388942 +660000,airspeed,-3.2105732,-3.135638 +660000,baro,487.60983 +660000,imu,-0.24027294,0.15742885,-9.994559,-0.00092153176,-0.017574055,0.004822667 +660000,mag,0.2,-0.08300001,0.42600003 +664000,baro,487.76007 +664000,mag,0.2,-0.08300001,0.42600003 +664000,airspeed,-4.6471744,-4.5386677 +664000,imu,-0.24917315,0.18306163,-9.90545,-0.0033652787,-0.014171898,-0.002345463 +668000,imu,-0.21322054,0.3052755,-9.889355,-0.0022840956,-0.008394038,0.0027335095 +668000,airspeed,-2.072745,-2.0243769 +668000,baro,487.52533 +668000,mag,0.202,-0.08100001,0.42800003 +672000,imu,-0.2222344,0.20867951,-9.971667,-0.0025654323,-0.001468826,0.0027659421 +672000,baro,487.5441 +672000,mag,0.202,-0.08100001,0.42800003 +672000,airspeed,-0.7153821,-0.6986878 +680000,mag,0.202,-0.08100001,0.42800003 +680000,imu,-0.24264279,0.121809795,-9.973282,-0.004547608,-0.0073056906,0.004065637 +680000,airspeed,0.46865,0.4577114 +680000,baro,487.61923 +684000,airspeed,2.1403878,2.0904198 +684000,imu,-0.23978235,0.18134531,-9.923514,-0.002278495,-0.0035585165,0.0054679136 +684000,mag,0.202,-0.08100001,0.42800003 +684000,baro,487.69904 +688000,mag,0.202,-0.08100001,0.42800003 +688000,baro,487.52533 +692000,baro,487.69904 +692000,airspeed,-2.1165898,-2.0671773 +692000,imu,-0.18142848,0.24353983,-9.987816,0.00028038677,-0.00042866037,-0.0043508178 +696000,mag,0.202,-0.08100001,0.42800003 +696000,baro,487.67557 +696000,airspeed,2.913415,2.8454046 +696000,imu,-0.2895346,0.25602606,-9.926084,0.0020991187,8.3849794e-05,-0.0014236515 +700000,baro,487.57697 +700000,mag,0.202,-0.08100001,0.42800003 +700000,imu,-0.3145102,0.30006287,-9.892114,0.0060272077,-0.0024357364,0.0019203213 +700000,airspeed,1.3464185,1.3149955 +704000,imu,-0.24369395,0.23923625,-9.917868,0.0037804053,-0.008851808,0.0024646919 +704000,mag,0.202,-0.08100001,0.42800003 +704000,baro,487.6474 +704000,airspeed,-3.6464593,-3.5613422 +708000,airspeed,-4.0812006,-3.985915 +708000,baro,487.7366 +708000,imu,-0.2724187,0.2055233,-9.932443,0.0015536578,-0.0061299615,0.001571653 +708000,mag,0.202,-0.08100001,0.42800003 +712000,airspeed,-3.4620154,-3.381186 +712000,imu,-0.2694366,0.27352017,-9.983474,0.00023175638,-0.0044921804,-0.00064414006 +712000,baro,487.7366 +712000,mag,0.202,-0.08100001,0.42800003 +716000,baro,487.69434 +716000,mag,0.19800001,-0.08300001,0.43 +716000,imu,-0.21914247,0.22587301,-9.977161,0.0022818826,-0.0053820037,-0.0031408232 +716000,airspeed,-2.6778138,-2.6153002 +720000,baro,487.6521 +720000,imu,-0.21074928,0.24836996,-9.894047,0.007029976,-0.004247243,-0.0011040756 +720000,airspeed,-1.9601237,-1.914369 +720000,mag,0.19800001,-0.08300001,0.43 +728000,mag,0.19800001,-0.08300001,0.43 +728000,baro,487.57697 +728000,airspeed,-0.69152844,-0.67538935 +728000,imu,-0.2784549,0.23499504,-9.887123,-0.0033497165,0.0011683765,-0.0013246714 +736000,imu,-0.22579584,0.21652251,-9.961978,-0.0035293263,-0.0026286873,0.0011279045 +736000,baro,487.5441 +736000,airspeed,2.211565,2.159956 +736000,mag,0.19800001,-0.08300001,0.43 +740000,imu,-0.21277368,0.19661589,-9.929271,-0.0007476128,-0.009741787,0.0039732917 +740000,baro,487.5441 +740000,airspeed,4.4573536,4.353337 +740000,mag,0.19800001,-0.08300001,0.43 +748000,imu,-0.104381815,0.18286045,-9.9167385,-0.0048534614,-0.006148998,-0.0049262764 +748000,baro,487.43613 +748000,airspeed,-1.7466844,-1.7059345 +748000,mag,0.19800001,-0.08300001,0.43 +752000,airspeed,1.6867445,1.6473718 +752000,baro,487.6474 +752000,mag,0.19800001,-0.08300001,0.43 +752000,imu,-0.18107529,0.16785786,-9.870089,-0.0018578633,-0.0053256066,0.0022868612 +756000,imu,-0.19826177,0.23062873,-9.862309,0.001622905,-0.0017049565,0.006442256 +756000,airspeed,-0.9842603,-0.96128535 +756000,baro,487.6474 +760000,imu,-0.17423052,0.23814973,-9.861566,-0.0045119156,-0.0012890305,0.00013761505 +760000,baro,487.66617 +760000,airspeed,-1.686093,-1.6467342 +760000,mag,0.19800001,-0.08300001,0.43 +764000,mag,0.19800001,-0.08300001,0.43 +764000,imu,-0.22689886,0.22205329,-9.909704,-0.008131684,-0.008935418,-0.0029472536 +764000,airspeed,-1.9055387,-1.8610524 +764000,baro,487.70844 +772000,imu,-0.19110946,0.25318703,-9.897607,0.004171176,-0.003925055,-1.9426207e-05 +772000,mag,0.19700001,-0.07800001,0.43100002 +772000,airspeed,3.0952258,3.0229814 +772000,baro,487.61453 +776000,mag,0.19700001,-0.07800001,0.43100002 +776000,baro,487.52533 +776000,airspeed,1.2847285,1.2547491 +776000,imu,-0.24070235,0.283231,-9.961816,-0.001130288,-0.0067531923,-0.0011653878 +780000,imu,-0.18975991,0.21298207,-9.943812,-0.0023537183,-0.010019521,0.0035959147 +780000,baro,487.52533 +780000,airspeed,4.176034,4.0785856 +780000,mag,0.19700001,-0.07800001,0.43100002 +784000,mag,0.19700001,-0.07800001,0.43100002 +784000,airspeed,1.2998371,1.269488 +784000,baro,487.7507 +784000,imu,-0.18738416,0.13990122,-9.892498,-0.002913559,-0.005227734,0.0027733166 +788000,airspeed,2.7592733,2.69486 +788000,baro,487.68027 +788000,mag,0.19700001,-0.07800001,0.43100002 +788000,imu,-0.18303485,0.16321373,-9.924721,-0.0033342799,-0.004753558,0.0051662736 +792000,imu,-0.2513069,0.28904834,-9.961391,0.00038004146,-0.007353465,0.0095005445 +792000,baro,487.5488 +792000,mag,0.19700001,-0.07800001,0.43100002 +792000,airspeed,3.016398,2.9460063 +796000,imu,-0.24200653,0.31162268,-9.953385,-0.0019433162,-0.005340885,0.0039439355 +796000,baro,487.6333 +796000,mag,0.19700001,-0.07800001,0.43100002 +796000,airspeed,-3.1769154,-3.102762 +800000,baro,487.6333 +800000,gps,488107.0,85456074.0,473977508.0,0.0,-0.01,0.01 +800000,airspeed,3.346195,3.2680898 +800000,mag,0.19700001,-0.07800001,0.43100002 +800000,imu,-0.22949249,0.2574385,-9.890653,-0.00069833006,-0.007010874,-0.0004924454 +804000,mag,0.19700001,-0.07800001,0.43100002 +804000,imu,-0.30131117,0.21208628,-9.885151,-0.0041834647,-0.012861339,-0.00040857622 +804000,baro,487.78354 +804000,airspeed,3.3201303,3.2426045 +812000,imu,-0.2746904,0.16190396,-9.959382,-0.002169401,0.0002862203,-0.0033585436 +812000,baro,487.50656 +812000,mag,0.19700001,-0.07800001,0.43100002 +812000,airspeed,3.01552,2.945156 +816000,baro,487.50656 +816000,airspeed,2.5738733,2.5138147 +816000,imu,-0.21461257,0.17919698,-9.905787,0.0064127287,-0.008504944,-0.007383634 +816000,mag,0.19700001,-0.07800001,0.43100002 +824000,airspeed,1.3408244,1.3095213 +824000,mag,0.19900002,-0.08300001,0.42900002 +824000,imu,-0.3162445,0.16386372,-9.990093,-0.0043675047,-0.0065021655,-0.0014321088 +824000,baro,487.71313 +828000,mag,0.19900002,-0.08300001,0.42900002 +828000,baro,487.68967 +828000,imu,-0.24828865,0.2641599,-9.950761,-0.0060340525,-0.011782949,-0.002817918 +828000,airspeed,2.5012143,2.4428236 +836000,baro,487.69904 +836000,airspeed,-1.0090523,-0.9854955 +836000,imu,-0.17779624,0.14974637,-9.8859825,0.0012694768,-0.00956188,0.006676824 +836000,mag,0.19900002,-0.08300001,0.42900002 +840000,baro,487.6474 +840000,mag,0.19900002,-0.08300001,0.42900002 +844000,imu,-0.15409608,0.27347702,-9.890337,-0.0075596734,-0.0038337756,-0.005022533 +844000,airspeed,3.3134165,3.2360742 +848000,baro,487.6568 +848000,mag,0.19900002,-0.08300001,0.42900002 +848000,airspeed,0.44480178,0.43441886 +848000,imu,-0.16338494,0.24450915,-9.904046,-0.009120427,-0.004079519,0.004559834 +852000,airspeed,1.2447727,1.2157059 +852000,imu,-0.1656094,0.20674595,-9.9272175,-0.00031770632,-0.0070785214,0.0055362945 +856000,imu,-0.22177301,0.22723854,-9.96221,0.0019774148,-0.0076533225,-0.0006697296 +856000,baro,487.79764 +856000,mag,0.19900002,-0.08300001,0.42900002 +856000,airspeed,2.5280871,2.4690535 +860000,baro,487.6427 +860000,mag,0.19900002,-0.08300001,0.42900002 +860000,imu,-0.27646658,0.239796,-9.996405,-0.003552849,-0.0070556393,0.00028876544 +860000,airspeed,1.1478664,1.1210728 +864000,airspeed,3.9053853,3.8142464 +864000,imu,-0.27273214,0.25604716,-9.967029,-0.0024109308,-0.008383283,0.0019405856 +864000,baro,487.5488 +864000,mag,0.19900002,-0.08300001,0.42900002 +868000,mag,0.19900002,-0.08300001,0.42900002 +868000,imu,-0.29024476,0.28972095,-9.879652,0.0039571426,-0.0073842853,0.00393217 +868000,baro,487.70844 +868000,airspeed,-3.2677374,-3.1914492 +872000,mag,0.19800001,-0.08300001,0.42600003 +872000,imu,-0.2788112,0.27370548,-9.897717,0.002947679,-0.005364412,0.00081126776 +872000,baro,487.70844 +872000,airspeed,-0.53815603,-0.52559227 +876000,airspeed,0.7122824,0.69565517 +876000,baro,487.67087 +876000,imu,-0.20148337,0.20980713,-9.967696,-0.007051908,-0.007279054,-0.0044521354 +876000,mag,0.19800001,-0.08300001,0.42600003 +880000,baro,487.48776 +880000,mag,0.19800001,-0.08300001,0.42600003 +880000,airspeed,1.8023258,1.760272 +880000,imu,-0.21871182,0.19163166,-10.047732,-0.0082988385,-0.0011752842,-0.0038932639 +884000,airspeed,1.441185,1.4075371 +884000,mag,0.19800001,-0.08300001,0.42600003 +884000,imu,-0.19099633,0.2093208,-10.057194,-0.0035387161,0.0069126505,-0.0043883757 +884000,baro,487.7319 +888000,airspeed,-3.8711374,-3.7807565 +888000,imu,-0.2763957,0.16489153,-9.964997,0.0036816935,0.0035390223,-0.0022624072 +888000,baro,487.7319 +888000,mag,0.19800001,-0.08300001,0.42600003 +892000,imu,-0.28282455,0.17158395,-9.951678,0.00637535,-0.0024830028,-0.0030072234 +892000,mag,0.19800001,-0.08300001,0.42600003 +892000,baro,487.6568 +892000,airspeed,2.987354,2.9176204 +896000,mag,0.19800001,-0.08300001,0.42600003 +896000,airspeed,3.2569282,3.180902 +896000,imu,-0.11197051,0.22358589,-9.961472,0.0039642556,-0.0047360486,-0.0024160326 +896000,baro,487.6568 +900000,imu,-0.20800689,0.18060209,-9.950069,-0.0035146503,-0.0067351316,-0.004294545 +900000,baro,487.6521 +900000,mag,0.19800001,-0.08300001,0.42600003 +900000,airspeed,0.9703145,0.94766474 +908000,airspeed,3.6925385,3.6063337 +908000,imu,-0.2667133,0.2577617,-9.965956,0.0010614699,-0.0055240868,0.0024410605 +908000,mag,0.19800001,-0.08300001,0.42600003 +908000,baro,487.70374 +912000,airspeed,2.9981833,2.9282203 +912000,baro,487.52533 +912000,mag,0.19800001,-0.08300001,0.42600003 +912000,imu,-0.16719526,0.21068464,-9.965802,0.0006466769,-0.0056813657,-0.002050417 +920000,airspeed,-1.2729288,-1.2432072 +920000,imu,-0.23885502,0.20250644,-9.905122,-0.0030005684,-0.00092700793,0.00052576675 +920000,mag,0.19800001,-0.08300001,0.42600003 +920000,baro,487.76007 +924000,baro,487.76007 +924000,airspeed,-3.4245236,-3.3445644 +924000,imu,-0.25623426,0.18769331,-9.933687,-0.004630029,-0.0015851723,-0.0016472196 +924000,mag,0.19800001,-0.084000014,0.42900002 +928000,imu,-0.31991223,0.21023135,-9.998658,-0.0061296104,-0.0056176386,-0.0049543423 +928000,mag,0.19800001,-0.084000014,0.42900002 +928000,baro,487.60043 +928000,airspeed,4.2145133,4.1161485 +932000,imu,-0.253691,0.25943556,-9.981639,-0.0045187287,-0.004195639,-0.002981209 +932000,airspeed,0.25882417,0.25278333 +932000,baro,487.60043 +932000,mag,0.19800001,-0.084000014,0.42900002 +936000,mag,0.19800001,-0.084000014,0.42900002 +936000,imu,-0.22441193,0.2354223,-9.89807,0.0049282233,-1.9471636e-05,-0.00041126373 +936000,baro,487.41733 +936000,airspeed,-3.204872,-3.1301067 +940000,imu,-0.25328824,0.19757588,-9.897355,0.0019811266,-0.005085377,0.0008107258 +940000,airspeed,0.5254832,0.513217 +940000,mag,0.19800001,-0.084000014,0.42900002 +940000,baro,487.6568 +944000,baro,487.6474 +944000,imu,-0.23381636,0.2069766,-9.931375,-0.0016654488,-0.011747242,0.0052714376 +944000,mag,0.19800001,-0.084000014,0.42900002 +944000,airspeed,-2.3689,-2.3136048 +952000,mag,0.19800001,-0.084000014,0.42900002 +952000,imu,-0.16118863,0.18826672,-9.9706135,-0.00043195588,-0.0017959276,0.00044495476 +952000,airspeed,-0.5963785,-0.58246166 +952000,baro,487.53003 +956000,imu,-0.14073482,0.30838266,-9.912365,0.0016463611,-0.009667646,-0.0022568458 +956000,baro,487.53003 +956000,mag,0.19800001,-0.084000014,0.42900002 +956000,airspeed,-1.9177332,-1.8729823 +960000,airspeed,-1.5446895,-1.5086414 +960000,imu,-0.15581495,0.3099598,-9.920972,-0.0019807923,-0.00976752,5.4757817e-07 +960000,baro,487.5535 +960000,mag,0.19800001,-0.084000014,0.42900002 +964000,imu,-0.26724043,0.27662805,-9.854343,-0.0034242147,-0.012325921,0.00089793286 +964000,baro,487.5535 +964000,mag,0.19800001,-0.084000014,0.42900002 +964000,airspeed,2.8443809,2.778002 +968000,airspeed,-4.274171,-4.174417 +968000,baro,487.58636 +968000,imu,-0.31370324,0.24759616,-9.859793,-0.005073481,-0.008536535,-0.0008109693 +968000,mag,0.19800001,-0.084000014,0.42900002 +976000,baro,487.76947 +976000,imu,-0.17094572,0.191353,-10.040091,0.002957733,-0.014155279,-0.003420921 +976000,airspeed,3.5278955,3.445521 +976000,mag,0.201,-0.07900001,0.42800003 +980000,baro,487.76947 +980000,imu,-0.19981094,0.2943358,-9.959388,0.0057431497,-0.005158154,0.0013868578 +980000,mag,0.201,-0.07900001,0.42800003 +980000,airspeed,-4.698735,-4.5890226 +988000,imu,-0.24268131,0.25026667,-9.868441,0.0021716398,-0.006012345,0.0017404576 +988000,mag,0.201,-0.07900001,0.42800003 +988000,airspeed,3.3778725,3.2990284 +988000,baro,487.6333 +992000,airspeed,2.9488103,2.8799713 +992000,imu,-0.21966963,0.25968397,-9.901055,-0.0008137908,-0.003750983,-0.0043060873 +992000,baro,487.68967 +992000,mag,0.201,-0.07900001,0.42800003 +996000,baro,487.68967 +996000,airspeed,-1.7668699,-1.7256229 +996000,imu,-0.19094399,0.1805673,-9.972885,-0.0018540081,-0.003635209,-0.0024242369 +996000,mag,0.201,-0.07900001,0.42800003 +1000000,airspeed,-4.685053,-4.5756974 +1000000,mag,0.201,-0.07900001,0.42800003 +1000000,imu,-0.14753374,0.1805739,-9.962863,0.0018363007,-0.0072416556,-0.0005818219 +1000000,baro,487.6333 +1000000,gps,488105.0,85456074.0,473977508.0,0.0,0.0,0.0 +1008000,mag,0.201,-0.07900001,0.42800003 +1008000,airspeed,-1.2323036,-1.2035284 +1008000,baro,487.79294 +1008000,imu,-0.26329586,0.23178743,-9.966444,0.0018680146,-0.0020424621,-0.0054479335 +1016000,mag,0.201,-0.07900001,0.42800003 +1016000,imu,-0.28316602,0.15203145,-10.002453,0.0033100934,-0.0056121526,0.0045768498 +1016000,baro,487.7272 +1016000,airspeed,1.5194654,1.4839906 +1020000,airspeed,-3.6157727,-3.5313556 +1020000,baro,487.7272 +1020000,imu,-0.14271817,0.17138374,-9.970421,0.006845728,-0.0053738435,0.00039401493 +1020000,mag,0.201,-0.07900001,0.42800003 +1024000,airspeed,2.504927,2.4464557 +1024000,imu,-0.1275321,0.20903587,-9.853248,-0.0052791312,-0.00871207,-0.0009283767 +1024000,baro,487.6521 +1024000,mag,0.201,-0.07900001,0.42800003 +1028000,airspeed,1.546624,1.5105219 +1028000,mag,0.201,-0.08300001,0.42800003 +1028000,baro,487.6521 +1028000,imu,-0.13410579,0.17487496,-9.852975,-0.004547076,-0.008989919,0.0008313804 +1032000,imu,-0.12852429,0.19197169,-9.883653,0.0010317963,-0.0082370965,0.0032106095 +1032000,airspeed,3.9944293,3.9011648 +1036000,baro,487.75537 +1036000,airspeed,3.8528936,3.7629337 +1036000,imu,-0.16729797,0.20019259,-9.925572,-0.0036561252,-0.0031492086,0.004681762 +1036000,mag,0.201,-0.08300001,0.42800003 +1040000,baro,487.76477 +1040000,airspeed,-3.6296136,-3.5448651 +1040000,imu,-0.23391907,0.16534783,-9.900851,-0.00868891,-0.005615423,-5.84594e-05 +1040000,mag,0.201,-0.08300001,0.42800003 +1048000,airspeed,2.154801,2.104525 +1048000,imu,-0.24941319,0.19027598,-9.860323,-0.0038834086,-0.002183372,0.001602772 +1048000,baro,487.469 +1048000,mag,0.201,-0.08300001,0.42800003 +1052000,airspeed,-3.6499271,-3.5647376 +1052000,mag,0.201,-0.08300001,0.42800003 +1052000,baro,487.60983 +1052000,imu,-0.19661795,0.21732132,-9.945942,-0.006488268,0.0027218661,-0.008681192 +1060000,baro,487.70374 +1060000,mag,0.201,-0.08300001,0.42800003 +1060000,imu,-0.13693699,0.07108064,-9.900296,-0.0033406988,-0.0045122593,-0.007329493 +1060000,airspeed,2.55964,2.4998837 +1068000,baro,487.62863 +1068000,mag,0.201,-0.08300001,0.42800003 +1068000,imu,-0.21843077,0.12647973,-9.92225,-0.0021097015,-0.0006158124,0.0030103838 +1068000,airspeed,2.4331315,2.3763392 +1072000,mag,0.201,-0.08300001,0.42800003 +1072000,baro,487.8258 +1072000,imu,-0.1993558,0.11102564,-9.955609,-0.0041233655,0.00015924548,0.0074448916 +1072000,airspeed,-1.9253755,-1.8804125 +1076000,baro,487.66147 +1076000,imu,-0.14960353,0.17858666,-9.935099,-0.0040950933,-0.0012869851,0.0023401293 +1076000,mag,0.201,-0.08300001,0.42800003 +1076000,airspeed,-3.0147903,-2.9444158 +1080000,baro,487.48306 +1080000,imu,-0.1887035,0.19763811,-9.97295,-0.00714143,-0.0007600452,-0.00087802036 +1080000,mag,0.2,-0.08100001,0.43 +1080000,airspeed,0.40545616,0.3959958 +1084000,airspeed,3.7914965,3.7030056 +1084000,imu,-0.22782283,0.15213214,-9.987034,-0.008279865,-0.001220144,-0.00019671922 +1084000,baro,487.59576 +1084000,mag,0.2,-0.08100001,0.43 +1092000,imu,-0.1966562,0.17407854,-9.949891,0.00014629877,-0.013069548,0.002084952 +1092000,baro,487.5676 +1092000,mag,0.2,-0.08100001,0.43 +1092000,airspeed,-2.8457942,-2.7793798 +1096000,baro,487.62393 +1096000,imu,-0.25015736,0.194513,-9.875067,0.0066611995,-0.0013093808,-0.008178367 +1096000,airspeed,-1.1450751,-1.1183482 +1096000,mag,0.2,-0.08100001,0.43 +1104000,baro,487.68497 +1104000,imu,-0.29396337,0.23469366,-9.900036,0.001543566,-0.0047633224,0.0012755913 +1104000,airspeed,1.3736407,1.3415736 +1104000,mag,0.2,-0.08100001,0.43 +1108000,baro,487.5582 +1108000,mag,0.2,-0.08100001,0.43 +1108000,airspeed,-4.0994496,-4.0037804 +1108000,imu,-0.26748022,0.23773523,-9.856456,0.004917496,-0.0032979331,-0.0033741416 +1112000,mag,0.2,-0.08100001,0.43 +1112000,airspeed,-2.5200586,-2.4612715 +1112000,baro,487.39856 +1112000,imu,-0.24776335,0.20210004,-9.930507,0.0027579796,-0.0036969013,-0.0035331615 +1116000,baro,487.4502 +1116000,imu,-0.17989202,0.13425703,-9.899204,-0.0011562725,-0.0023526323,0.0018638971 +1116000,mag,0.2,-0.08100001,0.43 +1116000,airspeed,2.9549394,2.8859975 +1120000,baro,487.51593 +1120000,imu,-0.10537286,0.16900778,-9.863112,-0.003031118,-0.005974818,-0.002380598 +1120000,mag,0.2,-0.08100001,0.43 +1124000,baro,487.51593 +1124000,airspeed,-3.2851903,-3.2085316 +1124000,imu,-0.15446728,0.176273,-9.948397,0.003348523,-0.009773979,-0.0011172304 +1124000,mag,0.2,-0.08100001,0.43 +1128000,airspeed,-3.2090824,-3.1341956 +1132000,imu,-0.22924681,0.19644557,-10.018605,0.0032145805,0.0025456222,-0.0008610423 +1132000,mag,0.202,-0.08200001,0.43300003 +1132000,airspeed,0.94822764,0.9261047 +1132000,baro,487.4502 +1136000,mag,0.202,-0.08200001,0.43300003 +1136000,airspeed,-2.3366709,-2.2821238 +1136000,imu,-0.29254824,0.18336709,-9.978839,0.0063895155,0.00042445946,-0.0030594214 +1136000,baro,487.67557 +1140000,mag,0.202,-0.08200001,0.43300003 +1140000,imu,-0.3054921,0.14283681,-9.961485,0.004256562,-0.0101404805,-0.0038206128 +1140000,baro,487.67557 +1144000,airspeed,-0.7800257,-0.7618229 +1144000,imu,-0.25060531,0.1839921,-9.969352,-0.0028974973,-0.0069002383,0.00048025095 +1144000,mag,0.202,-0.08200001,0.43300003 +1144000,baro,487.5441 +1148000,baro,487.57227 +1148000,mag,0.202,-0.08200001,0.43300003 +1148000,airspeed,-0.46378833,-0.4529645 +1148000,imu,-0.2006168,0.25500005,-9.983116,-0.0017423701,-0.0035867686,0.00024883682 +1152000,imu,-0.22357047,0.25416008,-9.950532,-0.005224666,-0.00646892,-0.0054900753 +1156000,baro,487.48776 +1156000,imu,-0.24722001,0.21382098,-9.881891,-0.011359829,-0.0043633273,-0.0052845394 +1156000,airspeed,3.1662848,3.0924058 +1156000,mag,0.202,-0.08200001,0.43300003 +1160000,airspeed,-2.0880823,-2.0393376 +1160000,imu,-0.20128971,0.18663432,-9.914147,-0.007389427,-0.013226631,-0.004086548 +1160000,mag,0.202,-0.08200001,0.43300003 +1160000,baro,487.68027 +1164000,airspeed,-1.5752156,-1.5384406 +1164000,baro,487.71313 +1164000,imu,-0.1968794,0.15856986,-9.966526,-0.0028155672,-0.016705228,-0.004778932 +1164000,mag,0.202,-0.08200001,0.43300003 +1168000,imu,-0.19767024,0.18588543,-9.916923,-0.0025468552,-0.011348363,0.002820992 +1168000,airspeed,-1.5691243,-1.5324999 +1168000,baro,487.62393 +1168000,mag,0.202,-0.08200001,0.43300003 +1172000,mag,0.202,-0.08200001,0.43300003 +1172000,imu,-0.20438977,0.21648654,-9.937553,0.00052086735,-0.005083714,0.0044658617 +1172000,baro,487.62863 +1172000,airspeed,-4.4215364,-4.318332 +1176000,airspeed,-2.2854545,-2.2321055 +1176000,baro,487.6568 +1176000,mag,0.202,-0.08200001,0.43300003 +1176000,imu,-0.20743328,0.14384703,-10.039273,0.0012406164,-0.00047228677,-0.0009316522 +1184000,baro,487.69904 +1184000,mag,0.20400001,-0.07900001,0.42400002 +1184000,imu,-0.176404,0.17312416,-9.944952,-0.001857924,-0.007768026,0.0013727347 +1184000,airspeed,2.8845758,2.817234 +1188000,baro,487.6333 +1188000,imu,-0.21849228,0.20735645,-9.914356,-0.0022538346,-0.007845619,-0.003996149 +1188000,mag,0.20400001,-0.07900001,0.42400002 +1188000,airspeed,3.895441,3.8045154 +1192000,mag,0.20400001,-0.07900001,0.42400002 +1192000,imu,-0.23223145,0.25836957,-9.972831,0.0006678922,-0.0010218052,-0.0060815345 +1192000,baro,487.6333 +1192000,airspeed,-2.9666996,-2.897452 +1196000,airspeed,-1.7849511,-1.7432854 +1196000,imu,-0.21753278,0.20614116,-10.031443,-0.002475794,-0.009438843,-0.005120803 +1196000,mag,0.20400001,-0.07900001,0.42400002 +1196000,baro,487.6568 +1200000,gps,488101.0,85456073.0,473977508.0,0.01,0.0,0.01 +1200000,imu,-0.21590802,0.23046108,-9.988691,-0.0036529833,-0.015604909,-0.0035046127 +1200000,airspeed,-1.1782802,-1.1507802 +1204000,mag,0.20400001,-0.07900001,0.42400002 +1204000,airspeed,-2.3030882,-2.2493248 +1204000,imu,-0.19836418,0.21553752,-9.935276,0.0047478257,-0.010730718,0.0013366617 +1204000,baro,487.67557 +1208000,airspeed,2.0859234,2.0372252 +1208000,baro,487.71313 +1208000,mag,0.20400001,-0.07900001,0.42400002 +1208000,imu,-0.15238456,0.13158815,-9.977706,0.0040465263,-0.0048249997,0.0051278304 +1212000,mag,0.20400001,-0.07900001,0.42400002 +1212000,baro,487.66617 +1212000,imu,-0.17212185,0.1376005,-9.962553,-0.00043559412,-0.007598831,0.0031049172 +1212000,airspeed,-1.9739114,-1.9278338 +1216000,imu,-0.20499466,0.16325456,-9.996646,-0.0008737535,-0.009317019,0.00059829565 +1216000,airspeed,0.77610785,0.75799304 +1220000,mag,0.20400001,-0.07900001,0.42400002 +1220000,baro,487.60983 +1224000,imu,-0.12613678,0.13533072,-9.968941,0.0059184614,-0.002476915,-0.007020425 +1224000,airspeed,3.4696083,3.3886292 +1224000,mag,0.20400001,-0.07900001,0.42400002 +1224000,baro,487.60043 +1228000,imu,-0.13949428,0.19798344,-9.929571,0.0032284649,-0.0014626153,-0.0070690303 +1228000,mag,0.20400001,-0.07900001,0.42400002 +1228000,airspeed,-1.9042289,-1.8597814 +1228000,baro,487.6333 +1236000,airspeed,1.4339614,1.4004861 +1236000,mag,0.2,-0.07900001,0.432 +1236000,imu,-0.29559788,0.18246111,-9.956175,0.0007278908,-0.006175577,0.004465329 +1236000,baro,487.68967 +1244000,airspeed,3.2184403,3.143326 +1244000,baro,487.58636 +1244000,mag,0.2,-0.07900001,0.432 +1244000,imu,-0.14197013,0.20567591,-9.965075,0.0011262225,-0.002055714,-0.0019066908 +1248000,imu,-0.17211877,0.113917746,-9.984065,0.0022298242,-0.0035510024,0.00062841823 +1248000,mag,0.2,-0.07900001,0.432 +1248000,airspeed,-1.9185331,-1.8737423 +1248000,baro,487.71783 +1252000,imu,-0.25398043,0.17725071,-9.922191,0.0030116676,-0.0060100504,0.001327683 +1252000,baro,487.71783 +1252000,mag,0.2,-0.07900001,0.432 +1252000,airspeed,2.4648807,2.4073348 +1256000,mag,0.2,-0.07900001,0.432 +1256000,baro,487.6521 +1256000,imu,-0.23330048,0.184629,-9.916808,0.0034185667,-0.007969038,0.0010286369 +1256000,airspeed,0.59545135,0.5815519 +1264000,imu,-0.19122702,0.20060384,-9.964961,-0.0012873241,-0.009663753,-0.00275919 +1264000,mag,0.2,-0.07900001,0.432 +1264000,baro,487.69434 +1264000,airspeed,-3.8429859,-3.7532704 +1268000,mag,0.2,-0.07900001,0.432 +1268000,airspeed,2.0966551,2.0477307 +1268000,imu,-0.21185972,0.22628403,-9.935604,-0.00046600463,-0.0042041917,-0.002217205 +1268000,baro,487.51123 +1272000,imu,-0.1962587,0.280677,-9.940494,0.00018493865,-0.005472394,-0.0006255362 +1272000,mag,0.2,-0.07900001,0.432 +1272000,baro,487.7413 +1272000,airspeed,1.6959757,1.6563785 +1280000,mag,0.2,-0.07900001,0.432 +1280000,baro,487.70374 +1280000,imu,-0.19453678,0.17858322,-9.948601,-0.003139691,-0.005842264,-0.00017766413 +1280000,airspeed,-2.1735935,-2.1228497 +1284000,baro,487.48776 +1284000,airspeed,2.731112,2.6673868 +1284000,mag,0.2,-0.07900001,0.432 +1284000,imu,-0.27138448,0.26601166,-9.929638,-0.0008992115,-0.0073341755,-0.00060409476 +1292000,imu,-0.16241266,0.16221489,-9.967736,-0.0012428366,-0.006593847,0.00017477141 +1292000,baro,487.6474 +1292000,airspeed,2.3790944,2.3235607 +1292000,mag,0.20400001,-0.08100001,0.42600003 +1300000,baro,487.67557 +1300000,mag,0.20400001,-0.08100001,0.42600003 +1300000,airspeed,-2.472353,-2.4146385 +1300000,imu,-0.23773989,0.20289719,-9.947677,-0.0060550263,-0.005425003,-0.0013015956 +1304000,baro,487.69434 +1304000,mag,0.20400001,-0.08100001,0.42600003 +1304000,airspeed,-1.4476573,-1.4138615 +1304000,imu,-0.22625473,0.1919424,-9.978399,-0.0042398754,0.0012395399,0.0034725775 +1308000,imu,-0.17812839,0.19704413,-9.944655,0.0026207785,0.0015007763,0.00086647447 +1308000,airspeed,-1.5640507,-1.5275376 +1308000,baro,487.69434 +1308000,mag,0.20400001,-0.08100001,0.42600003 +1312000,airspeed,-3.1568897,-3.0832012 +1312000,baro,487.6474 +1312000,imu,-0.15125675,0.16576248,-9.889275,0.004978404,-0.0050446163,-0.0009930906 +1312000,mag,0.20400001,-0.08100001,0.42600003 +1316000,mag,0.20400001,-0.08100001,0.42600003 +1316000,imu,-0.19160572,0.17763993,-9.931837,-0.0009963419,-0.0050536455,0.002250239 +1316000,airspeed,1.560865,1.5244173 +1316000,baro,487.79764 +1320000,mag,0.20400001,-0.08100001,0.42600003 +1320000,imu,-0.18188235,0.21091433,-10.019025,-0.00097945,-0.005626622,0.00061527546 +1320000,airspeed,-2.3723834,-2.3170025 +1320000,baro,487.67557 +1324000,baro,487.67557 +1324000,mag,0.20400001,-0.08100001,0.42600003 +1324000,airspeed,3.3529112,3.274641 +1324000,imu,-0.2031252,0.2118798,-9.961333,0.0011204255,-0.0021404643,-0.0016093465 +1328000,airspeed,1.4994994,1.4644899 +1328000,imu,-0.23785366,0.17322247,-9.896933,0.0010117744,0.0001521431,-0.0014560715 +1328000,mag,0.20400001,-0.08100001,0.42600003 +1328000,baro,487.7366 +1336000,mag,0.20400001,-0.08100001,0.42600003 +1336000,airspeed,1.947801,1.9023398 +1336000,imu,-0.13046744,0.22553399,-9.954303,-0.00036940485,-0.0030541748,-0.0021395173 +1336000,baro,487.60513 +1340000,mag,0.20400001,-0.08100001,0.42600003 +1340000,airspeed,2.610239,2.5493138 +1340000,imu,-0.17939071,0.20691584,-9.920419,0.0012338203,-0.0056604417,-0.0043914607 +1340000,baro,487.62393 +1348000,baro,487.50186 +1348000,mag,0.19800001,-0.08000001,0.42900002 +1348000,airspeed,-0.5678341,-0.5545843 +1348000,imu,-0.17301658,0.17257959,-9.956221,-0.000986529,-0.006209195,-0.0031158302 +1352000,airspeed,3.0031044,2.9330058 +1352000,mag,0.19800001,-0.08000001,0.42900002 +1352000,imu,-0.17425258,0.17651713,-9.978394,-0.0025119174,-0.008083082,-0.0019768588 +1352000,baro,487.6427 +1356000,baro,487.6333 +1356000,airspeed,-1.5361563,-1.5003002 +1356000,mag,0.19800001,-0.08000001,0.42900002 +1356000,imu,-0.14129038,0.19667034,-10.006098,-0.005321569,-0.006372012,-0.00013838708 +1360000,mag,0.19800001,-0.08000001,0.42900002 +1360000,baro,487.48776 +1360000,airspeed,-2.729933,-2.666236 +1360000,imu,-0.14273295,0.20663409,-9.980759,-0.0032257552,-0.0036339518,-0.0059020827 +1364000,baro,487.48776 +1364000,imu,-0.20718288,0.16565993,-9.922937,0.0024255852,-0.002026906,-0.0056322077 +1364000,airspeed,3.6194093,3.5349584 +1364000,mag,0.19800001,-0.08000001,0.42900002 +1368000,mag,0.19800001,-0.08000001,0.42900002 +1368000,baro,487.62393 +1368000,imu,-0.28242365,0.17402206,-9.955809,0.00392633,-0.0056729284,-0.0018715289 +1368000,airspeed,-2.8631768,-2.7963483 +1372000,baro,487.6427 +1372000,airspeed,-0.7877045,-0.7693178 +1372000,mag,0.19800001,-0.08000001,0.42900002 +1372000,imu,-0.2706697,0.16709971,-9.936778,-0.0018447734,-0.008746052,-0.005197868 +1376000,baro,487.638 +1376000,imu,-0.22914423,0.14784165,-9.918274,-0.0032598448,-0.009625641,-0.0049020797 +1376000,airspeed,-3.1461916,-3.0727537 +1376000,mag,0.19800001,-0.08000001,0.42900002 +1384000,imu,-0.22225611,0.21090138,-9.97975,-0.0011441796,0.0010272943,0.005987677 +1384000,mag,0.19800001,-0.08000001,0.42900002 +1384000,baro,487.5629 +1384000,airspeed,2.5980527,2.537421 +1388000,mag,0.19800001,-0.08000001,0.42900002 +1388000,baro,487.5629 +1388000,imu,-0.23398758,0.29141748,-10.005206,-0.006198971,-0.002869893,0.008642067 +1388000,airspeed,1.6053094,1.5678457 +1392000,airspeed,-0.7684081,-0.75047106 +1392000,imu,-0.17149149,0.2829959,-9.962331,0.0024052523,-0.0027458197,0.0057695922 +1396000,airspeed,3.544251,3.461514 +1396000,baro,487.67557 +1396000,imu,-0.16561243,0.25877735,-9.91539,-0.00012591691,-0.00037524092,-0.00047934492 +1396000,mag,0.19800001,-0.08200001,0.42600003 +1400000,airspeed,2.9877791,2.9180322 +1400000,gps,488108.0,85456074.0,473977508.0,-0.01,0.02,0.0 +1400000,baro,487.67557 +1400000,mag,0.19800001,-0.08200001,0.42600003 +1400000,imu,-0.23912941,0.2904138,-9.917402,-0.0034517283,-0.0035313533,-0.0024898427 +1404000,mag,0.19800001,-0.08200001,0.42600003 +1404000,imu,-0.25749195,0.25801617,-9.924058,-0.0004044899,-0.006438885,0.0033645094 +1404000,baro,487.53003 +1404000,airspeed,-1.4494087,-1.4155859 +1408000,airspeed,2.4979513,2.4396331 +1408000,baro,487.71783 +1408000,mag,0.19800001,-0.08200001,0.42600003 +1408000,imu,-0.21490975,0.18955156,-9.937362,-0.0029932444,-0.008725401,0.00816157 +1416000,imu,-0.23772058,0.14255278,-9.863856,-0.00020385454,0.005671678,0.0030716506 +1416000,airspeed,1.8974756,1.8531661 +1416000,baro,487.80704 +1416000,mag,0.19800001,-0.08200001,0.42600003 +1424000,mag,0.19800001,-0.08200001,0.42600003 +1424000,imu,-0.2054909,0.2093876,-9.874327,-0.005685499,0.0009675061,-0.004668021 +1424000,airspeed,-1.0359902,-1.0118141 +1424000,baro,487.5441 +1428000,airspeed,-5.620326,-5.4891686 +1428000,baro,487.5441 +1428000,imu,-0.20005834,0.16510856,-9.909571,-0.0037776846,0.00091264886,-0.0037030082 +1428000,mag,0.19800001,-0.08200001,0.42600003 +1432000,mag,0.19800001,-0.08200001,0.42600003 +1432000,airspeed,-1.6377968,-1.5995581 +1432000,baro,487.7366 +1432000,imu,-0.2830827,0.18374053,-9.908381,-0.0020181255,-0.003308258,0.0007184168 +1436000,baro,487.7366 +1436000,mag,0.19800001,-0.08200001,0.42600003 +1436000,airspeed,-0.4257125,-0.41577312 +1436000,imu,-0.20480981,0.16939546,-9.872152,-0.0020330152,-0.0064006387,-0.004217864 +1444000,mag,0.2,-0.08100001,0.425 +1444000,baro,487.6521 +1444000,imu,-0.2465941,0.2344733,-9.951057,0.0066075344,-0.0038920084,-1.8361323e-05 +1444000,airspeed,1.2059305,1.1777809 +1452000,imu,-0.25826833,0.15550545,-10.015344,-0.0009804415,-8.952838e-05,-0.0021441125 +1452000,baro,487.52533 +1452000,airspeed,-2.6050277,-2.5442393 +1452000,mag,0.2,-0.08100001,0.425 +1456000,airspeed,-1.9580028,-1.9123137 +1456000,mag,0.2,-0.08100001,0.425 +1456000,imu,-0.2778627,0.18606529,-9.911377,0.0033674927,-0.0023614375,-0.0037460232 +1456000,baro,487.51123 +1460000,airspeed,-0.7982641,-0.7796356 +1460000,imu,-0.2760884,0.18122436,-9.866964,0.0011322398,-0.001513019,-0.0020058348 +1464000,airspeed,1.8107873,1.7685077 +1464000,baro,487.75537 +1464000,mag,0.2,-0.08100001,0.425 +1464000,imu,-0.23897903,0.11944033,-9.912601,-0.0013533928,-0.0070089013,-0.0038003633 +1468000,baro,487.7319 +1468000,airspeed,-1.9326125,-1.8874913 +1468000,mag,0.2,-0.08100001,0.425 +1468000,imu,-0.22780563,0.19417535,-9.955431,0.0029467496,-0.011748267,-0.004429798 +1476000,imu,-0.22548397,0.18349205,-9.952991,0.0060279486,-0.004794912,0.0016852125 +1476000,baro,487.68027 +1476000,mag,0.2,-0.08100001,0.425 +1476000,airspeed,-1.4978062,-1.4628412 +1480000,baro,487.70844 +1480000,mag,0.2,-0.08100001,0.425 +1480000,imu,-0.26494393,0.19689615,-9.99803,-0.0004515445,-0.007637739,-0.0031740386 +1480000,airspeed,-1.6544139,-1.6157904 +1484000,baro,487.70844 +1484000,imu,-0.26722193,0.22316787,-9.999418,-0.0021290397,-0.004819119,-0.0014943248 +1484000,mag,0.2,-0.08100001,0.425 +1484000,airspeed,2.7218723,2.658328 +1488000,baro,487.6568 +1488000,airspeed,-3.9685361,-3.8758998 +1488000,mag,0.2,-0.08100001,0.425 +1492000,imu,-0.1656703,0.1557055,-9.913123,-0.00013408401,-0.011800499,0.003942481 +1496000,mag,0.2,-0.08100001,0.42900002 +1496000,imu,-0.2261388,0.09376885,-9.896064,-0.0037011532,-0.006729479,0.006251862 +1496000,airspeed,-3.4999783,-3.4183 +1496000,baro,487.5535 +1504000,airspeed,-2.9279385,-2.8595967 +1504000,baro,487.62863 +1504000,mag,0.2,-0.08100001,0.42900002 +1504000,imu,-0.2153789,0.23033914,-9.94569,-0.0045168246,-0.007710676,-0.0012899353 +1508000,airspeed,3.4669425,3.3860197 +1508000,imu,-0.22966038,0.2296504,-9.946322,-0.004196497,-0.0068236706,-0.0028222168 +1508000,mag,0.2,-0.08100001,0.42900002 +1508000,baro,487.62863 +1512000,mag,0.2,-0.08100001,0.42900002 +1512000,imu,-0.2249172,0.23550153,-9.880373,-0.0053718234,-0.0076690596,-0.00011910498 +1512000,baro,487.58636 +1512000,airspeed,-3.7585015,-3.6707828 +1520000,baro,487.77887 +1520000,imu,-0.21253736,0.12378703,-9.998241,0.008866574,-0.004470824,-0.0065977643 +1520000,airspeed,-1.3949763,-1.3624034 +1520000,mag,0.2,-0.08100001,0.42900002 +1524000,mag,0.2,-0.08100001,0.42900002 +1524000,airspeed,-2.6121824,-2.5511875 +1524000,baro,487.78354 +1524000,imu,-0.20073885,0.0706874,-9.954576,0.0039519607,-0.011134526,-0.0072887265 +1532000,mag,0.2,-0.08100001,0.42900002 +1532000,airspeed,1.6437956,1.6054274 +1532000,baro,487.62863 +1532000,imu,-0.2307401,0.19678937,-10.003994,-0.0058624237,-0.0031866354,0.0027002313 +1536000,mag,0.2,-0.08100001,0.42900002 +1536000,airspeed,1.718633,1.6785047 +1536000,imu,-0.29503238,0.21524586,-9.925929,-0.0047257664,0.00076334237,0.008155933 +1536000,baro,487.76007 +1540000,airspeed,-2.125432,-2.0758054 +1540000,imu,-0.23786692,0.276465,-9.952617,-0.0013732237,-0.002560379,0.0038831548 +1540000,baro,487.76007 +1540000,mag,0.2,-0.08100001,0.42900002 +1548000,mag,0.201,-0.08100001,0.42900002 +1548000,airspeed,-0.3099265,-0.30269253 +1548000,imu,-0.17053917,0.18576911,-9.979775,-0.006834361,-0.008959627,-0.0063771466 +1548000,baro,487.62393 +1556000,mag,0.201,-0.08100001,0.42900002 +1556000,imu,-0.1971614,0.22680935,-9.990109,0.00040691008,-0.006862246,0.00015134792 +1556000,baro,487.60043 +1556000,airspeed,3.437852,3.357614 +1560000,mag,0.201,-0.08100001,0.42900002 +1560000,airspeed,3.3494327,3.271274 +1560000,baro,487.52063 +1560000,imu,-0.28934202,0.17286715,-10.040001,-0.00074898935,-0.0004574356,-0.00538091 +1564000,airspeed,3.1378353,3.0645914 +1564000,imu,-0.24771968,0.17118825,-9.948922,-0.0029467952,0.0025217815,0.00065088685 +1564000,baro,487.6474 +1564000,mag,0.201,-0.08100001,0.42900002 +1568000,baro,487.59106 +1568000,airspeed,2.1842327,2.1332548 +1568000,mag,0.201,-0.08100001,0.42900002 +1568000,imu,-0.1477488,0.21756119,-9.929264,-0.0037790039,-0.005398271,0.007165639 +1572000,mag,0.201,-0.08100001,0.42900002 +1572000,airspeed,-3.58172,-3.498126 +1572000,baro,487.59106 +1572000,imu,-0.17618628,0.21717842,-9.981843,-0.0027722537,-0.012192811,0.0062873513 +1576000,imu,-0.2154076,0.20531107,-9.978513,-0.004341016,-0.012239581,0.0027283728 +1576000,mag,0.201,-0.08100001,0.42900002 +1576000,baro,487.638 +1576000,airspeed,-3.324729,-3.2471237 +1580000,mag,0.201,-0.08100001,0.42900002 +1580000,baro,487.638 +1580000,airspeed,-3.6962633,-3.6099858 +1580000,imu,-0.26990083,0.21770544,-9.951243,-0.005507227,-0.006903471,-0.0032079143 +1588000,baro,487.58636 +1588000,mag,0.201,-0.08100001,0.42900002 +1588000,airspeed,-2.6307793,-2.5693803 +1588000,imu,-0.14507966,0.25913075,-9.925545,-0.003465488,-0.0011539846,-0.0006660226 +1592000,imu,-0.15962948,0.22396989,-10.017692,-0.0012177587,-0.0035450945,0.0006894517 +1592000,airspeed,1.9424397,1.8971056 +1592000,mag,0.201,-0.08100001,0.42900002 +1592000,baro,487.58636 +1596000,imu,-0.18375608,0.24796511,-10.075249,-0.0010380484,-0.008389094,0.0048116622 +1596000,mag,0.201,-0.08100001,0.42900002 +1596000,baro,487.68027 +1596000,airspeed,2.9104679,2.8425248 +1600000,landed,1.0 +1600000,gps,488104.0,85456074.0,473977508.0,0.0,0.0,-0.01 +1604000,mag,0.19900002,-0.07900001,0.43 +1604000,imu,-0.23148458,0.24474204,-9.900071,-0.004578028,-0.0063630072,0.0052219112 +1604000,baro,487.49246 +1604000,airspeed,-1.9362037,-1.8910259 +1608000,imu,-0.20535295,0.21675117,-9.837379,0.00037980318,-0.011319794,0.001158267 +1608000,airspeed,2.6775846,2.6150734 +1608000,mag,0.19900002,-0.07900001,0.43 +1608000,baro,487.71313 +1612000,mag,0.19900002,-0.07900001,0.43 +1612000,airspeed,1.6095847,1.5720125 +1612000,imu,-0.23996559,0.15766293,-9.869124,0.00093517575,-0.0066647693,0.0020322034 +1612000,baro,487.6521 +1616000,baro,487.69904 +1616000,airspeed,-3.0027747,-2.932674 +1616000,imu,-0.22410026,0.19225535,-9.938719,-0.005803399,-0.006442872,0.00033616883 +1616000,mag,0.19900002,-0.07900001,0.43 +1620000,mag,0.19900002,-0.07900001,0.43 +1620000,airspeed,1.6859816,1.6466241 +1620000,imu,-0.15522698,0.24672042,-9.97975,-0.004480178,-0.007025221,-0.005646792 +1620000,baro,487.67557 +1624000,mag,0.19900002,-0.07900001,0.43 +1624000,imu,-0.18491544,0.239372,-9.941068,-0.0026252565,-0.006948492,-0.0013735625 +1624000,baro,487.53003 +1624000,airspeed,-4.5052333,-4.400101 +1632000,baro,487.68027 +1632000,mag,0.19900002,-0.07900001,0.43 +1632000,imu,-0.24132535,0.21325706,-10.013759,-0.0025182336,-0.0009933681,0.0040563876 +1632000,airspeed,-2.6681848,-2.605898 +1636000,imu,-0.25302115,0.25196847,-10.005432,0.000644702,-0.0023812708,0.0043937284 +1636000,mag,0.19900002,-0.07900001,0.43 +1636000,airspeed,2.6629794,2.600826 +1636000,baro,487.60513 +1640000,mag,0.19900002,-0.07900001,0.43 +1640000,baro,487.69904 +1640000,airspeed,-2.1076539,-2.0584497 +1640000,imu,-0.24762575,0.32333007,-9.943009,0.00060496805,-0.00418767,0.0014312638 +1644000,imu,-0.21268326,0.22077791,-9.9288,-0.0030883974,-0.0039677103,0.002993361 +1644000,baro,487.69904 +1644000,mag,0.19900002,-0.07900001,0.43 +1644000,airspeed,1.6562369,1.6175712 +1648000,mag,0.19900002,-0.07900001,0.43 +1648000,imu,-0.15673067,0.12570012,-9.943267,-0.0030669037,-0.00061750796,0.0008482054 +1648000,baro,487.5676 +1648000,airspeed,-2.766517,-2.7019527 +1656000,imu,-0.27381295,0.22565536,-10.010512,-0.00032383425,-0.010654249,-0.0069797714 +1656000,mag,0.19800001,-0.08200001,0.43100002 +1656000,airspeed,-2.3108075,-2.256861 +1656000,baro,487.69904 +1664000,mag,0.19800001,-0.08200001,0.43100002 +1664000,imu,-0.26721507,0.18241023,-9.941224,-0.0009996053,-0.004215359,0.0004261277 +1664000,airspeed,-1.7968943,-1.7549648 +1664000,baro,487.51123 +1668000,airspeed,2.5592077,2.4994812 +1668000,baro,487.57227 +1668000,mag,0.19800001,-0.08200001,0.43100002 +1668000,imu,-0.24868652,0.17928551,-9.954501,-0.001751771,-0.0025643301,0.0023267802 +1672000,airspeed,3.1775198,3.1033335 +1672000,baro,487.7319 +1672000,mag,0.19800001,-0.08200001,0.43100002 +1672000,imu,-0.17389253,0.17091502,-9.991762,-0.0064311824,-0.004454855,-0.00141006 +1680000,airspeed,2.0726027,2.024231 +1680000,mag,0.19800001,-0.08200001,0.43100002 +1680000,baro,487.58636 +1680000,imu,-0.246034,0.19838202,-9.90513,-0.0037849972,-0.008426228,0.0051538865 +1688000,airspeed,-2.6477988,-2.585994 +1688000,baro,487.638 +1688000,mag,0.19800001,-0.08200001,0.43100002 +1688000,imu,-0.18442658,0.1924978,-9.961435,-0.0020293149,-0.005928844,-0.0039318316 +1692000,imu,-0.20328909,0.14453368,-9.942291,0.0008838419,-0.006681684,-0.0007172932 +1692000,baro,487.5488 +1692000,airspeed,3.9356933,3.8438473 +1692000,mag,0.19800001,-0.08200001,0.43100002 +1700000,imu,-0.15695441,0.14692988,-9.971048,-0.0039896094,-0.0010514169,-0.007578972 +1700000,baro,487.60983 +1700000,airspeed,-1.9883459,-1.9419379 +1700000,mag,0.19800001,-0.08200001,0.43100002 +1708000,baro,487.51123 +1708000,airspeed,-4.3671894,-4.265284 +1708000,imu,-0.13556953,0.14002341,-9.97185,-0.0039013207,-0.005315572,-0.0027253446 +1708000,mag,0.193,-0.07900001,0.42600003 +1712000,mag,0.193,-0.07900001,0.42600003 +1712000,imu,-0.17115232,0.18080111,-9.971639,-0.00999016,-0.006973965,-0.00522658 +1712000,baro,487.6521 +1712000,airspeed,-2.29567,-2.242083 +1716000,airspeed,1.61687,1.5791397 +1716000,mag,0.193,-0.07900001,0.42600003 +1716000,imu,-0.19997928,0.21466364,-9.9506445,-0.0045298976,-0.0045777736,-0.0016772276 +1716000,baro,487.53003 +1720000,mag,0.193,-0.07900001,0.42600003 +1720000,baro,487.57227 +1720000,imu,-0.12664814,0.20721509,-9.881061,-0.0011704885,-0.0031425068,0.0031120898 +1720000,airspeed,-3.4283469,-3.3483362 +1724000,imu,-0.12553194,0.16204183,-9.959919,-0.006691476,-0.0062268423,0.0027794845 +1724000,airspeed,-1.5536681,-1.5174098 +1724000,baro,487.5629 +1724000,mag,0.193,-0.07900001,0.42600003 +1728000,baro,487.5629 +1728000,airspeed,3.2144887,3.1394713 +1728000,imu,-0.23343359,0.20463751,-9.935661,-0.007430193,-0.008629208,0.001404961 +1728000,mag,0.193,-0.07900001,0.42600003 +1732000,baro,487.66617 +1732000,imu,-0.28259414,0.2650534,-9.932348,-0.005157863,-0.0041192505,-0.0011182168 +1732000,airspeed,-2.0647748,-2.0165763 +1732000,mag,0.193,-0.07900001,0.42600003 +1736000,imu,-0.2420644,0.21666789,-9.9721985,-0.001828945,4.0023315e-06,-0.0027616932 +1736000,airspeed,2.6447453,2.5830097 +1736000,baro,487.6521 +1736000,mag,0.193,-0.07900001,0.42600003 +1740000,mag,0.193,-0.07900001,0.42600003 +1740000,airspeed,-2.045551,-1.9978024 +1740000,imu,-0.15870103,0.19298063,-9.905623,-0.0021294488,-0.004332447,-2.9967163e-05 +1740000,baro,487.6521 +1744000,imu,-0.1962873,0.12661609,-9.840958,-0.0071694884,-0.0054766717,0.0015904736 +1744000,airspeed,-3.0598624,-2.9884517 +1744000,baro,487.57227 +1744000,mag,0.193,-0.07900001,0.42600003 +1752000,airspeed,2.4125211,2.3561983 +1752000,baro,487.71313 +1752000,mag,0.193,-0.07900001,0.42600003 +1752000,imu,-0.16109693,0.25442427,-9.878961,-0.00335349,-0.008583988,0.0031444496 +1756000,baro,487.67557 +1756000,mag,0.193,-0.07900001,0.42600003 +1756000,airspeed,-2.3024275,-2.2486794 +1756000,imu,-0.18529065,0.27852154,-9.927269,-0.004355872,-0.0047176513,-0.003097556 +1760000,mag,0.202,-0.08100001,0.43100002 +1760000,airspeed,-4.335097,-4.2338953 +1760000,imu,-0.19657513,0.18503213,-9.962001,6.4522246e-05,-0.001364833,-0.0042880257 +1760000,baro,487.68967 +1768000,mag,0.202,-0.08100001,0.43100002 +1768000,airspeed,1.1495873,1.1227514 +1768000,imu,-0.23050325,0.16317414,-9.996449,-0.0024096973,-0.0026773703,-0.0038278694 +1768000,baro,487.67557 +1772000,airspeed,-2.2095401,-2.158008 +1772000,mag,0.202,-0.08100001,0.43100002 +1772000,imu,-0.23751386,0.14635874,-9.958368,-0.009026889,-0.0092944605,0.0012092019 +1772000,baro,487.30936 +1776000,baro,487.6521 +1776000,airspeed,-1.0115657,-0.9879532 +1776000,mag,0.202,-0.08100001,0.43100002 +1776000,imu,-0.21236622,0.14209335,-9.88409,-0.0062466133,-0.012892797,0.0037697968 +1780000,airspeed,4.2688737,4.169252 +1780000,imu,-0.23752391,0.2120274,-9.909012,0.00124577,-0.008069395,0.0013366763 +1780000,mag,0.202,-0.08100001,0.43100002 +1780000,baro,487.5535 +1784000,airspeed,-3.2368286,-3.1612554 +1784000,mag,0.202,-0.08100001,0.43100002 +1784000,baro,487.7413 +1784000,imu,-0.21542652,0.22515091,-9.938705,0.0041728914,-0.0029836665,-0.0024724535 +1788000,imu,-0.22525601,0.24985933,-9.956499,0.00453645,-0.0068050837,0.0026116022 +1788000,airspeed,2.240855,2.1885507 +1788000,baro,487.62863 +1788000,mag,0.202,-0.08100001,0.43100002 +1792000,imu,-0.21724069,0.2660984,-9.989163,0.0055111456,-0.013233289,-0.0008037103 +1792000,airspeed,1.8503641,1.8071808 +1792000,baro,487.5676 +1792000,mag,0.202,-0.08100001,0.43100002 +1800000,mag,0.202,-0.08100001,0.43100002 +1800000,imu,-0.22313112,0.16795608,-9.931491,-0.00493505,-0.0063340585,0.0052519254 +1800000,baro,487.638 +1800000,airspeed,2.032926,1.985474 +1800000,gps,488101.0,85456074.0,473977508.0,0.02,0.0,0.0 +1804000,imu,-0.1837894,0.14507051,-9.907608,-0.002914247,0.003464865,-0.0014843139 +1804000,baro,487.638 +1804000,mag,0.202,-0.08100001,0.43100002 +1804000,airspeed,3.9333427,3.8415313 +1808000,airspeed,2.8159409,2.7502182 +1808000,imu,-0.26461166,0.23208371,-9.915188,0.0035013906,-0.0032627815,-0.00061373704 +1808000,mag,0.2,-0.07900001,0.42800003 +1808000,baro,487.60043 +1816000,imu,-0.1979397,0.16924442,-10.040805,0.0023479962,-0.009790076,0.00081478537 +1816000,mag,0.2,-0.07900001,0.42800003 +1816000,baro,487.7319 +1816000,airspeed,2.0918486,2.0430098 +1820000,baro,487.48776 +1820000,imu,-0.17838804,0.23993528,-9.996077,-0.0040766443,-0.0037376054,0.00045292967 +1820000,airspeed,2.8791409,2.8119621 +1820000,mag,0.2,-0.07900001,0.42800003 +1824000,mag,0.2,-0.07900001,0.42800003 +1824000,airspeed,-2.8883626,-2.8209643 +1824000,imu,-0.1549022,0.354916,-9.896165,-0.007998046,-0.000334048,0.0058599124 +1824000,baro,487.51123 +1828000,mag,0.2,-0.07900001,0.42800003 +1828000,airspeed,3.1483285,3.074857 +1828000,baro,487.5488 +1828000,imu,-0.20596357,0.26976666,-9.940034,0.00026998427,-0.0033995234,-0.0018918188 +1832000,airspeed,1.6309464,1.5928766 +1832000,imu,-0.2299359,0.12384691,-9.957743,0.001992426,-0.008660822,-0.0048028845 +1832000,baro,487.6474 +1832000,mag,0.2,-0.07900001,0.42800003 +1836000,mag,0.2,-0.07900001,0.42800003 +1836000,baro,487.5394 +1836000,airspeed,2.0079257,1.9610691 +1836000,imu,-0.20239227,0.18582939,-9.909274,-0.0010512336,-0.007861863,0.003185151 +1840000,airspeed,2.9051127,2.837317 +1840000,imu,-0.24766964,0.21258642,-9.861561,-0.0043589254,-0.0065864953,0.0024473893 +1840000,mag,0.2,-0.07900001,0.42800003 +1840000,baro,487.5488 +1844000,baro,487.67557 +1844000,mag,0.2,-0.07900001,0.42800003 +1844000,imu,-0.2180967,0.19342154,-9.869415,-0.0010954491,-0.0049434616,-0.0032598642 +1844000,airspeed,2.656907,2.5948844 +1848000,baro,487.5488 +1848000,mag,0.2,-0.07900001,0.42800003 +1848000,airspeed,3.3724933,3.2937915 +1848000,imu,-0.16222578,0.31538108,-9.868009,0.0009362186,-0.0008224871,-0.006059824 +1852000,imu,-0.14230889,0.31542498,-9.882777,0.0015483674,-0.00057132763,0.0024195355 +1852000,baro,487.76007 +1852000,airspeed,2.0466492,1.998862 +1852000,mag,0.2,-0.07900001,0.42800003 +1856000,baro,487.47836 +1856000,mag,0.2,-0.07900001,0.42800003 +1860000,imu,-0.19555558,0.19249596,-9.88297,-0.004707472,-0.011238281,-0.006692618 +1860000,airspeed,-3.2721522,-3.1957498 +1864000,airspeed,3.1549206,3.0812697 +1864000,baro,487.68967 +1864000,imu,-0.20540577,0.120389104,-9.886237,-0.008076064,-0.0053201905,0.00033187878 +1864000,mag,0.202,-0.08100001,0.42900002 +1868000,baro,487.68967 +1868000,imu,-0.23083298,0.12084685,-9.915895,0.0015465422,-0.007844119,0.0032526867 +1868000,mag,0.202,-0.08100001,0.42900002 +1868000,airspeed,-1.1936117,-1.1657473 +1872000,mag,0.202,-0.08100001,0.42900002 +1872000,airspeed,3.0210903,2.9505644 +1872000,baro,487.68497 +1872000,imu,-0.24975461,0.20706256,-9.889577,0.002465782,-0.007473891,0.002384661 +1876000,imu,-0.23047434,0.16551635,-9.863111,0.00073005614,-0.0023373854,-0.0016675347 +1876000,airspeed,-1.3667493,-1.3348432 +1880000,baro,487.7319 +1880000,imu,-0.2369927,0.20367861,-9.920201,0.0038547933,-0.00091031595,-0.0020453776 +1880000,airspeed,1.8697579,1.8261039 +1880000,mag,0.202,-0.08100001,0.42900002 +1884000,baro,487.7413 +1884000,airspeed,3.1699438,3.0959325 +1884000,mag,0.202,-0.08100001,0.42900002 +1884000,imu,-0.23094667,0.22618273,-9.9188,-0.0005782638,-0.006970773,-0.001045501 +1888000,airspeed,-1.5840023,-1.5470338 +1888000,baro,487.58636 +1888000,imu,-0.2479319,0.16992255,-9.902871,-0.00075149664,-0.012313335,-0.0026216006 +1888000,mag,0.202,-0.08100001,0.42900002 +1896000,baro,487.62863 +1896000,mag,0.202,-0.08100001,0.42900002 +1896000,airspeed,1.439472,1.405873 +1896000,imu,-0.22199473,0.13523196,-9.946769,-0.0013889145,0.00041230727,-0.0014526385 +1900000,baro,487.57697 +1900000,airspeed,4.639287,4.5310144 +1900000,mag,0.202,-0.08100001,0.42900002 +1900000,imu,-0.1909288,0.1632926,-9.93219,-0.0029683379,-0.0011965779,-0.006343351 +1904000,imu,-0.256561,0.22800756,-9.888847,-0.0036999187,-0.006779323,-0.0013442859 +1904000,baro,487.6333 +1904000,mag,0.202,-0.08100001,0.42900002 +1904000,airspeed,3.9588041,3.8663993 +1908000,imu,-0.2559868,0.1692133,-9.952446,-0.002742038,-0.009686844,0.0021078533 +1908000,baro,487.6333 +1908000,airspeed,-3.1925633,-3.118044 +1908000,mag,0.202,-0.08100001,0.42900002 +1912000,baro,487.5535 +1912000,imu,-0.22601554,0.14039586,-9.946684,-0.0035209025,-0.009882056,0.00020216902 +1912000,airspeed,2.542818,2.4834769 +1912000,mag,0.202,-0.08200001,0.43 +1916000,mag,0.202,-0.08200001,0.43 +1916000,imu,-0.20390137,0.16604689,-9.924641,-0.0014324371,-0.007178223,0.00043153283 +1916000,airspeed,1.0793954,1.0542058 +1916000,baro,487.5535 +1920000,imu,-0.1642191,0.17112792,-9.974137,0.0019167,0.0013177448,0.0052445363 +1920000,airspeed,2.3059297,2.2521152 +1924000,airspeed,-1.7501507,-1.7093067 +1924000,baro,487.5629 +1924000,mag,0.202,-0.08200001,0.43 +1924000,imu,-0.17499277,0.18110342,-9.922868,-0.0017889676,0.0031924897,0.004126585 +1928000,mag,0.202,-0.08200001,0.43 +1928000,airspeed,-2.1277115,-2.0780377 +1928000,imu,-0.20927027,0.19740117,-9.878666,-0.000989811,-0.003160315,-0.0012478484 +1928000,baro,487.71313 +1932000,mag,0.202,-0.08200001,0.43 +1932000,airspeed,-1.1661769,-1.1389596 +1932000,imu,-0.18853822,0.19416915,-9.969738,-0.0003240516,-0.0033693262,-0.0035487749 +1932000,baro,487.58636 +1936000,baro,487.69904 +1936000,airspeed,1.315707,1.2849911 +1936000,imu,-0.23909593,0.20507663,-9.974664,-0.0011920966,-0.0028159944,0.0008267807 +1936000,mag,0.202,-0.08200001,0.43 +1940000,airspeed,1.6386625,1.6004181 +1940000,baro,487.58636 +1940000,imu,-0.28156528,0.22154884,-9.925646,0.0016721014,-0.0024366954,0.004751838 +1940000,mag,0.202,-0.08200001,0.43 +1944000,mag,0.202,-0.08200001,0.43 +1944000,baro,487.5535 +1944000,imu,-0.1821943,0.24431092,-9.960422,-0.0024123618,-0.005738177,0.0037204728 +1944000,airspeed,-1.6412051,-1.6029048 +1948000,baro,487.60513 +1948000,imu,-0.13983479,0.26500157,-9.983849,-0.0059903767,-0.015476757,0.0026366205 +1948000,mag,0.202,-0.08200001,0.43 +1948000,airspeed,3.7474494,3.6599848 +1952000,mag,0.202,-0.08200001,0.43 +1952000,imu,-0.17753835,0.23469965,-9.9974,-0.0061374838,-0.01224252,0.00026198363 +1952000,airspeed,3.4159875,3.3362584 +1952000,baro,487.60983 +1956000,mag,0.202,-0.08200001,0.43 +1956000,baro,487.59106 +1956000,imu,-0.17421803,0.21399194,-9.902311,-0.0074098487,-0.008253761,-0.0033619355 +1956000,airspeed,2.0148249,1.967801 +1960000,mag,0.202,-0.08200001,0.43 +1960000,baro,487.60043 +1960000,imu,-0.17799577,0.23550962,-9.867976,-0.004379212,-0.010287371,-5.6459423e-05 +1960000,airspeed,2.8301654,2.7641106 +1968000,airspeed,-1.5592874,-1.5228926 +1968000,baro,487.61923 +1968000,mag,0.19900002,-0.07900001,0.42800003 +1968000,imu,-0.23418519,0.14554136,-9.913434,-0.006904306,-0.007910852,-0.0014938726 +1972000,baro,487.5629 +1972000,mag,0.19900002,-0.07900001,0.42800003 +1972000,airspeed,-2.5664647,-2.50657 +1972000,imu,-0.18899857,0.22482018,-9.920052,-0.0074059707,-0.011462449,0.0055350014 +1976000,baro,487.59106 +1976000,imu,-0.21897618,0.25843835,-9.941372,-0.004104573,-0.0065115294,0.0037004119 +1976000,mag,0.19900002,-0.07900001,0.42800003 +1976000,airspeed,1.6933947,1.6538724 +1980000,imu,-0.23965934,0.18592905,-9.981771,-0.0052492553,-0.0025775407,-0.002880411 +1980000,mag,0.19900002,-0.07900001,0.42800003 +1980000,airspeed,-2.5478282,-2.4883642 +1980000,baro,487.59106 +1984000,mag,0.19900002,-0.07900001,0.42800003 +1984000,airspeed,4.2881618,4.188056 +1984000,imu,-0.25603715,0.16342376,-10.033015,-0.00331814,-0.007146413,-0.0042941445 +1984000,baro,487.68967 +1988000,baro,487.68497 +1988000,mag,0.19900002,-0.07900001,0.42800003 +1988000,imu,-0.27607557,0.2586357,-9.996527,-0.00030784358,-0.007682311,-0.00061169936 +1988000,airspeed,-1.9841576,-1.9378383 +1992000,mag,0.19900002,-0.07900001,0.42800003 +1992000,airspeed,0.79105544,0.7725886 +1992000,imu,-0.245517,0.23704705,-9.956715,-0.0004365829,4.408818e-05,0.00520288 +1992000,baro,487.68497 +1996000,baro,487.71313 +1996000,imu,-0.24025111,0.1115301,-10.003526,-0.0055676275,-0.00045613767,0.0040641874 +1996000,mag,0.19900002,-0.07900001,0.42800003 +1996000,airspeed,2.8416753,2.7753334 +2000000,gps,488101.0,85456074.0,473977508.0,0.0,0.0,0.02 +2004000,baro,487.57697 +2004000,imu,-0.18357067,0.25528106,-9.911592,-0.0018261023,-0.0067138877,0.0060539963 +2004000,mag,0.19900002,-0.07900001,0.42800003 +2004000,airspeed,3.5439334,3.4612246 +2008000,imu,-0.18766376,0.23370332,-9.954915,0.00035737216,-0.0056269555,-0.003829662 +2008000,airspeed,-3.1701086,-3.0960822 +2008000,mag,0.19900002,-0.07900001,0.42800003 +2008000,baro,487.80234 +2012000,mag,0.19900002,-0.07900001,0.42800003 +2012000,baro,487.7225 +2012000,airspeed,-2.3803177,-2.3247452 +2012000,imu,-0.17375435,0.1495652,-9.945128,-0.0041014673,-0.008317285,-0.0053593614 +2020000,baro,487.60983 +2020000,mag,0.202,-0.084000014,0.43300003 +2020000,airspeed,-2.7222626,-2.6587248 +2020000,imu,-0.24515088,0.18938684,-9.917849,0.0048970995,-0.0005546184,-0.00084860186 +2024000,airspeed,2.8663576,2.7994564 +2024000,baro,487.60983 +2024000,mag,0.202,-0.084000014,0.43300003 +2024000,imu,-0.1980237,0.231944,-9.988455,-0.001959933,-0.004361474,-0.0005238088 +2028000,imu,-0.19336435,0.25670224,-10.037543,-0.0042640315,-0.0050449944,-0.00064307667 +2028000,airspeed,-3.3042662,-3.227128 +2032000,airspeed,-1.3913882,-1.3589131 +2032000,baro,487.60983 +2032000,imu,-0.20971178,0.21474734,-9.992297,-0.0033693262,-0.004466256,0.0067155715 +2032000,mag,0.202,-0.084000014,0.43300003 +2036000,mag,0.202,-0.084000014,0.43300003 +2036000,airspeed,4.853731,4.740416 +2036000,imu,-0.1925959,0.20062816,-9.914278,-0.0050380635,-0.0025873517,0.005604388 +2036000,baro,487.71313 +2040000,mag,0.202,-0.084000014,0.43300003 +2040000,airspeed,-2.0844016,-2.0357726 +2040000,imu,-0.21420445,0.12687871,-9.932668,-0.002297364,4.6982368e-05,0.00072247075 +2040000,baro,487.43613 +2044000,imu,-0.18585381,0.15869103,-9.950772,0.00032942675,-0.0036531363,0.0037114152 +2044000,airspeed,-1.1454406,-1.1187161 +2044000,mag,0.202,-0.084000014,0.43300003 +2044000,baro,487.4596 +2048000,airspeed,2.8155465,2.749823 +2048000,baro,487.66147 +2048000,imu,-0.14598387,0.17904447,-9.900943,-0.00074268685,-0.006822288,0.0029374135 +2048000,mag,0.202,-0.084000014,0.43300003 +2056000,imu,-0.20589821,0.20683745,-9.891981,-0.0031637263,-0.0025668426,0.00039277857 +2056000,baro,487.7507 +2056000,mag,0.202,-0.084000014,0.43300003 +2056000,airspeed,2.3334038,2.2789226 +2060000,imu,-0.27598816,0.17330004,-9.997238,-0.005984116,-0.005312476,0.003489199 +2060000,baro,487.53003 +2060000,mag,0.202,-0.084000014,0.43300003 +2060000,airspeed,-3.886699,-3.7960007 +2064000,imu,-0.34373325,0.12443514,-9.937315,-0.00310108,-0.013207314,0.0018181996 +2064000,airspeed,-1.1015923,-1.0758853 +2064000,baro,487.5441 +2068000,baro,487.59576 +2068000,imu,-0.23036502,0.17692524,-9.857279,-0.00058185495,-0.015107041,-0.0028296611 +2068000,airspeed,-0.52010196,-0.50796306 +2068000,mag,0.202,-0.084000014,0.43300003 +2072000,imu,-0.25169957,0.23863943,-9.973817,-0.001573243,-0.0137591455,-0.0045055435 +2072000,airspeed,2.3064477,2.2526166 +2072000,baro,487.59576 +2072000,mag,0.19900002,-0.08300001,0.43 +2076000,imu,-0.2791647,0.25239462,-9.965831,-0.0016063185,-0.008995654,-0.0039857198 +2076000,airspeed,-1.8014369,-1.759376 +2080000,mag,0.19900002,-0.08300001,0.43 +2080000,imu,-0.20571686,0.25450987,-9.923068,-0.0031249982,-0.0095378915,-0.002037891 +2080000,baro,487.75537 +2080000,airspeed,2.025207,1.9779214 +2084000,baro,487.44553 +2084000,imu,-0.22898303,0.2494982,-9.892968,-0.0065331613,-0.0045906664,-0.0008489223 +2084000,mag,0.19900002,-0.08300001,0.43 +2084000,airspeed,2.9043128,2.8365536 +2088000,mag,0.19900002,-0.08300001,0.43 +2088000,baro,487.53003 +2088000,imu,-0.23486789,0.21994722,-9.899413,-0.008750896,-0.003203144,-0.0017464895 +2088000,airspeed,4.030713,3.936654 +2092000,baro,487.59576 +2092000,imu,-0.23262076,0.19840091,-9.908246,-0.001957311,-0.008249338,0.0017728973 +2092000,airspeed,0.25344548,0.24753022 +2092000,mag,0.19900002,-0.08300001,0.43 +2096000,imu,-0.22597334,0.22314799,-9.925128,-0.0018866125,-0.002812985,0.0013409499 +2096000,airspeed,3.3539138,3.2756174 +2096000,mag,0.19900002,-0.08300001,0.43 +2096000,baro,487.68967 +2100000,airspeed,0.7740952,0.7560241 +2100000,mag,0.19900002,-0.08300001,0.43 +2100000,baro,487.68967 +2100000,imu,-0.22181043,0.24865885,-9.9865885,-0.00506758,-0.0044322247,-0.0051252316 +2108000,baro,487.5488 +2108000,airspeed,-2.972669,-2.9032977 +2108000,imu,-0.19646917,0.23940842,-9.864093,0.0053813504,-0.009680892,-0.0011010589 +2108000,mag,0.19900002,-0.08300001,0.43 +2112000,airspeed,0.782694,0.76442385 +2112000,mag,0.19900002,-0.08300001,0.43 +2112000,imu,-0.17295693,0.2501856,-9.938901,-0.0005132897,-0.008461999,-0.003681181 +2112000,baro,487.6521 +2116000,airspeed,1.558003,1.521635 +2116000,mag,0.19900002,-0.08300001,0.43 +2116000,imu,-0.25208485,0.211422,-9.908157,-0.0035881042,-0.0076432806,-0.0020581195 +2116000,baro,487.6521 +2124000,airspeed,-2.5446377,-2.4852672 +2124000,imu,-0.19584048,0.19714461,-9.848775,-0.00092200114,-0.00933083,0.0020815332 +2124000,baro,487.4643 +2124000,mag,0.202,-0.08100001,0.42800003 +2128000,imu,-0.17400187,0.2451056,-9.885194,-0.007514251,-0.012870229,-0.0013113798 +2128000,airspeed,-3.5654287,-3.4821982 +2128000,baro,487.67087 +2128000,mag,0.202,-0.08100001,0.42800003 +2136000,mag,0.202,-0.08100001,0.42800003 +2136000,baro,487.76007 +2136000,imu,-0.21825258,0.16270001,-9.957419,-0.0010283812,-0.0063838474,0.00283188 +2136000,airspeed,-1.7898468,-1.7480557 +2144000,baro,487.69904 +2144000,mag,0.202,-0.08100001,0.42800003 +2144000,airspeed,-1.7123218,-1.6723471 +2144000,imu,-0.20696819,0.16123839,-9.937694,0.0049636,-0.00857412,0.000804811 +2148000,imu,-0.23794018,0.10547653,-9.930045,0.0067456425,-0.0075127087,-0.0006315819 +2148000,airspeed,2.6952906,2.6323688 +2148000,baro,487.69434 +2148000,mag,0.202,-0.08100001,0.42800003 +2152000,imu,-0.19354169,0.14715785,-9.935157,0.001491219,-0.013755665,-0.0015572623 +2152000,airspeed,3.3467376,3.2686214 +2156000,imu,-0.18417993,0.22190265,-9.936389,0.0013194941,-0.010711701,-0.0015112843 +2156000,mag,0.202,-0.08100001,0.42800003 +2156000,airspeed,1.9473935,1.9019394 +2156000,baro,487.62863 +2164000,imu,-0.26790118,0.13452388,-9.918355,8.758181e-05,-0.005759531,-0.0056153773 +2164000,mag,0.202,-0.08100001,0.42800003 +2164000,airspeed,-2.073633,-2.0252352 +2164000,baro,487.60513 +2168000,baro,487.60513 +2168000,mag,0.202,-0.08100001,0.42800003 +2168000,airspeed,-3.106459,-3.0339553 +2168000,imu,-0.23818424,0.19910203,-9.916631,0.0022549026,-0.007708121,0.0001860288 +2176000,baro,487.5582 +2176000,airspeed,2.8058696,2.7403886 +2176000,imu,-0.1480552,0.18427788,-9.916313,0.00021636851,-0.004827943,0.0009850898 +2176000,mag,0.19700001,-0.07900001,0.42800003 +2180000,imu,-0.19887958,0.18857275,-9.883807,-0.0026471135,-0.008363015,-0.002885278 +2180000,baro,487.5582 +2180000,airspeed,2.7328296,2.669053 +2180000,mag,0.19700001,-0.07900001,0.42800003 +2184000,baro,487.6427 +2184000,imu,-0.23473458,0.1871306,-9.950218,-0.0014199463,-0.009830384,-0.0024111478 +2184000,mag,0.19700001,-0.07900001,0.42800003 +2184000,airspeed,3.9172761,3.825839 +2188000,imu,-0.30251274,0.1713623,-9.98446,-0.002116904,-0.006612255,-0.003616334 +2188000,airspeed,-2.9102669,-2.8423588 +2192000,airspeed,-1.9174542,-1.8727124 +2192000,baro,487.50656 +2192000,mag,0.19700001,-0.07900001,0.42800003 +2192000,imu,-0.29039988,0.22832935,-9.9505205,-0.005609654,-0.010401152,0.0010143123 +2196000,baro,487.67087 +2196000,imu,-0.19390197,0.25184655,-9.964464,0.0016053404,-0.010924441,0.004076887 +2196000,airspeed,-2.6822968,-2.6196823 +2196000,mag,0.19700001,-0.07900001,0.42800003 +2200000,airspeed,-2.1261914,-2.076555 +2200000,baro,487.69434 +2200000,gps,488101.0,85456074.0,473977507.0,0.0,0.01,0.01 +2200000,imu,-0.20069546,0.19096725,-9.869897,0.00018338396,-0.010702896,0.0043713883 +2200000,mag,0.19700001,-0.07900001,0.42800003 +2204000,baro,487.6568 +2204000,mag,0.19700001,-0.07900001,0.42800003 +2204000,imu,-0.2166156,0.18540892,-9.824569,-0.0016165159,-0.011960893,0.0011562861 +2204000,airspeed,2.4327333,2.375946 +2208000,airspeed,-3.0891738,-3.0170715 +2208000,mag,0.19700001,-0.07900001,0.42800003 +2208000,imu,-0.18597901,0.28066126,-9.866451,-0.0025091835,-0.0070832404,0.0005144771 +2208000,baro,487.61453 +2212000,baro,487.61453 +2212000,mag,0.19700001,-0.07900001,0.42800003 +2216000,airspeed,-1.3982866,-1.3656491 +2216000,imu,-0.21526833,0.18708281,-9.921024,-0.0016771986,-0.00066652964,0.0010968975 +2220000,airspeed,-3.9486492,-3.856473 +2220000,mag,0.19700001,-0.07900001,0.42800003 +2220000,baro,487.67087 +2220000,imu,-0.14221391,0.124049515,-9.902758,-0.0021373522,0.00015625774,-0.00038717675 +2224000,airspeed,2.7971306,2.7318685 +2224000,baro,487.469 +2224000,mag,0.20300001,-0.07900001,0.42900002 +2224000,imu,-0.22975963,0.17692289,-9.928006,-0.0009926445,-0.004995846,-0.00067660067 +2228000,airspeed,3.90368,3.8125567 +2228000,baro,487.6568 +2228000,mag,0.20300001,-0.07900001,0.42900002 +2232000,imu,-0.25302705,0.26541185,-9.878331,-0.00017080396,-0.0050452766,-0.0006229254 +2236000,baro,487.49246 +2236000,mag,0.20300001,-0.07900001,0.42900002 +2236000,airspeed,1.9713776,1.9253789 +2236000,imu,-0.213629,0.1836087,-9.891967,-0.006917539,-0.0034237416,-0.0012917607 +2240000,baro,487.5535 +2240000,mag,0.20300001,-0.07900001,0.42900002 +2244000,airspeed,-2.0000877,-1.9534187 +2244000,baro,487.49716 +2244000,imu,-0.24454708,0.24605842,-9.910789,0.00026347823,-0.0052251895,-0.005462814 +2244000,mag,0.20300001,-0.07900001,0.42900002 +2248000,baro,487.5535 +2248000,airspeed,2.5321882,2.4730952 +2248000,imu,-0.25450903,0.22870061,-10.009126,-0.0030872659,-0.0055161053,-0.0026537075 +2248000,mag,0.20300001,-0.07900001,0.42900002 +2256000,imu,-0.18106048,0.1422815,-9.942923,0.0013091498,-0.00036638178,-0.001971414 +2256000,mag,0.20300001,-0.07900001,0.42900002 +2256000,baro,487.60983 +2256000,airspeed,-2.1335998,-2.0838013 +2260000,baro,487.35162 +2260000,imu,-0.21425125,0.16813111,-9.876388,-0.003916737,-0.0051617725,0.004448848 +2260000,mag,0.20300001,-0.07900001,0.42900002 +2260000,airspeed,-2.5926037,-2.532132 +2264000,airspeed,0.72669363,0.7097342 +2264000,mag,0.20300001,-0.07900001,0.42900002 +2264000,imu,-0.22985338,0.21791017,-9.844792,-0.008253939,-0.006338268,-0.0006116787 +2264000,baro,487.57227 +2272000,imu,-0.1808767,0.2119167,-9.92243,0.0011312406,-0.009625657,-0.00047706362 +2272000,airspeed,-1.8468696,-1.8037534 +2272000,mag,0.20300001,-0.07900001,0.42900002 +2272000,baro,487.70374 +2276000,airspeed,-1.674493,-1.6354097 +2276000,baro,487.61453 +2276000,mag,0.2,-0.07900001,0.432 +2276000,imu,-0.22291568,0.20682862,-9.888862,-0.0007543227,-0.012302858,0.00034304213 +2280000,imu,-0.22322951,0.17229728,-9.841731,-0.009087489,-0.011409618,0.0058122207 +2284000,imu,-0.22888954,0.15244216,-9.904794,-0.005146648,-0.004735867,0.0026125067 +2284000,mag,0.2,-0.07900001,0.432 +2284000,baro,487.6474 +2284000,airspeed,-1.6076951,-1.5701679 +2292000,imu,-0.23475485,0.19176884,-9.910987,0.0025694822,-0.008652194,-0.0032418862 +2292000,baro,487.49716 +2292000,airspeed,3.532142,3.4497247 +2292000,mag,0.2,-0.07900001,0.432 +2296000,baro,487.69434 +2296000,airspeed,-0.87462145,-0.8542034 +2296000,mag,0.2,-0.07900001,0.432 +2296000,imu,-0.16347176,0.16125412,-9.87528,0.0029822288,-0.013076942,-0.007326351 +2304000,imu,-0.25297105,0.15280327,-9.938747,-0.010393371,0.0022978142,-0.0029570532 +2304000,airspeed,-2.4362352,-2.3793855 +2304000,mag,0.2,-0.07900001,0.432 +2304000,baro,487.52533 +2308000,baro,487.6427 +2308000,mag,0.2,-0.07900001,0.432 +2308000,imu,-0.2827372,0.18408903,-9.929308,-0.0064922404,0.0019224618,-0.0045338427 +2308000,airspeed,-2.6253302,-2.5640492 +2312000,imu,-0.29467094,0.18751715,-9.935907,0.0037336678,-0.0042901896,-0.00038964205 +2312000,airspeed,-3.5439959,-3.4613023 +2312000,mag,0.2,-0.07900001,0.432 +2312000,baro,487.49246 +2320000,mag,0.2,-0.07900001,0.432 +2320000,imu,-0.1428048,0.16877219,-9.85532,-0.003607173,-0.0120929815,0.0008852977 +2320000,baro,487.638 +2320000,airspeed,3.406821,3.3273 +2324000,baro,487.638 +2324000,imu,-0.18423918,0.20515558,-9.927815,-0.007416989,-0.0067879306,-0.0019427324 +2324000,mag,0.2,-0.07900001,0.432 +2324000,airspeed,-4.006037,-3.9125295 +2332000,baro,487.67087 +2332000,imu,-0.124561615,0.21469603,-9.941956,0.0016494417,-0.008146177,-0.0019410749 +2332000,airspeed,1.376287,1.3441595 +2332000,mag,0.19900002,-0.08200001,0.42900002 +2336000,baro,487.71783 +2336000,airspeed,-1.5845011,-1.5475088 +2336000,mag,0.19900002,-0.08200001,0.42900002 +2336000,imu,-0.13309927,0.23451304,-9.936258,-0.0017216608,-0.006172708,0.0040089185 +2340000,baro,487.638 +2340000,mag,0.19900002,-0.08200001,0.42900002 +2340000,imu,-0.23493637,0.21697941,-9.89884,-0.005746409,-0.003817459,0.0075749294 +2340000,airspeed,-2.0605335,-2.012437 +2348000,imu,-0.21324852,0.16991705,-9.98211,-0.002562369,-0.004186258,-0.0013973046 +2348000,baro,487.5676 +2348000,mag,0.19900002,-0.08200001,0.42900002 +2348000,airspeed,1.5908732,1.5537459 +2352000,airspeed,2.5425365,2.48321 +2352000,imu,-0.31221542,0.13563438,-10.028296,-0.0025431118,-0.006323383,-0.0030111526 +2356000,airspeed,-3.179088,-3.1048985 +2356000,baro,487.5535 +2356000,mag,0.19900002,-0.08200001,0.42900002 +2356000,imu,-0.3085514,0.17799772,-9.9900055,-0.0005046251,-0.012403873,6.4290485e-05 +2360000,baro,487.47836 +2360000,mag,0.19900002,-0.08200001,0.42900002 +2360000,airspeed,-3.6394484,-3.5545313 +2360000,imu,-0.21008445,0.18851897,-9.970313,0.0019353401,-0.012944039,0.00062990974 +2364000,airspeed,-2.3658755,-2.310674 +2364000,mag,0.19900002,-0.08200001,0.42900002 +2364000,baro,487.47836 +2364000,imu,-0.10104527,0.20723961,-9.993567,0.0018770952,-0.011791725,0.0015886822 +2368000,baro,487.66147 +2368000,imu,-0.123356424,0.23612644,-9.939697,-0.00016288817,-0.0030064974,0.007829173 +2368000,airspeed,-3.0747743,-3.0029995 +2368000,mag,0.19900002,-0.08200001,0.42900002 +2372000,airspeed,-2.0523314,-2.0044239 +2372000,imu,-0.22163554,0.19159131,-9.9509,-0.0044213883,6.428394e-05,0.0059045823 +2372000,mag,0.19900002,-0.08200001,0.42900002 +2372000,baro,487.66147 +2380000,airspeed,2.5519083,2.4923487 +2380000,imu,-0.21281068,0.1568798,-9.985115,-0.0031759364,-0.005387522,-0.00064577063 +2380000,mag,0.19900002,-0.08000001,0.42700002 +2380000,baro,487.59576 +2384000,baro,487.70374 +2384000,airspeed,2.1254015,2.0757828 +2384000,imu,-0.17862305,0.16259167,-9.976906,0.0008057751,-0.005246771,0.0015037287 +2384000,mag,0.19900002,-0.08000001,0.42700002 +2388000,imu,-0.20648117,0.15681507,-9.969768,-0.0005063705,-0.0030156998,-0.00037076257 +2388000,mag,0.19900002,-0.08000001,0.42700002 +2388000,airspeed,2.0206974,1.9735395 +2388000,baro,487.5629 +2392000,mag,0.19900002,-0.08000001,0.42700002 +2392000,baro,487.5629 +2392000,imu,-0.21750309,0.17237751,-9.94924,-0.0007966066,-0.0031176182,-0.0057034516 +2392000,airspeed,-1.2025894,-1.1745241 +2396000,baro,487.5629 +2396000,mag,0.19900002,-0.08000001,0.42700002 +2396000,airspeed,-3.4521465,-3.3715825 +2396000,imu,-0.2107085,0.22238903,-9.911541,0.003667618,-0.010360092,-0.0013934646 +2400000,baro,487.69904 +2400000,mag,0.19900002,-0.08000001,0.42700002 +2400000,airspeed,-3.3318753,-3.2540915 +2400000,imu,-0.22569199,0.23665217,-9.911023,0.001476081,-0.008947255,0.0036158853 +2400000,gps,488111.0,85456074.0,473977508.0,0.0,-0.01,0.01 +2404000,airspeed,1.0779731,1.0528125 +2404000,baro,487.61923 +2404000,mag,0.19900002,-0.08000001,0.42700002 +2404000,imu,-0.24979559,0.27395537,-9.865913,0.001440649,-0.005437517,0.0030628652 +2408000,mag,0.19900002,-0.08000001,0.42700002 +2408000,imu,-0.23414202,0.31002295,-9.911969,-0.00056934345,-0.0090929,0.00611107 +2408000,baro,487.59576 +2408000,airspeed,-2.6034842,-2.5427206 +2416000,imu,-0.300105,0.17499785,-9.97878,0.004003272,-0.0106456755,5.4450404e-05 +2416000,airspeed,1.9448514,1.8994528 +2416000,mag,0.19900002,-0.08000001,0.42700002 +2416000,baro,487.6568 +2420000,mag,0.19900002,-0.08000001,0.42700002 +2420000,baro,487.62863 +2420000,airspeed,3.3965294,3.3172503 +2420000,imu,-0.19696543,0.17296009,-9.929796,0.007673261,-0.0075353007,0.0054586884 +2428000,imu,-0.2448218,0.13844952,-9.919005,0.00027219456,-0.0048428182,0.0010023296 +2428000,mag,0.19900002,-0.08000001,0.42700002 +2428000,airspeed,-2.7576737,-2.6933115 +2428000,baro,487.59576 +2432000,baro,487.75537 +2432000,mag,0.19900002,-0.08000001,0.42700002 +2432000,imu,-0.26172614,0.2267871,-9.865744,0.0005381402,0.0024032905,0.0051792907 +2432000,airspeed,4.0983763,4.0026846 +2436000,baro,487.75537 +2436000,airspeed,-3.370016,-3.2913308 +2436000,mag,0.201,-0.07800001,0.43 +2436000,imu,-0.24102509,0.2453496,-9.9512005,-0.003984547,-0.0010630761,-0.003970986 +2440000,mag,0.201,-0.07800001,0.43 +2440000,imu,-0.2352566,0.2339727,-9.960778,-0.0023409133,-0.008552484,-0.006231906 +2440000,airspeed,-3.3345292,-3.256701 +2440000,baro,487.60983 +2444000,airspeed,1.8976054,1.8533319 +2444000,mag,0.201,-0.07800001,0.43 +2444000,imu,-0.26493078,0.22292112,-9.8943815,-0.0024467467,-0.008563273,-0.004593578 +2444000,baro,487.4596 +2448000,imu,-0.2313702,0.16224697,-9.859086,-0.0045712497,-0.011247423,0.001758278 +2448000,mag,0.201,-0.07800001,0.43 +2448000,airspeed,-1.3700031,-1.3380312 +2448000,baro,487.5582 +2452000,baro,487.67557 +2452000,mag,0.201,-0.07800001,0.43 +2452000,imu,-0.23663393,0.20667711,-9.896445,0.0016484006,-0.010451896,0.00962043 +2452000,airspeed,3.428533,3.3484974 +2460000,airspeed,1.9596839,1.9139425 +2460000,baro,487.62863 +2460000,imu,-0.24510594,0.22820328,-10.009722,-0.0056290682,-0.0036767386,-0.0023214424 +2460000,mag,0.201,-0.07800001,0.43 +2464000,baro,487.5676 +2464000,imu,-0.2617902,0.20685443,-9.9609995,-0.00017367191,-0.0052428907,-0.0013894049 +2464000,airspeed,-2.181255,-2.1303496 +2464000,mag,0.201,-0.07800001,0.43 +2468000,airspeed,2.3442116,2.2894878 +2468000,imu,-0.2197984,0.16061004,-9.924195,0.0005593491,-0.008110432,0.000750952 +2468000,baro,487.68027 +2468000,mag,0.201,-0.07800001,0.43 +2472000,airspeed,-3.487685,-3.406296 +2472000,mag,0.201,-0.07800001,0.43 +2472000,imu,-0.23828901,0.23753794,-9.926186,0.0016857581,-0.0046920395,0.0004547124 +2472000,baro,487.5441 +2476000,mag,0.201,-0.07800001,0.43 +2476000,airspeed,-1.9347006,-1.8895522 +2476000,imu,-0.24735403,0.24163045,-9.94944,0.00059869833,-0.007949406,-0.00361951 +2476000,baro,487.5441 +2480000,mag,0.201,-0.07800001,0.43 +2480000,baro,487.68967 +2484000,airspeed,-2.866413,-2.79951 +2484000,imu,-0.17048608,0.2445679,-9.928275,-0.0057079843,-0.007225869,0.001752696 +2488000,airspeed,1.5433345,1.5073173 +2488000,mag,0.2,-0.07800001,0.42800003 +2488000,imu,-0.24953142,0.26611722,-9.951888,-0.0035624166,-0.007915711,-0.0011629609 +2488000,baro,487.5629 +2496000,imu,-0.23188975,0.14308427,-9.879882,0.00053855684,-0.008160327,0.00094222085 +2496000,mag,0.2,-0.07800001,0.42800003 +2496000,airspeed,-1.6762094,-1.6370817 +2496000,baro,487.66147 +2500000,imu,-0.22012313,0.13325356,-9.815114,-0.0019406957,-0.005415601,0.0022655686 +2500000,baro,487.66147 +2500000,mag,0.2,-0.07800001,0.42800003 +2500000,airspeed,-2.2374885,-2.1852589 +2504000,airspeed,-1.7854888,-1.7438084 +2504000,baro,487.67557 +2504000,imu,-0.27113065,0.19623643,-9.880167,-0.0056972643,-0.0020105909,-6.031987e-05 +2504000,mag,0.2,-0.07800001,0.42800003 +2508000,imu,-0.26453367,0.22904418,-9.920011,-0.0066675474,-0.0020511998,0.0034619088 +2508000,baro,487.61923 +2508000,airspeed,2.3528922,2.297974 +2508000,mag,0.2,-0.07800001,0.42800003 +2512000,airspeed,-2.562645,-2.502831 +2512000,imu,-0.25049856,0.17994031,-9.913854,-0.0005053141,-0.0054582767,0.006999798 +2512000,baro,487.61923 +2512000,mag,0.2,-0.07800001,0.42800003 +2516000,baro,487.62393 +2516000,imu,-0.2636778,0.13072279,-9.90897,-0.0014898204,-0.0055191233,5.7429866e-06 +2516000,airspeed,-0.79289836,-0.7743914 +2516000,mag,0.2,-0.07800001,0.42800003 +2520000,airspeed,-2.5622594,-2.502454 +2520000,mag,0.2,-0.07800001,0.42800003 +2520000,imu,-0.22492398,0.20130694,-9.872691,-0.0044633877,-0.0064303596,-0.002927044 +2520000,baro,487.62393 +2528000,airspeed,-2.931387,-2.8629568 +2528000,baro,487.67557 +2528000,imu,-0.24869433,0.24611777,-9.93563,0.007453965,-0.005330584,-0.0021228963 +2528000,mag,0.2,-0.07800001,0.42800003 +2532000,mag,0.2,-0.07800001,0.42800003 +2532000,baro,487.67087 +2532000,imu,-0.27664652,0.17923318,-9.966502,-0.00072014675,0.00317701,-0.0040057157 +2532000,airspeed,-1.4215939,-1.3884089 +2536000,baro,487.59576 +2536000,imu,-0.22163384,0.15328345,-9.938308,-0.0071525373,-0.007990656,-0.0059767375 +2536000,airspeed,1.3627276,1.3309225 +2536000,mag,0.2,-0.08300001,0.43 +2544000,mag,0.2,-0.08300001,0.43 +2544000,imu,-0.2660243,0.18013889,-10.000187,-0.0015690398,-0.004771742,0.0013010515 +2544000,baro,487.59576 +2544000,airspeed,2.4054997,2.349357 +2548000,mag,0.2,-0.08300001,0.43 +2548000,baro,487.638 +2548000,airspeed,3.6732485,3.5875087 +2548000,imu,-0.25596473,0.20055617,-9.918592,0.0008028373,-0.009637975,-0.0031951007 +2552000,imu,-0.27357784,0.19773594,-9.868375,0.0031507604,-0.011695202,-0.003979151 +2556000,mag,0.2,-0.08300001,0.43 +2556000,airspeed,-1.9610511,-1.915267 +2556000,imu,-0.2635501,0.18590194,-9.938961,-0.0010711324,-0.009345576,-0.0020904094 +2556000,baro,487.7225 +2560000,mag,0.2,-0.08300001,0.43 +2560000,baro,487.67557 +2560000,airspeed,1.1564906,1.1294935 +2564000,imu,-0.2199643,0.23235148,-9.914472,-0.009942511,-0.0016712095,-0.005342899 +2564000,airspeed,-1.9306566,-1.8855939 +2568000,mag,0.2,-0.08300001,0.43 +2568000,imu,-0.19267046,0.1611637,-9.992267,-0.010286422,-0.0037419,-0.0022017574 +2568000,baro,487.52063 +2572000,baro,487.69904 +2572000,imu,-0.1954078,0.16466938,-9.961236,-0.008087813,-0.002269017,-0.0065437527 +2572000,airspeed,1.8216318,1.779105 +2572000,mag,0.2,-0.08300001,0.43 +2576000,imu,-0.26117462,0.15340114,-9.858276,-0.007679212,-0.004250975,-0.0024779409 +2576000,baro,487.70374 +2576000,mag,0.2,-0.08300001,0.43 +2576000,airspeed,2.6684866,2.6061893 +2580000,mag,0.2,-0.08300001,0.43 +2580000,airspeed,-2.0650034,-2.0168068 +2580000,imu,-0.25778562,0.15606236,-9.945906,-0.00766495,-0.0046267537,-0.0006639156 +2580000,baro,487.60513 +2584000,baro,487.69434 +2584000,airspeed,2.3338108,2.2793276 +2584000,mag,0.2,-0.08300001,0.43 +2584000,imu,-0.16814265,0.16765715,-10.005147,-0.0074536875,0.0031042758,-0.0034069687 +2588000,mag,0.202,-0.07900001,0.42900002 +2588000,baro,487.638 +2592000,baro,487.61923 +2592000,mag,0.202,-0.07900001,0.42900002 +2592000,imu,-0.26254424,0.14826761,-9.947109,0.002255876,-0.011937554,0.0048474465 +2592000,airspeed,3.708555,3.6219947 +2596000,baro,487.638 +2596000,mag,0.202,-0.07900001,0.42900002 +2596000,imu,-0.2604934,0.21775039,-9.929778,-0.0039124726,-0.009640052,0.0017788946 +2596000,airspeed,-2.45253,-2.3952832 +2600000,gps,488100.0,85456074.0,473977508.0,0.0,-0.01,0.03 +2600000,landed,1.0 +2604000,imu,-0.19321434,0.2865911,-9.993722,-0.007416107,-0.0022739004,-0.008090658 +2604000,baro,487.7272 +2604000,mag,0.202,-0.07900001,0.42900002 +2604000,airspeed,2.4222343,2.3656826 +2608000,mag,0.202,-0.07900001,0.42900002 +2608000,imu,-0.19130403,0.2581804,-9.934502,-0.0049375608,-0.0037127263,-0.006754241 +2608000,baro,487.67557 +2608000,airspeed,-1.1057422,-1.0799298 +2612000,baro,487.67557 +2612000,mag,0.202,-0.07900001,0.42900002 +2612000,imu,-0.22340825,0.25019813,-9.946437,-0.0023576284,-0.0040479493,0.0028677252 +2612000,airspeed,0.32130682,0.31380624 +2616000,baro,487.68497 +2616000,airspeed,-1.9110632,-1.8664503 +2616000,imu,-0.27708706,0.23821132,-9.933062,0.003062662,-0.0032710612,0.005626604 +2616000,mag,0.202,-0.07900001,0.42900002 +2620000,baro,487.47836 +2620000,mag,0.202,-0.07900001,0.42900002 +2620000,airspeed,2.9111404,2.8432167 +2624000,imu,-0.19369112,0.21416172,-9.884978,-0.0010588315,-0.003862699,0.0042169513 +2624000,airspeed,-1.7062489,-1.6664225 +2628000,imu,-0.21601231,0.18441848,-9.913197,-0.00397089,-0.003556866,0.0026461221 +2628000,airspeed,2.0200965,1.9729463 +2628000,baro,487.61453 +2628000,mag,0.202,-0.07900001,0.42900002 +2632000,mag,0.202,-0.07900001,0.42900002 +2632000,baro,487.61453 +2632000,airspeed,3.3098433,3.2325897 +2632000,imu,-0.18122026,0.17708096,-9.913819,0.00038980183,-0.010191231,0.0024470778 +2636000,airspeed,3.080111,3.008226 +2640000,mag,0.201,-0.08200001,0.43100002 +2640000,airspeed,-3.5871885,-3.503475 +2640000,imu,-0.17877232,0.17685135,-9.928787,0.0015059416,-0.01470429,0.004495164 +2640000,baro,487.5535 +2644000,baro,487.5535 +2644000,mag,0.201,-0.08200001,0.43100002 +2648000,imu,-0.30538228,0.2383725,-9.993189,-0.008310055,0.0017309764,-0.0034950934 +2648000,airspeed,3.4048693,3.3253822 +2648000,mag,0.201,-0.08200001,0.43100002 +2648000,baro,487.69434 +2656000,mag,0.201,-0.08200001,0.43100002 +2656000,imu,-0.24578866,0.22598784,-9.85829,0.0017781454,-0.008108081,-5.5154822e-05 +2656000,airspeed,4.1321387,4.0356646 +2656000,baro,487.7319 +2660000,airspeed,-2.7826953,-2.7177489 +2660000,imu,-0.24541788,0.1907496,-9.848813,0.002726623,-0.0058007888,0.0051621995 +2664000,baro,487.69904 +2664000,airspeed,-1.585045,-1.5480416 +2664000,imu,-0.28384197,0.20921043,-9.882337,0.0012760882,-0.0012414797,0.004390719 +2664000,mag,0.201,-0.08200001,0.43100002 +2668000,baro,487.67557 +2668000,airspeed,-3.0779665,-3.0061147 +2668000,imu,-0.2684032,0.24982367,-9.921187,-0.0047269575,-0.0021681134,0.002179831 +2668000,mag,0.201,-0.08200001,0.43100002 +2672000,baro,487.60043 +2672000,airspeed,-1.1536313,-1.1267061 +2672000,imu,-0.16840282,0.2659353,-9.973228,-0.00318945,-0.008872295,0.0041277595 +2676000,imu,-0.12658012,0.22749765,-9.948613,-0.009097784,-0.014216543,0.0044569 +2676000,airspeed,3.1280184,3.0550218 +2676000,mag,0.201,-0.08200001,0.43100002 +2676000,baro,487.5488 +2680000,mag,0.201,-0.08200001,0.43100002 +2680000,baro,487.5488 +2680000,imu,-0.21714815,0.1825871,-9.881924,-0.009678286,-0.008614015,0.0025220306 +2680000,airspeed,4.43922,4.3356247 +2684000,mag,0.201,-0.08200001,0.43100002 +2684000,imu,-0.21252206,0.16597897,-9.840784,-0.001285945,-0.0007687487,-0.0046796054 +2684000,airspeed,2.9424076,2.8737378 +2684000,baro,487.57227 +2691999,imu,-0.21193515,0.17189623,-9.941895,0.00047103647,-0.005720016,0.007514827 +2691999,baro,487.5441 +2691999,airspeed,-1.3794079,-1.3472176 +2691999,mag,0.2,-0.07800001,0.42800003 +2696000,airspeed,-2.4070597,-2.3508878 +2696000,imu,-0.1889792,0.18415417,-9.969345,-0.00036205526,-0.0055930433,0.004302976 +2699999,baro,487.67087 +2699999,imu,-0.14439638,0.21466798,-9.93954,-0.006484064,-0.005466331,0.0029469728 +2699999,airspeed,-1.6057851,-1.5683001 +2699999,mag,0.2,-0.07800001,0.42800003 +2707999,airspeed,2.121108,2.0715945 +2707999,imu,-0.22049087,0.20274189,-9.918236,0.002577996,-0.006079762,0.0003417883 +2707999,baro,487.66617 +2707999,mag,0.2,-0.07800001,0.42800003 +2712000,baro,487.4737 +2712000,airspeed,2.17525,2.1244967 +2712000,mag,0.2,-0.07800001,0.42800003 +2712000,imu,-0.16787905,0.17730874,-9.999804,0.0033659115,-0.008698145,-0.0010886654 +2715999,baro,487.7319 +2715999,imu,-0.18673599,0.19645983,-9.956135,0.00044122906,-0.007980252,4.184326e-05 +2715999,airspeed,-1.2506455,-1.2214465 +2715999,mag,0.2,-0.07800001,0.42800003 +2720000,airspeed,3.2193675,3.1442044 +2720000,baro,487.7319 +2720000,imu,-0.20443754,0.14947885,-9.917797,0.0007192004,-0.005936056,0.0025503116 +2720000,mag,0.2,-0.07800001,0.42800003 +2723999,mag,0.2,-0.07800001,0.42800003 +2723999,airspeed,3.4372156,3.3569973 +2723999,baro,487.57697 +2723999,imu,-0.24146332,0.1148519,-9.904366,0.0013680103,-0.007168006,-0.0013814493 +2728000,mag,0.2,-0.07800001,0.42800003 +2728000,airspeed,2.9422212,2.8735754 +2728000,baro,487.4596 +2728000,imu,-0.23927584,0.14872125,-9.9281845,0.0014237559,-0.004490831,-0.005486045 +2736000,mag,0.2,-0.07800001,0.42800003 +2736000,baro,487.62393 +2736000,airspeed,3.38854,3.3094485 +2736000,imu,-0.20035973,0.20041335,-9.939725,-0.0019498882,-0.006602856,-0.0019142232 +2744000,baro,487.6568 +2744000,imu,-0.19986475,0.24336335,-9.937931,-0.0006247622,-0.0045114635,-0.003471313 +2744000,mag,0.19800001,-0.084000014,0.42900002 +2744000,airspeed,-3.2890484,-3.2122731 +2747999,baro,487.6568 +2747999,imu,-0.15724081,0.291273,-9.87853,-0.00052918884,-0.0071028722,-0.0011735949 +2747999,mag,0.19800001,-0.084000014,0.42900002 +2747999,airspeed,-0.7051648,-0.6887043 +2755999,imu,-0.30833685,0.20835015,-9.960596,-0.0051308735,-0.010577796,-0.0016396175 +2755999,mag,0.19800001,-0.084000014,0.42900002 +2755999,baro,487.57227 +2755999,airspeed,1.7044988,1.6647195 +2760000,mag,0.19800001,-0.084000014,0.42900002 +2760000,imu,-0.19544177,0.19958761,-9.952068,0.00061560946,-0.006449078,-0.0008040164 +2760000,airspeed,-4.4800653,-4.375494 +2760000,baro,487.6333 +2763999,mag,0.19800001,-0.084000014,0.42900002 +2763999,baro,487.50656 +2768000,imu,-0.21707657,0.2140814,-9.957977,0.0025236995,-0.009344031,-0.0001570378 +2768000,airspeed,-1.3341215,-1.3029929 +2771999,imu,-0.22991309,0.15670691,-9.953757,0.00087581703,-0.008368088,0.004799181 +2771999,mag,0.19800001,-0.084000014,0.42900002 +2771999,baro,487.67087 +2771999,airspeed,4.0352287,3.9410312 +2776000,baro,487.53473 +2776000,imu,-0.19434257,0.1625205,-9.903905,0.007173733,-0.006517456,0.0033793822 +2776000,airspeed,-1.8906159,-1.8464972 +2776000,mag,0.19800001,-0.084000014,0.42900002 +2779999,imu,-0.2131922,0.17388329,-9.934358,0.0064469078,-0.0077839103,-0.008483818 +2779999,airspeed,-2.3636322,-2.30844 +2784000,airspeed,-3.6889722,-3.6028326 +2784000,mag,0.19800001,-0.084000014,0.42900002 +2784000,imu,-0.2771548,0.18012923,-9.942001,-0.0021430731,-0.005329334,-0.0052642645 +2784000,baro,487.79294 +2792000,baro,487.68027 +2792000,mag,0.19800001,-0.084000014,0.42900002 +2792000,imu,-0.2091119,0.20592687,-9.939128,-0.002615896,-0.0075466065,-0.0031247982 +2792000,airspeed,-2.2746124,-2.2215135 +2795999,mag,0.19900002,-0.08000001,0.43100002 +2795999,airspeed,-2.2559752,-2.203328 +2795999,imu,-0.25351867,0.2542261,-9.999623,-0.00073810725,-0.008373395,-0.0002688261 +2795999,baro,487.5535 +2800000,airspeed,2.660847,2.5987513 +2800000,imu,-0.27327335,0.23859185,-9.987296,0.0013592998,-0.011231239,0.002701411 +2800000,baro,487.5535 +2800000,mag,0.19900002,-0.08000001,0.43100002 +2803999,airspeed,-2.3949468,-2.3390632 +2803999,baro,487.50656 +2803999,mag,0.19900002,-0.08000001,0.43100002 +2803999,imu,-0.29215738,0.16939902,-9.994007,0.00013737401,-0.006538832,0.000987119 +2808000,baro,487.6427 +2808000,gps,488106.0,85456074.0,473977507.0,0.01,0.0,0.04 +2808000,mag,0.19900002,-0.08000001,0.43100002 +2808000,imu,-0.30787238,0.14218345,-9.969908,-0.00033900345,-0.0039896886,0.001545757 +2808000,airspeed,3.6972535,3.6109524 +2816000,imu,-0.18713532,0.24549451,-9.894429,0.004800013,-0.005921271,-0.00023277896 +2816000,airspeed,2.7725942,2.7078598 +2816000,mag,0.19900002,-0.08000001,0.43100002 +2816000,baro,487.7413 +2819999,airspeed,4.0106063,3.917006 +2819999,mag,0.19900002,-0.08000001,0.43100002 +2819999,baro,487.57697 +2819999,imu,-0.18454045,0.1813495,-9.889025,0.0044089374,-0.007449833,-0.003326398 +2824000,baro,487.57227 +2824000,imu,-0.22737932,0.1661645,-9.925949,-0.0010344975,-0.00945388,-0.0015003317 +2824000,airspeed,3.0534902,2.982228 +2824000,mag,0.19900002,-0.08000001,0.43100002 +2832000,baro,487.5441 +2832000,imu,-0.22977641,0.16909717,-9.917079,0.0023304739,-0.0065185893,0.0046088193 +2832000,airspeed,3.2382424,3.1626737 +2832000,mag,0.19900002,-0.08000001,0.43100002 +2835999,mag,0.19900002,-0.08000001,0.43100002 +2835999,airspeed,-2.7744517,-2.7097085 +2835999,baro,487.53003 +2835999,imu,-0.22609916,0.17898321,-9.937776,-0.0029599154,-0.005191788,-0.0007933201 +2840000,imu,-0.2462752,0.18697673,-9.913412,-0.002450539,-0.007948655,-0.0061839186 +2840000,mag,0.19900002,-0.08000001,0.43100002 +2840000,baro,487.58167 +2840000,airspeed,-5.2726107,-5.1495557 +2843999,mag,0.19900002,-0.08000001,0.43100002 +2843999,airspeed,-4.110569,-4.0146093 +2843999,imu,-0.23152784,0.193478,-9.884905,-0.006305874,-0.009700517,-0.005203435 +2843999,baro,487.68967 +2851999,imu,-0.1331156,0.25511286,-9.979435,0.0077923806,-0.0036938433,-3.409759e-05 +2851999,mag,0.201,-0.07800001,0.42700002 +2851999,baro,487.68967 +2851999,airspeed,-3.7359467,-3.648732 +2856000,imu,-0.21612313,0.22037387,-9.922584,0.0012909814,-0.0027487294,0.0011950191 +2856000,mag,0.201,-0.07800001,0.42700002 +2856000,airspeed,-3.5281508,-3.4457977 +2856000,baro,487.638 +2859999,imu,-0.23350354,0.14168264,-9.955296,-0.0029751363,-0.00620958,-0.0019389266 +2859999,mag,0.201,-0.07800001,0.42700002 +2859999,baro,487.5629 +2859999,airspeed,3.6471136,3.5619998 +2864000,airspeed,-1.4697222,-1.4354231 +2864000,baro,487.5582 +2864000,mag,0.201,-0.07800001,0.42700002 +2864000,imu,-0.22680703,0.13976905,-9.931335,-0.0014771046,-0.0021880688,-0.0024155295 +2867999,imu,-0.21040812,0.18030941,-9.91354,-0.007399975,-0.0019072912,-0.0019796896 +2867999,airspeed,-2.605022,-2.5442078 +2867999,mag,0.201,-0.07800001,0.42700002 +2867999,baro,487.69434 +2872000,baro,487.68027 +2872000,imu,-0.12620135,0.2563652,-9.916067,-0.01104696,-0.006362423,-0.0030315095 +2872000,airspeed,3.3038046,3.2266796 +2872000,mag,0.201,-0.07800001,0.42700002 +2880000,baro,487.71313 +2880000,mag,0.201,-0.07800001,0.42700002 +2880000,imu,-0.16405036,0.18724751,-9.9701605,-0.0049652746,-0.004945629,-0.0036288665 +2880000,airspeed,2.219869,2.1680436 +2884000,imu,-0.22041363,0.15929672,-9.964942,-0.006150075,-0.0005644232,-0.0030499406 +2884000,mag,0.201,-0.07800001,0.42700002 +2884000,airspeed,2.8728814,2.805821 +2884000,baro,487.6521 +2892000,imu,-0.18982668,0.21883999,-9.916252,-0.005174174,-0.006649948,-0.00019328893 +2892000,airspeed,-2.5727994,-2.5127313 +2892000,mag,0.201,-0.07800001,0.42700002 +2892000,baro,487.7319 +2896000,imu,-0.17783147,0.25234127,-10.003499,-0.0024640786,-0.0047006677,0.00074580766 +2896000,airspeed,-2.346973,-2.2922058 +2896000,mag,0.201,-0.07800001,0.42700002 +2896000,baro,487.52533 +2900000,baro,487.52533 +2900000,imu,-0.23599298,0.20601967,-9.95008,-0.0008000888,-0.0075239944,0.0036529754 +2900000,airspeed,2.0475652,1.999785 +2900000,mag,0.19900002,-0.08000001,0.42600003 +2904000,airspeed,4.8003783,4.688345 +2904000,imu,-0.25384083,0.15236008,-9.845749,-0.004303175,-0.009468352,0.004906521 +2904000,mag,0.19900002,-0.08000001,0.42600003 +2904000,baro,487.58167 +2908000,imu,-0.22900818,0.16641009,-9.826718,0.00067880034,-0.01045696,0.0022347744 +2908000,baro,487.7225 +2908000,mag,0.19900002,-0.08000001,0.42600003 +2908000,airspeed,2.316702,2.2626143 +2912000,mag,0.19900002,-0.08000001,0.42600003 +2912000,baro,487.5488 +2912000,imu,-0.20444162,0.16836603,-9.882797,-0.0026381856,-0.009627109,0.0047776927 +2912000,airspeed,3.5081453,3.426277 +2916000,airspeed,-3.1295927,-3.056594 +2916000,imu,-0.19274485,0.18737839,-9.994081,-0.005300379,-0.010109817,0.0024490156 +2916000,baro,487.3563 +2916000,mag,0.19900002,-0.08000001,0.42600003 +2920000,mag,0.19900002,-0.08000001,0.42600003 +2920000,baro,487.6474 +2920000,airspeed,1.2322742,1.2035099 +2920000,imu,-0.19678286,0.21369617,-9.976094,0.004413493,-0.009388483,9.54363e-05 +2924000,airspeed,0.71097976,0.6943919 +2924000,imu,-0.2128523,0.16032572,-9.934794,0.0052347598,-0.005494281,0.0026966587 +2924000,baro,487.4549 +2924000,mag,0.19900002,-0.08000001,0.42600003 +2932000,baro,487.70844 +2932000,imu,-0.18680769,0.19261384,-9.980414,-0.006190844,-0.0036280605,0.00022256869 +2932000,mag,0.19900002,-0.08000001,0.42600003 +2932000,airspeed,1.9289526,1.8839198 +2936000,baro,487.70844 +2936000,airspeed,-3.6303053,-3.5455534 +2936000,mag,0.19900002,-0.08000001,0.42600003 +2936000,imu,-0.21052699,0.26110718,-9.89013,-0.0039890367,-0.008631953,-0.0049331863 +2940000,imu,-0.24582306,0.22986569,-9.867755,-0.0055791307,-0.010956023,0.00077106577 +2940000,baro,487.68967 +2940000,mag,0.19900002,-0.08000001,0.42600003 +2940000,airspeed,3.2624152,3.1862547 +2944000,baro,487.61453 +2944000,airspeed,-3.140792,-3.0674841 +2944000,imu,-0.24667422,0.2430094,-9.915533,-0.0071909428,-0.006196373,0.0029168762 +2944000,mag,0.19900002,-0.08000001,0.42600003 +2948000,mag,0.19900002,-0.08000001,0.42600003 +2948000,baro,487.7319 +2948000,imu,-0.266814,0.19265947,-9.981811,-0.0032937515,-0.0039763832,-0.0006374039 +2948000,airspeed,-1.7517468,-1.7108482 +2952000,mag,0.19800001,-0.07900001,0.43100002 +2952000,airspeed,2.6221385,2.5609188 +2952000,baro,487.7319 +2952000,imu,-0.24901794,0.12773234,-10.002688,0.0038271523,-0.0006526483,-0.0044724257 +2960000,imu,-0.26118606,0.21596654,-9.91286,-0.00036231475,-0.0067440975,-0.00252967 +2960000,mag,0.19800001,-0.07900001,0.43100002 +2960000,baro,487.81174 +2960000,airspeed,-2.33567,-2.2811277 +2964000,baro,487.4502 +2964000,airspeed,-2.948717,-2.8799205 +2964000,mag,0.19800001,-0.07900001,0.43100002 +2964000,imu,-0.2623628,0.22590761,-9.875597,0.0022921816,-0.005303453,-0.0018810678 +2968000,baro,487.78354 +2968000,airspeed,3.8052526,3.7163987 +2968000,mag,0.19800001,-0.07900001,0.43100002 +2968000,imu,-0.27869606,0.19685806,-9.937514,-0.0033940065,-0.0061215195,-0.002165262 +2976000,airspeed,4.2547417,4.1554637 +2976000,mag,0.19800001,-0.07900001,0.43100002 +2976000,imu,-0.21081609,0.2786066,-9.95029,-0.0010080064,-0.0057500037,0.0038488861 +2976000,baro,487.49716 +2980000,airspeed,4.5545783,4.448252 +2980000,baro,487.68967 +2980000,mag,0.19800001,-0.07900001,0.43100002 +2980000,imu,-0.27040488,0.24055275,-9.997164,-0.0005433356,-0.008023412,0.004090611 +2984000,imu,-0.24167936,0.16732569,-9.891533,6.757795e-06,-0.0017044015,-0.0014386362 +2984000,baro,487.638 +2984000,airspeed,-1.0324358,-1.008337 +2984000,mag,0.19800001,-0.07900001,0.43100002 +2992000,airspeed,2.4329538,2.3761609 +2992000,baro,487.66617 +2992000,mag,0.19800001,-0.07900001,0.43100002 +2992000,imu,-0.22196676,0.15245734,-9.915235,0.00057705434,-0.0070584095,0.0030618804 +2996000,mag,0.19800001,-0.07900001,0.43100002 +2996000,baro,487.66617 +2996000,airspeed,-3.6134334,-3.5290835 +2996000,imu,-0.20358336,0.11528367,-9.940262,-0.003552999,-0.0035487239,-0.0025527799 +3004000,airspeed,-3.3344233,-3.2565808 +3004000,imu,-0.22887765,0.11695154,-9.927852,0.0027704604,-0.0040288484,0.0012980934 +3004000,baro,487.69434 +3004000,mag,0.202,-0.08200001,0.42700002 +3008000,imu,-0.24721454,0.15857355,-9.956958,-0.00047375378,-0.00784649,0.002507253 +3008000,baro,487.59576 +3008000,gps,488111.0,85456074.0,473977508.0,0.0,0.0,-0.02 +3008000,mag,0.202,-0.08200001,0.42700002 +3008000,airspeed,4.0205836,3.9267457 +3012000,airspeed,3.7474945,3.6600301 +3012000,imu,-0.23385967,0.20242466,-9.945057,-0.0027043258,-0.0092191035,0.0026277227 +3016000,imu,-0.20693918,0.24006954,-9.986013,-0.0061096996,-0.007228481,0.0036893075 +3016000,baro,487.53003 +3016000,mag,0.202,-0.08200001,0.42700002 +3016000,airspeed,2.0425425,1.9948785 +3020000,baro,487.60983 +3020000,mag,0.202,-0.08200001,0.42700002 +3020000,airspeed,-3.531923,-3.4494877 +3020000,imu,-0.24486715,0.25863966,-9.955788,-0.0049662795,-0.010983165,0.005742681 +3028000,imu,-0.22139613,0.15472402,-9.9473915,-0.0014172142,-0.00858624,0.0041622114 +3028000,baro,487.57227 +3028000,mag,0.202,-0.08200001,0.42700002 +3028000,airspeed,-2.5087044,-2.4501567 +3032000,airspeed,-1.3724425,-1.340408 +3032000,mag,0.202,-0.08200001,0.42700002 +3032000,imu,-0.198878,0.08811666,-9.955681,-0.0036528555,-0.007716689,0.009885513 +3032000,baro,487.62863 +3040000,baro,487.68967 +3040000,airspeed,3.8359706,3.7464213 +3040000,mag,0.202,-0.08200001,0.42700002 +3040000,imu,-0.21814287,0.18662097,-9.875864,-0.001075509,-0.0042514824,0.003263987 +3044000,baro,487.68967 +3044000,airspeed,-1.6712134,-1.6321995 +3044000,mag,0.202,-0.08200001,0.42700002 +3044000,imu,-0.17104238,0.18328246,-9.8947735,-0.0069832043,-0.008212279,0.0003522982 +3048000,mag,0.202,-0.08200001,0.42700002 +3048000,airspeed,-2.4941375,-2.4359188 +3048000,imu,-0.21350439,0.13166918,-9.949579,-0.0017309075,-0.009253129,0.0057025254 +3048000,baro,487.6474 +3052000,mag,0.202,-0.08200001,0.42700002 +3052000,airspeed,2.3261936,2.2718828 +3052000,imu,-0.24801001,0.14567736,-9.8769455,-0.00076173205,-0.010286032,0.008627219 +3052000,baro,487.7366 +3056000,baro,487.67087 +3056000,mag,0.201,-0.08200001,0.42800003 +3056000,imu,-0.18240826,0.25333005,-9.848712,-0.0010563738,-0.0105752675,0.0014226898 +3056000,airspeed,3.9572096,3.8648343 +3060000,baro,487.58167 +3060000,mag,0.201,-0.08200001,0.42800003 +3064000,imu,-0.11810565,0.2712905,-10.014796,-0.0031209108,-0.0050623454,0.0021113213 +3064000,airspeed,3.0367198,2.9658496 +3068000,airspeed,-2.9131563,-2.8451288 +3068000,baro,487.80704 +3068000,imu,-0.13354483,0.2874218,-10.031485,-0.00195466,-0.0041396883,0.0032493416 +3068000,mag,0.201,-0.08200001,0.42800003 +3072000,airspeed,-0.73258734,-0.7154886 +3072000,baro,487.60983 +3072000,imu,-0.24053031,0.16077894,-9.956593,-0.0011167087,-0.005592702,0.012625848 +3072000,mag,0.201,-0.08200001,0.42800003 +3076000,baro,487.48776 +3076000,mag,0.201,-0.08200001,0.42800003 +3076000,imu,-0.26446244,0.14283264,-9.938405,0.0002016301,-0.014310121,0.007743122 +3076000,airspeed,0.42128256,0.41145274 +3080000,airspeed,1.3282237,1.2972181 +3080000,baro,487.67087 +3080000,imu,-0.21384121,0.16361134,-9.946905,-0.0031573218,-0.0095745195,-0.002982496 +3080000,mag,0.201,-0.08200001,0.42800003 +3084000,mag,0.201,-0.08200001,0.42800003 +3084000,airspeed,-2.49044,-2.432304 +3084000,imu,-0.16296318,0.15546337,-9.976579,-0.0024240543,-0.0011429144,-0.00072739477 +3084000,baro,487.67087 +3092000,mag,0.201,-0.08200001,0.42800003 +3092000,airspeed,-2.4567108,-2.3993876 +3092000,imu,-0.23213175,0.16810842,-9.915446,-0.0018299274,-0.006564133,0.0026079046 +3092000,baro,487.49246 +3096000,airspeed,-0.5853463,-0.57168823 +3096000,baro,487.49246 +3096000,imu,-0.23344715,0.11878677,-9.860735,-0.0010489814,-0.0075010504,-0.0026448907 +3096000,mag,0.201,-0.08200001,0.42800003 +3100000,imu,-0.21524249,0.09634489,-9.91084,-0.0015119499,-0.008337469,0.0005827773 +3100000,mag,0.201,-0.08200001,0.42800003 +3100000,baro,487.5535 +3100000,airspeed,2.6476483,2.5858607 +3104000,baro,487.53003 +3104000,imu,-0.16969055,0.13353074,-9.8988285,-0.002075657,-0.007737567,0.001570214 +3104000,mag,0.201,-0.08200001,0.42800003 +3104000,airspeed,-0.95949095,-0.9371008 +3112000,mag,0.19700001,-0.08500001,0.432 +3112000,imu,-0.3010373,0.19336483,-9.995131,-0.0012178373,-0.0049319905,0.010225281 +3112000,airspeed,-1.2678237,-1.2382343 +3112000,baro,487.58636 +3116000,imu,-0.2693497,0.18689528,-9.952806,0.0037374257,-0.0060063484,0.0072723455 +3116000,airspeed,0.21647803,0.21142483 +3120000,imu,-0.2980831,0.23646693,-9.965008,-0.0011230496,-0.009141453,0.008110914 +3120000,airspeed,0.68743634,0.67139417 +3120000,mag,0.19700001,-0.08500001,0.432 +3120000,baro,487.5441 +3128000,airspeed,-3.0010989,-2.9310575 +3128000,imu,-0.23369412,0.12837136,-10.020072,0.0014415804,-0.012461528,-0.0022781305 +3128000,baro,487.58636 +3128000,mag,0.19700001,-0.08500001,0.432 +3132000,airspeed,0.96956706,0.94693106 +3132000,baro,487.71783 +3132000,imu,-0.19224387,0.23241808,-9.901217,-0.0044140033,-0.010640376,-0.005371782 +3132000,mag,0.19700001,-0.08500001,0.432 +3136000,imu,-0.22858214,0.19140892,-9.896988,-0.00049031567,-0.011529231,-0.0026227213 +3136000,mag,0.19700001,-0.08500001,0.432 +3136000,baro,487.57697 +3136000,airspeed,0.5571811,0.5441775 +3140000,imu,-0.2721413,0.17742789,-9.881161,-0.0031005046,-0.006776599,-0.0020804852 +3140000,mag,0.19700001,-0.08500001,0.432 +3140000,airspeed,-3.2273777,-3.1520562 +3140000,baro,487.57697 +3144000,mag,0.19700001,-0.08500001,0.432 +3144000,airspeed,-1.1384034,-1.111825 +3144000,baro,487.7319 +3144000,imu,-0.22537537,0.16164066,-9.805903,-0.0067943376,-0.007388717,0.007812708 +3152000,mag,0.19700001,-0.08500001,0.432 +3152000,airspeed,-2.4679277,-2.4103224 +3152000,baro,487.6333 +3152000,imu,-0.23909603,0.27624267,-9.89559,-0.005163162,-0.003182278,-0.0016598501 +3156000,airspeed,0.8034936,0.7847388 +3160000,mag,0.19800001,-0.07800001,0.42900002 +3160000,airspeed,1.7655423,1.7243389 +3160000,baro,487.5676 +3160000,imu,-0.25312552,0.15901388,-10.018702,-0.004326057,-0.006783219,0.0054984977 +3168000,airspeed,-1.5311947,-1.4954364 +3168000,imu,-0.19813402,0.13420513,-9.916683,-0.0041550323,-0.0020588886,-0.0041277246 +3168000,mag,0.19800001,-0.07800001,0.42900002 +3168000,baro,487.8352 +3172000,mag,0.19800001,-0.07800001,0.42900002 +3172000,airspeed,-4.483886,-4.37921 +3172000,imu,-0.18622379,0.17169508,-9.997592,0.0018931207,-0.0070730997,-0.011891463 +3172000,baro,487.68967 +3176000,mag,0.19800001,-0.07800001,0.42900002 +3176000,airspeed,-3.3989356,-3.3195949 +3176000,imu,-0.18154179,0.1959505,-9.94624,0.0005514666,-0.0046579693,-0.008911239 +3176000,baro,487.6568 +3180000,baro,487.6568 +3180000,mag,0.19800001,-0.07800001,0.42900002 +3180000,airspeed,-1.582051,-1.5451214 +3180000,imu,-0.17803602,0.19375996,-9.828508,-0.0028393995,-0.0046184896,0.0014850361 +3188000,mag,0.19800001,-0.07800001,0.42900002 +3188000,imu,-0.20341234,0.19248196,-9.978255,-0.0029940875,-0.004442355,0.0023537942 +3188000,airspeed,3.4315233,3.351423 +3188000,baro,487.6521 +3196000,imu,-0.2758628,0.10431302,-9.867651,-0.0011885134,-0.002129744,0.0008645506 +3196000,mag,0.19800001,-0.07800001,0.42900002 +3196000,baro,487.79764 +3196000,airspeed,2.1804798,2.1295636 +3200000,mag,0.19800001,-0.07800001,0.42900002 +3200000,baro,487.5629 +3200000,airspeed,2.940838,2.872207 +3200000,imu,-0.28640673,0.14256522,-9.877161,-0.005506876,-0.004985663,0.00085747085 +3208000,imu,-0.23483388,0.19738372,-9.889384,-0.0019363227,-0.010129134,0.006036472 +3208000,baro,487.59576 +3208000,gps,488105.0,85456074.0,473977508.0,0.0,0.0,0.03 +3208000,airspeed,3.1314497,3.058364 +3208000,mag,0.19800001,-0.07800001,0.42900002 +3212000,airspeed,-2.7954793,-2.7302125 +3212000,imu,-0.15885565,0.19974503,-9.897794,0.0008603371,-0.009605075,0.0020027775 +3216000,imu,-0.19948809,0.16942005,-9.932835,0.00053501513,-0.000486095,0.0057476927 +3216000,airspeed,-2.0939767,-2.0451057 +3216000,baro,487.58636 +3216000,mag,0.19800001,-0.08100001,0.42900002 +3220000,mag,0.19800001,-0.08100001,0.42900002 +3220000,imu,-0.24912363,0.1294229,-9.909759,-0.0031969014,3.765032e-05,0.008693063 +3220000,airspeed,2.1099467,2.060692 +3220000,baro,487.67557 +3224000,baro,487.60513 +3224000,imu,-0.2969272,0.15709475,-9.899666,-0.0043112114,-0.006657137,0.00490095 +3224000,mag,0.19800001,-0.08100001,0.42900002 +3224000,airspeed,1.4102268,1.3773127 +3228000,baro,487.67557 +3228000,airspeed,-1.9084895,-1.8639375 +3228000,imu,-0.2415043,0.18761463,-9.925641,-0.00095101475,-0.005152823,0.004588732 +3228000,mag,0.19800001,-0.08100001,0.42900002 +3232000,imu,-0.20038892,0.21191962,-9.999902,-0.0018464926,0.001550303,0.0042834273 +3232000,airspeed,-1.9139537,-1.8692744 +3232000,baro,487.67557 +3232000,mag,0.19800001,-0.08100001,0.42900002 +3236000,baro,487.60983 +3236000,imu,-0.24095137,0.22216786,-10.011401,-0.0004467753,-0.0002772147,0.0012000026 +3236000,mag,0.19800001,-0.08100001,0.42900002 +3236000,airspeed,2.2499483,2.1974342 +3240000,baro,487.5441 +3240000,imu,-0.30898416,0.25833187,-9.913617,0.0008507383,0.0013562166,0.00054642255 +3240000,mag,0.19800001,-0.08100001,0.42900002 +3240000,airspeed,-3.0138977,-2.9435647 +3248000,airspeed,4.175494,4.0780106 +3248000,mag,0.19800001,-0.08100001,0.42900002 +3248000,baro,487.7225 +3248000,imu,-0.21251512,0.2335605,-9.92489,-0.00023407752,-0.0025008172,0.0048778346 +3252000,imu,-0.19457746,0.21230589,-9.869311,-0.0015665408,-0.0085219825,-0.00888974 +3252000,mag,0.19800001,-0.08100001,0.42900002 +3252000,airspeed,-1.7843502,-1.7427012 +3252000,baro,487.62863 +3256000,mag,0.19800001,-0.08100001,0.42900002 +3256000,imu,-0.25846392,0.22568746,-9.85225,-0.0035672009,-0.0066496627,-0.010083595 +3256000,airspeed,-4.125708,-4.0294027 +3256000,baro,487.6521 +3260000,mag,0.19800001,-0.08100001,0.42900002 +3260000,baro,487.62393 +3260000,imu,-0.28786722,0.23130961,-9.957541,0.00093099196,-0.009654609,-0.00012509714 +3260000,airspeed,-2.3221326,-2.267932 +3264000,baro,487.52063 +3264000,mag,0.201,-0.08100001,0.43 +3268000,airspeed,-1.1613005,-1.1341894 +3268000,imu,-0.15865047,0.24332644,-9.895135,0.002110282,-0.0055681462,-0.0045194235 +3268000,baro,487.70374 +3272000,baro,487.71783 +3272000,mag,0.201,-0.08100001,0.43 +3272000,airspeed,3.017167,2.9467266 +3272000,imu,-0.123503484,0.23689401,-9.93003,-0.0064148493,-0.003115478,-0.0043420047 +3276000,airspeed,1.8685396,1.8249155 +3276000,baro,487.71783 +3276000,imu,-0.16418752,0.16177069,-9.875078,-0.0035181835,-0.00014299122,0.00045629308 +3276000,mag,0.201,-0.08100001,0.43 +3284000,baro,487.5676 +3284000,airspeed,-3.0734386,-3.0017116 +3284000,imu,-0.22469078,0.16342652,-10.017036,0.0048637637,-0.00442785,-0.003290043 +3284000,mag,0.201,-0.08100001,0.43 +3288000,baro,487.6521 +3288000,imu,-0.26188776,0.21297385,-9.984977,0.008462216,-0.0045615314,0.0010220471 +3288000,mag,0.201,-0.08100001,0.43 +3288000,airspeed,2.2658548,2.2129636 +3292000,imu,-0.3524742,0.2119255,-9.919432,0.00979422,-0.009538027,0.0024641224 +3292000,airspeed,2.7449422,2.680894 +3292000,mag,0.201,-0.08100001,0.43 +3292000,baro,487.48776 +3296000,baro,487.6474 +3296000,mag,0.201,-0.08100001,0.43 +3300000,mag,0.201,-0.08100001,0.43 +3300000,baro,487.638 +3300000,airspeed,0.914831,0.89347726 +3300000,imu,-0.2962887,0.22711548,-9.970232,0.0005467627,-0.01065345,-0.0045378515 +3304000,baro,487.58636 +3304000,mag,0.201,-0.08100001,0.43 +3308000,airspeed,-0.663165,-0.6476894 +3308000,imu,-0.22894478,0.25848627,-9.987326,0.0036049876,-0.009213622,-0.008445533 +3312000,airspeed,-3.3343446,-3.2565074 +3312000,mag,0.201,-0.08100001,0.43 +3312000,baro,487.67557 +3312000,imu,-0.215437,0.23836514,-10.0179205,-0.0025712973,-0.0025538313,0.00050806993 +3316000,airspeed,3.338025,3.2600908 +3316000,baro,487.7366 +3316000,mag,0.2,-0.08300001,0.425 +3316000,imu,-0.2598645,0.16480733,-10.012373,8.866652e-05,0.00044104413,0.0026330375 +3320000,airspeed,4.3501544,4.2486563 +3320000,imu,-0.20555934,0.12478485,-9.926193,-0.0041278517,-0.004589453,-0.003826202 +3320000,baro,487.469 +3320000,mag,0.2,-0.08300001,0.425 +3324000,airspeed,3.736615,3.6494193 +3324000,baro,487.53003 +3324000,imu,-0.16965711,0.2186916,-9.877778,-0.0008647304,-0.007366237,-0.0016573186 +3324000,mag,0.2,-0.08300001,0.425 +3332000,baro,487.6333 +3332000,mag,0.2,-0.08300001,0.425 +3332000,airspeed,-2.904526,-2.83673 +3332000,imu,-0.20343684,0.22999826,-9.90412,0.0058071893,0.0011539801,0.0017800016 +3336000,airspeed,-2.0782182,-2.0297172 +3336000,mag,0.2,-0.08300001,0.425 +3336000,baro,487.57227 +3336000,imu,-0.207525,0.23664917,-9.919807,0.0075976048,-0.0019151132,0.00018276354 +3340000,airspeed,-4.506875,-4.4016886 +3340000,mag,0.2,-0.08300001,0.425 +3340000,baro,487.59106 +3340000,imu,-0.16510719,0.17723854,-9.906273,-3.2134016e-05,-0.008381015,-0.005933983 +3344000,baro,487.71783 +3344000,mag,0.2,-0.08300001,0.425 +3348000,airspeed,2.887736,2.8203287 +3348000,imu,-0.22541596,0.194811,-9.943044,0.00033068575,-0.0049620355,0.0052186023 +3352000,baro,487.5394 +3352000,mag,0.2,-0.08300001,0.425 +3352000,airspeed,-0.9850556,-0.96206844 +3352000,imu,-0.17561546,0.17006138,-10.01999,-1.14335535e-05,-0.0074887555,0.005164373 +3356000,airspeed,-2.0165129,-1.9694489 +3356000,mag,0.2,-0.08300001,0.425 +3356000,baro,487.59576 +3356000,imu,-0.2525881,0.1229641,-10.020819,0.00075675023,-0.00636809,-0.004416175 +3360000,airspeed,2.365508,2.3102987 +3360000,baro,487.59576 +3360000,mag,0.2,-0.08300001,0.425 +3360000,imu,-0.26976344,0.15207823,-9.976329,0.0035739942,-0.0037610477,-0.0057426416 +3364000,airspeed,2.4878073,2.4297166 +3364000,imu,-0.21806632,0.19534911,-9.927127,0.007305199,-0.0057631927,-0.00091053377 +3364000,mag,0.2,-0.08300001,0.425 +3364000,baro,487.77887 +3368000,airspeed,2.0648382,2.016624 +3368000,baro,487.77887 +3368000,imu,-0.1975963,0.14877394,-9.965376,0.001284042,-0.006185,0.0015369967 +3368000,mag,0.202,-0.08300001,0.42700002 +3372000,baro,487.69904 +3372000,imu,-0.1790016,0.19244821,-9.955521,-0.002989152,-0.004096347,0.0032098582 +3372000,mag,0.202,-0.08300001,0.42700002 +3372000,airspeed,3.8021848,3.7134216 +3376000,mag,0.202,-0.08300001,0.42700002 +3376000,airspeed,-2.3112912,-2.257345 +3376000,baro,487.61453 +3376000,imu,-0.2342201,0.22568023,-9.922154,-0.0051613334,-0.007901084,0.00026561972 +3380000,imu,-0.30744603,0.21634926,-9.963429,-0.004488141,-0.0073712054,0.0012769948 +3380000,airspeed,2.4259038,2.369271 +3380000,baro,487.69434 +3380000,mag,0.202,-0.08300001,0.42700002 +3384000,imu,-0.21185634,0.24182166,-9.9524555,-0.0061673177,-0.0066968165,0.0020507725 +3384000,mag,0.202,-0.08300001,0.42700002 +3384000,airspeed,-4.589347,-4.482196 +3384000,baro,487.7413 +3388000,baro,487.53003 +3388000,mag,0.202,-0.08300001,0.42700002 +3392000,baro,487.53003 +3392000,mag,0.202,-0.08300001,0.42700002 +3392000,airspeed,0.69162655,0.67548704 +3392000,imu,-0.22559957,0.12904884,-9.939801,0.0042288885,-0.003938042,0.0035124538 +3396000,imu,-0.1897995,0.20019077,-9.910666,-0.0032098754,-0.0071783243,-0.001022824 +3396000,baro,487.50656 +3396000,mag,0.202,-0.08300001,0.42700002 +3396000,airspeed,3.41296,3.3333213 +3400000,airspeed,-1.9941146,-1.9475687 +3400000,baro,487.638 +3400000,mag,0.202,-0.08300001,0.42700002 +3400000,imu,-0.19331722,0.25598446,-9.917963,0.0016001136,-0.010338135,-0.001491756 +3404000,imu,-0.1299916,0.20925717,-9.969681,0.00908104,-0.00660895,0.00022812326 +3404000,airspeed,-2.7650466,-2.7005057 +3404000,baro,487.638 +3404000,mag,0.202,-0.08300001,0.42700002 +3408000,baro,487.5629 +3408000,mag,0.202,-0.08300001,0.42700002 +3408000,gps,488101.0,85456074.0,473977508.0,-0.01,0.0,-0.04 +3412000,imu,-0.22270904,0.20176832,-9.966701,-0.0015190498,-0.006131003,-5.5084525e-05 +3412000,airspeed,2.218934,2.167138 +3416000,airspeed,-2.4584987,-2.4011166 +3416000,baro,487.61453 +3416000,imu,-0.20721787,0.2608622,-9.915487,0.004716997,-0.0070940736,0.0016705322 +3416000,mag,0.202,-0.08300001,0.42700002 +3420000,baro,487.50186 +3420000,imu,-0.17059937,0.30350196,-9.8894205,0.0035125571,-0.009263996,-0.00034310648 +3420000,mag,0.202,-0.08300001,0.42600003 +3420000,airspeed,3.60445,3.5203447 +3424000,mag,0.202,-0.08300001,0.42600003 +3424000,baro,487.57227 +3424000,imu,-0.17229256,0.23745927,-9.911806,-0.004201127,-0.004543,-0.0070746285 +3424000,airspeed,3.284309,3.2076602 +3428000,baro,487.57227 +3428000,mag,0.202,-0.08300001,0.42600003 +3432000,imu,-0.22523074,0.19693202,-9.881512,-0.008453989,0.0030671877,0.0005649277 +3432000,airspeed,-1.9699491,-1.9239755 +3436000,imu,-0.19957809,0.15651861,-9.872545,-0.0074398513,0.0015263056,-0.004076847 +3436000,mag,0.202,-0.08300001,0.42600003 +3436000,baro,487.5676 +3436000,airspeed,-1.2702457,-1.2406011 +3440000,mag,0.202,-0.08300001,0.42600003 +3440000,imu,-0.19694616,0.17192762,-9.882603,-0.00087279116,-0.0041234368,-0.0049191397 +3440000,airspeed,-3.371691,-3.2929778 +3440000,baro,487.69904 +3444000,mag,0.202,-0.08300001,0.42600003 +3444000,imu,-0.18277204,0.24554273,-9.943632,0.0012613441,-0.0069340644,-0.0065240236 +3444000,airspeed,-3.257422,-3.1813908 +3444000,baro,487.62393 +3448000,mag,0.202,-0.08300001,0.42600003 +3448000,airspeed,1.0212421,0.9974112 +3448000,imu,-0.2204619,0.22028475,-9.974785,-0.0013809457,-0.0033961518,-0.00074937404 +3448000,baro,487.52533 +3456000,mag,0.202,-0.08300001,0.42600003 +3456000,imu,-0.21065493,0.176463,-9.9275875,0.003684934,-0.011270047,0.006876399 +3456000,baro,487.53003 +3456000,airspeed,2.4954243,2.4371927 +3460000,imu,-0.20660621,0.13320805,-9.940941,0.00039779907,-0.0043823915,0.004415288 +3460000,airspeed,1.5617113,1.5252553 +3460000,mag,0.202,-0.08300001,0.42600003 +3460000,baro,487.67087 +3464000,imu,-0.263947,0.14054812,-9.921731,-0.003366251,-0.0020743655,0.006370284 +3464000,airspeed,0.57173985,0.55839336 +3464000,mag,0.202,-0.08300001,0.42600003 +3464000,baro,487.67087 +3468000,imu,-0.16211069,0.15517445,-9.943225,-0.0046270965,-0.009390724,0.001576018 +3468000,airspeed,-1.8610344,-1.817602 +3472000,mag,0.19900002,-0.08300001,0.42900002 +3472000,imu,-0.11973201,0.22492282,-9.974269,-0.0013720941,-0.006837023,-0.005124251 +3472000,airspeed,-2.736117,-2.6722543 +3472000,baro,487.61453 +3476000,airspeed,-2.9821546,-2.9125414 +3476000,imu,-0.21381615,0.2049422,-9.968841,-0.0042634355,-0.0032910232,-0.0016580521 +3476000,baro,487.66617 +3476000,mag,0.19900002,-0.08300001,0.42900002 +3484000,airspeed,-2.0396917,-1.9920765 +3484000,imu,-0.19457242,0.27307838,-9.906192,0.0011327994,-0.0037373656,0.003410833 +3484000,mag,0.19900002,-0.08300001,0.42900002 +3484000,baro,487.68027 +3488000,imu,-0.26371428,0.22842993,-9.883182,3.2568183e-05,-0.00198533,0.0025063255 +3488000,airspeed,-2.8082483,-2.742707 +3488000,mag,0.19900002,-0.08300001,0.42900002 +3488000,baro,487.59106 +3492000,airspeed,3.6010737,3.5170226 +3492000,imu,-0.22813727,0.20939612,-9.885403,0.0011802852,0.001213989,-0.0027142747 +3496000,imu,-0.19560179,0.20803484,-9.9651165,-9.63601e-05,-0.0034508083,-0.01211685 +3496000,airspeed,-3.3234658,-3.245881 +3496000,mag,0.19900002,-0.08300001,0.42900002 +3496000,baro,487.68497 +3504000,imu,-0.20390435,0.122864276,-9.892736,-0.0030454097,-0.007890621,-0.0014665044 +3504000,airspeed,0.9289778,0.907293 +3504000,mag,0.19900002,-0.08300001,0.42900002 +3504000,baro,487.6521 +3508000,imu,-0.2073626,0.1756576,-9.942593,-0.0018984869,-0.0018987885,0.0065219165 +3508000,airspeed,-2.2395725,-2.1872997 +3508000,mag,0.19900002,-0.08300001,0.42900002 +3508000,baro,487.61923 +3512000,imu,-0.25287217,0.20048314,-10.002159,0.0016669319,0.0006531906,0.005116779 +3512000,airspeed,-1.4003136,-1.3676295 +3512000,baro,487.61923 +3512000,mag,0.19900002,-0.08300001,0.42900002 +3516000,imu,-0.21647929,0.20685703,-9.954197,0.004980118,-0.00015960031,-0.0027821832 +3516000,airspeed,-2.2917368,-2.2382329 +3520000,mag,0.19900002,-0.08300001,0.42900002 +3520000,airspeed,5.10359,4.984445 +3520000,baro,487.69904 +3520000,imu,-0.24936351,0.14782634,-9.937872,0.0059455084,-0.006453743,-0.0037990613 +3524000,imu,-0.23160167,0.15245745,-9.988571,0.003949567,-0.0066491948,-0.0034781492 +3524000,airspeed,-2.9158366,-2.8477905 +3524000,mag,0.19900002,-0.08000001,0.42900002 +3524000,baro,487.5535 +3528000,mag,0.19900002,-0.08000001,0.42900002 +3528000,baro,487.4737 +3528000,imu,-0.1386593,0.18838511,-10.02921,0.0007135906,0.0015792468,-0.002222652 +3528000,airspeed,-2.7006295,-2.637618 +3532000,mag,0.19900002,-0.08000001,0.42900002 +3532000,baro,487.52533 +3532000,airspeed,4.075791,3.9806812 +3532000,imu,-0.12091077,0.15675561,-10.070096,-0.0037420024,-0.0004617669,0.0059703114 +3536000,baro,487.52533 +3536000,airspeed,-2.520939,-2.4621122 +3536000,imu,-0.17291549,0.147455,-10.042692,-0.00325084,-0.0028342204,0.0010126409 +3536000,mag,0.19900002,-0.08000001,0.42900002 +3540000,baro,487.6474 +3540000,airspeed,1.4882866,1.4535466 +3540000,imu,-0.19721185,0.13548975,-9.977662,-0.0011428128,-0.00023795382,0.00021860038 +3540000,mag,0.19900002,-0.08000001,0.42900002 +3544000,mag,0.19900002,-0.08000001,0.42900002 +3544000,baro,487.6474 +3544000,airspeed,-0.93976855,-0.9178322 +3548000,imu,-0.22671248,0.23593989,-9.8998165,-0.00015508245,-0.005516595,-0.0034029079 +3552000,airspeed,-1.9773471,-1.9311928 +3552000,baro,487.6333 +3552000,imu,-0.2592804,0.15408877,-10.020437,0.0010546627,-0.005457516,0.0006030884 +3552000,mag,0.19900002,-0.08000001,0.42900002 +3556000,mag,0.19900002,-0.08000001,0.42900002 +3556000,imu,-0.25762403,0.15247096,-10.089694,-0.0064385873,-0.0047412664,-0.005304308 +3556000,airspeed,-2.3825865,-2.3269703 +3556000,baro,487.6568 +3564000,mag,0.19900002,-0.08000001,0.42900002 +3564000,baro,487.5676 +3564000,imu,-0.15673505,0.1770036,-9.975346,0.005993659,-0.0060026958,-0.0032673792 +3564000,airspeed,-1.5186524,-1.4832106 +3568000,airspeed,-1.9352168,-1.8900273 +3568000,imu,-0.1989393,0.17464495,-9.887604,0.0070374385,-0.0063508535,-0.0023834703 +3568000,baro,487.79764 +3568000,mag,0.19900002,-0.08000001,0.42900002 +3572000,airspeed,-3.6431544,-3.558112 +3572000,imu,-0.31231654,0.23050134,-9.866958,-0.00252135,-0.007485878,-0.0020703692 +3576000,mag,0.2,-0.07900001,0.43 +3576000,airspeed,-1.7964818,-1.7545466 +3576000,baro,487.6568 +3576000,imu,-0.2443599,0.2424752,-9.845158,-0.0042984304,-0.009376921,-0.0020987617 +3580000,mag,0.2,-0.07900001,0.43 +3580000,baro,487.53473 +3580000,airspeed,1.8432138,1.8002009 +3580000,imu,-0.18134254,0.19553567,-9.853636,0.0030308207,-0.008891855,-0.0022125836 +3584000,baro,487.71783 +3584000,mag,0.2,-0.07900001,0.43 +3584000,airspeed,-3.8735456,-3.7831125 +3584000,imu,-0.22362293,0.18064797,-9.944143,0.0017882525,-0.0084953355,0.0019387677 +3588000,baro,487.71783 +3588000,mag,0.2,-0.07900001,0.43 +3592000,airspeed,4.0487833,3.9542682 +3592000,imu,-0.28420883,0.147931,-9.896662,-0.0065732305,-0.0047932304,-0.0035098798 +3596000,imu,-0.26372367,0.10985483,-9.857283,0.00080426695,-0.00046516393,0.00058124476 +3596000,mag,0.2,-0.07900001,0.43 +3596000,airspeed,1.7567555,1.7157456 +3596000,baro,487.67557 +3600000,mag,0.2,-0.07900001,0.43 +3600000,baro,487.60043 +3600000,imu,-0.15887633,0.18334606,-9.919023,0.0017045127,-0.002914341,-0.0032089497 +3600000,airspeed,1.4069142,1.3740776 +3600000,landed,1.0 +3608000,baro,487.61453 +3608000,gps,488110.0,85456074.0,473977508.0,0.0,0.0,-0.06 +3608000,mag,0.2,-0.07900001,0.43 +3608000,imu,-0.19064249,0.1741558,-9.984054,-0.0020001614,-0.0024052702,0.00428849 +3608000,airspeed,2.2349107,2.182747 +3616000,mag,0.2,-0.07900001,0.43 +3616000,imu,-0.22639944,0.14392284,-9.947223,-0.006778303,-0.0035243363,-0.004452028 +3616000,baro,487.7319 +3616000,airspeed,-3.453049,-3.3724294 +3620000,mag,0.2,-0.07900001,0.43 +3620000,imu,-0.26115456,0.06440088,-9.966482,-0.0061234166,-0.006708054,0.00075243466 +3620000,baro,487.638 +3620000,airspeed,2.991653,2.9218228 +3624000,mag,0.2,-0.07900001,0.43 +3624000,imu,-0.20862462,0.20762533,-9.969423,-0.0053049503,-0.0087668095,0.002863185 +3624000,baro,487.8305 +3624000,airspeed,-2.7034903,-2.6403558 +3628000,baro,487.5441 +3628000,airspeed,4.046842,3.9524038 +3628000,imu,-0.17825678,0.2856531,-9.999566,-0.0025464422,-0.0031097918,-0.0007888645 +3628000,mag,0.19900002,-0.07800001,0.42700002 +3632000,mag,0.19900002,-0.07800001,0.42700002 +3632000,airspeed,-2.8728094,-2.8057563 +3632000,baro,487.61453 +3632000,imu,-0.20865731,0.23210111,-9.967678,0.005414586,0.001478793,-0.0025418357 +3636000,mag,0.19900002,-0.07800001,0.42700002 +3636000,airspeed,-2.8441286,-2.7777586 +3636000,baro,487.53473 +3636000,imu,-0.23185049,0.22959211,-9.946264,-0.00017766005,-0.0034574969,-0.0045059244 +3640000,mag,0.19900002,-0.07800001,0.42700002 +3640000,baro,487.67087 +3640000,airspeed,-0.85825324,-0.8382184 +3640000,imu,-0.24229716,0.1692687,-10.018632,-0.007508853,-0.010544947,-0.005035195 +3648000,baro,487.61453 +3648000,imu,-0.23672493,0.22436208,-9.913635,-0.0022618847,-0.004295814,-0.0054700277 +3648000,airspeed,-1.4493837,-1.4155546 +3648000,mag,0.19900002,-0.07800001,0.42700002 +3652000,mag,0.19900002,-0.07800001,0.42700002 +3652000,imu,-0.22892144,0.20049554,-9.97231,-0.0037979456,-0.009007431,0.00057646335 +3652000,airspeed,2.568318,2.5083725 +3652000,baro,487.61453 +3656000,imu,-0.2725475,0.24476369,-9.989078,-0.0068033715,-0.0024118393,0.0023882384 +3656000,airspeed,0.2266929,0.2214011 +3656000,mag,0.19900002,-0.07800001,0.42700002 +3656000,baro,487.66617 +3664000,mag,0.19900002,-0.07800001,0.42700002 +3664000,baro,487.51593 +3664000,imu,-0.22247522,0.15837702,-9.884677,-0.00019953778,-0.007944391,0.0012953508 +3664000,airspeed,2.2239497,2.1720548 +3672000,mag,0.19900002,-0.07800001,0.42700002 +3672000,baro,487.638 +3672000,airspeed,0.7394954,0.7222343 +3672000,imu,-0.12770954,0.237678,-9.906528,0.0004001334,-0.012175518,0.0060720714 +3676000,imu,-0.2387125,0.24105233,-9.871455,0.0015177166,-0.009379641,0.003581228 +3676000,mag,0.19900002,-0.07800001,0.42700002 +3676000,airspeed,3.285288,3.2086267 +3676000,baro,487.52063 +3680000,mag,0.2,-0.08300001,0.43100002 +3680000,airspeed,1.1990701,1.1710901 +3680000,baro,487.52063 +3680000,imu,-0.33060393,0.14762083,-9.868457,-0.0016158179,-0.009801563,0.0016267339 +3688000,baro,487.7272 +3688000,mag,0.2,-0.08300001,0.43100002 +3688000,imu,-0.18371692,0.24604684,-9.898402,-0.002654256,-0.0053935726,-0.006519951 +3688000,airspeed,1.7155182,1.675466 +3692000,mag,0.2,-0.08300001,0.43100002 +3692000,imu,-0.2166424,0.22987494,-9.937934,0.00023629841,-0.00669979,-0.001115005 +3692000,airspeed,2.0671606,2.018897 +3692000,baro,487.7413 +3696000,mag,0.2,-0.08300001,0.43100002 +3696000,imu,-0.23208228,0.2947094,-9.931427,-0.003010202,-0.0070523378,-0.0021200525 +3696000,airspeed,-3.4588313,-3.3781102 +3696000,baro,487.5676 +3700000,airspeed,1.0017643,0.9783854 +3700000,imu,-0.19606733,0.31272668,-9.9410095,-0.0034233606,-0.0046026264,-0.006604449 +3700000,baro,487.5676 +3700000,mag,0.2,-0.08300001,0.43100002 +3704000,airspeed,2.8358352,2.7696562 +3704000,baro,487.5535 +3704000,imu,-0.16062656,0.32633787,-9.916739,-0.001955433,-0.0075084926,-0.002566344 +3704000,mag,0.2,-0.08300001,0.43100002 +3708000,baro,487.4737 +3708000,imu,-0.19664456,0.3169682,-9.831934,0.0018834824,-0.011428226,0.0009787675 +3708000,mag,0.2,-0.08300001,0.43100002 +3708000,airspeed,0.62903374,0.6143571 +3716000,mag,0.2,-0.08300001,0.43100002 +3716000,airspeed,2.5358517,2.476649 +3716000,baro,487.71313 +3716000,imu,-0.24788521,0.14352699,-9.94017,0.001134431,-0.0067682415,-0.0028109378 +3720000,mag,0.2,-0.08300001,0.43100002 +3720000,imu,-0.24422535,0.21812235,-9.9581175,0.0004407078,-0.00546324,-0.0028439136 +3720000,airspeed,2.8922415,2.8247106 +3720000,baro,487.76007 +3724000,imu,-0.22063856,0.22629881,-9.935736,-0.006948161,-0.0025099772,-0.004000425 +3724000,airspeed,-0.121934325,-0.11908808 +3724000,baro,487.6474 +3724000,mag,0.2,-0.08300001,0.43100002 +3728000,baro,487.59106 +3728000,mag,0.2,-0.08300001,0.43100002 +3728000,imu,-0.22282203,0.17982565,-9.92328,-0.0054306076,-0.0062670377,0.006716029 +3728000,airspeed,-3.8832207,-3.79259 +3732000,mag,0.2,-0.08000001,0.42700002 +3732000,baro,487.59106 +3732000,airspeed,3.0680358,2.9964306 +3732000,imu,-0.20732065,0.19431242,-9.903376,-0.0022982615,-0.011872294,0.013102081 +3736000,baro,487.66617 +3736000,airspeed,2.6640685,2.6018803 +3736000,mag,0.2,-0.08000001,0.42700002 +3736000,imu,-0.2304742,0.13503349,-9.985667,-0.00687398,-0.01041325,0.0061250445 +3740000,mag,0.2,-0.08000001,0.42700002 +3740000,baro,487.5676 +3740000,airspeed,1.1105096,1.0845928 +3740000,imu,-0.26638582,0.14068726,-9.990612,-0.007819572,-8.270227e-05,0.00533106 +3744000,imu,-0.24186398,0.19452114,-9.952684,-0.0017583196,0.002564609,0.003261448 +3744000,baro,487.61453 +3744000,mag,0.2,-0.08000001,0.42700002 +3744000,airspeed,1.7001578,1.6604755 +3748000,mag,0.2,-0.08000001,0.42700002 +3748000,airspeed,-2.2395172,-2.1872456 +3748000,baro,487.61453 +3748000,imu,-0.24318615,0.22369586,-9.982278,9.756256e-05,-0.0045279674,0.00614448 +3752000,imu,-0.2566062,0.2817757,-9.998461,0.001736498,-0.0073176897,0.008859073 +3752000,airspeed,2.698599,2.6355975 +3756000,imu,-0.22891171,0.25277856,-10.01416,0.007067142,-0.0102146715,-0.0006421181 +3756000,baro,487.71313 +3756000,mag,0.2,-0.08000001,0.42700002 +3756000,airspeed,2.7493308,2.685145 +3764000,airspeed,-2.5996587,-2.5389776 +3764000,mag,0.2,-0.08000001,0.42700002 +3764000,baro,487.638 +3764000,imu,-0.2225063,0.18192165,-9.995076,0.0017815158,-0.0071563926,0.000573834 +3768000,airspeed,3.6928718,3.6066597 +3768000,imu,-0.21678129,0.17766535,-9.917304,0.0022263026,-0.010696696,-0.007090952 +3768000,mag,0.2,-0.08000001,0.42700002 +3768000,baro,487.70374 +3776000,airspeed,-3.507895,-3.4259944 +3776000,baro,487.7366 +3776000,mag,0.2,-0.08000001,0.42700002 +3776000,imu,-0.24903633,0.15106401,-9.979479,-0.0031224964,-0.005381869,-0.010002424 +3780000,airspeed,-3.4463398,-3.3658764 +3780000,imu,-0.24012509,0.15972456,-9.956743,-0.002833571,-0.00249811,-0.0030597588 +3780000,mag,0.2,-0.08000001,0.42700002 +3780000,baro,487.7366 +3784000,mag,0.201,-0.08000001,0.42900002 +3784000,imu,-0.18006511,0.24311645,-10.002225,-0.0035173527,-0.0050904276,6.280227e-05 +3784000,airspeed,-2.525842,-2.4668725 +3784000,baro,487.71783 +3788000,baro,487.48776 +3788000,mag,0.201,-0.08000001,0.42900002 +3788000,airspeed,-2.2658424,-2.2129736 +3788000,imu,-0.18156816,0.24879165,-9.979217,-0.0041161873,-0.0062753083,-0.0025500767 +3792000,airspeed,2.4414842,2.3844912 +3792000,imu,-0.20092079,0.24229196,-9.874541,0.00087740633,-0.006922588,0.0019868868 +3796000,baro,487.6427 +3796000,mag,0.201,-0.08000001,0.42900002 +3796000,imu,-0.13837126,0.23942916,-9.926104,0.0028180743,-0.005005318,-0.0002485723 +3796000,airspeed,-3.2993577,-3.222344 +3800000,imu,-0.18005745,0.21787016,-9.964295,0.0045984928,-0.0065328768,-0.0051510865 +3800000,airspeed,3.243887,3.1681576 +3800000,mag,0.201,-0.08000001,0.42900002 +3800000,baro,487.69434 +3804000,imu,-0.22854911,0.18746363,-9.936024,0.003057013,-0.004411794,-0.007005639 +3804000,mag,0.201,-0.08000001,0.42900002 +3804000,airspeed,-4.827203,-4.7145405 +3804000,baro,487.59106 +3808000,baro,487.59576 +3808000,imu,-0.21779072,0.14572284,-9.883182,0.0006527001,-0.0036102592,-0.0074980566 +3808000,gps,488100.0,85456074.0,473977508.0,0.0,0.02,-0.03 +3808000,airspeed,3.3083117,3.231098 +3808000,mag,0.201,-0.08000001,0.42900002 +3816000,baro,487.53473 +3816000,mag,0.201,-0.08000001,0.42900002 +3816000,imu,-0.25545478,0.20853621,-9.9283,-0.001799342,-0.0065984055,0.00631436 +3816000,airspeed,2.9777575,2.9082692 +3824000,mag,0.201,-0.08000001,0.42900002 +3824000,airspeed,-4.3388104,-4.237554 +3824000,imu,-0.3009614,0.22308828,-9.908051,0.0021498676,0.0014227149,0.0026720336 +3824000,baro,487.5629 +3828000,mag,0.201,-0.08000001,0.42900002 +3828000,imu,-0.24021515,0.18596216,-9.958962,-0.0010366837,0.002095098,0.003240166 +3828000,baro,487.67087 +3828000,airspeed,2.3690434,2.313741 +3832000,mag,0.201,-0.08000001,0.42900002 +3832000,imu,-0.19352631,0.2128775,-9.982748,-0.00085949816,-0.0042886003,0.008949158 +3832000,baro,487.6521 +3832000,airspeed,2.52244,2.4635596 +3836000,mag,0.202,-0.08000001,0.42700002 +3836000,imu,-0.20476128,0.22217944,-9.959809,-0.006284953,-0.010868092,0.012230945 +3836000,airspeed,-4.376412,-4.2742343 +3836000,baro,487.7366 +3840000,baro,487.5394 +3840000,mag,0.202,-0.08000001,0.42700002 +3840000,imu,-0.19092494,0.20809062,-9.917809,-0.0074625164,-0.015900558,0.006484505 +3840000,airspeed,-3.0994177,-3.02709 +3844000,airspeed,2.634663,2.573152 +3844000,mag,0.202,-0.08000001,0.42700002 +3844000,imu,-0.20776196,0.25881106,-9.856116,-0.005445965,-0.014218264,0.00324021 +3844000,baro,487.7225 +3848000,airspeed,-2.9625916,-2.8934622 +3848000,baro,487.50656 +3848000,imu,-0.22182469,0.24163266,-9.905,-0.0072963205,-0.0071351654,0.005049217 +3848000,mag,0.202,-0.08000001,0.42700002 +3852000,imu,-0.21601173,0.16897306,-9.953744,-0.0012090815,-0.0052711754,0.0041231923 +3852000,airspeed,2.333418,2.2789698 +3852000,baro,487.50656 +3852000,mag,0.202,-0.08000001,0.42700002 +3856000,baro,487.67087 +3856000,mag,0.202,-0.08000001,0.42700002 +3860000,baro,487.6427 +3860000,airspeed,-3.668485,-3.5828555 +3860000,imu,-0.19874883,0.20434454,-9.964658,-0.0030278836,-0.008111314,0.00097472925 +3860000,mag,0.202,-0.08000001,0.42700002 +3864000,airspeed,-2.365212,-2.3100076 +3864000,imu,-0.21065323,0.1353617,-9.962618,0.00017905826,-0.0073084696,0.0023127056 +3864000,baro,487.60983 +3864000,mag,0.202,-0.08000001,0.42700002 +3872000,mag,0.202,-0.08000001,0.42700002 +3872000,baro,487.78824 +3872000,imu,-0.3600079,0.23192388,-9.936383,0.0031737243,-0.006202204,-0.003387706 +3872000,airspeed,-2.959262,-2.8901615 +3876000,airspeed,1.4255117,1.3922205 +3876000,mag,0.202,-0.08000001,0.42700002 +3876000,baro,487.84457 +3876000,imu,-0.3550872,0.20530151,-9.951351,-0.0032560052,-0.012898826,-0.0018407599 +3880000,imu,-0.2292052,0.18585837,-9.979933,-0.0018542878,-0.009442647,-0.0018294072 +3880000,baro,487.69904 +3880000,airspeed,0.9179968,0.8965658 +3880000,mag,0.202,-0.08000001,0.42700002 +3888000,airspeed,1.2017683,1.1737143 +3888000,imu,-0.18595198,0.22296962,-10.0148535,-0.0036303431,-0.005646722,0.004190547 +3888000,mag,0.19700001,-0.08200001,0.42600003 +3888000,baro,487.67557 +3892000,imu,-0.23397022,0.17016836,-10.01748,-0.0018151324,-0.010315498,0.0067135235 +3892000,airspeed,-1.0182053,-0.99443454 +3892000,mag,0.19700001,-0.08200001,0.42600003 +3892000,baro,487.70374 +3896000,baro,487.70374 +3896000,mag,0.19700001,-0.08200001,0.42600003 +3896000,imu,-0.1857721,0.1354622,-9.9441595,0.00073785224,-0.007587603,0.007111189 +3896000,airspeed,-2.2667356,-2.2138171 +3900000,mag,0.19700001,-0.08200001,0.42600003 +3900000,baro,487.60043 +3900000,airspeed,1.934214,1.8890704 +3904000,imu,-0.24262607,0.17019363,-10.032801,0.0035103827,-0.0044306903,4.320774e-05 +3908000,airspeed,0.3996225,0.3902938 +3908000,baro,487.67087 +3908000,mag,0.19700001,-0.08200001,0.42600003 +3908000,imu,-0.26052395,0.19061741,-10.009045,0.001120052,-0.00627249,-0.0034101463 +3916000,baro,487.67557 +3916000,mag,0.19700001,-0.08200001,0.42600003 +3916000,airspeed,-2.5777566,-2.5175815 +3916000,imu,-0.22179943,0.1263815,-9.970182,-0.0026492965,-0.004981266,0.0013662018 +3920000,baro,487.58167 +3920000,imu,-0.21493383,0.20022547,-9.9298935,0.004690799,-0.0035466184,0.00081910595 +3920000,airspeed,0.8369997,0.81746536 +3920000,mag,0.19700001,-0.08200001,0.42600003 +3928000,baro,487.50656 +3928000,imu,-0.15154248,0.102309264,-9.98031,-0.0037414392,-0.007440536,0.0013786486 +3928000,mag,0.19700001,-0.08200001,0.42600003 +3928000,airspeed,2.94511,2.876389 +3932000,imu,-0.14923924,0.097043365,-9.919083,-0.00026055245,-0.0074369386,-0.00029011277 +3932000,airspeed,-4.5522256,-4.446007 +3932000,mag,0.19700001,-0.08200001,0.42600003 +3932000,baro,487.49246 +3936000,imu,-0.1831983,0.21508564,-9.887363,-0.003044499,-0.004112629,0.001755687 +3936000,airspeed,-1.878403,-1.8345572 +3936000,mag,0.19700001,-0.08200001,0.42600003 +3936000,baro,487.6427 +3940000,mag,0.19900002,-0.08200001,0.42900002 +3940000,imu,-0.17246978,0.2535178,-9.953068,-0.005524955,-0.0056792996,0.005067474 +3940000,baro,487.6427 +3940000,airspeed,3.3890307,3.309924 +3944000,mag,0.19900002,-0.08200001,0.42900002 +3944000,baro,487.5676 +3944000,imu,-0.16888508,0.22100769,-9.953676,-0.0063568633,-0.0043198974,0.0065129534 +3944000,airspeed,-4.212581,-4.1142693 +3948000,mag,0.19900002,-0.08200001,0.42900002 +3948000,baro,487.5676 +3948000,imu,-0.1992353,0.20210208,-9.9483385,-0.0067267087,-0.004479944,0.0052349325 +3948000,airspeed,1.1284795,1.1021433 +3956000,mag,0.19900002,-0.08200001,0.42900002 +3956000,imu,-0.19892056,0.25741744,-9.913421,-0.0060576494,-0.007305012,0.0031950253 +3956000,airspeed,-1.1421901,-1.1155237 +3956000,baro,487.7225 +3960000,baro,487.68027 +3960000,mag,0.19900002,-0.08200001,0.42900002 +3960000,airspeed,0.48908857,0.47767112 +3960000,imu,-0.27894497,0.21108206,-10.019982,-0.0058334367,-0.00939264,0.0011002627 +3964000,baro,487.68027 +3964000,mag,0.19900002,-0.08200001,0.42900002 +3964000,imu,-0.2462382,0.18813385,-10.023368,-0.004471786,-0.004306218,-0.0020127664 +3964000,airspeed,-2.5805526,-2.5203114 +3968000,imu,-0.14928713,0.19086888,-9.9562845,-0.0033118594,-0.0030844486,-0.0021692535 +3968000,airspeed,-3.5840409,-3.5004163 +3968000,baro,487.47836 +3968000,mag,0.19900002,-0.08200001,0.42900002 +3976000,baro,487.5488 +3976000,imu,-0.18714337,0.21545391,-9.969795,-0.00039055542,-0.0035528676,-0.00087899604 +3976000,airspeed,3.6866913,3.600656 +3976000,mag,0.19900002,-0.08200001,0.42900002 +3980000,baro,487.53473 +3980000,mag,0.19900002,-0.08200001,0.42900002 +3980000,imu,-0.20925564,0.20218612,-9.947321,-0.0061454736,-0.004185684,0.0029511556 +3980000,airspeed,-3.7906559,-3.702198 +3984000,baro,487.62863 +3984000,airspeed,1.8363554,1.7934927 +3984000,mag,0.19900002,-0.08200001,0.42900002 +3984000,imu,-0.23442318,0.17506576,-9.975435,-0.0027799327,-0.005106678,0.0007944283 +3988000,imu,-0.2616444,0.21630915,-9.945802,0.00081243616,-0.0042381426,-0.00083693594 +3988000,baro,487.6521 +3988000,mag,0.19900002,-0.08200001,0.42900002 +3988000,airspeed,3.0941472,3.021922 +3992000,baro,487.6521 +3992000,airspeed,-2.1270082,-2.0773585 +3992000,imu,-0.21802923,0.2069504,-9.900341,-0.0019935933,-0.0006582082,-0.00093480607 +3992000,mag,0.19900002,-0.08200001,0.42900002 +3996000,imu,-0.1549159,0.15829302,-9.933244,-0.0007310847,-0.00019788119,-0.0003993649 +3996000,baro,487.58167 +3996000,mag,0.2,-0.08200001,0.43100002 +3996000,airspeed,-2.6248875,-2.5636265 +4000000,imu,-0.16276222,0.19619031,-9.98233,-0.0051786304,-0.003155706,0.007019846 +4000000,airspeed,-2.288021,-2.2346125 +4000000,mag,0.2,-0.08200001,0.43100002 +4000000,baro,487.6521 +4004000,airspeed,3.9179442,3.8264847 +4004000,baro,487.67087 +4004000,imu,-0.15913959,0.1974101,-9.940438,-0.008344333,-0.0060786945,0.0060513183 +4004000,mag,0.2,-0.08200001,0.43100002 +4008000,gps,488099.0,85456075.0,473977508.0,0.01,0.0,0.0 +4008000,airspeed,-2.9772198,-2.9077349 +4008000,baro,487.59106 +4008000,mag,0.2,-0.08200001,0.43100002 +4008000,imu,-0.17034355,0.13106593,-9.878438,8.522006e-05,-0.004799014,-0.0021564993 +4012000,baro,487.71783 +4012000,airspeed,-2.5931146,-2.532575 +4012000,mag,0.2,-0.08200001,0.43100002 +4012000,imu,-0.21501523,0.17991306,-9.917362,0.0059944903,-0.0012816006,-0.002500099 +4016000,airspeed,0.68335724,0.6674113 +4016000,baro,487.51593 +4016000,imu,-0.19187897,0.16734123,-9.911522,-0.00083980977,-0.003268045,0.00038386253 +4016000,mag,0.2,-0.08200001,0.43100002 +4020000,mag,0.2,-0.08200001,0.43100002 +4020000,imu,-0.2269149,0.14659809,-9.905622,-0.0026939497,-0.006479543,0.000649002 +4020000,airspeed,-4.424342,-4.321068 +4020000,baro,487.6474 +4024000,imu,-0.26583144,0.14571814,-9.902993,0.0027921333,-0.006362752,-0.00031339808 +4024000,airspeed,-2.2045748,-2.1531315 +4024000,mag,0.2,-0.08200001,0.43100002 +4024000,baro,487.52063 +4028000,mag,0.2,-0.08200001,0.43100002 +4028000,airspeed,-0.36745286,-0.3588766 +4028000,imu,-0.21717784,0.19815029,-9.930629,0.0018467619,-0.0035198089,0.0018718159 +4028000,baro,487.60513 +4032000,airspeed,-2.8336806,-2.767551 +4032000,imu,-0.17029251,0.2457672,-9.951474,0.001673575,-0.0033077234,0.0060531846 +4032000,baro,487.5582 +4036000,mag,0.2,-0.08200001,0.43100002 +4036000,imu,-0.19796056,0.21322392,-9.922342,0.0035374656,-0.004788556,0.0054232944 +4036000,baro,487.5582 +4036000,airspeed,-1.6908368,-1.6513777 +4040000,imu,-0.23430821,0.2113922,-9.91549,0.0035517626,-0.00708965,0.0026560999 +4040000,mag,0.2,-0.08200001,0.43100002 +4040000,baro,487.5535 +4040000,airspeed,-1.9234146,-1.8785282 +4044000,imu,-0.13444969,0.17279013,-9.972593,0.0035854517,-0.0073411874,3.696909e-05 +4044000,airspeed,-4.1080546,-4.0121703 +4044000,baro,487.61923 +4044000,mag,0.2,-0.08200001,0.42800003 +4048000,imu,-0.12940697,0.11928862,-10.010582,-0.00040017656,-0.0036349026,-0.0006304629 +4048000,baro,487.5582 +4048000,airspeed,-2.662795,-2.600653 +4048000,mag,0.2,-0.08200001,0.42800003 +4052000,mag,0.2,-0.08200001,0.42800003 +4052000,airspeed,-2.6133325,-2.5523448 +4052000,baro,487.5582 +4052000,imu,-0.2500869,0.13202754,-9.940098,-0.004220241,-0.0026385114,0.00073051127 +4056000,imu,-0.295252,0.20401047,-9.888504,-0.0015588244,0.0008911466,-0.00081615243 +4056000,airspeed,-4.1039615,-4.0081444 +4056000,baro,487.7366 +4056000,mag,0.2,-0.08200001,0.42800003 +4060000,imu,-0.28017938,0.24917021,-9.950351,0.0007460875,0.0048529375,-0.00019881291 +4060000,airspeed,2.3847516,2.3290882 +4060000,baro,487.6333 +4060000,mag,0.2,-0.08200001,0.42800003 +4068000,airspeed,-3.1123219,-3.0397205 +4068000,baro,487.3845 +4068000,imu,-0.2794278,0.15627243,-9.895554,-0.0050309245,-0.00974539,0.004517175 +4068000,mag,0.2,-0.08200001,0.42800003 +4072000,mag,0.2,-0.08200001,0.42800003 +4072000,airspeed,1.1873567,1.1596355 +4072000,imu,-0.32199964,0.1657196,-9.933318,0.0022465198,-0.0078650955,0.002181853 +4072000,baro,487.7272 +4076000,baro,487.5535 +4076000,airspeed,-0.9472649,-0.92515886 +4076000,mag,0.2,-0.08200001,0.42800003 +4076000,imu,-0.22835468,0.2459535,-9.972831,-0.0028295324,-0.009470312,-0.0019618478 +4084000,imu,-0.16448815,0.15638942,-9.992937,-0.0034939107,-0.00365735,0.0018607588 +4084000,airspeed,-1.8158381,-1.7734622 +4084000,baro,487.5535 +4084000,mag,0.2,-0.08200001,0.42800003 +4088000,imu,-0.21743289,0.17489061,-9.984933,-0.0018707005,-0.005548677,0.004592068 +4088000,airspeed,1.3468747,1.3154353 +4092000,baro,487.6568 +4092000,mag,0.2,-0.08200001,0.42800003 +4096000,imu,-0.16871561,0.21028782,-9.88337,-0.00088699686,-0.00587161,-0.0002849124 +4096000,mag,0.19800001,-0.08000001,0.42900002 +4096000,airspeed,-2.0653152,-2.0171006 +4096000,baro,487.69434 +4100000,imu,-0.21245961,0.12618473,-9.895548,0.0020593912,-0.006065629,-0.0055058645 +4100000,baro,487.69434 +4100000,mag,0.19800001,-0.08000001,0.42900002 +4100000,airspeed,-3.6212578,-3.5367196 +4104000,mag,0.19800001,-0.08000001,0.42900002 +4104000,imu,-0.24154714,0.11104494,-9.894938,-0.0024325643,-0.008536062,-0.010662632 +4104000,baro,487.6333 +4104000,airspeed,-3.464828,-3.3839533 +4108000,imu,-0.28798065,0.15951565,-9.889556,-0.006842323,-0.0047098733,-0.005024984 +4108000,mag,0.19800001,-0.08000001,0.42900002 +4108000,airspeed,-2.4990067,-2.4406843 +4108000,baro,487.57697 +4112000,imu,-0.22333826,0.1620576,-9.960496,-0.008324046,-0.0003231522,-0.0029676454 +4112000,mag,0.19800001,-0.08000001,0.42900002 +4112000,baro,487.57697 +4112000,airspeed,-2.0948923,-2.046001 +4116000,mag,0.19800001,-0.08000001,0.42900002 +4116000,airspeed,-1.9018648,-1.8574753 +4116000,baro,487.60983 +4116000,imu,-0.1825177,0.13596994,-9.957891,-0.006176595,-0.0070709973,-0.0027948013 +4120000,imu,-0.23259482,0.14942636,-9.943478,-0.0008098621,-0.0016106259,-0.0028449788 +4120000,baro,487.5676 +4120000,mag,0.19800001,-0.08000001,0.42900002 +4120000,airspeed,2.2506297,2.1981056 +4124000,mag,0.19800001,-0.08000001,0.42900002 +4124000,airspeed,1.2210165,1.1925272 +4124000,imu,-0.27193162,0.22057939,-10.01565,-0.0006503424,-0.0037208698,0.0013579695 +4124000,baro,487.47836 +4128000,imu,-0.254097,0.26349843,-9.968779,-0.0056418623,-0.006214885,0.00235612 +4128000,mag,0.19800001,-0.08000001,0.42900002 +4128000,baro,487.47836 +4128000,airspeed,1.4192421,1.3861277 +4132000,airspeed,1.863074,1.8195828 +4132000,mag,0.19800001,-0.08000001,0.42900002 +4132000,baro,487.67087 +4132000,imu,-0.22793843,0.26203725,-9.966047,-0.008258596,-0.0026208835,-0.002538542 +4136000,imu,-0.25635463,0.15311502,-10.02945,-0.0024458764,-0.008036461,-0.0019047586 +4136000,airspeed,-3.878814,-3.7882874 +4136000,mag,0.19800001,-0.08000001,0.42900002 +4136000,baro,487.58636 +4140000,imu,-0.25860214,0.15687156,-10.042745,0.0008296776,-0.0076059187,0.00010034854 +4140000,airspeed,1.040366,1.0160912 +4140000,mag,0.19800001,-0.08000001,0.42900002 +4140000,baro,487.48776 +4144000,imu,-0.20394582,0.19392732,-9.974234,0.0027463678,-0.0024283302,0.0008541515 +4144000,baro,487.7366 +4144000,airspeed,3.936438,3.844532 +4144000,mag,0.19800001,-0.08000001,0.42900002 +4148000,imu,-0.22375603,0.16466631,-9.921457,-0.0060397047,-0.00546295,-9.2980896e-05 +4148000,airspeed,-4.332215,-4.2311187 +4148000,mag,0.201,-0.07900001,0.42700002 +4148000,baro,487.53473 +4152000,baro,487.6333 +4152000,airspeed,-1.3085747,-1.2780308 +4152000,mag,0.201,-0.07900001,0.42700002 +4152000,imu,-0.23472291,0.15192237,-9.928449,-0.0072928127,-0.0064176945,-0.0040457174 +4156000,imu,-0.2075846,0.21531567,-9.951411,-0.0053770887,-0.0025500117,0.0011920208 +4156000,airspeed,-1.497805,-1.4628443 +4156000,mag,0.201,-0.07900001,0.42700002 +4156000,baro,487.6333 +4160000,imu,-0.20672503,0.21677421,-9.871565,-0.006157543,-0.0021962621,0.0028503907 +4160000,baro,487.6521 +4160000,airspeed,3.0266662,2.9560163 +4160000,mag,0.201,-0.07900001,0.42700002 +4164000,mag,0.201,-0.07900001,0.42700002 +4164000,imu,-0.1657867,0.19066091,-9.862752,-0.0031615854,-0.0021617052,0.0026720671 +4164000,baro,487.6521 +4164000,airspeed,0.82766515,0.8083454 +4172000,baro,487.69434 +4172000,airspeed,3.3234477,3.2458615 +4172000,imu,-0.15461108,0.16360496,-9.920059,-0.006063661,-0.00425367,-0.0045974664 +4172000,mag,0.201,-0.07900001,0.42700002 +4176000,imu,-0.1905108,0.21524608,-9.967616,-0.0023948944,-0.00057922193,-9.044362e-05 +4176000,mag,0.201,-0.07900001,0.42700002 +4176000,baro,487.52063 +4176000,airspeed,1.7777604,1.7362764 +4180000,airspeed,-2.1146681,-2.0652933 +4180000,imu,-0.29454738,0.19647934,-9.962856,0.0026914629,0.004120784,-0.0008464229 +4184000,airspeed,-0.948058,-0.92593086 +4184000,mag,0.201,-0.07900001,0.42700002 +4184000,imu,-0.30483305,0.14625393,-9.9269905,-0.0034381954,-0.0011185262,0.00072728435 +4184000,baro,487.59576 +4188000,baro,487.52063 +4188000,mag,0.201,-0.07900001,0.42700002 +4188000,airspeed,-3.0347292,-2.9639142 +4188000,imu,-0.1884452,0.15592957,-9.999442,-0.0020477804,-0.0018017641,0.003660222 +4192000,mag,0.201,-0.07900001,0.42700002 +4192000,imu,-0.14869638,0.1762742,-10.068345,-0.0016567112,-0.0021686757,-0.0039671855 +4192000,baro,487.66147 +4192000,airspeed,1.0635974,1.03877 +4196000,imu,-0.19801436,0.16993488,-10.017471,-0.0020670434,-0.0050165746,-0.005409789 +4196000,baro,487.69904 +4196000,mag,0.201,-0.07900001,0.42700002 +4196000,airspeed,1.9540161,1.9083987 +4200000,imu,-0.22286028,0.108830646,-9.974031,-0.002599781,-0.0077189296,-0.0036039655 +4200000,airspeed,0.7796381,0.76144534 +4200000,baro,487.52063 +4200000,mag,0.202,-0.08000001,0.42700002 +4204000,baro,487.52063 +4204000,imu,-0.18783578,0.19911262,-9.964094,-0.009312638,-0.009470707,-0.0031893186 +4204000,mag,0.202,-0.08000001,0.42700002 +4204000,airspeed,-2.9807363,-2.9111812 +4208000,imu,-0.16841826,0.25539088,-9.955346,-0.0086657265,-0.008476557,0.0049273223 +4208000,mag,0.202,-0.08000001,0.42700002 +4208000,baro,487.80234 +4208000,gps,488094.0,85456075.0,473977508.0,0.01,0.0,-0.01 +4208000,airspeed,2.3458138,2.2910361 +4212000,imu,-0.23503776,0.19705638,-9.941204,-0.003712746,-0.008935115,-3.3390916e-05 +4212000,mag,0.202,-0.08000001,0.42700002 +4212000,airspeed,3.2502384,3.174378 +4212000,baro,487.60983 +4216000,imu,-0.2376788,0.1882077,-9.92,0.0030349686,-0.005830873,-0.0032842911 +4216000,mag,0.202,-0.08000001,0.42700002 +4216000,baro,487.5629 +4216000,airspeed,1.4283338,1.3950002 +4220000,baro,487.5629 +4220000,mag,0.202,-0.08000001,0.42700002 +4220000,imu,-0.17998472,0.1401197,-9.91506,0.00071716076,-0.00707675,-0.00046528896 +4220000,airspeed,-2.9673543,-2.898104 +4224000,airspeed,-3.066631,-2.9950294 +4224000,baro,487.75537 +4224000,imu,-0.20620686,0.17143369,-9.925552,-0.0038893959,-0.007009229,-0.0009704144 +4224000,mag,0.202,-0.08000001,0.42700002 +4228000,airspeed,-3.89626,-3.8052838 +4228000,imu,-0.22730567,0.15335211,-9.9495125,-0.0019374067,-0.0034885495,-0.0011584825 +4228000,baro,487.77417 +4228000,mag,0.202,-0.08000001,0.42700002 +4232000,mag,0.202,-0.08000001,0.42700002 +4232000,imu,-0.16965397,0.13551044,-9.9590435,-0.0030326862,-0.008150566,-0.0051819063 +4232000,airspeed,2.757347,2.6929862 +4232000,baro,487.6333 +4240000,baro,487.79294 +4240000,imu,-0.21157345,0.21836977,-9.885132,-0.0012190103,-0.0022966508,-0.0022888049 +4240000,airspeed,0.61101115,0.59674346 +4240000,mag,0.202,-0.08000001,0.42700002 +4244000,imu,-0.11545139,0.20357595,-9.889543,-0.0026826852,-0.0016419269,0.003560558 +4244000,airspeed,2.2455552,2.193145 +4244000,baro,487.60043 +4244000,mag,0.202,-0.08000001,0.42700002 +4248000,mag,0.202,-0.08000001,0.42700002 +4248000,baro,487.60043 +4248000,imu,-0.13497946,0.22085236,-9.954586,-0.0008118372,-0.0055194343,0.0072881053 +4248000,airspeed,2.9227424,2.854527 +4256000,imu,-0.22264403,0.22332688,-9.994505,-0.0031207176,-0.007793956,-0.002703674 +4256000,baro,487.66147 +4256000,airspeed,1.8979062,1.8536035 +4256000,mag,0.19700001,-0.07900001,0.42900002 +4260000,airspeed,-2.0340953,-1.9866068 +4260000,baro,487.71313 +4260000,imu,-0.22668174,0.18916059,-9.96556,-0.004217982,-0.0072844056,-0.0037166213 +4260000,mag,0.19700001,-0.07900001,0.42900002 +4264000,imu,-0.27828214,0.1864415,-9.962351,-0.0040551266,-0.0044134413,0.00031533977 +4264000,baro,487.70844 +4264000,airspeed,-1.9205672,-1.8757302 +4264000,mag,0.19700001,-0.07900001,0.42900002 +4272000,mag,0.19700001,-0.07900001,0.42900002 +4272000,imu,-0.21390088,0.2019396,-9.919813,-7.6900054e-05,-0.009599243,0.0060144146 +4272000,airspeed,-2.328384,-2.274035 +4272000,baro,487.638 +4276000,mag,0.19700001,-0.07900001,0.42900002 +4276000,airspeed,1.7723581,1.7309906 +4276000,baro,487.61453 +4276000,imu,-0.20523821,0.23123895,-9.908456,-5.0763883e-05,-0.009752624,0.008491538 +4280000,airspeed,1.5734706,1.5367347 +4280000,baro,487.7272 +4280000,imu,-0.19122821,0.21629845,-9.910029,-0.0058639185,-0.0068410323,-0.0020539917 +4280000,mag,0.19700001,-0.07900001,0.42900002 +4284000,airspeed,-2.038434,-1.9908625 +4284000,baro,487.5629 +4284000,mag,0.19700001,-0.07900001,0.42900002 +4284000,imu,-0.20506397,0.22687377,-9.93407,-0.0075849975,-0.005521034,-0.0035116735 +4288000,baro,487.5629 +4288000,mag,0.19700001,-0.07900001,0.42900002 +4288000,imu,-0.21596089,0.15917632,-9.978521,-0.0056394837,-0.005834686,-0.00026795044 +4288000,airspeed,-2.3631601,-2.3080103 +4292000,airspeed,0.94683,0.924736 +4292000,baro,487.51593 +4292000,mag,0.19700001,-0.07900001,0.42900002 +4292000,imu,-0.20495375,0.1263346,-9.956008,-0.0014816814,-0.0045060976,-0.0026656226 +4296000,baro,487.51593 +4296000,airspeed,3.7054768,3.6190107 +4296000,imu,-0.14480768,0.13701402,-9.933781,-0.0029955537,0.004721152,-0.00545511 +4296000,mag,0.19700001,-0.07900001,0.42900002 +4300000,airspeed,2.907661,2.8398094 +4300000,imu,-0.18120037,0.16493066,-9.972341,-0.005479486,0.0012401728,-0.0036883387 +4300000,baro,487.53003 +4300000,mag,0.19700001,-0.07900001,0.42900002 +4304000,baro,487.68967 +4304000,imu,-0.23623893,0.14216341,-10.0278,-0.0056450455,-0.009178102,0.0025195559 +4304000,airspeed,-1.5767266,-1.5399181 +4304000,mag,0.19700001,-0.07900001,0.42900002 +4308000,airspeed,2.8898854,2.8224213 +4308000,mag,0.20300001,-0.08000001,0.42700002 +4308000,baro,487.68967 +4308000,imu,-0.2891601,0.108350635,-10.012872,-0.0039788345,-0.0055042338,0.0018500257 +4316000,imu,-0.24593686,0.1263265,-9.96389,0.0040999744,-0.015780518,-0.0020844846 +4316000,airspeed,2.4640403,2.4065332 +4316000,baro,487.58167 +4316000,mag,0.20300001,-0.08000001,0.42700002 +4320000,imu,-0.21704341,0.2190765,-9.942835,0.0032648835,-0.016420797,-0.0023318075 +4320000,airspeed,3.0037532,2.9336154 +4320000,baro,487.77887 +4320000,mag,0.20300001,-0.08000001,0.42700002 +4324000,mag,0.20300001,-0.08000001,0.42700002 +4324000,airspeed,1.8342153,1.7914158 +4324000,baro,487.50656 +4324000,imu,-0.19473277,0.1932153,-9.91109,-0.00019214596,-0.008397473,-0.0043152813 +4328000,mag,0.20300001,-0.08000001,0.42700002 +4328000,airspeed,2.997994,2.928023 +4328000,baro,487.59576 +4328000,imu,-0.24907571,0.14393325,-9.912022,0.0028058528,-0.0081145335,-0.004143723 +4332000,airspeed,-2.1386352,-2.0887241 +4332000,baro,487.57227 +4332000,imu,-0.23061243,0.19911756,-9.941448,0.0054471605,-0.009278675,-0.0012197003 +4332000,mag,0.20300001,-0.08000001,0.42700002 +4336000,imu,-0.18857689,0.15341803,-9.938857,0.0017595865,-0.008014322,0.0022877215 +4336000,baro,487.75537 +4336000,mag,0.20300001,-0.08000001,0.42700002 +4336000,airspeed,3.446543,3.3660712 +4340000,baro,487.47836 +4340000,imu,-0.17933314,0.15302886,-9.9615135,0.00063032046,-0.011580905,-0.0019990255 +4340000,mag,0.20300001,-0.08000001,0.42700002 +4340000,airspeed,-3.7569902,-3.6693306 +4344000,mag,0.20300001,-0.08000001,0.42700002 +4344000,airspeed,3.879749,3.7891953 +4344000,imu,-0.071403354,0.24129309,-9.977665,-0.0029440676,-0.009292139,-0.002112159 +4344000,baro,487.60983 +4348000,imu,-0.11702973,0.26408044,-9.9261675,0.003350954,-0.010681132,-0.0048888223 +4348000,mag,0.20300001,-0.08000001,0.42700002 +4348000,baro,487.638 +4348000,airspeed,-0.9447756,-0.9227228 +4352000,mag,0.20300001,-0.08000001,0.42700002 +4352000,baro,487.59106 +4352000,imu,-0.23545602,0.2600554,-9.915362,0.0008137915,-0.009637425,-0.007539861 +4352000,airspeed,3.479065,3.3978667 +4356000,imu,-0.22721088,0.20989594,-9.90849,-0.0056011686,-0.0059986543,0.002412188 +4356000,baro,487.50656 +4356000,airspeed,2.8510985,2.7845707 +4356000,mag,0.201,-0.07900001,0.42600003 +4364000,mag,0.201,-0.07900001,0.42600003 +4364000,baro,487.61453 +4364000,imu,-0.1660287,0.11399872,-9.943516,0.0054667033,-0.004752297,0.003283992 +4364000,airspeed,-3.9258277,-3.8341975 +4372000,mag,0.201,-0.07900001,0.42600003 +4372000,imu,-0.2301803,0.21442047,-9.962043,-0.0044169137,-0.0094008045,-0.0022986804 +4372000,baro,487.70374 +4372000,airspeed,-2.5163329,-2.4575877 +4376000,mag,0.201,-0.07900001,0.42600003 +4376000,imu,-0.23082814,0.19074097,-9.965787,-0.0033929753,-0.0015286921,0.001609462 +4376000,baro,487.52533 +4376000,airspeed,4.6311836,4.5231147 +4380000,baro,487.52533 +4380000,imu,-0.29140276,0.20472474,-9.9839945,-0.0016164115,0.0023658648,0.00073078537 +4380000,airspeed,-1.1722625,-1.1449077 +4380000,mag,0.201,-0.07900001,0.42600003 +4388000,mag,0.201,-0.07900001,0.42600003 +4388000,imu,-0.09104635,0.18884891,-9.951714,0.00016835285,-0.00019623547,-0.002617662 +4388000,airspeed,-1.4682022,-1.4339242 +4388000,baro,487.7272 +4392000,mag,0.201,-0.07900001,0.42600003 +4392000,imu,-0.12804247,0.24859838,-9.937277,0.00268337,-0.0012275805,-0.0069809672 +4392000,baro,487.57697 +4392000,airspeed,-3.793217,-3.7046897 +4396000,baro,487.57697 +4396000,imu,-0.20645916,0.2498248,-9.950645,0.0030217164,-0.009132326,-0.0023400786 +4396000,airspeed,1.0630555,1.0382457 +4396000,mag,0.201,-0.07900001,0.42600003 +4400000,airspeed,-2.7208588,-2.6573565 +4400000,baro,487.59106 +4400000,imu,-0.20527099,0.25982064,-9.976772,-0.0035605521,-0.006525056,0.006971245 +4400000,mag,0.201,-0.07900001,0.42600003 +4404000,mag,0.201,-0.07900001,0.42600003 +4404000,imu,-0.22229256,0.274127,-9.981963,-0.00489298,0.0016206426,0.0031331081 +4404000,baro,487.70374 +4404000,airspeed,3.142099,3.068745 +4408000,baro,487.48306 +4408000,gps,488099.0,85456075.0,473977508.0,0.0,0.01,-0.01 +4408000,imu,-0.2643926,0.21743083,-9.968269,-0.00077692047,-0.004750236,-0.0011971162 +4408000,airspeed,3.2473187,3.1715508 +4408000,mag,0.201,-0.08100001,0.42800003 +4412000,airspeed,2.5874834,2.5270574 +4412000,imu,-0.23508497,0.14708515,-9.95217,-0.0018781218,-0.009017493,0.0030506295 +4412000,baro,487.8352 +4412000,mag,0.201,-0.08100001,0.42800003 +4416000,airspeed,3.2817278,3.205138 +4416000,baro,487.57697 +4416000,imu,-0.1545121,0.18469432,-9.993971,-0.0003449759,-0.0031146118,0.0017592153 +4416000,mag,0.201,-0.08100001,0.42800003 +4420000,mag,0.201,-0.08100001,0.42800003 +4420000,baro,487.52063 +4420000,imu,-0.1396408,0.20237531,-10.02684,0.0039572585,-0.002559983,-0.0010219141 +4420000,airspeed,-2.4650779,-2.4075553 +4428000,baro,487.59106 +4428000,imu,-0.14132074,0.20375368,-9.881325,-0.005404703,-0.009080123,-0.0012338217 +4428000,airspeed,2.919259,2.8511267 +4428000,mag,0.201,-0.08100001,0.42800003 +4432000,mag,0.201,-0.08100001,0.42800003 +4432000,imu,-0.21372075,0.2439862,-9.852851,-0.00754677,-0.0011231219,0.0017634219 +4432000,airspeed,-2.76339,-2.6988955 +4432000,baro,487.59106 +4440000,imu,-0.26187694,0.15992737,-9.875514,-0.0071669715,-0.008073038,0.0016602408 +4440000,airspeed,-3.9981618,-3.9048152 +4440000,mag,0.201,-0.08100001,0.42800003 +4440000,baro,487.7319 +4444000,mag,0.201,-0.08100001,0.42800003 +4444000,imu,-0.27580437,0.17140932,-9.92396,-0.006208349,-0.0043155476,0.0053943647 +4444000,airspeed,-1.5803486,-1.5434691 +4444000,baro,487.5488 +4448000,mag,0.201,-0.08100001,0.42800003 +4448000,airspeed,1.9809653,1.9347367 +4448000,baro,487.5488 +4448000,imu,-0.22508253,0.27428615,-9.990551,-0.00986681,-0.0071789636,0.0031665198 +4452000,imu,-0.23443757,0.2757383,-10.0203705,-0.009548247,-0.0085412925,-4.171525e-05 +4452000,baro,487.5676 +4452000,airspeed,2.6296115,2.5682423 +4452000,mag,0.201,-0.08100001,0.42800003 +4456000,mag,0.201,-0.08100001,0.42800003 +4456000,airspeed,3.0806499,3.0087311 +4456000,baro,487.69904 +4456000,imu,-0.2335046,0.1683259,-9.973769,-0.0051316945,-0.0052356236,0.0043534017 +4464000,airspeed,-4.5755153,-4.468703 +4464000,baro,487.68027 +4464000,imu,-0.23475172,0.14577934,-9.9356,7.122708e-05,-0.0058453893,0.002381228 +4464000,mag,0.19800001,-0.08100001,0.42900002 +4468000,airspeed,0.52530557,0.51304203 +4468000,mag,0.19800001,-0.08100001,0.42900002 +4468000,baro,487.70374 +4468000,imu,-0.17722279,0.1606379,-9.935708,-0.0022268968,-0.0034094672,0.0034437485 +4476000,imu,-0.23685804,0.24985689,-9.935973,-0.00041954385,-0.0026594277,0.0012223584 +4476000,airspeed,-2.3576615,-2.3026443 +4476000,baro,487.53003 +4476000,mag,0.19800001,-0.08100001,0.42900002 +4480000,mag,0.19800001,-0.08100001,0.42900002 +4480000,airspeed,-3.5683112,-3.485025 +4480000,imu,-0.23670198,0.20183142,-10.006693,0.0029386643,-0.00528692,-0.0005795719 +4480000,baro,487.61453 +4488000,baro,487.59106 +4488000,mag,0.19800001,-0.08100001,0.42900002 +4488000,airspeed,2.499842,2.4414978 +4488000,imu,-0.26166773,0.17530212,-9.970421,-0.0014697317,-0.005751201,0.0023138742 +4492000,imu,-0.23371653,0.12615088,-10.015136,-0.0036242025,-0.011433027,-0.00017687671 +4492000,airspeed,-1.4583194,-1.4242836 +4496000,airspeed,3.5890393,3.5052466 +4496000,mag,0.19800001,-0.08100001,0.42900002 +4496000,baro,487.7225 +4496000,imu,-0.16505842,0.13623264,-9.909021,0.00066439464,-0.012623008,0.004935508 +4504000,mag,0.19800001,-0.08100001,0.42900002 +4504000,airspeed,-3.0648322,-2.9932969 +4504000,baro,487.61923 +4504000,imu,-0.2520602,0.1945873,-9.979799,-0.0041273907,-0.0055112196,-0.0025654174 +4508000,imu,-0.2469795,0.18885261,-9.987521,-0.008834021,-0.0031814773,-0.004363228 +4508000,baro,487.67557 +4508000,airspeed,3.3207963,3.2432756 +4508000,mag,0.19800001,-0.08100001,0.42900002 +4512000,airspeed,2.589005,2.528568 +4512000,baro,487.67087 +4512000,imu,-0.21018164,0.23477963,-10.011097,0.0009852295,-0.004130161,0.003208125 +4512000,mag,0.19900002,-0.08100001,0.42900002 +4516000,mag,0.19900002,-0.08100001,0.42900002 +4516000,airspeed,-2.140855,-2.0908794 +4516000,imu,-0.19045201,0.22403185,-9.96353,0.0009867813,-0.014282772,0.0046405653 +4516000,baro,487.67087 +4524000,baro,487.59106 +4524000,mag,0.19900002,-0.08100001,0.42900002 +4524000,airspeed,-2.2774012,-2.2242486 +4524000,imu,-0.20617513,0.18439041,-9.9942465,-0.0064786505,-0.0061770477,0.004647139 +4532000,baro,487.51593 +4532000,mag,0.19900002,-0.08100001,0.42900002 +4532000,airspeed,1.5034457,1.4683634 +4532000,imu,-0.18829036,0.17499594,-9.921992,0.0029546956,0.0017814575,0.0077634975 +4536000,airspeed,-1.7278543,-1.6875315 +4536000,imu,-0.19601524,0.15513502,-9.989195,0.0023180672,-0.0047745677,0.008080872 +4536000,baro,487.5535 +4536000,mag,0.19900002,-0.08100001,0.42900002 +4544000,airspeed,-1.4843497,-1.4497132 +4544000,baro,487.51123 +4544000,mag,0.19900002,-0.08100001,0.42900002 +4544000,imu,-0.21982767,0.13916962,-9.879591,-8.762415e-06,-0.003300617,0.004896587 +4548000,airspeed,2.110373,2.0611286 +4548000,baro,487.51123 +4548000,mag,0.19900002,-0.08100001,0.42900002 +4548000,imu,-0.23583688,0.16746034,-9.86427,-0.0015444075,-0.0029240455,0.00045139404 +4552000,mag,0.19900002,-0.08100001,0.42900002 +4552000,baro,487.60043 +4556000,imu,-0.20733218,0.18596157,-9.9178,-0.0025528388,-0.008116907,0.00029777674 +4556000,airspeed,2.3258514,2.2715638 +4556000,mag,0.19900002,-0.08100001,0.42900002 +4556000,baro,487.62863 +4560000,imu,-0.21279968,0.18749537,-9.911181,0.00022494988,-0.0071012396,0.00048704646 +4560000,airspeed,-0.9191535,-0.8976895 +4560000,mag,0.19900002,-0.08100001,0.42900002 +4560000,baro,487.81174 +4564000,imu,-0.22331738,0.17687346,-9.957272,-0.0036907988,-0.009302391,-0.0027674236 +4564000,airspeed,-2.0753105,-2.0268867 +4564000,mag,0.19900002,-0.08100001,0.42900002 +4564000,baro,487.49246 +4568000,mag,0.19900002,-0.08300001,0.42800003 +4568000,baro,487.7272 +4568000,airspeed,3.235696,3.1601524 +4568000,imu,-0.18122947,0.14299428,-9.984258,-0.0061596204,-0.005471828,-0.0018141331 +4576000,baro,487.66617 +4576000,imu,-0.24211003,0.15586597,-9.89753,-0.0016047264,-0.013053402,-0.0059663015 +4576000,airspeed,-2.123921,-2.0743415 +4576000,mag,0.19900002,-0.08300001,0.42800003 +4580000,baro,487.48776 +4580000,imu,-0.24250518,0.16808048,-9.915903,-0.0035970584,-0.012308206,-0.0040416494 +4580000,airspeed,1.3081863,1.2776626 +4580000,mag,0.19900002,-0.08300001,0.42800003 +4584000,baro,487.61453 +4584000,imu,-0.20446588,0.19153446,-9.962149,0.0029416343,-0.0062825796,-0.0015099831 +4584000,mag,0.19900002,-0.08300001,0.42800003 +4584000,airspeed,1.226252,1.1976309 +4588000,mag,0.19900002,-0.08300001,0.42800003 +4588000,baro,487.58636 +4588000,imu,-0.15347497,0.23254426,-9.9029665,0.0068062637,-0.002279829,0.0013947793 +4588000,airspeed,3.770648,3.6826463 +4596000,mag,0.19900002,-0.08300001,0.42800003 +4596000,baro,487.638 +4596000,imu,-0.20328303,0.1979643,-9.926082,-0.0009900336,-0.0043241167,-0.0025647844 +4596000,airspeed,-1.9552885,-1.9096483 +4600000,baro,487.69434 +4600000,landed,1.0 +4600000,imu,-0.23258044,0.18721037,-9.856102,-6.9453105e-05,-0.008830575,-0.0023624287 +4600000,mag,0.19900002,-0.08300001,0.42800003 +4600000,airspeed,-3.383852,-3.3048556 +4604000,airspeed,-1.569136,-1.5325078 +4604000,imu,-0.1989909,0.21422206,-9.878237,-0.0027744474,-0.010789022,0.0009977565 +4604000,baro,487.6568 +4604000,mag,0.19900002,-0.08300001,0.42800003 +4608000,imu,-0.18001853,0.23808964,-9.970037,-0.0048541534,-0.00070361246,0.0037534316 +4608000,gps,488095.0,85456074.0,473977508.0,0.0,0.0,-0.02 +4608000,airspeed,-2.6421223,-2.580445 +4608000,baro,487.67557 +4608000,mag,0.19900002,-0.08300001,0.42800003 +4612000,mag,0.19900002,-0.08300001,0.42800003 +4612000,imu,-0.15038891,0.21314298,-9.962853,-0.0007250212,0.004956167,0.0021072214 +4612000,airspeed,3.1515284,3.0779595 +4612000,baro,487.67557 +4616000,airspeed,-1.8616358,-1.8181865 +4616000,imu,-0.18081783,0.12509829,-9.972038,0.004213695,-0.0048691286,-0.0022005993 +4616000,baro,487.59576 +4616000,mag,0.20300001,-0.077000014,0.42600003 +4620000,mag,0.20300001,-0.077000014,0.42600003 +4620000,airspeed,-1.679784,-1.6405791 +4620000,baro,487.59576 +4620000,imu,-0.21574625,0.13679741,-9.936709,0.0023261479,-0.012023693,0.0032500275 +4624000,mag,0.20300001,-0.077000014,0.42600003 +4624000,imu,-0.23589398,0.19965194,-9.92777,-0.008967913,-0.008733588,0.0032388836 +4624000,baro,487.50656 +4624000,airspeed,3.2799435,3.203409 +4628000,mag,0.20300001,-0.077000014,0.42600003 +4628000,imu,-0.26177186,0.20056136,-9.911487,-0.008894714,-0.003321597,-0.0017287935 +4628000,baro,487.50656 +4628000,airspeed,2.2263453,2.1743956 +4632000,baro,487.638 +4632000,mag,0.20300001,-0.077000014,0.42600003 +4632000,imu,-0.2185377,0.19369479,-9.928289,-0.0064966287,-0.0009719212,-0.001990609 +4632000,airspeed,2.6446693,2.582938 +4636000,baro,487.67087 +4636000,imu,-0.15645985,0.17620595,-9.905092,-0.004212782,0.0019597376,-0.005416083 +4636000,airspeed,-4.4554744,-4.3514676 +4636000,mag,0.20300001,-0.077000014,0.42600003 +4640000,imu,-0.17818615,0.15477532,-9.867376,-0.00015652606,-0.0014384957,-0.0063500507 +4640000,airspeed,-3.1141443,-3.0414503 +4644000,airspeed,3.7977304,3.709103 +4644000,baro,487.5535 +4644000,imu,-0.26842746,0.21252374,-9.900993,0.0027968273,-0.0072784494,-0.006329276 +4644000,mag,0.20300001,-0.077000014,0.42600003 +4648000,mag,0.20300001,-0.077000014,0.42600003 +4648000,airspeed,3.5966763,3.512741 +4648000,baro,487.5535 +4648000,imu,-0.29549193,0.21216916,-9.889485,0.003561675,-0.00858887,-0.0034688106 +4652000,airspeed,-2.8386028,-2.7723355 +4652000,imu,-0.29376262,0.17605676,-9.903301,-0.000981508,-0.010780986,0.002919698 +4656000,mag,0.20300001,-0.077000014,0.42600003 +4656000,baro,487.62863 +4656000,airspeed,1.6533369,1.6147463 +4656000,imu,-0.28163132,0.14875281,-9.949959,-0.0074894708,-0.007939107,0.0023045682 +4660000,airspeed,1.6228849,1.5849915 +4660000,baro,487.76947 +4660000,imu,-0.23044434,0.14519963,-9.975891,-0.0014936407,-0.0047853314,-0.00036974569 +4660000,mag,0.20300001,-0.077000014,0.42600003 +4664000,airspeed,2.422023,2.3654923 +4664000,baro,487.61453 +4664000,mag,0.20300001,-0.077000014,0.42600003 +4664000,imu,-0.23106618,0.18119615,-9.943317,0.001046389,-0.0019119445,0.0046266695 +4668000,airspeed,-3.1258385,-3.0528872 +4668000,imu,-0.22178903,0.1655566,-9.913367,-0.0030219525,-0.0011332253,0.0047014127 +4668000,mag,0.201,-0.08200001,0.43 +4668000,baro,487.57697 +4672000,baro,487.6427 +4672000,imu,-0.22297958,0.15182115,-9.987613,0.0039259987,-0.0076416084,-0.0069602043 +4672000,mag,0.201,-0.08200001,0.43 +4672000,airspeed,-2.5246441,-2.4657135 +4676000,imu,-0.23379084,0.14730446,-10.014046,0.002973584,-0.009575403,-0.014331645 +4676000,airspeed,4.048037,3.9535909 +4676000,baro,487.4596 +4676000,mag,0.201,-0.08200001,0.43 +4680000,airspeed,-2.097835,-2.0488586 +4680000,imu,-0.26549444,0.20418163,-9.9471,0.0022096147,-0.006025927,-0.008786622 +4684000,baro,487.71313 +4684000,mag,0.201,-0.08200001,0.43 +4684000,airspeed,-2.358638,-2.303573 +4684000,imu,-0.25034055,0.264823,-9.974634,0.0016731746,-0.008158892,-0.004377455 +4692000,airspeed,2.5771065,2.5169551 +4692000,mag,0.201,-0.08200001,0.43 +4692000,imu,-0.13608584,0.18654606,-9.996574,0.0003633201,-0.010214542,0.00059981056 +4692000,baro,487.62393 +4696000,imu,-0.24838114,0.21011175,-9.998803,-0.0035712337,-0.008566483,0.004065978 +4696000,airspeed,3.7021363,3.6157331 +4696000,baro,487.58636 +4696000,mag,0.201,-0.08200001,0.43 +4700000,mag,0.201,-0.08200001,0.43 +4700000,baro,487.69434 +4700000,airspeed,-2.0186138,-1.9714888 +4700000,imu,-0.32662165,0.26638862,-9.944345,0.0002154348,-0.01151412,0.010078739 +4708000,airspeed,-1.4203404,-1.3871831 +4708000,mag,0.201,-0.08200001,0.43 +4708000,baro,487.68967 +4708000,imu,-0.25798804,0.23505011,-10.012424,-0.0016664494,-0.0032290341,0.002254831 +4712000,mag,0.201,-0.08200001,0.43 +4712000,imu,-0.31054917,0.26558688,-9.928639,-0.0011329193,-0.004258123,-0.0008215744 +4712000,baro,487.6568 +4712000,airspeed,1.6057436,1.5682613 +4716000,airspeed,2.4603105,2.4028802 +4716000,mag,0.201,-0.08200001,0.43 +4716000,imu,-0.27835828,0.2506967,-9.9016905,-0.0007073238,-0.0064914986,-0.0052477187 +4716000,baro,487.6568 +4720000,mag,0.19900002,-0.08100001,0.42800003 +4720000,imu,-0.23846681,0.22319283,-9.964577,0.004759218,-0.0024486608,-0.0031361268 +4720000,airspeed,-2.7150557,-2.6516848 +4720000,baro,487.61453 +4728000,mag,0.19900002,-0.08100001,0.42800003 +4728000,baro,487.6568 +4728000,airspeed,2.7483232,2.6841693 +4728000,imu,-0.3704726,0.16713662,-9.936678,-0.00016322319,-0.006723745,0.00095060864 +4732000,mag,0.19900002,-0.08100001,0.42800003 +4732000,imu,-0.330132,0.22267692,-9.932905,-0.00245512,-0.0034520747,0.0013126512 +4732000,airspeed,-2.2311502,-2.1790686 +4732000,baro,487.6568 +4736000,baro,487.7319 +4736000,imu,-0.25445268,0.1699384,-9.991847,0.002421221,-0.004278316,0.003781535 +4736000,airspeed,-2.3090641,-2.255154 +4736000,mag,0.19900002,-0.08100001,0.42800003 +4740000,baro,487.7319 +4740000,imu,-0.19266064,0.20797586,-9.995529,0.005573766,-0.0064409953,0.00016164556 +4740000,mag,0.19900002,-0.08100001,0.42800003 +4740000,airspeed,-2.5416188,-2.482279 +4744000,baro,487.52533 +4744000,imu,-0.23050036,0.19407627,-9.987976,0.000106874075,-0.0113346595,0.004225491 +4744000,mag,0.19900002,-0.08100001,0.42800003 +4744000,airspeed,2.4470227,2.3899214 +4748000,imu,-0.33413827,0.19126362,-9.942484,0.00081635243,-0.017203517,0.004025307 +4748000,airspeed,-3.706681,-3.6201856 +4752000,airspeed,-2.186732,-2.1356814 +4752000,baro,487.70374 +4752000,imu,-0.29626936,0.27318338,-9.899856,-0.00065341324,-0.01538644,-0.0038519972 +4752000,mag,0.19900002,-0.08100001,0.42800003 +4756000,mag,0.19900002,-0.08100001,0.42800003 +4756000,baro,487.7366 +4756000,imu,-0.25225508,0.21228017,-9.869291,-0.0046440065,-0.011567763,0.0040246574 +4756000,airspeed,2.8196743,2.7538416 +4760000,baro,487.6333 +4764000,mag,0.19900002,-0.08100001,0.42800003 +4764000,imu,-0.20648329,0.1937281,-9.990418,0.008224794,-0.0066767116,0.0068984064 +4764000,baro,487.6333 +4764000,airspeed,1.0942727,1.0687308 +4772000,baro,487.66617 +4772000,imu,-0.22596063,0.17683956,-9.879063,-0.0011381588,-0.0019761114,-0.002133531 +4772000,airspeed,-2.412049,-2.3557434 +4772000,mag,0.19900002,-0.08100001,0.42800003 +4780000,mag,0.19900002,-0.08100001,0.42900002 +4780000,imu,-0.26700166,0.18140851,-9.988138,-0.0011505713,-0.00731289,0.0001463072 +4780000,airspeed,1.6592225,1.620493 +4780000,baro,487.6427 +4788000,mag,0.19900002,-0.08100001,0.42900002 +4788000,imu,-0.11603574,0.1400669,-9.888149,0.00071538927,-0.006327642,0.005438215 +4788000,airspeed,-0.65273494,-0.6374993 +4788000,baro,487.62863 +4792000,imu,-0.17248683,0.09095655,-9.955855,-0.0029513554,-0.009290288,0.0033525426 +4792000,airspeed,-1.5357115,-1.4998661 +4792000,mag,0.19900002,-0.08100001,0.42900002 +4792000,baro,487.62863 +4796000,baro,487.6568 +4796000,airspeed,-2.8403833,-2.774081 +4796000,imu,-0.21888588,0.17587028,-9.965659,-0.0074804,-0.009196207,0.0025955688 +4796000,mag,0.19900002,-0.08100001,0.42900002 +4800000,airspeed,0.8799547,0.8594208 +4800000,imu,-0.21500583,0.18113652,-9.941007,-0.0014075274,-0.009681381,0.0058840243 +4800000,mag,0.19900002,-0.08100001,0.42900002 +4800000,baro,487.52533 +4804000,mag,0.19900002,-0.08100001,0.42900002 +4804000,airspeed,-2.7787533,-2.7139106 +4804000,baro,487.52533 +4804000,imu,-0.23394425,0.11636546,-9.897786,0.0028380777,-0.006941273,0.0008351192 +4812000,imu,-0.2671268,0.2229996,-10.013118,-0.0075785886,-0.015028865,0.00020924752 +4812000,mag,0.19900002,-0.08100001,0.42900002 +4812000,airspeed,3.102804,3.030369 +4812000,baro,487.69434 +4816000,imu,-0.33039528,0.24129237,-10.017913,-0.003812417,-0.0038430882,-0.002067008 +4816000,mag,0.19900002,-0.08100001,0.42900002 +4816000,baro,487.69434 +4816000,airspeed,-3.5243473,-3.4420714 +4820000,imu,-0.2812789,0.22413954,-9.908552,0.00088273984,-0.0065619834,-0.00013938008 +4820000,airspeed,2.5844705,2.5241485 +4824000,mag,0.20300001,-0.07900001,0.42400002 +4824000,airspeed,-4.3114552,-4.210825 +4824000,imu,-0.22916883,0.17410713,-9.850046,0.0019090531,-0.0052569583,0.0025781936 +4824000,baro,487.60983 +4828000,mag,0.20300001,-0.07900001,0.42400002 +4832000,imu,-0.23832802,0.16797422,-9.965159,-0.0019528129,-0.008187197,0.0006592398 +4832000,airspeed,0.51940423,0.50728184 +4832000,baro,487.59106 +4836000,imu,-0.21007195,0.20779297,-9.993762,-0.0043702316,0.00049534824,0.003331082 +4836000,airspeed,-1.040627,-1.0163329 +4836000,mag,0.20300001,-0.07900001,0.42400002 +4836000,baro,487.70374 +4840000,airspeed,-3.392891,-3.313699 +4840000,mag,0.20300001,-0.07900001,0.42400002 +4840000,baro,487.61453 +4840000,imu,-0.23129164,0.21047387,-9.944047,-0.0019093446,-0.003001124,0.004252833 +4844000,baro,487.61453 +4844000,mag,0.20300001,-0.07900001,0.42400002 +4844000,imu,-0.26299924,0.19317456,-9.87557,-0.00045636878,-0.0012992889,0.0019282425 +4844000,airspeed,-1.988286,-1.9418783 +4848000,baro,487.62863 +4848000,mag,0.20300001,-0.07900001,0.42400002 +4848000,imu,-0.24523,0.20238785,-9.952378,0.00053239247,-0.0045974716,-0.003605958 +4848000,airspeed,2.878031,2.8108544 +4852000,baro,487.69434 +4852000,mag,0.20300001,-0.07900001,0.42400002 +4852000,airspeed,2.916211,2.848132 +4852000,imu,-0.22152902,0.19403788,-10.008664,0.004698781,-0.010616262,0.0031184368 +4860000,baro,487.59106 +4860000,mag,0.20300001,-0.07900001,0.42400002 +4860000,airspeed,-2.4369795,-2.3801026 +4860000,imu,-0.2637776,0.18955232,-9.842705,-0.002483824,-0.006635088,0.005875508 +4864000,mag,0.20300001,-0.07900001,0.42400002 +4864000,imu,-0.17594603,0.11136251,-9.912314,-0.003131407,-0.0023874575,0.00080758304 +4864000,baro,487.638 +4864000,airspeed,2.773012,2.708285 +4868000,airspeed,2.2296777,2.1776333 +4868000,mag,0.20300001,-0.07900001,0.42400002 +4868000,imu,-0.15522903,0.1421157,-9.898733,-0.001199237,0.0002630024,-1.757109e-05 +4868000,baro,487.638 +4872000,mag,0.20300001,-0.07900001,0.42400002 +4872000,baro,487.67087 +4876000,airspeed,-3.263443,-3.1872842 +4876000,imu,-0.1948094,0.12524262,-9.923945,-0.00048035567,-0.008340024,-0.005248755 +4880000,airspeed,-1.7087234,-1.6688415 +4880000,mag,0.201,-0.08300001,0.42800003 +4880000,baro,487.60983 +4880000,imu,-0.22907884,0.1349718,-9.942701,-0.0040325667,-0.009042335,-0.0032827323 +4884000,baro,487.58636 +4884000,mag,0.201,-0.08300001,0.42800003 +4884000,imu,-0.26412094,0.17647041,-9.989343,-0.0009934629,-0.013714112,-0.0009697517 +4884000,airspeed,3.4909494,3.4094758 +4888000,airspeed,4.6315346,4.5234094 +4888000,baro,487.69904 +4888000,mag,0.201,-0.08300001,0.42800003 +4892000,airspeed,3.3469148,3.2687795 +4892000,mag,0.201,-0.08300001,0.42800003 +4892000,baro,487.69904 +4892000,imu,-0.15575768,0.13464627,-9.9560995,-0.0019036237,-0.009966524,0.00279316 +4896000,mag,0.201,-0.08300001,0.42800003 +4896000,imu,-0.17463721,0.21273904,-9.948392,-0.0020275975,-0.013570093,-0.0026385782 +4896000,baro,487.5582 +4896000,airspeed,-2.7221239,-2.6585975 +4900000,mag,0.201,-0.08300001,0.42800003 +4900000,baro,487.66147 +4904000,baro,487.75537 +4904000,imu,-0.14332658,0.22964305,-9.9147415,-0.00096341193,0.00058648334,0.0024810154 +4904000,mag,0.201,-0.08300001,0.42800003 +4904000,airspeed,-2.1753378,-2.1245468 +4908000,gps,488099.0,85456074.0,473977508.0,-0.01,0.0,0.01 +4912000,imu,-0.24578568,0.20088969,-9.903896,0.003613528,-0.009792072,-0.00048531324 +4912000,baro,487.61453 +4912000,mag,0.201,-0.08300001,0.42800003 +4912000,airspeed,2.0321388,1.9847081 +4916000,airspeed,2.9356887,2.8671687 +4916000,mag,0.201,-0.08300001,0.42800003 +4916000,baro,487.61453 +4916000,imu,-0.2177314,0.18830808,-9.896136,0.0017528402,-0.0075878915,-0.0048351237 +4920000,imu,-0.27818242,0.22199045,-9.929209,0.003420856,-0.001220326,-0.004450275 +4920000,mag,0.201,-0.08300001,0.42800003 +4920000,baro,487.638 +4920000,airspeed,-1.522776,-1.4872319 +4928000,mag,0.201,-0.08300001,0.42800003 +4928000,imu,-0.22966197,0.22308235,-9.962658,-0.002847129,-0.0049047377,-0.0033547722 +4928000,airspeed,0.9385538,0.9166458 +4928000,baro,487.6474 +4932000,imu,-0.21336213,0.1445901,-9.93218,-0.0033972003,-0.005138814,-0.0042667747 +4932000,airspeed,-0.8214756,-0.80230695 +4932000,mag,0.202,-0.08000001,0.42700002 +4932000,baro,487.51123 +4940000,imu,-0.28169703,0.25451422,-9.880476,-0.0010521826,-0.00046596254,0.0017147003 +4940000,airspeed,-2.5358422,-2.4766436 +4940000,mag,0.202,-0.08000001,0.42700002 +4940000,baro,487.68967 +4944000,airspeed,2.1007617,2.0517461 +4944000,baro,487.47836 +4944000,mag,0.202,-0.08000001,0.42700002 +4944000,imu,-0.22646222,0.2052952,-9.916511,-0.00051748496,-5.0940245e-05,0.0039145164 +4948000,imu,-0.15854925,0.18925574,-9.951586,-0.004606101,-0.004064695,0.0103417 +4948000,baro,487.58636 +4948000,mag,0.202,-0.08000001,0.42700002 +4948000,airspeed,-1.7657224,-1.724513 +4952000,mag,0.202,-0.08000001,0.42700002 +4952000,airspeed,2.495596,2.437331 +4952000,imu,-0.16490057,0.19241966,-9.891437,-0.00447754,-0.0048955046,0.0081309965 +4952000,baro,487.7319 +4956000,baro,487.7319 +4956000,airspeed,-2.7427173,-2.6786826 +4956000,mag,0.202,-0.08000001,0.42700002 +4956000,imu,-0.14084958,0.19572195,-9.951452,0.001509686,0.0008940614,0.0028083222 +4960000,airspeed,1.954686,1.9090583 +4960000,mag,0.202,-0.08000001,0.42700002 +4960000,imu,-0.23435977,0.23721938,-10.076852,0.0015951198,-0.0034033556,-0.00052198174 +4960000,baro,487.6568 +4964000,airspeed,2.1107132,2.061448 +4964000,mag,0.202,-0.08000001,0.42700002 +4964000,imu,-0.23057963,0.2634479,-10.038635,-0.0030464903,-0.01030985,-0.0058005163 +4964000,baro,487.61453 +4968000,airspeed,-1.5244383,-1.4888552 +4968000,mag,0.202,-0.08000001,0.42700002 +4968000,baro,487.638 +4968000,imu,-0.17920938,0.22844706,-9.943037,-0.0017666168,-0.00309169,-0.00523981 +4972000,imu,-0.24102575,0.14240164,-9.908976,0.0012128158,-0.0039912644,-0.0010085085 +4972000,mag,0.202,-0.08000001,0.42700002 +4972000,airspeed,0.7298665,0.71283376 +4972000,baro,487.5535 +4976000,mag,0.202,-0.08000001,0.42700002 +4976000,baro,487.5676 +4976000,airspeed,-1.665951,-1.6270715 +4976000,imu,-0.27817005,0.10966956,-9.876342,-4.398005e-05,-0.0096557485,-0.002159519 +4980000,airspeed,-3.4697387,-3.3887527 +4980000,imu,-0.26563033,0.1760365,-9.897109,-0.0030345262,-0.006185951,-0.0061358316 +4984000,airspeed,1.6854202,1.6460813 +4984000,baro,487.62393 +4984000,mag,0.20300001,-0.08200001,0.432 +4984000,imu,-0.13462982,0.18091735,-9.922046,-0.0033178057,-0.006893498,-0.0015672215 +4988000,baro,487.5394 +4988000,airspeed,0.8021042,0.78338635 +4988000,imu,-0.14318532,0.13189577,-9.988844,0.0007710457,-0.0072848257,-0.0009442777 +4988000,mag,0.20300001,-0.08200001,0.432 +4992000,imu,-0.23712541,0.18199965,-9.991003,-0.00048272716,-0.0028542427,-0.0029096138 +4992000,mag,0.20300001,-0.08200001,0.432 +4992000,airspeed,-1.9181844,-1.8734105 +4992000,baro,487.638 +4996000,baro,487.67557 +4996000,mag,0.20300001,-0.08200001,0.432 +4996000,imu,-0.24212275,0.17915522,-9.925494,0.0029064945,-0.007975117,-0.0029328808 +4996000,airspeed,-2.928342,-2.8599827 +5000000,imu,-0.24320208,0.19066985,-9.88626,0.005361874,-0.011999657,-0.0012341731 +5000000,mag,0.20300001,-0.08200001,0.432 +5000000,airspeed,1.8765069,1.8327101 +5000000,baro,487.60043 +5004000,baro,487.53003 +5004000,imu,-0.21903068,0.18550129,-9.869697,0.0030894494,-0.0067449384,-0.00077419094 +5004000,mag,0.20300001,-0.08200001,0.432 +5004000,airspeed,-1.2851075,-1.255119 +5008000,baro,487.53003 +5008000,mag,0.20300001,-0.08200001,0.432 +5008000,imu,-0.23352917,0.17345208,-10.013875,0.0019509046,-0.005339313,-0.00070062623 +5008000,airspeed,-1.9246941,-1.8797804 +5012000,baro,487.76007 +5012000,mag,0.20300001,-0.08200001,0.432 +5016000,imu,-0.16659997,0.14200544,-9.948234,-0.0015443363,-0.0032639594,-0.0027959903 +5016000,mag,0.20300001,-0.08200001,0.432 +5016000,baro,487.76007 +5016000,airspeed,3.0366395,2.9657366 +5024000,airspeed,-2.5466013,-2.4871721 +5024000,baro,487.5488 +5024000,imu,-0.22466353,0.16645436,-9.9427805,0.00066389027,-0.005484795,0.000169159 +5024000,mag,0.20300001,-0.08200001,0.432 +5028000,imu,-0.21054842,0.20411582,-9.992678,-0.0042229425,-0.0040288894,0.000629985 +5028000,baro,487.5488 +5028000,airspeed,-3.5465736,-3.4638083 +5028000,mag,0.20300001,-0.08200001,0.432 +5032000,baro,487.62863 +5032000,imu,-0.19232666,0.24707413,-9.9557495,-0.004389338,-0.0022992275,0.0009816112 +5032000,mag,0.20300001,-0.08200001,0.432 +5032000,airspeed,-2.8331099,-2.766982 +5036000,imu,-0.22173929,0.16304998,-9.9188,0.00040888245,-0.0045012725,0.004613102 +5036000,airspeed,1.5465527,1.5104527 +5036000,mag,0.2,-0.08200001,0.42800003 +5036000,baro,487.6474 +5040000,imu,-0.26095134,0.14332166,-9.962509,0.007364198,-0.0069507784,0.0073019527 +5040000,airspeed,-0.8632151,-0.8430658 +5040000,baro,487.6474 +5040000,mag,0.2,-0.08200001,0.42800003 +5044000,mag,0.2,-0.08200001,0.42800003 +5044000,airspeed,3.5689838,3.485691 +5044000,baro,487.57227 +5044000,imu,-0.25734368,0.21066003,-9.992428,0.0070392545,-0.0021978235,0.008653952 +5048000,mag,0.2,-0.08200001,0.42800003 +5048000,baro,487.7225 +5048000,airspeed,2.8060114,2.7405007 +5048000,imu,-0.1950418,0.23571448,-9.926322,0.0073201046,-0.002718892,0.004082145 +5052000,baro,487.50656 +5052000,imu,-0.16329207,0.17040463,-9.969449,0.0058527715,-0.006849977,-0.0003214446 +5052000,mag,0.2,-0.08200001,0.42800003 +5052000,airspeed,-2.8757823,-2.8086786 +5056000,baro,487.68027 +5056000,mag,0.2,-0.08200001,0.42800003 +5056000,airspeed,-1.9161012,-1.8713712 +5056000,imu,-0.1833326,0.15910345,-10.014837,0.0022276344,-0.010174868,-0.006968352 +5060000,airspeed,4.8515334,4.738278 +5060000,imu,-0.1846619,0.21433152,-9.956044,0.0011979563,-0.0021145488,-0.004521525 +5064000,airspeed,2.399236,2.3432283 +5064000,imu,-0.18351227,0.16779664,-9.921639,-0.0008319385,0.0049345833,0.011431322 +5064000,mag,0.2,-0.08200001,0.42800003 +5064000,baro,487.67557 +5068000,baro,487.70844 +5068000,mag,0.2,-0.08200001,0.42800003 +5068000,airspeed,3.0403588,2.969379 +5068000,imu,-0.25386763,0.18900059,-9.915477,0.0007445989,-0.00952315,0.0070128236 +5076000,airspeed,-1.2517984,-1.222589 +5076000,mag,0.2,-0.08200001,0.42800003 +5076000,imu,-0.19690797,0.23893179,-9.934427,0.0013127612,-0.00044280867,-0.0016484696 +5076000,baro,487.50656 +5084000,mag,0.2,-0.08200001,0.42800003 +5084000,baro,487.62863 +5084000,airspeed,-2.4811628,-2.42325 +5084000,imu,-0.21430285,0.21077631,-9.982756,-0.005762431,-0.003932633,0.0056109503 +5088000,imu,-0.2529401,0.25909638,-9.91494,-0.0026100872,-0.00955663,-0.003905219 +5088000,mag,0.201,-0.08300001,0.42800003 +5088000,baro,487.78824 +5088000,airspeed,2.073232,2.024821 +5092000,baro,487.5394 +5092000,airspeed,3.4013875,3.322013 +5092000,mag,0.201,-0.08300001,0.42800003 +5092000,imu,-0.27454713,0.17011996,-9.9403,0.0036576223,-0.0043221675,-0.0072713788 +5096000,airspeed,-1.4993976,-1.4643803 +5096000,imu,-0.23224062,0.15595666,-9.916589,-0.00035111906,-0.0034509385,-0.0018201796 +5096000,baro,487.85397 +5096000,mag,0.201,-0.08300001,0.42800003 +5100000,mag,0.201,-0.08300001,0.42800003 +5100000,airspeed,0.9515412,0.92933375 +5100000,imu,-0.19846307,0.20018719,-9.940422,-0.003994265,-0.008897133,0.0009013321 +5100000,baro,487.58167 +5104000,mag,0.201,-0.08300001,0.42800003 +5104000,imu,-0.20385577,0.25122407,-10.035092,0.0058891266,-0.008334316,0.0065871608 +5104000,baro,487.58167 +5104000,airspeed,2.4852467,2.427245 +5108000,mag,0.201,-0.08300001,0.42800003 +5108000,gps,488102.0,85456074.0,473977508.0,0.0,0.0,0.01 +5108000,airspeed,4.024202,3.930277 +5108000,imu,-0.2644066,0.24150062,-10.034886,0.007525101,-0.010326928,0.0036650884 +5108000,baro,487.60983 +5112000,baro,487.71313 +5112000,imu,-0.22290537,0.24042034,-9.980527,-0.00029083606,-0.009558969,0.006216163 +5112000,airspeed,3.7888105,3.700356 +5112000,mag,0.201,-0.08300001,0.42800003 +5116000,airspeed,0.48856422,0.47716346 +5116000,imu,-0.18634081,0.28823578,-10.010237,-0.00039357887,-0.010013244,0.00992796 +5116000,mag,0.201,-0.08300001,0.42800003 +5116000,baro,487.52533 +5120000,baro,487.70844 +5120000,airspeed,-2.928056,-2.8596985 +5120000,imu,-0.23876028,0.21426368,-10.004229,-0.0028500403,-0.007636154,0.0051664547 +5120000,mag,0.201,-0.08300001,0.42800003 +5124000,mag,0.201,-0.08300001,0.42800003 +5124000,airspeed,-3.204833,-3.1300323 +5124000,imu,-0.22478004,0.2069871,-9.984662,-0.001230503,-0.004227632,0.0027478528 +5124000,baro,487.60983 +5128000,imu,-0.25553647,0.2034857,-10.001441,-0.002540458,-0.00848836,-0.0029322358 +5128000,airspeed,-4.7543926,-4.643397 +5128000,baro,487.70844 +5128000,mag,0.201,-0.08300001,0.42800003 +5136000,imu,-0.20451945,0.16066298,-9.889546,0.00039706854,-0.0032396244,0.0015767016 +5136000,mag,0.201,-0.08300001,0.42800003 +5136000,airspeed,3.2027304,3.1279886 +5136000,baro,487.5535 +5140000,imu,-0.250096,0.23177727,-9.911057,0.003009902,-0.011870672,0.0025623804 +5140000,airspeed,1.9802321,1.9339964 +5140000,baro,487.75537 +5140000,mag,0.2,-0.07800001,0.42700002 +5144000,mag,0.2,-0.07800001,0.42700002 +5144000,airspeed,-2.4716752,-2.4139705 +5144000,imu,-0.28904104,0.23540445,-9.90733,0.007057027,-0.009645815,0.0010203832 +5144000,baro,487.71783 +5148000,airspeed,-4.2641788,-4.164634 +5148000,imu,-0.28473946,0.18914229,-9.951996,0.003505591,-0.004194625,-0.0025387346 +5148000,mag,0.2,-0.07800001,0.42700002 +5148000,baro,487.68027 +5152000,imu,-0.23232698,0.19890647,-9.964006,0.0029676866,-0.006950288,-0.0040304125 +5152000,mag,0.2,-0.07800001,0.42700002 +5152000,baro,487.58636 +5152000,airspeed,1.7291387,1.688783 +5156000,mag,0.2,-0.07800001,0.42700002 +5156000,baro,487.59576 +5156000,airspeed,-1.947382,-1.9019314 +5156000,imu,-0.19771992,0.19384924,-9.8916025,0.003542636,-0.0035269859,0.0018293011 +5160000,imu,-0.18901566,0.22161101,-9.864657,-0.0042856936,0.0012929407,0.004449746 +5160000,baro,487.53473 +5160000,airspeed,0.8443072,0.82460463 +5160000,mag,0.2,-0.07800001,0.42700002 +5164000,airspeed,1.2965028,1.2662479 +5164000,imu,-0.1950616,0.24936128,-9.949443,-0.001929702,-0.0030583043,0.0038819225 +5164000,baro,487.53473 +5164000,mag,0.2,-0.07800001,0.42700002 +5168000,baro,487.61453 +5168000,imu,-0.14659572,0.20368735,-9.980194,0.00031852713,-0.010225692,0.0048736674 +5168000,airspeed,1.6336639,1.5955333 +5168000,mag,0.2,-0.07800001,0.42700002 +5176000,airspeed,1.3965491,1.3639648 +5176000,baro,487.4737 +5176000,mag,0.2,-0.07800001,0.42700002 +5176000,imu,-0.27231064,0.18289976,-9.890136,-0.0034248163,-0.0047488995,0.00032786318 +5180000,airspeed,-3.2539663,-3.1780243 +5180000,imu,-0.2976874,0.237348,-9.895477,-0.0025509933,-0.002130697,0.00022488786 +5180000,baro,487.57697 +5180000,mag,0.2,-0.07800001,0.42700002 +5184000,imu,-0.26016623,0.24287815,-9.918001,-0.00024821606,-0.0074020065,-0.003775774 +5184000,baro,487.57697 +5184000,mag,0.2,-0.07800001,0.42700002 +5184000,airspeed,-1.0743977,-1.0493231 +5188000,mag,0.2,-0.07800001,0.42700002 +5188000,imu,-0.26719335,0.24985959,-9.9581995,-0.0010219545,-0.011722577,-0.005164838 +5188000,airspeed,-2.7761443,-2.7113419 +5188000,baro,487.6521 +5192000,baro,487.638 +5192000,mag,0.2,-0.08000001,0.432 +5192000,airspeed,2.1273105,2.0776553 +5192000,imu,-0.23795564,0.23110943,-9.877669,-0.0019766828,-0.00995049,-0.00078669237 +5196000,imu,-0.15771641,0.17634264,-9.820079,-0.0035882078,-0.0034949137,0.005114141 +5196000,baro,487.638 +5196000,airspeed,2.5215688,2.4627109 +5196000,mag,0.2,-0.08000001,0.432 +5200000,airspeed,2.1989567,2.1476452 +5200000,baro,487.51123 +5200000,imu,-0.13190243,0.19927886,-9.83099,-0.0038894536,-0.0053334795,-0.00078983273 +5200000,mag,0.2,-0.08000001,0.432 +5208000,imu,-0.2247967,0.19031413,-9.896393,0.0072077336,-0.00772717,0.0016859605 +5208000,mag,0.2,-0.08000001,0.432 +5208000,baro,487.69434 +5208000,airspeed,-3.2475624,-3.1717474 +5212000,imu,-0.17220724,0.22247678,-9.9190445,0.0063330433,-0.0055241315,0.0023625623 +5212000,mag,0.2,-0.08000001,0.432 +5212000,baro,487.68027 +5212000,airspeed,2.922745,2.8545158 +5216000,mag,0.2,-0.08000001,0.432 +5216000,imu,-0.20927756,0.21681176,-9.956883,0.0054667424,0.00047901645,-0.0044209324 +5216000,airspeed,1.9915062,1.9450161 +5216000,baro,487.68027 +5220000,imu,-0.15765837,0.2329389,-9.920585,0.005781214,-0.0007398882,0.00022302968 +5220000,airspeed,-3.6707065,-3.585039 +5220000,baro,487.57697 +5220000,mag,0.2,-0.08000001,0.432 +5224000,imu,-0.1937419,0.1569914,-9.932514,-0.003722473,-0.004924384,0.0068973084 +5224000,mag,0.2,-0.08000001,0.432 +5224000,airspeed,-4.171286,-4.073936 +5224000,baro,487.57697 +5228000,mag,0.2,-0.08000001,0.432 +5228000,baro,487.68967 +5232000,airspeed,-0.9417569,-0.9197718 +5232000,imu,-0.22165595,0.08427397,-9.943665,0.0061161816,-0.007636305,-0.0048475857 +5232000,baro,487.68967 +5232000,mag,0.2,-0.08000001,0.432 +5236000,airspeed,3.6385756,3.553647 +5236000,imu,-0.28139812,0.10354828,-9.943134,0.003330177,-0.009045994,-0.0059436522 +5236000,baro,487.62863 +5236000,mag,0.2,-0.08000001,0.432 +5240000,mag,0.201,-0.08000001,0.43 +5240000,baro,487.53003 +5240000,airspeed,-3.274358,-3.1979492 +5240000,imu,-0.23453008,0.12277724,-9.9251995,-0.0010800093,-0.0036714226,-0.004947383 +5248000,mag,0.201,-0.08000001,0.43 +5248000,airspeed,0.88087445,0.86032146 +5248000,imu,-0.11869671,0.20665999,-9.951882,-0.0058917208,-0.0029000763,-0.00078375044 +5248000,baro,487.47836 +5252000,mag,0.201,-0.08000001,0.43 +5252000,imu,-0.17608343,0.17154312,-9.929001,-0.0007948468,-0.004199634,0.006612608 +5252000,airspeed,2.7414937,2.6775055 +5252000,baro,487.61923 +5256000,mag,0.201,-0.08000001,0.43 +5256000,imu,-0.15843119,0.22480671,-9.925335,0.0026871585,-0.008538343,0.0071467594 +5256000,airspeed,3.0765128,3.004715 +5256000,baro,487.5629 +5264000,imu,-0.26601896,0.21204238,-9.928905,-0.0014878691,-0.00069240906,0.0017414892 +5264000,airspeed,1.3998191,1.3671457 +5264000,mag,0.201,-0.08000001,0.43 +5264000,baro,487.62863 +5268000,baro,487.67557 +5268000,airspeed,-3.0208688,-2.9503498 +5268000,mag,0.201,-0.08000001,0.43 +5268000,imu,-0.26932803,0.22804959,-9.887824,-0.0027665314,-0.006814736,0.0004487742 +5272000,airspeed,0.23608054,0.2305686 +5272000,mag,0.201,-0.08000001,0.43 +5272000,imu,-0.18806164,0.19407849,-9.916999,0.0015370073,-0.0054730093,0.0018692537 +5272000,baro,487.7413 +5276000,imu,-0.18512426,0.13563049,-9.814912,-0.0009421746,-0.005939334,0.0053102826 +5276000,airspeed,3.29695,3.2200181 +5276000,baro,487.51123 +5276000,mag,0.201,-0.08000001,0.43 +5280000,imu,-0.20170015,0.19615021,-9.838408,-0.00093327014,-0.003495304,0.003411077 +5280000,airspeed,-1.7115155,-1.6715592 +5280000,baro,487.69904 +5280000,mag,0.201,-0.08000001,0.43 +5284000,mag,0.201,-0.08000001,0.43 +5284000,airspeed,0.5904016,0.5766233 +5284000,baro,487.5582 +5284000,imu,-0.24653171,0.2771045,-9.875326,0.0043462715,-0.0044498052,-0.00087590644 +5288000,baro,487.6474 +5288000,mag,0.201,-0.08000001,0.43 +5288000,airspeed,-2.0117633,-1.964804 +5288000,imu,-0.26716632,0.2175877,-9.890246,0.0006956492,-0.0094012935,-0.0032890684 +5292000,airspeed,1.7048542,1.6650761 +5292000,baro,487.47836 +5292000,imu,-0.30677277,0.12242158,-9.9332285,-0.000599265,-0.008762997,-0.005096587 +5292000,mag,0.2,-0.08200001,0.42800003 +5296000,airspeed,-2.189323,-2.138241 +5296000,imu,-0.2712427,0.13730583,-9.944491,-0.0025812823,-0.0055702887,-0.009483514 +5296000,mag,0.2,-0.08200001,0.42800003 +5296000,baro,487.47836 +5300000,imu,-0.20904264,0.15140936,-9.961441,-0.004183705,-0.0020819237,-0.005296116 +5300000,airspeed,2.6040006,2.5432239 +5300000,baro,487.60513 +5300000,mag,0.2,-0.08200001,0.42800003 +5304000,baro,487.7225 +5304000,mag,0.2,-0.08200001,0.42800003 +5304000,imu,-0.21485832,0.17206052,-9.954864,0.002377358,-0.0029725737,-0.0013282287 +5304000,airspeed,4.2450385,4.145931 +5308000,baro,487.7225 +5308000,airspeed,4.005953,3.9124272 +5308000,imu,-0.1841007,0.19658442,-9.975482,-0.0016398819,-0.0118045695,-0.0020440074 +5308000,mag,0.2,-0.08200001,0.42800003 +5308000,gps,488109.0,85456074.0,473977508.0,0.03,-0.01,0.0 +5316000,airspeed,3.9282014,3.8365097 +5316000,mag,0.2,-0.08200001,0.42800003 +5316000,baro,487.638 +5316000,imu,-0.22879578,0.25197124,-9.955387,-0.0003835742,-0.0014413616,0.0019528109 +5324000,mag,0.2,-0.08200001,0.42800003 +5324000,baro,487.6474 +5324000,imu,-0.17241475,0.24916255,-9.933468,0.0031278112,-0.009852458,-0.006024993 +5324000,airspeed,-1.10987,-1.083963 +5328000,airspeed,2.1607108,2.1102753 +5328000,baro,487.6474 +5328000,imu,-0.2638656,0.22902416,-9.889191,0.0048916438,-0.0065888707,-0.00691769 +5332000,imu,-0.25220823,0.2097708,-9.893462,0.0027820002,-0.0020639605,0.0009729219 +5332000,mag,0.2,-0.08200001,0.42800003 +5332000,baro,487.6474 +5332000,airspeed,-3.1262064,-3.053234 +5336000,airspeed,2.0075462,1.960692 +5336000,imu,-0.20476711,0.16009293,-9.912616,0.0006387878,-0.0024308544,0.00083598215 +5336000,mag,0.2,-0.08200001,0.42800003 +5336000,baro,487.59106 +5344000,mag,0.2,-0.08200001,0.42800003 +5344000,baro,487.53473 +5344000,imu,-0.12016438,0.2972867,-9.920342,-0.000542599,-0.006440437,-0.0021695646 +5344000,airspeed,-0.97465247,-0.9519082 +5348000,airspeed,3.116024,3.043273 +5348000,baro,487.7319 +5348000,imu,-0.27381486,0.24913764,-9.947208,-0.0044345004,-0.0026627688,0.0036205912 +5348000,mag,0.19900002,-0.07900001,0.42800003 +5352000,imu,-0.2900793,0.24908112,-9.945333,-0.0035236815,0.00016870408,0.0060084173 +5352000,mag,0.19900002,-0.07900001,0.42800003 +5352000,baro,487.7319 +5352000,airspeed,3.009985,2.9397097 +5356000,airspeed,-0.53413737,-0.52167016 +5356000,baro,487.62393 +5356000,imu,-0.21139307,0.25135008,-9.976006,-0.00034757552,-0.0042335694,0.0023210836 +5356000,mag,0.19900002,-0.07900001,0.42800003 +5360000,imu,-0.22297372,0.2761806,-10.010461,0.0010424037,-0.0075202174,0.0033829533 +5360000,baro,487.58636 +5360000,mag,0.19900002,-0.07900001,0.42800003 +5360000,airspeed,3.1993213,3.124653 +5364000,baro,487.61453 +5364000,mag,0.19900002,-0.07900001,0.42800003 +5364000,imu,-0.2472738,0.17475386,-10.054506,0.0074937767,-0.004589067,0.0013895689 +5364000,airspeed,-2.1175969,-2.0681713 +5368000,baro,487.61453 +5368000,mag,0.19900002,-0.07900001,0.42800003 +5368000,imu,-0.29117677,0.16571485,-10.065423,0.0062545277,-0.0044947704,0.0046858154 +5368000,airspeed,2.0496585,2.001819 +5372000,imu,-0.26820844,0.22779916,-10.025598,-0.0018924798,-0.01252025,0.0074565355 +5372000,mag,0.19900002,-0.07900001,0.42800003 +5372000,baro,487.51593 +5372000,airspeed,-3.6298542,-3.545153 +5376000,baro,487.43613 +5376000,mag,0.19900002,-0.07900001,0.42800003 +5376000,airspeed,-1.576494,-1.5397149 +5376000,imu,-0.21197821,0.22248165,-9.979759,-0.0031079971,-0.013583483,0.00057211815 +5384000,mag,0.19900002,-0.07900001,0.42800003 +5384000,imu,-0.19999367,0.21601588,-9.964084,-0.005438036,-0.0012138806,-0.00048027537 +5384000,baro,487.6427 +5384000,airspeed,-1.9185323,-1.8737499 +5388000,mag,0.19900002,-0.07900001,0.42800003 +5388000,imu,-0.23197502,0.22509001,-9.999295,-0.008193397,0.000112344904,0.005191767 +5388000,airspeed,-1.7663112,-1.7250764 +5388000,baro,487.69434 +5392000,airspeed,2.683592,2.620961 +5392000,imu,-0.28028998,0.19785415,-9.9482765,-0.009723369,-0.008467226,0.0041354783 +5392000,baro,487.58636 +5392000,mag,0.19900002,-0.07900001,0.42800003 +5400000,imu,-0.18973176,0.15072785,-9.971441,-0.0030586622,-0.012202623,-0.0011552843 +5400000,airspeed,-1.9966683,-1.9500749 +5400000,baro,487.53003 +5400000,mag,0.19900002,-0.08100001,0.43300003 +5404000,imu,-0.13859151,0.17635113,-9.914427,0.0031522636,-0.01259021,-0.0021060088 +5404000,airspeed,1.8165088,1.7740899 +5404000,mag,0.19900002,-0.08100001,0.43300003 +5404000,baro,487.80704 +5408000,mag,0.19900002,-0.08100001,0.43300003 +5408000,airspeed,-3.264113,-3.1879394 +5408000,baro,487.5488 +5408000,imu,-0.19974972,0.22450262,-9.931154,0.001558844,-0.016073728,0.0023167885 +5412000,baro,487.5488 +5412000,mag,0.19900002,-0.08100001,0.43300003 +5416000,mag,0.19900002,-0.08100001,0.43300003 +5416000,imu,-0.22359939,0.16329575,-9.944578,-0.00047898284,-0.0025533985,-0.0014339006 +5416000,baro,487.60513 +5416000,airspeed,-2.0334957,-1.9860344 +5424000,mag,0.19900002,-0.08100001,0.43300003 +5424000,imu,-0.15387115,0.0954322,-9.951609,-0.00027278048,-0.008962491,-0.0005967589 +5424000,baro,487.4502 +5424000,airspeed,-0.94464034,-0.9226009 +5428000,baro,487.8164 +5428000,airspeed,-0.598827,-0.58484304 +5428000,mag,0.19900002,-0.08100001,0.43300003 +5428000,imu,-0.15359542,0.16816401,-9.896553,-0.0019330857,-0.0035531253,0.0054350286 +5432000,imu,-0.19641387,0.28820604,-9.87967,-0.004517362,-0.0053570336,0.005319347 +5432000,mag,0.19900002,-0.08100001,0.43300003 +5432000,baro,487.8164 +5432000,airspeed,0.5851644,0.5714995 +5436000,airspeed,-1.9916748,-1.9451808 +5436000,mag,0.19900002,-0.08100001,0.43300003 +5436000,imu,-0.257066,0.28947943,-9.961037,-0.0018103113,-0.010222282,0.0031402274 +5436000,baro,487.68027 +5440000,imu,-0.26451483,0.28684902,-9.931038,-0.0005597322,-0.0052706944,-0.00351136 +5440000,airspeed,1.5280924,1.4924222 +5444000,mag,0.19900002,-0.08100001,0.43300003 +5444000,imu,-0.24394436,0.25921535,-9.897587,-0.003865256,-0.006763661,-0.00455338 +5444000,baro,487.5441 +5444000,airspeed,2.0519083,2.0040247 +5448000,airspeed,2.2158213,2.1640759 +5448000,baro,487.8258 +5448000,imu,-0.16895977,0.20325081,-9.94428,-0.002320774,-0.005839403,-0.0041745706 +5448000,mag,0.2,-0.08000001,0.42900002 +5452000,mag,0.2,-0.08000001,0.42900002 +5452000,baro,487.6333 +5452000,imu,-0.17285584,0.17701024,-9.959228,0.00043851172,-0.008140704,-0.0017732669 +5452000,airspeed,-1.3479527,-1.3164897 +5456000,imu,-0.21390443,0.20212759,-9.943632,-0.002520848,-0.009093425,0.004061129 +5456000,mag,0.2,-0.08000001,0.42900002 +5456000,airspeed,0.6296549,0.6149663 +5456000,baro,487.40326 +5464000,airspeed,2.6122432,2.5512936 +5464000,baro,487.47836 +5464000,imu,-0.25032517,0.19342333,-9.922269,-9.3988914e-05,0.0010780545,-0.00033403272 +5464000,mag,0.2,-0.08000001,0.42900002 +5468000,airspeed,-3.9053338,-3.814189 +5468000,imu,-0.2134177,0.18024315,-9.937071,0.001535279,0.0010483317,-0.0020550548 +5468000,mag,0.2,-0.08000001,0.42900002 +5468000,baro,487.58636 +5472000,baro,487.5676 +5472000,imu,-0.15812212,0.20835453,-9.914085,-0.0013929832,-0.005977757,-0.0020185038 +5472000,mag,0.2,-0.08000001,0.42900002 +5472000,airspeed,2.559351,2.4996216 +5476000,airspeed,3.040617,2.9696684 +5476000,imu,-0.14757796,0.21874589,-9.927299,-0.0050841644,-0.009760391,-0.009714619 +5476000,mag,0.2,-0.08000001,0.42900002 +5476000,baro,487.50186 +5480000,airspeed,2.111941,2.06265 +5480000,imu,-0.18374877,0.19430582,-9.934754,-0.0029223363,-0.004115202,-0.0074925413 +5480000,mag,0.2,-0.08000001,0.42900002 +5480000,baro,487.59576 +5488000,mag,0.2,-0.08000001,0.42900002 +5488000,imu,-0.20487754,0.16363463,-9.902695,-0.0019158303,-0.00770952,0.0023402448 +5488000,baro,487.59106 +5488000,airspeed,2.7672417,2.7026572 +5492000,mag,0.2,-0.08000001,0.42900002 +5492000,airspeed,-2.5719998,-2.5119786 +5492000,baro,487.5488 +5492000,imu,-0.20647553,0.17511562,-9.963756,-0.0018799662,-0.0037975248,-0.00082775264 +5496000,airspeed,1.8257431,1.7831477 +5496000,baro,487.44553 +5496000,mag,0.2,-0.08000001,0.42900002 +5496000,imu,-0.12270159,0.22348946,-9.966258,0.0053784708,-0.0046395944,-0.00070142065 +5500000,mag,0.19800001,-0.07900001,0.42800003 +5500000,baro,487.44553 +5500000,imu,-0.14760149,0.20747672,-9.930668,0.00534046,-0.009144257,-0.0023275665 +5500000,airspeed,-2.6166344,-2.555587 +5504000,airspeed,3.0772274,3.0054111 +5504000,baro,487.57227 +5504000,mag,0.19800001,-0.07900001,0.42800003 +5504000,imu,-0.2486695,0.19743717,-9.915577,0.0021973809,-0.010137399,0.0011109699 +5508000,gps,488107.0,85456074.0,473977508.0,0.0,0.01,0.01 +5512000,mag,0.19800001,-0.07900001,0.42800003 +5512000,baro,487.66147 +5512000,imu,-0.16221118,0.1833349,-10.00303,0.00090424524,-0.006887007,0.002623938 +5512000,airspeed,1.2319832,1.203225 +5516000,mag,0.19800001,-0.07900001,0.42800003 +5516000,baro,487.58167 +5516000,airspeed,2.100477,2.051455 +5516000,imu,-0.1266132,0.18186256,-10.008917,0.002499335,-0.0053252135,0.0017366655 +5520000,imu,-0.17765015,0.20663263,-9.92734,0.0018220013,-0.002217175,-0.0014719813 +5520000,mag,0.19800001,-0.07900001,0.42800003 +5520000,baro,487.59106 +5520000,airspeed,-3.309055,-3.2318249 +5524000,imu,-0.24192628,0.17885531,-9.910597,-0.0012866195,-0.00024006942,-0.005251331 +5524000,baro,487.68027 +5524000,airspeed,2.039945,1.9923239 +5524000,mag,0.19800001,-0.07900001,0.42800003 +5532000,mag,0.19800001,-0.07900001,0.42800003 +5532000,airspeed,-1.3837485,-1.3514535 +5532000,imu,-0.15555,0.25988477,-9.903943,-0.0055290274,-0.0071148365,-0.0010213254 +5532000,baro,487.58636 +5536000,imu,-0.22191972,0.28639638,-9.889515,-0.0030273572,-0.008943282,-0.0046266643 +5536000,mag,0.19800001,-0.07900001,0.42800003 +5536000,airspeed,-2.530039,-2.4710004 +5536000,baro,487.52533 +5540000,imu,-0.24620898,0.26809457,-9.995686,-0.0070682084,-0.0069774883,0.0032486836 +5540000,airspeed,3.3176348,3.2402174 +5540000,baro,487.52533 +5540000,mag,0.19800001,-0.07900001,0.42800003 +5544000,mag,0.19800001,-0.07900001,0.42800003 +5544000,imu,-0.22132936,0.32774502,-9.994013,-0.009056394,-0.0062545002,0.0010112332 +5544000,airspeed,1.8422059,1.7992134 +5544000,baro,487.5676 +5548000,mag,0.19800001,-0.07900001,0.42800003 +5548000,baro,487.6521 +5548000,airspeed,3.70184,3.6154296 +5552000,imu,-0.21591136,0.20232841,-9.930295,0.0020131886,-0.0020406467,-0.00138024 +5556000,airspeed,0.6818326,0.6659195 +5556000,imu,-0.2483154,0.2287858,-9.929005,-0.007116981,-0.009998147,-0.0035554704 +5556000,baro,487.58636 +5556000,mag,0.19900002,-0.08200001,0.42900002 +5560000,baro,487.58636 +5560000,airspeed,1.5598323,1.5234278 +5560000,imu,-0.21479061,0.24220134,-9.908426,-0.0073606456,-0.005831272,-0.005195963 +5560000,mag,0.19900002,-0.08200001,0.42900002 +5564000,imu,-0.1956728,0.16565502,-9.895782,-0.003965946,-0.0031593377,-0.003990958 +5564000,mag,0.19900002,-0.08200001,0.42900002 +5564000,airspeed,-0.87843126,-0.8579243 +5564000,baro,487.69434 +5568000,imu,-0.21296866,0.1557836,-9.919706,-0.006915422,-0.0068929326,-0.00024630397 +5568000,mag,0.19900002,-0.08200001,0.42900002 +5568000,baro,487.6333 +5568000,airspeed,1.4529513,1.4190375 +5572000,baro,487.6333 +5572000,mag,0.19900002,-0.08200001,0.42900002 +5576000,imu,-0.25082946,0.19576938,-9.942326,-0.0032592556,-0.009963786,-0.0014751072 +5576000,airspeed,2.2367961,2.184589 +5580000,mag,0.19900002,-0.08200001,0.42900002 +5580000,airspeed,-3.2411819,-3.1655412 +5580000,baro,487.5629 +5580000,imu,-0.2934628,0.20030166,-9.914599,0.0010920608,-0.007773759,-0.0058482364 +5588000,mag,0.19900002,-0.08200001,0.42900002 +5588000,airspeed,1.8360914,1.7932335 +5588000,imu,-0.22996402,0.18694048,-9.962926,0.0030496898,0.00029510786,-0.004883168 +5588000,baro,487.638 +5592000,mag,0.19900002,-0.08200001,0.42900002 +5592000,baro,487.50186 +5592000,imu,-0.33357647,0.17877351,-9.967022,0.0010567727,-0.007508817,-0.007916899 +5592000,airspeed,2.41241,2.3561194 +5596000,baro,487.69904 +5596000,airspeed,-2.2297318,-2.1776774 +5596000,imu,-0.28359166,0.1789769,-9.931599,0.001669935,-0.007734553,-0.00053791964 +5596000,mag,0.19900002,-0.08200001,0.42900002 +5600000,airspeed,2.1429706,2.0929615 +5600000,imu,-0.24621491,0.23487233,-9.901069,0.001313025,-0.002845117,-0.0022960512 +5600000,mag,0.19900002,-0.08200001,0.42900002 +5600000,landed,1.0 +5600000,baro,487.5488 +5604000,baro,487.7319 +5604000,airspeed,-2.9196298,-2.851464 +5604000,mag,0.19900002,-0.08200001,0.42900002 +5604000,imu,-0.19654644,0.2654838,-9.956293,-0.003477891,-0.00069627137,-0.007866236 +5608000,mag,0.19700001,-0.08100001,0.42900002 +5608000,baro,487.7319 +5608000,imu,-0.2025313,0.2335381,-10.00508,-0.004415228,0.00022923904,-0.004527332 +5608000,airspeed,2.2510674,2.198511 +5612000,baro,487.58167 +5612000,imu,-0.25570953,0.21331148,-9.994902,0.0007103545,0.003903414,-0.0032746778 +5612000,airspeed,-3.3472009,-3.269082 +5612000,mag,0.19700001,-0.08100001,0.42900002 +5616000,mag,0.19700001,-0.08100001,0.42900002 +5616000,baro,487.58636 +5616000,airspeed,3.301854,3.2247927 +5616000,imu,-0.2189037,0.2570985,-9.965183,0.004848011,-0.0007265071,-0.0008007595 +5620000,mag,0.19700001,-0.08100001,0.42900002 +5620000,baro,487.43613 +5620000,imu,-0.21490954,0.21880257,-9.952556,0.0045146365,-0.009180923,0.0022020373 +5620000,airspeed,-2.811683,-2.746087 +5624000,mag,0.19700001,-0.08100001,0.42900002 +5624000,airspeed,-3.1287923,-3.0557442 +5624000,imu,-0.19512196,0.13164227,-9.975991,0.0029912943,-0.0069529894,-0.002862255 +5624000,baro,487.7319 +5628000,imu,-0.17389353,0.07284645,-9.980339,0.0007489892,-0.007903577,-0.007725538 +5628000,airspeed,2.4362507,2.379365 +5632000,baro,487.77417 +5632000,imu,-0.22934394,0.10307835,-9.919412,0.0010826028,-0.009242814,-0.004464005 +5632000,mag,0.19700001,-0.08100001,0.42900002 +5632000,airspeed,-3.153127,-3.0795026 +5636000,baro,487.66617 +5636000,imu,-0.20286182,0.20380713,-9.900586,-0.00038569391,-0.007082094,-0.0054533267 +5636000,mag,0.19700001,-0.08100001,0.42900002 +5636000,airspeed,2.8373003,2.7710683 +5640000,mag,0.19700001,-0.08100001,0.42900002 +5640000,baro,487.7366 +5644000,imu,-0.1707857,0.19518024,-9.909605,-0.0016568077,-0.010772027,-0.0017016279 +5644000,airspeed,-3.1670716,-3.0931284 +5644000,baro,487.7366 +5648000,imu,-0.26428616,0.15637372,-9.946184,-0.0048762746,-0.012868833,0.002689872 +5648000,baro,487.57227 +5648000,airspeed,-1.9052242,-1.8607602 +5648000,mag,0.19700001,-0.08100001,0.42900002 +5652000,mag,0.19700001,-0.08100001,0.42900002 +5652000,baro,487.48306 +5652000,airspeed,-2.737806,-2.6739256 +5652000,imu,-0.19624534,0.17934532,-9.976624,4.286833e-05,-0.0054163616,0.00351645 +5656000,mag,0.201,-0.08000001,0.42900002 +5656000,imu,-0.14088276,0.26022115,-9.92004,-0.0019076571,-0.0051968372,0.0025091227 +5656000,baro,487.51593 +5656000,airspeed,2.7256382,2.6620364 +5664000,imu,-0.19708182,0.22840606,-10.05971,-0.008355272,-0.0011876316,0.002896895 +5664000,baro,487.76477 +5664000,mag,0.201,-0.08000001,0.42900002 +5664000,airspeed,0.51166767,0.49972063 +5672000,airspeed,-3.941162,-3.8491616 +5672000,imu,-0.16728096,0.18178788,-9.983463,6.9971575e-05,0.0043266146,0.0068198885 +5672000,mag,0.201,-0.08000001,0.42900002 +5672000,baro,487.66617 +5676000,baro,487.5582 +5676000,airspeed,2.8455832,2.7791753 +5676000,imu,-0.17504518,0.2900491,-9.961262,-0.0013139365,0.003889394,-0.0043621683 +5676000,mag,0.201,-0.08000001,0.42900002 +5680000,imu,-0.16421892,0.2741204,-10.006552,-8.875538e-05,-0.003255776,-0.0024636264 +5680000,mag,0.201,-0.08000001,0.42900002 +5680000,airspeed,1.3523924,1.3208287 +5680000,baro,487.59576 +5688000,mag,0.201,-0.08000001,0.42900002 +5688000,airspeed,-1.7645074,-1.7233367 +5688000,baro,487.48306 +5688000,imu,-0.18243997,0.15956868,-9.915302,0.00045755337,-0.008983218,-0.008327838 +5696000,mag,0.201,-0.08000001,0.42900002 +5696000,imu,-0.2150998,0.20777819,-9.917743,6.851784e-05,3.3422053e-05,0.0007076864 +5696000,baro,487.57697 +5696000,airspeed,-2.4864247,-2.4283957 +5700000,mag,0.201,-0.08000001,0.42900002 +5700000,airspeed,3.3918164,3.312657 +5700000,imu,-0.22206335,0.18970978,-9.908166,-0.005515114,-0.005279069,0.0008652344 +5700000,baro,487.57697 +5708000,airspeed,1.4123917,1.3794278 +5708000,baro,487.59106 +5708000,mag,0.20400001,-0.07900001,0.42700002 +5708000,imu,-0.21514139,0.12674072,-9.950544,-0.0070700217,-0.003998008,0.00244911 +5708000,gps,488105.0,85456074.0,473977508.0,0.01,-0.01,-0.03 +5712000,airspeed,-3.5719635,-3.4885664 +5712000,imu,-0.21098268,0.18997504,-9.965281,-0.007177531,-0.0030631386,0.00019711355 +5712000,mag,0.20400001,-0.07900001,0.42700002 +5712000,baro,487.7413 +5716000,baro,487.6521 +5716000,imu,-0.20495822,0.20895492,-9.926035,-0.0027067282,-0.007278288,-0.0030159687 +5716000,airspeed,-2.075749,-2.0272956 +5716000,mag,0.20400001,-0.07900001,0.42700002 +5720000,imu,-0.2448016,0.224884,-9.937306,0.0007024094,-0.009690972,-0.0059401416 +5720000,mag,0.20400001,-0.07900001,0.42700002 +5720000,baro,487.75537 +5720000,airspeed,-2.0466158,-1.9988301 +5728000,mag,0.20400001,-0.07900001,0.42700002 +5728000,imu,-0.16877964,0.23261702,-9.915453,0.0020009258,-0.0053449813,-0.0022331262 +5728000,baro,487.638 +5728000,airspeed,1.5734196,1.5366933 +5732000,baro,487.6333 +5732000,airspeed,-3.9344082,-3.842573 +5732000,mag,0.20400001,-0.07900001,0.42700002 +5732000,imu,-0.20986271,0.25981155,-9.908184,0.008083979,-0.004575633,-0.00028840345 +5736000,imu,-0.2623011,0.24215667,-9.925544,0.009606173,-0.007693512,-0.003775457 +5736000,airspeed,-0.5965923,-0.5826669 +5736000,mag,0.20400001,-0.07900001,0.42700002 +5736000,baro,487.6333 +5744000,imu,-0.2394184,0.2197688,-9.920265,0.004670458,-0.0016428038,0.0014699986 +5744000,airspeed,-2.8079867,-2.742419 +5744000,baro,487.78824 +5744000,mag,0.20400001,-0.07900001,0.42700002 +5748000,imu,-0.20531882,0.07849068,-9.987457,0.001488384,-0.00737118,-0.0011665425 +5748000,airspeed,2.2100382,2.1584451 +5748000,mag,0.20400001,-0.07900001,0.42700002 +5748000,baro,487.68967 +5752000,imu,-0.18438375,0.17237392,-10.061814,0.0014436122,-0.014060883,0.00056393526 +5752000,airspeed,-2.827245,-2.7612433 +5756000,mag,0.20400001,-0.07900001,0.42700002 +5756000,airspeed,-3.322601,-3.2450602 +5756000,baro,487.5629 +5756000,imu,-0.15411742,0.21444179,-10.0608015,0.0058485307,-0.006736711,-0.0013651807 +5760000,baro,487.6333 +5760000,mag,0.202,-0.08200001,0.42800003 +5764000,mag,0.202,-0.08200001,0.42800003 +5764000,airspeed,2.272505,2.2194617 +5764000,baro,487.6333 +5764000,imu,-0.20393276,0.21591459,-9.992608,0.0016144929,-0.0068239504,-0.00056083116 +5768000,imu,-0.19284545,0.2081915,-9.926117,0.0012833056,-0.005992818,8.828304e-05 +5768000,baro,487.57697 +5768000,airspeed,-3.8530734,-3.7631497 +5768000,mag,0.202,-0.08200001,0.42800003 +5772000,imu,-0.24521941,0.21316452,-9.891296,-0.0010692837,-0.0052406075,-0.0027565109 +5772000,baro,487.62393 +5772000,airspeed,-3.6519282,-3.5666893 +5772000,mag,0.202,-0.08200001,0.42800003 +5776000,mag,0.202,-0.08200001,0.42800003 +5776000,airspeed,-3.2212152,-3.1460545 +5776000,imu,-0.2168899,0.2338237,-9.942278,0.00026828246,0.00024854954,-0.0027166023 +5776000,baro,487.48776 +5784000,mag,0.202,-0.08200001,0.42800003 +5784000,baro,487.48306 +5784000,airspeed,2.4642208,2.4067235 +5784000,imu,-0.23236401,0.17887561,-9.924935,0.0037648082,-0.001897048,0.004713186 +5788000,mag,0.202,-0.08200001,0.42800003 +5788000,baro,487.50186 +5788000,airspeed,-1.4340581,-1.4005961 +5788000,imu,-0.19525011,0.15041476,-9.913073,0.001200703,-0.0051974254,0.0004612184 +5792000,imu,-0.13553876,0.15465857,-9.934698,-0.00212279,-0.0037314952,0.0012163633 +5792000,mag,0.202,-0.08200001,0.42800003 +5792000,airspeed,2.191825,2.1406727 +5792000,baro,487.5676 +5796000,baro,487.5676 +5796000,mag,0.202,-0.08200001,0.42800003 +5796000,airspeed,2.6103323,2.549413 +5796000,imu,-0.11550636,0.211551,-9.94816,0.0010759523,0.00053740165,0.007602095 +5800000,imu,-0.17987286,0.22494364,-9.949705,-0.0010277439,0.00058916805,0.0046667713 +5800000,mag,0.202,-0.08200001,0.42800003 +5800000,airspeed,3.219456,3.1443074 +5800000,baro,487.6427 +5804000,imu,-0.21920095,0.20720303,-9.940813,0.0025893073,-0.004630731,-0.0013452308 +5804000,baro,487.71783 +5804000,mag,0.202,-0.08200001,0.42800003 +5804000,airspeed,3.5208812,3.4386806 +5808000,baro,487.6333 +5808000,mag,0.202,-0.08200001,0.42800003 +5808000,imu,-0.22082298,0.15219577,-9.882647,0.007836935,-0.0055582183,0.00055831927 +5808000,airspeed,0.8220557,0.8028678 +5812000,imu,-0.20936097,0.17537905,-9.879641,0.00036032157,-0.0019417419,0.0011570123 +5812000,mag,0.2,-0.08000001,0.43100002 +5812000,airspeed,-2.2572613,-2.2045743 +5812000,baro,487.62863 +5816000,airspeed,2.8604538,2.793686 +5816000,mag,0.2,-0.08000001,0.43100002 +5816000,baro,487.638 +5816000,imu,-0.2165288,0.23367722,-9.909075,-0.00060038303,-0.008714929,0.0002820399 +5820000,mag,0.2,-0.08000001,0.43100002 +5820000,airspeed,-3.9066784,-3.81549 +5820000,imu,-0.285812,0.25557667,-9.87897,-0.0035408274,-0.012592992,0.0040523345 +5820000,baro,487.638 +5824000,airspeed,2.5925977,2.5320756 +5824000,imu,-0.24274926,0.21568424,-9.861023,-0.0024138407,-0.011278917,0.00010820171 +5824000,baro,487.68027 +5824000,mag,0.2,-0.08000001,0.43100002 +5828000,mag,0.2,-0.08000001,0.43100002 +5828000,baro,487.5629 +5828000,airspeed,-2.8879235,-2.8205273 +5828000,imu,-0.1503063,0.1795317,-9.871924,0.0030297292,-0.01279578,0.0018142335 +5836000,baro,487.71313 +5836000,airspeed,2.3648708,2.3096602 +5836000,mag,0.2,-0.08000001,0.43100002 +5836000,imu,-0.16892572,0.2040116,-9.905001,-0.009696227,-0.008375225,-0.0011901909 +5840000,imu,-0.1931229,0.18506683,-9.900784,-0.008517774,-0.008229692,-0.0034613195 +5840000,mag,0.2,-0.08000001,0.43100002 +5840000,baro,487.59576 +5840000,airspeed,-4.8450565,-4.731976 +5844000,mag,0.2,-0.08000001,0.43100002 +5844000,airspeed,2.0183585,1.9712586 +5844000,baro,487.53473 +5844000,imu,-0.17503953,0.20148633,-9.896,-0.003234624,-0.0013311342,-0.004229386 +5848000,baro,487.71783 +5848000,mag,0.2,-0.08000001,0.43100002 +5848000,imu,-0.19153175,0.19073562,-9.922344,0.0002471979,-0.0038653226,-0.0022090522 +5848000,airspeed,-4.086481,-3.9910755 +5852000,mag,0.2,-0.08000001,0.43100002 +5852000,baro,487.6568 +5852000,imu,-0.2135879,0.12827577,-9.92509,0.00016484558,-0.011009034,0.0029643127 +5852000,airspeed,0.55755454,0.54453963 +5856000,imu,-0.15758128,0.14711842,-9.871004,-0.00447665,-0.012398327,0.0029173093 +5856000,mag,0.2,-0.08000001,0.43100002 +5856000,baro,487.6568 +5856000,airspeed,1.1570617,1.1300526 +5860000,mag,0.2,-0.08000001,0.43100002 +5860000,airspeed,4.32139,4.2205215 +5860000,baro,487.638 +5860000,imu,-0.14859895,0.20386569,-9.861019,-0.0014323231,-0.005798965,0.0024672784 +5868000,airspeed,-3.170576,-3.0965612 +5868000,imu,-0.33975795,0.13729265,-10.079884,-0.010206527,-0.011382535,-0.000761618 +5868000,mag,0.2,-0.08000001,0.43 +5868000,baro,487.68027 +5872000,imu,-0.22953945,0.12711081,-10.091493,0.00076781196,-0.009237752,-0.0032421094 +5872000,baro,487.6474 +5872000,mag,0.2,-0.08000001,0.43 +5872000,airspeed,2.0365984,1.9890594 +5876000,airspeed,-2.6556802,-2.593692 +5876000,mag,0.2,-0.08000001,0.43 +5876000,imu,-0.14481732,0.100015454,-9.977882,-0.0006771442,-0.011185997,-0.0041782805 +5876000,baro,487.638 +5884000,mag,0.2,-0.08000001,0.43 +5884000,baro,487.50656 +5884000,imu,-0.23639056,0.22880906,-9.871804,-0.0009277359,-0.0018030187,0.0042801946 +5884000,airspeed,2.5422623,2.482941 +5888000,baro,487.638 +5888000,airspeed,-0.92234224,-0.9008132 +5888000,mag,0.2,-0.08000001,0.43 +5888000,imu,-0.20104773,0.21781258,-9.956849,0.0042311335,-0.0069267345,0.001543106 +5892000,imu,-0.15268138,0.18543582,-9.997154,4.583502e-05,-0.007936623,-0.0006922223 +5892000,airspeed,-1.6117952,-1.5741731 +5892000,baro,487.638 +5892000,mag,0.2,-0.08000001,0.43 +5896000,airspeed,-3.0016022,-2.9315374 +5896000,baro,487.6521 +5896000,imu,-0.19021855,0.16087367,-9.985351,-0.0046862843,-0.008457878,0.0034761534 +5896000,mag,0.2,-0.08000001,0.43 +5900000,mag,0.2,-0.08000001,0.43 +5900000,airspeed,-1.4632716,-1.4291236 +5900000,imu,-0.27815413,0.24259396,-9.967572,-0.0075127934,-0.0076343114,0.003213941 +5900000,baro,487.5488 +5904000,mag,0.2,-0.08000001,0.43 +5904000,airspeed,1.6194221,1.5816281 +5904000,baro,487.57227 +5908000,mag,0.2,-0.08000001,0.43 +5908000,imu,-0.20462283,0.16788697,-9.893349,0.001877313,-0.015418391,-0.0019954508 +5908000,gps,488106.0,85456074.0,473977508.0,0.02,0.0,-0.01 +5908000,baro,487.60983 +5908000,airspeed,2.51328,2.4546196 +5912000,airspeed,2.316999,2.2629395 +5912000,imu,-0.22325884,0.19979402,-9.91735,-0.001309811,-0.008008574,0.003965041 +5912000,baro,487.4643 +5912000,mag,0.2,-0.08000001,0.43 +5916000,mag,0.201,-0.08200001,0.42700002 +5916000,airspeed,1.2316259,1.2028806 +5916000,imu,-0.1821231,0.18331727,-9.942605,-0.004184736,-0.008058757,0.0061982893 +5916000,baro,487.59576 +5924000,airspeed,2.5487669,2.4892862 +5924000,imu,-0.20401832,0.13553129,-9.925497,-0.0002846958,0.0002673892,-0.0058405483 +5924000,mag,0.201,-0.08200001,0.42700002 +5924000,baro,487.5582 +5928000,imu,-0.16716367,0.16235,-9.890336,0.0024321396,-0.0031865072,-0.004283562 +5928000,baro,487.5676 +5928000,mag,0.201,-0.08200001,0.42700002 +5928000,airspeed,-3.967041,-3.8744593 +5932000,mag,0.201,-0.08200001,0.42700002 +5932000,airspeed,-2.5559175,-2.4962468 +5932000,baro,487.71313 +5932000,imu,-0.18027605,0.16134503,-9.85771,0.0038023447,-0.010687621,0.00064104714 +5940000,imu,-0.30319068,0.023047846,-10.010916,-0.008078003,-0.012225274,-0.0011843038 +5940000,mag,0.201,-0.08200001,0.42700002 +5940000,baro,487.6521 +5940000,airspeed,-1.082922,-1.0576439 +5948000,baro,487.69434 +5948000,mag,0.201,-0.08200001,0.42700002 +5948000,airspeed,3.632515,3.5477135 +5948000,imu,-0.22211537,0.25397733,-9.9867115,0.0056484756,-0.008627145,-0.007068065 +5952000,mag,0.201,-0.08200001,0.42700002 +5952000,airspeed,-2.114908,-2.0655353 +5952000,imu,-0.24604937,0.25931725,-9.971671,0.008197503,-0.010250303,-0.0018898123 +5952000,baro,487.69434 +5956000,airspeed,3.1461954,3.072753 +5956000,imu,-0.2214046,0.17677401,-9.969336,0.0028567752,-0.010837148,-0.0011619666 +5956000,baro,487.66617 +5956000,mag,0.201,-0.08200001,0.42700002 +5960000,mag,0.201,-0.08200001,0.42700002 +5960000,imu,-0.20969397,0.096680276,-10.034847,-0.0016451218,-0.0055071954,-0.0022427123 +5960000,airspeed,-3.3066745,-3.229511 +5960000,baro,487.53473 +5968000,baro,487.69434 +5968000,airspeed,4.1288075,4.03242 +5968000,mag,0.19900002,-0.08300001,0.42700002 +5968000,imu,-0.21370886,0.22030641,-9.892196,0.00044676082,-0.004331995,0.0013241342 +5972000,baro,487.69434 +5972000,imu,-0.21101457,0.24633689,-9.855528,-0.010663941,-0.0057886676,-0.0046355026 +5972000,airspeed,-3.808873,-3.7199545 +5972000,mag,0.19900002,-0.08300001,0.42700002 +5976000,mag,0.19900002,-0.08300001,0.42700002 +5976000,imu,-0.19780256,0.2475367,-9.854473,-0.013311975,-0.010907857,-0.0020737783 +5976000,airspeed,-1.7136328,-1.6736256 +5976000,baro,487.71783 +5980000,mag,0.19900002,-0.08300001,0.42700002 +5980000,airspeed,-3.1028779,-3.030444 +5980000,imu,-0.23510553,0.15730149,-9.858255,-0.0067784516,-0.011508073,0.00061010156 +5980000,baro,487.67557 +5984000,mag,0.19900002,-0.08300001,0.42700002 +5984000,airspeed,-4.396701,-4.294051 +5984000,imu,-0.19356269,0.19872075,-9.868298,-0.0059416844,-0.008033891,0.0002756882 +5984000,baro,487.7272 +5988000,mag,0.19900002,-0.08300001,0.42700002 +5988000,airspeed,-3.341508,-3.2635307 +5988000,baro,487.53473 +5988000,imu,-0.21605162,0.20601077,-9.884601,-0.0067609693,-0.0066946046,0.00044784963 +5992000,airspeed,-0.7799468,-0.7617433 +5992000,imu,-0.24323462,0.14801098,-9.902369,-0.0041679977,-0.0028192427,-0.0018537723 +5992000,mag,0.19900002,-0.08300001,0.42700002 +5992000,baro,487.59576 +5996000,baro,487.6333 +5996000,mag,0.19900002,-0.08300001,0.42700002 +5996000,imu,-0.22668718,0.19107199,-9.851308,-0.008220868,-0.0017942891,-0.0041922913 +5996000,airspeed,1.2034901,1.1753991 +6004000,airspeed,1.2946903,1.2644687 +6004000,mag,0.19900002,-0.08300001,0.42700002 +6004000,baro,487.6521 +6004000,imu,-0.1721868,0.21385317,-9.967177,-0.0014723884,-0.00556863,-0.0040306384 +6008000,baro,487.5535 +6008000,mag,0.19900002,-0.08300001,0.42700002 +6008000,airspeed,2.6557817,2.593804 +6008000,imu,-0.24632536,0.1874194,-9.9408455,-0.0027753713,-0.0016149434,-0.008940353 +6016000,airspeed,-2.2811944,-2.2279422 +6016000,mag,0.19900002,-0.08300001,0.42700002 +6016000,imu,-0.25240785,0.2559393,-9.8933735,-0.001564314,-0.0043178215,-0.00599495 +6016000,baro,487.67557 +6020000,imu,-0.2585147,0.26127368,-9.930615,-0.0017529115,-0.0025284432,-0.005561746 +6020000,airspeed,1.871746,1.8280686 +6024000,mag,0.2,-0.08200001,0.43 +6024000,airspeed,-0.9517248,-0.9295175 +6024000,baro,487.50186 +6024000,imu,-0.277982,0.21251707,-9.949789,0.0011673493,-8.533099e-05,-0.0016327235 +6028000,airspeed,2.3394299,2.2848423 +6028000,baro,487.50186 +6028000,imu,-0.27713454,0.19792956,-9.935206,0.00053373707,-0.0059879143,-0.0012573639 +6028000,mag,0.2,-0.08200001,0.43 +6032000,mag,0.2,-0.08200001,0.43 +6032000,airspeed,2.3044264,2.2506306 +6032000,imu,-0.21390074,0.17891982,-9.993134,0.0009755887,-0.008924968,-0.0062790685 +6032000,baro,487.68497 +6036000,imu,-0.17956394,0.17130694,-9.945742,0.0029877874,-0.0058116694,-0.0051530395 +6036000,mag,0.2,-0.08200001,0.43 +6036000,airspeed,-2.1771717,-2.1263623 +6036000,baro,487.5629 +6040000,imu,-0.13324948,0.16915835,-9.923444,0.0022160213,-0.0062914523,-0.0039411206 +6040000,baro,487.3704 +6040000,airspeed,3.3277202,3.2500973 +6040000,mag,0.2,-0.08200001,0.43 +6044000,imu,-0.16616781,0.12376948,-9.932895,-0.0017316239,-0.0077026472,-0.0055518774 +6044000,airspeed,-2.8096611,-2.7441204 +6044000,baro,487.3845 +6044000,mag,0.2,-0.08200001,0.43 +6048000,airspeed,-1.8068695,-1.7646976 +6048000,mag,0.2,-0.08200001,0.43 +6048000,baro,487.60513 +6048000,imu,-0.24297439,0.09052631,-9.906342,0.0023114677,-0.0047374237,0.004358182 +6052000,baro,487.66617 +6052000,airspeed,-1.7522385,-1.7113355 +6052000,mag,0.2,-0.08200001,0.43 +6052000,imu,-0.2512217,0.19755843,-9.90384,-0.0013439499,0.00019533392,0.005293304 +6056000,imu,-0.24023081,0.29253787,-9.9325285,-0.00886855,-0.0051406436,3.5364297e-05 +6056000,mag,0.2,-0.08200001,0.43 +6056000,airspeed,-1.3980882,-1.3654485 +6056000,baro,487.71313 +6060000,airspeed,2.9978008,2.927814 +6060000,baro,487.71313 +6060000,mag,0.2,-0.08200001,0.43 +6060000,imu,-0.20928372,0.18984054,-10.002054,-0.0017954299,-0.012384438,-0.0008311355 +6064000,airspeed,2.930783,2.8624048 +6064000,imu,-0.133369,0.13372564,-10.007124,0.004713099,-0.008538812,-0.006216514 +6064000,mag,0.2,-0.08200001,0.43 +6064000,baro,487.4596 +6068000,imu,-0.13480045,0.18492998,-9.932495,0.0022908852,-0.0037150641,-0.010176569 +6068000,baro,487.71783 +6068000,mag,0.2,-0.08200001,0.43 +6068000,airspeed,1.1699698,1.1426554 +6072000,baro,487.43613 +6072000,imu,-0.2681937,0.20373927,-9.959648,-0.0017571003,-0.005552989,-0.00845096 +6072000,mag,0.2,-0.08200001,0.43 +6072000,airspeed,-2.659497,-2.5974517 +6076000,baro,487.69434 +6076000,airspeed,1.1047465,1.0789561 +6076000,imu,-0.29045686,0.21487904,-9.984985,-0.0029153705,-0.003875701,-0.0090694865 +6076000,mag,0.19900002,-0.08300001,0.43 +6080000,baro,487.61453 +6080000,mag,0.19900002,-0.08300001,0.43 +6080000,imu,-0.21947043,0.19044845,-9.966713,-0.00048181487,-0.0032557754,-0.0097617665 +6080000,airspeed,2.4500103,2.3928256 +6084000,baro,487.638 +6084000,mag,0.19900002,-0.08300001,0.43 +6084000,imu,-0.19367556,0.16287787,-9.987166,-0.00019721089,-0.00654966,-0.0015523455 +6084000,airspeed,-2.4327455,-2.3759606 +6088000,airspeed,1.0192925,0.99550605 +6088000,baro,487.5441 +6088000,imu,-0.22613387,0.19010608,-10.043966,0.00032047986,-0.005403002,0.004106447 +6088000,mag,0.19900002,-0.08300001,0.43 +6092000,imu,-0.18791448,0.2310921,-9.969145,-0.0004485531,-0.0048538856,0.0014615078 +6092000,airspeed,-2.5781505,-2.517986 +6092000,baro,487.5441 +6092000,mag,0.19900002,-0.08300001,0.43 +6096000,airspeed,-3.4901185,-3.4086313 +6096000,mag,0.19900002,-0.08300001,0.43 +6096000,baro,487.746 +6096000,imu,-0.1649341,0.25507858,-9.969493,-0.0027587316,-0.011656374,-0.0010580689 +6100000,baro,487.6568 +6100000,mag,0.19900002,-0.08300001,0.43 +6100000,airspeed,-2.696155,-2.6332192 +6100000,imu,-0.14660384,0.19116731,-10.025518,-0.0028102475,-0.0140208015,-0.0032378954 +6108000,imu,-0.27971837,0.1345102,-9.921708,-0.0074477703,-0.006427039,-9.139498e-05 +6108000,gps,488106.0,85456074.0,473977508.0,0.0,0.0,-0.02 +6108000,baro,487.6568 +6108000,airspeed,-2.3816912,-2.3260958 +6108000,mag,0.19900002,-0.08300001,0.43 +6112000,baro,487.61453 +6112000,imu,-0.25217888,0.16484013,-9.961987,-0.0048158383,-0.0025581038,0.004857676 +6112000,airspeed,-1.869109,-1.8254834 +6112000,mag,0.19900002,-0.08300001,0.43 +6116000,baro,487.7225 +6116000,imu,-0.18166557,0.12892593,-9.971183,-0.00699397,-0.0037934291,-0.0016086539 +6116000,mag,0.19900002,-0.08300001,0.43 +6116000,airspeed,1.0520121,1.027451 +6120000,imu,-0.18449683,0.16591635,-9.909967,-0.006087857,-0.008575894,-0.0044087647 +6120000,mag,0.19900002,-0.08300001,0.43 +6120000,baro,487.7225 +6120000,airspeed,-1.8860176,-1.8419852 +6124000,imu,-0.23465778,0.15839013,-9.9488735,0.0028395744,-0.0026986976,-0.00037171607 +6128000,airspeed,2.8163412,2.750618 +6128000,baro,487.5488 +6128000,mag,0.19900002,-0.08000001,0.42800003 +6128000,imu,-0.25424603,0.21641323,-9.975923,0.005430416,-0.0046222587,-0.0018440202 +6132000,baro,487.5488 +6132000,airspeed,-4.2571006,-4.1577554 +6132000,mag,0.19900002,-0.08000001,0.42800003 +6132000,imu,-0.22232158,0.26932567,-9.969199,-0.0022961942,-0.0026657942,-0.0024432214 +6140000,baro,487.5488 +6140000,imu,-0.11049599,0.1487943,-9.877623,0.0039795768,-0.0011931014,0.00014072207 +6140000,airspeed,-0.6901833,-0.6740769 +6140000,mag,0.19900002,-0.08000001,0.42800003 +6144000,imu,-0.085267834,0.17074342,-9.90606,0.0078610955,0.00080850656,0.00051571307 +6144000,baro,487.638 +6144000,airspeed,3.1805112,3.1062727 +6144000,mag,0.19900002,-0.08000001,0.42800003 +6148000,mag,0.19900002,-0.08000001,0.42800003 +6148000,imu,-0.1925898,0.21708371,-9.952183,-0.0003380919,-0.0052083503,0.0057194345 +6148000,baro,487.638 +6148000,airspeed,-2.8784304,-2.8112428 +6152000,imu,-0.24374917,0.23366477,-9.964478,-0.009275915,-0.005581774,0.0005816201 +6152000,mag,0.19900002,-0.08000001,0.42800003 +6152000,airspeed,1.4652712,1.4310653 +6152000,baro,487.68027 +6156000,baro,487.53003 +6156000,mag,0.19900002,-0.08000001,0.42800003 +6156000,imu,-0.24270506,0.18695234,-9.936063,-0.0044673146,-0.00326775,-0.003977037 +6156000,airspeed,-2.9336643,-2.8652055 +6160000,baro,487.53003 +6160000,mag,0.19900002,-0.08000001,0.42800003 +6160000,imu,-0.27421713,0.18027422,-9.909632,0.0018220047,-0.0036340933,-0.00041947069 +6160000,airspeed,-1.2267101,-1.1980841 +6168000,mag,0.19900002,-0.08000001,0.42800003 +6168000,imu,-0.25964925,0.16669978,-9.890181,-0.0035408062,-0.0030376113,0.0007509392 +6168000,airspeed,-1.5604527,-1.5240325 +6168000,baro,487.60043 +6172000,imu,-0.24357451,0.1568989,-9.88516,-0.0045419196,-0.00072201143,0.0017301178 +6172000,mag,0.19900002,-0.08000001,0.42800003 +6172000,airspeed,-2.7538931,-2.6896179 +6172000,baro,487.60513 +6176000,baro,487.638 +6176000,airspeed,3.9483628,3.8562014 +6176000,mag,0.19900002,-0.08000001,0.42800003 +6176000,imu,-0.22540772,0.179106,-9.889943,-0.00343251,-0.0028461355,3.9835923e-05 +6180000,imu,-0.27756226,0.24507625,-9.926456,-0.004551329,-0.005950173,0.0005428149 +6180000,airspeed,-3.1636045,-3.0897858 +6180000,mag,0.201,-0.08000001,0.42800003 +6180000,baro,487.50186 +6184000,airspeed,2.6786118,2.6161 +6184000,mag,0.201,-0.08000001,0.42800003 +6184000,imu,-0.26391062,0.22270316,-9.924031,-0.0038531506,-0.011396519,0.00068602286 +6184000,baro,487.5629 +6192000,baro,487.79294 +6192000,imu,-0.14385387,0.2140889,-9.933648,-0.0013780337,-0.008497449,0.012363583 +6192000,mag,0.201,-0.08000001,0.42800003 +6192000,airspeed,-2.8957365,-2.828119 +6196000,mag,0.201,-0.08000001,0.42800003 +6196000,imu,-0.22743538,0.18961532,-9.899721,-0.0014619206,-0.010491218,0.008282611 +6196000,baro,487.42673 +6196000,airspeed,-2.3052964,-2.2515154 +6200000,baro,487.70844 +6200000,mag,0.201,-0.08000001,0.42800003 +6200000,imu,-0.30294162,0.18899393,-9.892809,-0.0014903477,-0.012614792,-0.0005403298 +6200000,airspeed,2.1824877,2.131536 +6204000,airspeed,-2.2316022,-2.179504 +6204000,baro,487.70844 +6204000,mag,0.201,-0.08000001,0.42800003 +6204000,imu,-0.2564844,0.15782537,-9.932751,-0.0022848477,-0.007917767,-0.0033680364 +6208000,mag,0.201,-0.08000001,0.42800003 +6208000,imu,-0.27816036,0.14720869,-10.009874,-0.0035214976,-0.004569984,-0.004783984 +6208000,baro,487.61453 +6208000,airspeed,-1.9616067,-1.9158218 +6212000,airspeed,3.2821603,3.20551 +6212000,imu,-0.24119578,0.16176744,-9.969214,-0.0005501598,-0.004697182,0.0011352785 +6212000,baro,487.8399 +6212000,mag,0.201,-0.08000001,0.42800003 +6216000,airspeed,3.7826436,3.6943817 +6216000,baro,487.49246 +6216000,mag,0.201,-0.08000001,0.42800003 +6216000,imu,-0.18623215,0.18559562,-9.933899,0.001167875,0.0006112687,-0.0015424266 +6220000,mag,0.201,-0.08000001,0.42800003 +6220000,airspeed,-2.8176806,-2.7519345 +6220000,imu,-0.20493002,0.2792283,-9.967825,-0.002855161,-0.00031503045,-0.0029335546 +6220000,baro,487.49246 +6224000,imu,-0.26108095,0.2888586,-9.964649,-0.0014485389,-0.0032148953,0.001343466 +6224000,baro,487.68497 +6224000,mag,0.201,-0.08000001,0.42800003 +6224000,airspeed,-0.5331586,-0.52071226 +6228000,baro,487.48776 +6228000,airspeed,-0.75639534,-0.7387464 +6232000,baro,487.69904 +6232000,imu,-0.21951328,0.16070673,-9.9048815,-0.0006409935,-0.0068010055,-0.0033211613 +6232000,mag,0.2,-0.08200001,0.42700002 +6236000,imu,-0.23991987,0.06971921,-9.9433975,0.0024783306,-0.0059613935,0.005113061 +6236000,airspeed,2.449893,2.3926995 +6240000,mag,0.2,-0.08200001,0.42700002 +6240000,baro,487.70374 +6240000,airspeed,-1.0993284,-1.073664 +6240000,imu,-0.21455097,0.17001207,-10.015265,-0.0022685812,-0.006255869,0.0057345545 +6248000,mag,0.2,-0.08200001,0.42700002 +6248000,baro,487.6333 +6248000,airspeed,-2.6524029,-2.5904922 +6248000,imu,-0.19762158,0.27556354,-9.941996,0.0024029578,-0.0076589724,-0.0030574012 +6252000,mag,0.2,-0.08200001,0.42700002 +6252000,airspeed,3.338882,3.260982 +6252000,imu,-0.22610256,0.24542053,-9.9560175,-0.0036326689,-0.01015933,-0.0011932782 +6252000,baro,487.4596 +6256000,baro,487.62393 +6256000,mag,0.2,-0.08200001,0.42700002 +6256000,airspeed,-1.8581254,-1.8147556 +6256000,imu,-0.20451228,0.16650835,-9.926944,-0.0058089397,-0.009337763,0.0023632958 +6260000,airspeed,1.4924339,1.4575869 +6260000,baro,487.76477 +6260000,mag,0.2,-0.08200001,0.42700002 +6260000,imu,-0.20589198,0.22176847,-9.939118,-0.006347513,-0.007907231,0.0019726814 +6268000,airspeed,3.2793314,3.2027915 +6268000,baro,487.60983 +6268000,mag,0.2,-0.08200001,0.42700002 +6268000,imu,-0.15950976,0.26281202,-9.968493,0.0050320947,-0.010608439,0.00012723688 +6272000,imu,-0.21693161,0.18133365,-9.939352,0.00012979277,-0.007262649,-0.004237874 +6272000,airspeed,1.7887045,1.7469509 +6272000,baro,487.66147 +6272000,mag,0.2,-0.08200001,0.42700002 +6276000,imu,-0.2436611,0.14882088,-9.9640665,-0.0033625322,-0.00744485,-0.005481173 +6276000,baro,487.62393 +6276000,mag,0.2,-0.08200001,0.42700002 +6276000,airspeed,1.2508062,1.2216115 +6284000,mag,0.201,-0.07900001,0.42700002 +6284000,baro,487.50656 +6284000,imu,-0.30278897,0.22618745,-9.901366,0.006204194,0.003273977,-0.00018305801 +6284000,airspeed,2.079234,2.0307171 +6288000,imu,-0.31557757,0.24390449,-9.887249,-0.00031760262,0.0003939893,-0.002349708 +6288000,airspeed,2.9660168,2.896782 +6288000,baro,487.6568 +6288000,mag,0.201,-0.07900001,0.42700002 +6292000,airspeed,-4.2799788,-4.1800804 +6292000,imu,-0.2095501,0.231395,-9.938207,0.004223855,-0.0036865477,-0.0016452166 +6292000,baro,487.62393 +6292000,mag,0.201,-0.07900001,0.42700002 +6296000,baro,487.60513 +6296000,imu,-0.23087852,0.16121964,-9.932987,0.009680172,-0.009223552,-0.0057855197 +6296000,airspeed,2.8407183,2.7744167 +6296000,mag,0.201,-0.07900001,0.42700002 +6300000,mag,0.201,-0.07900001,0.42700002 +6300000,imu,-0.2208026,0.16077717,-9.944253,0.0036686384,-0.004988558,-0.0065678167 +6300000,baro,487.5535 +6300000,airspeed,-2.507097,-2.4485893 +6304000,baro,487.67557 +6304000,imu,-0.15133728,0.15400289,-9.9738035,-0.002512445,0.005480161,0.00045375325 +6304000,airspeed,2.2892659,2.235825 +6304000,mag,0.201,-0.07900001,0.42700002 +6308000,mag,0.201,-0.07900001,0.42700002 +6308000,baro,487.59576 +6308000,imu,-0.20302558,0.17676456,-10.002558,-0.0049209124,0.0008882184,0.005967838 +6308000,gps,488103.0,85456074.0,473977508.0,-0.02,0.0,-0.02 +6308000,airspeed,1.1994748,1.17148 +6316000,airspeed,3.8509638,3.761071 +6316000,baro,487.6568 +6316000,imu,-0.27297595,0.17328452,-9.964981,0.00014513114,-0.0072544725,0.0018875197 +6316000,mag,0.201,-0.07900001,0.42700002 +6324000,airspeed,-3.5522213,-3.4693012 +6324000,imu,-0.19847763,0.19764109,-9.914713,0.004616518,-0.00037227655,0.00054552616 +6324000,mag,0.201,-0.07900001,0.42700002 +6324000,baro,487.66617 +6328000,baro,487.69904 +6328000,airspeed,2.3980353,2.3420517 +6328000,imu,-0.1902555,0.14888228,-9.88727,0.0048018703,-0.008728618,-0.000791429 +6328000,mag,0.201,-0.07900001,0.42700002 +6332000,baro,487.68027 +6332000,imu,-0.18705529,0.14796154,-9.930345,0.0022093325,-0.012272635,-0.0035634781 +6332000,mag,0.19900002,-0.08000001,0.42800003 +6332000,airspeed,-1.8920444,-1.8478762 +6336000,baro,487.68027 +6336000,imu,-0.23560537,0.22548983,-9.969401,-0.0047181947,-0.007484768,-0.003010059 +6336000,airspeed,1.5898837,1.5527691 +6336000,mag,0.19900002,-0.08000001,0.42800003 +6340000,mag,0.19900002,-0.08000001,0.42800003 +6340000,airspeed,-2.1318173,-2.0820625 +6340000,baro,487.59576 +6340000,imu,-0.22584526,0.2457319,-10.011267,-0.0028233395,-0.003249401,-0.0052060722 +6348000,airspeed,1.9547642,1.9091198 +6348000,mag,0.19900002,-0.08000001,0.42800003 +6348000,baro,487.78354 +6348000,imu,-0.18781883,0.14704017,-9.9383,0.0062534106,-0.009715401,0.0028203065 +6352000,mag,0.19900002,-0.08000001,0.42800003 +6352000,baro,487.78354 +6352000,airspeed,-2.087329,-2.038589 +6352000,imu,-0.10933515,0.20944245,-9.90855,0.003805755,-0.01115251,0.010253105 +6356000,imu,-0.16866748,0.21015875,-9.897365,-0.0028633894,-0.005647406,-0.0006580625 +6356000,airspeed,-3.3228195,-3.2452936 +6356000,mag,0.19900002,-0.08000001,0.42800003 +6356000,baro,487.4596 +6360000,imu,-0.20996737,0.18372534,-9.880125,-0.0026287707,-0.002215096,-0.004640799 +6360000,baro,487.4596 +6360000,mag,0.19900002,-0.08000001,0.42800003 +6360000,airspeed,-2.783968,-2.7190142 +6364000,baro,487.60983 +6364000,mag,0.19900002,-0.08000001,0.42800003 +6364000,imu,-0.17360862,0.19887291,-9.972381,-0.006199911,-0.0035948507,0.00551911 +6364000,airspeed,-1.9634337,-1.9176067 +6368000,imu,-0.17479926,0.18851326,-10.039652,-0.00587673,-0.00436163,0.003152839 +6368000,airspeed,2.1820061,2.1310556 +6368000,baro,487.78354 +6368000,mag,0.19900002,-0.08000001,0.42800003 +6372000,baro,487.638 +6372000,airspeed,0.4543986,0.44379216 +6372000,imu,-0.16774592,0.18836063,-9.970701,-0.0012017762,-0.0066984855,-0.0024916034 +6372000,mag,0.19900002,-0.08000001,0.42800003 +6376000,airspeed,-3.0639102,-2.992412 +6376000,imu,-0.19921301,0.16661543,-9.874935,-0.0043962547,-0.0045237835,-0.004487801 +6376000,mag,0.19900002,-0.08000001,0.42800003 +6376000,baro,487.53003 +6380000,airspeed,-2.7596192,-2.6951962 +6380000,baro,487.68967 +6380000,mag,0.19900002,-0.08000001,0.42800003 +6380000,imu,-0.22342254,0.18086873,-9.885236,-0.0036013157,-0.005496306,-0.01091534 +6388000,mag,0.201,-0.08000001,0.42700002 +6388000,imu,-0.20937341,0.11795946,-9.929833,0.0028994868,-0.0018484682,0.0032722582 +6388000,airspeed,-2.2578292,-2.2051375 +6388000,baro,487.5629 +6392000,mag,0.201,-0.08000001,0.42700002 +6392000,airspeed,-1.6788412,-1.6396569 +6392000,baro,487.60983 +6392000,imu,-0.21371268,0.13346055,-9.930541,0.0005046504,-0.008841569,0.00010975101 +6396000,mag,0.201,-0.08000001,0.42700002 +6396000,airspeed,-3.1739671,-3.0998867 +6396000,baro,487.60983 +6396000,imu,-0.16643542,0.19150554,-9.925016,1.0463602e-05,-0.010214673,-0.0076804524 +6400000,mag,0.201,-0.08000001,0.42700002 +6400000,imu,-0.22896867,0.15999608,-9.904686,0.0013993918,-0.010582682,-0.009318377 +6400000,baro,487.638 +6400000,airspeed,0.55204356,0.53915787 +6404000,imu,-0.3156681,0.15583736,-9.899732,-0.0011061858,-0.0063361353,-0.009315253 +6404000,mag,0.201,-0.08000001,0.42700002 +6404000,baro,487.62393 +6404000,airspeed,1.5444506,1.5084018 +6408000,baro,487.66617 +6408000,mag,0.201,-0.08000001,0.42700002 +6408000,imu,-0.25972286,0.120136596,-9.981889,0.0008830453,-0.0074752877,-0.0067462963 +6408000,airspeed,2.2733924,2.220324 +6416000,mag,0.201,-0.08000001,0.42700002 +6416000,baro,487.51593 +6416000,airspeed,-2.4951851,-2.4369612 +6416000,imu,-0.21724616,0.17753835,-9.951514,0.002317352,-0.007329268,-0.00339943 +6424000,baro,487.61453 +6424000,imu,-0.2520585,0.2067533,-9.978088,2.181477e-05,-0.004172338,-0.00029721318 +6424000,airspeed,2.0064623,1.9596307 +6424000,mag,0.201,-0.08000001,0.42700002 +6428000,baro,487.68497 +6428000,airspeed,2.3199265,2.2657688 +6428000,mag,0.201,-0.08000001,0.42700002 +6428000,imu,-0.2515537,0.20044754,-9.898068,0.0053182067,-0.004412224,-0.0041568843 +6432000,baro,487.49716 +6432000,imu,-0.24950184,0.17858532,-9.855949,-0.0018853152,-0.0077478425,-0.002466305 +6432000,airspeed,-2.8545313,-2.787925 +6432000,mag,0.201,-0.08000001,0.42700002 +6436000,imu,-0.27728966,0.18580857,-9.91068,-0.0044141365,-0.006427736,0.0022678336 +6436000,baro,487.80704 +6436000,mag,0.201,-0.08300001,0.42900002 +6436000,airspeed,-2.208174,-2.1566095 +6440000,baro,487.80704 +6440000,imu,-0.27991727,0.19013958,-9.924672,0.0017786797,-0.005990403,0.0048331004 +6440000,airspeed,-2.4005675,-2.3445106 +6440000,mag,0.201,-0.08300001,0.42900002 +6444000,mag,0.201,-0.08300001,0.42900002 +6444000,imu,-0.29605848,0.15121178,-9.956126,0.0012712707,-0.0077453204,-0.0022337912 +6444000,baro,487.68497 +6444000,airspeed,0.8218122,0.8026274 +6448000,imu,-0.29894343,0.1882211,-9.97744,-0.0028713976,-0.004799488,-0.0016592393 +6448000,baro,487.61453 +6448000,airspeed,0.8096597,0.790762 +6448000,mag,0.201,-0.08300001,0.42900002 +6456000,imu,-0.1992056,0.08100585,-9.925147,-0.0041119396,-0.0075325943,0.0020390793 +6456000,baro,487.69904 +6456000,airspeed,-3.4887688,-3.407322 +6456000,mag,0.201,-0.08300001,0.42900002 +6460000,baro,487.61453 +6460000,airspeed,-3.4950464,-3.4134707 +6460000,mag,0.201,-0.08300001,0.42900002 +6460000,imu,-0.17734978,0.16432706,-9.963028,-0.0066080694,-0.009766407,0.0025761004 +6464000,baro,487.70374 +6464000,airspeed,-0.9333841,-0.9115936 +6464000,mag,0.201,-0.08300001,0.42900002 +6464000,imu,-0.26034942,0.20133822,-9.969576,-0.0036125756,-0.0069490266,0.0006828437 +6468000,airspeed,3.27056,3.1942065 +6468000,baro,487.70374 +6468000,imu,-0.2700788,0.15474376,-9.926985,-0.0019330893,0.001035448,-0.00060552213 +6472000,imu,-0.18646437,0.20646442,-9.91605,-0.0007349865,-0.0017468791,-0.00019153376 +6472000,baro,487.6568 +6472000,mag,0.201,-0.08300001,0.42900002 +6472000,airspeed,3.0527804,2.98152 +6476000,imu,-0.20136857,0.24998765,-9.969045,0.0005954145,-0.010057413,-0.0029653402 +6476000,airspeed,-1.6152782,-1.5775731 +6480000,baro,487.70374 +6480000,imu,-0.17783673,0.24376133,-9.997221,-0.003979612,-0.0068414262,-0.0020135425 +6480000,mag,0.201,-0.08300001,0.42900002 +6480000,airspeed,1.9437363,1.8983587 +6484000,airspeed,-2.7114894,-2.648188 +6484000,baro,487.70374 +6484000,imu,-0.2116845,0.19919948,-9.935309,-0.0034862019,-0.0038471834,0.0006000813 +6484000,mag,0.201,-0.08300001,0.42900002 +6488000,imu,-0.25234556,0.14017378,-9.926777,-0.00077434216,-0.004709337,0.0029186143 +6488000,baro,487.6333 +6488000,airspeed,2.2352073,2.1830342 +6488000,mag,0.201,-0.08200001,0.42600003 +6492000,airspeed,-2.0623443,-2.0141897 +6492000,baro,487.76477 +6492000,imu,-0.21658814,0.14900441,-9.931422,0.0011272223,-0.008366297,0.0009325443 +6492000,mag,0.201,-0.08200001,0.42600003 +6500000,imu,-0.2944604,0.13330574,-9.912527,-0.00257361,-0.0038601898,-0.0063594086 +6500000,baro,487.76007 +6500000,airspeed,2.4301202,2.3733795 +6500000,mag,0.201,-0.08200001,0.42600003 +6504000,imu,-0.19589643,0.19855876,-9.959402,-0.0023879108,-0.0050130356,-0.0011394888 +6504000,airspeed,0.973892,0.951163 +6508000,baro,487.57697 +6508000,airspeed,-3.4578357,-3.3771358 +6508000,gps,488102.0,85456074.0,473977508.0,-0.02,0.0,0.04 +6508000,mag,0.201,-0.08200001,0.42600003 +6508000,imu,-0.1869892,0.18080625,-9.987347,-0.0038723657,-0.008491009,0.0004858961 +6512000,baro,487.5488 +6512000,imu,-0.19937268,0.21350998,-9.975966,0.0009951302,0.0007392102,-0.0012747259 +6512000,airspeed,-3.0693147,-2.9976878 +6512000,mag,0.201,-0.08200001,0.42600003 +6516000,imu,-0.2380346,0.20256245,-9.967664,-0.00016313401,0.001911171,-0.0015946238 +6516000,airspeed,-3.3278062,-3.2501054 +6516000,baro,487.76007 +6516000,mag,0.201,-0.08200001,0.42600003 +6520000,baro,487.68027 +6520000,imu,-0.259243,0.17278948,-10.034082,-0.003035621,-0.0026560263,-0.0011777993 +6520000,airspeed,1.1697208,1.1424146 +6520000,mag,0.201,-0.08200001,0.42600003 +6528000,imu,-0.2064638,0.19698402,-9.913049,0.00042161194,-0.011746927,-0.005384818 +6528000,baro,487.59576 +6528000,mag,0.201,-0.08200001,0.42600003 +6528000,airspeed,-2.9511583,-2.8822806 +6532000,mag,0.201,-0.08200001,0.42600003 +6532000,baro,487.71783 +6536000,imu,-0.25367168,0.23003033,-9.951541,-0.0019313875,-0.005164296,-0.00020625802 +6536000,airspeed,1.2417915,1.212798 +6540000,mag,0.201,-0.08200001,0.43 +6540000,baro,487.61453 +6540000,imu,-0.1757056,0.18485333,-10.013304,0.0039212867,-0.004680553,-0.0047149844 +6540000,airspeed,-1.4580706,-1.4240386 +6544000,mag,0.201,-0.08200001,0.43 +6544000,baro,487.68497 +6544000,airspeed,-3.388146,-3.3090513 +6544000,imu,-0.20201452,0.19519562,-10.006917,0.005749855,-0.0033032023,-0.00081698375 +6548000,baro,487.68497 +6548000,airspeed,-3.0749316,-3.0031488 +6548000,mag,0.201,-0.08200001,0.43 +6548000,imu,-0.24001828,0.17500472,-9.972218,-0.0022658992,-0.00513593,0.0017961832 +6552000,airspeed,-0.3010675,-0.29403904 +6552000,mag,0.201,-0.08200001,0.43 +6552000,imu,-0.1985143,0.16756925,-9.969784,-0.0030941314,-0.00444774,0.0009881138 +6552000,baro,487.69434 +6556000,baro,487.58167 +6556000,mag,0.201,-0.08200001,0.43 +6556000,imu,-0.20295633,0.16213103,-10.009742,-0.005670887,-0.00030770164,0.0021417253 +6556000,airspeed,-4.2789917,-4.1791263 +6564000,mag,0.201,-0.08200001,0.43 +6564000,airspeed,-3.6121645,-3.5278451 +6564000,baro,487.66617 +6564000,imu,-0.23818778,0.22333518,-9.98284,0.0009740262,-0.004019895,-0.004230314 +6572000,imu,-0.1728792,0.1500431,-9.912235,-0.00056459976,-0.0062016635,-0.0033878544 +6572000,mag,0.201,-0.08200001,0.43 +6572000,airspeed,3.469279,3.3883202 +6572000,baro,487.5394 +6576000,baro,487.5394 +6576000,imu,-0.20074378,0.18998352,-9.928428,-0.0020060819,-0.0047378256,-0.0039347066 +6576000,airspeed,2.6219082,2.5607235 +6576000,mag,0.201,-0.08200001,0.43 +6580000,imu,-0.23131508,0.20318733,-9.930207,0.00018813605,-0.0067552957,-0.0005266668 +6580000,airspeed,-4.8098397,-4.697601 +6580000,mag,0.201,-0.08200001,0.43 +6580000,baro,487.52533 +6584000,airspeed,1.2679645,1.2383665 +6584000,imu,-0.25696772,0.31728944,-9.958019,-0.000757368,-0.005630913,-0.002257246 +6584000,mag,0.201,-0.08200001,0.43 +6584000,baro,487.6568 +6592000,imu,-0.24031079,0.22640139,-9.999693,0.0032542937,-0.00553097,-0.0035796063 +6592000,mag,0.2,-0.07900001,0.43100002 +6592000,baro,487.70374 +6592000,airspeed,-3.0970697,-3.024767 +6596000,mag,0.2,-0.07900001,0.43100002 +6596000,baro,487.70374 +6596000,airspeed,4.36066,4.258858 +6596000,imu,-0.30478576,0.2638813,-10.0044985,0.0031872103,-0.006670255,0.0002633023 +6600000,mag,0.2,-0.07900001,0.43100002 +6600000,baro,487.62393 +6600000,landed,1.0 +6600000,airspeed,2.4136283,2.3572927 +6600000,imu,-0.27376202,0.22164254,-9.977754,-0.00045200877,-0.001436575,-0.0019798686 +6608000,airspeed,-4.4501863,-4.3462987 +6608000,mag,0.2,-0.07900001,0.43100002 +6608000,baro,487.68497 +6608000,imu,-0.2624577,0.26208675,-9.916005,3.159773e-05,-0.00073107815,-6.574417e-05 +6612000,mag,0.2,-0.07900001,0.43100002 +6612000,baro,487.68497 +6612000,imu,-0.22474667,0.25275734,-9.942217,-0.0014359959,-0.0018861333,0.001383591 +6612000,airspeed,-2.575001,-2.5148888 +6616000,mag,0.2,-0.07900001,0.43100002 +6616000,baro,487.71783 +6616000,airspeed,2.732338,2.6685472 +6616000,imu,-0.22881128,0.15810326,-10.000019,-0.0039192056,-0.007633348,0.0013093932 +6620000,baro,487.469 +6620000,imu,-0.20455618,0.15560849,-10.031314,-0.005137529,-0.004696032,0.00097381446 +6620000,airspeed,-1.0613683,-1.0366046 +6620000,mag,0.2,-0.07900001,0.43100002 +6624000,baro,487.58636 +6624000,mag,0.2,-0.07900001,0.43100002 +6624000,imu,-0.20057616,0.17798613,-10.0250635,-0.003095294,-0.0013348992,0.0016818342 +6624000,airspeed,0.8711364,0.8508052 +6628000,mag,0.2,-0.07900001,0.43100002 +6628000,airspeed,2.5719485,2.5119107 +6628000,imu,-0.24107751,0.13918531,-10.002609,0.001408397,-0.0067033204,-0.005197338 +6628000,baro,487.66617 +6632000,mag,0.2,-0.07900001,0.43100002 +6632000,airspeed,4.0287476,3.9347315 +6632000,imu,-0.24785337,0.1743129,-9.989056,-0.0006865491,-0.009918381,-0.007847973 +6632000,baro,487.5441 +6636000,baro,487.57697 +6636000,airspeed,-1.5231274,-1.4875803 +6636000,imu,-0.26155645,0.22653969,-9.979746,-0.008204999,-0.0067775794,0.0034778276 +6636000,mag,0.2,-0.07900001,0.43100002 +6640000,imu,-0.28878656,0.18140502,-9.934795,-0.0018191538,-0.0068841577,0.00043704754 +6640000,airspeed,2.1920311,2.1408544 +6640000,mag,0.2,-0.07900001,0.43100002 +6640000,baro,487.7225 +6644000,imu,-0.2532827,0.17593823,-9.911927,0.010114759,-0.009689478,-0.006879418 +6644000,airspeed,3.917474,3.8260276 +6644000,baro,487.66147 +6644000,mag,0.2,-0.07900001,0.43100002 +6652000,baro,487.60043 +6652000,imu,-0.25799888,0.22016726,-9.965793,0.001158572,-0.006336063,0.0014244128 +6652000,airspeed,-2.280391,-2.2271676 +6652000,mag,0.19900002,-0.084000014,0.43 +6656000,mag,0.19900002,-0.084000014,0.43 +6656000,baro,487.60043 +6656000,imu,-0.19265592,0.23181586,-9.960631,0.0007922578,-0.013248952,-0.00248511 +6656000,airspeed,1.212917,1.1846081 +6660000,baro,487.53003 +6660000,mag,0.19900002,-0.084000014,0.43 +6660000,airspeed,3.6547017,3.5694172 +6660000,imu,-0.25194207,0.18571086,-9.944723,-0.0015377122,-0.009398079,-0.004870718 +6664000,baro,487.53003 +6664000,imu,-0.19406234,0.14001915,-10.036384,0.0037310668,-0.0020953137,-0.0054421294 +6664000,airspeed,2.7894828,2.7243886 +6664000,mag,0.19900002,-0.084000014,0.43 +6672000,mag,0.19900002,-0.084000014,0.43 +6672000,airspeed,-0.14101902,-0.13772833 +6672000,baro,487.52063 +6672000,imu,-0.2546351,0.2851954,-9.9844475,-0.004773218,-0.0061448985,0.0072417045 +6676000,mag,0.19900002,-0.084000014,0.43 +6676000,airspeed,1.9521482,1.9065949 +6676000,baro,487.52063 +6676000,imu,-0.29005265,0.21489514,-9.995486,-0.005582685,-0.0055901604,0.00435785 +6684000,baro,487.7225 +6684000,airspeed,-1.6852515,-1.6459062 +6684000,mag,0.19900002,-0.084000014,0.43 +6684000,imu,-0.1570978,0.22469456,-9.908212,-0.0017291753,-0.0029116543,0.0020947442 +6688000,airspeed,-4.038729,-3.9444313 +6688000,mag,0.19900002,-0.084000014,0.43 +6688000,baro,487.7507 +6688000,imu,-0.21188669,0.20497715,-9.878775,-0.00045398256,0.001796574,0.0029951131 +6692000,baro,487.7507 +6692000,airspeed,-0.8839894,-0.8633497 +6692000,mag,0.19900002,-0.084000014,0.43 +6692000,imu,-0.2869338,0.19357632,-9.874345,-0.0033862344,0.0017544538,-3.357006e-05 +6695999,imu,-0.20647398,0.2057012,-9.87485,-0.0019763308,-0.0062875864,0.001398857 +6695999,baro,487.53003 +6695999,airspeed,2.050648,2.0027952 +6695999,mag,0.202,-0.08200001,0.42800003 +6700000,airspeed,-1.895862,-1.8516232 +6700000,mag,0.202,-0.08200001,0.42800003 +6700000,baro,487.51123 +6700000,imu,-0.1508832,0.16740692,-9.911915,0.00279288,-0.007649661,-0.0021950463 +6704000,imu,-0.251697,0.16961509,-9.892588,0.0026499324,-0.0035942513,-0.0037021243 +6704000,airspeed,-2.080081,-2.0315275 +6704000,mag,0.202,-0.08200001,0.42800003 +6704000,baro,487.6427 +6708000,imu,-0.23225346,0.15639958,-9.936289,-0.0021192417,-5.2430638e-05,0.0017045827 +6708000,baro,487.67087 +6708000,gps,488109.0,85456074.0,473977507.0,0.0,0.0,0.04 +6708000,mag,0.202,-0.08200001,0.42800003 +6708000,airspeed,3.0154822,2.9450896 +6711999,mag,0.202,-0.08200001,0.42800003 +6711999,baro,487.5535 +6711999,airspeed,-1.9011366,-1.8567699 +6711999,imu,-0.13183191,0.1419295,-9.978025,-0.004955371,-0.003216158,0.006348852 +6716000,imu,-0.1791837,0.19908145,-9.938217,-0.0038881246,-0.006462138,0.0056150286 +6716000,baro,487.68027 +6716000,airspeed,-3.2614477,-3.1853118 +6716000,mag,0.202,-0.08200001,0.42800003 +6720000,airspeed,1.7814589,1.7398819 +6720000,baro,487.58636 +6720000,imu,-0.2407626,0.24499436,-9.916182,-0.0014356966,-0.0031942439,-0.0012592267 +6720000,mag,0.202,-0.08200001,0.42800003 +6724000,airspeed,3.287602,3.21085 +6724000,baro,487.70844 +6724000,imu,-0.2720822,0.20725043,-9.934927,-0.0016244707,-0.0027048558,0.0015065367 +6724000,mag,0.202,-0.08200001,0.42800003 +6732000,airspeed,-0.64616585,-0.63108575 +6732000,imu,-0.16355759,0.13080713,-9.944668,-0.0071674064,-0.0062517063,-0.008621647 +6732000,mag,0.202,-0.08200001,0.42800003 +6732000,baro,487.57227 +6736000,imu,-0.17032416,0.11984846,-9.885764,-0.0070232153,-0.0033827715,-0.006725307 +6736000,airspeed,-2.3828728,-2.3272552 +6736000,baro,487.61453 +6736000,mag,0.202,-0.08200001,0.42800003 +6740000,airspeed,-2.1360054,-2.0861497 +6740000,imu,-0.17183359,0.16122156,-9.865817,-0.0004512335,-0.0034459238,-0.005506975 +6743999,airspeed,3.4248865,3.344919 +6743999,baro,487.76007 +6743999,mag,0.202,-0.08200001,0.42800003 +6743999,imu,-0.2148387,0.20670517,-9.908716,-0.00081508723,-0.007904511,-0.00645586 +6748000,mag,0.202,-0.08300001,0.42700002 +6748000,airspeed,-3.9888387,-3.8957465 +6748000,baro,487.57697 +6748000,imu,-0.15734054,0.1576977,-9.909341,-7.9233156e-05,-0.008516188,-0.0048519745 +6752000,airspeed,-2.45319,-2.3959193 +6752000,baro,487.69904 +6752000,imu,-0.16532198,0.12114664,-9.953275,0.0037376378,-0.0046271086,-0.0013141078 +6752000,mag,0.202,-0.08300001,0.42700002 +6756000,baro,487.69904 +6756000,mag,0.202,-0.08300001,0.42700002 +6756000,airspeed,2.1271653,2.0775056 +6756000,imu,-0.18100968,0.19047588,-9.948206,0.0052999933,0.0027524475,-0.0040490255 +6759999,mag,0.202,-0.08300001,0.42700002 +6759999,airspeed,-1.4960703,-1.4611654 +6759999,baro,487.4596 +6759999,imu,-0.13141434,0.22229582,-9.945626,0.0015985166,-0.0016806736,-0.004685627 +6768000,mag,0.202,-0.08300001,0.42700002 +6768000,baro,487.7225 +6768000,airspeed,-4.0524964,-3.957884 +6768000,imu,-0.21142389,0.24978413,-9.944294,-0.002297891,-0.009260004,-1.8503279e-05 +6772000,airspeed,-3.0006793,-2.9306278 +6772000,baro,487.69434 +6772000,mag,0.202,-0.08300001,0.42700002 +6772000,imu,-0.20645262,0.18284057,-9.970683,-0.0020495215,-0.0074256146,0.004451614 +6775999,imu,-0.19368152,0.1748616,-10.009403,-0.006239539,-0.008877354,7.9424826e-05 +6775999,mag,0.202,-0.08300001,0.42700002 +6775999,airspeed,1.7248625,1.6845896 +6775999,baro,487.7507 +6780000,airspeed,0.14240977,0.13908473 +6780000,baro,487.7507 +6780000,imu,-0.18691218,0.23462635,-9.985214,-0.0058303745,-0.0066516916,0.0002808524 +6780000,mag,0.202,-0.08300001,0.42700002 +6788000,airspeed,-0.44127893,-0.43097845 +6788000,imu,-0.17210877,0.12750867,-9.906072,0.0040369285,-0.0067655337,0.0022249825 +6788000,mag,0.202,-0.08300001,0.42700002 +6788000,baro,487.6474 +6791999,mag,0.202,-0.08300001,0.42700002 +6791999,imu,-0.20347476,0.14664036,-9.862197,0.0007558852,-0.003992391,0.00024321371 +6791999,airspeed,2.8334694,2.7673337 +6791999,baro,487.62393 +6796000,imu,-0.22985256,0.19409516,-9.798054,-0.006792365,-0.0040271142,-0.00024172278 +6796000,mag,0.202,-0.08300001,0.42700002 +6796000,airspeed,1.0204713,0.9966555 +6796000,baro,487.57227 +6800000,mag,0.202,-0.08300001,0.42700002 +6800000,airspeed,-3.2059903,-3.1311686 +6800000,imu,-0.27568507,0.16411434,-9.87648,-0.0035256387,-0.00088432815,0.0040400415 +6800000,baro,487.57227 +6804000,baro,487.66147 +6804000,imu,-0.24791315,0.14119342,-9.954507,0.0001932091,0.00017746497,0.0019518641 +6804000,mag,0.202,-0.08200001,0.42700002 +6804000,airspeed,-1.1803353,-1.1527828 +6807999,imu,-0.20739639,0.078882866,-10.001776,0.00800288,-0.0015249916,0.002822855 +6807999,airspeed,1.7766122,1.7351594 +6807999,mag,0.202,-0.08200001,0.42700002 +6807999,baro,487.47836 +6812000,imu,-0.2658232,0.0508211,-10.021176,0.0093948385,-0.0029796439,0.0018995404 +6812000,mag,0.202,-0.08200001,0.42700002 +6812000,airspeed,-2.7816455,-2.7167327 +6812000,baro,487.5441 +6816000,baro,487.62393 +6816000,mag,0.202,-0.08200001,0.42700002 +6816000,imu,-0.2715479,0.13203394,-9.99474,0.0023233667,-0.0045338366,-0.00084953115 +6816000,airspeed,-3.4764829,-3.3953385 +6820000,mag,0.202,-0.08200001,0.42700002 +6820000,baro,487.62393 +6820000,airspeed,4.1086364,4.0127373 +6820000,imu,-0.21792327,0.18227951,-9.984458,0.0018211938,-0.005556545,-0.00034813938 +6823999,imu,-0.23378047,0.1948594,-9.956511,0.003955609,-0.003999551,0.00051835115 +6823999,airspeed,-2.4053106,-2.349182 +6823999,mag,0.202,-0.08200001,0.42700002 +6823999,baro,487.52533 +6828000,mag,0.202,-0.08200001,0.42700002 +6828000,airspeed,4.286508,4.1864667 +6828000,imu,-0.23606236,0.2097997,-9.963471,0.007502945,-0.0018192751,-0.001261779 +6828000,baro,487.58636 +6836000,mag,0.202,-0.08200001,0.42700002 +6836000,airspeed,0.46114922,0.45038328 +6836000,baro,487.70844 +6836000,imu,-0.21573342,0.17381413,-9.906867,0.0051865214,-0.0018962775,-0.00017265354 +6839999,mag,0.202,-0.08200001,0.42700002 +6839999,airspeed,2.3714552,2.3160915 +6839999,imu,-0.18280098,0.19071667,-9.813385,-0.00088895037,-0.0042964057,-0.0010804265 +6839999,baro,487.70844 +6844000,baro,487.67557 +6844000,airspeed,-4.467354,-4.363068 +6844000,imu,-0.22020924,0.27560645,-9.840119,-0.0021073644,-0.005378136,-0.007328048 +6844000,mag,0.202,-0.08200001,0.42700002 +6848000,airspeed,0.844178,0.8244677 +6848000,mag,0.202,-0.08200001,0.42700002 +6848000,imu,-0.19645189,0.21536855,-9.989011,0.0013853234,-0.0057704286,-0.008850142 +6848000,baro,487.75537 +6852000,mag,0.202,-0.08200001,0.42700002 +6852000,imu,-0.23573193,0.13973148,-10.043147,0.0020097091,-0.007746388,-0.005084112 +6852000,airspeed,1.8349189,1.7920883 +6852000,baro,487.638 +6855999,imu,-0.2613834,0.20827845,-9.987129,0.0026327507,-0.006211993,-0.0029379593 +6855999,airspeed,4.0522156,3.9576428 +6855999,mag,0.19700001,-0.08000001,0.42900002 +6855999,baro,487.58167 +6860000,imu,-0.15698718,0.19113883,-9.953218,0.0047099967,-0.0025765223,0.00040470855 +6860000,baro,487.58167 +6860000,airspeed,-2.1670876,-2.1165109 +6860000,mag,0.19700001,-0.08000001,0.42900002 +6864000,imu,-0.15341029,0.1207835,-9.943536,-0.0011955382,-0.0073722685,0.002185864 +6864000,baro,487.8164 +6864000,airspeed,-0.9100676,-0.88881546 +6864000,mag,0.19700001,-0.08000001,0.42900002 +6868000,mag,0.19700001,-0.08000001,0.42900002 +6868000,imu,-0.16507952,0.15995389,-9.93094,-0.0017140716,-0.010298094,-0.0013834105 +6868000,airspeed,0.88541955,0.86475223 +6868000,baro,487.638 +6871999,imu,-0.19545937,0.1491299,-9.92136,0.004086637,-0.0057294904,-0.0020475178 +6871999,airspeed,2.1170547,2.067616 +6871999,baro,487.8258 +6871999,mag,0.19700001,-0.08000001,0.42900002 +6876000,mag,0.19700001,-0.08000001,0.42900002 +6876000,imu,-0.18885905,0.10942695,-9.876899,0.0049203834,-0.0046359766,-0.0043447134 +6876000,airspeed,3.0157044,2.9453027 +6876000,baro,487.69434 +6880000,airspeed,3.4456716,3.3652325 +6880000,mag,0.19700001,-0.08000001,0.42900002 +6880000,imu,-0.20832874,0.21102375,-9.861436,0.0060209166,-0.0041581867,-0.0001934014 +6880000,baro,487.69434 +6884000,mag,0.19700001,-0.08000001,0.42900002 +6884000,imu,-0.24591368,0.28687644,-9.888022,0.0025913012,-0.0072450023,-0.0033295914 +6884000,airspeed,1.2044958,1.1763824 +6884000,baro,487.61453 +6887999,airspeed,-2.1796658,-2.1288066 +6887999,imu,-0.2840992,0.22856154,-9.910974,0.0018456372,-0.007213356,-0.0052652126 +6892000,airspeed,-3.299708,-3.2226744 +6892000,imu,-0.32038003,0.2042436,-9.933109,0.0002998347,-0.0059110196,-0.0037559257 +6892000,mag,0.19700001,-0.08000001,0.42900002 +6892000,baro,487.70374 +6896000,baro,487.638 +6896000,mag,0.19700001,-0.08000001,0.42900002 +6896000,imu,-0.25010425,0.19860198,-9.943386,-0.001236328,-0.008249952,-0.0037251809 +6896000,airspeed,0.8818979,0.8613128 +6903999,baro,487.62863 +6903999,mag,0.201,-0.07900001,0.43100002 +6903999,imu,-0.2236949,0.218285,-9.960119,-0.0019380904,-0.007228475,-0.0042726034 +6903999,airspeed,-2.4643636,-2.4068422 +6908000,baro,487.62863 +6908000,imu,-0.2002119,0.15767005,-9.906449,5.68299e-05,-0.010667772,-0.007373786 +6908000,mag,0.201,-0.07900001,0.43100002 +6908000,airspeed,3.3545024,3.276204 +6912000,imu,-0.19331634,0.13900094,-9.86271,-0.001487577,-0.0105132805,-0.0010411417 +6912000,gps,488104.0,85456074.0,473977508.0,0.0,0.0,-0.01 +6912000,baro,487.66617 +6912000,mag,0.201,-0.07900001,0.43100002 +6912000,airspeed,3.1819441,3.1076674 +6916000,imu,-0.23926422,0.18611892,-9.890051,-0.008961813,0.0010941057,-0.0015729169 +6916000,baro,487.59576 +6916000,mag,0.201,-0.07900001,0.43100002 +6916000,airspeed,1.6831727,1.6438886 +6919999,airspeed,-2.1324048,-2.0826283 +6919999,imu,-0.22472413,0.16756956,-9.916162,-0.0037627723,0.00032304937,-0.0016437862 +6919999,baro,487.6568 +6919999,mag,0.201,-0.07900001,0.43100002 +6924000,mag,0.201,-0.07900001,0.43100002 +6924000,imu,-0.22942577,0.15063399,-9.923402,-0.001768316,-0.005455984,0.0061279167 +6924000,baro,487.6568 +6928000,airspeed,1.1567452,1.1297519 +6928000,imu,-0.23712729,0.16968456,-9.952546,-0.0017879008,-0.002606297,0.0009448256 +6928000,mag,0.201,-0.07900001,0.43100002 +6928000,baro,487.53003 +6932000,airspeed,-3.987293,-3.8942041 +6932000,baro,487.71783 +6932000,imu,-0.20986931,0.18902296,-9.970093,0.0042125504,-0.0038129718,0.0026800814 +6932000,mag,0.201,-0.07900001,0.43100002 +6935999,baro,487.71783 +6935999,airspeed,3.0289366,2.958222 +6935999,mag,0.201,-0.07900001,0.43100002 +6935999,imu,-0.15969798,0.20950598,-9.958799,0.0024526569,-0.004984989,0.0041105626 +6944000,imu,-0.16097707,0.11990333,-9.925602,0.002148314,-0.0070821852,0.0021379713 +6944000,mag,0.201,-0.07900001,0.43100002 +6944000,baro,487.69434 +6944000,airspeed,2.5966308,2.5360124 +6948000,mag,0.201,-0.07900001,0.43100002 +6948000,baro,487.67087 +6948000,imu,-0.17036678,0.19054566,-9.946856,-8.614254e-05,-0.0014318235,0.00034786225 +6948000,airspeed,1.0966296,1.0710301 +6951999,airspeed,2.7526138,2.688365 +6951999,imu,-0.1823871,0.19408669,-9.936028,-0.0034638715,-0.00055468385,-0.0009975735 +6951999,baro,487.62863 +6951999,mag,0.201,-0.07900001,0.43100002 +6956000,airspeed,-0.48080087,-0.46958107 +6956000,baro,487.53473 +6956000,mag,0.201,-0.084000014,0.43 +6956000,imu,-0.24399805,0.219414,-9.872892,-0.0024743164,-0.005618852,-0.0010509617 +6960000,airspeed,-2.3291974,-2.2748175 +6960000,baro,487.7272 +6960000,mag,0.201,-0.084000014,0.43 +6960000,imu,-0.29122025,0.28684786,-9.901874,0.0006091709,-0.0019606876,0.0012620877 +6964000,airspeed,1.0911611,1.0656857 +6964000,baro,487.7272 +6964000,imu,-0.2233245,0.19145103,-9.977065,-5.0747394e-06,-0.0035653638,9.934022e-05 +6964000,mag,0.201,-0.084000014,0.43 +6967999,baro,487.47836 +6967999,mag,0.201,-0.084000014,0.43 +6972000,airspeed,-1.0274,-1.0034091 +6972000,imu,-0.22601515,0.15937574,-9.948278,-0.00021178089,-0.00426177,0.0009417144 +6972000,baro,487.79764 +6972000,mag,0.201,-0.084000014,0.43 +6980000,imu,-0.18260598,0.19926967,-9.958979,-0.0031584802,-0.008393213,-0.0034888044 +6980000,baro,487.70374 +6980000,airspeed,4.006998,3.9134526 +6980000,mag,0.201,-0.084000014,0.43 +6988000,airspeed,-1.459541,-1.4254646 +6988000,imu,-0.2045581,0.17395875,-9.961612,0.0026131587,0.0005156412,-0.0052122427 +6988000,baro,487.7319 +6988000,mag,0.201,-0.084000014,0.43 +6992000,mag,0.201,-0.084000014,0.43 +6992000,airspeed,2.187395,2.1363277 +6992000,baro,487.71313 +6992000,imu,-0.22084875,0.26901925,-9.967475,0.002799218,-0.0010782018,0.0015124418 +6996000,airspeed,-3.39177,-3.3125849 +6996000,imu,-0.2041495,0.29548696,-9.943478,-0.0027353945,-0.0040215356,0.0026680352 +6996000,baro,487.71313 +6996000,mag,0.201,-0.084000014,0.43 +6999999,imu,-0.18827724,0.30766892,-9.968641,-0.00041815737,-0.003816889,0.003464827 +6999999,airspeed,2.1791184,2.1282575 +6999999,baro,487.60983 +6999999,mag,0.201,-0.084000014,0.43 +7004000,imu,-0.24764882,0.24235004,-9.939358,0.0008468675,-0.004180752,0.0039622 +7004000,airspeed,-3.6180248,-3.5335739 +7004000,baro,487.638 +7004000,mag,0.201,-0.084000014,0.43 +7008000,mag,0.19900002,-0.08000001,0.43 +7008000,baro,487.638 +7008000,imu,-0.2215624,0.26634222,-9.89386,0.00068386464,-0.0013467389,0.0039028188 +7008000,airspeed,-2.3214245,-2.2672384 +7012000,baro,487.58167 +7012000,mag,0.19900002,-0.08000001,0.43 +7012000,imu,-0.105943695,0.2995877,-9.936786,-0.0025975048,-0.0061736973,0.005170737 +7012000,airspeed,-3.493046,-3.4115236 +7020000,imu,-0.17514434,0.12104688,-9.947855,-0.0033066315,-0.005933561,-0.002279223 +7020000,baro,487.5582 +7020000,mag,0.19900002,-0.08000001,0.43 +7020000,airspeed,3.609031,3.5248065 +7024000,imu,-0.18581645,0.22703417,-9.9807205,0.0014016905,-0.0061519174,0.00034672584 +7024000,airspeed,-3.2774322,-3.2009332 +7024000,mag,0.19900002,-0.08000001,0.43 +7024000,baro,487.62863 +7028000,airspeed,0.57970923,0.56617814 +7028000,baro,487.62863 +7028000,mag,0.19900002,-0.08000001,0.43 +7028000,imu,-0.20775537,0.21761428,-9.932296,0.0032808243,-0.00555651,0.0011223251 +7031999,imu,-0.243385,0.18194818,-9.939084,0.001621796,-0.003731002,0.0012371485 +7031999,airspeed,1.3719289,1.3399153 +7031999,baro,487.52063 +7031999,mag,0.19900002,-0.08000001,0.43 +7036000,airspeed,-1.887074,-1.8430083 +7036000,mag,0.19900002,-0.08000001,0.43 +7036000,baro,487.80234 +7036000,imu,-0.22253653,0.24699995,-9.940908,0.001921314,-0.0019751189,0.0009467422 +7040000,imu,-0.20390461,0.25483248,-9.952146,0.0057174717,-0.0034240966,0.0023781303 +7040000,airspeed,-3.607958,-3.5237422 +7044000,airspeed,-2.9480882,-2.8792748 +7044000,baro,487.638 +7044000,mag,0.19900002,-0.08000001,0.43 +7044000,imu,-0.21078576,0.23447323,-9.954505,5.1514467e-05,-0.0036397858,-0.0005213696 +7052000,imu,-0.24903533,0.12523475,-10.060028,0.0026264088,-0.0064070644,0.0012996427 +7052000,airspeed,-3.0826845,-3.0107472 +7052000,mag,0.19900002,-0.08000001,0.43 +7052000,baro,487.5394 +7056000,mag,0.19900002,-0.08000001,0.43 +7056000,baro,487.66617 +7056000,airspeed,-0.72788495,-0.7108938 +7056000,imu,-0.2341089,0.15795241,-10.027299,-0.0025050724,-0.00072674424,-0.0007638328 +7063999,imu,-0.26694024,0.16855177,-9.884237,0.0017576892,-0.008282003,0.0003270653 +7063999,baro,487.68967 +7063999,airspeed,2.4499621,2.3927686 +7063999,mag,0.19900002,-0.08000001,0.42800003 +7072000,airspeed,-1.8920459,-1.8478975 +7072000,mag,0.19900002,-0.08000001,0.42800003 +7072000,imu,-0.11613259,0.16253635,-10.005996,-0.0002539106,-0.003974694,-0.006308413 +7072000,baro,487.50186 +7076000,mag,0.19900002,-0.08000001,0.42800003 +7076000,imu,-0.17061698,0.14615043,-9.910052,-0.0007762466,-0.004286147,0.00073001115 +7076000,baro,487.7413 +7076000,airspeed,3.9492261,3.8570206 +7080000,baro,487.7413 +7080000,imu,-0.1809592,0.2093912,-9.842967,0.0020177462,-0.0050776424,0.005428423 +7080000,airspeed,2.4014926,2.3454232 +7080000,mag,0.19900002,-0.08000001,0.42800003 +7084000,imu,-0.18361478,0.21312706,-9.936562,0.0043368335,-0.0065180627,0.00075214024 +7084000,mag,0.19900002,-0.08000001,0.42800003 +7084000,baro,487.76007 +7084000,airspeed,2.9018848,2.8341289 +7088000,mag,0.19900002,-0.08000001,0.42800003 +7088000,baro,487.62863 +7088000,airspeed,2.8892374,2.8217993 +7088000,imu,-0.27133617,0.21970598,-9.968116,0.0049459673,-0.00850595,-0.0016822299 +7096000,mag,0.19900002,-0.08000001,0.42800003 +7096000,baro,487.81174 +7096000,imu,-0.21523929,0.3093928,-9.938935,-0.00088000996,-0.0031791741,-0.0011004024 +7096000,airspeed,2.6627345,2.6005545 +7100000,airspeed,-1.8161287,-1.7737205 +7100000,imu,-0.19469063,0.2455726,-9.870724,0.005614054,-0.004226956,0.0016529196 +7100000,baro,487.79294 +7100000,mag,0.19900002,-0.08000001,0.42800003 +7108000,imu,-0.20090804,0.18106388,-9.926939,-0.0018548814,-0.0077887424,0.0035877738 +7108000,baro,487.5535 +7108000,airspeed,2.5788026,2.5186214 +7108000,mag,0.19900002,-0.08000001,0.42800003 +7112000,gps,488100.0,85456074.0,473977508.0,-0.01,0.0,0.0 +7112000,mag,0.19900002,-0.08000001,0.42800003 +7112000,baro,487.5441 +7112000,airspeed,-3.5302134,-3.4478323 +7112000,imu,-0.20542237,0.19602178,-9.945021,-0.0011683154,-0.01060821,-0.0013008502 +7116000,airspeed,-3.9199746,-3.8284726 +7116000,mag,0.201,-0.08300001,0.42800003 +7116000,baro,487.6521 +7116000,imu,-0.23866586,0.20908657,-9.957262,0.0014071567,-0.009911564,-0.00274603 +7124000,mag,0.201,-0.08300001,0.42800003 +7124000,baro,487.77417 +7124000,airspeed,-1.0711442,-1.0461334 +7124000,imu,-0.15582298,0.13504818,-9.967034,-0.00229662,-0.0083125485,0.0047007324 +7128000,mag,0.201,-0.08300001,0.42800003 +7128000,baro,487.6474 +7128000,imu,-0.19581686,0.14221483,-9.972221,-0.0065049683,-0.011799071,-0.003316799 +7128000,airspeed,1.9189571,1.8741641 +7132000,airspeed,-3.1735117,-3.0994322 +7132000,baro,487.66147 +7132000,imu,-0.25776434,0.1811233,-9.9229355,-0.007946405,-0.00963234,-0.0030963307 +7132000,mag,0.201,-0.08300001,0.42800003 +7136000,baro,487.75537 +7136000,airspeed,-0.4535175,-0.44292852 +7136000,imu,-0.24150057,0.16959578,-9.933003,-0.006252875,-0.011274717,-0.0012719091 +7136000,mag,0.201,-0.08300001,0.42800003 +7140000,airspeed,1.1646416,1.1374584 +7140000,baro,487.61453 +7140000,mag,0.201,-0.08300001,0.42800003 +7140000,imu,-0.20911026,0.13743646,-9.986063,-0.0005530785,-0.011034346,-0.002454864 +7144000,baro,487.5535 +7144000,airspeed,-3.8682218,-3.7779498 +7144000,imu,-0.2395462,0.14560251,-9.997557,0.0011501618,-0.008093654,-0.0018109308 +7144000,mag,0.201,-0.08300001,0.42800003 +7152000,airspeed,1.3999058,1.3672341 +7152000,mag,0.201,-0.08300001,0.42800003 +7152000,imu,-0.18110465,0.26290908,-9.871509,0.0045126285,-0.010096725,-0.0032235335 +7152000,baro,487.58636 +7156000,baro,487.80234 +7156000,imu,-0.17185095,0.27452818,-9.918773,0.001872458,-0.012699268,-0.0045824475 +7156000,airspeed,1.3117678,1.2811364 +7156000,mag,0.201,-0.08300001,0.42800003 +7160000,baro,487.60513 +7160000,airspeed,-0.8618036,-0.8416893 +7160000,imu,-0.17334184,0.22856359,-9.948352,-0.0013963294,-0.010453172,-0.0029027362 +7160000,mag,0.201,-0.08300001,0.42800003 +7164000,mag,0.19900002,-0.08000001,0.43100002 +7164000,airspeed,1.3586488,1.326942 +7164000,baro,487.5582 +7164000,imu,-0.16660126,0.17345941,-9.905032,-0.0052535785,-0.0028865107,4.022474e-05 +7168000,airspeed,-1.1171426,-1.0910646 +7168000,baro,487.67087 +7168000,mag,0.19900002,-0.08000001,0.43100002 +7168000,imu,-0.21152118,0.12785317,-9.861371,-0.0021801556,-0.0019658234,0.0027449937 +7176000,airspeed,-1.3977834,-1.3651596 +7176000,mag,0.19900002,-0.08000001,0.43100002 +7176000,imu,-0.24095292,0.18216047,-9.9468775,0.00015853491,-0.007148738,0.005361152 +7176000,baro,487.60513 +7180000,mag,0.19900002,-0.08000001,0.43100002 +7180000,baro,487.60513 +7180000,imu,-0.2173148,0.11574942,-9.957683,0.0004708592,-0.003121986,0.00094016857 +7180000,airspeed,-1.5933402,-1.5561521 +7184000,imu,-0.20646985,0.12720764,-9.94119,-0.0017000574,0.00041722794,-0.0064546783 +7184000,airspeed,-2.7139432,-2.6506011 +7184000,mag,0.19900002,-0.08000001,0.43100002 +7184000,baro,487.60043 +7188000,baro,487.67557 +7188000,imu,-0.24004126,0.14911632,-9.864912,-0.006288023,-0.0086294655,-0.004750193 +7188000,airspeed,-1.7708933,-1.7295537 +7188000,mag,0.19900002,-0.08000001,0.43100002 +7192000,imu,-0.22090627,0.18043497,-9.831342,-0.0012436715,-0.0078029423,-0.002208411 +7192000,baro,487.638 +7192000,airspeed,0.3085183,0.30131695 +7192000,mag,0.19900002,-0.08000001,0.43100002 +7200000,mag,0.19900002,-0.08000001,0.43100002 +7200000,baro,487.59576 +7200000,airspeed,-2.7447438,-2.6806836 +7200000,imu,-0.17038962,0.2944938,-9.990753,-0.0014921336,-0.0023683624,-0.0024146817 +7204000,airspeed,2.2981076,2.24446 +7204000,imu,-0.22826645,0.23801605,-9.965238,-0.0062615545,-0.0013011324,-0.0016757897 +7204000,baro,487.68027 +7204000,mag,0.19900002,-0.08000001,0.43100002 +7208000,baro,487.57697 +7208000,mag,0.19900002,-0.08000001,0.43100002 +7212000,imu,-0.16388649,0.18813606,-9.914228,0.002967746,-0.007252691,0.004199779 +7212000,airspeed,3.1641495,3.0902762 +7216000,imu,-0.20389727,0.18326557,-9.891745,0.00073356676,-0.0045304312,0.005056702 +7216000,baro,487.66617 +7216000,airspeed,0.6677209,0.6521342 +7216000,mag,0.19900002,-0.08000001,0.43100002 +7220000,baro,487.71313 +7220000,mag,0.19800001,-0.08200001,0.42900002 +7220000,imu,-0.21275282,0.1667923,-9.840793,-0.0046801413,-0.0019363262,0.0053120055 +7220000,airspeed,-2.8815868,-2.8143132 +7224000,mag,0.19800001,-0.08200001,0.42900002 +7224000,baro,487.69434 +7224000,airspeed,1.787632,1.7458996 +7224000,imu,-0.25266394,0.21291956,-9.9707365,0.00138737,-0.0087434575,-0.0011599023 +7228000,mag,0.19800001,-0.08200001,0.42900002 +7228000,baro,487.50656 +7228000,airspeed,2.7766652,2.7118742 +7228000,imu,-0.26011905,0.19605151,-10.063602,0.00056004076,-0.012113004,-0.002288845 +7232000,mag,0.19800001,-0.08200001,0.42900002 +7232000,baro,487.5676 +7236000,imu,-0.17949088,0.15486592,-9.923278,-0.0018618733,-0.006843528,0.0017518905 +7236000,airspeed,2.4029295,2.3468344 +7240000,imu,-0.10038208,0.17231318,-9.955633,-0.0039005063,-0.005189222,-0.0045997314 +7240000,airspeed,-3.5256338,-3.4433498 +7240000,baro,487.58636 +7240000,mag,0.19800001,-0.08200001,0.42900002 +7244000,mag,0.19800001,-0.08200001,0.42900002 +7244000,imu,-0.15919554,0.22396314,-9.996194,-0.0007717291,-0.0029355893,-0.0044788914 +7244000,baro,487.67087 +7244000,airspeed,0.46897918,0.45803156 +7248000,imu,-0.22625738,0.22091022,-9.949494,0.0016186067,-0.0040870826,-0.0054015354 +7248000,airspeed,-1.9373096,-1.892086 +7248000,mag,0.19800001,-0.08200001,0.42900002 +7248000,baro,487.67087 +7252000,baro,487.61923 +7252000,mag,0.19800001,-0.08200001,0.42900002 +7252000,imu,-0.20654663,0.23456918,-9.922467,-0.00048707114,-0.00789658,-1.8424294e-05 +7252000,airspeed,-1.0084201,-0.984883 +7256000,baro,487.67557 +7256000,imu,-0.18050404,0.20716597,-9.937459,0.00096661015,-0.0042222594,0.0013349036 +7256000,airspeed,1.8742199,1.8304682 +7256000,mag,0.19800001,-0.08200001,0.42900002 +7260000,mag,0.19800001,-0.08200001,0.42900002 +7260000,airspeed,0.85147357,0.83160114 +7260000,baro,487.58636 +7260000,imu,-0.18080166,0.17742345,-9.953543,0.0012666573,-0.001547502,-0.005645288 +7264000,mag,0.19800001,-0.08200001,0.42900002 +7264000,baro,487.59106 +7268000,airspeed,2.1588805,2.1084948 +7268000,imu,-0.12562437,0.15369156,-9.906629,-0.0015330944,-0.006044897,0.0007483703 +7272000,mag,0.2,-0.077000014,0.43 +7272000,airspeed,3.71445,3.6277647 +7272000,imu,-0.1257863,0.14398219,-9.924866,-0.0020232766,-0.0052899327,0.0072189406 +7272000,baro,487.5629 +7276000,imu,-0.12634152,0.17306538,-9.995052,-0.0032842616,-0.005089476,0.0012326353 +7276000,airspeed,-3.3887696,-3.3096805 +7276000,mag,0.2,-0.077000014,0.43 +7276000,baro,487.58636 +7280000,airspeed,-1.2706685,-1.2410128 +7280000,baro,487.58636 +7280000,mag,0.2,-0.077000014,0.43 +7280000,imu,-0.20812443,0.23550822,-9.945724,-0.0019552517,-0.0050962996,-0.007241792 +7288000,imu,-0.17128482,0.26212323,-9.986562,-0.0062767235,-0.0020035612,0.001292162 +7288000,mag,0.2,-0.077000014,0.43 +7288000,baro,487.52063 +7288000,airspeed,-2.2974646,-2.2438536 +7292000,airspeed,3.9078298,3.816618 +7292000,mag,0.2,-0.077000014,0.43 +7292000,baro,487.62393 +7292000,imu,-0.17784862,0.26473936,-9.938875,-0.00092491094,0.00021015991,0.0023433785 +7296000,baro,487.70374 +7296000,mag,0.2,-0.077000014,0.43 +7296000,airspeed,4.239587,4.140611 +7296000,imu,-0.2022899,0.1776299,-9.962355,0.002456427,-0.0059469664,-0.0009074222 +7304000,mag,0.2,-0.077000014,0.43 +7304000,imu,-0.20288326,0.24687205,-9.912887,0.002456745,-0.016087491,-0.00012628181 +7304000,baro,487.638 +7304000,airspeed,-1.0102987,-0.9867166 +7308000,airspeed,-0.35992593,-0.35152465 +7308000,imu,-0.2091016,0.22090788,-9.965665,0.005851268,-0.013608781,0.0016539183 +7308000,mag,0.2,-0.077000014,0.43 +7308000,baro,487.638 +7312000,airspeed,2.0208828,1.9737289 +7312000,baro,487.49246 +7312000,gps,488103.0,85456074.0,473977508.0,0.0,0.0,0.0 +7312000,imu,-0.23727636,0.20913248,-10.012549,-0.0037465794,-0.0053400015,-0.0029891154 +7312000,mag,0.2,-0.077000014,0.43 +7316000,mag,0.2,-0.077000014,0.43 +7316000,imu,-0.21989016,0.2019112,-9.926694,-0.0046825064,-0.0026879841,-0.007582992 +7316000,airspeed,2.0219696,1.9747834 +7316000,baro,487.5488 +7320000,imu,-0.17071632,0.18849514,-9.911237,-0.0024290725,-0.0025780124,-0.0059532286 +7320000,baro,487.6427 +7320000,airspeed,2.1839967,2.1330175 +7320000,mag,0.19800001,-0.08100001,0.43 +7328000,imu,-0.27228197,0.15626387,-9.931725,-0.0010719192,-0.005301417,0.00043259418 +7328000,airspeed,-1.7626898,-1.721547 +7328000,baro,487.62393 +7328000,mag,0.19800001,-0.08100001,0.43 +7332000,baro,487.79294 +7332000,airspeed,3.406703,3.3271546 +7332000,imu,-0.2544955,0.14777245,-9.911078,0.003912005,-0.0050898697,-0.0014487674 +7332000,mag,0.19800001,-0.08100001,0.43 +7336000,mag,0.19800001,-0.08100001,0.43 +7336000,baro,487.79294 +7336000,imu,-0.22668684,0.2193301,-9.881485,-0.0003563811,-0.006944016,0.000119398 +7336000,airspeed,-2.6319225,-2.5704656 +7340000,baro,487.62863 +7340000,mag,0.19800001,-0.08100001,0.43 +7344000,airspeed,3.1864214,3.112053 +7344000,imu,-0.19361709,0.23792136,-9.992516,0.005519426,-0.0052636703,-0.0010226005 +7348000,airspeed,-3.2324297,-3.1569786 +7348000,imu,-0.22577502,0.22183709,-9.949134,8.1241924e-05,-3.1539177e-05,-0.0032428084 +7348000,mag,0.19800001,-0.08100001,0.43 +7348000,baro,487.638 +7352000,baro,487.42203 +7352000,imu,-0.2728084,0.22637571,-9.911351,-0.002100949,0.0017247277,-0.0009676842 +7352000,airspeed,-2.4861975,-2.4281967 +7352000,mag,0.19800001,-0.08100001,0.43 +7360000,baro,487.69434 +7360000,imu,-0.16203178,0.21723138,-10.022288,-0.0058441157,-0.000103353625,-0.0006967558 +7360000,mag,0.19800001,-0.08100001,0.43 +7360000,airspeed,-1.6228075,-1.584923 +7364000,mag,0.19800001,-0.08100001,0.43 +7364000,baro,487.6474 +7364000,imu,-0.18400545,0.17726803,-9.962245,-0.005505851,-0.011983726,-0.0025431912 +7364000,airspeed,-2.5194225,-2.4606137 +7368000,imu,-0.21298681,0.16572961,-9.891811,-0.0026884235,-0.012017564,-0.0029027122 +7368000,mag,0.19800001,-0.08100001,0.43 +7368000,baro,487.67557 +7368000,airspeed,-1.5647731,-1.5282451 +7372000,baro,487.67557 +7372000,airspeed,-3.6654615,-3.579895 +7372000,imu,-0.2735794,0.13952446,-9.9171915,0.0016623943,-0.008716763,-0.0018026775 +7372000,mag,0.19800001,-0.08100001,0.43 +7376000,airspeed,1.0659539,1.041065 +7376000,baro,487.76007 +7376000,imu,-0.22866723,0.12205067,-9.981808,0.0015853422,-0.008392868,-0.0035880052 +7376000,mag,0.19900002,-0.08100001,0.42800003 +7384000,airspeed,0.8004236,0.78174347 +7384000,imu,-0.24963889,0.17224346,-9.9591255,0.005760531,-0.007244945,0.0034762037 +7384000,baro,487.57227 +7384000,mag,0.19900002,-0.08100001,0.42800003 +7388000,baro,487.57227 +7388000,airspeed,1.8312335,1.7884965 +7388000,imu,-0.19820942,0.2232621,-10.035656,0.012885202,-0.009136509,0.002472605 +7388000,mag,0.19900002,-0.08100001,0.42800003 +7392000,imu,-0.21299097,0.1955179,-9.986946,0.006627204,-0.0060753436,0.00046676284 +7392000,airspeed,0.10075562,0.09840389 +7396000,baro,487.6333 +7396000,mag,0.19900002,-0.08100001,0.42800003 +7396000,imu,-0.23626527,0.21337649,-9.940151,-0.006856403,-0.005301192,0.0014798872 +7396000,airspeed,5.3879466,5.262183 +7400000,baro,487.469 +7400000,imu,-0.21105038,0.21124431,-9.94828,-0.008150599,-0.004639873,0.00134409 +7400000,mag,0.19900002,-0.08100001,0.42800003 +7400000,airspeed,1.6075929,1.5700846 +7408000,baro,487.60513 +7408000,mag,0.19900002,-0.08100001,0.42800003 +7408000,imu,-0.10150071,0.13549054,-9.857667,-0.0045706304,-0.008176605,-0.0035096263 +7408000,airspeed,-3.4716616,-3.3906333 +7412000,airspeed,-3.1964977,-3.121895 +7412000,baro,487.59106 +7412000,mag,0.19900002,-0.08100001,0.42800003 +7412000,imu,-0.13374725,0.11047113,-9.840485,-0.0094792405,-0.010953467,-0.0003218465 +7416000,mag,0.19900002,-0.08100001,0.42800003 +7416000,imu,-0.14558734,0.13193586,-9.870089,-0.0041221124,-0.006798684,-0.003237336 +7416000,airspeed,-2.8145034,-2.7487855 +7416000,baro,487.77417 +7420000,imu,-0.21611443,0.22952309,-9.939607,2.0783491e-05,-0.002732969,-0.0039634933 +7420000,mag,0.19900002,-0.08100001,0.42800003 +7420000,baro,487.68497 +7424000,airspeed,4.3188376,4.2180305 +7428000,baro,487.62863 +7428000,mag,0.202,-0.07900001,0.42700002 +7428000,airspeed,-0.11567106,-0.11297116 +7428000,imu,-0.18581843,0.25318894,-9.887768,-0.0017284271,-0.008724871,-0.0025844334 +7432000,baro,487.40796 +7432000,airspeed,1.322354,1.2915057 +7432000,mag,0.202,-0.07900001,0.42700002 +7432000,imu,-0.11241471,0.1534123,-9.917803,-0.0030463582,-0.007843656,-0.0017973467 +7436000,airspeed,-1.3549805,-1.3233589 +7436000,imu,-0.18212737,0.1569388,-9.960935,-0.0022250833,-0.005328348,0.0035182505 +7440000,mag,0.202,-0.07900001,0.42700002 +7440000,baro,487.5394 +7440000,airspeed,3.3099444,3.2327034 +7440000,imu,-0.24471737,0.1783021,-9.970097,-0.0003066989,-0.0021774769,0.003549173 +7444000,imu,-0.23873301,0.19364084,-9.920066,-0.0043663373,-0.004691713,0.00090242655 +7444000,mag,0.202,-0.07900001,0.42700002 +7444000,baro,487.5394 +7444000,airspeed,-2.5868511,-2.5264843 +7448000,airspeed,1.9922332,1.9457451 +7448000,baro,487.51593 +7448000,imu,-0.20349388,0.17166387,-9.957807,-0.001954723,-0.0055265618,-0.0005094842 +7448000,mag,0.202,-0.07900001,0.42700002 +7456000,mag,0.202,-0.07900001,0.42700002 +7456000,baro,487.62393 +7456000,imu,-0.15769237,0.26137495,-9.891011,0.0047849384,-0.0043705855,0.0017381316 +7456000,airspeed,1.1692792,1.1419874 +7464000,mag,0.202,-0.07900001,0.42700002 +7464000,imu,-0.16531734,0.19458891,-9.954181,0.0029747004,-0.011244028,0.0026517361 +7464000,airspeed,-1.8660728,-1.8225225 +7464000,baro,487.57227 +7468000,mag,0.202,-0.07900001,0.42700002 +7468000,imu,-0.14853996,0.18513004,-9.961263,0.0065154703,-0.009871787,8.940712e-05 +7468000,airspeed,-2.8391204,-2.7728612 +7468000,baro,487.57227 +7472000,mag,0.202,-0.07900001,0.42700002 +7472000,imu,-0.19940901,0.15268065,-9.899282,0.001037457,-0.005656368,0.0029710028 +7472000,airspeed,-2.9145656,-2.8465223 +7472000,baro,487.70844 +7476000,imu,-0.22756304,0.21873191,-9.867346,-8.268445e-06,-0.0026654894,0.004511625 +7476000,mag,0.202,-0.08000001,0.42800003 +7476000,baro,487.60983 +7476000,airspeed,1.7807925,1.7392288 +7480000,baro,487.60983 +7480000,mag,0.202,-0.08000001,0.42800003 +7480000,airspeed,-3.918216,-3.8267648 +7480000,imu,-0.20209987,0.26873866,-9.912379,0.0017856426,-0.0011301836,0.00035601665 +7484000,baro,487.52063 +7484000,airspeed,1.4770589,1.4425918 +7484000,imu,-0.21784145,0.14528494,-10.00817,-0.0022873913,-0.0077595576,-0.005567602 +7484000,mag,0.202,-0.08000001,0.42800003 +7488000,imu,-0.23920283,0.13152063,-9.989669,-0.0043320293,-0.0061225793,-0.00077538023 +7488000,mag,0.202,-0.08000001,0.42800003 +7488000,airspeed,-2.7256517,-2.6620176 +7488000,baro,487.71783 +7496000,baro,487.59106 +7496000,airspeed,-1.774122,-1.7327158 +7496000,imu,-0.21360408,0.13059205,-9.915524,-0.0068572117,0.0010097135,-0.0025742482 +7496000,mag,0.202,-0.08000001,0.42800003 +7500000,airspeed,1.7423497,1.7016938 +7500000,imu,-0.20868614,0.2053277,-9.944642,-0.00080551085,0.00046975276,0.002228231 +7500000,baro,487.50656 +7500000,mag,0.202,-0.08000001,0.42800003 +7504000,airspeed,-3.0604265,-2.9890275 +7504000,imu,-0.21291256,0.18476664,-9.945182,-0.0015248564,-0.0047751367,-0.0035644989 +7504000,mag,0.202,-0.08000001,0.42800003 +7504000,baro,487.43613 +7508000,airspeed,-4.2949114,-4.194712 +7508000,imu,-0.22990315,0.20930947,-9.960387,-0.009381583,-0.0053884094,-0.0020188584 +7508000,baro,487.43613 +7508000,mag,0.202,-0.08000001,0.42800003 +7512000,baro,487.84457 +7512000,airspeed,2.7797053,2.7147884 +7512000,gps,488108.0,85456074.0,473977508.0,0.0,0.01,0.0 +7512000,mag,0.202,-0.08000001,0.42800003 +7512000,imu,-0.21202187,0.25124967,-9.900761,-0.0070138886,-0.0009058296,0.00022422454 +7520000,mag,0.202,-0.08000001,0.42800003 +7520000,airspeed,4.3699903,4.268014 +7520000,imu,-0.23146425,0.12804836,-9.948262,-0.0045894245,-0.008161793,0.0016729281 +7520000,baro,487.53003 +7528000,airspeed,2.799196,2.7338638 +7528000,mag,0.202,-0.08000001,0.42800003 +7528000,imu,-0.1525818,0.14436138,-10.007004,0.004337287,-0.007446913,-0.0028034186 +7528000,baro,487.60513 +7532000,airspeed,-2.6123428,-2.5513716 +7532000,mag,0.2,-0.08100001,0.432 +7532000,imu,-0.08573062,0.17563097,-9.926263,-0.00046432417,-0.0046724672,-0.0029801351 +7532000,baro,487.60513 +7536000,mag,0.2,-0.08100001,0.432 +7536000,baro,487.43613 +7540000,airspeed,1.6578037,1.6191276 +7540000,imu,-0.20575057,0.1859326,-10.030076,0.0011653646,-0.0004658417,-0.0028689557 +7544000,airspeed,0.8752479,0.8548166 +7544000,mag,0.2,-0.08100001,0.432 +7544000,baro,487.66617 +7544000,imu,-0.27089342,0.14239946,-9.983576,-0.0030054199,-0.00032174896,0.002728078 +7548000,imu,-0.28939316,0.1318332,-9.938234,-0.0034110856,-0.0049377964,0.00030426536 +7548000,airspeed,-2.9305184,-2.8621213 +7552000,imu,-0.2175854,0.16282597,-9.925822,-0.004568934,-0.008193109,-0.0029021222 +7552000,mag,0.2,-0.08100001,0.432 +7552000,airspeed,1.5306704,1.4949492 +7552000,baro,487.5535 +7556000,baro,487.59106 +7556000,mag,0.2,-0.08100001,0.432 +7556000,imu,-0.1704266,0.21263921,-9.946516,-0.004651517,-0.009637393,0.0010770138 +7556000,airspeed,-2.8125422,-2.7469008 +7560000,baro,487.638 +7560000,imu,-0.21066947,0.2502052,-9.949017,-0.0021230106,-0.006729219,0.00016712304 +7560000,mag,0.2,-0.08100001,0.432 +7560000,airspeed,1.6549977,1.6163671 +7568000,mag,0.2,-0.08100001,0.432 +7568000,airspeed,-1.7835883,-1.7419428 +7568000,imu,-0.14887749,0.2258278,-9.920219,0.0018148472,-0.007129435,-0.00045415352 +7568000,baro,487.76477 +7576000,airspeed,0.71587765,0.69916564 +7576000,imu,-0.24998142,0.23891662,-9.9095,-0.0048658755,0.0016372591,0.001955223 +7576000,mag,0.2,-0.08100001,0.432 +7576000,baro,487.68967 +7580000,airspeed,-3.4623494,-3.3815217 +7580000,mag,0.2,-0.08100001,0.42700002 +7580000,baro,487.68967 +7580000,imu,-0.25038928,0.16225041,-9.873463,-0.0014362911,-0.0024730044,0.0027610252 +7584000,mag,0.2,-0.08100001,0.42700002 +7584000,baro,487.50656 +7584000,imu,-0.2046399,0.17200173,-9.958991,-0.0019411079,-0.0054619564,0.002637736 +7584000,airspeed,2.1265724,2.076951 +7588000,mag,0.2,-0.08100001,0.42700002 +7588000,baro,487.5535 +7588000,airspeed,-1.9917023,-1.9452226 +7588000,imu,-0.19236735,0.20118737,-9.985123,-0.0034512084,-0.0042288844,-0.00041395734 +7592000,imu,-0.24711072,0.17067367,-9.94489,-0.0013340891,-0.0063138977,-0.0033888936 +7592000,baro,487.59106 +7592000,mag,0.2,-0.08100001,0.42700002 +7592000,airspeed,1.9129467,1.8683003 +7596000,imu,-0.24519879,0.14351006,-9.962562,-0.00012370133,0.00096108334,0.0044090017 +7596000,baro,487.6521 +7596000,airspeed,-1.8523824,-1.8091428 +7596000,mag,0.2,-0.08100001,0.42700002 +7600000,imu,-0.19013222,0.21636221,-9.985143,-0.0014287868,-0.0020177609,0.0056644264 +7600000,landed,1.0 +7600000,airspeed,-1.2636576,-1.2341644 +7600000,baro,487.60043 +7600000,mag,0.2,-0.08100001,0.42700002 +7604000,imu,-0.16901971,0.22492637,-9.940691,-0.003942722,-0.007170611,0.00010069 +7604000,baro,487.51593 +7604000,mag,0.2,-0.08100001,0.42700002 +7604000,airspeed,-0.68931425,-0.6732294 +7608000,airspeed,-3.257763,-3.1817446 +7608000,baro,487.51593 +7608000,mag,0.2,-0.08100001,0.42700002 +7608000,imu,-0.15143654,0.24976322,-9.92463,-0.0055316566,0.0011619797,-0.0039314954 +7612000,airspeed,2.2145581,2.1628573 +7612000,baro,487.70844 +7612000,imu,-0.1539852,0.25957036,-10.030086,-0.00051304005,0.002213977,-0.009924669 +7612000,mag,0.2,-0.08100001,0.42700002 +7616000,mag,0.2,-0.08100001,0.42700002 +7616000,imu,-0.1807092,0.25395888,-10.012034,0.0045215716,-0.0019305368,-0.00775414 +7616000,baro,487.61453 +7616000,airspeed,2.893528,2.8259914 +7624000,mag,0.2,-0.08100001,0.42700002 +7624000,baro,487.7225 +7624000,imu,-0.256553,0.3008677,-9.924873,-0.0045117033,-0.013943583,0.0005396895 +7624000,airspeed,-0.44739273,-0.43694752 +7628000,baro,487.58167 +7628000,imu,-0.20387314,0.23949979,-9.912937,-0.0069355853,-0.009355762,0.0038508258 +7628000,mag,0.2,-0.08100001,0.42700002 +7628000,airspeed,2.7710738,2.706401 +7632000,mag,0.201,-0.08100001,0.43100002 +7632000,baro,487.62863 +7632000,airspeed,0.74086034,0.72356784 +7632000,imu,-0.2125106,0.25089887,-10.00421,-0.0070332475,-0.007447992,0.0052192416 +7636000,airspeed,-3.5739958,-3.4905775 +7636000,baro,487.61453 +7636000,imu,-0.20051733,0.21190475,-10.024596,-0.005112605,-0.010837066,-0.0018677522 +7636000,mag,0.201,-0.08100001,0.43100002 +7644000,airspeed,-3.7462196,-3.6587803 +7644000,baro,487.62393 +7644000,mag,0.201,-0.08100001,0.43100002 +7644000,imu,-0.21332555,0.1734482,-10.004961,-0.001077079,-0.006414635,-0.0043029594 +7648000,baro,487.62863 +7648000,imu,-0.24010049,0.10178364,-9.929828,-0.0047110287,-0.007979702,0.0027397692 +7648000,mag,0.201,-0.08100001,0.43100002 +7648000,airspeed,-1.2790644,-1.2492094 +7652000,imu,-0.16236384,0.15694185,-9.937187,-0.0034413456,-0.014188637,0.004331497 +7652000,airspeed,-2.1976163,-2.1463284 +7652000,mag,0.201,-0.08100001,0.43100002 +7652000,baro,487.57227 +7660000,airspeed,2.8516035,2.785013 +7660000,mag,0.201,-0.08100001,0.43100002 +7660000,imu,-0.16115943,0.18285078,-9.959292,-0.00012648423,-0.014369741,-0.008234392 +7660000,baro,487.81174 +7668000,mag,0.201,-0.08100001,0.43100002 +7668000,imu,-0.2910701,0.2688739,-9.966127,0.00057474023,-0.008748418,0.0021928193 +7668000,airspeed,-2.3533802,-2.2984426 +7668000,baro,487.67557 +7676000,airspeed,-2.2792206,-2.2260156 +7676000,mag,0.201,-0.08100001,0.43100002 +7676000,baro,487.66617 +7676000,imu,-0.23590519,0.130908,-10.025277,0.0009983152,-0.0039354544,-0.004527585 +7680000,airspeed,-1.5244142,-1.4888413 +7680000,mag,0.201,-0.08100001,0.43100002 +7680000,baro,487.53003 +7680000,imu,-0.16311002,0.12318113,-9.973782,0.0011064623,-0.0030775813,-0.0018784207 +7688000,airspeed,-2.895689,-2.828092 +7688000,imu,-0.23259813,0.14959957,-9.930282,-0.0013657078,-0.005689475,0.002443325 +7688000,baro,487.67557 +7688000,mag,0.2,-0.08200001,0.42700002 +7696000,imu,-0.26506895,0.1543631,-9.877887,-0.0035318441,-0.0005122645,-0.0014550457 +7696000,mag,0.2,-0.08200001,0.42700002 +7696000,baro,487.60043 +7696000,airspeed,-0.5289023,-0.51655793 +7700000,mag,0.2,-0.08200001,0.42700002 +7700000,airspeed,2.3853862,2.3297145 +7700000,baro,487.58636 +7700000,imu,-0.22816555,0.12005766,-9.878593,-0.00051518437,-0.0070143724,0.0002522747 +7704000,baro,487.5394 +7704000,imu,-0.13250282,0.15549907,-9.915647,-0.0019643994,-0.009508487,-0.0056655556 +7704000,mag,0.2,-0.08200001,0.42700002 +7704000,airspeed,0.4971439,0.4855426 +7712000,airspeed,-2.212231,-2.1605844 +7712000,baro,487.70844 +7712000,mag,0.2,-0.08200001,0.42700002 +7712000,imu,-0.26330194,0.22230059,-9.943412,-0.0013404831,-0.0012544384,-0.01100175 +7712000,gps,488109.0,85456074.0,473977508.0,0.0,-0.02,0.01 +7720000,baro,487.75537 +7720000,mag,0.2,-0.08200001,0.42700002 +7720000,airspeed,1.6068761,1.5693578 +7720000,imu,-0.29436722,0.21070062,-9.893741,0.0045697563,-0.010036792,-0.00160614 +7724000,imu,-0.25404006,0.16493188,-9.908352,0.0016672196,-0.015585378,0.00469079 +7724000,airspeed,1.6919137,1.652427 +7724000,mag,0.2,-0.08200001,0.42700002 +7724000,baro,487.58636 +7728000,mag,0.2,-0.08200001,0.42700002 +7728000,airspeed,3.0115535,2.9412665 +7728000,baro,487.59106 +7728000,imu,-0.1914682,0.117505476,-9.887309,3.2170487e-06,-0.0071105203,0.0056304727 +7732000,imu,-0.114866234,0.08472629,-9.937005,-0.0013166633,-0.0028153816,0.0038476542 +7732000,mag,0.2,-0.08200001,0.42700002 +7732000,airspeed,3.3964865,3.3171902 +7732000,baro,487.71783 +7736000,airspeed,3.4004827,3.3211045 +7736000,imu,-0.11243289,0.15935098,-9.955978,-0.0036256812,-0.0033128813,0.0064148535 +7740000,airspeed,-1.6016991,-1.5643103 +7740000,baro,487.66147 +7740000,mag,0.20500001,-0.08200001,0.43 +7740000,imu,-0.20763493,0.20756434,-9.972741,0.0018248066,-0.0047922707,0.009421815 +7744000,airspeed,-1.2925307,-1.2623591 +7744000,mag,0.20500001,-0.08200001,0.43 +7744000,imu,-0.20526081,0.26192078,-10.023506,0.006388244,-0.0039940453,0.0048924815 +7744000,baro,487.6568 +7748000,mag,0.20500001,-0.08200001,0.43 +7748000,imu,-0.21286592,0.19180846,-9.993901,0.0013084341,-0.0052536335,-0.0010147427 +7748000,airspeed,2.2405689,2.1882694 +7748000,baro,487.6427 +7752000,mag,0.20500001,-0.08200001,0.43 +7752000,imu,-0.21177766,0.1501264,-9.94396,0.00039961239,-0.008588781,-0.0010113891 +7752000,baro,487.61453 +7752000,airspeed,-1.8686888,-1.8250725 +7756000,baro,487.5441 +7756000,airspeed,2.9677544,2.8984988 +7756000,mag,0.20500001,-0.08200001,0.43 +7756000,imu,-0.16602784,0.18810442,-9.869149,0.0053815693,-0.010294509,-0.0010232624 +7760000,baro,487.6474 +7760000,imu,-0.16485456,0.10258047,-9.901191,-0.0003079986,-0.011786076,-0.0021014833 +7760000,mag,0.20500001,-0.08200001,0.43 +7760000,airspeed,-4.8956213,-4.781347 +7764000,airspeed,-1.8079532,-1.7657517 +7764000,mag,0.20500001,-0.08200001,0.43 +7764000,imu,-0.15942428,0.12877409,-9.9534855,0.00081283395,-0.013364284,-0.0047597485 +7764000,baro,487.6474 +7772000,mag,0.20500001,-0.08200001,0.43 +7772000,imu,-0.27588218,0.25971028,-10.076054,0.003782387,-0.00454205,0.0060190028 +7772000,baro,487.70374 +7772000,airspeed,-2.4833868,-2.4254107 +7776000,mag,0.20500001,-0.08200001,0.43 +7776000,imu,-0.22538422,0.24425384,-10.0504465,0.007056142,-0.00011640476,0.0043141125 +7776000,baro,487.7413 +7776000,airspeed,-2.1040528,-2.0549278 +7780000,airspeed,1.1505781,1.1237193 +7780000,baro,487.67087 +7780000,imu,-0.1272482,0.2434407,-9.949893,0.0027174698,-0.004022395,0.0022354282 +7780000,mag,0.20500001,-0.08200001,0.43 +7788000,airspeed,4.1005,4.0047827 +7788000,mag,0.201,-0.08200001,0.432 +7788000,baro,487.6568 +7788000,imu,-0.22565351,0.22809742,-9.896694,-0.00088862097,-0.004912775,0.00084042765 +7792000,mag,0.201,-0.08200001,0.432 +7792000,baro,487.69904 +7796000,imu,-0.25145778,0.23233505,-10.024524,5.6639707e-05,-0.01062152,0.0040188786 +7796000,airspeed,3.602914,3.5188012 +7796000,baro,487.70844 +7796000,mag,0.201,-0.08200001,0.432 +7800000,baro,487.62863 +7800000,imu,-0.2888488,0.17382507,-9.92002,-0.00040514048,-0.0075143706,0.008121763 +7800000,airspeed,2.8580563,2.7913463 +7800000,mag,0.201,-0.08200001,0.432 +7808000,airspeed,-3.283463,-3.2068162 +7808000,mag,0.201,-0.08200001,0.432 +7808000,imu,-0.24753635,0.18636486,-9.877088,-0.005151656,-0.0004815219,0.003768927 +7808000,baro,487.66617 +7812000,mag,0.201,-0.08200001,0.432 +7812000,airspeed,-1.407743,-1.3748887 +7812000,baro,487.57697 +7816000,mag,0.201,-0.08200001,0.432 +7816000,baro,487.5582 +7816000,imu,-0.19033664,0.21357225,-9.980563,-0.00269199,-0.0032991578,-0.0029154946 +7816000,airspeed,-3.0245528,-2.9539688 +7824000,baro,487.61923 +7824000,airspeed,-4.0186625,-3.9248643 +7824000,mag,0.201,-0.08200001,0.432 +7824000,imu,-0.29490867,0.22611858,-9.949475,-5.9992773e-05,-0.00513596,-0.002272133 +7828000,airspeed,-1.8911784,-1.8470278 +7828000,baro,487.69904 +7828000,imu,-0.24268678,0.2606141,-9.956693,-0.0049488777,-0.005819292,0.0010593903 +7828000,mag,0.201,-0.08200001,0.432 +7832000,imu,-0.18907133,0.26062733,-9.916246,-0.0016624116,-0.01203561,-0.0045314725 +7832000,mag,0.201,-0.08200001,0.432 +7832000,airspeed,4.0888405,3.9933841 +7832000,baro,487.69904 +7836000,imu,-0.20478836,0.26272988,-9.914631,0.0005616835,-0.010362239,-0.0042480365 +7836000,baro,487.67557 +7836000,mag,0.201,-0.08200001,0.432 +7836000,airspeed,2.9372056,2.8686392 +7840000,imu,-0.20123206,0.23011191,-9.94834,-0.005099594,-0.0073163025,0.0014980526 +7840000,baro,487.53473 +7840000,mag,0.2,-0.08000001,0.42800003 +7840000,airspeed,-3.5095918,-3.4276927 +7844000,baro,487.71313 +7844000,airspeed,3.4589386,3.3781862 +7844000,mag,0.2,-0.08000001,0.42800003 +7844000,imu,-0.18030526,0.21421865,-9.890154,-0.00035966348,-0.008862946,0.0032334747 +7848000,airspeed,-2.2627757,-2.2099488 +7848000,mag,0.2,-0.08000001,0.42800003 +7848000,baro,487.71313 +7848000,imu,-0.23136254,0.15803815,-9.870475,-0.00202766,-0.009489894,-0.002145904 +7852000,airspeed,-4.676889,-4.5677476 +7852000,baro,487.5488 +7852000,mag,0.2,-0.08000001,0.42800003 +7852000,imu,-0.26748154,0.11960989,-9.942395,0.000204126,-0.011416867,0.001804711 +7856000,baro,487.5441 +7856000,airspeed,-2.6953979,-2.6324978 +7856000,mag,0.2,-0.08000001,0.42800003 +7856000,imu,-0.28129792,0.18033749,-9.943917,0.0006502687,-0.00782071,0.0053614746 +7864000,airspeed,4.084749,3.9893851 +7864000,baro,487.71783 +7864000,mag,0.2,-0.08000001,0.42800003 +7864000,imu,-0.16323265,0.25527096,-9.99021,-0.009436813,-0.010649662,0.004440186 +7868000,airspeed,-0.99078906,-0.9676666 +7868000,baro,487.5629 +7868000,imu,-0.1635714,0.1931619,-9.977098,-0.005736836,-0.011532558,-0.00067186286 +7868000,mag,0.2,-0.08000001,0.42800003 +7876000,baro,487.61923 +7876000,mag,0.2,-0.08000001,0.42800003 +7876000,imu,-0.12742765,0.2140514,-9.924904,0.0045662457,-0.007988731,0.0030899392 +7876000,airspeed,4.478383,4.373855 +7880000,mag,0.2,-0.08000001,0.42800003 +7880000,airspeed,-2.589008,-2.5285792 +7880000,imu,-0.10816948,0.11506296,-9.9642315,-0.0013004853,0.0010405019,0.0044608302 +7880000,baro,487.61923 +7884000,airspeed,-2.074534,-2.0261261 +7884000,imu,-0.13538073,0.21488859,-9.9549,-0.004240029,0.0014255417,0.00076149666 +7884000,baro,487.51123 +7884000,mag,0.2,-0.08000001,0.42800003 +7888000,airspeed,4.4809847,4.3763843 +7888000,imu,-0.2479883,0.18699296,-9.952912,-0.0026743053,-0.00353276,0.00403341 +7888000,baro,487.66617 +7888000,mag,0.2,-0.08000001,0.42800003 +7892000,airspeed,0.66068655,0.6452669 +7892000,imu,-0.27489877,0.14451575,-9.967409,-0.001651759,-0.0055206604,0.0047415313 +7892000,mag,0.19900002,-0.07900001,0.43100002 +7892000,baro,487.58636 +7896000,mag,0.19900002,-0.07900001,0.43100002 +7896000,imu,-0.29115656,0.15455487,-9.990648,0.0009164262,-0.0041972925,0.004447591 +7896000,baro,487.71313 +7896000,airspeed,-3.2042174,-3.1294115 +7900000,mag,0.19900002,-0.07900001,0.43100002 +7900000,imu,-0.29033706,0.1262782,-10.013143,0.0034084949,-0.0039944337,0.005810735 +7900000,baro,487.71313 +7900000,airspeed,1.7547337,1.7137674 +7908000,imu,-0.19296502,0.164622,-9.880621,-0.00030057147,0.0003639544,0.0072860373 +7908000,airspeed,-0.46256635,-0.45176733 +7908000,mag,0.19900002,-0.07900001,0.43100002 +7908000,baro,487.70844 +7912000,gps,488100.0,85456075.0,473977508.0,0.0,0.0,0.01 +7912000,imu,-0.16418323,0.14876121,-9.861263,0.0017816594,0.002021026,0.00067600067 +7912000,mag,0.19900002,-0.07900001,0.43100002 +7912000,baro,487.60983 +7912000,airspeed,1.1876147,1.1598958 +7920000,imu,-0.18803777,0.1739586,-9.958627,-0.002790645,-0.0046932697,0.0021492762 +7920000,mag,0.19900002,-0.07900001,0.43100002 +7920000,baro,487.62863 +7920000,airspeed,2.9429617,2.8742692 +7928000,imu,-0.20336036,0.27882898,-9.919866,-8.8225745e-05,-0.0003352913,0.004447254 +7928000,mag,0.19900002,-0.07900001,0.43100002 +7928000,baro,487.638 +7928000,airspeed,1.1840644,1.1564262 +7932000,mag,0.19900002,-0.07900001,0.43100002 +7932000,airspeed,2.9309013,2.8624904 +7932000,baro,487.62863 +7932000,imu,-0.18151127,0.24061146,-9.91259,-0.0022976138,-0.0038308976,0.003652487 +7936000,airspeed,-2.4457183,-2.3886528 +7936000,baro,487.48306 +7936000,imu,-0.13724464,0.18583377,-9.89227,-0.0031343016,-0.0059399577,-0.00019526476 +7936000,mag,0.19900002,-0.07900001,0.43100002 +7940000,imu,-0.17282167,0.16342223,-9.853578,-0.002798656,-0.0027863542,0.0018591096 +7940000,baro,487.48306 +7940000,mag,0.19900002,-0.07900001,0.43100002 +7940000,airspeed,3.0277202,2.9570749 +7944000,imu,-0.22200327,0.17781082,-9.952746,-0.00058621867,-0.009111452,-0.005065969 +7944000,mag,0.19900002,-0.08100001,0.43 +7944000,airspeed,-2.8024445,-2.7370365 +7944000,baro,487.60513 +7948000,baro,487.66617 +7948000,imu,-0.20553532,0.23649783,-9.993559,0.0032707113,-0.010848932,-0.0033463463 +7948000,mag,0.19900002,-0.08100001,0.43 +7948000,airspeed,-1.1365931,-1.1100614 +7952000,imu,-0.20774877,0.20928718,-9.95609,0.0024035005,-0.0074344724,0.0014805051 +7952000,airspeed,-4.2241716,-4.1255674 +7952000,baro,487.6568 +7952000,mag,0.19900002,-0.08100001,0.43 +7956000,mag,0.19900002,-0.08100001,0.43 +7956000,airspeed,-1.960469,-1.914724 +7956000,baro,487.50186 +7956000,imu,-0.16874376,0.11860119,-9.963841,-0.0044095945,-0.009358417,-0.0014425571 +7960000,airspeed,-0.67007685,-0.65442926 +7960000,baro,487.81174 +7960000,mag,0.19900002,-0.08100001,0.43 +7964000,baro,487.81174 +7964000,mag,0.19900002,-0.08100001,0.43 +7964000,airspeed,3.2800708,3.2034748 +7964000,imu,-0.26339957,0.1909019,-9.884481,-0.0019849364,-0.005273828,-0.0034821178 +7972000,imu,-0.10819875,0.13970505,-9.97506,0.005073301,-0.0037393274,-0.0015114447 +7972000,airspeed,2.6091118,2.5482075 +7972000,baro,487.6568 +7972000,mag,0.19900002,-0.08100001,0.43 +7976000,imu,-0.17134894,0.12626426,-9.907304,0.0026332687,-0.007421603,0.001229461 +7976000,airspeed,-2.480881,-2.4229782 +7976000,mag,0.19900002,-0.08100001,0.43 +7976000,baro,487.60513 +7980000,imu,-0.19428438,0.21409757,-9.8993225,-0.002006351,-0.004571129,-0.0012041978 +7980000,airspeed,-4.7069416,-4.5971203 +7980000,mag,0.19900002,-0.08100001,0.43 +7980000,baro,487.469 +7984000,imu,-0.22517602,0.30191228,-9.88528,6.444058e-05,-0.00067819766,-0.0021904008 +7984000,mag,0.19900002,-0.08100001,0.43 +7984000,baro,487.66147 +7984000,airspeed,3.3015656,3.224497 +7992000,baro,487.47836 +7992000,mag,0.19900002,-0.08100001,0.43 +7992000,airspeed,0.91084665,0.8895943 +7992000,imu,-0.121679075,0.16955045,-9.945868,0.0058392477,-0.0065673664,0.00037549922 +7996000,airspeed,3.0239327,2.9533768 +7996000,mag,0.19900002,-0.08300001,0.43100002 +7996000,baro,487.47836 +7996000,imu,-0.19301043,0.17051245,-9.906825,-0.003596097,-0.0068357186,0.002115674 +8000000,imu,-0.26005352,0.18389654,-9.963587,-0.007924722,-0.0064869444,-0.0018815238 +8000000,airspeed,3.842932,3.7532074 +8000000,mag,0.19900002,-0.08300001,0.43100002 +8000000,baro,487.7413 +8004000,imu,-0.20245501,0.15330079,-10.020205,0.0013839353,-0.00859821,-0.0036915222 +8004000,airspeed,1.3144263,1.2837372 +8004000,mag,0.19900002,-0.08300001,0.43100002 +8004000,baro,487.7413 +8008000,airspeed,-1.3562642,-1.3246185 +8008000,mag,0.19900002,-0.08300001,0.43100002 +8008000,baro,487.48776 +8008000,imu,-0.17702535,0.112997055,-10.04171,0.0021594476,-0.010102768,-0.0008164255 +8012000,airspeed,1.2880162,1.2579628 +8012000,imu,-0.1795169,0.1591307,-10.012549,-0.001341279,-0.00535649,-0.0010990556 +8016000,baro,487.68967 +8016000,airspeed,2.5875204,2.5271153 +8016000,imu,-0.1227716,0.28770608,-9.977693,-0.0047432673,-0.0024305321,-0.005336505 +8016000,mag,0.19900002,-0.08300001,0.43100002 +8020000,imu,-0.13671353,0.25745112,-9.958468,-0.002554943,-0.0011292644,-0.0030578526 +8020000,baro,487.68027 +8020000,mag,0.19900002,-0.08300001,0.43100002 +8020000,airspeed,-2.810656,-2.7450433 +8024000,imu,-0.16461095,0.16610879,-9.883787,0.00048539072,-0.0008562263,-0.001449888 +8024000,baro,487.68027 +8024000,airspeed,2.3352385,2.2807238 +8024000,mag,0.19900002,-0.08300001,0.43100002 +8032000,airspeed,-2.5100467,-2.4514868 +8032000,imu,-0.20619367,0.14472733,-9.978142,0.0024122153,-0.0054987837,0.0015824867 +8032000,mag,0.19900002,-0.08300001,0.43100002 +8032000,baro,487.44083 +8040000,mag,0.19900002,-0.08300001,0.43100002 +8040000,baro,487.70844 +8040000,airspeed,-2.7719822,-2.7072678 +8040000,imu,-0.24063934,0.20762359,-9.87647,0.0028100796,-0.0026208498,-0.006332966 +8048000,imu,-0.2563646,0.22580783,-9.959725,0.0018697013,-0.013900257,0.0004733773 +8048000,baro,487.6427 +8048000,airspeed,3.1062803,3.0337737 +8048000,mag,0.201,-0.08100001,0.42900002 +8052000,baro,487.6427 +8052000,mag,0.201,-0.08100001,0.42900002 +8056000,airspeed,-1.4822518,-1.4476565 +8056000,imu,-0.1715615,0.16501364,-9.929201,0.000836517,-0.003381148,-9.882015e-05 +8060000,airspeed,-2.365165,-2.3099787 +8060000,imu,-0.19825594,0.23826574,-9.873466,0.0027511911,-0.0039167404,-0.0014292512 +8060000,mag,0.201,-0.08100001,0.42900002 +8060000,baro,487.48776 +8068000,mag,0.201,-0.08100001,0.42900002 +8068000,airspeed,1.4528815,1.4189605 +8068000,imu,-0.22493097,0.24846941,-9.966022,0.004148371,-0.006715993,-0.0030493122 +8068000,baro,487.7319 +8072000,imu,-0.2301532,0.2730954,-9.935297,-0.0024517209,-0.009810137,-0.0017352283 +8072000,airspeed,3.354902,3.2765765 +8076000,mag,0.201,-0.08100001,0.42900002 +8076000,imu,-0.19654647,0.23427196,-9.904537,-0.0027576722,-0.009643552,0.0042680786 +8076000,airspeed,-2.6452134,-2.5834708 +8076000,baro,487.62863 +8080000,baro,487.62863 +8080000,imu,-0.14467457,0.13862188,-9.917456,-0.00038753822,-0.005546148,0.0001497091 +8080000,airspeed,4.9926577,4.876123 +8080000,mag,0.201,-0.08100001,0.42900002 +8088000,imu,-0.1666698,0.24639803,-9.941639,0.0055757547,-0.0075034346,0.0057141613 +8088000,airspeed,-2.221099,-2.1692667 +8088000,mag,0.201,-0.08100001,0.42900002 +8088000,baro,487.5441 +8092000,airspeed,1.9686208,1.9226806 +8092000,imu,-0.17587791,0.2424811,-9.966069,0.004176849,-0.0056482893,0.0077791284 +8096000,baro,487.7319 +8096000,imu,-0.19436997,0.20977549,-9.914294,-0.00016045832,-0.0097681815,0.0077307024 +8096000,airspeed,3.4216475,3.3417618 +8096000,mag,0.201,-0.08100001,0.42900002 +8100000,baro,487.71783 +8100000,airspeed,-4.6913056,-4.5817795 +8100000,mag,0.202,-0.08200001,0.43100002 +8100000,imu,-0.23760064,0.25557157,-9.918906,-0.00054736616,-0.009715098,0.0025971502 +8104000,airspeed,1.5913966,1.5542368 +8104000,mag,0.202,-0.08200001,0.43100002 +8104000,imu,-0.20968524,0.26867506,-9.985665,0.0015026561,-0.006301883,-0.0047459602 +8104000,baro,487.78824 +8108000,airspeed,-3.4264023,-3.3463943 +8108000,mag,0.202,-0.08200001,0.43100002 +8108000,baro,487.78824 +8108000,imu,-0.19454697,0.1989528,-10.024258,0.0009270659,-0.0046214988,-0.0019267874 +8112000,baro,487.48776 +8112000,imu,-0.23977055,0.22470681,-9.957392,0.0006348841,0.00043544438,-0.0013758993 +8112000,mag,0.202,-0.08200001,0.43100002 +8112000,airspeed,-2.2954345,-2.241875 +8112000,gps,488108.0,85456074.0,473977508.0,0.0,-0.02,-0.01 +8116000,mag,0.202,-0.08200001,0.43100002 +8116000,airspeed,3.2651029,3.1888676 +8116000,baro,487.75537 +8116000,imu,-0.17961307,0.23379518,-9.928353,-0.00075585424,0.0014513021,-0.005283015 +8120000,mag,0.202,-0.08200001,0.43100002 +8120000,baro,487.66617 +8120000,imu,-0.19669086,0.18428758,-10.000356,-0.007038932,0.0010298444,-0.006957502 +8120000,airspeed,-1.6440527,-1.6056751 +8124000,mag,0.202,-0.08200001,0.43100002 +8124000,baro,487.44553 +8128000,airspeed,1.8317147,1.7889476 +8128000,baro,487.7507 +8128000,imu,-0.17719279,0.18944554,-10.030221,-0.0030098835,-0.005139758,0.0037849268 +8128000,mag,0.202,-0.08200001,0.43100002 +8136000,imu,-0.1935234,0.24753155,-9.903666,-0.009136917,-0.004059294,0.00093419047 +8136000,airspeed,2.1251073,2.075509 +8136000,mag,0.202,-0.08200001,0.43100002 +8136000,baro,487.59576 +8140000,mag,0.202,-0.08200001,0.43100002 +8140000,airspeed,1.5563507,1.5200248 +8140000,baro,487.61453 +8140000,imu,-0.12414731,0.24127549,-9.951203,-0.0049269274,-0.0052291555,-0.0037835713 +8144000,airspeed,2.5680609,2.508113 +8144000,imu,-0.13689898,0.16626962,-9.937426,0.0043627364,-0.0072320937,-0.0005208651 +8148000,mag,0.202,-0.08200001,0.43100002 +8148000,imu,-0.18254991,0.1601496,-9.870359,-0.00042799138,-0.007310157,0.004296246 +8148000,airspeed,-4.3740077,-4.271932 +8148000,baro,487.5535 +8152000,airspeed,2.1140335,2.064695 +8152000,imu,-0.18073125,0.2211086,-9.865517,-0.008567756,-0.006783202,0.0065969345 +8152000,mag,0.19900002,-0.08200001,0.43 +8152000,baro,487.58636 +8156000,baro,487.60983 +8156000,mag,0.19900002,-0.08200001,0.43 +8160000,airspeed,-1.9300531,-1.8849958 +8160000,imu,-0.24922347,0.10237985,-9.921499,-0.0011285266,0.0058442755,0.002316958 +8164000,airspeed,2.107211,2.058018 +8164000,imu,-0.2703708,0.15826821,-9.936025,-0.0078456,0.0019490065,-0.0016719704 +8164000,baro,487.69434 +8164000,mag,0.19900002,-0.08200001,0.43 +8168000,airspeed,-3.3854094,-3.3063936 +8168000,imu,-0.2318816,0.22066417,-9.95164,-0.0048934435,-0.00191477,-0.0048430646 +8168000,mag,0.19900002,-0.08200001,0.43 +8168000,baro,487.60983 +8172000,airspeed,1.7643489,1.7231748 +8172000,imu,-0.1962713,0.21368752,-9.834845,-0.0040856325,-0.0012676537,-0.007753295 +8176000,airspeed,-3.546141,-3.4634082 +8176000,imu,-0.1779113,0.2281048,-9.877366,-0.0072386363,-0.0055801645,-0.0065089003 +8176000,baro,487.44083 +8176000,mag,0.19900002,-0.08200001,0.43 +8180000,imu,-0.19730124,0.2767443,-9.964557,-0.0038341645,-0.0047306563,-0.00022558404 +8180000,baro,487.44083 +8180000,mag,0.19900002,-0.08200001,0.43 +8180000,airspeed,-1.68217,-1.6429244 +8184000,baro,487.50186 +8184000,airspeed,-3.2812238,-3.2046607 +8184000,mag,0.19900002,-0.08200001,0.43 +8184000,imu,-0.19565293,0.23676752,-9.9235935,0.0022162965,-0.0031715014,-0.002551121 +8188000,airspeed,2.018129,1.971035 +8188000,imu,-0.18643604,0.15239805,-9.874347,-0.00048363642,-0.0038870752,-0.0025843873 +8192000,mag,0.19900002,-0.08200001,0.43 +8192000,airspeed,-3.1100535,-3.037448 +8192000,baro,487.69904 +8192000,imu,-0.16658297,0.17586504,-9.914185,-0.0051771956,-0.0016372738,0.0012794021 +8196000,mag,0.19900002,-0.08200001,0.43 +8196000,airspeed,2.4591784,2.4017792 +8196000,baro,487.62393 +8196000,imu,-0.18571128,0.16504766,-9.982041,0.0011418648,-0.0017612666,-0.00033391177 +8200000,mag,0.19900002,-0.08200001,0.43 +8200000,baro,487.57697 +8200000,airspeed,2.938648,2.8700652 +8200000,imu,-0.20419478,0.18757893,-9.972172,-0.001795216,-0.0033997474,0.0009881163 +8204000,baro,487.5629 +8204000,airspeed,3.2873645,3.210646 +8204000,mag,0.19700001,-0.08000001,0.42800003 +8204000,imu,-0.1931153,0.24949189,-9.950847,-3.8256298e-05,-0.0062865247,0.0004983997 +8212000,imu,-0.13763651,0.16319132,-9.831337,-0.0044156853,-0.0007678158,-0.00033308414 +8212000,baro,487.62863 +8212000,airspeed,4.2629423,4.16344 +8212000,mag,0.19700001,-0.08000001,0.42800003 +8216000,mag,0.19700001,-0.08000001,0.42800003 +8216000,imu,-0.13552071,0.114857815,-9.80205,-0.0070461333,-7.935907e-05,0.006233148 +8216000,baro,487.60983 +8216000,airspeed,-2.1522145,-2.1019819 +8224000,mag,0.19700001,-0.08000001,0.42800003 +8224000,imu,-0.21516463,0.19861035,-9.945856,0.004485013,-0.008367092,0.0038761152 +8224000,baro,487.61923 +8224000,airspeed,2.375454,2.3200092 +8228000,baro,487.61923 +8228000,imu,-0.17896509,0.21813053,-9.93227,-0.0011460137,-0.006220742,0.0008470528 +8228000,mag,0.19700001,-0.08000001,0.42800003 +8228000,airspeed,2.044966,1.9972351 +8232000,imu,-0.19561775,0.16674118,-9.943805,-0.00027943344,-0.0049355486,-0.010119835 +8232000,mag,0.19700001,-0.08000001,0.42800003 +8232000,baro,487.67557 +8232000,airspeed,0.79605585,0.7774727 +8236000,mag,0.19700001,-0.08000001,0.42800003 +8236000,baro,487.47836 +8236000,imu,-0.2375799,0.112772025,-9.980665,-0.0024146182,-0.004133671,-0.0069374237 +8236000,airspeed,0.8877002,0.86698806 +8240000,airspeed,1.993098,1.9465758 +8240000,imu,-0.22913755,0.12614694,-9.949527,-0.0032645848,-0.006369259,-0.0015127145 +8240000,mag,0.19700001,-0.08000001,0.42800003 +8240000,baro,487.638 +8244000,imu,-0.23773514,0.19206488,-9.89871,-0.0028254364,-0.005484864,-0.005328193 +8248000,mag,0.19700001,-0.08000001,0.42800003 +8248000,baro,487.60983 +8252000,airspeed,5.049996,4.9321246 +8252000,imu,-0.19196077,0.25725284,-9.926401,0.004057337,-0.014078633,0.0028410063 +8256000,mag,0.19700001,-0.07900001,0.43100002 +8256000,airspeed,-1.2219853,-1.1934599 +8256000,baro,487.66617 +8256000,imu,-0.18978366,0.17607106,-9.917206,0.0029963383,-0.0050286353,-0.0054534497 +8260000,imu,-0.17525963,0.14728476,-9.969982,0.0036033115,-0.0029462941,-0.008653961 +8260000,baro,487.66617 +8260000,mag,0.19700001,-0.07900001,0.43100002 +8260000,airspeed,-2.6872313,-2.624502 +8268000,baro,487.76007 +8268000,mag,0.19700001,-0.07900001,0.43100002 +8268000,imu,-0.13781622,0.20465092,-9.953796,-0.0070414357,-0.012289248,-0.00047027387 +8268000,airspeed,-0.68078595,-0.6648903 +8272000,imu,-0.11631758,0.15259711,-9.994965,-0.004171433,-0.0068582874,-9.4673196e-05 +8272000,airspeed,-4.5696654,-4.4630365 +8276000,baro,487.76007 +8276000,mag,0.19700001,-0.07900001,0.43100002 +8276000,imu,-0.13274625,0.19484966,-9.982015,0.0016075968,-0.009261552,0.00020353822 +8276000,airspeed,-3.9329538,-3.8411243 +8280000,imu,-0.16115698,0.27430767,-9.924108,0.0038571684,-0.0036663907,1.15770235e-05 +8280000,mag,0.19700001,-0.07900001,0.43100002 +8280000,airspeed,-2.125716,-2.076081 +8280000,baro,487.77417 +8284000,airspeed,3.091545,3.0193822 +8284000,baro,487.6427 +8284000,mag,0.19700001,-0.07900001,0.43100002 +8284000,imu,-0.18238373,0.27980003,-9.94714,-0.002347683,-0.0055582044,-0.0011002837 +8292000,airspeed,-0.6160874,-0.60171026 +8292000,baro,487.5441 +8292000,mag,0.19700001,-0.07900001,0.43100002 +8292000,imu,-0.19903536,0.1782664,-9.929545,-0.0014442614,-0.00843365,0.0028704046 +8296000,airspeed,1.6033921,1.5659841 +8296000,mag,0.19700001,-0.07900001,0.43100002 +8296000,baro,487.44553 +8296000,imu,-0.27539548,0.1617061,-9.897685,-0.00471841,-0.0046095196,0.0017863234 +8300000,airspeed,-1.0906173,-1.0651726 +8300000,mag,0.19700001,-0.07900001,0.43100002 +8300000,baro,487.44553 +8300000,imu,-0.3050487,0.1277586,-9.958722,-0.0052799103,-0.0014752282,-0.0030512824 +8304000,baro,487.58167 +8304000,airspeed,3.0443652,2.9733145 +8304000,imu,-0.25057083,0.1869257,-9.931355,-0.0022338661,-0.0033527568,-0.004214093 +8304000,mag,0.19700001,-0.07900001,0.43100002 +8312000,airspeed,-3.1147277,-3.0420108 +8312000,gps,488092.0,85456074.0,473977508.0,0.0,0.01,-0.07 +8312000,imu,-0.26692635,0.18557753,-9.963031,0.0020286927,-0.009182945,5.798955e-05 +8312000,baro,487.71313 +8312000,mag,0.19900002,-0.08100001,0.42800003 +8316000,mag,0.19900002,-0.08100001,0.42800003 +8316000,imu,-0.23923129,0.107517056,-9.999713,0.00015916962,-0.008846474,-0.0064874426 +8316000,baro,487.69434 +8316000,airspeed,3.3411005,3.263102 +8320000,mag,0.19900002,-0.08100001,0.42800003 +8320000,imu,-0.29163834,0.10964807,-9.982023,0.0011402667,-0.006008647,-0.007760983 +8320000,baro,487.49246 +8324000,imu,-0.2827046,0.18453196,-9.963191,-0.004144047,-0.00671995,0.0016729735 +8324000,airspeed,0.5862952,0.5726151 +8324000,mag,0.19900002,-0.08100001,0.42800003 +8324000,baro,487.49246 +8328000,baro,487.44083 +8328000,mag,0.19900002,-0.08100001,0.42800003 +8328000,airspeed,-1.7816174,-1.7400516 +8328000,imu,-0.21773942,0.1703419,-9.973467,-0.0038233225,-0.005585629,0.009309346 +8332000,baro,487.44083 +8332000,mag,0.19900002,-0.08100001,0.42800003 +8332000,airspeed,-2.6641414,-2.6019862 +8332000,imu,-0.17435427,0.14867206,-9.943927,-0.002131448,-0.01108171,0.005552008 +8336000,baro,487.66617 +8336000,mag,0.19900002,-0.08100001,0.42800003 +8336000,airspeed,-3.7868342,-3.698437 +8336000,imu,-0.24423245,0.20955898,-9.961539,-0.003685652,-0.010862235,0.001426506 +8344000,airspeed,3.5958402,3.5119133 +8344000,imu,-0.22071503,0.18246722,-9.9601,0.0008319831,-0.0018529138,0.0017654884 +8344000,baro,487.60983 +8344000,mag,0.19900002,-0.08100001,0.42800003 +8348000,baro,487.62863 +8348000,airspeed,-3.9632287,-3.8707225 +8348000,imu,-0.20975278,0.16093917,-9.996155,0.0034914503,-0.0020903791,-0.0022663113 +8348000,mag,0.19900002,-0.08100001,0.42800003 +8352000,mag,0.19900002,-0.08100001,0.42800003 +8352000,imu,-0.1456225,0.22113581,-9.924238,0.004070356,-0.006466908,-0.0013640368 +8352000,airspeed,1.7381388,1.6975687 +8352000,baro,487.62863 +8356000,airspeed,3.0626624,2.991177 +8356000,mag,0.19900002,-0.08100001,0.42800003 +8356000,imu,-0.14404438,0.18588689,-9.934157,0.003950185,-0.0065069906,0.003684763 +8356000,baro,487.62393 +8364000,airspeed,-3.571519,-3.4881682 +8364000,imu,-0.24790736,0.2811337,-9.930503,-0.0049709175,-0.0085451035,0.0011375117 +8368000,imu,-0.28482845,0.22302695,-9.874759,-0.007759255,-0.0061937687,0.00047075018 +8368000,airspeed,-3.1110249,-3.0384052 +8368000,mag,0.19900002,-0.08000001,0.42900002 +8368000,baro,487.6568 +8372000,imu,-0.31150585,0.17424949,-9.912445,0.00014274898,-0.0024801884,-0.0007303223 +8372000,baro,487.638 +8372000,airspeed,2.9681,2.8988192 +8372000,mag,0.19900002,-0.08000001,0.42900002 +8376000,baro,487.69904 +8376000,imu,-0.25316334,0.19412053,-10.016676,0.006770611,-0.000800093,-0.0004841953 +8376000,mag,0.19900002,-0.08000001,0.42900002 +8376000,airspeed,1.3793222,1.3471215 +8380000,airspeed,-2.583089,-2.522779 +8380000,imu,-0.24004735,0.21361253,-9.957247,0.0039475015,-0.005177285,-0.0010684221 +8384000,mag,0.19900002,-0.08000001,0.42900002 +8384000,baro,487.69434 +8388000,baro,487.69434 +8388000,mag,0.19900002,-0.08000001,0.42900002 +8388000,imu,-0.17961532,0.19796972,-9.874733,0.0019891623,-0.0035503958,-0.0077297855 +8388000,airspeed,2.0045311,1.9577353 +8392000,baro,487.69434 +8392000,mag,0.19900002,-0.08000001,0.42900002 +8392000,imu,-0.1869968,0.2392215,-9.893368,0.00084004574,0.0041082916,0.0032734254 +8392000,airspeed,-1.8326043,-1.7898221 +8396000,imu,-0.20507267,0.22083466,-9.892426,0.0014270818,0.0068013226,0.0062317085 +8396000,airspeed,-3.2302158,-3.154851 +8400000,baro,487.61923 +8400000,airspeed,3.3441389,3.2660847 +8400000,mag,0.19900002,-0.08000001,0.42900002 +8400000,imu,-0.139013,0.17978054,-9.903083,-0.0015960752,-0.0038793283,-0.0026067016 +8404000,mag,0.19900002,-0.08000001,0.42900002 +8408000,airspeed,2.5088763,2.4502985 +8408000,baro,487.7507 +8408000,imu,-0.21074066,0.1584444,-9.942745,0.0012389834,-0.009503104,-0.009506901 +8408000,mag,0.19900002,-0.08000001,0.42900002 +8412000,baro,487.7507 +8412000,imu,-0.24187438,0.17957722,-9.955659,0.0001866657,-0.011301799,-0.0041762125 +8412000,airspeed,3.9586327,3.866206 +8412000,mag,0.19900002,-0.07900001,0.43 +8416000,baro,487.5535 +8416000,airspeed,4.2043524,4.1062365 +8416000,imu,-0.23271649,0.21475734,-9.927075,0.0031011833,-0.010071705,0.00033868031 +8416000,mag,0.19900002,-0.07900001,0.43 +8420000,mag,0.19900002,-0.07900001,0.43 +8420000,baro,487.5535 +8424000,imu,-0.21387227,0.13904037,-9.968982,0.009617124,-0.00945874,0.0030565532 +8424000,airspeed,-1.5074407,-1.4722598 +8428000,baro,487.60513 +8428000,mag,0.19900002,-0.07900001,0.43 +8428000,airspeed,-3.4321282,-3.3520231 +8428000,imu,-0.2132837,0.14437592,-9.955114,0.0037755086,-0.0075779627,0.00840773 +8432000,mag,0.19900002,-0.07900001,0.43 +8432000,baro,487.6474 +8436000,mag,0.19900002,-0.07900001,0.43 +8436000,baro,487.71783 +8436000,airspeed,2.4247415,2.3681326 +8436000,imu,-0.19033621,0.1513988,-9.999286,-0.0059424276,-0.005159141,0.0075948406 +8440000,airspeed,-1.1758703,-1.148418 +8440000,imu,-0.23638089,0.21278358,-9.914076,-0.004515242,-0.0033235156,0.0010393928 +8440000,mag,0.19900002,-0.07900001,0.43 +8440000,baro,487.71783 +8448000,mag,0.19900002,-0.07900001,0.43 +8448000,imu,-0.23837642,0.18877593,-10.0081215,-0.0014586083,-0.013574948,-0.0012799214 +8448000,baro,487.7366 +8448000,airspeed,-3.0856578,-3.0136151 +8452000,airspeed,-1.5046874,-1.469562 +8452000,mag,0.19900002,-0.07900001,0.43 +8452000,baro,487.67557 +8452000,imu,-0.21596405,0.20006923,-9.968544,-0.0029533547,-0.018207235,-0.0023446346 +8456000,baro,487.50656 +8456000,imu,-0.16421033,0.27081332,-9.886556,0.0021000998,-0.011470117,0.001046521 +8456000,airspeed,-2.5696576,-2.5096972 +8456000,mag,0.19900002,-0.07900001,0.43 +8460000,mag,0.19900002,-0.07900001,0.43 +8460000,imu,-0.22527295,0.27302414,-9.864904,0.00652814,-0.0009888109,0.0015159113 +8460000,airspeed,3.609932,3.525698 +8460000,baro,487.50656 +8468000,airspeed,3.5591276,3.4760296 +8468000,imu,-0.19306515,0.18693283,-9.94821,-0.004416003,-0.00030030278,-0.0036025597 +8468000,baro,487.7413 +8468000,mag,0.19900002,-0.07900001,0.43 +8476000,baro,487.62393 +8476000,mag,0.19900002,-0.07900001,0.43 +8476000,airspeed,-1.0976759,-1.0720555 +8476000,imu,-0.25228652,0.24949823,-9.946174,0.0027859823,-0.0086001055,-0.0003386331 +8480000,mag,0.19900002,-0.07900001,0.43 +8480000,baro,487.62393 +8480000,imu,-0.191253,0.25721362,-9.948635,-0.00011798929,-0.0028215125,0.0010357079 +8480000,airspeed,-2.873664,-2.8065906 +8484000,imu,-0.15214173,0.26729056,-9.922154,-0.0028782883,-0.009194769,0.0018994174 +8484000,mag,0.19900002,-0.07900001,0.43 +8484000,airspeed,0.9117916,0.8905088 +8484000,baro,487.638 +8488000,imu,-0.1730387,0.18714882,-9.859739,0.004235197,-0.009010921,-0.0013826204 +8488000,baro,487.71313 +8488000,airspeed,2.5865042,2.526119 +8488000,mag,0.19900002,-0.07900001,0.43 +8492000,airspeed,1.2927686,1.2625873 +8492000,mag,0.19900002,-0.07900001,0.43 +8492000,imu,-0.19460438,0.16700463,-9.8315525,0.0039246515,-0.0067680236,0.00011058835 +8492000,baro,487.71313 +8500000,baro,487.6568 +8500000,mag,0.19900002,-0.07900001,0.43 +8500000,imu,-0.236445,0.26852906,-9.841553,-0.0049476745,-0.005364618,0.0029122427 +8500000,airspeed,3.2605956,3.1844835 +8508000,baro,487.50656 +8508000,airspeed,2.3285015,2.2741683 +8508000,mag,0.19900002,-0.07900001,0.43 +8508000,imu,-0.2172669,0.2507584,-10.019918,-0.0035671156,-0.012609978,0.0010921804 +8512000,airspeed,-1.90992,-1.865355 +8512000,mag,0.19900002,-0.07900001,0.43 +8512000,imu,-0.18822247,0.12399534,-10.020751,-0.005460084,-0.015061997,-0.0013300098 +8512000,baro,487.49246 +8512000,gps,488095.0,85456074.0,473977508.0,0.0,0.03,0.0 +8516000,imu,-0.13421384,0.09535359,-9.990506,-0.003940629,-0.007251721,-0.005896077 +8516000,baro,487.52063 +8516000,mag,0.202,-0.08200001,0.42700002 +8516000,airspeed,1.6465759,1.6081531 +8520000,airspeed,-1.8537581,-1.8104914 +8520000,baro,487.60983 +8520000,mag,0.202,-0.08200001,0.42700002 +8520000,imu,-0.1820606,0.20702258,-9.856519,-0.00563457,-0.0033505121,-0.005214807 +8524000,baro,487.67557 +8524000,airspeed,-0.9474932,-0.9253749 +8524000,imu,-0.2146411,0.20128557,-9.82651,-0.0027540305,-0.00662686,-0.003718982 +8524000,mag,0.202,-0.08200001,0.42700002 +8532000,imu,-0.29178116,0.19631316,-9.865105,0.006282856,-0.006167708,0.00048115896 +8532000,mag,0.202,-0.08200001,0.42700002 +8532000,baro,487.62393 +8532000,airspeed,0.5185307,0.50642776 +8536000,imu,-0.264811,0.20335183,-9.931941,0.0026969977,-0.008085116,-0.0006179586 +8536000,baro,487.53003 +8536000,airspeed,3.7723145,3.6842854 +8536000,mag,0.202,-0.08200001,0.42700002 +8540000,baro,487.47836 +8540000,imu,-0.09971469,0.2646024,-10.01287,-0.004905116,-0.006985106,-0.0020574878 +8540000,mag,0.202,-0.08200001,0.42700002 +8540000,airspeed,0.22203362,0.21685302 +8544000,airspeed,-1.4389971,-1.4054055 +8544000,imu,-0.13195916,0.23136346,-10.023784,-0.004162036,-0.0116613135,-0.0027624227 +8544000,mag,0.202,-0.08200001,0.42700002 +8544000,baro,487.67087 +8548000,airspeed,-1.2925035,-1.2623347 +8548000,imu,-0.18507835,0.19249864,-10.053301,0.001034648,-0.0087760445,-0.00019152118 +8548000,mag,0.202,-0.08200001,0.42700002 +8548000,baro,487.6333 +8552000,mag,0.202,-0.08200001,0.42700002 +8552000,baro,487.6333 +8556000,imu,-0.24184315,0.14347321,-9.91633,-0.005990016,-0.0060915,-0.008397025 +8556000,mag,0.202,-0.08200001,0.42700002 +8556000,airspeed,-2.087214,-2.0384908 +8556000,baro,487.67087 +8564000,mag,0.202,-0.08200001,0.42700002 +8564000,imu,-0.16755204,0.18128768,-9.898561,-0.0013292924,-0.009037449,0.001631533 +8564000,airspeed,-1.421466,-1.3882982 +8564000,baro,487.49716 +8568000,baro,487.67087 +8568000,imu,-0.18076067,0.17759539,-9.943672,-0.008062861,-0.005165928,0.00460216 +8568000,airspeed,-4.9088225,-4.794233 +8568000,mag,0.201,-0.08200001,0.42800003 +8572000,imu,-0.21222645,0.18951999,-9.864806,-0.0016396203,-0.0063203806,-0.0032112377 +8572000,mag,0.201,-0.08200001,0.42800003 +8572000,baro,487.5676 +8572000,airspeed,2.144163,2.0941231 +8576000,mag,0.201,-0.08200001,0.42800003 +8576000,airspeed,1.1408446,1.1142199 +8576000,imu,-0.19010913,0.16668087,-9.903562,0.0031653463,-0.009840754,-0.007389366 +8576000,baro,487.5676 +8580000,mag,0.201,-0.08200001,0.42800003 +8580000,airspeed,1.7656809,1.7244534 +8580000,imu,-0.18441638,0.12171622,-9.923102,0.0006425087,-0.006305954,0.0021024363 +8580000,baro,487.76477 +8584000,imu,-0.16141415,0.12867792,-9.890845,-0.0017481989,-0.004971162,0.0026342273 +8584000,airspeed,-4.8779297,-4.764076 +8584000,baro,487.61453 +8584000,mag,0.201,-0.08200001,0.42800003 +8588000,airspeed,-2.5223105,-2.4634383 +8588000,mag,0.201,-0.08200001,0.42800003 +8588000,imu,-0.1767384,0.16541018,-9.887222,-0.0021430266,-0.010340319,-0.0018084432 +8588000,baro,487.61453 +8592000,imu,-0.22699775,0.18040463,-9.898511,-0.003850706,-0.010275753,-0.0033001278 +8592000,airspeed,-1.2171206,-1.1887038 +8592000,baro,487.7366 +8592000,mag,0.201,-0.08200001,0.42800003 +8596000,imu,-0.22134303,0.13978702,-9.988294,-0.0021144676,-0.007942662,-0.004652544 +8596000,airspeed,-2.596354,-2.5357218 +8596000,baro,487.8258 +8596000,mag,0.201,-0.08200001,0.42800003 +8600000,imu,-0.23743044,0.13668668,-9.995821,0.002738094,-0.008237411,-0.0042880843 +8600000,airspeed,-3.4291904,-3.3491554 +8600000,landed,1.0 +8600000,baro,487.59576 +8600000,mag,0.201,-0.08200001,0.42800003 +8604000,mag,0.201,-0.08200001,0.42800003 +8604000,baro,487.52533 +8604000,imu,-0.28463587,0.20320576,-9.963654,-0.0017106223,-0.0040380675,-0.0023911074 +8604000,airspeed,-2.4131923,-2.3568797 +8608000,baro,487.6568 +8608000,mag,0.201,-0.08200001,0.42800003 +8608000,airspeed,-3.3932302,-3.3140225 +8608000,imu,-0.2681829,0.2379237,-9.969135,-0.0019586247,-0.0038986485,-0.00026556078 +8612000,airspeed,-1.145826,-1.1190791 +8612000,baro,487.6568 +8612000,mag,0.201,-0.08200001,0.42800003 +8612000,imu,-0.27493823,0.22489016,-9.907497,-0.0019180636,-0.005621988,-0.0031310087 +8616000,imu,-0.24693611,0.1911775,-9.940814,-9.305979e-05,-0.005993876,-0.0067266827 +8616000,airspeed,1.2211089,1.1926088 +8616000,baro,487.60043 +8616000,mag,0.201,-0.08200001,0.42800003 +8620000,baro,487.4549 +8620000,mag,0.19700001,-0.07800001,0.425 +8620000,airspeed,-2.8065047,-2.7410262 +8620000,imu,-0.22656523,0.17541498,-10.028366,-0.0026400862,-0.003862364,-0.0026560607 +8624000,mag,0.19700001,-0.07800001,0.425 +8624000,baro,487.4549 +8624000,imu,-0.21697998,0.19638908,-9.956693,-0.006949156,-0.000624231,-0.00017534783 +8624000,airspeed,-0.58734155,-0.57363826 +8628000,airspeed,-2.3974686,-2.3415167 +8628000,mag,0.19700001,-0.07800001,0.425 +8628000,imu,-0.14415334,0.19242835,-9.913173,-0.0017728127,-0.006328843,-0.0047999937 +8628000,baro,487.57227 +8632000,mag,0.19700001,-0.07800001,0.425 +8632000,imu,-0.1784872,0.13158429,-9.973567,0.0019326976,-0.011850697,-0.0030855548 +8632000,baro,487.48306 +8632000,airspeed,-3.5231798,-3.4409752 +8640000,imu,-0.29096466,0.19038057,-9.969854,-0.008323852,-0.009019713,-0.00034032593 +8640000,airspeed,-3.2488263,-3.172984 +8640000,mag,0.19700001,-0.07800001,0.425 +8640000,baro,487.68497 +8644000,imu,-0.26297733,0.1584896,-9.974679,-0.006721845,-0.014860791,0.0001378075 +8644000,baro,487.68497 +8644000,mag,0.19700001,-0.07800001,0.425 +8644000,airspeed,-3.4339263,-3.3537629 +8648000,mag,0.19700001,-0.07800001,0.425 +8648000,imu,-0.18538882,0.17830974,-9.981915,-0.0031810012,-0.009710247,-0.00097277295 +8648000,airspeed,4.387079,4.2846684 +8648000,baro,487.67087 +8656000,mag,0.19700001,-0.07800001,0.425 +8656000,airspeed,-3.0430233,-2.9719985 +8656000,imu,-0.1644057,0.20726539,-9.887001,-0.0029802264,-0.007895476,0.0014638127 +8656000,baro,487.60983 +8660000,imu,-0.1526009,0.17124665,-9.876571,-0.0024187174,-0.00017590083,0.0011323853 +8660000,airspeed,-2.4763603,-2.4185615 +8664000,imu,-0.19137862,0.19369331,-9.910564,-0.0039228844,-0.0020373517,0.0015093698 +8664000,airspeed,-1.5389869,-1.5030528 +8664000,baro,487.76477 +8664000,mag,0.19700001,-0.07800001,0.425 +8668000,baro,487.76477 +8668000,airspeed,4.040612,3.9462674 +8668000,imu,-0.19452704,0.19025975,-9.958045,-0.0035357322,-0.010417665,0.00015768573 +8668000,mag,0.19700001,-0.07800001,0.425 +8672000,baro,487.78354 +8672000,airspeed,-1.7302438,-1.6898425 +8672000,imu,-0.20892127,0.15107502,-10.005925,-0.0058598425,-0.008405729,0.00045466574 +8672000,mag,0.19800001,-0.08000001,0.42900002 +8676000,airspeed,-3.0212157,-2.95067 +8676000,baro,487.78354 +8676000,mag,0.19800001,-0.08000001,0.42900002 +8676000,imu,-0.25296804,0.17362323,-9.959867,-0.0015931394,-0.0015254809,-0.00039674406 +8684000,airspeed,-1.9706765,-1.9246731 +8684000,baro,487.67557 +8684000,imu,-0.18055323,0.22501427,-9.974332,-0.0011675388,-0.004365744,-0.00035061158 +8684000,mag,0.19800001,-0.08000001,0.42900002 +8688000,airspeed,2.308522,2.2546318 +8688000,imu,-0.20282401,0.1612501,-9.991656,0.001766992,-0.0041062897,0.00093458215 +8688000,baro,487.67557 +8688000,mag,0.19800001,-0.08000001,0.42900002 +8692000,airspeed,0.49904868,0.48739806 +8692000,baro,487.70844 +8692000,imu,-0.24561246,0.18685172,-9.964701,-0.0013945431,-0.0012528744,-0.0009141164 +8692000,mag,0.19800001,-0.08000001,0.42900002 +8700000,mag,0.19800001,-0.08000001,0.42900002 +8700000,imu,-0.21750522,0.21873932,-10.021968,-0.0015118748,-0.0042372216,-0.0002973982 +8700000,airspeed,-3.8051176,-3.716343 +8700000,baro,487.44083 +8704000,imu,-0.22267394,0.18841179,-9.9535,-0.0009348317,-0.0066527734,0.0047462224 +8704000,baro,487.638 +8704000,airspeed,-1.605885,-1.568401 +8704000,mag,0.19800001,-0.08000001,0.42900002 +8712000,mag,0.19800001,-0.08000001,0.42900002 +8712000,baro,487.67557 +8712000,imu,-0.21053013,0.16522986,-9.910243,-0.00269974,-0.008235998,-0.002713903 +8712000,gps,488094.0,85456075.0,473977508.0,-0.01,0.0,-0.01 +8712000,airspeed,2.4095714,2.3533225 +8716000,airspeed,2.4872708,2.4292161 +8716000,baro,487.61923 +8716000,mag,0.19800001,-0.08000001,0.42900002 +8716000,imu,-0.21620172,0.21934624,-9.86145,0.004419915,-0.008877717,-0.0061514233 +8720000,airspeed,-1.3864143,-1.3540471 +8720000,imu,-0.21530357,0.18757087,-9.963388,-0.00051164173,-0.0066846632,-0.0038721866 +8720000,baro,487.71313 +8720000,mag,0.19800001,-0.08000001,0.42900002 +8728000,baro,487.4643 +8728000,imu,-0.17035902,0.18846393,-9.887135,-0.0027881677,-0.0035947426,0.0015766909 +8728000,airspeed,2.008058,1.9612067 +8728000,mag,0.19800001,-0.08100001,0.42800003 +8732000,airspeed,-1.2624302,-1.2329756 +8732000,baro,487.4643 +8732000,mag,0.19800001,-0.08100001,0.42800003 +8732000,imu,-0.2264642,0.18008623,-9.904761,-0.0049795657,-0.008687859,0.003283846 +8736000,airspeed,-2.175523,-2.1247497 +8736000,baro,487.58167 +8736000,imu,-0.2894507,0.17833768,-9.968049,-0.0046991445,-0.008369405,0.0005948977 +8736000,mag,0.19800001,-0.08100001,0.42800003 +8744000,baro,487.6427 +8744000,mag,0.19800001,-0.08100001,0.42800003 +8744000,airspeed,1.1002518,1.0745698 +8744000,imu,-0.25120395,0.23584294,-9.8975725,-0.0024996728,-0.0049019917,-0.00089242245 +8748000,baro,487.5676 +8748000,airspeed,2.1583974,2.1080258 +8748000,mag,0.19800001,-0.08100001,0.42800003 +8748000,imu,-0.1764019,0.22548763,-9.87974,-0.003098372,0.0010089047,-0.0014128833 +8752000,baro,487.5676 +8752000,mag,0.19800001,-0.08100001,0.42800003 +8752000,airspeed,-0.7150375,-0.69835037 +8752000,imu,-0.15945223,0.15068199,-9.980842,-0.0028355068,-0.0052255187,-0.0038193557 +8756000,imu,-0.18301529,0.17700651,-10.031642,0.00023381463,-0.012039631,-0.0026254181 +8756000,baro,487.6568 +8756000,airspeed,3.1142743,3.0415778 +8756000,mag,0.19800001,-0.08100001,0.42800003 +8760000,baro,487.50186 +8760000,imu,-0.14860754,0.17072134,-9.934548,0.0042448984,-0.011118379,-0.0036017562 +8760000,mag,0.19800001,-0.08100001,0.42800003 +8760000,airspeed,-1.089251,-1.0638347 +8768000,imu,-0.13610582,0.16009606,-9.958131,0.007667477,-0.0023609044,-0.003462812 +8768000,airspeed,-2.574273,-2.5141823 +8768000,baro,487.6568 +8768000,mag,0.19800001,-0.08100001,0.42800003 +8772000,airspeed,3.2558372,3.1798368 +8772000,mag,0.19800001,-0.08100001,0.42800003 +8772000,imu,-0.184645,0.14692935,-9.986171,0.005638796,-0.004465158,0.0029858423 +8772000,baro,487.6568 +8776000,airspeed,2.6150002,2.553963 +8776000,imu,-0.2265848,0.20778483,-10.003388,-0.0036024754,0.0015179323,0.000819432 +8776000,mag,0.19800001,-0.08100001,0.42800003 +8776000,baro,487.62863 +8780000,mag,0.20300001,-0.08200001,0.43100002 +8780000,baro,487.62393 +8780000,imu,-0.1734509,0.2043724,-10.034772,-0.008330347,-0.00038139173,0.00038711415 +8780000,airspeed,-3.3606486,-3.282209 +8784000,airspeed,2.5469904,2.4875402 +8784000,mag,0.20300001,-0.08200001,0.43100002 +8784000,baro,487.6333 +8784000,imu,-0.10516221,0.16182947,-10.045865,-0.002138796,-0.0032868397,-0.00024149688 +8788000,imu,-0.12543613,0.16518666,-10.050424,-0.0042996574,0.0006659026,-0.006131455 +8788000,baro,487.59576 +8788000,airspeed,-1.7910794,-1.749277 +8788000,mag,0.20300001,-0.08200001,0.43100002 +8792000,airspeed,4.6361165,4.527913 +8792000,mag,0.20300001,-0.08200001,0.43100002 +8792000,imu,-0.14654848,0.19971411,-9.990735,-0.0054046293,0.0021631664,-0.0063919434 +8792000,baro,487.59576 +8800000,airspeed,3.7536623,3.666072 +8800000,mag,0.20300001,-0.08200001,0.43100002 +8800000,imu,-0.24925172,0.17117882,-9.940659,-0.0061199074,-0.0026607432,-0.001254707 +8800000,baro,487.51593 +8804000,imu,-0.18530737,0.22482984,-9.894015,0.002490298,-0.0005978351,-0.0012936831 +8804000,mag,0.20300001,-0.08200001,0.43100002 +8804000,airspeed,-1.5690532,-1.5324272 +8804000,baro,487.6568 +8808000,imu,-0.18276326,0.20068435,-9.926792,0.0059274654,-0.0051063257,-0.006832231 +8808000,mag,0.20300001,-0.08200001,0.43100002 +8808000,baro,487.6568 +8808000,airspeed,2.2028632,2.1514423 +8812000,airspeed,1.2257576,1.1971577 +8812000,baro,487.47836 +8812000,mag,0.20300001,-0.08200001,0.43100002 +8812000,imu,-0.2694329,0.18600447,-9.969074,-0.0015223086,-0.0072032353,-0.00080250273 +8816000,mag,0.20300001,-0.08200001,0.43100002 +8816000,baro,487.6333 +8820000,imu,-0.22009961,0.2173336,-10.000202,-0.004550065,0.0048009786,-0.0049945745 +8820000,airspeed,1.9039623,1.8595153 +8824000,airspeed,-2.4479952,-2.3908546 +8824000,baro,487.638 +8824000,imu,-0.1855324,0.17464975,-9.911255,-0.0056744427,-0.0015519899,5.8989976e-05 +8824000,mag,0.20300001,-0.08200001,0.43100002 +8828000,imu,-0.18025616,0.1886323,-9.93075,-0.0010203344,-0.0061085657,0.0028132799 +8828000,airspeed,3.583729,3.5000694 +8828000,baro,487.68027 +8828000,mag,0.20300001,-0.08200001,0.43100002 +8832000,baro,487.71783 +8832000,imu,-0.2606872,0.18788937,-9.976165,-0.004678274,-0.007988727,0.0005072615 +8832000,airspeed,-1.5216722,-1.4861466 +8832000,mag,0.19900002,-0.07800001,0.42600003 +8836000,airspeed,1.8081642,1.7659539 +8836000,mag,0.19900002,-0.07800001,0.42600003 +8836000,imu,-0.25457987,0.17334418,-9.95463,-0.0064410847,-0.01072443,-0.0012724655 +8836000,baro,487.68027 +8840000,airspeed,2.2933304,2.2398107 +8840000,imu,-0.24792045,0.20477809,-9.873376,0.00067373866,-0.0058326395,0.001697711 +8844000,mag,0.19900002,-0.07800001,0.42600003 +8844000,imu,-0.26744387,0.2452378,-9.791811,0.0029859035,-0.005503026,-0.0009435186 +8844000,airspeed,-2.46445,-2.4069366 +8844000,baro,487.5582 +8848000,mag,0.19900002,-0.07800001,0.42600003 +8848000,imu,-0.2224379,0.24974053,-9.867569,0.005329658,-0.011162584,-0.0007469745 +8848000,airspeed,3.7483304,3.6608486 +8848000,baro,487.59106 +8852000,mag,0.19900002,-0.07800001,0.42600003 +8852000,baro,487.48776 +8852000,airspeed,1.9784077,1.9322455 +8852000,imu,-0.20641753,0.19342777,-9.988435,0.0020921782,-0.010614987,0.0034643263 +8856000,baro,487.48776 +8856000,airspeed,2.0049026,1.958122 +8856000,imu,-0.16153087,0.15022777,-9.986733,-0.0060419543,-0.0069394405,0.0012911818 +8856000,mag,0.19900002,-0.07800001,0.42600003 +8860000,imu,-0.13661498,0.19201149,-9.9771185,-0.010183817,-0.0066133505,-0.00015211817 +8860000,mag,0.19900002,-0.07800001,0.42600003 +8860000,baro,487.57697 +8860000,airspeed,0.8623173,0.8421923 +8864000,baro,487.57697 +8864000,airspeed,3.2330685,3.1576142 +8864000,imu,-0.17338704,0.1841586,-9.948882,-0.009242814,-0.007217981,0.0010913888 +8864000,mag,0.19900002,-0.07800001,0.42600003 +8868000,imu,-0.1433994,0.1787506,-9.891223,-0.0017293281,-0.010634136,0.0022392059 +8868000,baro,487.5582 +8868000,mag,0.19900002,-0.07800001,0.42600003 +8868000,airspeed,3.617057,3.5326457 +8872000,baro,487.5582 +8872000,imu,-0.19278221,0.1634557,-9.911426,-0.003755777,-0.0035066837,0.0017666988 +8872000,mag,0.19900002,-0.07800001,0.42600003 +8872000,airspeed,-3.8503952,-3.7605383 +8876000,mag,0.19900002,-0.07800001,0.42600003 +8876000,baro,487.6474 +8876000,imu,-0.27557528,0.1675478,-9.8736925,-0.007964094,-0.0041141314,8.414007e-05 +8876000,airspeed,3.7551408,3.6674876 +8880000,mag,0.19900002,-0.07800001,0.42600003 +8880000,imu,-0.22357306,0.2571225,-9.900891,-0.0069367923,-0.011440925,-0.0012204413 +8880000,baro,487.62393 +8880000,airspeed,-1.8651911,-1.8216559 +8884000,airspeed,-2.7544003,-2.6901078 +8884000,mag,0.20300001,-0.08100001,0.42700002 +8884000,baro,487.638 +8884000,imu,-0.20154276,0.24901892,-9.950636,-0.00442385,-0.0092502665,0.002222832 +8888000,imu,-0.22770375,0.14995496,-9.876853,-0.0024756799,-0.005034742,0.0012486851 +8888000,airspeed,2.8196638,2.7538579 +8888000,baro,487.57697 +8888000,mag,0.20300001,-0.08100001,0.42700002 +8896000,imu,-0.18674059,0.17562915,-9.981508,0.002376382,-0.005047061,-0.0048410385 +8896000,airspeed,3.895746,3.804823 +8896000,baro,487.59106 +8896000,mag,0.20300001,-0.08100001,0.42700002 +8900000,mag,0.20300001,-0.08100001,0.42700002 +8900000,imu,-0.19768414,0.1759416,-9.913742,0.00015206214,-0.0048884084,-0.0044329558 +8900000,baro,487.7272 +8900000,airspeed,3.1155527,3.042814 +8904000,mag,0.20300001,-0.08100001,0.42700002 +8904000,baro,487.61453 +8904000,imu,-0.23901834,0.21534444,-9.877355,0.0022824642,-0.0019373895,-0.0010541081 +8904000,airspeed,-1.5610025,-1.524568 +8908000,mag,0.20300001,-0.08100001,0.42700002 +8908000,airspeed,1.6750516,1.6359557 +8908000,imu,-0.26267454,0.20474504,-9.904572,-0.00041710556,-0.0037638876,-0.00021728392 +8908000,baro,487.60983 +8912000,gps,488084.0,85456074.0,473977508.0,0.0,0.01,0.02 +8912000,mag,0.20300001,-0.08100001,0.42700002 +8912000,imu,-0.30110556,0.17818229,-9.870874,-0.0020518266,-0.008687095,0.0016049838 +8912000,airspeed,2.435615,2.378749 +8912000,baro,487.7413 +8916000,baro,487.7413 +8916000,airspeed,-3.733872,-3.6466944 +8916000,imu,-0.27171713,0.1444152,-9.876004,-0.0027815585,-0.006412933,0.0040953634 +8916000,mag,0.20300001,-0.08100001,0.42700002 +8920000,airspeed,-2.4031131,-2.3470201 +8920000,mag,0.20300001,-0.08100001,0.42700002 +8920000,imu,-0.22906452,0.19537507,-9.810571,-0.0034287162,-0.0045326096,-0.00036510194 +8920000,baro,487.638 +8924000,airspeed,-1.8269349,-1.7842909 +8924000,mag,0.20300001,-0.08100001,0.42700002 +8924000,baro,487.638 +8924000,imu,-0.2261637,0.28997788,-9.843793,-0.0008313706,-0.003116651,-0.0015085014 +8928000,airspeed,2.2074358,2.1559117 +8928000,mag,0.20300001,-0.08100001,0.42700002 +8928000,imu,-0.18664485,0.25445622,-9.973522,-0.0008844495,0.0032771516,0.00165948 +8928000,baro,487.62863 +8936000,imu,-0.34710294,0.16828564,-9.947365,4.7574973e-05,-0.003218715,0.0048879534 +8936000,mag,0.202,-0.07900001,0.42800003 +8936000,airspeed,3.2939413,3.2170346 +8936000,baro,487.7413 +8944000,airspeed,-0.66451,-0.64899755 +8944000,baro,487.68027 +8944000,mag,0.202,-0.07900001,0.42800003 +8944000,imu,-0.16681994,0.23586258,-9.869582,-0.0026451242,-0.013266866,0.0040218425 +8948000,baro,487.7319 +8948000,imu,-0.1594853,0.2812899,-9.912184,0.0050164624,-0.009896289,-0.0034271998 +8948000,mag,0.202,-0.07900001,0.42800003 +8948000,airspeed,-1.7968111,-1.7548605 +8952000,airspeed,4.5303993,4.4246926 +8952000,mag,0.202,-0.07900001,0.42800003 +8952000,baro,487.48306 +8952000,imu,-0.21860252,0.21033831,-9.945285,0.0055527305,-0.007255605,-0.0021751183 +8956000,airspeed,-2.5972416,-2.536621 +8956000,mag,0.202,-0.07900001,0.42800003 +8956000,baro,487.61453 +8956000,imu,-0.22903167,0.16982636,-9.913989,-0.0007028518,-0.0046099722,0.0031346774 +8960000,mag,0.202,-0.07900001,0.42800003 +8960000,imu,-0.22703676,0.23877443,-9.916877,0.0020406838,-0.0027252126,-0.0009990558 +8960000,baro,487.7507 +8960000,airspeed,-1.7747049,-1.7332689 +8964000,imu,-0.20352975,0.21307737,-9.892935,0.005031798,-0.009031243,-0.0072205085 +8964000,baro,487.68967 +8964000,airspeed,-4.655407,-4.546728 +8964000,mag,0.202,-0.07900001,0.42800003 +8968000,imu,-0.18158549,0.18075204,-9.924885,0.0019726257,-0.007040362,-0.0050644833 +8968000,airspeed,1.876258,1.8324658 +8968000,mag,0.202,-0.07900001,0.42800003 +8968000,baro,487.60983 +8972000,baro,487.59576 +8972000,mag,0.202,-0.07900001,0.42800003 +8972000,airspeed,-2.3303266,-2.2759383 +8972000,imu,-0.14284079,0.20052634,-9.973072,0.0046912488,-0.0072751567,0.0007503692 +8976000,baro,487.69904 +8976000,mag,0.202,-0.07900001,0.42800003 +8976000,airspeed,-4.774709,-4.663242 +8976000,imu,-0.12517308,0.17851122,-9.950746,0.0026235806,-0.008276689,0.005106091 +8980000,imu,-0.12509732,0.16296354,-9.983514,-0.00071819994,-0.00013731362,0.0024088945 +8980000,baro,487.69904 +8980000,mag,0.202,-0.07900001,0.42800003 +8980000,airspeed,-2.3204288,-2.2662578 +8984000,baro,487.67087 +8984000,imu,-0.1525186,0.20468421,-9.961934,-0.004465445,0.0063231387,0.0006881165 +8984000,mag,0.19900002,-0.07800001,0.432 +8984000,airspeed,3.0653868,2.99383 +8988000,mag,0.19900002,-0.07800001,0.432 +8988000,baro,487.67087 +8988000,imu,-0.2312338,0.20231435,-9.934097,-0.0055127596,-0.0017975281,0.0013641606 +8988000,airspeed,4.2383075,4.1393704 +8992000,mag,0.19900002,-0.07800001,0.432 +8992000,baro,487.50656 +8992000,imu,-0.24983577,0.161267,-9.94343,0.002088511,-0.009988079,0.00050660834 +8992000,airspeed,3.0589776,2.9875996 +8996000,mag,0.19900002,-0.07800001,0.432 +8996000,baro,487.61923 +8996000,airspeed,-1.5477515,-1.511626 +8996000,imu,-0.2001168,0.19427527,-9.9683075,-0.0051450143,-0.0023611311,0.0018115159 +9004000,mag,0.19900002,-0.07800001,0.432 +9004000,airspeed,-2.9303966,-2.86202 +9004000,baro,487.49716 +9004000,imu,-0.19947234,0.23666751,-9.941652,-0.006069185,-0.0132220555,-0.0014533239 +9012000,baro,487.60983 +9012000,imu,-0.235747,0.19274001,-9.970763,0.0015259177,-0.011917108,0.00069545757 +9012000,airspeed,-0.76508814,-0.7472309 +9012000,mag,0.19900002,-0.07800001,0.432 +9016000,imu,-0.25387856,0.15744041,-10.000887,0.0020771457,-0.0077813356,-0.003455413 +9016000,airspeed,0.6593721,0.6439797 +9016000,mag,0.19900002,-0.07800001,0.432 +9016000,baro,487.67557 +9020000,baro,487.67557 +9020000,mag,0.19900002,-0.07800001,0.432 +9020000,imu,-0.22747713,0.16576508,-9.978199,-0.00037024327,-0.0037465154,-0.009076607 +9020000,airspeed,-4.9202046,-4.8053474 +9024000,mag,0.19900002,-0.07800001,0.432 +9024000,imu,-0.14207003,0.124011785,-9.9268675,-0.001854364,-0.0051192576,-0.0039516715 +9024000,airspeed,-3.9823253,-3.8893769 +9024000,baro,487.60983 +9032000,mag,0.19900002,-0.07800001,0.432 +9032000,imu,-0.22754763,0.19431865,-10.043317,-0.00778058,-0.0009813145,0.002371767 +9032000,baro,487.67557 +9032000,airspeed,-2.8700745,-2.8030756 +9040000,imu,-0.21615592,0.1354741,-9.902237,0.0013820558,-0.0062605822,-0.0044993744 +9040000,baro,487.66617 +9040000,mag,0.19900002,-0.07900001,0.43100002 +9040000,airspeed,-3.620133,-3.5356266 +9044000,airspeed,2.4168265,2.3603745 +9044000,baro,487.915 +9044000,imu,-0.15904199,0.17831369,-9.972195,0.0011516458,-0.0070914556,-0.0017158386 +9044000,mag,0.19900002,-0.07900001,0.43100002 +9048000,baro,487.915 +9048000,airspeed,-3.331642,-3.2538216 +9048000,imu,-0.08596877,0.23636208,-9.980454,-0.00023483804,-0.0061223498,-7.509883e-05 +9048000,mag,0.19900002,-0.07900001,0.43100002 +9052000,baro,487.67557 +9052000,airspeed,-2.3999932,-2.3439682 +9052000,imu,-0.20412359,0.2589894,-9.965136,-0.0036589345,-0.007701058,-0.0030831033 +9052000,mag,0.19900002,-0.07900001,0.43100002 +9056000,baro,487.78354 +9056000,mag,0.19900002,-0.07900001,0.43100002 +9060000,imu,-0.151426,0.2079389,-9.882986,-0.0017191581,-0.0095071895,0.0020742125 +9060000,baro,487.66147 +9060000,airspeed,3.488456,3.4070249 +9060000,mag,0.19900002,-0.07900001,0.43100002 +9068000,mag,0.19900002,-0.07900001,0.43100002 +9068000,baro,487.52063 +9068000,airspeed,2.1599882,2.1095848 +9068000,imu,-0.21980757,0.22200723,-9.943479,0.0015930682,-0.005224799,-0.0011667955 +9072000,mag,0.19900002,-0.07900001,0.43100002 +9072000,baro,487.58167 +9072000,airspeed,2.1023085,2.0532439 +9072000,imu,-0.19793181,0.23177208,-9.994977,0.0003867647,-0.006267259,-0.003309615 +9076000,mag,0.19900002,-0.07900001,0.43100002 +9076000,baro,487.52533 +9076000,imu,-0.1972044,0.21201836,-9.9583025,0.002458018,-0.010365734,-0.004620108 +9076000,airspeed,-3.412568,-3.3329358 +9080000,airspeed,-1.9558626,-1.9102179 +9080000,baro,487.5629 +9080000,imu,-0.20331083,0.18085018,-9.9498,-0.0007356934,-0.011014908,-0.0035566455 +9080000,mag,0.19900002,-0.07900001,0.43100002 +9084000,baro,487.5629 +9084000,mag,0.19900002,-0.07900001,0.43100002 +9084000,airspeed,-1.3931086,-1.3605971 +9084000,imu,-0.24836938,0.23496981,-9.891183,-0.0005410145,-0.010493646,-0.0023582946 +9088000,baro,487.58636 +9088000,airspeed,-2.080901,-2.0323358 +9088000,imu,-0.2610465,0.2382029,-9.788973,0.0022767112,-0.0099867545,0.0036166904 +9088000,mag,0.202,-0.08100001,0.42800003 +9092000,mag,0.202,-0.08100001,0.42800003 +9092000,airspeed,2.1392066,2.0892718 +9092000,imu,-0.20263462,0.25170267,-9.905369,0.0001824639,-0.0083800135,0.0079483045 +9092000,baro,487.6568 +9100000,airspeed,2.9080644,2.840191 +9100000,mag,0.202,-0.08100001,0.42800003 +9100000,imu,-0.1986763,0.083906956,-9.906497,0.0047677504,-0.006269284,-0.001965498 +9100000,baro,487.60513 +9104000,airspeed,1.0924033,1.0669047 +9104000,mag,0.202,-0.08100001,0.42800003 +9104000,baro,487.638 +9104000,imu,-0.20510468,0.16006808,-9.960997,0.005462468,-0.005890115,0.0013755617 +9112000,baro,487.62393 +9112000,airspeed,1.7776415,1.73615 +9112000,gps,488097.0,85456074.0,473977508.0,0.0,0.0,0.02 +9112000,imu,-0.077094525,0.17608586,-10.044834,-0.0020786326,-0.009962548,-0.002665984 +9112000,mag,0.202,-0.08100001,0.42800003 +9120000,imu,-0.20545249,0.19874741,-9.873379,0.0006437527,-0.012477894,-0.004949479 +9120000,airspeed,2.2720551,2.219038 +9120000,mag,0.202,-0.08100001,0.42800003 +9120000,baro,487.51123 +9124000,mag,0.202,-0.08100001,0.42800003 +9124000,airspeed,-1.9171232,-1.8723693 +9124000,baro,487.68027 +9124000,imu,-0.1881781,0.18862769,-9.91324,0.00089784106,-0.0075305733,0.0021950866 +9128000,mag,0.202,-0.08100001,0.42800003 +9128000,airspeed,-3.4887574,-3.4073567 +9128000,imu,-0.18731736,0.22072478,-9.899278,-0.002574748,-0.008064384,-0.0028633848 +9128000,baro,487.47836 +9132000,mag,0.202,-0.08100001,0.42800003 +9132000,baro,487.47836 +9132000,airspeed,-2.8730004,-2.8059669 +9132000,imu,-0.15260781,0.21303006,-9.895826,-0.005502777,-0.009723105,-0.012440423 +9136000,baro,487.60513 +9136000,airspeed,-0.107915774,-0.10539703 +9136000,mag,0.202,-0.08100001,0.42800003 +9136000,imu,-0.13599737,0.22406028,-9.988563,0.00030643377,-0.003947576,-0.010157829 +9144000,baro,487.67557 +9144000,airspeed,3.7108781,3.6242511 +9144000,mag,0.19800001,-0.077000014,0.42900002 +9144000,imu,-0.27340958,0.08091317,-9.91478,0.00037450867,-0.0021913585,0.008240157 +9148000,baro,487.67557 +9148000,airspeed,1.5805589,1.5436622 +9148000,mag,0.19800001,-0.077000014,0.42900002 +9148000,imu,-0.15644045,0.09898069,-9.923098,-0.00068739295,-0.005734234,0.0036297922 +9152000,mag,0.19800001,-0.077000014,0.42900002 +9152000,airspeed,-1.8612963,-1.8178586 +9152000,imu,-0.20037311,0.11325398,-9.936748,-0.0008699899,-0.004727304,0.0008186011 +9152000,baro,487.5629 +9160000,airspeed,-3.2991474,-3.2221408 +9160000,baro,487.6333 +9160000,imu,-0.13321272,0.16370988,-9.948214,-0.005721874,-0.009985093,-0.0061279396 +9160000,mag,0.19800001,-0.077000014,0.42900002 +9164000,mag,0.19800001,-0.077000014,0.42900002 +9164000,imu,-0.117087536,0.11799393,-9.94373,-0.0023581798,-0.0050243153,-0.00023351097 +9164000,baro,487.6568 +9164000,airspeed,-3.8258302,-3.7365248 +9168000,imu,-0.15539148,0.08665942,-9.878957,-0.0076760724,-0.0064423196,0.0023921228 +9172000,mag,0.19800001,-0.077000014,0.42900002 +9172000,baro,487.70844 +9172000,imu,-0.21411322,0.14718047,-9.893867,-0.0055287117,-0.006017759,7.683859e-05 +9172000,airspeed,1.4540405,1.4200948 +9176000,mag,0.19800001,-0.077000014,0.42900002 +9176000,airspeed,-3.0775564,-3.0057282 +9176000,imu,-0.25459224,0.18239504,-9.909053,-0.006979938,-0.0062343297,0.00075675175 +9176000,baro,487.59576 +9180000,imu,-0.22383586,0.1874255,-9.909408,-0.003832006,-0.007026189,-0.0043431893 +9180000,airspeed,0.5193754,0.5072535 +9180000,baro,487.59576 +9180000,mag,0.19800001,-0.077000014,0.42900002 +9184000,mag,0.19800001,-0.077000014,0.42900002 +9184000,baro,487.59576 +9184000,airspeed,0.95948297,0.9370893 +9188000,imu,-0.158572,0.2774699,-9.982136,0.0019947824,0.0005304256,-0.0021773998 +9192000,mag,0.2,-0.07900001,0.42900002 +9192000,imu,-0.12684208,0.18255979,-9.934705,0.0006802266,0.00071818195,-0.004438617 +9192000,baro,487.469 +9192000,airspeed,-2.201782,-2.1504102 +9200000,mag,0.2,-0.07900001,0.42900002 +9200000,baro,487.5488 +9200000,airspeed,3.0679681,2.996373 +9200000,imu,-0.3023565,0.21734627,-9.960539,-0.0002706517,-0.0042739697,-0.0073093013 +9204000,imu,-0.2454847,0.118719466,-9.920096,0.009017116,-0.004275327,-0.0072841356 +9204000,airspeed,2.1410453,2.0910597 +9204000,baro,487.71783 +9204000,mag,0.2,-0.07900001,0.42900002 +9208000,baro,487.6474 +9208000,imu,-0.15325081,0.14235477,-9.946496,0.008466837,0.0010610237,-0.0017060741 +9208000,mag,0.2,-0.07900001,0.42900002 +9208000,airspeed,-0.93000954,-0.9083011 +9212000,imu,-0.14956436,0.12704901,-9.989711,0.0016989087,-0.0023522633,-0.0018861712 +9212000,baro,487.6474 +9212000,mag,0.2,-0.07900001,0.42900002 +9212000,airspeed,1.7464767,1.7057102 +9220000,imu,-0.18871714,0.096188955,-9.921914,0.0008407477,-0.0012682085,-0.000539833 +9220000,baro,487.66617 +9220000,airspeed,1.2442918,1.215246 +9220000,mag,0.2,-0.07900001,0.42900002 +9224000,imu,-0.23891735,0.07684024,-9.881399,-0.0033536751,0.0025001673,0.0034324513 +9224000,airspeed,-3.155699,-3.0820472 +9228000,airspeed,1.8450646,1.8020017 +9228000,mag,0.2,-0.07900001,0.42900002 +9228000,baro,487.60043 +9228000,imu,-0.20328479,0.14961521,-9.912425,0.0016257097,-0.00263807,0.0042736144 +9232000,airspeed,-1.4021196,-1.3693943 +9232000,mag,0.2,-0.07900001,0.42900002 +9232000,imu,-0.15831836,0.22787993,-9.93787,0.0067229327,-0.008605286,-0.00058494427 +9232000,baro,487.60513 +9236000,mag,0.2,-0.07900001,0.42900002 +9236000,airspeed,-2.0031486,-1.9563954 +9236000,imu,-0.15908317,0.24335334,-9.932901,0.0027351545,-0.009047485,-0.0013154689 +9236000,baro,487.60513 +9244000,imu,-0.17760716,0.15543444,-9.913409,0.0019776681,-0.002135223,0.00075880135 +9244000,airspeed,-0.9191311,-0.89767337 +9244000,baro,487.70844 +9244000,mag,0.202,-0.08100001,0.42600003 +9248000,airspeed,-2.759893,-2.6954613 +9248000,baro,487.70844 +9248000,imu,-0.27858797,0.19975021,-9.936239,0.0027554217,-0.0030917004,0.0007164764 +9248000,mag,0.202,-0.08100001,0.42600003 +9252000,mag,0.202,-0.08100001,0.42600003 +9252000,airspeed,3.7116969,3.625075 +9252000,imu,-0.21404482,0.23650986,-9.935364,0.004602086,-0.0052817822,0.007177085 +9252000,baro,487.5676 +9256000,imu,-0.18409596,0.21857822,-9.892827,0.0028889535,-0.006300836,0.006239223 +9256000,mag,0.202,-0.08100001,0.42600003 +9256000,baro,487.50656 +9256000,airspeed,-2.0940845,-2.045221 +9260000,imu,-0.22372168,0.17233124,-9.885857,-0.001073985,0.0023108323,0.0024436316 +9260000,airspeed,3.153105,3.0795105 +9264000,mag,0.202,-0.08100001,0.42600003 +9264000,airspeed,2.247131,2.1946733 +9264000,imu,-0.19299068,0.17483447,-9.893657,-0.002457166,0.0070388815,0.00041436378 +9264000,baro,487.68027 +9268000,mag,0.202,-0.08100001,0.42600003 +9268000,airspeed,3.0963259,3.0240474 +9268000,imu,-0.20454565,0.21796732,-9.933266,0.0006736309,-0.002028616,0.0012663304 +9268000,baro,487.66617 +9272000,baro,487.68967 +9272000,mag,0.202,-0.08100001,0.42600003 +9272000,imu,-0.20985773,0.19523932,-9.992726,-0.00013201,-0.007413725,-0.00084235595 +9272000,airspeed,3.6100764,3.5258 +9280000,mag,0.202,-0.08100001,0.42600003 +9280000,imu,-0.17090023,0.23588985,-9.927377,-0.006107072,-0.00600143,0.00434414 +9280000,airspeed,-3.9324322,-3.8406572 +9280000,baro,487.57227 +9284000,mag,0.202,-0.08100001,0.42600003 +9284000,imu,-0.17417558,0.22186424,-9.945714,-0.0010190633,-0.008159215,0.0061177765 +9284000,airspeed,2.5837088,2.523418 +9284000,baro,487.52063 +9288000,mag,0.202,-0.08100001,0.42600003 +9288000,airspeed,-2.6543558,-2.5924 +9288000,imu,-0.19819641,0.18181095,-9.950113,0.0012100895,-0.0047940454,-0.0024840853 +9288000,baro,487.62863 +9292000,airspeed,3.0810838,3.009158 +9292000,baro,487.68027 +9292000,imu,-0.16759215,0.08405022,-9.913024,0.00069134025,-0.003117472,-0.004729544 +9292000,mag,0.202,-0.08100001,0.42600003 +9296000,mag,0.202,-0.08100001,0.42600003 +9296000,airspeed,-1.9488201,-1.9033331 +9296000,baro,487.62393 +9296000,imu,-0.17924076,0.11112662,-9.914443,-0.0016345163,-0.005335981,0.0008366569 +9300000,airspeed,-2.136662,-2.0867822 +9300000,mag,0.201,-0.08300001,0.432 +9300000,imu,-0.16760519,0.18993373,-10.003173,-0.0010989041,-0.0032132945,0.00662439 +9300000,baro,487.68967 +9304000,mag,0.201,-0.08300001,0.432 +9304000,airspeed,-2.2218075,-2.1699343 +9304000,baro,487.7319 +9304000,imu,-0.12167098,0.20549853,-9.957262,0.0027564971,-0.0036148026,0.0036650437 +9308000,imu,-0.20440976,0.20032172,-9.820879,0.003377999,-0.011043866,-0.0025551436 +9308000,airspeed,2.4462593,2.3891459 +9308000,mag,0.201,-0.08300001,0.432 +9308000,baro,487.7319 +9312000,gps,488103.0,85456074.0,473977508.0,0.01,-0.01,0.0 +9316000,imu,-0.23358616,0.24536377,-9.926186,-0.0012956806,-0.003985245,0.0018378419 +9316000,airspeed,-3.6270015,-3.5423613 +9316000,baro,487.5441 +9316000,mag,0.201,-0.08300001,0.432 +9324000,imu,-0.20341335,0.24014933,-9.948537,0.0017557675,-0.0049900184,0.00045888868 +9324000,mag,0.201,-0.08300001,0.432 +9324000,baro,487.62393 +9324000,airspeed,-2.8417253,-2.7753968 +9332000,airspeed,-1.2926905,-1.2625209 +9332000,mag,0.201,-0.08300001,0.432 +9332000,imu,-0.25175753,0.18228318,-9.893261,0.0037321148,-0.009051726,0.007417199 +9332000,baro,487.58636 +9336000,imu,-0.27565515,0.07987672,-9.863692,0.0013206027,-0.00686498,-0.0006190027 +9336000,airspeed,3.6236231,3.5390532 +9336000,mag,0.201,-0.08300001,0.432 +9336000,baro,487.58636 +9340000,airspeed,2.1906805,2.1395411 +9340000,imu,-0.22948658,0.050201323,-9.873196,0.0027969035,-0.012977928,-0.0069973413 +9340000,baro,487.67557 +9340000,mag,0.201,-0.08300001,0.432 +9344000,airspeed,-2.0907476,-2.0419416 +9344000,baro,487.67087 +9344000,mag,0.201,-0.08300001,0.432 +9344000,imu,-0.17782283,0.16451496,-9.917264,0.00304186,-0.012813236,0.0022812253 +9348000,airspeed,-1.9570212,-1.911346 +9348000,baro,487.59576 +9348000,mag,0.201,-0.08000001,0.43 +9348000,imu,-0.17818856,0.28962022,-9.979268,-0.0012552352,-0.007292333,0.0033175151 +9352000,baro,487.67087 +9352000,imu,-0.21570206,0.25551444,-9.959122,-0.00041428686,-0.0010524812,-0.00034200292 +9352000,airspeed,2.4683244,2.410705 +9352000,mag,0.201,-0.08000001,0.43 +9356000,imu,-0.2301198,0.24305783,-9.890683,0.00034752782,-0.004711496,-0.00092921866 +9356000,airspeed,1.8359722,1.7931184 +9356000,baro,487.62863 +9356000,mag,0.201,-0.08000001,0.43 +9360000,mag,0.201,-0.08000001,0.43 +9360000,imu,-0.16225018,0.19938375,-9.962389,0.0026571518,-0.009266939,6.211309e-06 +9360000,airspeed,1.6172851,1.579535 +9360000,baro,487.638 +9364000,imu,-0.17381316,0.14780891,-10.018417,-0.0032483768,-0.011259002,-0.0043005906 +9364000,baro,487.62393 +9364000,mag,0.201,-0.08000001,0.43 +9364000,airspeed,2.9821506,2.9125447 +9368000,imu,-0.24550469,0.15589885,-9.994856,-0.008052529,-0.008913466,-0.004723832 +9368000,mag,0.201,-0.08000001,0.43 +9368000,airspeed,2.3787396,2.3232179 +9368000,baro,487.62393 +9372000,airspeed,-2.6765735,-2.614115 +9372000,imu,-0.2211726,0.11846262,-10.0034275,-0.00276008,-0.008231582,0.001929236 +9376000,mag,0.201,-0.08000001,0.43 +9376000,baro,487.60043 +9376000,airspeed,2.5705216,2.510527 +9376000,imu,-0.18179524,0.11814216,-9.930338,0.00045216992,-0.006636831,-0.0012734754 +9380000,imu,-0.19879328,0.144022,-9.892205,0.0018525594,-0.0017049226,-0.008835771 +9380000,baro,487.60043 +9380000,mag,0.201,-0.08000001,0.43 +9380000,airspeed,1.7537587,1.7128267 +9384000,mag,0.201,-0.08000001,0.43 +9384000,airspeed,3.518064,3.4359388 +9384000,baro,487.67557 +9384000,imu,-0.2600341,0.19164619,-9.935057,0.0026852298,-0.009214937,-0.0050590797 +9388000,airspeed,2.5571246,2.4974265 +9388000,baro,487.70844 +9388000,imu,-0.24594352,0.16558395,-9.945231,-0.00096965267,-0.006606133,0.0044111637 +9388000,mag,0.201,-0.08000001,0.43 +9392000,airspeed,1.8800963,1.8362052 +9392000,baro,487.69434 +9392000,mag,0.201,-0.08000001,0.43 +9392000,imu,-0.24867907,0.1393111,-9.899388,-0.0025211037,-0.0030277153,0.0064701596 +9396000,imu,-0.22807512,0.12961091,-9.913382,-0.0022896822,-0.010883254,0.00095356436 +9396000,airspeed,2.660237,2.5981383 +9396000,baro,487.66617 +9396000,mag,0.201,-0.08000001,0.43 +9400000,mag,0.19500001,-0.07900001,0.42900002 +9400000,imu,-0.16253208,0.18623503,-9.928473,-0.0034259832,-0.009123117,-0.0011726739 +9400000,baro,487.66617 +9400000,airspeed,-1.1823823,-1.1547817 +9404000,imu,-0.18549636,0.2357878,-9.945072,-0.0005263483,-0.002372377,-0.0012005371 +9404000,airspeed,0.88771695,0.8669941 +9404000,mag,0.19500001,-0.07900001,0.42900002 +9404000,baro,487.67557 +9408000,baro,487.59576 +9408000,airspeed,-1.68454,-1.645224 +9408000,imu,-0.22260007,0.16754021,-9.97216,-0.00358887,-0.004132749,-0.00090798584 +9408000,mag,0.19500001,-0.07900001,0.42900002 +9416000,imu,-0.19785503,0.20186558,-9.886783,-0.002577651,-0.004879233,0.004104173 +9416000,mag,0.19500001,-0.07900001,0.42900002 +9416000,airspeed,-0.37677085,-0.36797357 +9416000,baro,487.76477 +9420000,airspeed,1.9952204,1.9486501 +9420000,baro,487.62393 +9420000,mag,0.19500001,-0.07900001,0.42900002 +9420000,imu,-0.22156124,0.2210412,-9.907809,-0.007234131,-0.008125818,0.00032642658 +9428000,baro,487.61453 +9428000,imu,-0.22010736,0.1722328,-9.97556,-0.0010145329,-0.010295515,-0.0061948863 +9428000,mag,0.19500001,-0.07900001,0.42900002 +9428000,airspeed,3.6093674,3.5251236 +9432000,mag,0.19500001,-0.07900001,0.42900002 +9432000,airspeed,0.4118043,0.40219536 +9432000,baro,487.50186 +9432000,imu,-0.2673064,0.14046118,-9.905026,-0.0072359513,-0.005372197,-0.004365282 +9436000,airspeed,0.19450654,0.18996798 +9436000,mag,0.19500001,-0.07900001,0.42900002 +9436000,baro,487.50186 +9436000,imu,-0.23194297,0.12879366,-9.8372135,-0.0048244074,-0.004198422,6.665862e-05 +9440000,imu,-0.23898932,0.14430663,-9.928622,0.0015506097,-0.0040199053,0.003659816 +9440000,baro,487.7225 +9440000,airspeed,-0.8527973,-0.83288723 +9440000,mag,0.19500001,-0.07900001,0.42900002 +9444000,mag,0.19500001,-0.07900001,0.42900002 +9444000,imu,-0.21848923,0.15842025,-9.986107,-0.0054065147,-0.004642192,-0.002724424 +9444000,baro,487.7225 +9444000,airspeed,2.7364576,2.67257 +9448000,airspeed,-3.494621,-3.4130523 +9448000,baro,487.62863 +9448000,mag,0.19500001,-0.07900001,0.42900002 +9448000,imu,-0.16313764,0.18249735,-9.967027,-0.0007117626,-0.008212262,-0.008325891 +9452000,airspeed,-1.7720407,-1.7306836 +9452000,mag,0.20400001,-0.07900001,0.42800003 +9452000,imu,-0.21601863,0.19962423,-10.037843,0.0008261812,-0.008659475,-0.0025709376 +9452000,baro,487.58636 +9456000,mag,0.20400001,-0.07900001,0.42800003 +9456000,airspeed,3.3126466,3.2353337 +9456000,baro,487.58636 +9456000,imu,-0.24746938,0.21706267,-9.977562,-0.00012970423,-0.008657025,-0.0022948815 +9460000,baro,487.5535 +9460000,airspeed,4.1376257,4.0410666 +9460000,mag,0.20400001,-0.07900001,0.42800003 +9460000,imu,-0.2319469,0.22714873,-9.847613,0.00090936845,-0.008140764,-0.0032704915 +9464000,baro,487.80704 +9464000,airspeed,2.090732,2.0419102 +9464000,mag,0.20400001,-0.07900001,0.42800003 +9464000,imu,-0.22958954,0.12528858,-9.900525,-0.0028860127,-0.00872375,-0.0013262659 +9472000,airspeed,0.46541128,0.45455027 +9472000,mag,0.20400001,-0.07900001,0.42800003 +9472000,baro,487.5441 +9472000,imu,-0.20103312,0.1447432,-9.934805,0.0049424353,-0.008382547,-0.0011238607 +9476000,airspeed,0.34529036,0.33723092 +9476000,imu,-0.13020937,0.22445811,-9.970892,-0.0018477378,-0.012693325,-0.002412072 +9480000,mag,0.20400001,-0.07900001,0.42800003 +9480000,imu,-0.12627736,0.2524311,-9.944683,-0.0030871814,-0.014251261,-0.0067907264 +9480000,baro,487.6568 +9480000,airspeed,2.371811,2.3164458 +9484000,mag,0.20400001,-0.07900001,0.42800003 +9484000,baro,487.48306 +9484000,airspeed,3.0167015,2.9463136 +9484000,imu,-0.1997012,0.2437057,-9.9192095,-0.004017535,-0.009724117,-0.003310489 +9488000,mag,0.20400001,-0.07900001,0.42800003 +9488000,airspeed,-3.563752,-3.4805484 +9488000,baro,487.7319 +9488000,imu,-0.193031,0.21904305,-9.945946,0.0029579725,-0.0070928615,0.00038709762 +9492000,airspeed,-4.764595,-4.653355 +9492000,baro,487.7319 +9492000,imu,-0.2624929,0.17339455,-9.947265,0.0068770484,-0.009027925,0.0014334958 +9492000,mag,0.20400001,-0.07900001,0.42800003 +9496000,mag,0.20400001,-0.07900001,0.42800003 +9496000,airspeed,-2.713571,-2.6502419 +9496000,baro,487.57227 +9496000,imu,-0.2930928,0.14940852,-9.86671,-0.00075948256,-0.009266024,0.0024397003 +9500000,mag,0.20400001,-0.07900001,0.42800003 +9500000,airspeed,-2.3198118,-2.2656822 +9500000,baro,487.50186 +9500000,imu,-0.2881724,0.11757368,-9.8431835,-0.0032701562,-0.001328143,0.0013497362 +9508000,imu,-0.23945875,0.18173088,-9.913235,0.00039267656,0.0051868386,-0.0012958315 +9508000,airspeed,1.8230361,1.7804692 +9508000,mag,0.19800001,-0.08300001,0.42600003 +9508000,baro,487.76947 +9512000,baro,487.50186 +9512000,gps,488097.0,85456074.0,473977508.0,0.0,0.0,-0.01 +9512000,mag,0.19800001,-0.08300001,0.42600003 +9516000,imu,-0.27232638,0.19780657,-9.948192,-0.0011551866,-0.0027103766,-0.0015365265 +9516000,airspeed,-2.3693724,-2.3140717 +9520000,imu,-0.17395334,0.20755258,-9.891909,-0.0056122057,-0.0037681272,0.0015060024 +9520000,mag,0.19800001,-0.08300001,0.42600003 +9520000,baro,487.58636 +9520000,airspeed,-1.8690696,-1.8254478 +9524000,imu,-0.18070523,0.20188841,-9.89264,-0.0013982978,-0.005030215,0.0017291289 +9524000,mag,0.19800001,-0.08300001,0.42600003 +9524000,baro,487.7319 +9528000,baro,487.7319 +9528000,airspeed,2.4025683,2.3464751 +9532000,mag,0.19800001,-0.08300001,0.42600003 +9532000,imu,-0.25854117,0.1401798,-9.978028,0.00035131117,-0.008040259,-0.0018020945 +9532000,airspeed,-1.1817194,-1.1541296 +9532000,baro,487.7319 +9536000,imu,-0.24697854,0.16972288,-10.001375,0.0012777238,-0.005508976,-0.004504289 +9536000,baro,487.67557 +9536000,mag,0.19800001,-0.08300001,0.42600003 +9540000,airspeed,-2.9801617,-2.9106102 +9540000,mag,0.19800001,-0.08300001,0.42600003 +9540000,imu,-0.20003578,0.17983703,-9.951032,-0.005379788,-0.0074311798,-0.001814534 +9540000,baro,487.57697 +9544000,imu,-0.18133233,0.16182072,-9.911569,-0.0092690475,-0.004839748,0.0023527774 +9544000,mag,0.19800001,-0.08300001,0.42600003 +9544000,airspeed,2.380532,2.3249633 +9544000,baro,487.6568 +9552000,airspeed,-4.166223,-4.0689764 +9552000,imu,-0.22817285,0.17948775,-9.987461,-0.003957942,-0.008419703,-0.0015211608 +9552000,baro,487.638 +9552000,mag,0.19800001,-0.08300001,0.42600003 +9560000,mag,0.19800001,-0.08100001,0.42800003 +9560000,imu,-0.22965729,0.20479095,-9.939567,-0.0076603475,-0.007184244,0.0025322712 +9560000,baro,487.80704 +9560000,airspeed,1.6391528,1.600876 +9564000,imu,-0.20472878,0.2078648,-9.966943,-0.00040087718,-0.010133731,0.0069996514 +9564000,baro,487.80704 +9564000,mag,0.19800001,-0.08100001,0.42800003 +9568000,airspeed,0.38655996,0.3775366 +9568000,imu,-0.22338505,0.17106417,-9.97347,-0.0023071994,-0.0076231756,0.006061054 +9568000,baro,487.6521 +9568000,mag,0.19800001,-0.08100001,0.42800003 +9572000,mag,0.19800001,-0.08100001,0.42800003 +9572000,imu,-0.19567211,0.18654945,-9.964795,-0.00499886,-0.0057324274,0.0048267995 +9572000,baro,487.6521 +9572000,airspeed,-1.3273802,-1.2963955 +9576000,imu,-0.18473305,0.15251656,-9.952366,-0.0060864943,-0.0060053472,0.0012591323 +9576000,baro,487.49246 +9576000,mag,0.19800001,-0.08100001,0.42800003 +9576000,airspeed,-2.5597403,-2.500013 +9580000,airspeed,-3.3628142,-3.2842786 +9580000,baro,487.84927 +9580000,mag,0.19800001,-0.08100001,0.42800003 +9580000,imu,-0.105085135,0.11333281,-9.918971,-0.0030694099,-0.0061546564,0.0006536555 +9588000,imu,-0.114377104,0.25643787,-9.917034,-0.004998166,-0.01312584,0.0023773608 +9588000,airspeed,-3.4705377,-3.3895519 +9588000,baro,487.52533 +9588000,mag,0.19800001,-0.08100001,0.42800003 +9592000,imu,-0.17628343,0.3113048,-9.945765,-0.00488353,-0.009842863,-7.2435556e-05 +9592000,airspeed,-1.5975528,-1.5602703 +9592000,baro,487.5629 +9592000,mag,0.19800001,-0.08100001,0.42800003 +9596000,airspeed,3.2753372,3.1989233 +9596000,imu,-0.13634525,0.21727158,-9.888783,-0.0043177186,-0.004405353,-0.0021665331 +9596000,baro,487.44083 +9596000,mag,0.19800001,-0.08100001,0.42800003 +9600000,imu,-0.103484325,0.16697365,-9.906537,-0.004381896,-0.011312941,-0.0052381274 +9600000,mag,0.19800001,-0.08100001,0.42800003 +9600000,baro,487.62393 +9600000,landed,1.0 +9600000,airspeed,-1.7704747,-1.7291502 +9604000,mag,0.19800001,-0.08100001,0.42800003 +9604000,baro,487.62393 +9604000,imu,-0.102322705,0.15508005,-9.969894,-0.004752017,-0.008557304,-0.011060184 +9604000,airspeed,-2.7794416,-2.714567 +9608000,mag,0.201,-0.08100001,0.42900002 +9608000,airspeed,4.1079392,4.01204 +9608000,imu,-0.1452948,0.16099937,-9.953226,-0.0023010084,-0.0034707962,-0.006544742 +9608000,baro,487.68967 +9612000,baro,487.68967 +9612000,airspeed,-0.52451867,-0.5122739 +9612000,mag,0.201,-0.08100001,0.42900002 +9612000,imu,-0.17259291,0.18966332,-9.904852,0.0029713684,-0.00629316,0.0011649347 +9616000,imu,-0.18837655,0.17817017,-9.810043,0.00598835,-0.006218813,-0.0012063098 +9616000,baro,487.71313 +9616000,airspeed,-0.75646096,-0.7388005 +9616000,mag,0.201,-0.08100001,0.42900002 +9624000,baro,487.59576 +9624000,airspeed,-3.2786024,-3.2020822 +9624000,imu,-0.2111151,0.15321083,-9.94943,0.0051932107,-0.003789026,0.00078732584 +9624000,mag,0.201,-0.08100001,0.42900002 +9632000,airspeed,-4.061239,-3.9664426 +9632000,baro,487.638 +9632000,mag,0.201,-0.08100001,0.42900002 +9632000,imu,-0.30495572,0.23120801,-9.927141,-0.004404627,-0.009160866,-0.0006219349 +9636000,baro,487.638 +9636000,airspeed,-2.155354,-2.1050444 +9636000,mag,0.201,-0.08100001,0.42900002 +9636000,imu,-0.28983006,0.21885592,-10.005455,0.0009834028,-0.004392771,-0.0010644555 +9640000,imu,-0.2543884,0.18735361,-10.059411,0.0008551895,-0.0017135001,0.0016156689 +9640000,baro,487.44083 +9640000,airspeed,-3.0059555,-2.9358263 +9640000,mag,0.201,-0.08100001,0.42900002 +9644000,airspeed,2.3797252,2.3241715 +9644000,baro,487.68497 +9644000,mag,0.201,-0.08100001,0.42900002 +9644000,imu,-0.23663926,0.13353795,-9.927164,-0.0023509422,-0.0060341205,0.0003884764 +9648000,mag,0.201,-0.08100001,0.42900002 +9648000,baro,487.60983 +9652000,mag,0.201,-0.08100001,0.42900002 +9652000,baro,487.60983 +9652000,airspeed,1.2030995,1.175019 +9652000,imu,-0.21589209,0.22814797,-9.934669,-0.0037358182,-0.008155802,-0.0020631237 +9656000,baro,487.68027 +9656000,airspeed,3.493596,3.412041 +9656000,imu,-0.23810266,0.16773038,-9.895801,-9.2314974e-07,-0.006251782,-0.00028416424 +9656000,mag,0.201,-0.08100001,0.42900002 +9660000,imu,-0.21894401,0.13256335,-9.890354,-0.0018821327,-0.0025765386,4.0752107e-05 +9660000,airspeed,-4.351815,-4.250201 +9660000,baro,487.77417 +9660000,mag,0.201,-0.08100001,0.43 +9668000,mag,0.201,-0.08100001,0.43 +9668000,airspeed,-2.2217329,-2.1698854 +9668000,imu,-0.29431528,0.19355758,-9.954512,0.0013146393,0.0041706283,-0.0031101054 +9668000,baro,487.5488 +9672000,baro,487.5488 +9672000,mag,0.201,-0.08100001,0.43 +9672000,airspeed,-2.600324,-2.5396416 +9672000,imu,-0.2776646,0.17875199,-9.9113035,-0.002570391,0.00029558438,0.00085349893 +9676000,airspeed,1.1139687,1.0879601 +9676000,mag,0.201,-0.08100001,0.43 +9676000,baro,487.7413 +9676000,imu,-0.23975664,0.12993336,-9.880383,-0.0038403235,-0.0019825944,-0.0018044965 +9684000,mag,0.201,-0.08100001,0.43 +9684000,airspeed,1.8676255,1.824051 +9684000,imu,-0.20556532,0.18360443,-9.87884,-0.004904277,0.0016373463,-0.0044966023 +9684000,baro,487.4643 +9688000,imu,-0.12881301,0.21716489,-9.838322,-0.0025121504,-0.0045824703,-0.006185027 +9688000,baro,487.4502 +9688000,mag,0.201,-0.08100001,0.43 +9688000,airspeed,1.478403,1.4439105 +9692000,imu,-0.19034684,0.21350136,-9.998311,-0.004579295,-0.010955833,-0.00452507 +9692000,baro,487.4502 +9692000,mag,0.201,-0.08100001,0.43 +9692000,airspeed,2.144004,2.0939825 +9696000,baro,487.60983 +9696000,airspeed,-1.5746028,-1.5378516 +9696000,imu,-0.2640995,0.21503715,-10.024534,-0.0024059336,-0.0078025106,0.0018100435 +9700000,mag,0.201,-0.08100001,0.43 +9704000,airspeed,-2.330454,-2.2760434 +9704000,imu,-0.11094502,0.14761157,-9.934719,0.00024780934,-0.006365319,-0.002437512 +9704000,baro,487.7413 +9704000,mag,0.201,-0.08100001,0.43 +9708000,mag,0.201,-0.08100001,0.43 +9708000,imu,-0.15092033,0.14569178,-9.972275,0.0004943643,-0.006684638,-0.0028271086 +9708000,airspeed,2.5381038,2.478845 +9708000,baro,487.7413 +9712000,imu,-0.22628497,0.1959853,-10.00478,-0.0002010559,-0.005829063,-0.007325215 +9712000,mag,0.19600001,-0.08200001,0.43 +9712000,airspeed,2.2549946,2.202361 +9712000,gps,488103.0,85456074.0,473977508.0,0.0,-0.01,0.0 +9712000,baro,487.62393 +9720000,mag,0.19600001,-0.08200001,0.43 +9720000,imu,-0.21125302,0.07040537,-9.989196,-0.0024478033,-0.007074208,0.0013684334 +9720000,baro,487.51593 +9720000,airspeed,1.9040905,1.8596594 +9724000,airspeed,-1.232996,-1.2042187 +9724000,mag,0.19600001,-0.08200001,0.43 +9724000,baro,487.59576 +9724000,imu,-0.17556636,0.19430204,-10.003695,-0.0016910335,-0.003804397,0.0014895316 +9728000,imu,-0.19788511,0.22546043,-9.882589,6.890128e-05,-0.0020252673,-0.003287056 +9728000,airspeed,-2.9141593,-2.8461707 +9728000,baro,487.44553 +9728000,mag,0.19600001,-0.08200001,0.43 +9736000,baro,487.61453 +9736000,imu,-0.21576034,0.19099745,-9.86649,-0.0023811525,-0.006296029,0.0012414405 +9736000,airspeed,1.3835995,1.3513055 +9736000,mag,0.19600001,-0.08200001,0.43 +9740000,mag,0.19600001,-0.08200001,0.43 +9740000,airspeed,-2.5124807,-2.453843 +9740000,baro,487.58167 +9740000,imu,-0.17050773,0.23306866,-9.89264,0.00044272453,-0.009232496,-0.0017193842 +9744000,baro,487.77887 +9744000,imu,-0.19586596,0.1797355,-9.944901,0.0023980867,-0.00735057,0.001390898 +9744000,airspeed,2.4406595,2.3836703 +9744000,mag,0.19600001,-0.08200001,0.43 +9752000,imu,-0.18099473,0.122239254,-9.936369,-0.005835616,0.00070428074,-0.0010398595 +9752000,baro,487.6333 +9752000,mag,0.19600001,-0.08200001,0.43 +9752000,airspeed,-3.8730085,-3.7826064 +9756000,imu,-0.18430154,0.18733932,-9.962788,-0.009435732,-0.0027846603,0.0031892755 +9756000,baro,487.6333 +9756000,mag,0.19600001,-0.08200001,0.43 +9756000,airspeed,2.9828827,2.9132576 +9760000,baro,487.68967 +9760000,mag,0.19600001,-0.08200001,0.43 +9760000,imu,-0.22178376,0.18774296,-9.941742,-0.002351705,9.2665905e-05,0.0029957271 +9760000,airspeed,1.3986763,1.3660246 +9764000,mag,0.19600001,-0.08200001,0.43 +9764000,baro,487.75537 +9764000,airspeed,2.2637334,2.2108786 +9764000,imu,-0.1819813,0.14805569,-9.910426,0.004235559,0.0025796536,0.0037346953 +9768000,imu,-0.1791247,0.17620502,-9.967771,0.0016446083,0.0005760622,0.004951096 +9768000,baro,487.52533 +9768000,airspeed,-2.92996,-2.8615885 +9768000,mag,0.201,-0.08200001,0.43 +9772000,mag,0.201,-0.08200001,0.43 +9772000,baro,487.58636 +9772000,airspeed,-3.3681629,-3.2895548 +9772000,imu,-0.22242554,0.24608514,-9.966297,-0.0025611483,-0.0058490476,-0.0029535068 +9776000,baro,487.7225 +9776000,airspeed,4.2994146,4.199037 +9776000,mag,0.201,-0.08200001,0.43 +9780000,imu,-0.22742946,0.19512965,-9.900201,0.006756001,-0.00986336,0.0015469982 +9784000,imu,-0.2054797,0.15032302,-9.915431,0.006288837,-0.010569117,-0.002734703 +9784000,airspeed,3.8978152,3.8068194 +9784000,baro,487.69904 +9784000,mag,0.201,-0.08200001,0.43 +9788000,mag,0.201,-0.08200001,0.43 +9788000,airspeed,-1.5387813,-1.5028659 +9788000,imu,-0.18439506,0.11112956,-9.929292,-0.0012447137,-0.0029308402,0.0052969493 +9788000,baro,487.60983 +9792000,imu,-0.17141558,0.09438549,-9.946567,-0.0017421471,-0.001014983,0.0075700027 +9792000,airspeed,3.4202397,3.3403907 +9792000,mag,0.201,-0.08200001,0.43 +9792000,baro,487.71313 +9800000,mag,0.201,-0.08200001,0.43 +9800000,baro,487.5488 +9800000,imu,-0.24767663,0.17723794,-9.960458,-0.0031168829,0.00018748724,0.0068650367 +9800000,airspeed,-3.8623424,-3.7722085 +9804000,airspeed,-4.202565,-4.104454 +9804000,imu,-0.23386857,0.13363752,-9.946368,-0.003529894,-0.0073721516,0.0022867108 +9808000,imu,-0.22724639,0.123304136,-9.9524555,-0.00207925,-0.0032380773,-0.0016025584 +9808000,airspeed,-3.6633306,-3.577836 +9808000,baro,487.57227 +9808000,mag,0.201,-0.08200001,0.43 +9812000,airspeed,-2.2943041,-2.2407632 +9812000,baro,487.5488 +9812000,mag,0.201,-0.08200001,0.43 +9812000,imu,-0.2102928,0.13989638,-9.9759035,-0.0015168063,-0.0039641066,-0.002977396 +9816000,airspeed,3.0640888,2.9925725 +9816000,mag,0.201,-0.08200001,0.43 +9816000,baro,487.60983 +9816000,imu,-0.2356178,0.14632794,-9.952947,-0.002671601,-0.0110366,-0.0014217827 +9820000,mag,0.20300001,-0.07900001,0.43100002 +9820000,airspeed,-2.7091527,-2.6459196 +9820000,imu,-0.24963316,0.17312428,-9.861835,-0.005363348,-0.0070390333,0.0034501054 +9820000,baro,487.61453 +9824000,mag,0.20300001,-0.07900001,0.43100002 +9824000,imu,-0.3156963,0.18505576,-9.905858,-0.003900566,0.00032971395,-0.00026224065 +9824000,baro,487.71783 +9824000,airspeed,1.8170238,1.7746029 +9828000,baro,487.43613 +9828000,imu,-0.26187655,0.2185094,-9.897473,-0.0013657133,-0.003160837,-4.9448436e-06 +9828000,airspeed,-2.0867047,-2.0380225 +9828000,mag,0.20300001,-0.07900001,0.43100002 +9836000,airspeed,1.6776271,1.6384709 +9836000,mag,0.20300001,-0.07900001,0.43100002 +9836000,imu,-0.24823429,0.10275121,-9.896294,-0.004382998,-0.006462395,-0.00029676652 +9836000,baro,487.60983 +9840000,mag,0.20300001,-0.07900001,0.43100002 +9840000,imu,-0.18855797,0.12898412,-9.916434,-0.0031858843,-0.012657151,0.0014888055 +9840000,airspeed,-1.0367239,-1.012524 +9840000,baro,487.6521 +9844000,mag,0.20300001,-0.07900001,0.43100002 +9844000,baro,487.43613 +9844000,airspeed,-4.355872,-4.2542496 +9844000,imu,-0.12701115,0.14338942,-9.8838625,0.004206582,-0.013218453,0.00042833787 +9848000,baro,487.8211 +9848000,imu,-0.13083188,0.15677336,-9.922727,0.007236458,-0.006906587,-0.0012950865 +9848000,airspeed,2.6418712,2.5801768 +9848000,mag,0.20300001,-0.07900001,0.43100002 +9852000,mag,0.20300001,-0.07900001,0.43100002 +9852000,imu,-0.06383043,0.25337937,-9.984614,0.001721104,-0.00315152,-0.005664407 +9852000,airspeed,3.5034564,3.4216418 +9852000,baro,487.8211 +9856000,imu,-0.11740966,0.260684,-9.932702,-0.0021148361,-0.0012402037,-0.004623282 +9856000,baro,487.638 +9856000,mag,0.20300001,-0.07900001,0.43100002 +9856000,airspeed,-2.5355256,-2.4763422 +9860000,baro,487.52063 +9860000,airspeed,1.2685285,1.2389276 +9860000,mag,0.20300001,-0.07900001,0.43100002 +9860000,imu,-0.21393286,0.20132725,-9.893324,-0.0060536684,-0.0031031433,-0.0054066665 +9868000,mag,0.19800001,-0.08100001,0.42700002 +9868000,airspeed,1.2638768,1.2343761 +9868000,imu,-0.16011775,0.17143245,-9.91308,0.004813063,-0.0016058313,0.00070740504 +9868000,baro,487.6333 +9872000,mag,0.19800001,-0.08100001,0.42700002 +9872000,baro,487.6333 +9876000,mag,0.19800001,-0.08100001,0.42700002 +9876000,baro,487.71313 +9876000,airspeed,-3.3763077,-3.2974844 +9876000,imu,-0.11727344,0.2806236,-9.8820715,-0.0013554302,-0.01797385,0.003367241 +9880000,mag,0.19800001,-0.08100001,0.42700002 +9880000,baro,487.67557 +9880000,airspeed,-2.1719167,-2.1212158 +9880000,imu,-0.17716043,0.2017332,-9.953495,0.0046979384,-0.0169503,0.000867539 +9884000,baro,487.67557 +9884000,imu,-0.17843235,0.14194094,-9.938305,0.00061873946,-0.00533496,0.0030686157 +9884000,airspeed,0.9032899,0.88220364 +9884000,mag,0.19800001,-0.08100001,0.42700002 +9888000,mag,0.19800001,-0.08100001,0.42700002 +9888000,baro,487.61453 +9892000,airspeed,-2.7560833,-2.691757 +9892000,mag,0.19800001,-0.08100001,0.42700002 +9892000,baro,487.60513 +9892000,imu,-0.30503863,0.19766511,-9.913566,-0.0025197652,-0.012004179,-0.002997812 +9896000,airspeed,-2.8810673,-2.8138409 +9896000,mag,0.19800001,-0.08100001,0.42700002 +9896000,baro,487.50186 +9896000,imu,-0.21937025,0.14025396,-9.887437,-0.0043963627,-0.009278597,-0.0052975016 +9900000,imu,-0.1848137,0.1406408,-9.908031,-0.0046510287,-0.005239789,5.124109e-05 +9900000,mag,0.19800001,-0.08100001,0.42700002 +9900000,baro,487.52533 +9900000,airspeed,-2.842811,-2.7764738 +9904000,mag,0.19800001,-0.08100001,0.42700002 +9904000,baro,487.7319 +9904000,airspeed,-2.9662375,-2.8969846 +9904000,imu,-0.23064701,0.11148592,-9.956168,-0.0019411115,-0.0010169963,0.0071841427 +9908000,imu,-0.18688989,0.076124884,-9.953411,-0.002226297,-0.0036397309,0.0074397135 +9908000,airspeed,2.35407,2.2991128 +9908000,mag,0.19800001,-0.08100001,0.42700002 +9908000,baro,487.69904 +9912000,airspeed,-1.2095579,-1.1813252 +9912000,imu,-0.19119473,0.17130919,-9.898206,0.002739597,-0.012559404,0.00077460357 +9912000,baro,487.6333 +9912000,gps,488114.0,85456074.0,473977508.0,-0.01,0.0,-0.04 +9912000,mag,0.19800001,-0.08100001,0.42700002 +9920000,mag,0.19800001,-0.08100001,0.42700002 +9920000,imu,-0.1893845,0.18182983,-9.928806,-0.006011246,-0.0077430243,0.0036887417 +9920000,airspeed,-3.630296,-3.545539 +9920000,baro,487.7319 +9928000,mag,0.19900002,-0.08200001,0.432 +9928000,baro,487.5394 +9928000,imu,-0.21032399,0.15262295,-9.86504,0.0020004893,-0.009625802,-0.002136697 +9928000,airspeed,-3.7935593,-3.7050333 +9932000,airspeed,-1.836668,-1.7938077 +9932000,mag,0.19900002,-0.08200001,0.432 +9932000,imu,-0.15887833,0.12727445,-9.981868,-0.0022739258,-0.013666414,0.00046674898 +9932000,baro,487.5394 +9936000,baro,487.5629 +9936000,airspeed,4.0816464,3.986392 +9936000,mag,0.19900002,-0.08200001,0.432 +9936000,imu,-0.2170457,0.1708413,-10.033087,-0.0028888783,-0.0043627713,0.004070457 +9944000,baro,487.67557 +9944000,airspeed,-3.0994651,-3.027111 +9944000,mag,0.19900002,-0.08200001,0.432 +9944000,imu,-0.20772617,0.21438238,-9.945223,-0.0014156115,-0.008888555,0.00076521473 +9948000,baro,487.67557 +9948000,mag,0.19900002,-0.08200001,0.432 +9948000,imu,-0.14797534,0.21885428,-9.942356,-0.0028874364,-0.009837695,-0.006568803 +9948000,airspeed,2.3675535,2.3122852 +9956000,baro,487.7319 +9956000,airspeed,-2.985506,-2.915803 +9956000,mag,0.19900002,-0.08200001,0.432 +9956000,imu,-0.1992841,0.18158469,-9.91184,-0.005292247,-0.0060449652,-0.0009554891 +9964000,airspeed,1.0855806,1.0602437 +9964000,mag,0.19900002,-0.08200001,0.432 +9964000,imu,-0.16242419,0.17883275,-9.921055,-3.4832716e-05,-0.0030417787,0.0009821542 +9964000,baro,487.59576 +9968000,airspeed,2.6869707,2.6242583 +9968000,imu,-0.22147015,0.21223454,-9.939364,0.0013165759,-0.0033287832,-0.0012907481 +9968000,mag,0.19900002,-0.08200001,0.432 +9968000,baro,487.59576 +9972000,baro,487.7225 +9972000,mag,0.19900002,-0.08200001,0.42800003 +9976000,mag,0.19900002,-0.08200001,0.42800003 +9976000,imu,-0.18723482,0.19550858,-9.90835,-0.0037250007,-0.0047937133,0.0013972697 +9976000,baro,487.7225 +9976000,airspeed,-2.968505,-2.8992002 +9984000,imu,-0.15032539,0.11683273,-9.834429,-0.0028711045,-0.0049876804,-0.0016020484 +9984000,mag,0.19900002,-0.08200001,0.42800003 +9984000,baro,487.59576 +9984000,airspeed,3.5105689,3.4286346 +9988000,airspeed,1.6780355,1.6388532 +9988000,imu,-0.17319138,0.123096585,-9.896712,-0.0014492079,-0.0077680727,0.0019371561 +9988000,mag,0.19900002,-0.08200001,0.42800003 +9992000,mag,0.19900002,-0.08200001,0.42800003 +9992000,baro,487.59576 +9992000,imu,-0.2356318,0.16518927,-9.963161,-0.00035898498,-0.0098835835,0.0019704425 +9992000,airspeed,-1.6607404,-1.6219798 +9996000,mag,0.19900002,-0.08200001,0.42800003 +9996000,baro,487.59576 +9996000,imu,-0.2507821,0.16191624,-9.972078,0.0022276093,-0.009997644,-4.1816962e-05 +9996000,airspeed,1.473562,1.4391701 +10000000,mag,0.19900002,-0.08200001,0.42800003 +10000000,imu,-0.23832372,0.13382491,-9.959863,0.0025355872,-0.013428516,-0.0025018011 +10000000,baro,487.7225 +10000000,airspeed,3.4893856,3.4079204 +10004000,baro,487.7225 +10004000,mag,0.19900002,-0.08200001,0.42800003 +10008000,airspeed,2.6846313,2.621967 +10008000,imu,-0.2432393,0.19338258,-9.935492,-0.00057624956,-0.010068362,-0.0052175326 +10012000,baro,487.6427 +10012000,mag,0.19900002,-0.08200001,0.42800003 +10012000,imu,-0.21852757,0.16194375,-9.900028,-0.0019688995,-0.01757155,-0.0023572652 +10012000,airspeed,2.7426367,2.678618 +10016000,airspeed,-2.13458,-2.0847545 +10016000,baro,487.6427 +10016000,mag,0.19900002,-0.08200001,0.42800003 +10016000,imu,-0.19606784,0.10989754,-9.89706,-0.007225055,-0.008172279,-0.0013574518 +10020000,baro,487.61453 +10020000,mag,0.19900002,-0.08200001,0.42800003 +10020000,imu,-0.18902668,0.13218027,-9.901789,-0.006179404,-0.003943627,-0.002680639 +10020000,airspeed,4.3517857,4.2502127 +10024000,airspeed,-2.9903557,-2.9205658 +10024000,imu,-0.21943796,0.16913995,-9.950031,-0.0019918596,-0.006601835,-0.0009801559 +10024000,mag,0.2,-0.08200001,0.42900002 +10024000,baro,487.57697 +10028000,mag,0.2,-0.08200001,0.42900002 +10028000,airspeed,0.416396,0.40667522 +10028000,imu,-0.2811926,0.120110966,-9.914101,-0.0010666618,-0.009508124,-0.0040882295 +10028000,baro,487.69434 +10032000,imu,-0.24694556,0.101480566,-9.901441,-0.004397389,-0.010121613,-0.0043740603 +10032000,baro,487.53473 +10032000,airspeed,3.0760336,3.0042522 +10032000,mag,0.2,-0.08200001,0.42900002 +10040000,baro,487.52533 +10040000,imu,-0.18039495,0.23266576,-9.904821,-0.001205204,-0.00054179376,-0.0011482401 +10040000,airspeed,2.0152643,1.9682376 +10040000,mag,0.2,-0.08200001,0.42900002 +10048000,imu,-0.23773895,0.1428578,-9.905389,-0.0016958182,-0.010339973,-0.0030465166 +10048000,baro,487.6568 +10048000,airspeed,2.4833527,2.4253845 +10048000,mag,0.2,-0.08200001,0.42900002 +10052000,baro,487.62393 +10052000,mag,0.2,-0.08200001,0.42900002 +10056000,airspeed,2.1426861,2.0926836 +10056000,imu,-0.25551328,0.114274144,-9.994806,0.0043689026,0.0026282126,0.0033608088 +10060000,imu,-0.24753538,0.1286916,-9.946375,0.0020947973,-0.008571168,-0.0041622883 +10060000,baro,487.60983 +10060000,mag,0.2,-0.08200001,0.42900002 +10060000,airspeed,-0.92686445,-0.90523124 +10064000,baro,487.78354 +10064000,airspeed,1.644162,1.6057707 +10064000,mag,0.2,-0.08200001,0.42900002 +10064000,imu,-0.26866123,0.19752178,-9.930685,-0.0012159343,-0.014561384,-0.0022559706 +10072000,baro,487.57697 +10072000,imu,-0.14673907,0.20000665,-9.991419,0.0028164382,-0.0045508416,0.003270485 +10072000,mag,0.2,-0.08200001,0.42900002 +10072000,airspeed,-3.0125246,-2.9422178 +10076000,imu,-0.21807356,0.19084892,-10.017074,-0.00048977055,-0.008153817,0.0001771877 +10076000,airspeed,1.7390921,1.6985031 +10080000,mag,0.2,-0.08300001,0.42900002 +10080000,airspeed,3.136599,3.0633805 +10080000,imu,-0.22920604,0.22836849,-10.000382,0.00087946863,-0.0099396035,0.0005371242 +10080000,baro,487.66617 +10084000,airspeed,-3.067026,-2.9954426 +10084000,imu,-0.2237438,0.24376647,-9.94248,-0.00051257585,-0.008285785,0.0034958206 +10088000,imu,-0.32061753,0.21788234,-9.871185,-0.006695713,-0.00898721,0.0026710606 +10088000,baro,487.66147 +10088000,airspeed,1.0300227,1.0059787 +10088000,mag,0.2,-0.08300001,0.42900002 +10096000,imu,-0.19396056,0.14936629,-9.966621,0.00081969105,-0.0043024844,-0.0030504924 +10096000,airspeed,0.7012859,0.6849154 +10096000,mag,0.2,-0.08300001,0.42900002 +10096000,baro,487.66617 +10100000,mag,0.2,-0.08300001,0.42900002 +10100000,airspeed,-3.3904068,-3.3112872 +10100000,baro,487.5488 +10100000,imu,-0.20243229,0.18220943,-9.952086,0.0024187062,-0.0005296766,-0.0025084151 +10104000,baro,487.52533 +10104000,airspeed,-2.0242865,-1.9770496 +10104000,imu,-0.2371063,0.24088362,-9.919179,0.0012470114,-0.00160454,0.00093496556 +10104000,mag,0.2,-0.08300001,0.42900002 +10108000,mag,0.2,-0.08300001,0.42900002 +10108000,imu,-0.17503536,0.24611317,-9.921274,0.0068451334,0.0010910704,0.004709009 +10108000,baro,487.71783 +10108000,airspeed,3.3299346,3.2521927 +10112000,baro,487.66617 +10112000,gps,488112.0,85456074.0,473977508.0,0.01,0.0,0.0 +10112000,imu,-0.19797906,0.16435345,-9.86548,0.00488436,-0.0007622574,0.002917492 +10112000,mag,0.2,-0.08300001,0.42900002 +10112000,airspeed,-1.409214,-1.376318 +10116000,baro,487.5394 +10116000,mag,0.2,-0.08300001,0.42900002 +10120000,airspeed,1.3097963,1.27922 +10120000,imu,-0.14610745,0.23707052,-9.933306,-0.004548601,-0.009995389,3.6038327e-05 +10124000,mag,0.2,-0.08300001,0.42900002 +10124000,airspeed,-2.7878885,-2.7228136 +10124000,baro,487.6427 +10124000,imu,-0.22050296,0.162735,-9.989761,-0.0011646753,-0.00819287,0.0024235665 +10128000,mag,0.2,-0.08300001,0.42700002 +10128000,baro,487.6474 +10128000,imu,-0.18208043,0.15867014,-9.972716,0.0009384932,-0.007775575,-0.001339182 +10128000,airspeed,-3.1810637,-3.10681 +10132000,baro,487.6474 +10132000,mag,0.2,-0.08300001,0.42700002 +10132000,airspeed,1.8458802,1.8027929 +10132000,imu,-0.16352831,0.2051545,-9.989463,0.001367733,-0.0066802246,-0.0018425484 +10136000,mag,0.2,-0.08300001,0.42700002 +10136000,airspeed,2.7001863,2.6371317 +10136000,baro,487.81174 +10136000,imu,-0.19742806,0.18966256,-9.933268,0.003694254,-0.0010578017,-0.0029638868 +10140000,baro,487.66617 +10140000,airspeed,2.852074,2.7854972 +10140000,mag,0.2,-0.08300001,0.42700002 +10144000,imu,-0.27159542,0.18476897,-9.980208,-0.004140543,-0.0065286565,0.0034355058 +10148000,imu,-0.24805032,0.1988217,-9.962327,-0.0034626015,-0.0054698247,0.0019555765 +10148000,baro,487.68027 +10148000,mag,0.2,-0.08300001,0.42700002 +10148000,airspeed,-3.951439,-3.8591952 +10156000,airspeed,-0.85465866,-0.8347031 +10156000,imu,-0.23375721,0.2549517,-9.961731,0.0018692024,-0.0050930833,-0.004918529 +10156000,mag,0.2,-0.08300001,0.42700002 +10156000,baro,487.76477 +10160000,mag,0.2,-0.08300001,0.42700002 +10160000,baro,487.71313 +10160000,airspeed,2.917259,2.8491523 +10160000,imu,-0.25396794,0.25150362,-9.952738,-0.004326039,-0.007219091,-0.0043273624 +10164000,mag,0.2,-0.08300001,0.42700002 +10164000,baro,487.62393 +10164000,airspeed,-0.210088,-0.20518439 +10164000,imu,-0.32199076,0.17514297,-9.870215,0.000510804,-0.0055291657,-0.0019482365 +10168000,mag,0.2,-0.08300001,0.42700002 +10168000,baro,487.62393 +10168000,imu,-0.22312008,0.18595271,-9.866355,-0.0010376449,0.0005347965,-0.0018174051 +10168000,airspeed,-2.7792218,-2.7143526 +10172000,baro,487.51593 +10172000,mag,0.2,-0.08300001,0.42700002 +10176000,airspeed,-3.1955721,-3.1209726 +10176000,imu,-0.1962553,0.16676305,-9.954758,-0.008851143,-0.006374112,-0.003618171 +10180000,imu,-0.21757264,0.15697241,-9.87275,-0.00093020074,-0.004387642,-0.0016203249 +10180000,airspeed,-2.3731103,-2.3177226 +10180000,mag,0.201,-0.08100001,0.42600003 +10180000,baro,487.60513 +10184000,baro,487.60513 +10184000,mag,0.201,-0.08100001,0.42600003 +10188000,baro,487.7319 +10188000,airspeed,-2.376163,-2.3206863 +10188000,mag,0.201,-0.08100001,0.42600003 +10188000,imu,-0.24528356,0.19101483,-9.905786,-0.005066935,-0.004927181,0.004541434 +10192000,airspeed,1.2882277,1.2581666 +10192000,imu,-0.22572549,0.20026504,-9.874122,-0.0017625171,-0.008297319,0.0060140975 +10196000,airspeed,3.6019623,3.5178819 +10196000,baro,487.66147 +10196000,mag,0.201,-0.08100001,0.42600003 +10196000,imu,-0.2038201,0.13053259,-9.9728775,-0.0063355127,-0.0030632536,0.0001646994 +10200000,imu,-0.19939095,0.13305554,-9.982803,-0.0045127696,-0.009263979,-0.0020388286 +10200000,airspeed,1.1193014,1.0931754 +10204000,imu,-0.2768287,0.17897978,-9.9788065,-0.0051646116,-0.0103713395,0.0010749208 +10204000,baro,487.66147 +10204000,mag,0.201,-0.08100001,0.42600003 +10204000,airspeed,1.1714408,1.1440958 +10208000,imu,-0.26978114,0.16712922,-9.957787,-0.0040771705,-0.005014524,0.0046565444 +10208000,airspeed,-3.4533172,-3.3727062 +10212000,imu,-0.18785882,0.15006536,-9.93253,0.0005433972,-0.0046578175,-0.0005094152 +10212000,airspeed,0.13497977,0.13182916 +10212000,baro,487.6333 +10212000,mag,0.201,-0.08100001,0.42600003 +10216000,airspeed,-2.7852514,-2.720237 +10216000,baro,487.6474 +10216000,mag,0.201,-0.08100001,0.42600003 +10216000,imu,-0.17348891,0.12302622,-9.94855,0.0032045215,-0.0023200847,-0.0069731628 +10220000,baro,487.6474 +10220000,mag,0.201,-0.08100001,0.42600003 +10224000,airspeed,0.8696507,0.8493525 +10224000,imu,-0.27682647,0.26425272,-9.941643,-0.0065986854,-0.009902927,0.00085984526 +10228000,imu,-0.26864982,0.18041603,-9.955418,-0.003176793,-0.006336239,0.0004029303 +10228000,airspeed,-4.883771,-4.7698016 +10228000,mag,0.201,-0.08100001,0.42600003 +10228000,baro,487.5488 +10232000,imu,-0.19228446,0.16044356,-9.962525,-0.0018990826,-0.0002977759,-0.0015298534 +10232000,baro,487.50656 +10232000,airspeed,2.9615579,2.892453 +10232000,mag,0.201,-0.07900001,0.43 +10240000,mag,0.201,-0.07900001,0.43 +10240000,imu,-0.23396613,0.24479154,-9.954674,-0.008128393,-0.0055337483,-0.0012995199 +10240000,baro,487.61923 +10240000,airspeed,-1.3847142,-1.3523942 +10244000,imu,-0.12944177,0.13866885,-10.023312,-0.0069461185,-0.011270769,-0.0013800194 +10244000,mag,0.201,-0.07900001,0.43 +10244000,baro,487.61923 +10244000,airspeed,1.3125713,1.2819351 +10252000,airspeed,2.2698228,2.2168376 +10252000,imu,-0.16477141,0.2369778,-9.894979,0.0015799218,-0.009398885,-0.004024545 +10252000,baro,487.66617 +10252000,mag,0.201,-0.07900001,0.43 +10256000,airspeed,4.6102057,4.5026345 +10256000,imu,-0.16005892,0.23564987,-9.940525,0.0032825752,-0.0011994768,-0.0037064143 +10256000,baro,487.49246 +10256000,mag,0.201,-0.07900001,0.43 +10260000,mag,0.201,-0.07900001,0.43 +10260000,baro,487.49246 +10264000,airspeed,-3.070353,-2.9987047 +10264000,imu,-0.21979202,0.14055236,-9.974458,-0.0024414803,0.003558758,-0.0021802047 +10268000,mag,0.201,-0.07900001,0.43 +10268000,baro,487.79294 +10268000,imu,-0.21731225,0.19530044,-9.952894,0.0019743822,0.0041741193,-0.001198444 +10268000,airspeed,2.369588,2.3142567 +10272000,baro,487.7319 +10272000,mag,0.201,-0.07900001,0.43 +10272000,imu,-0.23652959,0.24126752,-9.937273,0.007728732,0.0018786496,-0.0027627782 +10272000,airspeed,-4.348801,-4.247268 +10276000,baro,487.59576 +10276000,imu,-0.184137,0.22189783,-9.907298,0.0031934462,-0.0023978434,-0.0029726874 +10276000,airspeed,1.1724844,1.1451194 +10276000,mag,0.201,-0.07900001,0.43 +10280000,imu,-0.1478728,0.15429924,-9.888128,-0.0030994748,-0.0035343885,-0.0044861394 +10280000,baro,487.6521 +10280000,airspeed,-1.7072331,-1.667382 +10280000,mag,0.201,-0.07900001,0.43 +10284000,baro,487.6427 +10284000,imu,-0.177312,0.17775545,-9.980517,-0.0062424755,-0.00283076,-0.0024489735 +10284000,airspeed,2.9661872,2.8969505 +10284000,mag,0.201,-0.07900001,0.43 +10288000,imu,-0.25777808,0.1433432,-9.946881,-0.004171679,0.00264234,-0.00259424 +10288000,airspeed,0.65638196,0.64106745 +10292000,baro,487.61453 +10292000,airspeed,-4.2929373,-4.1927385 +10292000,imu,-0.17076051,0.18095125,-9.9311285,-0.0030567932,0.0028348689,0.0035741634 +10292000,mag,0.201,-0.08200001,0.43100002 +10296000,baro,487.69904 +10296000,imu,-0.14911899,0.22513264,-9.978381,-0.001755457,-0.0062045767,0.0022581802 +10296000,mag,0.201,-0.08200001,0.43100002 +10296000,airspeed,0.9091762,0.88795096 +10300000,baro,487.69434 +10300000,imu,-0.22598366,0.17147002,-9.937367,-0.0018487725,-0.008127206,-0.0006740712 +10300000,mag,0.201,-0.08200001,0.43100002 +10300000,airspeed,0.77754235,0.75939065 +10304000,imu,-0.22716074,0.13630095,-9.935247,-0.0032651832,-0.0017325933,0.001738484 +10304000,airspeed,-2.3943617,-2.338479 +10304000,baro,487.59576 +10304000,mag,0.201,-0.08200001,0.43100002 +10308000,airspeed,2.3707876,2.315455 +10308000,imu,-0.29016107,0.13409868,-9.903025,-0.0018980143,0.0024544091,-0.0009434248 +10312000,baro,487.5535 +10312000,airspeed,-2.515058,-2.4563646 +10312000,imu,-0.29691005,0.194189,-9.909053,-0.0019825166,-0.0057912064,0.004248363 +10312000,mag,0.201,-0.08200001,0.43100002 +10316000,airspeed,3.0251935,2.9545975 +10316000,mag,0.201,-0.08200001,0.43100002 +10316000,baro,487.5394 +10320000,imu,-0.25004897,0.12831399,-9.899345,-0.002389141,-0.007869731,-0.003708756 +10324000,mag,0.201,-0.08200001,0.43100002 +10324000,airspeed,-2.5277758,-2.4687645 +10324000,baro,487.69434 +10324000,imu,-0.29050773,0.17203017,-9.989206,-0.0013667098,-0.008860389,-0.00012175803 +10328000,imu,-0.25910136,0.18815927,-10.029966,-0.0022539445,-0.003900096,0.0042570503 +10328000,baro,487.6333 +10328000,airspeed,-2.4039161,-2.3478053 +10328000,mag,0.201,-0.08200001,0.43100002 +10332000,airspeed,4.1554003,4.058406 +10332000,baro,487.638 +10332000,mag,0.201,-0.08200001,0.43100002 +10332000,imu,-0.11894543,0.19017622,-10.041678,-0.0049525504,-0.011689376,0.0020257423 +10336000,airspeed,-2.4500248,-2.392841 +10336000,imu,-0.15809298,0.2252176,-9.960788,-0.0009985651,-0.0067623616,-0.0025613334 +10340000,airspeed,-1.6455734,-1.6071656 +10340000,mag,0.202,-0.07900001,0.43 +10340000,imu,-0.26228803,0.24911433,-9.912201,0.0017455774,-0.0035607133,-0.0008346301 +10340000,baro,487.60983 +10344000,mag,0.202,-0.07900001,0.43 +10344000,imu,-0.2503092,0.28808868,-9.978654,0.0011885246,-0.0073851314,-0.0040807244 +10344000,airspeed,-3.7100616,-3.6234283 +10344000,baro,487.79764 +10348000,baro,487.79764 +10348000,imu,-0.22719598,0.2583651,-9.96539,0.0038193224,-0.0036045583,-0.005352076 +10348000,mag,0.202,-0.07900001,0.43 +10348000,airspeed,2.0500941,2.0022225 +10356000,imu,-0.1833895,0.26306093,-10.020667,-0.00011388983,0.000106190026,-0.0031435338 +10356000,airspeed,-3.8709123,-3.7805398 +10356000,baro,487.71783 +10356000,mag,0.202,-0.07900001,0.43 +10360000,imu,-0.1654537,0.2214364,-9.995923,0.0021069923,-0.0019716122,-0.0007442375 +10360000,airspeed,0.6867606,0.6707316 +10364000,mag,0.202,-0.07900001,0.43 +10364000,airspeed,-1.1925911,-1.1647631 +10364000,baro,487.50656 +10364000,imu,-0.23431969,0.23402771,-10.00826,-0.0013650584,-0.00357514,-0.0028299259 +10372000,imu,-0.24880256,0.19386818,-9.964753,0.0013529578,-0.0021072142,0.00087602646 +10372000,mag,0.202,-0.07900001,0.43 +10372000,baro,487.5488 +10372000,airspeed,2.8522027,2.7856424 +10376000,mag,0.202,-0.07900001,0.43 +10376000,imu,-0.20283496,0.19033645,-9.946803,0.0019513891,-0.003935698,-0.0024929403 +10376000,baro,487.5488 +10376000,airspeed,2.0639782,2.0158124 +10384000,imu,-0.21153612,0.28032556,-9.955,-0.0037303087,-0.0065808767,-0.002157667 +10384000,mag,0.202,-0.07900001,0.43 +10384000,baro,487.57227 +10384000,airspeed,-3.7429657,-3.6556125 +10388000,baro,487.57227 +10388000,mag,0.202,-0.07900001,0.43 +10392000,airspeed,-2.443766,-2.3867295 +10392000,imu,-0.19162832,0.16715042,-9.984626,1.967586e-05,-0.0033888314,-0.0021190003 +10396000,airspeed,-2.4852443,-2.4272358 +10396000,mag,0.19900002,-0.08500001,0.42800003 +10396000,baro,487.62863 +10396000,imu,-0.18169695,0.21360357,-9.975105,0.001125756,-0.006745474,0.0015324935 +10400000,imu,-0.21682881,0.19791026,-9.928586,-0.001217026,-0.009955716,0.00085137924 +10400000,mag,0.19900002,-0.08500001,0.42800003 +10400000,airspeed,1.6371163,1.598899 +10400000,baro,487.68027 +10408000,airspeed,2.9690187,2.8997157 +10408000,imu,-0.1618028,0.19306462,-9.914716,-0.0018996948,-0.0045363805,-0.0014234813 +10408000,baro,487.6427 +10408000,mag,0.19900002,-0.08500001,0.42800003 +10412000,gps,488109.0,85456074.0,473977507.0,-0.01,0.0,0.02 +10412000,mag,0.19900002,-0.08500001,0.42800003 +10412000,imu,-0.16322462,0.120155245,-9.946356,0.00049089623,-0.0055534584,0.007159156 +10412000,baro,487.57697 +10412000,airspeed,3.008528,2.9383142 +10416000,imu,-0.17529057,0.14223306,-9.935925,-0.001710779,-0.010068575,0.00081957004 +10416000,mag,0.19900002,-0.08500001,0.42800003 +10416000,airspeed,-2.6740065,-2.6115763 +10416000,baro,487.7272 +10424000,imu,-0.22232915,0.10157887,-9.884846,-0.0005200468,-0.008176912,-0.005722035 +10424000,airspeed,1.9170071,1.8722755 +10424000,baro,487.50656 +10424000,mag,0.19900002,-0.08500001,0.42800003 +10428000,imu,-0.2763555,0.1069248,-9.952421,0.00089251617,-0.0050980053,0.002093136 +10428000,airspeed,3.1099303,3.0373628 +10432000,airspeed,-2.7321773,-2.6684077 +10432000,imu,-0.27559796,0.12927829,-9.912822,0.0035661492,0.000257693,0.0037004456 +10432000,baro,487.60983 +10432000,mag,0.19900002,-0.08500001,0.42800003 +10436000,baro,487.78824 +10436000,mag,0.19900002,-0.08500001,0.42800003 +10436000,airspeed,-2.910513,-2.8425512 +10436000,imu,-0.20422246,0.14215943,-9.948512,0.007011241,-0.005038753,-0.007476878 +10440000,airspeed,-2.8595634,-2.7928326 +10440000,baro,487.5441 +10440000,mag,0.2,-0.07900001,0.42900002 +10440000,imu,-0.23925465,0.14450642,-9.859287,0.0031232173,-0.0077679786,-0.0020795679 +10444000,baro,487.5441 +10444000,imu,-0.27068922,0.14936629,-9.888417,-0.0022036112,-0.0037785715,0.0011655804 +10444000,airspeed,-3.2845376,-3.2078896 +10444000,mag,0.2,-0.07900001,0.42900002 +10448000,mag,0.2,-0.07900001,0.42900002 +10448000,airspeed,3.3651834,3.2866354 +10448000,imu,-0.26490855,0.19941555,-9.948683,-0.00063742127,-0.00336683,-0.005751333 +10448000,baro,487.6333 +10452000,imu,-0.21058911,0.20465803,-9.906619,0.007908667,-0.0051145637,-0.007762442 +10452000,baro,487.52533 +10452000,airspeed,-1.2559425,-1.2266349 +10452000,mag,0.2,-0.07900001,0.42900002 +10456000,mag,0.2,-0.07900001,0.42900002 +10456000,airspeed,0.6624063,0.64694065 +10456000,imu,-0.21663691,0.12608273,-9.950854,0.003112948,-0.0034250512,-0.007159763 +10456000,baro,487.7413 +10464000,imu,-0.14659166,0.24867661,-9.893447,0.0015251384,-0.010868931,-0.0006112433 +10464000,baro,487.6333 +10464000,airspeed,-3.029466,-2.958754 +10464000,mag,0.2,-0.07900001,0.42900002 +10468000,mag,0.2,-0.07900001,0.42900002 +10468000,airspeed,-3.3935566,-3.3143463 +10468000,baro,487.6333 +10468000,imu,-0.19534604,0.18410128,-9.930709,0.0012210489,-0.0046287305,-0.0018019766 +10476000,mag,0.2,-0.07900001,0.42900002 +10476000,imu,-0.19848384,0.21246786,-9.929281,-0.0061607645,-0.0055727405,0.0030015656 +10476000,baro,487.47836 +10476000,airspeed,-2.8089526,-2.743413 +10480000,baro,487.5488 +10480000,mag,0.2,-0.07900001,0.42900002 +10480000,airspeed,-3.4996064,-3.417938 +10480000,imu,-0.13791615,0.17857522,-9.931926,-0.000669711,0.002940965,-0.0027862722 +10484000,airspeed,1.4334621,1.3999984 +10484000,imu,-0.13112657,0.16220932,-9.922196,0.0016913939,0.0035926355,-0.00074306346 +10484000,mag,0.2,-0.07900001,0.42900002 +10484000,baro,487.68967 +10488000,baro,487.4596 +10488000,imu,-0.077035315,0.16711317,-9.937559,-0.0032048943,-0.00020285916,0.0055169296 +10488000,airspeed,-3.111144,-3.0385573 +10488000,mag,0.2,-0.07900001,0.42900002 +10492000,baro,487.59576 +10492000,imu,-0.115607105,0.14310274,-9.978105,-0.003515466,-0.00042500847,-0.0032348393 +10492000,mag,0.201,-0.08100001,0.43 +10492000,airspeed,2.2732005,2.2201455 +10496000,baro,487.59576 +10496000,mag,0.201,-0.08100001,0.43 +10496000,imu,-0.1615976,0.19674867,-9.944103,-0.0016257444,-0.0014698202,-0.0036486113 +10496000,airspeed,2.1613948,2.1109493 +10500000,mag,0.201,-0.08100001,0.43 +10500000,baro,487.5535 +10500000,airspeed,-3.2028253,-3.1280816 +10500000,imu,-0.17044984,0.21500854,-9.891333,-0.0007618773,-0.0026037947,0.0034676555 +10508000,baro,487.53473 +10508000,imu,-0.1356258,0.18936233,-9.928209,0.0017934914,-0.0095750885,-0.0011308267 +10508000,mag,0.201,-0.08100001,0.43 +10508000,airspeed,-2.7192621,-2.6558063 +10512000,mag,0.201,-0.08100001,0.43 +10512000,airspeed,2.7185044,2.6550663 +10512000,imu,-0.20712468,0.20692177,-9.913946,0.0028123856,-0.0048331893,-0.002208786 +10512000,baro,487.53473 +10516000,airspeed,4.19749,4.099503 +10516000,mag,0.201,-0.08100001,0.43 +10516000,imu,-0.24344014,0.20550846,-9.869863,0.0034283856,-0.0031346448,-0.008746691 +10516000,baro,487.68027 +10520000,imu,-0.20943429,0.15828624,-9.975678,-2.770989e-05,-0.0068718693,-0.00066608295 +10520000,baro,487.60513 +10520000,airspeed,-2.010245,-1.9633265 +10520000,mag,0.201,-0.08100001,0.43 +10528000,baro,487.6333 +10528000,airspeed,0.34318742,0.33517691 +10528000,mag,0.201,-0.08100001,0.43 +10528000,imu,-0.23728113,0.17026548,-9.960608,6.832128e-05,-0.0074122567,0.002266199 +10532000,imu,-0.17375942,0.16565518,-9.955092,0.0003540535,-0.010569995,0.0049159774 +10532000,mag,0.201,-0.08100001,0.43 +10532000,baro,487.78354 +10532000,airspeed,-0.8025807,-0.7838402 +10536000,imu,-0.19267724,0.19714999,-10.024787,0.005754684,-0.006898117,0.009678711 +10536000,airspeed,3.1265366,3.0535686 +10540000,imu,-0.24581844,0.19813702,-10.063285,0.00060345395,-0.0045086867,0.0066431146 +10540000,baro,487.638 +10540000,airspeed,2.6837502,2.6211069 +10540000,mag,0.201,-0.08100001,0.43 +10544000,imu,-0.23812734,0.16501582,-9.969894,-0.004554152,-0.0014721551,0.0005493393 +10544000,mag,0.2,-0.07800001,0.42900002 +10544000,baro,487.6568 +10544000,airspeed,-1.9800534,-1.9338331 +10548000,imu,-0.23984842,0.18687916,-9.930732,0.00096053316,-0.00027779173,0.002052607 +10548000,airspeed,-4.271908,-4.1721888 +10548000,baro,487.6568 +10548000,mag,0.2,-0.07800001,0.42900002 +10552000,baro,487.59106 +10552000,mag,0.2,-0.07800001,0.42900002 +10556000,airspeed,-2.019891,-1.9727488 +10556000,imu,-0.21403135,0.16942964,-9.97659,-0.00079005474,-0.011844498,-0.0013391974 +10556000,baro,487.59106 +10556000,mag,0.2,-0.07800001,0.42900002 +10560000,imu,-0.21102722,0.16843739,-9.96593,-0.0013799433,-0.008983405,-0.0009366026 +10560000,airspeed,-3.4793863,-3.3981707 +10560000,mag,0.2,-0.07800001,0.42900002 +10560000,baro,487.6427 +10564000,baro,487.5535 +10564000,mag,0.2,-0.07800001,0.42900002 +10568000,baro,487.53003 +10568000,mag,0.2,-0.07800001,0.42900002 +10568000,airspeed,1.6284914,1.5904899 +10568000,imu,-0.16052549,0.12421852,-9.913462,-0.0008711353,-0.009546294,0.0013963153 +10576000,mag,0.2,-0.07800001,0.42900002 +10576000,baro,487.5629 +10576000,imu,-0.25959563,0.1472785,-9.922432,0.0011894802,-0.0035637214,0.0078002596 +10576000,airspeed,1.9406822,1.8953917 +10580000,baro,487.71783 +10580000,mag,0.2,-0.07800001,0.42900002 +10580000,imu,-0.2361854,0.16601168,-9.925999,-0.0022126876,-0.003809857,0.005753061 +10580000,airspeed,3.3405128,3.2625232 +10584000,mag,0.2,-0.07800001,0.42900002 +10584000,baro,487.59106 +10584000,imu,-0.28722128,0.15097524,-9.903696,-0.0010777228,-0.0051482166,-9.020702e-05 +10584000,airspeed,-1.879357,-1.8354945 +10592000,imu,-0.20922418,0.21693207,-9.936742,-0.00026812876,-0.009131958,0.0033404215 +10592000,airspeed,2.0364933,1.9889473 +10592000,baro,487.7319 +10592000,mag,0.2,-0.07800001,0.42900002 +10596000,baro,487.49246 +10596000,imu,-0.15316223,0.20665672,-9.9695635,0.0024659806,-0.0025251124,-0.001596019 +10596000,airspeed,2.9359264,2.8674214 +10596000,mag,0.201,-0.08100001,0.42800003 +10600000,baro,487.49246 +10600000,imu,-0.10564318,0.16237935,-9.970996,-4.794531e-05,0.00076404,-0.004895229 +10600000,airspeed,-3.725045,-3.638127 +10600000,mag,0.201,-0.08100001,0.42800003 +10600000,landed,1.0 +10604000,mag,0.201,-0.08100001,0.42800003 +10604000,airspeed,-2.3486774,-2.2938561 +10604000,baro,487.6333 +10604000,imu,-0.20208368,0.03198737,-9.942638,-0.005770508,-0.0002846492,-0.0074072126 +10608000,airspeed,0.93420035,0.9123941 +10608000,baro,487.6427 +10608000,mag,0.201,-0.08100001,0.42800003 +10608000,imu,-0.23554315,0.07395287,-9.898716,-0.00342539,-0.0064104307,-7.170879e-05 +10612000,gps,488116.0,85456074.0,473977508.0,0.0,-0.01,0.0 +10612000,mag,0.201,-0.08100001,0.42800003 +10612000,imu,-0.24530093,0.18904619,-9.932751,-0.0004214006,-0.006543346,0.004028879 +10612000,airspeed,2.9103415,2.842408 +10612000,baro,487.6427 +10616000,mag,0.201,-0.08100001,0.42800003 +10616000,baro,487.67087 +10616000,imu,-0.253364,0.19163428,-9.99734,-0.0030791045,-0.0050349156,1.5010534e-05 +10616000,airspeed,0.68481374,0.6688277 +10620000,baro,487.77887 +10620000,airspeed,2.734756,2.6708992 +10620000,mag,0.201,-0.08100001,0.42800003 +10620000,imu,-0.16636153,0.1495484,-9.983431,-0.0013713456,-0.0067222347,-0.004127514 +10628000,airspeed,-2.7174652,-2.6540377 +10628000,mag,0.201,-0.08100001,0.42800003 +10628000,baro,487.61923 +10628000,imu,-0.19556998,0.18272176,-9.956733,-1.7778528e-05,-0.01208969,-0.0011317048 +10632000,mag,0.201,-0.08100001,0.42800003 +10632000,baro,487.5488 +10632000,imu,-0.18704207,0.1554491,-9.938078,-0.0009955255,-0.009753892,-0.0014135123 +10632000,airspeed,0.50168884,0.48998117 +10640000,imu,-0.18610014,0.19016704,-9.905814,0.0024087988,-0.005763992,0.0007755935 +10640000,mag,0.201,-0.08100001,0.42800003 +10640000,airspeed,2.3907018,2.3349357 +10640000,baro,487.3751 +10648000,imu,-0.17860568,0.097935446,-9.907373,0.0054504243,-0.008458447,-0.0038354886 +10648000,mag,0.19900002,-0.08100001,0.42700002 +10648000,airspeed,-0.72801304,-0.71102244 +10648000,baro,487.57697 +10652000,mag,0.19900002,-0.08100001,0.42700002 +10652000,baro,487.59576 +10656000,baro,487.75537 +10656000,mag,0.19900002,-0.08100001,0.42700002 +10656000,airspeed,1.1600773,1.1329911 +10656000,imu,-0.16745919,0.18173894,-9.934378,-0.0015449926,-0.008315727,-0.0007520606 +10660000,imu,-0.14546348,0.17099474,-9.917499,0.002980517,-0.009248514,0.005161866 +10660000,baro,487.62863 +10660000,airspeed,-1.3828562,-1.350579 +10660000,mag,0.19900002,-0.08100001,0.42700002 +10664000,mag,0.19900002,-0.08100001,0.42700002 +10664000,airspeed,-2.9425988,-2.873933 +10664000,imu,-0.21537758,0.18181102,-9.911286,0.0027139974,-0.0041325013,0.0013284301 +10664000,baro,487.52533 +10668000,mag,0.19900002,-0.08100001,0.42700002 +10668000,airspeed,-1.1577623,-1.1307416 +10668000,imu,-0.26195678,0.19771406,-9.978667,-0.0014367866,-0.0033365204,-0.0028976223 +10668000,baro,487.58636 +10672000,imu,-0.23519023,0.17084204,-9.988521,-0.0058985823,-0.0058949646,-0.00372812 +10672000,airspeed,2.7429526,2.6789227 +10672000,baro,487.66617 +10672000,mag,0.19900002,-0.08100001,0.42700002 +10676000,imu,-0.19949786,0.13380276,-9.912265,-0.003880165,-0.008852865,-0.0064156507 +10676000,airspeed,-1.7477785,-1.7069794 +10676000,baro,487.66617 +10676000,mag,0.19900002,-0.08100001,0.42700002 +10680000,airspeed,-3.8033288,-3.7145786 +10680000,baro,487.52063 +10680000,imu,-0.23022746,0.1274599,-9.943556,-0.00081196433,-0.00673257,-0.0021899657 +10680000,mag,0.19900002,-0.08100001,0.42700002 +10688000,baro,487.4549 +10688000,airspeed,-0.4098218,-0.40026024 +10688000,imu,-0.1767436,0.15764931,-9.848173,-0.0031160351,-0.01248249,-0.0011689062 +10688000,mag,0.19900002,-0.08100001,0.42700002 +10692000,imu,-0.15477632,0.19447862,-9.8461075,-0.00672483,-0.0044657723,0.0017575682 +10692000,baro,487.41733 +10692000,airspeed,2.0716803,2.0233507 +10692000,mag,0.19900002,-0.08100001,0.42700002 +10700000,mag,0.19900002,-0.08100001,0.425 +10700000,airspeed,0.9040351,0.88293576 +10700000,baro,487.59106 +10700000,imu,-0.28231573,0.26567033,-10.005548,-0.0022150557,-0.011652744,0.0008353668 +10704000,imu,-0.25672662,0.1555628,-9.997848,-0.0014929691,-0.005912609,-0.0049240915 +10704000,airspeed,3.443538,3.363169 +10708000,mag,0.19900002,-0.08100001,0.425 +10708000,baro,487.59106 +10708000,imu,-0.16538872,0.1580032,-9.92571,0.00043367842,-0.0107037015,-0.0031013235 +10708000,airspeed,2.4655414,2.4079978 +10712000,airspeed,-3.3126628,-3.2353382 +10712000,imu,-0.1458512,0.17695923,-9.8585825,0.0032557696,-0.012937835,-0.00092479214 +10712000,mag,0.19900002,-0.08100001,0.425 +10712000,baro,487.6427 +10716000,imu,-0.16801861,0.13717633,-9.904598,0.0020538766,-0.0057899305,-0.006338499 +10716000,mag,0.19900002,-0.08100001,0.425 +10716000,baro,487.38916 +10716000,airspeed,1.7038978,1.6641507 +10720000,imu,-0.19657679,0.17230316,-9.936552,0.0013929463,-0.0075878208,-0.0039823465 +10724000,imu,-0.2522222,0.19461633,-9.915959,0.0017245442,-0.009231073,-0.00014890241 +10724000,baro,487.68027 +10724000,airspeed,2.3355248,2.281004 +10724000,mag,0.19900002,-0.08100001,0.425 +10728000,airspeed,3.4774098,3.3962665 +10728000,mag,0.19900002,-0.08100001,0.425 +10728000,imu,-0.23661043,0.209957,-9.962191,-0.0016226856,-0.003078071,0.0011216977 +10728000,baro,487.51123 +10732000,mag,0.19900002,-0.08100001,0.425 +10732000,airspeed,2.7665844,2.7020278 +10732000,baro,487.51123 +10732000,imu,-0.17608365,0.23233014,-10.019196,-0.0028190864,-0.0031111299,-0.0009870855 +10736000,mag,0.19900002,-0.08100001,0.425 +10736000,baro,487.7366 +10736000,airspeed,0.5436607,0.53096753 +10736000,imu,-0.19094948,0.13892233,-10.065752,0.0016288192,-0.008898963,0.003203585 +10740000,mag,0.19900002,-0.08100001,0.425 +10740000,airspeed,2.4788508,2.421012 +10740000,baro,487.48776 +10740000,imu,-0.20925103,0.13590729,-10.002437,0.0035402304,-0.0076591386,0.0032505265 +10748000,baro,487.49246 +10748000,imu,-0.20490776,0.21660168,-9.923796,-0.0033267052,-0.00920875,-0.00372203 +10748000,mag,0.19900002,-0.08100001,0.425 +10748000,airspeed,-1.9361509,-1.8909742 +10752000,baro,487.5488 +10752000,imu,-0.25126022,0.20045607,-9.93921,-0.002578647,-0.010574227,-0.0007763036 +10752000,airspeed,4.3915663,4.2890825 +10752000,mag,0.2,-0.07900001,0.42600003 +10756000,airspeed,1.819643,1.7771759 +10756000,mag,0.2,-0.07900001,0.42600003 +10756000,imu,-0.25940454,0.14080776,-9.980725,-0.005442704,-0.009255286,0.0069064843 +10756000,baro,487.57697 +10760000,imu,-0.2296863,0.15160456,-9.980613,-0.0042528277,-0.01153297,-0.002911677 +10760000,baro,487.69904 +10760000,mag,0.2,-0.07900001,0.42600003 +10760000,airspeed,-2.3182347,-2.2641146 +10764000,airspeed,-3.6492758,-3.5641122 +10764000,imu,-0.13230422,0.1481358,-9.979783,-0.0008192385,-0.004266685,-0.008213505 +10764000,baro,487.5582 +10764000,mag,0.2,-0.07900001,0.42600003 +10772000,airspeed,-2.3402872,-2.2856796 +10772000,imu,-0.20486389,0.17452826,-9.909494,-0.0018797525,-0.015729653,0.0018874885 +10772000,mag,0.2,-0.07900001,0.42600003 +10772000,baro,487.50186 +10776000,baro,487.67087 +10776000,imu,-0.18268493,0.1414802,-9.889158,-0.0051751025,-0.013962932,0.0011516775 +10776000,mag,0.2,-0.07900001,0.42600003 +10776000,airspeed,-1.4604963,-1.426403 +10784000,baro,487.5441 +10784000,mag,0.2,-0.07900001,0.42600003 +10784000,imu,-0.18442659,0.113078594,-9.909076,-0.0021371495,-0.007519962,-0.006247964 +10784000,airspeed,-0.6714711,-0.6558016 +10792000,baro,487.7366 +10792000,airspeed,-1.4726701,-1.4382869 +10792000,mag,0.2,-0.07900001,0.42600003 +10792000,imu,-0.15329313,0.113003835,-9.965154,0.0027044655,-0.0019432361,-0.0012163674 +10796000,baro,487.60513 +10796000,imu,-0.2036573,0.116203606,-9.966432,-0.0054319524,-0.012226714,-0.004151049 +10796000,airspeed,-3.892971,-3.80211 +10796000,mag,0.2,-0.07900001,0.42600003 +10800000,airspeed,2.8810322,2.8137772 +10800000,baro,487.67557 +10800000,mag,0.2,-0.07900001,0.42600003 +10800000,imu,-0.21056187,0.19753234,-9.996821,-0.007851237,-0.013985284,0.000400734 +10804000,airspeed,-3.319642,-3.2421613 +10804000,baro,487.60983 +10804000,mag,0.2,-0.07900001,0.43 +10804000,imu,-0.21931963,0.2023139,-9.872323,0.0019060483,-0.0075462684,-0.00081532623 +10808000,airspeed,-0.3460714,-0.33799404 +10808000,baro,487.60983 +10808000,mag,0.2,-0.07900001,0.43 +10808000,imu,-0.2511075,0.1490335,-9.879092,0.0027290892,-0.0076847263,-0.0009784753 +10812000,gps,488100.0,85456074.0,473977508.0,0.0,0.0,0.02 +10812000,imu,-0.23472686,0.1650027,-9.977325,-0.000958262,-0.0073220357,0.0020588492 +10812000,mag,0.2,-0.07900001,0.43 +10812000,baro,487.57697 +10812000,airspeed,-0.5358099,-0.523305 +10816000,baro,487.7319 +10816000,imu,-0.21889314,0.17746891,-9.864315,0.0066155796,0.0020869016,0.0011345797 +10816000,mag,0.2,-0.07900001,0.43 +10816000,airspeed,-2.0946922,-2.045787 +10820000,baro,487.5488 +10820000,imu,-0.29328954,0.17300461,-9.903474,0.0052235564,0.004279358,0.003254437 +10820000,airspeed,-1.8184034,-1.7759682 +10820000,mag,0.2,-0.07900001,0.43 +10824000,baro,487.6333 +10824000,imu,-0.23720756,0.17764102,-10.046663,-0.005915617,-0.0025937927,0.000957867 +10824000,mag,0.2,-0.07900001,0.43 +10824000,airspeed,2.073408,2.0250113 +10828000,baro,487.87744 +10828000,mag,0.2,-0.07900001,0.43 +10828000,imu,-0.18492617,0.23959766,-9.95472,-0.006540483,-0.009318031,-0.0035055028 +10828000,airspeed,-4.105584,-4.0096946 +10832000,mag,0.2,-0.07900001,0.43 +10832000,airspeed,1.8147343,1.7723787 +10832000,imu,-0.19453126,0.196389,-9.894574,-0.004731768,-0.013551125,-0.002110842 +10832000,baro,487.60513 +10836000,mag,0.2,-0.07900001,0.43 +10836000,airspeed,1.9177105,1.8729469 +10836000,imu,-0.20092764,0.14505523,-9.9715185,-0.00137802,-0.012632676,-4.107633e-05 +10836000,baro,487.6474 +10840000,airspeed,2.2257075,2.1737502 +10840000,baro,487.68027 +10840000,imu,-0.1796178,0.16005816,-9.993893,0.0009851168,-0.008058705,-0.00060601137 +10844000,mag,0.2,-0.07900001,0.43 +10848000,airspeed,-2.4357202,-2.3788748 +10848000,baro,487.57697 +10848000,imu,-0.21576284,0.20169865,-9.900445,-0.0038365452,-0.012173908,0.0047161207 +10848000,mag,0.2,-0.07900001,0.43 +10856000,imu,-0.22808987,0.17517833,-9.984806,0.00075889635,-0.006198001,0.0030367498 +10856000,mag,0.202,-0.07800001,0.42700002 +10856000,baro,487.5488 +10856000,airspeed,4.0419216,3.9475965 +10860000,mag,0.202,-0.07800001,0.42700002 +10860000,baro,487.57227 +10864000,airspeed,3.1694303,3.0954618 +10864000,imu,-0.2299566,0.23733017,-9.990898,-0.0013345854,-0.00033308633,0.008531653 +10868000,baro,487.66617 +10868000,airspeed,-3.6429255,-3.5578876 +10868000,mag,0.202,-0.07800001,0.42700002 +10868000,imu,-0.21466918,0.19519071,-9.94596,-0.0057479367,0.00012549428,0.008638984 +10876000,baro,487.67557 +10876000,mag,0.202,-0.07800001,0.42700002 +10876000,imu,-0.17438474,0.17777367,-9.908593,0.007471485,-0.012740479,-0.001479643 +10876000,airspeed,4.7861853,4.674456 +10880000,mag,0.202,-0.07800001,0.42700002 +10880000,imu,-0.10405656,0.17393754,-9.897716,0.0042886073,-0.006725595,-0.0010202464 +10880000,airspeed,2.610801,2.5498743 +10880000,baro,487.5488 +10888000,imu,-0.26220593,0.23130882,-9.865365,-0.0017418764,-0.006239616,-0.0016873261 +10888000,mag,0.202,-0.07800001,0.42700002 +10888000,baro,487.7413 +10888000,airspeed,2.7111926,2.6478925 +10892000,baro,487.7413 +10892000,imu,-0.25389677,0.22692473,-9.905685,-0.0012076326,-0.0055883406,-0.0004290392 +10892000,airspeed,2.6637232,2.6015313 +10892000,mag,0.202,-0.07800001,0.42700002 +10896000,imu,-0.20438714,0.24819325,-9.928609,0.00024179895,-0.010017914,-0.0016037892 +10896000,mag,0.202,-0.07800001,0.42700002 +10896000,airspeed,-3.450694,-3.3701468 +10896000,baro,487.6474 +10900000,imu,-0.2049567,0.2054702,-9.93812,-6.221678e-06,-0.008650641,-0.0021412515 +10900000,airspeed,-0.9236148,-0.90205544 +10900000,mag,0.202,-0.07800001,0.42700002 +10900000,baro,487.6474 +10904000,mag,0.202,-0.07800001,0.42700002 +10904000,baro,487.58636 +10908000,mag,0.19500001,-0.08000001,0.42800003 +10908000,imu,-0.22828175,0.16308291,-9.844974,-0.004675406,-0.005312112,-0.011673794 +10908000,baro,487.66147 +10908000,airspeed,1.544369,1.5083187 +10912000,airspeed,2.1718352,2.1211379 +10912000,baro,487.66147 +10912000,imu,-0.1878006,0.14976409,-9.883256,-0.0039622243,0.00011371389,-0.0077935355 +10912000,mag,0.19500001,-0.08000001,0.42800003 +10916000,airspeed,3.446591,3.3661416 +10916000,mag,0.19500001,-0.08000001,0.42800003 +10916000,baro,487.638 +10916000,imu,-0.14218846,0.16248514,-9.909338,0.0049692015,0.00060134905,-0.002215233 +10924000,imu,-0.12250034,0.26810426,-9.952891,-0.004180203,-0.0076142936,-0.0017076461 +10924000,mag,0.19500001,-0.08000001,0.42800003 +10924000,airspeed,-2.5891492,-2.5287108 +10924000,baro,487.6568 +10928000,mag,0.19500001,-0.08000001,0.42800003 +10928000,baro,487.6568 +10928000,imu,-0.18144314,0.24281673,-9.983115,0.00047984088,-0.010810589,-0.0010093664 +10928000,airspeed,-1.931782,-1.8866885 +10932000,mag,0.19500001,-0.08000001,0.42800003 +10932000,baro,487.71783 +10932000,imu,-0.19093773,0.28686383,-9.959065,-0.002049759,-0.013337416,-0.0038417182 +10932000,airspeed,-4.1723886,-4.074978 +10940000,mag,0.19500001,-0.08000001,0.42800003 +10940000,imu,-0.15167165,0.2465641,-9.963596,-0.002282807,-0.0064782975,0.00017558222 +10940000,airspeed,-1.9082017,-1.8636693 +10940000,baro,487.5629 +10948000,airspeed,-3.3682466,-3.2896345 +10948000,baro,487.59576 +10948000,imu,-0.18838477,0.18444423,-9.943538,0.00018020818,-0.013681015,-0.005467171 +10948000,mag,0.19500001,-0.08000001,0.42800003 +10952000,baro,487.5629 +10952000,airspeed,3.3362463,3.2583873 +10952000,imu,-0.21506518,0.2626551,-9.897669,0.0016521851,-0.011667591,0.0040358254 +10952000,mag,0.19500001,-0.08000001,0.42800003 +10956000,imu,-0.26802856,0.18765293,-9.885676,-0.00053644157,-0.00969563,0.011577698 +10956000,baro,487.58636 +10956000,airspeed,1.8745828,1.8308328 +10956000,mag,0.19500001,-0.08000001,0.42800003 +10964000,baro,487.59576 +10964000,airspeed,2.2322526,2.1801531 +10964000,mag,0.20300001,-0.08200001,0.43 +10964000,imu,-0.16859701,0.20233642,-9.988476,-0.0027396942,-0.004139673,0.00016852646 +10968000,imu,-0.19766688,0.24219523,-10.009543,-0.0060622063,-0.012142098,-0.0021196196 +10968000,baro,487.68027 +10968000,mag,0.20300001,-0.08200001,0.43 +10968000,airspeed,-2.958302,-2.8892424 +10972000,airspeed,2.0144584,1.9674323 +10972000,baro,487.68027 +10972000,imu,-0.18091561,0.264076,-9.963507,-0.0047578807,-0.0117164245,0.00041119315 +10972000,mag,0.20300001,-0.08200001,0.43 +10980000,mag,0.20300001,-0.08200001,0.43 +10980000,baro,487.361 +10980000,imu,-0.2401032,0.18912731,-9.8949375,-0.008862277,-0.010372183,-0.00055341027 +10980000,airspeed,-3.7487583,-3.661316 +10984000,mag,0.20300001,-0.08200001,0.43 +10984000,airspeed,-1.0022299,-0.9788522 +10984000,baro,487.361 +10984000,imu,-0.22191155,0.2085906,-9.943568,-0.0037153019,-0.0027392483,2.4558224e-06 +10988000,baro,487.68967 +10988000,imu,-0.17576876,0.19479357,-9.990899,0.0018649581,-0.005568108,0.00454684 +10988000,airspeed,-2.9986458,-2.928643 +10988000,mag,0.20300001,-0.08200001,0.43 +10992000,baro,487.51123 +10992000,mag,0.20300001,-0.08200001,0.43 +10992000,airspeed,1.5632344,1.5267571 +10992000,imu,-0.24009739,0.14350936,-9.910676,-0.004525402,-0.006940531,0.0038185134 +10996000,mag,0.20300001,-0.08200001,0.43 +10996000,imu,-0.21284175,0.13913405,-9.906817,-0.0071146786,-0.0018344983,-0.0014104986 +10996000,airspeed,0.46419564,0.45336452 +10996000,baro,487.48776 +11000000,baro,487.68967 +11000000,mag,0.20300001,-0.08200001,0.43 +11000000,imu,-0.17038706,0.17346363,-9.944141,-0.0055907387,5.5386306e-05,-0.0015758286 +11000000,airspeed,-2.4974375,-2.439135 +11008000,airspeed,0.62311924,0.60858065 +11008000,mag,0.20300001,-0.08200001,0.43 +11008000,baro,487.469 +11008000,imu,-0.11158687,0.16016048,-9.931703,-0.010049369,-0.0007688178,0.0010794715 +11012000,mag,0.20300001,-0.08200001,0.43 +11012000,gps,488099.0,85456074.0,473977508.0,0.01,0.0,0.03 +11012000,airspeed,1.3253671,1.2944328 +11012000,baro,487.60983 +11012000,imu,-0.16668318,0.18563694,-9.902621,-0.0060916203,-0.0024750778,0.0059462045 +11016000,mag,0.201,-0.08300001,0.42800003 +11016000,airspeed,-2.5565474,-2.4968781 +11016000,imu,-0.2263243,0.19090995,-9.97545,0.0038811746,-0.003989086,0.009000211 +11016000,baro,487.60513 +11020000,imu,-0.25862926,0.21905355,-10.001493,0.0021649709,-0.005082764,0.0009597278 +11020000,mag,0.201,-0.08300001,0.42800003 +11020000,airspeed,2.302405,2.2486606 +11020000,baro,487.6568 +11024000,baro,487.60983 +11024000,imu,-0.25937456,0.23250909,-9.946465,-0.0029382152,-0.0021414815,0.00040990554 +11024000,mag,0.201,-0.08300001,0.42800003 +11024000,airspeed,-2.1842563,-2.1332757 +11028000,airspeed,2.481891,2.4239635 +11028000,imu,-0.27674836,0.19203828,-9.849711,-0.0072091273,-0.0061379103,0.0020937044 +11028000,baro,487.60983 +11028000,mag,0.201,-0.08300001,0.42800003 +11032000,baro,487.6568 +11032000,imu,-0.2842453,0.20403153,-9.837522,-0.0029343534,-0.007232774,-0.0045523783 +11032000,airspeed,-2.8366036,-2.7703888 +11032000,mag,0.201,-0.08300001,0.42800003 +11040000,baro,487.53003 +11040000,airspeed,-4.6082892,-4.5007524 +11040000,imu,-0.194701,0.29511705,-9.898677,-0.00051050197,-0.0060876613,-0.002297723 +11040000,mag,0.201,-0.08300001,0.42800003 +11044000,mag,0.201,-0.08300001,0.42800003 +11044000,imu,-0.17297544,0.24312343,-9.861949,-0.0022815312,-0.004229199,2.2341064e-05 +11044000,baro,487.58636 +11044000,airspeed,-0.6282892,-0.6136258 +11048000,mag,0.201,-0.08300001,0.42800003 +11048000,imu,-0.171308,0.19223152,-9.928326,-0.008507392,-0.0067917113,0.0022534581 +11048000,baro,487.5441 +11048000,airspeed,1.20517,1.1770461 +11056000,mag,0.201,-0.08300001,0.42800003 +11056000,imu,-0.15504165,0.20226006,-9.989562,-0.0018903689,-0.00077892235,0.0014107281 +11056000,airspeed,0.6922002,0.6760462 +11056000,baro,487.5582 +11060000,airspeed,3.0192444,2.9487658 +11060000,baro,487.66617 +11060000,imu,-0.18677272,0.20282684,-9.998483,-0.00090793055,-0.0051009804,-0.0023516594 +11060000,mag,0.201,-0.08300001,0.42800003 +11068000,airspeed,-1.0399641,-1.0156934 +11068000,baro,487.57227 +11068000,mag,0.2,-0.084000014,0.43100002 +11068000,imu,-0.16043845,0.28859997,-9.9610405,-0.005944375,-0.008346542,-0.0018155653 +11072000,airspeed,-1.106557,-1.0807374 +11072000,baro,487.49246 +11072000,mag,0.2,-0.084000014,0.43100002 +11072000,imu,-0.17509015,0.22672984,-9.965555,-0.0029209778,-0.010292952,-0.001670613 +11080000,imu,-0.10713765,0.23221275,-9.876796,-0.00188288,-0.005252529,0.00047726385 +11080000,airspeed,2.5531943,2.4935894 +11080000,mag,0.2,-0.084000014,0.43100002 +11080000,baro,487.69434 +11084000,mag,0.2,-0.084000014,0.43100002 +11084000,airspeed,1.5585004,1.5221224 +11084000,imu,-0.08494184,0.148339,-9.90218,0.0012500108,-0.00354538,0.0037113351 +11084000,baro,487.638 +11088000,mag,0.2,-0.084000014,0.43100002 +11088000,airspeed,0.21553743,0.21050395 +11088000,imu,-0.18887706,0.15967937,-9.948274,-0.00044957473,-0.0052508037,-0.003935354 +11088000,baro,487.8352 +11092000,imu,-0.16668601,0.18839698,-9.938675,0.0021327597,-0.006968141,-0.0066473735 +11092000,airspeed,1.6099409,1.5723436 +11092000,mag,0.2,-0.084000014,0.43100002 +11092000,baro,487.8352 +11096000,mag,0.2,-0.084000014,0.43100002 +11096000,airspeed,2.2216034,2.1697483 +11096000,imu,-0.13901415,0.17264116,-9.9623,0.0044455472,-0.010922259,-0.004703538 +11096000,baro,487.62863 +11100000,imu,-0.19129239,0.20563096,-9.886046,0.0013771058,-0.009580451,-0.008150894 +11100000,mag,0.2,-0.084000014,0.43100002 +11100000,baro,487.53473 +11100000,airspeed,-2.2670922,-2.214188 +11104000,baro,487.53473 +11104000,mag,0.2,-0.084000014,0.43100002 +11104000,airspeed,-2.6447403,-2.5830235 +11104000,imu,-0.13991334,0.18790713,-9.858591,0.0024442186,-0.001307985,-0.0069780094 +11108000,airspeed,-1.6322633,-1.5941908 +11108000,baro,487.35162 +11108000,imu,-0.1139613,0.21746874,-9.934432,0.0019916268,0.0016180688,-0.005763407 +11108000,mag,0.2,-0.084000014,0.43100002 +11112000,airspeed,2.094362,2.045473 +11112000,baro,487.66147 +11112000,imu,-0.17005728,0.23482913,-9.9059515,0.0005685402,-0.00057786796,-0.0010915522 +11112000,mag,0.2,-0.084000014,0.43100002 +11116000,airspeed,-2.0095584,-1.9626554 +11116000,baro,487.60983 +11116000,imu,-0.25270084,0.18133986,-9.846375,-0.00066033815,-0.0053399582,0.0011583258 +11116000,mag,0.2,-0.08200001,0.43100002 +11120000,baro,487.60983 +11120000,imu,-0.22218268,0.13624784,-9.895205,-0.003313808,-0.0069783623,-0.0007957987 +11120000,airspeed,-3.1068218,-3.0343087 +11120000,mag,0.2,-0.08200001,0.43100002 +11124000,mag,0.2,-0.08200001,0.43100002 +11124000,airspeed,3.1143951,3.041703 +11124000,baro,487.62393 +11124000,imu,-0.16535062,0.14064345,-9.901259,-0.0063811936,-0.004109071,-0.0045006755 +11128000,airspeed,-1.704119,-1.6643487 +11128000,baro,487.5676 +11128000,imu,-0.20320617,0.1784945,-9.914048,-0.004845496,-0.004476662,-0.0077098757 +11128000,mag,0.2,-0.08200001,0.43100002 +11136000,imu,-0.21505761,0.18888043,-9.966234,0.0047242357,-0.00605954,-0.007818466 +11136000,airspeed,0.8404846,0.8208709 +11136000,mag,0.2,-0.08200001,0.43100002 +11136000,baro,487.5441 +11140000,imu,-0.14299954,0.23285268,-9.922161,-0.000699757,-0.007294855,-0.003610448 +11140000,mag,0.2,-0.08200001,0.43100002 +11140000,airspeed,1.6544337,1.6158364 +11140000,baro,487.43613 +11144000,imu,-0.1668703,0.22219841,-9.9707155,-0.00061097567,-0.008599843,0.0037806975 +11144000,baro,487.68027 +11144000,airspeed,2.2578974,2.205188 +11144000,mag,0.2,-0.08200001,0.43100002 +11148000,imu,-0.2701868,0.21685328,-9.954647,-0.0027734076,-0.0072986796,0.004226301 +11148000,airspeed,3.5217912,3.439577 +11148000,baro,487.68027 +11148000,mag,0.2,-0.08200001,0.43100002 +11152000,mag,0.2,-0.08200001,0.43100002 +11152000,baro,487.5394 +11152000,imu,-0.29390687,0.21683747,-9.953353,-0.0033405195,-0.002221863,0.0074450183 +11152000,airspeed,-3.6802416,-3.5943594 +11160000,airspeed,2.8105025,2.744913 +11160000,imu,-0.17869544,0.30465657,-9.970371,-0.00495116,-0.0043675415,-0.0052919243 +11160000,mag,0.2,-0.08200001,0.43100002 +11160000,baro,487.5629 +11164000,airspeed,-1.7146016,-1.6745768 +11164000,imu,-0.24822223,0.2930885,-10.003891,-0.0009875022,-0.0062923967,0.00027543656 +11164000,mag,0.2,-0.08200001,0.43100002 +11164000,baro,487.67087 +11168000,baro,487.60513 +11168000,imu,-0.25838974,0.26055408,-9.975066,-0.0026334007,-0.010703138,-0.003360837 +11168000,mag,0.2,-0.07900001,0.43100002 +11168000,airspeed,1.4100331,1.3771232 +11172000,imu,-0.19189163,0.17522338,-9.948981,-0.0006946158,-0.004824053,-0.0018015964 +11172000,mag,0.2,-0.07900001,0.43100002 +11172000,baro,487.52533 +11172000,airspeed,3.2704732,3.1941564 +11176000,baro,487.57697 +11176000,airspeed,-4.055201,-3.9605596 +11176000,imu,-0.15311141,0.1396051,-9.892769,-0.003693094,-0.0028111376,0.0045181797 +11176000,mag,0.2,-0.07900001,0.43100002 +11184000,baro,487.62863 +11184000,airspeed,-2.854602,-2.7879725 +11184000,imu,-0.2575067,0.27966017,-9.845491,-0.0072124717,-0.005011426,-0.0068414165 +11184000,mag,0.2,-0.07900001,0.43100002 +11192000,baro,487.638 +11192000,airspeed,-1.0660098,-1.0411272 +11192000,imu,-0.20541011,0.18984683,-9.956288,0.0010952736,-0.0154494755,0.00022479288 +11192000,mag,0.2,-0.07900001,0.43100002 +11196000,airspeed,-2.966175,-2.8969712 +11196000,imu,-0.21633506,0.20987503,-9.921535,-0.0021133695,-0.013496725,0.00584733 +11196000,baro,487.4549 +11196000,mag,0.2,-0.07900001,0.43100002 +11200000,mag,0.2,-0.07900001,0.43100002 +11200000,airspeed,-1.8208269,-1.7783215 +11200000,imu,-0.22116305,0.2843522,-9.975744,-0.0021523172,-0.012761468,0.0061107706 +11200000,baro,487.67557 +11208000,airspeed,-2.8598251,-2.7930934 +11208000,baro,487.50656 +11208000,imu,-0.26389563,0.23253147,-9.982808,0.0033150506,-0.004554856,-0.0075830594 +11208000,mag,0.2,-0.07900001,0.43100002 +11212000,baro,487.66617 +11212000,mag,0.2,-0.07900001,0.43100002 +11212000,airspeed,-2.3165371,-2.262462 +11212000,imu,-0.1914309,0.21409062,-10.011001,0.0057541113,-0.0042641577,0.0009457816 +11212000,gps,488103.0,85456074.0,473977508.0,0.0,0.0,0.01 +11216000,imu,-0.17975247,0.17069541,-9.92811,-0.0010898281,-0.0060309027,0.00076605275 +11216000,baro,487.7366 +11216000,mag,0.2,-0.07900001,0.43100002 +11216000,airspeed,2.7685082,2.7038705 +11224000,airspeed,2.095681,2.0467627 +11224000,mag,0.19800001,-0.08200001,0.42900002 +11224000,baro,487.6474 +11224000,imu,-0.23899513,0.058959957,-9.888534,-0.002093233,-0.0047926493,-0.0039369375 +11228000,mag,0.19800001,-0.08200001,0.42900002 +11228000,baro,487.3798 +11228000,airspeed,0.78272104,0.76446295 +11228000,imu,-0.24608132,0.11890457,-9.876139,-0.008077125,-0.006813727,0.0043202 +11236000,mag,0.19800001,-0.08200001,0.42900002 +11236000,baro,487.67087 +11236000,airspeed,-2.9051497,-2.837333 +11236000,imu,-0.19960253,0.18630713,-9.934841,-0.00526562,-0.0030118488,-0.00094716594 +11240000,airspeed,-2.2712913,-2.2182815 +11244000,baro,487.59106 +11244000,mag,0.19800001,-0.08200001,0.42900002 +11244000,imu,-0.23991895,0.22994576,-9.913389,0.0035633214,0.0009302742,0.0009413888 +11248000,baro,487.43613 +11248000,imu,-0.23666851,0.1431665,-9.858677,0.0019721284,-0.005595936,-0.0007878673 +11248000,mag,0.19800001,-0.08200001,0.42900002 +11248000,airspeed,-1.2853415,-1.2553545 +11256000,mag,0.19800001,-0.08200001,0.42900002 +11256000,baro,487.51123 +11256000,airspeed,-1.2542286,-1.2249618 +11256000,imu,-0.118298106,0.18346544,-9.978141,7.985895e-05,-0.00811298,-0.007571236 +11264000,imu,-0.21760914,0.20171393,-9.937057,-0.0012138718,-0.0132634975,0.0027223597 +11264000,mag,0.19800001,-0.08200001,0.42900002 +11264000,baro,487.7225 +11264000,airspeed,2.4893506,2.4312327 +11268000,airspeed,3.5863206,3.5025923 +11268000,imu,-0.1682206,0.19330475,-9.913938,0.00079262006,-0.00408877,-0.0007027777 +11272000,imu,-0.19104673,0.15892221,-9.932092,-0.0027068036,-0.0036053164,0.0011661019 +11272000,mag,0.19900002,-0.08000001,0.43 +11272000,baro,487.6427 +11272000,airspeed,-2.1776414,-2.1268108 +11276000,airspeed,-2.125056,-2.0754514 +11276000,imu,-0.23457332,0.12568232,-9.915422,-0.00311727,-0.0030957353,0.005758401 +11280000,imu,-0.24960746,0.15078297,-9.974177,-0.0039960803,-0.0017256174,0.00073212245 +11280000,airspeed,-3.242214,-3.1665068 +11280000,mag,0.19900002,-0.08000001,0.43 +11280000,baro,487.78824 +11284000,imu,-0.26002607,0.1493398,-9.986999,-0.00671966,-0.0047641285,-0.0012623263 +11284000,airspeed,-3.3149133,-3.2375085 +11288000,airspeed,3.422555,3.3426702 +11288000,mag,0.19900002,-0.08000001,0.43 +11288000,baro,487.62393 +11288000,imu,-0.19023226,0.10328846,-9.858167,0.004266408,-0.008489176,0.0040048677 +11292000,imu,-0.15833731,0.20703559,-9.867826,0.0054037403,-0.012305079,0.0054468657 +11292000,airspeed,-2.3081849,-2.2543073 +11296000,airspeed,-1.6848505,-1.6455127 +11296000,imu,-0.19699559,0.26349983,-9.949458,0.002419023,-0.0087493155,0.010549864 +11296000,mag,0.19900002,-0.08000001,0.43 +11296000,baro,487.746 +11300000,imu,-0.22024004,0.22962426,-9.963674,0.0016222425,-0.00828461,0.0052619046 +11300000,baro,487.48776 +11300000,airspeed,-4.4509606,-4.3471065 +11300000,mag,0.19900002,-0.08000001,0.43 +11304000,imu,-0.20057277,0.22321711,-9.917434,-0.00017060724,-0.006463112,-0.009471055 +11304000,airspeed,2.1181712,2.068753 +11304000,baro,487.44553 +11304000,mag,0.19900002,-0.08000001,0.43 +11308000,imu,-0.21111873,0.2073608,-9.933124,0.0024218678,0.0014599557,-0.0053466824 +11308000,airspeed,-3.2741861,-3.1977358 +11308000,baro,487.76947 +11308000,mag,0.19900002,-0.08000001,0.43 +11312000,imu,-0.23704036,0.19260806,-9.930018,0.0023805324,-0.000121185854,-0.00040899098 +11312000,airspeed,-2.1445763,-2.0945237 +11312000,mag,0.19900002,-0.08000001,0.43 +11312000,baro,487.59576 +11316000,imu,-0.17888324,0.14096752,-9.903371,0.002409578,-0.003844408,-0.003767023 +11316000,baro,487.5535 +11316000,mag,0.19900002,-0.08000001,0.43 +11316000,airspeed,-3.6030192,-3.518936 +11320000,mag,0.19900002,-0.08000001,0.43 +11320000,airspeed,-1.8942153,-1.8499944 +11320000,imu,-0.23219815,0.16639575,-9.958054,-0.0008636547,-0.005290433,-0.0049300427 +11320000,baro,487.69904 +11324000,airspeed,0.90370977,0.88262314 +11324000,imu,-0.28601474,0.21858521,-9.999404,-0.0015184913,-0.006652655,-0.007981651 +11324000,baro,487.49246 +11324000,mag,0.19900002,-0.08100001,0.42700002 +11328000,baro,487.70844 +11328000,mag,0.19900002,-0.08100001,0.42700002 +11332000,airspeed,2.8674123,2.8004699 +11332000,baro,487.70844 +11332000,mag,0.19900002,-0.08100001,0.42700002 +11332000,imu,-0.21347667,0.23493291,-9.9556675,0.0016694707,-0.0077391253,2.8927047e-05 +11336000,airspeed,4.337637,4.2363987 +11336000,imu,-0.20027393,0.16330536,-9.960367,0.0032974018,-0.004845635,-0.0007681673 +11336000,mag,0.19900002,-0.08100001,0.42700002 +11336000,baro,487.60043 +11344000,imu,-0.20884822,0.24247606,-9.917806,0.0018058639,-0.0034197536,-0.0026688322 +11344000,airspeed,-0.773039,-0.75499356 +11344000,mag,0.19900002,-0.08100001,0.42700002 +11344000,baro,487.67087 +11348000,mag,0.19900002,-0.08100001,0.42700002 +11348000,imu,-0.16501148,0.17847762,-9.924666,-0.0033911313,-0.009665801,-0.0020575072 +11348000,baro,487.746 +11348000,airspeed,2.225736,2.1737695 +11352000,mag,0.19900002,-0.08100001,0.42700002 +11352000,baro,487.6568 +11356000,airspeed,3.091317,3.0191705 +11356000,imu,-0.1595694,0.24103159,-9.956338,3.4030443e-05,-0.011658325,0.004573133 +11356000,mag,0.19900002,-0.08100001,0.42700002 +11356000,baro,487.58167 +11360000,imu,-0.16761118,0.19629723,-9.91658,0.0005082162,-0.007840049,-0.0057061627 +11360000,airspeed,-1.3009806,-1.2706244 +11360000,mag,0.19900002,-0.08100001,0.42700002 +11360000,baro,487.49246 +11364000,mag,0.19900002,-0.08100001,0.42700002 +11364000,airspeed,-2.2248003,-2.1728885 +11364000,imu,-0.19746293,0.14235806,-9.897112,0.0033989353,-0.008303645,-0.004008541 +11364000,baro,487.49246 +11368000,baro,487.62863 +11368000,mag,0.19900002,-0.08100001,0.42700002 +11368000,imu,-0.15287916,0.1369365,-9.917961,-0.0033920477,-0.007964087,0.0052941265 +11368000,airspeed,-2.7910552,-2.7259088 +11372000,imu,-0.18933737,0.16220199,-9.966857,-0.006859756,-0.0029599932,0.00671112 +11372000,baro,487.69904 +11372000,airspeed,2.044517,1.9967867 +11372000,mag,0.19900002,-0.08100001,0.42700002 +11376000,baro,487.61923 +11376000,mag,0.202,-0.07900001,0.42800003 +11376000,imu,-0.28354338,0.18133855,-10.009674,0.0029800448,-0.0025999302,0.0020265628 +11376000,airspeed,1.9937811,1.9472449 +11380000,imu,-0.28139535,0.21140058,-10.025937,0.0008805302,-0.0073027755,-0.00080470834 +11380000,baro,487.67087 +11380000,airspeed,1.9967179,1.9501075 +11380000,mag,0.202,-0.07900001,0.42800003 +11384000,imu,-0.23361431,0.20534101,-9.981783,-0.0013840562,-0.009280093,-0.0023990283 +11384000,mag,0.202,-0.07900001,0.42800003 +11384000,airspeed,-3.3158994,-3.238504 +11384000,baro,487.62393 +11388000,airspeed,-3.9888299,-3.8957279 +11388000,imu,-0.21008094,0.19886905,-9.944725,0.0063939085,-0.008699718,-0.0063250544 +11392000,imu,-0.23157479,0.21408099,-9.890991,0.004132028,-0.008420042,-0.0064094304 +11392000,mag,0.202,-0.07900001,0.42800003 +11392000,airspeed,-3.149927,-3.0763822 +11392000,baro,487.746 +11396000,airspeed,3.143514,3.0701466 +11396000,baro,487.59576 +11396000,mag,0.202,-0.07900001,0.42800003 +11396000,imu,-0.25260887,0.21560742,-9.912543,-0.003620523,-0.0095016835,0.00028251534 +11404000,mag,0.202,-0.07900001,0.42800003 +11404000,airspeed,2.902188,2.8344243 +11404000,baro,487.76477 +11404000,imu,-0.1777571,0.15940198,-9.838896,0.004087089,-0.0012263954,0.007112381 +11408000,mag,0.202,-0.07900001,0.42800003 +11408000,airspeed,-2.046174,-1.9984059 +11408000,baro,487.69434 +11408000,imu,-0.19208972,0.13202491,-9.913411,0.005500889,0.0009269014,0.0028972155 +11412000,airspeed,2.2377412,2.1855054 +11412000,gps,488107.0,85456074.0,473977508.0,0.0,0.0,-0.03 +11412000,imu,-0.26385325,0.12701891,-9.951855,0.0023888566,0.0023251025,0.0005217467 +11412000,baro,487.66147 +11412000,mag,0.202,-0.07900001,0.42800003 +11416000,baro,487.66147 +11416000,mag,0.202,-0.07900001,0.42800003 +11416000,airspeed,-2.6995695,-2.6365533 +11416000,imu,-0.2636522,0.2144481,-9.915419,0.0019361994,0.0024821805,0.0017615203 +11420000,mag,0.202,-0.07900001,0.42800003 +11420000,airspeed,-2.0919077,-2.0430927 +11420000,baro,487.52533 +11420000,imu,-0.27976668,0.22007678,-10.003078,0.00092270185,-0.009126527,-0.0037761957 +11424000,imu,-0.25588617,0.21968977,-10.060028,0.0028678218,-0.014853662,-0.002897798 +11424000,baro,487.5676 +11424000,airspeed,1.4648472,1.4306613 +11428000,airspeed,3.78363,3.6953294 +11428000,baro,487.5676 +11428000,mag,0.2,-0.08200001,0.42800003 +11432000,imu,-0.2552038,0.14475548,-9.956012,-0.0022155214,0.00092277746,-0.004154663 +11436000,imu,-0.2876822,0.1350027,-9.93083,6.608601e-05,-0.0057605235,-0.0072739515 +11436000,baro,487.469 +11436000,mag,0.2,-0.08200001,0.42800003 +11436000,airspeed,-1.7254398,-1.685182 +11444000,airspeed,-1.3066708,-1.2761701 +11444000,imu,-0.20284739,0.110158876,-9.967985,0.0015910162,-0.006002263,0.0014597323 +11444000,baro,487.6474 +11444000,mag,0.2,-0.08200001,0.42800003 +11448000,imu,-0.2822411,0.18447603,-9.8918295,-0.00044998655,-0.006195578,0.003424495 +11448000,airspeed,3.5425553,3.4598725 +11448000,baro,487.60513 +11448000,mag,0.2,-0.08200001,0.42800003 +11452000,imu,-0.28781343,0.3167963,-9.891348,-0.0013047371,-0.008483997,-0.0015123389 +11452000,baro,487.50656 +11452000,mag,0.2,-0.08200001,0.42800003 +11452000,airspeed,-0.3804782,-0.37160015 +11456000,imu,-0.21471615,0.3148443,-9.827509,-0.004744891,-0.006106781,-0.0043642814 +11456000,mag,0.2,-0.08200001,0.42800003 +11456000,airspeed,-3.9970143,-3.9037123 +11456000,baro,487.6568 +11460000,mag,0.2,-0.08200001,0.42800003 +11460000,imu,-0.13003509,0.1951282,-9.86282,-0.0058065457,-0.006054258,-4.4029697e-05 +11460000,baro,487.6568 +11464000,airspeed,1.2493182,1.2201531 +11468000,airspeed,3.4453418,3.364942 +11468000,mag,0.2,-0.08200001,0.42800003 +11468000,baro,487.53473 +11468000,imu,-0.14468588,0.17732176,-9.990555,0.0013616927,-0.013270055,-0.0071523697 +11472000,imu,-0.17698365,0.08081192,-9.969088,-0.0032642982,-0.006924559,-0.00446451 +11472000,baro,487.53473 +11472000,mag,0.2,-0.08200001,0.42800003 +11472000,airspeed,1.7263955,1.6861087 +11476000,airspeed,-2.5755105,-2.5153878 +11476000,mag,0.2,-0.08200001,0.42800003 +11476000,baro,487.67557 +11476000,imu,-0.24908496,0.044108465,-9.928123,-0.0065832976,0.00355193,-0.0019141233 +11484000,mag,0.19800001,-0.08000001,0.42900002 +11484000,baro,487.5394 +11484000,airspeed,-3.4727335,-3.391694 +11484000,imu,-0.15655363,0.1358721,-9.909491,0.0042598606,-0.009034863,-0.00271753 +11488000,mag,0.19800001,-0.08000001,0.42900002 +11488000,airspeed,-2.797653,-2.7323673 +11488000,imu,-0.16350645,0.19375817,-9.930358,-0.0011423791,-0.0041339574,-0.004985533 +11488000,baro,487.5394 +11496000,airspeed,-1.0894381,-1.0640068 +11496000,imu,-0.22086039,0.22136714,-9.956725,0.0009415497,-0.006398873,0.0011755973 +11496000,baro,487.66617 +11496000,mag,0.19800001,-0.08000001,0.42900002 +11500000,baro,487.7319 +11500000,mag,0.19800001,-0.08000001,0.42900002 +11500000,airspeed,1.2261972,1.1975688 +11500000,imu,-0.19204545,0.15351908,-9.90254,0.0025948873,-0.0090636,0.00080069323 +11504000,mag,0.19800001,-0.08000001,0.42900002 +11504000,airspeed,1.9427595,1.8974303 +11504000,imu,-0.1997888,0.15787718,-9.878317,0.0002642243,-0.005895389,0.00083352637 +11504000,baro,487.47836 +11508000,imu,-0.1935322,0.20770821,-9.933048,-0.0024863458,-0.008764542,0.0017054967 +11508000,baro,487.59576 +11508000,mag,0.19800001,-0.08000001,0.42900002 +11508000,airspeed,2.4913166,2.433171 +11512000,airspeed,2.4813888,2.4234755 +11512000,imu,-0.15630293,0.16378526,-9.977129,-0.0066651837,-0.008663455,0.0040626884 +11512000,baro,487.59106 +11512000,mag,0.19800001,-0.08000001,0.42900002 +11516000,airspeed,-3.1469247,-3.0734801 +11516000,baro,487.58167 +11516000,imu,-0.1611717,0.1731739,-10.002186,-0.008681603,-0.0030250563,-0.0006000315 +11516000,mag,0.19800001,-0.08000001,0.42900002 +11520000,imu,-0.19189832,0.19010805,-9.939535,-0.00520847,-0.0044090375,-0.0013647707 +11520000,airspeed,-3.392299,-3.3130958 +11520000,mag,0.19800001,-0.08000001,0.42900002 +11520000,baro,487.746 +11528000,imu,-0.1318047,0.2160156,-9.856722,-0.008007663,-0.014191629,-0.0013254043 +11528000,airspeed,2.031979,1.984552 +11528000,baro,487.61453 +11528000,mag,0.19800001,-0.08000001,0.42900002 +11532000,imu,-0.15829612,0.19477697,-9.85764,-1.5522879e-05,-0.005907528,-0.0022866954 +11532000,airspeed,4.402674,4.299912 +11536000,imu,-0.16707815,0.1579012,-9.9094925,0.0014737034,0.003738624,-0.00031406793 +11536000,airspeed,-1.9309967,-1.8859254 +11536000,mag,0.2,-0.08100001,0.43100002 +11536000,baro,487.62393 +11540000,baro,487.57227 +11540000,imu,-0.16462956,0.16877697,-9.9147005,-0.0028920972,-0.0037427258,0.0026131924 +11540000,mag,0.2,-0.08100001,0.43100002 +11540000,airspeed,-2.0316336,-1.9842192 +11548000,airspeed,2.1902208,2.1390934 +11548000,mag,0.2,-0.08100001,0.43100002 +11548000,imu,-0.19902153,0.19652529,-9.910103,-0.0021999308,-0.0007269393,0.0044516074 +11548000,baro,487.67087 +11552000,mag,0.2,-0.08100001,0.43100002 +11552000,baro,487.7272 +11552000,airspeed,-0.6038479,-0.5897499 +11552000,imu,-0.17867976,0.16146664,-9.937694,-0.005335523,-0.0020129727,-0.0016717992 +11556000,baro,487.7272 +11556000,airspeed,1.2816494,1.2517266 +11556000,imu,-0.19773379,0.16009347,-9.946,-0.0016193852,-0.007839471,-0.00021502966 +11556000,mag,0.2,-0.08100001,0.43100002 +11564000,airspeed,3.4091902,3.329614 +11564000,mag,0.2,-0.08100001,0.43100002 +11564000,baro,487.638 +11564000,imu,-0.20278488,0.15479259,-9.951041,-0.0067137964,0.0039831367,0.0016214951 +11568000,mag,0.2,-0.08100001,0.43100002 +11568000,baro,487.62863 +11568000,airspeed,-0.2508292,-0.24497457 +11568000,imu,-0.22486089,0.13504308,-9.927283,-0.0028031825,-0.002353884,-0.0017705234 +11572000,airspeed,3.1304245,3.0573595 +11572000,mag,0.2,-0.08100001,0.43100002 +11572000,imu,-0.23275778,0.12215784,-9.968875,-0.00016847235,-0.0067643914,-0.002059363 +11572000,baro,487.61453 +11576000,imu,-0.21827291,0.14968643,-9.881747,-0.0010919162,-0.012670608,-0.0033801515 +11576000,airspeed,1.1945014,1.1666213 +11576000,mag,0.2,-0.08100001,0.43100002 +11576000,baro,487.61453 +11580000,imu,-0.15384115,0.20885211,-9.889399,-0.0006689437,-0.014491847,-0.0004909212 +11580000,airspeed,-3.2472448,-3.171453 +11580000,mag,0.2,-0.08100001,0.43100002 +11580000,baro,487.61453 +11588000,imu,-0.18648356,0.21558124,-9.938743,0.0025772543,-0.00023571057,-0.00971541 +11588000,airspeed,-1.7566215,-1.715619 +11588000,baro,487.638 +11588000,mag,0.2,-0.08300001,0.42800003 +11592000,imu,-0.23169066,0.1704062,-9.847922,0.008352554,-0.0009275624,-0.006042308 +11592000,airspeed,1.1669306,1.1396914 +11592000,baro,487.6521 +11592000,mag,0.2,-0.08300001,0.42800003 +11596000,imu,-0.23222424,0.18359466,-9.862173,0.0068700537,-0.0050926832,0.004957133 +11596000,airspeed,-1.1992257,-1.1712326 +11600000,baro,487.68967 +11600000,mag,0.2,-0.08300001,0.42800003 +11600000,airspeed,-3.1413772,-3.0680425 +11600000,imu,-0.18011184,0.12609406,-9.904801,0.0053639812,-0.0077298856,0.008792538 +11600000,landed,1.0 +11604000,imu,-0.12720634,0.19671035,-9.916258,-0.00032779688,-0.008259218,0.001054676 +11604000,airspeed,3.8857186,3.7949972 +11604000,mag,0.2,-0.08300001,0.42800003 +11604000,baro,487.7319 +11612000,imu,-0.22508235,0.24740791,-9.941644,0.0014067565,-0.0032828392,0.0039447607 +11612000,airspeed,3.5887818,3.5050368 +11612000,mag,0.2,-0.08300001,0.42800003 +11612000,baro,487.52533 +11612000,gps,488103.0,85456074.0,473977508.0,0.0,-0.01,0.01 +11620000,imu,-0.21011125,0.10920574,-9.910643,0.0021169838,-0.013587252,0.0025609657 +11620000,mag,0.2,-0.08300001,0.42800003 +11620000,baro,487.77417 +11620000,airspeed,-4.1027884,-4.00699 +11624000,baro,487.7413 +11624000,imu,-0.19206814,0.12184284,-9.882112,-0.0022328366,-0.014692618,-0.0020008255 +11624000,mag,0.2,-0.08300001,0.42800003 +11624000,airspeed,-0.60834414,-0.5941406 +11628000,airspeed,-0.44830784,-0.43784082 +11628000,mag,0.2,-0.08300001,0.42800003 +11628000,baro,487.7413 +11628000,imu,-0.18578707,0.2244541,-9.906286,-0.0041532232,-0.011338433,-0.0036356773 +11632000,imu,-0.18533543,0.17076781,-9.9276495,-0.0024781502,-0.011718234,0.002194381 +11632000,mag,0.2,-0.08300001,0.42800003 +11632000,baro,487.638 +11632000,airspeed,0.96797776,0.9453835 +11640000,imu,-0.19456367,0.17203312,-9.971127,0.0021885564,-0.009597056,0.0033885348 +11640000,baro,487.67557 +11640000,mag,0.19800001,-0.077000014,0.42800003 +11640000,airspeed,2.622875,2.5616467 +11644000,mag,0.19800001,-0.077000014,0.42800003 +11644000,baro,487.67557 +11644000,airspeed,-1.119641,-1.0935041 +11644000,imu,-0.17540392,0.21228833,-9.904129,0.0009976435,-0.00017468422,0.00087992003 +11648000,airspeed,-2.5286005,-2.4695723 +11648000,baro,487.68027 +11648000,mag,0.19800001,-0.077000014,0.42800003 +11648000,imu,-0.22338548,0.24355058,-9.912389,-0.0010770782,0.0025019415,-0.000973279 +11652000,imu,-0.23399056,0.19694111,-9.933302,-0.0034673933,-0.0002326289,-0.00072184444 +11652000,mag,0.19800001,-0.077000014,0.42800003 +11652000,baro,487.5582 +11652000,airspeed,2.5793755,2.5191805 +11656000,imu,-0.22098549,0.15152241,-9.941028,-0.0003216287,-0.0033745621,-0.0011074565 +11656000,airspeed,2.9055886,2.8377867 +11656000,mag,0.19800001,-0.077000014,0.42800003 +11656000,baro,487.52533 +11660000,imu,-0.18113062,0.19481482,-9.903579,0.002217457,-0.0022611916,-0.0049006604 +11660000,airspeed,2.408399,2.352199 +11660000,baro,487.52533 +11660000,mag,0.19800001,-0.077000014,0.42800003 +11664000,mag,0.19800001,-0.077000014,0.42800003 +11664000,imu,-0.15711641,0.22749801,-9.903209,-0.00079727644,-0.0025422154,-0.004857196 +11664000,baro,487.48306 +11664000,airspeed,2.0195434,1.9724219 +11668000,imu,-0.18044002,0.17348205,-9.919468,-0.006616788,-0.00435014,0.00032554579 +11668000,mag,0.19800001,-0.077000014,0.42800003 +11668000,baro,487.4502 +11668000,airspeed,3.7236226,3.6367471 +11676000,baro,487.50656 +11676000,imu,-0.22597258,0.16972077,-9.994271,0.006395634,-0.008384984,0.0012969022 +11676000,airspeed,2.0150511,1.9680319 +11676000,mag,0.19800001,-0.077000014,0.42800003 +11680000,imu,-0.23031263,0.18803324,-9.946818,0.00020610997,-0.0058583347,0.005976415 +11680000,mag,0.19800001,-0.077000014,0.42800003 +11680000,airspeed,3.6725085,3.5867817 +11680000,baro,487.6568 +11684000,baro,487.67557 +11684000,imu,-0.20031387,0.28339943,-9.933047,-0.003595091,-0.0008237885,-0.00014405802 +11684000,airspeed,-2.3202047,-2.2660418 +11688000,mag,0.19800001,-0.077000014,0.42800003 +11688000,airspeed,-3.5582192,-3.4751558 +11692000,mag,0.201,-0.08000001,0.42900002 +11692000,baro,487.44553 +11692000,imu,-0.1980536,0.20577139,-9.965529,-0.0034303158,-0.008363903,0.0027952555 +11696000,mag,0.201,-0.08000001,0.42900002 +11696000,imu,-0.20404175,0.2664632,-9.931142,-0.0035802028,-0.0058023976,0.0019069035 +11696000,airspeed,3.7920992,3.7036262 +11696000,baro,487.4502 +11700000,mag,0.201,-0.08000001,0.42900002 +11700000,baro,487.4502 +11700000,imu,-0.21372879,0.27138558,-9.904918,-0.0010904938,-0.0054063895,0.0028926325 +11700000,airspeed,2.6230004,2.5618033 +11704000,airspeed,-2.3853016,-2.32965 +11704000,baro,487.4596 +11704000,imu,-0.20966922,0.2186052,-9.9025135,-0.00072802725,-0.0050763655,0.0004740234 +11704000,mag,0.201,-0.08000001,0.42900002 +11712000,imu,-0.28811967,0.28292346,-10.013034,-0.0072862934,-0.006042822,-0.0052639088 +11712000,baro,487.66617 +11712000,mag,0.201,-0.08000001,0.42900002 +11712000,airspeed,2.1734567,2.122721 +11716000,baro,487.68027 +11716000,imu,-0.24038737,0.24645717,-9.987674,0.0037919283,-0.0052510207,0.0012777355 +11716000,mag,0.201,-0.08000001,0.42900002 +11716000,airspeed,-3.6017318,-3.5176518 +11720000,imu,-0.15772611,0.18131499,-9.933535,0.0025468834,-0.0070280437,0.00029267732 +11720000,airspeed,-2.3057435,-2.2519233 +11724000,baro,487.638 +11724000,mag,0.201,-0.08000001,0.42900002 +11724000,imu,-0.16190763,0.1352007,-9.905563,0.0010020549,-0.0043564173,0.00059736846 +11724000,airspeed,-0.45731577,-0.4466412 +11728000,airspeed,-2.6975815,-2.6345992 +11728000,mag,0.201,-0.08000001,0.42900002 +11728000,baro,487.7413 +11728000,imu,-0.2183644,0.22032511,-9.948188,-0.0038121792,-0.0033310652,0.0018339497 +11732000,airspeed,1.1962982,1.1683695 +11732000,mag,0.201,-0.08000001,0.42900002 +11732000,imu,-0.1636287,0.22971705,-9.932659,-0.0053583477,-0.0052427608,0.00078875216 +11732000,baro,487.70844 +11736000,baro,487.70844 +11736000,mag,0.201,-0.08000001,0.42900002 +11736000,airspeed,3.3688803,3.2902308 +11736000,imu,-0.15553443,0.195522,-9.952199,-0.0016126401,-0.005407562,0.0033483398 +11740000,baro,487.6521 +11740000,mag,0.19800001,-0.07800001,0.42700002 +11740000,imu,-0.17695631,0.18057466,-9.9704075,-0.0015893646,-0.0012964386,0.00018618985 +11740000,airspeed,1.6221683,1.5843029 +11744000,baro,487.6521 +11744000,mag,0.19800001,-0.07800001,0.42700002 +11744000,airspeed,-2.0355077,-1.9879938 +11744000,imu,-0.20810233,0.2053173,-10.02081,8.060485e-05,0.0001635836,0.0009629 +11752000,imu,-0.19459166,0.17817383,-9.9175005,-0.0029272498,-0.007047717,-0.0038999463 +11752000,airspeed,-3.0494192,-2.9782612 +11752000,baro,487.52063 +11752000,mag,0.19800001,-0.07800001,0.42700002 +11756000,imu,-0.23945348,0.21308492,-9.929059,-0.0035854701,-0.008657277,-0.0042990954 +11756000,airspeed,-3.3770373,-3.298205 +11760000,airspeed,-2.4000854,-2.3440716 +11760000,mag,0.19800001,-0.07800001,0.42700002 +11760000,imu,-0.24790674,0.186269,-9.921146,-0.0055339956,-0.009800061,-0.0028111762 +11760000,baro,487.57697 +11768000,mag,0.19800001,-0.07800001,0.42700002 +11768000,imu,-0.16376287,0.16934305,-9.907474,0.0027984318,-0.01065188,0.0015817957 +11768000,airspeed,-3.5556839,-3.4726913 +11768000,baro,487.62393 +11772000,imu,-0.1282595,0.17210944,-9.897659,0.0027067827,-0.01005513,0.005431016 +11772000,airspeed,-2.0581355,-2.0100994 +11772000,baro,487.60513 +11772000,mag,0.19800001,-0.07800001,0.42700002 +11780000,imu,-0.20717126,0.20057346,-9.842319,-0.0058482,-0.008218,-0.0020012583 +11780000,airspeed,-1.0877651,-1.0623673 +11780000,mag,0.19800001,-0.07800001,0.42700002 +11780000,baro,487.75537 +11784000,mag,0.19800001,-0.07800001,0.42700002 +11784000,baro,487.50186 +11788000,imu,-0.21158513,0.12685731,-9.891366,-0.00026258008,-0.00204603,-0.0059047528 +11788000,airspeed,4.8299775,4.717236 +11792000,baro,487.50656 +11792000,mag,0.19900002,-0.07900001,0.42600003 +11792000,airspeed,3.112511,3.0398836 +11792000,imu,-0.22474033,0.17356734,-9.902475,0.00020041964,-0.0020865663,-0.0023692145 +11796000,baro,487.50656 +11796000,airspeed,4.126345,4.0300612 +11796000,imu,-0.17946626,0.17664067,-9.9190855,-0.00015948666,-0.009169777,0.000246703 +11796000,mag,0.19900002,-0.07900001,0.42600003 +11800000,airspeed,2.4703863,2.4127233 +11800000,imu,-0.15620627,0.19002496,-9.906661,0.00054791424,-0.009821732,-0.00030776308 +11800000,baro,487.638 +11800000,mag,0.19900002,-0.07900001,0.42600003 +11804000,imu,-0.19075307,0.18522716,-9.933786,0.00065813836,-0.0041706627,-0.004517 +11804000,baro,487.638 +11804000,airspeed,1.7300534,1.689671 +11804000,mag,0.19900002,-0.07900001,0.42600003 +11812000,gps,488101.0,85456074.0,473977507.0,0.01,0.01,-0.01 +11812000,mag,0.19900002,-0.07900001,0.42600003 +11812000,baro,487.66617 +11812000,airspeed,3.242712,3.1670167 +11812000,imu,-0.24279949,0.16463357,-9.921115,-0.0073091374,-0.0036551382,-0.0018611421 +11816000,imu,-0.14184754,0.20723756,-9.955384,-0.0028015892,-0.0039895135,-0.009845729 +11816000,mag,0.19900002,-0.07900001,0.42600003 +11816000,baro,487.51123 +11816000,airspeed,-2.256702,-2.204043 +11820000,airspeed,-2.216477,-2.1647415 +11820000,imu,-0.17134039,0.19507717,-9.94039,-0.00053965335,-0.0079095755,-0.010528023 +11820000,baro,487.62863 +11820000,mag,0.19900002,-0.07900001,0.42600003 +11824000,imu,-0.22472315,0.16999066,-9.94691,-0.004686903,-0.006739333,-0.005173892 +11824000,mag,0.19900002,-0.07900001,0.42600003 +11824000,baro,487.8211 +11824000,airspeed,1.5749863,1.5382067 +11828000,airspeed,-2.345424,-2.2906528 +11832000,imu,-0.22786348,0.16781566,-10.005361,-0.0072892834,-0.0053085387,0.0031334017 +11832000,airspeed,2.3249586,2.270681 +11832000,baro,487.70844 +11832000,mag,0.19900002,-0.07900001,0.42600003 +11836000,imu,-0.23157094,0.17296633,-9.994954,-0.001615022,-0.004887838,0.0012489419 +11836000,airspeed,-1.9821471,-1.9358726 +11836000,mag,0.19900002,-0.07900001,0.42600003 +11836000,baro,487.70844 +11840000,imu,-0.20841861,0.22619057,-9.905886,-0.0006021975,-0.009348895,-0.0011572067 +11840000,mag,0.19900002,-0.07900001,0.42600003 +11840000,baro,487.5629 +11840000,airspeed,2.3184426,2.264336 +11844000,airspeed,2.4454293,2.3883405 +11844000,baro,487.69434 +11844000,imu,-0.13422957,0.17560484,-9.855107,-0.0021053792,-0.007641688,-0.0038849523 +11844000,mag,0.19800001,-0.08300001,0.43 +11848000,mag,0.19800001,-0.08300001,0.43 +11848000,imu,-0.16696256,0.1346796,-9.963551,-0.00085644325,-0.0062105698,0.00019770017 +11848000,airspeed,0.79848766,0.7798475 +11848000,baro,487.68027 +11856000,baro,487.5629 +11856000,imu,-0.23400529,0.22912668,-9.913677,-0.0019764267,-0.004726054,0.0010195735 +11856000,airspeed,-2.7448006,-2.6807442 +11856000,mag,0.19800001,-0.08300001,0.43 +11860000,mag,0.19800001,-0.08300001,0.43 +11860000,baro,487.6568 +11864000,airspeed,-2.1354752,-2.0856354 +11864000,imu,-0.14467491,0.16071911,-9.938842,-0.0017760479,-0.0029611893,0.0008068376 +11868000,imu,-0.123710796,0.19572352,-9.982023,-0.0044687777,0.0030948066,0.008655778 +11868000,airspeed,-1.3009483,-1.2705792 +11868000,mag,0.19800001,-0.08300001,0.43 +11868000,baro,487.67087 +11872000,baro,487.71313 +11872000,mag,0.19800001,-0.08300001,0.43 +11872000,imu,-0.05491358,0.15567745,-10.02034,-0.0032753325,0.00408832,0.011864815 +11872000,airspeed,-3.0706117,-2.9989252 +11880000,baro,487.6333 +11880000,imu,-0.2636411,0.24962193,-9.969834,-0.008115771,-0.00076429115,-0.0072540347 +11880000,mag,0.19800001,-0.08300001,0.43 +11880000,airspeed,-0.55188507,-0.5390033 +11884000,baro,487.52533 +11884000,airspeed,3.2213886,3.1462176 +11884000,imu,-0.2146743,0.2461508,-9.98689,-0.0036904865,-0.0034363347,-0.011061197 +11884000,mag,0.19800001,-0.08300001,0.43 +11892000,imu,-0.08124495,0.2872469,-10.005399,0.0027385617,-0.004480883,0.0009556401 +11892000,mag,0.19800001,-0.08300001,0.43 +11892000,airspeed,-0.6977279,-0.68144906 +11892000,baro,487.4596 +11896000,airspeed,1.3919472,1.35945 +11896000,imu,-0.19855958,0.2727497,-9.9147,0.0012414992,-0.009700851,-6.9765934e-05 +11896000,mag,0.2,-0.08000001,0.42600003 +11896000,baro,487.71783 +11900000,mag,0.2,-0.08000001,0.42600003 +11900000,baro,487.71783 +11900000,airspeed,2.3080575,2.2541723 +11900000,imu,-0.2648851,0.21784835,-9.84789,0.00071264093,-0.006932317,-0.0007385193 +11908000,mag,0.2,-0.08000001,0.42600003 +11908000,airspeed,0.7811521,0.76291865 +11908000,imu,-0.20229289,0.18728712,-9.927948,-0.00464227,-0.010985641,-0.0029325902 +11908000,baro,487.638 +11912000,baro,487.5441 +11912000,mag,0.2,-0.08000001,0.42600003 +11912000,airspeed,-2.2403874,-2.1881056 +11912000,imu,-0.19172509,0.18436441,-9.964408,-0.010021085,-0.0072642714,-0.011143744 +11916000,mag,0.2,-0.08000001,0.42600003 +11916000,imu,-0.24203454,0.17119963,-9.918009,-0.005593251,-0.011242383,-0.0075704115 +11916000,baro,487.5535 +11916000,airspeed,-1.5492024,-1.513049 +11920000,airspeed,1.8140186,1.771672 +11920000,imu,-0.21643694,0.23163825,-9.902834,0.0032849738,-0.01232743,0.0020995883 +11920000,mag,0.2,-0.08000001,0.42600003 +11920000,baro,487.67557 +11924000,mag,0.2,-0.08000001,0.42600003 +11924000,airspeed,-1.5951962,-1.5579579 +11924000,baro,487.67557 +11924000,imu,-0.2140091,0.17114331,-9.949721,-0.0010307502,-0.00780757,1.4139458e-05 +11928000,imu,-0.23013398,0.16699862,-9.899038,-0.0029319664,-0.0030347419,0.0005861925 +11928000,mag,0.2,-0.08000001,0.42600003 +11928000,airspeed,-3.119422,-3.0466306 +11928000,baro,487.52063 +11932000,airspeed,-2.3640249,-2.308834 +11932000,baro,487.71313 +11932000,imu,-0.21419172,0.2065558,-9.8627205,-0.0023340129,-0.004121134,0.0038778558 +11932000,mag,0.2,-0.08000001,0.42600003 +11936000,airspeed,-0.7321166,-0.7150228 +11940000,baro,487.6568 +11940000,mag,0.2,-0.08000001,0.42600003 +11940000,imu,-0.16438057,0.27134567,-9.93133,-0.003609616,-0.002178102,-0.0054267333 +11944000,airspeed,2.3215973,2.2674046 +11944000,imu,-0.16373299,0.28215367,-9.937706,-0.008793563,-0.0064514107,-4.3444703e-05 +11944000,mag,0.2,-0.08000001,0.42600003 +11944000,baro,487.6568 +11948000,baro,487.69434 +11948000,imu,-0.10156466,0.23631327,-9.886604,-0.0058944016,-0.005202562,0.0032896437 +11948000,airspeed,2.4789746,2.4211028 +11948000,mag,0.2,-0.08000001,0.42600003 +11952000,imu,-0.14380908,0.19826144,-9.953802,0.0012534336,0.0004728188,0.0021741353 +11952000,airspeed,-1.8029166,-1.76083 +11952000,baro,487.67087 +11952000,mag,0.19900002,-0.08100001,0.43100002 +11956000,airspeed,1.7983626,1.7563838 +11956000,baro,487.6568 +11956000,mag,0.19900002,-0.08100001,0.43100002 +11960000,imu,-0.15766983,0.18867734,-9.930119,-8.813824e-05,-0.00934059,0.0037714918 +11964000,airspeed,-2.3483381,-2.2935236 +11964000,mag,0.19900002,-0.08100001,0.43100002 +11964000,baro,487.638 +11964000,imu,-0.1720491,0.05707934,-9.929757,-0.0030170856,-0.012441637,-0.0015247341 +11968000,imu,-0.2445592,0.13503326,-9.936763,-0.005642998,-0.007835672,-0.0034625556 +11968000,airspeed,-1.9642819,-1.918432 +11968000,mag,0.19900002,-0.08100001,0.43100002 +11968000,baro,487.638 +11976000,imu,-0.16623871,0.19964495,-9.989615,-0.0020380705,-0.0078022657,0.00016027254 +11976000,baro,487.66617 +11976000,airspeed,-4.6969953,-4.587351 +11976000,mag,0.19900002,-0.08100001,0.43100002 +11980000,baro,487.4737 +11980000,airspeed,-1.9952676,-1.948714 +11980000,mag,0.19900002,-0.08100001,0.43100002 +11980000,imu,-0.16578425,0.21841867,-9.965511,0.0022244211,-0.007232238,0.0027269647 +11984000,imu,-0.14560626,0.2203764,-9.928841,0.001866922,-0.008056484,0.00014204952 +11984000,airspeed,-3.3906505,-3.3115396 +11984000,mag,0.19900002,-0.08100001,0.43100002 +11984000,baro,487.4737 +11988000,airspeed,-3.8254807,-3.7361965 +11988000,mag,0.19900002,-0.08100001,0.43100002 +11988000,baro,487.59576 +11988000,imu,-0.13267168,0.12742361,-10.020634,-0.0031201025,-0.0062775705,-0.00020562913 +11992000,imu,-0.17921415,0.13200176,-10.0011015,-0.002770789,-0.0018888948,0.004467265 +11992000,mag,0.19900002,-0.08100001,0.43100002 +11992000,baro,487.60983 +11992000,airspeed,-3.3430414,-3.265015 +11996000,baro,487.5629 +11996000,mag,0.19900002,-0.08100001,0.43100002 +11996000,airspeed,-2.5601828,-2.5004349 +11996000,imu,-0.20124736,0.17859277,-9.890624,0.003193518,-0.006527805,0.0027084236 +12000000,baro,487.62863 +12000000,mag,0.20300001,-0.08300001,0.42900002 +12000000,airspeed,-3.6362233,-3.5513494 +12000000,imu,-0.21830542,0.16091266,-9.873818,0.003662134,-0.010498625,0.0010148358 +12004000,imu,-0.2507113,0.16614676,-9.931482,0.0025346936,-0.0090899905,0.0004697689 +12004000,mag,0.20300001,-0.08300001,0.42900002 +12004000,baro,487.6474 +12004000,airspeed,-0.86001474,-0.83993995 +12008000,imu,-0.20519128,0.15808506,-10.005292,0.0013231668,-0.013132816,-0.00042372374 +12008000,baro,487.52533 +12008000,airspeed,3.8374536,3.7479057 +12008000,mag,0.20300001,-0.08300001,0.42900002 +12012000,gps,488105.0,85456074.0,473977508.0,0.0,0.01,0.01 +12016000,airspeed,3.3120506,3.2347207 +12016000,imu,-0.20260137,0.21289624,-10.048448,-0.006515942,-0.004933334,0.0038756125 +12016000,mag,0.20300001,-0.08300001,0.42900002 +12016000,baro,487.746 +12020000,airspeed,-2.6081169,-2.5472224 +12020000,baro,487.746 +12020000,mag,0.20300001,-0.08300001,0.42900002 +12020000,imu,-0.19371204,0.16764927,-10.002259,-0.005393899,-0.010071277,0.0020138558 +12024000,mag,0.20300001,-0.08300001,0.42900002 +12024000,imu,-0.22531754,0.13527863,-9.905031,0.0011469907,-0.011950182,-0.0012566497 +12024000,baro,487.6521 +12024000,airspeed,-2.202751,-2.1513329 +12028000,baro,487.71783 +12028000,airspeed,2.6838064,2.6211493 +12028000,imu,-0.20008513,0.14250821,-9.92306,0.002167309,-0.009264927,-0.0016388668 +12028000,mag,0.20300001,-0.08300001,0.42900002 +12036000,mag,0.20300001,-0.08300001,0.42900002 +12036000,airspeed,3.6520686,3.566858 +12036000,baro,487.4737 +12036000,imu,-0.20222123,0.24150856,-9.887318,-0.009214167,-0.0055963313,-0.0004000672 +12040000,mag,0.20300001,-0.08300001,0.42900002 +12040000,airspeed,-0.5198477,-0.50771326 +12040000,imu,-0.19135517,0.20655195,-9.868229,-0.004173653,-0.0005626693,0.0009841475 +12040000,baro,487.6474 +12044000,baro,487.57697 +12044000,airspeed,-1.5014362,-1.4663955 +12044000,mag,0.20300001,-0.08300001,0.42900002 +12044000,imu,-0.14654724,0.210724,-9.912928,-0.001834906,-0.005997557,0.0013571891 +12048000,baro,487.638 +12048000,airspeed,-2.8261666,-2.760199 +12048000,imu,-0.13715392,0.23273805,-9.921519,-0.0003248665,-0.00708998,-0.004335125 +12048000,mag,0.20300001,-0.08300001,0.42900002 +12056000,mag,0.19800001,-0.08000001,0.42700002 +12056000,airspeed,-2.5718358,-2.5118215 +12056000,imu,-0.20628467,0.16418953,-9.940449,0.0006138641,-0.010892849,0.0065956293 +12056000,baro,487.52533 +12060000,airspeed,1.7689524,1.727668 +12060000,imu,-0.20532528,0.20785491,-9.885492,0.0010562119,-0.009503701,0.00637866 +12064000,mag,0.19800001,-0.08000001,0.42700002 +12064000,baro,487.61923 +12064000,imu,-0.23432757,0.19374342,-9.866465,0.0010918448,-0.008074448,0.0022771484 +12064000,airspeed,2.9577682,2.8887322 +12072000,baro,487.4643 +12072000,airspeed,-1.1493973,-1.1225798 +12072000,mag,0.19800001,-0.08000001,0.42700002 +12072000,imu,-0.16743456,0.13241412,-9.93356,0.0028046293,0.00040727016,0.0028877321 +12076000,baro,487.4643 +12076000,airspeed,-0.8383225,-0.818763 +12076000,mag,0.19800001,-0.08000001,0.42700002 +12076000,imu,-0.16640387,0.15679444,-9.9287195,0.002132346,-0.0025475414,0.0023467112 +12080000,imu,-0.19915976,0.17950329,-9.914263,0.0034889493,-0.0052015437,-0.0015548747 +12080000,baro,487.60043 +12080000,mag,0.19800001,-0.08000001,0.42700002 +12080000,airspeed,0.68989205,0.6737903 +12084000,airspeed,3.6438537,3.5588078 +12084000,mag,0.19800001,-0.08000001,0.42700002 +12084000,imu,-0.18227492,0.20065238,-9.8835125,0.006295628,-0.0058539314,-0.003093736 +12084000,baro,487.60043 +12088000,baro,487.76007 +12088000,airspeed,1.5495427,1.5133624 +12088000,mag,0.19800001,-0.08000001,0.42700002 +12088000,imu,-0.2104792,0.12035272,-9.911864,-0.00052977307,-0.002521038,-0.0019345975 +12092000,airspeed,4.4264107,4.3230853 +12092000,imu,-0.2106295,0.08492448,-9.972749,-0.004914846,-0.0036346316,0.00032419077 +12092000,mag,0.19800001,-0.08000001,0.42700002 +12092000,baro,487.6568 +12096000,baro,487.6568 +12096000,imu,-0.15552893,0.12676215,-9.931612,0.0005244306,-0.008738759,0.003225894 +12096000,mag,0.19800001,-0.08000001,0.42700002 +12096000,airspeed,2.2744641,2.2213714 +12100000,baro,487.6521 +12100000,mag,0.19800001,-0.08000001,0.42700002 +12104000,imu,-0.17887697,0.26783442,-9.961445,0.0030218177,-0.0041586165,0.0019120604 +12104000,airspeed,1.8008677,1.7588322 +12108000,baro,487.4596 +12108000,mag,0.201,-0.08500001,0.42600003 +12108000,airspeed,1.444189,1.4104941 +12108000,imu,-0.1397551,0.16649264,-10.005751,-0.0005689764,-0.003276376,-0.0051234406 +12112000,mag,0.201,-0.08500001,0.42600003 +12112000,baro,487.4596 +12112000,airspeed,3.259746,3.1836917 +12112000,imu,-0.19257535,0.1371531,-9.979472,0.0046376064,-0.00750456,-0.002730933 +12116000,baro,487.6521 +12116000,mag,0.201,-0.08500001,0.42600003 +12120000,imu,-0.16069485,0.101600476,-9.896043,-0.0009914013,-0.006291855,0.0018777635 +12120000,airspeed,-2.882999,-2.8156865 +12120000,mag,0.201,-0.08500001,0.42600003 +12120000,baro,487.746 +12128000,mag,0.201,-0.08500001,0.42600003 +12128000,airspeed,1.959967,1.9142399 +12128000,imu,-0.2702359,0.20087266,-9.804378,-0.0063041267,-0.011804106,-0.0010573989 +12128000,baro,487.44553 +12132000,mag,0.201,-0.08500001,0.42600003 +12132000,imu,-0.23885684,0.19397737,-9.899727,-0.0011398775,-0.0110131055,-0.0029815352 +12132000,airspeed,-2.4695535,-2.411928 +12132000,baro,487.51123 +12140000,airspeed,1.8280876,1.7854109 +12140000,mag,0.201,-0.08500001,0.42600003 +12140000,imu,-0.13398449,0.30821753,-9.987785,-0.0015857088,-0.00029951488,-0.006416277 +12140000,baro,487.69434 +12144000,mag,0.201,-0.08500001,0.42600003 +12144000,airspeed,-1.9638331,-1.9179912 +12144000,imu,-0.1454529,0.19998163,-10.056668,0.0039862804,-0.002441278,-0.010032504 +12144000,baro,487.66147 +12148000,mag,0.201,-0.08500001,0.42600003 +12148000,airspeed,3.4517713,3.3712337 +12148000,imu,-0.17705926,0.2035907,-10.012119,0.0029421472,-0.0060179546,-0.0059366543 +12148000,baro,487.47836 +12152000,imu,-0.17156088,0.20960762,-9.939573,-0.002138806,-0.0069539123,-0.0024254539 +12152000,mag,0.201,-0.08500001,0.42600003 +12152000,airspeed,3.1633537,3.089527 +12152000,baro,487.57697 +12156000,mag,0.2,-0.07900001,0.42900002 +12156000,imu,-0.1715981,0.18817832,-9.93978,-0.00020457232,-0.011343422,0.0039669615 +12156000,airspeed,3.2632146,3.1870463 +12156000,baro,487.6333 +12160000,baro,487.6333 +12160000,mag,0.2,-0.07900001,0.42900002 +12160000,imu,-0.15361275,0.13606113,-10.00496,0.0013450523,-0.0058280486,0.002013507 +12160000,airspeed,2.4808981,2.4229903 +12164000,imu,-0.13090336,0.099552,-10.002331,0.003706518,-0.0052385572,-0.0033395328 +12164000,airspeed,-2.311484,-2.2575166 +12164000,mag,0.2,-0.07900001,0.42900002 +12164000,baro,487.7366 +12168000,imu,-0.18888146,0.1900871,-9.957805,0.0024789742,-0.010020881,-0.0013881278 +12168000,airspeed,2.308151,2.2542732 +12168000,mag,0.2,-0.07900001,0.42900002 +12168000,baro,487.6474 +12176000,imu,-0.24786714,0.182388,-9.910492,-0.004789706,-0.0013183276,-0.0036994927 +12176000,mag,0.2,-0.07900001,0.42900002 +12176000,airspeed,0.76227117,0.7444752 +12176000,baro,487.71313 +12180000,airspeed,-2.2756069,-2.2225013 +12180000,mag,0.2,-0.07900001,0.42900002 +12180000,baro,487.5535 +12180000,imu,-0.2609965,0.18381493,-9.924496,0.0022490069,-0.0027642532,-0.006286686 +12188000,baro,487.52063 +12188000,imu,-0.2605349,0.12080443,-9.971514,-0.00016680517,-0.012591115,0.006412542 +12188000,mag,0.2,-0.07900001,0.42900002 +12188000,airspeed,-0.7760347,-0.7579259 +12192000,baro,487.70374 +12192000,airspeed,4.304782,4.204284 +12192000,imu,-0.19016884,0.11624721,-9.942191,7.356273e-05,-0.005302675,0.0036774778 +12192000,mag,0.2,-0.07900001,0.42900002 +12196000,airspeed,-0.9076355,-0.8864465 +12196000,mag,0.2,-0.07900001,0.42900002 +12196000,baro,487.69904 +12196000,imu,-0.2407982,0.1904074,-9.906608,-0.0052283886,-0.004560564,-0.0004624642 +12204000,airspeed,2.781391,2.7164617 +12204000,mag,0.2,-0.07900001,0.42900002 +12204000,baro,487.68027 +12204000,imu,-0.19576094,0.19913925,-9.906463,-0.004057262,-0.006004267,0.0011088025 +12208000,imu,-0.27912667,0.19774821,-9.995202,-0.001504526,-0.0049835783,0.005926163 +12208000,airspeed,0.33675283,0.32888895 +12212000,mag,0.19900002,-0.08300001,0.43100002 +12212000,baro,487.8164 +12212000,gps,488104.0,85456074.0,473977508.0,0.0,0.0,0.0 +12212000,imu,-0.26242626,0.20289636,-10.010959,0.0053403103,-0.0044298293,0.007423268 +12212000,airspeed,-0.82368326,-0.80444854 +12216000,imu,-0.16524306,0.19366555,-9.944605,0.0037509073,-0.0071183452,-0.0031597232 +12216000,baro,487.52063 +12216000,mag,0.19900002,-0.08300001,0.43100002 +12216000,airspeed,-2.85919,-2.792471 +12224000,baro,487.68497 +12224000,airspeed,-1.6302147,-1.5921581 +12224000,mag,0.19900002,-0.08300001,0.43100002 +12224000,imu,-0.24687734,0.23756252,-9.922818,-0.004320632,-0.002368839,0.005668955 +12228000,imu,-0.18628822,0.09752608,-10.009554,-0.003011491,-0.00085038424,0.002056699 +12228000,mag,0.19900002,-0.08300001,0.43100002 +12228000,baro,487.68497 +12228000,airspeed,-3.7185934,-3.6317844 +12236000,mag,0.19900002,-0.08300001,0.43100002 +12236000,baro,487.5676 +12236000,airspeed,3.7813668,3.6931188 +12236000,imu,-0.22030503,0.253453,-9.890639,0.0013729915,-0.0074518784,0.0003538035 +12244000,airspeed,1.8976898,1.8533908 +12244000,baro,487.67087 +12244000,mag,0.19900002,-0.08300001,0.43100002 +12244000,imu,-0.24875437,0.17121167,-9.890624,-0.0051573846,-0.012672701,-0.0024403594 +12248000,imu,-0.2994838,0.22840135,-9.894386,-0.00089888414,-0.007168749,0.00026381557 +12248000,baro,487.68967 +12248000,airspeed,-2.2916694,-2.2381709 +12248000,mag,0.19900002,-0.08300001,0.43100002 +12252000,imu,-0.26228416,0.17786512,-9.949216,-0.003968026,-0.0007372086,-0.005324283 +12256000,imu,-0.2694998,0.17604825,-9.887402,-0.0013370514,-0.007412842,-0.009563683 +12256000,baro,487.5629 +12256000,airspeed,2.9248312,2.8565733 +12256000,mag,0.19900002,-0.08300001,0.43100002 +12260000,imu,-0.29232204,0.23293005,-9.897265,-0.0028427984,-0.0052381135,-0.004352031 +12260000,airspeed,-2.3138306,-2.2598171 +12260000,baro,487.67087 +12260000,mag,0.201,-0.08100001,0.42900002 +12268000,airspeed,0.7846664,0.76635706 +12268000,imu,-0.15228409,0.21794191,-9.985751,-0.002923406,-0.0075543164,-0.003786829 +12268000,baro,487.50656 +12268000,mag,0.201,-0.08100001,0.42900002 +12272000,mag,0.201,-0.08100001,0.42900002 +12272000,imu,-0.19834682,0.15082225,-10.022184,-0.003222798,-0.0015612505,-0.0056538754 +12272000,baro,487.69904 +12272000,airspeed,-3.6833441,-3.5973556 +12276000,imu,-0.1923904,0.13075794,-10.057534,-0.0026835394,-0.0043486324,-0.001096975 +12276000,baro,487.69904 +12276000,airspeed,-4.9488606,-4.8333282 +12276000,mag,0.201,-0.08100001,0.42900002 +12284000,airspeed,-3.982943,-3.8899672 +12284000,imu,-0.2873,0.15123445,-9.955761,-0.010362213,-0.007388221,-0.0036982612 +12284000,baro,487.67087 +12284000,mag,0.201,-0.08100001,0.42900002 +12288000,imu,-0.26399606,0.18318245,-9.917773,-0.008801746,-0.006250003,-0.006201284 +12288000,baro,487.4737 +12288000,mag,0.201,-0.08100001,0.42900002 +12288000,airspeed,2.19222,2.141071 +12296000,mag,0.201,-0.08100001,0.42900002 +12296000,baro,487.68027 +12296000,imu,-0.1874971,0.14679305,-9.9290285,0.003806145,0.0014971889,0.00013080247 +12296000,airspeed,-3.6364386,-3.551549 +12304000,baro,487.49246 +12304000,imu,-0.22016795,0.1625567,-9.905347,-0.004597006,-0.005425084,0.0030914703 +12304000,mag,0.201,-0.08100001,0.42900002 +12304000,airspeed,-1.6663043,-1.6274242 +12308000,baro,487.6568 +12308000,mag,0.201,-0.08100001,0.42900002 +12308000,airspeed,3.212782,3.1377861 +12308000,imu,-0.17761625,0.19380413,-9.877073,-0.00061526475,-0.006117546,-0.0007826734 +12316000,imu,-0.12559146,0.18485643,-9.896349,-0.0010998652,-0.007952589,-0.000705104 +12316000,mag,0.201,-0.08200001,0.42800003 +12316000,airspeed,-1.5598534,-1.5234481 +12316000,baro,487.59106 +12320000,mag,0.201,-0.08200001,0.42800003 +12320000,airspeed,2.6579323,2.595884 +12320000,baro,487.68497 +12320000,imu,-0.15362619,0.19162238,-9.931601,-0.0023144707,-0.0056994953,-4.1119827e-05 +12328000,airspeed,1.5603234,1.5239171 +12328000,imu,-0.1538864,0.20920043,-9.857553,0.00080256077,-0.009704284,-0.004116998 +12328000,baro,487.47836 +12328000,mag,0.201,-0.08200001,0.42800003 +12332000,baro,487.47836 +12332000,airspeed,-2.258651,-2.205951 +12332000,mag,0.201,-0.08200001,0.42800003 +12332000,imu,-0.20800069,0.19662102,-9.853348,0.001957578,-0.0048482,-0.001002648 +12340000,mag,0.201,-0.08200001,0.42800003 +12340000,airspeed,2.9553707,2.8863754 +12340000,baro,487.70844 +12340000,imu,-0.20254435,0.15859675,-9.920429,-0.00035676398,-0.0045685857,-0.0024665426 +12344000,airspeed,-3.0031838,-2.933076 +12344000,baro,487.68497 +12344000,mag,0.201,-0.08200001,0.42800003 +12344000,imu,-0.26668972,0.22728746,-9.906502,0.006735522,-0.0046896385,-0.004806659 +12352000,imu,-0.1846795,0.12550053,-10.028567,-0.0020002432,-0.008493411,-0.00073207036 +12352000,airspeed,2.0881994,2.0394602 +12352000,baro,487.61453 +12352000,mag,0.201,-0.08200001,0.42800003 +12356000,airspeed,2.3780165,2.3224978 +12356000,baro,487.7225 +12356000,imu,-0.24590379,0.09780236,-9.981196,0.0018093033,-0.004015588,0.000947175 +12356000,mag,0.201,-0.08200001,0.42800003 +12360000,baro,487.7225 +12360000,airspeed,1.2321906,1.2034231 +12360000,imu,-0.30649245,0.08779721,-10.010297,-0.00022273036,-0.0042742183,0.0010223546 +12360000,mag,0.201,-0.08200001,0.42800003 +12364000,airspeed,-1.9709293,-1.9249192 +12364000,mag,0.19800001,-0.08100001,0.42700002 +12364000,imu,-0.22505541,0.11105973,-9.945978,-0.0065934435,-0.002758313,-0.004880675 +12364000,baro,487.68027 +12368000,mag,0.19800001,-0.08100001,0.42700002 +12368000,airspeed,-1.4463742,-1.4126105 +12368000,baro,487.67087 +12368000,imu,-0.19727254,0.11544843,-9.90133,-0.00057459297,-0.0011826422,-0.005174694 +12372000,airspeed,-3.341858,-3.263835 +12372000,mag,0.19800001,-0.08100001,0.42700002 +12372000,baro,487.7319 +12372000,imu,-0.17729731,0.17665291,-9.948817,0.000587675,-0.0029113465,-0.0044113398 +12376000,airspeed,-2.9277587,-2.8594213 +12376000,mag,0.19800001,-0.08100001,0.42700002 +12376000,baro,487.62863 +12376000,imu,-0.17349313,0.2737053,-9.938541,-0.01017993,-0.007554274,-0.0020839307 +12380000,baro,487.58636 +12380000,airspeed,-2.589747,-2.5293055 +12380000,imu,-0.2420513,0.21415292,-9.96385,-0.0062459926,-0.00828872,0.0046576406 +12380000,mag,0.19800001,-0.08100001,0.42700002 +12384000,imu,-0.21490137,0.16148497,-9.970719,-0.00698667,-0.007020774,0.0023792249 +12384000,baro,487.6521 +12384000,mag,0.19800001,-0.08100001,0.42700002 +12384000,airspeed,-0.5557313,-0.5427591 +12388000,mag,0.19800001,-0.08100001,0.42700002 +12388000,baro,487.70844 +12392000,imu,-0.14503407,0.094329335,-9.873019,0.0017884452,-0.0052063004,0.0009430595 +12392000,airspeed,1.9226035,1.8777403 +12396000,baro,487.58636 +12396000,imu,-0.146634,0.16625045,-9.912745,-0.003884464,-0.006396982,0.004965318 +12396000,mag,0.19800001,-0.08100001,0.42700002 +12396000,airspeed,-2.716831,-2.6534235 +12400000,baro,487.59576 +12400000,mag,0.19800001,-0.08100001,0.42700002 +12400000,imu,-0.21899979,0.17684002,-9.935435,-0.009627947,-0.00524923,0.0022066175 +12400000,airspeed,2.5468702,2.4874284 +12404000,mag,0.19800001,-0.08100001,0.42700002 +12404000,imu,-0.21667139,0.1819084,-9.909927,-0.008364098,-0.005426358,-0.0024690737 +12404000,baro,487.70844 +12404000,airspeed,-4.855919,-4.742554 +12408000,imu,-0.2320215,0.26928064,-9.885528,-0.0036852811,-0.011398632,-0.0035939175 +12408000,airspeed,1.0620531,1.0372672 +12408000,baro,487.5676 +12408000,mag,0.19800001,-0.08100001,0.42700002 +12412000,airspeed,1.8261871,1.7835556 +12412000,imu,-0.23503532,0.27158338,-9.865653,-0.00216438,-0.0101228645,0.0008515917 +12412000,gps,488106.0,85456074.0,473977508.0,0.01,-0.01,0.02 +12412000,baro,487.68497 +12412000,mag,0.19800001,-0.08100001,0.42700002 +12416000,imu,-0.23399489,0.1966151,-9.854338,0.002529236,-0.0064257244,-0.0031872685 +12416000,baro,487.57227 +12416000,mag,0.201,-0.08100001,0.42800003 +12416000,airspeed,3.4653194,3.384446 +12420000,airspeed,1.8186486,1.7762051 +12424000,imu,-0.20220053,0.1645315,-9.901372,0.004032394,-0.001892849,0.0013421378 +12424000,baro,487.52533 +12424000,mag,0.201,-0.08100001,0.42800003 +12424000,airspeed,3.117263,3.0445213 +12428000,imu,-0.22984824,0.20347945,-9.917562,0.0039596185,-0.0030695312,5.0657614e-05 +12428000,baro,487.6568 +12428000,mag,0.201,-0.08100001,0.42800003 +12428000,airspeed,-2.622491,-2.5612743 +12432000,imu,-0.15714236,0.22292618,-9.867676,0.003931019,-0.010147794,0.0017748731 +12432000,baro,487.6568 +12432000,airspeed,-3.2818754,-3.2052667 +12432000,mag,0.201,-0.08100001,0.42800003 +12436000,airspeed,-4.6030765,-4.4956474 +12436000,imu,-0.15866098,0.18959534,-9.799727,0.0032338866,-0.012481585,0.0038113026 +12436000,mag,0.201,-0.08100001,0.42800003 +12436000,baro,487.58167 +12440000,mag,0.201,-0.08100001,0.42800003 +12440000,airspeed,1.3091656,1.278603 +12440000,baro,487.69434 +12440000,imu,-0.21163289,0.1562184,-9.920726,0.0012977959,-0.005497733,0.0053162654 +12448000,airspeed,-2.3543336,-2.2993917 +12448000,baro,487.5488 +12448000,imu,-0.2641079,0.16683634,-9.888467,-0.0033155172,-0.008769415,-0.00063241326 +12448000,mag,0.201,-0.08100001,0.42800003 +12452000,baro,487.66147 +12452000,imu,-0.18357274,0.10717723,-9.9261055,-0.001963208,-0.008072275,-0.002276954 +12452000,airspeed,3.1462784,3.0728345 +12452000,mag,0.201,-0.08100001,0.42800003 +12456000,airspeed,-2.8466258,-2.7801785 +12456000,mag,0.201,-0.08100001,0.42800003 +12456000,baro,487.6521 +12456000,imu,-0.0857354,0.1499816,-9.961271,-0.006036404,-0.0047711385,-0.0034767704 +12460000,airspeed,2.1002245,2.0512059 +12460000,mag,0.201,-0.08100001,0.42800003 +12460000,baro,487.60513 +12460000,imu,-0.15428409,0.207343,-9.963354,-0.0063074864,-0.0033552607,0.0015388806 +12468000,imu,-0.14114776,0.1855007,-9.889162,0.003879547,-0.0056711603,0.0037044042 +12468000,airspeed,-4.958704,-4.8429832 +12468000,baro,487.5535 +12468000,mag,0.2,-0.08300001,0.42700002 +12472000,airspeed,-2.8482497,-2.7817836 +12472000,imu,-0.18499562,0.19754523,-9.918867,0.0021308996,-0.0050252317,0.007761357 +12476000,imu,-0.16350326,0.2303087,-9.944163,-0.0005839992,-0.004773466,0.005391632 +12476000,mag,0.2,-0.08300001,0.42700002 +12476000,baro,487.53473 +12476000,airspeed,-1.9730945,-1.9270507 +12484000,imu,-0.3571869,0.22266011,-9.894818,-0.008517111,0.0027845388,-0.0018791384 +12484000,mag,0.2,-0.08300001,0.42700002 +12484000,airspeed,2.686874,2.6241388 +12484000,baro,487.75537 +12488000,imu,-0.31138602,0.20047835,-9.868953,-0.00013475657,0.0032081602,0.0015068189 +12488000,mag,0.2,-0.08300001,0.42700002 +12488000,airspeed,0.6816145,0.6657074 +12488000,baro,487.5629 +12496000,airspeed,3.2598233,3.1837115 +12496000,mag,0.2,-0.08300001,0.42700002 +12496000,imu,-0.19879052,0.17545973,-9.882426,0.005461874,-0.016220877,-0.0006136048 +12496000,baro,487.7507 +12500000,mag,0.2,-0.08300001,0.42700002 +12500000,airspeed,1.2424822,1.2134777 +12500000,imu,-0.20490105,0.1718128,-9.935148,0.009492227,-0.0047422387,-0.00023744187 +12500000,baro,487.67557 +12508000,mag,0.2,-0.08300001,0.42700002 +12508000,imu,-0.20504074,0.2038704,-9.896263,0.0016630784,-0.0060396595,0.0038560661 +12508000,baro,487.61453 +12508000,airspeed,2.099494,2.050491 +12512000,imu,-0.18101405,0.116409644,-9.918596,-0.000203838,-0.0059579844,0.0030479978 +12512000,mag,0.2,-0.08300001,0.42700002 +12512000,baro,487.66147 +12512000,airspeed,-3.750348,-3.662804 +12516000,mag,0.2,-0.08300001,0.42700002 +12516000,baro,487.66147 +12520000,airspeed,4.319789,4.2189713 +12520000,imu,-0.17815936,0.19300957,-9.968477,0.0025028128,-0.0033811103,0.0027500596 +12524000,baro,487.58167 +12524000,airspeed,0.70969194,0.69312876 +12524000,imu,-0.18295668,0.1695612,-9.913587,0.0021074188,-0.004424413,0.0063393903 +12524000,mag,0.19900002,-0.08000001,0.43 +12528000,airspeed,1.001714,0.978332 +12528000,imu,-0.2209128,0.13667539,-9.915435,0.00022115216,-0.007145587,0.002580081 +12528000,mag,0.19900002,-0.08000001,0.43 +12528000,baro,487.6427 +12532000,mag,0.19900002,-0.08000001,0.43 +12532000,imu,-0.2401028,0.15699852,-9.9659195,-0.005037251,-0.0071960455,-0.0006798476 +12532000,airspeed,1.2715025,1.2418308 +12532000,baro,487.5394 +12536000,imu,-0.19452225,0.1743813,-9.919486,-0.010261004,-0.0073486236,-0.0007712942 +12536000,mag,0.19900002,-0.08000001,0.43 +12536000,baro,487.66617 +12536000,airspeed,-3.1480088,-3.0745244 +12540000,mag,0.19900002,-0.08000001,0.43 +12540000,imu,-0.10154831,0.1495853,-9.938225,-0.010050909,-0.0085967295,0.00017312552 +12540000,airspeed,-2.7198887,-2.6563768 +12540000,baro,487.79294 +12544000,mag,0.19900002,-0.08000001,0.43 +12544000,baro,487.5535 +12544000,airspeed,4.380508,4.2782807 +12544000,imu,-0.119473256,0.16840762,-9.946282,-0.00757272,-0.0043307994,-0.003922823 +12548000,mag,0.19900002,-0.08000001,0.43 +12548000,imu,-0.18136245,0.17795366,-9.922291,-0.0029444878,-0.0022278477,-0.0010652834 +12548000,baro,487.5535 +12548000,airspeed,-1.1264344,-1.100147 +12556000,imu,-0.19075139,0.1962486,-9.888559,0.0014793361,-0.0010458353,0.0062560085 +12556000,airspeed,3.4954815,3.4139085 +12556000,baro,487.5535 +12556000,mag,0.19900002,-0.08000001,0.43 +12560000,mag,0.19900002,-0.08000001,0.43 +12560000,baro,487.57697 +12560000,airspeed,-2.715785,-2.6524036 +12560000,imu,-0.20915331,0.11218285,-9.916101,-0.0017911175,0.0038558256,0.001991838 +12568000,mag,0.19900002,-0.08000001,0.43 +12568000,baro,487.67557 +12568000,imu,-0.12679514,0.11786629,-9.928726,0.004445563,-0.007110519,-0.0020396928 +12568000,airspeed,2.5296552,2.4706028 +12572000,imu,-0.125553,0.11574009,-9.945529,-0.0035114218,-0.010085026,-0.002623051 +12572000,baro,487.67557 +12572000,airspeed,1.358425,1.3267138 +12572000,mag,0.19900002,-0.08000001,0.43 +12580000,imu,-0.1496021,0.21305096,-10.026089,-0.0010259342,-0.0021570818,-0.00045756786 +12580000,airspeed,3.5455766,3.4628413 +12580000,baro,487.52063 +12580000,mag,0.2,-0.084000014,0.42800003 +12588000,mag,0.2,-0.084000014,0.42800003 +12588000,airspeed,3.8333635,3.7439067 +12588000,baro,487.5488 +12588000,imu,-0.23858649,0.18369168,-9.961022,-0.0035246036,-0.005841861,0.0012963951 +12592000,baro,487.67557 +12592000,imu,-0.25957686,0.18352222,-9.9511795,-0.0020318986,8.590224e-05,0.0026288962 +12592000,airspeed,-3.036093,-2.965218 +12592000,mag,0.2,-0.084000014,0.42800003 +12596000,mag,0.2,-0.084000014,0.42800003 +12596000,imu,-0.22893879,0.18254843,-9.932502,0.006197462,-0.008021484,0.0034004608 +12596000,airspeed,-2.009543,-1.9626287 +12596000,baro,487.70844 +12600000,landed,1.0 +12600000,mag,0.2,-0.084000014,0.42800003 +12600000,baro,487.79294 +12604000,imu,-0.21722323,0.20701902,-9.9152,0.0030393444,-0.0083748065,-0.0007315217 +12604000,airspeed,2.2525764,2.1999867 +12604000,mag,0.2,-0.084000014,0.42800003 +12604000,baro,487.71783 +12612000,baro,487.57697 +12612000,mag,0.2,-0.084000014,0.42800003 +12612000,imu,-0.2639094,0.08528707,-10.037004,-0.00026925752,-0.0074769873,-0.008463363 +12612000,gps,488100.0,85456073.0,473977508.0,0.02,-0.02,0.02 +12612000,airspeed,-3.1002707,-3.0279157 +12620000,baro,487.60513 +12620000,imu,-0.14098434,0.19873509,-9.87184,-0.0033830625,-0.0018891919,0.0037717926 +12620000,airspeed,-2.800334,-2.7349746 +12620000,mag,0.2,-0.084000014,0.42800003 +12624000,airspeed,4.103602,4.007807 +12624000,imu,-0.20951948,0.19722247,-9.831934,-0.00286742,-0.003628898,1.2598826e-05 +12628000,mag,0.19900002,-0.08000001,0.42900002 +12628000,imu,-0.16095552,0.16996059,-9.910712,-0.0063599986,-0.009096441,-0.0028237412 +12628000,baro,487.68027 +12628000,airspeed,-0.58730286,-0.5735927 +12632000,imu,-0.16888492,0.13797894,-9.932454,-0.008597599,-0.001768742,-0.0023896447 +12632000,mag,0.19900002,-0.08000001,0.42900002 +12632000,baro,487.44083 +12632000,airspeed,-2.0501134,-2.0022836 +12640000,imu,-0.22671212,0.27134597,-9.9674635,0.004820816,-0.0050880173,-0.00051564444 +12640000,baro,487.70844 +12640000,airspeed,3.2508454,3.1749518 +12640000,mag,0.19900002,-0.08000001,0.42900002 +12648000,mag,0.19900002,-0.08000001,0.42900002 +12648000,airspeed,-3.616877,-3.5324724 +12648000,baro,487.5488 +12648000,imu,-0.1677802,0.17348364,-9.980782,0.00083315454,-0.0057405597,0.0010234817 +12652000,baro,487.638 +12652000,imu,-0.13518156,0.1458345,-9.938361,0.0012943025,-0.008490348,0.0027629544 +12652000,mag,0.19900002,-0.08000001,0.42900002 +12652000,airspeed,2.8629272,2.7961016 +12656000,baro,487.57697 +12656000,imu,-0.2438996,0.15229759,-9.941558,0.0007366606,-0.006394158,0.00498422 +12656000,mag,0.19900002,-0.08000001,0.42900002 +12656000,airspeed,1.8276466,1.7849927 +12660000,imu,-0.19995987,0.17022394,-9.982827,-0.002954649,-0.0023407799,-0.00017577637 +12660000,mag,0.19900002,-0.08000001,0.42900002 +12660000,airspeed,2.698576,2.635596 +12660000,baro,487.57697 +12664000,imu,-0.16824673,0.20439203,-9.972408,-0.0005426679,-0.003419011,-0.0047415947 +12664000,baro,487.43613 +12664000,mag,0.19900002,-0.08000001,0.42900002 +12664000,airspeed,3.998763,3.9054735 +12668000,imu,-0.21237159,0.18105131,-9.981203,-0.0048239604,-0.007948463,0.00020648749 +12668000,mag,0.19900002,-0.08000001,0.42900002 +12668000,baro,487.69904 +12668000,airspeed,-2.9279823,-2.8596275 +12672000,mag,0.19900002,-0.08000001,0.42900002 +12672000,baro,487.6521 +12672000,airspeed,3.6542165,3.5689173 +12672000,imu,-0.20586465,0.120053135,-9.918638,-0.0028152172,-0.008685654,0.0013562464 +12676000,airspeed,2.5703888,2.5103755 +12676000,baro,487.746 +12676000,mag,0.2,-0.07800001,0.42700002 +12676000,imu,-0.20410758,0.13402927,-9.877486,0.0043327445,-0.007318011,-0.005216307 +12680000,mag,0.2,-0.07800001,0.42700002 +12680000,imu,-0.16951089,0.15472417,-9.919953,0.001875746,-0.01212863,-0.0037472688 +12680000,airspeed,-4.3259225,-4.224921 +12680000,baro,487.746 +12684000,mag,0.2,-0.07800001,0.42700002 +12684000,baro,487.6427 +12688000,mag,0.2,-0.07800001,0.42700002 +12688000,airspeed,2.1313019,2.081552 +12688000,baro,487.6521 +12688000,imu,-0.24595368,0.11540447,-9.939628,0.006086856,-0.0074932333,-0.0028854175 +12692000,imu,-0.1609595,0.22566645,-9.906197,0.004559405,-0.002214412,0.0023318091 +12692000,airspeed,-3.8002813,-3.7115815 +12696000,mag,0.2,-0.07800001,0.42700002 +12696000,baro,487.75537 +12696000,airspeed,-2.7359722,-2.6720905 +12696000,imu,-0.11780699,0.23777834,-9.878595,-0.00021105402,0.0006084347,-0.0006374062 +12700000,imu,-0.23235448,0.21120195,-9.938443,0.002588705,-0.0067176484,0.001900841 +12700000,airspeed,-1.5731716,-1.5364597 +12700000,mag,0.2,-0.07800001,0.42700002 +12700000,baro,487.5441 +12704000,airspeed,2.921507,2.85333 +12704000,baro,487.5441 +12704000,imu,-0.29845738,0.21818505,-9.92846,-0.0007807603,-0.01014449,0.0028773027 +12704000,mag,0.2,-0.07800001,0.42700002 +12708000,airspeed,2.3697987,2.314482 +12708000,imu,-0.20254603,0.19587561,-9.876254,-0.0037719887,-0.0035673138,-0.0020858203 +12712000,mag,0.2,-0.07800001,0.42700002 +12712000,baro,487.59106 +12716000,imu,-0.17682162,0.22946161,-9.887413,-0.0043061534,-0.006277375,-4.0946485e-05 +12716000,mag,0.2,-0.07800001,0.42700002 +12716000,baro,487.5535 +12716000,airspeed,-1.1522874,-1.1253966 +12724000,airspeed,-1.489425,-1.4546572 +12724000,imu,-0.18409167,0.22468218,-9.931741,-0.009011408,-0.0075522177,-0.0045010196 +12724000,baro,487.66147 +12724000,mag,0.2,-0.07800001,0.42700002 +12728000,mag,0.202,-0.08000001,0.42800003 +12728000,imu,-0.19596475,0.18238743,-9.940947,-0.008369106,-0.00564503,-0.0009328144 +12728000,baro,487.50656 +12728000,airspeed,-2.8817017,-2.8144596 +12732000,imu,-0.17144954,0.18765512,-9.914611,-0.008603115,-0.00416524,-0.0054211854 +12736000,baro,487.6474 +12736000,imu,-0.14584133,0.16246179,-9.911287,-0.0013198516,-0.0024802417,-0.012586125 +12736000,airspeed,-2.4621618,-2.404689 +12736000,mag,0.202,-0.08000001,0.42800003 +12740000,mag,0.202,-0.08000001,0.42800003 +12740000,baro,487.5629 +12740000,airspeed,-3.1842506,-3.1099386 +12740000,imu,-0.22556077,0.07462314,-9.932497,0.0049665538,-0.0049787555,-0.0037865283 +12748000,airspeed,3.1472535,3.0737956 +12748000,baro,487.61453 +12748000,imu,-0.16170433,0.27685484,-9.938321,-0.0043936376,0.004780185,0.0073960656 +12748000,mag,0.202,-0.08000001,0.42800003 +12752000,imu,-0.16052847,0.2491345,-9.958882,0.0011015249,-0.0025332521,0.0038361968 +12752000,mag,0.202,-0.08000001,0.42800003 +12752000,airspeed,-1.4986072,-1.4636216 +12752000,baro,487.69904 +12760000,imu,-0.14806582,0.1794823,-9.951013,-0.010066733,-0.0063663363,-0.0012902964 +12760000,airspeed,0.76122785,0.74345714 +12760000,mag,0.202,-0.08000001,0.42800003 +12760000,baro,487.68967 +12764000,baro,487.60513 +12764000,airspeed,-2.1970398,-2.1457615 +12764000,imu,-0.20704138,0.20701377,-9.945991,-0.0053484514,-0.00029291894,-0.0032213253 +12764000,mag,0.202,-0.08000001,0.42800003 +12772000,imu,-0.17554887,0.1744124,-9.952978,-0.0010427918,-0.0033173868,-0.0023756248 +12772000,baro,487.42673 +12772000,mag,0.202,-0.08000001,0.42800003 +12772000,airspeed,-2.8514266,-2.7849047 +12776000,airspeed,3.0081484,2.9379497 +12776000,baro,487.5441 +12776000,mag,0.202,-0.08000001,0.42800003 +12776000,imu,-0.21248262,0.18727094,-9.993602,-0.0015518859,0.0027387133,-0.0029345693 +12780000,mag,0.2,-0.08100001,0.43100002 +12780000,imu,-0.23778945,0.16381131,-9.983561,-0.0019918438,-0.0033986096,-0.0012333663 +12780000,airspeed,1.3685408,1.3366029 +12780000,baro,487.5582 +12784000,baro,487.5582 +12784000,mag,0.2,-0.08100001,0.43100002 +12784000,airspeed,-0.5142176,-0.50221723 +12784000,imu,-0.23937899,0.1723339,-9.91323,0.0032856537,-0.003002243,-0.00081630616 +12788000,airspeed,-2.888789,-2.821375 +12788000,imu,-0.22995993,0.14481032,-9.944367,0.0073347418,-0.0006241531,-0.0040151235 +12788000,baro,487.5488 +12788000,mag,0.2,-0.08100001,0.43100002 +12792000,baro,487.6333 +12792000,imu,-0.20687972,0.24797183,-9.949794,0.003719217,-0.0019465773,-0.0053023044 +12792000,airspeed,-0.6287981,-0.61412096 +12792000,mag,0.2,-0.08100001,0.43100002 +12796000,baro,487.6333 +12796000,mag,0.2,-0.08100001,0.43100002 +12796000,imu,-0.19780608,0.22372635,-9.925161,-0.0015111008,-0.0030705952,-0.0043683355 +12796000,airspeed,1.2969145,1.2666425 +12800000,mag,0.2,-0.08100001,0.43100002 +12800000,baro,487.52533 +12804000,imu,-0.22635464,0.14202634,-9.983794,-0.0015677186,-0.0074181305,-0.0039438703 +12804000,airspeed,3.3948264,3.3156078 +12808000,airspeed,-1.4083796,-1.375508 +12808000,baro,487.60983 +12808000,mag,0.2,-0.08100001,0.43100002 +12808000,imu,-0.14780779,0.12571095,-9.9409075,-0.004679647,-0.0043183183,-0.002572855 +12812000,gps,488107.0,85456074.0,473977508.0,0.0,0.0,0.01 +12816000,imu,-0.18943967,0.19831195,-9.938373,-0.0063948836,-0.0037314573,-0.00029519357 +12816000,mag,0.2,-0.08100001,0.43100002 +12816000,baro,487.60983 +12816000,airspeed,-3.925044,-3.8334332 +12820000,mag,0.2,-0.08100001,0.43100002 +12820000,baro,487.47836 +12820000,airspeed,2.330324,2.2759519 +12820000,imu,-0.14916867,0.16346602,-9.909965,-0.0054830625,-0.0014126358,-0.0023350727 +12828000,imu,-0.19005278,0.20047791,-9.954993,-0.0024490152,-0.0056819064,-0.00010648429 +12828000,baro,487.53473 +12828000,airspeed,-0.8447763,-0.82506263 +12828000,mag,0.2,-0.08100001,0.43100002 +12836000,mag,0.201,-0.07900001,0.42700002 +12836000,airspeed,2.7613518,2.6969035 +12836000,imu,-0.19281459,0.18492013,-9.965601,-0.005412564,-0.0056117205,-0.00066195923 +12836000,baro,487.59576 +12844000,mag,0.201,-0.07900001,0.42700002 +12844000,imu,-0.24461257,0.14780493,-9.987447,0.004671013,-0.009960808,-0.0027129578 +12844000,airspeed,-2.7095838,-2.6463525 +12844000,baro,487.5441 +12848000,imu,-0.23766671,0.13743141,-9.938655,0.0007440382,-0.006891459,0.0015857732 +12848000,airspeed,0.4343746,0.4242321 +12848000,baro,487.77417 +12848000,mag,0.201,-0.07900001,0.42700002 +12852000,baro,487.77417 +12852000,imu,-0.2550337,0.13115518,-9.922176,0.0017216742,-0.009169222,0.0037937996 +12852000,mag,0.201,-0.07900001,0.42700002 +12852000,airspeed,3.1571443,3.083426 +12856000,airspeed,-1.310015,-1.2794402 +12856000,baro,487.59576 +12856000,mag,0.201,-0.07900001,0.42700002 +12856000,imu,-0.23076159,0.09589621,-9.920379,0.0019886694,-0.006301192,0.001539437 +12860000,airspeed,3.23692,3.1613727 +12860000,baro,487.59576 +12860000,mag,0.201,-0.07900001,0.42700002 +12860000,imu,-0.17082237,0.12331019,-9.925611,0.0025576814,0.0010447656,-0.0018223849 +12868000,airspeed,2.1549826,2.1046858 +12868000,imu,-0.24961628,0.18079704,-9.830564,0.0025098014,-0.0075172987,-0.002485104 +12868000,baro,487.60513 +12868000,mag,0.201,-0.07900001,0.42700002 +12872000,mag,0.201,-0.07900001,0.42700002 +12872000,imu,-0.22747755,0.21482262,-9.907969,-0.00029872824,-0.004349009,-0.0044553326 +12872000,baro,487.638 +12872000,airspeed,-1.862698,-1.819219 +12876000,imu,-0.25527996,0.23473413,-9.9551,-0.00083736517,0.0014849487,-0.0015483125 +12876000,baro,487.69904 +12876000,airspeed,2.90535,2.837524 +12876000,mag,0.201,-0.07900001,0.42700002 +12880000,baro,487.68027 +12880000,imu,-0.25609735,0.2362705,-9.947146,-0.0011193017,-0.0045584766,0.00030067252 +12880000,mag,0.201,-0.07900001,0.42700002 +12880000,airspeed,-2.7793643,-2.7144823 +12884000,airspeed,2.8837745,2.816462 +12884000,imu,-0.16994685,0.24909279,-9.93,-0.00036860353,-0.009474697,-0.0026305374 +12884000,baro,487.638 +12884000,mag,0.201,-0.08100001,0.42900002 +12888000,mag,0.201,-0.08100001,0.42900002 +12888000,baro,487.638 +12888000,airspeed,2.2432847,2.1909223 +12888000,imu,-0.16051991,0.2631963,-9.887875,0.002103984,-0.005260909,-0.0033280533 +12892000,mag,0.201,-0.08100001,0.42900002 +12892000,baro,487.66617 +12892000,airspeed,1.4315194,1.3981026 +12892000,imu,-0.24341078,0.18916507,-9.920668,-0.0012221849,-0.0029917776,-0.0008011761 +12896000,airspeed,-3.363199,-3.2847087 +12896000,baro,487.57227 +12896000,mag,0.201,-0.08100001,0.42900002 +12896000,imu,-0.23311162,0.116536364,-9.973113,-0.0058970978,-0.006540767,-0.0015739592 +12900000,baro,487.57227 +12900000,airspeed,-2.4793694,-2.421506 +12900000,imu,-0.13210942,0.17685299,-10.040352,-0.0014432089,-0.0077826334,-0.0017591078 +12900000,mag,0.201,-0.08100001,0.42900002 +12904000,airspeed,1.8667042,1.8231277 +12904000,imu,-0.11367845,0.2672509,-10.054586,0.00052657095,-0.013013533,-0.0005546666 +12904000,mag,0.201,-0.08100001,0.42900002 +12904000,baro,487.67557 +12908000,mag,0.201,-0.08100001,0.42900002 +12908000,baro,487.71313 +12908000,airspeed,3.924231,3.8326154 +12908000,imu,-0.2706578,0.26036695,-9.957747,-0.0029397106,-0.014806458,-0.0012269337 +12916000,baro,487.39856 +12916000,mag,0.201,-0.08100001,0.42900002 +12916000,imu,-0.17827743,0.1827994,-9.88925,-0.0021975003,-0.0056264987,-0.0028378987 +12916000,airspeed,2.856666,2.7900267 +12924000,baro,487.58636 +12924000,imu,-0.19894339,0.15467359,-9.824754,-0.0048751957,-0.0036725458,0.0015138455 +12924000,airspeed,-2.3884714,-2.3327277 +12924000,mag,0.201,-0.08100001,0.42900002 +12928000,mag,0.201,-0.08100001,0.42900002 +12928000,airspeed,1.7954687,1.7535496 +12928000,imu,-0.17130315,0.15110621,-9.913551,-0.0024096244,-0.0021042302,-0.0050948653 +12928000,baro,487.7319 +12932000,airspeed,3.4820526,3.4007921 +12932000,mag,0.201,-0.08100001,0.42900002 +12932000,imu,-0.13846368,0.17459099,-9.961796,-0.005176645,-0.0070446357,-0.0024979108 +12932000,baro,487.5535 +12936000,imu,-0.19226904,0.12712948,-9.992666,-0.0044139517,-0.0044470145,-0.0013998848 +12936000,mag,0.201,-0.08100001,0.42900002 +12936000,airspeed,2.2725363,2.219474 +12936000,baro,487.76477 +12940000,mag,0.19700001,-0.07800001,0.42700002 +12940000,baro,487.62393 +12940000,imu,-0.16001554,0.13563302,-9.991778,0.00013522597,-0.005507884,-0.008110869 +12940000,airspeed,3.3348503,3.257012 +12944000,baro,487.69904 +12944000,imu,-0.1089561,0.1758881,-9.86963,0.0045753126,-0.01066466,-0.0062420545 +12944000,mag,0.19700001,-0.07800001,0.42700002 +12944000,airspeed,-3.1132243,-3.040545 +12948000,airspeed,-3.1778753,-3.1036844 +12948000,mag,0.19700001,-0.07800001,0.42700002 +12948000,imu,-0.18689007,0.15415043,-9.888975,0.0034333135,-0.0063516586,-0.0047149854 +12948000,baro,487.71313 +12952000,airspeed,2.4454865,2.388415 +12952000,imu,-0.22829841,0.12037219,-9.972244,0.0035943382,0.0008618011,-0.002691359 +12952000,mag,0.19700001,-0.07800001,0.42700002 +12952000,baro,487.5676 +12956000,airspeed,-1.2851108,-1.2551196 +12956000,imu,-0.17778371,0.16895121,-9.987236,0.004751686,0.007670659,0.002101933 +12956000,mag,0.19700001,-0.07800001,0.42700002 +12956000,baro,487.5676 +12960000,airspeed,-3.2847748,-3.2081068 +12960000,imu,-0.13664502,0.23372187,-9.8936205,-0.002838792,-0.0009913325,0.001458272 +12960000,baro,487.61453 +12960000,mag,0.19700001,-0.07800001,0.42700002 +12964000,airspeed,1.4631768,1.4290296 +12964000,imu,-0.2345097,0.23777048,-9.907478,-0.0044532926,-0.005612993,-0.0012596986 +12964000,baro,487.5676 +12964000,mag,0.19700001,-0.07800001,0.42700002 +12968000,baro,487.41733 +12968000,mag,0.19700001,-0.07800001,0.42700002 +12972000,airspeed,-3.4164667,-3.3367648 +12972000,imu,-0.17546535,0.22489862,-9.929735,-0.008376207,-0.008397523,-0.0034551043 +12972000,baro,487.41733 +12972000,mag,0.19700001,-0.07800001,0.42700002 +12976000,airspeed,1.9286821,1.8836695 +12976000,baro,487.58167 +12976000,imu,-0.09295881,0.24314453,-9.910507,-0.0053157886,-0.0071997265,-0.0041644736 +12976000,mag,0.19700001,-0.07800001,0.42700002 +12980000,baro,487.78824 +12980000,mag,0.19700001,-0.07800001,0.42700002 +12984000,mag,0.19700001,-0.07800001,0.42700002 +12984000,baro,487.78824 +12984000,airspeed,1.028925,1.004899 +12984000,imu,-0.18198068,0.12769738,-9.957971,-0.001345078,-0.011993755,-0.00016382821 +12988000,imu,-0.1697334,0.12392502,-9.903507,0.0037483939,-0.01258936,0.006823542 +12988000,baro,487.5488 +12988000,mag,0.2,-0.07900001,0.43100002 +12988000,airspeed,-1.5951799,-1.5579542 +12992000,mag,0.2,-0.07900001,0.43100002 +12992000,baro,487.5629 +12992000,airspeed,0.8788394,0.8583296 +12992000,imu,-0.15206441,0.18572131,-9.856772,0.002993306,-0.010237948,0.0059522856 +12996000,airspeed,2.0682979,2.0200293 +12996000,imu,-0.1990454,0.1882603,-9.908461,0.0020183031,-0.007482266,-0.0021083634 +12996000,baro,487.5629 +12996000,mag,0.2,-0.07900001,0.43100002 +13000000,imu,-0.18973222,0.16629468,-9.964367,0.0045400145,-0.0026287455,-0.0050627124 +13000000,baro,487.469 +13000000,mag,0.2,-0.07900001,0.43100002 +13000000,airspeed,2.4775424,2.4197364 +13004000,baro,487.67557 +13004000,imu,-0.16622306,0.22643901,-9.947338,-0.0011507845,-0.0006430614,-0.0010201287 +13004000,airspeed,-3.3576505,-3.2792692 +13004000,mag,0.2,-0.07900001,0.43100002 +13008000,mag,0.2,-0.07900001,0.43100002 +13008000,airspeed,1.8564138,1.8130746 +13008000,baro,487.70844 +13008000,imu,-0.15417546,0.25389007,-9.935669,-0.003978279,-0.0032373953,0.0018968758 +13012000,mag,0.2,-0.07900001,0.43100002 +13012000,baro,487.70844 +13012000,airspeed,1.7573756,1.7163485 +13012000,imu,-0.1929898,0.19325094,-9.913965,-0.0029714347,-0.0014253715,0.0021996724 +13012000,gps,488104.0,85456073.0,473977508.0,0.0,-0.01,0.01 +13016000,baro,487.61453 +13016000,mag,0.2,-0.07900001,0.43100002 +13016000,imu,-0.17968209,0.16868606,-9.925404,-0.0009145126,-0.0042470503,-0.0011477928 +13016000,airspeed,4.417472,4.314367 +13020000,baro,487.71313 +13020000,mag,0.2,-0.07900001,0.43100002 +13024000,imu,-0.18125905,0.21268182,-9.910445,0.0037232817,-0.0059524546,0.006542352 +13024000,baro,487.7319 +13024000,airspeed,-2.7671633,-2.7025578 +13024000,mag,0.2,-0.07900001,0.43100002 +13028000,imu,-0.253635,0.23492485,-9.9684305,0.0013766594,-0.0008179359,0.0076544145 +13028000,baro,487.7319 +13028000,airspeed,-2.0775926,-2.0290868 +13028000,mag,0.2,-0.07900001,0.43100002 +13036000,airspeed,1.7486229,1.7078133 +13036000,mag,0.2,-0.07900001,0.43100002 +13036000,baro,487.57697 +13036000,imu,-0.24061583,0.20110272,-9.956092,-0.005265538,0.0035879996,-0.0016238289 +13040000,mag,0.201,-0.08000001,0.42600003 +13040000,airspeed,1.5531757,1.51692 +13040000,imu,-0.16792226,0.21206157,-9.90461,-7.398151e-05,-0.0025446592,0.003650295 +13040000,baro,487.6568 +13044000,airspeed,-1.2429749,-1.2139602 +13044000,imu,-0.08172763,0.1872007,-9.943996,0.00087789,-0.0034500626,0.0037549941 +13048000,mag,0.201,-0.08000001,0.42600003 +13048000,baro,487.638 +13048000,imu,-0.19223723,0.15342835,-10.019713,-0.00450644,-0.0019424813,-0.00014414996 +13048000,airspeed,-1.8708899,-1.82722 +13052000,imu,-0.22394747,0.14758828,-9.959689,-0.0045282594,-0.005913473,-0.0033335986 +13052000,baro,487.58636 +13052000,mag,0.201,-0.08000001,0.42600003 +13052000,airspeed,-3.5322428,-3.449805 +13060000,imu,-0.18508528,0.20538472,-9.932487,0.0035244264,-0.0037286088,-0.0046083974 +13060000,baro,487.48776 +13060000,mag,0.201,-0.08000001,0.42600003 +13060000,airspeed,1.0254269,1.0015006 +13064000,imu,-0.16119793,0.15615071,-9.970073,-0.0029721898,-0.007889759,0.00036909987 +13064000,mag,0.201,-0.08000001,0.42600003 +13064000,airspeed,-1.7592378,-1.7181736 +13064000,baro,487.6427 +13072000,airspeed,-1.4303545,-1.3969822 +13072000,imu,-0.15204993,0.19231637,-10.022076,-0.0045941444,-0.0015387986,0.00057078287 +13072000,mag,0.201,-0.08000001,0.42600003 +13072000,baro,487.4643 +13076000,imu,-0.21347348,0.13826655,-10.030287,-0.00035675295,-0.005102068,0.0030684636 +13076000,airspeed,2.8954856,2.8279057 +13076000,mag,0.201,-0.08000001,0.42600003 +13076000,baro,487.60513 +13080000,airspeed,-2.155988,-2.1056635 +13080000,imu,-0.18472451,0.1289033,-9.981372,0.0015507949,-0.004465103,0.00023275144 +13084000,airspeed,2.221215,2.1693666 +13084000,mag,0.201,-0.08000001,0.42600003 +13084000,imu,-0.18915232,0.14921574,-9.898407,0.0031255179,-0.006415085,-0.0013050236 +13084000,baro,487.6474 +13088000,baro,487.60983 +13088000,imu,-0.21783905,0.168627,-9.926459,-0.0003614675,-0.0073089395,-0.00019049426 +13088000,mag,0.201,-0.08000001,0.42600003 +13088000,airspeed,-2.387761,-2.3320308 +13092000,airspeed,-4.122896,-4.0266676 +13092000,imu,-0.12754028,0.099900715,-9.98481,-0.0014430525,-0.005535347,0.0030147722 +13092000,mag,0.201,-0.08000001,0.42600003 +13092000,baro,487.60983 +13096000,mag,0.202,-0.07800001,0.42800003 +13096000,airspeed,3.2841163,3.2074683 +13096000,baro,487.59106 +13096000,imu,-0.07282911,0.06013138,-10.01388,0.0065824063,-0.0046740165,-0.0037208751 +13100000,mag,0.202,-0.07800001,0.42800003 +13100000,baro,487.59106 +13100000,imu,-0.11322605,0.13633448,-10.023647,0.0025052058,-0.0049758335,-0.0054321946 +13100000,airspeed,3.0717616,3.0000699 +13104000,baro,487.5488 +13104000,mag,0.202,-0.07800001,0.42800003 +13104000,airspeed,-3.402784,-3.3233752 +13104000,imu,-0.14844288,0.120909974,-9.951797,-0.0031376188,-0.0097549595,-0.0024936707 +13108000,mag,0.202,-0.07800001,0.42800003 +13108000,baro,487.5488 +13108000,imu,-0.19881642,0.1086972,-9.90857,-0.0007251842,-0.00866651,-0.0037529257 +13108000,airspeed,-2.3697166,-2.314416 +13112000,baro,487.68027 +13112000,airspeed,-1.6791974,-1.6399977 +13112000,mag,0.202,-0.07800001,0.42800003 +13112000,imu,-0.1745197,0.17250974,-9.952116,-0.0025016456,-0.0041485545,0.00036116107 +13116000,imu,-0.088280655,0.16591422,-10.013168,-0.0054918537,-0.0048928405,0.000590757 +13116000,airspeed,-5.0305967,-4.9131784 +13116000,mag,0.202,-0.07800001,0.42800003 +13116000,baro,487.62393 +13124000,baro,487.68497 +13124000,imu,-0.17545496,0.2572603,-9.993318,-0.0002895555,-0.009503616,0.0019882491 +13124000,airspeed,3.3592398,3.28082 +13124000,mag,0.202,-0.07800001,0.42800003 +13128000,mag,0.202,-0.07800001,0.42800003 +13128000,baro,487.58636 +13128000,imu,-0.2501942,0.21209545,-10.046387,-0.0052865404,-0.008454147,0.0010796856 +13128000,airspeed,-0.8893964,-0.86863905 +13132000,airspeed,-0.25817347,-0.25214818 +13132000,imu,-0.2696725,0.1635749,-9.991494,-0.0014431945,-0.007314583,0.003293423 +13132000,mag,0.202,-0.07800001,0.42800003 +13132000,baro,487.57697 +13136000,airspeed,1.0054429,0.98197526 +13136000,mag,0.202,-0.07800001,0.42800003 +13136000,imu,-0.1790056,0.19525816,-9.9363785,-0.0025628957,-0.0049321232,0.001203369 +13136000,baro,487.61923 +13144000,mag,0.19800001,-0.08200001,0.43 +13144000,imu,-0.19207999,0.1859575,-9.995122,0.002952991,-0.010759253,-4.8963666e-05 +13144000,airspeed,0.85301876,0.8331025 +13144000,baro,487.7413 +13148000,mag,0.19800001,-0.08200001,0.43 +13148000,imu,-0.2345315,0.19046926,-9.848107,0.0027932134,-0.011137444,0.0063844174 +13148000,baro,487.7413 +13148000,airspeed,1.7034701,1.6636976 +13152000,baro,487.58636 +13152000,mag,0.19800001,-0.08200001,0.43 +13152000,imu,-0.23859172,0.20883976,-9.896522,-0.0003972638,-0.010506525,0.006234212 +13152000,airspeed,-3.4717176,-3.3906925 +13156000,airspeed,4.0317326,3.9376373 +13156000,imu,-0.31693444,0.23434298,-9.937016,0.0009041488,-0.004904669,0.0018312735 +13160000,mag,0.19800001,-0.08200001,0.43 +13160000,imu,-0.24151771,0.25538373,-9.942157,-0.00020524397,-0.0028625424,0.0035686232 +13160000,airspeed,1.414949,1.381913 +13160000,baro,487.7413 +13164000,mag,0.19800001,-0.08200001,0.43 +13164000,imu,-0.19511478,0.2666355,-9.927231,-0.0031633375,-0.0055352994,0.0013072301 +13164000,airspeed,-2.5424557,-2.4831088 +13164000,baro,487.6474 +13168000,baro,487.6474 +13168000,airspeed,-4.0134816,-3.9197974 +13168000,imu,-0.26556197,0.23803385,-9.897615,-0.0024448915,-0.007321074,-0.0055495044 +13168000,mag,0.19800001,-0.08200001,0.43 +13176000,mag,0.19800001,-0.08200001,0.43 +13176000,baro,487.61453 +13176000,imu,-0.13413711,0.24074157,-9.886843,-0.0029009827,-0.0065562143,0.0015960116 +13176000,airspeed,-3.3505874,-3.2723832 +13180000,airspeed,2.4552097,2.397916 +13180000,imu,-0.18231615,0.19882995,-9.83167,-0.0026517485,-0.0016117202,0.0020291726 +13180000,mag,0.19800001,-0.08200001,0.43 +13180000,baro,487.53003 +13184000,imu,-0.29903,0.16476129,-9.892198,0.001531262,0.0035698183,0.00852156 +13184000,mag,0.19800001,-0.08200001,0.43 +13184000,airspeed,-0.98533577,-0.96233255 +13184000,baro,487.69904 +13188000,mag,0.19800001,-0.08200001,0.43 +13188000,baro,487.69904 +13192000,imu,-0.19075948,0.24164486,-9.9021015,0.0023264238,-0.0071016736,0.00057652156 +13192000,airspeed,-1.5524619,-1.5162274 +13196000,baro,487.5488 +13196000,imu,-0.21489322,0.1896588,-9.989156,-0.0052796705,-0.009856639,-0.0006743188 +13196000,airspeed,-2.9682617,-2.8989933 +13196000,mag,0.2,-0.08100001,0.42800003 +13200000,imu,-0.22066256,0.18301716,-9.967081,-0.005268205,-0.003925924,-0.00540411 +13200000,baro,487.5488 +13200000,airspeed,-1.6878247,-1.648437 +13200000,mag,0.2,-0.08100001,0.42800003 +13208000,mag,0.2,-0.08100001,0.42800003 +13208000,airspeed,-2.5767517,-2.5166225 +13208000,imu,-0.22481085,0.14647146,-9.942093,0.008462428,-0.0097409915,-0.006388218 +13208000,baro,487.52533 +13212000,gps,488103.0,85456074.0,473977508.0,0.0,0.0,0.0 +13212000,airspeed,2.530474,2.4714248 +13216000,airspeed,-2.7958295,-2.730583 +13216000,imu,-0.17484766,0.17424344,-9.938413,0.0052814903,-0.0047940826,0.0017480165 +13216000,baro,487.5582 +13216000,mag,0.2,-0.08100001,0.42800003 +13220000,imu,-0.14104776,0.22084804,-9.865853,0.00069294224,-0.0026081172,0.0013646398 +13224000,imu,-0.14755888,0.2488515,-9.897792,-0.005737327,-0.0009413478,-0.00082626357 +13224000,mag,0.2,-0.08100001,0.42800003 +13224000,airspeed,3.0621593,2.9907234 +13224000,baro,487.41733 +13228000,airspeed,1.0535785,1.0289927 +13228000,mag,0.2,-0.08100001,0.42800003 +13228000,imu,-0.2701735,0.21616007,-9.9535055,-0.008866548,-0.004546061,0.002937123 +13228000,baro,487.53003 +13232000,baro,487.7225 +13232000,mag,0.2,-0.08100001,0.42800003 +13236000,baro,487.7319 +13236000,mag,0.2,-0.08100001,0.42800003 +13236000,imu,-0.16170572,0.19531198,-9.91057,0.0014723557,-0.004525551,0.004437327 +13236000,airspeed,-2.1259456,-2.0763106 +13240000,mag,0.2,-0.08100001,0.42800003 +13240000,baro,487.6333 +13244000,baro,487.6333 +13244000,airspeed,0.78749806,0.76911676 +13244000,imu,-0.2144305,0.17688915,-10.033826,-0.00018332551,-0.005260022,-0.00086022593 +13244000,mag,0.2,-0.08100001,0.42800003 +13252000,imu,-0.26240733,0.19471987,-9.891879,-0.0060750837,5.8692043e-05,0.004710075 +13252000,airspeed,-3.0611842,-2.9897153 +13252000,baro,487.7225 +13252000,mag,0.202,-0.08200001,0.42900002 +13256000,airspeed,-2.2811935,-2.2279437 +13256000,imu,-0.21317452,0.1818193,-9.966172,-0.0022772227,0.0009978248,-0.004611371 +13256000,baro,487.6568 +13256000,mag,0.202,-0.08200001,0.42900002 +13260000,mag,0.202,-0.08200001,0.42900002 +13260000,airspeed,3.1054912,3.032974 +13260000,imu,-0.17673147,0.12200778,-10.03689,-0.002548131,0.0012674574,-0.0063912864 +13260000,baro,487.80234 +13264000,imu,-0.17260319,0.1469076,-9.90943,-0.0004574459,-0.0040316475,-0.0028075632 +13264000,airspeed,1.0464121,1.0219871 +13268000,baro,487.67087 +13268000,mag,0.202,-0.08200001,0.42900002 +13268000,airspeed,-1.8257322,-1.7831128 +13268000,imu,-0.18546925,0.14919733,-9.88922,0.0007065471,-0.010249847,-0.00013141322 +13272000,baro,487.62863 +13272000,mag,0.202,-0.08200001,0.42900002 +13272000,airspeed,-4.218117,-4.1196613 +13272000,imu,-0.18958749,0.1813002,-9.9926605,4.3934404e-05,-0.01079396,-0.00353394 +13276000,imu,-0.14128552,0.14852726,-10.035425,-0.0028738908,-0.012744459,-0.0037785128 +13276000,mag,0.202,-0.08200001,0.42900002 +13276000,baro,487.62863 +13276000,airspeed,-1.7457337,-1.7049861 +13280000,imu,-0.14493614,0.12589824,-10.024649,-0.008340074,-0.008950565,-2.4145094e-05 +13280000,mag,0.202,-0.08200001,0.42900002 +13280000,baro,487.77417 +13280000,airspeed,-3.4468057,-3.3663244 +13284000,baro,487.66617 +13284000,mag,0.202,-0.08200001,0.42900002 +13288000,airspeed,3.2697613,3.1934533 +13288000,imu,-0.20504878,0.15604325,-9.952952,-0.0052951425,-0.006006643,0.001087902 +13292000,mag,0.202,-0.08200001,0.42900002 +13292000,baro,487.71783 +13292000,imu,-0.1915982,0.19347167,-9.965324,-0.0072339494,-0.008361625,-0.0007011233 +13292000,airspeed,2.6475692,2.585758 +13296000,imu,-0.22047864,0.2215861,-9.97534,-0.0054405783,-0.007446306,0.0050565135 +13296000,airspeed,2.433306,2.3765032 +13296000,mag,0.202,-0.08200001,0.42900002 +13296000,baro,487.67557 +13300000,airspeed,-2.5620067,-2.5022132 +13300000,mag,0.19700001,-0.08000001,0.42900002 +13300000,baro,487.58167 +13300000,imu,-0.24607225,0.22689733,-9.932242,-0.0022035881,-0.006529978,0.0021279636 +13304000,airspeed,2.6067953,2.5459566 +13304000,baro,487.58167 +13304000,mag,0.19700001,-0.08000001,0.42900002 +13304000,imu,-0.17190427,0.16107316,-9.911277,0.001423161,-0.012100036,0.0033030857 +13308000,airspeed,-3.1384501,-3.06522 +13308000,baro,487.49246 +13308000,mag,0.19700001,-0.08000001,0.42900002 +13312000,baro,487.60043 +13312000,imu,-0.25633144,0.21029782,-10.009452,-0.0017077237,-0.0044660782,0.00018485753 +13312000,mag,0.19700001,-0.08000001,0.42900002 +13312000,airspeed,1.5941603,1.5569533 +13316000,baro,487.60043 +13316000,airspeed,-0.7868467,-0.768482 +13316000,mag,0.19700001,-0.08000001,0.42900002 +13316000,imu,-0.20837669,0.18676189,-9.997202,0.002330626,-0.0057367594,-0.0019412008 +13324000,imu,-0.14639643,0.23698212,-9.963028,0.00795756,-0.0042790566,-0.00015860329 +13324000,airspeed,-4.022558,-3.928662 +13324000,mag,0.19700001,-0.08000001,0.42900002 +13324000,baro,487.6474 +13328000,mag,0.19700001,-0.08000001,0.42900002 +13328000,imu,-0.0933275,0.29247373,-9.957042,0.0008105999,-0.005569509,-0.0050614523 +13328000,baro,487.5488 +13328000,airspeed,2.5481787,2.4887133 +13332000,baro,487.58167 +13332000,imu,-0.15451929,0.2414755,-9.889751,-0.0046357308,-0.005742778,-0.0028721886 +13332000,airspeed,1.4858724,1.4511943 +13332000,mag,0.19700001,-0.08000001,0.42900002 +13336000,baro,487.58167 +13336000,mag,0.19700001,-0.08000001,0.42900002 +13336000,imu,-0.11236618,0.27194133,-9.884815,0.0038454095,-0.010302559,-0.0014318868 +13336000,airspeed,-4.216601,-4.1181917 +13340000,airspeed,1.1046598,1.0788738 +13340000,mag,0.19700001,-0.08000001,0.42900002 +13340000,baro,487.6568 +13340000,imu,-0.15122175,0.25468308,-9.932367,0.0070798965,-0.0074099987,0.0011588052 +13344000,mag,0.19700001,-0.08000001,0.42900002 +13344000,baro,487.5488 +13344000,imu,-0.30421945,0.22258171,-9.957372,0.0077228914,-0.0037815506,0.0010025196 +13344000,airspeed,4.0377965,3.9435692 +13348000,mag,0.19700001,-0.08000001,0.42900002 +13348000,baro,487.5488 +13348000,imu,-0.27873316,0.15781374,-9.944471,0.0017637047,-0.005384685,-0.0043784147 +13348000,airspeed,3.269369,3.1930737 +13352000,mag,0.19900002,-0.08300001,0.42400002 +13352000,baro,487.57697 +13352000,airspeed,-2.4339216,-2.3771183 +13352000,imu,-0.21931438,0.15060043,-9.907669,-0.0051457863,-0.010358391,0.00018606649 +13360000,mag,0.19900002,-0.08300001,0.42400002 +13360000,imu,-0.20221017,0.20539902,-9.966632,-0.001544109,-0.00997204,-0.0067156213 +13360000,baro,487.66147 +13360000,airspeed,-2.1018763,-2.0528119 +13364000,mag,0.19900002,-0.08300001,0.42400002 +13364000,imu,-0.1547054,0.15042509,-9.997375,-0.004325082,-0.0130016515,-0.0041736583 +13364000,airspeed,2.2525861,2.199993 +13364000,baro,487.7413 +13368000,airspeed,-3.3817446,-3.3028078 +13368000,baro,487.6427 +13368000,mag,0.19900002,-0.08300001,0.42400002 +13368000,imu,-0.14559081,0.13970359,-9.89442,-0.002788221,-0.015126892,-0.0019492441 +13376000,mag,0.19900002,-0.08300001,0.42400002 +13376000,baro,487.67087 +13376000,imu,-0.28405404,0.123693064,-9.956809,-0.0016135535,-0.00790868,0.00051526487 +13376000,airspeed,1.6270087,1.5890286 +13380000,baro,487.61923 +13380000,mag,0.19900002,-0.08300001,0.42400002 +13380000,airspeed,2.2930336,2.2395127 +13380000,imu,-0.23501578,0.20066048,-9.965784,-0.0047184075,-0.0034813818,-0.003106185 +13388000,airspeed,2.1290953,2.0794065 +13388000,imu,-0.18845825,0.16232875,-9.878235,-0.001964711,-0.009080766,-0.0050729495 +13388000,baro,487.57227 +13388000,mag,0.19900002,-0.08300001,0.42400002 +13396000,mag,0.19900002,-0.08300001,0.42400002 +13396000,airspeed,-1.9962225,-1.9496456 +13396000,baro,487.47836 +13396000,imu,-0.21877094,0.19658715,-9.923636,-0.003081853,-0.005675771,0.0023215672 +13400000,mag,0.19900002,-0.08300001,0.42400002 +13400000,baro,487.6427 +13400000,imu,-0.21767937,0.26222587,-9.936647,-0.001199612,-0.0071465336,0.0026809033 +13400000,airspeed,1.3834859,1.3511924 +13404000,imu,-0.23013742,0.21113247,-9.931147,0.0068027093,-0.0021490222,-3.0604395e-05 +13408000,mag,0.201,-0.08000001,0.42700002 +13408000,baro,487.52533 +13408000,airspeed,-4.1060395,-4.0102243 +13408000,imu,-0.14782232,0.20580971,-9.891673,0.0059332955,-0.0018236488,0.003260934 +13412000,mag,0.201,-0.08000001,0.42700002 +13412000,imu,-0.101341836,0.27099115,-9.97306,0.0031702532,-0.0062043453,-0.0017975245 +13412000,gps,488101.0,85456074.0,473977508.0,0.02,0.0,0.0 +13412000,baro,487.67087 +13412000,airspeed,2.1136072,2.0642676 +13420000,baro,487.69434 +13420000,mag,0.201,-0.08000001,0.42700002 +13420000,airspeed,4.001986,3.9085596 +13420000,imu,-0.2635105,0.19551434,-9.898008,0.0021996864,-0.006970922,0.00039851328 +13424000,baro,487.76477 +13424000,mag,0.201,-0.08000001,0.42700002 +13424000,airspeed,0.3040461,0.29694682 +13424000,imu,-0.22504696,0.22589889,-9.907267,-0.0027943733,-0.0010981024,0.0026798728 +13428000,baro,487.76477 +13428000,mag,0.201,-0.08000001,0.42700002 +13428000,airspeed,3.5270917,3.4447365 +13428000,imu,-0.19231893,0.25191358,-9.888975,-0.0036265615,-0.0006232981,0.004071954 +13432000,baro,487.6474 +13432000,airspeed,5.1039524,4.984814 +13432000,imu,-0.17656173,0.25690654,-9.958372,-0.00053441396,-0.0056627677,0.003594594 +13432000,mag,0.201,-0.08000001,0.42700002 +13436000,mag,0.201,-0.08000001,0.42700002 +13436000,baro,487.58636 +13440000,imu,-0.21753424,0.27451527,-9.928798,0.00080114615,-0.011856988,-0.0024861903 +13440000,airspeed,-2.5980513,-2.53739 +13444000,imu,-0.16218355,0.20568003,-9.949155,-0.0027988704,-0.007660695,0.0037108094 +13444000,mag,0.201,-0.08000001,0.42700002 +13444000,baro,487.6333 +13444000,airspeed,2.916823,2.8487403 +13448000,baro,487.69434 +13448000,imu,-0.123100236,0.1264641,-9.942497,0.0013795815,-0.00010882969,0.004504177 +13448000,airspeed,2.1049385,2.0557985 +13448000,mag,0.201,-0.08000001,0.42700002 +13452000,baro,487.6568 +13452000,airspeed,1.4401467,1.4065298 +13452000,mag,0.201,-0.08000001,0.42700002 +13452000,imu,-0.16548245,0.16324183,-9.877539,0.001254213,-0.002912338,-0.0009821814 +13460000,airspeed,1.2062902,1.1781396 +13460000,mag,0.2,-0.08100001,0.42900002 +13460000,imu,-0.2710835,0.14911288,-9.957364,-0.007239434,-0.008568034,-0.0078812195 +13460000,baro,487.5488 +13464000,baro,487.638 +13464000,imu,-0.31590685,0.16436788,-9.951215,-0.01010447,-0.010865974,-0.0051288605 +13464000,airspeed,1.8222324,1.7796979 +13464000,mag,0.2,-0.08100001,0.42900002 +13468000,baro,487.52063 +13468000,airspeed,4.8973837,4.7831044 +13468000,imu,-0.27231202,0.16162209,-9.912105,-0.009063995,-0.007390937,-0.00039194096 +13468000,mag,0.2,-0.08100001,0.42900002 +13472000,baro,487.71783 +13472000,airspeed,1.9391043,1.8938328 +13472000,imu,-0.16454335,0.17643139,-9.924829,-0.001347474,-0.010858434,0.0021275498 +13472000,mag,0.2,-0.08100001,0.42900002 +13476000,mag,0.2,-0.08100001,0.42900002 +13476000,imu,-0.1538633,0.18148345,-9.95514,0.004102409,-0.008989949,-0.003136811 +13476000,baro,487.7272 +13476000,airspeed,2.1222143,2.0726671 +13480000,mag,0.2,-0.08100001,0.42900002 +13480000,imu,-0.19030404,0.15184513,-9.899898,0.0022274398,-0.001685013,-0.0008537265 +13480000,baro,487.62863 +13480000,airspeed,2.7786753,2.7138176 +13484000,mag,0.2,-0.08100001,0.42900002 +13484000,airspeed,-0.4561047,-0.44545776 +13484000,baro,487.66617 +13488000,imu,-0.25421244,0.18275833,-9.925043,-0.0024523425,-0.0045349877,-0.005580612 +13492000,airspeed,-3.390713,-3.3115537 +13492000,mag,0.2,-0.08100001,0.42900002 +13492000,baro,487.70844 +13492000,imu,-0.21640082,0.21495531,-9.898675,-0.0025019085,-0.004202592,-0.0011743085 +13496000,imu,-0.14785454,0.1711931,-9.949997,-0.0014657298,-0.008211581,0.0021987923 +13496000,airspeed,-0.1814003,-0.17716737 +13500000,mag,0.2,-0.08100001,0.42900002 +13500000,imu,-0.16221853,0.17704414,-10.014919,0.00034144858,-0.004684546,0.0033455843 +13500000,baro,487.52063 +13500000,airspeed,-3.2544675,-3.1785252 +13504000,imu,-0.17532289,0.12141275,-9.940395,0.0031351582,-0.010340615,0.0014409234 +13504000,baro,487.67087 +13504000,airspeed,-0.4109475,-0.40135455 +13504000,mag,0.2,-0.08100001,0.42900002 +13508000,imu,-0.17995636,0.15201536,-9.845291,-0.002732133,-0.00937124,-0.0005935109 +13508000,airspeed,-2.153262,-2.1030006 +13508000,mag,0.201,-0.08300001,0.43100002 +13508000,baro,487.638 +13512000,airspeed,3.5955398,3.511613 +13512000,baro,487.638 +13512000,imu,-0.2229747,0.21567903,-9.855499,-0.004875021,-0.0018645154,-0.002743839 +13512000,mag,0.201,-0.08300001,0.43100002 +13516000,mag,0.201,-0.08300001,0.43100002 +13516000,imu,-0.16826151,0.16264316,-9.94586,-0.0018822718,-0.008528887,0.0022123025 +13516000,baro,487.59106 +13516000,airspeed,-3.3494325,-3.2712598 +13520000,baro,487.7272 +13520000,airspeed,-2.5355186,-2.4763222 +13520000,mag,0.201,-0.08300001,0.43100002 +13520000,imu,-0.09549184,0.13583213,-9.89181,0.0015565689,-0.0106171165,0.008090401 +13524000,imu,-0.103341796,0.21899603,-9.83179,0.0010709702,-0.0050021703,0.0070156967 +13524000,baro,487.6333 +13524000,mag,0.201,-0.08300001,0.43100002 +13524000,airspeed,-0.28276244,-0.2761624 +13528000,baro,487.52533 +13528000,mag,0.201,-0.08300001,0.43100002 +13532000,imu,-0.25837937,0.1037529,-9.876194,-0.004473075,-0.005012592,-0.0016056863 +13532000,mag,0.201,-0.08300001,0.43100002 +13532000,baro,487.68967 +13532000,airspeed,2.0364091,1.9888697 +13540000,mag,0.201,-0.08300001,0.43100002 +13540000,baro,487.6568 +13540000,imu,-0.20518829,0.17696205,-9.96408,0.00095642795,-0.0006769404,-0.0031076632 +13540000,airspeed,3.0464149,2.9753032 +13548000,baro,487.60513 +13548000,airspeed,3.3980947,3.318784 +13548000,imu,-0.19149029,0.18922256,-9.892152,0.0023718479,-0.015278488,0.0036324775 +13548000,mag,0.201,-0.08300001,0.43100002 +13556000,baro,487.52533 +13556000,airspeed,0.40010363,0.39076707 +13556000,imu,-0.22044317,0.17820734,-9.95004,0.0013151879,-0.004827028,-0.0031107154 +13556000,mag,0.201,-0.08300001,0.43100002 +13560000,baro,487.69904 +13560000,mag,0.201,-0.08300001,0.43100002 +13564000,airspeed,-3.2538323,-3.177875 +13564000,imu,-0.18995228,0.18121918,-9.870089,-0.00031080763,-0.0044950647,0.0024594187 +13568000,baro,487.7225 +13568000,airspeed,2.6146305,2.5535874 +13568000,imu,-0.22075142,0.21102768,-10.007028,-0.0060715615,-0.006344297,0.0057782596 +13568000,mag,0.201,-0.08100001,0.42900002 +13576000,baro,487.52063 +13576000,airspeed,2.0622303,2.0141084 +13576000,mag,0.201,-0.08100001,0.42900002 +13576000,imu,-0.1333509,0.13263887,-9.9797535,0.004298859,0.0022220912,0.0049140835 +13580000,airspeed,2.267253,2.2143323 +13580000,mag,0.201,-0.08100001,0.42900002 +13580000,baro,487.62863 +13580000,imu,-0.1770015,0.13459314,-9.9266815,-0.0009935052,0.0011848492,-0.0018037078 +13588000,imu,-0.23792788,0.15724559,-9.92363,0.00079025346,-0.004048439,-0.006868712 +13588000,mag,0.201,-0.08100001,0.42900002 +13588000,airspeed,-0.4358053,-0.42563102 +13588000,baro,487.70844 +13592000,mag,0.201,-0.08100001,0.42900002 +13592000,baro,487.61923 +13596000,airspeed,3.1112895,3.0386698 +13596000,imu,-0.16085982,0.16015406,-9.894831,-0.004299154,-0.006915087,0.0068526114 +13600000,airspeed,-2.7292264,-2.665543 +13600000,imu,-0.12826306,0.15502307,-9.934676,-0.0008498142,-0.0026505846,0.0015347922 +13600000,baro,487.50186 +13600000,mag,0.201,-0.08100001,0.42900002 +13600000,landed,1.0 +13604000,imu,-0.15397628,0.19476958,-9.99035,-0.0010712442,-0.0064366637,-0.0015070733 +13604000,mag,0.201,-0.08100001,0.42900002 +13604000,airspeed,1.407949,1.3750821 +13604000,baro,487.67087 +13608000,baro,487.5441 +13612000,gps,488105.0,85456074.0,473977508.0,0.03,0.01,-0.01 +13612000,mag,0.201,-0.08100001,0.42900002 +13612000,airspeed,1.378068,1.345891 +13612000,imu,-0.311877,0.10338311,-9.980127,0.0026421242,0.00018669675,-0.0021247005 +13616000,airspeed,2.734112,2.6702724 +13616000,mag,0.2,-0.07900001,0.432 +13616000,baro,487.76477 +13616000,imu,-0.2513719,0.17479974,-9.919464,-0.0011735925,-0.0014125794,-0.00062434416 +13620000,mag,0.2,-0.07900001,0.432 +13620000,airspeed,-3.365463,-3.286895 +13620000,baro,487.69904 +13620000,imu,-0.21246263,0.20764688,-9.901876,-0.0013840718,-0.0054861736,-0.002384109 +13624000,imu,-0.20820308,0.23427163,-9.914258,-0.0072769653,-0.009956017,-0.00471768 +13624000,mag,0.2,-0.07900001,0.432 +13624000,baro,487.69904 +13624000,airspeed,-1.8712662,-1.8275809 +13628000,mag,0.2,-0.07900001,0.432 +13628000,airspeed,-2.0977385,-2.048763 +13628000,baro,487.7225 +13628000,imu,-0.1838383,0.18388957,-9.91159,-0.0062009078,-0.007903724,0.0017470373 +13636000,airspeed,2.9554732,2.8865 +13636000,mag,0.2,-0.07900001,0.432 +13636000,baro,487.5676 +13636000,imu,-0.2181616,0.20412193,-9.957129,0.0029025977,-0.0042546913,-0.0012049658 +13640000,imu,-0.21934669,0.14025922,-9.878852,-0.0022611122,-0.0053304466,-0.0044302815 +13640000,airspeed,-1.3957014,-1.3631335 +13640000,mag,0.2,-0.07900001,0.432 +13640000,baro,487.51123 +13644000,imu,-0.22039905,0.14973222,-9.866967,0.0020925896,-0.0047992575,0.0015199444 +13644000,airspeed,3.5224798,3.4402847 +13644000,baro,487.51123 +13644000,mag,0.2,-0.07900001,0.432 +13652000,imu,-0.21717344,0.1600386,-9.926107,0.0027188344,-0.00074764236,0.0042403787 +13652000,baro,487.6474 +13652000,airspeed,4.2250476,4.1264253 +13652000,mag,0.2,-0.07900001,0.432 +13656000,mag,0.2,-0.07900001,0.432 +13656000,airspeed,2.4641664,2.4066815 +13656000,imu,-0.25153974,0.21394823,-9.9667225,0.0026651323,-0.001638485,-0.0020382255 +13656000,baro,487.40796 +13660000,airspeed,4.45022,4.346404 +13660000,imu,-0.19116764,0.21245083,-9.920221,0.004771238,-0.0032590472,-0.0021827382 +13660000,baro,487.40796 +13660000,mag,0.2,-0.07900001,0.432 +13664000,airspeed,-4.431207,-4.3277674 +13664000,imu,-0.113497816,0.17603037,-9.905518,0.005224513,-0.007659776,-0.0006959988 +13664000,mag,0.201,-0.08200001,0.43 +13664000,baro,487.67087 +13668000,imu,-0.15776521,0.2244005,-9.969852,0.0016620792,-0.0039594932,0.00012169647 +13668000,baro,487.67087 +13668000,airspeed,0.92199135,0.9004688 +13668000,mag,0.201,-0.08200001,0.43 +13672000,imu,-0.22797629,0.19801174,-10.048007,-4.8214984e-05,-0.002775489,-0.0027767606 +13672000,baro,487.68967 +13672000,mag,0.201,-0.08200001,0.43 +13672000,airspeed,-1.2501175,-1.220934 +13676000,baro,487.5582 +13676000,mag,0.201,-0.08200001,0.43 +13676000,imu,-0.22161362,0.12976691,-10.033135,0.0066216043,-0.0035206922,-0.011112325 +13676000,airspeed,-2.119432,-2.0699706 +13680000,baro,487.62393 +13680000,imu,-0.21898536,0.1094606,-10.00983,0.0060379747,-0.0015834023,-0.009706665 +13680000,airspeed,3.3351636,3.2573183 +13680000,mag,0.201,-0.08200001,0.43 +13688000,airspeed,-2.2294884,-2.177438 +13688000,baro,487.71783 +13688000,imu,-0.15560926,0.15147127,-9.863435,-0.003943742,-0.0022580037,-0.0026288647 +13688000,mag,0.201,-0.08200001,0.43 +13692000,airspeed,1.3203446,1.2895379 +13692000,baro,487.47836 +13692000,mag,0.201,-0.08200001,0.43 +13692000,imu,-0.12238292,0.13245524,-9.885344,-0.0022247834,-0.00444379,0.001283464 +13696000,baro,487.5582 +13696000,mag,0.201,-0.08200001,0.43 +13696000,airspeed,1.2503297,1.2211508 +13696000,imu,-0.17338604,0.082995854,-9.823193,-0.0028362377,-0.0071423696,0.0023557963 +13704000,airspeed,2.9623764,2.893232 +13704000,imu,-0.15194309,0.24594373,-9.964935,-0.0008741775,-0.009925716,-0.0041391123 +13704000,baro,487.62393 +13704000,mag,0.201,-0.08200001,0.43 +13708000,imu,-0.11953245,0.1858266,-9.978505,-0.003924329,-0.008968855,0.0015849911 +13708000,baro,487.5441 +13708000,mag,0.201,-0.08200001,0.43 +13708000,airspeed,-3.0204363,-2.9499507 +13712000,baro,487.75537 +13712000,mag,0.201,-0.08200001,0.43 +13712000,airspeed,-1.9111934,-1.8665694 +13712000,imu,-0.13670203,0.20630269,-9.97752,-0.002551703,-0.007822507,0.0011282833 +13716000,imu,-0.20842876,0.17366856,-9.904529,0.00021713511,-0.011044103,-0.0006067171 +13716000,baro,487.6521 +13716000,mag,0.19800001,-0.08100001,0.42800003 +13716000,airspeed,1.9252613,1.8803204 +13720000,imu,-0.23936892,0.14408898,-9.877169,0.00049018743,-0.011884987,-0.002892848 +13720000,mag,0.19800001,-0.08100001,0.42800003 +13720000,airspeed,3.1454146,3.0719922 +13720000,baro,487.6521 +13724000,imu,-0.14865148,0.18438077,-9.904548,0.0021854464,-0.009910729,-0.0005582143 +13724000,airspeed,3.3169467,3.2395055 +13724000,mag,0.19800001,-0.08100001,0.42800003 +13724000,baro,487.7319 +13728000,imu,-0.097990155,0.120224245,-9.975782,0.004572849,-0.00445003,-0.0011307506 +13728000,airspeed,2.7366154,2.672741 +13728000,baro,487.62393 +13728000,mag,0.19800001,-0.08100001,0.42800003 +13732000,mag,0.19800001,-0.08100001,0.42800003 +13732000,baro,487.6427 +13736000,imu,-0.2041411,0.17429334,-9.936906,-0.00034434887,-0.004513627,0.0012889261 +13736000,airspeed,-1.4074244,-1.3745724 +13740000,baro,487.53003 +13740000,imu,-0.20170209,0.15727474,-9.945507,0.002731055,-0.0008419962,-0.0029120606 +13740000,mag,0.19800001,-0.08100001,0.42800003 +13740000,airspeed,1.5578018,1.5214497 +13744000,mag,0.19800001,-0.08100001,0.42800003 +13744000,baro,487.66617 +13744000,airspeed,-2.1318755,-2.0821102 +13744000,imu,-0.16454887,0.22195382,-9.909575,-0.0016418948,-0.0018279265,-0.004702837 +13748000,airspeed,2.1372583,2.0873847 +13748000,mag,0.19800001,-0.08100001,0.42800003 +13748000,baro,487.52533 +13748000,imu,-0.197329,0.2536206,-9.888681,-0.0013110333,-0.003999832,-0.00244003 +13752000,airspeed,2.3024874,2.2487483 +13752000,imu,-0.21977597,0.19470546,-9.885245,0.0008355043,-0.005535467,-0.001054522 +13752000,baro,487.60043 +13752000,mag,0.19800001,-0.08100001,0.42800003 +13756000,imu,-0.15754902,0.23504312,-9.912652,-0.0034441021,-0.00665698,-0.0017312563 +13764000,imu,-0.14668152,0.123212695,-10.004006,-0.0051960847,-0.00079859607,0.0040094564 +13764000,mag,0.19800001,-0.08100001,0.42800003 +13764000,baro,487.71783 +13764000,airspeed,-3.428228,-3.3481908 +13772000,imu,-0.2230607,0.25438377,-9.942822,-0.0037589855,-0.009152107,0.0031620415 +13772000,airspeed,1.5556079,1.5193149 +13772000,baro,487.44553 +13772000,mag,0.19900002,-0.08100001,0.43 +13776000,airspeed,2.8883958,2.8210082 +13776000,baro,487.44553 +13776000,mag,0.19900002,-0.08100001,0.43 +13776000,imu,-0.26232567,0.20512876,-9.948531,-0.0022262153,-0.010288796,-0.0005491766 +13780000,baro,487.5676 +13780000,imu,-0.17005406,0.15646964,-9.918822,0.0039165625,-0.0071762227,0.00061558007 +13780000,airspeed,3.3426297,3.264621 +13780000,mag,0.19900002,-0.08100001,0.43 +13784000,mag,0.19900002,-0.08100001,0.43 +13784000,baro,487.66147 +13788000,imu,-0.17335826,0.24419583,-9.906445,-0.0074623316,-0.0024282911,-0.0036974323 +13788000,airspeed,3.0839417,3.0119584 +13788000,mag,0.19900002,-0.08100001,0.43 +13788000,baro,487.6333 +13792000,mag,0.19900002,-0.08100001,0.43 +13792000,imu,-0.16430973,0.23748624,-9.89153,-0.0034365242,-0.004226679,-0.005417754 +13792000,airspeed,-3.0051603,-2.935016 +13792000,baro,487.6333 +13796000,baro,487.7319 +13796000,imu,-0.18652937,0.21265835,-9.876578,-0.0004809841,0.0012205237,-0.00552347 +13796000,airspeed,1.7962813,1.7543429 +13796000,mag,0.19900002,-0.08100001,0.43 +13800000,baro,487.79294 +13800000,airspeed,-1.230759,-1.2020198 +13800000,imu,-0.21588942,0.21927772,-9.9692335,-0.0022458148,-0.0055262395,0.00353882 +13800000,mag,0.19900002,-0.08100001,0.43 +13804000,airspeed,-2.5338044,-2.474671 +13804000,mag,0.19900002,-0.08100001,0.43 +13804000,imu,-0.21780227,0.16194826,-10.0082855,0.0005589857,-0.008369081,0.003584029 +13804000,baro,487.57227 +13812000,baro,487.7413 +13812000,mag,0.19900002,-0.08100001,0.43 +13812000,airspeed,-2.3013382,-2.247607 +13812000,imu,-0.22333175,0.18073376,-9.966915,0.0040754946,-0.0063151675,-0.0043870453 +13812000,gps,488109.0,85456074.0,473977508.0,0.0,-0.01,0.02 +13816000,imu,-0.298663,0.1575342,-9.907477,0.006896763,-0.003276674,-0.0063696797 +13816000,baro,487.7413 +13816000,airspeed,-0.33259392,-0.32482857 +13816000,mag,0.19900002,-0.08100001,0.43 +13820000,imu,-0.21422021,0.17423451,-9.903952,-0.0020272746,-0.0035107573,0.002637899 +13820000,mag,0.19900002,-0.08100001,0.43 +13820000,baro,487.80234 +13820000,airspeed,-1.5837969,-1.5468132 +13824000,imu,-0.11130285,0.1375039,-9.970631,0.002900174,-0.0077292733,0.0065744743 +13824000,baro,487.69904 +13824000,airspeed,-3.5546565,-3.4716723 +13824000,mag,0.19800001,-0.07800001,0.42800003 +13828000,mag,0.19800001,-0.07800001,0.42800003 +13828000,imu,-0.16074859,0.19463305,-9.962594,0.008567096,-0.00756001,0.002420152 +13828000,airspeed,-3.8418381,-3.7521496 +13828000,baro,487.69904 +13836000,baro,487.61923 +13836000,imu,-0.16435744,0.22156017,-9.898259,0.0020564944,-0.00959317,-0.003958677 +13836000,airspeed,-1.8042642,-1.7621516 +13836000,mag,0.19800001,-0.07800001,0.42800003 +13840000,airspeed,-2.0380013,-1.990425 +13840000,imu,-0.16962303,0.20045514,-9.946674,0.0026415589,-0.0047027594,0.0034443415 +13844000,mag,0.19800001,-0.07800001,0.42800003 +13844000,baro,487.49716 +13844000,imu,-0.19773066,0.20387007,-9.923372,0.0029285487,-0.0010306782,0.0072656246 +13844000,airspeed,2.7186756,2.6552393 +13848000,mag,0.19800001,-0.07800001,0.42800003 +13848000,baro,487.49716 +13848000,airspeed,1.5047951,1.4696829 +13848000,imu,-0.1664645,0.24351174,-9.903414,0.0040814565,-0.006869179,0.005979314 +13852000,baro,487.43613 +13852000,airspeed,2.2255206,2.1735995 +13852000,mag,0.19800001,-0.07800001,0.42800003 +13852000,imu,-0.12905389,0.19609727,-9.893905,-0.0004837326,-0.005678001,0.0021011892 +13856000,imu,-0.21602477,0.18444708,-9.928673,-0.004518871,-0.00875172,-0.004057464 +13856000,airspeed,3.374633,3.2958891 +13856000,mag,0.19800001,-0.07800001,0.42800003 +13856000,baro,487.50656 +13860000,mag,0.19800001,-0.07800001,0.42800003 +13860000,airspeed,-2.821535,-2.755666 +13860000,baro,487.69434 +13860000,imu,-0.18798241,0.19218607,-9.980547,-0.0064739916,-0.007569749,-0.005365029 +13868000,airspeed,1.4242013,1.390961 +13868000,imu,-0.15143508,0.15563712,-9.853354,-0.004831652,-0.006366096,0.0028872008 +13868000,mag,0.19800001,-0.07800001,0.42800003 +13868000,baro,487.60043 +13872000,mag,0.19800001,-0.07800001,0.42800003 +13872000,baro,487.60043 +13876000,mag,0.202,-0.07800001,0.43 +13876000,airspeed,1.4160098,1.382964 +13876000,baro,487.5629 +13876000,imu,-0.1827263,0.1345994,-9.942777,9.088393e-06,-0.0038524573,0.00021282844 +13880000,imu,-0.2127272,0.1546676,-9.941177,0.0020606958,-0.0024024893,0.0035495246 +13880000,airspeed,-3.076369,-3.004575 +13880000,mag,0.202,-0.07800001,0.43 +13880000,baro,487.5629 +13888000,airspeed,-2.265431,-2.21256 +13888000,baro,487.57697 +13888000,imu,-0.2341326,0.22560067,-9.956556,-0.0032687376,-6.49505e-05,-0.0045703845 +13888000,mag,0.202,-0.07800001,0.43 +13892000,baro,487.60983 +13892000,imu,-0.17672828,0.3039696,-9.968903,-0.0017052877,-0.0026188488,-0.002067467 +13892000,airspeed,0.69807345,0.6817804 +13892000,mag,0.202,-0.07800001,0.43 +13896000,airspeed,-2.2579236,-2.2052293 +13896000,imu,-0.1649019,0.26307258,-9.949626,-0.00061979686,-0.0041514616,0.0023736593 +13896000,baro,487.5676 +13896000,mag,0.202,-0.07800001,0.43 +13904000,airspeed,1.1916229,1.1638122 +13904000,mag,0.202,-0.07800001,0.43 +13904000,imu,-0.18117811,0.14440538,-9.9086485,0.002066734,-0.0057989853,0.004952208 +13904000,baro,487.58636 +13908000,imu,-0.16993421,0.13878453,-9.975869,0.0037441326,-0.0058563272,0.004746253 +13908000,baro,487.67557 +13908000,airspeed,3.6774998,3.5916524 +13908000,mag,0.202,-0.07800001,0.43 +13912000,mag,0.202,-0.07800001,0.43 +13912000,airspeed,-2.4643092,-2.4067883 +13912000,baro,487.6333 +13912000,imu,-0.1339281,0.2051504,-9.978494,0.0024513153,-0.0023278187,0.004900153 +13916000,imu,-0.1456737,0.21413386,-9.895002,-0.0010293275,-0.00662815,0.0060782013 +13916000,airspeed,-2.1812587,-2.1303446 +13916000,mag,0.202,-0.07800001,0.43 +13916000,baro,487.6333 +13920000,imu,-0.14536497,0.16422488,-9.870382,-0.0019115078,-0.0055920174,-0.0024355394 +13920000,airspeed,-0.5611248,-0.5480255 +13920000,baro,487.68967 +13920000,mag,0.202,-0.07800001,0.43 +13924000,airspeed,-4.43198,-4.3285437 +13924000,imu,-0.1684314,0.18262994,-9.899879,0.001520965,-0.0031707766,-0.0020884138 +13924000,mag,0.202,-0.08100001,0.43300003 +13924000,baro,487.58636 +13928000,airspeed,-1.2894436,-1.2593498 +13928000,baro,487.58636 +13928000,imu,-0.17895488,0.21741739,-9.939985,0.002937534,-0.0043769926,-0.0022385116 +13928000,mag,0.202,-0.08100001,0.43300003 +13932000,imu,-0.17680697,0.1413518,-9.960043,-0.0038938664,-9.385853e-05,-0.005430048 +13932000,airspeed,2.965258,2.8960547 +13932000,mag,0.202,-0.08100001,0.43300003 +13932000,baro,487.57227 +13936000,mag,0.202,-0.08100001,0.43300003 +13936000,baro,487.6568 +13936000,imu,-0.16083547,0.09915508,-9.894251,-0.00450522,-0.0025808013,0.003717747 +13936000,airspeed,-3.5852418,-3.5015526 +13940000,airspeed,2.1933298,2.1421487 +13940000,imu,-0.1984386,0.18416673,-9.8754425,-0.0023050099,-0.0058746603,0.004301703 +13940000,mag,0.202,-0.08100001,0.43300003 +13940000,baro,487.52063 +13944000,mag,0.202,-0.08100001,0.43300003 +13944000,airspeed,3.205166,3.1303473 +13944000,baro,487.66617 +13944000,imu,-0.1725949,0.23241213,-9.908017,-0.003969992,-0.0015653812,0.0004986107 +13948000,imu,-0.055400368,0.20579915,-9.962532,-0.0074113696,-0.0029598963,0.0034267507 +13948000,airspeed,1.9739013,1.9278376 +13948000,mag,0.202,-0.08100001,0.43300003 +13948000,baro,487.5441 +13956000,airspeed,-3.174101,-3.09999 +13956000,mag,0.202,-0.08100001,0.43300003 +13956000,imu,-0.13164051,0.1983193,-10.034234,0.0017235224,0.00020316895,-0.0051603685 +13956000,baro,487.76007 +13960000,mag,0.202,-0.08100001,0.43300003 +13960000,airspeed,2.4103649,2.3541036 +13960000,baro,487.6333 +13960000,imu,-0.19901378,0.21811259,-10.030058,0.00026871977,-0.0006076179,-0.006786373 +13964000,baro,487.6474 +13964000,mag,0.202,-0.08100001,0.43300003 +13964000,airspeed,-3.2871077,-3.210379 +13964000,imu,-0.17093778,0.20971781,-9.949417,0.0032781616,-0.002189872,-0.0037867895 +13968000,mag,0.202,-0.08100001,0.43300003 +13968000,imu,-0.12438279,0.22319736,-9.886364,0.0040963497,-0.00396289,-0.00039243294 +13968000,airspeed,1.8295265,1.7868176 +13968000,baro,487.68027 +13972000,imu,-0.12160735,0.20842807,-9.923654,-0.0046831863,-0.0039295256,0.0058448166 +13972000,airspeed,-1.5754665,-1.5386883 +13972000,baro,487.68027 +13972000,mag,0.202,-0.08100001,0.43300003 +13976000,imu,-0.18848261,0.16697258,-10.004214,-0.0019769822,-0.00069482514,0.0073815375 +13976000,airspeed,1.8224148,1.7798657 +13976000,mag,0.19800001,-0.08200001,0.43100002 +13976000,baro,487.7366 +13980000,imu,-0.18588836,0.14422433,-9.950745,0.0009805463,-0.001452274,0.004013911 +13988000,baro,487.48776 +13988000,imu,-0.26095974,0.15477279,-9.916809,0.0050474918,-0.006186048,-0.0046337065 +13988000,airspeed,3.5714827,3.4881494 +13988000,mag,0.19800001,-0.08200001,0.43100002 +13992000,mag,0.19800001,-0.08200001,0.43100002 +13992000,baro,487.48776 +13992000,imu,-0.1668322,0.15402378,-9.901971,-0.00024918027,-0.0059136567,0.0064204247 +13992000,airspeed,1.6134715,1.5758245 +13996000,mag,0.19800001,-0.08200001,0.43100002 +13996000,airspeed,-3.5192494,-3.4371243 +13996000,baro,487.5441 +13996000,imu,-0.17955495,0.16162567,-9.966528,-0.0059191515,-0.01112508,0.0077644316 +14000000,mag,0.19800001,-0.08200001,0.43100002 +14000000,airspeed,-1.9556559,-1.909995 +14000000,baro,487.7507 +14000000,imu,-0.18562302,0.12016876,-9.94015,-0.0033550842,-0.0069636945,0.0009780331 +14004000,mag,0.19800001,-0.08200001,0.43100002 +14004000,baro,487.71783 +14008000,airspeed,2.3921864,2.3363318 +14008000,baro,487.76007 +14008000,mag,0.19800001,-0.08200001,0.43100002 +14008000,imu,-0.22193903,0.14041533,-9.875528,0.0019741987,-0.00036384095,-0.002206008 +14012000,gps,488113.0,85456074.0,473977508.0,0.01,0.0,-0.02 +14016000,baro,487.7413 +14016000,imu,-0.24519457,0.19959126,-9.904801,-0.0030746898,-0.010557044,-0.0012164228 +14016000,mag,0.19800001,-0.08200001,0.43100002 +14016000,airspeed,-2.6424963,-2.5808 +14020000,imu,-0.24115023,0.17909487,-9.859736,0.005302122,-0.0063919085,0.005214815 +14020000,airspeed,-3.691414,-3.6052902 +14020000,mag,0.19800001,-0.08200001,0.43100002 +14020000,baro,487.4502 +14024000,imu,-0.1890477,0.12529157,-9.864725,0.005178801,-0.0011475342,0.0042570448 +14024000,airspeed,-0.51358765,-0.5015973 +14028000,mag,0.19800001,-0.08500001,0.42600003 +14028000,baro,487.6333 +14028000,imu,-0.19482408,0.07026793,-9.932348,0.0020786684,-0.0020456044,0.0022146597 +14028000,airspeed,-1.3813741,-1.349131 +14036000,baro,487.6474 +14036000,mag,0.19800001,-0.08500001,0.42600003 +14036000,airspeed,0.53450453,0.5220279 +14036000,imu,-0.23716252,0.15063709,-9.92529,-0.0016272307,-0.007292601,-0.007427075 +14040000,baro,487.7272 +14040000,imu,-0.21175015,0.09407778,-9.98747,-0.00534574,0.002230406,-0.0061328467 +14040000,mag,0.19800001,-0.08500001,0.42600003 +14040000,airspeed,2.465827,2.4082575 +14044000,imu,-0.21627405,0.0997933,-9.974263,-0.0027771234,-0.0006193498,-0.0035950856 +14044000,mag,0.19800001,-0.08500001,0.42600003 +14044000,airspeed,1.2969629,1.2666941 +14044000,baro,487.57697 +14048000,mag,0.19800001,-0.08500001,0.42600003 +14048000,baro,487.69904 +14048000,imu,-0.24301532,0.100093484,-9.887926,-0.0023084253,-0.009301017,-0.0030002187 +14048000,airspeed,-2.0764258,-2.027951 +14052000,airspeed,3.4876673,3.406256 +14052000,baro,487.6521 +14052000,mag,0.19800001,-0.08500001,0.42600003 +14052000,imu,-0.24510649,0.11002091,-9.91472,-0.003344944,-0.004145136,0.0028691671 +14056000,airspeed,1.1908913,1.1630976 +14056000,mag,0.19800001,-0.08500001,0.42600003 +14056000,imu,-0.22804268,0.11468958,-9.967735,-0.0025376987,-0.0025774916,0.0025891403 +14056000,baro,487.58167 +14060000,airspeed,2.5047486,2.4462914 +14060000,imu,-0.26059282,0.181167,-9.976758,-0.0061159176,-0.007850053,-0.0018890795 +14060000,baro,487.58167 +14060000,mag,0.19800001,-0.08500001,0.42600003 +14064000,imu,-0.30906788,0.2491398,-9.94794,-0.007076028,-0.00794055,-0.001256893 +14064000,airspeed,-1.8885132,-1.844434 +14064000,baro,487.61923 +14064000,mag,0.19800001,-0.08500001,0.42600003 +14068000,airspeed,2.1098454,2.06059 +14068000,baro,487.69904 +14068000,mag,0.19800001,-0.08500001,0.42600003 +14068000,imu,-0.32693756,0.20042636,-9.888423,-0.0023781878,-0.0030421575,0.0013931923 +14072000,airspeed,-3.5590923,-3.476009 +14072000,baro,487.67557 +14072000,mag,0.19800001,-0.08500001,0.42600003 +14072000,imu,-0.31144807,0.23355214,-9.870514,0.0031632574,-0.00032756594,0.0011263057 +14076000,baro,487.60983 +14076000,airspeed,-2.5747845,-2.514689 +14076000,mag,0.19800001,-0.08500001,0.42600003 +14076000,imu,-0.22238271,0.24788332,-9.839952,0.0011154644,-0.0013853441,0.0021015056 +14080000,airspeed,-3.6092012,-3.5249083 +14080000,mag,0.2,-0.08500001,0.42800003 +14080000,imu,-0.18215838,0.20384115,-9.850113,-0.0019282948,-0.007827867,0.0020097138 +14080000,baro,487.86337 +14084000,imu,-0.24701649,0.15296523,-9.892108,-0.0025340426,-0.010730943,0.000307949 +14084000,mag,0.2,-0.08500001,0.42800003 +14084000,baro,487.86337 +14084000,airspeed,-1.7976631,-1.7556787 +14092000,baro,487.50656 +14092000,imu,-0.20939156,0.100582466,-9.881284,0.004947813,-0.010323954,5.164285e-05 +14092000,mag,0.2,-0.08500001,0.42800003 +14092000,airspeed,-0.6161711,-0.6017933 +14096000,imu,-0.2079983,0.19300322,-9.877223,0.0019848512,-0.012302117,0.005088749 +14096000,baro,487.52063 +14096000,mag,0.2,-0.08500001,0.42800003 +14096000,airspeed,-3.588109,-3.504381 +14100000,imu,-0.3058014,0.27024484,-9.883059,0.0025707807,-0.010103377,0.0059764185 +14108000,airspeed,-2.4374044,-2.380519 +14108000,imu,-0.23063013,0.13152976,-9.972772,-0.007589066,-0.005212988,0.0021693483 +14108000,baro,487.58636 +14108000,mag,0.2,-0.08500001,0.42800003 +14112000,imu,-0.24543837,0.18582821,-10.050357,-0.005127144,0.00026109733,0.0056124507 +14112000,baro,487.70844 +14112000,airspeed,1.8049982,1.7628592 +14112000,mag,0.2,-0.08500001,0.42800003 +14116000,mag,0.2,-0.08500001,0.42800003 +14116000,baro,487.70844 +14116000,airspeed,-1.8137902,-1.771446 +14116000,imu,-0.25723976,0.21236236,-10.020649,0.0015026488,0.0010058051,0.0008981383 +14120000,baro,487.60513 +14120000,mag,0.2,-0.08500001,0.42800003 +14124000,baro,487.66617 +14124000,imu,-0.21338516,0.24176902,-9.87773,-0.004243504,-0.0023615104,-0.007012399 +14124000,mag,0.2,-0.08500001,0.42800003 +14124000,airspeed,-2.6419823,-2.5803099 +14128000,airspeed,0.65067667,0.6354941 +14128000,mag,0.2,-0.08500001,0.42800003 +14128000,imu,-0.19099358,0.20280384,-9.9305935,-0.0021692573,-0.0042600976,-0.009954056 +14128000,baro,487.49716 +14136000,airspeed,2.8033168,2.7378917 +14136000,baro,487.58167 +14136000,mag,0.201,-0.08200001,0.42700002 +14136000,imu,-0.14722927,0.19365403,-10.012763,-0.003905161,-0.005228436,-0.00041625943 +14140000,airspeed,1.8026758,1.7605906 +14140000,baro,487.71313 +14140000,mag,0.201,-0.08200001,0.42700002 +14140000,imu,-0.15812284,0.17537521,-9.974084,-0.004324528,0.0017553325,0.002810784 +14148000,mag,0.201,-0.08200001,0.42700002 +14148000,airspeed,-3.633887,-3.549038 +14148000,baro,487.76947 +14148000,imu,-0.17878176,0.19370799,-9.928219,0.0040354035,-0.00093448843,0.0047178576 +14152000,mag,0.201,-0.08200001,0.42700002 +14152000,imu,-0.16910593,0.23164782,-9.910764,-0.0020074905,0.00047062608,0.003627264 +14152000,baro,487.48306 +14152000,airspeed,2.528905,2.4698987 +14156000,baro,487.51123 +14156000,imu,-0.18325503,0.20445755,-9.905926,-0.009512552,-0.0034196114,0.0002882612 +14156000,airspeed,2.2397437,2.187481 +14156000,mag,0.201,-0.08200001,0.42700002 +14164000,mag,0.201,-0.08200001,0.42700002 +14164000,baro,487.57697 +14164000,imu,-0.1659987,0.14254577,-9.924943,-0.0006846171,-0.009105564,0.002853444 +14164000,airspeed,2.4477603,2.390634 +14168000,imu,-0.1342251,0.1582222,-9.925545,-0.00084532937,-0.010008388,0.0023093862 +14168000,airspeed,3.2509725,3.1751008 +14172000,baro,487.78354 +14172000,airspeed,-3.3294458,-3.2517028 +14172000,imu,-0.16024213,0.2292549,-9.925749,0.0024220601,-0.004393986,-0.0014402331 +14172000,mag,0.201,-0.08200001,0.42700002 +14176000,mag,0.201,-0.08200001,0.42700002 +14176000,baro,487.78354 +14180000,airspeed,-3.5654964,-3.4822965 +14180000,imu,-0.18688096,0.23038456,-9.891953,0.0025915785,-0.0057420493,0.0016395961 +14184000,baro,487.7507 +14184000,airspeed,1.5102599,1.4749978 +14184000,imu,-0.23908064,0.18630475,-9.938557,0.004473177,-0.008115511,-0.0007711424 +14184000,mag,0.19800001,-0.08100001,0.42900002 +14188000,imu,-0.27936777,0.12824255,-9.912956,0.006074136,-0.0037237327,-0.002383745 +14188000,baro,487.58167 +14188000,airspeed,-4.2610836,-4.161637 +14188000,mag,0.19800001,-0.08100001,0.42900002 +14196000,airspeed,-1.6180749,-1.5803009 +14196000,baro,487.69434 +14196000,mag,0.19800001,-0.08100001,0.42900002 +14196000,imu,-0.15431847,0.19184998,-9.986975,-0.0035784023,-0.0045588408,0.011167931 +14200000,baro,487.76007 +14200000,airspeed,-1.8397796,-1.796823 +14200000,imu,-0.1612076,0.17053096,-10.008351,0.0017971181,-0.0011816057,0.0013315645 +14200000,mag,0.19800001,-0.08100001,0.42900002 +14204000,baro,487.57697 +14204000,mag,0.19800001,-0.08100001,0.42900002 +14204000,imu,-0.19424953,0.20096377,-9.984426,0.0026160113,-0.004071326,0.003050824 +14204000,airspeed,3.984876,3.8918757 +14208000,airspeed,-2.1118376,-2.062551 +14208000,mag,0.19800001,-0.08100001,0.42900002 +14208000,imu,-0.2539126,0.1659976,-9.95874,-0.0010888776,-0.011135102,-0.0013499821 +14208000,baro,487.57697 +14212000,baro,487.57227 +14212000,imu,-0.27575788,0.15561585,-9.94218,-0.0053690877,-0.0091056265,-0.0034333828 +14212000,gps,488103.0,85456074.0,473977508.0,0.01,-0.01,0.0 +14212000,mag,0.19800001,-0.08100001,0.42900002 +14212000,airspeed,1.8806728,1.8367817 +14216000,mag,0.19800001,-0.08100001,0.42900002 +14216000,imu,-0.20615153,0.18361306,-9.930291,-0.0018343468,-0.0052535464,-0.00039001543 +14216000,baro,487.57227 +14216000,airspeed,-2.4535718,-2.3963106 +14224000,imu,-0.17008787,0.25045952,-9.930384,-0.0044830646,0.0010799363,0.006285592 +14224000,baro,487.5535 +14224000,airspeed,2.3958857,2.3399734 +14224000,mag,0.19800001,-0.08100001,0.42900002 +14228000,mag,0.19800001,-0.08100001,0.42900002 +14228000,imu,-0.24555175,0.27088547,-9.884546,0.0030519243,-0.00778762,0.007406262 +14228000,airspeed,2.2617896,2.2089992 +14228000,baro,487.60983 +14232000,airspeed,-3.2087986,-3.1339288 +14232000,mag,0.19800001,-0.08100001,0.42900002 +14232000,imu,-0.23266211,0.13226067,-9.93088,-0.0006222576,-0.010852793,-0.00010395939 +14232000,baro,487.48306 +14240000,airspeed,3.342246,3.2641978 +14240000,mag,0.202,-0.08100001,0.42900002 +14240000,imu,-0.1582159,0.11719608,-9.950149,-0.00014598071,-0.00048440692,0.0011312647 +14240000,baro,487.8164 +14244000,imu,-0.12852164,0.11100445,-9.9928465,-0.0043280697,-0.0018065926,0.002633309 +14244000,baro,487.49716 +14244000,mag,0.202,-0.08100001,0.42900002 +14244000,airspeed,-1.2017103,-1.1736702 +14248000,baro,487.5535 +14248000,airspeed,-3.114816,-3.0421262 +14248000,imu,-0.13170898,0.11817498,-9.95495,-0.00021311601,-0.005470367,-0.00041867062 +14248000,mag,0.202,-0.08100001,0.42900002 +14252000,airspeed,-3.2150185,-3.1399903 +14252000,mag,0.202,-0.08100001,0.42900002 +14252000,baro,487.5535 +14252000,imu,-0.14932144,0.19576079,-9.964391,0.00819568,-0.00776307,-0.0044831573 +14256000,imu,-0.16139017,0.17320956,-9.999757,0.0060085068,-0.0042628497,-0.0058026686 +14256000,airspeed,3.677938,3.5920842 +14256000,baro,487.6568 +14256000,mag,0.202,-0.08100001,0.42900002 +14260000,baro,487.60513 +14260000,airspeed,-2.29689,-2.2432811 +14260000,mag,0.202,-0.08100001,0.42900002 +14260000,imu,-0.22423556,0.13693476,-9.971798,0.0027390306,-0.0059678485,-0.0011825532 +14264000,airspeed,-3.6357749,-3.5508935 +14264000,imu,-0.15883662,0.20176859,-9.981067,-0.000437887,-0.009434261,0.003710705 +14264000,mag,0.202,-0.08100001,0.42900002 +14264000,baro,487.71313 +14268000,imu,-0.12095053,0.16274394,-9.9936285,-0.0022750783,-0.0044288374,0.00187941 +14268000,airspeed,2.7417517,2.67774 +14268000,mag,0.202,-0.08100001,0.42900002 +14268000,baro,487.7272 +14272000,mag,0.202,-0.08100001,0.42900002 +14272000,baro,487.62863 +14276000,imu,-0.080616936,0.20980832,-9.934095,-0.00059863273,-0.0084490245,-0.004076279 +14276000,baro,487.4737 +14276000,mag,0.202,-0.08100001,0.42900002 +14276000,airspeed,2.7940538,2.7288625 +14284000,imu,-0.07449108,0.15786183,-10.02038,0.0036332805,-0.005877157,-0.0026522533 +14284000,mag,0.202,-0.08100001,0.42900002 +14284000,airspeed,-0.17656079,-0.1724395 +14284000,baro,487.6427 +14288000,mag,0.201,-0.08000001,0.42900002 +14288000,baro,487.6427 +14288000,airspeed,-0.28742847,-0.2807193 +14288000,imu,-0.17090984,0.19513144,-10.057911,-0.0008456364,-0.0032493114,0.0007299034 +14292000,mag,0.201,-0.08000001,0.42900002 +14292000,baro,487.5676 +14292000,imu,-0.20888312,0.18118185,-10.009334,-0.0042533353,-0.006880521,-0.00078924064 +14292000,airspeed,-0.4458641,-0.43545872 +14296000,baro,487.5441 +14296000,airspeed,-1.5623422,-1.5258832 +14296000,imu,-0.21715204,0.12847477,-9.957862,-0.00037555143,-0.008810165,-0.0023246454 +14296000,mag,0.201,-0.08000001,0.42900002 +14300000,imu,-0.16337496,0.17323814,-9.911335,0.0026604277,-0.0035448896,-0.002202767 +14300000,mag,0.201,-0.08000001,0.42900002 +14300000,baro,487.4643 +14300000,airspeed,-1.8194839,-1.7770323 +14308000,baro,487.50656 +14308000,airspeed,-4.0260215,-3.9320786 +14308000,imu,-0.20344776,0.13075393,-9.979369,-0.0003395473,-0.0046241465,0.0019938627 +14308000,mag,0.201,-0.08000001,0.42900002 +14312000,baro,487.53003 +14312000,airspeed,1.997314,1.9507058 +14312000,imu,-0.16750346,0.148533,-9.939659,-0.00039952763,-0.0026427824,0.0056769834 +14312000,mag,0.201,-0.08000001,0.42900002 +14316000,mag,0.201,-0.08000001,0.42900002 +14316000,airspeed,2.5379093,2.4786766 +14316000,imu,-0.106343165,0.1422209,-9.912962,-0.0021245317,-0.004114756,0.0033874165 +14316000,baro,487.59576 +14320000,mag,0.201,-0.08000001,0.42900002 +14320000,baro,487.53473 +14324000,airspeed,-0.98682743,-0.9638014 +14324000,mag,0.201,-0.08000001,0.42900002 +14324000,baro,487.49246 +14324000,imu,-0.21246797,0.093175665,-9.9208975,-0.004584144,-0.0037814756,0.00088388874 +14328000,mag,0.201,-0.08000001,0.42900002 +14328000,baro,487.50656 +14328000,imu,-0.22750546,0.13583067,-9.954785,0.0027927398,-0.0064074895,0.0036494345 +14328000,airspeed,2.5376892,2.4784749 +14332000,mag,0.201,-0.08000001,0.42900002 +14332000,baro,487.50656 +14332000,airspeed,-3.6623845,-3.5769265 +14332000,imu,-0.2380314,0.15740731,-9.908265,-0.0031641044,-0.0019994962,-0.0023887784 +14336000,airspeed,-3.6806734,-3.5947652 +14336000,imu,-0.16685458,0.11405493,-9.948024,-0.0052504055,0.0027047868,-0.0057145073 +14336000,mag,0.201,-0.08000001,0.42900002 +14336000,baro,487.61453 +14340000,airspeed,-5.3094664,-5.1855373 +14340000,imu,-0.15008613,0.17377461,-9.985423,-0.0023313293,-0.0021483186,-0.0034350378 +14340000,baro,487.62863 +14340000,mag,0.201,-0.08100001,0.43 +14344000,airspeed,-1.5429814,-1.5069716 +14344000,imu,-0.11935396,0.21731706,-9.935725,-0.0026909811,-0.009086323,-0.0024585833 +14344000,baro,487.57227 +14344000,mag,0.201,-0.08100001,0.43 +14348000,mag,0.201,-0.08100001,0.43 +14348000,baro,487.57227 +14348000,airspeed,-0.8827293,-0.8621283 +14348000,imu,-0.13560924,0.19902977,-9.920491,0.0010524307,-0.009326448,0.001320338 +14356000,imu,-0.20928133,0.17489216,-9.904872,-0.008460967,0.0012444931,-4.5030058e-05 +14356000,baro,487.5676 +14356000,mag,0.201,-0.08100001,0.43 +14356000,airspeed,-3.1065485,-3.0340495 +14360000,baro,487.57227 +14360000,imu,-0.22929065,0.16835053,-9.93435,-0.0089706145,-0.000792602,0.0009043981 +14360000,mag,0.201,-0.08100001,0.43 +14360000,airspeed,2.5095615,2.4509933 +14364000,imu,-0.21178667,0.19511086,-9.909573,-0.0063003483,-0.006767796,0.0041793906 +14364000,mag,0.201,-0.08100001,0.43 +14364000,baro,487.62863 +14368000,baro,487.62863 +14368000,imu,-0.17990609,0.1833178,-9.921554,-0.0026183352,-0.0070875823,0.005767948 +14368000,mag,0.201,-0.08100001,0.43 +14368000,airspeed,2.1477237,2.097593 +14372000,baro,487.6474 +14372000,airspeed,-3.297652,-3.2206774 +14372000,imu,-0.17497222,0.15087065,-9.942425,-0.002377281,-0.0062528946,0.0013297495 +14372000,mag,0.201,-0.08100001,0.43 +14376000,baro,487.52063 +14376000,airspeed,-1.7264321,-1.6861458 +14376000,mag,0.201,-0.08100001,0.43 +14376000,imu,-0.14507839,0.09436012,-9.939487,-0.0061790957,-0.0040960647,-0.0017859419 +14380000,airspeed,-2.8839953,-2.8166974 +14380000,baro,487.52063 +14380000,mag,0.201,-0.08100001,0.43 +14380000,imu,-0.106090955,0.16912025,-9.977015,-0.0032509232,-0.0075246524,-0.00052171096 +14384000,baro,487.58636 +14384000,mag,0.201,-0.08100001,0.43 +14384000,imu,-0.20286532,0.17871565,-9.989695,0.0029255871,-0.010362826,0.004260163 +14384000,airspeed,-2.5418613,-2.4825375 +14388000,baro,487.58636 +14388000,mag,0.201,-0.08100001,0.43 +14388000,imu,-0.27027774,0.19967878,-9.906361,0.00014870046,-0.009155654,0.0018359302 +14388000,airspeed,1.6896303,1.6501964 +14392000,airspeed,2.3973355,2.3413534 +14396000,baro,487.80704 +14396000,imu,-0.201369,0.19070187,-9.996845,-0.005862602,-0.00068697846,0.0041589336 +14396000,mag,0.19900002,-0.08200001,0.42900002 +14396000,airspeed,1.9153148,1.8705887 +14400000,imu,-0.23593839,0.18957026,-9.912744,-0.0061413436,0.0005636712,0.0013219604 +14400000,mag,0.19900002,-0.08200001,0.42900002 +14400000,baro,487.5488 +14400000,airspeed,2.0697446,2.021444 +14404000,baro,487.70374 +14404000,airspeed,0.2824577,0.27586353 +14404000,imu,-0.24944256,0.22268577,-9.873443,-0.0034437398,0.001963976,0.0045143976 +14404000,mag,0.19900002,-0.08200001,0.42900002 +14412000,imu,-0.16725092,0.15725255,-9.846949,-0.00222525,-0.009968068,0.002662232 +14412000,airspeed,-3.508572,-3.426676 +14412000,mag,0.19900002,-0.08200001,0.42900002 +14412000,gps,488102.0,85456074.0,473977508.0,-0.01,-0.01,0.02 +14412000,baro,487.638 +14416000,mag,0.19900002,-0.08200001,0.42900002 +14416000,baro,487.57697 +14416000,airspeed,-2.6154811,-2.5544403 +14416000,imu,-0.1838014,0.21345957,-9.884046,-0.000113443784,-0.0057093687,0.0025272698 +14424000,mag,0.19900002,-0.08200001,0.42900002 +14424000,baro,487.5629 +14424000,airspeed,-2.0123832,-1.9654194 +14424000,imu,-0.2785795,0.18552797,-9.854954,-0.0015518229,-0.0066524143,-0.00050988974 +14428000,baro,487.5629 +14428000,imu,-0.21294822,0.20607059,-9.859652,-0.0031377326,-0.008646212,-0.0053573293 +14428000,mag,0.19900002,-0.08200001,0.42900002 +14428000,airspeed,3.8922715,3.8014362 +14432000,imu,-0.1639458,0.21421757,-9.926315,-0.0021357145,-0.0069766724,-0.0021428864 +14432000,airspeed,0.44967702,0.4391825 +14432000,baro,487.57227 +14432000,mag,0.19900002,-0.08200001,0.42900002 +14440000,airspeed,3.4612894,3.3805187 +14440000,imu,-0.1968559,0.19291477,-9.887881,0.00029675697,-0.000617518,-0.00034513723 +14440000,baro,487.53003 +14440000,mag,0.19900002,-0.08200001,0.42900002 +14444000,baro,487.69434 +14444000,mag,0.2,-0.084000014,0.42900002 +14444000,imu,-0.22384003,0.14813736,-9.82521,-0.00805627,-0.0048832665,0.0017053952 +14444000,airspeed,0.62065804,0.6061687 +14448000,imu,-0.23596254,0.13550827,-9.865853,-0.0077242246,-0.00956649,0.00075954583 +14448000,airspeed,-0.6735064,-0.65778327 +14448000,baro,487.69434 +14448000,mag,0.2,-0.084000014,0.42900002 +14456000,baro,487.6427 +14456000,mag,0.2,-0.084000014,0.42900002 +14456000,imu,-0.24100296,0.11607054,-9.849414,0.003100632,0.0010701567,-0.0027600648 +14456000,airspeed,1.7383764,1.6977991 +14464000,baro,487.50656 +14464000,mag,0.2,-0.084000014,0.42900002 +14464000,airspeed,-2.0169487,-1.9698853 +14464000,imu,-0.12161492,0.20800506,-9.989388,0.00048060372,0.0009807356,-0.0068682395 +14468000,baro,487.57227 +14468000,airspeed,-0.5356445,-0.5231437 +14468000,mag,0.2,-0.084000014,0.42900002 +14468000,imu,-0.13242452,0.209495,-10.007472,-0.0037674115,-0.0026248265,-0.00711921 +14472000,baro,487.66617 +14472000,mag,0.2,-0.084000014,0.42900002 +14472000,airspeed,3.7258048,3.6388326 +14472000,imu,-0.12347322,0.20940037,-9.915787,-0.0059876936,-0.007838177,-0.006991247 +14476000,mag,0.2,-0.084000014,0.42900002 +14476000,airspeed,3.3856,3.3065825 +14476000,imu,-0.16554698,0.18665056,-9.947581,-0.004711339,-0.0025946356,-0.005016253 +14476000,baro,487.59576 +14480000,imu,-0.21300797,0.23711114,-9.9820175,-0.0048832214,0.0014128676,-0.0030557998 +14480000,baro,487.59576 +14480000,airspeed,4.485496,4.380808 +14480000,mag,0.2,-0.084000014,0.42900002 +14484000,mag,0.2,-0.084000014,0.42900002 +14484000,imu,-0.21641111,0.21479806,-9.929038,-0.0027679296,-0.0033048291,-0.0035910346 +14484000,baro,487.52063 +14484000,airspeed,1.842784,1.7997831 +14492000,mag,0.2,-0.084000014,0.42900002 +14492000,imu,-0.13918324,0.22933006,-9.931053,0.004340883,-0.006111175,-0.00027759175 +14492000,airspeed,0.5645369,0.5513593 +14492000,baro,487.6474 +14496000,mag,0.2,-0.08300001,0.42800003 +14496000,airspeed,3.3292372,3.2515116 +14496000,baro,487.71783 +14496000,imu,-0.14513405,0.17149037,-9.986061,0.0010297716,-0.0037934189,0.002795308 +14500000,airspeed,-1.4626623,-1.4285284 +14500000,imu,-0.2384123,0.14117058,-9.945122,-0.0020352823,-0.001394068,0.0031052679 +14500000,baro,487.5535 +14500000,mag,0.2,-0.08300001,0.42800003 +14508000,imu,-0.18282595,0.17824794,-9.9426,-0.0025139258,-0.0028317026,0.0032468725 +14508000,baro,487.60513 +14508000,mag,0.2,-0.08300001,0.42800003 +14508000,airspeed,-2.0242205,-1.9769759 +14512000,baro,487.6333 +14512000,imu,-0.1641877,0.15236531,-9.902837,0.0037845897,-0.008205896,0.0067279516 +14512000,airspeed,-2.0920594,-2.0432277 +14512000,mag,0.2,-0.08300001,0.42800003 +14516000,airspeed,2.7959378,2.730679 +14516000,imu,-0.1606011,0.16162488,-9.897172,0.002381642,-0.009192167,0.0010141131 +14516000,mag,0.2,-0.08300001,0.42800003 +14516000,baro,487.61453 +14520000,baro,487.6474 +14520000,imu,-0.19199128,0.16328135,-9.908917,-0.003657507,0.00031866448,-0.0042056544 +14520000,airspeed,-1.5014522,-1.4664048 +14520000,mag,0.2,-0.08300001,0.42800003 +14528000,mag,0.2,-0.08300001,0.42800003 +14528000,imu,-0.16479744,0.20308292,-9.928958,-3.0879874e-05,-0.0061769695,0.0010426698 +14528000,baro,487.80234 +14528000,airspeed,2.4009898,2.344923 +14536000,baro,487.6333 +14536000,imu,-0.101744525,0.2565331,-9.93533,-0.002119527,0.00010353922,0.0009237849 +14536000,mag,0.2,-0.08300001,0.42800003 +14536000,airspeed,-0.36119834,-0.3527674 +14540000,mag,0.2,-0.08300001,0.42800003 +14540000,imu,-0.10843713,0.16521838,-9.896355,-0.0016036426,-0.00065885624,0.00025763968 +14540000,baro,487.6333 +14540000,airspeed,-2.8717,-2.80467 +14544000,mag,0.2,-0.08300001,0.42800003 +14544000,imu,-0.17556463,0.1769185,-9.91517,-0.001087954,0.0009816558,0.0060002045 +14544000,baro,487.6333 +14544000,airspeed,3.1065457,3.0340347 +14548000,baro,487.6333 +14548000,airspeed,1.4211214,1.3879504 +14548000,imu,-0.17311154,0.22076619,-9.92561,-0.0009398976,-0.004072665,0.005374321 +14548000,mag,0.202,-0.08100001,0.42900002 +14552000,imu,-0.116352394,0.19828899,-9.955124,-0.009144804,-0.008022719,-0.006113656 +14556000,airspeed,-1.3899019,-1.3574543 +14556000,imu,-0.14120099,0.1879396,-9.933089,-0.0057380083,-0.0076582273,-0.005613509 +14556000,baro,487.69434 +14556000,mag,0.202,-0.08100001,0.42900002 +14560000,baro,487.62863 +14560000,imu,-0.17905805,0.197175,-9.967893,-0.0037906852,-0.010500128,-0.0023212116 +14560000,airspeed,-0.34168294,-0.33370763 +14560000,mag,0.202,-0.08100001,0.42900002 +14564000,baro,487.80234 +14564000,mag,0.202,-0.08100001,0.42900002 +14568000,imu,-0.11927981,0.14030638,-9.957809,-0.0044250325,-0.0051860153,-0.0013997945 +14568000,airspeed,2.6660697,2.603839 +14568000,mag,0.202,-0.08100001,0.42900002 +14568000,baro,487.638 +14572000,airspeed,-2.4878376,-2.4297466 +14572000,mag,0.202,-0.08100001,0.42900002 +14572000,imu,-0.19415294,0.14749819,-9.978736,-0.007588496,0.00058347976,0.002032958 +14572000,baro,487.77887 +14580000,imu,-0.11633059,0.21685913,-9.987764,-0.0034698932,-0.0021264697,0.0010293854 +14580000,mag,0.202,-0.08100001,0.42900002 +14580000,airspeed,3.5466237,3.4638495 +14580000,baro,487.58636 +14584000,airspeed,1.9336965,1.8885524 +14584000,imu,-0.13268082,0.163968,-9.975051,-0.0029379416,-0.013325834,-0.0035448333 +14584000,mag,0.202,-0.08100001,0.42900002 +14584000,baro,487.71313 +14588000,baro,487.71313 +14588000,imu,-0.17495792,0.16607709,-9.987918,0.00023955628,-0.010653938,-0.0023305367 +14588000,mag,0.202,-0.08100001,0.42900002 +14588000,airspeed,3.269033,3.192714 +14596000,baro,487.66147 +14596000,imu,-0.25963202,0.24156392,-9.976406,-0.0011021107,-0.0074250535,-0.0049741264 +14596000,mag,0.202,-0.08100001,0.42900002 +14596000,airspeed,1.4506416,1.416779 +14600000,baro,487.76947 +14600000,imu,-0.29247436,0.18668948,-9.931757,0.003728104,-0.009291134,-0.0008554018 +14600000,landed,1.0 +14600000,mag,0.201,-0.08000001,0.42700002 +14600000,airspeed,-2.6380496,-2.5764527 +14604000,baro,487.53003 +14604000,mag,0.201,-0.08000001,0.42700002 +14604000,imu,-0.1819846,0.17644721,-9.834706,0.001998579,-0.007964956,0.00043809894 +14604000,airspeed,-2.8820465,-2.8147926 +14612000,mag,0.201,-0.08000001,0.42700002 +14612000,imu,-0.23564479,0.1915405,-9.8744135,-0.0007169229,-0.004776002,-0.0036452408 +14612000,gps,488100.0,85456074.0,473977508.0,0.0,0.03,0.04 +14612000,airspeed,-2.713228,-2.6499047 +14612000,baro,487.58636 +14616000,imu,-0.17212713,0.22841342,-9.921361,0.004123853,-0.0029960063,-0.005758331 +14616000,airspeed,-1.248299,-1.2191669 +14616000,mag,0.201,-0.08000001,0.42700002 +14616000,baro,487.5676 +14620000,baro,487.70844 +14620000,airspeed,3.161743,3.0879292 +14620000,mag,0.201,-0.08000001,0.42700002 +14620000,imu,-0.13300104,0.18252636,-9.851809,0.008805194,-0.00488961,-0.0017432546 +14624000,airspeed,-3.809355,-3.7204478 +14624000,imu,-0.14087735,0.15568455,-9.874829,0.0029179966,-0.011082304,0.0027321817 +14624000,baro,487.59576 +14624000,mag,0.201,-0.08000001,0.42700002 +14628000,imu,-0.16419879,0.19074066,-9.9903145,0.0018695355,-0.012526954,-0.0046049342 +14632000,imu,-0.1723572,0.23497613,-10.031473,0.00311135,-0.009279679,-0.0041846354 +14632000,airspeed,-4.366289,-4.2643833 +14632000,mag,0.201,-0.08000001,0.42700002 +14632000,baro,487.59576 +14640000,imu,-0.11598402,0.19978341,-9.968879,-0.008085013,-0.0046349494,0.004439357 +14640000,airspeed,-1.0503274,-1.0258166 +14640000,baro,487.5441 +14640000,mag,0.201,-0.08000001,0.42700002 +14644000,imu,-0.18510261,0.17667158,-9.949464,-0.0039526545,0.0006351377,0.0006713072 +14644000,airspeed,2.0176423,1.9705579 +14644000,baro,487.5441 +14644000,mag,0.201,-0.08000001,0.42700002 +14648000,airspeed,-3.16694,-3.0930176 +14648000,mag,0.201,-0.08000001,0.42700002 +14648000,baro,487.6427 +14648000,imu,-0.26562557,0.18102175,-9.974664,-0.008686837,-0.00095948996,0.0062270137 +14652000,mag,0.19900002,-0.08200001,0.43100002 +14652000,airspeed,2.1670964,2.1165252 +14652000,imu,-0.25561598,0.16408694,-9.898236,-0.009952134,-0.002847048,0.005009305 +14652000,baro,487.53473 +14660000,baro,487.59106 +14660000,mag,0.19900002,-0.08200001,0.43100002 +14660000,imu,-0.14561847,0.12275511,-9.899609,-0.007289347,-0.0068116477,0.0020594199 +14660000,airspeed,-1.9406294,-1.8953371 +14664000,imu,-0.10497238,0.11950292,-9.927882,-0.0053112046,-0.008418522,0.0041244677 +14664000,airspeed,-1.0025576,-0.9791612 +14664000,baro,487.5535 +14664000,mag,0.19900002,-0.08200001,0.43100002 +14668000,airspeed,4.395998,4.293455 +14668000,mag,0.19900002,-0.08200001,0.43100002 +14668000,imu,-0.1643854,0.19445111,-9.991647,0.0036971187,-0.008056885,-4.5659905e-05 +14668000,baro,487.3798 +14672000,airspeed,2.8576977,2.7910297 +14672000,mag,0.19900002,-0.08200001,0.43100002 +14672000,baro,487.42673 +14672000,imu,-0.18946917,0.2028806,-9.924088,0.005745047,-0.011090363,-0.0028957035 +14676000,mag,0.19900002,-0.08200001,0.43100002 +14676000,imu,-0.17524225,0.1726086,-9.90822,-0.00014325311,-0.0074570226,-2.7122134e-05 +14676000,baro,487.638 +14676000,airspeed,3.6641238,3.5785968 +14680000,mag,0.19900002,-0.08200001,0.43100002 +14680000,baro,487.84927 +14680000,airspeed,-1.2611471,-1.2316941 +14680000,imu,-0.2062389,0.14891997,-9.932262,-0.005404129,-0.00916898,-0.0051796637 +14688000,mag,0.19900002,-0.08200001,0.43100002 +14688000,baro,487.71313 +14688000,imu,-0.21333723,0.220696,-9.961113,-0.005001812,-0.0048106774,-0.005704368 +14688000,airspeed,-2.6719053,-2.6095266 +14692000,mag,0.19900002,-0.08200001,0.43100002 +14692000,baro,487.60983 +14696000,mag,0.19900002,-0.08200001,0.43100002 +14696000,baro,487.60983 +14696000,imu,-0.19092457,0.17275201,-9.961269,-0.0008879852,-0.0013337282,-0.0038591083 +14696000,airspeed,-0.83595973,-0.81644833 +14703999,mag,0.20400001,-0.08000001,0.43 +14703999,airspeed,1.991505,1.9450179 +14703999,baro,487.6568 +14703999,imu,-0.14148772,0.23683135,-9.8895035,-0.0057876604,0.0005811201,-0.0023243336 +14712000,imu,-0.21043585,0.16818011,-9.926424,-0.004047415,-0.008999234,-0.0016394618 +14712000,airspeed,1.2676898,1.2381039 +14712000,mag,0.20400001,-0.08000001,0.43 +14712000,baro,487.58167 +14715999,baro,487.58167 +14715999,airspeed,-1.6053174,-1.5678517 +14715999,mag,0.20400001,-0.08000001,0.43 +14715999,imu,-0.16581275,0.2115656,-10.050854,-0.0010303915,-0.008326914,0.0028551097 +14724000,mag,0.20400001,-0.08000001,0.43 +14724000,airspeed,3.038953,2.9680588 +14724000,baro,487.41266 +14724000,imu,-0.14377254,0.12660973,-9.932643,-0.0006020582,-0.006188949,-0.007848991 +14728000,mag,0.20400001,-0.08000001,0.43 +14728000,baro,487.71313 +14728000,airspeed,1.7296667,1.6892856 +14728000,imu,-0.19424458,0.14987543,-9.952925,-0.0042105215,-0.0074302005,-0.001305449 +14732000,mag,0.20400001,-0.08000001,0.43 +14732000,baro,487.71313 +14732000,airspeed,1.3452675,1.3138608 +14732000,imu,-0.116923355,0.14435688,-9.941609,-0.0051128124,-0.0070051863,0.0005178968 +14740000,baro,487.39856 +14740000,imu,-0.17525193,0.10698328,-9.889076,0.00014138874,-0.00869088,-0.002104114 +14740000,airspeed,-2.7864137,-2.721413 +14740000,mag,0.20400001,-0.08000001,0.43 +14747999,mag,0.20400001,-0.08000001,0.43 +14747999,airspeed,-2.3959272,-2.340012 +14747999,imu,-0.14550763,0.19224837,-9.991958,-0.008491895,-0.0064661056,-0.0017685451 +14747999,baro,487.5676 +14752000,mag,0.20400001,-0.08000001,0.43 +14752000,baro,487.60983 +14752000,airspeed,2.4011438,2.345101 +14752000,imu,-0.14808987,0.18420325,-9.915264,-0.0043404154,-0.0048933513,-0.0025500671 +14756000,airspeed,1.8070922,1.7649132 +14756000,baro,487.62393 +14756000,mag,0.2,-0.07900001,0.42700002 +14756000,imu,-0.15502898,0.15523419,-9.927968,-0.0013326113,-0.005786699,-0.003816527 +14760000,baro,487.62393 +14760000,imu,-0.21504588,0.2074159,-9.933513,0.0004634843,-0.0068000085,0.00030406713 +14760000,mag,0.2,-0.07900001,0.42700002 +14760000,airspeed,-0.9276338,-0.90598214 +14764000,imu,-0.1780515,0.21562584,-9.914016,-0.0014057372,-0.0042500873,0.0021302092 +14764000,baro,487.52533 +14764000,airspeed,-1.8694234,-1.8258004 +14767999,imu,-0.08364913,0.1994059,-9.987064,0.0022070217,-0.0060051056,0.0005175307 +14767999,baro,487.57697 +14767999,mag,0.2,-0.07900001,0.42700002 +14767999,airspeed,-1.0457726,-1.021366 +14776000,baro,487.48306 +14776000,imu,-0.23551711,0.14074083,-9.932411,0.0037064373,-0.0018547146,0.004506913 +14776000,airspeed,-2.1387017,-2.0888 +14776000,mag,0.2,-0.07900001,0.42700002 +14779999,airspeed,2.6596897,2.5976055 +14779999,baro,487.6521 +14779999,imu,-0.15400043,0.17652878,-9.962368,-0.008677251,-0.0034335745,0.004264014 +14779999,mag,0.2,-0.07900001,0.42700002 +14784000,mag,0.2,-0.07900001,0.42700002 +14784000,airspeed,3.7535596,3.6659546 +14784000,baro,487.59576 +14784000,imu,-0.12685204,0.14308456,-9.90126,-0.009424107,-0.008319529,0.0039389115 +14788000,baro,487.59576 +14788000,mag,0.2,-0.07900001,0.42700002 +14792000,imu,-0.1952198,0.11784381,-9.964293,-0.001214297,-0.0030839348,0.00015478481 +14792000,airspeed,1.9727983,1.9267365 +14796000,airspeed,-5.822916,-5.686978 +14796000,imu,-0.25176302,0.14826292,-9.894864,0.00018510317,-0.005184289,-0.0004040407 +14796000,mag,0.2,-0.07900001,0.42700002 +14796000,baro,487.69904 +14799999,airspeed,2.6904876,2.6276996 +14799999,imu,-0.23649399,0.15943599,-9.951244,-0.0032304022,-0.004751677,-0.00034183793 +14804000,baro,487.5488 +14804000,airspeed,2.005181,1.9583874 +14804000,mag,0.2,-0.07900001,0.42700002 +14804000,imu,-0.19398716,0.17523482,-9.927515,-0.0012796491,0.0012111459,-0.0043973043 +14808000,imu,-0.2417389,0.18763335,-9.892079,0.0048130457,0.00244747,-0.004283877 +14808000,airspeed,1.3852603,1.3529264 +14808000,baro,487.6333 +14808000,mag,0.20500001,-0.08200001,0.43 +14811999,imu,-0.22740339,0.186062,-9.944899,0.0050942926,-0.00036301772,-0.0009829904 +14811999,mag,0.20500001,-0.08200001,0.43 +14811999,baro,487.6333 +14811999,airspeed,-2.6232939,-2.5620623 +14816000,mag,0.20500001,-0.08200001,0.43 +14816000,baro,487.60983 +14816000,gps,488103.0,85456074.0,473977508.0,0.0,-0.01,-0.02 +14816000,imu,-0.21244344,0.16207299,-9.944206,0.0013952417,-0.0033682208,0.006896945 +14816000,airspeed,3.385879,3.3068523 +14824000,imu,-0.22002627,0.2414073,-9.76334,-4.6037454e-05,-0.005578656,-0.0028172557 +14824000,baro,487.57227 +14824000,airspeed,-2.829347,-2.7633162 +14824000,mag,0.20500001,-0.08200001,0.43 +14828000,imu,-0.27912912,0.18967518,-9.792333,-0.0003159061,-0.0085375095,-0.001034679 +14828000,airspeed,-1.0639205,-1.0390909 +14828000,mag,0.20500001,-0.08200001,0.43 +14828000,baro,487.57227 +14836000,imu,-0.14204128,0.11178569,-9.90369,-0.0032451442,-0.0057959557,0.0039917543 +14836000,baro,487.6474 +14836000,mag,0.20500001,-0.08200001,0.43 +14836000,airspeed,-3.5242043,-3.441941 +14843999,airspeed,-3.1434076,-3.0700476 +14843999,mag,0.20500001,-0.08200001,0.43 +14843999,imu,-0.12721615,0.20322555,-9.918132,0.0032271447,-0.0078057772,-0.007611014 +14843999,baro,487.5676 +14848000,mag,0.20500001,-0.08200001,0.43 +14848000,baro,487.5676 +14848000,airspeed,-2.468216,-2.4106133 +14848000,imu,-0.16706093,0.18031257,-9.868765,0.003932917,-0.00741855,0.00074324437 +14852000,imu,-0.24482867,0.15678135,-9.884655,0.0029201512,-0.0020580166,0.0021626302 +14852000,mag,0.20500001,-0.08200001,0.43 +14852000,baro,487.66617 +14852000,airspeed,2.6616354,2.5995035 +14856000,mag,0.20500001,-0.08200001,0.43 +14856000,baro,487.66617 +14856000,imu,-0.20622113,0.12870182,-9.925143,0.0021226867,0.0009969829,0.0060179103 +14856000,airspeed,1.1758243,1.1483765 +14863999,airspeed,2.0316632,1.9842469 +14863999,baro,487.58636 +14863999,imu,-0.20053361,0.19332822,-9.957809,-0.0006795868,-0.007419648,-0.0014272663 +14863999,mag,0.202,-0.07900001,0.42900002 +14868000,imu,-0.20329936,0.15733583,-9.922723,-0.000638157,-0.007526427,-0.0009085196 +14868000,airspeed,-1.5355978,-1.4997468 +14868000,baro,487.71783 +14868000,mag,0.202,-0.07900001,0.42900002 +14872000,imu,-0.20293638,0.20306301,-9.927809,0.005674265,-0.0054388465,-0.005785509 +14872000,airspeed,-2.8570726,-2.790388 +14872000,mag,0.202,-0.07900001,0.42900002 +14872000,baro,487.60983 +14875999,imu,-0.18708313,0.15885837,-9.958643,0.005317194,-0.0057624294,-0.0036362065 +14875999,airspeed,3.1112056,3.0385702 +14875999,baro,487.71783 +14875999,mag,0.202,-0.07900001,0.42900002 +14884000,baro,487.62393 +14884000,imu,-0.18398531,0.09708459,-9.863938,-0.002821328,-0.010156674,-0.0050740265 +14884000,mag,0.202,-0.07900001,0.42900002 +14884000,airspeed,-1.1577502,-1.1307275 +14888000,mag,0.202,-0.07900001,0.42900002 +14888000,imu,-0.16775516,0.09147117,-9.8077755,-0.0031376209,-0.0045700334,0.0012308924 +14888000,airspeed,1.6047202,1.5672634 +14888000,baro,487.638 +14892000,airspeed,4.24227,4.1432652 +14892000,imu,-0.16881932,0.12677675,-9.931729,-0.004086104,-0.0055189994,0.0048455363 +14892000,baro,487.5676 +14892000,mag,0.202,-0.07900001,0.42900002 +14895999,mag,0.202,-0.07900001,0.42900002 +14895999,imu,-0.19008633,0.22554344,-9.99198,-0.0019658634,-0.0065573533,-0.0030570354 +14895999,airspeed,2.1327267,2.0829458 +14895999,baro,487.6333 +14904000,mag,0.202,-0.07900001,0.42900002 +14904000,imu,-0.16995245,0.06394962,-9.892904,-0.008394615,-0.0072377822,0.00051466643 +14904000,baro,487.57227 +14904000,airspeed,3.90565,3.8145006 +14907999,mag,0.202,-0.07900001,0.42900002 +14907999,airspeed,-2.8470204,-2.7805772 +14907999,baro,487.57227 +14907999,imu,-0.113212585,0.17626694,-9.821945,-0.005832,-0.0072171497,0.005544962 +14916000,baro,487.69434 +14916000,mag,0.20300001,-0.08300001,0.42900002 +14916000,imu,-0.25623477,0.17563197,-9.982693,-0.005906632,-0.0039196,0.0006600741 +14916000,airspeed,-1.0697569,-1.0447834 +14924000,baro,487.68967 +14924000,airspeed,1.5911041,1.5539602 +14924000,mag,0.20300001,-0.08300001,0.42900002 +14924000,imu,-0.12035748,0.20443939,-9.826609,-0.0022752201,-0.010024095,-0.0007142413 +14927999,airspeed,0.56813794,0.5548778 +14927999,baro,487.60513 +14927999,mag,0.20300001,-0.08300001,0.42900002 +14927999,imu,-0.12937589,0.18770222,-9.846435,-0.0031914862,-0.0008143594,-0.0023166914 +14932000,airspeed,2.571235,2.5112355 +14932000,imu,-0.21016607,0.17755723,-9.901915,-0.0030958527,0.0010159065,-0.00013560166 +14932000,baro,487.52063 +14932000,mag,0.20300001,-0.08300001,0.42900002 +14936000,imu,-0.22252952,0.19034633,-9.977065,-0.0016868414,-0.0061762985,-0.003562105 +14936000,baro,487.50186 +14936000,airspeed,-2.622915,-2.561713 +14936000,mag,0.20300001,-0.08300001,0.42900002 +14939999,airspeed,-2.5054004,-2.4469404 +14939999,baro,487.50186 +14939999,mag,0.20300001,-0.08300001,0.42900002 +14939999,imu,-0.21184209,0.20422496,-9.956747,-0.0035976404,-0.0070401863,-0.0014759285 +14944000,baro,487.6474 +14944000,mag,0.20300001,-0.08300001,0.42900002 +14944000,airspeed,-0.89430463,-0.87342966 +14944000,imu,-0.1929659,0.14888382,-9.916317,-0.0013298979,0.0011419135,-0.00025028316 +14948000,mag,0.20300001,-0.08300001,0.42900002 +14948000,baro,487.5535 +14948000,airspeed,1.7258192,1.6855441 +14948000,imu,-0.13316807,0.14909095,-9.950286,-0.0022784602,0.005585868,0.00089597603 +14952000,mag,0.20300001,-0.08300001,0.42900002 +14952000,baro,487.52063 +14952000,imu,-0.13036175,0.16653037,-9.969882,-0.006324147,0.0025174941,-0.0009209331 +14952000,airspeed,-1.1737407,-1.1463517 +14956000,baro,487.4643 +14956000,airspeed,3.2241597,3.1489346 +14956000,imu,-0.09764661,0.2348077,-9.930022,-0.00029552873,-0.0036680752,0.00020589308 +14956000,mag,0.20300001,-0.08300001,0.42900002 +14959999,baro,487.4643 +14959999,imu,-0.19093214,0.23134749,-9.906492,-0.0024434202,-0.003499725,0.0050222045 +14959999,mag,0.20300001,-0.08300001,0.42900002 +14959999,airspeed,-2.9325686,-2.8641467 +14964000,imu,-0.19252071,0.20831941,-9.940632,-0.000677919,-0.008004542,0.0028880348 +14964000,mag,0.20300001,-0.08300001,0.42900002 +14964000,baro,487.6568 +14964000,airspeed,-0.5543029,-0.54136395 +14971999,airspeed,2.9476702,2.8788667 +14971999,baro,487.638 +14971999,imu,-0.24751253,0.22070958,-9.883333,0.002227613,-0.0059348783,0.0057676085 +14971999,mag,0.202,-0.08000001,0.42900002 +14976000,imu,-0.17660603,0.26413304,-9.921635,0.0030786253,7.084619e-05,-0.0053332215 +14976000,airspeed,0.749342,0.7318511 +14976000,baro,487.638 +14976000,mag,0.202,-0.08000001,0.42900002 +14980000,baro,487.638 +14980000,airspeed,2.4085095,2.3522909 +14980000,mag,0.202,-0.08000001,0.42900002 +14980000,imu,-0.15095785,0.19513474,-9.926257,3.4740628e-05,-0.007584882,-0.00960981 +14984000,imu,-0.1963311,0.16264805,-9.908907,-0.0015525997,-0.010825403,-0.0011944665 +14984000,airspeed,0.5417553,0.5291094 +14984000,baro,487.6521 +14984000,mag,0.202,-0.08000001,0.42900002 +14991999,imu,-0.17570612,0.16366318,-9.922089,0.0030616596,-0.0068880976,0.002700058 +14991999,airspeed,-3.9430873,-3.8510401 +14991999,mag,0.202,-0.08000001,0.42900002 +14991999,baro,487.67557 +14996000,imu,-0.22148275,0.11114735,-9.880768,-0.0016713515,-0.011560159,-0.00104083 +14996000,mag,0.202,-0.08000001,0.42900002 +14996000,baro,487.67557 +14996000,airspeed,-2.6478338,-2.5860229 +15000000,imu,-0.21828057,0.11938715,-9.898635,-0.004109082,-0.0101630455,-0.002007165 +15000000,mag,0.202,-0.08000001,0.42900002 +15000000,baro,487.5629 +15000000,airspeed,-2.2084706,-2.1569307 +15008000,imu,-0.13468415,0.21300465,-9.849547,-0.0052764793,-0.0061213686,0.005924668 +15008000,baro,487.7366 +15008000,mag,0.202,-0.08000001,0.42900002 +15008000,airspeed,3.2683873,3.1920786 +15012000,airspeed,-1.0839618,-1.0586641 +15012000,baro,487.57697 +15012000,imu,-0.113289244,0.19557029,-9.830226,-0.0035603703,-0.004746103,0.004044257 +15012000,mag,0.202,-0.08000001,0.42900002 +15016000,airspeed,0.943843,0.9218242 +15016000,gps,488099.0,85456074.0,473977508.0,0.0,0.0,0.01 +15016000,baro,487.41733 +15016000,mag,0.19900002,-0.08200001,0.42900002 +15016000,imu,-0.19052604,0.13997474,-9.836464,0.0028925762,-0.004433501,0.0019070017 +15020000,imu,-0.20966715,0.16467385,-9.903628,0.00052521296,-0.012719169,0.0008468199 +15020000,airspeed,-3.1033444,-3.030947 +15020000,mag,0.19900002,-0.08200001,0.42900002 +15020000,baro,487.41733 +15023999,mag,0.19900002,-0.08200001,0.42900002 +15023999,imu,-0.21536317,0.22896425,-9.956337,-0.0014547402,-0.011533165,0.0004749706 +15023999,airspeed,3.9010608,3.8100007 +15023999,baro,487.6474 +15032000,mag,0.19900002,-0.08200001,0.42900002 +15032000,imu,-0.16663092,0.23671763,-9.947591,-0.0014178072,-0.0017281972,-0.0042569125 +15032000,baro,487.6333 +15032000,airspeed,-2.1924784,-2.1413026 +15035999,airspeed,2.571381,2.5113575 +15035999,imu,-0.24904826,0.20147082,-9.97021,-0.004971878,-0.007204548,-0.004103411 +15035999,mag,0.19900002,-0.08200001,0.42900002 +15035999,baro,487.6568 +15040000,baro,487.60513 +15040000,mag,0.19900002,-0.08200001,0.42900002 +15044000,baro,487.5488 +15044000,mag,0.19900002,-0.08200001,0.42900002 +15044000,airspeed,2.3977194,2.3417652 +15044000,imu,-0.095084034,0.19527863,-9.893308,0.0051225643,-0.010769509,0.00074314984 +15048000,mag,0.19900002,-0.08200001,0.42900002 +15048000,imu,-0.13834889,0.24603732,-9.857246,0.0053891046,-0.011917097,-0.0011212147 +15048000,baro,487.61923 +15048000,airspeed,1.0474454,1.0229974 +15055999,baro,487.60983 +15055999,airspeed,-1.9408879,-1.8955876 +15055999,mag,0.19900002,-0.08200001,0.42900002 +15055999,imu,-0.15037383,0.17065766,-9.954557,-0.0021195556,-0.0077420375,0.0019289715 +15060000,mag,0.19900002,-0.08200001,0.42900002 +15060000,imu,-0.13690735,0.14913571,-9.932934,-0.0023456204,-0.0101102255,0.0029486325 +15060000,baro,487.60983 +15060000,airspeed,2.0593069,2.0112426 +15064000,mag,0.19900002,-0.08200001,0.42900002 +15064000,imu,-0.16719677,0.18224874,-9.889449,-0.0028413879,-0.007955803,-0.00013022627 +15064000,baro,487.49716 +15064000,airspeed,-3.0439272,-2.9729016 +15067999,imu,-0.19300142,0.17923635,-9.860121,0.0037903204,-0.006074045,-0.001431521 +15067999,mag,0.2,-0.08100001,0.42900002 +15067999,baro,487.57697 +15067999,airspeed,3.11803,3.045261 +15076000,baro,487.71313 +15076000,mag,0.2,-0.08100001,0.42900002 +15076000,imu,-0.19786836,0.17598169,-9.98576,0.0025014617,-0.0015485048,-0.0030688026 +15076000,airspeed,3.478621,3.397409 +15080000,baro,487.4643 +15080000,mag,0.2,-0.08100001,0.42900002 +15080000,airspeed,2.0010505,1.9543631 +15080000,imu,-0.24623775,0.1905401,-9.942621,-0.0033033108,-0.0033046713,-0.0029165584 +15084000,baro,487.4643 +15084000,mag,0.2,-0.08100001,0.42900002 +15084000,imu,-0.22133346,0.19814728,-9.880444,-0.008291523,-0.00820622,-0.00087221566 +15084000,airspeed,3.9544954,3.8622313 +15087999,imu,-0.17670658,0.24648012,-9.948612,-0.0033652817,-0.0070066373,0.0014171276 +15087999,airspeed,2.7731373,2.7084215 +15087999,mag,0.2,-0.08100001,0.42900002 +15087999,baro,487.5488 +15092000,imu,-0.2094062,0.2046734,-9.961208,0.0009447069,-0.006510013,0.0029505598 +15092000,mag,0.2,-0.08100001,0.42900002 +15092000,airspeed,1.8035866,1.7614969 +15092000,baro,487.5488 +15096000,airspeed,2.4740164,2.4162862 +15096000,imu,-0.18577822,0.17641367,-9.8930235,0.0023852086,-0.006501023,0.00014112306 +15096000,baro,487.51593 +15096000,mag,0.2,-0.08100001,0.42900002 +15099999,airspeed,1.1354594,1.1089638 +15099999,mag,0.2,-0.08100001,0.42900002 +15099999,baro,487.51593 +15099999,imu,-0.20600578,0.15887082,-9.913483,0.0013472463,-0.004936806,0.0016591799 +15104000,baro,487.52063 +15104000,imu,-0.19711804,0.109650634,-10.006033,-0.004460721,-0.008711238,-0.000604348 +15104000,airspeed,0.78294516,0.7646753 +15104000,mag,0.2,-0.08100001,0.42900002 +15108000,airspeed,2.3502445,2.295377 +15108000,baro,487.69904 +15108000,mag,0.2,-0.08100001,0.42900002 +15108000,imu,-0.15936288,0.10310305,-9.969546,-0.008126608,-0.006155983,-0.0035152147 +15112000,baro,487.69904 +15112000,mag,0.2,-0.08100001,0.42900002 +15112000,imu,-0.0954316,0.12792766,-9.924985,-0.0022419144,-0.0042527267,0.0033825971 +15112000,airspeed,-2.994545,-2.924636 +15116000,baro,487.68027 +15116000,imu,-0.113169804,0.18887876,-9.940597,-0.002636925,-0.008074439,0.0021751386 +15116000,airspeed,-2.1370287,-2.0871415 +15116000,mag,0.2,-0.08100001,0.42900002 +15119999,baro,487.6521 +15119999,mag,0.201,-0.084000014,0.43 +15119999,airspeed,1.3795923,1.347389 +15119999,imu,-0.22043848,0.24761455,-9.919136,-0.009860018,-0.011656754,-0.00031029366 +15124000,baro,487.6521 +15124000,mag,0.201,-0.084000014,0.43 +15128000,imu,-0.20522527,0.14134823,-9.904604,-0.001575204,-0.005856579,0.00024286406 +15128000,airspeed,-1.8968437,-1.8525776 +15131999,airspeed,-2.5785046,-2.5183198 +15131999,mag,0.201,-0.084000014,0.43 +15131999,baro,487.62393 +15131999,imu,-0.23657188,0.1064957,-9.847254,-0.0052577807,-0.006116911,-0.000787303 +15140000,mag,0.201,-0.084000014,0.43 +15140000,airspeed,-4.481754,-4.3771167 +15140000,baro,487.7366 +15140000,imu,-0.1837714,0.097408675,-9.901546,-0.0020754237,-0.013429993,-0.0009715027 +15144000,mag,0.201,-0.084000014,0.43 +15144000,baro,487.5535 +15144000,airspeed,-1.798008,-1.7560482 +15144000,imu,-0.12451387,0.16574238,-9.93231,-0.0071742767,-0.012724214,-0.0020005226 +15148000,baro,487.60983 +15148000,imu,-0.16620353,0.20102112,-9.921393,-0.0061114365,-0.007817691,-0.0006841236 +15148000,airspeed,3.0736277,3.0018885 +15148000,mag,0.201,-0.084000014,0.43 +15151999,imu,-0.17364791,0.24737714,-9.924909,-0.0041706827,-0.0091001,0.0014652491 +15151999,mag,0.201,-0.084000014,0.43 +15151999,airspeed,0.69743073,0.6811525 +15151999,baro,487.60983 +15160000,airspeed,-2.2404504,-2.1881459 +15160000,baro,487.69904 +15160000,imu,-0.20710358,0.20674403,-9.960462,0.0014810751,-0.0002425595,-0.001353641 +15160000,mag,0.201,-0.084000014,0.43 +15164000,imu,-0.23441517,0.15356927,-9.945119,-0.00027040148,-0.006156256,0.0027724626 +15164000,mag,0.201,-0.084000014,0.43 +15164000,baro,487.5535 +15164000,airspeed,-2.5267665,-2.4677997 +15168000,imu,-0.21317677,0.11317475,-9.893018,-0.00011772835,-0.0075320723,0.0049020415 +15168000,mag,0.201,-0.084000014,0.43 +15168000,airspeed,1.8614229,1.8179767 +15168000,baro,487.61453 +15172000,baro,487.638 +15172000,imu,-0.18839324,0.16727586,-9.898667,-0.0048001437,-0.0018707814,-0.005504824 +15172000,mag,0.20500001,-0.08000001,0.42900002 +15172000,airspeed,3.6079798,3.5237634 +15176000,mag,0.20500001,-0.08000001,0.42900002 +15176000,airspeed,-3.2601266,-3.184032 +15176000,baro,487.62863 +15176000,imu,-0.16282372,0.16035706,-9.975338,-0.0030110418,-0.0010187158,-0.009941518 +15180000,airspeed,0.9746455,0.9518956 +15180000,baro,487.638 +15180000,imu,-0.18745708,0.1430899,-9.973487,-0.0002122324,-0.003514685,-0.0033236833 +15180000,mag,0.20500001,-0.08000001,0.42900002 +15183999,mag,0.20500001,-0.08000001,0.42900002 +15183999,baro,487.638 +15183999,airspeed,1.5012056,1.4661648 +15183999,imu,-0.1986319,0.22380042,-9.974238,-0.004537189,-0.008441159,-0.001151713 +15188000,baro,487.5394 +15188000,airspeed,3.470851,3.3898551 +15188000,imu,-0.21235886,0.25000158,-9.990177,-0.0044961856,-0.006471386,0.00037762834 +15188000,mag,0.20500001,-0.08000001,0.42900002 +15196000,mag,0.20500001,-0.08000001,0.42900002 +15196000,baro,487.71313 +15196000,airspeed,-2.1440308,-2.093976 +15196000,imu,-0.10823499,0.14622334,-9.907168,-0.0024532925,-0.004970498,0.003170357 +15200000,mag,0.20500001,-0.08000001,0.42900002 +15200000,imu,-0.10806591,0.17155816,-9.952847,-0.0016837153,-0.006338371,0.0029966647 +15200000,airspeed,-3.5561185,-3.4731393 +15200000,baro,487.50656 +15208000,baro,487.7272 +15208000,imu,-0.2035909,0.24523765,-9.882877,-0.0015879392,-0.00998943,-0.0003120004 +15208000,airspeed,2.995748,2.9258065 +15208000,mag,0.20500001,-0.08000001,0.42900002 +15212000,imu,-0.1415422,0.2162763,-9.876443,-0.0042414004,-0.013938414,0.00070338114 +15212000,airspeed,-1.7797074,-1.7381624 +15212000,baro,487.67087 +15212000,mag,0.20500001,-0.08000001,0.42900002 +15215999,imu,-0.16964136,0.21526273,-9.934698,-0.002311018,-0.017202817,-0.0023051288 +15215999,baro,487.67087 +15215999,airspeed,3.627514,3.5428345 +15215999,mag,0.20500001,-0.08000001,0.42900002 +15220000,baro,487.67087 +15220000,imu,-0.1797165,0.17579773,-9.942891,-0.0029872959,-0.0072675794,-0.0033090096 +15220000,gps,488106.0,85456074.0,473977508.0,0.0,0.0,0.0 +15220000,airspeed,-1.6991998,-1.6595343 +15220000,mag,0.20500001,-0.08000001,0.42900002 +15228000,mag,0.201,-0.08000001,0.42700002 +15228000,imu,-0.14825727,0.15160178,-9.967285,0.0007838576,-0.005109669,-0.0012467529 +15228000,baro,487.7366 +15228000,airspeed,-2.5212932,-2.462427 +15232000,airspeed,1.1709206,1.1435825 +15232000,imu,-0.18835254,0.09273285,-9.965851,-0.00593662,-0.006168037,0.003866263 +15232000,baro,487.7366 +15232000,mag,0.201,-0.08000001,0.42700002 +15236000,baro,487.59576 +15236000,airspeed,1.0503044,1.0257912 +15236000,mag,0.201,-0.08000001,0.42700002 +15236000,imu,-0.22706829,0.077954546,-9.895923,-0.0066244346,-0.0085861115,0.00093875197 +15240000,airspeed,-1.7018027,-1.6620954 +15240000,mag,0.201,-0.08000001,0.42700002 +15240000,imu,-0.18879287,0.14580531,-9.8614435,-0.0015435789,-0.0040016617,0.00053347857 +15240000,baro,487.48306 +15247999,mag,0.201,-0.08000001,0.42700002 +15247999,airspeed,-1.2061834,-1.1780261 +15247999,imu,-0.22037405,0.17356142,-9.902942,-0.0036965369,-0.0070023155,0.00084746163 +15247999,baro,487.68027 +15252000,imu,-0.24960507,0.15296261,-9.920132,-0.0057790023,-0.002972795,-0.001056415 +15256000,imu,-0.18315753,0.12782669,-9.869546,-0.00526475,-0.0024892355,0.0048217736 +15256000,airspeed,-1.8856244,-1.8416114 +15256000,baro,487.6333 +15256000,mag,0.201,-0.08000001,0.42700002 +15260000,mag,0.201,-0.08000001,0.42700002 +15260000,baro,487.52533 +15264000,airspeed,3.0243468,2.9537387 +15264000,imu,-0.21638747,0.19564821,-9.924517,-0.0019622382,0.00027337225,-0.0008625511 +15264000,mag,0.201,-0.08000001,0.42700002 +15264000,baro,487.71783 +15267999,baro,487.60983 +15267999,airspeed,3.9724317,3.8797152 +15267999,imu,-0.23352163,0.18993762,-9.990232,-0.0053504505,-0.005307222,-0.0016774158 +15267999,mag,0.201,-0.08000001,0.42700002 +15276000,baro,487.70844 +15276000,imu,-0.20248099,0.19838062,-9.8416605,-0.0010745756,-0.01128729,-0.00087739615 +15276000,mag,0.2,-0.084000014,0.42800003 +15276000,airspeed,-2.4474978,-2.3903587 +15279999,imu,-0.2039063,0.21128508,-9.911031,0.00023792223,-0.0049207606,0.0022443119 +15279999,baro,487.70844 +15279999,airspeed,0.54609,0.53334105 +15279999,mag,0.2,-0.084000014,0.42800003 +15284000,mag,0.2,-0.084000014,0.42800003 +15284000,baro,487.75537 +15284000,imu,-0.13756645,0.21653137,-9.969448,0.0005578929,-0.0022161203,0.004414952 +15284000,airspeed,3.6605704,3.5751014 +15288000,airspeed,-2.3751342,-2.3196783 +15288000,baro,487.75537 +15288000,mag,0.2,-0.084000014,0.42800003 +15288000,imu,-0.1268036,0.15413958,-9.865345,-0.0004136144,-0.008349398,-0.0028459271 +15296000,airspeed,3.2235286,3.1482904 +15296000,imu,-0.12112107,0.21085386,-9.925945,-0.0068501295,-0.005656631,0.0015537912 +15296000,baro,487.61453 +15296000,mag,0.2,-0.084000014,0.42800003 +15299999,mag,0.2,-0.084000014,0.42800003 +15299999,airspeed,-2.4379582,-2.3810608 +15299999,imu,-0.18134484,0.25856513,-9.949926,-0.006050602,-0.008044737,0.0026785657 +15299999,baro,487.57697 +15304000,imu,-0.18763733,0.1998591,-9.892429,-0.0033552637,-0.0076701907,0.008686136 +15304000,mag,0.2,-0.084000014,0.42800003 +15304000,baro,487.6427 +15304000,airspeed,-3.81298,-3.7239769 +15308000,airspeed,4.4182763,4.3151674 +15308000,baro,487.5535 +15308000,mag,0.2,-0.084000014,0.42800003 +15308000,imu,-0.13135096,0.15262507,-9.927702,0.002957482,-0.000514627,0.0034737303 +15311999,mag,0.2,-0.084000014,0.42800003 +15311999,baro,487.62393 +15311999,airspeed,4.398326,4.2956657 +15311999,imu,-0.1634951,0.20982385,-9.943555,0.0026689137,-0.0005268602,-0.0030763955 +15316000,imu,-0.17364383,0.21841231,-9.961971,-0.0057043754,-0.005633118,-0.002570566 +15316000,baro,487.62393 +15316000,airspeed,-2.8424046,-2.7760606 +15316000,mag,0.2,-0.084000014,0.42800003 +15320000,imu,-0.2194639,0.1939601,-9.961131,-0.0059124473,-0.007896898,-0.003173733 +15324000,airspeed,1.9284763,1.8834714 +15324000,imu,-0.19273955,0.21123159,-9.9170065,-0.011517743,-0.008889456,0.00013061197 +15324000,baro,487.5582 +15324000,mag,0.2,-0.084000014,0.42800003 +15331999,mag,0.2,-0.08100001,0.42800003 +15331999,baro,487.75537 +15331999,imu,-0.103678994,0.12287809,-9.95873,-0.0018859921,-0.009442789,0.0005185815 +15331999,airspeed,3.2952886,3.218348 +15336000,baro,487.62863 +15336000,airspeed,-0.26619166,-0.25997844 +15336000,imu,-0.1705202,0.14850518,-9.956148,0.0020301722,-0.0066403705,-0.0006316933 +15336000,mag,0.2,-0.08100001,0.42800003 +15340000,airspeed,-3.49186,-3.4103765 +15340000,baro,487.52533 +15340000,imu,-0.17265525,0.14916353,-9.956536,-0.0020994947,-0.004210382,0.001568528 +15340000,mag,0.2,-0.08100001,0.42800003 +15343999,airspeed,-2.8901331,-2.822671 +15343999,imu,-0.18086663,0.21378012,-9.898752,-0.0025126045,-0.00939451,0.0016076913 +15343999,mag,0.2,-0.08100001,0.42800003 +15343999,baro,487.6474 +15348000,mag,0.2,-0.08100001,0.42800003 +15348000,imu,-0.21639602,0.20328915,-9.857645,0.0033951693,-0.0065550436,0.002729902 +15348000,baro,487.6474 +15348000,airspeed,2.986617,2.9169028 +15352000,imu,-0.13612776,0.15114021,-9.910785,0.0030515823,-0.0028070023,0.004709493 +15356000,airspeed,-1.426122,-1.392828 +15356000,mag,0.2,-0.08100001,0.42800003 +15356000,baro,487.70844 +15360000,mag,0.2,-0.08100001,0.42800003 +15360000,imu,-0.14574811,0.21584608,-9.86506,0.0031680295,-0.00517128,0.005788018 +15360000,airspeed,-1.2996364,-1.2693038 +15360000,baro,487.59576 +15363999,imu,-0.1410256,0.2662559,-9.967037,-0.0021013105,-0.0046557575,0.00616285 +15363999,mag,0.2,-0.08100001,0.42800003 +15363999,baro,487.69434 +15363999,airspeed,-1.7640057,-1.7228248 +15368000,imu,-0.14441404,0.23878704,-10.014479,-0.012575055,-0.0068628066,0.0019944939 +15368000,mag,0.2,-0.08100001,0.42800003 +15368000,baro,487.69904 +15368000,airspeed,-2.0138786,-1.966864 +15375999,mag,0.2,-0.08100001,0.42800003 +15375999,baro,487.61923 +15375999,imu,-0.15391374,0.23232502,-9.9689045,-0.0014309406,-0.009546376,0.0011902173 +15375999,airspeed,2.3789446,2.3234184 +15380000,mag,0.201,-0.07800001,0.42800003 +15380000,imu,-0.16957079,0.2426713,-9.907127,-0.0041540787,-0.0060830023,-0.00069862267 +15380000,baro,487.61923 +15380000,airspeed,-3.164982,-3.0911093 +15384000,baro,487.61923 +15384000,mag,0.201,-0.07800001,0.42800003 +15384000,airspeed,3.3343413,3.2565155 +15388000,imu,-0.22290948,0.19437988,-9.950046,-0.003582986,-0.0027959647,-0.00028146623 +15392000,baro,487.61453 +15392000,airspeed,-3.2114258,-3.13647 +15392000,mag,0.201,-0.07800001,0.42800003 +15392000,imu,-0.15262972,0.2403696,-9.933749,0.00029625327,-0.007142385,0.0017813426 +15395999,airspeed,3.2878394,3.2111113 +15395999,mag,0.201,-0.07800001,0.42800003 +15395999,baro,487.5535 +15400000,baro,487.71783 +15400000,imu,-0.22273587,0.075240694,-9.981317,-0.0023008627,-0.0031553023,-0.00020530414 +15400000,mag,0.201,-0.07800001,0.42800003 +15400000,airspeed,-3.2798667,-3.2032938 +15404000,airspeed,-4.084988,-3.9896333 +15404000,mag,0.201,-0.07800001,0.42800003 +15404000,imu,-0.25751925,0.0798677,-9.925504,-0.0020278764,0.0025628645,0.0023033638 +15404000,baro,487.6521 +15412000,imu,-0.2142871,0.20462519,-9.913616,-0.0030427894,-0.0029661623,0.008022232 +15412000,airspeed,-4.41885,-4.3156996 +15412000,mag,0.201,-0.07800001,0.42800003 +15412000,baro,487.66617 +15420000,gps,488110.0,85456074.0,473977508.0,0.02,-0.03,0.01 +15420000,mag,0.201,-0.07800001,0.42800003 +15420000,baro,487.59576 +15420000,imu,-0.18844761,0.23369706,-9.808521,-0.0014538952,-0.012518656,-0.0017035726 +15420000,airspeed,3.4581761,3.3774648 +15424000,baro,487.5676 +15424000,mag,0.201,-0.07800001,0.42800003 +15424000,imu,-0.13433172,0.18278034,-9.918771,-0.001530975,-0.011642803,0.0024201435 +15424000,airspeed,-2.039121,-1.9915326 +15432000,mag,0.19900002,-0.084000014,0.42900002 +15432000,baro,487.68027 +15432000,imu,-0.19068003,0.24321063,-10.0216255,-0.0041704,-0.006975877,-0.0020059112 +15432000,airspeed,-3.7421856,-3.6548274 +15439999,imu,-0.1656287,0.14714622,-9.911562,-0.0058147795,-0.00824227,-0.0021610074 +15439999,baro,487.6568 +15439999,mag,0.19900002,-0.084000014,0.42900002 +15439999,airspeed,-1.4757828,-1.4413338 +15444000,imu,-0.19923241,0.15489936,-9.950402,-0.00057494483,-0.0036892502,-0.0011375237 +15444000,mag,0.19900002,-0.084000014,0.42900002 +15444000,airspeed,-2.1506994,-2.1004899 +15444000,baro,487.70844 +15448000,imu,-0.26396078,0.1515751,-9.992381,-3.201771e-05,-0.005358673,0.0026297942 +15448000,mag,0.19900002,-0.084000014,0.42900002 +15448000,airspeed,4.27055,4.170887 +15448000,baro,487.5629 +15456000,imu,-0.17282705,0.15948057,-9.854395,-6.23713e-05,-0.0027488195,-0.007027408 +15456000,airspeed,-0.6399331,-0.6249988 +15456000,baro,487.5629 +15456000,mag,0.19900002,-0.084000014,0.42900002 +15464000,imu,-0.23572528,0.16941306,-9.899208,-0.0036045844,-0.005796455,-0.0020021463 +15464000,airspeed,-1.579247,-1.5423969 +15464000,mag,0.19900002,-0.084000014,0.42900002 +15464000,baro,487.50656 +15468000,baro,487.50656 +15468000,airspeed,-1.8950065,-1.8507885 +15468000,imu,-0.25624835,0.18358523,-9.878191,-0.0034429429,-0.005338056,-5.2110976e-05 +15468000,mag,0.19900002,-0.084000014,0.42900002 +15472000,imu,-0.21128432,0.14988962,-9.893492,-0.0020124544,-0.0061567277,0.0046802405 +15472000,airspeed,3.0496747,2.9785159 +15472000,baro,487.49246 +15472000,mag,0.19900002,-0.084000014,0.42900002 +15476000,mag,0.19900002,-0.084000014,0.42900002 +15476000,airspeed,4.311552,4.2109003 +15476000,baro,487.68967 +15476000,imu,-0.14703533,0.13709973,-9.920205,-0.0005936948,0.00033487385,0.0021731004 +15480000,mag,0.19900002,-0.084000014,0.42900002 +15480000,imu,-0.11282263,0.12289913,-9.989011,-0.0044674273,-0.0023853888,-0.0031626853 +15480000,airspeed,-0.44767767,-0.43722486 +15480000,baro,487.76007 +15484000,airspeed,-3.788679,-3.700265 +15484000,baro,487.5488 +15484000,mag,0.19900002,-0.084000014,0.42900002 +15484000,imu,-0.17801966,0.14516264,-10.017029,0.0012033837,-0.013158987,-0.0028815896 +15488000,imu,-0.17539524,0.16098244,-9.963231,0.0043416806,-0.01420509,-0.0015098717 +15488000,airspeed,-2.7333617,-2.6695542 +15488000,baro,487.67557 +15488000,mag,0.201,-0.07900001,0.42800003 +15492000,imu,-0.12600076,0.19961952,-9.877319,-0.004516165,-0.004434729,0.0014183314 +15492000,baro,487.59576 +15492000,airspeed,0.4380102,0.42778733 +15492000,mag,0.201,-0.07900001,0.42800003 +15496000,imu,-0.155301,0.24075866,-9.863732,-0.004920539,0.006365522,0.0038467248 +15496000,baro,487.59576 +15496000,airspeed,-2.8219771,-2.7561145 +15496000,mag,0.201,-0.07900001,0.42800003 +15500000,baro,487.62393 +15500000,imu,-0.16603018,0.14546041,-9.898499,0.00059838296,-0.0018938553,0.005576478 +15500000,mag,0.201,-0.07900001,0.42800003 +15500000,airspeed,4.20487,4.106725 +15504000,airspeed,-1.5222402,-1.4866925 +15504000,imu,-0.14521924,0.15642634,-9.936364,0.0030598657,-0.011129406,0.005292855 +15504000,baro,487.8164 +15504000,mag,0.201,-0.07900001,0.42800003 +15508000,mag,0.201,-0.07900001,0.42800003 +15508000,imu,-0.11521617,0.23085925,-9.948402,-0.0019117206,-0.0062635005,0.00071978744 +15508000,baro,487.50656 +15508000,airspeed,-1.6392823,-1.6010314 +15512000,airspeed,3.026112,2.9554772 +15512000,imu,-0.09065179,0.18376964,-9.896756,-0.004062467,-0.0030218759,-0.002352571 +15512000,baro,487.638 +15512000,mag,0.201,-0.07900001,0.42800003 +15516000,airspeed,3.412786,3.3331254 +15516000,mag,0.201,-0.07900001,0.42800003 +15516000,baro,487.638 +15516000,imu,-0.12299939,0.17968984,-9.859044,0.0012591355,-0.009344273,-0.004085621 +15520000,airspeed,-0.52414554,-0.5119101 +15520000,imu,-0.20707296,0.13363877,-9.882951,0.002478843,-0.014043169,-0.0046300446 +15520000,baro,487.67087 +15520000,mag,0.201,-0.07900001,0.42800003 +15524000,imu,-0.15402448,0.09052125,-9.932554,0.002555518,-0.009196853,-0.0030947553 +15524000,airspeed,2.7042985,2.6411703 +15524000,mag,0.201,-0.07900001,0.42800003 +15524000,baro,487.67087 +15528000,imu,-0.08044294,0.14696047,-9.940758,-0.0020739043,-0.0012805423,0.00054554216 +15528000,airspeed,0.9929889,0.969814 +15528000,mag,0.201,-0.07900001,0.42800003 +15528000,baro,487.58636 +15536000,baro,487.5582 +15536000,mag,0.201,-0.07900001,0.42800003 +15536000,imu,-0.20233606,0.26360887,-9.960786,-0.004582804,-0.0067449813,0.0045927283 +15536000,airspeed,3.6000152,3.516001 +15540000,mag,0.19900002,-0.08200001,0.43 +15540000,baro,487.66617 +15540000,airspeed,-2.6851988,-2.6225173 +15540000,imu,-0.17972101,0.29754633,-10.003066,-0.00380804,-0.009302457,0.0015464035 +15544000,baro,487.6568 +15544000,airspeed,-3.1351705,-3.0619872 +15544000,imu,-0.17837858,0.27309915,-9.9889555,-0.0030766763,-0.0074327765,-9.5906355e-05 +15544000,mag,0.19900002,-0.08200001,0.43 +15548000,mag,0.19900002,-0.08200001,0.43 +15548000,airspeed,-3.4019403,-3.3225272 +15548000,imu,-0.19031037,0.22405414,-9.992674,0.0008414196,-0.0011674527,0.002775852 +15548000,baro,487.66617 +15552000,imu,-0.21607277,0.23119777,-9.941717,0.0028851808,-0.0051044836,0.0038249856 +15552000,baro,487.6568 +15552000,mag,0.19900002,-0.08200001,0.43 +15552000,airspeed,-0.780539,-0.76231897 +15556000,baro,487.5535 +15556000,airspeed,-3.4852655,-3.4039304 +15556000,mag,0.19900002,-0.08200001,0.43 +15556000,imu,-0.27908385,0.2649856,-9.897935,-0.0032400906,-0.006822618,-0.0009006546 +15560000,baro,487.77887 +15560000,airspeed,2.223116,2.1712062 +15560000,mag,0.19900002,-0.08200001,0.43 +15560000,imu,-0.23711814,0.19362685,-9.925654,-0.0029359127,-0.0038991799,-0.0022504134 +15564000,airspeed,1.9531374,1.9075316 +15564000,baro,487.77887 +15564000,imu,-0.17319013,0.14615,-9.924917,-0.00015403001,-0.006287747,0.0034234559 +15564000,mag,0.19900002,-0.08200001,0.43 +15568000,baro,487.58167 +15568000,imu,-0.24274597,0.17772658,-9.937577,-0.0027135506,-0.0031805977,0.008984504 +15568000,airspeed,3.1129067,3.040256 +15568000,mag,0.19900002,-0.08200001,0.43 +15572000,baro,487.58167 +15572000,mag,0.19900002,-0.08200001,0.43 +15576000,airspeed,-2.768948,-2.704295 +15576000,imu,-0.16078372,0.1822454,-9.964562,0.0003238912,-0.0069305548,0.00058071135 +15580000,airspeed,3.717575,3.6307654 +15580000,baro,487.79764 +15580000,imu,-0.14845867,0.16185592,-9.9114275,-0.0001046239,-0.009944669,0.00072760595 +15580000,mag,0.19900002,-0.08200001,0.43 +15588000,baro,487.67087 +15588000,airspeed,-1.2192715,-1.1908095 +15588000,imu,-0.23423277,0.12943524,-9.939641,-0.0031676563,-0.0068733525,0.001115114 +15588000,mag,0.19600001,-0.07800001,0.43100002 +15592000,baro,487.67087 +15592000,airspeed,-3.2675061,-3.191231 +15592000,imu,-0.20578177,0.13766195,-9.921477,-0.004354666,-0.003468033,-0.0067379996 +15592000,mag,0.19600001,-0.07800001,0.43100002 +15596000,airspeed,0.6535112,0.6382553 +15596000,imu,-0.16001472,0.22010593,-9.970916,-0.0022436015,-0.0027555688,-0.00029283724 +15600000,mag,0.19600001,-0.07800001,0.43100002 +15600000,imu,-0.17449501,0.15743324,-9.990742,0.0013042738,-0.003164687,0.0050235637 +15600000,landed,1.0 +15600000,airspeed,-1.7421092,-1.7014524 +15600000,baro,487.5676 +15604000,imu,-0.15577903,0.13942422,-9.937898,0.004041216,-0.0046390477,-0.00092140626 +15604000,airspeed,-2.7787828,-2.7139332 +15608000,mag,0.19600001,-0.07800001,0.43100002 +15608000,airspeed,0.8260712,0.8067989 +15608000,imu,-0.14441615,0.1654741,-9.879818,0.0057879034,-0.0056897383,-0.003183543 +15608000,baro,487.44083 +15612000,baro,487.5676 +15612000,airspeed,2.3207235,2.2665632 +15612000,mag,0.19600001,-0.07800001,0.43100002 +15612000,imu,-0.18080522,0.18397056,-9.8804035,0.0023594992,-0.005139078,0.0016797476 +15616000,airspeed,2.4881594,2.430084 +15616000,imu,-0.12432718,0.15784414,-9.909385,-0.0051282407,-0.010151739,0.0019361302 +15616000,baro,487.62393 +15616000,mag,0.19600001,-0.07800001,0.43100002 +15620000,gps,488105.0,85456074.0,473977508.0,0.0,0.0,0.0 +15624000,imu,-0.11750523,0.0891683,-9.933466,0.00041346054,-0.0032684375,-0.0030914461 +15624000,airspeed,1.1889248,1.1611823 +15624000,baro,487.50656 +15624000,mag,0.19600001,-0.07800001,0.43100002 +15628000,baro,487.58167 +15628000,imu,-0.15620059,0.13283895,-9.959414,-0.0016713692,-0.0032098906,0.0019124103 +15628000,mag,0.19600001,-0.07800001,0.43100002 +15628000,airspeed,2.4228437,2.3662982 +15632000,mag,0.19600001,-0.07800001,0.43100002 +15632000,imu,-0.20920926,0.1541251,-9.930114,0.0011614192,0.0007195797,0.00057176227 +15632000,baro,487.71783 +15632000,airspeed,-2.4339385,-2.3771143 +15636000,imu,-0.23448573,0.12188022,-9.889744,0.0013506617,-0.0005750855,-0.0009264444 +15636000,airspeed,4.691252,4.5817456 +15640000,baro,487.70844 +15640000,mag,0.19800001,-0.08000001,0.43 +15640000,airspeed,-4.0881696,-3.9927287 +15640000,imu,-0.23027873,0.101038575,-10.004691,-0.0015291693,-0.0037924182,-0.00056820374 +15644000,airspeed,-0.23320605,-0.2277617 +15644000,baro,487.70844 +15644000,imu,-0.26415068,0.17155209,-10.027079,-0.00024863737,-0.0062938193,-0.0023402632 +15644000,mag,0.19800001,-0.08000001,0.43 +15652000,mag,0.19800001,-0.08000001,0.43 +15652000,baro,487.58636 +15652000,imu,-0.13416001,0.210389,-9.992019,0.0041753976,-0.00726626,-0.0075378623 +15652000,airspeed,1.2630795,1.2336009 +15656000,airspeed,2.6500814,2.5882225 +15656000,baro,487.6474 +15656000,imu,-0.15561013,0.16259779,-9.893064,0.0050962353,-0.011374668,-0.00482071 +15656000,mag,0.19800001,-0.08000001,0.43 +15660000,airspeed,-1.8818624,-1.8379532 +15660000,mag,0.19800001,-0.08000001,0.43 +15660000,imu,-0.12652227,0.1479513,-9.83869,0.0036362116,-0.009694632,0.00124516 +15660000,baro,487.48776 +15668000,airspeed,-2.8179653,-2.7521892 +15668000,mag,0.19800001,-0.08000001,0.43 +15668000,imu,-0.17836636,0.15268445,-9.9416685,-0.006420566,-0.009096082,-0.0037386057 +15668000,baro,487.638 +15672000,mag,0.19800001,-0.08000001,0.43 +15672000,baro,487.52063 +15672000,imu,-0.17792821,0.12403476,-9.898522,-0.0064862412,-0.0029227433,0.0058191037 +15672000,airspeed,2.4047725,2.3486571 +15676000,imu,-0.1908575,0.16586608,-9.910323,-0.0036604046,-0.012821116,0.0064847437 +15676000,mag,0.19800001,-0.08000001,0.43 +15676000,baro,487.68967 +15676000,airspeed,-2.5502434,-2.4907084 +15680000,mag,0.19800001,-0.08000001,0.43 +15680000,airspeed,-2.5782402,-2.5180485 +15680000,imu,-0.06503513,0.1946895,-9.891584,-0.0058729686,-0.0142265,0.0034348755 +15680000,baro,487.71313 +15684000,imu,-0.14272697,0.14407378,-9.933508,-0.0029231927,-0.010372083,0.0003608463 +15684000,airspeed,1.1155516,1.0895144 +15688000,baro,487.60983 +15688000,mag,0.19800001,-0.08000001,0.43 +15688000,imu,-0.22230496,0.17844795,-9.89844,0.0019373649,-0.0035074924,-0.0041455054 +15688000,airspeed,3.4355757,3.3553886 +15692000,airspeed,2.613417,2.552418 +15692000,mag,0.19900002,-0.08100001,0.42900002 +15692000,imu,-0.18400133,0.18527327,-9.87534,0.004809636,-0.0048917206,-0.0024126077 +15692000,baro,487.62393 +15696000,mag,0.19900002,-0.08100001,0.42900002 +15696000,baro,487.70374 +15696000,airspeed,-1.5022361,-1.4671654 +15696000,imu,-0.20855056,0.17178185,-9.902981,0.003859771,-0.005685467,-0.003955047 +15700000,imu,-0.24058232,0.1524104,-9.896793,-0.0013928823,-0.0022732446,0.00039631085 +15700000,baro,487.69904 +15700000,airspeed,3.6281679,3.5434666 +15700000,mag,0.19900002,-0.08100001,0.42900002 +15704000,imu,-0.20331858,0.053743348,-9.928258,-0.005983226,-0.0026087423,0.00057666533 +15704000,baro,487.6474 +15704000,mag,0.19900002,-0.08100001,0.42900002 +15704000,airspeed,3.212751,3.1377575 +15712000,imu,-0.26127234,0.21158247,-9.92419,-0.00096795533,-0.018457675,0.002907901 +15712000,airspeed,1.7235959,1.6833689 +15712000,baro,487.59106 +15712000,mag,0.19900002,-0.08100001,0.42900002 +15716000,imu,-0.23552652,0.24250472,-9.91587,0.0026929611,-0.009959561,0.0031385473 +15716000,mag,0.19900002,-0.08100001,0.42900002 +15716000,baro,487.3563 +15716000,airspeed,-1.7162951,-1.676262 +15720000,imu,-0.20381673,0.22205585,-9.913891,-0.0007328823,-0.008561261,0.001667439 +15720000,baro,487.4596 +15720000,mag,0.19900002,-0.08100001,0.42900002 +15720000,airspeed,-0.67175007,-0.6560772 +15724000,imu,-0.19643517,0.18780811,-9.971223,-0.00054942275,-0.0091524115,-0.005741085 +15724000,mag,0.19900002,-0.08100001,0.42900002 +15724000,airspeed,-1.2865013,-1.2564803 +15724000,baro,487.52533 +15728000,imu,-0.18803744,0.18480073,-9.994575,-0.001574127,-0.0039772503,-0.002193647 +15728000,mag,0.19900002,-0.08100001,0.42900002 +15728000,baro,487.66617 +15728000,airspeed,2.200607,2.1492376 +15732000,mag,0.19900002,-0.08100001,0.42900002 +15732000,baro,487.7413 +15732000,imu,-0.19005011,0.15278542,-9.94594,-0.00404203,-0.0008361985,-0.0061459285 +15732000,airspeed,-0.8467035,-0.82693493 +15736000,imu,-0.17322461,0.17562118,-9.911088,-0.0025792238,-0.0018868197,-0.009990036 +15736000,airspeed,-3.1867034,-3.1123025 +15740000,baro,487.68497 +15740000,imu,-0.13272157,0.20091836,-9.910304,-0.0012970153,-0.0033040796,-0.005880874 +15740000,airspeed,2.996376,2.9264271 +15740000,mag,0.19900002,-0.08100001,0.42900002 +15744000,mag,0.19900002,-0.08100001,0.42900002 +15744000,baro,487.58636 +15744000,airspeed,1.547197,1.5110877 +15744000,imu,-0.15437457,0.23491882,-9.935231,-0.0028787963,-0.004078614,0.0001364941 +15748000,mag,0.19900002,-0.077000014,0.42800003 +15748000,imu,-0.17112567,0.24676931,-9.987224,-0.0038436474,0.00018511487,0.0021125672 +15748000,baro,487.638 +15748000,airspeed,-0.93528533,-0.91345406 +15752000,mag,0.19900002,-0.077000014,0.42800003 +15752000,airspeed,3.7605734,3.672777 +15752000,baro,487.7225 +15756000,imu,-0.16289702,0.15010206,-9.89013,-0.0046558357,-0.006316362,0.0020048327 +15756000,airspeed,-0.56007737,-0.54700464 +15756000,mag,0.19900002,-0.077000014,0.42800003 +15756000,baro,487.62393 +15760000,airspeed,-2.1158273,-2.0664425 +15760000,mag,0.19900002,-0.077000014,0.42800003 +15760000,baro,487.62393 +15760000,imu,-0.10980692,0.2382746,-9.8518095,-0.0069796843,-0.0055879545,0.0033164509 +15764000,airspeed,1.6404341,1.6021429 +15764000,baro,487.6474 +15764000,mag,0.19900002,-0.077000014,0.42800003 +15764000,imu,-0.15798312,0.13455571,-9.932279,-0.0055384515,-0.0026463727,0.0036818916 +15768000,airspeed,-1.8998165,-1.8554685 +15768000,baro,487.66617 +15768000,mag,0.19900002,-0.077000014,0.42800003 +15768000,imu,-0.22739084,0.0922841,-10.011456,-0.0038940858,-0.002420926,0.0049621495 +15772000,baro,487.66617 +15772000,airspeed,-2.553052,-2.4934554 +15772000,imu,-0.22774477,0.17426373,-9.986359,-0.0046281978,-0.0005442156,0.0022471393 +15772000,mag,0.19900002,-0.077000014,0.42800003 +15776000,imu,-0.18908074,0.21977453,-9.917845,-0.007346059,-0.005611799,0.00239741 +15776000,airspeed,2.5724082,2.5123682 +15776000,baro,487.60983 +15776000,mag,0.19900002,-0.077000014,0.42800003 +15784000,mag,0.19900002,-0.077000014,0.42800003 +15784000,baro,487.42203 +15784000,imu,-0.24090855,0.27495617,-9.913531,0.0038189436,-0.0076994584,0.0016335719 +15784000,airspeed,2.8750925,2.8080192 +15788000,baro,487.42203 +15788000,mag,0.19900002,-0.077000014,0.42800003 +15788000,airspeed,2.0461679,1.9984326 +15788000,imu,-0.2312196,0.2543531,-9.843328,-0.00048064886,-0.0057149376,-0.0019143072 +15796000,airspeed,1.9870992,1.940713 +15796000,imu,-0.16397189,0.1650233,-9.94396,-0.0045053954,-0.001551307,-0.003134399 +15796000,mag,0.201,-0.08300001,0.43 +15796000,baro,487.67087 +15800000,baro,487.7272 +15800000,imu,-0.19769813,0.13984025,-9.958709,-0.00474193,-0.0029149284,-0.0012944859 +15800000,mag,0.201,-0.08300001,0.43 +15800000,airspeed,0.2129178,0.2079468 +15804000,baro,487.7272 +15804000,airspeed,-1.4720632,-1.4376949 +15804000,mag,0.201,-0.08300001,0.43 +15804000,imu,-0.25907966,0.13936368,-9.919781,-0.0013866746,-0.008401102,-0.00038800406 +15808000,baro,487.47836 +15808000,mag,0.201,-0.08300001,0.43 +15808000,imu,-0.22378375,0.23117833,-9.971866,-0.0010580157,-0.01463441,0.001067836 +15808000,airspeed,1.798012,1.7560604 +15812000,airspeed,2.6297624,2.5683625 +15812000,mag,0.201,-0.08300001,0.43 +15812000,imu,-0.22718339,0.24228406,-9.899917,-0.008479517,-0.01049379,0.0022451568 +15812000,baro,487.746 +15816000,imu,-0.24471389,0.18864347,-9.874475,-0.0106014665,-0.010164785,0.00049838703 +15816000,airspeed,-1.2506708,-1.2214854 +15816000,mag,0.201,-0.08300001,0.43 +15816000,baro,487.53473 +15824000,baro,487.6568 +15824000,imu,-0.18037018,0.207278,-9.905176,-0.008124226,-0.0061452645,0.003977385 +15824000,airspeed,1.0050057,0.98154616 +15824000,mag,0.201,-0.08300001,0.43 +15828000,mag,0.201,-0.08300001,0.43 +15828000,baro,487.62863 +15828000,imu,-0.18954813,0.28672385,-9.924677,-0.006174597,-0.0023383417,0.0064326166 +15828000,airspeed,-2.1253018,-2.0756948 +15836000,baro,487.44553 +15836000,airspeed,-4.173069,-4.075709 +15836000,mag,0.201,-0.08300001,0.43 +15836000,imu,-0.1262148,0.1825216,-10.052136,-0.0041853446,-0.0066408445,-0.009759181 +15840000,airspeed,-3.0318434,-2.9610977 +15840000,imu,-0.04683962,0.23881274,-10.053508,-0.000543754,-0.0012984063,-0.0055309143 +15844000,baro,487.69904 +15844000,airspeed,-3.689178,-3.6030529 +15844000,mag,0.201,-0.08300001,0.43 +15844000,imu,-0.11654449,0.25755695,-9.993259,0.005801078,-0.0032831717,0.00083344296 +15848000,airspeed,-2.8881254,-2.8207216 +15848000,imu,-0.14455622,0.21618658,-9.919165,0.002463181,-0.0075041163,0.00093871576 +15848000,mag,0.201,-0.08300001,0.43 +15848000,baro,487.57697 +15852000,imu,-0.18419774,0.1886844,-9.855186,0.00053958746,-0.009070834,0.0031675121 +15852000,airspeed,-2.5132563,-2.454589 +15852000,baro,487.66147 +15852000,mag,0.201,-0.08500001,0.42600003 +15856000,baro,487.638 +15856000,imu,-0.20677672,0.16989297,-9.858755,-0.0034367575,-0.0082870675,0.00025412496 +15856000,airspeed,-1.4900744,-1.4552935 +15856000,mag,0.201,-0.08500001,0.42600003 +15860000,airspeed,-2.8252683,-2.7593663 +15860000,imu,-0.15947579,0.1929285,-9.961015,-8.473929e-05,-0.003314234,0.00077132543 +15864000,airspeed,-1.755526,-1.714533 +15864000,imu,-0.15455791,0.23778327,-9.9762125,-0.00037997222,-0.00424042,0.008497222 +15864000,baro,487.79294 +15864000,mag,0.201,-0.08500001,0.42600003 +15868000,airspeed,1.8332444,1.790456 +15868000,imu,-0.1533566,0.21833692,-9.953778,0.0011395216,-0.011083766,0.0033868994 +15872000,imu,-0.14612855,0.17204708,-9.917117,0.0029349895,-0.0111206155,0.00057085947 +15872000,airspeed,0.5594407,0.54638064 +15872000,mag,0.201,-0.08500001,0.42600003 +15872000,baro,487.68967 +15876000,baro,487.53473 +15876000,mag,0.201,-0.08500001,0.42600003 +15876000,airspeed,1.6322058,1.5941168 +15876000,imu,-0.12845495,0.16708323,-9.893958,-0.0014806314,-0.0062758904,0.003237752 +15880000,airspeed,0.9447294,0.9226736 +15880000,mag,0.201,-0.08500001,0.42600003 +15880000,imu,-0.19377421,0.16331044,-9.8759575,-0.0034567479,-0.0048978124,-0.0026257979 +15880000,baro,487.71313 +15884000,airspeed,1.536311,1.5004541 +15884000,baro,487.60513 +15884000,mag,0.201,-0.08500001,0.42600003 +15884000,imu,-0.23220919,0.21508183,-9.902854,-0.00046211,-0.0016908101,-0.0039311615 +15892000,baro,487.68967 +15892000,mag,0.201,-0.08500001,0.42600003 +15892000,airspeed,-2.481494,-2.4235644 +15892000,imu,-0.14055587,0.19902161,-9.946411,-0.003466291,-0.01059117,-0.0033024477 +15896000,mag,0.201,-0.08500001,0.42600003 +15896000,airspeed,2.02618,1.9788691 +15896000,baro,487.77417 +15896000,imu,-0.12258541,0.19748361,-9.946416,-0.00055826624,-0.0104067195,-0.0032215093 +15900000,mag,0.202,-0.08000001,0.42900002 +15900000,airspeed,-2.6173542,-2.5562835 +15900000,baro,487.48776 +15900000,imu,-0.18338431,0.22675976,-9.896238,-0.00058197096,-0.00819499,-0.00280615 +15904000,airspeed,2.2705622,2.2175543 +15904000,imu,-0.16687378,0.24582702,-9.942787,0.003681331,-0.0065248925,0.00065844494 +15904000,mag,0.202,-0.08000001,0.42900002 +15904000,baro,487.70374 +15912000,imu,-0.21999268,0.13981377,-10.002034,0.005792515,-0.004281994,-0.0010600397 +15912000,baro,487.62863 +15912000,airspeed,-1.8249853,-1.7823879 +15912000,mag,0.202,-0.08000001,0.42900002 +15916000,mag,0.202,-0.08000001,0.42900002 +15916000,imu,-0.20460671,0.14409615,-9.935289,0.008974513,0.0030759592,-0.0034409745 +15916000,airspeed,-0.2618932,-0.25577953 +15916000,baro,487.68027 +15920000,imu,-0.115501866,0.14249782,-9.845409,0.0014551273,0.0034191883,-0.0042168805 +15920000,airspeed,1.3171592,1.2864112 +15920000,gps,488108.0,85456074.0,473977508.0,0.0,0.0,-0.03 +15924000,mag,0.202,-0.08000001,0.42900002 +15924000,imu,-0.19641365,0.19202998,-9.882344,0.002981569,-0.009312644,-0.0076101464 +15924000,airspeed,1.1243461,1.0980985 +15924000,baro,487.68967 +15928000,airspeed,2.4129176,2.356586 +15928000,imu,-0.24826455,0.24661294,-9.895217,0.005686879,-0.0065042106,0.0008447512 +15928000,mag,0.202,-0.08000001,0.42900002 +15928000,baro,487.70844 +15932000,baro,487.59576 +15932000,airspeed,1.3565854,1.3249236 +15932000,mag,0.202,-0.08000001,0.42900002 +15932000,imu,-0.15798637,0.2387891,-9.938935,0.000115725416,-0.0017073901,0.0016504099 +15936000,baro,487.7413 +15936000,airspeed,-2.953935,-2.8849673 +15936000,mag,0.202,-0.08000001,0.42900002 +15936000,imu,-0.18029742,0.21606368,-9.961949,-0.0018134356,-0.010473426,-0.0039069327 +15940000,airspeed,-4.113349,-4.0173326 +15940000,mag,0.202,-0.08000001,0.42900002 +15940000,imu,-0.21910429,0.19843802,-9.928634,0.0010707022,-0.009070942,0.00038283423 +15940000,baro,487.6521 +15944000,mag,0.202,-0.08000001,0.42900002 +15944000,imu,-0.1546329,0.23364605,-9.955856,0.0056086937,-0.004287682,0.001507349 +15944000,airspeed,-1.5046169,-1.469483 +15944000,baro,487.79294 +15948000,imu,-0.10936861,0.17693232,-9.931988,0.003871321,-0.005188472,0.0022714462 +15948000,mag,0.202,-0.08000001,0.42900002 +15948000,baro,487.59106 +15948000,airspeed,1.6739414,1.6348733 +15952000,baro,487.59106 +15952000,imu,-0.12531427,0.15180884,-9.946529,0.000103377344,-0.0069851433,-0.0009527673 +15952000,mag,0.19800001,-0.08300001,0.423 +15952000,airspeed,2.5304725,2.4714139 +15956000,imu,-0.22419916,0.20646004,-10.037906,0.0013622605,-0.0111124925,-0.003047228 +15956000,mag,0.19800001,-0.08300001,0.423 +15956000,baro,487.5488 +15956000,airspeed,-1.9315338,-1.8864586 +15960000,mag,0.19800001,-0.08300001,0.423 +15960000,baro,487.53003 +15960000,imu,-0.26524776,0.14627291,-10.005388,0.004671222,-0.011217723,0.002885456 +15960000,airspeed,-3.603281,-3.5191965 +15964000,imu,-0.18319836,0.14698268,-9.9519205,0.0034285279,-0.004702213,0.0020463201 +15964000,airspeed,2.8415573,2.775225 +15968000,baro,487.60043 +15968000,airspeed,2.1931913,2.1420033 +15968000,imu,-0.19710465,0.18409981,-10.014535,-0.004245484,-0.005494556,-0.0019035079 +15968000,mag,0.19800001,-0.08300001,0.423 +15972000,imu,-0.21513721,0.17080183,-9.998829,-0.0022662242,-0.003370744,0.0002702662 +15972000,mag,0.19800001,-0.08300001,0.423 +15972000,airspeed,2.5473778,2.487911 +15972000,baro,487.68027 +15976000,imu,-0.14897123,0.16505857,-9.986901,0.004319371,-0.007299174,0.0028926597 +15976000,mag,0.19800001,-0.08300001,0.423 +15976000,airspeed,2.6403544,2.5787387 +15976000,baro,487.5441 +15980000,airspeed,2.9485114,2.8797061 +15980000,imu,-0.17332374,0.13461258,-10.036539,0.00097261876,-0.013661056,0.002620827 +15980000,mag,0.19800001,-0.08300001,0.423 +15980000,baro,487.53003 +15984000,mag,0.19800001,-0.08300001,0.423 +15984000,imu,-0.28478116,0.15651116,-9.97298,-0.00064369536,-0.009184035,0.00045321378 +15984000,airspeed,-1.3677546,-1.3358439 +15984000,baro,487.4502 +15988000,airspeed,-3.253657,-3.177747 +15988000,mag,0.19800001,-0.08300001,0.423 +15988000,baro,487.4502 +15988000,imu,-0.30918962,0.17919202,-9.903342,0.002183151,-0.0025306486,-0.0026691547 +15992000,baro,487.57697 +15992000,mag,0.19800001,-0.08300001,0.423 +15992000,airspeed,-1.9251513,-1.8802218 +15992000,imu,-0.28469703,0.17956176,-9.894038,0.009658511,-0.0004212237,-0.0057293 +16000000,baro,487.67557 +16000000,airspeed,-2.7049975,-2.6418521 +16000000,imu,-0.17758934,0.13839625,-10.016491,0.0008920435,-0.005300876,-0.00441198 +16000000,mag,0.19800001,-0.08300001,0.423 +16004000,mag,0.2,-0.08200001,0.42700002 +16004000,airspeed,0.71663904,0.6999108 +16004000,baro,487.6521 +16004000,imu,-0.1544044,0.14590037,-9.93475,-0.0021982444,-0.0084340265,-0.00218468 +16008000,imu,-0.1422445,0.17843178,-9.937619,-0.00451859,-0.011330027,-0.0023776176 +16008000,baro,487.6521 +16008000,mag,0.2,-0.08200001,0.42700002 +16008000,airspeed,-1.8348812,-1.7920502 +16012000,mag,0.2,-0.08200001,0.42700002 +16012000,airspeed,2.3838658,2.3282058 +16012000,baro,487.75537 +16012000,imu,-0.25785384,0.22698487,-9.99977,-0.0033381125,-0.0093193995,-0.0017549874 +16016000,baro,487.58636 +16016000,airspeed,0.5578755,0.5448555 +16016000,mag,0.2,-0.08200001,0.42700002 +16016000,imu,-0.27701014,0.2784786,-10.022332,0.00061971316,-0.0061153066,-0.0013669049 +16020000,airspeed,2.123287,2.073735 +16020000,baro,487.5629 +16020000,imu,-0.1988865,0.25517908,-10.020898,0.0035181073,-0.0065255505,-0.003676885 +16020000,mag,0.2,-0.08200001,0.42700002 +16024000,baro,487.6427 +16024000,airspeed,-2.5091014,-2.4505339 +16024000,imu,-0.18985717,0.17193507,-10.023056,-0.0012567906,-0.009694047,-0.003634721 +16024000,mag,0.2,-0.08200001,0.42700002 +16028000,mag,0.2,-0.08200001,0.42700002 +16028000,airspeed,3.1429758,3.0696127 +16028000,imu,-0.18886226,0.1747014,-9.993547,-0.0068079415,-0.0068517854,-0.0019335877 +16028000,baro,487.638 +16036000,baro,487.5676 +16036000,mag,0.2,-0.08200001,0.42700002 +16036000,imu,-0.17381544,0.22977783,-9.870481,0.006363821,-0.014941001,-0.008439861 +16036000,airspeed,-3.6312132,-3.546469 +16040000,airspeed,-0.62701356,-0.61237913 +16040000,mag,0.2,-0.08200001,0.42700002 +16040000,baro,487.60513 +16040000,imu,-0.09334789,0.17019127,-9.877943,0.004613296,-0.013844034,-0.009020037 +16044000,airspeed,3.2926753,3.2158291 +16044000,imu,-0.06984396,0.15047055,-9.8837385,0.0013362443,-0.0052543734,-0.0069339722 +16044000,baro,487.58167 +16044000,mag,0.2,-0.08200001,0.42700002 +16048000,mag,0.2,-0.08200001,0.42700002 +16048000,baro,487.58167 +16048000,imu,-0.13595505,0.11467592,-9.946287,-0.0020520238,-0.008368347,-0.006991041 +16048000,airspeed,-3.0401795,-2.9692261 +16052000,imu,-0.16926055,0.14116772,-10.027153,-0.0059372247,-0.0070409677,0.0006905559 +16052000,airspeed,0.3877157,0.37866253 +16056000,imu,-0.14678957,0.19191281,-10.003664,0.0032886392,-0.002085708,2.1333975e-05 +16056000,mag,0.202,-0.08300001,0.43 +16056000,airspeed,-2.5838776,-2.5235963 +16056000,baro,487.43613 +16060000,mag,0.202,-0.08300001,0.43 +16060000,baro,487.43613 +16060000,imu,-0.23238103,0.12682793,-9.976324,0.005573353,-0.0072955913,-0.0014394398 +16060000,airspeed,-2.148076,-2.097962 +16064000,baro,487.5676 +16064000,imu,-0.27537653,0.18212208,-9.930319,-0.0015157515,-0.0036536993,0.0054520206 +16064000,airspeed,1.3636338,1.3318096 +16064000,mag,0.202,-0.08300001,0.43 +16068000,baro,487.5676 +16068000,imu,-0.15547588,0.22834718,-9.882899,-0.0077241976,-0.0037046878,0.0056526344 +16068000,airspeed,3.6817243,3.5958014 +16068000,mag,0.202,-0.08300001,0.43 +16072000,imu,-0.19234742,0.15326698,-9.902077,-0.003515762,-0.0041738376,-0.0018796374 +16072000,airspeed,1.1142977,1.0882912 +16076000,mag,0.202,-0.08300001,0.43 +16076000,baro,487.59106 +16076000,airspeed,3.7199583,3.6331384 +16076000,imu,-0.24476638,0.19002405,-9.924046,0.0050620358,-0.00053493225,-0.0007356407 +16084000,imu,-0.16943528,0.16120176,-10.031505,-0.0012664106,-0.0075439145,-0.0021039261 +16084000,baro,487.3798 +16084000,airspeed,2.991949,2.9221575 +16084000,mag,0.202,-0.08300001,0.43 +16088000,airspeed,-2.8289175,-2.7628858 +16088000,baro,487.638 +16088000,mag,0.202,-0.08300001,0.43 +16088000,imu,-0.15896529,0.13455763,-9.970271,-0.00087804254,-0.0029980817,0.0038786812 +16092000,airspeed,-3.6343899,-3.549557 +16092000,imu,-0.21173888,0.06881196,-9.941013,0.0005133535,0.0033201806,0.00033261775 +16096000,mag,0.202,-0.08300001,0.43 +16096000,imu,-0.24968596,0.1254085,-9.955977,0.002933487,-0.004644334,-0.0049947253 +16096000,airspeed,-2.7019784,-2.6389153 +16096000,baro,487.60513 +16100000,baro,487.61453 +16100000,mag,0.202,-0.08300001,0.43 +16100000,imu,-0.19203158,0.19334029,-9.909032,0.003189807,-0.0071478346,0.003043938 +16100000,airspeed,1.9930469,1.9465281 +16104000,mag,0.202,-0.08300001,0.43 +16104000,airspeed,-0.5333062,-0.52085483 +16104000,baro,487.7366 +16104000,imu,-0.18437004,0.19898835,-9.860965,-0.00079741614,-0.0072860625,0.008423177 +16108000,mag,0.2,-0.084000014,0.42900002 +16108000,baro,487.5488 +16108000,airspeed,-3.9720876,-3.879393 +16108000,imu,-0.22989318,0.2531564,-9.894779,-0.0023840854,-0.008064224,-0.0004668318 +16112000,airspeed,1.4390849,1.4054986 +16112000,mag,0.2,-0.084000014,0.42900002 +16112000,baro,487.58636 +16112000,imu,-0.14134449,0.25075576,-9.910409,0.0017564072,-0.005367373,-0.0054492117 +16116000,mag,0.2,-0.084000014,0.42900002 +16116000,imu,-0.060336817,0.22218983,-9.926224,0.00071860506,-0.0073286593,-0.0033330466 +16116000,airspeed,-0.3042114,-0.29711154 +16116000,baro,487.58636 +16120000,mag,0.2,-0.084000014,0.42900002 +16120000,baro,487.7507 +16120000,gps,488104.0,85456074.0,473977508.0,-0.01,0.0,0.0 +16124000,airspeed,-1.8810451,-1.8371356 +16124000,mag,0.2,-0.084000014,0.42900002 +16124000,imu,-0.14849372,0.22017361,-9.951107,-0.005461195,-0.0017841348,-0.0025053232 +16124000,baro,487.66617 +16132000,mag,0.2,-0.084000014,0.42900002 +16132000,imu,-0.2277401,0.20443973,-9.935528,0.0021741325,-0.011376936,-0.002748857 +16132000,baro,487.62863 +16132000,airspeed,3.3678243,3.2892156 +16136000,imu,-0.23369671,0.25411546,-9.8924465,0.0034084767,-0.0043888227,0.0019449113 +16136000,baro,487.5441 +16136000,airspeed,2.418602,2.3621607 +16136000,mag,0.2,-0.084000014,0.42900002 +16140000,airspeed,-2.4858074,-2.4277742 +16140000,baro,487.70844 +16140000,imu,-0.21653922,0.2524569,-9.88522,5.065599e-05,-0.0016488574,0.008478809 +16140000,mag,0.2,-0.084000014,0.42900002 +16144000,mag,0.2,-0.084000014,0.42900002 +16144000,airspeed,-0.83485794,-0.8153672 +16144000,baro,487.71313 +16144000,imu,-0.1685193,0.16148521,-9.945916,-0.0029388187,-0.004829691,0.0005065646 +16148000,airspeed,3.9909158,3.897728 +16148000,imu,-0.19497421,0.18324567,-10.001216,0.0010743878,-0.00506358,-0.006100922 +16152000,imu,-0.2001947,0.23020647,-9.930052,2.167264e-05,-0.006815447,-0.0038352048 +16152000,mag,0.2,-0.084000014,0.42900002 +16152000,airspeed,-0.9338948,-0.9120884 +16152000,baro,487.77887 +16160000,mag,0.2,-0.084000014,0.42900002 +16160000,baro,487.58167 +16160000,airspeed,-3.6145191,-3.530162 +16160000,imu,-0.23211043,0.10832695,-9.94954,-0.005433378,-0.007049046,3.0787636e-05 +16164000,airspeed,1.8484728,1.80534 +16164000,mag,0.2,-0.08100001,0.43 +16164000,imu,-0.27204886,0.12934391,-9.910115,-0.0014079933,-0.010125727,0.0020421562 +16164000,baro,487.51123 +16168000,airspeed,-0.9181342,-0.89670724 +16168000,baro,487.5676 +16168000,mag,0.2,-0.08100001,0.43 +16168000,imu,-0.26485386,0.18448718,-9.901448,0.002260591,-0.009821931,-0.0021567598 +16172000,mag,0.2,-0.08100001,0.43 +16172000,imu,-0.2135757,0.17571189,-9.89996,-0.0013361728,-0.003682573,-0.0010059018 +16172000,baro,487.70374 +16176000,airspeed,4.3325186,4.2313976 +16176000,imu,-0.18281054,0.2163047,-9.936355,-0.0014053141,-0.0005239767,-0.0017192224 +16180000,imu,-0.17616276,0.31245327,-9.9954815,0.005003636,0.00024926246,-0.0033889755 +16180000,baro,487.7366 +16180000,airspeed,2.3884938,2.3327284 +16180000,mag,0.2,-0.08100001,0.43 +16184000,mag,0.2,-0.08100001,0.43 +16184000,baro,487.7507 +16184000,imu,-0.175698,0.26867828,-9.988863,0.004341012,-0.008692645,0.0054185875 +16184000,airspeed,-2.7873263,-2.7222471 +16188000,baro,487.7507 +16188000,mag,0.2,-0.08100001,0.43 +16188000,imu,-0.14430012,0.18482056,-9.95874,-0.004872827,-0.009999735,0.0020054518 +16188000,airspeed,3.3973796,3.3180566 +16196000,imu,-0.1700831,0.10259231,-9.915727,0.0012182876,-0.008272375,-0.0034105496 +16196000,airspeed,-2.9157016,-2.8476267 +16196000,mag,0.2,-0.08100001,0.43 +16196000,baro,487.7413 +16204000,mag,0.2,-0.08100001,0.43 +16204000,baro,487.5629 +16204000,airspeed,4.0040073,3.9105644 +16204000,imu,-0.24287285,0.22021422,-9.924194,-0.0043971227,-0.0022910272,-0.0019254314 +16208000,baro,487.57227 +16208000,mag,0.2,-0.08100001,0.43 +16208000,airspeed,-1.963632,-1.9178048 +16208000,imu,-0.25954312,0.1548313,-9.914924,-0.00048844726,0.002858631,-0.00020057544 +16212000,baro,487.59106 +16212000,imu,-0.17783014,0.16595432,-9.922134,-0.006947031,0.004010062,0.005480378 +16212000,mag,0.19900002,-0.08100001,0.43 +16212000,airspeed,4.0571346,3.9624455 +16216000,baro,487.6333 +16216000,imu,-0.170641,0.17844513,-9.92655,-0.007121199,-0.0025042284,0.0022088476 +16216000,mag,0.19900002,-0.08100001,0.43 +16216000,airspeed,3.040842,2.9698644 +16220000,airspeed,-2.8660426,-2.799145 +16220000,imu,-0.1910884,0.13534227,-9.955675,0.00050890807,-0.0039079473,0.00018815356 +16220000,mag,0.19900002,-0.08100001,0.43 +16220000,baro,487.6333 +16224000,imu,-0.22864704,0.200662,-9.923752,0.001099881,-0.0063205836,0.005098229 +16224000,mag,0.19900002,-0.08100001,0.43 +16224000,baro,487.50186 +16224000,airspeed,3.2003608,3.125684 +16228000,baro,487.76007 +16228000,imu,-0.19631113,0.22482266,-9.910336,-0.001438194,-0.008606655,0.0057164477 +16228000,mag,0.19900002,-0.08100001,0.43 +16228000,airspeed,4.3484373,4.246906 +16232000,imu,-0.17215848,0.09362995,-9.908576,-0.0049387193,-0.006040532,0.0040738247 +16232000,mag,0.19900002,-0.08100001,0.43 +16232000,baro,487.7413 +16232000,airspeed,-3.4383485,-3.3580709 +16236000,imu,-0.21929613,0.123828165,-9.970086,-0.0041933362,-0.0026926324,0.0036129963 +16236000,mag,0.19900002,-0.08100001,0.43 +16236000,baro,487.5535 +16236000,airspeed,4.9597564,4.844011 +16240000,mag,0.19900002,-0.08100001,0.43 +16240000,imu,-0.20289798,0.22579479,-10.012681,0.00017383402,-0.0049592596,0.003572303 +16240000,baro,487.66147 +16240000,airspeed,2.230625,2.1785555 +16244000,imu,-0.20827286,0.1437073,-9.979441,0.00035857546,-0.004174861,0.0019864608 +16244000,mag,0.19900002,-0.08100001,0.43 +16244000,airspeed,-0.9125711,-0.89126587 +16244000,baro,487.71783 +16252000,mag,0.19900002,-0.08100001,0.43 +16252000,airspeed,-3.2596693,-3.183583 +16252000,baro,487.638 +16252000,imu,-0.09867783,0.19977981,-9.914924,0.00206967,-0.0036078868,-0.0051837293 +16256000,baro,487.62863 +16256000,mag,0.19900002,-0.08100001,0.43 +16256000,imu,-0.04549725,0.15475343,-9.980287,0.00096770906,-0.0024305934,-0.0065133227 +16256000,airspeed,-3.406702,-3.3271859 +16264000,airspeed,-1.9341929,-1.8890238 +16264000,baro,487.8305 +16264000,mag,0.201,-0.08000001,0.42800003 +16264000,imu,-0.24955665,0.20587778,-10.036941,-0.0016899555,-0.0063294945,7.945568e-05 +16268000,airspeed,3.133111,3.0599754 +16268000,baro,487.6568 +16268000,mag,0.201,-0.08000001,0.42800003 +16268000,imu,-0.2113799,0.19197305,-9.934977,-0.0038600487,-0.011439696,-0.006749699 +16272000,baro,487.51123 +16272000,airspeed,0.44389,0.43353215 +16272000,imu,-0.18222006,0.17648281,-9.901272,-0.0025927778,-0.005040133,0.0020441008 +16272000,mag,0.201,-0.08000001,0.42800003 +16276000,airspeed,4.310881,4.2102895 +16276000,mag,0.201,-0.08000001,0.42800003 +16276000,imu,-0.1531989,0.16057093,-9.937183,-0.0040526856,0.0016526841,0.009232703 +16276000,baro,487.51123 +16280000,imu,-0.13783991,0.17168987,-9.930824,0.0058390154,-0.000120357545,0.010931772 +16280000,airspeed,1.2979587,1.2676743 +16280000,baro,487.47836 +16280000,mag,0.201,-0.08000001,0.42800003 +16284000,imu,-0.15268575,0.20461254,-9.910965,0.0072175935,-0.0061406763,0.0036226318 +16284000,airspeed,-0.87792206,-0.85743636 +16284000,mag,0.201,-0.08000001,0.42800003 +16284000,baro,487.51123 +16292000,airspeed,-3.255086,-3.1791 +16292000,imu,-0.15086432,0.17073737,-9.90502,-0.0015732765,-0.0030701538,0.0047690095 +16292000,baro,487.67087 +16292000,mag,0.201,-0.08000001,0.42800003 +16296000,airspeed,-1.1978394,-1.1698822 +16296000,imu,-0.16696137,0.1334985,-9.919348,0.0007303599,-0.006166654,0.0033701097 +16296000,baro,487.60513 +16296000,mag,0.201,-0.08000001,0.42800003 +16300000,imu,-0.1657302,0.24368529,-9.977829,0.003030363,-0.0068187057,-0.0015861449 +16300000,mag,0.201,-0.08000001,0.42800003 +16300000,airspeed,-2.7012784,-2.638223 +16300000,baro,487.6568 +16304000,airspeed,1.4396201,1.4060289 +16304000,baro,487.49246 +16304000,imu,-0.1076406,0.29127643,-9.937683,0.0019828407,-0.006777422,-0.002996236 +16304000,mag,0.201,-0.08000001,0.42800003 +16308000,imu,-0.07945877,0.20349683,-9.91524,0.0063103624,-0.009542099,0.0007096979 +16308000,airspeed,2.6145084,2.553503 +16312000,mag,0.201,-0.08000001,0.42800003 +16312000,imu,-0.10015782,0.1703025,-9.938409,-0.0008017116,-0.0037471065,0.0019456544 +16312000,baro,487.7413 +16312000,airspeed,-3.1293724,-3.0563083 +16320000,imu,-0.16121715,0.16252884,-9.895326,0.000110902365,-0.0041414937,-0.00034249428 +16320000,airspeed,2.3479142,2.2931094 +16320000,gps,488104.0,85456074.0,473977508.0,0.01,0.0,0.0 +16320000,baro,487.638 +16320000,mag,0.20500001,-0.08100001,0.42900002 +16324000,mag,0.20500001,-0.08100001,0.42900002 +16324000,baro,487.67557 +16324000,imu,-0.26315868,0.17661747,-9.876337,-0.00316975,-0.010230065,-0.0018609192 +16324000,airspeed,-1.905183,-1.8607086 +16328000,imu,-0.28737995,0.1624804,-9.851548,0.0006895622,-0.0048111826,-0.0002482362 +16328000,mag,0.20500001,-0.08100001,0.42900002 +16328000,baro,487.52533 +16328000,airspeed,1.8673817,1.8238059 +16332000,mag,0.20500001,-0.08100001,0.42900002 +16332000,imu,-0.22484814,0.15738353,-9.86914,-0.00011668706,-0.004643793,0.0002027664 +16332000,airspeed,-0.870492,-0.85017884 +16332000,baro,487.52533 +16336000,baro,487.57227 +16336000,airspeed,4.998744,4.8820834 +16336000,imu,-0.18660876,0.19084518,-9.913422,-0.0034214042,-0.009487002,6.575537e-05 +16336000,mag,0.20500001,-0.08100001,0.42900002 +16340000,baro,487.67557 +16340000,mag,0.20500001,-0.08100001,0.42900002 +16340000,airspeed,-2.0687811,-2.0204873 +16340000,imu,-0.17464556,0.18291472,-9.9322605,-0.0006009416,-0.0073862774,0.00031857888 +16344000,mag,0.20500001,-0.08100001,0.42900002 +16344000,baro,487.69904 +16348000,airspeed,-2.8922389,-2.8247423 +16348000,baro,487.5582 +16348000,imu,-0.14807747,0.1604702,-9.884479,0.0025388307,-0.00083941175,0.0053855185 +16348000,mag,0.20500001,-0.08100001,0.42900002 +16356000,baro,487.4643 +16356000,imu,-0.13858505,0.15893137,-9.917536,0.001702511,-0.0054179267,0.0001418971 +16356000,mag,0.20500001,-0.08100001,0.42900002 +16356000,airspeed,2.9349375,2.866461 +16364000,baro,487.49716 +16364000,imu,-0.19652475,0.15528665,-9.957413,-0.005613599,-0.005813211,-0.0024955792 +16364000,airspeed,2.2370136,2.1848161 +16364000,mag,0.20500001,-0.08100001,0.42900002 +16368000,baro,487.5676 +16368000,airspeed,2.8773487,2.8101978 +16368000,imu,-0.19261311,0.1642611,-10.0429125,-0.005895612,-0.009421414,0.0015179444 +16368000,mag,0.20500001,-0.08100001,0.42900002 +16376000,mag,0.201,-0.08200001,0.42400002 +16376000,airspeed,2.754864,2.6905553 +16376000,imu,-0.14086112,0.1815237,-9.871412,-0.00345005,0.0010086584,-4.134875e-05 +16376000,baro,487.67087 +16380000,airspeed,-2.5215585,-2.462713 +16380000,imu,-0.18794265,0.24169053,-9.912554,-6.6018685e-05,-0.0042969584,0.0008042225 +16380000,mag,0.201,-0.08200001,0.42400002 +16380000,baro,487.5535 +16384000,airspeed,3.5723825,3.4890141 +16384000,mag,0.201,-0.08200001,0.42400002 +16384000,baro,487.5535 +16384000,imu,-0.25461194,0.21542354,-9.964928,-0.00068287685,-0.0032252944,-0.0031765592 +16388000,baro,487.61453 +16388000,imu,-0.1761583,0.13909082,-9.977498,0.0017852972,-0.00038915445,0.002873071 +16388000,mag,0.201,-0.08200001,0.42400002 +16388000,airspeed,1.9988489,1.9521947 +16392000,mag,0.201,-0.08200001,0.42400002 +16392000,imu,-0.14270912,0.15162782,-9.90409,-0.001367583,-0.0026063048,0.006857271 +16392000,airspeed,3.1632075,3.089397 +16392000,baro,487.50656 +16400000,imu,-0.23815444,0.18402499,-9.927543,-0.0033183144,-0.00069932657,0.0032614986 +16400000,mag,0.201,-0.08200001,0.42400002 +16400000,airspeed,-3.8745909,-3.7841918 +16400000,baro,487.4596 +16404000,imu,-0.21748441,0.14203733,-9.882695,-0.004415572,-0.0066404953,0.00040809164 +16404000,mag,0.201,-0.08200001,0.42400002 +16404000,airspeed,2.2558534,2.2032216 +16404000,baro,487.4596 +16408000,airspeed,-3.1361685,-3.062946 +16408000,imu,-0.20169759,0.1022961,-9.928616,0.0002191437,-0.0090749385,-0.0050457343 +16412000,imu,-0.16062143,0.15876952,-10.014122,-0.000816012,0.0005586002,-0.0114881 +16412000,mag,0.201,-0.08200001,0.42400002 +16412000,airspeed,3.9884593,3.8953655 +16412000,baro,487.62393 +16416000,mag,0.201,-0.08200001,0.42400002 +16416000,airspeed,-2.3172803,-2.2631931 +16416000,imu,-0.10736451,0.12873918,-9.942967,-0.0017989387,0.0013100539,-0.0072534513 +16416000,baro,487.62393 +16420000,baro,487.70374 +16420000,mag,0.201,-0.08300001,0.43100002 +16420000,imu,-0.11727259,0.12416364,-9.832491,-0.0027670334,-0.007468909,-0.0012318132 +16420000,airspeed,3.3159246,3.2385125 +16428000,airspeed,-3.2526956,-3.1767766 +16428000,mag,0.201,-0.08300001,0.43100002 +16428000,baro,487.61453 +16428000,imu,-0.21078874,0.20531042,-9.921696,-0.009643586,-0.01207648,0.00070628704 +16432000,imu,-0.21055944,0.16738872,-9.937457,-0.0061782794,-0.0035831027,0.0036284497 +16436000,imu,-0.19040498,0.15882906,-9.961033,-0.0013840975,-0.0045424225,0.006875933 +16436000,baro,487.66617 +16436000,mag,0.201,-0.08300001,0.43100002 +16436000,airspeed,-4.650756,-4.5421925 +16440000,baro,487.60043 +16440000,imu,-0.16304025,0.13097987,-9.881321,-0.005375643,-0.012285063,0.0024616453 +16440000,airspeed,-2.5836873,-2.5233853 +16440000,mag,0.201,-0.08300001,0.43100002 +16444000,mag,0.201,-0.08300001,0.43100002 +16444000,baro,487.5394 +16444000,airspeed,2.7967074,2.7314436 +16444000,imu,-0.17549059,0.13563894,-9.792851,7.6194054e-05,-0.008806936,-0.0049983175 +16448000,airspeed,3.0874882,3.0154037 +16448000,mag,0.201,-0.08300001,0.43100002 +16448000,baro,487.7319 +16448000,imu,-0.184705,0.14689842,-9.865676,-0.0011370273,-0.0053055314,-0.006250392 +16452000,baro,487.638 +16452000,airspeed,-2.191853,-2.1406915 +16452000,mag,0.201,-0.08300001,0.43100002 +16452000,imu,-0.14973114,0.17558078,-10.005254,-0.0062352456,-0.003924644,-0.003656982 +16456000,imu,-0.15430182,0.15563048,-10.010135,-0.0023781948,-0.0033821512,-0.0026606282 +16456000,airspeed,2.8599153,2.7931705 +16456000,mag,0.201,-0.08300001,0.43100002 +16456000,baro,487.57227 +16460000,imu,-0.2097981,0.10925982,-10.046509,-0.0042945715,-0.00980906,-1.4881868e-05 +16460000,airspeed,-1.4408494,-1.4072227 +16460000,baro,487.57227 +16460000,mag,0.201,-0.08300001,0.43100002 +16464000,baro,487.7225 +16464000,imu,-0.1701544,0.19182743,-9.9514265,-0.0047296863,-0.008151389,0.003738968 +16464000,mag,0.201,-0.08300001,0.43100002 +16464000,airspeed,2.3193026,2.2651548 +16468000,imu,-0.11881205,0.2155047,-9.862537,-0.004484246,-0.0066776313,-0.000760772 +16468000,airspeed,1.7028161,1.6630709 +16468000,mag,0.201,-0.08300001,0.43100002 +16468000,baro,487.62393 +16472000,mag,0.202,-0.08100001,0.42900002 +16472000,airspeed,2.5174513,2.4586823 +16472000,baro,487.68967 +16476000,baro,487.638 +16476000,airspeed,2.0015638,1.954844 +16476000,mag,0.202,-0.08100001,0.42900002 +16476000,imu,-0.10511542,0.23164235,-9.962658,-0.005055845,-0.007758482,0.004065246 +16480000,airspeed,0.98131824,0.9584204 +16480000,baro,487.50186 +16480000,mag,0.202,-0.08100001,0.42900002 +16480000,imu,-0.16513184,0.15524255,-9.944888,-0.0064202216,-0.009765275,-0.0015349133 +16488000,baro,487.6568 +16488000,mag,0.202,-0.08100001,0.42900002 +16488000,imu,-0.26221704,0.16612418,-9.950366,-0.005247166,-0.009618148,-0.0033845329 +16488000,airspeed,2.8929055,2.8253767 +16492000,baro,487.78354 +16492000,imu,-0.24075805,0.1351807,-9.929604,-0.001570339,-0.009564492,0.00019224374 +16492000,mag,0.202,-0.08100001,0.42900002 +16492000,airspeed,-3.8511822,-3.7612567 +16496000,imu,-0.17579764,0.15559296,-9.885718,0.0017097605,-0.008318652,0.0018682644 +16496000,baro,487.6474 +16496000,mag,0.202,-0.08100001,0.42900002 +16496000,airspeed,-2.0215502,-1.9743629 +16500000,baro,487.5676 +16500000,airspeed,3.2936325,3.2167666 +16500000,mag,0.202,-0.08100001,0.42900002 +16504000,airspeed,2.7063665,2.6431878 +16504000,baro,487.68497 +16504000,mag,0.202,-0.08100001,0.42900002 +16504000,imu,-0.117261216,0.15487066,-9.932222,-0.005480034,-0.0016280992,0.00010337584 +16508000,mag,0.202,-0.08100001,0.42900002 +16508000,baro,487.68497 +16512000,mag,0.202,-0.08100001,0.42900002 +16512000,airspeed,-3.592684,-3.5088263 +16512000,imu,-0.11256871,0.11485392,-9.863531,-0.006472444,-0.0070203505,0.0027319386 +16512000,baro,487.62863 +16520000,airspeed,-2.5402565,-2.4809558 +16520000,mag,0.202,-0.08100001,0.42900002 +16520000,gps,488095.0,85456074.0,473977508.0,0.0,0.0,0.01 +16520000,baro,487.68027 +16520000,imu,-0.16108635,0.23249026,-9.874385,0.002739276,-0.0033792658,0.005119679 +16524000,imu,-0.10455089,0.18738154,-9.915556,0.0006524277,-0.0045302343,-6.217788e-05 +16524000,baro,487.47836 +16524000,airspeed,-3.6159096,-3.5315413 +16524000,mag,0.19900002,-0.08200001,0.42800003 +16528000,imu,-0.12597263,0.18954217,-9.85505,0.001456729,-0.0062047844,-0.004831304 +16528000,baro,487.4596 +16528000,mag,0.19900002,-0.08200001,0.42800003 +16528000,airspeed,-2.5939987,-2.5334778 +16532000,mag,0.19900002,-0.08200001,0.42800003 +16532000,baro,487.4596 +16536000,imu,-0.17882901,0.16955762,-9.90281,-0.0033117912,-0.008173099,0.0015204077 +16536000,baro,487.53003 +16536000,airspeed,1.9966019,1.9500105 +16536000,mag,0.19900002,-0.08200001,0.42800003 +16540000,airspeed,3.3979397,3.3186476 +16540000,imu,-0.19083045,0.11257953,-9.942344,-0.00035696477,-0.010191325,0.0020508736 +16544000,baro,487.77417 +16544000,airspeed,0.9864962,0.9634619 +16544000,imu,-0.11198603,0.12371471,-9.908418,-0.0015313509,-0.0055205803,0.002480275 +16544000,mag,0.19900002,-0.08200001,0.42800003 +16548000,baro,487.77417 +16548000,mag,0.19900002,-0.08200001,0.42800003 +16548000,airspeed,1.5738539,1.5371048 +16548000,imu,-0.088928275,0.05272025,-9.888259,0.0020820182,-0.0043117804,0.0025495286 +16552000,airspeed,3.0787706,3.0069036 +16552000,baro,487.6521 +16552000,mag,0.19900002,-0.08200001,0.42800003 +16552000,imu,-0.06971367,0.123803355,-9.903864,0.0015421222,-0.0064041303,0.0017828869 +16560000,airspeed,4.5267158,4.421081 +16560000,mag,0.19900002,-0.08200001,0.42800003 +16560000,baro,487.53473 +16560000,imu,-0.15230383,0.23055656,-9.948959,0.0026337365,-0.015070149,-0.0052597285 +16568000,airspeed,-3.8807633,-3.7901864 +16568000,baro,487.60983 +16568000,mag,0.19900002,-0.08200001,0.42800003 +16568000,imu,-0.16081794,0.11607562,-9.891572,0.00038353555,-0.00048979704,0.00078927376 +16576000,baro,487.71313 +16576000,mag,0.19800001,-0.08000001,0.42900002 +16576000,airspeed,1.6154988,1.5777831 +16576000,imu,-0.20739603,0.15354699,-9.877246,-0.006636202,-0.0055662007,0.0006723699 +16580000,mag,0.19800001,-0.08000001,0.42900002 +16580000,airspeed,1.8425786,1.7995616 +16580000,imu,-0.1872416,0.18098193,-9.918719,-0.0033764867,-0.009269528,-0.0030903914 +16580000,baro,487.71313 +16584000,mag,0.19800001,-0.08000001,0.42900002 +16584000,airspeed,2.6296396,2.5682645 +16584000,baro,487.60513 +16584000,imu,-0.13293573,0.26218748,-9.868596,-0.0031091983,-0.011922153,-0.0036279394 +16588000,imu,-0.18635425,0.22535409,-9.855333,-0.0010055407,-0.004950472,-0.0031549325 +16588000,airspeed,-3.0006683,-2.9306273 +16588000,baro,487.638 +16588000,mag,0.19800001,-0.08000001,0.42900002 +16592000,airspeed,-1.9169779,-1.8722315 +16592000,mag,0.19800001,-0.08000001,0.42900002 +16592000,baro,487.6474 +16592000,imu,-0.22149755,0.13275172,-9.939557,0.0031969708,0.0001348903,-0.0052271355 +16596000,imu,-0.18084288,0.19182375,-9.96139,0.0026346014,-0.0015873128,-0.00014171957 +16596000,airspeed,1.8035587,1.7614671 +16596000,mag,0.19800001,-0.08000001,0.42900002 +16596000,baro,487.57227 +16600000,landed,1.0 +16604000,imu,-0.17699207,0.14829132,-9.980881,-0.0005635246,-0.0014934655,-0.0031103264 +16604000,mag,0.19800001,-0.08000001,0.42900002 +16604000,baro,487.7272 +16604000,airspeed,1.1484177,1.1216056 +16608000,imu,-0.12983589,0.092331514,-9.956571,1.342654e-06,-0.0029349863,0.00047988043 +16608000,mag,0.19800001,-0.08000001,0.42900002 +16608000,baro,487.76007 +16608000,airspeed,-1.2610079,-1.2315645 +16612000,airspeed,2.7195737,2.6560948 +16612000,baro,487.6333 +16612000,mag,0.19800001,-0.08000001,0.42900002 +16612000,imu,-0.15268898,0.13318907,-9.980574,-0.0037352336,-0.006270542,0.003889082 +16616000,imu,-0.13578796,0.17247464,-9.97567,-0.0053589726,-0.008737115,0.0018097794 +16620000,airspeed,3.9103906,3.8191292 +16620000,mag,0.19800001,-0.08000001,0.42900002 +16620000,baro,487.57697 +16620000,imu,-0.16742778,0.16403057,-9.967542,-0.006135871,-0.012842447,0.002346561 +16624000,mag,0.19800001,-0.08000001,0.42900002 +16624000,baro,487.57227 +16628000,airspeed,3.899449,3.808423 +16628000,imu,-0.1650451,0.13033609,-9.9379425,-0.012226507,0.0010789359,0.0053494 +16628000,baro,487.66617 +16628000,mag,0.2,-0.08000001,0.42900002 +16632000,baro,487.66617 +16632000,imu,-0.21618068,0.105058,-9.893498,-0.010384363,-0.002150571,-0.00033367364 +16632000,mag,0.2,-0.08000001,0.42900002 +16632000,airspeed,3.3173604,3.2399223 +16640000,mag,0.2,-0.08000001,0.42900002 +16640000,imu,-0.16534236,0.1571682,-9.900534,0.003211051,-0.0017573802,-0.005949325 +16640000,baro,487.69904 +16640000,airspeed,2.3597772,2.3046875 +16644000,airspeed,-3.9692328,-3.876594 +16644000,mag,0.2,-0.08000001,0.42900002 +16644000,imu,-0.1940023,0.1600391,-9.970423,0.0009405844,-0.006000253,-0.00046913695 +16644000,baro,487.59576 +16648000,imu,-0.18563347,0.1707904,-9.983524,-0.0012292553,-0.007511007,0.0022779175 +16648000,airspeed,-3.0766816,-3.004863 +16652000,imu,-0.21902917,0.17689624,-9.996126,0.0026818316,-0.0067066336,-0.00211905 +16652000,airspeed,-2.531007,-2.4719262 +16652000,baro,487.6568 +16652000,mag,0.2,-0.08000001,0.42900002 +16656000,airspeed,2.1594229,2.1090248 +16656000,baro,487.58636 +16656000,imu,-0.16189992,0.11218651,-9.897448,0.0046701157,-0.009065206,-0.0006410397 +16656000,mag,0.2,-0.08000001,0.42900002 +16660000,baro,487.53003 +16660000,mag,0.2,-0.08000001,0.42900002 +16664000,airspeed,2.2795346,2.2263386 +16664000,imu,-0.123150736,0.13502009,-9.867923,-0.0036899028,-0.003449551,0.0023508116 +16668000,airspeed,1.1654451,1.1382477 +16668000,mag,0.2,-0.08000001,0.42900002 +16668000,imu,-0.18106727,0.14113894,-9.879314,0.0019227291,-0.0035373515,-0.00091892027 +16668000,baro,487.5488 +16676000,airspeed,-3.349324,-3.2711406 +16676000,baro,487.66147 +16676000,mag,0.2,-0.08000001,0.42900002 +16676000,imu,-0.14346632,0.17124122,-9.895231,-0.0018398908,-0.004208734,0.0045201043 +16680000,baro,487.6474 +16680000,airspeed,-2.20904,-2.157476 +16680000,mag,0.2,-0.08000001,0.42900002 +16680000,imu,-0.18414086,0.17909506,-9.925092,0.00048395788,-0.0054383045,0.0030227115 +16684000,mag,0.19800001,-0.08100001,0.42900002 +16684000,airspeed,1.734847,1.694354 +16684000,imu,-0.2591839,0.13719635,-9.924009,-0.0029937262,-0.0062810807,-0.0003412691 +16684000,baro,487.62393 +16688000,imu,-0.20512822,0.08170684,-9.8700905,0.0005883428,-0.0013545981,0.0038793145 +16688000,mag,0.19800001,-0.08100001,0.42900002 +16688000,airspeed,-3.5468073,-3.4640088 +16688000,baro,487.68497 +16692000,baro,487.68497 +16692000,mag,0.19800001,-0.08100001,0.42900002 +16696000,baro,487.67557 +16696000,mag,0.19800001,-0.08100001,0.42900002 +16696000,airspeed,-3.8312624,-3.741825 +16696000,imu,-0.1319368,0.08143353,-9.9449005,0.0034681929,-0.006650505,0.00059820944 +16700000,baro,487.61923 +16700000,mag,0.19800001,-0.08100001,0.42900002 +16700000,imu,-0.13782737,0.076361954,-9.963146,0.00012954751,-0.001994577,0.002458589 +16700000,airspeed,1.9488609,1.9033731 +16704000,mag,0.19800001,-0.08100001,0.42900002 +16704000,baro,487.53003 +16704000,imu,-0.15495838,0.09176461,-9.973198,-0.0033153878,-0.0064248177,0.0014419819 +16704000,airspeed,-1.8955303,-1.8512971 +16708000,baro,487.53003 +16708000,mag,0.19800001,-0.08100001,0.42900002 +16708000,imu,-0.1680369,0.1691922,-9.98958,0.0040081223,-0.011734296,-0.0016985555 +16708000,airspeed,2.9567802,2.887782 +16712000,baro,487.60043 +16712000,mag,0.19800001,-0.08100001,0.42900002 +16712000,imu,-0.14922152,0.27050355,-9.950817,0.0072986763,-0.0067932066,1.4562423e-05 +16712000,airspeed,-3.053787,-2.982513 +16716000,imu,-0.15836206,0.16901447,-9.893608,0.006370365,-0.010120105,0.0017112506 +16716000,airspeed,1.5340824,1.4982735 +16720000,imu,-0.13066532,0.103319556,-9.9181385,0.003285175,-0.008394773,-0.0018765024 +16720000,mag,0.19800001,-0.08100001,0.42900002 +16720000,baro,487.66147 +16720000,airspeed,1.8469793,1.8038651 +16720000,gps,488101.0,85456074.0,473977508.0,0.0,0.0,0.0 +16724000,airspeed,1.774543,1.7331197 +16724000,mag,0.19800001,-0.08100001,0.42900002 +16724000,imu,-0.11959143,0.15002376,-9.921521,-0.0032735202,-0.0015972804,-0.0042937975 +16724000,baro,487.66147 +16728000,imu,-0.20405154,0.15509588,-9.873187,-0.003270347,-0.00165086,-0.004721493 +16728000,mag,0.19800001,-0.08100001,0.42900002 +16728000,airspeed,-4.6891294,-4.5796947 +16728000,baro,487.57227 +16732000,airspeed,-3.4487426,-3.3682325 +16732000,mag,0.201,-0.08000001,0.42900002 +16732000,baro,487.68967 +16732000,imu,-0.20721515,0.14898525,-9.899545,0.0011665428,-3.7770733e-05,-0.0043262052 +16736000,baro,487.60513 +16736000,airspeed,3.758748,3.6710198 +16736000,mag,0.201,-0.08000001,0.42900002 +16736000,imu,-0.1765083,0.1797036,-9.996669,0.0049844477,-0.0020773488,-0.0027217583 +16740000,imu,-0.15044528,0.10344483,-10.037074,-7.6308126e-05,-0.0064834394,-0.000116331124 +16740000,airspeed,2.894347,2.8267756 +16740000,baro,487.71313 +16740000,mag,0.201,-0.08000001,0.42900002 +16744000,imu,-0.17556155,0.10743283,-10.052027,-0.0026751412,-0.008683983,0.00064755644 +16744000,airspeed,2.249537,2.1970158 +16748000,imu,-0.16637383,0.17418315,-10.020348,-0.0014558145,-0.0090590315,0.0017957614 +16748000,airspeed,-4.4394,-4.3357506 +16748000,mag,0.201,-0.08000001,0.42900002 +16748000,baro,487.7366 +16752000,imu,-0.08255376,0.18920456,-9.909123,0.0009891259,-0.0054621985,-9.0740505e-05 +16752000,airspeed,2.8242886,2.7583585 +16752000,mag,0.201,-0.08000001,0.42900002 +16752000,baro,487.67557 +16760000,airspeed,-0.7072999,-0.6907967 +16760000,mag,0.201,-0.08000001,0.42900002 +16760000,imu,-0.18877795,0.15464252,-9.95977,0.0030940638,-0.0020743338,-0.0022120068 +16760000,baro,487.48306 +16768000,imu,-0.10256153,0.1998223,-9.956625,0.0028798988,-0.0049514994,-0.001930789 +16768000,airspeed,-2.7738194,-2.7090774 +16768000,baro,487.61453 +16768000,mag,0.201,-0.08000001,0.42900002 +16772000,airspeed,-1.7697048,-1.7283992 +16772000,baro,487.61453 +16772000,mag,0.201,-0.08000001,0.42900002 +16772000,imu,-0.113603,0.20410894,-9.916655,-0.0002544841,-0.003132018,-0.006507561 +16780000,imu,-0.17884436,0.24071191,-9.995287,-0.00039757806,-0.00792791,-8.0746286e-05 +16780000,airspeed,1.3943424,1.3617911 +16780000,mag,0.201,-0.08000001,0.42900002 +16780000,baro,487.69904 +16784000,mag,0.201,-0.08000001,0.42900002 +16784000,imu,-0.23103656,0.21696861,-9.939972,-0.0020813071,-0.006920901,0.001165661 +16784000,airspeed,2.7709672,2.7062752 +16784000,baro,487.71783 +16788000,airspeed,-3.6213896,-3.5368772 +16788000,baro,487.5582 +16788000,mag,0.2,-0.07900001,0.42900002 +16788000,imu,-0.18349306,0.19603382,-9.9017,0.00025040674,-0.010438401,-0.0050847633 +16792000,mag,0.2,-0.07900001,0.42900002 +16792000,baro,487.66617 +16796000,imu,-0.1623491,0.14976792,-9.922637,-0.0074046897,-0.0038502875,0.0018230849 +16796000,airspeed,-2.784716,-2.7197242 +16800000,baro,487.469 +16800000,airspeed,-2.7423372,-2.6783528 +16800000,mag,0.2,-0.07900001,0.42900002 +16800000,imu,-0.1924414,0.14855142,-9.888219,-0.004776977,-0.0010282161,-0.0017618809 +16804000,mag,0.2,-0.07900001,0.42900002 +16804000,imu,-0.212263,0.14007665,-9.918184,-0.0021538057,-0.003916055,-0.0032816194 +16804000,baro,487.5441 +16808000,imu,-0.18072455,0.2170647,-9.889338,-0.0009039172,-0.009506783,0.0009095709 +16808000,airspeed,2.133494,2.0837092 +16812000,baro,487.68967 +16812000,airspeed,-2.5877304,-2.5273204 +16812000,mag,0.2,-0.07900001,0.42900002 +16812000,imu,-0.16204455,0.21762817,-9.844133,-0.0034705102,-0.011854334,0.0013168176 +16820000,imu,-0.21860154,0.21910691,-9.900575,0.001138482,-0.007445711,0.0030568747 +16820000,airspeed,-0.821997,-0.8028061 +16820000,baro,487.7225 +16820000,mag,0.2,-0.07900001,0.42900002 +16824000,imu,-0.1776451,0.20335288,-9.897978,0.0036635569,-0.006264343,0.0036978426 +16824000,mag,0.2,-0.07900001,0.42900002 +16824000,airspeed,-2.2042568,-2.1527946 +16824000,baro,487.7225 +16828000,baro,487.71783 +16828000,mag,0.2,-0.07900001,0.42900002 +16832000,imu,-0.17610618,0.23694094,-9.873193,0.003228853,-0.013490471,0.000763699 +16832000,airspeed,-2.2309356,-2.178851 +16836000,airspeed,1.7516819,1.7107971 +16836000,imu,-0.20226294,0.17825595,-9.8961315,-0.00055667106,-0.013387946,-0.001841045 +16836000,mag,0.19900002,-0.07900001,0.42800003 +16836000,baro,487.61453 +16840000,mag,0.19900002,-0.07900001,0.42800003 +16840000,airspeed,2.060721,2.012623 +16840000,baro,487.61453 +16840000,imu,-0.16934453,0.1472741,-9.869197,-0.005447645,-0.0077099465,0.0008749307 +16848000,mag,0.19900002,-0.07900001,0.42800003 +16848000,baro,487.61923 +16848000,airspeed,2.874028,2.8069463 +16848000,imu,-0.25960132,0.20985748,-9.970323,0.0024189013,-0.0046133837,-0.0055787917 +16852000,mag,0.19900002,-0.07900001,0.42800003 +16852000,airspeed,1.9909203,1.944442 +16852000,imu,-0.22354552,0.16749446,-10.026604,0.0059509217,-0.0025037276,-0.004733944 +16852000,baro,487.69434 +16856000,mag,0.19900002,-0.07900001,0.42800003 +16856000,imu,-0.20456441,0.1773694,-9.967062,0.0036932628,-0.010107208,0.0018064135 +16856000,airspeed,-1.215854,-1.1874794 +16856000,baro,487.5629 +16860000,mag,0.19900002,-0.07900001,0.42800003 +16860000,baro,487.6568 +16860000,imu,-0.23097058,0.14544243,-9.898202,-0.005666471,-0.014782939,0.009418902 +16860000,airspeed,-3.4245517,-3.344613 +16864000,airspeed,3.7870831,3.6987133 +16864000,imu,-0.24487118,0.15483184,-9.909652,-0.009374571,-0.009609546,0.0024155823 +16864000,mag,0.19900002,-0.07900001,0.42800003 +16864000,baro,487.51593 +16868000,baro,487.61453 +16868000,airspeed,0.9819128,0.9589946 +16868000,imu,-0.21786708,0.19899054,-9.916656,-0.005663162,-0.0033804136,-0.00562363 +16868000,mag,0.19900002,-0.07900001,0.42800003 +16872000,baro,487.49246 +16872000,airspeed,-2.89778,-2.8301651 +16872000,mag,0.19900002,-0.07900001,0.42800003 +16872000,imu,-0.16237776,0.21507241,-9.974917,-0.0012725869,-0.007130206,-0.005061734 +16876000,mag,0.19900002,-0.07900001,0.42800003 +16876000,airspeed,1.3100821,1.2795128 +16876000,imu,-0.11818314,0.1879964,-9.965867,-0.0013469765,-0.009812343,-0.0051111653 +16876000,baro,487.50186 +16880000,baro,487.53003 +16880000,airspeed,4.430696,4.3273044 +16880000,mag,0.19900002,-0.07900001,0.42800003 +16880000,imu,-0.11230214,0.14836241,-9.897481,-0.0030748157,-0.007995089,-0.0062319525 +16884000,mag,0.19900002,-0.07900001,0.42800003 +16884000,imu,-0.17855433,0.13289352,-9.896896,-0.0006044631,-0.0049189036,-0.0055917166 +16884000,airspeed,-0.7399939,-0.722714 +16884000,baro,487.80234 +16888000,mag,0.201,-0.08200001,0.42900002 +16888000,baro,487.5629 +16892000,mag,0.201,-0.08200001,0.42900002 +16892000,airspeed,2.3719356,2.3165808 +16892000,baro,487.5629 +16892000,imu,-0.23327066,0.16924201,-9.870952,0.000558088,-0.0037719654,-0.0016563501 +16900000,baro,487.5535 +16900000,mag,0.201,-0.08200001,0.42900002 +16900000,airspeed,4.4918375,4.387012 +16900000,imu,-0.15011102,0.17740813,-9.96524,-0.0057962374,-0.0020304886,0.0042645796 +16904000,baro,487.48776 +16904000,imu,-0.19465955,0.15539734,-9.97053,-0.0051811603,-0.0007950535,0.003433242 +16904000,mag,0.201,-0.08200001,0.42900002 +16904000,airspeed,-2.999567,-2.929578 +16908000,mag,0.201,-0.08200001,0.42900002 +16908000,baro,487.4502 +16908000,airspeed,-2.5043447,-2.4459157 +16908000,imu,-0.23380089,0.12466509,-9.902839,-0.002524184,-0.0043165716,-0.0015137373 +16912000,airspeed,-2.0840838,-2.0354395 +16912000,baro,487.62393 +16912000,imu,-0.17525728,0.17880623,-9.950666,-0.0004527243,-0.010559987,-0.0005177336 +16912000,mag,0.201,-0.08200001,0.42900002 +16920000,baro,487.6427 +16920000,imu,-0.1736121,0.15262236,-9.887954,-0.0030641628,-0.0033091782,0.005860666 +16920000,gps,488097.0,85456073.0,473977508.0,0.02,0.0,0.02 +16920000,airspeed,4.2995615,4.199201 +16920000,mag,0.201,-0.08200001,0.42900002 +16924000,mag,0.201,-0.08200001,0.42900002 +16924000,baro,487.61923 +16924000,imu,-0.15244876,0.17181884,-9.939059,-0.0013665007,-0.003981863,0.0051848628 +16924000,airspeed,-3.2056851,-3.1308627 +16928000,mag,0.201,-0.08200001,0.42900002 +16928000,imu,-0.23126547,0.23824891,-9.987602,-0.002079646,-0.0057790363,0.0005116763 +16928000,airspeed,-1.57619,-1.5393909 +16928000,baro,487.7225 +16932000,airspeed,2.0135527,1.9665426 +16932000,imu,-0.19082426,0.23334433,-9.927587,-0.009442956,-0.008400454,0.007909349 +16932000,baro,487.7225 +16932000,mag,0.201,-0.08200001,0.42900002 +16936000,mag,0.201,-0.08200001,0.42900002 +16936000,baro,487.61453 +16936000,airspeed,-2.8276606,-2.761662 +16936000,imu,-0.105784155,0.17178962,-9.914376,-0.0121463025,-0.0104884105,0.0040969327 +16940000,airspeed,-1.9866583,-1.9402816 +16944000,imu,-0.26975423,0.14807351,-9.915919,0.004109347,-0.011857003,0.004961866 +16944000,airspeed,-3.05903,-2.9876199 +16944000,baro,487.67557 +16944000,mag,0.201,-0.08000001,0.42700002 +16948000,imu,-0.23058972,0.087225735,-9.878153,0.0018046725,-0.005045955,0.0036236544 +16952000,airspeed,1.9024208,1.8580209 +16952000,imu,-0.18930121,0.113597006,-9.911251,-0.006835865,-0.0018400751,-0.0028264343 +16952000,baro,487.58636 +16952000,mag,0.201,-0.08000001,0.42700002 +16956000,baro,487.3657 +16956000,mag,0.201,-0.08000001,0.42700002 +16956000,imu,-0.1358757,0.2125287,-9.978788,-0.0074987933,-0.005479131,0.002316266 +16956000,airspeed,0.9864114,0.96340233 +16960000,mag,0.201,-0.08000001,0.42700002 +16960000,baro,487.7507 +16960000,airspeed,-3.4519598,-3.371362 +16960000,imu,-0.09692445,0.26672667,-9.964979,-0.008277977,-0.005195082,0.004358255 +16964000,mag,0.201,-0.08000001,0.42700002 +16964000,baro,487.69904 +16964000,airspeed,3.4425778,3.3622098 +16964000,imu,-0.12696156,0.19904663,-9.926642,-0.0026297749,-0.003859498,-0.0009916787 +16968000,mag,0.201,-0.08000001,0.42700002 +16968000,baro,487.62393 +16972000,airspeed,2.3126051,2.2586272 +16972000,imu,-0.1633395,0.13107818,-9.947293,-0.002277989,-0.010180174,-0.0024078833 +16976000,airspeed,1.5769389,1.5401263 +16976000,mag,0.201,-0.08000001,0.42700002 +16976000,baro,487.68027 +16976000,imu,-0.16429909,0.12501863,-9.929968,0.00051390275,-0.006317966,-0.0037184386 +16984000,baro,487.7366 +16984000,airspeed,-0.95267445,-0.9304318 +16984000,mag,0.201,-0.08000001,0.42700002 +16984000,imu,-0.18120383,0.200942,-9.894111,0.00044037434,-0.0037071593,0.005563369 +16988000,imu,-0.23023595,0.26379347,-9.906073,-0.0045246454,-0.0012368375,0.0040639997 +16988000,airspeed,3.9289894,3.837257 +16988000,baro,487.7366 +16988000,mag,0.201,-0.08000001,0.42700002 +16992000,imu,-0.22952136,0.18431531,-9.863145,-0.003998677,-0.0032272523,-0.0020208308 +16992000,airspeed,2.4602525,2.4028175 +16992000,mag,0.201,-0.08000001,0.42700002 +16992000,baro,487.69434 +16996000,mag,0.201,-0.08100001,0.42400002 +16996000,airspeed,-2.0537517,-2.0058064 +16996000,baro,487.69434 +16996000,imu,-0.14368813,0.14958651,-9.877805,-0.0031311985,-0.0022598456,-0.003809647 +17004000,baro,487.7272 +17004000,airspeed,-3.3769875,-3.298145 +17004000,mag,0.201,-0.08100001,0.42400002 +17004000,imu,-0.18184148,0.116580196,-9.888321,-0.003555288,-0.0045423997,0.0036949057 +17008000,baro,487.62863 +17008000,imu,-0.2140988,0.12894842,-9.947529,-0.0084562255,-0.002702224,0.0023616648 +17008000,airspeed,2.4606683,2.4032335 +17008000,mag,0.201,-0.08100001,0.42400002 +17012000,mag,0.201,-0.08100001,0.42400002 +17012000,imu,-0.17331228,0.04226328,-9.965206,-0.0053513837,-0.0037595308,0.00026235674 +17012000,airspeed,-1.1913407,-1.1635292 +17012000,baro,487.68967 +17016000,imu,-0.10535429,0.037329797,-9.877653,0.00055554806,-0.007238119,-0.00526954 +17016000,baro,487.68027 +17016000,airspeed,-2.0597143,-2.0116317 +17016000,mag,0.201,-0.08100001,0.42400002 +17020000,airspeed,2.8848653,2.817527 +17020000,imu,-0.08058196,0.11506595,-9.844019,-0.0016478807,-0.008415066,-0.006916797 +17024000,airspeed,-1.3702934,-1.3383075 +17024000,imu,-0.100453295,0.13872625,-9.934383,-0.005560528,-0.0031134507,-0.00060408143 +17024000,baro,487.6474 +17024000,mag,0.201,-0.08100001,0.42400002 +17028000,baro,487.80234 +17028000,mag,0.201,-0.08100001,0.42400002 +17028000,imu,-0.1610401,0.21447614,-9.946432,-0.005029063,-0.0036027227,0.0024881458 +17028000,airspeed,2.8910854,2.8235745 +17032000,imu,-0.1779779,0.21841538,-9.8961525,-0.0032286532,-0.006973146,0.0020662602 +17032000,airspeed,1.0432129,1.0188648 +17032000,mag,0.201,-0.08100001,0.42400002 +17032000,baro,487.60043 +17036000,mag,0.201,-0.08100001,0.42400002 +17036000,imu,-0.1430686,0.16057028,-9.924493,-0.0042314646,-0.0058535743,0.004280945 +17036000,baro,487.58636 +17036000,airspeed,1.818686,1.7762401 +17040000,baro,487.57227 +17040000,airspeed,-3.5428958,-3.460212 +17040000,imu,-0.1157974,0.10886863,-9.928271,-0.004931196,-0.009235547,0.0001703829 +17044000,mag,0.201,-0.08300001,0.42600003 +17048000,airspeed,-3.3201525,-3.2426784 +17048000,imu,-0.241478,0.17272396,-9.905675,0.000866793,-0.0035365475,0.00075088453 +17048000,baro,487.51123 +17048000,mag,0.201,-0.08300001,0.42600003 +17052000,airspeed,-3.5053608,-3.423565 +17052000,baro,487.51123 +17052000,mag,0.201,-0.08300001,0.42600003 +17052000,imu,-0.24994457,0.26196986,-9.939999,-0.0012108291,-0.0025331886,-0.003055385 +17056000,mag,0.201,-0.08300001,0.42600003 +17056000,airspeed,2.3752944,2.319864 +17056000,baro,487.5441 +17056000,imu,-0.14427255,0.2617475,-9.920948,0.0046738735,-0.004102479,-0.0011166816 +17060000,imu,-0.101579234,0.14916341,-9.985855,0.004110129,-0.0039963615,-0.0011551214 +17060000,mag,0.201,-0.08300001,0.42600003 +17060000,airspeed,-1.5120643,-1.4767604 +17060000,baro,487.7507 +17064000,imu,-0.16321264,0.07914522,-10.00427,0.0027628785,-0.003636434,-0.0035104873 +17064000,mag,0.201,-0.08300001,0.42600003 +17064000,airspeed,3.3586707,3.2802854 +17064000,baro,487.57697 +17068000,mag,0.201,-0.08300001,0.42600003 +17068000,airspeed,-4.390311,-4.287827 +17068000,imu,-0.22252427,0.09841074,-9.94501,0.0012457899,-0.004170207,0.000860719 +17068000,baro,487.66147 +17072000,imu,-0.24685217,0.17588034,-9.943912,-0.008247001,-0.0066680424,0.0055942857 +17072000,baro,487.66147 +17072000,mag,0.201,-0.08300001,0.42600003 +17072000,airspeed,0.76064074,0.742885 +17076000,imu,-0.16896656,0.16199034,-9.936271,-0.010769725,-0.008066838,0.0010649142 +17076000,baro,487.71313 +17076000,mag,0.201,-0.08300001,0.42600003 +17076000,airspeed,-1.3983959,-1.3657488 +17080000,imu,-0.10594064,0.1728603,-9.964693,-0.0036396417,-0.0043012286,-0.00065237697 +17080000,baro,487.53003 +17080000,airspeed,1.4676136,1.433366 +17080000,mag,0.201,-0.08300001,0.42600003 +17084000,baro,487.51123 +17084000,imu,-0.13390836,0.20350547,-9.991998,0.0024690537,-0.0011657345,-0.0035401622 +17084000,airspeed,-2.6361775,-2.5746636 +17084000,mag,0.201,-0.08300001,0.42600003 +17092000,mag,0.201,-0.08300001,0.42600003 +17092000,baro,487.70374 +17092000,airspeed,1.130378,1.1039886 +17092000,imu,-0.20453675,0.13846412,-9.980802,-0.0034987023,-0.0021986247,0.0025195214 +17096000,imu,-0.20467888,0.1639178,-9.957228,-0.00018220508,-0.008148314,0.0005553072 +17096000,mag,0.201,-0.08300001,0.42600003 +17096000,baro,487.68497 +17096000,airspeed,-3.45853,-3.3777921 +17104000,imu,-0.20764045,0.13852182,-9.925408,-0.0006060361,-0.0042193984,0.0063350988 +17104000,mag,0.19700001,-0.08300001,0.42900002 +17104000,baro,487.638 +17104000,airspeed,-1.9358916,-1.8907046 +17108000,imu,-0.19129086,0.12780252,-9.924992,-0.0019501499,-0.008900613,0.005194991 +17112000,imu,-0.10970246,0.22309639,-9.898737,-0.0070018293,-0.009410025,0.0010827798 +17112000,mag,0.19700001,-0.08300001,0.42900002 +17112000,airspeed,4.318084,4.2173023 +17112000,baro,487.59576 +17116000,mag,0.19700001,-0.08300001,0.42900002 +17116000,baro,487.59576 +17120000,baro,487.61453 +17120000,mag,0.19700001,-0.08300001,0.42900002 +17120000,imu,-0.12305235,0.19699389,-9.909071,0.0020790843,-0.0064903814,0.006212017 +17120000,gps,488095.0,85456073.0,473977507.0,0.01,-0.02,0.0 +17120000,airspeed,-2.736281,-2.6724145 +17128000,mag,0.19700001,-0.08300001,0.42900002 +17128000,baro,487.57697 +17128000,airspeed,3.623377,3.5388136 +17128000,imu,-0.12156293,0.12674867,-9.904308,-0.0049395245,-0.0020770633,0.0043917196 +17132000,airspeed,4.8743596,4.7606006 +17132000,imu,-0.19707333,0.15671639,-9.9363575,-0.0039097206,-0.0051492075,0.00553273 +17132000,mag,0.19700001,-0.08300001,0.42900002 +17132000,baro,487.57697 +17136000,mag,0.19700001,-0.08300001,0.42900002 +17136000,baro,487.62863 +17136000,imu,-0.23638941,0.19516394,-9.953169,-0.00031236533,-0.0074264975,-0.0018991316 +17136000,airspeed,-2.8009753,-2.7355974 +17144000,imu,-0.19072573,0.21219148,-9.900202,-0.004363627,0.00045588845,-0.0012583614 +17144000,mag,0.19700001,-0.08300001,0.42900002 +17144000,airspeed,-3.0644162,-2.9929025 +17144000,baro,487.5535 +17148000,airspeed,-2.9895494,-2.9197779 +17148000,imu,-0.1704829,0.10866192,-9.877512,0.0010952179,-0.00027142724,-0.0005749884 +17148000,baro,487.58636 +17148000,mag,0.19900002,-0.08300001,0.425 +17152000,imu,-0.17324166,0.095021956,-9.92696,-0.0018280611,-0.0027712253,0.0044231983 +17152000,mag,0.19900002,-0.08300001,0.425 +17152000,airspeed,4.3085628,4.2080073 +17152000,baro,487.58636 +17156000,imu,-0.18075313,0.12754542,-9.952217,-0.00092195644,-0.0034124216,0.0015953977 +17156000,mag,0.19900002,-0.08300001,0.425 +17156000,airspeed,2.9566486,2.8876514 +17156000,baro,487.5441 +17160000,mag,0.19900002,-0.08300001,0.425 +17160000,airspeed,0.59218305,0.5783562 +17160000,baro,487.76007 +17160000,imu,-0.19245736,0.133588,-9.950144,0.00057433377,-0.0036321147,0.00053590385 +17164000,airspeed,3.48929,3.4078186 +17164000,mag,0.19900002,-0.08300001,0.425 +17164000,imu,-0.21022615,0.16817991,-9.899767,-0.0024387115,-0.0069311787,0.0034927514 +17164000,baro,487.76007 +17172000,imu,-0.16175227,0.10538275,-9.900089,-0.0013872207,-0.0040843934,0.0044729006 +17172000,airspeed,-0.80645376,-0.7876354 +17172000,baro,487.52063 +17172000,mag,0.19900002,-0.08300001,0.425 +17176000,imu,-0.1988795,0.081014015,-9.941102,-2.7555077e-06,-0.0026157913,9.6525764e-05 +17176000,airspeed,-1.9259745,-1.8810122 +17176000,baro,487.69904 +17176000,mag,0.19900002,-0.08300001,0.425 +17180000,baro,487.58636 +17180000,airspeed,1.4048831,1.372095 +17180000,mag,0.19900002,-0.08300001,0.425 +17180000,imu,-0.23230784,0.16327976,-9.8950615,-0.008361275,-0.00041215622,-0.0040698154 +17188000,imu,-0.24415712,0.14758056,-9.946006,-1.5062274e-05,-0.007865579,-0.0027068765 +17188000,baro,487.51593 +17188000,mag,0.19900002,-0.08300001,0.425 +17188000,airspeed,-1.142654,-1.1159906 +17192000,baro,487.51593 +17192000,imu,-0.1827892,0.17019951,-9.949256,0.0057833097,-0.0068568946,-0.00018605388 +17192000,mag,0.19900002,-0.08300001,0.425 +17192000,airspeed,3.6905873,3.604469 +17196000,imu,-0.19296771,0.2477541,-9.960155,0.0077382564,-0.0052496972,-0.0033286687 +17196000,baro,487.60513 +17196000,airspeed,0.945069,0.92301124 +17196000,mag,0.19900002,-0.08300001,0.425 +17204000,airspeed,2.0809083,2.0323365 +17204000,baro,487.638 +17204000,mag,0.201,-0.08500001,0.42800003 +17204000,imu,-0.16349588,0.14875256,-9.922419,-0.0033949222,-0.0075494894,0.0065691895 +17208000,airspeed,3.9930754,3.899858 +17208000,imu,-0.1665424,0.17021349,-9.973869,-0.006020141,-0.012491319,0.0034385729 +17208000,mag,0.201,-0.08500001,0.42800003 +17208000,baro,487.68967 +17212000,mag,0.201,-0.08500001,0.42800003 +17212000,imu,-0.14135458,0.22643043,-10.013725,-0.0055920715,-0.009260664,-0.004052109 +17212000,airspeed,-2.6406226,-2.5789857 +17212000,baro,487.638 +17216000,imu,-0.10886038,0.20513602,-10.000059,0.0037271108,-0.0025547615,-0.0038355347 +17216000,mag,0.201,-0.08500001,0.42800003 +17216000,baro,487.76477 +17216000,airspeed,2.400515,2.344465 +17220000,mag,0.201,-0.08500001,0.42800003 +17220000,baro,487.52063 +17224000,airspeed,2.0260324,1.9787555 +17224000,imu,-0.18828088,0.19820683,-9.964765,0.0016397212,-0.0035509083,-0.0012034492 +17228000,baro,487.67087 +17228000,airspeed,-1.3468639,-1.3154231 +17228000,imu,-0.19559906,0.20281446,-9.91252,0.00020141072,-0.00251517,0.002807726 +17228000,mag,0.201,-0.08500001,0.42800003 +17236000,imu,-0.118966214,0.18417151,-9.863755,-0.0073595345,-0.0074605877,-0.0014307225 +17236000,mag,0.201,-0.08500001,0.42800003 +17236000,baro,487.66617 +17236000,airspeed,3.4889336,3.4074895 +17244000,airspeed,-3.6385944,-3.5536427 +17244000,baro,487.7319 +17244000,imu,-0.15494019,0.14320076,-10.024922,-0.002111906,-0.0048340512,0.008595367 +17244000,mag,0.201,-0.08500001,0.42800003 +17248000,baro,487.57697 +17248000,imu,-0.14081222,0.24718717,-9.960323,0.00018480464,-0.0051108757,0.012427347 +17248000,airspeed,3.0255437,2.9549327 +17248000,mag,0.201,-0.08500001,0.42800003 +17252000,baro,487.49246 +17252000,mag,0.201,-0.08500001,0.42800003 +17252000,imu,-0.1389846,0.21550222,-9.901829,-0.00030320667,-0.00814383,0.0007466742 +17252000,airspeed,-2.3466399,-2.291885 +17256000,mag,0.19800001,-0.08000001,0.42900002 +17256000,baro,487.4502 +17260000,airspeed,0.57937425,0.56584615 +17260000,baro,487.77417 +17260000,imu,-0.118124254,0.14709218,-9.925949,-0.0057291286,-0.014302557,0.004247906 +17260000,mag,0.19800001,-0.08000001,0.42900002 +17264000,baro,487.5394 +17264000,imu,-0.18987904,0.13278298,-9.910867,-0.0038115655,-0.01202725,0.0035583172 +17264000,mag,0.19800001,-0.08000001,0.42900002 +17264000,airspeed,3.4816704,3.400422 +17268000,mag,0.19800001,-0.08000001,0.42900002 +17268000,airspeed,-2.9741666,-2.9047384 +17268000,baro,487.67087 +17268000,imu,-0.31113207,0.14224404,-9.862009,-0.00019300368,-0.004972987,-0.0071393587 +17272000,baro,487.60983 +17272000,imu,-0.19699197,0.13835289,-9.901332,0.0037110823,-0.004580834,-0.0063488805 +17272000,airspeed,-3.3791902,-3.3003192 +17272000,mag,0.19800001,-0.08000001,0.42900002 +17276000,airspeed,-1.9844182,-1.9381014 +17276000,mag,0.19800001,-0.08000001,0.42900002 +17276000,baro,487.60983 +17276000,imu,-0.13334455,0.14180876,-9.939728,0.004168881,-0.0059069037,-0.0023612953 +17280000,imu,-0.2062462,0.15591966,-9.933866,-0.0032559214,-0.004950826,-0.0028991497 +17280000,mag,0.19800001,-0.08000001,0.42900002 +17280000,airspeed,3.110642,3.0380478 +17280000,baro,487.5629 +17284000,baro,487.5629 +17284000,mag,0.19800001,-0.08000001,0.42900002 +17284000,airspeed,-2.126953,-2.0773153 +17284000,imu,-0.15135036,0.11563649,-9.891124,-0.0048302216,-0.0014388667,-0.0019552629 +17288000,airspeed,2.4387236,2.3817997 +17288000,baro,487.638 +17288000,mag,0.19800001,-0.08000001,0.42900002 +17288000,imu,-0.1490742,0.15665081,-9.871626,-0.00015681227,0.0023100146,-0.004260273 +17292000,airspeed,2.4844549,2.426466 +17292000,baro,487.61923 +17292000,mag,0.19800001,-0.08000001,0.42900002 +17292000,imu,-0.1804127,0.10287355,-9.996206,0.00021011995,-0.0017892614,-0.0030011467 +17300000,mag,0.19800001,-0.08000001,0.42900002 +17300000,airspeed,-2.9490283,-2.88019 +17300000,baro,487.6521 +17300000,imu,-0.26001638,0.18562548,-9.872147,-0.00291576,-0.012250487,0.0023758162 +17308000,mag,0.19800001,-0.07800001,0.43100002 +17308000,imu,-0.24477936,0.17728154,-9.941575,0.0035665785,-0.012392316,-0.0060932883 +17308000,baro,487.62863 +17308000,airspeed,3.208681,3.133787 +17312000,airspeed,4.45969,4.3555937 +17312000,mag,0.19800001,-0.07800001,0.43100002 +17312000,imu,-0.21079463,0.19417234,-9.994674,0.0017357975,-0.0071713356,-0.0033156413 +17312000,baro,487.6333 +17320000,imu,-0.22814383,0.19156156,-9.935477,0.0024268148,-0.0054351846,0.0022466742 +17320000,airspeed,3.3071468,3.229951 +17320000,mag,0.19800001,-0.07800001,0.43100002 +17320000,baro,487.6474 +17320000,gps,488097.0,85456074.0,473977508.0,0.02,0.01,0.0 +17324000,airspeed,2.329378,2.275005 +17324000,imu,-0.20362653,0.1714944,-9.918322,-9.331706e-05,-0.005119267,0.0042805364 +17324000,mag,0.19800001,-0.07800001,0.43100002 +17324000,baro,487.6474 +17328000,airspeed,2.8290367,2.7630253 +17328000,baro,487.49716 +17328000,imu,-0.20700015,0.18066274,-9.905283,-0.0049274326,-0.00781969,0.00012497939 +17328000,mag,0.19800001,-0.07800001,0.43100002 +17332000,airspeed,2.8460011,2.779594 +17332000,imu,-0.27341965,0.14541513,-9.877067,0.00075765344,-0.006384016,0.0046972306 +17332000,baro,487.49716 +17332000,mag,0.19800001,-0.07800001,0.43100002 +17336000,airspeed,1.8896552,1.8455606 +17336000,mag,0.19800001,-0.07800001,0.43100002 +17336000,imu,-0.24048081,0.16551016,-9.927924,0.004336476,-0.004770947,0.0017342056 +17336000,baro,487.52063 +17340000,airspeed,-3.3199718,-3.2424653 +17340000,imu,-0.17762089,0.19930935,-9.881701,-0.006035935,-0.0034471408,-0.0036036337 +17344000,imu,-0.2438859,0.17335235,-9.893025,-0.002533228,-0.00030310234,-6.661686e-05 +17344000,baro,487.66617 +17344000,airspeed,-3.0824988,-3.0105424 +17344000,mag,0.19800001,-0.07800001,0.43100002 +17348000,airspeed,-2.1411633,-2.091181 +17348000,baro,487.66617 +17348000,mag,0.19800001,-0.07800001,0.43100002 +17348000,imu,-0.27460203,0.13734905,-9.896096,-0.006324908,-0.0015146182,0.0013141427 +17356000,airspeed,1.7509745,1.7101158 +17356000,baro,487.52063 +17356000,mag,0.19800001,-0.07800001,0.43100002 +17356000,imu,-0.26998982,0.21843919,-9.928087,-0.0052670646,-0.0058752443,-0.0004903451 +17360000,mag,0.2,-0.08100001,0.42600003 +17360000,baro,487.69434 +17360000,airspeed,2.6459992,2.5842283 +17360000,imu,-0.19080079,0.19850884,-9.9724045,-0.004211248,-0.0042093988,-0.006001256 +17368000,baro,487.61453 +17368000,imu,-0.21648994,0.084381714,-9.896706,-0.003951743,-0.0070126406,-0.0034369999 +17368000,airspeed,-2.3821716,-2.326571 +17368000,mag,0.2,-0.08100001,0.42600003 +17376000,mag,0.2,-0.08100001,0.42600003 +17376000,baro,487.61923 +17376000,imu,-0.23194349,0.17777672,-9.928037,-0.0027203872,-0.004142602,-0.008116947 +17376000,airspeed,4.688861,4.57942 +17380000,baro,487.59106 +17380000,airspeed,2.0791209,2.0305965 +17380000,imu,-0.25046724,0.20689929,-9.9450865,0.0032327767,0.0008609121,-0.011214965 +17380000,mag,0.2,-0.08100001,0.42600003 +17384000,mag,0.2,-0.08100001,0.42600003 +17384000,baro,487.76477 +17384000,airspeed,1.28801,1.257936 +17384000,imu,-0.2553861,0.13087906,-9.947258,0.0039779223,-0.0036141188,-0.009535272 +17388000,baro,487.76947 +17388000,airspeed,-2.6134207,-2.552399 +17388000,imu,-0.24055079,0.20663123,-9.928061,0.0001620009,-0.009023319,-0.0026875706 +17388000,mag,0.2,-0.08100001,0.42600003 +17396000,airspeed,3.9736257,3.8808935 +17396000,imu,-0.16490945,0.20101161,-9.859212,0.0021072044,-0.0046737837,0.002152394 +17396000,baro,487.5535 +17396000,mag,0.2,-0.08100001,0.42600003 +17404000,imu,-0.18511854,0.16917899,-9.957744,-5.9302274e-05,-0.00801147,-0.00091693696 +17404000,mag,0.2,-0.08100001,0.42600003 +17404000,baro,487.66617 +17404000,airspeed,-1.894048,-1.8498347 +17408000,mag,0.2,-0.08200001,0.42900002 +17408000,airspeed,-0.57171756,-0.5583726 +17408000,baro,487.638 +17412000,mag,0.2,-0.08200001,0.42900002 +17412000,baro,487.638 +17412000,imu,-0.2297669,0.23969905,-9.916326,-0.006078968,-0.007374416,-0.002542878 +17412000,airspeed,1.0913993,1.065924 +17420000,baro,487.66617 +17420000,airspeed,-1.9938309,-1.9472884 +17420000,imu,-0.17141284,0.2091083,-9.967752,-0.0019655728,-0.00021650508,-0.0030900734 +17420000,mag,0.2,-0.08200001,0.42900002 +17428000,baro,487.53003 +17428000,imu,-0.2776457,0.19178149,-9.949778,0.0036553524,-0.0108142765,-0.0010379956 +17428000,airspeed,2.2089489,2.1574018 +17428000,mag,0.2,-0.08200001,0.42900002 +17432000,airspeed,-3.27891,-3.2024012 +17432000,imu,-0.2317662,0.19562718,-9.901368,-0.0013013342,-0.01011643,0.004619884 +17432000,mag,0.2,-0.08200001,0.42900002 +17432000,baro,487.50186 +17436000,imu,-0.17648618,0.17902872,-9.891003,-0.0045895153,-0.005099639,0.0018582196 +17436000,baro,487.76007 +17436000,airspeed,-4.2542024,-4.154871 +17436000,mag,0.2,-0.08200001,0.42900002 +17440000,imu,-0.17744908,0.16411336,-9.915098,-0.002976082,-0.0050391452,-0.0023105948 +17440000,baro,487.77887 +17440000,mag,0.2,-0.08200001,0.42900002 +17440000,airspeed,-1.0620756,-1.0372761 +17444000,imu,-0.23988529,0.16897066,-9.973252,-0.0023298028,-0.0052448353,-0.00029286428 +17444000,baro,487.68967 +17444000,mag,0.2,-0.08200001,0.42900002 +17448000,airspeed,-3.6190047,-3.5345306 +17452000,airspeed,-2.6303995,-2.569013 +17452000,baro,487.5629 +17452000,imu,-0.23743336,0.18396544,-10.024152,0.002405495,-0.009300602,0.00019926173 +17452000,mag,0.2,-0.08200001,0.42900002 +17456000,airspeed,1.4678934,1.4336368 +17456000,baro,487.5629 +17456000,mag,0.2,-0.08200001,0.42900002 +17456000,imu,-0.15932715,0.18087517,-9.994237,-0.004491983,-0.012757696,-0.003324893 +17460000,airspeed,2.320555,2.2663794 +17460000,mag,0.2,-0.08300001,0.43 +17460000,imu,-0.11608418,0.18265934,-9.918908,-0.001750505,-0.01264977,-0.0012337744 +17460000,baro,487.71313 +17464000,mag,0.2,-0.08300001,0.43 +17464000,baro,487.71313 +17464000,airspeed,2.2398088,2.1875181 +17464000,imu,-0.13902774,0.20410872,-9.911602,-0.0007333217,-0.007357182,0.005021112 +17468000,baro,487.58636 +17468000,airspeed,1.9127427,1.868102 +17468000,mag,0.2,-0.08300001,0.43 +17468000,imu,-0.14531454,0.16289926,-9.916869,-0.000627654,-0.0028223253,0.0032189728 +17472000,airspeed,-1.3613542,-1.3295878 +17472000,mag,0.2,-0.08300001,0.43 +17472000,imu,-0.18234955,0.0907033,-9.899388,0.00021975915,-0.00787576,0.002329999 +17472000,baro,487.51123 +17480000,mag,0.2,-0.08300001,0.43 +17480000,imu,-0.20863737,0.17459668,-9.875791,-0.0022700084,-0.006786212,0.0029916116 +17480000,airspeed,2.5927653,2.5322323 +17480000,baro,487.7272 +17484000,airspeed,2.6995685,2.6365597 +17484000,mag,0.2,-0.08300001,0.43 +17484000,imu,-0.13445526,0.24040648,-9.932998,-0.007316562,-0.0039297054,7.5986994e-05 +17484000,baro,487.61453 +17488000,imu,-0.1759461,0.21803047,-9.952844,-0.006651186,-0.006720956,-0.0013042587 +17488000,baro,487.48306 +17488000,airspeed,2.19029,2.1391842 +17488000,mag,0.2,-0.08300001,0.43 +17492000,imu,-0.2300421,0.20729555,-9.906654,-0.001047848,-0.0034598294,-0.0050045075 +17492000,baro,487.48306 +17492000,mag,0.2,-0.08300001,0.43 +17492000,airspeed,-3.6197703,-3.5353107 +17496000,baro,487.6333 +17496000,imu,-0.13181287,0.17318696,-9.844056,0.00023709117,-0.0031818107,-0.0034429007 +17496000,mag,0.2,-0.08300001,0.43 +17496000,airspeed,-1.5863923,-1.5493634 +17504000,baro,487.68027 +17504000,imu,-0.14286207,0.20095424,-9.969127,-0.0050735916,2.4190105e-05,-0.0021782073 +17504000,mag,0.2,-0.08300001,0.43 +17504000,airspeed,-1.6364844,-1.598282 +17508000,baro,487.68027 +17508000,mag,0.2,-0.08300001,0.43 +17508000,airspeed,3.3885806,3.3094769 +17508000,imu,-0.16522194,0.22236581,-9.907066,-0.001792454,-0.0056627337,-0.0067855897 +17512000,mag,0.2,-0.08000001,0.42700002 +17512000,airspeed,2.1484413,2.0982807 +17512000,baro,487.7366 +17512000,imu,-0.14513822,0.18889616,-9.895266,-0.0024175828,-0.010408791,-0.0051692985 +17516000,airspeed,2.1212144,2.0716894 +17516000,mag,0.2,-0.08000001,0.42700002 +17516000,baro,487.7366 +17516000,imu,-0.12026867,0.10078524,-9.983155,-0.00062349084,-0.014256269,-0.000393783 +17520000,baro,487.48776 +17520000,gps,488102.0,85456074.0,473977508.0,-0.02,0.0,0.01 +17520000,airspeed,-1.6641803,-1.62535 +17520000,mag,0.2,-0.08000001,0.42700002 +17520000,imu,-0.1638787,0.14471498,-10.059904,7.846855e-05,-0.0139714,0.005728816 +17524000,imu,-0.20758717,0.1663701,-10.006165,-0.0027514566,-0.009892149,0.004307801 +17524000,baro,487.70844 +17524000,airspeed,2.2356439,2.1834512 +17524000,mag,0.2,-0.08000001,0.42700002 +17528000,baro,487.68027 +17528000,airspeed,0.57289773,0.55952376 +17528000,mag,0.2,-0.08000001,0.42700002 +17532000,airspeed,-1.5142459,-1.4789008 +17532000,baro,487.638 +17532000,imu,-0.23234707,0.26114267,-10.020728,0.00071921386,-0.0045102118,0.001341996 +17532000,mag,0.2,-0.08000001,0.42700002 +17536000,baro,487.68497 +17536000,imu,-0.23306173,0.30488902,-10.026631,-0.0023529711,-0.006487052,0.0013984368 +17536000,airspeed,1.120062,1.0939146 +17536000,mag,0.2,-0.08000001,0.42700002 +17544000,imu,-0.11044199,0.1843016,-9.889138,-0.0030356948,-0.0030539292,-0.001567119 +17544000,airspeed,3.4334862,3.3533146 +17544000,mag,0.2,-0.08000001,0.42700002 +17544000,baro,487.77887 +17552000,airspeed,-2.3312352,-2.2768197 +17552000,imu,-0.17496826,0.23091483,-9.85778,0.0037750981,-0.005669409,-0.00093937985 +17552000,mag,0.2,-0.08000001,0.42700002 +17552000,baro,487.6427 +17556000,imu,-0.20170279,0.18868344,-9.933926,0.001392368,-0.000639822,-0.00031370454 +17556000,baro,487.6427 +17556000,mag,0.2,-0.08000001,0.42700002 +17556000,airspeed,2.663489,2.6013181 +17560000,imu,-0.16138594,0.1601583,-9.926619,-0.0016798968,-0.0058682854,0.00031787838 +17560000,baro,487.69434 +17560000,mag,0.2,-0.08000001,0.42700002 +17560000,airspeed,1.2705733,1.2409117 +17564000,mag,0.2,-0.08200001,0.42800003 +17564000,imu,-0.1482682,0.19924267,-9.873546,0.0006270879,-0.00785133,0.0016851311 +17564000,airspeed,1.7203634,1.6802256 +17564000,baro,487.4549 +17568000,imu,-0.123781964,0.12822011,-9.900122,0.0005461109,-0.00010089599,0.0074410345 +17572000,baro,487.62393 +17572000,imu,-0.15751812,0.12406839,-9.948593,0.001477249,-0.0010593748,0.004848266 +17572000,airspeed,-1.6822379,-1.6429733 +17572000,mag,0.2,-0.08200001,0.42800003 +17576000,mag,0.2,-0.08200001,0.42800003 +17576000,airspeed,0.52099437,0.50883406 +17576000,baro,487.61923 +17576000,imu,-0.22318745,0.14954716,-9.960192,-0.0054209814,-0.009744138,-0.0006768867 +17580000,mag,0.2,-0.08200001,0.42800003 +17580000,imu,-0.20653011,0.13545692,-9.910588,-0.0129846735,-0.008694685,0.0022270493 +17580000,airspeed,-0.9663792,-0.943823 +17580000,baro,487.62863 +17584000,imu,-0.17309183,0.2278871,-9.856371,-0.0074489634,-0.0025236805,0.005470544 +17584000,airspeed,-2.4307735,-2.374038 +17588000,airspeed,4.0202527,3.9264033 +17588000,mag,0.2,-0.08200001,0.42800003 +17588000,imu,-0.19084625,0.19240715,-9.870191,-0.002201826,-0.00615157,2.6445648e-05 +17588000,baro,487.68027 +17596000,baro,487.76477 +17596000,airspeed,0.5004089,0.4887248 +17596000,imu,-0.16029885,0.19154046,-9.953826,-0.0031426137,-0.0019472516,-0.000243412 +17596000,mag,0.2,-0.08200001,0.42800003 +17600000,baro,487.41266 +17600000,airspeed,-2.9242516,-2.8560328 +17600000,imu,-0.12642947,0.18508317,-9.913526,-0.005538703,-0.0030990758,-0.005757791 +17600000,landed,1.0 +17600000,mag,0.2,-0.08200001,0.42800003 +17604000,airspeed,2.615499,2.554483 +17604000,imu,-0.13450924,0.11594356,-9.935328,-0.0021826052,-0.0029159759,-0.0066272602 +17608000,mag,0.2,-0.08200001,0.42800003 +17608000,airspeed,2.351375,2.2964997 +17608000,imu,-0.21411447,0.13460825,-9.961894,-0.0022700857,-0.0013633705,-0.0059369677 +17608000,baro,487.5676 +17612000,mag,0.2,-0.08200001,0.42800003 +17612000,airspeed,2.755399,2.691077 +17612000,imu,-0.2615834,0.1564318,-9.916961,-0.005482714,-0.0034364057,-0.0060573844 +17612000,baro,487.67557 +17616000,mag,0.201,-0.08100001,0.43100002 +17616000,airspeed,-1.8590862,-1.8157008 +17616000,imu,-0.16110022,0.11604701,-9.944375,-0.0036968752,-0.005794284,-0.0049905125 +17616000,baro,487.5535 +17620000,airspeed,-2.5765758,-2.5164368 +17620000,baro,487.62393 +17620000,mag,0.201,-0.08100001,0.43100002 +17620000,imu,-0.088219605,0.1388617,-9.942316,0.00076420594,-0.0023122812,-0.008498694 +17624000,baro,487.48306 +17624000,mag,0.201,-0.08100001,0.43100002 +17624000,imu,-0.15416887,0.18768479,-9.942459,-0.00012285919,-0.0029207652,-0.00736202 +17624000,airspeed,3.205683,3.1308856 +17632000,baro,487.52063 +17632000,mag,0.201,-0.08100001,0.43100002 +17632000,imu,-0.160924,0.1571186,-9.933149,-0.0031663284,-0.00035693674,-8.812141e-05 +17632000,airspeed,-1.0565215,-1.0318676 +17636000,mag,0.201,-0.08100001,0.43100002 +17636000,airspeed,1.2024508,1.1743861 +17636000,imu,-0.17548941,0.1919129,-9.944618,-0.004250017,-0.0008152748,0.0017713076 +17636000,baro,487.60043 +17640000,mag,0.201,-0.08100001,0.43100002 +17640000,baro,487.60043 +17640000,imu,-0.21240325,0.21883555,-9.911692,-0.0040966077,-0.0039505,0.00084501016 +17640000,airspeed,2.2059052,2.1544204 +17648000,mag,0.201,-0.08100001,0.43100002 +17648000,baro,487.7319 +17648000,imu,-0.17235622,0.22426604,-9.894955,-0.005287314,-0.00078196934,-0.0044647343 +17648000,airspeed,1.932886,1.8877586 +17656000,airspeed,-3.003584,-2.9334776 +17656000,imu,-0.19493322,0.2314967,-9.94915,-0.00024640872,-0.008890149,-0.004485829 +17656000,baro,487.62393 +17656000,mag,0.201,-0.08100001,0.43100002 +17660000,airspeed,3.6958714,3.6095924 +17660000,imu,-0.24507299,0.20686941,-9.974016,-0.002199968,-0.006284268,-0.0007887782 +17664000,airspeed,-1.8248762,-1.7822788 +17664000,baro,487.6521 +17664000,imu,-0.2450493,0.17415886,-9.979596,0.001190013,-0.005111333,0.002186677 +17664000,mag,0.201,-0.08100001,0.43100002 +17668000,imu,-0.17851593,0.23118176,-9.928886,-0.0050138845,-0.0033998273,0.00420096 +17668000,mag,0.201,-0.08100001,0.432 +17668000,airspeed,2.96452,2.8953042 +17668000,baro,487.746 +17672000,airspeed,1.7303877,1.6899937 +17672000,imu,-0.15921031,0.24233972,-9.879373,-0.0022443184,-0.0055776285,0.002200137 +17676000,baro,487.67557 +17676000,airspeed,-2.1995587,-2.1482124 +17676000,imu,-0.19762109,0.13861229,-9.874391,-0.00048968336,-0.010532421,-0.0047477228 +17676000,mag,0.201,-0.08100001,0.432 +17680000,baro,487.62863 +17680000,airspeed,-4.901778,-4.787366 +17680000,imu,-0.19585894,0.13062322,-9.921567,-0.0074498723,-0.0087030865,-0.0014977881 +17680000,mag,0.201,-0.08100001,0.432 +17688000,imu,-0.1759074,0.19574396,-9.933172,-0.00073525426,-0.0010004111,-0.004625115 +17688000,mag,0.201,-0.08100001,0.432 +17688000,airspeed,-1.3953987,-1.3628368 +17688000,baro,487.52533 +17692000,imu,-0.24610132,0.22759007,-9.924778,0.00858417,0.0015434998,-0.0025115055 +17692000,airspeed,1.3514842,1.319947 +17692000,mag,0.201,-0.08100001,0.432 +17692000,baro,487.52533 +17696000,mag,0.201,-0.08100001,0.432 +17696000,airspeed,-2.7368822,-2.6730318 +17696000,baro,487.43613 +17696000,imu,-0.2659983,0.20197882,-9.925012,0.0059227464,-0.0013909721,-0.0043951394 +17700000,airspeed,3.2428834,3.1672282 +17700000,imu,-0.22585425,0.17365913,-9.915414,-0.0037814407,-0.0003572917,-0.002817927 +17700000,baro,487.43613 +17700000,mag,0.201,-0.08100001,0.432 +17708000,airspeed,1.3549426,1.3233131 +17708000,mag,0.201,-0.08100001,0.432 +17708000,baro,487.67087 +17708000,imu,-0.1496991,0.19325142,-9.912461,-0.0015201849,-0.0055346857,-0.009715264 +17712000,mag,0.201,-0.08100001,0.432 +17712000,baro,487.638 +17712000,airspeed,-4.2239394,-4.125345 +17712000,imu,-0.18310282,0.18666376,-9.935972,-0.004007401,-0.0041936203,-0.0073467866 +17716000,mag,0.201,-0.08100001,0.432 +17716000,baro,487.70844 +17716000,imu,-0.17401953,0.16183403,-9.921297,0.00040579512,-0.007789714,-0.0057520918 +17716000,airspeed,3.4670832,3.3861418 +17720000,gps,488111.0,85456074.0,473977507.0,0.01,0.01,0.02 +17724000,imu,-0.18012466,0.17949319,-9.913819,-0.001167413,-0.0055086305,-0.0031299982 +17724000,mag,0.201,-0.08200001,0.43100002 +17724000,baro,487.68967 +17724000,airspeed,-5.5832024,-5.4528637 +17728000,imu,-0.17930493,0.17716062,-9.964908,-0.008600252,-0.009002549,-0.0040966147 +17728000,baro,487.4549 +17728000,mag,0.201,-0.08200001,0.43100002 +17728000,airspeed,2.5537624,2.4941807 +17736000,baro,487.67557 +17736000,imu,-0.1090661,0.18241054,-9.9905205,-0.0008650363,-0.004534516,-0.0047011944 +17736000,mag,0.201,-0.08200001,0.43100002 +17736000,airspeed,-0.53616446,-0.52364826 +17740000,mag,0.201,-0.08200001,0.43100002 +17740000,airspeed,-0.5345971,-0.5221215 +17740000,baro,487.5488 +17740000,imu,-0.08540242,0.24735838,-9.939321,-0.0015736314,-0.0074250195,-0.0024021524 +17744000,baro,487.5441 +17744000,mag,0.201,-0.08200001,0.43100002 +17744000,airspeed,-0.71473485,-0.6980557 +17744000,imu,-0.10959433,0.16436373,-9.927628,-0.0040970584,-0.0053137178,0.005053974 +17748000,mag,0.201,-0.08200001,0.43100002 +17748000,imu,-0.12758036,0.16624074,-9.96598,-0.008675786,-0.0092485435,0.0038364376 +17748000,airspeed,2.9092171,2.8413272 +17748000,baro,487.5441 +17752000,mag,0.201,-0.08200001,0.43100002 +17752000,airspeed,-1.7053568,-1.6655489 +17752000,imu,-0.1213823,0.1616748,-9.983858,-0.010897382,-0.007619218,0.0014127862 +17752000,baro,487.6568 +17756000,imu,-0.12179286,0.16326992,-9.909448,-0.00620827,0.00045693136,-0.0033191044 +17756000,airspeed,3.0544832,2.983183 +17756000,baro,487.6568 +17756000,mag,0.201,-0.08200001,0.43100002 +17760000,baro,487.69904 +17760000,airspeed,-3.7608082,-3.6730108 +17760000,mag,0.201,-0.08200001,0.43100002 +17760000,imu,-0.13672894,0.122254,-9.891761,-0.0024584706,-0.004192043,-0.0034291497 +17764000,airspeed,1.6080273,1.5704874 +17764000,mag,0.201,-0.08200001,0.43100002 +17764000,imu,-0.13995016,0.05650474,-9.895988,0.0020548815,-0.0035056463,-0.0030967789 +17764000,baro,487.69904 +17768000,baro,487.48776 +17768000,airspeed,-2.9752994,-2.9058769 +17768000,mag,0.201,-0.08200001,0.43100002 +17768000,imu,-0.11939343,0.11337207,-9.957056,-0.0016386126,-0.00082364,-0.008778048 +17772000,mag,0.201,-0.07900001,0.43100002 +17772000,baro,487.48776 +17772000,airspeed,1.3079708,1.277452 +17772000,imu,-0.14858785,0.16375619,-9.975043,-0.002669944,-0.003591878,-0.004262407 +17776000,airspeed,2.0578394,2.0098143 +17776000,mag,0.201,-0.07900001,0.43100002 +17776000,imu,-0.16744246,0.21072932,-9.971094,0.0032508736,-0.006122521,-0.0033144534 +17776000,baro,487.5676 +17780000,mag,0.201,-0.07900001,0.43100002 +17780000,baro,487.51593 +17780000,airspeed,-0.6690776,-0.6534649 +17780000,imu,-0.15050371,0.18455479,-9.92906,0.0044126543,-0.008412293,-0.007757354 +17784000,mag,0.201,-0.07900001,0.43100002 +17784000,baro,487.53473 +17788000,imu,-0.16315752,0.11004701,-9.949791,-0.0038711277,-0.0056128153,-0.0009785184 +17788000,airspeed,2.5793793,2.5191734 +17792000,imu,-0.108971134,0.11245846,-9.92814,-0.0004392571,-0.008533566,-0.0010119868 +17792000,mag,0.201,-0.07900001,0.43100002 +17792000,baro,487.51123 +17792000,airspeed,1.8170172,1.7746184 +17796000,mag,0.201,-0.07900001,0.43100002 +17796000,airspeed,-1.35834,-1.3266274 +17796000,baro,487.71783 +17796000,imu,-0.17245804,0.12996586,-9.917008,-0.0003553336,-0.005504305,-0.0029305408 +17800000,imu,-0.21277313,0.16676128,-9.889309,-6.188269e-05,-0.0039896504,-0.0004638533 +17800000,airspeed,-2.7415714,-2.6776037 +17804000,airspeed,-2.682135,-2.6195283 +17804000,imu,-0.16961272,0.23719168,-9.934186,-0.0021994559,-0.008837156,-0.0028619915 +17804000,mag,0.201,-0.07900001,0.43100002 +17804000,baro,487.6474 +17808000,airspeed,1.2160773,1.1876943 +17808000,imu,-0.1913171,0.16871557,-9.929343,-0.0020668327,-0.0102675045,0.00022195709 +17808000,mag,0.201,-0.07900001,0.43100002 +17808000,baro,487.60513 +17812000,airspeed,1.7979083,1.7559568 +17812000,imu,-0.119002365,0.17179997,-9.900507,0.0047645085,-0.010450435,0.0030375835 +17812000,mag,0.201,-0.07900001,0.43100002 +17812000,baro,487.49716 +17816000,mag,0.201,-0.07900001,0.43100002 +17816000,imu,-0.06804303,0.15986905,-9.939205,-6.151807e-05,-0.008477714,0.0033073407 +17816000,baro,487.41266 +17816000,airspeed,0.9116372,0.8903701 +17820000,airspeed,0.755597,0.73797005 +17820000,imu,-0.19375226,0.13047181,-9.979577,-0.004070447,-0.009708078,0.0055217096 +17824000,imu,-0.22300725,0.17553036,-9.993103,-0.005850552,-0.013624762,0.002564603 +17824000,baro,487.6474 +17824000,mag,0.201,-0.07900001,0.43100002 +17824000,airspeed,4.4238544,4.320591 +17828000,airspeed,2.1511953,2.100992 +17828000,mag,0.19800001,-0.08100001,0.42900002 +17828000,imu,-0.1444069,0.104256846,-9.993892,0.001665611,-0.005998187,-0.0008545932 +17828000,baro,487.5629 +17836000,imu,-0.14275685,0.115261815,-9.934983,0.0011016403,-0.0043931343,-0.0067399396 +17836000,mag,0.19800001,-0.08100001,0.42900002 +17836000,airspeed,2.2424939,2.1901364 +17836000,baro,487.7413 +17840000,mag,0.19800001,-0.08100001,0.42900002 +17840000,imu,-0.21944039,0.14836049,-9.92448,0.0016586297,-0.0045879143,-0.004942079 +17840000,baro,487.57697 +17840000,airspeed,2.3848488,2.3291907 +17844000,baro,487.6333 +17844000,mag,0.19800001,-0.08100001,0.42900002 +17844000,airspeed,2.7045906,2.6414618 +17844000,imu,-0.19414258,0.16267194,-9.908011,0.004029589,-0.0057161245,-0.006387618 +17848000,mag,0.19800001,-0.08100001,0.42900002 +17848000,imu,-0.052471034,0.13291547,-9.8815775,0.0010287924,-0.010141444,-0.0027078097 +17848000,airspeed,2.7948241,2.729619 +17848000,baro,487.4502 +17856000,imu,-0.18810846,0.0982739,-9.951047,-0.007516232,-3.8368726e-05,0.0051833666 +17856000,baro,487.67087 +17856000,mag,0.19800001,-0.08100001,0.42900002 +17856000,airspeed,2.0874107,2.0386832 +17860000,baro,487.5582 +17860000,mag,0.19800001,-0.08100001,0.42900002 +17860000,imu,-0.2149647,0.108600624,-9.958848,-0.006226848,-0.00560108,0.0004964497 +17860000,airspeed,-3.9054406,-3.814299 +17864000,baro,487.8164 +17864000,imu,-0.23709239,0.1535481,-9.923068,-0.003062704,-0.011490108,-0.0006079393 +17864000,airspeed,-2.6475399,-2.5857143 +17864000,mag,0.19800001,-0.08100001,0.42900002 +17872000,mag,0.19800001,-0.08100001,0.42900002 +17872000,imu,-0.17731713,0.22896552,-9.991318,-0.0005794614,-0.008732311,0.0016624139 +17872000,baro,487.59576 +17872000,airspeed,0.5430713,0.53039634 +17876000,baro,487.79294 +17876000,mag,0.19800001,-0.08100001,0.42900002 +17876000,airspeed,-3.5036173,-3.4218059 +17876000,imu,-0.17752446,0.21460746,-10.060403,-0.0029050095,-0.01173078,0.003668455 +17880000,mag,0.201,-0.08100001,0.43100002 +17880000,airspeed,0.8249552,0.8057022 +17880000,imu,-0.24577539,0.22363621,-10.054313,0.0030594997,-0.0100042,0.002009524 +17880000,baro,487.57697 +17888000,baro,487.6521 +17888000,imu,-0.1566918,0.19731574,-9.881755,0.003710433,-0.007727294,0.0036599846 +17888000,airspeed,4.5288477,4.423133 +17888000,mag,0.201,-0.08100001,0.43100002 +17892000,baro,487.6474 +17892000,imu,-0.17674124,0.15151405,-9.877484,-0.0022881343,-0.0050657894,0.0037891655 +17892000,airspeed,4.6054077,4.4979076 +17892000,mag,0.201,-0.08100001,0.43100002 +17896000,baro,487.68497 +17896000,imu,-0.14914498,0.19047056,-9.959286,-0.0048137256,-0.0032279668,0.0011471068 +17896000,airspeed,-1.9054359,-1.8609544 +17896000,mag,0.201,-0.08100001,0.43100002 +17900000,airspeed,2.7491183,2.6849587 +17904000,mag,0.201,-0.08100001,0.43100002 +17904000,imu,-0.18800974,0.20402658,-9.955402,-0.0027552864,-0.007529761,0.0008584069 +17904000,airspeed,2.444222,2.387152 +17904000,baro,487.76007 +17912000,mag,0.201,-0.08100001,0.43100002 +17912000,imu,-0.14280447,0.19368695,-9.952288,-0.0067585786,-0.0053010974,-0.0066773533 +17912000,airspeed,2.924813,2.8565538 +17912000,baro,487.57227 +17920000,gps,488106.0,85456074.0,473977508.0,0.0,0.03,0.03 +17920000,imu,-0.14595418,0.27636632,-10.010124,0.0031551905,-0.0035045703,0.007775909 +17920000,airspeed,-2.461631,-2.4041698 +17920000,baro,487.6568 +17920000,mag,0.201,-0.08100001,0.43100002 +17924000,imu,-0.14401627,0.21972953,-9.9921665,-0.0039982847,0.0030434523,-0.0031735585 +17924000,airspeed,-1.491533,-1.4567132 +17924000,baro,487.69434 +17924000,mag,0.201,-0.08100001,0.43100002 +17928000,imu,-0.1636146,0.21272866,-9.862846,0.00040152902,0.0051440913,-0.0058421125 +17928000,mag,0.20300001,-0.08300001,0.42900002 +17928000,baro,487.5488 +17928000,airspeed,-3.2762208,-3.1997654 +17932000,airspeed,0.5254811,0.5132182 +17932000,baro,487.5488 +17932000,imu,-0.17503034,0.22732952,-9.901218,0.0053367266,-0.005804079,-0.0017222642 +17932000,mag,0.20300001,-0.08300001,0.42900002 +17936000,mag,0.20300001,-0.08300001,0.42900002 +17936000,airspeed,3.1554787,3.081827 +17936000,imu,-0.18530942,0.2010077,-9.93344,-0.0024395664,-0.012761181,0.0054187775 +17936000,baro,487.62393 +17940000,imu,-0.20494749,0.15763463,-9.90982,-0.0037682217,-0.007031379,0.006455711 +17940000,baro,487.75537 +17940000,mag,0.20300001,-0.08300001,0.42900002 +17940000,airspeed,-3.1479185,-3.0744188 +17944000,imu,-0.25578734,0.1454301,-9.961099,-0.0011623855,-0.0028458692,0.0014695986 +17944000,airspeed,0.9839983,0.9610432 +17944000,mag,0.20300001,-0.08300001,0.42900002 +17944000,baro,487.40796 +17948000,baro,487.71783 +17948000,imu,-0.2041999,0.16411425,-9.954854,0.0023243197,-0.006566793,0.001815039 +17948000,airspeed,1.8952056,1.8509593 +17948000,mag,0.20300001,-0.08300001,0.42900002 +17952000,airspeed,3.4873426,3.4059255 +17952000,mag,0.20300001,-0.08300001,0.42900002 +17952000,baro,487.71783 +17952000,imu,-0.14015204,0.13419642,-9.91413,0.0015822558,-0.010107944,-0.0013703543 +17960000,baro,487.638 +17960000,imu,-0.20366932,0.1638792,-9.928055,0.0053324974,-0.005390362,-0.005673583 +17960000,airspeed,1.9459982,1.9005753 +17960000,mag,0.20300001,-0.08300001,0.42900002 +17968000,baro,487.60983 +17968000,mag,0.20300001,-0.08300001,0.42900002 +17968000,imu,-0.26365292,0.2001699,-10.0069275,-0.00040249072,-0.0056069912,-0.0015845464 +17968000,airspeed,-3.697338,-3.6110423 +17972000,baro,487.60983 +17972000,imu,-0.16496964,0.15591626,-9.904793,-0.00031091325,-0.0037449803,-0.0007164893 +17972000,mag,0.20300001,-0.08300001,0.42900002 +17972000,airspeed,-3.6239452,-3.5393624 +17976000,airspeed,-1.0302107,-1.0061727 +17976000,baro,487.48776 +17976000,imu,-0.13889691,0.15963224,-9.8948765,-0.00092575245,-0.0071298922,-0.00043609538 +17976000,mag,0.20300001,-0.08300001,0.42900002 +17980000,baro,487.66617 +17980000,airspeed,1.9518546,1.9062918 +17980000,imu,-0.19003889,0.20349397,-9.929363,-0.0049611065,-0.007718696,-0.002121179 +17980000,mag,0.20400001,-0.08100001,0.42800003 +17988000,airspeed,-2.321939,-2.267762 +17988000,baro,487.48306 +17988000,imu,-0.062903464,0.118732326,-9.9164505,-0.003058324,-0.0047840704,0.008378002 +17988000,mag,0.20400001,-0.08100001,0.42800003 +17992000,imu,-0.17213708,0.16301538,-9.982735,-0.0020414144,-0.005282026,0.0010882986 +17992000,mag,0.20400001,-0.08100001,0.42800003 +17992000,airspeed,3.6976583,3.6113486 +17992000,baro,487.638 +17996000,imu,-0.24452683,0.11246967,-9.973533,-0.0028446112,-0.004601556,-0.00085372955 +17996000,airspeed,2.2876256,2.2342284 +17996000,mag,0.20400001,-0.08100001,0.42800003 +17996000,baro,487.638 +18000000,baro,487.78824 +18000000,airspeed,1.9374508,1.8922102 +18000000,imu,-0.22514707,0.09981413,-9.942457,-0.0025913783,-0.0033530535,0.0014691191 +18000000,mag,0.20400001,-0.08100001,0.42800003 +18004000,imu,-0.17653513,0.16791043,-9.940675,-0.0038153813,0.00014081947,-0.0018433132 +18004000,baro,487.69904 +18004000,airspeed,-3.3419104,-3.2638924 +18004000,mag,0.20400001,-0.08100001,0.42800003 +18008000,imu,-0.1844822,0.16884218,-9.922901,-0.0044984156,-0.0012231655,-0.00014854672 +18008000,mag,0.20400001,-0.08100001,0.42800003 +18008000,airspeed,2.1702602,2.119608 +18008000,baro,487.59576 +18012000,mag,0.20400001,-0.08100001,0.42800003 +18012000,airspeed,0.6548916,0.6396066 +18012000,imu,-0.2052005,0.14227352,-9.882218,-0.006230638,-0.0038088218,-0.0017359371 +18012000,baro,487.60513 +18016000,mag,0.20400001,-0.08100001,0.42800003 +18016000,imu,-0.15903442,0.15035628,-9.877908,-0.0011332975,-0.0047820485,-0.0032472422 +18016000,airspeed,2.1296358,2.0799136 +18016000,baro,487.7413 +18020000,imu,-0.09533347,0.17642987,-9.97333,0.0007801841,-0.004727779,-0.005566761 +18020000,baro,487.7413 +18020000,mag,0.20400001,-0.08100001,0.42800003 +18020000,airspeed,-3.9397202,-3.8477366 +18024000,baro,487.59106 +18024000,imu,-0.08998323,0.16468322,-9.9615965,-0.008801298,-0.0027329638,-0.0038421499 +18024000,mag,0.20400001,-0.08100001,0.42800003 +18024000,airspeed,1.9975717,1.9509504 +18028000,mag,0.20400001,-0.08100001,0.42800003 +18028000,baro,487.59106 +18028000,airspeed,0.53660667,0.52408284 +18028000,imu,-0.103447326,0.18280093,-9.900549,-0.006989873,-0.0067309933,0.0022041542 +18036000,airspeed,-2.64985,-2.5879927 +18036000,baro,487.67087 +18036000,imu,-0.16183154,0.26156554,-9.9716215,-0.0024862052,-0.004824652,-0.000753439 +18036000,mag,0.19900002,-0.08200001,0.43100002 +18040000,baro,487.7319 +18040000,mag,0.19900002,-0.08200001,0.43100002 +18044000,baro,487.638 +18044000,imu,-0.12697856,0.15385349,-9.982076,-0.002928531,-0.00649611,-0.0012199769 +18044000,airspeed,-1.7180996,-1.6779963 +18044000,mag,0.19900002,-0.08200001,0.43100002 +18048000,baro,487.60043 +18048000,mag,0.19900002,-0.08200001,0.43100002 +18048000,airspeed,-2.9613252,-2.8922093 +18048000,imu,-0.22015756,0.20752709,-9.904131,0.0061773644,-0.008088388,-0.0042879824 +18052000,baro,487.361 +18052000,mag,0.19900002,-0.08200001,0.43100002 +18056000,airspeed,1.4921293,1.4573095 +18056000,mag,0.19900002,-0.08200001,0.43100002 +18056000,baro,487.53473 +18056000,imu,-0.15730125,0.1952863,-9.990557,0.000974356,-0.004986836,-0.0026155792 +18060000,imu,-0.15584102,0.16948316,-10.025199,-0.004862133,-0.008621435,0.004014613 +18060000,mag,0.19900002,-0.08200001,0.43100002 +18060000,airspeed,-2.187619,-2.1365645 +18060000,baro,487.57227 +18064000,baro,487.57227 +18064000,imu,-0.20972596,0.19618948,-9.987088,-0.006527982,-0.007508258,0.0024280099 +18064000,mag,0.19900002,-0.08200001,0.43100002 +18064000,airspeed,2.1387544,2.0888402 +18068000,airspeed,2.411812,2.3555143 +18068000,mag,0.19900002,-0.08200001,0.43100002 +18068000,baro,487.6521 +18068000,imu,-0.26454067,0.14957541,-9.934185,-0.002349393,-0.0034916922,0.0014755646 +18076000,airspeed,-0.49199986,-0.48051554 +18076000,mag,0.19900002,-0.08200001,0.43100002 +18076000,baro,487.6474 +18076000,imu,-0.15051934,0.24372138,-9.8661175,-0.005953254,-0.0034711866,0.008828001 +18084000,imu,-0.19841735,0.1890546,-9.873592,-0.002335926,-0.009338906,9.018853e-05 +18084000,mag,0.201,-0.077000014,0.42800003 +18084000,airspeed,1.7550371,1.7140793 +18084000,baro,487.5629 +18092000,airspeed,1.6273276,1.5893462 +18092000,baro,487.60513 +18092000,mag,0.201,-0.077000014,0.42800003 +18092000,imu,-0.22385061,0.20801887,-9.86936,-0.0058304854,-0.0047380156,0.007698364 +18096000,airspeed,-1.335894,-1.3047161 +18096000,imu,-0.21433505,0.15985233,-9.941556,-0.008294785,-0.0036383937,0.0014275922 +18096000,baro,487.58636 +18096000,mag,0.201,-0.077000014,0.42800003 +18104000,baro,487.7225 +18104000,imu,-0.26217568,0.16160803,-9.9050455,-0.0039174627,-0.0049209213,0.0016638649 +18104000,airspeed,-2.2965128,-2.2428966 +18104000,mag,0.201,-0.077000014,0.42800003 +18108000,imu,-0.23368613,0.16851336,-9.936307,-0.0018929715,-0.00448884,0.0011273356 +18108000,mag,0.201,-0.077000014,0.42800003 +18108000,airspeed,-1.9374114,-1.892179 +18108000,baro,487.7225 +18112000,imu,-0.14409132,0.20688596,-9.94618,-0.0020543486,-0.0011434717,-0.008207759 +18112000,airspeed,1.5838484,1.5468742 +18116000,imu,-0.14879319,0.1926245,-9.903628,-4.401403e-05,-0.002762677,-0.0048209853 +18116000,baro,487.70844 +18116000,mag,0.201,-0.077000014,0.42800003 +18116000,airspeed,-3.4218943,-3.3420074 +18120000,gps,488109.0,85456074.0,473977508.0,0.01,0.0,0.01 +18124000,airspeed,1.7532294,1.7123098 +18124000,mag,0.201,-0.077000014,0.42800003 +18124000,baro,487.60043 +18124000,imu,-0.19718802,0.14384636,-9.850901,0.00078051677,-0.0058239955,0.0008254808 +18128000,airspeed,-0.7835112,-0.7652231 +18128000,imu,-0.24967009,0.19839086,-9.822428,-0.0023721943,-0.011661596,-0.0044863126 +18128000,mag,0.201,-0.077000014,0.42800003 +18128000,baro,487.62863 +18132000,imu,-0.20696174,0.24366279,-9.901973,-0.004496123,-0.009241308,0.001467014 +18132000,airspeed,1.2234687,1.1949118 +18132000,mag,0.201,-0.077000014,0.42800003 +18132000,baro,487.62393 +18136000,mag,0.202,-0.08100001,0.42700002 +18136000,baro,487.62393 +18136000,imu,-0.15911847,0.21749105,-9.924829,-0.0079488335,-0.0064189266,-0.0010661491 +18136000,airspeed,-0.29453975,-0.28766492 +18140000,airspeed,1.7417709,1.7011163 +18140000,mag,0.202,-0.08100001,0.42700002 +18140000,baro,487.62393 +18140000,imu,-0.15067573,0.22051458,-9.911524,-0.002277356,-0.0054003983,-0.007323602 +18144000,airspeed,3.447853,3.3673801 +18144000,imu,-0.13548307,0.18183461,-9.982287,0.00044782346,-0.0061602495,-0.0050529437 +18144000,baro,487.60983 +18144000,mag,0.202,-0.08100001,0.42700002 +18152000,mag,0.202,-0.08100001,0.42700002 +18152000,imu,-0.14559287,0.14980559,-9.913691,-3.041531e-05,-0.007769745,-0.0015826129 +18152000,baro,487.6521 +18152000,airspeed,1.1969739,1.1690334 +18156000,mag,0.202,-0.08100001,0.42700002 +18156000,airspeed,-2.8766446,-2.809505 +18156000,imu,-0.19279699,0.2348844,-9.880319,-0.0056134905,-0.0037390327,0.00020820092 +18156000,baro,487.60043 +18160000,baro,487.70844 +18160000,imu,-0.2140191,0.19791228,-9.883242,-0.0023286378,-0.006348149,-0.001177189 +18160000,mag,0.202,-0.08100001,0.42700002 +18160000,airspeed,3.597528,3.5135405 +18164000,baro,487.7507 +18164000,airspeed,2.7640126,2.6994772 +18164000,mag,0.202,-0.08100001,0.42700002 +18168000,baro,487.69434 +18168000,airspeed,0.73591936,0.71873933 +18168000,mag,0.202,-0.08100001,0.42700002 +18168000,imu,-0.13348328,0.1866574,-9.949911,-0.0023409172,-0.00766995,0.0015525655 +18172000,airspeed,-0.5090029,-0.4971257 +18172000,baro,487.51123 +18172000,mag,0.202,-0.08100001,0.42700002 +18172000,imu,-0.12387065,0.14001118,-9.947207,0.0041590547,-0.005090604,0.005357188 +18176000,imu,-0.094987564,0.17413506,-9.965646,-0.00018602023,-0.007378174,-0.0004996687 +18176000,mag,0.202,-0.08100001,0.42700002 +18176000,airspeed,2.0366256,1.9891024 +18176000,baro,487.51123 +18184000,airspeed,1.0527389,1.0281634 +18184000,baro,487.68027 +18184000,mag,0.202,-0.08100001,0.42700002 +18184000,imu,-0.19714019,0.12433323,-9.90223,-0.0023225618,-0.010785451,-0.002369856 +18192000,mag,0.202,-0.08000001,0.42700002 +18192000,baro,487.53473 +18192000,airspeed,2.993176,2.923328 +18192000,imu,-0.24729188,0.2501062,-9.927786,-0.00950254,-0.0038241383,0.0005564425 +18196000,baro,487.68027 +18196000,airspeed,-2.1489472,-2.0987818 +18196000,imu,-0.2381166,0.14645302,-9.90214,-0.007686508,-0.006867831,-0.0013013714 +18196000,mag,0.202,-0.08000001,0.42700002 +18204000,mag,0.202,-0.08000001,0.42700002 +18204000,baro,487.5441 +18204000,airspeed,3.6109867,3.5267198 +18204000,imu,-0.16201091,0.22778262,-9.937808,-0.004162619,-0.0013785628,0.0053580287 +18208000,mag,0.202,-0.08000001,0.42700002 +18208000,imu,-0.17872798,0.18471695,-9.877697,-0.001939537,-0.0017405408,0.0034506929 +18208000,airspeed,-0.99899685,-0.97568405 +18208000,baro,487.5441 +18212000,imu,-0.17953669,0.18452923,-9.812382,0.008335904,-0.00013965796,0.0028713378 +18212000,airspeed,2.9352248,2.866708 +18212000,baro,487.6568 +18212000,mag,0.202,-0.08000001,0.42700002 +18216000,imu,-0.22163153,0.17359383,-9.898853,0.009859614,-0.0026196237,0.0024229216 +18216000,airspeed,-3.0791621,-3.007277 +18216000,baro,487.70374 +18216000,mag,0.202,-0.08000001,0.42700002 +18220000,imu,-0.23697801,0.1194368,-9.9639635,0.0011096505,-0.002793767,-0.0019508684 +18220000,baro,487.66147 +18220000,airspeed,-2.0389493,-1.991354 +18220000,mag,0.202,-0.08000001,0.42700002 +18228000,imu,-0.07848081,0.22625041,-9.949667,-0.0051206024,-0.0015368476,-0.00017090846 +18228000,baro,487.61453 +18228000,airspeed,3.32987,3.2521498 +18228000,mag,0.202,-0.08000001,0.42700002 +18236000,airspeed,-2.2182136,-2.166426 +18236000,baro,487.71783 +18236000,imu,-0.18687762,0.23892073,-9.963032,0.0026270184,-0.0121401725,0.0070433915 +18236000,mag,0.202,-0.08000001,0.42700002 +18240000,baro,487.53473 +18240000,imu,-0.18191655,0.19296187,-9.976206,0.002173143,-0.008828704,0.0058693085 +18240000,airspeed,3.7792401,3.691049 +18240000,mag,0.202,-0.08000001,0.42700002 +18244000,mag,0.202,-0.08300001,0.43100002 +18244000,imu,-0.09873782,0.15157044,-9.915904,-0.0056507057,-0.005817621,0.0008934913 +18244000,baro,487.5488 +18244000,airspeed,-3.515963,-3.4339125 +18248000,mag,0.202,-0.08300001,0.43100002 +18248000,airspeed,-0.8657705,-0.8455561 +18248000,imu,-0.14943114,0.13291731,-9.888293,-0.0058226218,-0.0075452332,-0.0010399448 +18248000,baro,487.75537 +18252000,baro,487.75537 +18252000,airspeed,-1.4316249,-1.3981986 +18252000,imu,-0.18491668,0.10985405,-9.915016,0.00054909824,-0.008474822,-0.0015012335 +18252000,mag,0.202,-0.08300001,0.43100002 +18256000,baro,487.69434 +18256000,airspeed,-4.043657,-3.949257 +18256000,imu,-0.086177714,0.110971995,-9.982618,-0.005781932,-0.006612278,0.0054200883 +18256000,mag,0.202,-0.08300001,0.43100002 +18260000,imu,-0.11809798,0.14700817,-9.989346,-0.0064131315,-0.0066849585,0.000949937 +18260000,airspeed,-0.766949,-0.7490444 +18260000,baro,487.69434 +18260000,mag,0.202,-0.08300001,0.43100002 +18264000,mag,0.202,-0.08300001,0.43100002 +18264000,airspeed,3.1363032,3.063114 +18264000,imu,-0.10858122,0.17985187,-9.954094,0.00084568554,-0.0064649675,-0.0047617173 +18264000,baro,487.5441 +18268000,baro,487.5441 +18268000,mag,0.202,-0.08300001,0.43100002 +18268000,airspeed,3.2174227,3.1423404 +18268000,imu,-0.17347991,0.18066026,-9.98804,-7.133288e-05,-0.009044949,-0.0006793205 +18272000,mag,0.202,-0.08300001,0.43100002 +18272000,airspeed,-1.8446323,-1.8015773 +18272000,baro,487.62393 +18272000,imu,-0.19704571,0.15116358,-9.993343,-0.0057471218,-0.00782039,0.0006156029 +18280000,mag,0.202,-0.08300001,0.43100002 +18280000,airspeed,0.9244256,0.9028456 +18280000,baro,487.68027 +18280000,imu,-0.19632632,0.2520028,-9.849248,-0.0064625307,0.0022440199,0.0014491779 +18284000,mag,0.202,-0.08300001,0.43100002 +18284000,airspeed,-3.0314624,-2.9607234 +18284000,baro,487.52533 +18284000,imu,-0.17304775,0.1831105,-9.930235,0.0017416427,-0.0031545602,-0.0020788799 +18292000,imu,-0.13081792,0.2200712,-9.961786,-0.0032001135,-0.008794145,0.0062719556 +18292000,airspeed,-1.253277,-1.2240218 +18292000,baro,487.6568 +18292000,mag,0.19800001,-0.08100001,0.43100002 +18296000,baro,487.6568 +18296000,airspeed,2.0820549,2.0334535 +18296000,imu,-0.19040214,0.19145295,-9.979114,-0.0021921142,-0.007820525,0.0019158182 +18296000,mag,0.19800001,-0.08100001,0.43100002 +18300000,baro,487.69904 +18300000,airspeed,-2.6689243,-2.606617 +18300000,mag,0.19800001,-0.08100001,0.43100002 +18300000,imu,-0.20827623,0.1283224,-9.951688,0.0015134251,-0.0057805628,0.0008260041 +18304000,airspeed,0.46084234,0.45008376 +18304000,imu,-0.17468227,0.17014562,-9.858548,0.0065427786,-0.004500783,-0.0003361092 +18304000,baro,487.69904 +18304000,mag,0.19800001,-0.08100001,0.43100002 +18308000,imu,-0.19726923,0.22050041,-9.855818,0.007970997,-0.004995974,-0.0023627067 +18308000,airspeed,-4.1290007,-4.0326347 +18308000,baro,487.59106 +18308000,mag,0.19800001,-0.08100001,0.43100002 +18312000,baro,487.6568 +18312000,airspeed,3.5021238,3.4203744 +18312000,mag,0.19800001,-0.08100001,0.43100002 +18312000,imu,-0.19983022,0.1768729,-9.944803,0.0069022784,-0.008146914,-0.0020331063 +18316000,airspeed,1.3624319,1.3306397 +18316000,baro,487.52063 +18316000,imu,-0.24387774,0.12019434,-10.014033,0.0011752376,-0.006783408,0.0036755812 +18316000,mag,0.19800001,-0.08100001,0.43100002 +18320000,airspeed,3.0484364,2.9772894 +18320000,mag,0.19800001,-0.08100001,0.43100002 +18320000,baro,487.59106 +18320000,gps,488099.0,85456074.0,473977508.0,0.02,0.0,0.02 +18320000,imu,-0.25459063,0.1561073,-9.952629,0.00030768284,-0.009666237,0.009288146 +18324000,imu,-0.18102539,0.1881175,-9.964618,0.00026176582,-0.01413584,0.007611144 +18324000,airspeed,-2.0891318,-2.0403676 +18328000,mag,0.19800001,-0.08100001,0.43100002 +18328000,imu,-0.16719508,0.18809731,-9.99524,-0.0021724717,-0.011655821,0.006089505 +18328000,baro,487.638 +18328000,airspeed,1.7917583,1.7499354 +18332000,mag,0.19800001,-0.08100001,0.43100002 +18332000,airspeed,2.153864,2.103592 +18332000,imu,-0.1731108,0.19174784,-9.900002,-0.00026956594,-0.0056733936,0.0033357113 +18332000,baro,487.61453 +18336000,baro,487.5535 +18336000,airspeed,0.621934,0.60741997 +18336000,imu,-0.20556876,0.19759841,-9.887548,-0.0009880392,-0.0045669577,0.001320159 +18340000,baro,487.66147 +18340000,imu,-0.2464373,0.23207141,-9.928323,-0.0031922285,-0.008832176,-0.0022344869 +18340000,airspeed,-0.77415776,-0.7560865 +18340000,mag,0.19800001,-0.08100001,0.43100002 +18348000,airspeed,1.9542311,1.9086089 +18348000,imu,-0.12448015,0.17420281,-9.884304,-0.005305671,-0.006591939,-0.0041902126 +18348000,baro,487.69904 +18348000,mag,0.201,-0.08200001,0.425 +18352000,airspeed,-4.0334454,-3.9392667 +18352000,mag,0.201,-0.08200001,0.425 +18352000,baro,487.76947 +18352000,imu,-0.1895271,0.17658423,-9.900202,-0.007908515,-0.0020532361,-0.0015327549 +18356000,airspeed,-1.7000233,-1.6603488 +18356000,imu,-0.2161164,0.1761902,-9.987144,-0.0058191703,-0.0023513103,0.0018809235 +18356000,baro,487.5676 +18356000,mag,0.201,-0.08200001,0.425 +18360000,imu,-0.17827828,0.16691339,-9.987063,-0.0028658623,-0.00096978486,-0.001453532 +18360000,airspeed,2.2750466,2.2219503 +18364000,imu,-0.14536136,0.1467546,-9.942523,-0.0007850448,-0.0049821744,0.0026950862 +18364000,airspeed,-3.119243,-3.0464444 +18364000,mag,0.201,-0.08200001,0.425 +18364000,baro,487.58636 +18372000,imu,-0.23415689,0.2073795,-9.903121,-0.00012441604,-0.0016666222,-0.0038846638 +18372000,baro,487.69434 +18372000,mag,0.201,-0.08200001,0.425 +18372000,airspeed,4.3991895,4.29649 +18376000,baro,487.57227 +18376000,airspeed,-1.8931426,-1.8489605 +18376000,imu,-0.25400457,0.15772203,-9.898425,-0.0012778835,0.0018772461,0.0014078747 +18376000,mag,0.201,-0.08200001,0.425 +18380000,airspeed,1.6210958,1.5832627 +18380000,imu,-0.1759562,0.12974277,-9.908872,0.0053092134,-0.0022717812,0.0064061983 +18384000,mag,0.201,-0.08200001,0.425 +18384000,baro,487.48776 +18384000,airspeed,2.7077231,2.6445436 +18384000,imu,-0.08770725,0.16904171,-9.886519,0.0037640475,-0.005024435,0.0052481447 +18388000,imu,-0.1147551,0.2111751,-9.89737,0.002694608,-0.011835429,0.0045080776 +18388000,baro,487.5488 +18388000,airspeed,-3.2267098,-3.1514091 +18388000,mag,0.201,-0.08200001,0.425 +18392000,airspeed,1.9489228,1.9034371 +18392000,imu,-0.085888006,0.17014448,-9.976816,0.001057781,-0.012770444,0.0060751024 +18392000,mag,0.201,-0.08200001,0.425 +18392000,baro,487.59106 +18400000,imu,-0.1910627,0.14980191,-10.014158,-0.0016228475,-0.001266843,0.002348249 +18400000,mag,0.19900002,-0.07900001,0.42700002 +18400000,airspeed,4.5676327,4.460985 +18400000,baro,487.75537 +18404000,baro,487.52533 +18404000,mag,0.19900002,-0.07900001,0.42700002 +18404000,airspeed,4.354867,4.253246 +18404000,imu,-0.14399694,0.11753229,-10.060743,-0.0005904384,-0.0061069704,-0.003536736 +18412000,airspeed,2.447613,2.3904922 +18412000,mag,0.19900002,-0.07900001,0.42700002 +18412000,baro,487.5629 +18412000,imu,-0.1317671,0.110565044,-9.963793,-0.0064023025,-0.0033751295,-0.0010976553 +18416000,airspeed,3.3241806,3.2465894 +18416000,imu,-0.14600302,0.144781,-9.936369,-0.01204455,-0.0050665084,-0.0006381682 +18416000,baro,487.6333 +18416000,mag,0.19900002,-0.07900001,0.42700002 +18420000,baro,487.67087 +18420000,airspeed,-1.7902845,-1.7484926 +18420000,mag,0.19900002,-0.07900001,0.42700002 +18420000,imu,-0.1574309,0.17611496,-9.911001,-0.0059342016,-0.0054185153,0.003691812 +18424000,airspeed,-3.0484717,-2.9773479 +18424000,imu,-0.12781666,0.21817009,-9.893938,-0.005122589,-0.0069285748,0.0035531125 +18428000,airspeed,2.6708496,2.608536 +18428000,mag,0.19900002,-0.07900001,0.42700002 +18428000,baro,487.4549 +18428000,imu,-0.1409445,0.2275903,-9.932481,-0.0043756193,-0.008488288,-0.0018871148 +18432000,airspeed,0.22788477,0.22256635 +18432000,mag,0.19900002,-0.07900001,0.42700002 +18432000,imu,-0.15974084,0.18940204,-9.941142,-0.00076474936,-0.009113205,0.00027378378 +18432000,baro,487.57697 +18436000,mag,0.19900002,-0.07900001,0.42700002 +18436000,airspeed,-2.2839916,-2.2306852 +18436000,imu,-0.12146211,0.14717357,-9.908687,-0.0065759337,-0.007710307,0.0037688273 +18436000,baro,487.59106 +18440000,baro,487.52533 +18440000,mag,0.19900002,-0.07900001,0.42700002 +18440000,imu,-0.08244221,0.14372534,-9.897493,-0.004820339,-0.009587199,-0.0033541308 +18440000,airspeed,2.9409726,2.8723447 +18444000,mag,0.19900002,-0.07900001,0.42700002 +18444000,airspeed,2.5976338,2.5370178 +18444000,imu,-0.14245091,0.15282966,-9.950609,0.0065648947,-0.005105377,-0.0012472899 +18444000,baro,487.52533 +18448000,airspeed,2.6960669,2.6331384 +18448000,baro,487.62393 +18448000,imu,-0.143375,0.14823434,-9.976382,-0.00020965547,0.00029245784,0.0031313417 +18448000,mag,0.202,-0.08100001,0.43 +18452000,airspeed,-2.346752,-2.2919683 +18452000,baro,487.68027 +18452000,imu,-0.15551157,0.16206312,-9.959596,-0.0027905556,-0.0043148804,-0.00013830423 +18452000,mag,0.202,-0.08100001,0.43 +18456000,baro,487.62863 +18456000,airspeed,-2.3942447,-2.3383605 +18456000,imu,-0.23509368,0.15509522,-9.932059,-0.001295419,-0.010662644,-0.0045945225 +18456000,mag,0.202,-0.08100001,0.43 +18464000,imu,-0.13095576,0.22304566,-9.888138,-0.0013910441,-0.0049029295,0.007829594 +18464000,mag,0.202,-0.08100001,0.43 +18464000,baro,487.60043 +18464000,airspeed,2.5757725,2.5156553 +18468000,imu,-0.14809094,0.25633484,-9.908418,-8.176501e-05,0.0010481928,-0.0029509717 +18468000,mag,0.202,-0.08100001,0.43 +18468000,airspeed,2.0480788,2.0002775 +18468000,baro,487.60043 +18472000,baro,487.5488 +18472000,imu,-0.17347798,0.1904104,-9.881508,-0.0015303392,-0.00258061,-0.007285269 +18472000,mag,0.202,-0.08100001,0.43 +18472000,airspeed,-1.2859724,-1.2559625 +18476000,imu,-0.20096709,0.19192867,-9.837671,-0.0029362575,-0.0021000255,-0.0041202293 +18476000,airspeed,-2.4216506,-2.365138 +18480000,airspeed,-3.346117,-3.268034 +18480000,imu,-0.17871566,0.20908952,-9.851962,-0.008159681,0.00024450774,0.0018238833 +18480000,mag,0.202,-0.08100001,0.43 +18480000,baro,487.53003 +18484000,baro,487.71313 +18484000,mag,0.202,-0.08100001,0.43 +18484000,airspeed,2.8258026,2.759831 +18484000,imu,-0.20776404,0.1774752,-9.917919,-0.006410943,-0.005143674,0.009076728 +18488000,imu,-0.17225336,0.17205378,-9.949018,-0.00023436673,-0.0076474515,0.009188922 +18488000,mag,0.202,-0.08100001,0.43 +18488000,airspeed,-1.7044978,-1.6647002 +18488000,baro,487.75537 +18492000,mag,0.202,-0.08100001,0.43 +18492000,baro,487.75537 +18496000,imu,-0.2435889,0.13029554,-9.896265,0.000775102,-0.0115765715,-0.0022683374 +18496000,baro,487.6521 +18496000,airspeed,4.699157,4.589466 +18496000,mag,0.202,-0.08100001,0.43 +18500000,mag,0.202,-0.08100001,0.43 +18500000,baro,487.6521 +18504000,imu,-0.18155986,0.14420266,-9.958735,0.007087047,0.0012598828,-0.0056611565 +18504000,airspeed,-3.1301012,-3.0570679 +18504000,baro,487.48306 +18504000,mag,0.2,-0.08100001,0.43100002 +18512000,baro,487.62863 +18512000,mag,0.2,-0.08100001,0.43100002 +18512000,imu,-0.18811978,0.14836116,-9.818446,0.004221522,8.905561e-05,0.0050800783 +18512000,airspeed,-2.74902,-2.6848545 +18516000,baro,487.48776 +18516000,imu,-0.1730292,0.13380077,-9.882666,-0.00096182997,0.0030207944,0.008989573 +18516000,airspeed,2.299802,2.2461405 +18516000,mag,0.2,-0.08100001,0.43100002 +18520000,gps,488106.0,85456074.0,473977508.0,0.0,0.0,0.0 +18524000,airspeed,2.636479,2.574958 +18524000,mag,0.2,-0.08100001,0.43100002 +18524000,imu,-0.17255366,0.22244744,-10.044616,0.0011419507,-0.0037699807,0.00021539915 +18524000,baro,487.51123 +18528000,baro,487.68967 +18528000,imu,-0.17596954,0.22486438,-9.955407,0.0010643667,-0.0032981057,0.00093570707 +18528000,mag,0.2,-0.08100001,0.43100002 +18528000,airspeed,-3.3413935,-3.2633893 +18536000,mag,0.2,-0.08100001,0.43100002 +18536000,imu,-0.20997769,0.21159013,-9.938964,0.008018848,-0.0061425106,0.001240916 +18536000,baro,487.69434 +18536000,airspeed,0.7245474,0.70763284 +18540000,baro,487.69434 +18540000,imu,-0.17897008,0.23820631,-9.913477,0.0081185615,-0.008740562,-0.0031941065 +18540000,mag,0.2,-0.08100001,0.43100002 +18540000,airspeed,-1.7037617,-1.6639874 +18544000,mag,0.2,-0.08100001,0.43100002 +18544000,imu,-0.11468244,0.186973,-9.951358,0.0031811995,-0.004447984,0.0012635614 +18544000,airspeed,1.6570941,1.6184113 +18544000,baro,487.67087 +18548000,airspeed,-4.0715923,-3.9765413 +18548000,imu,-0.08614909,0.11929878,-9.931256,0.0020644425,-0.005915554,0.00073570706 +18548000,mag,0.2,-0.08100001,0.43100002 +18548000,baro,487.68967 +18552000,imu,-0.088033766,0.17210145,-9.910124,-0.0006557658,-0.008383096,-0.007531003 +18552000,baro,487.60513 +18552000,mag,0.19600001,-0.08300001,0.43 +18552000,airspeed,0.3810494,0.37215585 +18556000,imu,-0.12158046,0.16536392,-9.993257,-0.005829423,-0.0072917696,-0.0017561278 +18556000,mag,0.19600001,-0.08300001,0.43 +18556000,airspeed,1.2811686,1.2512666 +18556000,baro,487.60513 +18560000,imu,-0.15241691,0.12976918,-9.981787,-0.0019454821,-0.003723296,0.0035807595 +18560000,baro,487.58636 +18560000,mag,0.19600001,-0.08300001,0.43 +18560000,airspeed,1.386315,1.3539603 +18568000,baro,487.4643 +18568000,imu,-0.26218536,0.16057077,-9.893857,-0.0017774041,-0.0054612756,0.0013761008 +18568000,airspeed,-4.23004,-4.131347 +18568000,mag,0.19600001,-0.08300001,0.43 +18572000,mag,0.19600001,-0.08300001,0.43 +18572000,baro,487.4643 +18572000,imu,-0.2106068,0.21544193,-9.900484,0.0005755929,-0.007879075,0.0038222468 +18572000,airspeed,2.480123,2.4222581 +18576000,mag,0.19600001,-0.08300001,0.43 +18576000,airspeed,1.3332561,1.3021611 +18576000,baro,487.30936 +18576000,imu,-0.20678644,0.20370306,-9.894455,0.0053169555,-0.008208715,0.007002629 +18580000,imu,-0.19148907,0.20292611,-9.924697,-0.0002651466,-0.0045238812,0.00599253 +18580000,mag,0.19600001,-0.08300001,0.43 +18580000,airspeed,2.6223147,2.5610948 +18580000,baro,487.70844 +18584000,mag,0.19600001,-0.08300001,0.43 +18584000,baro,487.6521 +18588000,imu,-0.19650616,0.16368286,-10.004283,0.0025920724,-0.0027532121,0.00042756597 +18588000,airspeed,-0.75713956,-0.7394708 +18592000,mag,0.19600001,-0.08300001,0.43 +18592000,airspeed,2.3125784,2.2586038 +18592000,baro,487.60043 +18592000,imu,-0.19239806,0.14169873,-9.978957,-0.001968491,-0.010171442,-0.0030754283 +18596000,baro,487.60043 +18596000,mag,0.19600001,-0.08300001,0.43 +18596000,imu,-0.14092757,0.19662204,-9.932881,-0.00071407226,-0.0076806457,-0.0024068125 +18596000,airspeed,-4.4309406,-4.3275247 +18600000,mag,0.19600001,-0.08300001,0.43 +18600000,baro,487.53473 +18600000,imu,-0.20065106,0.2277245,-9.960873,0.0006342339,-0.0021930435,-0.0022060187 +18600000,airspeed,3.6385076,3.5536 +18600000,landed,1.0 +18608000,mag,0.19700001,-0.07800001,0.43400002 +18608000,baro,487.68967 +18608000,airspeed,1.839834,1.7968835 +18608000,imu,-0.0607269,0.22438294,-9.950592,4.0862804e-05,0.0030652117,0.0064993734 +18612000,imu,-0.14489964,0.1918355,-9.95266,-0.0016955169,0.003286433,0.002137122 +18612000,airspeed,1.7927017,1.7508782 +18616000,mag,0.19700001,-0.07800001,0.43400002 +18616000,airspeed,3.6612806,3.575808 +18616000,baro,487.69434 +18616000,imu,-0.1297551,0.13562463,-9.952223,-0.0028143525,-0.0063347686,-0.004240329 +18620000,airspeed,-2.7045646,-2.641419 +18620000,mag,0.19700001,-0.07800001,0.43400002 +18624000,imu,-0.18949471,0.18281317,-9.948274,0.00397698,-0.006200094,-0.0003804098 +18624000,mag,0.19700001,-0.07800001,0.43400002 +18624000,baro,487.6521 +18628000,airspeed,-4.7425814,-4.631878 +18628000,imu,-0.16155532,0.21483766,-9.9120245,-0.0003953565,-0.007904248,-0.001260501 +18632000,airspeed,-3.5338635,-3.4513643 +18632000,imu,-0.14337932,0.18895085,-9.893947,-0.0044144434,-0.0087377895,0.00016540416 +18632000,mag,0.19700001,-0.07800001,0.43400002 +18632000,baro,487.69904 +18636000,imu,-0.19505148,0.2109612,-9.869948,-0.006267528,-0.0073067048,7.53508e-05 +18636000,baro,487.5535 +18636000,airspeed,1.8123646,1.7700697 +18636000,mag,0.19700001,-0.07800001,0.43400002 +18640000,mag,0.19700001,-0.07800001,0.43400002 +18640000,airspeed,-1.9011347,-1.8567504 +18640000,baro,487.71313 +18640000,imu,-0.1878506,0.23481394,-9.86396,-0.00034742037,-0.010814765,0.0027697599 +18644000,airspeed,-2.6901617,-2.6273687 +18644000,mag,0.19700001,-0.07800001,0.43400002 +18644000,imu,-0.20571004,0.24820879,-9.906377,0.004480346,-0.011671723,0.006853314 +18644000,baro,487.638 +18648000,mag,0.19700001,-0.07800001,0.43400002 +18648000,airspeed,-4.782836,-4.671185 +18648000,imu,-0.29160374,0.18473503,-9.925219,0.0030652005,-0.0113868695,0.0003558184 +18648000,baro,487.67557 +18652000,baro,487.68497 +18652000,mag,0.19700001,-0.07800001,0.43400002 +18652000,imu,-0.31772488,0.13747731,-9.907545,-0.004142552,-0.012045432,-0.0027517083 +18652000,airspeed,2.3180692,2.2639549 +18656000,baro,487.70844 +18656000,mag,0.19700001,-0.07800001,0.43400002 +18656000,imu,-0.20944434,0.20141797,-9.937574,-0.0039298073,-0.008126331,-0.0013820622 +18656000,airspeed,-3.1543863,-3.0807443 +18660000,imu,-0.1485057,0.19171624,-9.986142,-0.0055255997,-0.0030850142,-0.00061060797 +18660000,baro,487.75537 +18660000,airspeed,2.5420094,2.482657 +18660000,mag,0.201,-0.07900001,0.42700002 +18664000,airspeed,-2.2112515,-2.1596498 +18664000,imu,-0.10153198,0.18101956,-10.016623,-0.005927802,0.0020771963,-0.0013762858 +18664000,mag,0.201,-0.07900001,0.42700002 +18664000,baro,487.5394 +18672000,baro,487.6333 +18672000,imu,-0.13002281,0.20085111,-9.890605,-0.003086978,-0.0076178308,0.0002633749 +18672000,airspeed,-2.6891968,-2.6264267 +18672000,mag,0.201,-0.07900001,0.42700002 +18676000,airspeed,-2.5157037,-2.4569738 +18676000,imu,-0.21590471,0.21145122,-9.906999,0.00029269586,-4.7693135e-05,-0.0031199525 +18676000,baro,487.69904 +18676000,mag,0.201,-0.07900001,0.42700002 +18680000,mag,0.201,-0.07900001,0.42700002 +18680000,baro,487.57697 +18680000,airspeed,3.288539,3.2117903 +18680000,imu,-0.23236327,0.17855328,-9.919724,0.009190606,0.0014404577,-0.002156421 +18684000,mag,0.201,-0.07900001,0.42700002 +18684000,airspeed,0.6265164,0.61189026 +18684000,imu,-0.11913123,0.15534705,-9.958181,0.0088341115,-0.0027356092,-0.0038213753 +18684000,baro,487.69904 +18688000,baro,487.69904 +18688000,mag,0.201,-0.07900001,0.42700002 +18692000,imu,-0.18399413,0.17573471,-10.013988,0.0035105043,-0.0038052723,0.0032348468 +18692000,airspeed,2.1364214,2.086552 +18696000,mag,0.201,-0.07900001,0.42700002 +18696000,baro,487.57697 +18696000,airspeed,-1.5790956,-1.5422422 +18696000,imu,-0.15965773,0.17871995,-10.011636,-0.0019298588,-0.0054282276,-7.054319e-05 +18700000,baro,487.5488 +18700000,imu,-0.16793616,0.12358756,-9.982356,-0.005773952,-0.005319307,0.004073526 +18700000,mag,0.201,-0.07900001,0.42700002 +18700000,airspeed,-2.4035738,-2.3474832 +18704000,imu,-0.16101147,0.16946317,-9.953719,0.0015690974,-0.0035727895,0.0044791205 +18704000,baro,487.52533 +18704000,mag,0.201,-0.07900001,0.42700002 +18704000,airspeed,2.2633004,2.2104862 +18708000,airspeed,4.98314,4.866874 +18708000,imu,-0.12507546,0.19038878,-9.900049,0.0037730052,-0.0052719796,-0.00023908725 +18708000,baro,487.469 +18708000,mag,0.19800001,-0.08100001,0.42800003 +18712000,airspeed,2.617403,2.5563343 +18712000,imu,-0.2148494,0.12735024,-9.892452,0.0023874638,-0.012251141,-0.0030541655 +18712000,baro,487.469 +18712000,mag,0.19800001,-0.08100001,0.42800003 +18716000,airspeed,-2.9613419,-2.892228 +18716000,imu,-0.33803913,0.07313934,-9.907063,0.005873421,-0.009472038,0.0017037924 +18716000,baro,487.58636 +18716000,mag,0.19800001,-0.08100001,0.42800003 +18720000,imu,-0.3242451,0.0672568,-9.960411,7.779138e-05,-0.001160913,0.0030531464 +18720000,gps,488110.0,85456074.0,473977508.0,0.01,0.0,-0.03 +18720000,mag,0.19800001,-0.08100001,0.42800003 +18720000,airspeed,1.5443933,1.5083401 +18720000,baro,487.68497 +18724000,imu,-0.27161378,0.106475554,-9.9330635,-0.0054458333,-0.0020565074,-0.00093261997 +18724000,mag,0.19800001,-0.08100001,0.42800003 +18724000,airspeed,2.9401338,2.8715134 +18724000,baro,487.59576 +18728000,airspeed,2.4114535,2.3551564 +18728000,baro,487.70374 +18728000,mag,0.19800001,-0.08100001,0.42800003 +18728000,imu,-0.15377808,0.1793163,-9.8438225,0.0019812188,-0.0031467369,-7.895587e-05 +18732000,baro,487.6333 +18732000,imu,-0.17765076,0.23080932,-9.905018,0.0013370888,-0.0055911154,0.004707059 +18732000,mag,0.19800001,-0.08100001,0.42800003 +18732000,airspeed,-1.7779741,-1.7364734 +18736000,mag,0.19800001,-0.08100001,0.42800003 +18736000,airspeed,-0.798739,-0.7800949 +18736000,baro,487.638 +18736000,imu,-0.2080001,0.20983253,-9.938333,-0.0028645452,-0.007333146,0.004623147 +18740000,airspeed,-3.5805802,-3.4970026 +18740000,mag,0.19800001,-0.08100001,0.42800003 +18740000,baro,487.638 +18740000,imu,-0.19738984,0.12962507,-9.92477,-0.00034050798,-0.006481035,0.0034245038 +18744000,imu,-0.25037885,0.17282619,-9.872032,-0.001800104,0.0009519583,0.0032367923 +18744000,mag,0.19800001,-0.08100001,0.42800003 +18744000,airspeed,-3.302751,-3.225655 +18744000,baro,487.6568 +18748000,baro,487.61923 +18748000,airspeed,-3.3745089,-3.2957456 +18748000,mag,0.19800001,-0.08100001,0.42800003 +18748000,imu,-0.19844735,0.21108754,-9.834515,-0.002735024,0.0011772201,0.00096745667 +18756000,imu,-0.19439216,0.14461993,-9.9144,0.002480683,-0.0110386815,-0.003521158 +18756000,airspeed,1.6172587,1.5795106 +18756000,baro,487.62393 +18756000,mag,0.19800001,-0.08100001,0.42800003 +18760000,mag,0.201,-0.08100001,0.42700002 +18760000,baro,487.67087 +18760000,airspeed,-2.5614505,-2.501657 +18760000,imu,-0.13044116,0.1469221,-9.893917,-0.0008458686,-0.0070433263,-0.004287487 +18764000,baro,487.67087 +18764000,airspeed,1.1405814,1.1139561 +18764000,imu,-0.13048042,0.1838431,-9.869253,-0.0053721354,-0.0058695385,-0.0017551517 +18764000,mag,0.201,-0.08100001,0.42700002 +18768000,baro,487.67557 +18768000,imu,-0.17154163,0.18494667,-9.93927,-0.0011343834,-0.00864658,-0.00033398904 +18768000,mag,0.201,-0.08100001,0.42700002 +18768000,airspeed,1.8622738,1.8188009 +18772000,baro,487.67557 +18772000,mag,0.201,-0.08100001,0.42700002 +18772000,imu,-0.15566549,0.21094353,-10.004208,-0.0031244564,-0.0005926884,-0.0015485774 +18772000,airspeed,-1.0799211,-1.0547115 +18776000,imu,-0.14780301,0.18233047,-9.930384,-0.0054329983,0.0046024392,-0.0039762966 +18776000,baro,487.61453 +18776000,mag,0.201,-0.08100001,0.42700002 +18776000,airspeed,2.4039516,2.347842 +18784000,baro,487.77417 +18784000,imu,-0.096090764,0.16037105,-9.947712,-0.0039883624,-0.0023870543,-0.0013287412 +18784000,mag,0.201,-0.08100001,0.42700002 +18784000,airspeed,-1.5851276,-1.5481154 +18792000,airspeed,-2.0210052,-1.9738479 +18792000,imu,-0.2642393,0.10659864,-9.862707,-0.0029685602,-0.00610392,0.00791181 +18792000,mag,0.201,-0.08100001,0.42700002 +18792000,baro,487.50186 +18796000,imu,-0.1347391,0.11199217,-9.84213,0.0001515124,-0.0064315014,0.0084081665 +18796000,mag,0.201,-0.08100001,0.42700002 +18796000,baro,487.66147 +18796000,airspeed,-2.9996755,-2.9296541 +18800000,baro,487.60043 +18800000,mag,0.201,-0.08100001,0.42700002 +18800000,airspeed,-3.115428,-3.0427153 +18800000,imu,-0.114185445,0.19258067,-9.87309,-0.004018512,-0.0067556575,0.0038433585 +18804000,baro,487.638 +18804000,mag,0.201,-0.08100001,0.42700002 +18804000,imu,-0.23226967,0.19762978,-9.932868,-0.0076103145,-0.0053652194,-0.0019705477 +18804000,airspeed,-2.2622495,-2.2094445 +18808000,airspeed,0.20732664,0.2024873 +18808000,baro,487.6333 +18808000,mag,0.201,-0.08100001,0.42700002 +18808000,imu,-0.20174249,0.16293114,-9.881436,-0.0010333009,-0.007221058,-0.004563943 +18812000,imu,-0.17117046,0.17900448,-9.83203,0.0011639004,-0.007808807,-0.0024526948 +18812000,airspeed,2.237354,2.1851518 +18812000,baro,487.4737 +18812000,mag,0.201,-0.08100001,0.42700002 +18816000,airspeed,-2.4119225,-2.355647 +18816000,baro,487.4737 +18816000,imu,-0.17908464,0.18482055,-9.937239,-0.0020014248,-0.004489929,-0.0009371427 +18820000,mag,0.19900002,-0.08200001,0.42700002 +18820000,imu,-0.18435885,0.19168925,-9.959782,0.002455962,-0.0063898116,0.002271142 +18820000,baro,487.5488 +18820000,airspeed,-3.3337224,-3.2559242 +18824000,airspeed,-2.048961,-2.0011306 +18824000,mag,0.19900002,-0.08200001,0.42700002 +18824000,baro,487.67087 +18824000,imu,-0.2646989,0.17393973,-9.966751,0.0013757102,-0.007075161,9.705061e-05 +18832000,mag,0.19900002,-0.08200001,0.42700002 +18832000,baro,487.6568 +18832000,imu,-0.24859904,0.2564355,-9.961452,0.00089080655,-0.009977688,0.0034619563 +18832000,airspeed,2.283555,2.2302504 +18836000,mag,0.19900002,-0.08200001,0.42700002 +18836000,baro,487.6568 +18836000,imu,-0.2072201,0.2073083,-9.924562,0.004151062,-0.003760652,0.002283895 +18836000,airspeed,0.7776249,0.7594729 +18840000,mag,0.19900002,-0.08200001,0.42700002 +18840000,airspeed,-2.3913198,-2.33552 +18840000,baro,487.51123 +18840000,imu,-0.14924684,0.2210648,-9.953852,0.005101253,-0.0035181036,-0.005388014 +18844000,airspeed,0.61376977,0.5994479 +18844000,mag,0.19900002,-0.08200001,0.42700002 +18844000,imu,-0.10854157,0.21100783,-10.017896,0.0037916063,-0.009743128,-0.0014973667 +18844000,baro,487.51123 +18848000,airspeed,3.0161424,2.9457328 +18848000,mag,0.19900002,-0.08200001,0.42700002 +18848000,baro,487.68027 +18848000,imu,-0.100934006,0.19904609,-10.017636,0.0064512994,-0.0042212224,0.0009616461 +18852000,baro,487.6521 +18852000,airspeed,3.4401112,3.3598096 +18852000,imu,-0.14018346,0.16017225,-9.973498,0.007661987,-0.0025044037,-0.003116133 +18856000,mag,0.19900002,-0.08200001,0.42700002 +18860000,baro,487.80704 +18860000,mag,0.19900002,-0.08200001,0.42700002 +18860000,airspeed,2.0195973,1.9724361 +18860000,imu,-0.18620138,0.18060452,-9.940152,-0.0035017512,-0.011167229,0.004961275 +18864000,baro,487.52533 +18864000,mag,0.2,-0.08100001,0.42800003 +18864000,airspeed,-2.101301,-2.052267 +18864000,imu,-0.15283343,0.24575499,-9.936837,-0.00049331354,-0.011169632,0.0008741288 +18868000,airspeed,1.2508953,1.2216994 +18868000,mag,0.2,-0.08100001,0.42800003 +18868000,imu,-0.13944589,0.20776322,-9.969982,-0.004801639,-0.006972259,-0.0028216047 +18868000,baro,487.60983 +18872000,airspeed,2.101624,2.0525663 +18872000,mag,0.2,-0.08100001,0.42800003 +18872000,imu,-0.15792699,0.13018076,-9.920327,-0.013941125,-0.006171318,-0.0022459356 +18872000,baro,487.6568 +18876000,mag,0.2,-0.08100001,0.42800003 +18876000,imu,-0.17280793,0.17433257,-9.900544,-0.0076860916,-0.009329672,-0.0033602847 +18876000,baro,487.58167 +18876000,airspeed,-2.074006,-2.0256019 +18884000,airspeed,3.3026211,3.225535 +18884000,imu,-0.17429087,0.24717258,-9.902614,-0.0021556192,-0.008941432,-0.0035482626 +18884000,baro,487.62393 +18884000,mag,0.2,-0.08100001,0.42800003 +18888000,baro,487.7507 +18888000,airspeed,-1.3069748,-1.2764593 +18888000,mag,0.2,-0.08100001,0.42800003 +18888000,imu,-0.17549577,0.21632834,-9.951506,-0.006660206,-0.0073852194,-0.00046222168 +18892000,airspeed,-1.6651084,-1.6262312 +18892000,baro,487.7507 +18892000,imu,-0.23525216,0.14013804,-9.913489,-0.00896159,-0.009979196,0.0040066466 +18892000,mag,0.2,-0.08100001,0.42800003 +18896000,mag,0.2,-0.08100001,0.42800003 +18896000,imu,-0.20267351,0.1718947,-9.864468,-0.006256654,-0.011936351,-0.003116679 +18896000,airspeed,-2.1341033,-2.0843196 +18896000,baro,487.39856 +18900000,mag,0.2,-0.08100001,0.42800003 +18900000,airspeed,1.9115617,1.8669693 +18900000,imu,-0.16502693,0.16280425,-9.909411,-0.00485708,-0.0072946707,-0.0012484743 +18900000,baro,487.39856 +18904000,imu,-0.18082964,0.18178643,-9.931793,-0.0058788117,-0.0028727432,0.0043891 +18904000,baro,487.62393 +18904000,mag,0.2,-0.08100001,0.42800003 +18904000,airspeed,2.7889445,2.7238486 +18908000,baro,487.7366 +18908000,mag,0.2,-0.08100001,0.42800003 +18908000,imu,-0.14134608,0.24522187,-9.962327,-0.0041329856,-0.0058393157,8.449939e-06 +18908000,airspeed,-3.5638552,-3.480648 +18912000,airspeed,1.2815611,1.2516603 +18912000,baro,487.4643 +18912000,imu,-0.17379132,0.18352595,-9.951362,-0.0001135309,-0.010737691,0.0032755858 +18912000,mag,0.2,-0.08100001,0.42800003 +18916000,imu,-0.22739632,0.06964667,-9.925005,-0.0042474954,-0.005620597,0.003021431 +18916000,mag,0.2,-0.08100001,0.42800003 +18916000,airspeed,2.114047,2.064723 +18916000,baro,487.4643 +18920000,gps,488112.0,85456074.0,473977508.0,0.0,0.0,-0.01 +18920000,imu,-0.22494979,0.095001526,-9.979837,0.0035090954,-0.0023499448,-0.0021427728 +18920000,airspeed,-2.7200541,-2.6565971 +18920000,baro,487.42673 +18920000,mag,0.19600001,-0.07900001,0.432 +18924000,airspeed,3.1302266,3.0571313 +18924000,imu,-0.15885244,0.18700908,-10.022237,0.006621006,-0.008270824,-0.0043756166 +18928000,mag,0.19600001,-0.07900001,0.432 +18928000,airspeed,-2.2542863,-2.2016454 +18928000,baro,487.80234 +18928000,imu,-0.10221299,0.14231293,-9.96545,-0.0022473873,-0.00751874,-0.0016160106 +18932000,mag,0.19600001,-0.07900001,0.432 +18932000,airspeed,3.4431143,3.3627355 +18932000,imu,-0.10811737,0.12030904,-9.962136,-0.0061191786,-0.0040534143,0.0028011869 +18932000,baro,487.68967 +18936000,airspeed,-4.3047986,-4.204304 +18936000,imu,-0.14459212,0.17642938,-9.954395,-0.00594428,-0.0040470464,-0.0026561394 +18936000,mag,0.19600001,-0.07900001,0.432 +18936000,baro,487.68967 +18940000,baro,487.51123 +18940000,imu,-0.1992508,0.14665328,-9.859065,0.003563063,-0.004541784,-0.0013607289 +18940000,mag,0.19600001,-0.07900001,0.432 +18940000,airspeed,2.2768276,2.223699 +18944000,mag,0.19600001,-0.07900001,0.432 +18944000,baro,487.52533 +18944000,airspeed,0.9679229,0.94533634 +18944000,imu,-0.17637926,0.18230693,-9.844335,0.00089416845,-0.005647234,0.005535209 +18948000,mag,0.19600001,-0.07900001,0.432 +18948000,airspeed,0.6645342,0.6490199 +18948000,baro,487.71313 +18948000,imu,-0.16356154,0.18006939,-9.928548,-0.0026107156,-0.006939013,0.006644669 +18952000,mag,0.19600001,-0.07900001,0.432 +18952000,airspeed,-1.3504169,-1.318901 +18952000,baro,487.57227 +18952000,imu,-0.21235812,0.15621263,-9.946946,-0.00073306053,-0.010444327,0.0057475595 +18956000,airspeed,-3.2123694,-3.1373994 +18956000,baro,487.57227 +18956000,mag,0.19600001,-0.07900001,0.432 +18956000,imu,-0.24847591,0.1832979,-9.888805,0.00044503494,-0.010884517,0.003559641 +18960000,imu,-0.23532839,0.14233598,-9.877662,0.0017019353,-0.00026072605,-0.0033559713 +18960000,airspeed,2.4576461,2.4002743 +18964000,imu,-0.22218347,0.11192983,-9.898935,0.0024091222,-0.0008009675,-0.0026931334 +18964000,airspeed,3.1477268,3.0742457 +18964000,baro,487.68027 +18964000,mag,0.19600001,-0.07900001,0.432 +18968000,mag,0.201,-0.08200001,0.42400002 +18968000,airspeed,1.4457396,1.4120036 +18968000,imu,-0.16423224,0.18059139,-9.925962,0.0040787235,-0.008923526,0.0054979217 +18968000,baro,487.52063 +18972000,baro,487.52063 +18972000,airspeed,2.2977345,2.2441175 +18972000,mag,0.201,-0.08200001,0.42400002 +18972000,imu,-0.13061999,0.2566566,-9.89217,0.0003384547,-0.008432226,0.007213893 +18976000,airspeed,3.2368376,3.161273 +18976000,imu,-0.1859623,0.15430443,-9.891486,-0.0003297605,-0.009853488,0.0048277006 +18976000,baro,487.69904 +18976000,mag,0.201,-0.08200001,0.42400002 +18980000,imu,-0.21453929,0.08636289,-9.941883,0.005906912,-0.008918862,-0.0007653281 +18980000,airspeed,-3.4105468,-3.330927 +18980000,mag,0.201,-0.08200001,0.42400002 +18980000,baro,487.69904 +18984000,airspeed,-0.61375225,-0.599424 +18984000,baro,487.69904 +18984000,imu,-0.24215959,0.15729061,-9.966055,0.0036312838,-0.002591389,0.001735872 +18984000,mag,0.201,-0.08200001,0.42400002 +18988000,mag,0.201,-0.08200001,0.42400002 +18988000,airspeed,3.346902,3.2687924 +18988000,imu,-0.18577452,0.18780886,-9.989206,-0.0033332792,-0.0016467836,0.0025942111 +18988000,baro,487.57227 +18992000,baro,487.67087 +18992000,imu,-0.14741977,0.21215557,-9.941305,0.0035067003,-0.0032767968,1.1054138e-05 +18992000,airspeed,-0.5442008,-0.5314972 +18992000,mag,0.201,-0.08200001,0.42400002 +18996000,imu,-0.17870206,0.22232243,-9.888809,0.0014637918,-0.0056083193,0.0018395132 +18996000,baro,487.77417 +18996000,mag,0.201,-0.08200001,0.42400002 +18996000,airspeed,2.6829052,2.6202602 +19000000,airspeed,3.3328216,3.255041 +19000000,imu,-0.184343,0.17692798,-9.91078,-0.0023671358,-0.008169426,-0.0015025716 +19000000,baro,487.57227 +19000000,mag,0.201,-0.08200001,0.42400002 +19008000,imu,-0.18612857,0.21457937,-9.938281,0.00016932451,-0.008135036,0.004611778 +19008000,baro,487.6474 +19008000,mag,0.201,-0.08200001,0.42400002 +19008000,airspeed,1.5357563,1.4999081 +19012000,airspeed,-2.8376532,-2.7714581 +19012000,mag,0.201,-0.08200001,0.42400002 +19012000,imu,-0.14165284,0.19843854,-9.9487295,-0.0007407618,-0.0066707325,0.0024986072 +19012000,baro,487.39386 +19016000,baro,487.49716 +19016000,mag,0.201,-0.08200001,0.42400002 +19016000,airspeed,-3.7110271,-3.624436 +19016000,imu,-0.14118385,0.19918603,-9.987609,-0.005659313,0.00077054114,0.004096791 +19020000,baro,487.7507 +19020000,imu,-0.19505341,0.1827897,-9.935488,-0.006030994,0.0026605963,0.004182417 +19020000,mag,0.201,-0.07800001,0.43100002 +19020000,airspeed,2.2203038,2.1684632 +19024000,mag,0.201,-0.07800001,0.43100002 +19024000,baro,487.7507 +19028000,mag,0.201,-0.07800001,0.43100002 +19028000,imu,-0.1770104,0.16283065,-9.925157,-0.004300215,-0.0029391884,-0.005868382 +19028000,baro,487.87277 +19028000,airspeed,-0.55250436,-0.5396003 +19032000,baro,487.52533 +19032000,mag,0.201,-0.07800001,0.43100002 +19036000,mag,0.201,-0.07800001,0.43100002 +19036000,imu,-0.16920072,0.16610244,-9.940087,-0.006647306,-0.009648846,0.00014188312 +19036000,airspeed,2.302277,2.2485352 +19036000,baro,487.6568 +19044000,mag,0.201,-0.07800001,0.43100002 +19044000,airspeed,2.3191612,2.2650187 +19044000,baro,487.70844 +19044000,imu,-0.19480443,0.105490595,-9.906565,-0.0032112494,-0.014929574,-4.0842388e-05 +19048000,imu,-0.21078032,0.12675348,-9.885444,-0.0014986963,-0.015455842,-0.00030155157 +19048000,baro,487.57227 +19048000,airspeed,4.5357084,4.4298544 +19048000,mag,0.201,-0.07800001,0.43100002 +19052000,mag,0.201,-0.07800001,0.43100002 +19052000,baro,487.68027 +19056000,airspeed,1.5254129,1.4898033 +19056000,imu,-0.16488154,0.16642007,-9.936005,-0.0026398357,-0.009088655,0.0060178433 +19060000,mag,0.201,-0.07800001,0.43100002 +19060000,baro,487.68027 +19060000,imu,-0.2337324,0.20158035,-9.868958,-0.010375224,-0.0031965505,0.0071816742 +19060000,airspeed,-2.866988,-2.8000605 +19064000,baro,487.77887 +19064000,mag,0.201,-0.07800001,0.43100002 +19064000,airspeed,-3.6646683,-3.579098 +19064000,imu,-0.27399135,0.25247875,-9.825446,-0.008479239,0.0011743918,0.0015147973 +19072000,airspeed,-3.2715588,-3.195217 +19072000,mag,0.19600001,-0.08200001,0.42700002 +19072000,imu,-0.14005847,0.18377213,-9.861276,-0.0010530531,-0.00979651,0.00034587696 +19072000,baro,487.52063 +19076000,airspeed,2.6270945,2.5657914 +19076000,imu,-0.20450652,0.15890817,-9.908629,-0.00032800765,-0.0072610225,-0.0024539356 +19080000,baro,487.68967 +19080000,imu,-0.2410836,0.19090691,-9.843856,-0.0021352333,-0.0053924043,-0.0030150558 +19080000,mag,0.19600001,-0.08200001,0.42700002 +19080000,airspeed,3.714663,3.6279454 +19084000,baro,487.61453 +19084000,imu,-0.23468062,0.18238173,-9.850945,-0.0028985816,-0.0039037736,-0.0019984904 +19084000,mag,0.19600001,-0.08200001,0.42700002 +19084000,airspeed,3.0949583,3.0227203 +19088000,airspeed,1.9657543,1.9198723 +19088000,mag,0.19600001,-0.08200001,0.42700002 +19088000,baro,487.61923 +19088000,imu,-0.22775033,0.13272803,-9.956054,-0.0013729371,-0.007355493,-0.0012213556 +19092000,airspeed,1.602778,1.5653675 +19092000,baro,487.62863 +19092000,mag,0.19600001,-0.08200001,0.42700002 +19092000,imu,-0.20149699,0.1904901,-9.91405,0.0025033588,-0.013073964,-0.003374873 +19096000,airspeed,-1.9101342,-1.8655425 +19096000,mag,0.19600001,-0.08200001,0.42700002 +19096000,imu,-0.17550035,0.1745628,-9.933887,-0.0018067047,-0.0058207894,-0.006309649 +19096000,baro,487.68967 +19104000,imu,-0.13903151,0.10229158,-9.936853,-0.00023586734,-0.0065001235,0.0024517756 +19104000,baro,487.59576 +19104000,airspeed,0.28182542,0.27524784 +19104000,mag,0.19600001,-0.08200001,0.42700002 +19108000,mag,0.19600001,-0.08200001,0.42700002 +19108000,imu,-0.1967665,0.120085225,-9.886193,-0.0016733743,-0.008011805,0.0020324225 +19108000,baro,487.59576 +19108000,airspeed,-3.4678702,-3.3869328 +19112000,baro,487.8211 +19112000,mag,0.19600001,-0.08200001,0.42700002 +19112000,airspeed,-1.8340479,-1.7912183 +19112000,imu,-0.25177002,0.0934963,-9.890815,-0.005522851,-0.010471556,0.0019454494 +19116000,airspeed,1.4306797,1.3972834 +19116000,baro,487.6568 +19116000,imu,-0.24289684,0.12170458,-10.010994,-0.0031090307,-0.007910531,0.0033031213 +19116000,mag,0.19600001,-0.08200001,0.42700002 +19120000,imu,-0.22616488,0.20442237,-9.969117,0.0016567952,-0.007328672,-0.003514677 +19120000,baro,487.69904 +19120000,gps,488099.0,85456074.0,473977508.0,0.0,0.0,0.02 +19120000,mag,0.19600001,-0.08200001,0.42700002 +19120000,airspeed,1.5964113,1.5591422 +19124000,imu,-0.13575307,0.24726358,-9.887076,-0.00067853543,-0.0081319045,-0.0059936824 +19124000,baro,487.58636 +19124000,mag,0.19600001,-0.08200001,0.42700002 +19124000,airspeed,0.69944274,0.68311864 +19128000,mag,0.19800001,-0.08200001,0.42800003 +19128000,airspeed,-3.7791271,-3.690909 +19128000,baro,487.66617 +19128000,imu,-0.09306858,0.20028947,-9.895455,0.00067501154,-0.010274354,0.0029589443 +19132000,mag,0.19800001,-0.08200001,0.42800003 +19132000,baro,487.7366 +19132000,airspeed,-1.0031912,-0.9797692 +19132000,imu,-0.21043593,0.15647562,-9.8855505,0.00069228397,-0.006292581,0.0029922144 +19136000,airspeed,3.5498102,3.4669564 +19136000,imu,-0.19241601,0.17296797,-9.87924,-0.002675654,-0.0079074055,-0.0031659934 +19136000,mag,0.19800001,-0.08200001,0.42800003 +19136000,baro,487.61453 +19144000,baro,487.53003 +19144000,imu,-0.20021746,0.14074185,-9.953407,0.005540705,-0.013733831,0.0013336927 +19144000,airspeed,3.1232424,3.0503597 +19144000,mag,0.19800001,-0.08200001,0.42800003 +19152000,airspeed,-2.5891602,-2.5287278 +19152000,imu,-0.15770976,0.17138009,-9.955977,0.0032444426,-0.007430294,0.0033553971 +19152000,baro,487.61923 +19152000,mag,0.19800001,-0.08200001,0.42800003 +19156000,baro,487.61923 +19156000,airspeed,1.272752,1.2430453 +19156000,mag,0.19800001,-0.08200001,0.42800003 +19156000,imu,-0.23381162,0.23754843,-9.938061,0.0027398271,-0.008283225,0.005389137 +19160000,airspeed,-1.9702117,-1.9242216 +19160000,imu,-0.21181758,0.20218441,-9.888142,-0.0037990052,-0.008818041,-0.0002848445 +19164000,baro,487.5441 +19164000,airspeed,2.1508071,2.1006157 +19164000,imu,-0.1619242,0.18341823,-9.949216,-0.007338766,-0.010239164,0.0029827496 +19164000,mag,0.19800001,-0.08200001,0.42800003 +19168000,mag,0.19800001,-0.08200001,0.42800003 +19168000,baro,487.66147 +19172000,mag,0.19800001,-0.08200001,0.42800003 +19172000,imu,-0.16921203,0.25020742,-9.879021,-0.0028469958,-0.0059049767,-0.008580081 +19172000,baro,487.6333 +19172000,airspeed,1.1377314,1.1111752 +19176000,mag,0.2,-0.084000014,0.42400002 +19176000,baro,487.5441 +19176000,airspeed,-3.4051037,-3.3256414 +19176000,imu,-0.14674442,0.24525629,-9.9499655,0.0052073416,-0.008999393,-0.0005356434 +19180000,imu,-0.17516911,0.18496712,-9.94121,0.0015095809,-0.008473779,0.0014388993 +19180000,airspeed,2.4116936,2.3554137 +19180000,mag,0.2,-0.084000014,0.42400002 +19180000,baro,487.5441 +19188000,airspeed,3.9008424,3.809818 +19188000,mag,0.2,-0.084000014,0.42400002 +19188000,imu,-0.22544745,0.16797392,-9.976436,-0.0020140249,-0.0049319346,0.0005457554 +19188000,baro,487.51593 +19192000,imu,-0.16486277,0.1809264,-9.961169,0.0001962525,-0.0056751594,-0.0026316151 +19192000,baro,487.68027 +19192000,airspeed,4.5615616,4.4550757 +19192000,mag,0.2,-0.084000014,0.42400002 +19196000,baro,487.70844 +19196000,imu,-0.16007239,0.1367666,-9.990262,-0.0001313642,-0.005170464,-0.0008076816 +19196000,airspeed,-1.5699881,-1.5333353 +19196000,mag,0.2,-0.084000014,0.42400002 +19200000,imu,-0.2055317,0.13543686,-9.954377,-0.004747283,-0.004182909,-0.007398983 +19200000,mag,0.2,-0.084000014,0.42400002 +19200000,airspeed,2.0536706,2.0057263 +19200000,baro,487.70374 +19204000,airspeed,-0.8765527,-0.85609037 +19204000,baro,487.67557 +19204000,imu,-0.21888591,0.18265204,-9.854504,-0.0042509977,-0.00490174,-0.003698366 +19204000,mag,0.2,-0.084000014,0.42400002 +19208000,mag,0.2,-0.084000014,0.42400002 +19208000,imu,-0.22390689,0.21652615,-9.882827,-0.0014101577,-0.004024387,-0.00083980086 +19208000,airspeed,-3.305821,-3.2286668 +19208000,baro,487.58636 +19212000,mag,0.2,-0.084000014,0.42400002 +19212000,baro,487.47836 +19212000,airspeed,1.3572346,1.3255671 +19212000,imu,-0.21920441,0.18222058,-9.95957,-0.0008563347,-0.0005195507,-0.0040186374 +19216000,baro,487.6333 +19216000,mag,0.2,-0.084000014,0.42400002 +19216000,imu,-0.16113944,0.22623287,-9.956613,-0.0057818824,-0.009842291,-0.00038274785 +19216000,airspeed,-3.7206337,-3.6337883 +19224000,mag,0.2,-0.084000014,0.42400002 +19224000,imu,-0.12781577,0.12333412,-9.948246,0.005879519,0.0014637946,0.004330606 +19224000,airspeed,-2.9378288,-2.8692849 +19224000,baro,487.4643 +19228000,airspeed,-2.3727338,-2.3173618 +19228000,mag,0.201,-0.07900001,0.42900002 +19228000,imu,-0.10511412,0.15279546,-9.96668,0.0066184173,-0.0045931884,0.0014477437 +19228000,baro,487.5535 +19236000,imu,-0.24353449,0.18317924,-9.9661665,-0.0052505885,-0.004067683,-0.00016904889 +19236000,airspeed,3.0231638,2.9525852 +19236000,mag,0.201,-0.07900001,0.42900002 +19236000,baro,487.70844 +19240000,mag,0.201,-0.07900001,0.42900002 +19240000,baro,487.6568 +19240000,airspeed,-1.6876553,-1.6482607 +19240000,imu,-0.18525197,0.16448721,-9.920365,-0.004915011,-0.007282052,-0.0030239287 +19244000,imu,-0.08364787,0.18871279,-9.853574,-0.0010342919,-0.008165032,-0.0009040694 +19244000,airspeed,-3.5796654,-3.496114 +19244000,baro,487.61453 +19244000,mag,0.201,-0.07900001,0.42900002 +19252000,imu,-0.19168797,0.18567167,-9.943139,0.0014043277,-0.0082899155,-0.0029272076 +19252000,airspeed,-2.1972387,-2.1459475 +19252000,baro,487.66617 +19252000,mag,0.201,-0.07900001,0.42900002 +19256000,airspeed,-1.4292301,-1.3958883 +19256000,mag,0.201,-0.07900001,0.42900002 +19256000,imu,-0.16616583,0.19644544,-9.966065,6.094067e-05,-0.006810532,-0.0032621059 +19256000,baro,487.41266 +19264000,mag,0.201,-0.07900001,0.42900002 +19264000,airspeed,-3.6067326,-3.52251 +19264000,baro,487.80234 +19264000,imu,-0.26658434,0.18019155,-9.877929,-0.0018022483,-0.00037965656,0.004753928 +19268000,mag,0.201,-0.07900001,0.42900002 +19268000,baro,487.61453 +19272000,mag,0.201,-0.07900001,0.42900002 +19272000,baro,487.61453 +19272000,imu,-0.22589813,0.22283344,-9.915242,0.0031734258,-0.01299801,-0.0009877805 +19272000,airspeed,3.6671574,3.5815647 +19280000,mag,0.201,-0.07900001,0.42900002 +19280000,baro,487.69904 +19280000,imu,-0.18012784,0.18859056,-9.863198,0.0032268893,-0.006436959,-0.0025812143 +19280000,airspeed,-0.4716395,-0.46062887 +19284000,baro,487.61923 +19284000,mag,0.19900002,-0.08200001,0.42900002 +19284000,airspeed,1.7115451,1.6715965 +19284000,imu,-0.20702334,0.11771545,-9.854977,-0.0034890668,-0.0010013403,-0.002908847 +19288000,imu,-0.17614256,0.1767181,-9.891785,-0.009011078,0.0014422071,0.0012807803 +19288000,airspeed,2.829395,2.7633395 +19292000,imu,-0.13412549,0.2329344,-9.870991,-0.00058887684,0.0069537098,-0.0006383936 +19292000,baro,487.71313 +19292000,airspeed,1.2581942,1.2288202 +19292000,mag,0.19900002,-0.08200001,0.42900002 +19296000,imu,-0.16172428,0.24343072,-9.877008,-0.0024097932,0.001992919,0.0008311529 +19296000,baro,487.71313 +19296000,airspeed,1.7566265,1.7156161 +19296000,mag,0.19900002,-0.08200001,0.42900002 +19304000,mag,0.19900002,-0.08200001,0.42900002 +19304000,airspeed,-2.2724154,-2.2193692 +19304000,imu,-0.07640418,0.19569762,-9.896189,0.0011027377,-0.0023613097,-2.3413588e-05 +19304000,baro,487.66617 +19308000,imu,-0.10850195,0.21146606,-9.884039,0.00048210978,-0.0061477567,0.00096621475 +19308000,airspeed,-3.1442385,-3.070825 +19312000,baro,487.51123 +19312000,mag,0.19900002,-0.08200001,0.42900002 +19312000,airspeed,3.197594,3.1229796 +19312000,imu,-0.15198319,0.20693769,-9.936856,-0.0058443174,-0.0030838584,-0.00088346994 +19316000,baro,487.44553 +19316000,airspeed,-0.023336112,-0.02279167 +19316000,mag,0.19900002,-0.08200001,0.42900002 +19316000,imu,-0.16119188,0.19768745,-9.984396,-0.010456266,-0.0052951477,0.001825355 +19320000,airspeed,1.3803759,1.348153 +19320000,gps,488104.0,85456074.0,473977508.0,0.0,0.01,0.0 +19320000,imu,-0.15733612,0.1737762,-9.941082,-0.008830795,-0.0059900503,0.004754494 +19320000,baro,487.66617 +19320000,mag,0.19900002,-0.08200001,0.42900002 +19324000,imu,-0.11871258,0.15943922,-9.874425,-0.0064577474,-0.0001578094,-0.0028548783 +19324000,baro,487.69904 +19324000,airspeed,-1.2316171,-1.2028644 +19324000,mag,0.19900002,-0.08200001,0.42900002 +19328000,imu,-0.10008389,0.16869219,-9.835082,4.4928198e-05,-0.0018697819,-0.007837188 +19328000,baro,487.6333 +19328000,mag,0.19900002,-0.08200001,0.42900002 +19328000,airspeed,-2.989764,-2.9199781 +19332000,mag,0.19900002,-0.08200001,0.42900002 +19332000,baro,487.6333 +19336000,airspeed,0.9385629,0.9166553 +19336000,imu,-0.20832394,0.2228602,-9.850416,-0.00087171025,-0.006051884,-0.008533761 +19340000,imu,-0.22889556,0.14242645,-9.900686,0.0009245781,-0.008888192,-0.012152893 +19340000,airspeed,1.6347975,1.5966305 +19340000,baro,487.71783 +19340000,mag,0.2,-0.08100001,0.43 +19344000,baro,487.66617 +19344000,imu,-0.2612886,0.13283494,-9.893845,-0.0043551815,-0.007845636,-0.001577533 +19344000,mag,0.2,-0.08100001,0.43 +19344000,airspeed,-3.7916715,-3.703161 +19348000,baro,487.58167 +19348000,airspeed,2.628435,2.5670912 +19348000,imu,-0.25870183,0.24499564,-9.898022,-0.006365562,-0.0029887937,0.0016935837 +19348000,mag,0.2,-0.08100001,0.43 +19352000,mag,0.2,-0.08100001,0.43 +19352000,imu,-0.15842707,0.19336782,-9.924251,-0.0066939737,-0.0060417936,-0.00129892 +19352000,baro,487.6474 +19352000,airspeed,2.138364,2.0884497 +19360000,imu,-0.17095892,0.15666197,-9.996778,-0.0038355184,-0.002173497,-0.00091742876 +19360000,mag,0.2,-0.08100001,0.43 +19360000,airspeed,-0.5599736,-0.54690593 +19360000,baro,487.5441 +19368000,mag,0.2,-0.08100001,0.43 +19368000,baro,487.67557 +19368000,airspeed,2.2721827,2.2191408 +19368000,imu,-0.17409131,0.23270616,-9.915068,-0.0020594972,-0.003823564,0.0055616605 +19372000,mag,0.2,-0.08100001,0.43 +19372000,airspeed,-2.4108522,-2.3545694 +19372000,baro,487.70374 +19372000,imu,-0.20961396,0.13390423,-9.951003,0.001127762,-0.006774837,0.001319695 +19376000,airspeed,3.770553,3.6825335 +19376000,baro,487.67557 +19376000,mag,0.2,-0.08100001,0.43 +19376000,imu,-0.24399301,0.0970917,-9.9316225,0.00022526167,-0.007105083,0.0012862321 +19380000,imu,-0.18138586,0.17370744,-9.885374,-0.009518965,-0.0072318683,0.0022009534 +19380000,baro,487.67557 +19380000,mag,0.2,-0.08100001,0.43 +19380000,airspeed,-0.86359406,-0.84343433 +19384000,imu,-0.1389318,0.2166432,-9.918581,-0.008374456,-0.0056814286,0.004262409 +19384000,airspeed,-2.5993004,-2.5386322 +19384000,mag,0.20300001,-0.084000014,0.43 +19384000,baro,487.60983 +19388000,airspeed,1.3524929,1.3209275 +19388000,imu,-0.25967988,0.19045101,-9.995839,-0.0075948113,-0.002242708,0.008285485 +19392000,baro,487.71783 +19392000,airspeed,-2.5684097,-2.508447 +19392000,imu,-0.2601986,0.19035147,-9.954886,-0.0075535616,-0.0033302116,0.0037567855 +19392000,mag,0.20300001,-0.084000014,0.43 +19396000,airspeed,-1.5170722,-1.4816543 +19396000,mag,0.20300001,-0.084000014,0.43 +19396000,imu,-0.18280715,0.23611839,-9.895707,-0.00020757121,-0.0053706435,0.0024646756 +19396000,baro,487.71783 +19404000,imu,-0.19393313,0.18032245,-9.92472,-0.003871336,-0.007959968,0.005045077 +19404000,mag,0.20300001,-0.084000014,0.43 +19404000,baro,487.76477 +19404000,airspeed,-3.7060344,-3.619501 +19408000,mag,0.20300001,-0.084000014,0.43 +19408000,airspeed,-2.051388,-2.0035126 +19408000,imu,-0.1766286,0.17255038,-9.973793,0.0016927986,-0.00443295,0.0007529235 +19408000,baro,487.57227 +19412000,airspeed,1.219053,1.1906027 +19412000,baro,487.57227 +19412000,mag,0.20300001,-0.084000014,0.43 +19412000,imu,-0.14120749,0.20023063,-9.926979,0.00047135144,-0.0050621214,-0.0007277203 +19416000,baro,487.68497 +19416000,imu,-0.17320196,0.18181618,-9.8354,-0.0015508638,-0.005905085,-0.00052074523 +19416000,airspeed,3.606621,3.5224261 +19416000,mag,0.20300001,-0.084000014,0.43 +19420000,baro,487.52533 +19420000,mag,0.20300001,-0.084000014,0.43 +19420000,airspeed,-1.1101551,-1.0842495 +19420000,imu,-0.14767048,0.20571633,-9.838967,0.0005940035,-0.005617751,-0.005742356 +19428000,baro,487.5488 +19428000,imu,-0.17090942,0.122645825,-9.857086,-0.0033135805,-0.0032760226,0.0014534361 +19428000,airspeed,2.190861,2.1397336 +19428000,mag,0.20300001,-0.084000014,0.43 +19436000,baro,487.7413 +19436000,mag,0.201,-0.08300001,0.43100002 +19436000,imu,-0.16600911,0.21153016,-9.978521,-0.008955704,0.003721402,-0.0071592573 +19436000,airspeed,2.246961,2.1944993 +19440000,mag,0.201,-0.08300001,0.43100002 +19440000,imu,-0.20280005,0.1637364,-9.95917,-0.0077313255,-0.0012169415,-0.0014906182 +19440000,airspeed,3.330874,3.253105 +19440000,baro,487.7413 +19444000,imu,-0.19035952,0.13142815,-9.955164,-0.0047406633,-0.0029438222,0.0042713988 +19444000,airspeed,2.3606613,2.305581 +19448000,imu,-0.079330005,0.15789804,-9.930583,-0.003941764,-0.0068316124,0.003986537 +19448000,baro,487.66617 +19448000,airspeed,1.0845042,1.0591881 +19448000,mag,0.201,-0.08300001,0.43100002 +19452000,imu,-0.12708168,0.20763958,-9.946526,-0.0021980673,-0.010400096,0.0001784549 +19452000,baro,487.66617 +19452000,airspeed,-5.0009212,-4.884182 +19452000,mag,0.201,-0.08300001,0.43100002 +19456000,airspeed,3.2351797,3.1596687 +19456000,imu,-0.2199795,0.24006502,-9.951261,-0.0022393893,-0.0012379731,0.006629762 +19456000,baro,487.61453 +19456000,mag,0.201,-0.08300001,0.43100002 +19460000,airspeed,-2.0109665,-1.9640294 +19460000,baro,487.61453 +19460000,imu,-0.22837725,0.16559426,-9.930883,-0.001402789,0.0032543498,0.013266632 +19460000,mag,0.201,-0.08300001,0.43100002 +19464000,imu,-0.18393376,0.11082479,-9.998993,0.00040548216,-9.068865e-05,0.007511492 +19464000,mag,0.201,-0.08300001,0.43100002 +19464000,baro,487.71313 +19464000,airspeed,1.7153724,1.6753252 +19472000,imu,-0.19680668,0.24001014,-9.985325,0.0029116517,-0.0031600078,0.0048360876 +19472000,mag,0.201,-0.08300001,0.43100002 +19472000,baro,487.7272 +19472000,airspeed,-0.9366177,-0.9147505 +19476000,mag,0.201,-0.08300001,0.43100002 +19476000,imu,-0.18851173,0.20293719,-9.90192,0.0007025685,-0.0047712643,0.0050540664 +19476000,baro,487.61923 +19476000,airspeed,3.5661306,3.4828947 +19480000,baro,487.68967 +19480000,mag,0.201,-0.08300001,0.43100002 +19480000,airspeed,1.6819065,1.6426427 +19480000,imu,-0.17838688,0.16550778,-9.93496,0.0015395309,-0.004802303,-0.0004716228 +19484000,imu,-0.16190548,0.18572335,-9.953706,0.000508127,-0.0063293176,-0.0005624663 +19484000,mag,0.201,-0.08300001,0.43100002 +19484000,airspeed,2.573416,2.5133502 +19484000,baro,487.62393 +19488000,imu,-0.2444635,0.19053034,-9.93198,-0.0010001778,-0.00629307,-0.004432987 +19488000,airspeed,-1.8842696,-1.840289 +19492000,imu,-0.2749416,0.19359404,-9.99241,-0.0007124133,-0.0034823667,-0.0030347472 +19492000,mag,0.201,-0.08100001,0.42900002 +19492000,baro,487.57227 +19492000,airspeed,-4.467384,-4.363124 +19496000,mag,0.201,-0.08100001,0.42900002 +19496000,baro,487.6474 +19496000,imu,-0.21883804,0.1747743,-9.954267,-0.0016862408,-0.0052168295,-0.0022227422 +19496000,airspeed,-2.1484616,-2.0983114 +19504000,baro,487.52063 +19504000,airspeed,2.6734278,2.6110435 +19504000,mag,0.201,-0.08100001,0.42900002 +19504000,imu,-0.21811736,0.22294961,-9.939503,0.0047393693,-0.010847458,0.004424692 +19508000,mag,0.201,-0.08100001,0.42900002 +19508000,airspeed,1.517706,1.4822959 +19508000,imu,-0.14540367,0.20935048,-9.902076,0.0022368236,-0.010227682,0.003264296 +19508000,baro,487.4596 +19512000,airspeed,-3.5506485,-3.4677937 +19512000,mag,0.201,-0.08100001,0.42900002 +19512000,baro,487.52533 +19512000,imu,-0.16640478,0.1525706,-9.894263,-0.0068310583,-0.012658396,-0.00040135797 +19516000,baro,487.52533 +19516000,mag,0.201,-0.08100001,0.42900002 +19516000,imu,-0.23855358,0.17555647,-9.884865,-0.00803298,-0.007535359,-0.0059066364 +19516000,airspeed,2.012176,1.9652218 +19520000,baro,487.57697 +19520000,imu,-0.23667605,0.14634283,-9.887283,-0.0017057343,-0.009087762,-0.0026501105 +19520000,gps,488107.0,85456074.0,473977508.0,0.01,-0.01,0.0 +19520000,mag,0.201,-0.08100001,0.42900002 +19520000,airspeed,1.3911885,1.3587207 +19524000,baro,487.57697 +19524000,mag,0.201,-0.08100001,0.42900002 +19524000,airspeed,-3.0982316,-3.0259244 +19524000,imu,-0.19880682,0.07486582,-9.920686,0.0058564483,-0.015091276,0.007048765 +19528000,mag,0.201,-0.08100001,0.42900002 +19528000,airspeed,2.0163252,1.9692731 +19528000,baro,487.53003 +19532000,imu,-0.18466274,0.20467648,-9.893606,-0.0034427585,-0.013239372,0.006188643 +19536000,imu,-0.22721821,0.22886102,-9.865759,-0.0059485054,-0.011802016,0.0024350642 +19536000,baro,487.6568 +19536000,mag,0.201,-0.08100001,0.42900002 +19536000,airspeed,1.0897692,1.0643308 +19540000,baro,487.6568 +19540000,imu,-0.18779846,0.11353397,-9.9311905,0.0013629611,-0.010117729,-0.002862336 +19540000,airspeed,2.927858,2.8595133 +19540000,mag,0.201,-0.08100001,0.42900002 +19548000,baro,487.4596 +19548000,imu,-0.28087693,0.22087233,-9.965009,0.0015085938,-0.0061269477,0.009240539 +19548000,airspeed,-0.65394837,-0.63869095 +19548000,mag,0.19900002,-0.08200001,0.42800003 +19552000,mag,0.19900002,-0.08200001,0.42800003 +19552000,airspeed,-4.2220345,-4.123518 +19552000,baro,487.50186 +19552000,imu,-0.26861677,0.16254063,-9.879397,0.0022012745,-0.0016976102,0.0074380804 +19556000,mag,0.19900002,-0.08200001,0.42800003 +19556000,baro,487.62393 +19560000,mag,0.19900002,-0.08200001,0.42800003 +19560000,imu,-0.14687885,0.17992029,-9.955941,-0.0019013605,-0.010501681,0.00074220105 +19560000,baro,487.52533 +19560000,airspeed,-3.2178564,-3.142767 +19564000,imu,-0.14077428,0.18036616,-9.979097,0.0032562946,-0.00077468826,0.00340276 +19564000,airspeed,1.9822469,1.9359646 +19564000,baro,487.7507 +19564000,mag,0.19900002,-0.08200001,0.42800003 +19568000,baro,487.68967 +19568000,mag,0.19900002,-0.08200001,0.42800003 +19568000,imu,-0.14676136,0.17010343,-9.897439,0.0035561982,-0.0034864277,-0.0028542678 +19568000,airspeed,1.6939652,1.65442 +19572000,baro,487.57697 +19572000,airspeed,-2.4757066,-2.4179282 +19572000,mag,0.19900002,-0.08200001,0.42800003 +19572000,imu,-0.16722031,0.124135345,-9.876735,-0.004375555,-0.010090017,-0.0033891096 +19580000,mag,0.19900002,-0.08200001,0.42800003 +19580000,imu,-0.14908405,0.15932885,-9.878852,0.00072041433,-0.0097330855,-0.0038656911 +19580000,airspeed,-3.1500018,-3.076467 +19580000,baro,487.68027 +19584000,imu,-0.14932814,0.1919306,-9.828201,-0.00034329976,-0.004723112,0.002487426 +19584000,airspeed,-1.7993929,-1.7573853 +19588000,airspeed,2.5006948,2.4423149 +19588000,baro,487.69904 +19588000,imu,-0.13662891,0.11331136,-9.859087,-0.001093101,0.0008906936,-5.8938203e-06 +19588000,mag,0.19900002,-0.08200001,0.42800003 +19592000,baro,487.66617 +19592000,mag,0.19900002,-0.08200001,0.42800003 +19592000,airspeed,-0.8454197,-0.8256849 +19592000,imu,-0.12619108,0.14495973,-9.918644,0.00028769192,-0.0031492708,-0.00490817 +19596000,mag,0.20400001,-0.08100001,0.42900002 +19596000,baro,487.6521 +19596000,airspeed,-3.176736,-3.1025827 +19596000,imu,-0.092483014,0.17529924,-9.932512,-0.00051343534,-0.006150715,-0.00404854 +19600000,landed,1.0 +19600000,baro,487.5582 +19600000,airspeed,2.2207744,2.168948 +19600000,mag,0.20400001,-0.08100001,0.42900002 +19600000,imu,-0.17080405,0.16163705,-9.911295,-0.007694619,-0.0070746196,-0.004972075 +19604000,imu,-0.22867753,0.21234421,-9.929873,-0.007482815,-0.009363843,-0.0030536796 +19604000,baro,487.5582 +19604000,airspeed,2.7440665,2.6800277 +19604000,mag,0.20400001,-0.08100001,0.42900002 +19608000,airspeed,-2.8391664,-2.7728975 +19608000,imu,-0.14641614,0.2443541,-9.894633,-0.0017378633,-0.009679473,0.0017861322 +19612000,airspeed,-2.9127963,-2.8448086 +19612000,mag,0.20400001,-0.08100001,0.42900002 +19612000,imu,-0.17682374,0.23888108,-9.821809,0.0009598906,-0.008585129,0.0044252425 +19612000,baro,487.62863 +19616000,baro,487.50186 +19616000,mag,0.20400001,-0.08100001,0.42900002 +19616000,airspeed,-3.0338142,-2.9630237 +19616000,imu,-0.26887625,0.21430731,-9.9070215,6.0541275e-05,-0.0065289233,0.001470439 +19620000,imu,-0.27018675,0.1910655,-9.935694,-0.0020398053,-0.012326117,-0.007959462 +19624000,imu,-0.21705802,0.17846936,-9.972535,-0.0007128698,-0.012676986,-0.0070081125 +19624000,mag,0.20400001,-0.08100001,0.42900002 +19624000,airspeed,-2.4807727,-2.4228723 +19624000,baro,487.60513 +19628000,mag,0.20400001,-0.08100001,0.42900002 +19628000,airspeed,-2.5704613,-2.5104675 +19628000,imu,-0.17529634,0.16536763,-9.970566,-0.0017826846,-0.008597496,0.00049596775 +19628000,baro,487.60513 +19632000,imu,-0.16317636,0.1860819,-9.926859,0.0012557706,-0.005249881,7.624138e-05 +19632000,baro,487.6568 +19632000,airspeed,-4.3912234,-4.28872 +19632000,mag,0.20400001,-0.08100001,0.42900002 +19636000,airspeed,-1.255436,-1.2261277 +19636000,imu,-0.14302006,0.23111072,-9.959925,0.00115754,-0.0041360385,-0.0008105955 +19636000,baro,487.69434 +19636000,mag,0.20400001,-0.08100001,0.42900002 +19640000,airspeed,1.3957878,1.3632032 +19640000,mag,0.20400001,-0.08100001,0.42900002 +19640000,imu,-0.12483692,0.21611837,-9.940088,-0.0027860592,-0.007530985,0.0039913035 +19640000,baro,487.69434 +19644000,mag,0.19900002,-0.08000001,0.42800003 +19644000,airspeed,0.9180034,0.89657414 +19644000,imu,-0.17592356,0.1278963,-9.989501,-0.0030243737,-0.007895875,0.0047800858 +19644000,baro,487.66617 +19652000,baro,487.61453 +19652000,imu,-0.2564279,0.28971952,-9.919596,-0.007523539,-0.011368306,-0.0018685515 +19652000,mag,0.19900002,-0.08000001,0.42800003 +19652000,airspeed,1.0458133,1.0214036 +19656000,mag,0.19900002,-0.08000001,0.42800003 +19660000,airspeed,-3.4794436,-3.3982365 +19660000,baro,487.59106 +19660000,imu,-0.15495823,0.19614387,-9.936463,0.0022101307,-0.0008130452,-0.0002554268 +19660000,mag,0.19900002,-0.08000001,0.42800003 +19664000,baro,487.70374 +19664000,imu,-0.13486207,0.15979008,-10.012396,-0.0027259048,-0.00023617594,-0.001984986 +19664000,mag,0.19900002,-0.08000001,0.42800003 +19664000,airspeed,1.8006461,1.7586089 +19668000,mag,0.19900002,-0.08000001,0.42800003 +19668000,airspeed,4.8545837,4.741266 +19668000,imu,-0.13520068,0.17164995,-9.983414,-0.0059433226,-0.0028132536,-0.00094785227 +19668000,baro,487.6521 +19672000,imu,-0.20810191,0.19829711,-9.895626,-0.005023888,-0.005414212,0.0017684259 +19672000,baro,487.62863 +19672000,mag,0.19900002,-0.08000001,0.42800003 +19672000,airspeed,2.434532,2.377707 +19676000,airspeed,-2.526657,-2.4676833 +19676000,imu,-0.20094208,0.2171222,-9.867151,0.0039816364,-0.0030758295,0.0018550849 +19680000,airspeed,-2.0883253,-2.0395823 +19680000,imu,-0.18846184,0.20953009,-9.921341,0.0071476754,0.0016100657,-0.0008461116 +19680000,mag,0.19900002,-0.08000001,0.42800003 +19680000,baro,487.61923 +19684000,airspeed,-1.3859748,-1.3536345 +19684000,imu,-0.17833507,0.15348522,-9.988116,0.0031308746,-0.0015962486,0.0029502902 +19684000,baro,487.50656 +19684000,mag,0.19900002,-0.08000001,0.42800003 +19688000,baro,487.6333 +19688000,imu,-0.18492061,0.19971475,-9.988461,-0.0012772537,-0.0023591833,0.0020728423 +19688000,airspeed,-3.6192446,-3.5347664 +19688000,mag,0.19900002,-0.08000001,0.42800003 +19692000,baro,487.8164 +19692000,airspeed,-1.5282676,-1.4925791 +19692000,mag,0.19900002,-0.08000001,0.42800003 +19692000,imu,-0.16851285,0.23712544,-9.994725,-0.005500074,-0.0041631456,-0.0019762698 +19696000,mag,0.2,-0.08000001,0.42800003 +19696000,airspeed,-1.5347276,-1.4989165 +19696000,baro,487.50186 +19696000,imu,-0.13454024,0.22168392,-9.977071,-0.005628743,-0.00785908,-0.0017154753 +19704000,baro,487.8164 +19704000,imu,-0.17993529,0.17557214,-9.862668,-0.00024313733,-0.0038519134,-0.00521866 +19704000,airspeed,1.3406458,1.3093388 +19704000,mag,0.2,-0.08000001,0.42800003 +19708000,baro,487.66617 +19708000,airspeed,2.9925778,2.9227204 +19708000,imu,-0.22965504,0.13540561,-9.853734,-0.0022892314,-0.0018526284,0.00033752294 +19708000,mag,0.2,-0.08000001,0.42800003 +19712000,imu,-0.20194037,0.15508081,-9.930565,-0.0025513868,-0.0038174058,0.005653584 +19712000,baro,487.47836 +19712000,mag,0.2,-0.08000001,0.42800003 +19712000,airspeed,1.7634143,1.7222694 +19716000,baro,487.47836 +19716000,airspeed,1.8395041,1.7965839 +19716000,mag,0.2,-0.08000001,0.42800003 +19716000,imu,-0.14793013,0.1896907,-9.963581,-0.0020827733,-0.004232123,0.006550615 +19720000,baro,487.57227 +19720000,gps,488108.0,85456075.0,473977508.0,0.01,0.0,0.0 +19720000,airspeed,2.3358192,2.2813063 +19720000,mag,0.2,-0.08000001,0.42800003 +19720000,imu,-0.16509877,0.19480188,-9.95425,-0.0017231383,-0.008996561,0.003833355 +19728000,mag,0.2,-0.08000001,0.42800003 +19728000,baro,487.61453 +19728000,imu,-0.2675185,0.20363244,-9.978234,-0.0032551826,0.00311082,0.002065643 +19728000,airspeed,-4.0163226,-3.9225802 +19736000,mag,0.2,-0.08000001,0.42800003 +19736000,baro,487.58167 +19736000,imu,-0.091506705,0.20113885,-9.978825,-0.007508037,-0.007010961,-0.0054583126 +19736000,airspeed,3.1608753,3.0871053 +19740000,imu,-0.116224766,0.16384615,-9.929134,-0.0041387193,-0.009984767,-0.0018703539 +19740000,airspeed,-2.2886498,-2.2352464 +19740000,mag,0.2,-0.08000001,0.42800003 +19740000,baro,487.50656 +19744000,mag,0.2,-0.08000001,0.42800003 +19744000,airspeed,3.4787416,3.3975565 +19744000,baro,487.5676 +19744000,imu,-0.17831695,0.18762541,-9.8694515,-0.005234549,-0.006873549,0.002229973 +19748000,mag,0.19700001,-0.08500001,0.42700002 +19748000,airspeed,3.0827675,3.0108094 +19748000,imu,-0.19146805,0.23676395,-9.921661,-0.0050594127,-0.0015553551,0.0033442297 +19748000,baro,487.6427 +19756000,baro,487.77887 +19756000,mag,0.19700001,-0.08500001,0.42700002 +19756000,imu,-0.24473926,0.17266983,-9.847519,-0.0019863625,-0.010312296,-0.0034826072 +19756000,airspeed,2.6631904,2.6010048 +19760000,mag,0.19700001,-0.08500001,0.42700002 +19760000,baro,487.62393 +19760000,airspeed,3.4185286,3.338737 +19760000,imu,-0.25118273,0.13840418,-9.892955,-0.0017114833,-0.01145159,-0.0064373747 +19764000,imu,-0.22730583,0.16857882,-9.850893,0.0009998075,-0.0073130648,-0.0025303888 +19764000,airspeed,3.552728,3.4698088 +19764000,baro,487.60043 +19764000,mag,0.19700001,-0.08500001,0.42700002 +19772000,baro,487.80704 +19772000,airspeed,1.7155117,1.6754514 +19772000,imu,-0.17647834,0.18401003,-9.873914,-0.0015821155,-0.008111035,-0.0036155349 +19772000,mag,0.19700001,-0.08500001,0.42700002 +19776000,mag,0.19700001,-0.08500001,0.42700002 +19776000,baro,487.48306 +19776000,imu,-0.2156658,0.22509395,-9.955604,-0.0034032422,-0.0051770625,0.00399839 +19776000,airspeed,-1.6799507,-1.6407529 +19780000,mag,0.19700001,-0.08500001,0.42700002 +19780000,imu,-0.20378956,0.20408733,-9.967188,-0.0032754445,-0.007928653,-0.0005471928 +19780000,baro,487.6474 +19780000,airspeed,1.2049497,1.1768235 +19784000,imu,-0.15203634,0.19587718,-9.977943,-0.0025518695,-0.010818695,-0.0011133925 +19784000,airspeed,-2.1950142,-2.1437776 +19784000,baro,487.6474 +19784000,mag,0.19700001,-0.08500001,0.42700002 +19792000,airspeed,-2.2059617,-2.1544685 +19792000,imu,-0.118828945,0.23727871,-9.888785,-0.0073029767,-0.012249085,0.0010625371 +19792000,baro,487.6568 +19792000,mag,0.19700001,-0.08500001,0.42700002 +19796000,baro,487.57227 +19796000,imu,-0.20218386,0.21866657,-9.895639,-0.005191434,-0.0066014044,0.00013820629 +19796000,airspeed,-1.9732026,-1.927152 +19796000,mag,0.19700001,-0.08500001,0.42700002 +19800000,mag,0.2,-0.08200001,0.42900002 +19800000,baro,487.6474 +19800000,airspeed,3.6485126,3.563348 +19804000,imu,-0.19349481,0.19154836,-9.918751,-0.0017658635,-0.011479204,-0.0092939725 +19808000,airspeed,-1.9218277,-1.8769543 +19808000,imu,-0.28107104,0.16373906,-9.900265,-0.00710429,-0.009025319,-0.0058105877 +19808000,baro,487.76477 +19808000,mag,0.2,-0.08200001,0.42900002 +19812000,mag,0.2,-0.08200001,0.42900002 +19812000,imu,-0.2005202,0.18121018,-9.9179945,-0.0055460385,-0.0048141116,0.0051223915 +19812000,baro,487.52533 +19812000,airspeed,1.8006053,1.7585876 +19816000,airspeed,3.3402853,3.2623386 +19816000,imu,-0.15694395,0.13934523,-9.911575,-0.00023965308,-0.0008824744,0.0058476753 +19816000,baro,487.52533 +19816000,mag,0.2,-0.08200001,0.42900002 +19820000,mag,0.2,-0.08200001,0.42900002 +19820000,airspeed,-3.5636187,-3.4804454 +19820000,imu,-0.1943474,0.17911546,-9.947902,-0.005254063,-0.00043160515,-0.0028185376 +19820000,baro,487.60043 +19824000,baro,487.69904 +19824000,airspeed,4.033332,3.9391723 +19824000,imu,-0.184651,0.16506867,-9.997139,-0.0049443487,2.1783558e-06,-0.0017435852 +19824000,mag,0.2,-0.08200001,0.42900002 +19828000,airspeed,1.4402549,1.4066386 +19828000,mag,0.2,-0.08200001,0.42900002 +19828000,baro,487.61453 +19828000,imu,-0.16751824,0.16957484,-9.970392,0.002187672,-0.002395636,-0.0011601623 +19832000,airspeed,-2.6503744,-2.5885077 +19832000,imu,-0.15929633,0.2693792,-9.948548,0.000102278245,-0.0073731192,-0.0012917373 +19832000,baro,487.6521 +19832000,mag,0.2,-0.08200001,0.42900002 +19836000,mag,0.2,-0.08200001,0.42900002 +19836000,imu,-0.13338207,0.24361615,-9.937221,-0.0031971864,-0.008662251,0.0028087273 +19836000,baro,487.6521 +19836000,airspeed,-3.0660093,-2.9944406 +19840000,imu,-0.15194502,0.17302205,-9.901439,-0.0040623657,-0.008134196,-2.7838572e-05 +19840000,baro,487.7366 +19840000,mag,0.2,-0.08200001,0.42900002 +19840000,airspeed,-2.6415274,-2.579854 +19844000,airspeed,-1.0686455,-1.0436988 +19844000,imu,-0.15334284,0.22939149,-9.8955765,-0.002932894,-0.0031074206,-0.0028245193 +19844000,mag,0.2,-0.08200001,0.42900002 +19844000,baro,487.68027 +19848000,imu,-0.14335403,0.26411706,-9.895495,0.0023607044,-0.005351386,0.0011384544 +19848000,mag,0.2,-0.08200001,0.42900002 +19848000,baro,487.6427 +19848000,airspeed,2.7391872,2.675249 +19852000,imu,-0.14543815,0.15081252,-9.964852,0.005159047,-0.0116385305,0.00039694225 +19852000,baro,487.67557 +19852000,mag,0.2,-0.08000001,0.42900002 +19852000,airspeed,2.3890498,2.3332798 +19856000,airspeed,3.6297417,3.5450091 +19856000,baro,487.67557 +19856000,mag,0.2,-0.08000001,0.42900002 +19856000,imu,-0.18679921,0.15665416,-9.963924,0.0013714334,-0.009114508,4.1390733e-05 +19860000,airspeed,2.1905649,2.1394484 +19860000,imu,-0.211925,0.15459189,-9.963736,-0.0012716355,-0.0069385758,0.0026876878 +19864000,baro,487.67087 +19864000,airspeed,-1.8587089,-1.8153197 +19864000,imu,-0.16013381,0.12585302,-9.977389,-0.002240666,-0.0060835793,0.005186034 +19864000,mag,0.2,-0.08000001,0.42900002 +19868000,imu,-0.16171946,0.1529854,-9.906623,0.002890666,-0.0084406575,0.0017196304 +19868000,airspeed,-2.2017884,-2.1503904 +19872000,mag,0.2,-0.08000001,0.42900002 +19872000,baro,487.5535 +19872000,imu,-0.18903944,0.13540821,-9.902763,0.0028249791,-0.012588271,-0.0020990872 +19872000,airspeed,-3.025363,-2.9547606 +19876000,imu,-0.1385616,0.11086233,-9.903093,-0.0075874752,-0.011231659,0.007419829 +19876000,airspeed,0.5558244,0.54285324 +19876000,mag,0.2,-0.08000001,0.42900002 +19876000,baro,487.5535 +19880000,airspeed,-3.7194943,-3.6326792 +19880000,imu,-0.11433048,0.15359229,-9.837003,-0.0051319534,-0.012887034,0.0041443664 +19880000,mag,0.2,-0.08000001,0.42900002 +19880000,baro,487.61453 +19888000,imu,-0.24009597,0.16480619,-9.861249,-0.0071438896,-0.005926996,0.0019145634 +19888000,baro,487.60983 +19888000,mag,0.2,-0.08000001,0.42900002 +19888000,airspeed,2.3581905,2.3031504 +19896000,imu,-0.20437242,0.16909145,-9.890052,-6.4390275e-05,-0.007404248,-0.006912115 +19896000,airspeed,3.22464,3.1493886 +19896000,baro,487.5441 +19896000,mag,0.2,-0.08000001,0.42900002 +19900000,mag,0.2,-0.08000001,0.42900002 +19900000,imu,-0.21037392,0.17554569,-9.929196,0.00046756418,-0.011734343,-0.0076237987 +19900000,airspeed,2.8896856,2.822223 +19900000,baro,487.71313 +19904000,airspeed,-1.1521102,-1.125218 +19904000,imu,-0.14357497,0.1824078,-9.951458,-0.0015304426,-0.010806768,-0.0060944296 +19904000,baro,487.638 +19904000,mag,0.19800001,-0.08000001,0.42700002 +19908000,mag,0.19800001,-0.08000001,0.42700002 +19908000,imu,-0.16214772,0.20687786,-9.926363,0.0026220896,-0.005988095,-0.0089278715 +19908000,baro,487.59576 +19908000,airspeed,1.846204,1.8031151 +19912000,mag,0.19800001,-0.08000001,0.42700002 +19912000,baro,487.59576 +19912000,imu,-0.2315731,0.16882247,-9.867278,0.002666146,-0.0050766002,-0.0049096677 +19912000,airspeed,0.84722775,0.82745415 +19916000,baro,487.66617 +19916000,mag,0.19800001,-0.08000001,0.42700002 +19916000,airspeed,0.4442896,0.43391842 +19916000,imu,-0.15917449,0.14386359,-9.918314,0.00074624264,-0.0029195028,0.00241815 +19920000,mag,0.19800001,-0.08000001,0.42700002 +19920000,baro,487.68497 +19920000,gps,488113.0,85456074.0,473977508.0,0.01,0.01,-0.03 +19920000,airspeed,-2.1309078,-2.0811627 +19920000,imu,-0.08590073,0.1729296,-9.954531,-0.0014551186,-0.008589265,0.0009642759 +19924000,imu,-0.10739846,0.16420604,-9.993508,-0.0007299499,-0.010432014,-0.0033068852 +19924000,mag,0.19800001,-0.08000001,0.42700002 +19924000,airspeed,3.1937282,3.11917 +19924000,baro,487.69434 +19928000,airspeed,1.9797484,1.9335287 +19928000,baro,487.71313 +19928000,imu,-0.17333792,0.1361956,-10.010526,0.0030459296,-0.004324288,-0.0030850149 +19928000,mag,0.19800001,-0.08000001,0.42700002 +19932000,baro,487.67557 +19932000,imu,-0.20959859,0.16644248,-9.944473,-0.00014873869,-0.000498463,0.00073912536 +19932000,mag,0.19800001,-0.08000001,0.42700002 +19932000,airspeed,1.7547483,1.7137853 +19936000,airspeed,-3.0094044,-2.939171 +19936000,imu,-0.21592422,0.22418913,-9.971913,-0.0039056514,-0.005879989,0.0006889338 +19936000,mag,0.19800001,-0.08000001,0.42700002 +19936000,baro,487.57227 +19940000,imu,-0.16092785,0.18576333,-10.013072,-0.0003895675,-0.010153604,-6.283774e-05 +19940000,mag,0.19800001,-0.08000001,0.42700002 +19940000,baro,487.86337 +19940000,airspeed,2.5333734,2.4742067 +19944000,mag,0.19800001,-0.08000001,0.42700002 +19944000,imu,-0.15667967,0.08092439,-9.961447,-0.0062432024,-0.008934007,-0.0029560197 +19944000,baro,487.62863 +19944000,airspeed,-2.162581,-2.1121042 +19948000,airspeed,-2.079445,-2.0309193 +19948000,mag,0.19800001,-0.08000001,0.42700002 +19948000,baro,487.53473 +19948000,imu,-0.21608518,0.10007501,-9.90087,-0.0063244887,-0.010259988,-0.006961333 +19952000,mag,0.19800001,-0.08000001,0.42700002 +19952000,airspeed,3.3496137,3.2714386 +19952000,baro,487.58167 +19952000,imu,-0.23107386,0.19343473,-9.916745,-0.0015526456,-0.007383737,-0.0050790925 +19956000,imu,-0.19730178,0.21328318,-9.936447,-0.007780581,-0.0073169493,-0.0057234904 +19956000,airspeed,-3.1904538,-3.1159773 +19956000,mag,0.2,-0.08100001,0.42900002 +19956000,baro,487.67087 +19960000,mag,0.2,-0.08100001,0.42900002 +19960000,imu,-0.19863218,0.22008139,-9.969922,-0.0035083902,-0.008084621,-0.0024966716 +19960000,baro,487.61923 +19960000,airspeed,2.325067,2.2707984 +19964000,imu,-0.26962596,0.21631862,-10.007168,0.0010864727,-0.005914143,0.0076043224 +19964000,baro,487.61923 +19964000,mag,0.2,-0.08100001,0.42900002 +19964000,airspeed,-2.7021835,-2.6391127 +19968000,imu,-0.20028363,0.2534799,-9.97779,-0.0019795832,-0.009011376,0.009131805 +19972000,airspeed,3.816182,3.727117 +19972000,mag,0.2,-0.08100001,0.42900002 +19972000,baro,487.58636 +19972000,imu,-0.12647434,0.23473608,-9.941434,-0.0046137054,-0.012530848,0.004729364 +19976000,airspeed,2.882517,2.815247 +19976000,baro,487.5629 +19976000,mag,0.2,-0.08100001,0.42900002 +19976000,imu,-0.16969146,0.14882334,-9.932771,-0.0077807563,-0.016764827,-0.005744798 +19980000,baro,487.60513 +19980000,imu,-0.15139696,0.10343224,-9.950335,-0.0073849712,-0.012094568,-0.0030897786 +19980000,mag,0.2,-0.08100001,0.42900002 +19980000,airspeed,2.8986626,2.8310082 +19988000,baro,487.5676 +19988000,imu,-0.20046158,0.107579894,-9.909933,-0.0024983608,-0.010942319,0.0005722665 +19988000,mag,0.2,-0.08100001,0.42900002 +19988000,airspeed,3.1141572,3.0414798 +19996000,baro,487.5629 +19996000,airspeed,-2.8681078,-2.801174 +19996000,mag,0.2,-0.08100001,0.42900002 +19996000,imu,-0.22516009,0.21764338,-9.927482,0.0038041875,-0.0048499852,0.00021903876 +20000000,landed,1.0 +20004000,mag,0.2,-0.08100001,0.42900002 +20004000,airspeed,2.9527662,2.8838618 +20004000,baro,487.53003 +20004000,imu,-0.16667116,0.13873528,-9.910362,-0.009564119,-0.0089544095,0.00013354211 +20008000,mag,0.2,-0.08100001,0.42800003 +20008000,airspeed,2.97039,2.9010746 +20008000,baro,487.53003 +20008000,imu,-0.20788793,0.16257367,-9.968759,-0.0052758926,-0.0008151548,0.0025062924 +20012000,mag,0.2,-0.08100001,0.42800003 +20012000,baro,487.5488 +20012000,airspeed,-3.336533,-3.2586699 +20012000,imu,-0.21808931,0.16879347,-9.940701,-0.0016419367,-0.0027952965,0.0022530889 +20016000,imu,-0.15509382,0.09865311,-9.969956,0.004550981,-0.00529865,0.0012882652 +20016000,mag,0.2,-0.08100001,0.42800003 +20016000,airspeed,1.9724958,1.9264649 +20016000,baro,487.5488 +20020000,airspeed,3.3570971,3.2787333 +20020000,imu,-0.11712033,0.10471266,-9.976508,-0.0017288699,-0.006904975,-0.00033448605 +20020000,mag,0.2,-0.08100001,0.42800003 +20020000,baro,487.6568 +20028000,airspeed,-2.5667355,-2.5068219 +20028000,imu,-0.22880115,0.17819971,-9.913222,-0.0013540614,-0.003916284,-0.0066138864 +20028000,mag,0.2,-0.08100001,0.42800003 +20028000,baro,487.6474 +20032000,baro,487.58636 +20032000,mag,0.2,-0.08100001,0.42800003 +20032000,airspeed,2.0864615,2.0377667 +20032000,imu,-0.23485778,0.20057283,-9.869582,-0.0071998117,-0.0051567643,-0.0067308163 +20036000,airspeed,2.1064901,2.0573277 +20036000,baro,487.58636 +20036000,mag,0.2,-0.08100001,0.42800003 +20036000,imu,-0.136805,0.17207418,-9.902459,0.00020120904,-0.0049655894,0.00025515916 +20044000,airspeed,1.431242,1.3978344 +20044000,mag,0.2,-0.08100001,0.42800003 +20044000,imu,-0.12758315,0.19443947,-9.965639,0.0031617105,-0.007968516,0.0036742103 +20044000,baro,487.638 +20048000,imu,-0.15840125,0.17177294,-9.985053,0.00074451306,-0.009836658,0.0053347526 +20048000,baro,487.7272 +20048000,airspeed,-1.4958651,-1.4609412 +20048000,mag,0.2,-0.08100001,0.42800003 +20052000,baro,487.5441 +20052000,airspeed,-2.5002058,-2.441861 +20052000,imu,-0.17325133,0.1369578,-9.969307,-0.0010352782,-0.010493568,0.0002502352 +20052000,mag,0.2,-0.08100001,0.42800003 +20056000,airspeed,-0.82640034,-0.80711544 +20056000,mag,0.2,-0.08100001,0.42800003 +20056000,baro,487.5441 +20056000,imu,-0.19711271,0.14325447,-9.967131,0.0013676338,-0.00859342,-0.0057181013 +20060000,imu,-0.18254334,0.20857213,-9.970222,0.0014196223,-0.0042917454,-0.0061161057 +20060000,airspeed,-3.1278198,-3.0548098 +20060000,mag,0.201,-0.08200001,0.42800003 +20060000,baro,487.6474 +20064000,imu,-0.19134755,0.21309446,-9.972196,-0.0035643962,-0.0032642845,-0.0034680716 +20064000,airspeed,-0.9612992,-0.93886805 +20064000,mag,0.201,-0.08200001,0.42800003 +20064000,baro,487.50656 +20068000,mag,0.201,-0.08200001,0.42800003 +20068000,imu,-0.18800007,0.142901,-9.928306,-0.0003573665,-0.0026268095,-0.004126627 +20068000,baro,487.48776 +20068000,airspeed,-4.102292,-4.006573 +20072000,mag,0.201,-0.08200001,0.42800003 +20072000,imu,-0.118559286,0.15279083,-9.89715,-0.0031533816,-0.0020693354,-0.006797774 +20072000,airspeed,-1.3188044,-1.2880361 +20072000,baro,487.44553 +20080000,airspeed,-2.4466872,-2.3895893 +20080000,imu,-0.25474155,0.16370638,-9.99349,-0.0031676888,-0.0079136975,-0.0038290494 +20080000,mag,0.201,-0.08200001,0.42800003 +20080000,baro,487.5535 +20084000,baro,487.69904 +20084000,imu,-0.23198324,0.13262784,-9.952409,-0.002766179,-0.010917871,-0.0012107971 +20084000,airspeed,1.278683,1.2488316 +20084000,mag,0.201,-0.08200001,0.42800003 +20088000,mag,0.201,-0.08200001,0.42800003 +20088000,baro,487.69904 +20088000,imu,-0.19392951,0.15182711,-9.909244,-0.0050608977,-0.009634621,0.0011970255 +20088000,airspeed,1.5876501,1.5505859 +20092000,airspeed,1.5000879,1.4650822 +20092000,baro,487.53473 +20092000,imu,-0.17705145,0.14861812,-9.947743,-0.0025363446,-0.008709382,-0.0020194156 +20092000,mag,0.201,-0.08200001,0.42800003 +20096000,imu,-0.22048354,0.1885904,-9.870528,-0.004099991,-0.011731244,-0.001934826 +20096000,airspeed,2.554339,2.494707 +20096000,baro,487.69904 +20096000,mag,0.201,-0.08200001,0.42800003 +20104000,baro,487.61453 +20104000,mag,0.201,-0.08200001,0.42800003 +20104000,imu,-0.22626449,0.13564192,-9.965326,-0.004178351,-0.013138943,0.0014785768 +20104000,airspeed,-2.427366,-2.3707104 +20108000,baro,487.58636 +20108000,mag,0.201,-0.08200001,0.42800003 +20108000,imu,-0.26192433,0.11621531,-9.880566,-0.0048020757,-0.008554016,0.00049434585 +20108000,airspeed,-1.4968847,-1.4619496 +20112000,imu,-0.22053486,0.2355672,-9.880575,0.00076035457,-0.006760069,-0.003563456 +20112000,airspeed,-1.940248,-1.89493 +20116000,mag,0.202,-0.08300001,0.42400002 +20116000,baro,487.47836 +20116000,imu,-0.1627554,0.2623846,-9.962362,0.0020595952,-0.011714348,-0.0016536452 +20116000,airspeed,2.7991493,2.733838 +20120000,gps,488115.0,85456075.0,473977508.0,0.0,0.0,0.0 +20120000,airspeed,-2.051075,-2.0031898 +20120000,imu,-0.13109608,0.12905802,-10.016368,0.0038624643,-0.0067097493,0.006526753 +20120000,baro,487.71783 +20120000,mag,0.202,-0.08300001,0.42400002 +20124000,imu,-0.16956134,0.15927623,-9.992133,0.00096616783,-0.0043268544,0.0068903724 +20124000,airspeed,2.7548907,2.690574 +20124000,baro,487.71783 +20124000,mag,0.202,-0.08300001,0.42400002 +20128000,imu,-0.12221845,0.24873476,-9.860862,-0.0073966477,-0.0027846147,-0.00014165693 +20128000,airspeed,4.209912,4.111637 +20128000,baro,487.67087 +20128000,mag,0.202,-0.08300001,0.42400002 +20132000,mag,0.202,-0.08300001,0.42400002 +20132000,imu,-0.13807315,0.22572006,-9.824136,-0.008150322,-0.0038565344,-0.0025696373 +20132000,baro,487.6568 +20132000,airspeed,2.6943538,2.6314602 +20136000,baro,487.69434 +20136000,mag,0.202,-0.08300001,0.42400002 +20136000,imu,-0.1844777,0.18584077,-9.9388895,0.0010523223,-0.0074697915,-1.9415345e-05 +20136000,airspeed,1.3713923,1.339377 +20144000,airspeed,0.94320524,0.92119503 +20144000,mag,0.202,-0.08300001,0.42400002 +20144000,imu,-0.09306488,0.15548044,-9.831983,0.00045473682,-0.008806873,0.002271111 +20144000,baro,487.53003 +20148000,airspeed,-1.390082,-1.3576472 +20148000,mag,0.202,-0.08300001,0.42400002 +20148000,baro,487.48776 +20152000,mag,0.202,-0.08300001,0.42400002 +20152000,imu,-0.23996605,0.19998664,-9.985787,-0.00021047858,-0.00878796,0.00017940646 +20152000,baro,487.48776 +20156000,imu,-0.18572734,0.23538779,-9.944414,-0.0009552084,-0.009034038,0.001657238 +20156000,airspeed,-1.140611,-1.1139894 +20160000,airspeed,4.4482093,4.3443794 +20160000,mag,0.202,-0.08300001,0.42400002 +20160000,imu,-0.1812843,0.20679553,-9.960283,-0.0017632665,-0.006054349,0.002085465 +20160000,baro,487.638 +20160000,landed,1.0 +20164000,baro,487.6474 +20164000,mag,0.19700001,-0.08300001,0.42800003 +20168000,airspeed,-1.1403118,-1.1136951 +20168000,imu,-0.14811376,0.17638521,-9.966818,-0.004245311,-0.008132248,-0.0024152282 +20172000,airspeed,-3.1247776,-3.051847 +20172000,mag,0.19700001,-0.08300001,0.42800003 +20172000,baro,487.59576 +20172000,imu,-0.121334046,0.22988115,-9.968227,-0.001950433,-0.004413601,-0.0028415867 +20176000,mag,0.19700001,-0.08300001,0.42800003 +20176000,baro,487.5535 +20176000,imu,-0.16537844,0.20560773,-9.945649,0.0021939792,-0.0015882662,-0.0065098526 +20176000,airspeed,1.6377625,1.5995423 +20180000,mag,0.19700001,-0.08300001,0.42800003 +20180000,baro,487.49246 +20180000,imu,-0.17625983,0.18893398,-9.893326,-0.00023342326,-0.0035077026,-0.002647399 +20180000,airspeed,-1.4056473,-1.3728489 +20184000,imu,-0.14796707,0.2226683,-9.844188,-0.0011707706,-0.0049889134,0.0009788226 +20188000,baro,487.5676 +20188000,airspeed,-3.8834887,-3.792858 +20188000,mag,0.19700001,-0.08300001,0.42800003 +20188000,imu,-0.13913111,0.27966624,-9.908953,-0.00021348902,-0.0050735334,-0.007530766 +20192000,imu,-0.21229057,0.24390243,-9.971296,-0.0017404619,-0.001757267,-0.007554562 +20192000,mag,0.19700001,-0.08300001,0.42800003 +20192000,baro,487.6474 +20192000,airspeed,-1.122657,-1.0964516 +20200000,landed,1.0 +20200000,imu,-0.20571032,0.15431821,-9.957715,0.0015721538,-0.0023220244,-0.0012652142 +20200000,mag,0.19700001,-0.08300001,0.42800003 +20200000,baro,487.51593 +20200000,airspeed,1.0127236,0.9890922 +20204000,mag,0.19700001,-0.08300001,0.42800003 +20204000,baro,487.44553 +20204000,airspeed,3.3789191,3.300087 +20204000,imu,-0.15662867,0.13283175,-9.95353,0.0020319074,-0.006648484,0.0018679213 +20208000,imu,-0.1575831,0.17470764,-9.899297,0.00203198,-0.0060317595,0.00034903755 +20208000,airspeed,-0.5982831,-0.58431745 +20208000,mag,0.19700001,-0.08300001,0.42800003 +20208000,baro,487.6568 +20212000,airspeed,1.5076175,1.4724252 +20212000,mag,0.19700001,-0.08300001,0.42800003 +20212000,imu,-0.19470377,0.21225497,-9.901819,0.0008191537,-0.010918496,0.0010337267 +20212000,baro,487.6568 +20216000,imu,-0.20467623,0.19892596,-9.962598,0.0013285605,-0.010406784,0.0040615695 +20216000,baro,487.60983 +20216000,mag,0.19700001,-0.08300001,0.42800003 +20216000,airspeed,2.8384917,2.7722409 +20220000,landed,0.0 +20224000,baro,487.60983 +20224000,imu,-0.2228415,0.18113294,-9.879213,-0.0018642666,-0.006309508,0.0038719687 +20224000,mag,0.201,-0.08100001,0.42600003 +20224000,airspeed,1.3926322,1.3601282 +20228000,baro,487.80234 +20228000,mag,0.201,-0.08100001,0.42600003 +20232000,airspeed,-1.5027394,-1.4676539 +20232000,mag,0.201,-0.08100001,0.42600003 +20232000,baro,487.7413 +20232000,imu,-0.25118467,0.1942659,-10.044884,-0.0029730857,-0.008299505,-0.0007607028 +20236000,mag,0.201,-0.08100001,0.42600003 +20236000,baro,487.47836 +20236000,airspeed,-2.1381595,-2.088271 +20236000,imu,-0.26672262,0.24372666,-10.013864,-0.0025297776,-0.004471319,-0.0023850612 +20240000,airspeed,-1.4251379,-1.3918836 +20240000,baro,487.50656 +20240000,imu,-0.20645685,0.21357703,-9.937889,-0.0032498725,-0.0067365784,0.0018662502 +20240000,mag,0.201,-0.08100001,0.42600003 +20244000,mag,0.201,-0.08100001,0.42600003 +20244000,baro,487.50656 +20244000,airspeed,4.268483,4.168882 +20244000,imu,-0.11280295,0.13886505,-9.919956,-0.004129605,-0.0029421432,-0.004915074 +20248000,imu,-0.08167024,0.14803334,-9.838886,-0.00022617768,0.0016275059,-0.011295443 +20248000,airspeed,2.5686069,2.5086474 +20248000,mag,0.201,-0.08100001,0.42600003 +20248000,baro,487.66147 +20252000,imu,-0.23449306,0.15871596,-9.8456335,-0.0018646527,-0.008544342,-0.0020082367 +20252000,airspeed,2.8260264,2.760058 +20252000,baro,487.66147 +20252000,mag,0.201,-0.08100001,0.42600003 +20256000,mag,0.201,-0.08100001,0.42600003 +20256000,imu,-0.27667442,0.18651126,-9.87094,-0.0006212476,-0.013660916,0.002827826 +20256000,airspeed,1.1612306,1.1341255 +20256000,baro,487.638 +20260000,airspeed,2.1780715,2.1272483 +20260000,mag,0.201,-0.08100001,0.42600003 +20260000,imu,-0.26059124,0.18023956,-9.852736,-0.005901416,-0.004770981,-0.00068352115 +20260000,baro,487.50656 +20268000,imu,-0.2034572,0.17497027,-9.934692,-0.006729937,-0.008712173,-0.006332175 +20268000,mag,0.201,-0.08100001,0.432 +20268000,airspeed,1.7588581,1.7178128 +20268000,baro,487.5488 +20272000,imu,-0.21733104,0.14262007,-9.907062,-0.0024079003,-0.0073205745,-0.0067375656 +20272000,mag,0.201,-0.08100001,0.432 +20272000,airspeed,-1.6081023,-1.570561 +20272000,baro,487.69434 +20276000,baro,487.69904 +20276000,imu,-0.24221475,0.15358827,-9.984264,0.0015879365,-0.0077667036,-0.0008266363 +20276000,mag,0.201,-0.08100001,0.432 +20276000,airspeed,-0.79484653,-0.77629066 +20280000,airspeed,-1.631428,-1.5933526 +20280000,baro,487.58636 +20280000,imu,-0.2681219,0.19155781,-9.9596195,-0.0012513471,-0.011192188,0.0016717715 +20280000,mag,0.201,-0.08100001,0.432 +20284000,baro,487.69904 +20284000,mag,0.201,-0.08100001,0.432 +20284000,airspeed,3.0736263,3.0018706 +20288000,imu,-0.23399207,0.14845726,-9.948275,-0.0005252671,-0.012440278,0.0021008446 +20292000,baro,487.77417 +20292000,mag,0.201,-0.08100001,0.432 +20292000,airspeed,-2.1258411,-2.0762033 +20292000,imu,-0.197322,0.14975208,-9.995837,-0.003939837,-0.0048057116,0.0059923525 +20296000,mag,0.201,-0.08100001,0.432 +20296000,baro,487.5441 +20300000,imu,-0.26093602,0.19425151,-10.012561,0.0006865766,0.00080681965,-0.0005066603 +20300000,airspeed,-2.588718,-2.5282996 +20304000,imu,-0.2675192,0.18683048,-9.954716,0.0050931247,-0.0015381525,-0.0021908488 +20304000,mag,0.201,-0.08100001,0.432 +20304000,airspeed,1.0174564,0.99371153 +20304000,baro,487.5676 +20308000,imu,-0.1962259,0.21533789,-9.90504,0.0037052224,-0.0024353054,-0.0027037074 +20308000,mag,0.201,-0.08100001,0.432 +20308000,airspeed,1.945674,1.9002633 +20308000,baro,487.59576 +20312000,mag,0.201,-0.08100001,0.432 +20312000,baro,487.6474 +20312000,airspeed,2.2993119,2.245641 +20312000,imu,-0.15246013,0.25508142,-9.895441,0.0052137,-0.0047147116,0.004690972 +20316000,mag,0.201,-0.08100001,0.432 +20316000,baro,487.6474 +20316000,airspeed,-3.5349078,-3.4523954 +20316000,imu,-0.14299558,0.23225932,-9.893096,-0.00013304246,-0.005899143,0.00838313 +20320000,landed,0.0 +20320000,gps,488103.0,85456075.0,473977508.0,0.0,0.0,-0.03 +20320000,baro,487.86807 +20320000,mag,0.201,-0.08100001,0.432 +20324000,baro,487.86807 +20324000,airspeed,2.0269403,1.9796004 +20324000,mag,0.201,-0.08000001,0.43 +20324000,imu,-0.17498855,0.13977551,-9.914473,-0.00214763,-0.004511988,-0.0047178 +20328000,baro,487.58167 +20328000,airspeed,-2.6766648,-2.6141953 +20328000,mag,0.201,-0.08000001,0.43 +20328000,imu,-0.2189415,0.21957856,-9.898917,-0.009737136,-0.0042363005,-0.0030736446 +20332000,baro,487.62393 +20332000,mag,0.201,-0.08000001,0.43 +20332000,imu,-0.17272946,0.22354336,-9.897612,-0.012424677,-0.00973764,0.00040744725 +20332000,airspeed,-4.2164326,-4.1180177 +20336000,mag,0.201,-0.08000001,0.43 +20336000,baro,487.69434 +20336000,airspeed,0.921017,0.8995156 +20336000,imu,-0.168395,0.10765174,-9.911175,0.00020493603,-0.008514134,0.0032625163 +20344000,imu,-0.28295553,0.2367602,-9.904426,0.0045023393,-0.008212849,-5.238272e-05 +20344000,mag,0.201,-0.08000001,0.43 +20344000,airspeed,1.526374,1.4907403 +20344000,baro,487.69904 +20352000,mag,0.201,-0.08000001,0.43 +20352000,imu,-0.1498207,0.19089352,-9.927365,0.0054746745,-0.011749782,0.0045741694 +20352000,airspeed,-3.1174927,-3.0447218 +20352000,baro,487.6568 +20356000,baro,487.52063 +20356000,airspeed,-1.9386994,-1.89346 +20356000,imu,-0.16471788,0.19976318,-9.917879,0.0044066203,-0.0035150005,0.00273596 +20356000,mag,0.201,-0.08000001,0.43 +20364000,imu,-0.15234178,0.21579508,-9.966806,-0.0053328695,-0.0055895653,0.0013737497 +20364000,baro,487.60513 +20364000,airspeed,-2.0825813,-2.0339744 +20364000,mag,0.201,-0.08000001,0.43 +20368000,airspeed,1.7418175,1.7011757 +20368000,imu,-0.19511566,0.21655278,-9.954233,-0.0022061667,-0.003320954,0.0023865195 +20368000,baro,487.48776 +20368000,mag,0.201,-0.08000001,0.43 +20372000,imu,-0.1851259,0.15509012,-9.967975,0.0020308245,-0.0010920409,0.008341175 +20372000,mag,0.202,-0.08000001,0.42700002 +20372000,airspeed,-4.160142,-4.0630164 +20372000,baro,487.7225 +20376000,mag,0.202,-0.08000001,0.42700002 +20376000,baro,487.51593 +20380000,airspeed,-2.8952298,-2.8276482 +20380000,mag,0.202,-0.08000001,0.42700002 +20380000,imu,-0.17201635,0.2164889,-9.877423,-0.003987708,-0.0040393975,-0.00077794 +20380000,baro,487.6474 +20388000,baro,487.50656 +20388000,imu,-0.20562063,0.17079517,-9.853604,-0.003995614,-0.0066961045,-0.004945161 +20388000,mag,0.202,-0.08000001,0.42700002 +20388000,airspeed,4.130215,4.03384 +20396000,imu,-0.08925224,0.22715837,-9.909319,0.00015112766,-0.0078085675,0.00046319177 +20396000,airspeed,1.782327,1.7407174 +20396000,mag,0.202,-0.08000001,0.42700002 +20396000,baro,487.70844 +20400000,mag,0.202,-0.08000001,0.42700002 +20400000,baro,487.70844 +20404000,imu,-0.26439205,0.18711357,-9.95772,-0.00025646747,-0.0098328935,-0.0033487757 +20404000,baro,487.62863 +20404000,mag,0.202,-0.08000001,0.42700002 +20404000,airspeed,2.188087,2.1370144 +20408000,airspeed,-1.1465698,-1.1198156 +20408000,imu,-0.28727248,0.24968138,-9.933299,0.0005592317,-0.007410772,0.0034608424 +20412000,mag,0.202,-0.08000001,0.42700002 +20412000,airspeed,-1.5230113,-1.4874731 +20412000,baro,487.50656 +20412000,imu,-0.2737651,0.22850709,-9.860002,0.0005645582,4.9043723e-05,0.0041396227 +20416000,airspeed,-2.682768,-2.6201663 +20416000,baro,487.52063 +20416000,mag,0.202,-0.08000001,0.42700002 +20416000,imu,-0.2638358,0.1450475,-9.930766,-0.0019396195,-0.0024022479,-0.0026682008 +20420000,mag,0.202,-0.08000001,0.42700002 +20420000,airspeed,-1.6992857,-1.6596333 +20420000,baro,487.52063 +20420000,imu,-0.19220634,0.18013647,-9.995007,-0.008899516,-0.005976015,-0.0011528344 +20424000,imu,-0.24556643,0.21161008,-9.953396,-0.008324029,-0.0068566,-0.0042965724 +20424000,mag,0.2,-0.08300001,0.43100002 +20424000,baro,487.76007 +20424000,airspeed,3.2375572,3.1619635 +20428000,mag,0.2,-0.08300001,0.43100002 +20428000,airspeed,-3.2236948,-3.1484249 +20428000,baro,487.76007 +20428000,imu,-0.24229981,0.17190598,-9.94713,-0.0074220346,-0.007611722,-0.0053923437 +20436000,imu,-0.21433426,0.17446344,-9.923378,-0.0040179486,-0.0027815036,-0.00077021064 +20436000,airspeed,-2.348047,-2.2932353 +20436000,baro,487.66617 +20436000,mag,0.2,-0.08300001,0.43100002 +20440000,mag,0.2,-0.08300001,0.43100002 +20440000,baro,487.59576 +20440000,imu,-0.17203079,0.16526432,-9.90446,-0.004005552,-0.0033240214,-0.0054122633 +20440000,airspeed,-3.637402,-3.5525076 +20444000,airspeed,2.8992717,2.8315837 +20444000,baro,487.71783 +20444000,imu,-0.18483175,0.19827966,-9.8497505,-0.0023935135,-0.0059663993,-0.01186726 +20444000,mag,0.2,-0.08300001,0.43100002 +20448000,imu,-0.24094863,0.18991764,-9.936551,0.0024498098,-0.005438029,-0.0039335364 +20448000,airspeed,-4.4169054,-4.313829 +20448000,mag,0.2,-0.08300001,0.43100002 +20448000,baro,487.5535 +20456000,mag,0.2,-0.08300001,0.43100002 +20456000,airspeed,-2.220469,-2.1686401 +20456000,baro,487.6333 +20456000,imu,-0.16957664,0.11148134,-9.92908,0.0014585364,-0.012287026,-0.0011783068 +20460000,baro,487.71313 +20460000,mag,0.2,-0.08300001,0.43100002 +20460000,imu,-0.16198897,0.12650496,-9.825142,-0.0030785205,-0.00675845,0.00017999702 +20460000,airspeed,-1.9610459,-1.9152633 +20464000,baro,487.7272 +20464000,imu,-0.23754643,0.21918714,-9.909249,-0.001965626,-0.0011091337,0.00024398121 +20464000,airspeed,2.2067022,2.1551826 +20464000,mag,0.2,-0.08300001,0.43100002 +20468000,mag,0.2,-0.08300001,0.43100002 +20468000,baro,487.7272 +20468000,airspeed,3.8021216,3.7133539 +20468000,imu,-0.21595943,0.22506365,-9.950746,0.00021586621,-0.0023497662,-0.00091885845 +20476000,imu,-0.14500864,0.1301066,-9.936181,0.001382168,-0.0024901857,-0.0015783173 +20476000,airspeed,-3.0501266,-2.9789407 +20476000,baro,487.58636 +20476000,mag,0.2,-0.08300001,0.43100002 +20480000,airspeed,1.538398,1.5024952 +20480000,mag,0.20300001,-0.08000001,0.43 +20480000,baro,487.57227 +20484000,mag,0.20300001,-0.08000001,0.43 +20484000,baro,487.60513 +20484000,imu,-0.24684918,0.12445934,-9.89329,0.0001420334,-0.0038278636,-0.002381331 +20488000,airspeed,-1.7278099,-1.687468 +20488000,imu,-0.27780753,0.19772948,-9.899002,0.0030265013,-0.010289018,-0.0012155945 +20492000,imu,-0.25957367,0.1931642,-9.900751,0.0003437891,-0.008946084,0.0024070037 +20492000,mag,0.20300001,-0.08000001,0.43 +20492000,airspeed,-2.29209,-2.2386022 +20492000,baro,487.53473 +20500000,baro,487.5488 +20500000,mag,0.20300001,-0.08000001,0.43 +20500000,airspeed,1.3629186,1.3311129 +20500000,imu,-0.18678883,0.15241067,-9.963569,-0.0011660482,-0.007872557,-0.0021078102 +20504000,airspeed,-2.993318,-2.9234776 +20504000,mag,0.20300001,-0.08000001,0.43 +20504000,baro,487.4737 +20504000,imu,-0.11788754,0.117191195,-9.963275,-0.00039240887,-0.0023135573,-0.00011034305 +20508000,airspeed,1.8788944,1.8350558 +20508000,baro,487.4737 +20508000,mag,0.20300001,-0.08000001,0.43 +20508000,imu,-0.15319133,0.14009157,-9.966535,0.00086972245,-0.0054259067,0.0014571804 +20512000,imu,-0.21669976,0.16144,-9.916602,-0.0010582344,-0.0059604943,-0.002056044 +20512000,airspeed,-1.2354126,-1.2065793 +20512000,mag,0.20300001,-0.08000001,0.43 +20512000,baro,487.59106 +20516000,mag,0.20300001,-0.08000001,0.43 +20516000,airspeed,-1.6146741,-1.5769893 +20516000,imu,-0.23435934,0.13736022,-9.858072,-0.0041474174,-0.0032407679,-0.0019021054 +20516000,baro,487.59106 +20520000,gps,488103.0,85456075.0,473977508.0,0.0,0.0,-0.01 +20524000,imu,-0.2267302,0.26250112,-9.992676,-0.0014714805,-0.009589938,-0.009189536 +20524000,airspeed,-2.312391,-2.258391 +20524000,mag,0.20300001,-0.08000001,0.43 +20524000,baro,487.8211 +20528000,mag,0.20300001,-0.08000001,0.43 +20528000,baro,487.70374 +20528000,imu,-0.17164299,0.24990465,-9.9431925,0.0023545937,-0.00051846076,0.0035163069 +20528000,airspeed,-1.1703757,-1.1430526 +20532000,baro,487.49716 +20532000,mag,0.202,-0.07900001,0.43100002 +20536000,baro,487.69434 +20536000,mag,0.202,-0.07900001,0.43100002 +20536000,imu,-0.14297551,0.1730412,-9.876031,-0.006658298,-0.012773059,-0.0022240675 +20536000,airspeed,5.3568325,5.231777 +20544000,baro,487.8258 +20544000,mag,0.202,-0.07900001,0.43100002 +20544000,imu,-0.23709314,0.20276068,-9.8319,0.00028273874,-0.0035638236,-0.0045914915 +20544000,airspeed,-2.495967,-2.4376793 +20548000,mag,0.202,-0.07900001,0.43100002 +20548000,imu,-0.29758677,0.18002908,-9.941313,-0.0022267834,-0.0008478446,-0.005459985 +20548000,airspeed,-2.7153537,-2.651983 +20548000,baro,487.57227 +20556000,airspeed,1.1470591,1.1202841 +20556000,mag,0.202,-0.07900001,0.43100002 +20556000,baro,487.6474 +20556000,imu,-0.14013901,0.15850331,-9.966582,0.002593759,-0.001735438,-0.0034593483 +20560000,imu,-0.18640916,0.09594602,-9.972994,-7.2613286e-05,-0.0064316737,-0.001289889 +20560000,mag,0.202,-0.07900001,0.43100002 +20560000,airspeed,-1.7450068,-1.7042816 +20560000,baro,487.57697 +20564000,imu,-0.15644032,0.12119288,-9.925416,-0.0037004794,-0.010467387,0.0029455915 +20564000,mag,0.202,-0.07900001,0.43100002 +20564000,airspeed,0.86415714,0.8439893 +20564000,baro,487.57697 +20572000,mag,0.202,-0.07900001,0.43100002 +20572000,airspeed,-3.4561837,-3.375494 +20572000,imu,-0.06370253,0.10182483,-9.911686,0.00042130004,-0.0070250537,-0.0027202833 +20572000,baro,487.71783 +20576000,imu,-0.10920221,0.15822102,-9.917874,-0.0011924178,-0.002013732,0.006798987 +20576000,airspeed,3.0185323,2.9480639 +20576000,mag,0.202,-0.07900001,0.43100002 +20576000,baro,487.69434 +20580000,baro,487.62863 +20580000,mag,0.2,-0.08300001,0.42900002 +20584000,mag,0.2,-0.08300001,0.42900002 +20584000,imu,-0.20087035,0.14724566,-9.918243,-0.0008344311,-0.0058813924,-0.0022067649 +20584000,airspeed,-1.4851435,-1.4504784 +20584000,baro,487.62863 +20592000,imu,-0.13904521,0.25453588,-9.902736,-0.007059455,-0.0067202714,-0.0045020627 +20592000,mag,0.2,-0.08300001,0.42900002 +20592000,airspeed,2.723317,2.6597753 +20592000,baro,487.47836 +20600000,imu,-0.19388822,0.16188094,-9.917694,0.0044110273,-0.0049543264,-3.2753545e-05 +20600000,mag,0.2,-0.08300001,0.42900002 +20600000,airspeed,3.599805,3.5157714 +20600000,baro,487.67557 +20604000,airspeed,-2.0145514,-1.9675213 +20604000,mag,0.2,-0.08300001,0.42900002 +20604000,imu,-0.16000248,0.14302841,-9.888585,0.006563525,-0.00508373,0.00092451373 +20604000,baro,487.69434 +20608000,imu,-0.19303647,0.16798,-9.921216,0.0048893406,-0.006431407,0.004202797 +20608000,airspeed,-2.7489686,-2.6848123 +20608000,mag,0.2,-0.08300001,0.42900002 +20608000,baro,487.57697 +20612000,imu,-0.19202621,0.20185323,-9.911069,0.0020148654,-0.0072563696,0.0025667904 +20612000,airspeed,-3.4796762,-3.3984666 +20612000,baro,487.57697 +20612000,mag,0.2,-0.08300001,0.42900002 +20620000,mag,0.2,-0.08300001,0.42900002 +20620000,airspeed,-2.3948305,-2.3389232 +20620000,imu,-0.13247088,0.18632603,-9.937389,-0.0010604926,-0.010604066,-0.006054125 +20620000,baro,487.69434 +20624000,imu,-0.15477054,0.25422895,-9.9548855,0.0034527304,-0.007583229,0.001908705 +20624000,airspeed,2.380161,2.3246143 +20624000,mag,0.2,-0.08300001,0.42900002 +20624000,baro,487.5629 +20628000,airspeed,-3.3863332,-3.3072836 +20628000,baro,487.67087 +20628000,mag,0.2,-0.08300001,0.42900002 +20628000,imu,-0.15137076,0.24787767,-9.913537,-0.0019717815,-0.008100971,9.1998365e-05 +20636000,mag,0.19700001,-0.08100001,0.42800003 +20636000,baro,487.68967 +20636000,airspeed,2.4230235,2.366459 +20636000,imu,-0.2905673,0.1437949,-9.960509,0.0045029125,-0.0065873046,-0.0031678877 +20640000,imu,-0.23402016,0.14526868,-9.997609,-0.0035597333,-0.0051233894,-1.3133275e-05 +20640000,airspeed,-2.532521,-2.473443 +20640000,baro,487.39856 +20640000,mag,0.19700001,-0.08100001,0.42800003 +20644000,airspeed,-1.0113742,-0.9877621 +20644000,mag,0.19700001,-0.08100001,0.42800003 +20644000,baro,487.7225 +20644000,imu,-0.21013977,0.14952007,-9.945672,-0.0038229465,-0.006774085,-0.0023897318 +20648000,imu,-0.17663437,0.21687616,-9.946197,0.0009583994,-0.008545067,-0.007896753 +20648000,mag,0.19700001,-0.08100001,0.42800003 +20648000,airspeed,1.4693538,1.4350556 +20648000,baro,487.6474 +20656000,airspeed,-2.4091375,-2.3528836 +20656000,mag,0.19700001,-0.08100001,0.42800003 +20656000,imu,-0.23866268,0.15631372,-9.932853,0.0022600414,-0.0027203304,0.0044993632 +20656000,baro,487.78354 +20660000,imu,-0.26541817,0.114239365,-9.897667,-0.0006347025,-0.006613634,0.0033356987 +20660000,mag,0.19700001,-0.08100001,0.42800003 +20660000,airspeed,3.033832,2.9630072 +20660000,baro,487.69434 +20668000,airspeed,4.288691,4.188561 +20668000,baro,487.7366 +20668000,mag,0.19700001,-0.08100001,0.42800003 +20668000,imu,-0.21318127,0.13962084,-9.921732,0.0017098796,-0.00885194,-0.005969823 +20672000,airspeed,-3.7932434,-3.7046988 +20672000,mag,0.19700001,-0.08100001,0.42800003 +20672000,baro,487.6521 +20672000,imu,-0.2233747,0.19745739,-9.897154,-0.004489162,-0.0013255209,-0.0042323447 +20676000,imu,-0.24274366,0.2602296,-9.842841,-0.0016911549,-0.004056713,-0.0007854764 +20676000,airspeed,4.114682,4.0186343 +20676000,baro,487.6521 +20676000,mag,0.19700001,-0.08100001,0.42800003 +20680000,airspeed,-3.37865,-3.2998123 +20680000,mag,0.19700001,-0.08100001,0.42800003 +20680000,baro,487.50656 +20680000,imu,-0.23200025,0.22159763,-9.853646,0.0008760368,-0.0030657486,0.0016068115 +20684000,airspeed,-2.551321,-2.4917572 +20684000,mag,0.201,-0.07800001,0.42700002 +20684000,baro,487.71783 +20684000,imu,-0.16100752,0.17564979,-9.915713,0.00059059233,0.0010918627,-0.0006809771 +20688000,imu,-0.1267259,0.16323593,-9.933915,0.004809644,-0.0042112777,-0.003418103 +20688000,baro,487.6521 +20688000,airspeed,-2.291879,-2.2383802 +20688000,mag,0.201,-0.07800001,0.42700002 +20692000,airspeed,-0.29866725,-0.29169554 +20692000,imu,-0.15589108,0.17117189,-9.986245,-0.0026874258,-0.0071182637,-0.005392365 +20692000,baro,487.6521 +20692000,mag,0.201,-0.07800001,0.42700002 +20696000,mag,0.201,-0.07800001,0.42700002 +20696000,airspeed,-1.6075041,-1.5699826 +20696000,baro,487.6333 +20696000,imu,-0.22508104,0.18305741,-9.973469,-0.0031808533,-0.008135775,-0.0070547406 +20700000,airspeed,-4.1145096,-4.018471 +20700000,imu,-0.20874675,0.18904549,-9.971855,0.0030642229,-0.008793658,-0.0041546044 +20700000,baro,487.6333 +20700000,mag,0.201,-0.07800001,0.42700002 +20704000,imu,-0.17006296,0.20538072,-9.987395,0.0032805274,-0.0065954668,-0.00055238797 +20704000,baro,487.6333 +20704000,mag,0.201,-0.07800001,0.42700002 +20708000,imu,-0.19975357,0.19867982,-9.913569,0.0020676472,-0.0058132242,-0.0089868205 +20708000,baro,487.6333 +20708000,mag,0.201,-0.07800001,0.42700002 +20708000,airspeed,-1.6083122,-1.5707717 +20712000,baro,487.6474 +20712000,mag,0.201,-0.07800001,0.42700002 +20716000,mag,0.201,-0.07800001,0.42700002 +20716000,airspeed,1.8323675,1.7896032 +20716000,imu,-0.26213005,0.18358912,-9.897575,-0.0012184582,-0.0037950268,0.003267874 +20716000,baro,487.57697 +20720000,airspeed,-1.2721034,-1.2424091 +20720000,mag,0.201,-0.07800001,0.42700002 +20720000,gps,488099.0,85456074.0,473977508.0,0.0,0.0,0.0 +20720000,imu,-0.23718478,0.19713688,-9.815005,-0.0002145222,-0.005352829,-0.00026362162 +20720000,baro,487.6568 +20724000,baro,487.6568 +20724000,mag,0.201,-0.07800001,0.42700002 +20724000,airspeed,-2.1590343,-2.1086366 +20724000,imu,-0.2680292,0.15210173,-9.807839,0.0044781873,-0.011601883,0.0037281907 +20732000,mag,0.201,-0.07800001,0.42700002 +20732000,baro,487.76947 +20732000,airspeed,-2.1488512,-2.0986767 +20732000,imu,-0.21749422,0.22157167,-9.928974,-0.0036361455,-0.006519408,0.0010292834 +20736000,mag,0.19900002,-0.08200001,0.42800003 +20736000,airspeed,2.4469151,2.3897972 +20736000,baro,487.6568 +20736000,imu,-0.16819076,0.09259282,-9.923296,-0.0023814877,-0.0030229322,-0.006614455 +20740000,imu,-0.2228157,0.1418748,-9.925545,-0.0016260231,-0.0009887762,-0.0020183588 +20740000,baro,487.71783 +20740000,mag,0.19900002,-0.08200001,0.42800003 +20740000,airspeed,-1.0457681,-1.0213531 +20744000,imu,-0.24767138,0.17874406,-9.898745,-0.0011541988,-0.0070013246,0.0014510566 +20744000,baro,487.62393 +20744000,mag,0.19900002,-0.08200001,0.42800003 +20744000,airspeed,-4.355189,-4.2535357 +20748000,imu,-0.18863223,0.14813429,-10.000476,-0.0016222108,-0.008681283,0.00535597 +20748000,airspeed,3.435527,3.3553395 +20748000,baro,487.62393 +20748000,mag,0.19900002,-0.08200001,0.42800003 +20752000,mag,0.19900002,-0.08200001,0.42800003 +20752000,imu,-0.21266168,0.22512636,-10.04312,-0.0010841964,-0.0029659867,0.0035295323 +20752000,airspeed,-1.8979934,-1.8536843 +20752000,baro,487.69904 +20756000,imu,-0.2349823,0.25688764,-10.079953,0.005220966,-0.0047197407,-0.006342874 +20756000,baro,487.638 +20756000,airspeed,-1.5352743,-1.4994382 +20756000,mag,0.19900002,-0.08200001,0.42800003 +20764000,baro,487.48306 +20764000,mag,0.19900002,-0.08200001,0.42800003 +20764000,imu,-0.15436156,0.30193642,-10.19671,0.017731305,-0.004591809,-0.0022459198 +20764000,airspeed,-2.0889132,-2.040173 +20768000,imu,-0.16905098,0.3140213,-10.306983,0.020762842,-0.005837149,0.0007201732 +20768000,mag,0.19900002,-0.08200001,0.42800003 +20768000,airspeed,-3.7454016,-3.6580057 +20768000,baro,487.50656 +20772000,mag,0.19900002,-0.08200001,0.42800003 +20772000,baro,487.50656 +20772000,airspeed,-2.0283008,-1.9809719 +20772000,imu,-0.110497214,0.28055844,-10.373425,0.02563095,-0.0087515535,0.0018184003 +20776000,baro,487.58636 +20776000,imu,-0.12309698,0.26849866,-10.363337,0.03403838,-0.0035859558,0.002187873 +20776000,mag,0.19900002,-0.08200001,0.42800003 +20776000,airspeed,3.9844866,3.8914945 +20780000,imu,-0.18548396,0.26114553,-10.437581,0.041074965,-0.0017088435,-5.672815e-05 +20780000,airspeed,-2.3672657,-2.3120053 +20784000,airspeed,-2.5308714,-2.4717972 +20784000,mag,0.19900002,-0.08200001,0.42800003 +20784000,baro,487.6333 +20784000,imu,-0.2550719,0.2106427,-10.519973,0.050541013,-0.0012257535,-0.0034033572 +20788000,mag,0.20500001,-0.08100001,0.43 +20788000,imu,-0.25303733,0.26702434,-10.493167,0.058383945,-0.0036436843,-0.0017090512 +20788000,airspeed,1.6441506,1.6057684 +20788000,baro,487.68967 +20792000,mag,0.20500001,-0.08100001,0.43 +20792000,imu,-0.17673618,0.38912374,-10.576739,0.07236016,-0.013718557,-0.0015156629 +20792000,airspeed,-1.4386798,-1.4050975 +20792000,baro,487.6521 +20796000,imu,-0.18700066,0.3502279,-10.702166,0.09776636,-0.0124094905,0.0016510859 +20796000,baro,487.60513 +20796000,mag,0.20500001,-0.08000001,0.43 +20796000,airspeed,1.4923711,1.4575394 +20800000,baro,487.7225 +20800000,airspeed,2.1314652,2.0817025 +20800000,mag,0.20500001,-0.08000001,0.43 +20800000,imu,-0.28928462,0.31433463,-10.7425375,0.10858348,-0.002739718,0.001992389 +20804000,imu,-0.26498815,0.37412596,-10.807443,0.120243795,0.0013345679,0.0004898714 +20804000,mag,0.20500001,-0.08000001,0.43 +20804000,baro,487.66617 +20804000,airspeed,-0.6075384,-0.59335643 +20808000,baro,487.66617 +20808000,mag,0.20500001,-0.08000001,0.43 +20808000,airspeed,-2.6270752,-2.5657504 +20808000,imu,-0.21596867,0.37961903,-10.811183,0.1420205,-0.0049845725,0.0043449085 +20812000,baro,487.5535 +20812000,airspeed,2.063354,2.015202 +20812000,imu,-0.28781283,0.28476396,-10.773531,0.15325361,-0.010585703,-0.0015362417 +20812000,mag,0.20500001,-0.07900001,0.43 +20816000,mag,0.20500001,-0.07900001,0.43100002 +20816000,baro,487.60513 +20816000,imu,-0.28649858,0.22541857,-10.924326,0.16228345,-0.0048983432,-0.0075053116 +20816000,airspeed,-1.773048,-1.7316655 +20820000,mag,0.20500001,-0.07900001,0.43100002 +20820000,baro,487.5676 +20820000,airspeed,3.587062,3.5033488 +20820000,imu,-0.23391576,0.27097768,-10.982596,0.17724489,0.001623149,-0.0074270414 +20824000,mag,0.20500001,-0.07800001,0.43100002 +20824000,baro,487.69434 +20828000,imu,-0.22181675,0.2356482,-11.084848,0.21078289,0.0074325707,0.00023659032 +20828000,airspeed,2.114618,2.0652468 +20828000,baro,487.7366 +20828000,mag,0.20500001,-0.07800001,0.43100002 +20836000,mag,0.20500001,-0.077000014,0.43100002 +20836000,imu,-0.20552571,0.2147784,-10.901017,0.22890161,0.026248494,-0.008780621 +20836000,airspeed,-3.367609,-3.2890358 +20836000,baro,487.4737 +20840000,baro,487.4737 +20840000,mag,0.20500001,-0.077000014,0.43100002 +20840000,imu,-0.16937268,0.20854183,-11.044742,0.23454267,0.031649496,-0.009400846 +20840000,airspeed,-3.000291,-2.9302883 +20848000,mag,0.201,-0.07800001,0.43300003 +20848000,imu,-0.10909422,0.20204943,-11.238998,0.25421312,0.0551485,-0.008757939 +20848000,airspeed,2.207233,2.1557133 +20848000,baro,487.6333 +20852000,imu,-0.22038619,0.15217432,-11.300582,0.24477835,0.061330445,0.0026297478 +20852000,airspeed,1.3020782,1.2717019 +20852000,mag,0.201,-0.07800001,0.43300003 +20852000,baro,487.42203 +20856000,mag,0.2,-0.077000014,0.43300003 +20856000,airspeed,2.163798,2.1133187 +20856000,imu,-0.23821649,0.17719728,-11.19404,0.24457395,0.07440149,0.001711655 +20856000,baro,487.42203 +20864000,baro,487.60983 +20864000,airspeed,-0.86670107,-0.8464724 +20864000,mag,0.2,-0.07600001,0.43300003 +20864000,imu,-0.16449615,0.10739726,-11.403445,0.24106269,0.08879742,-0.0031511306 +20868000,airspeed,-2.570317,-2.5103292 +20868000,baro,487.58636 +20868000,mag,0.2,-0.07600001,0.43300003 +20868000,imu,-0.21474679,0.11342867,-11.423185,0.23372819,0.08678705,-0.005458263 +20872000,airspeed,1.6541736,1.6155554 +20872000,imu,-0.15095355,0.13753277,-11.501295,0.2248121,0.09391783,-0.0017578937 +20872000,baro,487.70844 +20872000,mag,0.2,-0.07600001,0.43300003 +20876000,baro,487.70844 +20876000,mag,0.2,-0.07500001,0.43400002 +20880000,airspeed,-3.1031482,-3.0307198 +20880000,imu,-0.16682352,0.19858733,-11.381236,0.19726157,0.088325106,-0.0024480093 +20884000,mag,0.19900002,-0.07400001,0.43400002 +20884000,airspeed,-3.0660796,-2.9945164 +20884000,imu,-0.15507057,0.15207207,-11.473173,0.18955351,0.09083974,0.0026140208 +20884000,baro,487.61453 +20888000,imu,-0.17023902,0.09074545,-11.529582,0.18607745,0.09752115,0.0004056395 +20888000,mag,0.19900002,-0.07400001,0.43400002 +20888000,airspeed,-0.454255,-0.4436494 +20888000,baro,487.7319 +20892000,imu,-0.19401406,0.09185405,-11.473728,0.17683177,0.10012856,-0.007091781 +20892000,mag,0.19900002,-0.07000001,0.43100002 +20892000,airspeed,-2.4404373,-2.383465 +20892000,baro,487.69434 +20900000,imu,-0.1864726,0.13841297,-11.520172,0.14994016,0.0811295,-0.004296456 +20900000,baro,487.38916 +20900000,airspeed,2.6531157,2.591226 +20900000,mag,0.19900002,-0.07000001,0.43100002 +20904000,mag,0.19900002,-0.07000001,0.43100002 +20904000,airspeed,1.7816757,1.7400779 +20904000,imu,-0.25120753,0.18728562,-11.476557,0.14302227,0.0837118,-0.004824702 +20904000,baro,487.7413 +20908000,airspeed,3.5762718,3.4927895 +20908000,mag,0.19900002,-0.06900001,0.43100002 +20908000,baro,487.67087 +20908000,imu,-0.19584525,0.12460191,-11.429515,0.13338485,0.08386698,-0.0055989726 +20912000,mag,0.19900002,-0.06900001,0.43100002 +20912000,baro,487.76947 +20912000,imu,-0.16454498,0.03272629,-11.452514,0.12113742,0.07117474,-0.0012995158 +20912000,airspeed,-3.6072488,-3.523022 +20916000,imu,-0.13790683,0.065977596,-11.490899,0.11329353,0.062054925,-0.0033116105 +20916000,mag,0.19900002,-0.06900001,0.43100002 +20916000,baro,487.67087 +20916000,airspeed,-2.792576,-2.7273874 +20924000,baro,487.62393 +20924000,airspeed,1.457096,1.4230865 +20924000,imu,-0.15702774,0.1756025,-11.490726,0.08762925,0.062870316,-0.011271397 +20924000,mag,0.19800001,-0.06900001,0.432 +20928000,mag,0.19800001,-0.06800001,0.432 +20928000,airspeed,-4.149327,-4.052464 +20928000,baro,487.68027 +20928000,imu,-0.07974035,0.19046685,-11.42739,0.08139471,0.06241727,-0.0088650985 +20932000,mag,0.19800001,-0.06800001,0.432 +20936000,imu,-0.16141593,0.128599,-11.420155,0.07347903,0.049241796,0.0017500552 +20936000,airspeed,1.385348,1.353013 +20936000,baro,487.62393 +20936000,mag,0.19800001,-0.06800001,0.432 +20940000,mag,0.19800001,-0.06800001,0.432 +20940000,airspeed,-1.8917894,-1.8476363 +20940000,baro,487.60043 +20940000,imu,-0.15974112,0.22225724,-11.435718,0.06847538,0.044845022,0.0032074412 +20948000,airspeed,-2.7497773,-2.6856158 +20948000,imu,-0.20759025,0.14564392,-11.319569,0.05493366,0.03681819,0.0058915024 +20948000,baro,487.49716 +20948000,mag,0.19700001,-0.07100001,0.43300003 +20952000,airspeed,-2.2928207,-2.2393215 +20952000,imu,-0.17250036,0.110940166,-11.316906,0.049920406,0.033566944,-0.00054250524 +20952000,mag,0.19700001,-0.07100001,0.43300003 +20952000,baro,487.50186 +20956000,imu,-0.1911211,0.13227518,-11.243849,0.04524488,0.026643341,-0.0012050099 +20956000,mag,0.19600001,-0.07100001,0.43300003 +20956000,baro,487.60983 +20956000,airspeed,-1.1773738,-1.1498941 +20960000,imu,-0.15248375,0.08508498,-11.286121,0.04068543,0.02476492,0.006197055 +20960000,airspeed,-2.9711835,-2.9018567 +20960000,baro,487.49246 +20960000,mag,0.19600001,-0.07100001,0.43300003 +20964000,airspeed,-2.980818,-2.9112248 +20964000,mag,0.19600001,-0.07100001,0.43300003 +20964000,imu,-0.08901167,0.13623324,-11.238754,0.03527873,0.021346157,0.010199621 +20964000,baro,487.7319 +20968000,baro,487.6333 +20968000,imu,-0.13436113,0.19333431,-11.146776,0.027501784,0.021021826,0.006107752 +20968000,airspeed,-1.7717289,-1.7303749 +20968000,mag,0.19600001,-0.07100001,0.43300003 +20972000,mag,0.19600001,-0.07100001,0.43300003 +20972000,baro,487.71313 +20972000,imu,-0.16107102,0.17664236,-11.217917,0.023229407,0.02531636,0.004953061 +20972000,airspeed,2.0965497,2.047604 +20976000,mag,0.19600001,-0.07100001,0.43300003 +20976000,baro,487.71313 +20976000,airspeed,3.040623,2.9696372 +20976000,imu,-0.24009769,0.12082096,-11.23779,0.022546591,0.025012212,0.0051721814 +20980000,baro,487.71783 +20980000,mag,0.19600001,-0.07100001,0.43300003 +20980000,imu,-0.25531337,0.08698257,-11.160078,0.024772806,0.012195468,0.008006238 +20980000,airspeed,3.3238208,3.2462225 +20984000,mag,0.19600001,-0.07100001,0.43300003 +20984000,airspeed,3.0176618,2.947211 +20984000,baro,487.71783 +20984000,imu,-0.16029634,0.08988034,-11.175865,0.023390472,0.008009179,0.011631132 +20988000,mag,0.19600001,-0.07100001,0.43300003 +20988000,baro,487.61453 +20988000,imu,-0.14186291,0.12205375,-11.190375,0.016263282,0.014859324,0.009391179 +20988000,airspeed,-1.4118088,-1.3788569 +20996000,baro,487.61453 +20996000,airspeed,-1.3590654,-1.327345 +20996000,mag,0.19600001,-0.07100001,0.43300003 +20996000,imu,-0.090358004,0.08334645,-11.1294155,-0.00078996486,0.011228908,0.010120964 +21000000,mag,0.194,-0.07000001,0.43 +21000000,baro,487.53003 +21000000,airspeed,3.694822,3.6086025 +21000000,imu,-0.07925613,0.04907182,-11.045943,-0.009172262,0.004230041,0.011149942 +21004000,mag,0.194,-0.07000001,0.43 +21004000,airspeed,2.3737183,2.318327 +21004000,imu,-0.103859544,0.05420912,-11.063157,-0.010389418,-0.00082132604,0.007852931 +21004000,baro,487.53003 +21008000,airspeed,3.2256718,3.1503718 +21008000,mag,0.194,-0.07000001,0.43 +21008000,imu,-0.13728127,0.12152528,-11.077387,-0.006264085,5.832184e-05,0.0055107446 +21008000,baro,487.68027 +21012000,imu,-0.13335961,0.14422356,-11.035335,-0.008265891,0.0014716375,0.005619463 +21012000,mag,0.194,-0.07000001,0.43 +21012000,airspeed,-1.1228971,-1.0966775 +21012000,baro,487.78354 +21016000,baro,487.60983 +21016000,imu,-0.18339558,0.058604624,-11.10668,-0.0177108,-0.00062294473,0.0071178484 +21016000,airspeed,-1.3754014,-1.3433001 +21016000,mag,0.194,-0.07000001,0.43 +21020000,gps,488103.0,85456074.0,473977508.0,0.0,0.0,-0.02 +21024000,baro,487.60983 +21024000,airspeed,-3.0052893,-2.9351475 +21024000,imu,-0.25631553,0.09141651,-11.0601225,-0.021986375,-0.0048666075,0.004996865 +21024000,mag,0.194,-0.07000001,0.43 +21032000,imu,-0.15668525,0.1214482,-11.048345,-0.02767043,-0.009103094,0.008732207 +21032000,baro,487.5535 +21032000,airspeed,-0.7454101,-0.728015 +21032000,mag,0.194,-0.07000001,0.43 +21036000,mag,0.194,-0.07000001,0.43 +21036000,baro,487.71313 +21036000,airspeed,1.0366154,1.0124149 +21036000,imu,-0.14680593,0.1724847,-11.034227,-0.029431546,-0.007797218,0.007063612 +21040000,mag,0.194,-0.07000001,0.43 +21040000,imu,-0.19076315,0.13276903,-11.055045,-0.03308896,-0.008792813,0.009156176 +21040000,baro,487.6521 +21040000,airspeed,-2.3979142,-2.341942 +21044000,mag,0.194,-0.07000001,0.43 +21044000,airspeed,-3.853081,-3.7631373 +21044000,imu,-0.16431688,0.10289261,-11.070153,-0.041352045,-0.009961309,0.009262417 +21044000,baro,487.67087 +21048000,imu,-0.1001657,0.093749456,-11.048423,-0.050046317,-0.008833302,0.0065181577 +21048000,airspeed,0.7772359,0.7590947 +21052000,airspeed,-4.9693604,-4.8534083 +21052000,mag,0.19800001,-0.06800001,0.432 +21052000,baro,487.50656 +21052000,imu,-0.09122344,0.07150053,-11.148553,-0.051369727,-0.0054689893,0.004465237 +21056000,airspeed,-4.5743437,-4.467609 +21056000,mag,0.19800001,-0.06800001,0.432 +21056000,baro,487.50656 +21056000,imu,-0.14307712,0.0053710574,-11.115128,-0.04953634,-0.0086173685,0.009593304 +21060000,baro,487.7413 +21060000,imu,-0.1879354,-0.025337985,-11.081638,-0.052092176,-0.014872709,0.010995758 +21060000,airspeed,2.230698,2.1786172 +21060000,mag,0.19800001,-0.06800001,0.432 +21064000,baro,487.77417 +21064000,airspeed,2.1898623,2.1387312 +21064000,mag,0.19800001,-0.06800001,0.432 +21064000,imu,-0.21218221,0.058019646,-11.174913,-0.05641408,-0.020253489,0.009492057 +21068000,baro,487.42673 +21068000,airspeed,-2.9884527,-2.9187355 +21068000,mag,0.19800001,-0.06800001,0.432 +21068000,imu,-0.16679305,0.07472787,-11.195708,-0.062122047,-0.018068012,0.011465572 +21072000,baro,487.78354 +21072000,mag,0.19800001,-0.06800001,0.432 +21072000,imu,-0.16922343,0.09090075,-11.199359,-0.059011433,-0.018786332,0.008001147 +21072000,airspeed,-2.181095,-2.130167 +21076000,airspeed,-2.3258226,-2.2715254 +21076000,baro,487.70844 +21076000,mag,0.19800001,-0.06800001,0.432 +21076000,imu,-0.195505,0.123228475,-11.180463,-0.059343558,-0.016819585,0.0014802275 +21080000,baro,487.746 +21080000,airspeed,-1.0834827,-1.0581863 +21080000,mag,0.19800001,-0.06800001,0.432 +21080000,imu,-0.12899682,0.09984064,-11.202985,-0.06492268,-0.016128836,-0.0026719098 +21088000,baro,487.58167 +21088000,airspeed,2.4750667,2.4173043 +21088000,mag,0.19800001,-0.06800001,0.432 +21088000,imu,-0.15516436,0.107957594,-11.180099,-0.05779482,-0.023937609,0.011222121 +21096000,airspeed,2.5028594,2.4444282 +21096000,mag,0.19800001,-0.06900001,0.432 +21096000,imu,-0.18813236,0.080205806,-11.201585,-0.06569714,-0.022565015,0.012423591 +21096000,baro,487.71783 +21100000,mag,0.19700001,-0.07100001,0.43300003 +21100000,airspeed,2.5447614,2.4853494 +21100000,baro,487.7366 +21100000,imu,-0.11836271,0.035985027,-11.216741,-0.06340149,-0.016195377,0.011422233 +21104000,airspeed,-1.9186218,-1.8738312 +21104000,mag,0.19700001,-0.07100001,0.43300003 +21104000,baro,487.70844 +21104000,imu,-0.15931289,0.036794547,-11.173646,-0.060997758,-0.022371922,0.007899746 +21108000,airspeed,3.9535396,3.8612366 +21108000,imu,-0.21924068,0.09388227,-11.132085,-0.063435644,-0.027143337,0.0053136647 +21112000,baro,487.7413 +21112000,airspeed,0.8776097,0.8571202 +21112000,imu,-0.15731539,0.06871045,-11.208927,-0.06345694,-0.033268593,0.010048659 +21112000,mag,0.19700001,-0.07100001,0.43300003 +21116000,mag,0.19700001,-0.07100001,0.43300003 +21116000,airspeed,-1.6346647,-1.5965166 +21116000,imu,-0.11866518,0.022418767,-11.192649,-0.060541425,-0.027713394,0.008729654 +21116000,baro,487.5676 +21124000,airspeed,2.3136537,2.259653 +21124000,mag,0.19700001,-0.07100001,0.43300003 +21124000,imu,-0.16454874,0.031600617,-11.299835,-0.050083008,-0.027833454,0.010375213 +21124000,baro,487.62393 +21132000,baro,487.59576 +21132000,airspeed,-1.7656021,-1.724396 +21132000,imu,-0.15466009,0.005093764,-11.1750555,-0.057742223,-0.036738265,0.016529853 +21132000,mag,0.19700001,-0.07200001,0.43300003 +21136000,baro,487.79764 +21136000,airspeed,2.1122851,2.0629632 +21136000,imu,-0.14810911,0.027263459,-11.204686,-0.05625414,-0.026529722,0.011121579 +21136000,mag,0.19700001,-0.07200001,0.43300003 +21140000,imu,-0.06625025,0.036158297,-11.266358,-0.06087506,-0.01813081,0.004618344 +21140000,airspeed,1.752023,1.7111158 +21140000,mag,0.19700001,-0.07200001,0.43300003 +21140000,baro,487.76947 +21148000,imu,-0.13805234,0.095857814,-11.382782,-0.062192783,-0.021937191,0.0064370963 +21148000,mag,0.19700001,-0.07200001,0.43300003 +21148000,baro,487.66617 +21148000,airspeed,2.773429,2.7086904 +21152000,airspeed,2.054397,2.0064335 +21152000,baro,487.7413 +21152000,imu,-0.147569,0.0850988,-11.327165,-0.05964588,-0.027678864,0.0004576452 +21152000,mag,0.19700001,-0.07200001,0.43300003 +21156000,airspeed,2.347636,2.2928317 +21156000,imu,-0.20375736,0.066562,-11.211351,-0.054798443,-0.028874964,-0.0048496965 +21156000,baro,487.69904 +21156000,mag,0.19900002,-0.07200001,0.43100002 +21160000,airspeed,-2.0679688,-2.0196867 +21160000,baro,487.75537 +21160000,mag,0.19900002,-0.07200001,0.43100002 +21160000,imu,-0.18150695,0.10253875,-11.227236,-0.06067175,-0.025304591,0.002955928 +21164000,mag,0.19900002,-0.073000014,0.43100002 +21164000,baro,487.75537 +21164000,imu,-0.15119576,0.11875721,-11.291384,-0.067350805,-0.024988757,0.0020762563 +21164000,airspeed,1.0669401,1.0420296 +21168000,baro,487.69434 +21168000,mag,0.19900002,-0.073000014,0.43100002 +21168000,airspeed,-4.208696,-4.1104493 +21172000,mag,0.19900002,-0.073000014,0.43100002 +21172000,baro,487.79294 +21172000,airspeed,-2.9739754,-2.9045343 +21172000,imu,-0.065756544,0.1562471,-11.257549,-0.06431535,-0.027325857,0.006078443 +21176000,mag,0.19900002,-0.073000014,0.43100002 +21176000,airspeed,-2.8879538,-2.8205423 +21176000,baro,487.66617 +21176000,imu,-0.11668784,0.0864059,-11.283861,-0.068906374,-0.029080747,0.0028433695 +21180000,baro,487.71313 +21180000,mag,0.19900002,-0.073000014,0.43100002 +21184000,baro,487.60513 +21184000,airspeed,1.1460876,1.1193397 +21184000,imu,-0.1740349,0.04283298,-11.253329,-0.06347926,-0.023997582,0.008477992 +21184000,mag,0.19900002,-0.073000014,0.43100002 +21188000,imu,-0.16972075,0.029997343,-11.342926,-0.061155625,-0.029504836,0.0062468224 +21188000,mag,0.19900002,-0.073000014,0.43100002 +21188000,airspeed,1.4617983,1.4276869 +21188000,baro,487.5488 +21192000,baro,487.66617 +21192000,mag,0.19900002,-0.073000014,0.43100002 +21192000,imu,-0.12958956,0.09402206,-11.313427,-0.058294784,-0.025487948,-0.000422724 +21192000,airspeed,-3.6837432,-3.5977576 +21200000,imu,-0.12056516,0.05980138,-11.347639,-0.055371296,-0.02758651,0.0018832813 +21200000,baro,487.6427 +21200000,mag,0.19900002,-0.073000014,0.43100002 +21200000,airspeed,2.2957673,2.2421825 +21204000,baro,487.90094 +21204000,mag,0.19500001,-0.07400001,0.43300003 +21204000,imu,-0.07216337,0.01028251,-11.238307,-0.053876016,-0.030709755,0.0008298907 +21204000,airspeed,-1.5106266,-1.4753447 +21212000,baro,487.7319 +21212000,imu,-0.081431665,0.049307846,-11.251754,-0.055145513,-0.024891455,0.0034671058 +21212000,mag,0.19500001,-0.07400001,0.43300003 +21212000,airspeed,-0.9796098,-0.95674014 +21216000,imu,-0.093133435,0.0966542,-11.157282,-0.052004796,-0.026243549,0.0017881978 +21216000,baro,487.58167 +21216000,mag,0.19500001,-0.07400001,0.43300003 +21216000,airspeed,2.6471536,2.585377 +21220000,imu,-0.09605035,0.08122574,-11.188636,-0.050166808,-0.017414406,0.0042143795 +21220000,gps,488134.0,85456075.0,473977508.0,-0.02,0.04,-0.34 +21220000,baro,487.58167 +21220000,airspeed,2.2758527,2.2227411 +21220000,mag,0.19500001,-0.07400001,0.43300003 +21224000,mag,0.19500001,-0.07500001,0.43300003 +21224000,airspeed,3.7957897,3.7071714 +21224000,baro,487.7413 +21224000,imu,-0.08431099,-0.007964095,-11.282805,-0.048131403,-0.024521917,0.0069758324 +21228000,airspeed,-2.4432378,-2.3862085 +21228000,baro,487.66147 +21228000,imu,-0.13550949,-0.023681272,-11.234059,-0.041565366,-0.030285686,0.0070064743 +21228000,mag,0.19500001,-0.07500001,0.43300003 +21236000,imu,-0.054021858,0.08272384,-11.259994,-0.054206636,-0.032000374,0.008489603 +21236000,airspeed,4.896023,4.781675 +21236000,baro,487.89624 +21236000,mag,0.19500001,-0.07500001,0.43300003 +21240000,mag,0.19500001,-0.07500001,0.43300003 +21240000,imu,-0.13781643,0.08817794,-11.165045,-0.048966993,-0.036408648,0.0055087856 +21240000,baro,487.71783 +21240000,airspeed,0.4744014,0.46332657 +21244000,imu,-0.19814986,0.07774988,-11.1714525,-0.045453787,-0.037421633,0.0036164334 +21248000,imu,-0.21313061,0.08502572,-11.188572,-0.046416596,-0.029347861,0.0051376536 +21248000,baro,487.71783 +21248000,airspeed,1.7437195,1.7030127 +21248000,mag,0.19600001,-0.07500001,0.43300003 +21252000,baro,487.71783 +21252000,airspeed,2.9297369,2.861343 +21252000,imu,-0.19557281,0.04085581,-11.21395,-0.042991634,-0.019480992,-0.00015339331 +21252000,mag,0.19600001,-0.07500001,0.43300003 +21256000,baro,487.85397 +21256000,airspeed,2.8273408,2.761315 +21256000,mag,0.19800001,-0.07900001,0.43100002 +21256000,imu,-0.1802275,0.03663945,-11.206468,-0.045145188,-0.023877688,-0.0010630253 +21260000,baro,487.85397 +21260000,mag,0.19800001,-0.07900001,0.43100002 +21264000,imu,-0.09067574,0.0260903,-11.245055,-0.049648266,-0.018813897,0.003310957 +21264000,airspeed,-4.4617333,-4.3576107 +21268000,airspeed,-2.7063189,-2.6431367 +21268000,imu,-0.06265846,0.09320129,-11.214876,-0.05167234,-0.012612328,0.00055339106 +21268000,baro,487.7413 +21268000,mag,0.19800001,-0.07900001,0.43100002 +21272000,imu,-0.07023357,0.092074595,-11.189457,-0.050261334,-0.01298808,0.0045292513 +21272000,baro,487.95728 +21272000,mag,0.19800001,-0.07900001,0.43100002 +21272000,airspeed,4.012753,3.9190211 +21276000,baro,487.95728 +21276000,imu,-0.044430736,0.049894433,-11.150107,-0.05045486,-0.016139746,0.004565438 +21276000,mag,0.19800001,-0.07900001,0.43100002 +21276000,airspeed,-4.4334517,-4.3298926 +21280000,imu,-0.08795493,0.05868501,-11.14607,-0.047671344,-0.015623051,0.0005317317 +21280000,baro,487.86337 +21280000,mag,0.19800001,-0.07900001,0.43100002 +21280000,airspeed,3.2371871,3.1615891 +21284000,imu,-0.16136259,0.06883711,-11.240305,-0.03979827,-0.014355365,-0.0026121805 +21284000,baro,487.88214 +21284000,airspeed,0.563356,0.55019933 +21284000,mag,0.19800001,-0.07900001,0.43100002 +21292000,mag,0.19800001,-0.07900001,0.43100002 +21292000,baro,487.8211 +21292000,imu,-0.16107546,0.0003408043,-11.184543,-0.044690598,-0.01778116,0.004286015 +21292000,airspeed,1.2217722,1.193243 +21296000,mag,0.19800001,-0.08000001,0.43100002 +21296000,imu,-0.12631775,0.03975432,-11.201283,-0.048491586,-0.020288512,0.0078082434 +21296000,baro,487.60983 +21296000,airspeed,2.5190232,2.4602334 +21300000,imu,-0.113009945,0.08454699,-11.201679,-0.043055527,-0.020194603,0.0016867797 +21300000,mag,0.19800001,-0.08000001,0.43100002 +21300000,baro,487.7507 +21300000,airspeed,-3.3689895,-3.2903361 +21308000,airspeed,2.033094,1.985614 +21308000,imu,-0.1520018,-0.038990103,-11.201349,-0.033750206,-0.012290408,0.005135835 +21308000,mag,0.19800001,-0.08000001,0.43100002 +21308000,baro,487.87744 +21312000,imu,-0.13154511,-0.018416783,-11.255693,-0.035622388,-0.009271767,0.004478958 +21312000,airspeed,1.7772999,1.7357978 +21316000,imu,-0.11578838,0.08498636,-11.2218275,-0.03400276,-0.012424065,0.0044262945 +21316000,baro,487.7319 +21316000,mag,0.19800001,-0.07600001,0.42700002 +21316000,airspeed,1.712457,1.6724794 +21320000,mag,0.19800001,-0.07600001,0.42700002 +21320000,landed,0.0 +21320000,baro,487.7319 +21324000,airspeed,1.3996698,1.3669873 +21324000,imu,-0.15379035,0.074648745,-11.196467,-0.03393935,-0.010391202,0.004242352 +21324000,mag,0.19800001,-0.07600001,0.42700002 +21324000,baro,487.8211 +21328000,mag,0.19800001,-0.07600001,0.42700002 +21328000,imu,-0.16010627,0.09809423,-11.21049,-0.03537591,-0.011688087,0.0073683853 +21328000,airspeed,3.3654714,3.2869105 +21328000,baro,487.69904 +21332000,airspeed,3.0191011,2.9486258 +21332000,mag,0.19800001,-0.07600001,0.42700002 +21332000,baro,487.69904 +21332000,imu,-0.12869914,0.027460089,-11.246115,-0.036939237,-0.007827853,0.0052075638 +21336000,airspeed,4.0082016,3.914631 +21336000,baro,487.7272 +21336000,imu,-0.13445716,0.032471493,-11.314999,-0.039362762,-0.010599241,0.00019358544 +21336000,mag,0.19800001,-0.07600001,0.42700002 +21344000,airspeed,4.2871857,4.187053 +21344000,imu,-0.19226275,-0.020474667,-11.184752,-0.027101833,-0.014238403,0.00047523034 +21344000,baro,487.9244 +21344000,mag,0.19800001,-0.07600001,0.42700002 +21348000,baro,487.84457 +21348000,airspeed,2.7318583,2.6680655 +21348000,imu,-0.17483933,-0.0004919394,-11.159641,-0.028846709,-0.012206298,-0.00016086343 +21348000,mag,0.19800001,-0.07600001,0.42700002 +21352000,baro,487.79764 +21352000,imu,-0.1377781,0.032160692,-11.199882,-0.023717493,-0.01051233,0.0018400063 +21352000,mag,0.19800001,-0.07600001,0.42700002 +21352000,airspeed,4.042294,3.947911 +21356000,baro,487.80704 +21356000,imu,-0.1553623,0.06651552,-11.225276,-0.026540495,-0.01443842,0.0046443823 +21356000,mag,0.19800001,-0.077000014,0.42700002 +21356000,airspeed,-0.7181255,-0.70135796 +21360000,airspeed,-1.414197,-1.3811811 +21360000,baro,487.75537 +21360000,mag,0.19800001,-0.077000014,0.42700002 +21360000,imu,-0.10112633,0.106071115,-11.247227,-0.028353708,-0.01626526,0.008317985 +21364000,airspeed,-1.8040353,-1.7619098 +21364000,baro,487.8352 +21364000,mag,0.19700001,-0.073000014,0.432 +21364000,imu,-0.09888647,0.09429514,-11.255318,-0.023975462,-0.0105388155,0.0010847191 +21372000,baro,487.9103 +21372000,airspeed,-0.22185636,-0.2166749 +21372000,mag,0.19700001,-0.073000014,0.432 +21372000,imu,-0.26397002,0.044165026,-11.259769,-0.01975322,-0.0148143545,0.009288661 +21376000,mag,0.19700001,-0.073000014,0.432 +21376000,imu,-0.22122745,0.044412937,-11.159434,-0.020679837,-0.014185048,0.009383499 +21376000,airspeed,-2.0294015,-1.982002 +21376000,baro,487.9338 +21380000,imu,-0.16902287,0.022457367,-11.169961,-0.025451258,-0.009013467,0.0057729203 +21380000,airspeed,1.4740512,1.439638 +21384000,imu,-0.112142816,0.03524779,-11.240628,-0.025111921,-0.0101450225,0.006780696 +21384000,airspeed,-0.57810277,-0.5645985 +21384000,mag,0.19700001,-0.073000014,0.432 +21384000,baro,487.99014 +21388000,imu,-0.12434144,0.03529775,-11.259492,-0.02483616,-0.011983122,0.005739237 +21388000,mag,0.19700001,-0.073000014,0.432 +21388000,airspeed,2.5024533,2.4440348 +21388000,baro,487.7319 +21392000,imu,-0.13703537,0.03542544,-11.2606,-0.020313224,-0.008708884,-0.00025937427 +21392000,airspeed,2.006579,1.9597256 +21396000,baro,487.9056 +21396000,imu,-0.13115217,0.10398568,-11.247786,-0.021078847,-0.012962925,0.005111868 +21396000,mag,0.19700001,-0.073000014,0.432 +21396000,airspeed,-3.5189297,-3.436746 +21400000,imu,-0.17928982,0.13141137,-11.205496,-0.026897244,-0.013184789,0.00629535 +21400000,airspeed,-2.3914995,-2.335659 +21400000,mag,0.19700001,-0.073000014,0.432 +21400000,baro,487.8211 +21404000,mag,0.19700001,-0.073000014,0.432 +21404000,baro,487.85867 +21404000,imu,-0.16540806,0.079226024,-11.269544,-0.029548913,-0.00942631,0.0007534251 +21404000,airspeed,-1.5501668,-1.513968 +21412000,airspeed,-1.7499559,-1.7090918 +21412000,baro,487.85867 +21412000,imu,-0.12174695,0.0034076322,-11.230685,-0.022019245,-0.002753213,0.003942623 +21412000,mag,0.19800001,-0.077000014,0.43100002 +21416000,mag,0.19800001,-0.077000014,0.43100002 +21416000,baro,487.7272 +21416000,imu,-0.14339004,0.086530365,-11.234728,-0.015681136,-0.009764359,0.0029240763 +21416000,airspeed,-1.4644948,-1.4303077 +21420000,mag,0.19800001,-0.077000014,0.43100002 +21420000,airspeed,-2.453045,-2.395781 +21420000,gps,488235.0,85456076.0,473977507.0,-0.04,0.049999997,-0.53 +21420000,imu,-0.0917872,0.09907272,-11.2457905,-0.01681707,-0.01395894,0.0018981153 +21420000,baro,487.7272 +21428000,mag,0.19800001,-0.077000014,0.43100002 +21428000,imu,-0.11631935,-0.025915591,-11.286958,-0.0142330825,-0.01622073,0.0029125335 +21428000,airspeed,-3.581031,-3.4973948 +21428000,baro,487.9244 +21432000,airspeed,-3.5432029,-3.4604263 +21432000,mag,0.19800001,-0.077000014,0.43100002 +21432000,imu,-0.15637007,-0.013240092,-11.245283,-0.018296791,-0.015609283,0.006653038 +21432000,baro,488.03708 +21436000,mag,0.19800001,-0.077000014,0.43100002 +21436000,imu,-0.18708606,0.024586212,-11.215514,-0.022857772,-0.016977625,0.008044976 +21436000,airspeed,3.0827127,3.0106943 +21436000,baro,488.03708 +21440000,imu,-0.10475146,0.059105087,-11.245273,-0.020996096,-0.015055073,0.0080211405 +21440000,baro,487.78354 +21440000,airspeed,-3.4351664,-3.3549654 +21440000,mag,0.19800001,-0.077000014,0.43100002 +21444000,baro,487.78354 +21444000,imu,-0.09786648,0.09562361,-11.2868185,-0.019470554,-0.01733523,0.004433913 +21444000,airspeed,-0.6754987,-0.6597278 +21444000,mag,0.19800001,-0.077000014,0.43100002 +21448000,mag,0.19800001,-0.077000014,0.43100002 +21448000,baro,487.746 +21448000,imu,-0.09790062,0.12611502,-11.3383,-0.019978723,-0.01716948,0.0054783775 +21448000,airspeed,2.764853,2.700308 +21456000,mag,0.19800001,-0.077000014,0.43100002 +21456000,airspeed,-3.3881638,-3.30899 +21456000,imu,-0.07758537,-0.0044228183,-11.362834,-0.019383105,-0.014214847,0.005853994 +21456000,baro,488.14038 +21464000,imu,-0.0868825,0.044612106,-11.301053,-0.016686724,-0.009963375,0.00014125888 +21464000,mag,0.19700001,-0.07600001,0.43 +21464000,baro,487.90094 +21464000,airspeed,0.6242027,0.60962534 +21468000,imu,-0.106025845,0.04271349,-11.341334,-0.011724479,-0.00996519,0.0014091923 +21472000,mag,0.19700001,-0.07600001,0.43 +21472000,airspeed,3.4089017,3.3292968 +21472000,baro,487.87277 +21472000,imu,-0.118858136,-0.015748218,-11.266745,-0.013895972,-0.0034940199,0.0015878358 +21476000,baro,488.05118 +21476000,airspeed,2.0299895,1.9825642 +21476000,mag,0.19700001,-0.07600001,0.43 +21476000,imu,-0.118438624,-0.021202177,-11.288932,-0.019582104,-0.0060605975,0.0042034546 +21480000,mag,0.19700001,-0.07600001,0.43 +21480000,baro,488.08405 +21480000,imu,-0.085538946,0.03189465,-11.2968,-0.015980858,-0.007605909,0.0038788924 +21480000,airspeed,-1.0926213,-1.067093 +21484000,airspeed,-2.6860638,-2.6233346 +21484000,baro,487.90094 +21484000,mag,0.19700001,-0.07600001,0.43 +21488000,imu,-0.10239281,0.049313035,-11.352499,-0.006247882,-0.001233577,0.0023623821 +21488000,baro,487.95258 +21488000,airspeed,-2.5353446,-2.4761276 +21488000,mag,0.19700001,-0.07600001,0.43 +21492000,baro,487.95258 +21492000,airspeed,3.222531,3.1472638 +21492000,mag,0.19700001,-0.07600001,0.43 +21496000,imu,-0.116461344,0.09082128,-11.214085,-0.011320035,-0.0120717,-0.0028051871 +21500000,imu,-0.05960429,0.04470695,-11.203456,-0.011741232,-0.0048624403,-0.0002565468 +21500000,baro,487.94788 +21500000,mag,0.19700001,-0.077000014,0.43 +21500000,airspeed,2.8568318,2.7901075 +21504000,imu,-0.11038793,0.054594375,-11.305867,-0.012349823,-0.0027056967,-0.00037626058 +21504000,mag,0.19700001,-0.077000014,0.43 +21504000,baro,487.94318 +21504000,airspeed,-2.1890583,-2.137931 +21512000,airspeed,1.6950718,1.6554798 +21512000,imu,-0.12509619,0.10266922,-11.243685,-0.010256709,-0.0066795396,-0.004281624 +21512000,baro,487.96664 +21512000,mag,0.19700001,-0.077000014,0.43 +21516000,imu,-0.037656087,0.10873299,-11.287213,-0.011491281,-0.008902131,-0.0049748803 +21516000,baro,487.90094 +21516000,mag,0.19800001,-0.07500001,0.43300003 +21516000,airspeed,1.3976727,1.3650327 +21520000,imu,-0.13252655,0.06887499,-11.240656,-0.0060691345,-0.014796176,-0.0018210029 +21520000,mag,0.19800001,-0.07500001,0.43300003 +21520000,baro,487.90094 +21520000,airspeed,-2.9346972,-2.866163 +21528000,imu,-0.12581673,-0.024251405,-11.194515,-0.005900146,-0.010050959,-0.0005733783 +21528000,airspeed,-1.9035692,-1.8590813 +21528000,mag,0.19800001,-0.07500001,0.43300003 +21528000,baro,488.20612 +21532000,airspeed,2.8282776,2.7622125 +21532000,mag,0.19800001,-0.07500001,0.43300003 +21532000,baro,487.9995 +21532000,imu,-0.14988118,0.06641638,-11.192649,-0.0043263696,-0.005094253,0.0003193962 +21536000,airspeed,2.7035887,2.6404262 +21536000,mag,0.19800001,-0.07500001,0.43300003 +21536000,imu,-0.12484488,0.15375668,-11.21298,-0.006935434,-0.0006067466,0.0030492845 +21536000,baro,488.06525 +21544000,imu,-0.052762467,0.057369266,-11.166847,-0.008554004,0.0008908888,0.0049610287 +21544000,airspeed,-3.0805748,-3.0086243 +21544000,mag,0.19800001,-0.07500001,0.43300003 +21544000,baro,487.95728 +21548000,mag,0.19800001,-0.07500001,0.43300003 +21548000,airspeed,1.8365092,1.7936155 +21548000,baro,487.95728 +21548000,imu,-0.054207746,0.029917905,-11.12279,-0.007404046,-0.0031433378,0.0035905298 +21556000,airspeed,1.3803148,1.3480664 +21556000,imu,-0.122097,0.01924299,-11.242424,-0.0064612557,-0.00402963,0.004668262 +21556000,baro,488.07935 +21556000,mag,0.19800001,-0.07500001,0.43300003 +21564000,mag,0.19800001,-0.07500001,0.43300003 +21564000,airspeed,2.6295207,2.5680816 +21564000,baro,488.1169 +21564000,imu,-0.16937135,-0.054033678,-11.185398,-0.011857735,0.0031179753,-0.0009541993 +21572000,baro,487.90094 +21572000,imu,-0.104968704,0.04477496,-11.174138,-0.015345629,-0.003910903,0.0035325675 +21572000,mag,0.201,-0.07900001,0.43100002 +21572000,airspeed,1.4751384,1.44069 +21576000,baro,487.99014 +21576000,mag,0.2,-0.07900001,0.43100002 +21576000,airspeed,-2.5164137,-2.4576356 +21576000,imu,-0.20870206,0.06396021,-11.124638,-0.012289317,-0.006292289,0.0027971836 +21580000,airspeed,0.47261137,0.46157357 +21580000,mag,0.2,-0.07900001,0.43100002 +21580000,baro,487.94318 +21580000,imu,-0.16046458,0.12625238,-11.168669,-0.009708124,-0.0018066033,-0.0004969003 +21584000,baro,487.89154 +21584000,airspeed,-2.8102682,-2.7446437 +21584000,mag,0.2,-0.07900001,0.43100002 +21584000,imu,-0.04753054,0.13484482,-11.253223,-0.013778549,0.003027254,0.0007153175 +21592000,airspeed,1.6071991,1.5696657 +21592000,mag,0.2,-0.08000001,0.43100002 +21592000,imu,-0.1547828,0.05540052,-11.27086,-0.010673121,0.0045114886,-0.00063043245 +21592000,baro,487.9197 +21596000,airspeed,-2.6981764,-2.6351469 +21596000,mag,0.2,-0.08000001,0.43100002 +21596000,imu,-0.16649382,0.04439811,-11.246589,-0.014007651,0.0076745665,-0.003225536 +21596000,baro,488.03238 +21600000,airspeed,2.1634772,2.1129224 +21600000,imu,-0.11803852,0.0673429,-11.212006,-0.014503909,0.0075746467,-0.0012912053 +21604000,imu,-0.10135385,0.071125194,-11.201032,-0.00877356,0.0034518598,-0.0003228848 +21604000,airspeed,2.9005425,2.8327644 +21604000,mag,0.2,-0.08000001,0.43100002 +21604000,baro,488.16385 +21608000,imu,-0.13796133,0.03900165,-11.213928,-0.009775113,0.005454661,0.0023474316 +21608000,airspeed,-2.4333441,-2.376511 +21608000,baro,487.96664 +21608000,mag,0.2,-0.08000001,0.43100002 +21612000,airspeed,-2.4732223,-2.4154422 +21612000,imu,-0.131354,0.078679554,-11.175448,-0.012891057,0.008194364,0.0033025395 +21612000,mag,0.2,-0.08000001,0.43100002 +21612000,baro,488.07465 +21620000,imu,-0.16913715,0.10298224,-11.27706,-0.0057270564,0.0024309822,-0.0056158067 +21620000,gps,488380.0,85456078.0,473977505.0,-0.02,0.06,-0.81 +21620000,baro,488.06055 +21620000,mag,0.19900002,-0.07500001,0.43300003 +21620000,airspeed,2.3874207,2.3316474 +21624000,baro,488.15915 +21624000,imu,-0.11230217,0.123196915,-11.30131,-0.005038538,-0.0024926385,0.0012677362 +21624000,mag,0.19900002,-0.07500001,0.43300003 +21624000,airspeed,2.7270832,2.6633596 +21628000,baro,488.15915 +21628000,imu,-0.1706365,0.100360125,-11.320217,-0.0070124962,-0.0049045044,0.008765649 +21628000,mag,0.19900002,-0.07500001,0.43300003 +21628000,airspeed,0.6819621,0.6660267 +21632000,baro,488.04648 +21632000,mag,0.19900002,-0.07500001,0.43300003 +21632000,imu,-0.18079276,0.07874915,-11.238992,-0.0035526808,-0.0026791603,-9.7203825e-05 +21632000,airspeed,1.152765,1.1258361 +21640000,baro,488.14038 +21640000,imu,-0.1774734,0.05429691,-11.248095,7.6377946e-05,-0.009848264,0.0038305314 +21640000,mag,0.19900002,-0.07500001,0.43300003 +21640000,airspeed,-1.2662325,-1.2366458 +21644000,airspeed,1.703434,1.6636419 +21644000,imu,-0.18384027,0.040387303,-11.281819,-0.0056540933,-0.009940086,0.00091703446 +21648000,airspeed,1.1269802,1.1006554 +21648000,baro,488.0183 +21648000,imu,-0.13894667,0.0139928,-11.302886,-0.004860054,-0.0062029385,0.0011328058 +21648000,mag,0.19900002,-0.07500001,0.43300003 +21652000,airspeed,1.3077255,1.2771676 +21652000,mag,0.19900002,-0.07500001,0.43300003 +21652000,baro,488.16855 +21652000,imu,-0.11997417,0.06808363,-11.275101,-0.005852962,-0.010656704,0.00409043 +21656000,imu,-0.09352084,0.10084802,-11.228017,-0.0034101927,-0.01407017,-0.00045869363 +21656000,baro,488.22958 +21656000,airspeed,-2.512135,-2.4534247 +21656000,mag,0.19900002,-0.07500001,0.43300003 +21660000,mag,0.19900002,-0.07500001,0.43300003 +21660000,baro,488.16385 +21664000,imu,-0.09675504,0.011250303,-11.19424,-0.0043003336,-0.008609162,0.008287623 +21664000,baro,488.05588 +21664000,mag,0.19900002,-0.07500001,0.43300003 +21664000,airspeed,2.7921333,2.7269075 +21668000,airspeed,-3.096187,-3.0238583 +21668000,baro,488.05588 +21668000,mag,0.19900002,-0.07500001,0.43300003 +21668000,imu,-0.15272035,0.059932776,-11.210249,-0.008426642,-0.010309164,0.014812351 +21672000,baro,488.14975 +21672000,airspeed,2.5523074,2.4926705 +21672000,imu,-0.17536533,0.05122312,-11.29123,-0.006223404,-0.004748261,0.009733647 +21676000,airspeed,1.9956591,1.949029 +21676000,baro,488.14975 +21676000,imu,-0.17196004,0.045484137,-11.235779,-0.003745474,-0.0011545761,0.0027502265 +21676000,mag,0.2,-0.07800001,0.432 +21680000,baro,488.23428 +21680000,mag,0.2,-0.07800001,0.432 +21680000,imu,-0.19425108,0.1301456,-11.2161,-0.010173226,0.00013136039,0.0023784009 +21680000,airspeed,-1.1103843,-1.0844339 +21684000,imu,-0.15245073,0.08665519,-11.299741,-0.008964286,0.0022380778,0.00049077737 +21684000,baro,488.23428 +21684000,airspeed,3.3298557,3.2520347 +21684000,mag,0.2,-0.07800001,0.432 +21692000,airspeed,1.0217584,0.99788284 +21692000,mag,0.2,-0.07800001,0.432 +21692000,baro,488.17795 +21692000,imu,-0.13126568,0.10069758,-11.199485,0.00011958478,-0.003834221,-0.003103499 +21696000,airspeed,2.951635,2.8826528 +21696000,imu,-0.20635773,0.008799387,-11.212814,-0.010561779,-0.0035120123,-0.007829384 +21696000,mag,0.2,-0.07800001,0.432 +21696000,baro,488.23898 +21700000,airspeed,0.9632055,0.94069463 +21700000,baro,488.23898 +21700000,imu,-0.167804,0.09919359,-11.293462,-0.009349066,-0.0047374945,-0.009277897 +21700000,mag,0.2,-0.07800001,0.432 +21704000,airspeed,2.5575247,2.4977643 +21704000,baro,488.16855 +21704000,imu,-0.07388105,0.124987595,-11.28458,-0.0136743,2.6933249e-05,-0.003096845 +21704000,mag,0.2,-0.07800001,0.432 +21708000,baro,488.14038 +21708000,mag,0.2,-0.07800001,0.432 +21712000,imu,-0.16159967,0.10351624,-11.318578,-0.012096701,0.0018383006,0.0075867707 +21712000,airspeed,1.3339916,1.3028129 +21716000,airspeed,-1.0786016,-1.0533919 +21716000,mag,0.2,-0.07800001,0.432 +21716000,imu,-0.12713778,0.038531825,-11.2432575,-0.008779654,-0.0013889594,0.0044307136 +21716000,baro,488.27182 +21720000,baro,488.36572 +21720000,imu,-0.16209857,-0.013529646,-11.219093,-0.006906234,-0.01192025,-0.00089275686 +21720000,mag,0.2,-0.07800001,0.432 +21720000,airspeed,3.0265636,2.9558098 +21724000,imu,-0.14362383,0.07892053,-11.209201,-0.008332352,-0.007177496,0.0038870506 +21724000,mag,0.2,-0.07800001,0.432 +21724000,airspeed,2.1391783,2.0891693 +21724000,baro,488.36572 +21728000,imu,-0.079648666,0.06755053,-11.235973,-0.0088698305,-0.0070226477,0.0008552953 +21728000,mag,0.194,-0.073000014,0.42800003 +21728000,baro,488.23898 +21728000,airspeed,0.03885497,0.03794692 +21732000,baro,488.23898 +21732000,imu,-0.11197845,0.034331817,-11.254692,-0.009007296,-0.008898751,-0.002531477 +21732000,airspeed,0.9436181,0.92156553 +21732000,mag,0.194,-0.073000014,0.42800003 +21736000,imu,-0.12161618,0.040811077,-11.241206,-0.012489427,-0.007636704,0.0070216344 +21736000,airspeed,0.2778804,0.2713877 +21736000,mag,0.194,-0.073000014,0.42800003 +21736000,baro,488.15445 +21740000,airspeed,-1.7642053,-1.7229809 +21740000,mag,0.194,-0.073000014,0.42800003 +21740000,baro,488.18732 +21740000,imu,-0.17050156,0.029392703,-11.215291,-0.0071816146,-0.0073240036,0.008744725 +21744000,baro,488.28122 +21744000,airspeed,-1.1895218,-1.1617197 +21744000,mag,0.19500001,-0.073000014,0.42800003 +21744000,imu,-0.18784812,0.024118643,-11.216338,-0.0014503864,-0.004987977,0.0042177644 +21752000,imu,-0.17759015,0.08525032,-11.280165,-0.010535883,-0.010349631,-0.0014911861 +21752000,airspeed,-2.2887728,-2.2352633 +21752000,mag,0.19500001,-0.073000014,0.42800003 +21752000,baro,488.3939 +21756000,imu,-0.15758619,0.038622513,-11.260689,-0.0056804046,-0.017631043,0.0018154038 +21756000,airspeed,3.433838,3.3535867 +21760000,baro,488.19202 +21760000,mag,0.19500001,-0.073000014,0.42800003 +21760000,imu,-0.12074239,0.095178865,-11.270257,-0.0064684404,-0.016380437,0.0051555443 +21760000,airspeed,-1.012614,-0.9889523 +21764000,baro,488.19202 +21764000,imu,-0.1829002,0.1627251,-11.292207,-0.010083947,-0.015572836,0.0053674583 +21764000,airspeed,-0.35219398,-0.34396428 +21764000,mag,0.19500001,-0.073000014,0.42800003 +21768000,airspeed,2.3444788,2.2896926 +21768000,imu,-0.09270479,0.14802454,-11.286075,-0.009794735,-0.011273106,0.0011618147 +21768000,baro,488.2108 +21768000,mag,0.19500001,-0.073000014,0.42800003 +21772000,imu,-0.06733892,0.03579481,-11.290561,-0.006926841,-0.009324942,-0.003036621 +21772000,airspeed,-1.7164052,-1.6762873 +21776000,imu,-0.16461395,0.01980079,-11.318953,-0.008345294,-0.008816076,-0.002276609 +21776000,baro,488.20612 +21776000,mag,0.19500001,-0.073000014,0.42800003 +21776000,airspeed,3.4969888,3.4152725 +21780000,airspeed,-2.6255176,-2.5641592 +21780000,imu,-0.18431647,0.05218605,-11.306313,-0.007175447,-0.0066733435,-0.00082765653 +21784000,baro,488.4127 +21784000,imu,-0.13551079,0.08493567,-11.277578,-0.0021410808,-0.005167187,-0.0015600958 +21784000,airspeed,-2.6127112,-2.551627 +21784000,mag,0.19600001,-0.08200001,0.432 +21788000,airspeed,4.464997,4.3606067 +21788000,baro,488.4127 +21788000,mag,0.19600001,-0.08200001,0.432 +21788000,imu,-0.14510094,0.14831373,-11.321907,-0.0028612365,-0.005518052,-0.0027624136 +21792000,imu,-0.16481693,0.18029556,-11.255958,-0.002907421,-0.007969753,-0.0004055748 +21792000,airspeed,1.2364043,1.2075049 +21796000,imu,-0.13223134,0.092805445,-11.228925,-0.004013222,-0.005380245,0.0037459447 +21796000,airspeed,0.97270244,0.94997036 +21796000,baro,488.24835 +21796000,mag,0.19600001,-0.08200001,0.432 +21804000,imu,-0.08046333,-0.028132837,-11.221347,-0.005973528,-0.004021923,0.004181797 +21804000,airspeed,-2.8401616,-2.7737696 +21804000,baro,488.35635 +21804000,mag,0.19600001,-0.08200001,0.432 +21808000,baro,488.3094 +21808000,mag,0.19600001,-0.08200001,0.432 +21808000,airspeed,-3.2902753,-3.2133703 +21808000,imu,-0.09830803,0.06508979,-11.285203,-0.01197335,-0.004952166,-0.001310054 +21812000,imu,-0.15010777,0.12697183,-11.261291,-0.014471193,-0.0022331576,0.0012486874 +21812000,airspeed,2.7857864,2.720685 +21812000,baro,488.23898 +21812000,mag,0.19600001,-0.08200001,0.432 +21816000,airspeed,-2.6731317,-2.6106637 +21816000,imu,-0.11834376,0.094575055,-11.308867,-0.012313025,-0.00354119,0.004914948 +21816000,baro,488.23898 +21816000,mag,0.19600001,-0.08200001,0.432 +21820000,gps,488576.0,85456080.0,473977504.0,-0.06,0.06,-1.13 +21824000,imu,-0.12354235,0.08154815,-11.233835,-0.0036326202,-0.004147578,0.0010023538 +21824000,airspeed,1.708562,1.6686223 +21824000,baro,488.36572 +21824000,mag,0.19600001,-0.08200001,0.432 +21828000,baro,488.47842 +21828000,imu,-0.16144688,0.03492078,-11.264946,0.00022691223,-0.007198008,0.003579927 +21828000,mag,0.19800001,-0.077000014,0.432 +21828000,airspeed,0.15454245,0.15092878 +21832000,mag,0.19800001,-0.077000014,0.432 +21832000,imu,-0.15696195,0.044699408,-11.228652,-0.006692185,-0.0024360148,0.0030610326 +21832000,airspeed,-1.6602372,-1.6214159 +21832000,baro,488.47842 +21836000,mag,0.19800001,-0.077000014,0.432 +21836000,imu,-0.08282134,0.088421516,-11.23899,-0.011254041,0.00076027785,-0.002449028 +21836000,airspeed,4.152199,4.055131 +21836000,baro,488.38922 +21840000,mag,0.19800001,-0.077000014,0.432 +21840000,airspeed,-2.582954,-2.522571 +21840000,imu,-0.11997295,0.09361786,-11.279595,-0.0069140363,-0.004186546,-0.0037820607 +21840000,baro,488.38922 +21844000,airspeed,2.5629475,2.5030324 +21844000,mag,0.19800001,-0.077000014,0.432 +21844000,imu,-0.20308895,0.044551954,-11.265663,-0.008374271,-0.009291182,-0.00054743025 +21844000,baro,488.38922 +21848000,mag,0.19800001,-0.077000014,0.432 +21848000,airspeed,2.8909514,2.823399 +21848000,baro,488.2108 +21848000,imu,-0.15632899,0.028153336,-11.2071085,-0.006222961,-0.009905748,-0.0033961656 +21852000,airspeed,2.1039543,2.054766 +21852000,mag,0.19800001,-0.077000014,0.432 +21852000,baro,488.4174 +21852000,imu,-0.1417329,0.10214218,-11.1392145,-0.0065258956,-0.008330117,-0.009028195 +21856000,airspeed,3.0981932,3.025757 +21856000,imu,-0.10969772,0.04977265,-11.161229,-0.009669542,-0.0052721635,-0.003966763 +21856000,baro,488.44086 +21856000,mag,0.19800001,-0.077000014,0.432 +21860000,mag,0.19800001,-0.077000014,0.432 +21860000,baro,488.43146 +21860000,imu,-0.051607255,0.015552784,-11.013769,-0.0017584433,-0.010008912,0.0033497112 +21860000,airspeed,-2.8208268,-2.754877 +21864000,airspeed,-2.9159982,-2.8478234 +21864000,baro,488.43146 +21864000,mag,0.19800001,-0.077000014,0.432 +21864000,imu,-0.10736301,0.09624742,-10.856616,-0.001456577,-0.014141318,-0.0015300802 +21868000,airspeed,-1.8103938,-1.768068 +21868000,baro,488.43146 +21868000,mag,0.19800001,-0.077000014,0.432 +21868000,imu,-0.14282155,0.07032796,-10.902044,-0.008264387,-0.011664449,-0.004151275 +21876000,imu,-0.14650932,0.086338714,-10.620282,-0.009157982,-0.013754734,-0.005149987 +21876000,mag,0.19800001,-0.077000014,0.432 +21876000,airspeed,-2.8143587,-2.7485538 +21876000,baro,488.47372 +21880000,airspeed,-0.089249924,-0.087162845 +21880000,imu,-0.13824996,0.05402703,-10.652126,-0.015880004,-0.012839216,-0.0042416155 +21880000,mag,0.19800001,-0.07900001,0.43 +21880000,baro,488.52536 +21888000,airspeed,2.2150104,2.1632252 +21888000,mag,0.19800001,-0.07900001,0.43 +21888000,imu,-0.08040772,0.072809294,-10.577889,-0.00881635,-0.014331878,0.0027664974 +21888000,baro,488.43146 +21892000,mag,0.19800001,-0.07900001,0.43 +21892000,airspeed,1.6963253,1.6566592 +21892000,baro,488.5066 +21892000,imu,-0.0737094,0.071686916,-10.46214,-0.008825587,-0.0149006685,0.0016584488 +21896000,baro,488.52066 +21896000,airspeed,0.50577176,0.49394464 +21896000,imu,-0.10266334,0.050546035,-10.382837,-0.013636055,-0.0095284125,-0.0007953586 +21896000,mag,0.19800001,-0.07900001,0.43 +21904000,mag,0.19800001,-0.07900001,0.43 +21904000,baro,488.408 +21904000,imu,-0.118230164,0.092878446,-10.2002,-0.016779365,-0.011431552,-0.00072523666 +21904000,airspeed,-3.5232296,-3.4408658 +21908000,airspeed,-2.1755753,-2.1247065 +21908000,imu,-0.12150272,0.0560623,-10.098961,-0.013219512,-0.010587169,-0.0019952047 +21908000,mag,0.19800001,-0.07900001,0.43 +21908000,baro,488.48312 +21912000,baro,488.52536 +21912000,airspeed,-2.8160896,-2.7502375 +21912000,imu,-0.0660694,0.073293984,-10.091129,-0.01391068,-0.0052098185,-0.0014336309 +21912000,mag,0.19800001,-0.07900001,0.43 +21916000,mag,0.19800001,-0.07900001,0.43 +21916000,baro,488.45026 +21920000,airspeed,-2.688193,-2.625344 +21920000,imu,-0.124512024,0.07950181,-9.9511175,-0.0054728463,-0.007406638,0.0011204892 +21924000,mag,0.19800001,-0.07900001,0.43 +21924000,airspeed,-0.4847539,-0.47341946 +21924000,imu,-0.19864853,0.11067682,-9.887796,-0.010590716,-3.6014935e-05,-0.0036038288 +21924000,baro,488.4878 +21928000,imu,-0.13601315,0.1142989,-9.823872,-0.010924844,-0.0025680945,-0.0057858764 +21928000,mag,0.19800001,-0.07900001,0.43 +21928000,baro,488.6709 +21928000,airspeed,-3.394952,-3.315536 +21936000,baro,488.53006 +21936000,mag,0.19700001,-0.07600001,0.42900002 +21936000,imu,-0.15618472,0.053843237,-9.756309,-0.016090898,-0.01280155,-0.0033952892 +21936000,airspeed,-3.114863,-3.0420246 +21940000,airspeed,-1.9180822,-1.8732312 +21940000,imu,-0.23161308,0.04534721,-9.716134,-0.015976518,-0.010034845,-0.00066846836 +21944000,imu,-0.18834296,0.1261759,-9.667713,-0.016368464,-0.0035039836,-0.0033195452 +21944000,baro,488.45963 +21944000,mag,0.19700001,-0.07600001,0.42900002 +21944000,airspeed,2.3239627,2.2696283 +21948000,imu,-0.15650238,0.1160584,-9.61197,-0.025255596,-0.004866688,-0.004697351 +21948000,mag,0.19700001,-0.07600001,0.42900002 +21948000,airspeed,3.3291798,3.251295 +21948000,baro,488.70847 +21952000,baro,488.47842 +21952000,imu,-0.14565001,0.086220935,-9.581537,-0.022378441,-0.012911481,-0.0024668628 +21952000,mag,0.19700001,-0.07600001,0.42900002 +21952000,airspeed,-3.2981236,-3.2210104 +21956000,imu,-0.09436045,0.08950085,-9.543171,-0.016693242,-0.006638424,-0.0033218358 +21956000,airspeed,-1.9960679,-1.9494107 +21956000,baro,488.37042 +21956000,mag,0.19700001,-0.07600001,0.42900002 +21960000,imu,-0.13523214,0.105155446,-9.494896,-0.015501248,-0.002217742,0.00017777215 +21960000,airspeed,2.7220354,2.6584024 +21960000,mag,0.19700001,-0.077000014,0.42900002 +21960000,baro,488.4127 +21964000,baro,488.4127 +21964000,mag,0.19700001,-0.077000014,0.42900002 +21964000,imu,-0.2115648,0.11182019,-9.471813,-0.011853129,-0.013036032,0.0010210447 +21964000,airspeed,-3.5593648,-3.4761577 +21968000,imu,-0.18667668,0.07857879,-9.4649515,-0.014661518,-0.01663763,0.0017183088 +21972000,mag,0.19700001,-0.077000014,0.42900002 +21972000,baro,488.577 +21972000,imu,-0.095670104,0.0551411,-9.454534,-0.021587519,-0.012568296,-0.0001868858 +21972000,airspeed,-3.5344818,-3.4518235 +21976000,imu,-0.08885447,0.007290257,-9.464087,-0.023379661,-0.011373067,1.5988007e-05 +21976000,baro,488.577 +21976000,mag,0.19700001,-0.077000014,0.42900002 +21976000,airspeed,-4.6944103,-4.5846257 +21980000,imu,-0.2061499,0.019588117,-9.533767,-0.015394287,-0.009951723,0.0048838477 +21980000,airspeed,2.4367082,2.379725 +21984000,mag,0.19700001,-0.07800001,0.43 +21984000,imu,-0.20032972,0.07925738,-9.486969,-0.013046987,-0.007280776,0.0037944457 +21984000,baro,488.62866 +21984000,airspeed,-2.3141932,-2.2600663 +21988000,imu,-0.10226234,0.11407737,-9.448681,-0.016551722,-0.013528239,0.0030936291 +21988000,mag,0.19700001,-0.07800001,0.43 +21988000,airspeed,1.9399456,1.894581 +21988000,baro,488.54883 +21996000,mag,0.19700001,-0.07800001,0.43 +21996000,baro,488.45026 +21996000,imu,-0.11419899,0.031281874,-9.523817,-0.020442145,-0.021339193,0.0008418146 +21996000,airspeed,2.7942612,2.7289355 +22000000,airspeed,-1.8921568,-1.847904 +22000000,baro,488.6052 +22000000,imu,-0.15146574,0.060220625,-9.48099,-0.02528837,-0.020355523,-0.0021644144 +22000000,mag,0.19700001,-0.07800001,0.43 +22004000,imu,-0.16742921,0.057102863,-9.46409,-0.025784656,-0.01671246,0.00096406863 +22004000,airspeed,-1.2809749,-1.2510201 +22004000,mag,0.19700001,-0.07800001,0.43 +22004000,baro,488.55353 +22008000,baro,488.69907 +22008000,imu,-0.13731155,0.071670145,-9.489195,-0.014640715,-0.018373113,0.0033881 +22008000,mag,0.19700001,-0.07800001,0.43 +22008000,airspeed,4.2559266,4.1563683 +22012000,mag,0.19700001,-0.07800001,0.43 +22012000,baro,488.66623 +22016000,airspeed,-1.9781419,-1.9318641 +22016000,imu,-0.14173509,0.07248883,-9.651389,-0.024564458,-0.016381904,-0.0020494403 +22016000,mag,0.19700001,-0.07800001,0.43 +22016000,baro,488.72726 +22020000,gps,488833.0,85456081.0,473977503.0,-0.049999997,0.06,-1.37 +22020000,baro,488.51596 +22020000,mag,0.19700001,-0.07800001,0.43 +22020000,airspeed,3.4488444,3.368203 +22020000,imu,-0.14988256,0.07062369,-9.654186,-0.020925308,-0.014186378,0.004634311 +22024000,airspeed,3.0163012,2.9457686 +22024000,imu,-0.1913785,0.073778525,-9.677788,-0.018079622,-0.020235656,0.009238404 +22024000,mag,0.19700001,-0.07800001,0.43 +22024000,baro,488.54416 +22028000,imu,-0.19544916,0.047951464,-9.753837,-0.0153316,-0.024116965,0.0031811835 +22028000,mag,0.19700001,-0.07800001,0.43 +22028000,airspeed,2.2198403,2.167929 +22028000,baro,488.57233 +22036000,imu,-0.17185639,0.056637824,-9.701924,-0.019207995,-0.020076616,0.0022048154 +22036000,mag,0.19800001,-0.077000014,0.432 +22036000,airspeed,-2.7363586,-2.6723733 +22036000,baro,488.54416 +22040000,mag,0.19800001,-0.077000014,0.432 +22040000,airspeed,0.44843638,0.4379484 +22040000,baro,488.61926 +22040000,imu,-0.13253687,0.06734531,-9.732922,-0.022249965,-0.02059464,0.00055174466 +22044000,imu,-0.10681591,0.103196904,-9.788436,-0.027597768,-0.024670828,0.00049615523 +22044000,mag,0.19800001,-0.077000014,0.432 +22044000,baro,488.66623 +22044000,airspeed,-1.8534315,-1.810079 +22048000,airspeed,-2.5698338,-2.5097349 +22048000,mag,0.19800001,-0.077000014,0.432 +22048000,baro,488.5958 +22048000,imu,-0.13000886,0.095498666,-9.875859,-0.02408225,-0.023831617,0.00070554647 +22056000,mag,0.19800001,-0.077000014,0.432 +22056000,imu,-0.060152363,0.17843169,-9.774828,-0.020180449,-0.018924264,-0.0027568112 +22056000,baro,488.53946 +22056000,airspeed,2.6517875,2.589781 +22060000,imu,-0.151644,0.17197223,-9.859546,-0.014876886,-0.01638352,-0.0024513816 +22060000,baro,488.80707 +22060000,airspeed,1.0540135,1.0293514 +22060000,mag,0.19800001,-0.077000014,0.432 +22068000,baro,488.65683 +22068000,imu,-0.068481855,0.1681271,-9.953425,-0.018517522,-0.018964041,-0.0033305227 +22068000,mag,0.19800001,-0.077000014,0.432 +22068000,airspeed,-2.5525403,-2.4928377 +22072000,baro,488.72256 +22072000,airspeed,1.5423075,1.506228 +22072000,mag,0.19800001,-0.077000014,0.432 +22072000,imu,-0.08197067,0.15239424,-9.945248,-0.016385756,-0.017376747,0.003248274 +22076000,baro,488.72256 +22076000,airspeed,2.941659,2.8728442 +22076000,mag,0.19800001,-0.077000014,0.432 +22076000,imu,-0.08509886,0.109260246,-9.992337,-0.014859786,-0.013281506,0.006423375 +22080000,imu,-0.06685098,0.053889703,-10.008979,-0.015706018,-0.013075439,0.003581039 +22080000,airspeed,2.116059,2.0665655 +22084000,airspeed,-1.5752742,-1.5384294 +22084000,imu,-0.10008057,0.022958845,-10.030988,-0.014774547,-0.01184108,-0.0007025933 +22084000,mag,0.19800001,-0.077000014,0.432 +22084000,baro,488.66153 +22088000,imu,-0.17517489,0.08260641,-10.050617,-0.01175199,-0.01746875,0.0011353604 +22088000,airspeed,-2.4983711,-2.4399297 +22088000,mag,0.201,-0.07800001,0.43100002 +22088000,baro,488.70377 +22092000,baro,488.70377 +22092000,airspeed,-2.7698712,-2.7050788 +22092000,imu,-0.13317485,0.16436845,-10.041866,-0.010483586,-0.021997254,-0.001421505 +22092000,mag,0.201,-0.07800001,0.43100002 +22096000,baro,488.72256 +22096000,airspeed,2.2527397,2.2000415 +22096000,imu,-0.08042231,0.13828725,-10.079746,-0.014815824,-0.018643966,-0.0038052315 +22096000,mag,0.201,-0.07800001,0.43100002 +22100000,mag,0.201,-0.07800001,0.43100002 +22100000,baro,488.5911 +22100000,airspeed,2.087205,2.0383956 +22100000,imu,-0.09884196,0.06293351,-10.101982,-0.0101873465,-0.014966287,0.0014513338 +22104000,mag,0.201,-0.07800001,0.43100002 +22104000,baro,488.5911 +22104000,airspeed,-2.9801092,-2.9104192 +22104000,imu,-0.12519242,0.07763369,-10.066624,-0.0009994528,-0.012907775,0.0014030474 +22108000,mag,0.201,-0.07800001,0.43100002 +22108000,baro,488.63803 +22108000,imu,-0.14883947,0.114760235,-10.028198,-0.0064255823,-0.01579034,-0.0023854587 +22108000,airspeed,-1.4841448,-1.4494343 +22112000,baro,488.63803 +22112000,airspeed,-2.448805,-2.3915336 +22112000,imu,-0.15690751,0.11716874,-10.096274,-0.01270663,-0.020389518,-0.0017055608 +22112000,mag,0.201,-0.07800001,0.43100002 +22120000,airspeed,-2.9469967,-2.87806 +22120000,imu,-0.17542237,0.14596602,-10.111304,-0.0018203758,-0.017133145,-0.00085605885 +22120000,mag,0.201,-0.07800001,0.43100002 +22120000,baro,488.71317 +22124000,mag,0.201,-0.07800001,0.43100002 +22124000,airspeed,-2.7480931,-2.6837826 +22124000,imu,-0.14377527,0.051684774,-10.134746,-0.00801435,-0.013577137,-0.0052826465 +22124000,baro,488.88217 +22128000,imu,-0.1113131,0.022423152,-10.088396,-0.011708835,-0.008857335,0.00014295787 +22128000,baro,488.6897 +22128000,airspeed,-2.390234,-2.3343253 +22128000,mag,0.201,-0.07800001,0.43100002 +22132000,mag,0.201,-0.07800001,0.43100002 +22132000,baro,488.64743 +22132000,imu,-0.14691783,0.09852204,-10.048706,-0.0100385,-0.007511641,0.0042494177 +22136000,airspeed,-4.0589294,-3.9639432 +22140000,imu,-0.15218683,0.089084715,-10.089951,-0.0053856587,-0.014581576,0.0017144667 +22140000,airspeed,2.6199183,2.5586119 +22140000,baro,488.8587 +22140000,mag,0.193,-0.07800001,0.43100002 +22144000,baro,488.82584 +22144000,mag,0.193,-0.07800001,0.43100002 +22144000,airspeed,-1.1246796,-1.0983641 +22144000,imu,-0.15418945,0.12272196,-10.088207,-0.005128275,-0.00622972,0.006371265 +22152000,imu,-0.057927944,0.06891056,-10.085962,-0.012828267,0.002205882,0.003132703 +22152000,baro,488.82584 +22152000,airspeed,2.5502038,2.490534 +22152000,mag,0.193,-0.07800001,0.43100002 +22156000,mag,0.193,-0.07800001,0.43100002 +22156000,baro,488.82584 +22156000,airspeed,2.1749642,2.1240745 +22156000,imu,-0.09859885,0.1187594,-10.039635,-0.010368681,0.0033873876,0.0028144135 +22160000,mag,0.193,-0.07800001,0.43100002 +22160000,imu,-0.19288261,0.14985089,-10.059869,-0.007443007,-0.0035569582,-7.905646e-05 +22160000,baro,488.89157 +22160000,airspeed,-1.9850003,-1.9385476 +22168000,imu,-0.14643094,0.15831788,-10.065043,-0.011784952,-0.0070179207,-0.0038705429 +22168000,mag,0.193,-0.07800001,0.43100002 +22168000,airspeed,-4.314352,-4.2134376 +22168000,baro,488.69907 +22172000,mag,0.193,-0.07800001,0.43100002 +22172000,imu,-0.07446745,0.10485301,-10.1369505,-0.012451895,-0.0084077045,-0.0072142617 +22172000,airspeed,-3.9857678,-3.892492 +22172000,baro,488.90097 +22176000,baro,488.7789 +22176000,imu,-0.043941583,-0.005782379,-10.01913,-0.012030486,-0.004999746,-0.0060729305 +22176000,mag,0.193,-0.07800001,0.43100002 +22176000,airspeed,1.9471487,1.9015954 +22180000,imu,0.00878679,0.043979775,-9.939228,-0.012053829,-0.00021116424,-0.0075708264 +22180000,mag,0.193,-0.07800001,0.43100002 +22180000,airspeed,-3.7672906,-3.679162 +22184000,mag,0.193,-0.07800001,0.43100002 +22184000,baro,488.7836 +22184000,imu,-0.043583993,0.11445027,-9.993678,-0.018472064,0.0009757809,-0.009522191 +22184000,airspeed,-3.5470748,-3.4640908 +22192000,airspeed,-3.0337424,-2.9627428 +22192000,mag,0.2,-0.08200001,0.43100002 +22192000,imu,-0.12322908,0.101249725,-10.005342,-0.018570552,-0.00504089,0.005404452 +22192000,baro,488.92914 +22200000,airspeed,1.3568429,1.3250903 +22200000,mag,0.2,-0.08200001,0.43100002 +22200000,imu,-0.100714795,0.06623191,-9.994732,-0.024767224,0.0014136613,-0.0031692549 +22200000,baro,488.90097 +22204000,airspeed,-3.7016249,-3.614982 +22204000,mag,0.2,-0.08200001,0.43100002 +22204000,baro,488.98547 +22204000,imu,-0.12428083,0.111704335,-9.990997,-0.019203302,-0.0049381345,-0.002951875 +22208000,airspeed,-3.027066,-2.9562185 +22208000,mag,0.2,-0.08200001,0.43100002 +22208000,baro,488.9526 +22208000,imu,-0.11112168,0.10235646,-9.998143,-0.016565345,-0.010449339,-0.003227581 +22212000,imu,-0.0801565,0.028212003,-9.989795,-0.019308351,-0.011490208,-0.0032555945 +22212000,airspeed,-2.3033736,-2.2494638 +22216000,airspeed,-2.6504714,-2.5884454 +22216000,baro,488.91037 +22216000,imu,-0.1563029,0.044289377,-9.932407,-0.018920895,-0.010618385,0.0028508026 +22216000,mag,0.2,-0.08200001,0.43100002 +22220000,gps,489122.0,85456082.0,473977502.0,-0.06,0.03,-1.4399999 +22220000,baro,488.91504 +22220000,imu,-0.18847267,0.08973198,-9.903337,-0.019288758,-0.011805747,0.00207301 +22220000,mag,0.2,-0.08200001,0.43100002 +22220000,airspeed,-4.3664765,-4.264292 +22224000,airspeed,2.5189912,2.4600487 +22224000,imu,-0.14021564,0.119131505,-9.908651,-0.021231567,-0.014139978,0.002323674 +22224000,mag,0.2,-0.08200001,0.43100002 +22224000,baro,488.8681 +22228000,imu,-0.12835355,0.13660139,-9.885568,-0.015682984,-0.01763487,0.0015251688 +22228000,mag,0.2,-0.08200001,0.43100002 +22228000,airspeed,3.6112053,3.5267026 +22228000,baro,488.88217 +22232000,mag,0.2,-0.08200001,0.43100002 +22232000,airspeed,-4.169954,-4.0723705 +22232000,imu,-0.1510687,0.094924696,-9.852253,-0.013127799,-0.016486758,-0.0019787643 +22232000,baro,488.91037 +22236000,mag,0.2,-0.08200001,0.43100002 +22236000,baro,488.91037 +22236000,imu,-0.12090429,0.12015319,-9.870157,-0.022749048,-0.013812379,-0.0018325798 +22236000,airspeed,0.95675164,0.93436223 +22240000,airspeed,1.7206694,1.6804144 +22240000,imu,-0.09512764,0.16417278,-9.864595,-0.02265912,-0.011718277,-0.006971143 +22240000,mag,0.2,-0.08300001,0.43100002 +22240000,baro,488.79297 +22244000,imu,-0.10955851,0.1681922,-9.863327,-0.022179527,-0.009454212,-0.008575252 +22244000,mag,0.2,-0.08300001,0.43100002 +22244000,airspeed,-2.8812277,-2.813817 +22244000,baro,488.82584 +22252000,baro,488.98547 +22252000,airspeed,1.8168907,1.7743648 +22252000,mag,0.19900002,-0.08100001,0.42800003 +22252000,imu,-0.16936074,0.10886404,-9.795707,-0.0071821962,-0.006552272,0.0046197074 +22256000,baro,488.9714 +22256000,mag,0.19900002,-0.08100001,0.42800003 +22256000,imu,-0.16139458,0.06280593,-9.889919,-0.013679801,-0.008446124,0.0023251106 +22256000,airspeed,-0.79807067,-0.77939206 +22260000,baro,489.02304 +22260000,mag,0.19900002,-0.08100001,0.42800003 +22260000,airspeed,-2.847274,-2.7806253 +22260000,imu,-0.10618877,0.03757981,-9.859219,-0.013560124,-0.009612357,-0.001696533 +22268000,mag,0.19900002,-0.08100001,0.42800003 +22268000,imu,-0.13790478,0.042593535,-9.806347,-0.014733335,0.0006742237,0.006363791 +22268000,airspeed,-2.1788158,-2.127822 +22268000,baro,488.9667 +22272000,mag,0.19900002,-0.08100001,0.42800003 +22272000,airspeed,-4.1461225,-4.0490522 +22272000,baro,489.10284 +22272000,imu,-0.10835601,0.049335677,-9.805391,-0.008952201,0.00049294985,0.0037887956 +22276000,mag,0.19900002,-0.08100001,0.42800003 +22276000,baro,489.06998 +22276000,airspeed,-0.9873957,-0.9642803 +22276000,imu,-0.092522755,0.061069567,-9.843931,-0.008587729,-0.0041469173,0.004451183 +22280000,baro,489.06998 +22280000,airspeed,3.2583694,3.1820893 +22280000,mag,0.19900002,-0.08100001,0.42800003 +22280000,imu,-0.114789315,0.08086074,-9.867868,-0.00913232,-0.006132008,0.0047617517 +22284000,mag,0.19900002,-0.08100001,0.42800003 +22284000,baro,488.88687 +22284000,imu,-0.11508746,0.12790832,-9.8270235,-0.01584719,-0.004599062,0.00036791325 +22284000,airspeed,0.9230276,0.901429 +22292000,imu,-0.14522694,0.09372805,-9.878847,-0.017819578,-0.0066697034,0.0013998547 +22292000,airspeed,-2.525198,-2.4660962 +22292000,mag,0.19900002,-0.08100001,0.42800003 +22292000,baro,488.98077 +22296000,imu,-0.19175279,0.024499834,-9.858769,-0.013656664,-0.008265717,0.0005810891 +22296000,mag,0.19800001,-0.08200001,0.42800003 +22296000,airspeed,2.0385919,1.9908726 +22296000,baro,489.0371 +22300000,imu,-0.1825532,0.07057965,-9.854147,-0.011658184,-0.010448761,-0.0013521584 +22304000,mag,0.19800001,-0.08200001,0.42800003 +22304000,airspeed,2.824738,2.7586272 +22304000,baro,488.97607 +22304000,imu,-0.1228956,0.118959844,-9.900809,-0.013368106,-0.005622602,-0.0017828061 +22312000,mag,0.19800001,-0.08200001,0.42800003 +22312000,imu,-0.130731,0.2558501,-9.94978,-0.015680036,-0.006500325,0.0008614996 +22312000,baro,489.02774 +22312000,airspeed,-3.1959608,-3.121152 +22320000,airspeed,0.47395813,0.462862 +22320000,baro,489.10284 +22320000,mag,0.19800001,-0.08200001,0.42800003 +22320000,imu,-0.1353235,0.07946267,-9.8784,-0.013867692,-0.007290073,-0.0028511686 +22320000,landed,0.0 +22324000,imu,-0.08541176,0.14019696,-9.908434,-0.012264004,-0.0045005768,-0.007533585 +22324000,baro,488.93854 +22324000,mag,0.19800001,-0.08200001,0.42800003 +22324000,airspeed,4.126505,4.0299373 +22328000,mag,0.19800001,-0.08200001,0.42800003 +22328000,imu,-0.12151527,0.15539734,-9.944886,-0.013500378,-0.0050422656,3.544315e-05 +22328000,baro,489.16388 +22328000,airspeed,3.3258324,3.247958 +22336000,mag,0.19800001,-0.08200001,0.42800003 +22336000,imu,-0.20895486,0.091512084,-9.936682,-0.007841909,-0.004688848,0.005882904 +22336000,baro,489.03244 +22336000,airspeed,-1.2204381,-1.1918713 +22340000,imu,-0.12993726,0.090873815,-9.964616,-0.010350186,-0.008906947,0.0019545916 +22340000,airspeed,-2.2321382,-2.1798904 +22344000,airspeed,1.4149146,1.3818047 +22344000,mag,0.19800001,-0.08200001,0.42800003 +22344000,baro,488.91974 +22344000,imu,-0.13338795,0.11374986,-10.016538,-0.009762561,-0.011152923,0.0013179609 +22348000,mag,0.19600001,-0.08300001,0.43100002 +22348000,baro,488.9714 +22348000,imu,-0.18938626,0.13046399,-10.009215,-0.0053915894,-0.014546241,0.0010791528 +22348000,airspeed,2.9097946,2.8416953 +22352000,airspeed,-2.4945767,-2.4361951 +22352000,imu,-0.18894106,0.11219072,-9.975118,-0.0037537692,-0.013320723,0.0019346364 +22356000,mag,0.19600001,-0.08300001,0.43100002 +22356000,airspeed,-1.3081636,-1.2775251 +22356000,baro,489.27658 +22356000,imu,-0.15454437,0.14485618,-9.996495,-0.0005968952,-0.010304367,0.0021918737 +22360000,imu,-0.1208721,0.1642686,-9.984135,-4.659712e-05,-0.009711833,-0.0012289095 +22360000,airspeed,3.1052358,3.0325239 +22360000,baro,489.18735 +22360000,mag,0.19600001,-0.08300001,0.43100002 +22364000,imu,-0.12064341,0.08757942,-9.883703,0.0006181365,-0.01443816,0.00021003345 +22364000,baro,489.06528 +22364000,mag,0.19600001,-0.08300001,0.43100002 +22364000,airspeed,-2.6342926,-2.5726275 +22368000,baro,489.06528 +22368000,imu,-0.19200769,0.044233385,-9.825624,0.006197648,-0.010823314,0.0016190906 +22368000,airspeed,-0.488394,-0.4769614 +22372000,airspeed,2.1019936,2.0527856 +22372000,baro,489.08878 +22372000,mag,0.19600001,-0.08300001,0.43100002 +22372000,imu,-0.12162918,0.031060385,-9.874339,0.0028451055,-0.004905402,6.9657384e-05 +22376000,mag,0.19600001,-0.08300001,0.43100002 +22376000,airspeed,-1.6486219,-1.6100032 +22376000,imu,-0.09908272,0.017071174,-9.976183,-0.005143586,-0.0054577286,0.0018099516 +22376000,baro,489.3423 +22384000,airspeed,-2.7627513,-2.6980507 +22384000,baro,489.2437 +22384000,imu,-0.101585545,0.14972211,-9.9307995,0.0010068889,-0.012905068,0.0025623413 +22384000,mag,0.19600001,-0.08300001,0.43100002 +22388000,airspeed,3.5095122,3.4273353 +22388000,imu,-0.13454841,0.08840513,-9.9141865,-0.00012510788,-0.012115941,0.0060949256 +22388000,mag,0.19600001,-0.08300001,0.43100002 +22388000,baro,489.19205 +22392000,airspeed,-2.6459587,-2.5840023 +22392000,baro,489.19205 +22392000,mag,0.19600001,-0.08300001,0.43100002 +22392000,imu,-0.1947845,0.104229495,-9.9659605,-0.0071748514,-0.009242211,0.003117839 +22396000,baro,489.08878 +22396000,mag,0.19600001,-0.08300001,0.43100002 +22396000,imu,-0.18247363,0.07971917,-10.037409,-0.007920659,-0.013491982,0.0023428455 +22396000,airspeed,4.4224186,4.318892 +22400000,mag,0.19800001,-0.084000014,0.42700002 +22400000,baro,489.29065 +22400000,imu,-0.13272958,0.12685865,-9.990025,-0.009608301,-0.01437933,0.0024352153 +22400000,airspeed,3.941199,3.848891 +22404000,mag,0.19800001,-0.084000014,0.42700002 +22404000,baro,489.29065 +22404000,imu,-0.17538574,0.14399926,-9.893543,-0.0063896165,-0.011455529,-0.0055942778 +22404000,airspeed,-0.9470412,-0.9248603 +22408000,mag,0.19800001,-0.084000014,0.42700002 +22408000,imu,-0.21879746,0.10119222,-9.9066515,-0.0047551203,-0.0109776575,-0.00015514447 +22408000,baro,489.0371 +22408000,airspeed,3.7821062,3.6935806 +22412000,baro,489.2437 +22412000,imu,-0.1618545,0.09714483,-10.002922,-0.008760428,-0.012318698,-0.0012183755 +22412000,mag,0.19800001,-0.084000014,0.42700002 +22412000,airspeed,-3.0868971,-3.0146067 +22416000,baro,488.99017 +22416000,imu,-0.105611734,0.08829863,-10.0270405,-0.010375718,-0.0108733075,-0.0045074215 +22416000,airspeed,-1.1838921,-1.1561848 +22416000,mag,0.19800001,-0.084000014,0.42700002 +22420000,airspeed,3.1004355,3.0278423 +22420000,gps,489413.0,85456083.0,473977501.0,-0.02,0.04,-1.42 +22420000,baro,489.16858 +22420000,mag,0.19800001,-0.084000014,0.42700002 +22420000,imu,-0.09926375,0.06011182,-9.9796295,-0.012064046,-0.01091837,-0.00041115025 +22428000,airspeed,2.6697137,2.607222 +22428000,mag,0.19800001,-0.084000014,0.42700002 +22428000,baro,489.06528 +22428000,imu,-0.07710511,0.12090736,-9.944959,-0.010564166,-0.019502982,-0.0030795818 +22432000,airspeed,-2.5621421,-2.5021684 +22432000,mag,0.19800001,-0.084000014,0.42700002 +22432000,baro,489.06528 +22432000,imu,-0.07584942,0.07861947,-9.979214,-0.006154593,-0.01402799,-0.002801854 +22436000,mag,0.19800001,-0.084000014,0.42700002 +22436000,baro,489.1498 +22436000,airspeed,2.2082691,2.156568 +22436000,imu,-0.19558854,0.030660206,-10.024742,-0.0069887876,-0.007599471,-0.0046374286 +22444000,imu,-0.08083082,0.15601322,-9.946353,-0.010809751,-0.02083515,0.0018239302 +22444000,mag,0.19800001,-0.084000014,0.42700002 +22444000,airspeed,1.2452638,1.2161055 +22444000,baro,489.20145 +22448000,baro,489.31882 +22448000,airspeed,-3.8495991,-3.7594326 +22448000,imu,-0.06957136,0.13721053,-10.009583,-0.0061375066,-0.013171106,0.004474573 +22448000,mag,0.19800001,-0.084000014,0.42700002 +22452000,mag,0.2,-0.08000001,0.42700002 +22452000,airspeed,-2.5275984,-2.4684005 +22452000,baro,489.29065 +22452000,imu,-0.1179776,0.119633,-10.010874,-0.003314341,-0.013753617,0.007846614 +22456000,mag,0.2,-0.08000001,0.42700002 +22456000,airspeed,-3.9291246,-3.837136 +22456000,baro,489.1451 +22456000,imu,-0.10680607,0.12909052,-9.96779,-0.00413426,-0.016549949,0.0049648457 +22464000,imu,-0.14816791,0.118714266,-9.981374,-0.012718507,-0.01368303,-0.000854423 +22464000,mag,0.2,-0.08000001,0.42700002 +22464000,airspeed,-1.8690872,-1.8253087 +22464000,baro,489.32822 +22472000,airspeed,3.2708955,3.194298 +22472000,baro,489.25308 +22472000,mag,0.2,-0.08000001,0.42700002 +22472000,imu,-0.20538656,0.10252656,-9.944133,0.0037599541,-0.01801232,5.2955627e-05 +22476000,airspeed,-1.8259628,-1.7832026 +22476000,imu,-0.18601696,0.03286067,-9.928836,-0.0021570537,-0.01145407,0.00034583997 +22476000,mag,0.2,-0.08000001,0.42700002 +22476000,baro,489.25308 +22480000,mag,0.2,-0.08000001,0.42700002 +22480000,airspeed,-2.294678,-2.2409384 +22480000,imu,-0.16115627,0.106372334,-9.902284,-0.0036287096,-0.012492819,0.00047653142 +22480000,baro,489.27658 +22484000,imu,-0.20481463,0.20207319,-9.9517355,0.0033446017,-0.022654718,-0.0023271646 +22484000,mag,0.2,-0.08000001,0.42700002 +22484000,airspeed,-1.3009673,-1.2704976 +22484000,baro,489.30475 +22488000,imu,-0.17996499,0.20681046,-10.023885,0.009806083,-0.023097705,0.0028003198 +22488000,airspeed,2.9151783,2.8469024 +22488000,mag,0.2,-0.08000001,0.42700002 +22488000,baro,489.30475 +22492000,mag,0.2,-0.08000001,0.42700002 +22492000,imu,-0.14103027,0.12922366,-10.047733,0.0073085492,-0.021643043,0.006027501 +22492000,baro,489.21085 +22492000,airspeed,3.8238373,3.734301 +22496000,imu,-0.17800076,0.03079435,-9.974464,0.0033684706,-0.019694747,-0.0038095145 +22496000,airspeed,3.1215403,3.0484262 +22500000,baro,489.239 +22500000,imu,-0.1231448,-0.027064206,-9.907541,0.0016697762,-0.024512654,-0.0024193174 +22500000,airspeed,1.699396,1.6596017 +22500000,mag,0.201,-0.08000001,0.42700002 +22504000,baro,489.347 +22504000,mag,0.201,-0.08000001,0.42700002 +22504000,imu,-0.06761914,0.043002486,-9.879014,-0.00402496,-0.026273156,0.004568709 +22504000,airspeed,-2.967362,-2.8978574 +22508000,imu,-0.07440891,0.13304985,-9.942592,-0.0053296876,-0.022942077,0.010101637 +22508000,baro,489.37045 +22508000,mag,0.19900002,-0.08200001,0.42900002 +22508000,airspeed,2.3822496,2.3264475 +22512000,airspeed,2.8136947,2.7478113 +22512000,imu,-0.11220655,0.19047321,-9.949094,0.0018252011,-0.02032436,0.011785474 +22512000,baro,489.21555 +22512000,mag,0.2,-0.08200001,0.42900002 +22516000,imu,-0.1724395,0.11048517,-9.945906,0.0010079409,-0.0225607,0.0006397429 +22516000,airspeed,-2.4276974,-2.3708277 +22516000,baro,489.39395 +22516000,mag,0.2,-0.08200001,0.42900002 +22524000,airspeed,-2.2205296,-2.168521 +22524000,imu,-0.13945243,0.07858823,-9.897161,0.0009084254,-0.014749732,-0.0025715963 +22524000,mag,0.2,-0.08200001,0.42900002 +22524000,baro,489.33292 +22528000,mag,0.2,-0.08200001,0.42900002 +22528000,baro,489.29535 +22532000,imu,-0.17370895,0.087284565,-9.914566,0.0005150785,-0.022515304,-0.008624235 +22532000,mag,0.2,-0.08200001,0.42900002 +22532000,airspeed,2.4400935,2.3829277 +22532000,baro,489.4362 +22540000,imu,-0.1730455,0.09969987,-9.859507,0.0047233095,-0.011953878,0.0038484312 +22540000,baro,489.35168 +22540000,airspeed,3.1315024,3.0581546 +22540000,mag,0.2,-0.08200001,0.42900002 +22544000,airspeed,2.352153,2.2970564 +22544000,imu,-0.13249937,0.05832905,-9.929331,0.0011572359,-0.013706679,0.009570731 +22544000,baro,489.37515 +22544000,mag,0.2,-0.08200001,0.42900002 +22548000,airspeed,-0.44350943,-0.43311995 +22548000,mag,0.2,-0.08200001,0.42900002 +22548000,baro,489.40332 +22548000,imu,-0.14984997,0.118343934,-9.876231,0.000600384,-0.01884792,0.008223071 +22556000,baro,489.46906 +22556000,imu,-0.13413782,0.1331245,-9.893191,-0.005125276,-0.02048994,-0.004347469 +22556000,airspeed,3.7558146,3.6678183 +22556000,mag,0.2,-0.08200001,0.42900002 +22560000,airspeed,-2.7652194,-2.7004454 +22560000,imu,-0.13115449,0.13289708,-9.881727,-0.0038345451,-0.022462621,-0.0037748748 +22564000,imu,-0.1876433,0.16589135,-9.845183,-0.0038166544,-0.014774716,-0.00028782894 +22564000,airspeed,3.1773908,3.1029618 +22564000,baro,489.39395 +22564000,mag,0.201,-0.07800001,0.42700002 +22568000,imu,-0.21294181,0.118279964,-9.860224,-0.008361089,-0.00868003,0.0073873876 +22568000,baro,489.24838 +22568000,mag,0.201,-0.07800001,0.42700002 +22568000,airspeed,1.5138465,1.4783982 +22576000,airspeed,2.5749898,2.514663 +22576000,imu,-0.07528496,0.116821304,-9.87258,-0.0028122861,-0.01602077,0.0046053994 +22576000,mag,0.201,-0.07800001,0.42700002 +22576000,baro,489.455 +22580000,imu,-0.14259882,0.10284485,-9.857375,0.0013304488,-0.013678087,-0.0033752478 +22580000,baro,489.32822 +22580000,mag,0.201,-0.07800001,0.42700002 +22580000,airspeed,3.1301346,3.0568247 +22584000,airspeed,-3.6123297,-3.5277255 +22584000,mag,0.201,-0.07800001,0.42700002 +22584000,imu,-0.20111166,0.10286649,-9.843833,-0.004165215,-0.011864882,-0.0016232425 +22584000,baro,489.33292 +22588000,mag,0.201,-0.07800001,0.42700002 +22588000,airspeed,0.3786565,0.36978802 +22588000,imu,-0.16993141,0.043917306,-9.881421,-0.0026148506,-0.00761109,0.0048331916 +22588000,baro,489.33292 +22592000,airspeed,-3.974176,-3.88107 +22592000,imu,-0.2000157,0.096224084,-9.954505,0.0005414155,-0.006287376,0.00403356 +22592000,baro,489.455 +22592000,mag,0.201,-0.07800001,0.42700002 +22596000,mag,0.201,-0.07800001,0.42700002 +22596000,imu,-0.1657545,0.17768924,-10.020082,9.354374e-05,-0.006871409,0.004530225 +22596000,baro,489.57706 +22596000,airspeed,-2.1433382,-2.0931091 +22600000,airspeed,2.4839005,2.4257112 +22600000,mag,0.201,-0.07800001,0.42700002 +22600000,baro,489.4362 +22600000,imu,-0.14877887,0.10633134,-10.012978,0.00068088673,-0.00869532,8.1116545e-05 +22604000,baro,489.48785 +22604000,imu,-0.15542434,0.11265758,-10.027198,0.0002586572,-0.00707662,0.00061781076 +22604000,mag,0.201,-0.07800001,0.42700002 +22604000,airspeed,2.6541426,2.5919566 +22608000,imu,-0.18128757,0.14363053,-9.967522,0.008768851,-0.0034583285,0.0025023518 +22608000,mag,0.201,-0.07800001,0.42700002 +22608000,baro,489.38925 +22608000,airspeed,2.002972,1.9560549 +22612000,mag,0.2,-0.08300001,0.42700002 +22612000,airspeed,1.838225,1.7951636 +22612000,imu,-0.1998664,0.14160278,-9.929325,0.011623551,-0.0049983705,0.0030543418 +22612000,baro,489.41742 +22616000,baro,489.60522 +22616000,airspeed,-2.8431525,-2.7765198 +22616000,imu,-0.11520785,0.14081894,-9.975041,0.0063673104,-0.009341801,0.0064681065 +22616000,mag,0.2,-0.08300001,0.42700002 +22620000,mag,0.2,-0.08300001,0.42700002 +22620000,imu,-0.1069214,0.13649723,-9.921292,0.00819961,-0.0076689804,0.0032215752 +22620000,baro,489.59583 +22620000,gps,489711.0,85456085.0,473977500.0,-0.049999997,0.03,-1.4399999 +22620000,airspeed,-2.951225,-2.882061 +22624000,baro,489.5254 +22624000,airspeed,-1.7740139,-1.7324462 +22624000,mag,0.2,-0.08300001,0.42700002 +22624000,imu,-0.20424247,0.1122141,-9.913387,0.0045091407,-0.003910551,0.0011947805 +22628000,baro,489.5489 +22628000,airspeed,-3.022637,-2.9518075 +22628000,imu,-0.20468271,0.059580445,-10.010824,-0.0022568875,-0.005165576,0.0018236331 +22628000,mag,0.2,-0.08300001,0.42700002 +22636000,imu,-0.20845546,0.10295053,-9.916426,-0.0050902306,-0.014135988,0.00197666 +22636000,baro,489.50192 +22636000,mag,0.2,-0.08300001,0.42700002 +22636000,airspeed,-1.5313843,-1.4955039 +22640000,airspeed,-1.2716517,-1.2418615 +22640000,imu,-0.1352931,0.11084773,-9.982125,-0.0017602196,-0.009996753,-0.0009219354 +22640000,mag,0.2,-0.08300001,0.42700002 +22640000,baro,489.4409 +22644000,airspeed,3.7490935,3.6612618 +22644000,imu,-0.09084922,0.16864349,-9.89595,-0.0031471732,-0.010716901,0.0029190998 +22644000,mag,0.2,-0.08300001,0.42700002 +22644000,baro,489.4597 +22648000,airspeed,-1.0389559,-1.0146097 +22648000,imu,-0.10550743,0.1600493,-9.924801,-0.0036331739,-0.012359578,-2.7393455e-05 +22648000,mag,0.2,-0.08300001,0.42700002 +22648000,baro,489.56296 +22652000,baro,489.57236 +22652000,airspeed,3.4600813,3.378999 +22652000,mag,0.2,-0.08300001,0.42700002 +22652000,imu,-0.17203467,0.08859947,-9.973857,-0.003053745,-0.012799923,0.00025138215 +22656000,mag,0.2,-0.08300001,0.42700002 +22656000,airspeed,2.1181288,2.068524 +22656000,imu,-0.19670773,0.0963455,-9.9744215,-0.009779318,-0.014156224,0.0034797427 +22656000,baro,489.32352 +22660000,mag,0.201,-0.084000014,0.42900002 +22660000,airspeed,-2.5626154,-2.502558 +22660000,imu,-0.20139293,0.15285094,-9.946846,-0.013557479,-0.018209284,0.009876699 +22660000,baro,489.6146 +22664000,baro,489.6146 +22664000,mag,0.201,-0.084000014,0.42900002 +22664000,imu,-0.24230075,0.15155348,-9.916402,-0.008186056,-0.018490689,0.006305708 +22664000,airspeed,2.444659,2.387366 +22668000,baro,489.55826 +22668000,imu,-0.21494953,0.14530213,-9.919049,-0.0070938976,-0.0157413,-0.0027168114 +22668000,airspeed,-3.7359135,-3.6483707 +22668000,mag,0.201,-0.084000014,0.42900002 +22672000,imu,-0.19836034,0.16729559,-9.9484005,-0.00086213415,-0.017741244,-0.00036063982 +22672000,mag,0.201,-0.084000014,0.42900002 +22672000,airspeed,2.5645666,2.5044515 +22672000,baro,489.69443 +22680000,imu,-0.16353993,0.191189,-9.92777,0.00045663,-0.010344368,0.0034301355 +22680000,airspeed,-1.0134914,-0.9897397 +22680000,baro,489.60992 +22680000,mag,0.201,-0.084000014,0.42900002 +22684000,airspeed,2.2171829,2.1652212 +22684000,imu,-0.09755232,0.21939625,-9.872299,0.0027428565,-0.008319248,-0.0013735582 +22684000,baro,489.6193 +22684000,mag,0.201,-0.084000014,0.42900002 +22688000,airspeed,4.833577,4.7202983 +22688000,baro,489.6193 +22688000,imu,-0.13365123,0.14765137,-9.912924,0.0023863155,-0.011760422,-0.003687232 +22688000,mag,0.201,-0.084000014,0.42900002 +22692000,airspeed,-1.2701093,-1.2403369 +22692000,mag,0.201,-0.084000014,0.42900002 +22692000,imu,-0.15147258,0.1041638,-9.914855,-0.001014515,-0.0096068485,-0.0010911205 +22692000,baro,489.70383 +22696000,baro,489.4362 +22696000,imu,-0.14090258,0.15761055,-9.95846,0.0047882646,-0.0042439466,0.00015853133 +22696000,mag,0.201,-0.084000014,0.42900002 +22696000,airspeed,2.3007324,2.2468376 +22700000,airspeed,-2.6390078,-2.5771637 +22700000,baro,489.59583 +22700000,mag,0.201,-0.084000014,0.42900002 +22700000,imu,-0.18363367,0.17609592,-9.927564,0.007367623,-0.009579212,0.002463665 +22704000,imu,-0.20600691,0.10942109,-9.871904,0.0030483287,-0.007501612,0.002337883 +22708000,mag,0.201,-0.084000014,0.42900002 +22708000,imu,-0.19013692,0.123483926,-9.96536,0.0031261116,-0.0019961447,-0.003604299 +22708000,baro,489.60992 +22708000,airspeed,-0.8899143,-0.8690591 +22712000,airspeed,-0.93128943,-0.90946174 +22712000,imu,-0.18462224,0.12743998,-9.989871,0.007642186,-0.011100143,-0.0027786146 +22712000,baro,489.66626 +22712000,mag,0.202,-0.08200001,0.42800003 +22716000,imu,-0.1435772,0.0528997,-9.932891,0.0020848266,-0.011853605,-0.0008197851 +22716000,airspeed,2.467824,2.409983 +22716000,mag,0.202,-0.08200001,0.42800003 +22716000,baro,489.66626 +22724000,airspeed,2.2082145,2.1564481 +22724000,baro,489.74136 +22724000,imu,-0.121351026,0.13859041,-9.867979,-0.0005708219,-0.016231123,-0.0074285883 +22724000,mag,0.202,-0.08200001,0.42800003 +22732000,airspeed,1.7120444,1.6718996 +22732000,baro,489.84467 +22732000,imu,-0.16400866,0.10909391,-9.930559,0.0020867886,-0.015079536,-0.011646633 +22732000,mag,0.202,-0.08200001,0.42800003 +22736000,airspeed,-0.5386067,-0.52598137 +22736000,imu,-0.16837606,0.15997975,-9.959113,-0.000518659,-0.014865436,-0.0060641454 +22740000,imu,-0.13613641,0.09683832,-9.919026,-0.0049337847,-0.015528249,-0.00527624 +22740000,baro,489.59583 +22740000,airspeed,3.30867,3.2311354 +22740000,mag,0.202,-0.08200001,0.42800003 +22748000,baro,489.58643 +22748000,imu,-0.21131708,0.048811562,-9.968322,-0.0060253297,-0.015100501,-0.0007140204 +22748000,airspeed,-1.7818244,-1.7400708 +22748000,mag,0.202,-0.08200001,0.42800003 +22752000,imu,-0.17204973,0.070337206,-9.987832,-0.0013185717,-0.01624292,-0.0021342621 +22752000,baro,489.56296 +22752000,mag,0.202,-0.08200001,0.42800003 +22756000,mag,0.202,-0.08200001,0.42800003 +22756000,baro,489.68973 +22756000,imu,-0.18536782,0.091759816,-9.968896,-0.00046127045,-0.018967852,-0.009108214 +22756000,airspeed,3.8421848,3.7521276 +22760000,imu,-0.1681953,0.13270317,-9.981713,0.00050669146,-0.016835231,-0.006050702 +22760000,airspeed,3.5470006,3.4638693 +22764000,airspeed,-3.78111,-3.6924918 +22764000,mag,0.202,-0.08200001,0.42800003 +22764000,baro,489.65686 +22764000,imu,-0.12891439,0.1322663,-10.00922,-0.0039193514,-0.016062038,-0.0020785471 +22768000,mag,0.19900002,-0.084000014,0.42800003 +22768000,airspeed,-3.6260405,-3.5410125 +22768000,baro,489.86813 +22768000,imu,-0.17718947,0.10534148,-9.948164,-0.012730583,-0.016557442,-0.0071343207 +22772000,airspeed,0.83578384,0.81618536 +22772000,mag,0.19900002,-0.084000014,0.42800003 +22772000,baro,489.86813 +22772000,imu,-0.17625192,0.10346393,-9.957915,-0.01484124,-0.019089464,-0.007453957 +22776000,mag,0.19900002,-0.084000014,0.42800003 +22776000,baro,489.79303 +22780000,mag,0.19900002,-0.084000014,0.42800003 +22780000,airspeed,2.315456,2.2611706 +22780000,baro,489.79303 +22780000,imu,-0.1158134,0.1526513,-9.886713,-0.0054867114,-0.015829185,-0.001527745 +22784000,imu,-0.1527245,0.13864203,-9.871759,-0.00493194,-0.02010808,-0.00631999 +22784000,baro,489.77423 +22784000,mag,0.19900002,-0.084000014,0.42800003 +22784000,airspeed,-3.1804404,-3.1058803 +22788000,airspeed,-1.8360124,-1.7929701 +22788000,imu,-0.18258424,0.16432631,-9.920521,-0.0056467294,-0.016306642,-0.0066209864 +22788000,baro,489.77423 +22788000,mag,0.19900002,-0.084000014,0.42800003 +22792000,airspeed,2.4279017,2.3709986 +22792000,imu,-0.17750877,0.16108277,-9.952251,-0.0070468164,-0.013356507,-0.0088899955 +22792000,baro,489.67096 +22792000,mag,0.19900002,-0.084000014,0.42800003 +22796000,mag,0.19900002,-0.084000014,0.42800003 +22796000,airspeed,0.91749704,0.8959935 +22796000,imu,-0.14108564,0.10766623,-10.022159,-0.013083624,-0.020444248,-0.007563608 +22796000,baro,489.67096 +22800000,mag,0.19900002,-0.084000014,0.42800003 +22800000,baro,489.60522 +22800000,imu,-0.13546893,0.09870646,-10.043726,-0.0068785646,-0.019100606,-0.006282383 +22800000,airspeed,3.5307586,3.4480212 +22808000,airspeed,2.4996068,2.4409995 +22808000,mag,0.19900002,-0.084000014,0.42800003 +22808000,baro,489.83527 +22808000,imu,-0.16368236,0.14865495,-9.9368105,-0.0092870025,-0.016187293,-0.013430613 +22812000,mag,0.19900002,-0.084000014,0.42800003 +22812000,airspeed,-3.2210073,-3.14549 +22812000,baro,489.8118 +22812000,imu,-0.20313147,0.1953591,-9.954332,-0.0072418875,-0.013950985,-0.004421112 +22816000,mag,0.201,-0.07800001,0.43 +22816000,airspeed,1.7717212,1.7301836 +22816000,imu,-0.19297253,0.15923515,-9.944616,-0.0032166904,-0.013272139,-0.003020289 +22816000,baro,489.8071 +22820000,gps,489998.0,85456086.0,473977499.0,-0.049999997,0.02,-1.4499999 +22824000,mag,0.201,-0.07800001,0.43 +22824000,baro,489.68973 +22824000,imu,-0.14626335,0.16484953,-9.882319,-0.006151804,-0.013813881,-0.004215187 +22824000,airspeed,4.9635777,4.8472424 +22828000,imu,-0.13126774,0.17638035,-9.959923,-0.010039945,-0.008492331,-0.0018596032 +22828000,mag,0.201,-0.07800001,0.43 +22828000,airspeed,-2.0258348,-1.9783485 +22828000,baro,489.732 +22832000,imu,-0.22568114,0.111642554,-10.000549,-0.012782398,-0.008615252,-0.007158106 +22832000,mag,0.201,-0.07800001,0.43 +22832000,airspeed,1.0207314,0.99680126 +22832000,baro,489.7977 +22840000,imu,-0.15031832,0.14838527,-9.884058,-0.011789834,-0.00927114,-0.013419556 +22840000,airspeed,3.550784,3.467556 +22840000,baro,489.7179 +22840000,mag,0.201,-0.07800001,0.43 +22844000,mag,0.201,-0.07800001,0.43 +22844000,baro,489.7179 +22848000,airspeed,4.000419,3.906599 +22848000,imu,-0.20409931,0.10984326,-9.864694,-0.0043812077,-0.008241487,-0.013598479 +22852000,mag,0.201,-0.07800001,0.43 +22852000,airspeed,1.2205923,1.1919748 +22852000,baro,489.8259 +22852000,imu,-0.22155511,0.14653476,-9.861918,-0.0020913773,-0.010001027,-0.0068787145 +22856000,mag,0.201,-0.07800001,0.43 +22856000,baro,489.8259 +22856000,imu,-0.15707137,0.15701368,-9.855678,-0.0050918236,-0.0066073295,-0.002033456 +22856000,airspeed,-2.0244997,-1.9770341 +22864000,mag,0.201,-0.07800001,0.43 +22864000,imu,-0.22211485,0.062943086,-9.925376,-4.7359063e-05,-0.0086544305,-0.0019892012 +22864000,baro,489.84937 +22864000,airspeed,0.34396425,0.33589944 +22868000,airspeed,0.6627715,0.6472313 +22872000,baro,489.9996 +22872000,mag,0.20300001,-0.08000001,0.42600003 +22872000,imu,-0.15090397,0.106782466,-9.8985405,-0.0046498072,-0.00714198,-0.0049933726 +22872000,airspeed,-2.8174665,-2.7513816 +22876000,baro,489.9996 +22876000,imu,-0.15557952,0.09493259,-9.939239,-0.0059866193,-0.010958375,-0.0056943214 +22876000,airspeed,-4.0882134,-3.9923227 +22876000,mag,0.20300001,-0.08000001,0.42600003 +22880000,imu,-0.18890256,0.06305733,-9.870421,-0.002111414,-0.01304257,-0.0063791466 +22880000,baro,490.0888 +22880000,airspeed,2.268161,2.2149491 +22880000,mag,0.20300001,-0.08000001,0.42600003 +22884000,baro,489.94327 +22884000,airspeed,-1.202825,-1.1746165 +22884000,mag,0.20300001,-0.08000001,0.42600003 +22884000,imu,-0.19404246,0.055250153,-9.891658,0.004372818,-0.01296078,-0.0076512117 +22892000,airspeed,2.9329205,2.86414 +22892000,mag,0.20300001,-0.08000001,0.42600003 +22892000,imu,-0.19662681,0.086139835,-9.960516,0.0022382634,-0.012184666,-0.0036905939 +22892000,baro,489.93387 +22896000,mag,0.20300001,-0.08000001,0.42600003 +22896000,baro,489.83527 +22896000,imu,-0.17548141,0.11362508,-9.937096,-0.0005358516,-0.013107272,-0.009653077 +22896000,airspeed,-3.2936976,-3.216476 +22900000,baro,489.83527 +22900000,imu,-0.14093828,0.18129659,-9.902564,-0.0020421704,-0.010453183,-0.009013359 +22900000,mag,0.20300001,-0.08000001,0.42600003 +22900000,airspeed,-2.4252446,-2.3683841 +22904000,imu,-0.18696629,0.23257612,-9.906948,0.0002627402,-0.010172519,-0.0017583255 +22904000,airspeed,-2.7584915,-2.6937847 +22904000,mag,0.20300001,-0.08000001,0.42600003 +22904000,baro,490.04654 +22912000,imu,-0.17061359,0.090944886,-9.926488,0.0011676712,-0.01246248,-0.01547076 +22912000,airspeed,0.31491187,0.30752504 +22912000,baro,490.03717 +22912000,mag,0.20300001,-0.08000001,0.42600003 +22916000,mag,0.20300001,-0.08000001,0.42600003 +22916000,baro,490.03717 +22916000,imu,-0.1878702,0.10963123,-9.898324,-0.00034563564,-0.013601311,-0.012749925 +22916000,airspeed,2.578292,2.5178132 +22920000,mag,0.20300001,-0.08000001,0.42600003 +22920000,imu,-0.14701252,0.108135685,-9.941514,-0.005548043,-0.009192541,-0.0034646664 +22920000,baro,489.83997 +22920000,airspeed,-1.1411254,-1.1143717 +22928000,baro,489.96674 +22928000,mag,0.2,-0.07900001,0.42900002 +22928000,airspeed,-4.1482964,-4.051008 +22928000,imu,-0.18566199,0.117207594,-9.888128,-0.0050230483,-0.012396004,-0.005489176 +22932000,imu,-0.11912211,0.15269598,-9.949951,-0.0012997895,-0.01658278,-0.0024102945 +22932000,airspeed,-3.2786236,-3.2017174 +22932000,baro,490.04184 +22932000,mag,0.2,-0.07900001,0.42900002 +22936000,imu,-0.066710405,0.14092177,-9.854268,-0.0009389617,-0.012356244,-0.0057889656 +22936000,airspeed,2.0138152,1.9665971 +22936000,baro,489.87753 +22936000,mag,0.2,-0.07900001,0.42900002 +22940000,imu,-0.0991017,0.124000184,-9.905311,-0.0058232704,-0.014453253,-0.011659156 +22940000,airspeed,2.0947022,2.045568 +22940000,mag,0.2,-0.07900001,0.42900002 +22940000,baro,490.03717 +22944000,imu,-0.16748823,0.19159335,-9.95369,-0.0045551136,-0.016059728,-0.008115045 +22944000,airspeed,2.4163914,2.3597124 +22944000,mag,0.2,-0.07900001,0.42900002 +22944000,baro,490.03247 +22948000,imu,-0.2201088,0.23776326,-9.931271,-0.0020549758,-0.012591974,-0.0070113484 +22948000,mag,0.2,-0.07900001,0.42900002 +22948000,airspeed,-0.8973411,-0.87629294 +22948000,baro,490.03247 +22952000,baro,489.8916 +22952000,imu,-0.22640929,0.17720774,-9.982638,-0.0021989653,-0.012713466,-0.008571011 +22952000,mag,0.2,-0.07900001,0.42900002 +22952000,airspeed,3.104221,3.0314343 +22956000,mag,0.2,-0.07900001,0.42900002 +22956000,imu,-0.16862723,0.099741116,-9.925816,-0.0022412366,-0.014184204,-0.0033956314 +22956000,baro,490.15454 +22956000,airspeed,2.2880118,2.234328 +22960000,airspeed,3.404687,3.3248744 +22960000,mag,0.2,-0.07900001,0.42900002 +22960000,imu,-0.1211987,0.024709802,-9.942643,-0.0010801945,-0.016185854,-0.0041237636 +22960000,baro,489.7977 +22968000,imu,-0.13835871,0.1495098,-10.004797,-0.0016874041,-0.021063192,-0.0056961407 +22968000,airspeed,-1.5532892,-1.5168658 +22968000,mag,0.2,-0.07900001,0.42900002 +22968000,baro,489.91977 +22972000,imu,-0.1880657,0.19074388,-9.882584,-0.005332907,-0.019537916,-0.0054344307 +22972000,mag,0.2,-0.08100001,0.43 +22972000,baro,490.02777 +22972000,airspeed,-1.4125221,-1.3793912 +22976000,airspeed,-1.9764111,-1.9300541 +22976000,mag,0.2,-0.08100001,0.43 +22976000,baro,490.02777 +22976000,imu,-0.16702597,0.13189054,-9.868841,-0.0069760815,-0.018265378,-0.0033183896 +22980000,baro,490.11697 +22980000,airspeed,3.0050006,2.9345016 +22980000,mag,0.2,-0.08100001,0.43 +22980000,imu,-0.1424907,0.09117579,-9.949134,-0.0046366733,-0.012302013,-0.005694169 +22984000,airspeed,3.0419877,2.970621 +22984000,baro,490.11697 +22984000,imu,-0.26824757,0.16430093,-9.993012,-0.0027509378,-0.008768205,-0.010417527 +22984000,mag,0.2,-0.08100001,0.43 +22988000,airspeed,-1.7383069,-1.6975478 +22988000,mag,0.2,-0.08100001,0.43 +22988000,baro,489.901 +22988000,imu,-0.29524153,0.1308694,-9.967987,0.0045082225,-0.008648447,-0.005702875 +22992000,baro,490.02307 +22992000,mag,0.2,-0.08100001,0.43 +22992000,airspeed,0.28106385,0.27447158 +22992000,imu,-0.22768034,0.10410254,-9.896804,0.0003150643,-0.012982574,-0.0036197302 +22996000,imu,-0.15488185,0.12795173,-9.832631,0.00048648592,-0.017015506,-0.0073367953 +22996000,airspeed,2.0022037,1.9552312 +22996000,mag,0.2,-0.08100001,0.43 +22996000,baro,490.12167 +23000000,imu,-0.15606321,0.0977369,-9.820624,0.002394174,-0.012017789,-0.0021028202 +23000000,baro,490.12167 +23000000,airspeed,3.782541,3.6938012 +23000000,mag,0.2,-0.08100001,0.43 +23004000,imu,-0.19627485,0.14119184,-9.870762,-0.00097509177,-0.0073791104,-0.0012156346 +23004000,airspeed,-2.8697455,-2.8024457 +23004000,mag,0.2,-0.08100001,0.43 +23004000,baro,489.97144 +23008000,imu,-0.14242,0.1298219,-9.927139,-0.001899194,-0.009112282,-0.0076079494 +23008000,baro,490.07004 +23008000,mag,0.2,-0.08100001,0.43 +23008000,airspeed,2.184406,2.133166 +23012000,baro,490.0935 +23012000,imu,-0.14489108,0.09636236,-9.925203,-0.0019247797,-0.01502486,-0.010863877 +23012000,mag,0.2,-0.08100001,0.43 +23012000,airspeed,0.94372344,0.9215849 +23016000,imu,-0.21317382,0.15877435,-9.892117,-0.005791722,-0.012690072,-0.00708564 +23016000,baro,490.04654 +23016000,airspeed,0.14081489,0.13751197 +23016000,mag,0.2,-0.08100001,0.43 +23020000,gps,490279.0,85456087.0,473977499.0,-0.03,0.0,-1.4699999 +23020000,baro,490.04654 +23020000,airspeed,-2.522241,-2.4630802 +23020000,mag,0.2,-0.08100001,0.43 +23020000,imu,-0.12619238,0.16481352,-9.901678,-0.0022109128,-0.006609364,-0.0012842574 +23024000,baro,490.04654 +23024000,mag,0.2,-0.08100001,0.43 +23024000,airspeed,-2.5324738,-2.4730732 +23024000,imu,-0.13780682,0.12084987,-9.938453,-0.0015194889,-0.007492032,-0.007641448 +23028000,imu,-0.22738625,0.029177712,-9.9302225,-0.0042730733,-0.009757331,-0.011590537 +23028000,baro,490.178 +23028000,mag,0.201,-0.08100001,0.42600003 +23028000,airspeed,3.1291733,3.055752 +23032000,mag,0.201,-0.08100001,0.42600003 +23032000,baro,489.96674 +23032000,imu,-0.20138948,0.017926244,-9.929913,0.00067237776,-0.014030515,-0.006905727 +23032000,airspeed,3.6931822,3.606574 +23036000,imu,-0.16359593,0.13402344,-9.8822565,0.0027328583,-0.012195609,-0.0058594304 +23036000,baro,490.13574 +23036000,mag,0.201,-0.08100001,0.42600003 +23036000,airspeed,-1.1684145,-1.1410029 +23040000,airspeed,0.04450175,0.04345777 +23040000,mag,0.201,-0.08100001,0.42600003 +23040000,imu,-0.1294725,0.16779119,-9.929223,0.00518432,-0.011607517,-0.0103371395 +23040000,baro,490.11697 +23044000,airspeed,1.9714195,1.9251711 +23044000,imu,-0.16353768,0.12460684,-9.922524,6.973346e-05,-0.013920016,-0.009742794 +23044000,mag,0.201,-0.08100001,0.42600003 +23044000,baro,490.11697 +23048000,mag,0.201,-0.08100001,0.42600003 +23048000,baro,490.0841 +23052000,imu,-0.15666315,0.16625229,-9.887624,-0.008806471,-0.009191925,-0.0068048164 +23052000,mag,0.201,-0.08100001,0.42600003 +23052000,baro,490.0841 +23052000,airspeed,-2.9794466,-2.9095569 +23060000,baro,489.87753 +23060000,airspeed,-1.5245199,-1.4887776 +23060000,imu,-0.13090023,0.15945692,-9.920937,0.0034242063,-0.014028361,-0.011709242 +23060000,mag,0.201,-0.08100001,0.42600003 +23064000,imu,-0.10178923,0.13184592,-9.9254265,-0.0042473213,-0.007843659,-0.005622941 +23064000,airspeed,-0.50856936,-0.49663514 +23064000,baro,490.23904 +23064000,mag,0.201,-0.08100001,0.42600003 +23068000,imu,-0.16971622,0.14038949,-9.87761,-0.006892507,-0.010473108,-0.004798862 +23068000,baro,490.22028 +23068000,airspeed,0.2758677,0.26939446 +23068000,mag,0.201,-0.08100001,0.42600003 +23072000,mag,0.201,-0.08100001,0.42600003 +23072000,imu,-0.26762825,0.12274987,-9.845995,-0.011081012,-0.013398833,-0.004598587 +23072000,baro,490.02777 +23072000,airspeed,1.5409461,1.5048054 +23076000,imu,-0.22992265,0.12109822,-9.858022,-0.009520753,-0.018602816,-0.0073281024 +23076000,airspeed,2.6334996,2.5717075 +23080000,airspeed,-0.4653,-0.45438224 +23080000,imu,-0.18976358,0.16859859,-9.950974,0.0015555082,-0.018979698,-0.011182302 +23080000,mag,0.19800001,-0.08000001,0.42600003 +23080000,baro,490.20148 +23088000,mag,0.19800001,-0.08000001,0.42600003 +23088000,baro,490.20148 +23088000,airspeed,2.8970747,2.829099 +23088000,imu,-0.109284684,0.18190274,-9.976598,-0.0030546284,-0.012503639,-0.0038888813 +23092000,mag,0.19800001,-0.08000001,0.42600003 +23092000,imu,-0.15777886,0.20942564,-9.880031,-0.00091414346,-0.013440511,-0.0013595171 +23092000,baro,490.14044 +23092000,airspeed,-1.7213585,-1.6809756 +23096000,mag,0.19900002,-0.08000001,0.42600003 +23096000,imu,-0.14601335,0.18916151,-9.901844,0.0047686826,-0.014210379,0.00045104008 +23096000,baro,490.0982 +23096000,airspeed,1.5675323,1.530762 +23100000,mag,0.19900002,-0.08000001,0.42600003 +23100000,airspeed,-3.2601995,-3.1837037 +23100000,baro,490.20148 +23100000,imu,-0.16687329,0.13324434,-9.928293,0.0048930435,-0.016048223,-0.0035624995 +23104000,baro,490.20148 +23104000,airspeed,1.5445842,1.5083432 +23104000,imu,-0.17108214,0.1251981,-9.943807,0.006282609,-0.011796995,-0.006669365 +23104000,mag,0.19900002,-0.08000001,0.42600003 +23108000,baro,490.22964 +23108000,imu,-0.19769159,0.15207188,-9.910496,0.005734174,-0.008302943,-0.009634982 +23108000,airspeed,-1.9115863,-1.8667308 +23108000,mag,0.19900002,-0.08000001,0.42600003 +23112000,imu,-0.15337065,0.1950115,-9.904842,0.0041398206,-0.01239969,-0.009201541 +23112000,airspeed,3.301052,3.2235928 +23112000,mag,0.19900002,-0.08000001,0.42600003 +23112000,baro,490.23434 +23116000,baro,490.23434 +23116000,airspeed,-0.21032058,-0.20538539 +23116000,mag,0.19900002,-0.08000001,0.42600003 +23116000,imu,-0.11002027,0.17423248,-9.995585,0.0025692717,-0.006387493,-0.005777823 +23120000,imu,-0.18217343,0.12224863,-10.028461,-0.0020251896,-0.0009418666,-0.0055159046 +23120000,airspeed,-1.5964831,-1.5590057 +23124000,imu,-0.16436194,0.13335136,-9.997254,0.002056417,-0.0036563135,-0.0016347673 +23124000,airspeed,2.5981123,2.5371218 +23124000,mag,0.19900002,-0.08000001,0.42600003 +23124000,baro,490.40338 +23132000,airspeed,-0.53355813,-0.5210382 +23132000,imu,-0.16434504,0.1943947,-9.961483,5.8889436e-05,-0.015701326,-0.0116676185 +23132000,mag,0.202,-0.084000014,0.42800003 +23132000,baro,490.23904 +23136000,mag,0.202,-0.084000014,0.42800003 +23136000,baro,490.0982 +23136000,airspeed,-1.708219,-1.6681496 +23136000,imu,-0.17058676,0.24788643,-9.939503,-0.004099769,-0.017603884,-0.0040476825 +23140000,imu,-0.22947629,0.21241808,-9.91314,-0.0035016388,-0.015245329,-0.0060894242 +23140000,airspeed,-2.4903316,-2.4319255 +23140000,mag,0.202,-0.084000014,0.42800003 +23140000,baro,490.03247 +23144000,baro,490.34235 +23144000,airspeed,2.44707,2.3896348 +23144000,mag,0.202,-0.084000014,0.42800003 +23144000,imu,-0.26284987,0.20225534,-9.917979,-0.007572487,-0.009307731,-0.009438941 +23152000,baro,490.14984 +23152000,mag,0.202,-0.084000014,0.42800003 +23152000,imu,-0.1530107,0.18240659,-9.94386,-0.003600027,-0.008768843,-0.010353265 +23152000,airspeed,2.2745736,2.2212126 +23156000,airspeed,3.2194216,3.1438696 +23156000,mag,0.202,-0.084000014,0.42800003 +23156000,baro,490.28598 +23156000,imu,-0.1877162,0.15060005,-9.9405775,0.00083140517,-0.01602312,-0.0039284057 +23160000,airspeed,-1.1473706,-1.1204478 +23160000,imu,-0.16991384,0.17603303,-9.893794,-0.0032742221,-0.009976177,-0.0024425709 +23164000,imu,-0.11438294,0.15539688,-9.861539,-0.008308622,-0.006506211,-0.0029302838 +23164000,mag,0.202,-0.084000014,0.42800003 +23164000,baro,490.13107 +23164000,airspeed,-1.3619198,-1.3299716 +23168000,imu,-0.09987904,0.127927,-9.914736,-0.0063146628,-0.01322501,-0.002965961 +23168000,airspeed,-2.815761,-2.7496748 +23168000,mag,0.202,-0.084000014,0.42800003 +23168000,baro,490.33295 +23172000,airspeed,1.9142433,1.8693157 +23172000,imu,-0.12518701,0.199057,-9.915874,-0.007331088,-0.0053160493,-0.0063666617 +23172000,baro,490.33295 +23172000,mag,0.202,-0.084000014,0.42800003 +23180000,imu,-0.15539269,0.14018653,-9.882488,-0.0054752007,-0.0062093856,-0.0065262476 +23180000,baro,490.25314 +23180000,mag,0.202,-0.084000014,0.42800003 +23180000,airspeed,0.29884773,0.29183522 +23188000,imu,-0.237328,0.10763422,-9.843446,-0.012486109,-0.0114923315,-0.0044141407 +23188000,baro,490.22495 +23188000,mag,0.201,-0.08000001,0.42800003 +23188000,airspeed,4.5027704,4.39712 +23192000,imu,-0.21814197,0.0753066,-9.886287,-0.014633294,-0.011470949,-0.0031705673 +23192000,airspeed,0.2242165,0.21895441 +23192000,mag,0.201,-0.08000001,0.42800003 +23192000,baro,490.31885 +23196000,mag,0.201,-0.08000001,0.42800003 +23196000,airspeed,2.940699,2.8716843 +23196000,baro,490.31885 +23196000,imu,-0.20060469,0.13325122,-9.87913,-0.011829767,-0.009283913,-0.005205354 +23204000,baro,490.3658 +23204000,imu,-0.23873727,0.1526312,-9.924264,-0.00962362,-0.0074733165,-0.0056807506 +23204000,airspeed,1.2566154,1.2271209 +23204000,mag,0.201,-0.08000001,0.42800003 +23208000,mag,0.201,-0.08000001,0.42800003 +23208000,imu,-0.24996395,0.119595304,-9.8985405,-0.007988272,-0.008682799,-0.0038552037 +23208000,baro,490.24374 +23208000,airspeed,2.8252215,2.7589297 +23212000,mag,0.201,-0.08000001,0.42800003 +23212000,imu,-0.1660671,0.101503395,-9.834394,-0.009184101,-0.010851728,-0.005880881 +23212000,airspeed,2.2419114,2.1893044 +23212000,baro,490.2625 +23220000,baro,490.31885 +23220000,airspeed,-2.7584984,-2.6937604 +23220000,imu,-0.2068933,0.1457231,-9.816232,-0.011788562,-0.005649839,-0.0027400276 +23220000,mag,0.201,-0.08000001,0.42800003 +23220000,gps,490566.0,85456087.0,473977499.0,-0.01,0.03,-1.42 +23224000,airspeed,-3.424485,-3.3441288 +23224000,mag,0.201,-0.08000001,0.42800003 +23224000,baro,490.2625 +23224000,imu,-0.22414738,0.13394415,-9.846818,-0.006046178,-0.002944498,-0.0011738274 +23228000,mag,0.201,-0.08100001,0.42800003 +23228000,baro,490.24844 +23232000,airspeed,-3.0758479,-3.003662 +23232000,imu,-0.14218412,0.15010671,-9.914219,-0.011455467,-0.0032278807,-0.0060038953 +23236000,mag,0.202,-0.08100001,0.42400002 +23236000,imu,-0.14301045,0.06376373,-9.896315,-0.010366043,-0.005748574,-0.0058089257 +23236000,baro,490.32355 +23236000,airspeed,1.1148133,1.0886502 +23240000,baro,490.52075 +23240000,imu,-0.19287781,0.10174031,-9.871073,-0.017640512,-0.0027164023,-0.0019942552 +23240000,mag,0.202,-0.08100001,0.42400002 +23240000,airspeed,3.1821444,3.1074271 +23244000,imu,-0.21565674,0.07385066,-9.899519,-0.012655493,-0.0077193035,-0.00027915614 +23244000,airspeed,-0.41493627,-0.40519658 +23244000,mag,0.202,-0.08100001,0.42400002 +23244000,baro,490.39868 +23248000,airspeed,-3.8511963,-3.760798 +23248000,imu,-0.17958473,0.13966861,-9.966494,-0.012618547,-0.0068564774,-0.00044139757 +23248000,mag,0.202,-0.08100001,0.42400002 +23248000,baro,490.39868 +23252000,baro,490.38458 +23252000,imu,-0.12798846,0.17220128,-9.933657,-0.01609437,0.00037054572,-0.001723269 +23252000,airspeed,-3.4785216,-3.3968754 +23252000,mag,0.202,-0.08100001,0.42400002 +23256000,airspeed,-4.662199,-4.552761 +23256000,baro,490.41275 +23256000,imu,-0.12574981,0.13931581,-9.866324,-0.015230007,-0.0016563977,-0.004550384 +23256000,mag,0.202,-0.08100001,0.42400002 +23264000,imu,-0.22806253,0.17051019,-9.873839,-0.007733635,-0.0035891759,-0.0026280158 +23264000,mag,0.202,-0.08100001,0.42400002 +23264000,airspeed,1.8848122,1.8405702 +23264000,baro,490.40338 +23268000,imu,-0.19022016,0.118617415,-9.831395,-0.011127929,-0.007044011,-0.0014110011 +23268000,airspeed,-2.265106,-2.2119212 +23268000,mag,0.202,-0.08100001,0.42400002 +23268000,baro,490.53012 +23272000,imu,-0.16062883,0.17879175,-9.797191,-0.0129410345,-0.006921065,-0.0005829675 +23272000,mag,0.202,-0.08100001,0.42400002 +23272000,baro,490.31885 +23272000,airspeed,1.5607266,1.5241002 +23280000,mag,0.202,-0.08100001,0.42400002 +23280000,baro,490.3752 +23280000,imu,-0.14148295,0.09957072,-9.888275,-0.006618437,-0.008151079,0.0024112887 +23280000,airspeed,-2.8121984,-2.7461934 +23284000,baro,490.3658 +23284000,imu,-0.1896941,0.12675588,-9.902227,-0.01117351,-0.008554156,-0.0062950174 +23284000,airspeed,-1.0002023,-0.97672737 +23284000,mag,0.202,-0.08100001,0.42900002 +23288000,imu,-0.14597018,0.1362502,-9.978131,-0.012326163,-0.0094554145,-0.0051581794 +23288000,mag,0.202,-0.08100001,0.42900002 +23288000,baro,490.4785 +23288000,airspeed,-3.7961082,-3.7069874 +23292000,airspeed,1.6572034,1.6183084 +23292000,mag,0.202,-0.08100001,0.42900002 +23292000,imu,-0.1991494,0.11381692,-9.964665,-0.012698543,-0.0157243,-0.00044794535 +23292000,baro,490.3705 +23300000,airspeed,2.249448,2.196631 +23300000,imu,-0.19104715,0.1914866,-9.9470825,-0.008947887,-0.011071109,-0.010907601 +23300000,mag,0.202,-0.08100001,0.42900002 +23300000,baro,490.53952 +23304000,airspeed,1.7866573,1.7447155 +23304000,mag,0.202,-0.08100001,0.42900002 +23304000,imu,-0.13105917,0.13003135,-9.925484,-0.008275275,-0.011552192,-0.0089388 +23304000,baro,490.45502 +23312000,airspeed,2.8003135,2.7345655 +23312000,baro,490.52075 +23312000,imu,-0.24722004,0.23218048,-9.927826,-0.0034169534,-0.00931556,-0.005908026 +23312000,mag,0.202,-0.08100001,0.42900002 +23316000,baro,490.46442 +23316000,imu,-0.21112718,0.1852776,-9.889593,-0.0045759394,-0.00956103,0.0021016996 +23316000,mag,0.202,-0.08100001,0.42900002 +23316000,airspeed,-0.22877158,-0.22340102 +23320000,imu,-0.21915327,0.120091185,-9.93927,-0.003674478,-0.012639886,0.005162123 +23320000,mag,0.202,-0.08100001,0.42900002 +23320000,landed,0.0 +23320000,baro,490.44562 +23320000,airspeed,0.07405124,0.07231296 +23324000,baro,490.44562 +23324000,imu,-0.18477762,0.08078222,-9.919903,0.0020408698,-0.01163724,-0.0060728127 +23324000,airspeed,-2.243506,-2.190842 +23324000,mag,0.202,-0.08100001,0.42900002 +23328000,imu,-0.13084377,0.05874803,-9.885138,0.0025542295,-0.0092913415,-0.008838324 +23328000,airspeed,2.4441721,2.3867798 +23328000,mag,0.202,-0.08100001,0.42900002 +23328000,baro,490.5677 +23332000,baro,490.48788 +23332000,mag,0.202,-0.08100001,0.42900002 +23332000,imu,-0.13703823,0.14814559,-9.899496,-0.00070934644,-0.008241537,0.0014299131 +23332000,airspeed,4.1079297,4.0114903 +23336000,airspeed,-3.6047394,-3.5201097 +23336000,mag,0.202,-0.08100001,0.42900002 +23336000,baro,490.50195 +23336000,imu,-0.15927455,0.16706508,-9.938913,0.004509618,-0.006670906,-0.0024612783 +23340000,imu,-0.24501894,0.13193056,-9.979325,0.0054736156,-0.003472254,-0.009055162 +23340000,airspeed,2.3709612,2.3152626 +23340000,mag,0.19900002,-0.08500001,0.42900002 +23340000,baro,490.7508 +23344000,mag,0.19900002,-0.08500001,0.42900002 +23344000,airspeed,-3.3631172,-3.2841754 +23344000,imu,-0.3028109,0.15325944,-9.961392,-0.0026036105,-0.005728749,-0.006033109 +23344000,baro,490.42685 +23348000,baro,490.5771 +23348000,imu,-0.25885257,0.16712603,-9.90945,0.005425596,-0.00698322,-0.0026635844 +23348000,airspeed,0.50446934,0.4926237 +23348000,mag,0.19900002,-0.08500001,0.42900002 +23352000,imu,-0.23716305,0.17414147,-9.927295,0.010053095,-0.008387295,-0.0004594647 +23352000,airspeed,3.5399582,3.4568648 +23352000,mag,0.19900002,-0.08500001,0.42900002 +23352000,baro,490.43155 +23356000,airspeed,-2.9248307,-2.8561678 +23356000,mag,0.19900002,-0.08500001,0.42900002 +23356000,baro,490.4832 +23356000,imu,-0.21115448,0.19127694,-10.016943,-0.0023197958,-0.0040320726,-0.0027362928 +23364000,mag,0.19900002,-0.08500001,0.42900002 +23364000,baro,490.5865 +23364000,imu,-0.15108044,0.1131625,-9.925369,0.004420718,-0.0046374723,-0.0049089957 +23364000,airspeed,2.7575707,2.6928182 +23368000,mag,0.19900002,-0.08500001,0.42900002 +23368000,baro,490.5865 +23372000,baro,490.37988 +23372000,imu,-0.20520037,0.093390666,-9.968883,4.240808e-05,-0.0028589708,-0.006114446 +23372000,mag,0.19900002,-0.08500001,0.42900002 +23372000,airspeed,3.020312,2.9494267 +23376000,mag,0.19900002,-0.08500001,0.42900002 +23376000,imu,-0.24815865,0.11615553,-9.92708,0.0017865271,-0.0043290867,-0.003824894 +23376000,airspeed,-2.2512708,-2.1983905 +23376000,baro,490.71323 +23380000,imu,-0.2566073,0.16451052,-9.901671,-0.0041471585,-0.004200376,-0.0053575733 +23380000,baro,490.45502 +23380000,mag,0.19900002,-0.08500001,0.42900002 +23380000,airspeed,1.7579533,1.7166874 +23384000,mag,0.19900002,-0.08500001,0.42900002 +23384000,imu,-0.16821748,0.18717645,-9.911307,-0.005189524,-0.0031623263,-0.0063240873 +23384000,baro,490.45502 +23384000,airspeed,2.1738365,2.1228082 +23388000,baro,490.72263 +23388000,airspeed,-3.8949695,-3.803479 +23388000,mag,0.19900002,-0.08500001,0.42900002 +23388000,imu,-0.15972528,0.17533937,-9.917818,-3.5289082e-05,-0.0021127546,-0.0037401791 +23392000,airspeed,1.5030645,1.4677773 +23392000,imu,-0.20599186,0.15218456,-9.942669,-0.00133122,-0.0019096299,-0.0032479079 +23396000,airspeed,2.1924706,2.1409836 +23396000,imu,-0.19281916,0.20363052,-9.897856,-0.0034321751,-0.009855854,-0.0031942208 +23396000,baro,490.62402 +23396000,mag,0.20500001,-0.08100001,0.42400002 +23400000,mag,0.20500001,-0.08100001,0.42400002 +23400000,airspeed,-2.1869495,-2.135596 +23400000,imu,-0.227191,0.19495787,-9.936042,-0.0056153545,-0.015075119,-0.0010051611 +23400000,baro,490.59586 +23404000,baro,490.68976 +23404000,mag,0.20500001,-0.08100001,0.42400002 +23404000,imu,-0.20063724,0.12642643,-9.952806,-0.0055537857,-0.011766823,6.69848e-07 +23404000,airspeed,-2.2068572,-2.1550243 +23408000,mag,0.20500001,-0.08100001,0.42400002 +23408000,airspeed,2.0889673,2.0399055 +23408000,baro,490.6757 +23408000,imu,-0.21353307,0.12641355,-9.926987,0.0011250293,-0.009703686,0.0013487436 +23412000,mag,0.20500001,-0.08100001,0.42400002 +23416000,airspeed,-3.18114,-3.1064494 +23416000,baro,490.55832 +23416000,mag,0.20500001,-0.08100001,0.42400002 +23416000,imu,-0.08711949,0.13109358,-9.853094,-0.0016984367,-0.0027380914,-0.0038231337 +23420000,gps,490865.0,85456087.0,473977498.0,-0.02,-0.02,-1.4 +23424000,mag,0.20500001,-0.08100001,0.42400002 +23424000,airspeed,-0.16930747,-0.16533245 +23424000,baro,490.53952 +23424000,imu,-0.21095647,0.19926132,-9.907372,-0.004368864,-0.008932194,0.00085964997 +23428000,imu,-0.20370951,0.12430528,-9.935212,-0.007091538,-0.004028017,0.001076744 +23428000,baro,490.49258 +23428000,mag,0.20500001,-0.08100001,0.42400002 +23428000,airspeed,2.4701414,2.4121542 +23432000,imu,-0.2149057,0.14088914,-9.9474745,-0.008031676,-0.0065128063,0.0048944503 +23432000,mag,0.20500001,-0.08100001,0.42400002 +23432000,airspeed,-3.6402986,-3.5548415 +23432000,baro,490.49258 +23436000,airspeed,-4.2920156,-4.1912317 +23436000,imu,-0.21103063,0.18311383,-9.978419,-0.0066588884,-0.01320432,0.0037393153 +23436000,baro,490.60056 +23436000,mag,0.20500001,-0.08100001,0.42400002 +23440000,imu,-0.18669376,0.17597808,-9.936959,-0.0050021335,-0.014937565,-0.000986028 +23440000,airspeed,-0.9767799,-0.95384115 +23440000,mag,0.20300001,-0.08100001,0.42900002 +23440000,baro,490.64282 +23444000,imu,-0.18852763,0.15374807,-9.88435,-0.0069505004,-0.015677959,-0.0030073011 +23444000,baro,490.64752 +23444000,mag,0.20300001,-0.08100001,0.42900002 +23444000,airspeed,2.812337,2.7462919 +23452000,airspeed,1.1055084,1.0795493 +23452000,mag,0.20300001,-0.08100001,0.42900002 +23452000,imu,-0.18148576,0.13822815,-9.95318,-0.001666607,-0.01739614,-0.0017899161 +23452000,baro,490.60526 +23456000,airspeed,-1.9293565,-1.8840438 +23456000,mag,0.20300001,-0.08100001,0.42900002 +23456000,imu,-0.1683409,0.07796078,-9.983079,-0.008053575,-0.01854428,-0.0027699952 +23456000,baro,490.6804 +23460000,baro,490.6757 +23460000,mag,0.20300001,-0.08100001,0.42900002 +23460000,airspeed,-1.6750604,-1.6357207 +23464000,mag,0.20400001,-0.08100001,0.42900002 +23464000,imu,-0.16801547,0.26677975,-9.99502,-0.0026490318,-0.017015077,0.0020136416 +23464000,airspeed,-3.0001993,-2.9297426 +23464000,baro,490.6522 +23472000,airspeed,1.9114767,1.8665897 +23472000,baro,490.63342 +23472000,mag,0.20400001,-0.08100001,0.42900002 +23472000,imu,-0.16681698,0.23245026,-9.932841,-0.0024895293,-0.011841163,0.00030992724 +23476000,airspeed,-0.6370441,-0.6220781 +23476000,mag,0.20400001,-0.08100001,0.42900002 +23476000,baro,490.80713 +23476000,imu,-0.21627365,0.1787874,-9.917267,-0.0080860965,-0.014724554,-0.0030660133 +23484000,airspeed,-2.40202,-2.3456237 +23484000,imu,-0.16324387,0.13335411,-9.898939,-0.0046063745,-0.009164603,-0.0019150651 +23484000,baro,490.563 +23484000,mag,0.20400001,-0.08100001,0.42900002 +23488000,imu,-0.19749235,0.15892422,-9.907715,0.00026469733,-0.0059945937,-0.005504085 +23488000,baro,490.71793 +23488000,mag,0.20400001,-0.08100001,0.42900002 +23488000,airspeed,-1.8966726,-1.8521246 +23492000,airspeed,1.2989119,1.2684044 +23492000,baro,490.70856 +23492000,mag,0.2,-0.08000001,0.42600003 +23492000,imu,-0.29245132,0.18114887,-9.890894,-0.0020208827,-0.0073102913,-0.0008591214 +23496000,baro,490.70856 +23496000,imu,-0.2610528,0.14634518,-9.95334,-0.00070000364,-0.012552281,-0.0015243067 +23496000,mag,0.2,-0.08000001,0.42600003 +23496000,airspeed,-2.7630916,-2.6981947 +23500000,airspeed,-1.7148331,-1.6745522 +23504000,airspeed,-0.427245,-0.41720912 +23504000,baro,490.7602 +23504000,mag,0.2,-0.08000001,0.42600003 +23504000,imu,-0.14363334,0.09862725,-9.897426,-0.0046390058,-0.008089635,-0.0035930013 +23508000,airspeed,-1.089908,-1.0643101 +23508000,baro,490.70386 +23508000,imu,-0.12121149,0.13586465,-9.949056,-0.0032509414,-0.006696318,-0.0022731468 +23508000,mag,0.2,-0.08000001,0.42600003 +23516000,mag,0.2,-0.08000001,0.42600003 +23516000,airspeed,-1.1865262,-1.1586473 +23516000,imu,-0.18792684,0.19353117,-9.907642,-0.0069398894,-0.0006624455,-0.007150595 +23516000,baro,490.87286 +23524000,airspeed,3.4126587,3.3324986 +23524000,mag,0.2,-0.08000001,0.42600003 +23524000,imu,-0.1665319,0.14695248,-9.803723,-0.0016891573,-6.245587e-05,-0.0024764915 +23524000,baro,490.7555 +23528000,baro,490.8447 +23528000,airspeed,2.5051348,2.4462786 +23528000,imu,-0.19964828,0.20306708,-9.855638,-0.011057282,-0.0004998445,-0.003051578 +23528000,mag,0.2,-0.08000001,0.42600003 +23536000,mag,0.2,-0.08100001,0.42600003 +23536000,airspeed,3.2077787,3.132418 +23536000,baro,490.82593 +23536000,imu,-0.20290875,0.11098053,-9.92309,-0.0029344424,-0.0016242223,-0.0004915315 +23540000,imu,-0.15335074,0.16237432,-9.9334,-0.0049205604,-0.00013631453,0.007981397 +23540000,airspeed,-2.3836021,-2.327615 +23540000,mag,0.2,-0.08100001,0.42600003 +23540000,baro,490.7508 +23544000,airspeed,4.0878944,3.9918761 +23544000,imu,-0.17422937,0.23718688,-9.929214,-0.0035693492,-0.0036305198,0.0013318487 +23544000,mag,0.202,-0.08100001,0.42700002 +23544000,baro,490.7508 +23552000,baro,490.83063 +23552000,airspeed,2.8476982,2.7807968 +23552000,mag,0.202,-0.08100001,0.42700002 +23552000,imu,-0.20366085,0.18572892,-9.993167,-0.008758636,-0.006217944,0.003344218 +23556000,airspeed,3.0607097,2.988804 +23556000,baro,490.83063 +23556000,mag,0.202,-0.08100001,0.42700002 +23556000,imu,-0.22528102,0.14908199,-9.991083,-0.0095488755,-0.006634012,-0.00572982 +23564000,mag,0.202,-0.08100001,0.42700002 +23564000,airspeed,1.9548613,1.9089326 +23564000,imu,-0.15214898,0.22220631,-9.900095,-0.009146451,7.540386e-05,0.0042969105 +23564000,baro,490.8588 +23568000,imu,-0.15143584,0.17082472,-9.858462,-0.007913917,-0.0005667114,0.002943716 +23568000,airspeed,1.3636892,1.3316616 +23572000,mag,0.202,-0.08100001,0.42700002 +23572000,baro,490.70856 +23572000,imu,-0.1368445,0.18157788,-9.85604,-0.010349352,-0.00043492825,0.00027237117 +23572000,airspeed,2.3195205,2.2650454 +23576000,mag,0.202,-0.08100001,0.42700002 +23576000,baro,490.78366 +23576000,airspeed,-3.6646564,-3.5785737 +23576000,imu,-0.1995475,0.21655397,-9.852472,-0.015913444,-0.0056746383,0.0027408728 +23580000,mag,0.202,-0.08100001,0.42700002 +23580000,baro,490.87286 +23580000,imu,-0.21177734,0.19191252,-9.843534,-0.014610413,-0.009135915,0.004100659 +23580000,airspeed,-0.76742417,-0.7493933 +23584000,mag,0.202,-0.08100001,0.42700002 +23584000,imu,-0.15714118,0.16510783,-9.812453,-0.009866636,-0.008576291,0.001383867 +23584000,baro,490.82123 +23584000,airspeed,3.3673785,3.2882717 +23588000,mag,0.202,-0.08100001,0.42700002 +23588000,baro,490.90103 +23588000,airspeed,-2.8926878,-2.824719 +23588000,imu,-0.22472167,0.06406187,-9.736451,-0.003619932,-0.004785192,-0.003602835 +23592000,airspeed,2.491841,2.4332829 +23592000,imu,-0.24057111,0.10551516,-9.718533,-0.0061924774,-0.0060316343,-0.0029128932 +23596000,airspeed,2.524605,2.465297 +23596000,imu,-0.18952082,0.14771126,-9.710204,-0.011888418,-0.007446287,-0.00055163814 +23596000,baro,490.82593 +23596000,mag,0.202,-0.08200001,0.42600003 +23600000,imu,-0.21547534,0.1643907,-9.652885,-0.006823245,-0.004840104,0.0010885241 +23600000,airspeed,2.809695,2.7436826 +23600000,baro,490.86816 +23600000,mag,0.202,-0.08200001,0.42600003 +23604000,mag,0.202,-0.08200001,0.42600003 +23604000,baro,490.86816 +23604000,airspeed,4.168896,4.07095 +23604000,imu,-0.23207806,0.17589487,-9.564108,-0.0070915357,-0.011139673,-0.002838041 +23608000,mag,0.202,-0.08200001,0.42600003 +23608000,airspeed,0.773983,0.75580764 +23608000,baro,490.671 +23608000,imu,-0.26226288,0.17756654,-9.480831,-0.010709498,-0.0071359836,-0.0031263193 +23612000,mag,0.202,-0.08200001,0.42600003 +23612000,baro,490.78836 +23612000,airspeed,0.77679706,0.75855047 +23612000,imu,-0.23664214,0.16492246,-9.42701,-0.0076931613,-0.0061706975,0.0028092836 +23616000,imu,-0.17313516,0.16601741,-9.403036,-0.01132421,-0.012593148,0.0032425595 +23616000,mag,0.202,-0.08200001,0.42600003 +23616000,airspeed,-2.3516767,-2.2963946 +23616000,baro,491.09824 +23620000,gps,491150.0,85456088.0,473977498.0,0.01,0.01,-1.38 +23620000,baro,490.91513 +23620000,mag,0.202,-0.08200001,0.42600003 +23624000,airspeed,3.1013854,3.028512 +23624000,baro,490.91513 +23624000,imu,-0.28095442,0.20893708,-9.241625,-0.013030716,-0.0032051932,-0.00042091898 +23624000,mag,0.202,-0.08200001,0.42600003 +23628000,baro,490.81653 +23628000,airspeed,3.2172694,3.1416914 +23628000,imu,-0.24999654,0.14697567,-9.129433,-0.015747674,-0.0068387594,-0.0005031906 +23628000,mag,0.202,-0.08200001,0.42600003 +23632000,mag,0.202,-0.08200001,0.42600003 +23632000,baro,490.97147 +23632000,imu,-0.17638902,0.15404929,-8.998267,-0.017324524,-0.009864149,0.0049530887 +23632000,airspeed,-2.7160614,-2.6522334 +23636000,imu,-0.21087667,0.20184846,-8.936406,-0.018211953,-0.007294121,0.0044781724 +23636000,baro,490.91513 +23636000,airspeed,-2.8579185,-2.7907672 +23636000,mag,0.202,-0.08200001,0.42600003 +23640000,mag,0.202,-0.08200001,0.42600003 +23640000,airspeed,2.1614296,2.1106436 +23640000,imu,-0.22737361,0.1758929,-8.929975,-0.019989822,-0.008202911,0.00048138516 +23640000,baro,490.91513 +23648000,mag,0.20400001,-0.07900001,0.42900002 +23648000,imu,-0.18555693,0.21404009,-8.862082,-0.01375824,-0.020433618,0.009386013 +23648000,airspeed,-0.6672245,-0.651545 +23648000,baro,490.97147 +23652000,mag,0.20400001,-0.07900001,0.42900002 +23652000,imu,-0.2739407,0.24281979,-8.658598,-0.02050132,-0.013380275,0.00555465 +23652000,baro,490.97147 +23652000,airspeed,-2.473161,-2.4150426 +23656000,baro,490.8541 +23656000,airspeed,3.0856652,3.013174 +23656000,mag,0.20400001,-0.07900001,0.42900002 +23656000,imu,-0.26892257,0.15416767,-8.481483,-0.020031802,-0.018241772,0.0024263414 +23660000,mag,0.20400001,-0.07900001,0.42900002 +23660000,baro,490.88696 +23660000,imu,-0.2527849,0.13611068,-8.427707,-0.011850197,-0.027314754,0.0030871509 +23660000,airspeed,1.429973,1.396376 +23664000,airspeed,-2.8221827,-2.7558532 +23664000,mag,0.20400001,-0.07900001,0.42800003 +23664000,baro,491.0278 +23668000,imu,-0.19620773,0.23136646,-8.343004,-0.026118994,-0.022794921,-0.0004160233 +23672000,imu,-0.14635219,0.17443977,-8.228834,-0.027843332,-0.018010814,-0.0032036926 +23672000,airspeed,2.474242,2.4161034 +23672000,mag,0.20400001,-0.07900001,0.42800003 +23672000,baro,490.9386 +23676000,airspeed,3.3626227,3.2836034 +23676000,mag,0.20400001,-0.07900001,0.42800003 +23676000,baro,490.97147 +23676000,imu,-0.12332311,0.17854752,-8.055746,-0.02775172,-0.021878911,-0.00047523787 +23680000,mag,0.20400001,-0.07900001,0.42800003 +23680000,baro,490.88696 +23684000,baro,490.98557 +23684000,airspeed,2.4865427,2.4281087 +23684000,mag,0.20500001,-0.07900001,0.42800003 +23684000,imu,-0.28025842,0.15567516,-7.8978677,-0.018051399,-0.03367099,-0.006357426 +23688000,imu,-0.21385054,0.16301492,-7.769948,-0.018134674,-0.032284904,-0.0004248721 +23688000,mag,0.20500001,-0.07900001,0.42800003 +23688000,airspeed,-0.857018,-0.83686984 +23688000,baro,491.14987 +23692000,baro,491.0184 +23692000,imu,-0.2346192,0.17139395,-7.6991434,-0.026869576,-0.026647583,0.004409655 +23692000,airspeed,3.2861617,3.208931 +23692000,mag,0.20500001,-0.07900001,0.42800003 +23696000,imu,-0.17847025,0.14387007,-7.5391955,-0.025267396,-0.025682291,0.002737136 +23696000,airspeed,3.500199,3.4179242 +23696000,mag,0.20500001,-0.07900001,0.42800003 +23696000,baro,491.08414 +23704000,imu,-0.19139874,0.18637197,-7.3886786,-0.03557511,-0.035071805,8.298002e-05 +23704000,mag,0.20400001,-0.08200001,0.42800003 +23704000,baro,491.14517 +23704000,airspeed,1.8348359,1.7917005 +23712000,baro,491.18744 +23712000,mag,0.20400001,-0.08200001,0.42800003 +23712000,airspeed,-2.5565665,-2.4964583 +23712000,imu,-0.2530476,0.19465603,-7.147365,-0.037567437,-0.04106218,-1.35347855e-05 +23716000,imu,-0.195658,0.16672774,-7.0187006,-0.04168064,-0.04108691,-0.0042435112 +23716000,baro,491.18744 +23716000,mag,0.20400001,-0.08200001,0.42800003 +23716000,airspeed,-2.3601727,-2.304682 +23720000,imu,-0.1566185,0.14545795,-6.9515247,-0.0438511,-0.04147746,0.0025902975 +23720000,airspeed,2.973596,2.9036934 +23724000,imu,-0.11779906,0.16881825,-6.8610616,-0.040161207,-0.044556577,0.0062662507 +23724000,mag,0.20400001,-0.08200001,0.42800003 +23724000,baro,490.8635 +23724000,airspeed,-3.3100195,-3.2322593 +23728000,baro,490.8635 +23728000,mag,0.20500001,-0.08200001,0.42800003 +23732000,airspeed,2.6780896,2.6151528 +23732000,mag,0.20500001,-0.08200001,0.42800003 +23732000,imu,-0.2645558,0.17645234,-6.7402077,-0.042628,-0.05257271,0.0010755017 +23732000,baro,491.00433 +23736000,mag,0.20500001,-0.08200001,0.42800003 +23736000,baro,491.15457 +23740000,mag,0.20500001,-0.08200001,0.42800003 +23740000,airspeed,0.96241933,0.9397976 +23740000,imu,-0.1812063,0.19596136,-6.5748034,-0.0452545,-0.054886103,-0.0016225999 +23740000,baro,491.08414 +23744000,imu,-0.1549221,0.18505058,-6.456893,-0.045618225,-0.058748033,0.0022377782 +23744000,mag,0.20500001,-0.08200001,0.42800003 +23744000,airspeed,-1.6703194,-1.6310754 +23744000,baro,490.91043 +23752000,airspeed,-2.8861687,-2.818323 +23752000,mag,0.20500001,-0.08300001,0.42700002 +23752000,imu,-0.18228276,0.21125573,-6.2726517,-0.055492032,-0.060115527,-0.0059255133 +23752000,baro,491.1217 +23756000,baro,491.08414 +23756000,imu,-0.12911417,0.20982744,-6.2274213,-0.059116703,-0.06683956,-0.0019936322 +23756000,airspeed,-2.5071044,-2.4481747 +23756000,mag,0.20400001,-0.08300001,0.42600003 +23764000,imu,-0.19559832,0.15347274,-6.120111,-0.06629136,-0.06604289,-0.0038031654 +23764000,airspeed,1.3565557,1.3246717 +23764000,mag,0.20400001,-0.08300001,0.42600003 +23764000,baro,491.06067 +23768000,imu,-0.19891559,0.09441545,-6.0862026,-0.063822344,-0.07128072,0.0013248338 +23768000,airspeed,-3.605357,-3.5206182 +23768000,baro,491.06067 +23768000,mag,0.20400001,-0.08300001,0.425 +23772000,mag,0.20400001,-0.08300001,0.425 +23772000,baro,491.06067 +23772000,imu,-0.22385235,0.15200758,-6.0023875,-0.06763904,-0.07676029,0.003143253 +23772000,airspeed,-1.7811602,-1.7392968 +23776000,mag,0.20400001,-0.08300001,0.425 +23776000,imu,-0.25221664,0.2271695,-5.9379086,-0.071089245,-0.07541628,-0.0011187696 +23776000,airspeed,1.7398093,1.6989127 +23776000,baro,491.1123 +23784000,mag,0.20400001,-0.08300001,0.425 +23784000,airspeed,-1.0453414,-1.0207717 +23784000,baro,491.07477 +23784000,imu,-0.33063075,0.22752415,-5.7146363,-0.07139544,-0.07823438,0.0017125056 +23788000,baro,491.1264 +23788000,mag,0.20400001,-0.084000014,0.425 +23792000,airspeed,-2.8030772,-2.7372012 +23792000,imu,-0.17578922,0.23335387,-5.72171,-0.076993324,-0.0808957,0.001957438 +23796000,baro,491.0325 +23796000,airspeed,1.2248131,1.1960284 +23796000,mag,0.20500001,-0.084000014,0.425 +23796000,imu,-0.17980476,0.14434017,-5.737196,-0.08015586,-0.0799931,-0.002397681 +23800000,airspeed,2.494352,2.4357371 +23800000,imu,-0.26054436,0.21575804,-5.6713543,-0.08213516,-0.08026863,0.002838436 +23804000,mag,0.20700002,-0.08600001,0.42600003 +23804000,imu,-0.22696601,0.22015078,-5.594225,-0.08139407,-0.08140464,0.0007202359 +23804000,airspeed,-2.791898,-2.7262588 +23804000,baro,491.19214 +23808000,imu,-0.18784237,0.17252621,-5.574356,-0.08358248,-0.076762125,-0.005773401 +23808000,baro,491.10764 +23808000,airspeed,-1.7527776,-1.7115777 +23808000,mag,0.20700002,-0.08600001,0.42600003 +23812000,airspeed,1.7742026,1.7324835 +23812000,mag,0.20700002,-0.08600001,0.42600003 +23812000,imu,-0.18641028,0.1496703,-5.579394,-0.0846745,-0.074662805,-0.0047090487 +23812000,baro,491.25317 +23816000,airspeed,-2.4831796,-2.4247894 +23816000,baro,491.25317 +23816000,imu,-0.18335451,0.14172256,-5.5787826,-0.081947476,-0.073723644,-0.0026659518 +23816000,mag,0.20700002,-0.08600001,0.425 +23820000,mag,0.208,-0.08600001,0.425 +23820000,airspeed,0.41184655,0.40216723 +23820000,baro,491.05127 +23820000,imu,-0.18090518,0.15813303,-5.520572,-0.08303618,-0.07366332,-0.0021315748 +23820000,gps,491449.0,85456088.0,473977499.0,0.02,0.0,-1.3399999 +23824000,imu,-0.18814518,0.15863863,-5.550207,-0.0876385,-0.07575292,-0.0012176282 +23824000,mag,0.208,-0.08600001,0.425 +23824000,baro,491.2109 +23824000,airspeed,-1.5901719,-1.5527846 +23828000,mag,0.208,-0.08700001,0.425 +23828000,baro,491.06537 +23828000,imu,-0.19185299,0.1815177,-5.623933,-0.08139319,-0.07404436,-0.0018462543 +23828000,airspeed,-2.9080474,-2.8396993 +23832000,imu,-0.14348981,0.1460648,-5.597151,-0.083380416,-0.072776765,-0.0009529017 +23832000,mag,0.208,-0.08700001,0.425 +23832000,airspeed,1.9466416,1.9008697 +23832000,baro,491.24377 +23836000,airspeed,-3.1427298,-3.0688682 +23836000,baro,491.05597 +23836000,mag,0.208,-0.08700001,0.425 +23840000,imu,-0.21329863,0.2789937,-5.61309,-0.088914074,-0.06993682,-6.5099106e-05 +23844000,airspeed,-4.544508,-4.437682 +23844000,baro,491.1264 +23844000,imu,-0.23939,0.22159459,-5.549185,-0.09008162,-0.074905366,-0.00029852986 +23844000,mag,0.208,-0.08700001,0.425 +23848000,mag,0.208,-0.08700001,0.425 +23848000,airspeed,3.6825795,3.596032 +23848000,baro,491.0466 +23848000,imu,-0.22693133,0.23702103,-5.584944,-0.08678897,-0.076663524,0.0003280775 +23852000,mag,0.209,-0.08700001,0.425 +23852000,imu,-0.23965345,0.22330728,-5.5609913,-0.08341978,-0.07091694,-0.0055127786 +23852000,baro,491.0466 +23852000,airspeed,-1.043922,-1.0193878 +23856000,imu,-0.22647731,0.22494864,-5.584845,-0.08569478,-0.07184273,-0.004444382 +23856000,mag,0.20500001,-0.08600001,0.42400002 +23856000,baro,491.08884 +23856000,airspeed,2.6548724,2.5924716 +23860000,baro,491.24377 +23860000,imu,-0.2308407,0.18136619,-5.637688,-0.09107035,-0.079354525,-0.006205225 +23860000,airspeed,0.9797526,0.9567154 +23860000,mag,0.20500001,-0.08600001,0.42400002 +23868000,baro,491.24847 +23868000,airspeed,2.2768345,2.2232988 +23868000,mag,0.20600002,-0.08700001,0.42400002 +23868000,imu,-0.27325237,0.1753724,-5.5843964,-0.08363714,-0.0720875,-0.0054189395 +23876000,airspeed,1.4585907,1.4243023 +23876000,imu,-0.269836,0.2365352,-5.5941315,-0.07354767,-0.068697944,0.00037723908 +23876000,baro,491.15457 +23876000,mag,0.20600002,-0.08700001,0.42400002 +23880000,baro,491.15457 +23880000,imu,-0.24372979,0.16158624,-5.6411614,-0.07009843,-0.06842163,0.00034761324 +23880000,mag,0.20600002,-0.08700001,0.42400002 +23880000,airspeed,-0.8820177,-0.8612833 +23884000,imu,-0.18227357,0.09596663,-5.6954055,-0.070996806,-0.06760741,0.0010669563 +23884000,baro,491.19214 +23884000,mag,0.20600002,-0.08700001,0.423 +23884000,airspeed,2.799225,2.7334154 +23888000,mag,0.20600002,-0.08700001,0.423 +23888000,imu,-0.2238722,0.18328393,-5.702146,-0.07218052,-0.064055786,-0.0026260137 +23888000,airspeed,2.9293704,2.860501 +23888000,baro,491.19214 +23892000,baro,491.2156 +23892000,airspeed,-1.0762796,-1.0509747 +23892000,imu,-0.28008595,0.26798216,-5.6749697,-0.0734872,-0.0643627,-0.0003386366 +23892000,mag,0.20600002,-0.08700001,0.423 +23900000,airspeed,2.003072,1.955986 +23900000,baro,491.14047 +23900000,mag,0.20600002,-0.088000014,0.423 +23900000,imu,-0.18870753,0.23138559,-5.823478,-0.07344718,-0.05654737,-0.007972092 +23904000,airspeed,3.92942,3.837031 +23904000,imu,-0.10560759,0.21107033,-5.8253837,-0.07152783,-0.055268776,-0.0029082135 +23904000,baro,491.2297 +23904000,mag,0.20600002,-0.088000014,0.423 +23908000,mag,0.20500001,-0.088000014,0.42200002 +23908000,imu,-0.13238835,0.18764712,-5.662633,-0.06970289,-0.052896213,-0.0011120352 +23908000,baro,491.27664 +23908000,airspeed,-3.3381705,-3.259674 +23912000,mag,0.20500001,-0.088000014,0.42200002 +23912000,baro,491.27664 +23912000,imu,-0.22025616,0.17523411,-5.6843753,-0.06838843,-0.054309662,-0.0062254183 +23912000,airspeed,3.4669347,3.3854098 +23916000,imu,-0.2745899,0.19786187,-5.7814984,-0.06830987,-0.055702947,-0.0069515575 +23916000,mag,0.20500001,-0.088000014,0.42200002 +23916000,airspeed,2.2528684,2.1998923 +23916000,baro,491.27664 +23920000,airspeed,-1.9692953,-1.9229885 +23920000,baro,491.27194 +23920000,mag,0.20500001,-0.088000014,0.42200002 +23920000,imu,-0.26337776,0.23843755,-5.833143,-0.06456998,-0.05449315,-0.0040650577 +23928000,imu,-0.16994773,0.20810816,-5.742386,-0.06473658,-0.043636963,-0.0050463225 +23928000,mag,0.20500001,-0.088000014,0.42200002 +23928000,airspeed,-1.2396156,-1.210462 +23928000,baro,491.33768 +23932000,mag,0.20500001,-0.088000014,0.42200002 +23932000,imu,-0.20438446,0.2307499,-5.8388643,-0.057693783,-0.0482157,-0.008430834 +23932000,baro,491.15927 +23932000,airspeed,-0.26147747,-0.2553307 +23936000,mag,0.20500001,-0.08900001,0.42200002 +23936000,baro,491.1264 +23936000,airspeed,3.7082436,3.6210773 +23936000,imu,-0.23859395,0.2073066,-5.917233,-0.050815273,-0.04308622,-0.0006057034 +23940000,imu,-0.20882703,0.23901884,-5.9916115,-0.05041795,-0.046869446,-0.000111898364 +23940000,baro,491.36584 +23940000,airspeed,4.538383,4.4316406 +23940000,mag,0.20500001,-0.08900001,0.42200002 +23948000,baro,491.3001 +23948000,airspeed,1.614766,1.576793 +23948000,mag,0.20500001,-0.08900001,0.42200002 +23948000,imu,-0.23622996,0.14835018,-5.9488635,-0.052696854,-0.04088771,-0.0019963519 +23952000,airspeed,2.0218725,1.974347 +23952000,baro,491.1217 +23952000,mag,0.20600002,-0.08900001,0.42200002 +23952000,imu,-0.25349694,0.12459044,-6.05734,-0.051169377,-0.037133418,-0.00046440744 +23956000,imu,-0.21859792,0.19965397,-6.054317,-0.04549575,-0.036767647,-0.0049278284 +23956000,baro,491.42218 +23956000,airspeed,-1.0642701,-1.039235 +23956000,mag,0.20600002,-0.08900001,0.42200002 +23964000,mag,0.20700002,-0.088000014,0.425 +23964000,imu,-0.1817654,0.21820433,-6.0881906,-0.03478382,-0.039293893,-0.0016404957 +23964000,baro,491.2297 +23964000,airspeed,-2.5503023,-2.4903405 +23968000,mag,0.20700002,-0.088000014,0.425 +23968000,imu,-0.08815346,0.21115658,-6.0896807,-0.04187176,-0.037350174,0.0016704713 +23968000,baro,491.08884 +23968000,airspeed,2.0286338,1.9809537 +23972000,airspeed,-1.3740574,-1.3417484 +23972000,imu,-0.13321644,0.17021622,-6.158925,-0.03883181,-0.029073609,-0.0008918147 +23972000,mag,0.20700002,-0.088000014,0.425 +23972000,baro,491.25787 +23976000,imu,-0.2752152,0.19085243,-6.2466974,-0.029848915,-0.025343562,-0.0061613005 +23976000,airspeed,-1.5901095,-1.5527308 +23980000,baro,491.36115 +23980000,airspeed,-3.6203113,-3.535163 +23980000,imu,-0.21292172,0.162611,-6.3131633,-0.025395606,-0.027985971,-0.0029019213 +23980000,mag,0.20700002,-0.088000014,0.425 +23984000,airspeed,-2.47351,-2.415335 +23984000,imu,-0.18638444,0.12143308,-6.32972,-0.024478467,-0.02919898,-0.005721142 +23984000,baro,491.35645 +23984000,mag,0.20700002,-0.088000014,0.425 +23988000,imu,-0.22144037,0.16963086,-6.451593,-0.025812104,-0.022325998,-0.0050091497 +23988000,mag,0.20700002,-0.088000014,0.425 +23988000,airspeed,-2.2411788,-2.1884677 +23988000,baro,491.35645 +23992000,baro,491.27194 +23992000,imu,-0.23064198,0.1586588,-6.604338,-0.028115261,-0.01905935,-0.0029506073 +23992000,mag,0.20700002,-0.08900001,0.425 +23992000,airspeed,4.2135572,4.1144786 +23996000,imu,-0.23758751,0.11273301,-6.6456056,-0.021655789,-0.02159467,-0.0065488694 +23996000,airspeed,0.21407782,0.20904529 +23996000,mag,0.20700002,-0.08900001,0.425 +23996000,baro,491.16397 +24000000,baro,491.2015 +24000000,airspeed,-2.3171022,-2.262627 +24000000,imu,-0.18115708,0.1595486,-6.6698055,-0.015643474,-0.01534012,-0.00554029 +24000000,mag,0.20700002,-0.08900001,0.425 +24004000,airspeed,2.4220877,2.3651443 +24004000,baro,491.2015 +24004000,mag,0.20700002,-0.08900001,0.425 +24004000,imu,-0.22646244,0.21703453,-6.6739163,-0.018065475,-0.007618979,-0.0065467963 +24012000,baro,491.14517 +24012000,airspeed,-3.7243764,-3.6368275 +24012000,imu,-0.2788773,0.22162952,-6.9193053,-0.009710526,-0.004209665,-0.0025551305 +24012000,mag,0.209,-0.09100001,0.42200002 +24016000,mag,0.209,-0.09100001,0.42200002 +24016000,imu,-0.2901769,0.19349538,-7.0140843,-0.015011503,0.0044250656,0.00023730131 +24016000,baro,491.2297 +24016000,airspeed,1.2502416,1.2208462 +24020000,imu,-0.22179607,0.15663508,-7.0856943,-0.013230809,0.0043936726,-0.0014549482 +24020000,baro,491.2297 +24020000,airspeed,2.470044,2.4119687 +24020000,gps,491655.0,85456088.0,473977499.0,0.03,-0.03,-0.61 +24020000,mag,0.209,-0.09100001,0.42200002 +24024000,mag,0.209,-0.09100001,0.42200002 +24024000,baro,491.2109 +24024000,imu,-0.15536772,0.19448023,-7.2416863,-0.00733887,0.0020210524,-0.0012589993 +24024000,airspeed,3.6660564,3.579865 +24028000,mag,0.209,-0.09100001,0.42200002 +24028000,airspeed,-1.8835989,-1.8393009 +24028000,baro,491.33298 +24028000,imu,-0.21145128,0.27324122,-7.303379,0.0020024963,0.0024896923,0.0037627625 +24032000,baro,491.24847 +24032000,mag,0.209,-0.09100001,0.42200002 +24032000,imu,-0.29214424,0.2385699,-7.4245143,0.0072344486,0.0075832037,0.0008539577 +24032000,airspeed,1.6501147,1.6113155 +24036000,baro,491.24847 +24036000,mag,0.209,-0.09100001,0.42200002 +24036000,airspeed,-3.6297183,-3.5443726 +24036000,imu,-0.3540428,0.16824086,-7.585094,0.0019516224,0.0106742345,-0.00428172 +24040000,baro,491.14047 +24040000,mag,0.209,-0.09100001,0.42200002 +24040000,airspeed,-3.6866968,-3.6000352 +24040000,imu,-0.29593498,0.18607531,-7.6057897,0.008674345,0.0113887945,-0.0027063172 +24048000,imu,-0.26874948,0.1272108,-7.6785526,0.022015207,0.02758742,-0.0046662656 +24048000,baro,491.2297 +24048000,airspeed,2.5613356,2.5011137 +24048000,mag,0.209,-0.09000001,0.42200002 +24052000,baro,491.18744 +24052000,airspeed,-2.0220141,-1.9744779 +24052000,imu,-0.21867952,0.155467,-7.775846,0.027690591,0.025229605,-0.004975694 +24052000,mag,0.209,-0.09000001,0.42200002 +24056000,imu,-0.29060134,0.22593209,-7.977337,0.031092571,0.023648791,-0.0014458487 +24056000,mag,0.209,-0.09000001,0.42200002 +24056000,airspeed,3.3838563,3.304304 +24056000,baro,491.18744 +24060000,baro,491.18744 +24060000,imu,-0.32033566,0.2763252,-8.165889,0.035113126,0.033867847,-0.001015796 +24060000,airspeed,-3.1278946,-3.0543597 +24060000,mag,0.209,-0.09000001,0.42200002 +24064000,airspeed,3.6309397,3.5455463 +24064000,imu,-0.24915539,0.22932017,-8.253427,0.041145097,0.034589108,-0.0034920326 +24064000,baro,491.33768 +24064000,mag,0.208,-0.092000015,0.423 +24068000,imu,-0.2526134,0.23319602,-8.28873,0.04368561,0.033974208,-0.0035505893 +24068000,baro,491.33768 +24068000,airspeed,0.3870184,0.37791643 +24068000,mag,0.20700002,-0.092000015,0.423 +24076000,mag,0.20700002,-0.092000015,0.423 +24076000,baro,491.09824 +24076000,airspeed,-3.7229474,-3.635443 +24076000,imu,-0.25924248,0.17761977,-8.4785595,0.04752735,0.041455835,-0.00444537 +24080000,imu,-0.25305635,0.17951085,-8.623544,0.049801026,0.04557449,0.0038528773 +24080000,baro,491.09824 +24080000,airspeed,-3.0041783,-2.933568 +24080000,mag,0.20700002,-0.092000015,0.423 +24084000,baro,491.1264 +24084000,mag,0.20700002,-0.092000015,0.423 +24088000,imu,-0.20619765,0.26317298,-8.883529,0.0515354,0.050969403,-0.009153809 +24088000,airspeed,-2.62765,-2.5658705 +24092000,imu,-0.1864636,0.2787781,-8.978375,0.053034347,0.050945,-0.006765635 +24092000,baro,491.35645 +24092000,mag,0.20700002,-0.09100001,0.423 +24092000,airspeed,3.4360473,3.3552337 +24096000,airspeed,-1.9107687,-1.8658534 +24096000,imu,-0.24531806,0.27037618,-9.103717,0.0583712,0.053075768,-0.0048347497 +24096000,baro,491.14047 +24100000,airspeed,-3.1245656,-3.0511181 +24100000,baro,491.14047 +24100000,mag,0.20700002,-0.09100001,0.42400002 +24104000,imu,-0.23379359,0.29865238,-9.192683,0.056690916,0.052644663,0.00087294297 +24104000,airspeed,-2.2884312,-2.234624 +24108000,airspeed,4.1608615,4.0630283 +24108000,mag,0.20700002,-0.09100001,0.42400002 +24108000,imu,-0.23334245,0.1980818,-9.381495,0.056534797,0.058948047,-0.0009805715 +24108000,baro,491.24377 +24112000,airspeed,-2.470963,-2.4128554 +24112000,baro,491.3048 +24112000,mag,0.20600002,-0.09100001,0.42400002 +24112000,imu,-0.2818154,0.21558961,-9.503561,0.06272375,0.059960067,0.0043253847 +24116000,airspeed,-3.074928,-3.002612 +24116000,baro,491.33298 +24116000,imu,-0.24842255,0.2848096,-9.55408,0.063541405,0.057427686,0.014026958 +24116000,mag,0.20700002,-0.08600001,0.42400002 +24120000,imu,-0.21575859,0.27617013,-9.630104,0.06619598,0.05680627,0.008997761 +24120000,airspeed,1.8094596,1.7669039 +24120000,baro,491.34238 +24120000,mag,0.20700002,-0.08600001,0.42400002 +24124000,airspeed,1.2928296,1.2624242 +24128000,baro,491.43628 +24128000,mag,0.20700002,-0.08600001,0.42400002 +24128000,imu,-0.24813879,0.2846573,-9.918718,0.08059881,0.056117784,-0.0034973011 +24132000,imu,-0.18563862,0.26134259,-10.015307,0.06709943,0.053420357,-0.002270817 +24132000,baro,491.27664 +24132000,airspeed,-1.6854601,-1.6458272 +24132000,mag,0.20700002,-0.08600001,0.42400002 +24136000,imu,-0.17748211,0.23971154,-10.08946,0.06908217,0.05258566,0.009722279 +24136000,baro,491.2297 +24136000,airspeed,-0.08409585,-0.0821186 +24136000,mag,0.20700002,-0.08600001,0.42400002 +24140000,baro,491.27194 +24140000,mag,0.20600002,-0.08500001,0.42400002 +24140000,imu,-0.19479172,0.20895088,-10.135757,0.07504001,0.051294856,0.0047930493 +24140000,airspeed,-2.3863838,-2.33027 +24144000,mag,0.20600002,-0.08500001,0.42400002 +24144000,imu,-0.21502061,0.19785737,-10.118681,0.07571358,0.054986153,-0.0020549125 +24144000,baro,491.2015 +24144000,airspeed,0.7448499,0.72733843 +24148000,mag,0.20600002,-0.08500001,0.42400002 +24148000,imu,-0.18877152,0.1630637,-10.133293,0.077536374,0.058771513,-0.0009815601 +24148000,baro,491.29074 +24148000,airspeed,3.7379775,3.6500773 +24152000,baro,491.2062 +24152000,mag,0.20600002,-0.08500001,0.42400002 +24152000,airspeed,2.847374,2.780431 +24152000,imu,-0.22504677,0.14048903,-10.216497,0.07611914,0.053521574,-0.0016026828 +24156000,airspeed,1.1970813,1.1689411 +24156000,imu,-0.28391615,0.1509899,-10.331845,0.0730236,0.052432243,0.0032078624 +24156000,mag,0.20600002,-0.08500001,0.425 +24156000,baro,491.15457 +24160000,mag,0.20600002,-0.08500001,0.425 +24160000,baro,491.09824 +24160000,airspeed,-2.2841985,-2.2305102 +24160000,imu,-0.2704659,0.2234451,-10.427942,0.07617094,0.052163377,0.00471618 +24164000,airspeed,1.4356178,1.4018748 +24164000,imu,-0.27182642,0.30163825,-10.445816,0.07149069,0.053539224,0.007128875 +24164000,baro,491.09824 +24164000,mag,0.20600002,-0.08500001,0.425 +24168000,airspeed,4.2267365,4.1273413 +24168000,baro,491.3001 +24168000,imu,-0.27186745,0.31074825,-10.477546,0.06794257,0.06302674,0.0027383482 +24168000,mag,0.20600002,-0.08500001,0.425 +24172000,baro,491.2109 +24172000,airspeed,-1.8894042,-1.8449829 +24172000,mag,0.20600002,-0.08500001,0.42700002 +24172000,imu,-0.29900953,0.25183713,-10.486054,0.06974445,0.06538956,-0.0007390052 +24176000,airspeed,2.43602,2.3787363 +24176000,mag,0.20600002,-0.08500001,0.42700002 +24176000,imu,-0.3113371,0.20708504,-10.435662,0.069900036,0.058399964,-0.0013127355 +24176000,baro,491.28604 +24180000,imu,-0.35185376,0.241614,-10.4518,0.07289405,0.055172462,0.00014862113 +24180000,baro,491.1311 +24180000,mag,0.20600002,-0.08500001,0.42700002 +24180000,airspeed,2.3198216,2.2652917 +24188000,baro,491.17334 +24188000,airspeed,-1.9575443,-1.9115252 +24188000,mag,0.20600002,-0.084000014,0.42800003 +24188000,imu,-0.33341905,0.20434153,-10.446581,0.06410149,0.0724947,0.0015934389 +24192000,baro,491.32358 +24192000,airspeed,2.0098543,1.9625877 +24192000,mag,0.20600002,-0.084000014,0.42800003 +24192000,imu,-0.28584358,0.23646037,-10.424666,0.07150145,0.06583206,-0.0017561374 +24196000,airspeed,-1.1765581,-1.1488885 +24196000,mag,0.20500001,-0.084000014,0.42800003 +24196000,baro,491.32358 +24200000,mag,0.20500001,-0.084000014,0.42800003 +24200000,imu,-0.28803995,0.22719046,-10.474218,0.065394394,0.067038335,-0.0057169762 +24200000,airspeed,2.5810108,2.5203276 +24200000,baro,491.225 +24204000,imu,-0.28442547,0.21596304,-10.509525,0.06401588,0.0634747,-0.0032507617 +24204000,mag,0.20500001,-0.084000014,0.42800003 +24204000,airspeed,-3.3474574,-3.2687547 +24204000,baro,491.2156 +24212000,imu,-0.22408892,0.2736925,-10.284583,0.07222298,0.06332757,-0.0038766887 +24212000,airspeed,1.5863771,1.5490736 +24212000,mag,0.20500001,-0.084000014,0.42800003 +24212000,baro,491.28134 +24216000,imu,-0.20413202,0.2507863,-10.28634,0.071026094,0.0629505,-0.005965251 +24216000,airspeed,3.599859,3.5152006 +24216000,baro,491.3189 +24216000,mag,0.20500001,-0.08300001,0.42800003 +24220000,imu,-0.18325064,0.2624811,-10.196758,0.067230836,0.06313589,0.00013382283 +24220000,baro,491.14047 +24220000,airspeed,1.4902878,1.4552562 +24220000,gps,491706.0,85456088.0,473977499.0,0.049999997,-0.01,0.049999997 +24220000,mag,0.20500001,-0.08700001,0.42600003 +24224000,baro,491.10764 +24224000,mag,0.20500001,-0.08700001,0.42700002 +24228000,baro,491.24377 +24228000,mag,0.20500001,-0.08700001,0.42700002 +24228000,airspeed,3.2046056,3.1292562 +24228000,imu,-0.22846167,0.2538819,-10.355842,0.06725348,0.056133583,0.0023789597 +24232000,baro,491.3001 +24232000,mag,0.20500001,-0.08700001,0.42700002 +24232000,airspeed,2.3408718,2.2858238 +24232000,imu,-0.25426313,0.28111553,-10.241286,0.060279783,0.053336874,-0.00012817755 +24236000,airspeed,-1.5044374,-1.4690591 +24236000,imu,-0.27659023,0.24165355,-10.194792,0.058409452,0.05299829,0.00084975216 +24240000,mag,0.20400001,-0.08700001,0.42700002 +24240000,imu,-0.25881428,0.1747412,-10.13723,0.053632718,0.055909235,-0.0007068055 +24240000,airspeed,-4.1788273,-4.0806074 +24240000,baro,491.09824 +24244000,mag,0.20400001,-0.08600001,0.42700002 +24244000,airspeed,2.1901953,2.1386976 +24244000,imu,-0.23554511,0.18197042,-10.111912,0.056607276,0.058458477,0.0016900991 +24244000,baro,491.24377 +24248000,mag,0.20400001,-0.08600001,0.42700002 +24248000,imu,-0.24895184,0.217927,-10.052593,0.063511625,0.04994564,0.0010032973 +24248000,airspeed,-2.526918,-2.4675035 +24248000,baro,491.24377 +24252000,baro,491.24377 +24252000,mag,0.20400001,-0.08600001,0.42700002 +24252000,airspeed,3.541835,3.4585574 +24252000,imu,-0.26366186,0.25328356,-10.030342,0.05837718,0.049425386,0.0013464646 +24256000,mag,0.20400001,-0.08600001,0.42700002 +24256000,baro,491.2156 +24256000,airspeed,1.5763878,1.539325 +24256000,imu,-0.23157181,0.2975944,-9.939804,0.053125244,0.04937323,-5.5347115e-05 +24264000,airspeed,-2.1036174,-2.0541594 +24264000,mag,0.20400001,-0.08600001,0.42700002 +24264000,baro,491.2109 +24264000,imu,-0.27306473,0.19854231,-9.964757,0.04803164,0.045492087,0.000116547795 +24268000,mag,0.20400001,-0.08600001,0.42700002 +24268000,imu,-0.25360566,0.20533606,-9.928269,0.048208542,0.038633004,0.002348526 +24268000,airspeed,-2.2827055,-2.2290246 +24268000,baro,491.3048 +24272000,imu,-0.21996069,0.23338623,-9.858961,0.043234155,0.03432382,0.002000059 +24272000,mag,0.20400001,-0.08600001,0.42700002 +24272000,baro,491.08414 +24272000,airspeed,-2.5760112,-2.5154657 +24276000,imu,-0.2796891,0.2649097,-9.83501,0.042846173,0.03314772,-0.0020345827 +24276000,airspeed,-4.3723707,-4.26958 +24276000,mag,0.20300001,-0.08100001,0.42800003 +24276000,baro,491.18274 +24280000,baro,491.1264 +24280000,mag,0.20300001,-0.08100001,0.42800003 +24280000,airspeed,2.9340682,2.8650997 +24280000,imu,-0.30702668,0.27665105,-9.795956,0.044738874,0.027760416,5.6388977e-05 +24284000,baro,491.17334 +24284000,imu,-0.236599,0.24707763,-9.757936,0.045336984,0.029873032,-0.00025252654 +24284000,mag,0.20300001,-0.08100001,0.42800003 +24284000,airspeed,0.46989354,0.45884684 +24288000,airspeed,-2.4438043,-2.386323 +24288000,mag,0.20300001,-0.08100001,0.42800003 +24288000,baro,491.3846 +24288000,imu,-0.2583169,0.27679908,-9.760104,0.04266595,0.028861238,-0.00080823293 +24292000,airspeed,2.4482956,2.3907323 +24292000,mag,0.20300001,-0.08100001,0.42800003 +24292000,imu,-0.29438454,0.3097151,-9.780031,0.033757396,0.02239947,-0.0021786282 +24292000,baro,491.225 +24300000,imu,-0.19569267,0.20049372,-9.805723,0.029840985,0.025738787,-0.0039779022 +24300000,airspeed,-2.7248359,-2.6607544 +24300000,mag,0.202,-0.08100001,0.42800003 +24300000,baro,491.32828 +24308000,imu,-0.31541747,0.2455619,-9.778028,0.027960451,0.021584807,0.00071819976 +24308000,airspeed,-3.8200517,-3.7302203 +24308000,mag,0.202,-0.08100001,0.42800003 +24308000,baro,491.2954 +24312000,mag,0.202,-0.08100001,0.42800003 +24312000,airspeed,3.7965207,3.7072663 +24312000,baro,491.18744 +24312000,imu,-0.32937473,0.2266031,-9.677124,0.02633343,0.020005219,0.0016297158 +24316000,imu,-0.32337487,0.2737958,-9.654148,0.023628026,0.015731541,0.0017390045 +24316000,airspeed,3.462683,3.3812737 +24316000,mag,0.202,-0.08100001,0.42800003 +24316000,baro,491.2015 +24320000,baro,491.36584 +24320000,landed,0.0 +24320000,mag,0.202,-0.08100001,0.42900002 +24324000,airspeed,-1.8646902,-1.820839 +24324000,imu,-0.2561553,0.3009158,-9.680518,0.025747985,0.013457744,0.0011080583 +24324000,mag,0.20300001,-0.08100001,0.42900002 +24324000,baro,491.3095 +24328000,airspeed,-3.916339,-3.8242402 +24328000,imu,-0.3184299,0.22494638,-9.694767,0.024366805,0.010698814,-0.005485794 +24332000,baro,491.2954 +24332000,mag,0.20300001,-0.08100001,0.42900002 +24332000,airspeed,1.2739192,1.2439619 +24332000,imu,-0.29481918,0.13095395,-9.710805,0.021940896,0.0028243007,-0.009810989 +24340000,airspeed,-1.0607543,-1.0358117 +24340000,imu,-0.26189446,0.19460568,-9.764255,0.0148015525,0.0052419077,-0.0070489817 +24340000,baro,491.26724 +24340000,mag,0.20300001,-0.08100001,0.42900002 +24344000,mag,0.20300001,-0.08100001,0.42900002 +24344000,baro,491.3001 +24344000,imu,-0.17927271,0.23278567,-9.7429085,0.015458096,0.0030927493,0.000269262 +24344000,airspeed,-2.4094372,-2.3527763 +24348000,baro,491.3001 +24348000,mag,0.20300001,-0.08100001,0.42900002 +24348000,airspeed,-1.2926108,-1.2622135 +24348000,imu,-0.23040353,0.31311303,-9.721991,0.020673884,0.0046944087,-0.0035900883 +24356000,mag,0.20300001,-0.08100001,0.42900002 +24356000,airspeed,-2.712137,-2.6484053 +24356000,baro,490.99963 +24356000,imu,-0.25282967,0.22040582,-9.799249,0.006781844,0.010731962,-0.0020681464 +24360000,imu,-0.2025327,0.25681224,-9.792969,0.0112833865,0.009546258,0.0008492248 +24364000,mag,0.20300001,-0.08100001,0.42900002 +24364000,airspeed,4.142096,4.044728 +24364000,baro,491.14047 +24364000,imu,-0.24512865,0.30660596,-9.776277,0.012251676,0.0066430797,0.004053099 +24368000,airspeed,1.3905389,1.3578446 +24368000,baro,491.2297 +24368000,imu,-0.28756636,0.36308208,-9.781724,0.007796065,0.0050269975,8.422161e-06 +24368000,mag,0.20300001,-0.08100001,0.42900002 +24376000,baro,491.24847 +24376000,mag,0.20300001,-0.08100001,0.42900002 +24376000,airspeed,-2.7734947,-2.7082815 +24376000,imu,-0.32512802,0.26253456,-9.82609,-0.0009222784,0.00849061,0.006756619 +24380000,mag,0.201,-0.08000001,0.425 +24380000,imu,-0.2909677,0.23221621,-9.778596,0.006384414,0.008754817,0.0047380324 +24380000,baro,490.99023 +24380000,airspeed,3.143855,3.0699806 +24388000,baro,491.34238 +24388000,imu,-0.26988253,0.35547873,-9.9017,-0.0022184742,-0.0020787874,0.0019913313 +24388000,mag,0.201,-0.08000001,0.425 +24388000,airspeed,3.0476162,2.97594 +24392000,imu,-0.27818578,0.36249346,-9.9135895,-0.0038664949,-0.0064393305,-0.00032506106 +24392000,mag,0.201,-0.08000001,0.425 +24392000,baro,491.2062 +24392000,airspeed,1.7619874,1.7205622 +24396000,baro,491.2062 +24396000,airspeed,2.0383046,1.990383 +24396000,mag,0.201,-0.08000001,0.425 +24396000,imu,-0.26132807,0.33400503,-9.845499,0.0019040406,-0.0043862252,0.006350252 +24400000,airspeed,-3.5782406,-3.4941216 +24400000,mag,0.201,-0.08000001,0.425 +24400000,imu,-0.24323519,0.22341077,-9.897157,0.0057022884,-0.000948952,0.0036710305 +24400000,baro,491.16867 +24408000,airspeed,-3.1201127,-3.046754 +24408000,baro,491.2203 +24408000,imu,-0.23038356,0.22956337,-9.9768915,0.0082570845,-0.00977435,0.0016554636 +24408000,mag,0.201,-0.08000001,0.425 +24412000,imu,-0.25562593,0.27242184,-9.9167595,0.007994497,-0.013163715,0.0034569784 +24412000,airspeed,3.5884383,3.5040452 +24412000,mag,0.201,-0.08000001,0.425 +24412000,baro,491.33298 +24416000,airspeed,-3.5284824,-3.4454994 +24416000,mag,0.201,-0.08000001,0.425 +24416000,imu,-0.27450997,0.3210883,-9.93468,-0.0005820758,-0.014150317,0.0068147513 +24416000,baro,491.33298 +24420000,gps,491692.0,85456087.0,473977500.0,0.06,0.0,0.02 +24424000,imu,-0.31453937,0.27713183,-9.94555,0.0010493962,-0.009901801,0.0005318763 +24424000,baro,491.117 +24424000,airspeed,0.9112982,0.8898777 +24424000,mag,0.201,-0.08000001,0.425 +24428000,baro,491.28134 +24428000,mag,0.201,-0.08000001,0.425 +24428000,imu,-0.27533576,0.24736714,-9.919501,0.0036290786,-0.009383746,0.0024126354 +24428000,airspeed,1.6963111,1.6564223 +24432000,baro,491.19214 +24432000,airspeed,2.9534523,2.8840168 +24432000,imu,-0.2502371,0.23265904,-9.926001,-0.001233761,-0.007057338,0.0004341631 +24432000,mag,0.20400001,-0.08000001,0.423 +24440000,imu,-0.25236225,0.2476454,-9.955665,-0.0068333466,-0.0015338892,0.0010294667 +24440000,airspeed,-2.5396254,-2.4799154 +24440000,mag,0.20400001,-0.08000001,0.423 +24440000,baro,491.2156 +24444000,baro,491.2156 +24444000,imu,-0.24967533,0.27298287,-9.944071,-0.01343958,-0.0017141495,-0.0031676015 +24444000,mag,0.20400001,-0.08000001,0.423 +24444000,airspeed,4.2552743,4.155227 +24448000,baro,491.225 +24448000,mag,0.20400001,-0.08000001,0.423 +24448000,airspeed,-3.175016,-3.1003654 +24448000,imu,-0.231873,0.29151016,-10.002395,-0.012841283,-0.006724624,-0.004388121 +24456000,mag,0.20400001,-0.08000001,0.423 +24456000,baro,491.2297 +24456000,airspeed,-3.4257517,-3.3452053 +24456000,imu,-0.27571413,0.36191458,-9.995215,-0.010805301,-0.0033134755,0.0017729262 +24460000,airspeed,3.3528795,3.2740467 +24460000,mag,0.20400001,-0.08000001,0.423 +24460000,imu,-0.2541825,0.26795208,-9.928397,-0.01109821,-0.004271993,0.00059347635 +24460000,baro,491.2297 +24464000,airspeed,-2.8112018,-2.7451022 +24464000,mag,0.20400001,-0.08000001,0.423 +24464000,baro,491.24377 +24464000,imu,-0.23050675,0.2128076,-9.9061,-0.0138954865,-0.0074217757,-0.0013321028 +24468000,baro,491.23907 +24468000,mag,0.20400001,-0.08000001,0.423 +24468000,airspeed,-2.8630896,-2.7957706 +24468000,imu,-0.24860783,0.29582614,-9.944957,-0.015384085,-0.0050748195,-0.003730569 +24472000,imu,-0.25453547,0.33093292,-9.94939,-0.015495649,-0.0018759499,-0.0043748855 +24472000,mag,0.20400001,-0.08000001,0.423 +24472000,airspeed,-3.1801944,-3.105422 +24472000,baro,491.225 +24476000,imu,-0.2542423,0.31301692,-9.970819,-0.022073736,-0.0072845514,0.004120409 +24476000,airspeed,-1.2119136,-1.1834253 +24476000,mag,0.20400001,-0.08000001,0.423 +24476000,baro,491.14047 +24480000,baro,491.35178 +24480000,imu,-0.30930367,0.2474309,-10.033049,-0.023629088,-0.006594652,0.0101864645 +24480000,airspeed,2.6630523,2.6004193 +24480000,mag,0.20400001,-0.08000001,0.423 +24484000,airspeed,-1.9285308,-1.8832054 +24484000,mag,0.20300001,-0.08100001,0.42800003 +24484000,baro,491.06537 +24484000,imu,-0.30225974,0.24223715,-10.027215,-0.016570011,-0.0044487626,0.0057286583 +24488000,mag,0.20300001,-0.08100001,0.42800003 +24488000,airspeed,2.9011748,2.8329897 +24488000,imu,-0.26283646,0.25052083,-9.993334,-0.01602656,-0.01098493,0.00805301 +24488000,baro,491.06537 +24496000,airspeed,-3.3630922,-3.284046 +24496000,imu,-0.3110338,0.22806533,-10.035672,-0.01613598,-0.014930233,-0.003052777 +24496000,mag,0.20300001,-0.08100001,0.42800003 +24496000,baro,491.08884 +24504000,imu,-0.27141404,0.21980481,-10.091091,-0.019069739,-0.005182226,0.0053707412 +24504000,mag,0.20300001,-0.08100001,0.42800003 +24504000,baro,491.19684 +24504000,airspeed,2.411142,2.3544557 +24508000,mag,0.20300001,-0.08100001,0.42800003 +24508000,baro,491.28134 +24508000,airspeed,3.0076628,2.936937 +24508000,imu,-0.31884092,0.2349248,-9.95841,-0.018564029,-0.009907042,0.0030699233 +24512000,imu,-0.32622677,0.20210382,-9.921124,-0.018742755,-0.0130015295,0.007124181 +24512000,baro,491.2062 +24512000,mag,0.20300001,-0.08100001,0.42800003 +24512000,airspeed,-2.1145418,-2.0648274 +24520000,imu,-0.28849864,0.3595724,-9.932856,-0.018153587,-0.0062718545,-0.0058685523 +24520000,baro,491.15457 +24520000,airspeed,-3.0510771,-2.9793537 +24520000,mag,0.20300001,-0.08100001,0.42800003 +24524000,baro,491.15457 +24524000,airspeed,-3.80461,-3.7151728 +24524000,mag,0.20300001,-0.08100001,0.42800003 +24524000,imu,-0.31088066,0.32677653,-9.958022,-0.0110372715,-0.003737174,0.0013919501 +24532000,mag,0.201,-0.08500001,0.432 +24532000,imu,-0.23974758,0.30189353,-9.993861,-0.014358911,-0.0010926882,0.0007307471 +24532000,airspeed,3.780002,3.6911473 +24532000,baro,491.1311 +24536000,baro,491.1311 +24536000,imu,-0.24589744,0.21724024,-10.010872,-0.015939016,-0.008581873,0.0049859816 +24536000,airspeed,-0.22749095,-0.22214343 +24536000,mag,0.201,-0.08500001,0.432 +24540000,imu,-0.19247815,0.22416346,-9.965781,-0.012842665,-0.0051706894,0.00970835 +24540000,mag,0.201,-0.08500001,0.432 +24540000,baro,491.07944 +24540000,airspeed,1.5956671,1.5581635 +24544000,imu,-0.17292263,0.20934764,-9.893727,-0.020121122,-0.0020477388,0.009536567 +24544000,airspeed,-4.2881017,-4.187317 +24544000,mag,0.201,-0.08500001,0.432 +24544000,baro,491.07944 +24552000,airspeed,2.392704,2.3364532 +24552000,imu,-0.19275928,0.24014658,-9.944644,-0.0107756285,-0.0012118745,0.00090383843 +24552000,baro,491.18274 +24552000,mag,0.201,-0.08500001,0.432 +24556000,baro,491.18274 +24556000,airspeed,0.36689377,0.35826835 +24556000,mag,0.201,-0.08500001,0.432 +24556000,imu,-0.29230446,0.22430028,-9.978188,-0.012882164,0.00021996461,-0.0030198707 +24560000,mag,0.201,-0.08500001,0.432 +24560000,baro,491.1123 +24560000,airspeed,-2.4044569,-2.3479395 +24560000,imu,-0.22581941,0.21003293,-9.8893385,-0.014380555,0.0015033723,0.00093933265 +24568000,airspeed,-1.2824819,-1.2523259 +24568000,mag,0.201,-0.08500001,0.432 +24568000,baro,491.25787 +24568000,imu,-0.26778132,0.19504292,-9.959957,-0.009955611,-0.004247468,-0.00044111838 +24572000,airspeed,-2.4241104,-2.3671017 +24572000,baro,491.3189 +24572000,imu,-0.16621707,0.20602585,-9.976652,-0.0149469655,0.00029904727,0.0037261518 +24572000,mag,0.201,-0.08500001,0.432 +24576000,mag,0.201,-0.08500001,0.432 +24576000,baro,491.16867 +24576000,airspeed,-2.8359964,-2.7693264 +24576000,imu,-0.1560764,0.25184065,-9.94007,-0.016580688,-0.00061061827,0.0040048826 +24580000,imu,-0.23346649,0.22950117,-9.924517,-0.018645149,-0.0005625278,0.0051662363 +24580000,baro,491.2109 +24580000,airspeed,2.2325165,2.1800277 +24580000,mag,0.201,-0.08500001,0.432 +24588000,imu,-0.27171573,0.24729961,-9.941729,-0.02193877,-0.010744654,0.0039189737 +24588000,baro,491.23438 +24588000,airspeed,-3.3039174,-3.2262342 +24588000,mag,0.202,-0.08200001,0.42700002 +24592000,imu,-0.18980199,0.291387,-9.891149,-0.018452445,-0.00500098,0.0011869034 +24592000,mag,0.202,-0.08200001,0.42700002 +24592000,airspeed,-2.5297036,-2.4702277 +24592000,baro,491.2109 +24596000,airspeed,-2.9108572,-2.8424144 +24596000,baro,491.24377 +24596000,mag,0.202,-0.08200001,0.42700002 +24596000,imu,-0.19696261,0.33462122,-9.900538,-0.013933424,-0.003357557,0.0007430968 +24600000,mag,0.202,-0.08200001,0.42700002 +24600000,baro,491.28134 +24600000,airspeed,2.5108647,2.4518216 +24600000,imu,-0.24572806,0.24551809,-9.846679,-0.018219214,-0.0048702867,0.0016829678 +24604000,mag,0.202,-0.08200001,0.42700002 +24604000,baro,491.4081 +24604000,airspeed,-2.9248435,-2.8560436 +24604000,imu,-0.21789218,0.27237856,-9.798004,-0.013101676,-0.0069419765,0.001996112 +24608000,imu,-0.14557017,0.30041286,-9.887875,-0.01073517,-0.0067303204,0.0002930402 +24608000,airspeed,-3.2361362,-3.1600547 +24608000,mag,0.202,-0.08200001,0.42700002 +24608000,baro,491.19214 +24612000,mag,0.202,-0.08200001,0.42700002 +24612000,baro,491.19214 +24616000,airspeed,-4.054499,-3.9592304 +24616000,imu,-0.29956394,0.30101505,-9.929329,-0.009408924,-0.0077057164,-0.0028394035 +24620000,baro,490.97147 +24620000,gps,491677.0,85456088.0,473977501.0,0.04,-0.01,0.099999994 +24620000,airspeed,3.8269126,3.7369916 +24620000,mag,0.202,-0.08200001,0.42700002 +24620000,imu,-0.27413133,0.28575552,-9.881535,-0.014165854,-0.0043113367,0.0014757058 +24624000,mag,0.202,-0.08200001,0.42700002 +24624000,baro,491.117 +24624000,airspeed,-2.6076944,-2.546399 +24624000,imu,-0.23363177,0.24597272,-9.969514,-0.015036542,-0.0033967705,0.002297541 +24628000,airspeed,4.3116045,4.2102466 +24628000,mag,0.202,-0.08200001,0.42700002 +24628000,baro,491.15927 +24628000,imu,-0.2736428,0.24824895,-9.991961,-0.014681321,-0.0041555823,0.0043805344 +24632000,baro,491.117 +24632000,mag,0.202,-0.08200001,0.42700002 +24632000,imu,-0.32041368,0.25931108,-9.922984,-0.013868769,-0.0046033263,0.0020694544 +24632000,airspeed,2.7894459,2.7238789 +24636000,imu,-0.3244048,0.29150766,-9.879607,-0.011348952,-0.0037333043,-0.0003482734 +24636000,mag,0.202,-0.08200001,0.42700002 +24636000,airspeed,-0.81978935,-0.8005221 +24636000,baro,491.06537 +24640000,baro,491.0466 +24640000,mag,0.20300001,-0.08500001,0.42600003 +24640000,imu,-0.24379542,0.26836777,-9.941126,-0.012187649,-0.0020007556,0.006518149 +24640000,airspeed,2.2116792,2.1597013 +24648000,baro,491.18274 +24648000,mag,0.20300001,-0.08500001,0.42600003 +24648000,airspeed,2.669126,2.606377 +24648000,imu,-0.23037435,0.25399944,-10.003928,-0.009889053,0.0038249514,-0.0015792922 +24652000,baro,491.23907 +24652000,mag,0.20300001,-0.08500001,0.42600003 +24656000,imu,-0.22922839,0.22192873,-9.963117,0.0024327273,0.012492216,-0.0024129096 +24656000,airspeed,-2.9088027,-2.8404014 +24660000,imu,-0.2639185,0.23112287,-9.971997,0.00094588834,0.005989472,0.0018329369 +24660000,baro,491.3048 +24660000,mag,0.20300001,-0.08600001,0.42600003 +24660000,airspeed,-1.0918753,-1.0661982 +24664000,airspeed,-2.8673806,-2.7999737 +24664000,mag,0.20300001,-0.08600001,0.42600003 +24664000,baro,491.15927 +24664000,imu,-0.27583706,0.23232426,-9.929646,-0.007245594,-0.00011830113,0.0041593094 +24668000,baro,491.3189 +24668000,mag,0.20300001,-0.08600001,0.42600003 +24672000,baro,491.2015 +24672000,airspeed,-0.19028986,-0.18581602 +24672000,imu,-0.29961765,0.3051724,-9.959417,-0.0043335753,0.0063157976,0.0007455388 +24672000,mag,0.20300001,-0.08600001,0.42600003 +24680000,airspeed,-2.4120498,-2.3553247 +24680000,baro,491.3189 +24680000,imu,-0.24809939,0.22982731,-9.931494,-0.007737088,0.018282592,0.004362103 +24680000,mag,0.20300001,-0.08600001,0.42600003 +24688000,baro,491.2203 +24688000,imu,-0.20488423,0.2618146,-9.934224,-0.01016801,0.008453653,-0.0007461947 +24688000,airspeed,2.2789402,2.2253585 +24688000,mag,0.20300001,-0.084000014,0.42700002 +24696000,baro,491.2062 +24696000,mag,0.202,-0.084000014,0.42700002 +24696000,imu,-0.24368156,0.18889318,-9.880848,-0.004981325,0.019567728,-0.0064189564 +24696000,airspeed,-1.8463928,-1.8029824 +24700000,airspeed,0.59139115,0.5774889 +24700000,mag,0.202,-0.084000014,0.42700002 +24700000,baro,491.15457 +24700000,imu,-0.23600562,0.17930536,-9.946113,-0.0019323543,0.016813044,-0.006702536 +24704000,baro,491.24847 +24704000,imu,-0.24382944,0.24582537,-9.977221,-0.0042728954,0.014327803,0.00033972296 +24704000,mag,0.202,-0.084000014,0.42700002 +24704000,airspeed,3.301885,3.2242465 +24708000,baro,491.24847 +24708000,imu,-0.14933857,0.22061786,-10.00581,-0.004400672,0.010300483,0.002653683 +24708000,mag,0.202,-0.084000014,0.42700002 +24708000,airspeed,2.0551198,2.006797 +24716000,baro,491.3142 +24716000,airspeed,2.2612884,2.2081096 +24716000,imu,-0.2683713,0.21371211,-9.9581375,-0.0033109155,0.005499746,-0.00092273473 +24716000,mag,0.202,-0.084000014,0.42700002 +24720000,airspeed,2.4759254,2.4177198 +24720000,baro,491.16867 +24720000,imu,-0.26138297,0.2369954,-9.992925,-0.0007143996,0.007205306,-0.0043706913 +24720000,mag,0.202,-0.084000014,0.42700002 +24724000,airspeed,-2.783851,-2.7183747 +24724000,baro,491.36115 +24724000,mag,0.202,-0.084000014,0.42700002 +24724000,imu,-0.21797186,0.24963433,-10.009987,-0.0024489653,0.006965824,-0.0028240394 +24732000,imu,-0.23537423,0.21436013,-9.8968,-0.0001257917,0.013336743,-0.004858134 +24732000,baro,491.3189 +24732000,airspeed,-3.3136141,-3.2356863 +24732000,mag,0.202,-0.084000014,0.42700002 +24736000,airspeed,1.978097,1.9316055 +24736000,imu,-0.23808089,0.29780266,-9.968628,-0.0032050542,0.012311586,-0.0034816025 +24740000,imu,-0.25416306,0.24552909,-10.040732,-0.006370649,0.002614051,0.002633211 +24740000,baro,491.394 +24740000,mag,0.20400001,-0.084000014,0.43 +24740000,airspeed,-3.5183477,-3.4355896 +24744000,baro,491.2297 +24744000,imu,-0.23202431,0.24437022,-10.017524,-0.008489916,0.0043388163,0.004731031 +24744000,mag,0.20400001,-0.084000014,0.43 +24744000,airspeed,2.937569,2.8684998 +24748000,airspeed,-3.8337858,-3.7436445 +24748000,baro,491.2297 +24748000,imu,-0.24025801,0.22010668,-10.030718,0.00057767826,0.008504895,0.0010425027 +24748000,mag,0.20400001,-0.084000014,0.43 +24752000,mag,0.20400001,-0.084000014,0.43 +24752000,airspeed,3.1881835,3.1132288 +24752000,imu,-0.26556492,0.25302243,-10.03493,0.004015405,0.003595398,-0.0046886485 +24752000,baro,491.19214 +24756000,mag,0.20400001,-0.084000014,0.43 +24756000,baro,491.19684 +24756000,imu,-0.22251047,0.27572075,-9.975728,0.0005377518,-0.00020723767,0.00074316916 +24756000,airspeed,-1.2798712,-1.249781 +24760000,airspeed,2.1633477,2.1124973 +24760000,imu,-0.23346084,0.20541114,-9.9677925,0.0035575475,0.0036223202,0.006274684 +24764000,airspeed,2.7798975,2.714542 +24764000,imu,-0.3140414,0.21521647,-10.004585,0.0016290231,0.0020549747,0.003718475 +24764000,mag,0.20400001,-0.084000014,0.43 +24764000,baro,491.19214 +24768000,airspeed,3.5132554,3.4306452 +24768000,mag,0.20400001,-0.084000014,0.43 +24768000,imu,-0.26593977,0.23351851,-10.012271,0.0005306842,0.0018801494,-0.0028494447 +24768000,baro,491.25317 +24772000,mag,0.20400001,-0.084000014,0.43 +24772000,airspeed,2.4422524,2.3848257 +24772000,imu,-0.20084031,0.21479754,-10.027695,0.0049777655,0.003714755,-0.0053583817 +24772000,baro,491.25317 +24776000,mag,0.20400001,-0.084000014,0.43 +24776000,airspeed,-1.6644757,-1.6253414 +24776000,imu,-0.27117583,0.20488335,-10.071945,0.0056802575,0.0034597584,-0.0013755222 +24776000,baro,491.2156 +24780000,airspeed,-2.4133923,-2.3566508 +24780000,baro,491.2109 +24780000,imu,-0.30924565,0.24489917,-10.057269,-0.0018796895,0.0011575442,-0.0012393105 +24780000,mag,0.20400001,-0.084000014,0.43 +24788000,imu,-0.26404327,0.18755822,-10.00075,0.004974441,0.0038672455,0.0014917246 +24788000,baro,491.225 +24788000,airspeed,3.1346257,3.0609243 +24788000,mag,0.20400001,-0.084000014,0.43 +24792000,baro,491.3142 +24792000,mag,0.201,-0.08300001,0.42800003 +24792000,imu,-0.2726655,0.20307027,-10.048281,0.008138335,-0.0018139331,0.0025231668 +24792000,airspeed,1.570576,1.5336401 +24796000,airspeed,2.438576,2.3812401 +24796000,mag,0.201,-0.08300001,0.42800003 +24796000,imu,-0.21344194,0.29783496,-10.05803,0.0067941085,0.0049731196,0.0002248328 +24796000,baro,491.225 +24800000,airspeed,0.71420926,0.6974168 +24800000,mag,0.201,-0.08300001,0.42800003 +24800000,baro,491.225 +24800000,imu,-0.19690341,0.27428353,-10.013074,0.0026672834,0.00630745,-0.00066812465 +24804000,imu,-0.1642095,0.1899538,-9.951005,-0.0025671576,0.008676156,0.003230405 +24804000,airspeed,1.6633477,1.624244 +24808000,airspeed,3.7495043,3.6613507 +24808000,mag,0.201,-0.08300001,0.42800003 +24808000,imu,-0.17800531,0.21375997,-10.02544,-0.0038992912,0.004118675,0.002158256 +24808000,baro,491.2062 +24816000,imu,-0.27499738,0.19558114,-10.095545,0.0015821963,0.0072514974,-0.0026118006 +24816000,mag,0.201,-0.08300001,0.42800003 +24816000,airspeed,2.4186087,2.3617396 +24816000,baro,491.24377 +24820000,airspeed,0.5477503,0.534871 +24820000,mag,0.201,-0.08300001,0.42800003 +24820000,gps,491664.0,85456087.0,473977503.0,0.049999997,0.0,0.06 +24820000,imu,-0.25960165,0.22196157,-10.0036955,0.0016695849,0.007138537,0.0008460505 +24820000,baro,491.24377 +24824000,mag,0.201,-0.08300001,0.42800003 +24824000,airspeed,-2.9632013,-2.893543 +24824000,imu,-0.21433717,0.25837123,-9.948555,0.0010822454,0.010529573,0.0018671522 +24824000,baro,491.15457 +24828000,mag,0.201,-0.08300001,0.42800003 +24828000,imu,-0.21751724,0.23976642,-9.955177,0.0031377324,0.005330062,-0.001983219 +24828000,baro,491.15457 +24828000,airspeed,1.0505561,1.0258598 +24832000,airspeed,-2.136053,-2.0858333 +24832000,baro,491.2015 +24832000,imu,-0.23483284,0.22152564,-10.031739,-0.00052218605,0.003438266,0.001347099 +24832000,mag,0.201,-0.08300001,0.42800003 +24836000,imu,-0.2298992,0.23615365,-10.030725,0.00031679822,0.00058979227,0.011193745 +24836000,airspeed,-4.2835393,-4.182831 +24840000,baro,491.23438 +24840000,imu,-0.2746869,0.30058646,-10.001622,0.011971551,-0.001829567,0.006370301 +24840000,mag,0.201,-0.08300001,0.42900002 +24840000,airspeed,-2.3595436,-2.3040645 +24844000,imu,-0.31767574,0.27741686,-10.040066,0.0110025965,0.0031795325,0.0028688225 +24848000,mag,0.202,-0.08300001,0.42700002 +24848000,airspeed,3.3276963,3.2494805 +24848000,imu,-0.31219235,0.26012293,-10.051987,0.0028449064,0.006775332,0.0047537712 +24848000,baro,491.09824 +24852000,mag,0.202,-0.08300001,0.42700002 +24852000,baro,491.27194 +24856000,baro,491.00903 +24856000,mag,0.202,-0.08300001,0.42700002 +24856000,imu,-0.257413,0.3038047,-10.034963,0.005478926,-0.0013356826,0.0048702676 +24856000,airspeed,2.2818122,2.228191 +24860000,airspeed,1.5638157,1.5270383 +24860000,baro,491.3189 +24860000,mag,0.202,-0.08300001,0.42700002 +24860000,imu,-0.20764671,0.18986306,-10.023923,0.0031675668,-0.0028397408,0.0017133662 +24868000,airspeed,2.0309017,1.9831653 +24868000,baro,491.10764 +24868000,mag,0.202,-0.08300001,0.42700002 +24868000,imu,-0.2005738,0.261829,-9.988526,0.0038170018,0.004669048,0.0012522277 +24872000,airspeed,3.1676772,3.0932312 +24872000,mag,0.202,-0.08300001,0.42700002 +24872000,baro,491.05127 +24872000,imu,-0.22880304,0.21180989,-9.990977,0.008244457,0.005223035,-0.0012840783 +24876000,airspeed,-1.8990695,-1.8544043 +24876000,mag,0.202,-0.08300001,0.42700002 +24876000,imu,-0.24459276,0.16758467,-10.030246,0.013061891,-0.00038568766,0.0022114564 +24876000,baro,491.35178 +24880000,mag,0.202,-0.08300001,0.42700002 +24880000,imu,-0.29848868,0.2945612,-9.9818325,0.0151866125,-0.0031277293,0.0030828486 +24880000,airspeed,2.151143,2.1005836 +24880000,baro,491.07944 +24884000,mag,0.202,-0.08300001,0.42700002 +24884000,imu,-0.2409036,0.26535657,-10.016394,0.010551753,-0.0034228358,0.001083648 +24884000,airspeed,-2.6388311,-2.5768092 +24884000,baro,491.07944 +24888000,mag,0.202,-0.08300001,0.42700002 +24888000,imu,-0.15021876,0.20987,-10.04828,0.009465098,0.0025547647,0.0007044896 +24888000,airspeed,-2.847611,-2.7806582 +24888000,baro,491.225 +24892000,mag,0.202,-0.08300001,0.42700002 +24892000,airspeed,-3.65752,-3.5715108 +24892000,baro,491.29074 +24892000,imu,-0.24516267,0.22620833,-10.053108,0.005965289,0.00065089803,0.002751501 +24896000,baro,491.28604 +24896000,airspeed,-3.4086192,-3.328464 +24896000,mag,0.2,-0.08300001,0.42700002 +24896000,imu,-0.28750852,0.26384565,-10.06205,0.0042888788,-0.007997238,0.008220571 +24900000,airspeed,3.8675754,3.7766278 +24900000,imu,-0.28408286,0.31490925,-9.998644,0.0030428292,-0.0044432776,0.009616577 +24900000,mag,0.2,-0.08300001,0.42700002 +24900000,baro,491.28604 +24904000,baro,491.16867 +24904000,imu,-0.32175,0.31873015,-9.975334,-0.0010700242,-0.003899837,0.0061833025 +24904000,airspeed,2.709104,2.6454163 +24904000,mag,0.2,-0.08300001,0.42700002 +24908000,imu,-0.26434815,0.27712598,-9.931697,-0.0019670238,-0.0045045456,0.0040282155 +24908000,airspeed,2.1399674,2.0896728 +24908000,baro,491.06537 +24908000,mag,0.2,-0.08300001,0.42700002 +24912000,airspeed,1.8453847,1.8020134 +24912000,mag,0.2,-0.08300001,0.42700002 +24912000,imu,-0.28132355,0.1157421,-9.95048,0.0005641598,-0.00022168459,0.00294063 +24912000,baro,491.06537 +24920000,imu,-0.23040761,0.2980131,-10.019458,-0.0038896506,0.0005720575,0.0031054611 +24920000,baro,491.32828 +24920000,airspeed,-4.0763793,-3.9805112 +24920000,mag,0.2,-0.08300001,0.42700002 +24924000,airspeed,2.3388946,2.28393 +24924000,imu,-0.31164292,0.31594625,-10.01918,0.004273409,0.0023420306,0.0006768638 +24924000,mag,0.2,-0.08300001,0.42700002 +24924000,baro,491.0231 +24928000,imu,-0.33775148,0.21145649,-9.973115,0.0056380774,0.00040037435,-0.0029821876 +24928000,mag,0.2,-0.08300001,0.42700002 +24928000,baro,491.23438 +24928000,airspeed,-1.2772233,-1.2471924 +24936000,mag,0.2,-0.08300001,0.42700002 +24936000,imu,-0.19813268,0.21946318,-10.048008,0.01168721,-0.00048707606,0.0010700432 +24936000,airspeed,-2.52431,-2.464944 +24936000,baro,491.32828 +24940000,airspeed,-1.3107345,-1.2799224 +24940000,imu,-0.16253045,0.2580085,-10.057254,0.0032639555,0.00017817481,0.0044051358 +24940000,mag,0.2,-0.08300001,0.42700002 +24940000,baro,491.14987 +24944000,mag,0.2,-0.08300001,0.42700002 +24944000,airspeed,2.4081635,2.3515408 +24944000,baro,491.23907 +24944000,imu,-0.21036963,0.30979228,-10.041406,-0.0010258337,-0.0027258962,0.0050767944 +24948000,baro,491.1217 +24948000,airspeed,1.8123587,1.7697576 +24948000,mag,0.202,-0.084000014,0.425 +24948000,imu,-0.26842412,0.28230834,-9.98614,0.0029352785,0.00047528537,0.00078132533 +24952000,mag,0.202,-0.084000014,0.425 +24952000,baro,491.1217 +24952000,airspeed,2.3934295,2.33717 +24952000,imu,-0.29393405,0.23808067,-9.946251,0.0029542528,-0.00018696598,0.00046176958 +24960000,mag,0.202,-0.084000014,0.425 +24960000,baro,491.3095 +24960000,imu,-0.24494284,0.31180283,-9.972971,0.006848949,0.0050141388,-0.007039944 +24960000,airspeed,3.7965553,3.7072716 +24964000,mag,0.202,-0.084000014,0.425 +24964000,baro,491.225 +24964000,airspeed,-2.631177,-2.569313 +24964000,imu,-0.26954,0.2446092,-10.022694,0.0023852934,0.0021079665,0.0025841761 +24968000,imu,-0.20096111,0.2762446,-10.024123,0.001729926,-0.0034744968,0.0066331644 +24968000,mag,0.202,-0.084000014,0.425 +24968000,airspeed,1.3411877,1.3096546 +24968000,baro,491.2156 +24972000,baro,491.18744 +24972000,imu,-0.21719025,0.22941734,-9.968503,0.003139954,-0.005681523,0.009835049 +24972000,mag,0.202,-0.084000014,0.425 +24972000,airspeed,4.173626,4.0755053 +24976000,imu,-0.2181297,0.24160536,-9.938325,-0.001961025,-0.007047732,0.00083279476 +24976000,mag,0.202,-0.084000014,0.425 +24976000,airspeed,0.13977315,0.13648781 +24976000,baro,491.10294 +24980000,imu,-0.21979994,0.32190666,-9.969091,-0.0044575958,-0.00610666,-0.0025336938 +24980000,mag,0.202,-0.084000014,0.425 +24980000,airspeed,-3.9721394,-3.8787725 +24980000,baro,491.1123 +24984000,imu,-0.29494315,0.24709862,-9.980226,0.0031964106,-0.009001637,0.0036232357 +24984000,airspeed,1.2622659,1.2325908 +24984000,baro,491.18274 +24984000,mag,0.202,-0.084000014,0.425 +24988000,baro,491.1264 +24988000,imu,-0.28794685,0.20018473,-9.984962,0.003982417,-0.0064796326,-0.00012806474 +24988000,mag,0.202,-0.084000014,0.425 +24988000,airspeed,-2.362479,-2.306946 +24992000,imu,-0.2287695,0.2175542,-9.946384,-0.0024150033,-0.005416054,-0.002901304 +24992000,airspeed,-2.1082678,-2.0586836 +24992000,mag,0.202,-0.084000014,0.425 +24992000,baro,491.34238 +25000000,airspeed,-2.6918392,-2.628553 +25000000,imu,-0.31258988,0.2597692,-10.042576,-0.0052702073,-0.0022323758,0.006149019 +25000000,mag,0.19700001,-0.08200001,0.425 +25000000,baro,491.19684 +25004000,baro,491.19684 +25004000,airspeed,1.7736173,1.7319188 +25004000,imu,-0.24603328,0.24605615,-10.011453,-0.002671208,-0.0036426054,0.0006524152 +25004000,mag,0.19700001,-0.08200001,0.425 +25008000,mag,0.19700001,-0.08200001,0.425 +25008000,baro,491.14517 +25008000,airspeed,1.8896867,1.8452652 +25008000,imu,-0.20286715,0.27676758,-9.996257,-0.004127857,-0.0050261393,-0.009350847 +25012000,mag,0.19700001,-0.08200001,0.425 +25012000,baro,491.00433 +25016000,airspeed,0.940007,0.91789967 +25016000,imu,-0.32352668,0.2561425,-9.878291,-0.005962848,-0.012361256,-0.0051771416 +25020000,imu,-0.2708997,0.24131982,-9.917847,-0.00889285,-0.009460037,-0.0020038523 +25020000,baro,491.33298 +25020000,airspeed,1.0104021,0.98663914 +25020000,gps,491667.0,85456087.0,473977504.0,0.06,-0.02,-0.01 +25020000,mag,0.19700001,-0.08200001,0.425 +25024000,airspeed,-1.535026,-1.4989249 +25024000,mag,0.19700001,-0.08200001,0.425 +25024000,imu,-0.21112093,0.2678984,-9.875675,-0.009010116,-0.00395528,-0.00340855 +25024000,baro,491.33298 +25028000,imu,-0.28275356,0.27182487,-9.861843,-0.009249433,0.0028870942,0.00054275844 +25028000,airspeed,3.7775989,3.688786 +25028000,baro,491.19684 +25028000,mag,0.19700001,-0.08200001,0.425 +25032000,mag,0.19700001,-0.08200001,0.425 +25032000,baro,491.15927 +25036000,imu,-0.19018747,0.22207294,-9.958647,-0.009694773,-0.0040185093,0.004447083 +25036000,airspeed,1.1925405,1.1644979 +25036000,mag,0.19700001,-0.08200001,0.425 +25036000,baro,491.27664 +25044000,mag,0.19700001,-0.08200001,0.425 +25044000,baro,491.0466 +25044000,imu,-0.19253819,0.31231526,-9.973338,-0.014538491,-0.014729135,0.0018347087 +25044000,airspeed,2.8278584,2.7613995 +25048000,baro,491.4128 +25048000,imu,-0.26153988,0.29058564,-9.972919,-0.012567843,-0.01468991,0.004233596 +25048000,airspeed,-2.597373,-2.5362756 +25048000,mag,0.19700001,-0.08200001,0.425 +25056000,imu,-0.19127192,0.35915175,-9.945135,-0.015290057,-0.0062069157,0.0066563464 +25056000,baro,491.34238 +25056000,mag,0.19900002,-0.084000014,0.42800003 +25056000,airspeed,2.7825634,2.7171202 +25060000,airspeed,3.5735164,3.4895031 +25060000,baro,491.18744 +25060000,mag,0.19900002,-0.084000014,0.42800003 +25060000,imu,-0.19188887,0.27532205,-9.931395,-0.010431057,-0.002989868,0.0021041764 +25068000,baro,491.1123 +25068000,airspeed,-1.5396212,-1.5034318 +25068000,imu,-0.11911718,0.24105524,-9.87958,-0.009933906,-0.008810306,6.672552e-05 +25068000,mag,0.19900002,-0.084000014,0.42800003 +25076000,imu,-0.2784799,0.2619673,-9.9175825,-0.014019502,0.002082565,-0.0032157043 +25076000,mag,0.19900002,-0.084000014,0.42800003 +25076000,airspeed,-1.5561699,-1.5195856 +25076000,baro,491.17804 +25080000,mag,0.19900002,-0.084000014,0.42800003 +25080000,baro,491.2109 +25080000,imu,-0.16376214,0.2863038,-9.904255,-0.009879019,0.0026645535,-0.0026004198 +25080000,airspeed,0.84463555,0.82477725 +25084000,airspeed,-0.8021986,-0.78334105 +25084000,mag,0.19900002,-0.084000014,0.42800003 +25084000,imu,-0.21206191,0.29421908,-9.934383,-0.0065123234,-0.00092802517,-0.000979785 +25084000,baro,491.14517 +25088000,baro,491.00433 +25088000,imu,-0.28756943,0.31454715,-9.931636,-0.0018591861,-0.0027548687,-0.0004202689 +25088000,mag,0.19900002,-0.084000014,0.42800003 +25092000,mag,0.19900002,-0.084000014,0.42800003 +25092000,airspeed,2.5813942,2.5206957 +25092000,baro,491.25317 +25092000,imu,-0.28542015,0.27364132,-9.895706,-0.0042762808,-0.0028906404,0.0010142579 +25096000,baro,491.07477 +25096000,imu,-0.29230383,0.21400465,-9.86359,-0.0072284476,-0.0012191631,0.006469489 +25096000,airspeed,4.2822394,4.181593 +25096000,mag,0.19900002,-0.084000014,0.42800003 +25100000,baro,491.07477 +25100000,mag,0.19900002,-0.084000014,0.42800003 +25104000,baro,491.17334 +25104000,imu,-0.20326614,0.2639126,-9.898595,-0.007017683,-8.0869926e-05,-0.00041744587 +25104000,mag,0.2,-0.08300001,0.42900002 +25104000,airspeed,1.2126294,1.1841217 +25112000,imu,-0.20530543,0.28188002,-9.867307,-0.0013362645,0.0031197292,0.0022222786 +25112000,baro,491.3095 +25112000,mag,0.2,-0.084000014,0.42900002 +25112000,airspeed,-2.552207,-2.492187 +25116000,imu,-0.2725784,0.21148817,-9.922993,-0.0011847301,-0.0023382285,0.0044102944 +25116000,mag,0.2,-0.084000014,0.42900002 +25116000,baro,491.15927 +25116000,airspeed,-4.267895,-4.1675644 +25120000,imu,-0.22841889,0.23132785,-9.886756,-0.0031170952,-0.0062279725,0.0075288774 +25120000,baro,491.1264 +25120000,airspeed,-1.55625,-1.5196681 +25120000,mag,0.2,-0.084000014,0.42900002 +25128000,mag,0.2,-0.084000014,0.42900002 +25128000,imu,-0.20209181,0.31125572,-9.872619,0.004850185,-0.009550728,0.0052000405 +25128000,baro,491.08414 +25128000,airspeed,3.9732757,3.879888 +25132000,airspeed,-2.2821667,-2.2285268 +25132000,imu,-0.24567166,0.29549047,-9.895145,-0.0018715165,-0.0104478905,0.005022087 +25132000,mag,0.2,-0.084000014,0.42900002 +25132000,baro,491.08414 +25136000,mag,0.2,-0.084000014,0.42900002 +25136000,baro,491.27664 +25136000,imu,-0.26120794,0.26135492,-9.933814,-0.00439253,-0.0060299537,0.0017519266 +25136000,airspeed,1.4642491,1.4298171 +25140000,mag,0.2,-0.084000014,0.42900002 +25140000,airspeed,-0.7419661,-0.72451866 +25140000,baro,491.27664 +25140000,imu,-0.22520064,0.24763247,-10.007394,-0.006573664,-0.0055754753,0.002345517 +25144000,imu,-0.25432745,0.28789353,-9.932739,-0.0064896815,-0.00280298,0.004647918 +25144000,airspeed,-3.84764,-3.757171 +25144000,baro,491.23907 +25144000,mag,0.2,-0.084000014,0.42900002 +25152000,imu,-0.2080733,0.22981714,-9.910978,-0.0056949803,-0.0032028032,0.009281061 +25152000,mag,0.2,-0.084000014,0.42900002 +25152000,airspeed,1.3167362,1.2857723 +25152000,baro,491.28604 +25156000,airspeed,2.8916059,2.8236203 +25156000,baro,491.2109 +25156000,mag,0.2,-0.08600001,0.42700002 +25156000,imu,-0.23162495,0.26220846,-9.984427,-0.0008239562,-0.0072934674,0.008473257 +25160000,airspeed,4.228792,4.129362 +25160000,imu,-0.23995185,0.21792091,-9.972275,-0.00356049,-0.0052656042,0.0044511273 +25164000,baro,491.16867 +25164000,imu,-0.18513504,0.20952262,-9.928143,-0.0114431605,-0.0008393136,0.003917344 +25164000,mag,0.2,-0.08600001,0.42700002 +25164000,airspeed,-1.7780324,-1.736233 +25168000,baro,491.3142 +25168000,mag,0.2,-0.08600001,0.42700002 +25168000,imu,-0.10343402,0.24255672,-9.941974,-0.011459353,0.004556204,0.0049568824 +25168000,airspeed,4.3653345,4.262674 +25172000,airspeed,1.4748504,1.4401898 +25172000,baro,491.0372 +25172000,imu,-0.11213945,0.24438997,-9.904649,-0.011083623,0.004535136,0.006306792 +25172000,mag,0.2,-0.08600001,0.42700002 +25176000,imu,-0.19380663,0.29838654,-9.94384,-0.009267189,0.006469478,-2.42712e-05 +25176000,baro,491.07477 +25176000,mag,0.2,-0.08600001,0.42700002 +25176000,airspeed,-3.343723,-3.265135 +25180000,mag,0.2,-0.08600001,0.42700002 +25180000,baro,491.07477 +25180000,imu,-0.3087765,0.29307216,-10.004569,-0.007755839,0.004184408,-0.004877896 +25180000,airspeed,-1.9579008,-1.911884 +25184000,baro,491.36115 +25184000,imu,-0.3350394,0.26447704,-9.924638,-0.015742324,0.0059910226,0.0002083396 +25184000,mag,0.2,-0.08600001,0.42700002 +25184000,airspeed,2.8797927,2.8120596 +25188000,baro,491.18744 +25188000,mag,0.2,-0.08600001,0.42700002 +25188000,airspeed,-3.8711283,-3.7801182 +25188000,imu,-0.28721508,0.30103546,-9.9206915,-0.016467955,0.009170256,0.0005337186 +25192000,mag,0.2,-0.08600001,0.42700002 +25192000,imu,-0.2672247,0.29271775,-9.966564,-0.006956374,0.00344424,-0.0002997706 +25192000,baro,491.18744 +25192000,airspeed,1.8656048,1.8217444 +25196000,imu,-0.21974628,0.23206525,-10.000871,-0.008771409,0.0059332787,0.001440718 +25196000,mag,0.2,-0.08600001,0.42700002 +25196000,baro,491.14517 +25196000,airspeed,4.0708075,3.9751132 +25200000,baro,491.2062 +25200000,airspeed,-1.9181856,-1.8730874 +25200000,imu,-0.18473105,0.22702809,-9.991742,-0.0070795417,0.015616966,-0.002526967 +25200000,mag,0.2,-0.08600001,0.42700002 +25204000,airspeed,2.5397696,2.4800453 +25204000,baro,491.28604 +25204000,imu,-0.23647147,0.21735823,-9.954074,-0.0015664465,0.012860223,0.0025814825 +25204000,mag,0.2,-0.08600001,0.42700002 +25208000,baro,491.28604 +25208000,imu,-0.2348334,0.27217957,-9.997901,-0.005363877,0.0011068876,0.00677521 +25208000,mag,0.2,-0.08600001,0.42700002 +25208000,airspeed,1.6739864,1.6346216 +25212000,baro,491.18744 +25212000,airspeed,-2.2001655,-2.1484401 +25212000,imu,-0.23349512,0.31823528,-10.009268,-0.010452385,0.0012755827,-0.0019707053 +25212000,mag,0.2,-0.08600001,0.42700002 +25216000,imu,-0.2652221,0.2669722,-9.933372,-0.009161725,0.009354355,-0.0009854955 +25216000,airspeed,-0.9765062,-0.953552 +25220000,mag,0.2,-0.08600001,0.42700002 +25220000,airspeed,-2.6238835,-2.5622053 +25220000,imu,-0.31397963,0.24713026,-10.001037,-0.0033427721,0.012171038,0.0045971205 +25220000,gps,491665.0,85456086.0,473977505.0,0.04,0.0,-0.02 +25220000,baro,491.1264 +25224000,mag,0.2,-0.08600001,0.42700002 +25224000,imu,-0.28818324,0.28311095,-10.073053,-0.00060158956,0.00946711,-0.00019283901 +25224000,baro,491.2109 +25224000,airspeed,2.0759614,2.0271528 +25228000,airspeed,3.491001,3.40891 +25228000,imu,-0.26361272,0.29666936,-10.071264,-0.0016261116,0.0068256487,-0.00011207125 +25228000,mag,0.2,-0.08600001,0.42700002 +25228000,baro,491.27664 +25232000,airspeed,0.7836716,0.7652459 +25232000,imu,-0.24426633,0.24046601,-10.035099,0.0039223297,0.009259466,0.008075535 +25232000,baro,491.225 +25232000,mag,0.2,-0.08600001,0.42700002 +25236000,mag,0.2,-0.08600001,0.42700002 +25236000,airspeed,1.9104702,1.8655512 +25236000,baro,491.225 +25236000,imu,-0.19960104,0.2574995,-9.977347,0.008796991,0.015921831,0.013793746 +25240000,airspeed,-1.5577457,-1.5211174 +25240000,imu,-0.24818297,0.27985764,-9.994792,0.004461117,0.014034939,0.010166117 +25244000,airspeed,-0.89520264,-0.8741549 +25244000,baro,491.2156 +25244000,mag,0.2,-0.08600001,0.42700002 +25244000,imu,-0.278865,0.2449233,-9.957777,0.0011771407,0.011392403,0.002057416 +25248000,imu,-0.25759238,0.2279384,-9.999534,0.002131241,0.013536143,0.00037902725 +25248000,mag,0.2,-0.08600001,0.42700002 +25248000,baro,491.2156 +25248000,airspeed,-3.5916123,-3.5071676 +25252000,mag,0.2,-0.08600001,0.42700002 +25252000,imu,-0.26044908,0.2901737,-10.001145,0.0023337975,0.009096884,0.00034060827 +25252000,airspeed,2.9552135,2.885727 +25252000,baro,491.24847 +25256000,baro,491.1358 +25256000,airspeed,1.4789833,1.4442172 +25256000,mag,0.2,-0.08600001,0.42700002 +25256000,imu,-0.22341847,0.3142586,-9.925261,0.0015748458,0.0021822618,0.005317602 +25264000,mag,0.19600001,-0.08500001,0.42800003 +25264000,baro,491.37054 +25264000,imu,-0.14061052,0.23191702,-9.948517,0.0059664887,0.0057437415,0.004414067 +25264000,airspeed,-2.5230002,-2.4636576 +25268000,imu,-0.19742486,0.3075889,-9.918035,0.00330493,0.0056133643,0.0029585604 +25268000,airspeed,-2.9693244,-2.8995187 +25268000,baro,491.17334 +25268000,mag,0.19600001,-0.08500001,0.42800003 +25272000,airspeed,2.7203372,2.656364 +25272000,imu,-0.23490582,0.3020949,-9.839136,0.0014219137,0.00624307,0.0027691908 +25272000,baro,491.3001 +25272000,mag,0.19600001,-0.08500001,0.42800003 +25276000,mag,0.19600001,-0.08500001,0.42800003 +25276000,baro,491.3001 +25276000,imu,-0.24992627,0.19338807,-9.901172,-0.0023735843,0.0037779142,0.004763975 +25276000,airspeed,-1.9443119,-1.8985882 +25280000,imu,-0.24470134,0.17337972,-10.004332,-0.0021527915,0.0034779042,0.0011841772 +25280000,baro,490.98087 +25280000,airspeed,4.130586,4.0335264 +25280000,mag,0.19600001,-0.08500001,0.42800003 +25288000,baro,491.14517 +25288000,imu,-0.1703843,0.31567472,-9.973451,-0.0029992857,0.002686604,-0.001297789 +25288000,airspeed,-3.927048,-3.8347335 +25288000,mag,0.19600001,-0.08500001,0.42800003 +25292000,airspeed,-1.0716131,-1.0464143 +25292000,imu,-0.2286949,0.24207449,-10.010375,-0.0030061502,-8.8818015e-05,-0.0010399051 +25292000,baro,491.27194 +25292000,mag,0.19600001,-0.08500001,0.42800003 +25296000,baro,491.2203 +25296000,mag,0.19600001,-0.08500001,0.42800003 +25296000,imu,-0.24471316,0.29255757,-9.887081,-0.005040813,0.0045804265,0.0012909819 +25296000,airspeed,3.0361018,2.964718 +25304000,mag,0.19600001,-0.08500001,0.42800003 +25304000,baro,490.99023 +25304000,imu,-0.19540864,0.28582764,-9.860857,-0.0060311705,-0.00038435793,-0.0005642669 +25304000,airspeed,-2.4605825,-2.4027631 +25308000,imu,-0.2633101,0.24375767,-9.852247,6.751548e-05,-0.0001380716,-0.0057152202 +25308000,airspeed,3.2869713,3.2096925 +25312000,baro,491.18274 +25312000,imu,-0.26949283,0.23506933,-9.914268,-0.00665449,-0.0045620278,-0.0024394703 +25312000,airspeed,3.0214717,2.9504385 +25312000,mag,0.201,-0.08200001,0.42600003 +25316000,baro,491.18274 +25316000,mag,0.201,-0.08200001,0.42600003 +25316000,airspeed,3.6142035,3.5292354 +25316000,imu,-0.23004365,0.29217032,-9.926806,-0.01371789,-0.005723094,-0.0063058888 +25320000,landed,0.0 +25324000,mag,0.201,-0.08200001,0.42600003 +25324000,imu,-0.21383509,0.30756247,-9.912232,-0.0039871573,-0.0054997746,0.0042393985 +25324000,airspeed,3.2260103,3.1501489 +25324000,baro,491.28604 +25332000,mag,0.201,-0.08200001,0.42600003 +25332000,imu,-0.21005313,0.2774156,-9.917985,-0.0028295645,0.0038286343,0.0011875728 +25332000,airspeed,1.5749211,1.5378993 +25332000,baro,491.14047 +25336000,mag,0.201,-0.08200001,0.42600003 +25336000,airspeed,2.13755,2.0873067 +25336000,baro,491.10764 +25336000,imu,-0.2212993,0.1901629,-9.942565,-0.0050324886,0.0030546999,0.003653008 +25340000,mag,0.201,-0.08200001,0.42600003 +25340000,baro,491.18744 +25340000,airspeed,-3.8970737,-3.8054543 +25340000,imu,-0.2501081,0.21328616,-9.9337015,-0.005870152,-0.00045586377,-0.0002775416 +25348000,imu,-0.24091394,0.259801,-9.847948,-0.0010221953,-0.0032622558,-0.0015594462 +25348000,airspeed,2.7175007,2.6535923 +25348000,mag,0.201,-0.08200001,0.42600003 +25348000,baro,491.3142 +25352000,imu,-0.19438346,0.23063369,-9.884077,0.0007112555,-0.0009476106,-0.0012445686 +25352000,baro,491.117 +25352000,airspeed,2.845048,2.7781727 +25352000,mag,0.201,-0.08200001,0.42600003 +25356000,mag,0.201,-0.08200001,0.42600003 +25356000,airspeed,2.610932,2.549558 +25356000,baro,491.1311 +25356000,imu,-0.21064755,0.22652614,-9.862149,-0.0020951014,-3.9994018e-05,0.0020343452 +25360000,baro,491.19684 +25360000,mag,0.201,-0.08200001,0.42600003 +25360000,airspeed,-2.0332978,-1.985494 +25360000,imu,-0.29231656,0.27961895,-9.9406595,-0.004883188,-0.003236506,0.0040588463 +25364000,imu,-0.26799378,0.2963686,-9.986515,-0.0033130306,-0.0013860074,0.002933725 +25364000,airspeed,0.51274556,0.5006833 +25368000,imu,-0.23166877,0.32083148,-9.940944,-0.0043745413,-0.0029974766,0.0028707113 +25368000,mag,0.19800001,-0.08600001,0.43 +25368000,airspeed,-2.7195933,-2.6556153 +25368000,baro,491.44565 +25376000,mag,0.19800001,-0.08600001,0.43 +25376000,imu,-0.1823816,0.18608704,-10.069297,-0.0027274427,-0.0035145404,-0.00077689847 +25376000,airspeed,3.1535473,3.0793996 +25376000,baro,491.2297 +25380000,imu,-0.16536151,0.15968741,-9.937341,-0.005550679,-0.0073525105,-0.004388504 +25380000,mag,0.19800001,-0.08600001,0.43 +25380000,baro,491.25317 +25380000,airspeed,3.5228539,3.4400182 +25384000,baro,491.16867 +25384000,mag,0.19800001,-0.08600001,0.43 +25384000,imu,-0.22935335,0.2234286,-9.872105,-0.003103357,-0.004444396,0.0010813966 +25384000,airspeed,-3.6987123,-3.6117597 +25388000,mag,0.19800001,-0.08600001,0.43 +25388000,airspeed,1.7586678,1.71733 +25388000,imu,-0.2670943,0.30006456,-9.968788,-0.0032078067,0.00071138976,0.0013775983 +25388000,baro,491.10764 +25392000,baro,491.10764 +25392000,imu,-0.25227773,0.30446616,-9.968217,-0.0029348137,0.002666003,-0.0021986724 +25392000,airspeed,-1.7526408,-1.7114445 +25392000,mag,0.19800001,-0.08600001,0.43 +25396000,imu,-0.29392463,0.24511518,-9.90352,-0.00394792,0.00436321,-0.0012954883 +25396000,baro,491.10764 +25396000,mag,0.19800001,-0.08600001,0.43 +25396000,airspeed,0.6982684,0.6818554 +25400000,baro,491.17804 +25400000,airspeed,-3.7615485,-3.6731172 +25400000,imu,-0.21094708,0.18383448,-9.920755,-0.002521348,0.006829217,-0.002552687 +25400000,mag,0.19800001,-0.08600001,0.43 +25408000,airspeed,-0.6378808,-0.62288123 +25408000,imu,-0.23191608,0.30677116,-9.95138,-0.0050025336,-0.00012143983,0.002497646 +25408000,mag,0.19800001,-0.08600001,0.43 +25408000,baro,491.27194 +25416000,imu,-0.20272292,0.2715821,-9.91051,0.0022374871,0.0020957147,-0.0024423967 +25416000,baro,491.2203 +25416000,mag,0.19800001,-0.08600001,0.43 +25416000,airspeed,-0.5161874,-0.50405097 +25420000,mag,0.20400001,-0.084000014,0.42700002 +25420000,imu,-0.2118979,0.3164988,-9.911654,-0.001647893,0.004523605,0.004619492 +25420000,airspeed,2.2582343,2.205159 +25420000,gps,491660.0,85456086.0,473977506.0,0.04,-0.04,0.02 +25420000,baro,491.07007 +25424000,baro,491.19214 +25424000,imu,-0.19502795,0.34199238,-9.921081,-0.009007524,-0.0010228079,0.0051919147 +25424000,mag,0.20400001,-0.084000014,0.42700002 +25424000,airspeed,-3.2556367,-3.1790957 +25432000,imu,-0.27710032,0.3521985,-9.976916,-0.0034231294,-0.0008256171,-0.00024432826 +25432000,airspeed,-2.5286582,-2.4692109 +25432000,baro,491.18274 +25432000,mag,0.20400001,-0.084000014,0.42700002 +25436000,imu,-0.2579219,0.3182741,-9.92361,0.0017648311,-0.0033388254,-0.0010800696 +25436000,mag,0.20400001,-0.084000014,0.42700002 +25436000,baro,491.1264 +25436000,airspeed,-2.3436782,-2.2885866 +25440000,airspeed,2.1040258,2.0545719 +25440000,mag,0.20400001,-0.084000014,0.42700002 +25440000,imu,-0.22705719,0.22529705,-9.878864,0.0013468036,-0.003793586,-0.0029363178 +25440000,baro,491.09824 +25448000,mag,0.20400001,-0.084000014,0.42700002 +25448000,airspeed,2.59547,2.5344543 +25448000,imu,-0.17507654,0.33393922,-9.931038,0.0014884731,0.00037760442,-0.0054608593 +25448000,baro,491.16397 +25452000,mag,0.20400001,-0.084000014,0.42700002 +25452000,baro,491.16397 +25452000,imu,-0.20927842,0.2588966,-9.956158,0.0029811165,0.0003747857,0.0038415552 +25452000,airspeed,-0.8916892,-0.8707268 +25456000,baro,491.16397 +25456000,mag,0.20400001,-0.084000014,0.42700002 +25456000,imu,-0.28557009,0.32208467,-9.953486,0.0033427502,0.0068243495,0.0020344753 +25456000,airspeed,-3.331985,-3.2536547 +25460000,imu,-0.2630548,0.32984585,-9.942797,0.0011350492,0.0034078062,-0.0050995196 +25460000,mag,0.20400001,-0.084000014,0.42700002 +25460000,airspeed,-1.7186953,-1.6782928 +25460000,baro,491.14987 +25464000,imu,-0.15507099,0.22768681,-9.9386635,-0.0005018183,-0.00038421704,-0.0065158736 +25464000,airspeed,2.198387,2.1466959 +25468000,imu,-0.14901409,0.2369485,-9.95557,0.002730633,-0.00048985885,0.00022558887 +25468000,mag,0.19800001,-0.088000014,0.43100002 +25468000,airspeed,1.8989204,1.8542771 +25468000,baro,491.18744 +25472000,airspeed,2.5048504,2.4459496 +25472000,imu,-0.1840731,0.23444818,-9.902497,0.005236047,-0.0038161115,0.0063882465 +25472000,mag,0.19800001,-0.088000014,0.43100002 +25472000,baro,491.27194 +25476000,baro,491.27194 +25476000,airspeed,0.64894074,0.63368106 +25476000,mag,0.19800001,-0.088000014,0.43100002 +25476000,imu,-0.20819351,0.2684028,-9.83502,0.003811983,-0.0046009826,0.0027779974 +25480000,baro,491.24847 +25480000,mag,0.19800001,-0.088000014,0.43100002 +25480000,airspeed,3.1824207,3.1075914 +25480000,imu,-0.21835554,0.273411,-9.846967,0.00077377097,-0.0014744572,-0.00077828206 +25488000,airspeed,4.134413,4.037211 +25488000,imu,-0.21196324,0.21088037,-9.949298,-0.0025216239,-0.0030322783,-0.00086649193 +25488000,baro,491.19684 +25488000,mag,0.19700001,-0.088000014,0.43100002 +25492000,airspeed,1.583659,1.5464306 +25492000,baro,491.15457 +25492000,imu,-0.19043839,0.28321123,-9.832318,-0.0010001227,-0.0044769724,-0.0036559652 +25492000,mag,0.19700001,-0.088000014,0.43100002 +25496000,airspeed,-2.9125311,-2.8440523 +25496000,imu,-0.22209284,0.30166307,-9.864025,-0.0020715292,-0.006387603,-0.0038709163 +25496000,baro,491.2203 +25496000,mag,0.19700001,-0.088000014,0.43100002 +25500000,imu,-0.2660928,0.27094826,-9.903898,-0.0014054416,-0.0029153258,-0.004662987 +25500000,airspeed,1.539751,1.5035453 +25500000,baro,491.25787 +25500000,mag,0.19700001,-0.088000014,0.43100002 +25504000,airspeed,1.4990457,1.4638008 +25504000,baro,491.2156 +25504000,mag,0.19700001,-0.088000014,0.43100002 +25504000,imu,-0.27862877,0.27224585,-9.932543,-0.007629121,-0.0045339153,-0.004642841 +25508000,mag,0.19700001,-0.088000014,0.43100002 +25508000,airspeed,2.149653,2.0991118 +25508000,baro,491.2109 +25508000,imu,-0.2572618,0.23465446,-9.971733,-0.007913216,-0.007705492,0.0038948345 +25512000,imu,-0.21365818,0.25085434,-9.95172,-0.0063481964,-0.006403954,0.0026067547 +25512000,baro,491.225 +25512000,airspeed,4.0473113,3.9521506 +25512000,mag,0.19700001,-0.088000014,0.43100002 +25516000,mag,0.19700001,-0.088000014,0.43100002 +25516000,airspeed,1.627922,1.5896345 +25516000,imu,-0.16102123,0.32431087,-9.9151745,-0.008783085,-0.010605893,0.00035938137 +25516000,baro,491.35178 +25520000,airspeed,2.2105975,2.1586058 +25520000,baro,491.35178 +25520000,mag,0.19700001,-0.088000014,0.43100002 +25520000,imu,-0.19944331,0.318503,-9.876551,-0.012301195,-0.01222346,0.0057315594 +25528000,mag,0.202,-0.08500001,0.425 +25528000,airspeed,3.324782,3.2466311 +25528000,baro,491.1123 +25528000,imu,-0.16277254,0.2537932,-9.838229,-0.007426042,0.0011947806,0.0041164258 +25532000,imu,-0.15545036,0.28077337,-9.786009,-0.005014294,0.0012007655,0.004230761 +25532000,mag,0.202,-0.08500001,0.425 +25532000,airspeed,-3.0065176,-2.9358091 +25532000,baro,491.33298 +25536000,airspeed,-2.891957,-2.8239565 +25536000,baro,491.25317 +25536000,imu,-0.23211549,0.22038577,-9.827907,-0.0064418423,-0.0045698322,0.0070601944 +25536000,mag,0.202,-0.08500001,0.425 +25540000,mag,0.202,-0.08500001,0.425 +25540000,baro,491.27664 +25544000,imu,-0.19828029,0.16305295,-9.906747,-0.013591339,0.0036480941,0.002468836 +25544000,mag,0.202,-0.08500001,0.425 +25544000,airspeed,-1.9806986,-1.9341292 +25544000,baro,491.2156 +25548000,mag,0.202,-0.08500001,0.425 +25548000,baro,491.2156 +25552000,imu,-0.26172492,0.29609308,-9.914485,-0.0063487757,0.00084254827,-0.0002308486 +25552000,airspeed,2.2833498,2.2296863 +25556000,airspeed,2.402627,2.3461602 +25556000,mag,0.202,-0.08500001,0.425 +25556000,imu,-0.22229545,0.29004416,-9.989877,-0.0070303376,0.0022283772,-0.0019209678 +25556000,baro,491.05597 +25560000,airspeed,3.4598253,3.3784735 +25560000,mag,0.202,-0.08500001,0.425 +25560000,imu,-0.24774961,0.2822462,-9.999682,-0.0037165792,0.0011492093,0.0032572995 +25560000,baro,491.24847 +25564000,mag,0.202,-0.08500001,0.425 +25564000,imu,-0.28984925,0.27638343,-9.903897,0.0041722576,-0.0028070093,0.00074860477 +25564000,airspeed,1.1179522,1.0916749 +25564000,baro,491.10294 +25568000,mag,0.202,-0.08500001,0.425 +25568000,baro,491.25317 +25568000,airspeed,-3.4701526,-3.388557 +25568000,imu,-0.21002765,0.2377207,-9.882158,0.0005564997,0.0048160274,-0.0051332405 +25572000,imu,-0.054027427,0.26854143,-9.872468,0.0011820891,0.0075072027,-0.004907529 +25572000,airspeed,-3.1720889,-3.0975082 +25576000,mag,0.19900002,-0.084000014,0.43 +25576000,imu,-0.095388405,0.23470773,-9.893985,0.0012997581,0.005213833,-0.005181758 +25576000,airspeed,2.332382,2.277552 +25576000,baro,491.15927 +25580000,mag,0.19800001,-0.084000014,0.43 +25580000,airspeed,-4.389232,-4.2860494 +25580000,imu,-0.19295108,0.1743773,-9.977702,-0.00033845112,0.006599528,-0.00020768266 +25580000,baro,491.15927 +25588000,imu,-0.2564073,0.18140335,-10.039451,0.0019026841,0.002874176,0.0057279877 +25588000,mag,0.19800001,-0.084000014,0.43 +25588000,baro,491.10764 +25588000,airspeed,-2.3204591,-2.265916 +25592000,baro,491.18274 +25592000,imu,-0.18741031,0.28108937,-9.985067,0.002926891,0.0017484005,0.007960505 +25592000,mag,0.19800001,-0.084000014,0.43 +25592000,airspeed,4.2319746,4.1324825 +25596000,baro,491.0325 +25596000,mag,0.19800001,-0.084000014,0.43 +25596000,airspeed,-3.542604,-3.45935 +25596000,imu,-0.09526487,0.2992361,-10.027455,0.004229202,0.0011637973,0.008657751 +25600000,baro,491.23438 +25600000,airspeed,3.9527252,3.859786 +25600000,mag,0.19800001,-0.084000014,0.43 +25600000,imu,-0.13167149,0.24598101,-10.028008,0.0058456073,0.0016217015,0.007979378 +25604000,mag,0.19800001,-0.084000014,0.43 +25604000,baro,491.23438 +25608000,airspeed,-2.4198725,-2.362995 +25608000,imu,-0.22045842,0.20543051,-10.034304,0.0035516554,-0.0046645626,-0.0046498007 +25612000,imu,-0.11233939,0.18381809,-9.9940605,0.00798991,-2.0506954e-05,0.0007757983 +25612000,baro,491.15927 +25612000,mag,0.19800001,-0.084000014,0.43 +25612000,airspeed,-4.202915,-4.104112 +25616000,mag,0.19800001,-0.084000014,0.43 +25616000,imu,-0.09135405,0.24617024,-10.056133,0.006071514,-0.005168613,0.0075721387 +25616000,baro,491.18744 +25616000,airspeed,3.1540368,3.0798862 +25620000,gps,491662.0,85456084.0,473977506.0,0.04,-0.02,-0.01 +25620000,baro,491.08884 +25620000,airspeed,3.1673841,3.0929377 +25620000,mag,0.19800001,-0.084000014,0.43 +25620000,imu,-0.2016707,0.28589895,-10.125831,0.0047054477,-0.010154315,0.0043513197 +25624000,mag,0.19800001,-0.084000014,0.43 +25624000,imu,-0.26492506,0.2980189,-10.001467,0.0057462687,-0.013448527,-0.0024123718 +25624000,baro,491.1311 +25624000,airspeed,-2.5882852,-2.5274436 +25628000,airspeed,-3.3112369,-3.2333899 +25632000,mag,0.19900002,-0.084000014,0.42600003 +25632000,imu,-0.1671714,0.3192753,-10.023153,0.010510218,-0.011241966,-0.0006516551 +25632000,baro,491.10294 +25636000,airspeed,2.4275692,2.3704836 +25636000,mag,0.19900002,-0.084000014,0.42600003 +25636000,imu,-0.18707645,0.28347304,-10.049414,0.0052289055,-0.0110473605,-0.0033876575 +25636000,baro,491.28604 +25640000,mag,0.19900002,-0.08300001,0.42600003 +25640000,imu,-0.15431,0.2341759,-10.109908,0.011450334,-0.011165025,-0.00947931 +25640000,airspeed,2.6956246,2.6322634 +25640000,baro,491.10764 +25644000,imu,-0.11249049,0.24694863,-10.081187,0.01569267,-0.006847673,-0.0082669165 +25644000,airspeed,3.9510236,3.8580942 +25644000,baro,491.36584 +25644000,mag,0.19900002,-0.08300001,0.42600003 +25652000,airspeed,1.291867,1.261509 +25652000,baro,491.00903 +25652000,imu,-0.19521546,0.23286653,-10.014075,0.009332044,0.0011515882,0.0010534523 +25652000,mag,0.19900002,-0.08300001,0.42600003 +25656000,airspeed,4.0523205,3.957024 +25656000,baro,491.3001 +25656000,mag,0.19900002,-0.08300001,0.42600003 +25656000,imu,-0.16692963,0.2818428,-9.992758,0.020009909,-0.005665321,0.0050584865 +25660000,airspeed,1.5154742,1.4798355 +25660000,baro,491.3001 +25660000,imu,-0.14107737,0.28657082,-10.040043,0.019064076,0.002220301,-0.0040131076 +25660000,mag,0.19900002,-0.08300001,0.42600003 +25668000,airspeed,-2.3085701,-2.2542937 +25668000,mag,0.19900002,-0.08300001,0.42600003 +25668000,imu,-0.1624242,0.29427776,-9.996527,0.01504771,0.0050428486,-0.0009768059 +25668000,baro,491.2062 +25672000,airspeed,-1.264993,-1.2352519 +25672000,baro,491.2062 +25672000,imu,-0.17650199,0.23112056,-9.986996,0.019571958,0.0033529825,-0.0040936735 +25672000,mag,0.19900002,-0.08300001,0.42600003 +25676000,mag,0.202,-0.08600001,0.43 +25676000,imu,-0.20562935,0.25856838,-10.05012,0.01664038,0.008161738,-0.0032577165 +25676000,airspeed,-2.7220764,-2.658091 +25676000,baro,491.1217 +25680000,mag,0.202,-0.08600001,0.43 +25680000,imu,-0.18270774,0.3021995,-9.987716,0.012849977,0.01310411,0.0036210523 +25680000,baro,491.24847 +25680000,airspeed,2.4632392,2.4053197 +25684000,airspeed,-2.586915,-2.5260844 +25684000,baro,491.27194 +25684000,mag,0.202,-0.08600001,0.43 +25688000,imu,-0.2223924,0.30248278,-9.995446,0.0070296777,0.00801818,-0.004219513 +25692000,baro,491.2156 +25692000,airspeed,2.1643472,2.1134605 +25692000,imu,-0.23804125,0.3739216,-9.971702,0.015111097,0.0067504365,-0.0015017098 +25692000,mag,0.202,-0.08600001,0.43 +25696000,mag,0.202,-0.08600001,0.43 +25696000,baro,491.2062 +25696000,airspeed,-2.7711523,-2.706 +25696000,imu,-0.22073302,0.35845047,-9.9936075,0.017276267,0.006440524,-0.000971978 +25700000,baro,491.35645 +25700000,imu,-0.2395897,0.3402192,-10.02025,0.011264566,0.005086133,-0.0023007935 +25700000,airspeed,1.8159662,1.773255 +25700000,mag,0.202,-0.08600001,0.43 +25704000,airspeed,-1.7253963,-1.6848515 +25704000,mag,0.202,-0.08600001,0.43 +25704000,imu,-0.26447847,0.23810457,-10.001657,0.012101656,0.004175783,0.0040182904 +25704000,baro,490.99963 +25712000,imu,-0.15004942,0.35219866,-9.937346,0.01474771,0.002604028,0.0005259085 +25712000,airspeed,2.551544,2.4915388 +25712000,mag,0.202,-0.08600001,0.43 +25712000,baro,491.3142 +25720000,mag,0.202,-0.08600001,0.43 +25720000,imu,-0.25241134,0.24852037,-9.878077,0.009325809,0.003265853,-0.0044434983 +25720000,baro,491.19684 +25720000,airspeed,2.479478,2.4211843 +25724000,mag,0.202,-0.08600001,0.43 +25724000,imu,-0.233936,0.28905243,-9.859026,0.012294226,0.000103798455,-0.0036792748 +25724000,baro,491.08414 +25724000,airspeed,3.0835292,3.0110545 +25728000,baro,491.14047 +25728000,mag,0.19700001,-0.08200001,0.43 +25728000,imu,-0.22094418,0.3229143,-9.958408,0.012430116,0.00079706876,0.00068385486 +25728000,airspeed,0.42526174,0.4152651 +25736000,imu,-0.14136891,0.34529898,-9.94392,0.0043877666,0.010618509,-0.00057019875 +25736000,baro,491.28604 +25736000,airspeed,-3.4828963,-3.4009933 +25736000,mag,0.19700001,-0.08200001,0.43 +25744000,mag,0.19700001,-0.08200001,0.43 +25744000,airspeed,1.4116226,1.378433 +25744000,baro,491.2156 +25744000,imu,-0.21876715,0.21684581,-9.903199,0.004757555,0.0088829845,-0.0012327329 +25748000,airspeed,2.884775,2.8169491 +25748000,imu,-0.22407861,0.27544647,-9.882391,-0.0012873036,0.0077801943,-0.0049511367 +25748000,mag,0.19700001,-0.08200001,0.43 +25748000,baro,491.2156 +25752000,mag,0.19700001,-0.08200001,0.43 +25752000,baro,491.0419 +25756000,imu,-0.25299343,0.25181553,-9.913614,-0.0021071741,0.0066524446,-0.0007772746 +25756000,baro,491.2297 +25756000,mag,0.19700001,-0.08200001,0.43 +25756000,airspeed,0.40290353,0.39343026 +25764000,baro,491.18274 +25764000,mag,0.19700001,-0.08200001,0.43 +25764000,airspeed,4.3293996,4.2276177 +25764000,imu,-0.16361998,0.28136623,-9.891472,-0.007512577,0.017250191,0.0016530798 +25768000,baro,490.9433 +25768000,airspeed,4.6128244,4.5044436 +25768000,imu,-0.20463872,0.26153776,-9.848448,-0.009217084,0.018159375,0.002648414 +25768000,mag,0.19700001,-0.08200001,0.43 +25772000,airspeed,1.3962964,1.3634689 +25772000,baro,491.19684 +25772000,imu,-0.2741686,0.22508195,-9.814809,-0.006591682,0.013412647,-0.001465318 +25772000,mag,0.19700001,-0.08200001,0.43 +25776000,mag,0.19700001,-0.08200001,0.43 +25776000,baro,491.2203 +25780000,imu,-0.23987694,0.2863469,-9.781562,3.219944e-05,0.009868883,-0.0016735989 +25780000,airspeed,-1.5162535,-1.480605 +25784000,imu,-0.25285843,0.23906203,-9.823666,-0.002399184,0.0060312008,-0.004134898 +25784000,baro,491.2203 +25784000,airspeed,0.7860986,0.76761603 +25784000,mag,0.19700001,-0.08700001,0.432 +25788000,mag,0.19700001,-0.08700001,0.432 +25788000,imu,-0.24607414,0.2719143,-9.886279,-0.0006144811,0.0033363265,-0.0039247093 +25788000,airspeed,-3.8803933,-3.7891583 +25788000,baro,491.2203 +25792000,mag,0.19700001,-0.08700001,0.432 +25792000,airspeed,-2.9019675,-2.83371 +25792000,baro,491.37994 +25792000,imu,-0.20868945,0.29375646,-9.861634,-0.0015053464,-0.00016825157,-0.0017757055 +25796000,mag,0.19700001,-0.08700001,0.432 +25796000,baro,491.24847 +25796000,imu,-0.18183422,0.3094913,-9.869819,-0.00022614977,-0.0035381517,0.005480131 +25796000,airspeed,2.2649894,2.2117314 +25804000,mag,0.19700001,-0.08700001,0.432 +25804000,airspeed,4.016563,3.922115 +25804000,imu,-0.19776289,0.2751267,-9.923646,-0.0019649875,-0.00567123,0.005234707 +25804000,baro,491.27194 +25808000,airspeed,2.9039736,2.835692 +25808000,baro,491.24377 +25808000,mag,0.19700001,-0.08700001,0.432 +25808000,imu,-0.20599766,0.3381133,-9.922556,-0.0074030044,-0.004354683,0.007050745 +25812000,imu,-0.21561825,0.27330124,-9.856611,-0.0066413344,-0.0062747565,-0.0014793889 +25812000,baro,491.16867 +25812000,mag,0.19700001,-0.08700001,0.432 +25812000,airspeed,-2.3406196,-2.2855945 +25816000,mag,0.19700001,-0.08700001,0.432 +25816000,imu,-0.21967362,0.22799997,-9.905495,-0.003213397,-0.013210102,0.0046900213 +25816000,airspeed,-0.7217847,-0.7048114 +25816000,baro,491.28604 +25820000,mag,0.19700001,-0.08700001,0.432 +25824000,airspeed,-0.7039857,-0.6874376 +25824000,baro,491.1264 +25824000,imu,-0.28264907,0.27801624,-9.818831,-0.006478399,-0.0072169728,-0.0027324923 +25824000,mag,0.19700001,-0.08700001,0.432 +25832000,airspeed,1.7615248,1.7201248 +25832000,mag,0.19700001,-0.08500001,0.42800003 +25832000,baro,491.06067 +25832000,imu,-0.20002931,0.3406914,-9.913093,-0.00052998407,-0.0042679124,0.002875784 +25836000,baro,490.99963 +25836000,airspeed,2.2032163,2.1514435 +25836000,mag,0.19700001,-0.08500001,0.42800003 +25836000,imu,-0.11942089,0.33159736,-9.907319,-0.0011687966,-0.0032210124,0.0008779424 +25840000,baro,491.00433 +25840000,airspeed,-3.2887073,-3.211425 +25840000,imu,-0.088707514,0.28731045,-9.899369,-8.991884e-05,0.00018713665,0.0020807781 +25840000,mag,0.19700001,-0.08500001,0.42800003 +25848000,baro,491.23438 +25848000,airspeed,4.020248,3.9257207 +25848000,imu,-0.26229548,0.30681798,-9.845635,0.0007471751,-0.0071918787,-0.0014372916 +25848000,mag,0.19700001,-0.08500001,0.42800003 +25852000,airspeed,-1.8443516,-1.8009853 +25852000,baro,491.24377 +25852000,imu,-0.2345185,0.27594998,-9.824235,0.002246585,-0.009674647,-0.0034019193 +25852000,mag,0.19700001,-0.08500001,0.42800003 +25856000,mag,0.19700001,-0.08500001,0.42800003 +25856000,airspeed,-3.5572674,-3.473657 +25856000,imu,-0.19662453,0.30017585,-9.912317,-0.008571874,-0.0038862347,-0.0085574705 +25856000,baro,491.08884 +25860000,baro,491.19214 +25860000,airspeed,-3.9200718,-3.8279097 +25860000,mag,0.19700001,-0.08500001,0.42800003 +25860000,imu,-0.21704754,0.33904007,-9.98576,-0.0066244076,-0.010591201,7.217898e-05 +25864000,baro,491.27194 +25864000,airspeed,2.6764104,2.6134748 +25864000,mag,0.19700001,-0.08500001,0.42800003 +25864000,imu,-0.18703553,0.2592108,-9.9906435,-0.004007607,-0.015345733,0.0039722472 +25868000,baro,491.2156 +25868000,mag,0.19700001,-0.08500001,0.42800003 +25868000,imu,-0.14616995,0.25833613,-9.966,0.002778997,-0.01214532,0.00058503443 +25868000,airspeed,3.0479534,2.976292 +25872000,airspeed,-2.2883759,-2.234582 +25872000,imu,-0.20775482,0.23659222,-9.9710245,-0.0014786704,-0.014810918,0.00079390645 +25872000,mag,0.19700001,-0.08500001,0.42800003 +25872000,baro,491.14517 +25876000,imu,-0.21028353,0.21613808,-9.940172,-0.004547567,-0.011961854,-0.0071906033 +25876000,baro,491.16397 +25876000,airspeed,2.3943439,2.3380566 +25876000,mag,0.19700001,-0.08500001,0.42800003 +25880000,baro,491.17334 +25880000,mag,0.19700001,-0.08500001,0.42800003 +25880000,imu,-0.11332559,0.22234833,-9.869438,-0.002840004,-0.003470351,-0.007894273 +25880000,airspeed,-3.2485254,-3.172156 +25888000,mag,0.19700001,-0.08500001,0.42900002 +25888000,airspeed,-2.574429,-2.5138962 +25888000,baro,491.24377 +25888000,imu,-0.08512009,0.28171685,-9.949051,-0.008083907,-0.013769149,0.0029591182 +25892000,baro,491.24377 +25892000,imu,-0.07140304,0.31844753,-9.945086,-0.001346189,-0.0056475494,-0.0014055556 +25892000,airspeed,-1.6564721,-1.6175232 +25892000,mag,0.19700001,-0.08500001,0.42900002 +25896000,mag,0.19700001,-0.08500001,0.42900002 +25896000,airspeed,-0.8442028,-0.8243596 +25896000,baro,491.10764 +25896000,imu,-0.16460949,0.29092395,-9.974538,0.0022601613,-0.00940603,-0.0013847227 +25900000,airspeed,2.0145912,1.9672346 +25900000,baro,491.1311 +25900000,imu,-0.17454894,0.27434227,-10.028439,-8.37043e-05,-0.014300993,-0.0011236412 +25900000,mag,0.19700001,-0.08500001,0.42900002 +25904000,imu,-0.10981518,0.24661836,-10.0002775,-0.0029285317,-0.019038662,0.0013409624 +25904000,airspeed,2.1064951,2.056964 +25904000,baro,491.25317 +25904000,mag,0.19700001,-0.08500001,0.42900002 +25908000,airspeed,-2.410001,-2.353344 +25908000,mag,0.19700001,-0.08500001,0.42900002 +25908000,imu,-0.089324355,0.2170885,-9.986502,-0.005838751,-0.020584911,-4.3608226e-05 +25908000,baro,491.17334 +25912000,imu,-0.14840934,0.24135606,-9.964061,-0.009914606,-0.013783115,-0.0005445925 +25912000,airspeed,1.7026953,1.6626663 +25912000,baro,491.17334 +25912000,mag,0.19700001,-0.08500001,0.42900002 +25920000,gps,491653.0,85456083.0,473977507.0,0.0,-0.03,-0.02 +25920000,airspeed,-3.703487,-3.616466 +25920000,baro,490.96677 +25920000,imu,-0.18055522,0.22780067,-9.959839,-0.011728731,-0.019667927,-0.004394016 +25920000,mag,0.19700001,-0.08500001,0.42900002 +25924000,mag,0.19700001,-0.08500001,0.42900002 +25924000,baro,491.25787 +25924000,airspeed,1.5754079,1.5383638 +25924000,imu,-0.2578434,0.18854989,-9.956769,-0.0070680804,-0.01553089,-0.0024965252 +25928000,airspeed,0.5878953,0.5740737 +25928000,imu,-0.24965137,0.19397363,-9.975382,-0.010520491,-0.017567622,-0.0018752507 +25928000,mag,0.19700001,-0.08500001,0.42900002 +25928000,baro,491.19214 +25932000,airspeed,1.9846759,1.938012 +25932000,mag,0.19700001,-0.08500001,0.42900002 +25932000,baro,491.225 +25932000,imu,-0.25001666,0.24436927,-9.952069,-0.016122015,-0.021054367,-0.00081297435 +25936000,mag,0.19800001,-0.08300001,0.42900002 +25936000,airspeed,-1.3094615,-1.2786812 +25936000,baro,491.1217 +25936000,imu,-0.23307256,0.1963825,-9.9573345,-0.014466307,-0.0155417165,-0.0012270076 +25940000,airspeed,-3.070138,-2.9979815 +25940000,mag,0.19800001,-0.08300001,0.42900002 +25940000,baro,491.06537 +25940000,imu,-0.20523474,0.2834752,-10.034281,-0.011021492,-0.013551056,-0.005547069 +25944000,airspeed,-0.77218854,-0.75404006 +25944000,baro,491.06537 +25944000,mag,0.19800001,-0.08300001,0.42900002 +25944000,imu,-0.1790815,0.37648386,-10.051067,-0.0071261036,-0.0064901053,-0.004695981 +25948000,imu,-0.14873451,0.32800055,-10.005508,-0.008190448,-0.0045897723,0.0021791453 +25948000,mag,0.19800001,-0.08300001,0.42900002 +25948000,airspeed,0.7733412,0.755156 +25948000,baro,491.27664 +25952000,baro,491.2297 +25952000,imu,-0.26807126,0.34747806,-9.972144,-0.0031635673,-0.008233758,0.0012066584 +25952000,airspeed,1.1033076,1.0773662 +25952000,mag,0.19800001,-0.08300001,0.42900002 +25956000,mag,0.19800001,-0.08300001,0.42900002 +25956000,imu,-0.24337713,0.3423167,-9.998192,0.0010107412,-0.00523677,-0.0026595853 +25956000,airspeed,1.4045072,1.3714788 +25956000,baro,491.29074 +25964000,mag,0.19800001,-0.08300001,0.42900002 +25964000,airspeed,1.0225408,0.9984959 +25964000,imu,-0.118765205,0.21472627,-10.043217,-0.003012333,0.008434436,0.005172615 +25964000,baro,491.27194 +25968000,baro,491.27194 +25968000,imu,-0.18845443,0.26891476,-9.965189,0.0033453526,0.0043422547,0.00418195 +25968000,airspeed,-1.0084119,-0.98469925 +25968000,mag,0.19800001,-0.08300001,0.42900002 +25976000,baro,491.1311 +25976000,imu,-0.25334755,0.2851019,-9.997973,0.0002812028,-0.0035315542,-0.005465645 +25976000,airspeed,-3.0683799,-2.9962525 +25976000,mag,0.19800001,-0.08300001,0.42900002 +25980000,airspeed,-2.8404667,-2.7736664 +25980000,imu,-0.28144568,0.28496495,-10.01854,0.0014477244,0.000105439736,-0.004987805 +25984000,imu,-0.24135238,0.29361436,-9.97545,0.009494978,-0.00053592236,-0.0020847914 +25984000,mag,0.19800001,-0.08300001,0.42900002 +25984000,airspeed,-1.864351,-1.8205283 +25984000,baro,491.117 +25988000,baro,491.117 +25988000,mag,0.2,-0.08100001,0.43 +25988000,imu,-0.21318072,0.29032734,-9.979752,0.012812241,-0.0021459335,-0.0029482523 +25988000,airspeed,2.5814517,2.520773 +25992000,baro,491.10294 +25992000,mag,0.2,-0.08100001,0.43 +25992000,imu,-0.24485992,0.2655106,-9.996774,0.0059463554,0.002796485,-0.0016265127 +25992000,airspeed,-2.8301435,-2.7636213 +25996000,baro,491.10294 +25996000,mag,0.2,-0.08100001,0.43 +25996000,imu,-0.23278508,0.2669133,-9.936014,0.000682562,0.009593383,-0.0015243078 +25996000,airspeed,-2.6306417,-2.5688088 +26000000,mag,0.2,-0.08100001,0.43 +26000000,baro,491.27664 +26004000,mag,0.2,-0.08100001,0.43 +26004000,imu,-0.14711581,0.21311179,-9.911282,0.008019542,0.00068774,-0.0011936185 +26004000,baro,491.19684 +26004000,airspeed,-1.6847308,-1.645122 +26008000,airspeed,-0.8830644,-0.86229557 +26012000,imu,-0.18078545,0.25652993,-9.9331,0.0032678794,-0.00956785,-0.00010544618 +26012000,mag,0.2,-0.08100001,0.43100002 +26012000,baro,491.34238 +26016000,baro,491.29074 +26016000,imu,-0.23204269,0.21821041,-9.903145,0.0050551184,-0.0077070617,0.0012665688 +26016000,mag,0.2,-0.08100001,0.43100002 +26016000,airspeed,-2.914073,-2.8455462 +26020000,imu,-0.23293118,0.27753973,-9.940487,0.0042125233,-0.0055580125,0.002986366 +26020000,airspeed,-2.771319,-2.7061741 +26024000,mag,0.2,-0.08100001,0.43100002 +26024000,baro,490.89166 +26024000,imu,-0.20220377,0.38917032,-9.923944,0.0054207025,-0.0092820125,0.0020121315 +26024000,airspeed,3.4387343,3.35795 +26028000,baro,491.3048 +26028000,imu,-0.16041248,0.30843753,-9.918231,0.007917837,-0.0020370875,-0.00018564519 +26028000,airspeed,1.2562493,1.2267064 +26028000,mag,0.2,-0.08100001,0.43100002 +26032000,imu,-0.23082945,0.218115,-10.001296,0.0068992027,0.00012596585,-0.00017182558 +26032000,baro,491.117 +26032000,mag,0.2,-0.08100001,0.43100002 +26032000,airspeed,-4.6567664,-4.5473056 +26036000,baro,491.10294 +26036000,imu,-0.24563976,0.24770425,-9.963831,0.0021688654,-0.00046617287,-0.0017450225 +26036000,airspeed,1.400608,1.3676869 +26036000,mag,0.2,-0.08100001,0.43100002 +26040000,mag,0.19900002,-0.084000014,0.42800003 +26040000,baro,491.1123 +26040000,airspeed,-1.7110739,-1.6708543 +26040000,imu,-0.16353102,0.22988176,-9.862031,0.0025180362,0.0016117553,-0.0016524309 +26044000,mag,0.19900002,-0.084000014,0.42800003 +26044000,baro,491.19214 +26048000,baro,491.25787 +26048000,imu,-0.17252536,0.28115085,-9.897426,0.0018853719,-0.0078459075,-0.0010011953 +26048000,mag,0.19900002,-0.084000014,0.42800003 +26048000,airspeed,-1.9020023,-1.857279 +26052000,baro,491.23438 +26052000,airspeed,2.0136104,1.9662651 +26052000,imu,-0.11486659,0.26816964,-9.934345,0.004840319,-0.009939487,-0.0038297104 +26052000,mag,0.19900002,-0.084000014,0.42800003 +26056000,mag,0.19900002,-0.084000014,0.42800003 +26056000,baro,491.2109 +26056000,airspeed,0.5632398,0.5499974 +26060000,imu,-0.20163806,0.3731577,-9.861256,0.0059441635,-0.017075274,-0.0038868554 +26064000,imu,-0.2131162,0.29415137,-9.95874,0.0013198778,-0.0128312055,-0.0036294346 +26064000,mag,0.19900002,-0.084000014,0.42800003 +26064000,airspeed,2.516879,2.457693 +26064000,baro,491.28604 +26068000,mag,0.19900002,-0.084000014,0.42800003 +26068000,baro,491.28604 +26068000,airspeed,3.7088046,3.6215897 +26068000,imu,-0.24983342,0.21305518,-9.932557,0.0034901618,-0.016342804,0.004188908 +26072000,airspeed,-4.147085,-4.049621 +26072000,imu,-0.24464855,0.22747777,-9.891007,0.00855721,-0.020511318,0.0032485505 +26072000,mag,0.19900002,-0.084000014,0.42800003 +26072000,baro,491.05127 +26076000,mag,0.19900002,-0.084000014,0.42800003 +26076000,imu,-0.15426682,0.28878117,-9.923178,0.0039636497,-0.018580161,-0.004657108 +26076000,baro,491.25317 +26076000,airspeed,1.872081,1.8280612 +26080000,imu,-0.15653427,0.24012692,-9.959342,-0.001291316,-0.011783284,-0.006535062 +26080000,airspeed,-3.0745747,-3.002286 +26080000,mag,0.19900002,-0.084000014,0.42800003 +26080000,baro,491.225 +26084000,imu,-0.20479032,0.2177446,-9.950618,-0.000688104,-0.010375919,-0.0018086213 +26084000,airspeed,2.016393,1.9689794 +26084000,mag,0.19900002,-0.084000014,0.42800003 +26084000,baro,491.25787 +26088000,mag,0.19900002,-0.084000014,0.42800003 +26088000,imu,-0.27656394,0.26105803,-9.925939,-0.0014993163,-0.013361164,-0.000578234 +26088000,airspeed,2.5888863,2.5280104 +26088000,baro,491.26724 +26092000,baro,491.24847 +26092000,airspeed,-1.4227401,-1.3892865 +26092000,mag,0.19900002,-0.084000014,0.42800003 +26092000,imu,-0.21151456,0.2715477,-9.918634,-0.0056035686,-0.013628469,-0.0023013249 +26096000,mag,0.19700001,-0.08100001,0.43 +26096000,imu,-0.09059361,0.2194957,-9.888355,-0.006024758,-0.017150788,-0.0018403905 +26096000,airspeed,1.4270395,1.3934858 +26096000,baro,491.23907 +26104000,airspeed,-3.8263645,-3.7363615 +26104000,baro,491.394 +26104000,imu,-0.239362,0.25610694,-9.899647,-0.007320603,-0.01498791,0.0016113063 +26104000,mag,0.19700001,-0.08100001,0.43 +26108000,mag,0.19700001,-0.08100001,0.43 +26108000,baro,491.18274 +26112000,airspeed,2.8231378,2.756748 +26112000,imu,-0.15381455,0.33367646,-9.929594,-0.002598298,-0.02017004,-0.0018479141 +26116000,baro,491.3001 +26116000,mag,0.19700001,-0.08100001,0.43 +26116000,imu,-0.17744657,0.3246511,-9.936196,-0.0050577517,-0.026554095,0.0049807597 +26116000,airspeed,2.3489456,2.2937071 +26120000,gps,491652.0,85456081.0,473977507.0,0.03,-0.049999997,0.0 +26120000,mag,0.19700001,-0.08100001,0.43 +26120000,airspeed,1.7659079,1.7243752 +26120000,imu,-0.18434308,0.31991047,-9.914006,-0.0057327542,-0.023558239,0.0025330172 +26120000,baro,491.34708 +26128000,imu,-0.15577738,0.3234738,-9.92917,-0.0055673607,-0.012345243,0.0019600408 +26128000,baro,491.24377 +26128000,airspeed,3.9410133,3.8483481 +26128000,mag,0.19700001,-0.08100001,0.43 +26132000,baro,491.24377 +26132000,airspeed,3.194479,3.1193671 +26132000,mag,0.19700001,-0.08100001,0.43 +26132000,imu,-0.10719056,0.30333713,-9.906457,-0.0013289126,-0.019778136,-0.00048837485 +26140000,baro,491.28604 +26140000,mag,0.19700001,-0.08100001,0.43 +26140000,imu,-0.26503375,0.23515116,-9.969295,-0.0033443708,-0.0151078105,0.0040346775 +26140000,airspeed,1.1915367,1.163517 +26144000,imu,-0.18922326,0.23675719,-9.99556,-0.0016913757,-0.014383171,0.008139815 +26144000,airspeed,-2.4671102,-2.4091122 +26144000,baro,491.16397 +26144000,mag,0.19700001,-0.08300001,0.42900002 +26148000,mag,0.19700001,-0.08300001,0.42900002 +26148000,imu,-0.13925758,0.25777546,-9.948419,0.0071669896,-0.016054178,0.006417023 +26148000,baro,491.2297 +26148000,airspeed,-1.9673507,-1.9210937 +26152000,mag,0.19700001,-0.08300001,0.42900002 +26152000,airspeed,-1.9357669,-1.8902608 +26152000,imu,-0.21615775,0.2923512,-9.933846,0.008834546,-0.011947615,-0.0002096002 +26152000,baro,491.15927 +26156000,airspeed,0.57374805,0.560258 +26156000,imu,-0.25141203,0.29711893,-9.946697,-0.00025591863,-0.0067914743,-0.0041808793 +26156000,mag,0.19700001,-0.08300001,0.42900002 +26156000,baro,491.2297 +26160000,baro,491.2156 +26160000,imu,-0.21249156,0.24229783,-9.99494,0.0006830673,-0.011066182,-0.0011726852 +26160000,mag,0.19700001,-0.08300001,0.42900002 +26160000,airspeed,-2.3944833,-2.3381858 +26164000,airspeed,-2.1161678,-2.0664139 +26164000,baro,491.2156 +26164000,mag,0.19800001,-0.08300001,0.42900002 +26164000,imu,-0.17666236,0.21464273,-10.036883,0.0051684496,-0.019522855,0.0021318188 +26168000,airspeed,2.4461815,2.3886628 +26168000,imu,-0.18403302,0.21461143,-10.007354,0.001022497,-0.02011928,0.0032714277 +26168000,baro,491.25317 +26168000,mag,0.19800001,-0.08300001,0.42900002 +26172000,imu,-0.16032049,0.24490653,-10.017933,-0.0063815922,-0.014283357,0.008254563 +26172000,baro,491.25317 +26172000,mag,0.19800001,-0.08300001,0.42900002 +26172000,airspeed,-1.3884962,-1.3558475 +26176000,mag,0.19800001,-0.08300001,0.42900002 +26176000,imu,-0.20769382,0.32054973,-10.018217,-0.004849432,-0.009816778,0.0011991091 +26176000,baro,491.2156 +26176000,airspeed,1.2037749,1.1754723 +26180000,mag,0.19800001,-0.08300001,0.42900002 +26180000,imu,-0.26675478,0.32699078,-10.058816,-0.0020421906,-0.012427265,-0.004607189 +26180000,baro,491.1311 +26180000,airspeed,-2.769882,-2.7047713 +26188000,airspeed,-1.7772503,-1.7354662 +26188000,imu,-0.15999168,0.24923208,-9.969261,-0.0066926638,-0.013003803,0.0014089607 +26188000,baro,491.2015 +26188000,mag,0.19800001,-0.08300001,0.42900002 +26192000,imu,-0.18660396,0.1899164,-10.007448,-0.011813518,-0.017014785,-0.002577185 +26192000,airspeed,2.1940334,2.1424477 +26192000,baro,491.225 +26192000,mag,0.19800001,-0.08300001,0.42900002 +26196000,imu,-0.20026869,0.25491184,-9.991529,-0.012574454,-0.015088967,-0.0060353847 +26196000,mag,0.201,-0.08700001,0.42600003 +26196000,airspeed,-1.2022165,-1.1739565 +26196000,baro,491.1311 +26200000,airspeed,-2.2197227,-2.1675205 +26200000,baro,491.3189 +26200000,mag,0.201,-0.08700001,0.42600003 +26200000,imu,-0.23250079,0.30770725,-9.938438,-0.004350164,-0.016257487,-0.0036249436 +26204000,airspeed,-3.9493675,-3.8565104 +26204000,imu,-0.19288164,0.2397836,-9.928844,-0.004398975,-0.01443864,0.0025607627 +26208000,mag,0.201,-0.08700001,0.42600003 +26208000,imu,-0.16435532,0.22780918,-9.963501,-0.0029489128,-0.01037511,-0.006364172 +26208000,airspeed,-3.809583,-3.7200139 +26208000,baro,491.2203 +26216000,baro,491.19684 +26216000,imu,-0.28122565,0.28325945,-9.988015,-0.0002483453,-0.00695938,0.0038322662 +26216000,mag,0.201,-0.08700001,0.42600003 +26216000,airspeed,-2.7745702,-2.7093391 +26220000,baro,491.0184 +26220000,imu,-0.2140834,0.2512853,-9.994088,0.0005545828,-0.0062816767,0.008038226 +26220000,mag,0.201,-0.08700001,0.42600003 +26220000,airspeed,-2.3788664,-2.3229635 +26224000,imu,-0.18844602,0.24820608,-10.053217,0.0015728053,-0.0060066315,0.0033428995 +26224000,baro,491.0184 +26224000,mag,0.201,-0.08700001,0.42600003 +26224000,airspeed,-2.5663226,-2.5060143 +26228000,airspeed,2.2836423,2.229966 +26228000,imu,-0.12563382,0.25852138,-10.020604,-0.008709078,-0.002025819,-0.003342081 +26232000,imu,-0.1218332,0.23851344,-9.956558,-0.0128727965,-0.0072381594,-0.0013947757 +26232000,mag,0.201,-0.08700001,0.42600003 +26232000,baro,491.2297 +26232000,airspeed,-2.1831121,-2.1317825 +26236000,airspeed,2.493485,2.4348545 +26236000,mag,0.201,-0.08700001,0.42600003 +26236000,imu,-0.13106646,0.28438863,-10.043521,-0.0055415393,-0.010630149,0.005184028 +26236000,baro,491.24847 +26240000,airspeed,1.2190946,1.1904294 +26240000,mag,0.201,-0.08700001,0.42600003 +26240000,imu,-0.15253618,0.2936384,-10.038393,-0.005038215,-0.010426686,0.0030435172 +26240000,baro,491.24847 +26244000,baro,491.18274 +26244000,imu,-0.22753927,0.29728642,-9.955821,-0.006354546,-0.013246892,-0.0017350529 +26244000,mag,0.201,-0.08700001,0.42600003 +26244000,airspeed,-0.53048503,-0.51801366 +26248000,baro,491.24377 +26248000,airspeed,3.01066,2.93987 +26248000,mag,0.201,-0.08700001,0.42600003 +26248000,imu,-0.14626987,0.29353186,-9.934404,-0.006818114,-0.016751386,-0.005587861 +26252000,mag,0.2,-0.084000014,0.42800003 +26252000,baro,491.27194 +26252000,imu,-0.12676449,0.24122323,-9.946038,-0.0063891914,-0.018592954,-0.008928356 +26252000,airspeed,-3.781855,-3.6929255 +26256000,baro,491.24377 +26256000,mag,0.2,-0.084000014,0.42800003 +26256000,imu,-0.23719998,0.28589547,-9.961023,-0.001636531,-0.013816667,-0.008234665 +26256000,airspeed,-1.998337,-1.9513503 +26260000,baro,491.1264 +26260000,imu,-0.24853097,0.2784293,-9.95884,0.002012828,-0.013069625,-0.0051808874 +26260000,airspeed,-2.967655,-2.8978965 +26260000,mag,0.2,-0.084000014,0.42800003 +26264000,mag,0.2,-0.084000014,0.42800003 +26264000,baro,491.2109 +26264000,imu,-0.15519567,0.19512127,-9.977312,0.0014166031,-0.012799158,0.0016852694 +26264000,airspeed,-1.5122025,-1.4766489 +26268000,mag,0.2,-0.084000014,0.42800003 +26268000,baro,491.2109 +26268000,imu,-0.10118333,0.21391292,-9.993281,-0.0006124227,-0.014848402,0.0017065674 +26268000,airspeed,-0.80956334,-0.7905296 +26276000,baro,491.10764 +26276000,imu,-0.2636303,0.31940398,-9.881647,0.0047808182,-0.007743529,-0.0006937999 +26276000,mag,0.2,-0.084000014,0.42800003 +26276000,airspeed,-2.3611734,-2.3056738 +26284000,imu,-0.18385322,0.29200792,-10.008204,0.01001676,-0.00934312,-0.004818181 +26284000,mag,0.2,-0.084000014,0.42800003 +26284000,baro,491.0278 +26284000,airspeed,0.47302666,0.46191028 +26292000,imu,-0.13438839,0.22933345,-9.922183,0.013941102,-0.014549591,-0.005506757 +26292000,airspeed,1.7490692,1.707935 +26292000,mag,0.2,-0.084000014,0.42800003 +26292000,baro,491.32828 +26296000,airspeed,3.5294175,3.4464283 +26296000,baro,491.25317 +26296000,mag,0.2,-0.084000014,0.42800003 +26296000,imu,-0.13903901,0.22321154,-9.876753,0.009179925,-0.012424364,-0.0020023813 +26300000,mag,0.2,-0.084000014,0.42800003 +26300000,baro,491.18744 +26300000,airspeed,3.0857086,3.0131645 +26300000,imu,-0.1511867,0.28165662,-9.870554,0.010723787,-0.01556307,-0.0023031107 +26304000,mag,0.202,-0.084000014,0.42800003 +26304000,imu,-0.15433036,0.3140582,-9.874234,0.011159271,-0.011123366,-0.0025268374 +26304000,baro,491.07477 +26304000,airspeed,-3.0610008,-2.9890578 +26308000,mag,0.202,-0.084000014,0.42800003 +26308000,imu,-0.12580176,0.33522323,-9.930279,0.008960489,-0.0065311017,-0.006463084 +26308000,baro,491.07477 +26308000,airspeed,2.142161,2.0918133 +26312000,airspeed,-2.5682526,-2.5078964 +26312000,mag,0.202,-0.084000014,0.42800003 +26312000,imu,-0.1452089,0.31101218,-9.916023,0.015113413,-0.013182559,-0.0077805896 +26312000,baro,491.0372 +26316000,mag,0.202,-0.084000014,0.42800003 +26316000,baro,491.14517 +26320000,imu,-0.26634204,0.2525514,-9.815946,0.0045724516,-0.016033025,-0.001879897 +26320000,landed,0.0 +26320000,baro,491.2109 +26320000,airspeed,2.186617,2.1352074 +26320000,gps,491655.0,85456080.0,473977508.0,-0.01,-0.049999997,0.0 +26320000,mag,0.202,-0.084000014,0.42800003 +26324000,baro,491.2297 +26324000,mag,0.202,-0.084000014,0.42800003 +26328000,baro,490.97147 +26328000,airspeed,3.3402784,3.2617915 +26328000,mag,0.202,-0.084000014,0.42800003 +26328000,imu,-0.123519026,0.2939464,-9.925649,0.008626194,-0.009946534,-0.0022629218 +26336000,baro,491.08884 +26336000,mag,0.202,-0.084000014,0.42800003 +26336000,airspeed,2.3620982,2.3065794 +26336000,imu,-0.14619508,0.28518173,-9.898709,0.0115133915,-0.00762942,0.004850484 +26340000,imu,-0.2048746,0.27068073,-9.891906,0.0043590195,-0.006881786,0.004579123 +26340000,mag,0.202,-0.084000014,0.42800003 +26340000,airspeed,-3.680853,-3.5943234 +26340000,baro,491.15927 +26344000,airspeed,2.4149997,2.3582237 +26344000,imu,-0.2648401,0.28830668,-9.896962,0.0005096958,-0.0069919406,-0.0043399855 +26348000,imu,-0.19754682,0.27734542,-9.907705,0.007873221,-0.003964335,-0.012574862 +26348000,mag,0.202,-0.084000014,0.42800003 +26348000,baro,491.18744 +26348000,airspeed,-1.9255372,-1.8802683 +26352000,imu,-0.17234398,0.23957054,-9.8895,0.0037676287,-0.0009801139,-0.006930021 +26352000,mag,0.19700001,-0.08600001,0.42900002 +26352000,baro,491.16867 +26352000,airspeed,1.793276,1.7511183 +26356000,mag,0.19700001,-0.08600001,0.42900002 +26356000,airspeed,2.3096638,2.255352 +26356000,baro,491.27664 +26356000,imu,-0.18227074,0.26728743,-9.869005,0.0043378356,-0.0020095774,-0.0018154298 +26364000,airspeed,-3.217313,-3.1416724 +26364000,mag,0.19700001,-0.08600001,0.42900002 +26364000,baro,491.2015 +26364000,imu,-0.19300313,0.27452818,-9.853197,0.0068955896,-0.0016788468,0.0038735103 +26368000,airspeed,-3.8640347,-3.7731857 +26368000,mag,0.19700001,-0.08600001,0.42900002 +26368000,baro,491.2156 +26368000,imu,-0.19152638,0.28747013,-9.851572,0.008598844,-0.0022966426,-0.0009972565 +26372000,mag,0.19700001,-0.08600001,0.42900002 +26372000,imu,-0.16721556,0.22517031,-9.8545,0.011348031,0.00052393414,-0.0045875697 +26372000,baro,491.19214 +26372000,airspeed,-2.243579,-2.1908321 +26376000,imu,-0.15297244,0.19765535,-9.885814,0.013354353,-0.002844962,-0.006066973 +26376000,airspeed,-0.21120158,-0.20623673 +26380000,mag,0.19700001,-0.08600001,0.42900002 +26380000,airspeed,2.0826817,2.0337265 +26380000,baro,491.1217 +26380000,imu,-0.13946502,0.27486178,-9.868005,0.012529778,-0.008627427,-0.0028728412 +26384000,mag,0.19700001,-0.08600001,0.42900002 +26384000,airspeed,-2.8812485,-2.813513 +26384000,baro,491.17334 +26384000,imu,-0.1835431,0.27394563,-9.766844,0.0121974535,-0.0036839193,-0.0008902665 +26388000,imu,-0.15615268,0.21132523,-9.792479,0.0142623475,-0.0016375146,-0.002928855 +26388000,airspeed,4.06458,3.9690297 +26392000,mag,0.19700001,-0.08600001,0.42900002 +26392000,imu,-0.16565445,0.19868147,-9.877088,0.012278318,-0.005789196,-0.0015248067 +26392000,airspeed,2.3070714,2.2528327 +26392000,baro,491.18744 +26396000,airspeed,1.5891944,1.5518327 +26396000,mag,0.19700001,-0.08600001,0.42900002 +26396000,imu,-0.22125219,0.2496088,-9.852207,0.008089638,-0.013935187,0.00085312617 +26396000,baro,491.18744 +26400000,baro,491.19214 +26400000,airspeed,1.9016174,1.8569102 +26400000,mag,0.19700001,-0.08600001,0.42900002 +26400000,imu,-0.23748395,0.2858692,-9.828808,0.0071261604,-0.014826628,-0.0017796553 +26404000,imu,-0.16760299,0.29602897,-9.8266735,0.0060468544,-0.009845571,-0.0042266925 +26404000,mag,0.19700001,-0.08200001,0.42800003 +26404000,baro,491.26254 +26404000,airspeed,2.6969132,2.6334975 +26412000,mag,0.19700001,-0.08200001,0.42800003 +26412000,airspeed,-3.0614786,-2.9895082 +26412000,baro,491.16397 +26412000,imu,-0.21284866,0.27691653,-9.848934,0.007854463,-0.0044727544,-0.00090941397 +26416000,mag,0.19700001,-0.08200001,0.42800003 +26416000,baro,491.2015 +26416000,airspeed,-3.1966853,-3.1215298 +26416000,imu,-0.19113255,0.23747866,-9.840986,0.01027155,-5.865313e-05,-0.00089322124 +26420000,airspeed,-3.812489,-3.7228234 +26420000,imu,-0.27644613,0.24300854,-9.819101,0.0091855135,0.0010660191,0.0021661448 +26424000,airspeed,-1.7294735,-1.6888248 +26424000,imu,-0.24375692,0.2941141,-9.8379545,0.0064675333,-0.0015623239,0.005868214 +26424000,baro,491.07944 +26424000,mag,0.19700001,-0.08200001,0.42800003 +26428000,imu,-0.15068318,0.31406173,-9.900089,0.0044313944,-0.0025649804,-7.113449e-06 +26428000,airspeed,0.60226583,0.5881105 +26432000,imu,-0.16181855,0.25872275,-9.875073,-0.0019151096,-0.0031317484,-0.0054536066 +26432000,airspeed,2.9231653,2.8544562 +26432000,mag,0.19700001,-0.08200001,0.42800003 +26432000,baro,491.10764 +26436000,mag,0.19700001,-0.08200001,0.42800003 +26436000,baro,491.10764 +26436000,imu,-0.2111084,0.18218707,-9.738027,-0.0036139765,-0.0027670788,4.8726462e-05 +26436000,airspeed,-2.0392544,-1.9913217 +26440000,airspeed,-2.7548447,-2.6900966 +26440000,imu,-0.21235573,0.22140516,-9.732479,-0.0033205266,-0.0017194947,-0.003064319 +26444000,imu,-0.19220217,0.25331476,-9.764061,-0.004344353,-0.000110947585,-0.008877996 +26444000,mag,0.19700001,-0.08200001,0.42900002 +26444000,airspeed,2.4885504,2.4300444 +26444000,baro,491.19214 +26448000,airspeed,1.326684,1.2954936 +26448000,baro,491.19214 +26448000,imu,-0.18884766,0.21750394,-9.801248,-0.001236786,-0.0047194157,-0.005528166 +26448000,mag,0.19700001,-0.08200001,0.42900002 +26452000,airspeed,2.465704,2.4077454 +26452000,imu,-0.21803598,0.2602427,-9.876627,-0.0009619071,-0.005869486,0.00024043619 +26452000,baro,491.1217 +26452000,mag,0.19700001,-0.08200001,0.42900002 +26456000,imu,-0.17105144,0.2657871,-9.833264,0.0036173987,-0.0024058246,0.0029541666 +26456000,mag,0.202,-0.084000014,0.425 +26456000,baro,491.1217 +26456000,airspeed,2.4138165,2.3570776 +26460000,airspeed,2.867958,2.8005419 +26460000,baro,491.1358 +26460000,imu,-0.14849502,0.25667945,-9.784587,0.008393788,0.00063443166,0.003533002 +26460000,mag,0.202,-0.084000014,0.425 +26468000,baro,491.26254 +26468000,imu,-0.15785086,0.2592453,-9.872655,0.003927899,-0.006933698,-0.0011554433 +26468000,airspeed,-3.3233252,-3.2451804 +26468000,mag,0.202,-0.084000014,0.425 +26472000,baro,491.27194 +26472000,imu,-0.17401543,0.24744621,-9.849617,0.0021374335,-0.0070628854,-0.0019052234 +26472000,airspeed,1.3661685,1.3340437 +26472000,mag,0.202,-0.084000014,0.425 +26476000,imu,-0.18886039,0.30218694,-9.836959,-0.0037894673,-0.0031894518,-0.003938351 +26476000,airspeed,1.4687536,1.4342154 +26476000,baro,491.28134 +26476000,mag,0.202,-0.084000014,0.425 +26480000,imu,-0.16884391,0.3129353,-9.818118,-0.0007544682,-0.002683366,-0.0028574574 +26480000,mag,0.202,-0.084000014,0.425 +26480000,baro,491.3142 +26480000,airspeed,-2.03488,-1.9870256 +26484000,baro,491.27664 +26484000,mag,0.202,-0.084000014,0.425 +26484000,imu,-0.18788105,0.26677144,-9.792371,0.0027572569,-0.006874425,-0.00088627025 +26484000,airspeed,0.6314613,0.6166126 +26488000,airspeed,3.6767411,3.5903378 +26488000,mag,0.202,-0.084000014,0.425 +26488000,baro,491.0231 +26488000,imu,-0.15725775,0.24094379,-9.836874,0.0041108164,-0.007989092,-4.137908e-06 +26496000,mag,0.202,-0.084000014,0.425 +26496000,baro,491.117 +26496000,imu,-0.17216395,0.24665208,-9.856452,-0.0034084846,-0.002848358,0.0029915757 +26496000,airspeed,-3.6226559,-3.537504 +26500000,imu,-0.19648309,0.24088679,-9.867416,0.003928629,-0.011152331,-0.0009975389 +26500000,airspeed,-0.5869322,-0.5731329 +26500000,mag,0.202,-0.084000014,0.425 +26500000,baro,491.2062 +26504000,imu,-0.19567041,0.24695364,-9.871207,0.011461143,-0.013973057,-0.002436918 +26504000,airspeed,-2.8731658,-2.8056114 +26504000,baro,491.2297 +26504000,mag,0.202,-0.084000014,0.425 +26512000,mag,0.19600001,-0.08300001,0.42700002 +26512000,baro,491.24847 +26512000,airspeed,-3.0498395,-2.9781275 +26512000,imu,-0.113732606,0.14945881,-9.925143,0.007754728,-0.006881655,-0.0017600311 +26516000,mag,0.19600001,-0.08300001,0.42700002 +26516000,baro,491.24377 +26516000,airspeed,2.5108593,2.4518216 +26516000,imu,-0.09168052,0.18212661,-9.951704,0.0059280167,-0.010946906,-0.0023037016 +26520000,mag,0.19600001,-0.08300001,0.42700002 +26520000,baro,491.16867 +26520000,airspeed,2.7755284,2.7102792 +26520000,imu,-0.16127345,0.28183964,-9.961568,0.010324915,-0.012506422,0.000549177 +26520000,gps,491674.0,85456079.0,473977508.0,0.02,-0.049999997,-0.049999997 +26524000,baro,491.16867 +26524000,imu,-0.18819097,0.36192003,-9.912988,0.00870229,-0.007446227,0.003900842 +26524000,airspeed,-2.7648518,-2.6998537 +26524000,mag,0.19600001,-0.08300001,0.42700002 +26528000,airspeed,-3.213503,-3.1379492 +26528000,imu,-0.18283631,0.3517714,-9.886319,0.0058214306,-0.013802405,0.0065365382 +26532000,airspeed,2.8744407,2.8068838 +26532000,imu,-0.2073239,0.30477202,-9.918693,0.01033555,-0.01607645,0.0036251368 +26532000,baro,491.06537 +26532000,mag,0.19600001,-0.08300001,0.42700002 +26536000,baro,491.2062 +26536000,mag,0.19600001,-0.08300001,0.42700002 +26536000,imu,-0.105992824,0.2968603,-9.936427,0.007821755,-0.0141967265,0.0027471248 +26536000,airspeed,-3.5673919,-3.4835198 +26540000,airspeed,-2.6562624,-2.5937977 +26544000,airspeed,2.22649,2.1741424 +26544000,baro,491.2156 +26544000,mag,0.19600001,-0.08300001,0.42700002 +26544000,imu,-0.17188728,0.28083214,-9.9277725,0.015602856,-0.017298175,0.004361234 +26552000,airspeed,2.8363557,2.7696888 +26552000,mag,0.19600001,-0.08200001,0.42700002 +26552000,imu,-0.13449384,0.27010196,-9.941186,0.0106411595,-0.025723897,0.00035613216 +26552000,baro,491.09824 +26556000,mag,0.19600001,-0.08200001,0.42700002 +26556000,airspeed,-2.6859963,-2.6228635 +26556000,baro,491.09824 +26556000,imu,-0.14121236,0.26876074,-9.897315,0.016456524,-0.021988165,-0.004062924 +26560000,mag,0.19800001,-0.084000014,0.42900002 +26560000,baro,491.25787 +26564000,baro,491.08414 +26564000,imu,-0.1334422,0.28233448,-10.006276,0.009064901,-0.015962072,-0.003066759 +26564000,airspeed,-0.43674827,-0.426483 +26564000,mag,0.19800001,-0.084000014,0.42900002 +26568000,airspeed,1.5196612,1.4839321 +26568000,imu,-0.14668763,0.27139452,-9.943661,0.0052994126,-0.012773416,-0.005477578 +26572000,mag,0.19800001,-0.084000014,0.42900002 +26572000,baro,491.10764 +26572000,airspeed,-1.6995884,-1.6596395 +26572000,imu,-0.15168743,0.26758277,-9.90833,0.0020373526,-0.010733934,0.0018445208 +26576000,mag,0.19800001,-0.084000014,0.42900002 +26576000,imu,-0.14423068,0.28105357,-9.906534,0.004123401,-0.0073032,-0.0016151889 +26576000,baro,491.10764 +26576000,airspeed,1.7270601,1.6864654 +26580000,baro,491.29074 +26580000,mag,0.19800001,-0.084000014,0.42900002 +26584000,imu,-0.03488391,0.29496515,-9.891817,0.011606807,-0.010190949,-0.0016114785 +26584000,airspeed,-1.7953424,-1.7531245 +26588000,imu,-0.087857895,0.19582938,-9.922937,0.008053247,-0.007650837,0.0024577153 +26588000,baro,491.1264 +26588000,mag,0.19800001,-0.084000014,0.42900002 +26588000,airspeed,-3.3918972,-3.312167 +26592000,baro,491.16867 +26592000,mag,0.19800001,-0.084000014,0.42900002 +26592000,imu,-0.18458144,0.19779103,-9.962298,0.0027014907,-0.0006680262,0.0036248176 +26592000,airspeed,3.317042,3.2390635 +26596000,baro,491.10294 +26596000,imu,-0.15802914,0.21809343,-10.007605,0.0073561845,-0.007644351,-0.0007859963 +26596000,mag,0.19800001,-0.084000014,0.42900002 +26596000,airspeed,-2.4801133,-2.4218185 +26604000,mag,0.19800001,-0.084000014,0.42900002 +26604000,baro,491.0372 +26604000,imu,-0.11787983,0.3334574,-9.787037,0.0046960693,0.00057770597,-0.00055059866 +26604000,airspeed,2.888385,2.8205056 +26608000,airspeed,-3.2247145,-3.148897 +26608000,mag,0.19800001,-0.084000014,0.42900002 +26608000,baro,491.2156 +26608000,imu,-0.15899111,0.28664336,-9.87452,0.004579978,0.002322046,-0.0031835989 +26612000,mag,0.19800001,-0.08600001,0.42600003 +26612000,imu,-0.24216494,0.28941187,-9.910883,0.0046469797,-0.002844821,-0.00023562004 +26612000,airspeed,2.967458,2.897706 +26612000,baro,491.117 +26616000,baro,491.117 +26616000,mag,0.19800001,-0.08600001,0.42600003 +26616000,imu,-0.23625855,0.28064033,-9.885132,0.0012325832,-0.00081696484,0.006339382 +26616000,airspeed,0.6080441,0.5937516 +26620000,baro,491.10294 +26620000,mag,0.19800001,-0.08600001,0.42600003 +26620000,airspeed,2.0430093,1.994989 +26620000,imu,-0.21111427,0.22416916,-9.916541,-0.0023975186,0.0004655698,0.0033868805 +26624000,airspeed,-1.7273932,-1.6867816 +26624000,imu,-0.19935778,0.3183297,-9.946554,0.002800232,-0.0039073206,0.002471868 +26628000,mag,0.19800001,-0.08600001,0.42600003 +26628000,imu,-0.20907302,0.33836237,-9.920181,0.003952363,-0.0045849737,0.0025483205 +26628000,baro,491.25317 +26628000,airspeed,4.424867,4.3208227 +26632000,imu,-0.15739392,0.2745602,-9.910231,-0.0036847128,-0.0043960353,-0.0021494178 +26632000,airspeed,1.82535,1.7824349 +26636000,imu,-0.11985331,0.21135454,-9.959762,-0.0024052197,0.0037909923,-0.0020943182 +26636000,airspeed,-1.3307502,-1.2994661 +26636000,mag,0.19800001,-0.08600001,0.42600003 +26636000,baro,491.16867 +26640000,airspeed,1.9429795,1.8973027 +26640000,imu,-0.12513116,0.23689033,-9.959377,0.0014381186,0.0078087305,-0.001373782 +26644000,baro,491.26724 +26644000,imu,-0.19212916,0.2672696,-9.940734,-0.0048170537,0.0018373838,-0.004963557 +26644000,mag,0.19800001,-0.08600001,0.42600003 +26644000,airspeed,1.5510706,1.5145985 +26648000,mag,0.19800001,-0.08600001,0.42600003 +26648000,baro,491.1311 +26648000,airspeed,2.513092,2.454018 +26648000,imu,-0.26005343,0.23305485,-9.994708,-0.0064341254,-0.0017971863,-0.007014581 +26652000,airspeed,-2.7354786,-2.6711698 +26652000,imu,-0.20861469,0.27312225,-9.977933,-0.0007403662,-0.0021587922,-0.0038641696 +26652000,baro,491.18274 +26652000,mag,0.19800001,-0.08600001,0.42600003 +26660000,baro,491.1311 +26660000,mag,0.19800001,-0.08600001,0.42600003 +26660000,imu,-0.12614256,0.19602126,-9.961063,0.0053346325,0.0043190527,-0.0028212825 +26660000,airspeed,1.0666049,1.0415328 +26668000,imu,-0.167951,0.2715,-9.83177,0.009511526,0.0028095925,-0.004828684 +26668000,airspeed,3.076809,3.00445 +26668000,baro,491.3189 +26668000,mag,0.202,-0.08200001,0.42800003 +26672000,baro,491.14517 +26672000,imu,-0.11922214,0.25220022,-9.879115,0.00096042507,0.004516548,-0.0016034086 +26672000,airspeed,-2.1782043,-2.1270008 +26672000,mag,0.202,-0.08200001,0.42800003 +26676000,baro,491.19684 +26676000,imu,-0.14013374,0.22735576,-9.909595,-0.0010465549,0.0052605746,-0.0009976755 +26676000,airspeed,4.5724983,4.4649982 +26676000,mag,0.202,-0.08200001,0.42800003 +26680000,airspeed,-2.3480778,-2.292839 +26680000,imu,-0.20586817,0.24405195,-9.950535,0.0051254015,0.0061779255,0.003373015 +26684000,imu,-0.10465789,0.23880233,-10.053066,0.008823951,0.0014422011,-0.00014559303 +26684000,airspeed,2.8629992,2.7956734 +26684000,baro,491.2954 +26684000,mag,0.202,-0.08200001,0.42800003 +26688000,imu,-0.092868455,0.23232038,-10.075747,0.011150068,-0.00086262287,-0.0026996427 +26688000,airspeed,3.3671536,3.2879755 +26692000,baro,491.35645 +26692000,airspeed,1.4762158,1.4414961 +26692000,imu,-0.18131533,0.25937557,-9.931136,0.0045500053,0.0019035557,-0.00062196405 +26692000,mag,0.202,-0.08200001,0.42800003 +26696000,imu,-0.15960152,0.2309231,-9.854163,-0.0019458506,0.0036265077,0.0044984636 +26696000,baro,491.1217 +26696000,mag,0.202,-0.08200001,0.42800003 +26696000,airspeed,3.1245568,3.0511117 +26700000,baro,491.26724 +26700000,imu,-0.139271,0.19667707,-9.953587,0.0031391454,-0.00016146181,0.0011429611 +26700000,airspeed,2.2602165,2.2070694 +26700000,mag,0.202,-0.08200001,0.42800003 +26704000,mag,0.202,-0.08200001,0.42800003 +26704000,baro,491.07944 +26708000,airspeed,-2.0175014,-1.9700639 +26708000,baro,491.24377 +26708000,mag,0.202,-0.08200001,0.42800003 +26708000,imu,-0.20630515,0.28402188,-9.912707,0.0032952388,-0.00031059916,-0.0048007253 +26712000,airspeed,3.391837,3.3121161 +26712000,mag,0.202,-0.08200001,0.42800003 +26712000,baro,491.08414 +26712000,imu,-0.23232894,0.25181693,-9.934572,0.005317549,0.0015605559,-0.006172197 +26720000,imu,-0.18816026,0.23733696,-9.906078,-0.00087645993,0.0044981283,-0.0051734904 +26720000,mag,0.194,-0.08200001,0.43300003 +26720000,gps,491682.0,85456077.0,473977508.0,0.01,-0.06,-0.02 +26720000,baro,491.225 +26720000,airspeed,1.5098572,1.4743577 +26724000,imu,-0.2367148,0.27000403,-9.894033,-0.004333738,0.0056516565,-0.006521458 +26724000,baro,491.24847 +26724000,mag,0.194,-0.08200001,0.43300003 +26724000,airspeed,1.6501243,1.6113243 +26728000,airspeed,-0.6343219,-0.61941034 +26728000,mag,0.194,-0.08200001,0.43300003 +26728000,imu,-0.24976453,0.28947505,-9.86951,0.00019437616,0.004497283,-0.0062725735 +26728000,baro,491.15927 +26732000,mag,0.194,-0.08200001,0.43300003 +26732000,baro,491.1358 +26732000,airspeed,-1.7796214,-1.7377886 +26732000,imu,-0.22887935,0.2887088,-9.904069,0.012406565,0.008290437,-0.0033627017 +26736000,mag,0.194,-0.08200001,0.43300003 +26736000,airspeed,0.8329347,0.81334823 +26736000,imu,-0.18379797,0.29196113,-9.982121,0.0143705,0.010487284,-0.00049494405 +26736000,baro,491.27664 +26740000,imu,-0.123152174,0.25121316,-9.95078,0.007978328,0.006306595,0.00078154635 +26740000,airspeed,2.5972466,2.536198 +26744000,baro,491.19214 +26744000,imu,-0.17964694,0.22141345,-9.909253,0.0037309034,0.003916179,-0.0035636576 +26744000,airspeed,2.0001729,1.9531487 +26744000,mag,0.194,-0.08200001,0.43300003 +26748000,baro,491.26724 +26748000,mag,0.194,-0.08200001,0.43300003 +26748000,airspeed,3.3487647,3.2700212 +26748000,imu,-0.15659226,0.24857299,-9.935467,-0.0008349219,0.008240149,-0.0058306977 +26752000,imu,-0.11357827,0.29674694,-9.894208,0.0037336526,0.007164453,-0.0039520063 +26752000,baro,491.14987 +26752000,airspeed,0.9440622,0.92186975 +26752000,mag,0.194,-0.08200001,0.43300003 +26756000,baro,491.19684 +26756000,imu,-0.23946255,0.2735948,-9.856297,0.0065490985,0.0050404198,0.0019918124 +26756000,mag,0.194,-0.08200001,0.43300003 +26760000,mag,0.194,-0.08200001,0.43300003 +26760000,imu,-0.25107223,0.253226,-9.850841,0.003280295,0.004918202,0.0066363737 +26760000,baro,491.2156 +26760000,airspeed,2.787232,2.7217011 +26764000,airspeed,3.2784667,3.2013845 +26764000,imu,-0.13996717,0.23466627,-9.889157,0.0023202226,0.003909824,0.00093221536 +26764000,baro,491.225 +26764000,mag,0.194,-0.08200001,0.43300003 +26768000,imu,-0.16950724,0.20945883,-9.912528,0.0034438155,0.0022860887,-0.0037883522 +26768000,baro,491.18274 +26768000,mag,0.2,-0.084000014,0.432 +26772000,imu,-0.19025521,0.23624063,-9.93487,0.010492479,0.0026513424,-0.0040451237 +26772000,airspeed,1.6635549,1.624431 +26776000,mag,0.2,-0.084000014,0.432 +26776000,imu,-0.18228842,0.22893149,-9.943103,0.009337765,0.0021325431,0.00042127582 +26776000,baro,491.16867 +26776000,airspeed,3.3127499,3.2348719 +26780000,airspeed,-3.8509023,-3.7603345 +26780000,mag,0.2,-0.084000014,0.432 +26780000,imu,-0.18867022,0.22862342,-9.883613,0.004999908,0.000417033,0.004707124 +26780000,baro,491.34238 +26788000,airspeed,3.1239035,3.0504444 +26788000,imu,-0.27151096,0.16642924,-9.9530525,0.005524974,0.0021740834,-0.0021864218 +26788000,mag,0.2,-0.084000014,0.432 +26788000,baro,491.28604 +26792000,baro,491.26724 +26792000,imu,-0.24232,0.27630466,-9.930038,0.005865642,0.0011853937,0.0020421469 +26792000,airspeed,3.4166994,3.336358 +26792000,mag,0.2,-0.084000014,0.432 +26800000,imu,-0.22945733,0.28830597,-9.960106,0.013722651,-0.0004018267,0.0058235507 +26800000,airspeed,-3.5399165,-3.4566786 +26800000,baro,491.26724 +26800000,mag,0.2,-0.084000014,0.432 +26808000,imu,-0.1211426,0.23861414,-9.937396,0.003959364,-0.0014729833,-8.6760265e-05 +26808000,airspeed,-2.3406007,-2.2855668 +26808000,baro,491.23907 +26808000,mag,0.2,-0.084000014,0.432 +26812000,mag,0.2,-0.084000014,0.432 +26812000,airspeed,1.6068984,1.5691141 +26812000,baro,491.25787 +26812000,imu,-0.16267735,0.26168483,-9.944685,0.00089498074,-0.0003829997,-0.0023048762 +26816000,mag,0.2,-0.084000014,0.432 +26816000,baro,491.25787 +26816000,airspeed,2.4078586,2.3512409 +26816000,imu,-0.16092701,0.2946485,-10.012946,0.008389353,-0.0037150944,-0.0023709869 +26820000,airspeed,1.1997025,1.171493 +26820000,imu,-0.16138594,0.24356866,-10.010938,0.0101281535,-0.005314346,0.004319375 +26824000,baro,491.25317 +26824000,imu,-0.22054335,0.24091527,-9.937337,0.009707397,-0.008825856,0.0053685945 +26824000,airspeed,-0.48978493,-0.47826833 +26824000,mag,0.19900002,-0.08000001,0.43100002 +26828000,imu,-0.29805765,0.18571295,-9.928104,0.014091335,-0.012938745,-0.0020178428 +26828000,mag,0.19900002,-0.08000001,0.43100002 +26828000,baro,491.27664 +26828000,airspeed,3.6551418,3.5691917 +26832000,airspeed,1.1704087,1.1428878 +26832000,mag,0.19900002,-0.08000001,0.43100002 +26832000,baro,491.26254 +26832000,imu,-0.24552241,0.18357573,-9.9409,0.01932108,-0.016191857,-0.005151989 +26836000,imu,-0.16307847,0.24382117,-9.882239,0.017463364,-0.011578178,-0.00084400363 +26836000,airspeed,-1.8713915,-1.8274153 +26836000,baro,491.00903 +26836000,mag,0.19900002,-0.08000001,0.43100002 +26840000,mag,0.19900002,-0.08000001,0.43100002 +26840000,airspeed,-2.5837078,-2.5229738 +26840000,baro,491.1358 +26840000,imu,-0.22630458,0.26293293,-9.951653,0.01735087,-0.0032056517,-0.00051400234 +26844000,mag,0.19900002,-0.08000001,0.43100002 +26844000,baro,491.1358 +26848000,imu,-0.18547918,0.20194662,-9.965789,0.015179459,-0.015916325,-0.0016945314 +26848000,airspeed,-3.410162,-3.3300083 +26852000,imu,-0.11965512,0.25108644,-9.939218,0.0129214795,-0.014932344,-0.0062159775 +26852000,airspeed,-1.3876151,-1.3549893 +26852000,mag,0.19900002,-0.08000001,0.43100002 +26852000,baro,491.2297 +26856000,imu,-0.12750348,0.2452271,-9.96897,0.01438514,-0.0137811955,-0.0018469811 +26856000,airspeed,-3.8206482,-3.7308187 +26856000,mag,0.19900002,-0.08000001,0.43100002 +26856000,baro,491.2203 +26860000,imu,-0.19401053,0.26523444,-9.989064,0.012293792,-0.017357478,-0.0013428334 +26860000,mag,0.19900002,-0.08000001,0.43100002 +26860000,airspeed,-0.72714,-0.71004516 +26860000,baro,491.19214 +26864000,imu,-0.13544233,0.24807942,-9.992306,0.007267418,-0.022464877,-0.005024099 +26864000,airspeed,3.0481477,2.976506 +26864000,baro,491.07944 +26864000,mag,0.19900002,-0.08000001,0.43100002 +26872000,airspeed,2.2073877,2.155502 +26872000,baro,491.117 +26872000,imu,-0.26320395,0.23461775,-9.999384,0.010672295,-0.014026503,-0.0006854098 +26872000,mag,0.19900002,-0.08000001,0.43100002 +26876000,mag,0.202,-0.07900001,0.43100002 +26876000,baro,491.05597 +26876000,imu,-0.25806972,0.21131353,-10.050102,0.008311147,-0.01972618,0.00070808793 +26876000,airspeed,3.2290964,3.1532066 +26880000,airspeed,-3.1489356,-3.0749297 +26880000,baro,491.05597 +26880000,imu,-0.21909295,0.26117527,-10.07004,0.008868304,-0.019906165,0.0012479081 +26880000,mag,0.202,-0.07900001,0.43100002 +26888000,baro,491.18274 +26888000,imu,-0.24794628,0.22926907,-9.9922905,0.013852823,-0.025909817,0.002024221 +26888000,mag,0.202,-0.07900001,0.43100002 +26888000,airspeed,1.4109418,1.3777715 +26892000,baro,491.07944 +26892000,mag,0.202,-0.07900001,0.43100002 +26892000,imu,-0.24595961,0.31401926,-9.918203,0.008320691,-0.01538588,0.0009593171 +26892000,airspeed,-3.8766086,-3.7854958 +26900000,mag,0.202,-0.07900001,0.43100002 +26900000,imu,-0.16396806,0.28698832,-9.950552,0.0047454652,-0.011380516,0.0014252232 +26900000,baro,491.10294 +26900000,airspeed,4.9251237,4.809361 +26904000,airspeed,2.1001964,2.0508347 +26904000,imu,-0.22654568,0.2435637,-9.891275,0.012957033,-0.019366894,0.0011119043 +26904000,mag,0.202,-0.07900001,0.43100002 +26904000,baro,491.07944 +26908000,imu,-0.229233,0.22034799,-9.883849,0.007852,-0.015793037,0.0014382722 +26908000,mag,0.202,-0.07900001,0.43100002 +26908000,baro,491.10294 +26908000,airspeed,2.0891702,2.0400655 +26912000,baro,491.10294 +26912000,airspeed,-3.634634,-3.549204 +26912000,mag,0.202,-0.07900001,0.43100002 +26912000,imu,-0.20909289,0.2270605,-9.914793,0.005422316,-0.00767391,0.0024791907 +26920000,baro,491.3142 +26920000,imu,-0.2076882,0.25907287,-9.932865,0.013662119,-0.017008444,-0.0004027809 +26920000,mag,0.202,-0.07900001,0.43100002 +26920000,gps,491692.0,85456076.0,473977508.0,0.0,-0.04,-0.03 +26920000,airspeed,-3.3242369,-3.2460604 +26924000,airspeed,1.5653138,1.5285021 +26924000,imu,-0.18676066,0.26262155,-9.990641,0.0039146724,-0.016841747,-0.0022438115 +26924000,baro,491.3142 +26924000,mag,0.202,-0.07900001,0.43100002 +26928000,airspeed,3.970561,3.877198 +26928000,baro,491.25787 +26928000,mag,0.19600001,-0.084000014,0.43 +26928000,imu,-0.1510068,0.30240586,-9.999975,0.0036794802,-0.009712722,0.0014209942 +26932000,airspeed,0.81357294,0.794441 +26932000,mag,0.19600001,-0.084000014,0.43 +26932000,imu,-0.16677903,0.25986427,-9.945155,0.012547834,-0.015148656,0.0013423129 +26932000,baro,491.3001 +26936000,airspeed,-2.823701,-2.757306 +26936000,imu,-0.2245036,0.2689006,-9.90652,0.01621579,-0.019895999,0.0028035145 +26936000,baro,491.25317 +26936000,mag,0.19700001,-0.084000014,0.43 +26940000,baro,491.16867 +26940000,mag,0.19700001,-0.084000014,0.43 +26940000,airspeed,2.3378859,2.282926 +26940000,imu,-0.19480896,0.28171176,-9.93965,0.015930783,-0.016669849,0.003440022 +26944000,airspeed,-2.8370416,-2.7703474 +26944000,imu,-0.20576532,0.2344013,-10.003257,0.00549274,-0.01921612,-0.004709542 +26944000,baro,491.16867 +26944000,mag,0.19700001,-0.084000014,0.43 +26952000,airspeed,3.0225444,2.951474 +26952000,baro,491.25317 +26952000,mag,0.19700001,-0.084000014,0.43 +26952000,imu,-0.116378315,0.2108369,-9.945583,0.008956682,-0.01973588,-0.0028408477 +26956000,baro,491.25317 +26956000,mag,0.19700001,-0.084000014,0.43 +26956000,airspeed,2.0507243,2.0025046 +26956000,imu,-0.16170494,0.23639193,-9.901185,0.008240624,-0.02422985,-0.000855219 +26960000,baro,491.33298 +26960000,mag,0.19700001,-0.084000014,0.43 +26960000,airspeed,2.5592694,2.4990802 +26960000,imu,-0.16861232,0.22894736,-9.866925,0.012643071,-0.021780005,0.0016260002 +26964000,mag,0.19700001,-0.084000014,0.43 +26964000,airspeed,-1.7997302,-1.7573949 +26964000,imu,-0.17183118,0.19399653,-9.863191,0.010048038,-0.017381001,-0.000489087 +26964000,baro,491.42218 +26968000,mag,0.19700001,-0.084000014,0.43 +26968000,airspeed,-1.7991735,-1.7568786 +26968000,baro,491.15927 +26968000,imu,-0.2040556,0.22396013,-9.869264,0.0025282775,-0.016128901,-0.0006206395 +26972000,baro,491.3001 +26972000,airspeed,-2.674236,-2.6113489 +26972000,imu,-0.20961154,0.28901365,-9.878916,0.0047883755,-0.019470835,-0.0023255907 +26972000,mag,0.19700001,-0.084000014,0.43 +26976000,mag,0.201,-0.08300001,0.43 +26976000,baro,491.2156 +26976000,imu,-0.16302918,0.30774787,-9.869968,0.0037333234,-0.02120588,-0.0038565653 +26976000,airspeed,4.2188077,4.119618 +26980000,imu,-0.07647105,0.24168211,-9.83332,0.00030525136,-0.015739087,-0.0025530953 +26980000,airspeed,-2.45148,-2.3938575 +26980000,baro,491.117 +26980000,mag,0.201,-0.08300001,0.43 +26988000,mag,0.201,-0.08300001,0.43 +26988000,baro,491.09824 +26988000,imu,-0.21997987,0.2759694,-9.826321,0.012841192,-0.015857514,0.0059412476 +26988000,airspeed,-2.195665,-2.144057 +26992000,baro,491.28134 +26992000,mag,0.201,-0.08300001,0.43 +26992000,airspeed,-2.763313,-2.6983335 +26992000,imu,-0.17690729,0.24350369,-9.759609,0.005655813,-0.013409551,0.0010645841 +26996000,airspeed,3.5785685,3.4944177 +26996000,mag,0.201,-0.08300001,0.43 +26996000,imu,-0.17871428,0.17057519,-9.780211,0.0015304978,-0.013579655,0.0005302976 +26996000,baro,491.28604 +27000000,airspeed,1.9635936,1.9174305 +27004000,mag,0.201,-0.08300001,0.43 +27004000,imu,-0.19297327,0.2888396,-9.857517,0.00040168353,-0.017148176,0.0023996544 +27004000,airspeed,3.2847538,3.207531 +27004000,baro,491.18744 +27012000,mag,0.201,-0.08300001,0.42900002 +27012000,airspeed,2.419415,2.362522 +27012000,imu,-0.18622452,0.24058595,-9.838724,0.0070674527,-0.014542623,0.0024398968 +27012000,baro,491.28604 +27016000,airspeed,3.8434608,3.7530773 +27016000,baro,491.3001 +27016000,imu,-0.18110427,0.26134422,-9.854937,0.007711749,-0.0158296,0.0009348182 +27016000,mag,0.201,-0.08300001,0.42900002 +27020000,imu,-0.17770341,0.24025775,-9.832251,0.0033508088,-0.017246744,0.0027664714 +27020000,airspeed,0.9978997,0.9744329 +27020000,mag,0.201,-0.08300001,0.42900002 +27020000,baro,491.3001 +27024000,mag,0.201,-0.08300001,0.42900002 +27024000,imu,-0.16449317,0.25644612,-9.850482,-0.006402778,-0.014794042,0.0012352425 +27024000,airspeed,-3.1331985,-3.0595205 +27024000,baro,491.28604 +27028000,baro,491.28604 +27028000,imu,-0.18285507,0.32627165,-9.85563,-0.0057372083,-0.010190848,0.006551105 +27028000,mag,0.19900002,-0.08100001,0.43 +27028000,airspeed,2.5004659,2.4416666 +27036000,mag,0.19900002,-0.08100001,0.43 +27036000,airspeed,3.3270028,3.2487838 +27036000,imu,-0.16415764,0.23221095,-9.878766,-0.00047111354,-0.006054708,0.001219804 +27036000,baro,491.2015 +27040000,imu,-0.18422419,0.3058144,-9.841543,0.002877697,-0.014375628,-0.0048848037 +27040000,baro,491.32358 +27040000,airspeed,-4.724598,-4.6134877 +27040000,mag,0.19900002,-0.08100001,0.43 +27044000,imu,-0.1468953,0.30025595,-9.815423,-0.0021468224,-0.02141927,-0.0038972977 +27044000,baro,491.1311 +27044000,airspeed,-2.2584,-2.2053132 +27044000,mag,0.2,-0.08100001,0.43 +27048000,baro,491.1311 +27048000,airspeed,1.8855364,1.8412144 +27048000,mag,0.2,-0.08100001,0.43 +27048000,imu,-0.20975564,0.28996754,-9.875029,-0.0035364435,-0.018869955,-0.0053861947 +27052000,mag,0.2,-0.08100001,0.43 +27052000,imu,-0.14535463,0.21007964,-9.933348,0.0022607774,-0.01197549,-0.0059325127 +27052000,baro,491.28604 +27052000,airspeed,0.5772655,0.5636909 +27060000,imu,-0.14738968,0.21415685,-9.90678,-0.003399006,-0.010833845,0.0025853883 +27060000,airspeed,3.691135,3.6043737 +27060000,baro,491.117 +27060000,mag,0.2,-0.08100001,0.43 +27064000,baro,491.17334 +27064000,imu,-0.04294623,0.21637799,-9.964224,-0.0015002728,-0.0147280255,-0.0050565824 +27064000,mag,0.2,-0.08100001,0.43 +27068000,airspeed,-2.3422456,-2.2871754 +27068000,imu,-0.11866152,0.20220606,-9.950432,0.0029510814,-0.010404669,-0.0067785517 +27068000,baro,491.225 +27068000,mag,0.2,-0.08100001,0.43 +27072000,airspeed,-0.8040594,-0.7851509 +27072000,imu,-0.17862317,0.25553748,-9.900113,0.00010185023,-0.010153428,-0.006449406 +27072000,baro,491.3048 +27072000,mag,0.2,-0.08100001,0.43 +27076000,mag,0.2,-0.08100001,0.43 +27076000,airspeed,-2.1570208,-2.1062956 +27076000,imu,-0.1753699,0.24595472,-9.893337,0.0039417003,-0.010501672,-0.0022353027 +27076000,baro,491.3048 +27084000,mag,0.19800001,-0.08000001,0.43100002 +27084000,baro,491.14987 +27084000,imu,-0.19855842,0.21599314,-9.920498,-0.0019831313,-0.001924263,-0.0027777413 +27084000,airspeed,3.6722136,3.5858896 +27088000,baro,491.26724 +27088000,airspeed,2.1519272,2.1013265 +27088000,mag,0.19800001,-0.08000001,0.43100002 +27088000,imu,-0.24082784,0.19336063,-9.8705635,0.001507052,-0.0061334586,0.002328306 +27092000,airspeed,-2.271876,-2.2184548 +27092000,baro,491.26724 +27092000,mag,0.19800001,-0.08000001,0.43100002 +27092000,imu,-0.28153837,0.25829163,-9.903742,0.002835486,-0.011226226,0.003998086 +27096000,airspeed,-1.1873698,-1.1594528 +27096000,baro,491.225 +27096000,mag,0.19800001,-0.08000001,0.43100002 +27096000,imu,-0.21769437,0.2728007,-9.901234,-0.00011746761,-0.007475737,0.0030986343 +27104000,airspeed,-2.0858335,-2.0368004 +27104000,mag,0.19800001,-0.08000001,0.43100002 +27104000,baro,491.15927 +27104000,imu,-0.1253201,0.30189145,-9.871701,-0.004424472,-0.0068064355,-0.0020586657 +27108000,airspeed,3.2433019,3.167055 +27108000,mag,0.19800001,-0.08000001,0.43100002 +27108000,baro,491.18274 +27108000,imu,-0.17267407,0.22848298,-9.861185,-0.0074141845,-0.0054411455,0.0006519608 +27112000,airspeed,-2.4103527,-2.3536875 +27112000,mag,0.19800001,-0.08000001,0.43100002 +27112000,baro,491.18274 +27112000,imu,-0.16292523,0.22607876,-9.885816,-0.0025432156,-0.0036465735,0.0023436628 +27120000,imu,-0.28463966,0.27572313,-9.943469,0.0032136177,-0.007183031,0.0017045335 +27120000,airspeed,-0.5510403,-0.5380857 +27120000,gps,491689.0,85456076.0,473977508.0,-0.01,-0.03,0.0 +27120000,baro,491.18744 +27120000,mag,0.19800001,-0.08000001,0.43100002 +27124000,airspeed,3.717476,3.6300802 +27124000,imu,-0.20343924,0.30408657,-9.93698,0.0052660853,-0.0017335207,0.0034559064 +27124000,baro,491.18744 +27124000,mag,0.19800001,-0.08000001,0.43100002 +27128000,imu,-0.24009034,0.30663812,-9.941941,0.004579876,0.00042063583,-0.0036797153 +27128000,airspeed,1.4337263,1.4000179 +27128000,baro,491.2156 +27128000,mag,0.19800001,-0.08000001,0.43100002 +27132000,airspeed,-2.6841736,-2.6210442 +27132000,baro,491.35645 +27132000,mag,0.201,-0.08300001,0.42800003 +27132000,imu,-0.2242499,0.28428406,-9.910718,0.0017189292,-0.0008253273,-0.0058005867 +27136000,imu,-0.20214929,0.23356235,-9.871369,0.005021547,-0.00029026912,-0.0022930715 +27136000,mag,0.201,-0.08300001,0.42800003 +27136000,airspeed,1.1733177,1.1457223 +27136000,baro,491.35645 +27140000,imu,-0.22709414,0.19489191,-9.909007,0.002493905,0.002428515,-0.0020179169 +27140000,airspeed,1.7705817,1.728948 +27144000,imu,-0.27147543,0.22138007,-9.959246,-0.0020257595,-0.0008860484,0.0029627061 +27144000,baro,491.225 +27144000,airspeed,-3.8365507,-3.746348 +27144000,mag,0.201,-0.08300001,0.42800003 +27148000,baro,491.225 +27148000,mag,0.201,-0.08300001,0.42800003 +27152000,airspeed,3.8685381,3.7776008 +27152000,baro,491.14517 +27152000,mag,0.201,-0.08300001,0.42800003 +27152000,imu,-0.22368911,0.2516396,-9.906978,-0.0040598838,0.0010550002,-0.0026312692 +27156000,baro,491.19214 +27156000,mag,0.201,-0.08300001,0.42800003 +27156000,imu,-0.17800872,0.24861558,-9.892562,-0.0056186654,-0.00029302615,-0.004596905 +27156000,airspeed,2.1842701,2.1329188 +27160000,baro,491.05597 +27160000,mag,0.201,-0.08300001,0.42800003 +27160000,airspeed,-3.4535756,-3.3724108 +27160000,imu,-0.19216314,0.17302893,-9.886655,0.000974865,0.00047939844,-0.0042689336 +27164000,baro,491.15927 +27164000,airspeed,0.6645708,0.6489483 +27164000,imu,-0.1779027,0.24187371,-9.94276,0.002420475,0.0020174885,0.0017635095 +27164000,mag,0.201,-0.08300001,0.42800003 +27168000,airspeed,-1.3552008,-1.3233432 +27168000,imu,-0.13146856,0.2846235,-9.932503,-0.005047681,-0.002883312,0.0018981879 +27168000,mag,0.201,-0.08300001,0.42800003 +27168000,baro,491.15927 +27172000,baro,491.27194 +27172000,imu,-0.16076513,0.24214704,-9.868843,-0.0029012328,-0.0062266635,-0.009168983 +27172000,airspeed,-2.1693017,-2.118292 +27172000,mag,0.201,-0.08300001,0.42800003 +27176000,imu,-0.2283715,0.18200621,-9.862056,-0.0012428458,-0.004445634,-0.008725438 +27176000,mag,0.201,-0.08300001,0.42800003 +27176000,airspeed,-3.2241426,-3.1483293 +27176000,baro,491.27194 +27180000,baro,491.27194 +27180000,mag,0.201,-0.08300001,0.42800003 +27180000,imu,-0.24331537,0.18240146,-9.805378,-0.008014446,-0.008756894,-0.006996519 +27180000,airspeed,3.3667595,3.287593 +27184000,imu,-0.258483,0.1850596,-9.766149,-0.006809243,-0.012348163,-0.007090867 +27184000,baro,491.09824 +27184000,airspeed,3.4477773,3.3667397 +27184000,mag,0.19900002,-0.08200001,0.43 +27192000,mag,0.19900002,-0.08200001,0.43 +27192000,imu,-0.22288524,0.24893771,-9.682598,-0.002837038,-0.010411502,-0.0015243917 +27192000,airspeed,-2.036546,-1.9886426 +27192000,baro,491.3987 +27196000,imu,-0.17573622,0.30846262,-9.642066,0.0008243918,-0.012926544,0.002624893 +27196000,airspeed,-2.6351845,-2.5732276 +27196000,baro,491.225 +27196000,mag,0.19900002,-0.08200001,0.43 +27200000,imu,-0.20466372,0.23752572,-9.576772,0.0018923328,-0.01940176,-0.00039319263 +27200000,mag,0.19900002,-0.08200001,0.42900002 +27200000,baro,491.225 +27200000,airspeed,-1.8640469,-1.8202205 +27208000,mag,0.19900002,-0.08200001,0.42900002 +27208000,airspeed,-4.623956,-4.515263 +27208000,baro,491.14047 +27208000,imu,-0.18183583,0.15334094,-9.452301,-0.0019606014,-0.015162106,-0.0016237458 +27212000,airspeed,2.00697,1.9597908 +27212000,mag,0.19900002,-0.08200001,0.42900002 +27212000,imu,-0.18140474,0.19861932,-9.405509,0.00045644728,-0.01602116,0.0049496046 +27212000,baro,491.15927 +27220000,imu,-0.28893417,0.18922502,-9.283508,-0.003184609,-0.028876944,0.00023213739 +27220000,mag,0.19900002,-0.08200001,0.42900002 +27220000,baro,491.26724 +27220000,airspeed,-1.2000778,-1.171859 +27224000,mag,0.19900002,-0.08200001,0.42900002 +27224000,airspeed,2.3130467,2.258669 +27224000,imu,-0.19303998,0.28641382,-9.149666,-0.002894681,-0.02096169,-0.004992075 +27224000,baro,491.18274 +27228000,airspeed,3.0952733,3.022506 +27228000,imu,-0.11389902,0.23185323,-9.03472,-0.0067427335,-0.020273399,-0.0048823617 +27232000,baro,491.24847 +27232000,airspeed,2.5373433,2.4776826 +27232000,imu,-0.19456877,0.2708712,-8.972638,-0.007694678,-0.020780355,-0.003960954 +27232000,mag,0.19900002,-0.08200001,0.42900002 +27236000,mag,0.19900002,-0.08200001,0.42900002 +27236000,imu,-0.21745038,0.29973245,-8.897261,-0.005585729,-0.027420484,-0.0063121724 +27236000,airspeed,-1.5381027,-1.5019373 +27236000,baro,491.24847 +27240000,imu,-0.16187446,0.24693038,-8.815548,-0.0042625275,-0.02902576,-0.0077033434 +27240000,airspeed,-2.8886273,-2.8207073 +27240000,mag,0.201,-0.08000001,0.42700002 +27240000,baro,491.24847 +27244000,airspeed,0.82099485,0.80170405 +27244000,baro,490.97617 +27244000,imu,-0.12594652,0.26291418,-8.850478,-0.0049496195,-0.0257206,-0.0037456264 +27244000,mag,0.201,-0.08000001,0.42700002 +27248000,baro,491.2062 +27248000,airspeed,1.5470691,1.5106966 +27248000,mag,0.201,-0.08000001,0.42700002 +27248000,imu,-0.22983752,0.263392,-8.778963,-0.006412249,-0.031391412,-0.0038045445 +27252000,baro,491.3095 +27252000,imu,-0.2962457,0.18918204,-8.581572,-0.014848397,-0.032930933,-0.0050623724 +27252000,airspeed,2.4344325,2.3771827 +27252000,mag,0.201,-0.08000001,0.42700002 +27256000,mag,0.201,-0.08000001,0.42700002 +27256000,baro,491.14987 +27256000,imu,-0.24847937,0.2440289,-8.441204,-0.013654446,-0.03236549,0.00046223198 +27256000,airspeed,3.542113,3.4588478 +27260000,airspeed,-3.0583646,-2.986471 +27260000,imu,-0.19140491,0.30098933,-8.354,-0.012313827,-0.03172812,-0.0029033825 +27260000,baro,491.14987 +27260000,mag,0.201,-0.08000001,0.42700002 +27268000,baro,491.4128 +27268000,imu,-0.2286718,0.30804172,-8.150022,-0.016681867,-0.03129237,0.00012487375 +27268000,airspeed,1.8760046,1.8318765 +27268000,mag,0.201,-0.08000001,0.42700002 +27272000,airspeed,-4.266665,-4.1663394 +27272000,mag,0.201,-0.08100001,0.42700002 +27272000,baro,491.26724 +27272000,imu,-0.20757139,0.2173112,-8.025434,-0.01791515,-0.031395726,-0.0018826541 +27276000,airspeed,-2.03735,-1.989444 +27276000,baro,491.26724 +27276000,imu,-0.19912238,0.1616916,-7.913906,-0.016128272,-0.027597137,0.0017565576 +27276000,mag,0.201,-0.08100001,0.42700002 +27284000,airspeed,-2.9879715,-2.9177067 +27284000,baro,491.3001 +27284000,mag,0.201,-0.08100001,0.42700002 +27284000,imu,-0.2207404,0.18693139,-7.602033,-0.022655759,-0.03132033,-0.0065262923 +27288000,airspeed,-2.4658902,-2.4079099 +27288000,mag,0.19800001,-0.08000001,0.42600003 +27288000,baro,491.24847 +27288000,imu,-0.19588304,0.12356756,-7.535607,-0.023318619,-0.03730143,-0.0068278587 +27292000,imu,-0.16011772,0.12921274,-7.5151563,-0.020658553,-0.031436484,0.00065703224 +27292000,baro,491.24847 +27292000,mag,0.19800001,-0.08000001,0.42600003 +27292000,airspeed,-4.2764235,-4.1758723 +27296000,imu,-0.18764141,0.12511802,-7.391325,-0.017347256,-0.033439517,0.0056726206 +27296000,airspeed,-2.3774936,-2.321571 +27296000,mag,0.19900002,-0.08000001,0.42600003 +27296000,baro,491.3987 +27300000,imu,-0.13833843,0.14697686,-7.293671,-0.01808047,-0.044411674,0.0027708379 +27300000,mag,0.19900002,-0.08000001,0.42600003 +27300000,baro,491.3987 +27300000,airspeed,-2.305874,-2.251636 +27308000,mag,0.19900002,-0.08000001,0.42600003 +27308000,baro,491.09354 +27308000,airspeed,-0.59763366,-0.5835869 +27308000,imu,-0.17165771,0.24748617,-7.150254,-0.029451704,-0.035438556,-0.008505649 +27312000,airspeed,-2.0750656,-2.026283 +27312000,imu,-0.14183772,0.19644366,-7.029668,-0.032249976,-0.037676185,-0.0059026363 +27312000,baro,491.18274 +27312000,mag,0.19900002,-0.08000001,0.42600003 +27316000,airspeed,2.823966,2.7575777 +27316000,baro,491.18274 +27316000,mag,0.19900002,-0.08000001,0.42600003 +27316000,imu,-0.105895,0.18592617,-6.9861274,-0.029991066,-0.039855953,-0.0014273251 +27320000,landed,0.0 +27320000,gps,491698.0,85456074.0,473977508.0,0.02,0.0,-0.02 +27324000,imu,-0.14666831,0.2083858,-6.7653356,-0.029609894,-0.048496798,-0.005044783 +27324000,airspeed,-2.439717,-2.3823812 +27324000,baro,491.0419 +27324000,mag,0.19900002,-0.08100001,0.42600003 +27328000,airspeed,2.1267169,2.0767055 +27328000,imu,-0.18042763,0.22683443,-6.7485957,-0.035039842,-0.04897888,-0.006185303 +27328000,baro,491.2954 +27328000,mag,0.19900002,-0.08100001,0.42600003 +27336000,imu,-0.16358827,0.15923697,-6.6186943,-0.039163105,-0.05773832,0.0014799193 +27336000,airspeed,3.1379282,3.0641465 +27336000,baro,491.24377 +27336000,mag,0.19900002,-0.08100001,0.42600003 +27340000,imu,-0.18595992,0.17886344,-6.611186,-0.04148482,-0.05098683,0.0031836526 +27340000,airspeed,2.8123477,2.7462575 +27340000,baro,491.0231 +27340000,mag,0.19900002,-0.08200001,0.42800003 +27348000,baro,491.08414 +27348000,airspeed,-3.8637052,-3.7728941 +27348000,imu,-0.1416921,0.18302852,-6.420046,-0.040181674,-0.059646364,0.00041777 +27348000,mag,0.19900002,-0.08200001,0.42800003 +27352000,imu,-0.19666396,0.16220362,-6.404975,-0.043743536,-0.056010332,0.0023061228 +27352000,baro,491.14987 +27352000,airspeed,3.210839,3.1353612 +27352000,mag,0.19900002,-0.08200001,0.42800003 +27356000,imu,-0.20284992,0.20731074,-6.4027805,-0.050398637,-0.057481468,0.009461025 +27356000,mag,0.2,-0.08200001,0.42800003 +27356000,airspeed,-2.49639,-2.4376867 +27356000,baro,491.28604 +27360000,airspeed,-5.020684,-4.9026475 +27360000,mag,0.2,-0.08200001,0.42800003 +27360000,baro,491.19214 +27360000,imu,-0.1762991,0.23299658,-6.3472486,-0.051450588,-0.06295856,0.005962069 +27364000,baro,491.19214 +27364000,airspeed,-2.4650133,-2.4070609 +27364000,mag,0.2,-0.08200001,0.42800003 +27364000,imu,-0.20896617,0.26840377,-6.27219,-0.047615994,-0.05845066,-0.002928747 +27368000,baro,491.1311 +27368000,mag,0.2,-0.08200001,0.42800003 +27368000,imu,-0.22879964,0.30816516,-6.1941285,-0.04710796,-0.05555339,-0.003643468 +27368000,airspeed,-2.0459268,-1.9978343 +27372000,imu,-0.21147957,0.35020468,-6.116731,-0.041100398,-0.057517514,0.004987824 +27372000,airspeed,-1.7619895,-1.7205714 +27372000,mag,0.2,-0.08200001,0.42800003 +27372000,baro,491.1311 +27376000,imu,-0.17928652,0.31160977,-6.1675344,-0.040499657,-0.057044465,0.0048323097 +27376000,mag,0.2,-0.08300001,0.42800003 +27376000,baro,491.25317 +27376000,airspeed,-1.942822,-1.8971392 +27380000,baro,491.2156 +27380000,airspeed,-1.3845371,-1.351985 +27380000,mag,0.2,-0.08300001,0.42700002 +27380000,imu,-0.2041133,0.21110748,-6.194868,-0.049609922,-0.05673799,0.0025846118 +27384000,airspeed,1.9820805,1.9354751 +27384000,mag,0.2,-0.08300001,0.42700002 +27384000,imu,-0.21053232,0.12713735,-6.1455913,-0.056604844,-0.055922516,0.002914947 +27384000,baro,491.24847 +27392000,baro,491.2015 +27392000,mag,0.20400001,-0.08500001,0.42800003 +27392000,airspeed,2.6782665,2.615299 +27392000,imu,-0.13533476,0.30356264,-6.218072,-0.04510611,-0.056262076,-0.0076762573 +27396000,mag,0.20400001,-0.08500001,0.42800003 +27396000,baro,491.18274 +27396000,airspeed,1.7226049,1.6821074 +27396000,imu,-0.1326805,0.2546171,-6.210524,-0.04712679,-0.057182066,-0.008588402 +27400000,imu,-0.18170139,0.20258145,-6.2073283,-0.0499714,-0.056224283,-0.007814508 +27400000,airspeed,-0.906974,-0.8856516 +27400000,baro,491.18274 +27400000,mag,0.20400001,-0.08500001,0.42800003 +27404000,airspeed,-1.907472,-1.8626127 +27404000,baro,491.3189 +27404000,mag,0.20400001,-0.08500001,0.42800003 +27404000,imu,-0.16754012,0.15366493,-6.334218,-0.05003326,-0.057727035,0.00049791794 +27408000,airspeed,-2.0676017,-2.018994 +27408000,imu,-0.16567464,0.17766917,-6.302278,-0.04648212,-0.05674313,-0.0026020824 +27412000,imu,-0.20683771,0.23307903,-6.268296,-0.04305255,-0.051774822,0.0024343128 +27412000,airspeed,-0.59029526,-0.5764179 +27412000,baro,491.17804 +27412000,mag,0.20400001,-0.08500001,0.42800003 +27416000,imu,-0.15166274,0.26778144,-6.3697186,-0.045231815,-0.056152795,0.005989889 +27416000,airspeed,3.254898,3.1783748 +27416000,baro,491.19214 +27416000,mag,0.20400001,-0.08500001,0.42800003 +27420000,airspeed,1.142963,1.1160877 +27420000,baro,491.25787 +27420000,imu,-0.14873087,0.24629961,-6.5020275,-0.04342287,-0.0525403,0.0015975223 +27420000,mag,0.20500001,-0.08500001,0.42700002 +27420000,landed,0.0 +27424000,baro,491.16867 +27424000,mag,0.20500001,-0.08500001,0.42700002 +27424000,imu,-0.19728912,0.21732658,-6.54007,-0.03741315,-0.049165577,0.002044979 +27424000,airspeed,2.489588,2.4310608 +27428000,imu,-0.24089956,0.16108136,-6.5725594,-0.038157683,-0.049089503,0.0011767126 +27428000,mag,0.20500001,-0.08600001,0.42700002 +27428000,baro,491.17334 +27428000,airspeed,-1.4993072,-1.4640601 +27432000,airspeed,0.7901587,0.7715826 +27432000,mag,0.20500001,-0.08600001,0.42700002 +27432000,baro,491.17334 +27432000,imu,-0.22457509,0.15457018,-6.6898446,-0.044613525,-0.044610016,-0.00046003095 +27436000,mag,0.20500001,-0.08600001,0.42700002 +27436000,imu,-0.22519095,0.15942828,-6.664729,-0.040073592,-0.038572628,-0.0027917747 +27436000,airspeed,-4.255111,-4.155091 +27436000,baro,491.1217 +27440000,airspeed,-2.6199648,-2.5583782 +27440000,baro,491.1311 +27440000,mag,0.20500001,-0.08600001,0.42700002 +27440000,imu,-0.22311172,0.21798283,-6.7432923,-0.03032989,-0.033669736,-0.0037211184 +27444000,imu,-0.15666828,0.30725932,-6.8825755,-0.02970801,-0.03347341,0.0018185879 +27444000,baro,491.1358 +27444000,mag,0.201,-0.08500001,0.42700002 +27444000,airspeed,3.64298,3.5573444 +27448000,imu,-0.14606482,0.25937033,-6.932179,-0.028473686,-0.032647125,0.0025166725 +27448000,airspeed,-1.1749794,-1.1473583 +27448000,mag,0.201,-0.08600001,0.42700002 +27448000,baro,491.14987 +27452000,mag,0.201,-0.08600001,0.42700002 +27452000,imu,-0.14287475,0.21303697,-6.9660387,-0.033619594,-0.025885368,-0.0022232456 +27452000,baro,491.14987 +27452000,airspeed,1.598551,1.5609726 +27456000,airspeed,1.337573,1.3061366 +27456000,baro,491.06067 +27456000,mag,0.201,-0.08600001,0.42700002 +27460000,airspeed,-2.490555,-2.432018 +27460000,baro,491.07944 +27460000,imu,-0.16729456,0.2846955,-7.046804,-0.026219793,-0.022744957,0.008469699 +27460000,mag,0.201,-0.08600001,0.42700002 +27468000,baro,491.14047 +27468000,airspeed,-0.94431335,-0.92211515 +27468000,mag,0.201,-0.08600001,0.42700002 +27468000,imu,-0.105321266,0.24236698,-7.2434154,-0.025337927,-0.023622049,-0.003654036 +27472000,airspeed,1.7473391,1.7062525 +27472000,imu,-0.17552897,0.19093102,-7.3027253,-0.02550262,-0.02018855,-0.0068034925 +27476000,mag,0.201,-0.08600001,0.42700002 +27476000,baro,491.14517 +27476000,imu,-0.23476185,0.19798161,-7.331144,-0.022204204,-0.015182624,-0.0021130887 +27476000,airspeed,3.9536355,3.8606942 +27480000,mag,0.201,-0.08600001,0.42700002 +27480000,baro,491.17334 +27480000,imu,-0.26413885,0.23413962,-7.38915,-0.01985337,-0.014395393,0.0025581992 +27484000,airspeed,-2.0230358,-1.9754753 +27484000,imu,-0.29662257,0.22595644,-7.431697,-0.016383903,-0.01362226,-0.001431235 +27488000,airspeed,-2.2927701,-2.2388716 +27488000,baro,491.14987 +27488000,mag,0.201,-0.08600001,0.42700002 +27488000,imu,-0.22432522,0.22535804,-7.647575,-0.019836977,-0.00982927,-0.0018458887 +27496000,mag,0.20300001,-0.08600001,0.42900002 +27496000,baro,491.16397 +27496000,imu,-0.18757004,0.29959923,-7.903831,-0.016774664,-0.009452514,-0.00057829736 +27496000,airspeed,-2.431057,-2.3739054 +27500000,mag,0.20300001,-0.08600001,0.42900002 +27500000,imu,-0.19589907,0.29834184,-8.042471,-0.014843564,0.001900865,0.003989947 +27500000,baro,491.08414 +27500000,airspeed,-3.5503328,-3.4668844 +27504000,imu,-0.17275362,0.33122194,-8.0415,-0.011225374,0.0025250134,0.0058060433 +27504000,airspeed,2.677569,2.614642 +27508000,mag,0.20300001,-0.08600001,0.42900002 +27508000,imu,-0.16992445,0.28896716,-8.037479,-0.009204419,0.00052850234,0.002626496 +27508000,baro,491.26724 +27508000,airspeed,2.6190875,2.5574996 +27512000,mag,0.20300001,-0.08600001,0.42900002 +27512000,imu,-0.15273416,0.23938425,-8.123356,-0.009137852,0.0020129953,0.0052429913 +27512000,airspeed,-1.7030545,-1.6630218 +27512000,baro,491.117 +27520000,airspeed,-3.0514548,-2.979711 +27520000,imu,-0.18087226,0.24248204,-8.493598,-0.003088026,0.007136014,-0.006562571 +27520000,mag,0.20300001,-0.08600001,0.42900002 +27520000,gps,491693.0,85456074.0,473977508.0,0.0,-0.02,0.22 +27520000,baro,491.2015 +27524000,mag,0.20300001,-0.08600001,0.42900002 +27524000,baro,491.1217 +27524000,airspeed,-4.051583,-3.9563441 +27524000,imu,-0.12278161,0.19213587,-8.539337,0.0038629146,0.013645069,-0.0070705316 +27528000,mag,0.20300001,-0.08600001,0.42900002 +27528000,airspeed,3.438942,3.3581042 +27528000,imu,-0.11342492,0.19311406,-8.635728,0.008263793,0.015326832,3.5956153e-05 +27528000,baro,491.117 +27536000,mag,0.20300001,-0.08600001,0.42900002 +27536000,imu,-0.19350101,0.31172806,-8.739137,0.005684482,0.017801039,-0.0033800034 +27536000,airspeed,3.567507,3.4836447 +27536000,baro,491.1264 +27540000,imu,-0.27678347,0.34305945,-8.841982,0.010380975,0.016858865,0.0019471551 +27540000,airspeed,1.2067131,1.1783466 +27540000,mag,0.20300001,-0.08600001,0.42900002 +27540000,baro,491.1264 +27544000,baro,491.09824 +27544000,imu,-0.16837382,0.29672003,-9.093369,0.0154515,0.015774237,-0.0010166359 +27544000,mag,0.20300001,-0.08600001,0.42900002 +27544000,airspeed,1.7335,1.692753 +27552000,mag,0.20300001,-0.08200001,0.425 +27552000,imu,-0.25049275,0.36682704,-9.1509,0.013927817,0.022513703,-0.0073561156 +27552000,baro,491.09824 +27552000,airspeed,-3.22992,-3.1539989 +27556000,imu,-0.284533,0.31596968,-9.23338,0.014420552,0.029220983,-0.004061801 +27556000,airspeed,-0.6026387,-0.58847326 +27556000,baro,491.09824 +27556000,mag,0.20300001,-0.08200001,0.425 +27560000,airspeed,-2.4531956,-2.39553 +27560000,mag,0.20300001,-0.08200001,0.425 +27560000,baro,491.10764 +27560000,imu,-0.23214896,0.227883,-9.345751,0.0146783525,0.030345466,-0.0028125837 +27564000,airspeed,2.3066182,2.252391 +27564000,imu,-0.11771993,0.19557807,-9.538148,0.015185747,0.03020117,0.0006137811 +27564000,mag,0.20300001,-0.08200001,0.425 +27564000,baro,491.16397 +27572000,airspeed,3.3856826,3.3060648 +27572000,baro,491.27194 +27572000,imu,-0.1824269,0.1699689,-9.759786,0.019564528,0.030083252,-0.0044052675 +27572000,mag,0.20300001,-0.08200001,0.425 +27576000,mag,0.202,-0.08200001,0.425 +27576000,baro,491.1358 +27576000,airspeed,1.3302847,1.2990122 +27576000,imu,-0.19659482,0.2357955,-9.788752,0.015503192,0.032771487,0.0019320383 +27584000,baro,490.98087 +27584000,airspeed,-0.8367539,-0.81709087 +27584000,imu,-0.19740728,0.2003961,-10.03481,0.024113659,0.039960913,-0.0021513507 +27584000,mag,0.202,-0.08200001,0.425 +27588000,baro,490.98087 +27588000,mag,0.202,-0.08200001,0.425 +27592000,imu,-0.108258665,0.20564565,-10.26741,0.017072646,0.050201543,-0.0026735603 +27592000,airspeed,-3.7988052,-3.7095542 +27596000,baro,491.17334 +27596000,airspeed,-3.068007,-2.9958768 +27596000,mag,0.202,-0.08200001,0.425 +27596000,imu,-0.17452501,0.18882285,-10.3520775,0.020691933,0.045850158,-0.0012473156 +27604000,airspeed,-3.3344226,-3.2560441 +27604000,baro,491.09354 +27604000,mag,0.20300001,-0.08500001,0.42900002 +27604000,imu,-0.24888857,0.26055017,-10.419654,0.025010822,0.04720467,0.0003511571 +27608000,baro,491.1123 +27608000,airspeed,4.937975,4.8218985 +27608000,mag,0.20300001,-0.08500001,0.42900002 +27608000,imu,-0.29333854,0.20671627,-10.57446,0.026008183,0.046857238,0.007847463 +27616000,imu,-0.17475341,0.21119681,-10.803492,0.018885003,0.045382205,-0.0049749333 +27616000,mag,0.20300001,-0.08500001,0.42900002 +27616000,airspeed,1.7629238,1.7214868 +27616000,baro,491.07477 +27620000,mag,0.202,-0.08500001,0.42900002 +27620000,airspeed,-0.7674745,-0.74943495 +27620000,imu,-0.2454675,0.17259832,-10.835905,0.022926709,0.045682877,-0.0073745227 +27620000,baro,491.07944 +27628000,airspeed,0.72093654,0.70399183 +27628000,baro,491.05597 +27628000,imu,-0.24956425,0.34780183,-10.95349,0.02934078,0.044561177,-0.0064731855 +27628000,mag,0.202,-0.08500001,0.42900002 +27632000,imu,-0.2478912,0.25699276,-10.982522,0.029609127,0.04412012,-0.0023699247 +27632000,airspeed,-2.002202,-1.9551489 +27632000,mag,0.202,-0.08500001,0.42900002 +27632000,baro,490.99963 +27636000,imu,-0.27164543,0.22049803,-11.067516,0.02969212,0.046558637,0.00073111197 +27636000,baro,490.9292 +27636000,airspeed,-2.3173373,-2.2628882 +27636000,mag,0.202,-0.08500001,0.42900002 +27640000,baro,491.0419 +27640000,mag,0.202,-0.08500001,0.42900002 +27640000,airspeed,-2.198183,-2.1465187 +27640000,imu,-0.2005203,0.27074185,-11.144996,0.035661712,0.049582686,0.006941394 +27648000,baro,491.0184 +27648000,airspeed,-4.0085864,-3.9143777 +27648000,mag,0.202,-0.084000014,0.42900002 +27648000,imu,-0.20125923,0.20507632,-11.183803,0.03781372,0.04874072,0.0012984361 +27652000,airspeed,1.672079,1.6327821 +27652000,mag,0.20400001,-0.08300001,0.42700002 +27652000,baro,491.0184 +27652000,imu,-0.18031636,0.20375971,-11.2217455,0.039678074,0.050214615,-0.0014522488 +27656000,imu,-0.1894321,0.24041688,-11.167538,0.03926215,0.053158335,-0.0028827952 +27656000,airspeed,-2.9469523,-2.8777144 +27656000,mag,0.20400001,-0.08300001,0.42700002 +27656000,baro,490.89633 +27660000,airspeed,-0.8302266,-0.81071365 +27660000,baro,491.0372 +27660000,mag,0.20400001,-0.08300001,0.42700002 +27660000,imu,-0.14433809,0.2177382,-11.194787,0.037100207,0.054560304,-0.003586543 +27664000,airspeed,-2.402249,-2.3458061 +27664000,baro,490.91513 +27664000,mag,0.20400001,-0.08300001,0.42700002 +27664000,imu,-0.21506281,0.23861396,-11.135822,0.03829857,0.05449505,-0.008284292 +27668000,baro,490.91513 +27668000,airspeed,-2.053814,-2.0055578 +27668000,mag,0.20300001,-0.08300001,0.42700002 +27668000,imu,-0.2650527,0.19458148,-11.024238,0.04238993,0.046726108,-0.004187487 +27672000,imu,-0.22720923,0.08930369,-11.039292,0.044354077,0.045324557,-7.229929e-05 +27672000,baro,490.98557 +27672000,mag,0.20300001,-0.08300001,0.42700002 +27672000,airspeed,-1.6183921,-1.5803598 +27676000,imu,-0.24508609,0.12566657,-11.113902,0.04759885,0.043481994,-0.0030058308 +27676000,baro,491.1264 +27676000,mag,0.20300001,-0.08200001,0.42700002 +27676000,airspeed,-2.0676613,-2.0190537 +27684000,imu,-0.2641661,0.17892757,-10.87656,0.04653742,0.040979672,0.0040694135 +27684000,baro,490.99493 +27684000,mag,0.20300001,-0.08200001,0.42800003 +27684000,airspeed,-3.5095866,-3.427109 +27688000,baro,490.99493 +27688000,mag,0.20300001,-0.08200001,0.42800003 +27688000,airspeed,-1.6189451,-1.5808989 +27688000,imu,-0.24457633,0.16267392,-10.763728,0.05176856,0.042140532,0.0019682904 +27692000,baro,491.1264 +27692000,airspeed,2.8856351,2.817798 +27692000,mag,0.20300001,-0.08200001,0.42800003 +27696000,airspeed,-5.519334,-5.3895917 +27696000,imu,-0.20823976,0.19776237,-10.757751,0.04679918,0.046250343,0.0084692845 +27696000,baro,491.09824 +27700000,mag,0.20300001,-0.08200001,0.42800003 +27704000,baro,490.96207 +27704000,mag,0.2,-0.08200001,0.42800003 +27704000,imu,-0.22489785,0.25625572,-10.680866,0.044407923,0.03354022,0.0011382665 +27704000,airspeed,-1.8373454,-1.7941695 +27708000,mag,0.2,-0.08100001,0.42800003 +27708000,baro,491.00903 +27708000,airspeed,-3.5771482,-3.4930792 +27708000,imu,-0.2271996,0.19062316,-10.47985,0.04715621,0.029472591,-0.0035797437 +27712000,baro,490.88696 +27712000,airspeed,1.3776973,1.3453287 +27712000,mag,0.19900002,-0.08100001,0.42800003 +27712000,imu,-0.22013198,0.15529408,-10.375724,0.04307166,0.025554985,0.0018901625 +27716000,imu,-0.21393253,0.188936,-10.392981,0.03718902,0.030894421,0.006265047 +27716000,airspeed,3.7725866,3.683898 +27720000,baro,491.01373 +27720000,imu,-0.23116942,0.23456371,-10.289481,0.038031828,0.03270727,0.0021486022 +27720000,airspeed,-2.7793024,-2.7139828 +27720000,gps,491573.0,85456074.0,473977508.0,0.0,-0.02,0.84999996 +27720000,mag,0.19900002,-0.08100001,0.42800003 +27728000,imu,-0.18973424,0.23852101,-10.196674,0.0320827,0.0273532,-0.0032447502 +27728000,airspeed,-2.5378058,-2.4781706 +27728000,baro,490.95737 +27728000,mag,0.19900002,-0.08100001,0.42800003 +27732000,airspeed,3.0717807,2.9995852 +27732000,baro,491.0231 +27732000,mag,0.19900002,-0.08100001,0.42800003 +27732000,imu,-0.21376975,0.15609965,-10.075462,0.031097483,0.025450824,0.0032440948 +27736000,airspeed,-0.8794059,-0.8587339 +27736000,mag,0.19900002,-0.08100001,0.42800003 +27736000,baro,491.09354 +27736000,imu,-0.17591,0.15832098,-9.946796,0.030504938,0.026235972,0.004049383 +27740000,airspeed,3.6789856,3.5924819 +27740000,imu,-0.21369928,0.22596556,-9.884298,0.024717713,0.021447362,0.0018347964 +27740000,baro,491.19684 +27740000,mag,0.19900002,-0.08100001,0.42800003 +27744000,baro,490.96207 +27744000,imu,-0.19259124,0.24259768,-9.867613,0.020741988,0.015051705,-0.0025335813 +27744000,airspeed,3.5299985,3.4470458 +27744000,mag,0.19900002,-0.08100001,0.42800003 +27748000,baro,490.7696 +27748000,imu,-0.13808937,0.2061933,-9.762378,0.023996318,0.010371855,-0.002777491 +27748000,airspeed,0.63130224,0.6164743 +27748000,mag,0.19900002,-0.08100001,0.42800003 +27752000,baro,490.83063 +27752000,airspeed,-3.5170596,-3.4344375 +27752000,imu,-0.18619424,0.1678397,-9.70521,0.018982848,0.010824144,-0.0007357212 +27752000,mag,0.19900002,-0.08100001,0.42800003 +27756000,airspeed,-3.2095199,-3.1341054 +27756000,mag,0.19900002,-0.08100001,0.42900002 +27756000,imu,-0.22815636,0.1698936,-9.703182,0.019062048,0.01089339,-0.0030280666 +27756000,baro,490.92453 +27760000,mag,0.19900002,-0.08100001,0.42900002 +27760000,imu,-0.18941142,0.15818506,-9.614687,0.024644827,0.0044157626,0.0011136972 +27760000,baro,490.9433 +27760000,airspeed,-0.5636768,-0.5504313 +27768000,mag,0.19900002,-0.08100001,0.42900002 +27768000,imu,-0.1083334,0.17182264,-9.503612,0.01822612,0.008646338,0.0008165355 +27768000,airspeed,2.2183278,2.166194 +27768000,baro,490.99493 +27772000,imu,-0.13580258,0.25850993,-9.426642,0.017002499,0.0014054377,-0.0001465982 +27772000,mag,0.19900002,-0.08100001,0.42900002 +27772000,airspeed,-1.1672415,-1.1398185 +27772000,baro,490.8635 +27776000,baro,490.91043 +27776000,mag,0.19900002,-0.08100001,0.42900002 +27776000,imu,-0.15791228,0.26646122,-9.405298,0.02497142,-0.0037542866,5.0571234e-05 +27776000,airspeed,-0.692941,-0.6766592 +27780000,imu,-0.13093592,0.2400854,-9.375126,0.025071569,-0.003655669,-0.004833799 +27780000,airspeed,-3.8415194,-3.7512565 +27784000,mag,0.19900002,-0.08100001,0.42900002 +27784000,imu,-0.16507904,0.23142177,-9.330178,0.023314372,-0.0018518768,-0.0054275775 +27784000,baro,490.89633 +27784000,airspeed,-1.7877214,-1.7457175 +27788000,baro,490.89633 +27788000,mag,0.19900002,-0.08100001,0.42900002 +27788000,imu,-0.17999268,0.19501749,-9.365305,0.018713778,-0.008196912,0.0005227831 +27788000,airspeed,-0.45992714,-0.44912082 +27792000,mag,0.19900002,-0.08100001,0.42900002 +27792000,imu,-0.20593081,0.23070142,-9.373533,0.014921402,-0.009238666,-0.00071418536 +27792000,baro,490.92453 +27792000,airspeed,1.2396234,1.2104956 +27800000,airspeed,3.4898927,3.4078827 +27800000,mag,0.19900002,-0.08100001,0.42900002 +27800000,baro,490.9527 +27800000,imu,-0.18096791,0.1504404,-9.262148,0.015003987,-0.0077946577,0.0015324785 +27808000,airspeed,-0.44026393,-0.4299215 +27808000,baro,490.81653 +27808000,mag,0.20400001,-0.08300001,0.42700002 +27808000,imu,-0.1886762,0.26174632,-9.233655,0.013904708,-0.008021951,-0.006221769 +27812000,airspeed,-2.6772377,-2.6143105 +27812000,baro,491.0419 +27812000,mag,0.20400001,-0.08300001,0.42700002 +27812000,imu,-0.2472189,0.27698907,-9.269053,0.010149627,-0.008169093,-0.0009921166 +27816000,baro,490.8494 +27816000,airspeed,-1.8562175,-1.812609 +27816000,imu,-0.20476504,0.27615276,-9.3042755,0.0045436756,-0.008194526,-0.0016302253 +27816000,mag,0.20400001,-0.08300001,0.42700002 +27820000,imu,-0.13477284,0.25474012,-9.275566,0.006160018,-0.013998731,-0.0038394204 +27820000,baro,490.7508 +27820000,mag,0.20400001,-0.08300001,0.42700002 +27820000,airspeed,-1.644861,-1.6062272 +27828000,baro,490.8588 +27828000,mag,0.20400001,-0.08300001,0.42700002 +27828000,airspeed,-1.2001705,-1.171974 +27828000,imu,-0.19638018,0.26708958,-9.317977,0.001376445,-0.012874961,0.006065686 +27836000,mag,0.20400001,-0.08300001,0.42700002 +27836000,imu,-0.21836542,0.22103088,-9.476984,0.0068997387,-0.0151987765,-0.004448163 +27836000,airspeed,2.348685,2.2934844 +27836000,baro,491.01373 +27840000,mag,0.20400001,-0.08300001,0.42700002 +27840000,baro,490.83063 +27844000,airspeed,0.6932423,0.67695665 +27844000,imu,-0.31260014,0.25378513,-9.483856,0.0017351212,-0.012325272,0.0044742855 +27848000,mag,0.20400001,-0.08300001,0.42700002 +27848000,imu,-0.27003434,0.24333021,-9.510153,0.0042009274,-0.011644808,0.003262226 +27848000,airspeed,2.8122666,2.7461743 +27848000,baro,490.98557 +27852000,imu,-0.21299861,0.20394635,-9.582807,0.0018140774,-0.009093345,-0.0016614168 +27852000,mag,0.20400001,-0.08300001,0.42700002 +27852000,baro,490.98087 +27852000,airspeed,0.9197779,0.89816195 +27856000,airspeed,2.3279917,2.2732892 +27856000,baro,490.91983 +27856000,mag,0.20400001,-0.08300001,0.42700002 +27856000,imu,-0.17492568,0.25711903,-9.7116585,0.005263681,-0.0029768958,0.0026511126 +27860000,airspeed,-1.9223663,-1.8771996 +27860000,imu,-0.20420402,0.24464074,-9.718257,-0.0005411041,-0.0061904117,0.00746521 +27860000,mag,0.2,-0.08100001,0.43 +27860000,baro,490.87756 +27864000,imu,-0.21016656,0.2938664,-9.75742,-0.0026830116,-0.008884888,0.006484885 +27864000,airspeed,-2.8333266,-2.7667568 +27868000,imu,-0.18322118,0.29197317,-9.746462,0.0025722769,-0.006407366,-0.000829847 +27868000,mag,0.2,-0.08100001,0.43 +27868000,baro,490.8541 +27868000,airspeed,2.779653,2.7143474 +27872000,baro,490.89166 +27872000,mag,0.2,-0.08100001,0.43 +27872000,imu,-0.18064293,0.21392433,-9.709748,0.0037921576,-0.00483445,-0.0019089669 +27872000,airspeed,-1.7545648,-1.7133391 +27876000,airspeed,2.418435,2.3616111 +27876000,mag,0.2,-0.08100001,0.43 +27876000,baro,490.89166 +27876000,imu,-0.17674543,0.2701796,-9.857744,0.0045694197,-0.005817088,0.0019383011 +27880000,airspeed,-2.940249,-2.8711545 +27880000,mag,0.2,-0.08100001,0.43 +27880000,baro,490.9433 +27880000,imu,-0.17379576,0.28332198,-9.987324,-0.0043627014,-0.005486678,0.0020761106 +27884000,baro,490.9433 +27884000,mag,0.2,-0.08100001,0.43 +27884000,airspeed,4.1170063,4.020259 +27884000,imu,-0.22762552,0.35907054,-9.934644,-0.005092709,-0.0008757258,0.004286997 +27888000,imu,-0.20413384,0.34346068,-9.921735,0.0016527929,-0.0069547077,0.0030533166 +27888000,mag,0.2,-0.08100001,0.43 +27888000,airspeed,2.2283466,2.1759846 +27888000,baro,490.91983 +27892000,mag,0.2,-0.08100001,0.43 +27892000,airspeed,-1.7458309,-1.7048036 +27892000,baro,490.95737 +27892000,imu,-0.20418005,0.25454924,-9.94383,0.0026173324,-0.012992818,-0.0028521009 +27896000,baro,490.95737 +27896000,airspeed,0.52661675,0.51424116 +27896000,imu,-0.21570534,0.251854,-9.934459,0.00031201832,-0.010289436,-0.003468554 +27896000,mag,0.2,-0.08100001,0.43 +27900000,baro,490.8353 +27900000,airspeed,1.211041,1.1825897 +27900000,imu,-0.16810815,0.27365994,-9.942739,-0.0038456647,-0.013103133,0.0024474014 +27900000,mag,0.2,-0.08100001,0.43 +27904000,baro,490.82593 +27904000,mag,0.2,-0.08100001,0.43 +27904000,airspeed,3.7970414,3.7078393 +27904000,imu,-0.1802237,0.28048187,-9.9719,-0.002285115,-0.008655772,0.0023734253 +27908000,mag,0.2,-0.08100001,0.43 +27908000,airspeed,0.89665323,0.87558407 +27908000,baro,490.91043 +27908000,imu,-0.22578564,0.27002054,-9.998722,-0.0011543904,-0.01075608,0.0006447475 +27912000,imu,-0.21870717,0.29276037,-9.981734,-0.004340332,-0.016576998,0.0043077767 +27912000,airspeed,2.3504992,2.2952843 +27912000,baro,490.79306 +27912000,mag,0.2,-0.08100001,0.43 +27916000,baro,490.79306 +27916000,airspeed,-3.718159,-3.6308162 +27916000,mag,0.2,-0.08300001,0.42800003 +27920000,gps,491434.0,85456073.0,473977508.0,0.01,-0.02,0.65999997 +27920000,imu,-0.20096378,0.2420978,-10.11522,-0.007894186,-0.011347198,0.006887308 +27924000,baro,490.91513 +27924000,airspeed,0.91237587,0.89093685 +27924000,imu,-0.1836951,0.14956565,-9.998737,-0.007997516,-0.013336643,0.0065572965 +27924000,mag,0.2,-0.08300001,0.42800003 +27928000,imu,-0.1862572,0.17382853,-10.036143,-0.0062004593,-0.0073061637,-0.0014699827 +27928000,mag,0.2,-0.08300001,0.42800003 +27928000,airspeed,1.5441694,1.5078887 +27928000,baro,490.86816 +27932000,baro,490.80246 +27932000,airspeed,2.704309,2.6407812 +27932000,mag,0.2,-0.08300001,0.42800003 +27932000,imu,-0.22892568,0.2994488,-10.085078,-0.0075732525,-0.008114863,-3.3051663e-05 +27936000,mag,0.201,-0.08300001,0.42800003 +27936000,baro,490.80246 +27936000,airspeed,1.7013901,1.6614223 +27936000,imu,-0.18538852,0.24204332,-10.078613,-0.010959069,-0.0149986725,0.0030927926 +27940000,baro,490.98087 +27940000,mag,0.201,-0.08300001,0.42800003 +27940000,imu,-0.16198154,0.20012991,-10.059166,-0.015149125,-0.01119007,0.0031076607 +27940000,airspeed,-1.8964701,-1.8518996 +27944000,imu,-0.12334847,0.29396465,-10.039418,-0.012131812,-0.0077841813,-0.00013840271 +27944000,baro,490.63812 +27944000,mag,0.201,-0.08300001,0.42800003 +27944000,airspeed,0.859691,0.8395039 +27948000,imu,-0.14954531,0.26728708,-10.056097,-0.0137938,-0.011943361,-0.0009261385 +27948000,airspeed,-2.6247523,-2.5631182 +27948000,baro,490.63812 +27948000,mag,0.201,-0.08300001,0.42800003 +27952000,baro,490.89166 +27952000,airspeed,-2.75616,-2.691399 +27952000,imu,-0.19358991,0.22204144,-10.062761,-0.017769195,-0.010343089,-0.0030799792 +27952000,mag,0.201,-0.08300001,0.42800003 +27956000,imu,-0.118653364,0.248337,-10.093758,-0.015449987,-0.008720591,-0.0025673416 +27956000,mag,0.201,-0.08300001,0.42800003 +27956000,baro,490.78836 +27960000,mag,0.201,-0.08300001,0.42800003 +27960000,baro,490.92453 +27960000,airspeed,2.899917,2.8317726 +27960000,imu,-0.16406327,0.17726047,-10.054462,-0.018516406,-0.013392651,0.001988781 +27964000,imu,-0.28017518,0.13262054,-10.022985,-0.022117242,-0.012329665,-0.0046132803 +27964000,baro,490.77426 +27964000,airspeed,-2.424186,-2.3672416 +27964000,mag,0.19700001,-0.07800001,0.43 +27968000,airspeed,1.2600588,1.2304599 +27968000,imu,-0.24875993,0.19319953,-10.045615,-0.018979385,-0.012466881,-0.0064674746 +27972000,mag,0.19700001,-0.07800001,0.43 +27972000,baro,490.79306 +27972000,airspeed,-2.309229,-2.254982 +27972000,imu,-0.18572126,0.19542362,-9.991298,-0.01671443,-0.008620491,-0.0030178083 +27976000,baro,490.77426 +27976000,airspeed,2.2357795,2.1832607 +27976000,imu,-0.20394313,0.2181094,-9.9557495,-0.01729157,-0.0070690913,-0.00013926189 +27976000,mag,0.19700001,-0.07800001,0.43 +27980000,baro,490.77426 +27980000,airspeed,-3.288353,-3.211109 +27980000,imu,-0.1788188,0.2313294,-10.014156,-0.016487727,-0.015129213,-0.000807082 +27980000,mag,0.19700001,-0.07800001,0.43 +27984000,baro,490.69916 +27984000,imu,-0.15203317,0.19257466,-10.011605,-0.021384513,-0.012166306,-0.0049018525 +27984000,mag,0.19700001,-0.07800001,0.43 +27984000,airspeed,-1.983004,-1.9364312 +27988000,mag,0.19700001,-0.07800001,0.43 +27988000,airspeed,-3.5065656,-3.4241822 +27988000,imu,-0.14461705,0.20459309,-9.958995,-0.016432831,-0.0059653,-0.0020916257 +27988000,baro,490.8353 +27992000,mag,0.19700001,-0.07800001,0.43 +27992000,airspeed,4.0427384,3.947758 +27992000,imu,-0.119871125,0.21438347,-9.9534025,-0.009096596,-0.010463647,0.0016728396 +27992000,baro,490.8353 +27996000,mag,0.19700001,-0.07800001,0.43 +27996000,baro,490.59586 +28000000,imu,-0.21832715,0.20293318,-9.918158,-0.029081438,-0.011987242,0.0011186687 +28000000,airspeed,3.2120779,3.1366212 +28004000,airspeed,-1.6882285,-1.6485693 +28004000,imu,-0.21349017,0.1955911,-9.893366,-0.02504636,-0.00835229,-0.00078595825 +28004000,mag,0.19700001,-0.07800001,0.43 +28004000,baro,490.79306 +28008000,imu,-0.22778048,0.23146614,-9.865941,-0.017977724,-0.0049285237,-0.002644498 +28008000,airspeed,3.6617138,3.5757146 +28008000,baro,490.69916 +28008000,mag,0.19700001,-0.07800001,0.43 +28016000,airspeed,-1.9721742,-1.925845 +28016000,baro,490.78836 +28016000,imu,-0.24545968,0.1894278,-9.8648,-0.011045932,-0.0080768,0.0011480554 +28016000,mag,0.19700001,-0.07800001,0.43 +28020000,imu,-0.20326273,0.25010905,-9.893969,-0.013686256,-0.008655603,-0.003720111 +28020000,airspeed,1.9217193,1.8766003 +28020000,baro,490.5677 +28020000,mag,0.19900002,-0.08000001,0.42700002 +28024000,imu,-0.24942213,0.21989146,-9.845227,-0.014985015,-0.013438488,-0.0028653878 +28024000,airspeed,-1.8715068,-1.8275481 +28024000,baro,490.73672 +28024000,mag,0.19900002,-0.08000001,0.42700002 +28028000,airspeed,1.9067687,1.8619909 +28028000,imu,-0.26989016,0.19900315,-9.840866,-0.01590543,-0.013261866,-0.0037744988 +28028000,baro,490.6569 +28028000,mag,0.19900002,-0.08000001,0.42700002 +28032000,baro,490.71323 +28032000,mag,0.19900002,-0.08000001,0.42700002 +28032000,imu,-0.25684035,0.20086674,-9.910137,-0.008730515,-0.0026483403,-0.00043652806 +28032000,airspeed,-2.8078895,-2.7419403 +28036000,baro,490.7508 +28036000,mag,0.19900002,-0.08000001,0.42700002 +28036000,imu,-0.27309364,0.15008794,-9.876284,-0.0011676113,0.0012515975,0.0069742817 +28036000,airspeed,-2.7364106,-2.672134 +28040000,baro,490.73203 +28040000,mag,0.19900002,-0.08000001,0.42700002 +28040000,airspeed,4.0300803,3.9354205 +28044000,imu,-0.21529393,0.22523776,-9.864186,-0.004981265,-0.0117944665,0.0016180428 +28044000,baro,490.8447 +28044000,mag,0.19900002,-0.08000001,0.42700002 +28044000,airspeed,-2.747938,-2.6833758 +28048000,mag,0.19900002,-0.08000001,0.42700002 +28048000,airspeed,1.5287201,1.4928126 +28048000,imu,-0.2345655,0.24253955,-9.812817,-0.0046155737,0.0016373934,0.0072279256 +28048000,baro,490.73672 +28052000,mag,0.19900002,-0.08000001,0.42700002 +28052000,imu,-0.21298341,0.21679586,-9.795434,-0.0058231615,0.008161922,-0.0006182517 +28052000,airspeed,2.074675,2.025944 +28052000,baro,490.73672 +28056000,mag,0.19900002,-0.08000001,0.42700002 +28056000,baro,490.8541 +28060000,imu,-0.14739701,0.25525117,-9.766475,0.0022616144,-0.0042936993,0.00039390844 +28060000,airspeed,1.7691972,1.727637 +28064000,mag,0.19900002,-0.08000001,0.42700002 +28064000,imu,-0.18533964,0.24861795,-9.774397,-5.3568725e-05,-0.0015155768,-0.0029855545 +28064000,baro,490.8447 +28064000,airspeed,-4.359118,-4.256701 +28068000,imu,-0.19715264,0.1437762,-9.803968,0.0023555858,-0.0018130564,-0.00015691438 +28068000,mag,0.20300001,-0.08000001,0.42900002 +28068000,baro,490.82123 +28068000,airspeed,1.0684854,1.0433826 +28076000,mag,0.20300001,-0.08000001,0.42900002 +28076000,airspeed,-1.8854392,-1.8411847 +28076000,baro,490.44562 +28076000,imu,-0.23689099,0.23915893,-9.797952,0.005888268,-0.00417864,-0.0028734987 +28080000,airspeed,-1.920908,-1.8757833 +28080000,baro,490.77896 +28080000,imu,-0.23288547,0.225166,-9.8168545,0.0051854425,-0.003372997,-0.0017421652 +28080000,mag,0.20300001,-0.08000001,0.42900002 +28084000,airspeed,0.9866581,0.96348387 +28084000,mag,0.20300001,-0.08000001,0.42900002 +28084000,imu,-0.18540338,0.21577476,-9.846075,0.0044556777,-0.011544699,-0.005702786 +28084000,baro,490.71323 +28088000,imu,-0.14201769,0.16968544,-9.820175,0.0011922844,-0.012497031,-0.003858516 +28088000,baro,490.7649 +28088000,airspeed,-0.39116767,-0.38197893 +28088000,mag,0.20300001,-0.08000001,0.42900002 +28092000,mag,0.20300001,-0.08000001,0.42900002 +28092000,baro,490.7649 +28092000,airspeed,-1.9861307,-1.9394757 +28092000,imu,-0.17687652,0.19647229,-9.812602,0.000713428,-0.0034382406,-0.00141738 +28096000,airspeed,1.0423241,1.0178466 +28096000,mag,0.20300001,-0.08000001,0.42900002 +28096000,baro,490.64752 +28096000,imu,-0.17599252,0.21918173,-9.811507,0.0071840715,-0.007096625,-0.00095583184 +28100000,imu,-0.124568895,0.22710815,-9.805708,0.004619634,-0.015202192,0.0016885606 +28100000,mag,0.20300001,-0.08000001,0.42900002 +28100000,baro,490.64752 +28100000,airspeed,3.497339,3.415209 +28104000,mag,0.20300001,-0.08000001,0.42900002 +28104000,baro,490.70856 +28108000,mag,0.20300001,-0.08000001,0.42900002 +28108000,imu,-0.2526664,0.20750615,-9.853031,0.0069890046,-0.013407229,0.0005062511 +28108000,baro,490.74142 +28108000,airspeed,2.8170369,2.7508667 +28116000,mag,0.20300001,-0.08000001,0.42900002 +28116000,baro,490.59116 +28116000,imu,-0.23374508,0.13591456,-9.7993145,0.008672185,-0.015320735,-0.0013139592 +28116000,airspeed,2.2048965,2.1531243 +28120000,mag,0.2,-0.084000014,0.42900002 +28120000,baro,490.41275 +28120000,imu,-0.25164077,0.18244573,-9.893679,0.007145678,-0.016572647,-0.0033918433 +28120000,airspeed,2.152761,2.102235 +28120000,gps,491283.0,85456072.0,473977508.0,-0.01,-0.02,0.71999997 +28128000,imu,-0.31209975,0.15853806,-9.803576,0.0121037355,-0.011043065,0.0039457926 +28128000,mag,0.2,-0.084000014,0.42900002 +28128000,airspeed,-1.6407113,-1.6021882 +28128000,baro,490.5724 +28132000,baro,490.5724 +28132000,imu,-0.25669876,0.10931143,-9.78769,0.016937304,-0.016575031,0.005938893 +28132000,mag,0.2,-0.084000014,0.42900002 +28132000,airspeed,-2.3708851,-2.315218 +28136000,airspeed,2.078333,2.0295317 +28136000,baro,490.59586 +28136000,imu,-0.20625101,0.20045203,-9.781189,0.014344171,-0.017122567,0.0046569463 +28136000,mag,0.2,-0.08300001,0.42900002 +28140000,airspeed,-1.1545342,-1.1274269 +28140000,mag,0.2,-0.08300001,0.42900002 +28140000,baro,490.563 +28140000,imu,-0.20324752,0.28960398,-9.840668,0.013922241,-0.017580913,0.00084703794 +28144000,mag,0.2,-0.08300001,0.42900002 +28144000,imu,-0.2186344,0.29246095,-9.929345,0.017146347,-0.017091135,-0.0047863745 +28144000,baro,490.68506 +28144000,airspeed,2.3503747,2.2951727 +28148000,baro,490.68506 +28148000,imu,-0.18678571,0.2644042,-9.901027,0.017069703,-0.014687266,-0.004892736 +28148000,airspeed,0.38998306,0.38082376 +28148000,mag,0.2,-0.08300001,0.42900002 +28152000,mag,0.2,-0.08300001,0.42900002 +28152000,imu,-0.11097947,0.18160066,-9.866219,0.0145090185,-0.011790217,-0.0011008077 +28152000,airspeed,-2.789218,-2.7237098 +28152000,baro,490.68506 +28156000,baro,490.68506 +28156000,mag,0.2,-0.08300001,0.42900002 +28156000,airspeed,1.1755391,1.1479301 +28156000,imu,-0.14736608,0.20558572,-9.907277,0.008294094,-0.010531357,-0.0003401679 +28160000,airspeed,1.7952484,1.7530832 +28160000,mag,0.2,-0.08300001,0.42900002 +28160000,imu,-0.2502183,0.18445595,-9.83649,0.0069391266,-0.0082823085,-0.0017181817 +28160000,baro,490.69916 +28168000,imu,-0.1553273,0.15794466,-9.850723,0.009916816,-0.014452484,-0.0038212282 +28168000,mag,0.2,-0.08300001,0.42900002 +28168000,baro,490.70386 +28168000,airspeed,-2.414053,-2.3573527 +28176000,mag,0.20300001,-0.08200001,0.42900002 +28176000,baro,490.671 +28176000,imu,-0.21567573,0.24498123,-9.868466,0.011728315,-0.012940124,0.0046715164 +28176000,airspeed,1.7490606,1.7079828 +28180000,imu,-0.17842937,0.20263238,-9.862829,0.0074652666,-0.011336055,0.0063156583 +28180000,baro,490.5724 +28180000,airspeed,2.332083,2.2773259 +28180000,mag,0.20300001,-0.08200001,0.42900002 +28184000,imu,-0.22417624,0.198737,-9.805253,0.0039122812,-0.014971233,0.005814535 +28184000,baro,490.5818 +28184000,airspeed,3.1455946,3.071734 +28184000,mag,0.20300001,-0.08200001,0.42900002 +28188000,imu,-0.21099688,0.19475845,-9.837355,0.005616438,-0.01639026,-0.004628924 +28188000,airspeed,2.5710003,2.5106316 +28188000,mag,0.20300001,-0.08200001,0.42900002 +28188000,baro,490.5818 +28192000,imu,-0.11159588,0.23450695,-9.881116,0.0051083094,-0.015465177,-0.006108346 +28192000,mag,0.20300001,-0.08200001,0.42900002 +28192000,baro,490.68506 +28192000,airspeed,2.34572,2.290627 +28196000,imu,-0.19061908,0.25808182,-9.894194,0.0020604688,-0.014282733,-0.003510732 +28196000,airspeed,-3.811195,-3.7216828 +28200000,baro,490.70386 +28200000,imu,-0.24846862,0.1908398,-9.838384,0.0017306455,-0.01329869,-0.00087323086 +28200000,airspeed,2.6778564,2.6149592 +28200000,mag,0.20300001,-0.08200001,0.42900002 +28204000,mag,0.20300001,-0.08200001,0.42900002 +28204000,baro,490.70386 +28208000,airspeed,1.3398781,1.3084072 +28208000,imu,-0.2327106,0.25107038,-9.883257,0.005850133,-0.024235582,-0.0007884833 +28212000,airspeed,-2.702847,-2.6393712 +28212000,mag,0.20300001,-0.08200001,0.42900002 +28212000,imu,-0.21469894,0.3216527,-9.853001,0.006925317,-0.021159591,0.006141482 +28212000,baro,490.64752 +28216000,imu,-0.2664584,0.28237778,-9.855415,0.015015035,-0.01527054,0.0012385069 +28216000,baro,490.52075 +28216000,airspeed,-4.666051,-4.5565057 +28216000,mag,0.20300001,-0.08200001,0.42900002 +28224000,baro,490.72733 +28224000,mag,0.20300001,-0.07900001,0.42700002 +28224000,airspeed,-2.9419181,-2.872814 +28224000,imu,-0.16392757,0.18648575,-10.042527,0.013244682,-0.013475902,-0.0026557795 +28228000,airspeed,2.2139685,2.1619778 +28228000,imu,-0.21574701,0.18611942,-9.943518,0.01807018,-0.020460427,-0.0015881284 +28228000,baro,490.61935 +28228000,mag,0.20300001,-0.07900001,0.42700002 +28232000,airspeed,2.3579266,2.3025563 +28232000,mag,0.20300001,-0.07900001,0.42700002 +28232000,baro,490.60995 +28232000,imu,-0.24884246,0.2504358,-9.8405485,0.01705899,-0.016299924,0.0004481077 +28236000,imu,-0.2575893,0.2956388,-9.915302,0.008874424,-0.011517272,-0.0058645057 +28236000,baro,490.55832 +28236000,airspeed,0.69397575,0.67768145 +28236000,mag,0.20300001,-0.07900001,0.42700002 +28240000,imu,-0.23333895,0.28931007,-9.908157,0.0077622337,-0.010344943,-0.0067408294 +28240000,baro,490.55832 +28240000,airspeed,-2.7828856,-2.7175446 +28240000,mag,0.20300001,-0.07900001,0.42700002 +28244000,baro,490.60526 +28244000,airspeed,2.5403733,2.4807186 +28244000,imu,-0.20531853,0.25025466,-9.846886,0.011637051,-0.010364459,-0.0006909882 +28244000,mag,0.20300001,-0.07900001,0.42700002 +28248000,airspeed,-3.0356438,-2.9643457 +28248000,mag,0.20300001,-0.07900001,0.42700002 +28248000,imu,-0.24821842,0.17684232,-9.898824,0.008415825,-0.0138349375,0.0042437986 +28248000,baro,490.68506 +28252000,baro,490.51135 +28252000,mag,0.20300001,-0.07900001,0.42700002 +28252000,imu,-0.27236262,0.12161375,-9.9124775,0.011057827,-0.012013434,0.0027120232 +28252000,airspeed,-2.281737,-2.2281687 +28256000,imu,-0.25214177,0.13827686,-9.969293,0.008829412,-0.003626168,0.004319594 +28256000,mag,0.20300001,-0.07900001,0.42700002 +28256000,airspeed,2.8809996,2.8133428 +28256000,baro,490.62872 +28260000,baro,490.68506 +28260000,airspeed,-2.2739813,-2.2205718 +28260000,imu,-0.25840417,0.21098278,-9.988397,0.0047274,-0.0015341941,0.0050517097 +28260000,mag,0.20300001,-0.07900001,0.42700002 +28264000,baro,490.73203 +28264000,imu,-0.26437414,0.27645794,-9.991005,0.007335809,-0.00089320046,0.0003822662 +28264000,mag,0.20300001,-0.07900001,0.42700002 +28264000,airspeed,-2.016833,-1.9694575 +28268000,airspeed,2.006351,1.9592291 +28268000,imu,-0.25682688,0.2679668,-9.954243,0.005060645,-0.007816145,-0.005734049 +28268000,mag,0.20300001,-0.07900001,0.42700002 +28268000,baro,490.6663 +28272000,airspeed,-3.6661205,-3.5800786 +28272000,mag,0.20300001,-0.07900001,0.42700002 +28272000,imu,-0.23392123,0.2365626,-9.905887,0.002158676,-0.014087916,-0.0026486197 +28272000,baro,490.37988 +28276000,imu,-0.27738094,0.1793254,-9.910506,0.008188919,-0.011459626,0.0016224545 +28276000,baro,490.6663 +28276000,airspeed,-2.9457946,-2.8766086 +28276000,mag,0.201,-0.07900001,0.425 +28280000,airspeed,-3.0010417,-2.9305828 +28284000,airspeed,-1.5381119,-1.502 +28284000,imu,-0.19152065,0.2082473,-9.923885,-0.0042788107,-0.013782791,0.002671569 +28284000,mag,0.201,-0.07900001,0.425 +28284000,baro,490.53012 +28288000,airspeed,1.4777052,1.4430137 +28288000,mag,0.201,-0.07900001,0.425 +28288000,imu,-0.21698797,0.19591591,-9.944553,-0.0017388253,-0.008469677,0.0010293376 +28288000,baro,490.50195 +28292000,imu,-0.17425701,0.17308223,-9.909222,0.0045245113,-0.009006888,0.0004931209 +28292000,mag,0.201,-0.07900001,0.425 +28292000,airspeed,-1.7581649,-1.7168778 +28292000,baro,490.60526 +28296000,imu,-0.19355041,0.23959967,-9.910965,0.0037209273,-0.017283704,0.00047286673 +28296000,mag,0.201,-0.07900001,0.425 +28296000,airspeed,2.5657847,2.5055425 +28296000,baro,490.53952 +28300000,mag,0.201,-0.07900001,0.425 +28300000,imu,-0.18575564,0.31054503,-9.935204,-0.0047069993,-0.017081669,0.0043373364 +28300000,airspeed,-2.8846414,-2.8168876 +28300000,baro,490.68976 +28304000,mag,0.201,-0.07900001,0.425 +28304000,baro,490.63342 +28304000,airspeed,0.5978166,0.5837772 +28304000,imu,-0.17520122,0.30091935,-9.863047,-0.0065385518,-0.009198758,0.008169669 +28308000,airspeed,0.6235078,0.6088629 +28308000,baro,490.68976 +28308000,imu,-0.22259249,0.2313292,-9.820522,-0.0034649519,-0.007815782,0.0057690446 +28308000,mag,0.201,-0.07900001,0.425 +28312000,mag,0.201,-0.07900001,0.425 +28312000,baro,490.53012 +28316000,baro,490.63812 +28316000,mag,0.201,-0.07900001,0.425 +28316000,imu,-0.19299218,0.27734518,-9.8631735,-0.002697201,-0.01577914,0.0063833 +28316000,airspeed,1.1578711,1.1306784 +28320000,mag,0.201,-0.07900001,0.425 +28320000,baro,490.53482 +28320000,imu,-0.22267184,0.20762393,-9.959558,-0.003517352,-0.016913539,-0.0038980776 +28320000,gps,491127.0,85456071.0,473977509.0,0.01,0.0,0.76 +28320000,airspeed,3.4147184,3.3345444 +28324000,imu,-0.17905062,0.1803919,-9.883757,0.002718758,-0.01712015,-0.0057373163 +28328000,baro,490.42685 +28328000,mag,0.19900002,-0.07900001,0.42700002 +28328000,imu,-0.16561496,0.23129174,-9.793186,-0.00053602824,-0.016272727,0.0049404083 +28328000,airspeed,-2.1672082,-2.116338 +28332000,mag,0.19900002,-0.07900001,0.42700002 +28332000,baro,490.42685 +28336000,airspeed,3.0979066,3.0251708 +28336000,imu,-0.23979841,0.21700408,-9.929265,-0.0008510366,-0.016514312,-0.002674898 +28340000,airspeed,2.4744103,2.4163177 +28340000,mag,0.19900002,-0.07900001,0.42700002 +28340000,imu,-0.20374027,0.25656655,-9.835059,-0.002649228,-0.018992465,-0.00030531536 +28340000,baro,490.50665 +28344000,airspeed,3.2406223,3.1645443 +28344000,imu,-0.19909035,0.27303058,-9.8017845,-0.0046349782,-0.023867263,0.002965804 +28348000,imu,-0.22521003,0.2393292,-9.897219,-0.001797503,-0.02294907,0.0011266774 +28348000,airspeed,-1.1408328,-1.1140443 +28348000,baro,490.5771 +28348000,mag,0.19900002,-0.07900001,0.42700002 +28352000,imu,-0.24623168,0.2990509,-9.953422,-0.005211297,-0.02530028,-0.0027432512 +28352000,baro,490.64752 +28352000,mag,0.19900002,-0.07900001,0.42700002 +28352000,airspeed,-3.128227,-3.0547583 +28356000,imu,-0.2526855,0.23852381,-9.894216,-0.0037256023,-0.029102035,-0.0028094738 +28356000,mag,0.19900002,-0.07900001,0.42700002 +28356000,airspeed,0.7497155,0.7321172 +28356000,baro,490.43625 +28360000,baro,490.43625 +28360000,mag,0.19900002,-0.07900001,0.42700002 +28360000,airspeed,2.2875438,2.2338474 +28360000,imu,-0.25928843,0.17555605,-9.880302,-0.0015489375,-0.027526882,0.004155355 +28364000,airspeed,-1.0177596,-0.9938563 +28364000,imu,-0.27440757,0.25467676,-9.931643,-0.0040770355,-0.024966933,0.006507513 +28364000,mag,0.19900002,-0.07900001,0.42700002 +28364000,baro,490.6522 +28368000,airspeed,-2.2533696,-2.2004526 +28368000,baro,490.60526 +28368000,imu,-0.22239424,0.2434322,-9.942512,-0.0020558133,-0.020094637,0.0039600986 +28368000,mag,0.19900002,-0.07900001,0.42700002 +28376000,imu,-0.33667117,0.25169724,-9.9451065,-0.011134334,-0.019972045,-0.001758432 +28376000,airspeed,2.3333766,2.2785954 +28376000,mag,0.19900002,-0.07900001,0.42700002 +28376000,baro,490.49728 +28380000,mag,0.19900002,-0.08100001,0.432 +28380000,baro,490.28598 +28380000,imu,-0.27922636,0.1855144,-9.869019,-0.00900698,-0.012254331,0.0021463335 +28380000,airspeed,3.20163,3.126504 +28388000,imu,-0.21246055,0.15320405,-9.958742,-0.006582092,-0.015479913,0.0040483163 +28388000,baro,490.4785 +28388000,mag,0.19900002,-0.08100001,0.432 +28388000,airspeed,3.4505196,3.369514 +28392000,airspeed,-2.9911344,-2.9208972 +28392000,imu,-0.14369886,0.12857996,-9.963643,-0.006646475,-0.013577631,-0.00019521415 +28392000,mag,0.19900002,-0.08100001,0.432 +28392000,baro,490.5724 +28396000,airspeed,-2.0679786,-2.0194187 +28396000,baro,490.5724 +28396000,mag,0.19900002,-0.08100001,0.432 +28396000,imu,-0.15265715,0.22439735,-9.888787,-0.0019783673,-0.014061534,0.0001346933 +28400000,baro,490.52075 +28400000,mag,0.19900002,-0.08100001,0.432 +28400000,airspeed,2.3579059,2.3025453 +28400000,imu,-0.17846307,0.2869665,-9.927071,-0.003418372,-0.015076011,0.001709418 +28404000,mag,0.19900002,-0.08100001,0.432 +28404000,airspeed,-0.4386357,-0.42833406 +28404000,imu,-0.2322579,0.22858241,-9.996535,-0.010353269,-0.010726234,-0.0014768761 +28404000,baro,490.63812 +28408000,mag,0.19900002,-0.08100001,0.432 +28408000,baro,490.40805 +28412000,airspeed,-0.8989623,-0.877859 +28412000,imu,-0.28718165,0.30435452,-9.880972,-0.0071898694,-0.010433183,-0.0015470887 +28416000,airspeed,-2.1473339,-2.0969112 +28416000,mag,0.19900002,-0.08200001,0.432 +28416000,imu,-0.23420349,0.19380279,-9.877013,-0.009602442,-0.013301674,-0.0044343923 +28416000,baro,490.5677 +28420000,imu,-0.14251472,0.1198612,-9.894465,-0.016499802,-0.016745187,-0.0048968866 +28420000,landed,0.0 +28420000,mag,0.19900002,-0.08200001,0.432 +28420000,baro,490.53952 +28420000,airspeed,-2.7778275,-2.7126043 +28424000,baro,490.45032 +28424000,airspeed,-2.3280306,-2.2733805 +28424000,imu,-0.1493987,0.14336228,-9.861157,-0.022272699,-0.01713575,-0.0023438644 +28424000,mag,0.19900002,-0.08200001,0.432 +28428000,airspeed,0.7425955,0.7251692 +28428000,imu,-0.15684327,0.18429302,-9.822306,-0.016213337,-0.011604458,-0.0021658263 +28432000,baro,490.28598 +28432000,imu,-0.23166455,0.18399502,-9.8813095,-0.007007723,-0.013563943,-0.008254983 +28432000,mag,0.2,-0.08000001,0.43 +28432000,airspeed,-1.1734251,-1.1458905 +28436000,airspeed,3.5699713,3.4862013 +28436000,baro,490.28598 +28436000,imu,-0.2414631,0.17830066,-9.910272,-0.004863278,-0.014278569,-0.0028429034 +28436000,mag,0.2,-0.08000001,0.43 +28440000,airspeed,-2.7945337,-2.728949 +28440000,baro,490.34702 +28440000,mag,0.2,-0.08000001,0.43 +28440000,imu,-0.20306821,0.24407569,-9.848854,-0.0012913255,-0.014872258,0.0032428931 +28444000,mag,0.2,-0.08000001,0.43 +28444000,baro,490.59586 +28444000,imu,-0.2243,0.27029428,-9.852764,-0.005327039,-0.018945089,0.0013960173 +28444000,airspeed,0.63616395,0.6212246 +28448000,airspeed,-2.7675028,-2.7025123 +28452000,airspeed,2.9308875,2.8620923 +28452000,baro,490.40338 +28452000,imu,-0.18065837,0.22454454,-9.840865,-0.008692598,-0.012957581,0.0022817175 +28452000,mag,0.2,-0.08000001,0.43 +28460000,baro,490.3564 +28460000,imu,-0.20757632,0.17091262,-9.929397,-0.011947254,-0.022170408,0.0013943777 +28460000,mag,0.2,-0.08000001,0.43 +28460000,airspeed,1.4026749,1.3697547 +28464000,baro,490.50195 +28464000,airspeed,-4.0830975,-3.9872334 +28464000,imu,-0.23251899,0.2205456,-9.918219,-0.01141099,-0.022286868,0.0018237409 +28464000,mag,0.2,-0.08000001,0.43 +28468000,imu,-0.24903783,0.20321015,-9.863828,-0.017692748,-0.019937104,0.0015409542 +28468000,airspeed,-1.3833078,-1.3508302 +28472000,mag,0.2,-0.08000001,0.43 +28472000,baro,490.45032 +28472000,imu,-0.2351142,0.17789552,-9.862468,-0.015058491,-0.016615355,-7.420059e-05 +28472000,airspeed,-1.8526556,-1.809164 +28476000,baro,490.40805 +28476000,airspeed,3.6548584,3.5690687 +28476000,imu,-0.24786872,0.19260149,-9.87773,-0.005965161,-0.016696723,0.0015130193 +28476000,mag,0.2,-0.08000001,0.43 +28480000,imu,-0.2305009,0.29734927,-9.905,-0.0036830988,-0.015947472,-0.00046668266 +28480000,airspeed,-5.258786,-5.135348 +28480000,mag,0.2,-0.08000001,0.43 +28480000,baro,490.40805 +28484000,imu,-0.1934217,0.30949345,-9.916282,-0.0046007955,-0.0062405034,-0.0018900082 +28484000,mag,0.20400001,-0.07900001,0.42800003 +28484000,airspeed,-3.7467303,-3.658807 +28484000,baro,490.30478 +28492000,airspeed,-3.9138963,-3.8220267 +28492000,mag,0.20400001,-0.07900001,0.42800003 +28492000,imu,-0.17505707,0.25854447,-9.898884,-0.0031763006,-0.010921935,0.0010021381 +28492000,baro,490.40338 +28496000,mag,0.20400001,-0.07900001,0.42800003 +28496000,airspeed,2.5051663,2.4463768 +28496000,imu,-0.16937384,0.22946051,-9.945652,-0.0032307724,-0.010630299,-4.050671e-05 +28496000,baro,490.30948 +28504000,baro,490.37988 +28504000,mag,0.20400001,-0.07900001,0.42800003 +28504000,airspeed,-4.396268,-4.2930813 +28504000,imu,-0.14774778,0.12112515,-9.972304,-0.0008055411,-0.006624499,0.0036279217 +28508000,imu,-0.17279808,0.1977783,-9.960742,-0.0030738236,-0.0073966878,0.0017188799 +28508000,baro,490.45032 +28508000,airspeed,-3.3223965,-3.2444007 +28508000,mag,0.20400001,-0.07900001,0.42800003 +28512000,imu,-0.25046724,0.23279077,-9.987763,0.0019727957,-0.0038168423,-0.005377602 +28512000,airspeed,0.6449189,0.6297825 +28512000,baro,490.3611 +28512000,mag,0.20400001,-0.07900001,0.42800003 +28516000,airspeed,2.7763789,2.711238 +28516000,imu,-0.19385013,0.16769366,-9.940722,0.0019800784,-0.010895125,-0.008981541 +28516000,baro,490.22495 +28516000,mag,0.20400001,-0.07900001,0.42800003 +28520000,imu,-0.18203317,0.18981162,-9.908769,0.00025467636,-0.015279448,-0.0055195973 +28520000,baro,490.22495 +28520000,mag,0.20400001,-0.07900001,0.42800003 +28520000,gps,490979.0,85456071.0,473977508.0,0.0,-0.03,0.76 +28520000,airspeed,-2.9205294,-2.8520062 +28524000,airspeed,-1.7879101,-1.7459439 +28524000,imu,-0.1865205,0.21857227,-9.973136,0.00014129291,-0.0097060315,-0.00082648796 +28524000,baro,490.39398 +28524000,mag,0.20400001,-0.07900001,0.42800003 +28528000,baro,490.40338 +28528000,imu,-0.17623691,0.16329116,-9.968097,0.00047071042,-0.0009044785,-0.006540188 +28528000,airspeed,2.7170358,2.653259 +28528000,mag,0.20400001,-0.07900001,0.42800003 +28536000,baro,490.39868 +28536000,imu,-0.20220633,0.23597084,-9.908232,-0.0012714994,-0.010795182,-0.007144157 +28536000,mag,0.201,-0.08200001,0.42900002 +28536000,airspeed,3.5384462,3.455389 +28540000,baro,490.60526 +28540000,airspeed,-2.3008606,-2.2468252 +28540000,mag,0.201,-0.08200001,0.42900002 +28540000,imu,-0.1824844,0.22282821,-9.9048,-0.0032189442,-0.0030854002,0.0008116881 +28544000,imu,-0.16615193,0.11973081,-9.913944,0.0014472838,-0.0014347939,0.0016565482 +28544000,mag,0.201,-0.08200001,0.42900002 +28544000,baro,490.41275 +28544000,airspeed,1.6717043,1.632463 +28548000,baro,490.41275 +28548000,imu,-0.191008,0.09257739,-9.892687,0.0038600825,-0.00059322483,-0.00496486 +28548000,mag,0.201,-0.08200001,0.42900002 +28548000,airspeed,1.4274383,1.3939308 +28552000,imu,-0.22437574,0.16658722,-9.943259,0.0009615743,0.00055578013,-0.002411143 +28552000,mag,0.201,-0.08200001,0.42900002 +28552000,airspeed,-1.9046814,-1.859994 +28552000,baro,490.21088 +28556000,airspeed,1.6666198,1.6275177 +28556000,imu,-0.17328592,0.17817077,-9.984722,-0.0017954177,-0.0009581056,0.0052331625 +28556000,baro,490.21088 +28556000,mag,0.201,-0.08200001,0.42900002 +28560000,baro,490.38458 +28560000,mag,0.201,-0.08200001,0.42900002 +28564000,imu,-0.16371988,0.2347659,-9.853004,0.004343118,-0.002813926,-0.005816889 +28564000,airspeed,3.8865533,3.7953272 +28564000,mag,0.201,-0.08200001,0.42900002 +28564000,baro,490.38458 +28568000,airspeed,-0.20526911,-0.20045291 +28568000,baro,490.22495 +28568000,mag,0.201,-0.08200001,0.42900002 +28568000,imu,-0.24464595,0.17599376,-9.943139,0.004801035,0.0020018676,-0.003944549 +28572000,airspeed,-2.216857,-2.1648338 +28572000,mag,0.201,-0.08200001,0.42900002 +28572000,baro,490.30008 +28572000,imu,-0.252182,0.16511914,-9.934668,-0.006064886,0.0010781696,-0.0005388718 +28580000,airspeed,-2.7912576,-2.725744 +28580000,mag,0.201,-0.08200001,0.42900002 +28580000,imu,-0.22606505,0.17079657,-9.87112,-0.00151504,-0.0045150444,-0.0060524647 +28580000,baro,490.3658 +28584000,mag,0.201,-0.08200001,0.42900002 +28584000,baro,490.30008 +28584000,airspeed,-3.5762458,-3.4923213 +28584000,imu,-0.13421746,0.14391893,-9.797458,-0.0015189701,-0.004073421,-0.0038246503 +28592000,imu,-0.19099484,0.3526815,-9.839809,0.004663418,-0.005996303,-0.0023686832 +28592000,airspeed,-4.5778103,-4.470358 +28592000,mag,0.202,-0.08200001,0.43 +28592000,baro,490.38458 +28596000,imu,-0.18075353,0.24371073,-9.888,0.003091591,-0.0003140027,0.0022648943 +28596000,airspeed,-0.61472803,-0.6003075 +28596000,baro,490.14514 +28596000,mag,0.202,-0.08200001,0.43 +28600000,mag,0.202,-0.08200001,0.43 +28600000,baro,490.52545 +28604000,imu,-0.16566786,0.15597329,-9.88077,0.0021244667,0.0022811748,0.00026436188 +28604000,airspeed,-0.55867124,-0.54555666 +28608000,airspeed,0.96709156,0.9443954 +28608000,imu,-0.26656437,0.15137735,-9.87853,0.0026159892,-0.001402615,-0.0016689672 +28608000,baro,490.31885 +28608000,mag,0.202,-0.08200001,0.43 +28612000,airspeed,-2.946116,-2.8769908 +28612000,imu,-0.24556014,0.121143125,-9.924871,0.0067942566,0.0005964009,0.0005237422 +28616000,baro,490.3517 +28616000,airspeed,2.0691817,2.0206165 +28616000,mag,0.202,-0.08200001,0.43 +28616000,imu,-0.16455653,0.12969834,-9.948343,0.0030459687,0.00865577,0.004997965 +28620000,imu,-0.2193069,0.17472337,-9.900164,0.0022460397,0.011327822,0.0051749013 +28620000,airspeed,2.6083674,2.547147 +28624000,imu,-0.27563053,0.18943895,-9.90707,0.0028585694,0.010401576,-0.00068527396 +28624000,baro,490.34235 +28624000,mag,0.202,-0.08200001,0.43 +28624000,airspeed,-0.7172256,-0.7003922 +28628000,baro,490.34235 +28628000,mag,0.202,-0.08200001,0.43 +28628000,airspeed,3.5412512,3.4581375 +28628000,imu,-0.23472628,0.17774276,-9.937583,0.00067352795,0.011151942,0.00078783935 +28632000,mag,0.202,-0.08200001,0.43 +28632000,airspeed,1.5021594,1.4669094 +28632000,imu,-0.16650455,0.18202312,-9.916994,-0.0007623284,0.008113099,0.008913103 +28632000,baro,490.2766 +28636000,airspeed,-3.5074627,-3.425141 +28636000,imu,-0.15539613,0.24114686,-9.889999,-0.0009415065,0.009465353,0.004972286 +28636000,baro,490.34702 +28636000,mag,0.202,-0.08200001,0.43 +28640000,imu,-0.20223325,0.24649094,-9.858811,0.0035203912,0.011613942,0.000376839 +28640000,airspeed,-3.7008357,-3.613992 +28640000,baro,490.2672 +28640000,mag,0.202,-0.08200001,0.42900002 +28644000,airspeed,2.2071764,2.1553829 +28644000,imu,-0.2260079,0.18053038,-9.837507,0.00823325,0.014108922,-0.0014058078 +28644000,baro,490.2672 +28644000,mag,0.202,-0.08200001,0.42900002 +28648000,mag,0.202,-0.08200001,0.42900002 +28648000,airspeed,1.0797803,1.0544385 +28648000,baro,490.32825 +28648000,imu,-0.21425636,0.21577395,-9.871677,0.0059840363,0.010431645,-0.0019165495 +28652000,imu,-0.23451132,0.23522212,-9.926952,0.0061511872,0.004963205,-0.0011291376 +28652000,baro,490.32825 +28652000,mag,0.202,-0.08200001,0.42900002 +28652000,airspeed,-2.4294538,-2.3724358 +28656000,airspeed,1.8045937,1.7622396 +28656000,baro,490.33765 +28656000,mag,0.202,-0.08200001,0.42900002 +28656000,imu,-0.24390978,0.19752471,-9.950087,0.0062220474,0.010377031,-0.0042382437 +28660000,mag,0.202,-0.08200001,0.42900002 +28660000,imu,-0.25095865,0.1747891,-9.912712,0.0038654138,0.012355302,-0.002319191 +28660000,baro,490.33765 +28664000,airspeed,-1.5238132,-1.4880569 +28664000,mag,0.202,-0.08200001,0.42900002 +28664000,baro,490.24844 +28668000,baro,490.2766 +28668000,airspeed,-1.8121902,-1.7696642 +28668000,imu,-0.24345586,0.15830238,-9.891026,0.011823754,0.0032026798,0.0028924225 +28668000,mag,0.202,-0.08200001,0.42900002 +28672000,airspeed,-2.8269615,-2.7606297 +28672000,mag,0.202,-0.08200001,0.42900002 +28672000,imu,-0.16322267,0.15059213,-9.932563,0.0145619,0.0037840644,0.008495112 +28672000,baro,490.22964 +28676000,baro,490.22964 +28676000,mag,0.202,-0.08200001,0.42900002 +28676000,imu,-0.15176593,0.18907793,-9.951703,0.015102334,0.0073455023,0.0059790476 +28676000,airspeed,3.7940896,3.705065 +28684000,baro,490.50195 +28684000,mag,0.202,-0.08200001,0.42900002 +28684000,airspeed,-4.415571,-4.311894 +28684000,imu,-0.18655954,0.1568145,-9.868541,0.008123686,0.0021436003,0.007729732 +28692000,mag,0.20400001,-0.08000001,0.43 +28692000,baro,490.38458 +28692000,imu,-0.23629704,0.22633693,-9.86258,0.015484826,0.005099907,0.004206351 +28692000,airspeed,-2.5857198,-2.525025 +28696000,baro,490.1733 +28696000,airspeed,-1.8212391,-1.7785115 +28696000,mag,0.20400001,-0.08000001,0.43 +28696000,imu,-0.23508854,0.22847877,-9.880599,0.017849091,-0.0013750594,-0.00026504206 +28700000,imu,-0.20352729,0.21165277,-9.910019,0.0200161,-0.009462799,0.0020655228 +28700000,mag,0.20400001,-0.08000001,0.43 +28700000,baro,490.21088 +28704000,airspeed,-4.270121,-4.169899 +28708000,mag,0.20400001,-0.08000001,0.43 +28708000,airspeed,2.1822436,2.1310706 +28708000,imu,-0.16851723,0.14521907,-9.880886,0.015628917,-0.0077969143,0.000558603 +28708000,baro,489.9808 +28712000,airspeed,-2.954457,-2.8851383 +28712000,imu,-0.21108349,0.14908233,-9.857361,0.013821135,-0.002640021,-0.0008074254 +28712000,baro,490.19678 +28712000,mag,0.20400001,-0.08000001,0.43 +28716000,mag,0.20400001,-0.08000001,0.43 +28716000,imu,-0.27010924,0.18032396,-9.898214,0.013573108,-0.0032929748,0.0001392306 +28716000,baro,490.19678 +28716000,airspeed,-0.9159963,-0.8945048 +28720000,baro,490.15454 +28720000,mag,0.20400001,-0.08000001,0.43 +28720000,gps,490832.0,85456070.0,473977509.0,0.01,0.01,0.71 +28720000,imu,-0.23008743,0.20008036,-9.954301,0.010111949,-0.007758017,-0.0018416513 +28720000,airspeed,-3.0115633,-2.9409125 +28724000,airspeed,-2.0295057,-1.9818956 +28724000,imu,-0.18062058,0.20630579,-9.946287,0.00943063,-0.0040105605,-0.0044555427 +28724000,baro,490.13574 +28724000,mag,0.20400001,-0.08000001,0.43 +28728000,baro,490.20618 +28728000,mag,0.20400001,-0.08000001,0.43 +28732000,airspeed,-1.9897517,-1.9430661 +28732000,imu,-0.16690654,0.23060411,-9.901045,0.013825306,-0.0016393822,0.0009854089 +28732000,baro,490.20618 +28732000,mag,0.20400001,-0.07900001,0.43 +28736000,airspeed,3.5274968,3.4447372 +28736000,imu,-0.14122865,0.1957466,-9.925081,0.012827424,-0.000114022834,0.005167982 +28740000,mag,0.20400001,-0.07900001,0.43 +28740000,baro,490.21558 +28740000,airspeed,-2.982466,-2.912487 +28740000,imu,-0.11697845,0.21108438,-9.927926,0.014332697,-0.0016742928,0.0015621296 +28744000,imu,-0.15314141,0.19772448,-9.937558,0.0151545685,-0.0015545866,0.004605812 +28744000,airspeed,-1.837235,-1.7941321 +28744000,mag,0.19700001,-0.07800001,0.42900002 +28744000,baro,490.1639 +28748000,imu,-0.19585297,0.13752466,-9.935365,0.016657133,0.0034433862,0.0037072836 +28748000,baro,490.23904 +28748000,mag,0.19700001,-0.07800001,0.42900002 +28748000,airspeed,-3.9543502,-3.861561 +28752000,imu,-0.18668099,0.19132785,-9.909722,0.011482241,0.00022009992,-0.005306727 +28752000,mag,0.19700001,-0.07800001,0.42900002 +28752000,airspeed,1.690214,1.6505494 +28752000,baro,490.2766 +28756000,airspeed,4.017402,3.9231248 +28756000,imu,-0.1620977,0.26214013,-9.940078,0.009760845,-0.0070567927,-0.0062052235 +28756000,mag,0.19700001,-0.07800001,0.42900002 +28756000,baro,490.2766 +28764000,baro,490.10757 +28764000,mag,0.19700001,-0.07800001,0.42900002 +28764000,imu,-0.21062194,0.21643275,-9.872419,0.014693059,-0.005745835,0.0035159462 +28764000,airspeed,3.314713,3.2369576 +28768000,baro,490.32355 +28768000,airspeed,2.439378,2.3821256 +28768000,mag,0.19700001,-0.07800001,0.42900002 +28768000,imu,-0.1941814,0.17088176,-9.94241,0.014384761,-0.0074695926,0.0030302566 +28772000,imu,-0.17348759,0.19325061,-9.885946,0.009817021,-0.008885728,-0.0022927888 +28772000,mag,0.19700001,-0.07800001,0.42900002 +28772000,airspeed,3.4001052,3.3203046 +28772000,baro,490.32355 +28776000,imu,-0.19679442,0.23251763,-9.903047,0.011910079,-0.0075614266,-0.0035231004 +28776000,baro,490.21088 +28776000,airspeed,-2.4564285,-2.3987916 +28776000,mag,0.19700001,-0.07800001,0.42900002 +28780000,imu,-0.19232664,0.22880714,-9.92426,0.01800624,-0.0045173983,0.00018002832 +28784000,airspeed,-1.8294833,-1.7865554 +28784000,imu,-0.25681588,0.18836887,-9.893578,0.013458698,-0.002117044,-0.0015764011 +28784000,baro,490.22028 +28784000,mag,0.19700001,-0.07800001,0.42900002 +28792000,mag,0.19700001,-0.07800001,0.42900002 +28792000,baro,490.23434 +28792000,imu,-0.29090863,0.25230965,-9.959406,0.008538925,0.00083364407,-0.0058462676 +28792000,airspeed,1.8136312,1.7710738 +28796000,mag,0.202,-0.08000001,0.43 +28796000,airspeed,1.2212902,1.1926414 +28796000,baro,490.11227 +28796000,imu,-0.25980484,0.1747668,-9.895254,0.010718399,-0.0016067764,-0.00074865867 +28800000,baro,490.3752 +28800000,mag,0.202,-0.08000001,0.43 +28800000,airspeed,-1.7769814,-1.7352697 +28800000,imu,-0.21517976,0.1049293,-9.914252,0.005538876,0.0055732043,0.0057907007 +28804000,mag,0.202,-0.08000001,0.43 +28804000,baro,490.0888 +28804000,airspeed,3.5785666,3.494625 +28804000,imu,-0.21282667,0.17262176,-9.946407,0.003960159,0.008261702,-0.0009959879 +28808000,mag,0.202,-0.08000001,0.43 +28808000,baro,490.22495 +28812000,baro,490.04654 +28812000,imu,-0.17396139,0.19113243,-9.895229,0.0066413092,0.0031525607,-0.0065262 +28812000,mag,0.202,-0.08000001,0.43 +28812000,airspeed,0.7581649,0.7403826 +28816000,baro,490.20618 +28816000,airspeed,3.5003989,3.4182658 +28816000,imu,-0.17408483,0.198402,-9.798976,0.0066051977,-0.0013639271,-0.010804594 +28816000,mag,0.202,-0.08000001,0.43 +28820000,mag,0.202,-0.08000001,0.43 +28820000,baro,490.22495 +28820000,imu,-0.27185017,0.17077649,-9.87457,0.009406807,0.007220553,-0.003423439 +28820000,airspeed,3.2227526,3.1471312 +28824000,imu,-0.22139727,0.14868255,-9.93778,0.007258944,0.010971324,0.00031077996 +28824000,airspeed,1.9987192,1.9518197 +28824000,baro,490.22495 +28824000,mag,0.202,-0.08000001,0.43 +28828000,airspeed,2.603084,2.5420113 +28828000,baro,490.1733 +28828000,imu,-0.19796346,0.14668584,-9.922613,0.005178943,0.003782547,-0.001810013 +28828000,mag,0.202,-0.08000001,0.43 +28836000,baro,490.178 +28836000,airspeed,1.4437971,1.4099222 +28836000,mag,0.202,-0.08000001,0.43 +28836000,imu,-0.22797056,0.19440612,-9.956501,0.0005449191,-0.00047352255,0.0033306861 +28840000,mag,0.202,-0.08000001,0.43 +28840000,baro,490.03247 +28844000,airspeed,3.2938278,3.2165556 +28844000,mag,0.202,-0.08000001,0.43 +28844000,imu,-0.20220686,0.20708092,-9.898239,-0.0005955432,-0.0008552018,-0.0018908178 +28844000,baro,490.13574 +28848000,baro,490.13574 +28848000,mag,0.202,-0.08000001,0.43 +28848000,imu,-0.2721284,0.21203287,-9.88311,0.00052027724,-0.0037796898,0.001101586 +28848000,airspeed,-3.5995467,-3.5151024 +28856000,mag,0.20300001,-0.07800001,0.42700002 +28856000,imu,-0.23674065,0.13745911,-9.94771,-0.009239133,-0.008030289,-0.0018119889 +28856000,airspeed,2.3930182,2.3368714 +28856000,baro,490.1827 +28860000,baro,490.1827 +28860000,imu,-0.19298302,0.19206335,-9.939448,-0.010666965,-0.0070324973,-0.0022735973 +28860000,mag,0.20300001,-0.07800001,0.42700002 +28860000,airspeed,3.5604322,3.4768946 +28864000,airspeed,-1.6402174,-1.6017371 +28864000,baro,490.14514 +28864000,imu,-0.21094735,0.23823585,-9.959616,-0.0056404253,-0.0055757035,0.00091376324 +28864000,mag,0.20300001,-0.07800001,0.42700002 +28868000,mag,0.20300001,-0.07800001,0.42700002 +28868000,airspeed,2.3297422,2.2750952 +28868000,baro,490.07004 +28868000,imu,-0.229905,0.21539824,-9.931687,0.0021993802,-0.010764074,0.0021718238 +28872000,imu,-0.23106794,0.21531096,-9.895144,0.0018624719,-0.0120238075,-0.00063946046 +28872000,mag,0.20300001,-0.07800001,0.42700002 +28872000,airspeed,-4.219973,-4.1209655 +28872000,baro,490.15924 +28876000,mag,0.20300001,-0.07800001,0.42700002 +28876000,imu,-0.20257354,0.2202962,-9.904617,0.0020532461,-0.0077194036,-7.039724e-05 +28876000,airspeed,3.8630834,3.772449 +28876000,baro,490.15924 +28880000,mag,0.20300001,-0.07800001,0.42700002 +28880000,imu,-0.24330962,0.18060514,-9.926378,0.0075964825,-0.0044885944,-0.00051090086 +28880000,airspeed,-0.9742908,-0.95143574 +28880000,baro,490.0982 +28884000,baro,490.13107 +28884000,imu,-0.3060787,0.18421972,-9.939659,0.0035718025,-0.008364255,0.0030346499 +28884000,airspeed,-3.1494317,-3.0755458 +28884000,mag,0.20300001,-0.07800001,0.42700002 +28888000,imu,-0.2780282,0.20167404,-9.945441,0.00015742438,-0.007899479,0.0038438605 +28888000,airspeed,-2.9674814,-2.897854 +28888000,mag,0.20300001,-0.07800001,0.42700002 +28888000,baro,490.1921 +28892000,mag,0.20300001,-0.07800001,0.42700002 +28892000,imu,-0.25578627,0.1658789,-9.908574,0.002185393,-0.0054663722,-0.0021303326 +28892000,baro,489.9949 +28892000,airspeed,3.1780906,3.103558 +28896000,airspeed,-2.0773652,-2.0286272 +28896000,mag,0.20300001,-0.07800001,0.42700002 +28896000,baro,490.15454 +28896000,imu,-0.23310308,0.11219612,-9.884597,0.005935888,-0.010499577,-0.003341523 +28900000,airspeed,1.7915413,1.7495092 +28900000,baro,490.15454 +28900000,mag,0.20300001,-0.07800001,0.42700002 +28900000,imu,-0.21347377,0.104374535,-9.859627,0.0076132207,-0.019404719,0.003123327 +28904000,baro,490.11227 +28904000,airspeed,1.8085339,1.7661079 +28904000,mag,0.19900002,-0.08000001,0.42800003 +28904000,imu,-0.23021688,0.10664353,-9.885913,0.0057470724,-0.015932798,0.0040171267 +28912000,imu,-0.21751909,0.2588813,-9.852446,0.0041296463,-0.010322773,0.0020047233 +28912000,mag,0.19900002,-0.08000001,0.42800003 +28912000,baro,490.1686 +28912000,airspeed,-2.7970357,-2.7314107 +28916000,imu,-0.22227931,0.19059333,-9.844253,0.0036852518,-0.006387999,0.0023385573 +28916000,airspeed,-1.6065601,-1.5688645 +28916000,baro,490.1874 +28916000,mag,0.19900002,-0.08000001,0.42800003 +28920000,baro,489.9902 +28920000,airspeed,3.8251135,3.7354066 +28920000,mag,0.19900002,-0.08000001,0.42800003 +28920000,imu,-0.2033913,0.15673019,-9.843893,0.000252017,-0.006822553,0.001096806 +28920000,gps,490688.0,85456071.0,473977509.0,0.01,-0.01,0.71 +28924000,airspeed,-2.5544825,-2.4945745 +28924000,imu,-0.15467137,0.19402125,-9.923288,0.00722559,-0.011977534,0.0028495484 +28924000,baro,489.9902 +28924000,mag,0.19900002,-0.08000001,0.42800003 +28928000,mag,0.19900002,-0.08000001,0.42800003 +28928000,baro,489.9808 +28932000,airspeed,2.7738523,2.7087638 +28932000,imu,-0.19535737,0.16901708,-9.912625,-0.0007382558,-0.012232597,0.006667207 +28936000,airspeed,2.3653545,2.3098564 +28936000,baro,490.1733 +28936000,mag,0.19900002,-0.08000001,0.42800003 +28936000,imu,-0.17178875,0.19248311,-9.847262,0.0048829815,-0.009560185,0.007384722 +28940000,airspeed,3.8361466,3.7461395 +28940000,baro,490.1733 +28940000,imu,-0.1887797,0.2553297,-9.904181,7.683062e-05,-0.013163768,0.009952839 +28940000,mag,0.19900002,-0.08000001,0.42800003 +28944000,imu,-0.21021213,0.14599772,-9.878498,-0.0018000331,-0.012113658,0.009569868 +28944000,mag,0.19900002,-0.08000001,0.42800003 +28944000,airspeed,3.6014109,3.5169196 +28944000,baro,490.13574 +28948000,airspeed,-0.893922,-0.8729457 +28948000,baro,490.21558 +28948000,mag,0.19900002,-0.08000001,0.42800003 +28948000,imu,-0.18176268,0.13767989,-9.845135,0.004608133,-0.00948612,0.008374521 +28952000,airspeed,-0.5055908,-0.49373433 +28952000,imu,-0.19697659,0.22789486,-9.866094,0.009015205,-0.009353967,0.008927336 +28952000,mag,0.19700001,-0.07900001,0.42800003 +28952000,baro,489.96674 +28956000,baro,490.14044 +28956000,mag,0.19700001,-0.07900001,0.42800003 +28956000,airspeed,1.7533392,1.7122037 +28956000,imu,-0.25253338,0.27831638,-9.918546,0.009886898,-0.009068759,0.00710833 +28960000,airspeed,1.6992084,1.6593481 +28960000,imu,-0.253895,0.20863047,-9.937154,0.0055166893,-0.01074643,0.0001151121 +28960000,baro,490.0935 +28960000,mag,0.19700001,-0.07900001,0.42800003 +28964000,baro,490.13574 +28964000,imu,-0.23617001,0.104910724,-9.958569,0.006760831,-0.010025986,-0.0024410363 +28964000,airspeed,4.210295,4.1115184 +28964000,mag,0.19700001,-0.07900001,0.42800003 +28968000,mag,0.19700001,-0.07900001,0.42800003 +28968000,imu,-0.18890521,0.1389671,-9.947407,0.0012102895,-0.0042827264,-0.0066511044 +28968000,baro,489.91977 +28972000,mag,0.19700001,-0.07900001,0.42800003 +28972000,airspeed,-1.4457715,-1.4118505 +28972000,baro,490.15924 +28972000,imu,-0.13754642,0.15849084,-9.891746,0.0024648546,-0.006832613,-0.010334309 +28976000,airspeed,-3.0161133,-2.9453685 +28976000,mag,0.19700001,-0.07900001,0.42800003 +28976000,imu,-0.2268226,0.15688461,-9.861825,0.01024159,-0.014541066,-0.0065217507 +28976000,baro,490.04654 +28984000,airspeed,1.2771977,1.2472395 +28984000,mag,0.19700001,-0.07900001,0.42800003 +28984000,imu,-0.25141823,0.19802697,-9.956824,-0.0009403565,-0.0007803192,0.0013012801 +28984000,baro,490.05594 +28988000,baro,490.14984 +28988000,airspeed,3.2741241,3.1973073 +28988000,mag,0.19700001,-0.07900001,0.42800003 +28992000,imu,-0.25836903,0.12990521,-9.899951,0.0015771477,-0.007564294,0.0040550805 +28996000,airspeed,4.926986,4.8114476 +28996000,imu,-0.21302046,0.0876493,-9.863102,-0.0017809803,-0.0033962755,0.0019501545 +28996000,baro,489.94797 +28996000,mag,0.19700001,-0.07900001,0.42800003 +29004000,baro,490.0043 +29004000,airspeed,-2.592962,-2.5321484 +29004000,imu,-0.31399652,0.17950557,-9.967413,-0.0020011745,-0.0025531726,-0.0006026703 +29004000,mag,0.19900002,-0.08000001,0.42900002 +29008000,imu,-0.24274988,0.2297357,-9.904479,0.00013710171,-0.0055685416,0.00878232 +29008000,airspeed,-0.68317866,-0.6671482 +29012000,airspeed,1.2624745,1.2328664 +29012000,imu,-0.27341634,0.23439077,-9.890536,0.0037480043,-0.008912505,0.005846015 +29012000,baro,489.9855 +29012000,mag,0.19900002,-0.08000001,0.42900002 +29016000,mag,0.19900002,-0.08000001,0.42900002 +29016000,baro,489.9855 +29016000,imu,-0.294377,0.22215997,-9.923359,0.006681687,-0.0075533926,0.004959498 +29016000,airspeed,0.86785126,0.847498 +29024000,mag,0.19900002,-0.08000001,0.42900002 +29024000,imu,-0.20148264,0.26559645,-9.918953,0.00075369765,-0.0042953463,-0.0036674733 +29024000,baro,489.9855 +29024000,airspeed,-3.5136228,-3.4312193 +29028000,mag,0.19900002,-0.08000001,0.42900002 +29028000,baro,489.9855 +29028000,airspeed,-1.6689461,-1.6298051 +29028000,imu,-0.16264525,0.19741528,-9.934246,-0.0031679666,-0.006149194,0.0034230994 +29032000,mag,0.19900002,-0.08000001,0.42900002 +29032000,airspeed,-2.8863442,-2.8186374 +29032000,imu,-0.19920765,0.15995513,-9.942209,-0.0025516995,-0.0035589621,0.0040026605 +29032000,baro,490.0747 +29036000,baro,489.88693 +29036000,mag,0.19900002,-0.08000001,0.42900002 +29036000,imu,-0.26472247,0.14251463,-9.921721,2.8919276e-06,-0.0036554886,0.0032679795 +29036000,airspeed,3.716763,3.6296165 +29040000,imu,-0.25388843,0.15250075,-9.873277,0.00032679687,-0.0075204396,0.004174453 +29040000,airspeed,2.4484806,2.3910713 +29044000,imu,-0.20957483,0.21326388,-9.898146,0.0018129877,-0.007153044,0.0009860012 +29044000,airspeed,3.2053866,3.1301928 +29044000,mag,0.19900002,-0.08000001,0.42900002 +29044000,baro,490.0888 +29048000,airspeed,0.5530341,0.54006076 +29048000,baro,490.0888 +29048000,mag,0.19900002,-0.08000001,0.42900002 +29048000,imu,-0.18086594,0.21323596,-9.877488,0.00024598997,-0.0027608997,5.474921e-08 +29052000,airspeed,-0.3229938,-0.31541732 +29052000,baro,490.05594 +29052000,imu,-0.17461433,0.17942028,-9.90633,-0.0028959587,-0.0010094052,-0.004213505 +29052000,mag,0.19900002,-0.08000001,0.42900002 +29056000,mag,0.201,-0.07800001,0.42800003 +29056000,baro,490.05124 +29056000,airspeed,-2.0160902,-1.9687994 +29056000,imu,-0.22191514,0.18693277,-9.891737,0.0012074462,-0.0070635285,-0.0077155354 +29064000,airspeed,1.0584692,1.0336443 +29064000,imu,-0.18331349,0.1636602,-9.918828,-0.0004497489,-0.008746184,-0.004717851 +29064000,baro,489.9949 +29064000,mag,0.201,-0.07800001,0.42800003 +29068000,mag,0.201,-0.07800001,0.42800003 +29068000,imu,-0.23591916,0.20322025,-9.933882,0.0030091263,-0.01218446,-0.0037757421 +29068000,airspeed,3.1538286,3.07986 +29068000,baro,489.9949 +29072000,mag,0.201,-0.07800001,0.42800003 +29072000,airspeed,-0.7702989,-0.7522315 +29072000,imu,-0.16116686,0.18089768,-9.869426,0.007169945,-0.016648361,-0.0034532908 +29072000,baro,490.02307 +29076000,imu,-0.18813954,0.19284008,-9.9229555,0.0015978583,-0.018696861,-0.0068522613 +29076000,mag,0.201,-0.07800001,0.42800003 +29076000,baro,489.86813 +29076000,airspeed,3.6854227,3.599014 +29084000,imu,-0.19976534,0.14271633,-9.948497,0.0054899068,-0.01430823,0.0043774843 +29084000,mag,0.201,-0.07800001,0.42800003 +29084000,airspeed,2.3446064,2.2896168 +29084000,baro,489.9949 +29088000,imu,-0.19661017,0.12507045,-9.961945,0.0062531345,-0.01220954,-0.0004903127 +29088000,mag,0.201,-0.07800001,0.42800003 +29088000,airspeed,-0.4406135,-0.43027985 +29088000,baro,489.9855 +29092000,airspeed,1.2831805,1.253075 +29092000,imu,-0.2677698,0.17543313,-9.926735,0.004428284,-0.014052812,0.0010502962 +29092000,baro,490.13574 +29092000,mag,0.201,-0.07800001,0.42800003 +29096000,mag,0.202,-0.07800001,0.42800003 +29096000,airspeed,-1.9618562,-1.9158453 +29096000,baro,489.9808 +29096000,imu,-0.28547502,0.24387337,-9.9021435,0.00093445485,-0.01810605,-0.00015235678 +29100000,mag,0.202,-0.07800001,0.42800003 +29100000,imu,-0.1818745,0.23672955,-9.949003,0.0014424826,-0.013587943,-0.008713235 +29100000,baro,489.9808 +29100000,airspeed,-2.256193,-2.203279 +29108000,imu,-0.24654423,0.18604551,-9.871229,0.0048545916,-0.010666991,-0.0017430373 +29108000,mag,0.202,-0.07800001,0.42800003 +29108000,baro,489.92447 +29108000,airspeed,-4.653423,-4.5443015 +29112000,airspeed,-2.5104172,-2.4515426 +29112000,baro,489.96674 +29112000,mag,0.2,-0.07800001,0.43100002 +29112000,imu,-0.26761323,0.18990225,-9.873595,0.003017704,-0.009790929,-0.00063768256 +29116000,baro,490.02307 +29116000,mag,0.2,-0.07800001,0.43100002 +29116000,imu,-0.22495723,0.18731846,-9.914946,0.005771141,-0.010805229,0.005150555 +29116000,airspeed,2.8854067,2.8177283 +29120000,gps,490521.0,85456071.0,473977509.0,0.02,0.0,0.69 +29120000,mag,0.2,-0.07800001,0.43100002 +29120000,baro,489.94797 +29120000,airspeed,3.4025111,3.3227189 +29124000,baro,490.05594 +29124000,airspeed,3.9122548,3.8204837 +29124000,mag,0.2,-0.07800001,0.43100002 +29124000,imu,-0.17237608,0.20222035,-10.006595,-0.0003698729,-0.011342159,-0.006477511 +29128000,airspeed,-2.018832,-1.9714972 +29128000,imu,-0.1845519,0.21256068,-9.926288,0.005898823,-0.0091215735,-0.0059877597 +29128000,baro,489.86813 +29128000,mag,0.2,-0.07800001,0.43100002 +29132000,baro,489.86813 +29132000,imu,-0.19184989,0.24424838,-9.940424,0.006844486,-0.007942506,-0.0062510413 +29132000,airspeed,-1.3029406,-1.2723911 +29132000,mag,0.2,-0.07800001,0.43100002 +29140000,imu,-0.2718387,0.2194411,-9.911297,0.00038318045,-0.012810368,-0.005813853 +29140000,baro,490.01837 +29140000,airspeed,3.818422,3.7288594 +29140000,mag,0.2,-0.07800001,0.43100002 +29144000,imu,-0.306913,0.19489188,-9.942442,0.0077714357,-0.010082964,-0.0028531135 +29144000,airspeed,2.8044682,2.7386882 +29144000,baro,490.01837 +29144000,mag,0.2,-0.07800001,0.43100002 +29148000,baro,489.87753 +29148000,airspeed,1.1887671,1.1608939 +29148000,mag,0.2,-0.07800001,0.43100002 +29148000,imu,-0.2793226,0.15685143,-9.948983,0.0036514094,-0.0078040664,-0.002564416 +29152000,baro,490.04654 +29152000,imu,-0.23494966,0.13822824,-9.9515705,-0.006602003,-0.0021753204,-0.0047117053 +29152000,airspeed,-3.4558494,-3.3747852 +29152000,mag,0.2,-0.07800001,0.43100002 +29156000,airspeed,3.3991249,3.3193882 +29156000,mag,0.2,-0.07800001,0.43100002 +29156000,baro,490.06064 +29156000,imu,-0.18963882,0.12746625,-9.952461,-0.009998606,-0.004081414,-0.005120385 +29160000,baro,489.94327 +29160000,mag,0.201,-0.07800001,0.43100002 +29160000,airspeed,-2.5095563,-2.4507046 +29164000,mag,0.201,-0.07800001,0.43100002 +29164000,baro,489.94327 +29164000,imu,-0.20444798,0.16074575,-9.968728,-0.00068329374,-0.0076474273,0.0014418566 +29168000,airspeed,-1.3079453,-1.2772712 +29168000,imu,-0.17958769,0.17051052,-9.910063,-0.0052484917,-0.007483065,0.0019172011 +29172000,imu,-0.23509927,0.19260265,-9.924236,-0.009825199,-0.005153658,0.0056820926 +29172000,mag,0.201,-0.07800001,0.43100002 +29172000,airspeed,-1.4049882,-1.3720309 +29172000,baro,490.04654 +29176000,imu,-0.22196303,0.13619167,-9.935923,-0.0061962483,-0.004537404,0.006921276 +29176000,mag,0.201,-0.07800001,0.43100002 +29176000,airspeed,2.9623938,2.8929188 +29176000,baro,489.96204 +29180000,mag,0.201,-0.07800001,0.43100002 +29180000,airspeed,-2.146594,-2.0962474 +29180000,baro,489.9902 +29180000,imu,-0.20928292,0.07782022,-9.976588,0.00043671383,8.9262445e-05,0.0036301224 +29184000,mag,0.201,-0.07800001,0.43100002 +29184000,baro,489.9104 +29188000,airspeed,-1.4506043,-1.4165868 +29188000,imu,-0.19286384,0.25484845,-9.850536,0.001149706,-0.009259018,0.0020873118 +29192000,mag,0.201,-0.07800001,0.43100002 +29192000,airspeed,-2.9930298,-2.9228451 +29192000,imu,-0.15320142,0.25103548,-9.854515,0.00037523662,0.00057398964,0.0052475585 +29192000,baro,489.9057 +29196000,airspeed,0.26649457,0.26024544 +29196000,imu,-0.10100074,0.25215212,-9.921929,-0.00018702885,-0.00016444454,0.0015902848 +29196000,mag,0.201,-0.07800001,0.43100002 +29196000,baro,489.9057 +29200000,airspeed,-1.8732281,-1.8292974 +29200000,imu,-0.16391373,0.28403392,-9.9649315,-0.0061637326,-0.00044369546,-0.0029878125 +29200000,mag,0.201,-0.07800001,0.43100002 +29200000,baro,489.94797 +29204000,baro,489.9855 +29204000,mag,0.201,-0.07800001,0.43100002 +29204000,airspeed,-2.7548304,-2.6902187 +29204000,imu,-0.19928695,0.2650109,-9.938381,-0.005406462,-0.005612563,0.0054517714 +29212000,baro,490.06534 +29212000,airspeed,1.9893212,1.9426546 +29212000,mag,0.19700001,-0.07900001,0.432 +29212000,imu,-0.18740869,0.22997259,-9.912709,-0.0051918114,-0.010735391,-0.0017492255 +29216000,airspeed,-0.14520869,-0.1418023 +29216000,mag,0.19700001,-0.07900001,0.432 +29216000,baro,490.06534 +29216000,imu,-0.21254031,0.17039642,-9.895213,-0.0075472216,-0.0073774224,0.0022667896 +29220000,airspeed,2.6968105,2.633594 +29220000,mag,0.19700001,-0.07900001,0.432 +29220000,baro,489.76486 +29220000,imu,-0.19246672,0.18991812,-9.9051485,-0.004801859,-0.012314166,5.5650115e-05 +29224000,imu,-0.23606046,0.19565232,-9.879003,-0.007612174,-0.01069312,-0.0030296128 +29224000,mag,0.19700001,-0.07900001,0.432 +29224000,airspeed,3.9940665,3.900441 +29224000,baro,489.76486 +29228000,imu,-0.22530805,0.15031561,-9.838543,-0.0074612275,-0.0043457504,0.0018016769 +29228000,airspeed,-1.5674673,-1.530696 +29232000,mag,0.19700001,-0.07900001,0.432 +29232000,baro,489.7977 +29232000,airspeed,2.958431,2.8890758 +29232000,imu,-0.18184401,0.14279276,-9.910729,-0.0071926047,-0.010815187,0.0044124783 +29236000,mag,0.19700001,-0.07900001,0.432 +29236000,imu,-0.19909777,0.1948391,-9.938012,-0.0040088827,-0.010569387,0.0060589616 +29236000,baro,489.77893 +29236000,airspeed,-2.6734507,-2.610779 +29240000,imu,-0.2592822,0.24462451,-9.876178,0.0010513115,-0.0064680683,0.0054865894 +29240000,mag,0.19700001,-0.07900001,0.432 +29240000,airspeed,-1.9642649,-1.9182258 +29240000,baro,489.7132 +29244000,mag,0.19700001,-0.07900001,0.432 +29244000,imu,-0.2832456,0.18415463,-9.860466,-0.006296954,-0.0112667885,0.005533941 +29244000,baro,489.67563 +29244000,airspeed,2.330566,2.2759466 +29252000,imu,-0.15490112,0.17799927,-9.93553,-0.0048112026,-0.012901126,0.0075461394 +29252000,mag,0.19700001,-0.07900001,0.432 +29252000,baro,489.95734 +29252000,airspeed,-0.89756924,-0.87651885 +29256000,airspeed,3.4319296,3.3514998 +29256000,mag,0.19700001,-0.07900001,0.432 +29256000,baro,489.66626 +29256000,imu,-0.16647466,0.2557653,-9.870995,-0.012329301,-0.0059162104,0.0024137187 +29264000,imu,-0.21112561,0.21374649,-9.928637,-0.0068314164,-0.0016875969,0.001270077 +29264000,baro,489.68973 +29264000,airspeed,3.6661294,3.580206 +29264000,mag,0.19900002,-0.077000014,0.43100002 +29268000,airspeed,-2.9705691,-2.9009295 +29268000,mag,0.19900002,-0.077000014,0.43100002 +29268000,imu,-0.13215436,0.22927174,-9.867926,-0.0078062713,-0.005118638,0.0010296501 +29268000,baro,489.79303 +29272000,mag,0.19900002,-0.077000014,0.43100002 +29272000,imu,-0.20387295,0.27350074,-9.8542795,-0.006286405,0.0008411607,-0.0016840943 +29272000,baro,489.9996 +29272000,airspeed,-4.0951796,-3.9991257 +29276000,baro,489.8212 +29276000,airspeed,-2.7134378,-2.649821 +29276000,imu,-0.2455304,0.20990399,-9.872366,-0.005227161,0.004245317,-0.0035668858 +29276000,mag,0.19900002,-0.077000014,0.43100002 +29280000,imu,-0.2176611,0.17367482,-9.856673,-0.013314166,0.00039326816,0.00023834595 +29280000,airspeed,-2.6435313,-2.5815568 +29284000,airspeed,-2.5458298,-2.4861538 +29284000,imu,-0.2643065,0.20707549,-9.839358,-0.015693314,0.004091244,0.0058681904 +29284000,baro,489.74606 +29284000,mag,0.19900002,-0.077000014,0.43100002 +29288000,airspeed,2.9398172,2.8708937 +29288000,baro,489.8165 +29288000,mag,0.19900002,-0.077000014,0.43100002 +29288000,imu,-0.25221276,0.23866192,-9.821966,-0.010701227,0.0056098187,0.0045024836 +29292000,baro,489.86813 +29292000,airspeed,3.18298,3.108346 +29292000,mag,0.19900002,-0.077000014,0.43100002 +29292000,imu,-0.17332646,0.2268391,-9.863909,-0.013887735,-7.999435e-05,0.0005774043 +29296000,airspeed,2.6664464,2.6039388 +29296000,baro,489.77423 +29296000,imu,-0.16302729,0.1263969,-9.806974,-0.009092024,0.0052379034,0.0014736928 +29296000,mag,0.19900002,-0.077000014,0.43100002 +29300000,mag,0.19900002,-0.077000014,0.43100002 +29300000,imu,-0.21647303,0.14281619,-9.817686,-0.0036864372,0.005575342,0.0027093517 +29300000,airspeed,-3.1107104,-3.0378013 +29300000,baro,489.69913 +29308000,mag,0.19900002,-0.077000014,0.43100002 +29308000,baro,489.7226 +29308000,airspeed,-3.067044,-2.9951541 +29308000,imu,-0.17382218,0.260285,-9.801358,-0.009289064,0.011979755,0.0060152663 +29312000,airspeed,-2.8238876,-2.7576814 +29312000,baro,489.8212 +29312000,mag,0.19900002,-0.077000014,0.43100002 +29312000,imu,-0.19620845,0.22517718,-9.83191,-0.004236672,0.00606272,0.0036380829 +29316000,baro,489.68503 +29316000,imu,-0.21036628,0.1607843,-9.874586,0.0018719609,0.009857042,0.0013232375 +29316000,airspeed,-2.2621737,-2.2091544 +29316000,mag,0.20300001,-0.08100001,0.42800003 +29320000,gps,490380.0,85456071.0,473977510.0,0.0,0.01,0.74 +29320000,mag,0.202,-0.08100001,0.42800003 +29320000,imu,-0.12751147,0.17639896,-9.909326,0.0041839504,0.016689388,0.0013935316 +29320000,baro,489.67563 +29320000,airspeed,-1.7470113,-1.7060668 +29324000,baro,489.8259 +29324000,airspeed,-1.7108037,-1.6706927 +29324000,imu,-0.11291479,0.18202701,-9.849389,0.005234812,0.012935616,0.003154956 +29324000,mag,0.202,-0.08100001,0.42800003 +29328000,imu,-0.23036832,0.18472655,-9.848731,0.001576307,0.015698995,0.00085262506 +29328000,airspeed,0.6380145,0.62305677 +29328000,mag,0.202,-0.08100001,0.42800003 +29328000,baro,489.7977 +29332000,imu,-0.25586385,0.14603402,-9.88243,-0.0039976463,0.012389748,-0.0049672714 +29332000,airspeed,-3.0304635,-2.9594169 +29332000,mag,0.202,-0.08100001,0.42800003 +29332000,baro,489.7977 +29336000,mag,0.202,-0.08100001,0.42800003 +29336000,airspeed,-1.3520417,-1.3203436 +29336000,imu,-0.22537212,0.16252676,-9.866455,-0.0013049134,-0.0020056409,-0.0033067425 +29336000,baro,489.8071 +29340000,imu,-0.24561514,0.19293322,-9.897185,-0.0020284648,-0.0007289039,-0.00045086144 +29340000,airspeed,2.1651955,2.114441 +29340000,baro,489.74606 +29340000,mag,0.202,-0.08100001,0.42800003 +29344000,imu,-0.19901338,0.16763832,-9.899278,-0.00060542097,0.009203627,0.0020433336 +29344000,airspeed,1.7148381,1.6746411 +29348000,baro,489.73666 +29348000,imu,-0.19963518,0.16506355,-9.923771,-0.00050042337,0.004900314,0.0020200862 +29348000,mag,0.202,-0.08100001,0.42800003 +29348000,airspeed,-3.1692212,-3.0949323 +29352000,imu,-0.1976903,0.20413628,-9.926592,-0.005087364,0.005432635,-0.002961084 +29352000,airspeed,-2.3731203,-2.3175075 +29356000,mag,0.202,-0.08100001,0.42800003 +29356000,airspeed,3.632777,3.5475662 +29356000,baro,489.9996 +29356000,imu,-0.13824083,0.17983113,-9.953723,-0.0074036694,0.007860941,-0.0036578402 +29360000,airspeed,2.6476562,2.585566 +29360000,imu,-0.16727269,0.14829671,-9.922094,-0.012166688,0.007934214,-0.00022992761 +29364000,airspeed,2.2456748,2.1930175 +29364000,baro,489.86813 +29364000,mag,0.202,-0.08100001,0.42800003 +29364000,imu,-0.23033693,0.19902845,-9.94245,-0.011755332,0.011429403,0.00131259 +29368000,mag,0.201,-0.07800001,0.43 +29368000,imu,-0.25030297,0.2412453,-9.953697,-0.013637113,0.008050866,-0.0002615564 +29368000,baro,489.73666 +29368000,airspeed,2.5384467,2.4789436 +29372000,imu,-0.24510697,0.18600829,-9.910562,-0.016000988,0.0040712026,0.00014683913 +29372000,baro,489.76486 +29372000,airspeed,-0.6971126,-0.6807706 +29372000,mag,0.201,-0.07800001,0.43 +29376000,mag,0.201,-0.07800001,0.43 +29376000,airspeed,2.1329396,2.0829482 +29376000,imu,-0.26406056,0.110987954,-9.923176,-0.014075666,0.0046076914,0.0027528577 +29376000,baro,489.68503 +29380000,imu,-0.2515023,0.13170739,-9.923511,-0.011363387,0.0016716142,0.00067590154 +29380000,airspeed,-1.9974723,-1.9506559 +29384000,imu,-0.20060357,0.17690746,-9.907228,-0.013066065,0.0020288206,-0.0007712127 +29384000,baro,489.67096 +29384000,mag,0.201,-0.07800001,0.43 +29384000,airspeed,-0.90013134,-0.8790349 +29388000,airspeed,0.4253059,0.41533798 +29388000,imu,-0.18155016,0.15754226,-9.90023,-0.014385845,0.0054723993,0.0061414368 +29388000,baro,489.67096 +29388000,mag,0.201,-0.07800001,0.43 +29396000,imu,-0.16450323,0.22097589,-9.902653,-0.011649361,-0.0040399493,-0.0033269867 +29396000,baro,489.79303 +29396000,mag,0.201,-0.07800001,0.43 +29396000,airspeed,2.135386,2.0853236 +29400000,imu,-0.22912174,0.14393151,-9.969652,-0.009207856,-0.0072394204,0.0051550744 +29400000,mag,0.201,-0.07800001,0.43 +29400000,baro,489.78833 +29400000,airspeed,1.8395863,1.7964587 +29408000,imu,-0.20516837,0.06964021,-9.99367,-0.007393506,-0.0017445659,0.0021417749 +29408000,airspeed,4.1702976,4.0725384 +29408000,mag,0.201,-0.07800001,0.43 +29408000,baro,489.74606 +29412000,imu,-0.24682179,0.18430129,-9.919521,-0.010389252,-0.0041443435,0.00027769041 +29412000,airspeed,2.7160277,2.6523592 +29412000,mag,0.201,-0.07800001,0.43 +29412000,baro,489.74606 +29416000,airspeed,-3.566141,-3.482558 +29416000,baro,489.68033 +29416000,imu,-0.23685929,0.22895136,-9.882947,-0.0033248921,-0.003756483,-0.002479165 +29416000,mag,0.201,-0.07800001,0.43 +29420000,landed,0.0 +29424000,mag,0.201,-0.07800001,0.42900002 +29424000,baro,489.69443 +29424000,imu,-0.18300149,0.22408707,-9.834386,-0.0039253905,-0.006132216,0.0067443694 +29424000,airspeed,-3.666072,-3.5801444 +29428000,baro,489.60992 +29428000,imu,-0.2194598,0.22690615,-9.87323,0.002842198,-0.00429299,0.004504855 +29428000,mag,0.201,-0.07800001,0.42900002 +29428000,airspeed,-2.1296642,-2.079758 +29436000,imu,-0.14106119,0.24315004,-9.922173,0.0065393103,0.006406185,-0.0004970644 +29436000,airspeed,-1.4195698,-1.3862989 +29436000,baro,489.67096 +29436000,mag,0.201,-0.07800001,0.42900002 +29440000,baro,489.91977 +29440000,airspeed,2.1107411,2.06124 +29440000,imu,-0.25710297,0.2041676,-9.877885,0.0062463223,-0.0015424276,-0.0020240159 +29440000,mag,0.201,-0.07800001,0.42900002 +29444000,imu,-0.21418849,0.15464641,-9.865465,0.0019826922,-0.0059986007,0.00037218985 +29444000,mag,0.201,-0.07800001,0.42900002 +29444000,baro,489.68033 +29448000,airspeed,-1.9280112,-1.8828207 +29452000,mag,0.201,-0.07800001,0.43 +29452000,baro,489.79303 +29452000,imu,-0.2245544,0.24940376,-9.911897,0.009560548,-0.0024842958,-0.001866967 +29452000,airspeed,-0.36175764,-0.35327628 +29456000,baro,489.67563 +29456000,mag,0.201,-0.07800001,0.43 +29456000,imu,-0.26974702,0.2439592,-9.909677,0.0039188536,-0.005490647,-0.0072576697 +29456000,airspeed,1.392879,1.3602328 +29460000,mag,0.201,-0.07800001,0.43 +29460000,imu,-0.2599055,0.12831451,-9.907179,0.00038460482,-0.007047355,-0.00026288233 +29460000,airspeed,-1.2560712,-1.2266268 +29460000,baro,489.74136 +29468000,mag,0.201,-0.07800001,0.43 +29468000,airspeed,1.9451292,1.8995426 +29468000,imu,-0.23409034,0.2096893,-9.84883,0.0036897603,0.0006945055,0.0010628874 +29468000,baro,489.64746 +29472000,imu,-0.17898023,0.14386486,-9.878137,0.0062204646,-0.005015168,0.0066908747 +29472000,baro,489.64746 +29472000,airspeed,4.6056714,4.4977317 +29472000,mag,0.201,-0.07800001,0.43 +29476000,mag,0.2,-0.07800001,0.43 +29476000,airspeed,2.2209826,2.168925 +29476000,baro,489.68973 +29476000,imu,-0.20602176,0.13546409,-9.86156,0.0009462514,-0.010836537,0.0029777344 +29480000,mag,0.2,-0.07800001,0.43 +29480000,baro,489.64746 +29480000,airspeed,-2.3955495,-2.3394067 +29480000,imu,-0.21486306,0.1765375,-9.882633,-0.0005634014,-0.007346286,-0.0020133925 +29484000,airspeed,1.2006358,1.17248 +29484000,imu,-0.23723947,0.1301383,-9.943594,0.0033284938,-0.0006808321,-0.0026177191 +29484000,baro,489.8916 +29484000,mag,0.2,-0.07800001,0.43 +29488000,baro,489.74136 +29488000,airspeed,-1.7039098,-1.6639665 +29488000,mag,0.2,-0.07800001,0.43 +29488000,imu,-0.27342668,0.11844206,-9.947556,0.0013560305,0.0036139367,0.00015523095 +29492000,baro,489.60992 +29492000,imu,-0.2183287,0.16636698,-9.9085245,0.0006314843,-0.002530166,0.00048539476 +29492000,mag,0.2,-0.07800001,0.43 +29492000,airspeed,1.1474929,1.1206023 +29496000,baro,489.68033 +29496000,airspeed,2.353056,2.297904 +29496000,mag,0.2,-0.07800001,0.43 +29496000,imu,-0.199689,0.16982086,-9.862162,0.0059309253,-0.0060929484,0.0039184196 +29504000,imu,-0.19690654,0.18721144,-9.802097,-0.0022078387,3.7363796e-05,-0.0009766294 +29504000,baro,489.7179 +29504000,airspeed,-3.657002,-3.5712783 +29504000,mag,0.2,-0.07800001,0.43 +29508000,mag,0.2,-0.077000014,0.43 +29508000,airspeed,-3.4308474,-3.3504312 +29508000,baro,489.68973 +29508000,imu,-0.186157,0.19252874,-9.856191,-0.0035249982,0.0038011977,0.0043243472 +29512000,airspeed,2.7924995,2.7270458 +29512000,baro,489.68973 +29512000,mag,0.2,-0.077000014,0.43 +29512000,imu,-0.1163613,0.21305126,-9.880914,0.0008817025,0.0008722091,0.0040141568 +29516000,airspeed,-2.8140717,-2.7481096 +29516000,mag,0.2,-0.077000014,0.43 +29516000,imu,-0.17494835,0.20093271,-9.907774,-0.0007682317,-0.0040839957,0.0005273106 +29516000,baro,489.70383 +29520000,gps,490243.0,85456071.0,473977510.0,0.0,0.0,0.78999996 +29524000,baro,489.7226 +29524000,mag,0.201,-0.07900001,0.432 +29524000,airspeed,4.348052,4.246128 +29524000,imu,-0.11412432,0.1860945,-9.935961,0.009596597,-0.0005219662,-0.004001178 +29528000,mag,0.201,-0.07900001,0.432 +29528000,baro,489.7132 +29532000,imu,-0.18526521,0.20970027,-9.821105,0.007771756,-0.0025778573,-0.0019190629 +29532000,airspeed,-1.9011167,-1.8565726 +29532000,mag,0.201,-0.07900001,0.432 +29532000,baro,489.5395 +29536000,baro,489.6334 +29536000,airspeed,1.928777,1.8835742 +29536000,mag,0.201,-0.07900001,0.432 +29536000,imu,-0.1954717,0.19755939,-9.733455,0.011088421,-0.0028130454,0.0041099386 +29540000,imu,-0.18941782,0.165286,-9.795896,0.0068034106,-0.0033137426,-0.0009914589 +29540000,airspeed,1.9419328,1.896435 +29540000,baro,489.51132 +29540000,mag,0.201,-0.07900001,0.432 +29548000,baro,489.5254 +29548000,mag,0.201,-0.07900001,0.432 +29548000,airspeed,2.7903836,2.7250047 +29548000,imu,-0.20684375,0.14325075,-9.96776,0.005315257,-0.009321525,-0.011822193 +29552000,imu,-0.20583864,0.13143954,-9.952325,0.0045281714,-0.008233105,-0.0011419201 +29552000,baro,489.56296 +29552000,airspeed,-2.0235422,-1.9761261 +29552000,mag,0.201,-0.07900001,0.432 +29556000,airspeed,1.0227842,0.9988181 +29556000,mag,0.201,-0.07900001,0.432 +29556000,imu,-0.22538804,0.17105538,-9.965913,-0.0031849765,-0.009676786,0.005794399 +29556000,baro,489.56296 +29560000,airspeed,-2.2670302,-2.213913 +29560000,mag,0.201,-0.07900001,0.432 +29560000,baro,489.5301 +29560000,imu,-0.2392738,0.19175233,-9.939599,0.0021707492,-0.013333677,0.0061351503 +29564000,mag,0.201,-0.07900001,0.432 +29564000,baro,489.5301 +29564000,imu,-0.2513954,0.24486805,-9.889174,0.008464835,-0.016223108,0.001208114 +29564000,airspeed,3.7918043,3.702961 +29568000,airspeed,-2.628927,-2.567319 +29568000,imu,-0.26209095,0.27121773,-9.88756,0.0025950533,-0.00881001,-0.00016847608 +29572000,baro,489.56296 +29572000,imu,-0.30201223,0.17708375,-9.919579,-0.0050552953,-0.004269427,0.006673019 +29572000,mag,0.201,-0.07900001,0.432 +29572000,airspeed,0.7541824,0.7365102 +29576000,imu,-0.2378663,0.18310411,-9.957049,-0.005886589,-0.011433055,0.0017662607 +29576000,airspeed,2.9001367,2.83218 +29576000,mag,0.201,-0.07900001,0.432 +29576000,baro,489.56296 +29580000,imu,-0.11952875,0.20252576,-9.989486,-0.0030562333,-0.012479342,-0.007462426 +29580000,mag,0.2,-0.077000014,0.43300003 +29580000,baro,489.7132 +29580000,airspeed,-3.4323854,-3.3519263 +29588000,airspeed,-1.4806944,-1.4459894 +29588000,baro,489.66626 +29588000,imu,-0.24510688,0.13666457,-9.892168,-0.0007236426,0.002326735,-0.004799551 +29588000,mag,0.2,-0.077000014,0.43300003 +29592000,airspeed,-1.7177192,-1.677472 +29592000,mag,0.2,-0.077000014,0.43300003 +29592000,baro,489.5301 +29592000,imu,-0.22093228,0.17976046,-9.9165,-0.0009888196,-0.0050107636,-0.00080694864 +29600000,mag,0.2,-0.077000014,0.43300003 +29600000,baro,489.50192 +29600000,airspeed,-3.9299703,-3.8378959 +29600000,imu,-0.2169762,0.19552137,-9.970321,-0.004947905,-0.0040665506,-0.0028171004 +29604000,airspeed,3.5636506,3.4801378 +29604000,mag,0.2,-0.077000014,0.43300003 +29604000,baro,489.60052 +29604000,imu,-0.18420152,0.2062688,-9.961728,0.0038679487,-0.0033527585,-0.0017976892 +29608000,airspeed,-2.7471433,-2.682765 +29608000,baro,489.59583 +29608000,mag,0.2,-0.077000014,0.43300003 +29608000,imu,-0.21987236,0.27716374,-9.955389,0.0015728498,-0.00017697221,0.00011700428 +29616000,airspeed,-3.8880966,-3.7969882 +29616000,baro,489.56296 +29616000,mag,0.2,-0.077000014,0.43300003 +29616000,imu,-0.23549603,0.16084081,-9.978659,-0.0028905459,0.0068063424,0.0040971516 +29620000,baro,489.52072 +29620000,mag,0.2,-0.077000014,0.43300003 +29620000,airspeed,3.1912532,3.1164815 +29620000,imu,-0.20978537,0.1397044,-9.976232,0.00027523085,0.0035919058,0.0012872918 +29624000,baro,489.60052 +29624000,mag,0.2,-0.077000014,0.43300003 +29624000,airspeed,-2.8661063,-2.7989392 +29624000,imu,-0.23905301,0.18855388,-9.938948,0.0012360086,-0.0008686826,-0.00024940885 +29628000,airspeed,-2.7505767,-2.6861336 +29628000,mag,0.2,-0.07900001,0.432 +29628000,baro,489.50192 +29628000,imu,-0.25524464,0.18024515,-9.908903,-0.0088099735,0.00071468495,0.005727256 +29632000,imu,-0.2630056,0.11040031,-9.97309,-0.0036044638,0.0033767768,0.0028478259 +29632000,airspeed,1.6744975,1.6352658 +29632000,mag,0.2,-0.07900001,0.432 +29632000,baro,489.50192 +29636000,imu,-0.23102997,0.07450671,-9.974191,-0.0013856048,0.0022033395,0.0018223753 +29636000,airspeed,-3.0672405,-2.9953642 +29636000,baro,489.57706 +29636000,mag,0.2,-0.07900001,0.432 +29640000,mag,0.2,-0.07900001,0.432 +29640000,imu,-0.22307532,0.09439456,-9.955837,-0.010123184,0.0040627043,0.004071183 +29640000,baro,489.68503 +29640000,airspeed,-3.7716396,-3.6832325 +29644000,mag,0.2,-0.07900001,0.432 +29644000,baro,489.6381 +29648000,imu,-0.23381072,0.17647445,-9.9892645,-0.004084517,-0.00638817,-0.008533733 +29648000,airspeed,-3.1515682,-3.077716 +29648000,baro,489.57236 +29648000,mag,0.2,-0.07900001,0.432 +29652000,airspeed,-3.51752,-3.4351008 +29652000,imu,-0.27774906,0.12582454,-9.994842,-0.002122102,-0.0043484713,-0.00091069535 +29652000,baro,489.5348 +29652000,mag,0.2,-0.07900001,0.432 +29656000,airspeed,-3.2594163,-3.1830645 +29656000,baro,489.42682 +29656000,imu,-0.29290476,0.1698229,-9.99973,-0.0067467266,-0.0041033584,0.0047172 +29656000,mag,0.2,-0.07900001,0.432 +29664000,airspeed,3.227001,3.151386 +29664000,baro,489.5442 +29664000,mag,0.2,-0.07900001,0.432 +29664000,imu,-0.23318735,0.07182839,-9.896648,0.0064928695,-0.0051401122,-0.0017876696 +29668000,airspeed,-1.9249731,-1.879853 +29668000,baro,489.67096 +29668000,mag,0.2,-0.07900001,0.432 +29668000,imu,-0.24308504,0.18433465,-9.96178,0.0021416685,0.00038758025,-0.0025501603 +29672000,mag,0.2,-0.07900001,0.432 +29672000,airspeed,1.5419023,1.5057772 +29672000,baro,489.49252 +29672000,imu,-0.24520874,0.25640005,-9.947472,-0.0020519444,-0.0026717074,-0.0018076157 +29676000,imu,-0.19291008,0.23139103,-9.967957,-0.0014330107,-0.005937177,-0.0030739314 +29676000,airspeed,-2.613016,-2.5517957 +29676000,baro,489.49252 +29676000,mag,0.2,-0.07900001,0.432 +29680000,mag,0.20400001,-0.07900001,0.43100002 +29680000,baro,489.5254 +29680000,imu,-0.21109931,0.23594134,-9.937453,-0.0024931743,-0.005731282,-0.0044888114 +29684000,airspeed,0.3621182,0.35363343 +29684000,mag,0.20400001,-0.07900001,0.43100002 +29684000,imu,-0.23054908,0.13676837,-9.842585,-0.0028220247,-0.007123104,-0.00058705953 +29684000,baro,489.5254 +29688000,imu,-0.24443547,-0.00089970056,-9.920902,-2.2844513e-05,-0.011520088,0.006938225 +29688000,mag,0.20400001,-0.07900001,0.43100002 +29688000,airspeed,-2.5295076,-2.4702125 +29688000,baro,489.70383 +29692000,airspeed,2.0920405,2.0430384 +29692000,baro,489.38925 +29692000,mag,0.20400001,-0.08000001,0.43100002 +29692000,imu,-0.22983399,0.09324752,-9.97088,0.0028725239,-0.013024678,0.005227619 +29700000,mag,0.20400001,-0.08000001,0.43100002 +29700000,airspeed,4.1885996,4.09045 +29700000,baro,489.5489 +29700000,imu,-0.24915248,0.1841299,-9.8688545,0.004052302,-0.010562078,-0.0030422432 +29704000,mag,0.20400001,-0.08000001,0.43100002 +29704000,baro,489.41272 +29704000,imu,-0.23187697,0.16234125,-9.908237,0.0023037407,-0.0115476055,-0.0010795558 +29704000,airspeed,-3.186246,-3.1116104 +29708000,baro,489.5254 +29708000,mag,0.20400001,-0.08000001,0.43100002 +29708000,imu,-0.24282257,0.1791503,-9.899829,0.0019526869,-0.010809184,-0.0017165914 +29708000,airspeed,-3.467328,-3.3860853 +29712000,airspeed,3.1255682,3.0523396 +29712000,baro,489.48785 +29712000,imu,-0.21937047,0.21588239,-9.889144,0.0006432177,-0.00959671,-0.0019781594 +29712000,mag,0.20400001,-0.08000001,0.43100002 +29716000,mag,0.20400001,-0.08000001,0.43100002 +29716000,imu,-0.22847204,0.19804402,-9.865089,0.00075360126,-0.0052604266,-0.0025472858 +29716000,airspeed,2.3288746,2.2742984 +29716000,baro,489.58643 +29720000,mag,0.20400001,-0.08000001,0.43100002 +29720000,airspeed,3.7853777,3.6966767 +29720000,imu,-0.21043319,0.096360944,-9.8895445,0.0056539304,-0.0052049574,-0.0013637277 +29720000,gps,490092.0,85456072.0,473977509.0,0.0,0.01,0.71999997 +29720000,baro,489.5489 +29724000,imu,-0.2066001,0.12818618,-9.908907,0.0032422869,-0.013443215,0.0051789596 +29724000,mag,0.20400001,-0.07900001,0.43100002 +29724000,airspeed,-2.22046,-2.1684413 +29724000,baro,489.455 +29728000,mag,0.20400001,-0.07900001,0.43100002 +29728000,airspeed,2.310705,2.2565844 +29728000,baro,489.36108 +29728000,imu,-0.27063975,0.20461789,-9.889249,0.00061954604,-0.015663724,0.006765975 +29732000,airspeed,2.8911927,2.8234427 +29732000,baro,489.55826 +29732000,mag,0.20400001,-0.07900001,0.43100002 +29732000,imu,-0.2551844,0.19044618,-9.934326,0.0024183332,-0.013058225,0.0045944876 +29736000,airspeed,3.6237328,3.5388517 +29736000,mag,0.19900002,-0.077000014,0.43 +29736000,baro,489.39395 +29736000,imu,-0.20128459,0.20055448,-10.014825,-0.0037029823,-0.017504537,0.0038173245 +29740000,airspeed,3.6626854,3.576892 +29740000,mag,0.19900002,-0.077000014,0.43 +29740000,baro,489.39395 +29740000,imu,-0.19530766,0.19009815,-10.000039,-0.0041831485,-0.017273223,-0.0023449135 +29744000,mag,0.19900002,-0.077000014,0.43 +29744000,airspeed,0.97628254,0.9534093 +29744000,baro,489.48315 +29744000,imu,-0.20182385,0.13113074,-9.969391,-0.002020956,-0.016701527,-0.0035638888 +29748000,imu,-0.18598081,0.10933693,-10.027741,-0.0008046417,-0.020626789,-0.0066967215 +29748000,airspeed,2.6658564,2.603402 +29748000,baro,489.4597 +29748000,mag,0.19900002,-0.077000014,0.43 +29752000,baro,489.4362 +29752000,mag,0.19900002,-0.077000014,0.43 +29752000,airspeed,-1.1880691,-1.1602373 +29752000,imu,-0.21513352,0.1255854,-9.953998,-0.0021126163,-0.019396942,-0.0144478185 +29756000,imu,-0.24810338,0.10826114,-9.884232,-0.001393111,-0.015149211,-0.003950489 +29756000,mag,0.19900002,-0.077000014,0.43 +29756000,airspeed,-2.209072,-2.1573205 +29756000,baro,489.4456 +29760000,imu,-0.192199,0.1595843,-9.886597,0.0053723585,-0.011945146,0.008080916 +29760000,airspeed,2.5806859,2.52022 +29760000,mag,0.19900002,-0.077000014,0.43 +29760000,baro,489.50192 +29768000,mag,0.19900002,-0.077000014,0.43 +29768000,baro,489.55356 +29768000,imu,-0.2590065,0.10993738,-9.880159,0.002490263,-0.02058607,0.0038335975 +29768000,airspeed,-4.053635,-3.9586458 +29772000,airspeed,-1.4234679,-1.3901075 +29772000,imu,-0.2555827,0.12756689,-9.915729,0.005574833,-0.01985483,0.00152765 +29772000,mag,0.19900002,-0.077000014,0.43 +29772000,baro,489.59583 +29776000,airspeed,-2.275497,-2.222193 +29776000,imu,-0.26246694,0.117712885,-9.961173,0.006352325,-0.019296441,0.0043476117 +29780000,baro,489.50192 +29780000,mag,0.19900002,-0.077000014,0.43 +29780000,imu,-0.2533837,0.15499876,-9.947485,0.008331964,-0.01867675,0.0018101205 +29780000,airspeed,-1.9108821,-1.8661094 +29784000,airspeed,3.6467333,3.561281 +29784000,baro,489.5395 +29784000,imu,-0.22494496,0.20703273,-9.932469,0.0084080165,-0.018674383,-0.0009680058 +29784000,mag,0.201,-0.077000014,0.432 +29788000,mag,0.201,-0.077000014,0.432 +29788000,baro,489.37515 +29788000,imu,-0.16520658,0.16592002,-9.921945,0.008614327,-0.01962482,0.0035873991 +29788000,airspeed,-1.1065127,-1.0805949 +29792000,baro,489.5395 +29792000,mag,0.201,-0.077000014,0.432 +29792000,airspeed,4.0874343,3.9916546 +29792000,imu,-0.09689457,0.14373262,-9.944345,0.014208687,-0.021958036,0.007337027 +29796000,imu,-0.13692734,0.16652302,-9.977374,0.011987372,-0.017356863,-0.00014657307 +29796000,baro,489.33762 +29796000,airspeed,0.9537409,0.9314036 +29796000,mag,0.201,-0.077000014,0.432 +29800000,mag,0.201,-0.077000014,0.432 +29800000,imu,-0.20521855,0.1809403,-9.998331,0.0061467644,-0.014878202,-0.0050968477 +29800000,baro,489.33762 +29800000,airspeed,0.7078286,0.69125074 +29804000,mag,0.201,-0.077000014,0.432 +29804000,imu,-0.18091016,0.19056623,-9.998203,0.0025922698,-0.0179992,-0.003316602 +29804000,baro,489.18268 +29804000,airspeed,-2.5392008,-2.4797535 +29808000,imu,-0.21096386,0.11242934,-9.960161,0.0046631508,-0.015013358,0.0011455104 +29808000,airspeed,-2.2669122,-2.2138138 +29808000,mag,0.201,-0.077000014,0.432 +29808000,baro,489.37515 +29812000,baro,489.38455 +29812000,airspeed,-3.8229043,-3.7333574 +29812000,mag,0.201,-0.077000014,0.432 +29812000,imu,-0.20314416,0.08695257,-9.9566145,0.008003351,-0.013150106,0.0024196978 +29816000,airspeed,-3.0634563,-2.991678 +29816000,baro,489.50192 +29816000,imu,-0.16007893,0.10699972,-9.958009,0.0058212783,-0.024473235,-0.0011961771 +29816000,mag,0.201,-0.077000014,0.432 +29820000,imu,-0.26092705,0.16705054,-9.960511,0.00497137,-0.023036204,0.002296274 +29824000,baro,489.41742 +29824000,mag,0.201,-0.077000014,0.432 +29828000,airspeed,-3.100693,-3.028033 +29828000,imu,-0.21220368,0.1442843,-9.920901,0.0013778732,-0.02265401,-0.0041232607 +29832000,baro,489.50662 +29832000,airspeed,4.1006737,4.0045905 +29832000,mag,0.201,-0.077000014,0.432 +29832000,imu,-0.18297456,0.13571857,-9.971289,0.00278734,-0.012728831,-0.00234852 +29836000,airspeed,-2.6537118,-2.5915391 +29836000,mag,0.2,-0.07900001,0.42900002 +29836000,imu,-0.20689376,0.18895969,-9.993576,-0.0032565924,-0.013929376,-0.0024237614 +29836000,baro,489.46436 +29840000,baro,489.4362 +29840000,imu,-0.24939872,0.18008809,-9.907266,-0.00070039154,-0.0147608835,0.0023755904 +29840000,mag,0.2,-0.07900001,0.42900002 +29840000,airspeed,1.2584924,1.2290099 +29844000,airspeed,1.3388588,1.3074846 +29844000,mag,0.201,-0.07900001,0.42900002 +29844000,baro,489.5489 +29844000,imu,-0.27680415,0.19265662,-9.86739,0.0065087336,-0.017639337,0.0017815877 +29848000,mag,0.201,-0.07900001,0.42900002 +29848000,imu,-0.2844509,0.17394984,-9.89697,0.012076701,-0.01966241,-0.002612247 +29848000,airspeed,-1.5165696,-1.4810444 +29848000,baro,489.39865 +29856000,baro,489.37515 +29856000,airspeed,1.2042276,1.1760201 +29856000,mag,0.201,-0.07900001,0.42900002 +29856000,imu,-0.25152186,0.14204685,-9.983687,0.00577905,-0.014559816,0.006457812 +29860000,airspeed,4.598714,4.491 +29864000,baro,489.49722 +29864000,airspeed,2.898539,2.830624 +29864000,mag,0.201,-0.07900001,0.42900002 +29864000,imu,-0.17198677,0.19688162,-9.926932,0.0073872707,-0.010566742,0.012072609 +29872000,imu,-0.23243563,0.22594655,-9.884366,0.010997163,-0.006967149,-0.0030405822 +29872000,mag,0.201,-0.07900001,0.42900002 +29872000,airspeed,1.7799553,1.7382665 +29872000,baro,489.33762 +29876000,imu,-0.2740432,0.16507237,-9.875302,0.013827775,-0.0051977756,-1.22260435e-05 +29876000,mag,0.201,-0.07900001,0.42900002 +29876000,airspeed,-3.2251816,-3.1496415 +29876000,baro,489.3423 +29880000,airspeed,-2.4309936,-2.374033 +29880000,imu,-0.21238868,0.18525408,-9.901966,0.014308773,-0.001696791,-0.0020251146 +29884000,airspeed,-2.4879494,-2.4296641 +29884000,mag,0.201,-0.07900001,0.42900002 +29884000,baro,489.42682 +29884000,imu,-0.14570321,0.22371222,-9.880297,0.01045812,0.00015986402,-0.0007812179 +29888000,airspeed,-1.5740707,-1.5372077 +29888000,mag,0.201,-0.07900001,0.43 +29888000,imu,-0.20261513,0.22712268,-9.845952,0.01596876,-0.00069528405,-2.6676486e-05 +29888000,baro,489.29065 +29892000,imu,-0.22425982,0.2071809,-9.932421,0.016287465,-0.00039942813,-0.00032652504 +29892000,mag,0.202,-0.077000014,0.42900002 +29892000,baro,489.33292 +29896000,mag,0.202,-0.077000014,0.42900002 +29896000,airspeed,3.0139234,2.9433334 +29896000,imu,-0.11697968,0.18353678,-9.935128,0.013554749,-0.004193136,-0.0002899717 +29896000,baro,489.33292 +29900000,mag,0.202,-0.077000014,0.42900002 +29900000,imu,-0.1511161,0.17428368,-9.892314,0.015000531,-0.006117395,-0.0030401896 +29900000,airspeed,-3.4232223,-3.343009 +29900000,baro,489.51602 +29904000,baro,489.3423 +29904000,mag,0.202,-0.077000014,0.42900002 +29904000,airspeed,3.0992951,3.0267038 +29904000,imu,-0.24246658,0.16909665,-9.825437,0.008172182,-0.0040627858,0.00196806 +29908000,baro,489.3423 +29908000,imu,-0.2716669,0.16893536,-9.869637,0.0028226483,0.003125066,0.008405638 +29908000,mag,0.202,-0.077000014,0.42900002 +29908000,airspeed,2.1622005,2.1115577 +29912000,mag,0.202,-0.077000014,0.42900002 +29912000,baro,489.40332 +29912000,imu,-0.23862173,0.17781535,-9.940054,0.0122353565,0.0027115648,0.007855674 +29912000,airspeed,-1.0108737,-0.9871932 +29916000,imu,-0.21190871,0.23529394,-9.931418,0.0132693285,-0.0017836831,0.0037486448 +29916000,mag,0.202,-0.077000014,0.42900002 +29916000,airspeed,1.2134207,1.1849967 +29916000,baro,489.38455 +29920000,gps,489939.0,85456072.0,473977509.0,-0.01,-0.01,0.69 +29920000,airspeed,-1.8192348,-1.7766445 +29920000,baro,489.1545 +29920000,mag,0.202,-0.077000014,0.42900002 +29920000,imu,-0.23092182,0.13998574,-9.935819,0.0062353164,-0.0033261802,0.004829386 +29924000,baro,489.1545 +29924000,imu,-0.26623043,0.12744232,-9.931051,-0.00149346,-0.004155835,0.005492425 +29924000,mag,0.202,-0.077000014,0.42900002 +29924000,airspeed,3.3608205,3.2821398 +29928000,mag,0.202,-0.077000014,0.42900002 +29928000,imu,-0.21124539,0.20032354,-9.947727,-0.0054478617,-0.0018940521,-0.0024789628 +29928000,baro,489.41272 +29928000,airspeed,3.6663368,3.5804477 +29932000,imu,-0.18848543,0.13856791,-9.914335,-0.0015135773,-0.0054598283,-0.003626799 +29932000,airspeed,-1.3279668,-1.2968574 +29932000,mag,0.202,-0.077000014,0.42900002 +29932000,baro,489.41272 +29936000,airspeed,3.6362257,3.5510235 +29936000,mag,0.202,-0.077000014,0.42900002 +29936000,baro,489.50192 +29936000,imu,-0.27285418,0.098279744,-9.902394,-0.00070780347,-0.011633831,-0.0022947723 +29940000,imu,-0.24428958,0.15182091,-9.843777,-0.0044044107,-0.010563724,-0.001935533 +29940000,airspeed,1.5352445,1.4992778 +29940000,baro,489.42682 +29940000,mag,0.202,-0.08200001,0.432 +29944000,imu,-0.2314986,0.17220892,-9.796745,-0.009652635,-0.0063109826,-0.00082210236 +29944000,airspeed,-1.8728799,-1.8290033 +29944000,baro,489.42682 +29944000,mag,0.202,-0.08200001,0.432 +29948000,airspeed,1.1135715,1.0874875 +29948000,baro,489.37045 +29948000,imu,-0.24589469,0.17745718,-9.883036,-0.011673155,-0.0075024175,-0.0011149214 +29948000,mag,0.202,-0.08200001,0.432 +29952000,airspeed,-4.0159883,-3.92195 +29952000,baro,489.2296 +29952000,mag,0.202,-0.08200001,0.432 +29952000,imu,-0.22301005,0.21285702,-9.956856,-0.012541999,-0.011216595,0.00011329587 +29956000,airspeed,2.6742,2.611581 +29956000,mag,0.202,-0.08200001,0.432 +29956000,baro,489.2296 +29956000,imu,-0.19199036,0.17505832,-9.9486265,-0.012461577,-0.010810639,0.0017720655 +29960000,mag,0.202,-0.08200001,0.432 +29960000,airspeed,-3.5902762,-3.506159 +29960000,imu,-0.18397598,0.15638961,-9.949072,-0.0063269264,-0.0055807447,0.00012997835 +29964000,baro,489.4597 +29964000,imu,-0.26325825,0.13203533,-9.9784775,-0.0076157707,-0.0036806464,-0.0057834624 +29964000,airspeed,2.1986291,2.1471171 +29968000,baro,489.33292 +29968000,imu,-0.19821095,0.083142914,-9.980893,-0.011128164,-0.008876658,-0.0025149446 +29968000,mag,0.202,-0.08200001,0.432 +29968000,airspeed,2.719896,2.656191 +29972000,imu,-0.16396506,0.08897985,-9.975911,-0.011156311,-0.009582503,0.0053941878 +29972000,airspeed,3.5111911,3.428919 +29972000,mag,0.202,-0.08200001,0.432 +29972000,baro,489.49722 +29976000,baro,489.36108 +29976000,mag,0.202,-0.08200001,0.432 +29976000,imu,-0.28624746,0.09394094,-9.928821,-0.0074139587,-0.009346726,0.006115323 +29976000,airspeed,-2.4962213,-2.4377506 +29980000,airspeed,-4.0548077,-3.9598105 +29980000,imu,-0.20208268,0.13585156,-9.860921,-0.0070958617,-0.009523883,0.0057297116 +29980000,mag,0.202,-0.08200001,0.432 +29980000,baro,489.4409 +29984000,imu,-0.0854846,0.17306246,-9.864066,-0.013605634,-0.008821486,0.0018158234 +29984000,mag,0.202,-0.08200001,0.432 +29984000,airspeed,1.4813706,1.4466748 +29984000,baro,489.32352 +29988000,imu,-0.15151152,0.14663863,-9.910582,-0.0119227795,-0.009645224,-0.0058671767 +29988000,airspeed,1.7518299,1.7108071 +29992000,baro,489.30475 +29992000,mag,0.19900002,-0.08100001,0.43300003 +29992000,imu,-0.2407235,0.15789387,-9.903351,-0.010036746,-0.011563279,-0.0051270197 +29992000,airspeed,1.8627746,1.8191475 +29996000,mag,0.19900002,-0.08100001,0.43300003 +29996000,baro,489.25308 +29996000,imu,-0.25299057,0.20384982,-9.89033,-0.006918499,-0.013524431,-0.0039606798 +29996000,airspeed,-2.8487961,-2.7820847 +30004000,mag,0.19900002,-0.08100001,0.43300003 +30004000,airspeed,-2.572954,-2.5127017 +30004000,baro,489.25308 +30004000,imu,-0.17117234,0.22998433,-9.894975,-0.00612459,-0.0102197975,-0.0004500433 +30008000,baro,489.1263 +30008000,mag,0.19900002,-0.08100001,0.43300003 +30008000,airspeed,2.0736225,2.0250788 +30008000,imu,-0.13866088,0.18072546,-9.902199,-0.006533307,-0.011321135,0.0024926495 +30012000,mag,0.19900002,-0.08100001,0.43300003 +30012000,baro,489.1263 +30012000,imu,-0.14230986,0.12079715,-9.901066,-0.008470723,-0.011330026,-0.0024736626 +30012000,airspeed,1.1896154,1.1617663 +30016000,imu,-0.21357276,0.12556522,-9.924357,-0.005259579,-0.01163028,-0.0053145937 +30016000,airspeed,-1.6343966,-1.5961206 +30016000,baro,489.27658 +30016000,mag,0.19900002,-0.08100001,0.43300003 +30024000,mag,0.19900002,-0.08100001,0.43300003 +30024000,imu,-0.22837254,0.19091797,-9.890103,-0.00831461,-0.006046689,0.0054761083 +30024000,airspeed,1.6907564,1.6511469 +30024000,baro,489.41272 +30028000,mag,0.19900002,-0.08100001,0.43300003 +30028000,baro,489.3423 +30032000,mag,0.19900002,-0.08100001,0.43300003 +30032000,imu,-0.26980236,0.16465947,-9.886474,-0.005190333,-0.015086689,0.0004105314 +30032000,baro,489.36108 +30032000,airspeed,2.061846,2.0135493 +30036000,baro,489.38455 +30036000,imu,-0.24097218,0.16612798,-9.899246,-0.0060015963,-0.009466795,0.0033432595 +30036000,airspeed,-3.088359,-3.0160127 +30036000,mag,0.19900002,-0.08100001,0.43300003 +30040000,baro,489.30942 +30040000,imu,-0.15569134,0.23725733,-9.912919,0.0027809031,-0.009974568,0.0055925944 +30040000,airspeed,1.8530806,1.8096797 +30040000,mag,0.19900002,-0.08100001,0.43300003 +30048000,baro,489.31882 +30048000,airspeed,-1.9546431,-1.9088618 +30048000,mag,0.19900002,-0.08200001,0.42900002 +30048000,imu,-0.27231035,0.1879559,-9.934207,-0.009199072,-0.008913969,-0.004093468 +30052000,airspeed,1.951177,1.9054835 +30052000,imu,-0.2372674,0.13147663,-9.9710455,-0.005342842,-0.008302412,-0.0034041533 +30052000,baro,489.26248 +30052000,mag,0.19900002,-0.08200001,0.42900002 +30056000,baro,489.29065 +30056000,mag,0.19900002,-0.08200001,0.42900002 +30060000,mag,0.19900002,-0.08200001,0.42900002 +30060000,imu,-0.1548558,0.17325127,-9.930838,-0.0017688841,7.246735e-05,-0.0028838643 +30060000,baro,489.29065 +30060000,airspeed,-3.1010077,-3.0283813 +30064000,baro,489.3423 +30064000,airspeed,1.8505669,1.8072206 +30064000,imu,-0.16775534,0.16031,-9.993502,0.0002501341,0.0019548938,-0.003128847 +30064000,mag,0.19900002,-0.08200001,0.42900002 +30068000,baro,489.18268 +30068000,imu,-0.19635566,0.13087304,-9.973895,0.008948305,-0.0033617928,-0.009130668 +30068000,airspeed,2.536697,2.4773033 +30068000,mag,0.19900002,-0.08200001,0.42900002 +30072000,airspeed,2.710173,2.6466985 +30072000,imu,-0.22067885,0.15628129,-9.937949,0.0030428309,-0.004292649,-0.007977687 +30076000,airspeed,1.2162697,1.1877824 +30076000,baro,489.31882 +30076000,imu,-0.20586087,0.18345362,-9.950179,-0.0067967745,-0.0051150336,6.6894885e-05 +30076000,mag,0.19900002,-0.08200001,0.42900002 +30080000,imu,-0.21266465,0.18059315,-9.938722,-0.004256604,-0.0050545917,0.00021997535 +30080000,airspeed,-1.7884275,-1.7465514 +30080000,mag,0.19900002,-0.08200001,0.42900002 +30080000,baro,489.19675 +30084000,airspeed,-3.0207868,-2.9500358 +30084000,mag,0.19900002,-0.08200001,0.42900002 +30084000,baro,489.30942 +30084000,imu,-0.21193548,0.112042576,-9.952698,0.0013881105,0.0018981785,-0.0016153958 +30092000,mag,0.19900002,-0.08200001,0.42900002 +30092000,baro,489.29065 +30092000,imu,-0.22342427,0.1267566,-9.892987,-0.0011739815,-0.0046239817,-0.0016119655 +30092000,airspeed,3.926911,3.8349419 +30096000,imu,-0.25427648,0.07824229,-9.881835,0.0007079649,-0.0012009009,0.001933681 +30096000,mag,0.19900002,-0.08300001,0.42700002 +30096000,airspeed,3.3821054,3.3028932 +30096000,baro,489.30005 +30100000,mag,0.19900002,-0.08300001,0.42700002 +30100000,baro,489.17328 +30100000,airspeed,-2.8016222,-2.7360256 +30100000,imu,-0.24124505,0.15455507,-9.874779,0.0040390096,0.00063414127,0.007678689 +30104000,baro,489.35168 +30104000,mag,0.19900002,-0.08300001,0.42700002 +30104000,airspeed,2.5241027,2.4649777 +30104000,imu,-0.21851473,0.17966984,-9.896231,0.0030755245,0.0025773188,0.009271494 +30108000,mag,0.19900002,-0.08300001,0.42700002 +30108000,airspeed,2.149504,2.0991538 +30108000,imu,-0.15703852,0.12215059,-9.898154,0.009130388,-0.00019437092,0.0062734303 +30108000,baro,489.35168 +30112000,airspeed,3.176374,3.102002 +30112000,mag,0.19900002,-0.08300001,0.42700002 +30112000,baro,489.18268 +30112000,imu,-0.16109778,0.1546728,-9.878571,0.0076915794,-0.0073478203,0.0028929764 +30116000,airspeed,2.2111964,2.159421 +30116000,mag,0.19900002,-0.08300001,0.42700002 +30116000,imu,-0.1699845,0.1649118,-9.874797,0.0012903898,-0.0071033877,0.007699785 +30116000,baro,489.19675 +30120000,baro,489.19675 +30120000,gps,489793.0,85456073.0,473977509.0,-0.01,0.03,0.71999997 +30120000,airspeed,-2.2806888,-2.227286 +30120000,mag,0.19900002,-0.08300001,0.42700002 +30120000,imu,-0.14403574,0.14629215,-9.9123,0.005892182,-0.0015669216,0.0060214004 +30124000,imu,-0.20155099,0.21657561,-9.978337,0.008317376,-0.0008584393,0.002112197 +30124000,airspeed,-3.3595464,-3.2808619 +30128000,baro,489.1451 +30128000,mag,0.19900002,-0.08300001,0.42700002 +30128000,imu,-0.23237774,0.21746191,-9.907124,0.0031918492,-0.0001969606,0.0064274506 +30128000,airspeed,-2.1563857,-2.1059003 +30136000,mag,0.19900002,-0.08300001,0.42700002 +30136000,airspeed,0.7287997,0.7117354 +30136000,imu,-0.20240526,0.21696235,-9.903393,0.0012022153,-0.006790723,0.0028141395 +30136000,baro,489.18268 +30140000,imu,-0.19400366,0.16757932,-9.904214,0.0020564687,-0.008298142,0.0033910456 +30140000,baro,489.16388 +30140000,airspeed,3.010541,2.9400542 +30140000,mag,0.19900002,-0.08300001,0.42700002 +30144000,mag,0.19900002,-0.08300001,0.42700002 +30144000,imu,-0.22915226,0.1050007,-9.857476,-0.0010763837,-0.0019931823,0.0018584444 +30144000,baro,489.19675 +30144000,airspeed,-3.070131,-2.9982424 +30152000,mag,0.201,-0.08000001,0.43 +30152000,baro,489.239 +30152000,airspeed,-2.8658626,-2.7987502 +30152000,imu,-0.2389837,0.08340056,-9.951143,-0.0020182792,-0.00940141,-0.0030459205 +30156000,airspeed,0.56024635,0.54712605 +30156000,baro,489.25308 +30156000,imu,-0.2494084,0.09132659,-9.856164,-0.005939733,-0.00984453,-0.005117156 +30156000,mag,0.201,-0.08000001,0.43 +30160000,imu,-0.2698461,0.15423705,-9.87001,-0.005526771,-0.011308212,-0.0076192673 +30168000,mag,0.201,-0.08000001,0.43 +30168000,imu,-0.23428623,0.172815,-9.885905,-0.0067675994,-0.006021603,-0.0011758899 +30168000,airspeed,-1.8714719,-1.8276532 +30168000,baro,489.16858 +30176000,airspeed,-1.007604,-0.98400635 +30176000,imu,-0.19640185,0.20006932,-9.845157,0.0012712224,-0.0032335173,0.0013122866 +30176000,mag,0.201,-0.08000001,0.43 +30176000,baro,489.26718 +30180000,airspeed,-2.7669115,-2.702135 +30180000,mag,0.201,-0.08000001,0.43 +30180000,baro,489.12164 +30180000,imu,-0.197592,0.15619259,-9.92773,0.0031262492,-0.0061661587,0.002289045 +30184000,mag,0.201,-0.08000001,0.43 +30184000,imu,-0.20674655,0.19491816,-9.933833,0.0015136079,-0.0072558466,0.00033165686 +30184000,baro,489.0418 +30184000,airspeed,3.7177987,3.6307776 +30192000,baro,489.2202 +30192000,airspeed,2.3039947,2.2500417 +30192000,imu,-0.24014315,0.12968989,-9.898536,-0.00030478265,-0.0018231639,0.00012644586 +30192000,mag,0.201,-0.08000001,0.43 +30196000,imu,-0.19591945,0.2158408,-9.9365835,0.0013162128,-0.004911586,-0.0071810964 +30196000,mag,0.201,-0.08000001,0.43 +30196000,airspeed,-2.155203,-2.1047344 +30196000,baro,489.2202 +30204000,mag,0.19900002,-0.07900001,0.42700002 +30204000,baro,489.07938 +30204000,airspeed,-2.7645564,-2.6998415 +30204000,imu,-0.19478463,0.20701076,-9.818648,0.0008162643,-0.007793901,-0.00035456574 +30208000,imu,-0.16195954,0.15748625,-9.858913,-0.0009120185,-0.0057642367,0.0019382468 +30208000,airspeed,2.6584098,2.5961378 +30208000,mag,0.19900002,-0.07900001,0.42700002 +30208000,baro,489.3423 +30216000,airspeed,1.9596627,1.9137933 +30216000,baro,489.0371 +30216000,imu,-0.1458571,0.15970075,-9.932155,-0.0048009716,-0.00924004,0.009231984 +30216000,mag,0.19900002,-0.07900001,0.42700002 +30220000,airspeed,-0.8823188,-0.8616611 +30220000,baro,489.1451 +30220000,imu,-0.1504717,0.13256556,-9.883955,0.00033870246,-0.0068398784,0.003894983 +30220000,mag,0.19900002,-0.08000001,0.42700002 +30224000,mag,0.19900002,-0.08000001,0.42700002 +30224000,airspeed,-2.5677786,-2.5076642 +30224000,imu,-0.17936675,0.1065239,-9.848391,-0.005475498,-0.0009359083,0.0071310066 +30224000,baro,489.11224 +30232000,baro,489.2296 +30232000,mag,0.19900002,-0.08000001,0.42700002 +30232000,airspeed,2.420174,2.3634984 +30232000,imu,-0.16642,0.17246945,-9.939259,-0.005992989,-0.003799366,0.004245279 +30236000,baro,489.2296 +30236000,airspeed,2.2526119,2.1998606 +30236000,mag,0.19900002,-0.08000001,0.42700002 +30236000,imu,-0.15928394,0.13589127,-9.937344,-0.0034465631,-0.009241788,0.0016864432 +30244000,baro,489.06528 +30244000,airspeed,3.2277288,3.1521728 +30244000,mag,0.19900002,-0.08000001,0.42700002 +30244000,imu,-0.20158541,0.087436765,-9.862084,-0.0013872405,-0.010520954,0.003446847 +30248000,airspeed,-3.0858903,-3.0136344 +30248000,imu,-0.2895398,0.078569196,-9.907535,-0.004706708,-0.002989331,0.0017683773 +30248000,baro,489.17328 +30248000,mag,0.19900002,-0.08000001,0.42700002 +30252000,mag,0.2,-0.077000014,0.43 +30252000,airspeed,-2.9662008,-2.896765 +30252000,baro,489.06998 +30252000,imu,-0.273323,0.10602915,-9.918434,0.00051472196,-0.009349216,0.0012977875 +30256000,airspeed,0.20100562,0.19630028 +30256000,mag,0.2,-0.077000014,0.43 +30256000,imu,-0.21384428,0.13437025,-9.866737,0.0040221307,-0.013748222,0.004102597 +30256000,baro,489.06998 +30260000,imu,-0.121811375,0.16485846,-9.93638,0.00066528085,-0.006030451,0.0053530303 +30260000,mag,0.2,-0.077000014,0.43 +30260000,baro,489.0512 +30260000,airspeed,-2.6521404,-2.59006 +30264000,imu,-0.14410654,0.21548113,-9.9620285,-0.0008415702,-0.00581734,0.0005687785 +30264000,mag,0.2,-0.077000014,0.43 +30264000,airspeed,0.813935,0.79488784 +30264000,baro,488.93854 +30268000,imu,-0.2466632,0.22662456,-9.920702,-0.0027835045,-0.0011613521,-0.0035215574 +30268000,mag,0.2,-0.077000014,0.43 +30268000,airspeed,-2.3914323,-2.3354487 +30268000,baro,489.08878 +30276000,airspeed,4.5401154,4.4338336 +30276000,imu,-0.23719443,0.1374418,-9.907791,-0.006828702,-0.0050815004,0.0032928418 +30276000,baro,489.07938 +30276000,mag,0.2,-0.077000014,0.43 +30280000,baro,489.07938 +30280000,imu,-0.24969424,0.15049875,-9.904022,-0.0006156506,-0.0025517803,0.011552915 +30280000,mag,0.2,-0.077000014,0.43 +30280000,airspeed,-3.9481559,-3.8557317 +30284000,imu,-0.22331718,0.15693465,-9.881074,0.0049230084,-0.006960998,0.0074571343 +30284000,mag,0.2,-0.077000014,0.43 +30284000,airspeed,2.724968,2.6611884 +30284000,baro,489.01364 +30288000,airspeed,2.721248,2.6575127 +30288000,baro,489.27658 +30288000,mag,0.2,-0.077000014,0.43 +30288000,imu,-0.15069103,0.13954301,-9.882351,0.0065465374,-0.007457764,0.01009455 +30292000,mag,0.2,-0.077000014,0.43 +30292000,imu,-0.15984754,0.11455215,-9.898284,0.0068348995,-0.0056406492,0.010530306 +30292000,baro,489.19675 +30292000,airspeed,0.85707957,0.8370097 +30296000,mag,0.2,-0.077000014,0.43 +30296000,airspeed,-1.694089,-1.6544194 +30296000,baro,489.19675 +30296000,imu,-0.14945595,0.13928819,-9.900578,0.0035293514,-0.006717876,0.0019477992 +30304000,mag,0.19800001,-0.07500001,0.42800003 +30304000,baro,489.2296 +30304000,imu,-0.24815245,0.060720008,-9.95271,0.0017099533,-0.0042261262,0.0059734336 +30304000,airspeed,2.077951,2.0292885 +30308000,airspeed,-2.5044198,-2.4457703 +30308000,mag,0.19800001,-0.07500001,0.42800003 +30308000,baro,489.2296 +30308000,imu,-0.25156313,0.104150996,-9.930139,0.00085156487,-0.0061802226,0.010216428 +30312000,airspeed,-0.81110626,-0.79212064 +30312000,imu,-0.20125706,0.19885665,-9.876995,-0.0014452343,-0.0104457205,0.010647519 +30316000,baro,489.10754 +30316000,mag,0.19800001,-0.07500001,0.42800003 +30316000,imu,-0.18220581,0.23711623,-9.858444,-0.00010891406,-0.0015344748,0.004559265 +30316000,airspeed,4.076507,3.9810693 +30320000,airspeed,1.2545509,1.2251874 +30320000,mag,0.19800001,-0.07500001,0.42800003 +30320000,baro,489.00424 +30320000,imu,-0.19924386,0.23962851,-9.922711,-0.001158058,-0.00038697416,0.0021815288 +30320000,gps,489652.0,85456073.0,473977509.0,0.01,0.02,0.69 +30328000,baro,488.9714 +30328000,mag,0.19800001,-0.07500001,0.42800003 +30328000,imu,-0.26561484,0.1029576,-9.90184,-0.0050472314,-0.00020607472,0.0001748691 +30328000,airspeed,-1.1594558,-1.1323203 +30332000,baro,489.1545 +30332000,imu,-0.29873794,0.12016249,-9.907148,0.0005712653,0.0016873258,0.0006144459 +30332000,airspeed,-1.2172651,-1.1887635 +30332000,mag,0.19800001,-0.07500001,0.42800003 +30336000,baro,489.1545 +30336000,mag,0.19800001,-0.07500001,0.42800003 +30336000,imu,-0.27122813,0.19801085,-9.931214,0.005909251,-0.00043395226,-0.0034572957 +30336000,airspeed,2.5033858,2.4447703 +30344000,imu,-0.29635325,0.0779917,-9.912915,-0.0019750108,-0.0025483803,0.008167908 +30344000,baro,489.1545 +30344000,airspeed,-1.9187033,-1.8737779 +30344000,mag,0.19800001,-0.07500001,0.42800003 +30348000,airspeed,-1.8720992,-1.8282739 +30348000,baro,489.06998 +30348000,mag,0.19800001,-0.07500001,0.42800003 +30348000,imu,-0.27396813,0.07991783,-9.924273,0.0076298793,0.000977495,0.008127042 +30352000,baro,488.92444 +30352000,airspeed,-3.5192375,-3.4368842 +30352000,imu,-0.22460681,0.11870818,-9.926457,0.0034179483,0.0018581446,0.0024150952 +30352000,mag,0.19800001,-0.07500001,0.42800003 +30356000,mag,0.202,-0.07900001,0.432 +30356000,baro,489.01364 +30356000,airspeed,-1.0166537,-0.9928577 +30356000,imu,-0.24588919,0.14569783,-9.925554,-0.0023916687,-0.005011211,0.0071343007 +30360000,baro,489.01364 +30360000,mag,0.202,-0.07900001,0.432 +30364000,baro,488.9573 +30364000,imu,-0.1722718,0.113583386,-9.877818,-0.0005104171,0.00041382294,2.4974715e-05 +30364000,mag,0.202,-0.07900001,0.432 +30364000,airspeed,-1.6694351,-1.6303654 +30372000,baro,488.93854 +30372000,airspeed,1.1856239,1.1578777 +30372000,mag,0.202,-0.07900001,0.432 +30372000,imu,-0.20291905,0.118167564,-9.854169,-0.0006278484,0.0011973089,0.0046306103 +30376000,mag,0.202,-0.07900001,0.432 +30376000,imu,-0.19559152,0.099606305,-9.922395,5.641609e-05,0.004125158,0.000716786 +30376000,airspeed,1.6305299,1.592372 +30376000,baro,488.93854 +30380000,mag,0.202,-0.07900001,0.432 +30380000,imu,-0.19135264,0.18755735,-9.908898,0.003625464,-0.0021948777,-0.002612737 +30380000,airspeed,-3.433589,-3.353194 +30380000,baro,489.1451 +30388000,imu,-0.18145396,0.22781068,-9.86849,-0.0017873403,-0.007426733,-0.00504448 +30388000,airspeed,-3.194176,-3.1193585 +30388000,mag,0.202,-0.07900001,0.432 +30388000,baro,489.29535 +30396000,airspeed,0.58574086,0.57203376 +30396000,imu,-0.28152856,0.17815156,-9.799533,-0.0010922991,-0.005850854,0.0011346051 +30396000,baro,488.91974 +30396000,mag,0.202,-0.07900001,0.432 +30404000,baro,488.854 +30404000,airspeed,3.227334,3.1518228 +30404000,imu,-0.24690235,0.1952389,-9.91878,-0.0059823324,-0.009252304,-0.0030143626 +30404000,mag,0.202,-0.07900001,0.432 +30412000,baro,488.9526 +30412000,airspeed,-3.8159044,-3.7266 +30412000,imu,-0.21757565,0.19651695,-9.840361,-0.0003909863,-0.0110207945,0.0011028115 +30412000,mag,0.201,-0.07800001,0.42900002 +30416000,baro,488.98077 +30416000,mag,0.201,-0.07800001,0.42900002 +30416000,imu,-0.24937786,0.20079972,-9.874873,0.0012786438,-0.0086665945,0.0013301345 +30416000,airspeed,4.0017924,3.9081306 +30420000,landed,0.0 +30424000,mag,0.201,-0.07800001,0.42900002 +30424000,baro,488.962 +30424000,imu,-0.20401086,0.110719115,-9.8522,-0.0028572222,-0.012738082,0.0017169438 +30424000,airspeed,1.6607924,1.6219232 +30428000,airspeed,-2.8006155,-2.73507 +30428000,baro,488.962 +30428000,mag,0.201,-0.07800001,0.42900002 +30428000,imu,-0.1396062,0.12033489,-9.8894005,-0.0039419187,-0.0050632185,-0.00047982336 +30432000,imu,-0.17711383,0.06808064,-9.9169855,0.0005014998,-0.0016280946,-0.0013113831 +30432000,mag,0.201,-0.07800001,0.42900002 +30432000,baro,488.93384 +30432000,airspeed,1.7336967,1.6931242 +30436000,imu,-0.27748632,0.0870523,-9.878757,0.0004054806,0.0017434997,-0.0036526253 +30436000,baro,488.93384 +30436000,airspeed,-3.498309,-3.4164405 +30436000,mag,0.201,-0.07800001,0.42900002 +30440000,airspeed,0.6071913,0.59297353 +30440000,baro,489.16388 +30440000,imu,-0.24811615,0.17170161,-9.868607,-0.0006086274,-0.0016011228,0.0014702873 +30440000,mag,0.201,-0.07800001,0.42900002 +30444000,baro,489.06998 +30444000,mag,0.201,-0.07800001,0.42900002 +30448000,airspeed,-3.5599468,-3.4766111 +30448000,imu,-0.19353813,0.20548527,-9.883367,-0.0037232756,-0.0046082265,0.0040723807 +30452000,mag,0.201,-0.07800001,0.42900002 +30452000,airspeed,3.319013,3.241344 +30452000,baro,488.91504 +30452000,imu,-0.35397676,0.19810978,-9.923029,-0.00033994103,-0.004021281,-0.0009036193 +30456000,mag,0.201,-0.07800001,0.42900002 +30456000,baro,489.07468 +30456000,airspeed,0.8008182,0.7820706 +30456000,imu,-0.32533303,0.16729766,-9.933518,-0.0017383768,-0.00488212,-0.0031197416 +30460000,imu,-0.28919038,0.22292794,-9.932254,-0.0057510054,-0.010098487,-0.0008793896 +30460000,airspeed,3.0191224,2.9484646 +30464000,mag,0.2,-0.077000014,0.42800003 +30464000,baro,488.9526 +30464000,imu,-0.22531883,0.18665542,-9.923736,-0.005446967,-0.014574624,5.5080436e-05 +30464000,airspeed,-0.8026806,-0.78389513 +30468000,mag,0.2,-0.077000014,0.42800003 +30468000,imu,-0.2188275,0.16002397,-9.906072,-0.0040441244,-0.016410485,-0.0017276887 +30468000,airspeed,3.1651127,3.0910466 +30468000,baro,488.90567 +30472000,baro,488.98077 +30472000,imu,-0.22615574,0.19962649,-9.909683,-0.0055893334,-0.012220398,-0.0020220252 +30472000,mag,0.2,-0.077000014,0.42800003 +30472000,airspeed,2.9374561,2.8687043 +30476000,airspeed,1.7458619,1.7049996 +30476000,baro,488.98077 +30476000,imu,-0.23189715,0.15448731,-9.8922415,-0.0007578638,-0.016345866,-0.0016131211 +30476000,mag,0.2,-0.077000014,0.42800003 +30480000,airspeed,-0.9604628,-0.93798053 +30480000,mag,0.2,-0.077000014,0.42800003 +30480000,baro,489.02304 +30480000,imu,-0.25491983,0.12063016,-9.890662,0.005557545,-0.017926367,-0.00496239 +30488000,mag,0.2,-0.077000014,0.42800003 +30488000,imu,-0.18811685,0.13555929,-9.908767,0.0033621949,-0.0083895475,-0.003910172 +30488000,airspeed,-1.9514565,-1.9057797 +30488000,baro,488.99957 +30492000,imu,-0.12441276,0.157079,-9.927993,-0.0016781215,-0.00877352,-0.0023129825 +30492000,baro,489.0606 +30492000,airspeed,-1.1307609,-1.1042899 +30492000,mag,0.2,-0.077000014,0.42800003 +30496000,mag,0.2,-0.077000014,0.42800003 +30496000,baro,489.06998 +30496000,airspeed,3.289312,3.2123072 +30496000,imu,-0.18291646,0.18377921,-9.924181,-0.0028967098,-0.008885574,0.00013663662 +30500000,baro,489.01834 +30500000,imu,-0.20476551,0.15157422,-9.886377,-0.005215579,-0.007552651,-0.0011924504 +30500000,mag,0.2,-0.077000014,0.42800003 +30500000,airspeed,-1.3906494,-1.3580974 +30504000,imu,-0.25123358,0.20710973,-9.920891,-0.0069522266,-0.007634391,-0.0031563977 +30504000,mag,0.2,-0.077000014,0.42800003 +30504000,airspeed,3.9208617,3.8291023 +30504000,baro,488.93384 +30508000,baro,488.93384 +30508000,imu,-0.1915221,0.23353335,-9.873238,-0.005126621,-0.009358117,-0.0016179878 +30508000,airspeed,-1.204998,-1.1767976 +30508000,mag,0.2,-0.077000014,0.42800003 +30512000,baro,489.0559 +30512000,airspeed,-1.0668577,-1.0418828 +30512000,imu,-0.18723647,0.15304413,-9.901194,-0.004577602,-0.01136529,0.0020459134 +30512000,mag,0.2,-0.077000014,0.42800003 +30516000,baro,488.93384 +30516000,airspeed,1.4173363,1.3841666 +30516000,mag,0.20300001,-0.07600001,0.42800003 +30516000,imu,-0.25338483,0.11602804,-9.95272,-0.005910291,-0.017710358,-0.00018857402 +30520000,gps,489516.0,85456073.0,473977509.0,0.0,0.01,0.71 +30524000,baro,488.81177 +30524000,imu,-0.24045642,0.20978199,-9.896814,-0.008840793,-0.006248895,0.0066930843 +30524000,airspeed,0.3043692,0.2972483 +30524000,mag,0.20300001,-0.07600001,0.42800003 +30528000,airspeed,-3.7432325,-3.6556318 +30528000,baro,488.92444 +30528000,mag,0.20300001,-0.07600001,0.42800003 +30528000,imu,-0.25354797,0.15619403,-9.868534,-0.009047784,-0.009522713,-0.0040617604 +30532000,imu,-0.23095796,0.16408412,-9.893909,-0.008524665,-0.011243341,0.001004089 +30532000,airspeed,0.7878638,0.76942855 +30532000,baro,488.8681 +30532000,mag,0.20300001,-0.07600001,0.42800003 +30540000,airspeed,1.3995104,1.366765 +30540000,baro,488.84464 +30540000,mag,0.20300001,-0.07600001,0.42800003 +30540000,imu,-0.18914577,0.16572468,-9.923713,-0.0069531794,-0.013128191,0.0023395321 +30544000,baro,488.93384 +30544000,airspeed,-4.2994504,-4.19883 +30544000,mag,0.20300001,-0.07600001,0.42800003 +30544000,imu,-0.20729713,0.22646073,-9.914178,-0.007645026,-0.015660778,0.0053370763 +30548000,airspeed,1.9025819,1.8580439 +30548000,mag,0.20300001,-0.07600001,0.42800003 +30548000,baro,489.0371 +30548000,imu,-0.21181063,0.2727283,-9.9187975,-0.004711843,-0.0074953157,0.0011798037 +30552000,mag,0.20300001,-0.07600001,0.42800003 +30552000,airspeed,1.7795665,1.7379291 +30552000,imu,-0.23860395,0.19322298,-9.920223,-0.0059398455,-0.0051309657,0.0008683022 +30552000,baro,488.83524 +30556000,baro,488.79297 +30556000,mag,0.20300001,-0.07600001,0.42800003 +30556000,imu,-0.30606624,0.14502977,-9.873478,-0.0074101146,-0.0055806288,0.0007167306 +30556000,airspeed,0.7594636,0.74169594 +30560000,airspeed,-2.6923287,-2.6293416 +30560000,mag,0.20300001,-0.07600001,0.42800003 +30560000,imu,-0.25365797,0.16991876,-9.85138,-0.008538178,-0.003476895,0.00114993 +30560000,baro,488.79297 +30564000,mag,0.20300001,-0.07600001,0.42800003 +30564000,baro,488.93384 +30564000,airspeed,-3.519246,-3.436884 +30564000,imu,-0.18022928,0.16260944,-9.812149,-0.005956109,-0.0017687362,-0.00033136882 +30568000,airspeed,2.0302877,1.982796 +30568000,mag,0.2,-0.08200001,0.42900002 +30568000,baro,488.73193 +30568000,imu,-0.22826742,0.1165444,-9.811367,-0.007172006,-0.0033237874,-0.004027483 +30572000,baro,488.72256 +30572000,mag,0.2,-0.08200001,0.42900002 +30572000,imu,-0.2690482,0.18241102,-9.907775,-0.012516343,-0.005414795,-0.0027701908 +30572000,airspeed,-3.2817655,-3.2050025 +30576000,airspeed,4.603576,4.4958496 +30576000,baro,488.88687 +30576000,mag,0.2,-0.08200001,0.42900002 +30576000,imu,-0.25223684,0.18765101,-9.932441,-0.010281875,-0.004250821,-0.0027903942 +30580000,airspeed,-0.40463558,-0.39516366 +30580000,mag,0.2,-0.08200001,0.42900002 +30580000,imu,-0.2361592,0.13655277,-9.890836,-0.010334388,-0.0076419367,0.0069360994 +30580000,baro,489.02304 +30584000,mag,0.2,-0.08300001,0.42900002 +30584000,airspeed,-2.7321637,-2.6682076 +30584000,baro,489.02304 +30584000,imu,-0.2722099,0.12699136,-9.871311,-0.008212558,-0.0094481455,0.006326936 +30588000,airspeed,0.46330422,0.45246226 +30588000,mag,0.2,-0.08300001,0.42900002 +30588000,imu,-0.28440505,0.17706983,-9.883516,-0.004794309,-0.00861375,-0.0054549593 +30588000,baro,488.89627 +30592000,baro,488.99487 +30592000,imu,-0.19801599,0.22827199,-9.840745,-0.007001131,-0.010821544,-0.0006992228 +30592000,mag,0.2,-0.08300001,0.42900002 +30592000,airspeed,-3.0056443,-2.9352913 +30596000,mag,0.2,-0.08300001,0.42900002 +30596000,airspeed,-3.9002552,-3.8090076 +30596000,baro,488.79297 +30596000,imu,-0.1986322,0.18221566,-9.826873,-0.009449539,-0.011927617,-0.0015441539 +30600000,imu,-0.24876887,0.087549664,-9.896833,-0.012260122,-0.004569435,-0.0023458658 +30600000,mag,0.2,-0.08300001,0.42900002 +30600000,airspeed,1.9108385,1.8661027 +30600000,baro,489.06998 +30604000,imu,-0.18364199,0.11801615,-9.855581,-0.010513203,-0.0064678113,0.00087018526 +30604000,baro,488.99957 +30604000,mag,0.2,-0.08300001,0.42900002 +30604000,airspeed,1.9087682,1.8640893 +30608000,mag,0.2,-0.08300001,0.42900002 +30608000,imu,-0.22465503,0.1568952,-9.854186,-0.006657084,-0.010240865,-0.0018110921 +30608000,baro,488.89627 +30608000,airspeed,1.8032665,1.7610674 +30612000,airspeed,2.3331885,2.2785883 +30612000,imu,-0.2748471,0.1486001,-9.937164,-0.008996403,-0.008361952,-0.0019257008 +30616000,mag,0.20400001,-0.08000001,0.43 +30616000,baro,489.02774 +30616000,airspeed,-2.540998,-2.481515 +30616000,imu,-0.25975475,0.17114449,-9.895742,-0.0060620406,-0.005945915,-0.004764207 +30620000,mag,0.20400001,-0.08000001,0.43 +30620000,airspeed,2.499961,2.4414384 +30620000,baro,489.02774 +30620000,imu,-0.26590535,0.16648464,-9.898373,-0.008655817,-0.008491821,-0.0071861907 +30624000,mag,0.20400001,-0.08000001,0.43 +30624000,baro,488.99957 +30628000,baro,488.80237 +30628000,mag,0.20400001,-0.08000001,0.43 +30628000,airspeed,1.3107076,1.2800422 +30628000,imu,-0.23131725,0.17423116,-10.004072,-0.010845486,-0.011730462,-0.0023931651 +30632000,imu,-0.24865562,0.22199368,-9.911322,-0.005909839,-0.0029609737,-0.007479417 +30632000,mag,0.20400001,-0.08000001,0.43 +30632000,baro,488.89157 +30632000,airspeed,-2.1822937,-2.131225 +30636000,baro,488.90567 +30636000,airspeed,1.1564777,1.1294135 +30636000,mag,0.20400001,-0.08000001,0.43 +30636000,imu,-0.15636617,0.09832799,-9.906152,-0.0017569079,-0.005508981,-0.005056041 +30644000,mag,0.20400001,-0.08000001,0.43 +30644000,baro,488.7695 +30644000,airspeed,-2.4822962,-2.4242246 +30644000,imu,-0.09988434,0.14639509,-9.975646,-0.00855395,-0.010724949,-0.005874859 +30652000,baro,488.75543 +30652000,airspeed,1.3425764,1.3111689 +30652000,imu,-0.2340409,0.11625621,-9.830834,-0.00969517,-0.012287465,-0.004974295 +30652000,mag,0.20400001,-0.08000001,0.43 +30656000,baro,488.70847 +30656000,airspeed,3.4467463,3.3661246 +30656000,mag,0.20400001,-0.08000001,0.43 +30656000,imu,-0.19878842,0.13397978,-9.899097,-0.011755179,-0.0075334623,-0.0014388888 +30664000,mag,0.20500001,-0.08000001,0.43 +30664000,baro,488.84933 +30664000,imu,-0.21538794,0.19513528,-9.95612,-0.010563813,-0.013101126,-0.000671367 +30664000,airspeed,2.3341308,2.2795143 +30668000,mag,0.2,-0.07800001,0.42700002 +30668000,imu,-0.19537032,0.17481616,-9.981847,-0.01654532,-0.012767991,0.003457025 +30668000,airspeed,-3.179456,-3.1050599 +30668000,baro,488.84933 +30672000,baro,488.7695 +30672000,mag,0.2,-0.07800001,0.42700002 +30672000,imu,-0.21398501,0.05767729,-9.921024,-0.017166946,-0.00900914,0.007996787 +30672000,airspeed,1.8939719,1.8496637 +30680000,baro,488.74603 +30680000,imu,-0.12080699,0.18103307,-9.904215,-0.006724582,-0.0037223545,0.0024284322 +30680000,mag,0.2,-0.07800001,0.42700002 +30680000,airspeed,1.3964413,1.3637743 +30684000,mag,0.2,-0.07800001,0.42700002 +30684000,baro,488.74603 +30684000,airspeed,-2.272304,-2.219148 +30684000,imu,-0.1452986,0.121808656,-9.865826,-0.0053461143,-0.00431987,0.0025073066 +30688000,baro,488.79767 +30688000,mag,0.2,-0.07800001,0.42700002 +30688000,imu,-0.16085456,0.108277835,-9.854745,-0.0074357972,-0.007174991,0.0021129884 +30688000,airspeed,1.800719,1.7585891 +30691999,baro,488.79767 +30691999,mag,0.2,-0.07800001,0.42700002 +30691999,airspeed,1.9935719,1.9469299 +30691999,imu,-0.16674194,0.0943531,-9.9250145,-0.005105409,-0.006522981,-0.0010972406 +30696000,baro,488.74603 +30696000,airspeed,3.0256767,2.9548967 +30696000,imu,-0.23461998,0.029432364,-10.013353,-0.0012212627,-0.00197839,-0.0019084447 +30696000,mag,0.2,-0.07800001,0.42700002 +30700000,mag,0.2,-0.07800001,0.42700002 +30700000,airspeed,2.301258,2.2474113 +30700000,imu,-0.21350981,0.06935374,-9.976153,-0.0023470554,-0.0072463397,-0.00068278407 +30700000,baro,488.83994 +30704000,airspeed,1.0982652,1.0725627 +30704000,imu,-0.16348514,0.12550336,-9.913264,-0.0025651604,-0.006061112,-0.0010230879 +30704000,baro,488.90567 +30704000,mag,0.2,-0.07800001,0.42700002 +30708000,airspeed,-3.739266,-3.6517568 +30708000,baro,488.90567 +30708000,imu,-0.16721551,0.12507582,-9.89996,-0.001177267,-0.0048601506,-0.0008612935 +30712000,baro,488.81647 +30712000,airspeed,-1.149385,-1.1224922 +30712000,imu,-0.20880795,0.12905946,-9.873541,0.0046755522,-0.00845887,-0.006572198 +30712000,mag,0.2,-0.07800001,0.42700002 +30716000,mag,0.2,-0.07800001,0.42700002 +30716000,airspeed,3.0845592,3.0123882 +30716000,baro,488.81647 +30716000,imu,-0.21878967,0.10279698,-9.898495,0.007451178,-0.008192062,-0.008066181 +30719999,airspeed,2.8952544,2.8275356 +30719999,imu,-0.2013928,0.12547643,-9.878463,0.0024062092,-0.007406937,-0.0028406114 +30719999,mag,0.19900002,-0.07900001,0.43 +30719999,baro,488.6803 +30724000,gps,489368.0,85456074.0,473977509.0,-0.02,0.049999997,0.71 +30724000,imu,-0.20280443,0.17140639,-9.876045,0.0037373137,-0.0014410678,0.0006823172 +30724000,mag,0.19900002,-0.07900001,0.43 +30724000,airspeed,2.0012836,1.9544643 +30724000,baro,488.7648 +30728000,airspeed,3.1996548,3.1248 +30728000,imu,-0.27022642,0.15529665,-9.858894,0.0074147903,-0.0018390518,-0.0013265999 +30728000,mag,0.19900002,-0.07900001,0.43 +30728000,baro,488.7648 +30731999,mag,0.19900002,-0.07900001,0.43 +30731999,baro,488.7742 +30736000,imu,-0.21465033,0.12213838,-9.889278,0.0012175397,0.0029986084,-0.001385602 +30736000,airspeed,-1.4171996,-1.3840379 +30740000,imu,-0.23666383,0.102367945,-9.904063,0.0018843741,0.0053690146,0.002357793 +30740000,baro,488.8587 +30740000,mag,0.19900002,-0.07900001,0.43 +30740000,airspeed,0.6455045,0.6303994 +30743999,mag,0.19900002,-0.07900001,0.43 +30743999,baro,488.685 +30743999,imu,-0.25915533,0.06954628,-9.879328,0.010181611,0.00035163053,0.0035668567 +30743999,airspeed,-2.3129942,-2.2588933 +30748000,airspeed,2.121941,2.0723088 +30748000,imu,-0.25476438,0.092732884,-9.905633,0.015121494,-5.2116615e-05,-0.0017508194 +30752000,airspeed,2.8995814,2.831722 +30752000,mag,0.19900002,-0.07900001,0.43 +30752000,imu,-0.26496992,0.11845304,-9.904894,0.018401988,0.009114622,-0.0055789105 +30752000,baro,488.91037 +30760000,imu,-0.14536154,0.13515374,-9.8642845,0.010627615,0.003968734,0.0021769095 +30760000,mag,0.19900002,-0.07900001,0.43 +30760000,airspeed,-1.6335379,-1.5953234 +30760000,baro,488.74133 +30764000,airspeed,-2.8033066,-2.737719 +30764000,mag,0.19900002,-0.07900001,0.43 +30764000,imu,-0.16244423,0.17151219,-9.912204,0.009030412,0.008328961,0.003615426 +30764000,baro,488.79297 +30768000,imu,-0.22195034,0.17187168,-9.896493,0.007711561,0.005667487,-0.0021691862 +30768000,mag,0.19900002,-0.07900001,0.43 +30768000,airspeed,0.8783085,0.85776573 +30768000,baro,488.66153 +30772000,mag,0.202,-0.084000014,0.42800003 +30772000,baro,488.80237 +30776000,imu,-0.18798752,0.044519775,-9.928644,0.01342338,0.010151361,-0.0071835425 +30776000,airspeed,-1.7718347,-1.7303822 +30780000,mag,0.202,-0.084000014,0.42800003 +30780000,airspeed,-0.9223454,-0.900767 +30780000,imu,-0.14781024,0.112361535,-9.974446,0.012720225,0.008058696,-0.0005434599 +30780000,baro,488.7648 +30783999,airspeed,3.048052,2.9767427 +30783999,imu,-0.21506542,0.20073853,-9.985926,0.012075962,0.008717139,-0.0053202086 +30783999,baro,488.7648 +30783999,mag,0.202,-0.084000014,0.42800003 +30792000,mag,0.202,-0.084000014,0.42800003 +30792000,airspeed,-2.9155245,-2.847311 +30792000,baro,488.7883 +30792000,imu,-0.19581239,0.15026246,-9.966717,0.013683028,0.0005047135,0.010170255 +30795999,imu,-0.16303647,0.12864083,-9.936719,0.01765284,-1.3837452e-05,0.0073577873 +30795999,airspeed,2.136287,2.086295 +30800000,airspeed,-3.3150473,-3.2375007 +30800000,baro,488.71317 +30800000,imu,-0.20418544,0.16210228,-9.975796,0.024110686,0.0012732687,0.0016006122 +30800000,mag,0.202,-0.084000014,0.42800003 +30804000,airspeed,-2.6234524,-2.562084 +30804000,baro,488.71317 +30804000,imu,-0.21836983,0.13770027,-10.009622,0.018341793,0.0036339283,0.0025059762 +30804000,mag,0.202,-0.084000014,0.42800003 +30807999,airspeed,-1.7498057,-1.7088714 +30807999,imu,-0.16069764,0.071319096,-9.991852,0.024763634,0.00175696,0.0009683728 +30812000,mag,0.202,-0.084000014,0.42800003 +30812000,baro,488.685 +30812000,airspeed,3.2159357,3.140713 +30812000,imu,-0.19695815,0.09544826,-9.967342,0.028199535,-0.0020214692,0.00050324335 +30816000,imu,-0.23012653,0.13023463,-9.915258,0.021868674,-0.0003539256,-0.0027959463 +30816000,airspeed,-2.7633445,-2.6987112 +30816000,baro,488.66623 +30816000,mag,0.202,-0.084000014,0.42800003 +30819999,mag,0.202,-0.084000014,0.42800003 +30819999,airspeed,2.7196236,2.6560018 +30819999,imu,-0.2003704,0.13544306,-9.853886,0.01774163,-0.003192162,-0.006566321 +30819999,baro,488.73193 +30824000,airspeed,1.4905783,1.4557084 +30824000,mag,0.20300001,-0.08000001,0.43 +30824000,imu,-0.19869328,0.14998288,-9.91311,0.011072169,-0.005145478,0.0018620486 +30824000,baro,488.73193 +30832000,imu,-0.18155712,0.1741263,-9.921495,0.014219165,-0.008176677,0.0021279291 +30832000,airspeed,1.3312962,1.3001552 +30832000,mag,0.20300001,-0.08000001,0.43 +30832000,baro,488.69907 +30836000,airspeed,1.6425772,1.6041548 +30836000,mag,0.20300001,-0.08000001,0.43 +30836000,imu,-0.23272507,0.1979572,-9.9123535,0.00937374,-0.012180903,0.00035806303 +30836000,baro,488.69907 +30840000,baro,488.65683 +30840000,imu,-0.22565813,0.11342403,-9.919387,0.011636679,-0.0135258995,0.0022473722 +30840000,mag,0.20300001,-0.08000001,0.43 +30840000,airspeed,-1.9843582,-1.9379461 +30844000,airspeed,0.5985094,0.5845093 +30844000,mag,0.20300001,-0.08000001,0.43 +30844000,imu,-0.21732618,0.11581185,-9.948226,0.0060015162,-0.008189162,0.0034496987 +30844000,baro,488.6944 +30847999,mag,0.20300001,-0.08000001,0.43 +30847999,airspeed,-1.1900617,-1.1622219 +30847999,imu,-0.24890557,0.162381,-9.879732,0.0027993058,-0.006388143,-0.001962745 +30847999,baro,488.73193 +30852000,baro,488.81647 +30852000,imu,-0.27289575,0.13702142,-9.8780575,0.00681102,-0.007947974,0.0005879631 +30852000,airspeed,-2.954224,-2.8850992 +30852000,mag,0.20300001,-0.08000001,0.43 +30859999,imu,-0.25972915,0.12931934,-9.892957,0.0026443694,-0.013956008,-0.0036444645 +30859999,mag,0.20300001,-0.08000001,0.43 +30859999,baro,488.8587 +30859999,airspeed,1.8187139,1.7761537 +30864000,mag,0.20300001,-0.08000001,0.43 +30864000,baro,488.8587 +30864000,airspeed,3.47894,3.3975284 +30864000,imu,-0.26778084,0.04463324,-9.920197,0.0053535965,-0.010542725,-0.00025700167 +30871999,baro,488.685 +30871999,imu,-0.20124443,0.13137239,-9.891214,0.010227621,-0.011787875,0.005642955 +30871999,mag,0.20300001,-0.08000001,0.43 +30871999,airspeed,-2.2012715,-2.1497812 +30876000,mag,0.20300001,-0.08000001,0.43 +30876000,airspeed,-1.663518,-1.6246054 +30876000,imu,-0.29265875,0.08750733,-9.893761,0.012488093,-0.010944529,0.004710383 +30876000,baro,488.6944 +30880000,imu,-0.25422293,0.11967374,-9.887791,0.008396394,-0.005596169,0.005271954 +30880000,airspeed,0.5597162,0.5466246 +30880000,mag,0.2,-0.08100001,0.425 +30880000,baro,488.66153 +30888000,imu,-0.27232078,0.18382725,-9.942632,0.008550528,-0.0025001788,0.0013328342 +30888000,airspeed,-1.9092788,-1.8646268 +30888000,baro,488.60986 +30888000,mag,0.2,-0.08100001,0.425 +30892000,airspeed,3.0686522,2.996852 +30892000,mag,0.2,-0.08100001,0.425 +30892000,imu,-0.19235618,0.08154228,-9.796586,0.007990294,-0.0042898515,0.004224648 +30892000,baro,488.80237 +30896000,mag,0.2,-0.08100001,0.425 +30896000,airspeed,-3.6832952,-3.5971136 +30896000,imu,-0.21256,0.107923724,-9.7694,0.013596818,0.0008315989,0.0057491045 +30896000,baro,488.80237 +30904000,mag,0.2,-0.08100001,0.425 +30904000,baro,488.6005 +30904000,airspeed,1.6504967,1.6118977 +30904000,imu,-0.19459875,0.10163108,-9.875645,-0.001376692,0.0038789923,0.004109247 +30908000,mag,0.2,-0.08100001,0.425 +30908000,baro,488.72256 +30908000,airspeed,-3.2191694,-3.1438613 +30908000,imu,-0.22563227,0.10275643,-9.865685,0.003166996,0.009626906,0.0022749614 +30911999,airspeed,2.2901945,2.2366252 +30911999,imu,-0.2395632,0.12327464,-9.873833,0.0037558414,0.010746981,-0.003320317 +30911999,mag,0.2,-0.08100001,0.425 +30911999,baro,488.6709 +30920000,mag,0.2,-0.08100001,0.425 +30920000,baro,488.7601 +30920000,imu,-0.2121643,0.19421472,-9.90198,-0.007481401,0.0051812455,0.007357861 +30920000,airspeed,2.486439,2.428267 +30923999,airspeed,2.4029634,2.3467517 +30923999,mag,0.2,-0.08100001,0.425 +30923999,baro,488.70377 +30923999,imu,-0.2463463,0.18695396,-9.886729,-0.012646238,0.0033717158,0.002128437 +30928000,gps,489229.0,85456075.0,473977508.0,0.0,0.0,0.71999997 +30928000,baro,488.45963 +30928000,imu,-0.24409328,0.18911518,-9.924074,-0.009573104,0.0012671081,0.0032804261 +30928000,airspeed,2.3111334,2.2571027 +30928000,mag,0.201,-0.07800001,0.43 +30932000,imu,-0.17573436,0.13981712,-9.835468,-0.007602066,-0.0056494144,0.0040567885 +30932000,mag,0.201,-0.07800001,0.43 +30932000,airspeed,-1.459544,-1.4254221 +30932000,baro,488.45963 +30935999,imu,-0.18995173,0.122384086,-9.812645,-0.014111356,0.00045466554,0.004225144 +30935999,airspeed,-2.7644975,-2.6998146 +30935999,mag,0.201,-0.07800001,0.43 +30935999,baro,488.7883 +30944000,baro,488.61456 +30944000,imu,-0.22324818,0.1804983,-9.879361,-0.012247468,-0.010526541,0.0043129046 +30944000,mag,0.201,-0.07800001,0.43 +30944000,airspeed,-2.2050686,-2.1534977 +30947999,baro,488.6756 +30947999,airspeed,1.1065803,1.0806961 +30947999,imu,-0.16256961,0.19176486,-9.853216,-0.008225454,-0.0058389422,0.0060908077 +30947999,mag,0.201,-0.07800001,0.43 +30952000,airspeed,1.7642345,1.7229809 +30952000,imu,-0.1857961,0.1108446,-9.866738,-0.0022879688,-0.005753895,3.0758714e-05 +30952000,baro,488.53946 +30952000,mag,0.201,-0.07800001,0.43 +30956000,mag,0.201,-0.07800001,0.43 +30956000,airspeed,2.6037965,2.542911 +30956000,imu,-0.15427098,0.11503464,-9.930157,-0.0020101403,-0.008237638,-0.0032893636 +30956000,baro,488.53946 +30960000,imu,-0.11734593,0.18410566,-9.917382,-0.008029204,-0.0043377844,-0.0067697084 +30960000,mag,0.201,-0.07800001,0.43 +30960000,baro,488.6803 +30964000,airspeed,-2.9858804,-2.9160647 +30964000,baro,488.51596 +30964000,mag,0.201,-0.07800001,0.43 +30964000,imu,-0.15721023,0.22291546,-9.880345,-0.0057756044,-0.0022859145,-0.0062971157 +30968000,imu,-0.21750465,0.21202438,-9.920662,-0.006849513,-0.0050625526,-0.005418096 +30968000,mag,0.201,-0.07800001,0.43 +30968000,baro,488.61456 +30968000,airspeed,-4.697812,-4.587942 +30972000,baro,488.3939 +30972000,mag,0.201,-0.07800001,0.43 +30972000,airspeed,2.2361174,2.1838489 +30975999,mag,0.201,-0.07800001,0.43 +30975999,airspeed,-2.2110298,-2.1593032 +30975999,imu,-0.18875116,0.0839162,-9.858269,0.003964871,-0.015380064,-0.0027383538 +30975999,baro,488.73193 +30980000,mag,0.20400001,-0.08200001,0.43 +30980000,baro,488.7836 +30980000,imu,-0.23918614,0.099065684,-9.873587,-0.001025073,-0.01692385,-0.0022802337 +30980000,airspeed,-2.2275915,-2.1754713 +30987999,baro,488.577 +30987999,imu,-0.20393693,0.1216024,-9.961573,0.0017796102,-0.012463343,0.0032649348 +30987999,mag,0.20400001,-0.08200001,0.43 +30987999,airspeed,-1.5540916,-1.517748 +30992000,imu,-0.17750376,0.04898158,-9.982217,-0.0027308469,-0.013608497,0.0043928246 +30992000,mag,0.20400001,-0.08200001,0.43 +30992000,airspeed,-3.4085915,-3.3288853 +30992000,baro,488.54416 +30999999,airspeed,3.3900187,3.3107333 +30999999,baro,488.61456 +30999999,imu,-0.19582732,0.081633426,-9.952247,0.00260728,-0.008618245,0.00017535123 +30999999,mag,0.20400001,-0.08200001,0.43 +31008000,baro,488.70377 +31008000,airspeed,1.4183507,1.3851708 +31008000,mag,0.20400001,-0.08200001,0.43 +31008000,imu,-0.15104534,0.23351197,-9.841647,0.0005739105,-0.011074018,0.0033383763 +31011999,airspeed,3.4846237,3.403103 +31011999,imu,-0.17697419,0.09425936,-9.856928,-0.007572032,-0.011426295,0.0048028897 +31016000,airspeed,-1.389407,-1.3569263 +31016000,mag,0.20400001,-0.08200001,0.43 +31016000,baro,488.43146 +31016000,imu,-0.20562765,0.018468508,-9.903771,-0.007188927,-0.013222204,0.014701155 +31020000,baro,488.45026 +31020000,mag,0.20400001,-0.08200001,0.43 +31020000,airspeed,1.2702978,1.2406001 +31020000,imu,-0.15511684,0.07149502,-9.93012,-0.004926385,-0.012755641,0.010044631 +31028000,baro,488.6052 +31028000,airspeed,1.7473955,1.7065281 +31028000,mag,0.20400001,-0.08200001,0.43 +31028000,imu,-0.24248235,0.15988965,-9.99613,-0.001647262,-0.0134050585,0.002632859 +31036000,imu,-0.23757978,0.18148945,-9.846243,-0.00013509284,-0.011071412,0.004341872 +31036000,baro,488.4878 +31036000,airspeed,2.7142723,2.65081 +31036000,mag,0.19900002,-0.08000001,0.42800003 +31044000,imu,-0.2589111,0.19405583,-9.934,-0.007241395,-0.0027429925,-0.0010060605 +31044000,airspeed,-2.9077492,-2.8397489 +31044000,baro,488.57233 +31044000,mag,0.19900002,-0.08000001,0.42800003 +31048000,imu,-0.27635777,0.1414902,-9.833861,-0.0070368843,-0.000242423,0.0033985162 +31048000,baro,488.74603 +31048000,mag,0.19900002,-0.08000001,0.42800003 +31048000,airspeed,-3.2872944,-3.2103846 +31056000,mag,0.19900002,-0.08000001,0.42800003 +31056000,baro,488.4925 +31056000,imu,-0.21105053,0.17373948,-9.862518,-0.008526314,-0.006680176,0.00039043697 +31056000,airspeed,3.7541735,3.6663966 +31060000,imu,-0.2738962,0.13197073,-9.845919,-0.011423702,-0.004549836,0.0012903296 +31060000,baro,488.4925 +31060000,mag,0.19900002,-0.08000001,0.42800003 +31060000,airspeed,-3.262995,-3.1867025 +31063999,mag,0.19900002,-0.08000001,0.42800003 +31063999,imu,-0.20259425,0.13562015,-9.956537,-0.010512453,-0.0004472864,0.0024375839 +31063999,baro,488.53476 +31063999,airspeed,2.925189,2.8567874 +31068000,airspeed,3.3253088,3.247551 +31068000,mag,0.19900002,-0.08000001,0.42800003 +31068000,imu,-0.12407917,0.13971047,-9.945959,-0.008676862,-0.00026604332,0.003995906 +31068000,baro,488.53476 +31075999,airspeed,-1.2274193,-1.1987181 +31075999,mag,0.19900002,-0.08000001,0.42800003 +31075999,imu,-0.2541234,0.122727856,-9.896218,-0.0064889477,-0.003074308,-0.0008419776 +31075999,baro,488.52536 +31080000,airspeed,3.3262718,3.2484744 +31080000,mag,0.19900002,-0.08000001,0.42800003 +31080000,imu,-0.17511351,0.16100991,-9.904862,-0.0061809435,-0.0017257459,-0.0010224541 +31080000,baro,488.61926 +31084000,mag,0.201,-0.07600001,0.42700002 +31084000,imu,-0.2029533,0.22363399,-9.892688,-0.0026110383,-0.0037781016,0.007992622 +31084000,baro,488.6803 +31084000,airspeed,-3.3581738,-3.279618 +31088000,imu,-0.21586074,0.25154978,-9.9341135,-0.0018964495,-0.007988397,0.0068515055 +31088000,airspeed,1.9550698,1.909336 +31088000,mag,0.201,-0.07600001,0.42700002 +31088000,baro,488.6803 +31096000,mag,0.201,-0.07600001,0.42700002 +31096000,imu,-0.1613948,0.15816191,-9.898384,-0.0031263593,-0.007005501,-0.00044215354 +31096000,baro,488.51596 +31096000,airspeed,2.988421,2.9185429 +31100000,imu,-0.22011428,0.17987455,-9.881665,-0.0021371113,-0.0019536428,-0.0020176924 +31100000,mag,0.201,-0.07600001,0.42700002 +31100000,airspeed,-1.4935629,-1.4586492 +31100000,baro,488.3986 +31103999,airspeed,-3.8022823,-3.7133996 +31103999,baro,488.3986 +31103999,imu,-0.26475343,0.19804166,-9.87133,0.004713127,-0.0040900684,0.0026158825 +31103999,mag,0.201,-0.07600001,0.42700002 +31108000,mag,0.201,-0.07600001,0.42700002 +31108000,baro,488.45026 +31108000,airspeed,1.9279944,1.8829195 +31108000,imu,-0.2732023,0.1588978,-9.868187,0.0013712164,-0.005595393,0.005718254 +31112000,baro,488.5817 +31112000,imu,-0.23296933,0.13701612,-9.921223,-0.002259245,0.0011930341,0.008521791 +31112000,airspeed,-2.3353806,-2.2807634 +31112000,mag,0.201,-0.07600001,0.42700002 +31115999,airspeed,3.8393388,3.74956 +31115999,baro,488.53006 +31115999,mag,0.201,-0.07600001,0.42700002 +31115999,imu,-0.21564627,0.11883445,-9.924654,-0.00036749232,-0.007398273,0.003915718 +31120000,airspeed,-2.8394125,-2.773016 +31120000,baro,488.53006 +31120000,imu,-0.19105414,0.17945395,-9.95652,-0.00069578784,-0.010681337,-0.008562415 +31120000,mag,0.201,-0.07600001,0.42700002 +31127999,baro,488.61456 +31127999,imu,-0.26138598,0.18154423,-9.76925,-0.0097368825,-0.0074146157,0.01283546 +31127999,airspeed,1.3950497,1.362421 +31127999,mag,0.201,-0.07600001,0.42700002 +31132000,mag,0.201,-0.07600001,0.42700002 +31132000,imu,-0.23176819,0.18100326,-9.853179,-0.0056019737,-0.013132762,0.0038785052 +31132000,baro,488.48312 +31132000,airspeed,-1.1612527,-1.1341012 +31132000,gps,489078.0,85456075.0,473977508.0,-0.01,0.02,0.75 +31136000,baro,488.45963 +31136000,airspeed,-1.7483927,-1.7075152 +31136000,mag,0.201,-0.07600001,0.42700002 +31136000,imu,-0.14855371,0.21447787,-9.869013,-0.006500346,-0.008399134,-0.00173195 +31140000,mag,0.20400001,-0.07900001,0.43100002 +31140000,imu,-0.18597928,0.107581794,-9.876434,-0.0056460234,-0.00057930365,0.00021791014 +31140000,airspeed,-3.3168268,-3.2393012 +31140000,baro,488.34695 +31144000,baro,488.45026 +31144000,mag,0.20400001,-0.07900001,0.43100002 +31144000,imu,-0.21435602,0.05776022,-9.853657,-0.0034146307,-0.0036070696,-0.0029690976 +31144000,airspeed,0.67320263,0.65746343 +31148000,imu,-0.23916456,0.11633907,-9.814458,-0.0073153162,-0.008981236,-0.0036090026 +31148000,mag,0.20400001,-0.07900001,0.43100002 +31148000,airspeed,-2.1391733,-2.0891604 +31148000,baro,488.45026 +31156000,baro,488.52066 +31156000,airspeed,1.0613047,1.0364873 +31156000,mag,0.20400001,-0.07900001,0.43100002 +31156000,imu,-0.2093619,0.22454973,-9.869286,-0.0054829097,-0.0061130156,-0.0012659017 +31160000,imu,-0.24390554,0.13107677,-9.819943,-0.0010188165,-0.0052200505,-1.1156853e-06 +31160000,airspeed,2.7633224,2.6986728 +31164000,imu,-0.30150563,0.049240835,-9.8720665,0.0028999497,-0.008772525,0.0023761638 +31164000,baro,488.4033 +31164000,mag,0.20400001,-0.07900001,0.43100002 +31164000,airspeed,2.292339,2.2387512 +31167999,mag,0.20400001,-0.07900001,0.43100002 +31167999,imu,-0.25678977,0.07519124,-9.86315,-0.0012886345,-0.0061107776,-0.0012224772 +31167999,airspeed,-3.1126716,-3.039887 +31167999,baro,488.5113 +31172000,airspeed,2.0757892,2.0272439 +31172000,imu,-0.21816756,0.11232157,-9.844591,-0.0047202236,-0.004046082,0.0012253121 +31172000,mag,0.20400001,-0.07900001,0.43100002 +31172000,baro,488.56763 +31176000,mag,0.20400001,-0.07900001,0.43100002 +31176000,airspeed,-2.760181,-2.6956394 +31176000,baro,488.5066 +31176000,imu,-0.24741265,0.09591149,-9.924305,-0.008968519,-0.0063254945,-0.0023692038 +31179999,mag,0.20400001,-0.07900001,0.43100002 +31179999,baro,488.6005 +31179999,imu,-0.23305628,0.12184977,-9.926067,-0.007345478,-0.0030791622,-0.008454037 +31179999,airspeed,-2.6945395,-2.6315186 +31184000,airspeed,1.8157128,1.7732494 +31184000,mag,0.20400001,-0.07900001,0.43100002 +31184000,baro,488.56763 +31184000,imu,-0.2158927,0.12820005,-9.851509,-0.007362776,-0.0024576306,-0.001306187 +31188000,mag,0.201,-0.08000001,0.42700002 +31188000,imu,-0.20264475,0.14301203,-9.811614,-0.010471947,0.0014542586,-0.0013133123 +31188000,baro,488.51596 +31188000,airspeed,2.6716964,2.6092222 +31191999,airspeed,-0.97075015,-0.94805586 +31191999,mag,0.201,-0.08000001,0.42700002 +31191999,imu,-0.17246687,0.17831148,-9.815704,-0.008376674,-0.0011962935,0.005640913 +31191999,baro,488.4174 +31196000,imu,-0.15301955,0.19177702,-9.848797,-0.008360602,-0.009550946,0.006656953 +31196000,baro,488.4174 +31196000,airspeed,2.0869145,2.0381265 +31196000,mag,0.201,-0.08000001,0.42700002 +31200000,mag,0.201,-0.08000001,0.42700002 +31200000,imu,-0.16831489,0.16415358,-9.858346,-0.013075595,-0.0068448037,-0.00020842042 +31200000,baro,488.4033 +31200000,airspeed,2.9145792,2.8464448 +31204000,baro,488.408 +31204000,mag,0.201,-0.08000001,0.42700002 +31204000,airspeed,-3.2907882,-3.2138577 +31204000,imu,-0.23178153,0.14615034,-9.890938,-0.010599594,-0.0012111579,0.000910629 +31212000,airspeed,-2.7464163,-2.6821864 +31212000,baro,488.56763 +31212000,mag,0.201,-0.08000001,0.42700002 +31212000,imu,-0.2586642,0.15792592,-9.859392,-0.01037931,-0.0020920062,0.0017754586 +31216000,airspeed,1.6520576,1.6134436 +31216000,baro,488.33286 +31216000,mag,0.201,-0.08000001,0.42700002 +31216000,imu,-0.20735416,0.17527813,-9.919814,-0.009013021,-0.009973855,-0.0010892414 +31219999,mag,0.201,-0.08000001,0.42700002 +31219999,baro,488.5113 +31219999,airspeed,-2.8185534,-2.752646 +31219999,imu,-0.14082155,0.15275645,-9.904284,-0.0054494026,-0.008293986,-0.005230314 +31224000,imu,-0.11829255,0.066698566,-9.898699,-0.0044158176,-0.0012248519,-0.0006000974 +31224000,baro,488.5113 +31224000,airspeed,-2.1571088,-2.1066682 +31224000,mag,0.201,-0.08000001,0.42700002 +31228000,baro,488.4033 +31228000,airspeed,-2.1659935,-2.1153586 +31228000,mag,0.201,-0.08000001,0.42700002 +31228000,imu,-0.12643632,0.1066266,-9.810702,-0.010372984,-0.0059055616,0.00046155573 +31231999,imu,-0.1391682,0.13836192,-9.863212,-0.01250719,-0.005539514,-0.0036793908 +31231999,baro,488.4878 +31231999,airspeed,3.4693618,3.3882399 +31231999,mag,0.201,-0.08000001,0.42700002 +31236000,baro,488.4033 +31236000,airspeed,-1.3734167,-1.3413099 +31236000,imu,-0.14539492,0.09029528,-9.935566,-0.009048605,-0.0047464673,-0.00023581772 +31236000,mag,0.201,-0.08000001,0.42700002 +31240000,mag,0.20400001,-0.07800001,0.42600003 +31240000,airspeed,1.2128268,1.184469 +31240000,imu,-0.14288038,0.050108794,-9.872361,-0.006826405,-0.007884217,0.001885845 +31240000,baro,488.47372 +31243999,mag,0.20400001,-0.07800001,0.42600003 +31243999,airspeed,2.0509167,2.0029628 +31243999,baro,488.47372 +31243999,imu,-0.17472516,0.0907087,-9.853285,-0.0075080036,-0.011705811,-0.0021027639 +31248000,baro,488.38452 +31248000,mag,0.20400001,-0.07800001,0.42600003 +31248000,airspeed,1.8622887,1.8187554 +31248000,imu,-0.22499058,0.100824185,-9.847144,-0.005554631,-0.0113107255,-0.0055423677 +31252000,baro,488.408 +31252000,airspeed,-1.8641393,-1.82056 +31252000,mag,0.20400001,-0.07800001,0.42600003 +31252000,imu,-0.24887162,0.15843856,-9.841977,0.0009963941,-0.01192866,-0.0018224543 +31255999,airspeed,2.2591345,2.2063174 +31255999,mag,0.20400001,-0.07800001,0.42600003 +31255999,imu,-0.25617683,0.15016443,-9.858085,-0.0024279193,-0.008219177,0.0014844597 +31255999,baro,488.43146 +31260000,baro,488.46432 +31260000,airspeed,2.1439595,2.093831 +31260000,mag,0.20400001,-0.07800001,0.42600003 +31260000,imu,-0.16662905,0.1366132,-9.912138,-0.009002574,-0.005980136,-0.0014621736 +31264000,airspeed,1.3071909,1.2766271 +31264000,mag,0.20400001,-0.07800001,0.42600003 +31264000,imu,-0.19257984,0.11307276,-9.910383,-0.005935671,-0.009924928,-0.0026173072 +31264000,baro,488.46432 +31268000,mag,0.20400001,-0.07800001,0.42600003 +31268000,imu,-0.22652233,0.07813898,-9.890785,2.9548897e-05,-0.008761927,-0.0029819156 +31268000,baro,488.5019 +31268000,airspeed,2.527771,2.4686627 +31272000,mag,0.20400001,-0.07800001,0.42600003 +31272000,baro,488.5019 +31272000,airspeed,1.8990749,1.8546678 +31272000,imu,-0.1836505,0.16782124,-9.813674,-0.0021501065,-0.009970071,-0.0016055746 +31276000,baro,488.33286 +31276000,airspeed,4.3145776,4.2137303 +31276000,mag,0.20400001,-0.07800001,0.42600003 +31276000,imu,-0.16842696,0.2103152,-9.816238,-0.0034099102,-0.0070739286,0.0027951633 +31280000,baro,488.36572 +31280000,mag,0.20400001,-0.07800001,0.42600003 +31280000,imu,-0.24442133,0.14917894,-9.871641,-0.004030696,-0.0042432914,-0.0018118346 +31280000,airspeed,0.987044,0.96397114 +31284000,mag,0.20400001,-0.07800001,0.42600003 +31284000,baro,488.45493 +31284000,airspeed,-1.366553,-1.334602 +31284000,imu,-0.29968807,0.050975703,-9.803843,-0.0032612486,-0.008037051,-0.001575274 +31292000,airspeed,-0.53090906,-0.518498 +31292000,mag,0.19600001,-0.07900001,0.425 +31292000,imu,-0.26968575,0.19196904,-9.935759,0.0017260886,-0.0034932827,-0.002561462 +31292000,baro,488.38922 +31295999,baro,488.4127 +31295999,imu,-0.21291436,0.14645436,-9.938251,0.0055895834,-0.0061830846,-0.008424628 +31295999,mag,0.19600001,-0.07900001,0.425 +31295999,airspeed,-4.2533917,-4.153954 +31300000,baro,488.30002 +31300000,imu,-0.14170894,0.13341635,-9.895538,0.0071528875,-0.010501142,-0.0017311157 +31300000,mag,0.19600001,-0.07900001,0.425 +31300000,airspeed,-2.5889149,-2.5284076 +31304000,mag,0.19600001,-0.07900001,0.425 +31304000,baro,488.34225 +31304000,imu,-0.12094582,0.10605888,-9.85618,0.0014651916,-0.012055845,0.0040084394 +31304000,airspeed,1.7099553,1.6699862 +31307999,baro,488.34225 +31307999,imu,-0.1444113,0.091983706,-9.862704,0.00038091268,-0.0018971263,-0.002413363 +31307999,mag,0.19600001,-0.07900001,0.425 +31312000,mag,0.19600001,-0.07900001,0.425 +31312000,imu,-0.15854254,0.11171296,-9.8382,0.0039971583,0.0013638105,-0.0033486055 +31312000,baro,488.43616 +31312000,airspeed,2.831184,2.7649908 +31316000,airspeed,3.0242867,2.953593 +31316000,imu,-0.18361779,0.08475694,-9.95094,0.011523276,-0.0047040414,-0.0021949324 +31316000,mag,0.19600001,-0.07900001,0.425 +31316000,baro,488.35635 +31319999,mag,0.19600001,-0.07900001,0.425 +31319999,baro,488.5864 +31319999,airspeed,1.418451,1.385275 +31319999,imu,-0.24707678,0.08845333,-9.984455,0.008281537,-0.005847409,-0.00041091323 +31324000,mag,0.19600001,-0.07900001,0.425 +31324000,baro,488.45026 +31328000,airspeed,3.1897533,3.1152163 +31328000,imu,-0.25541127,0.16058074,-9.842152,0.010903494,-0.003281445,-0.003130029 +31328000,baro,488.22488 +31328000,mag,0.19600001,-0.07900001,0.425 +31336000,baro,488.29062 +31336000,imu,-0.21346472,0.18588682,-9.795754,0.010797579,0.0027856715,-0.0075332727 +31336000,gps,488926.0,85456076.0,473977508.0,-0.02,0.01,0.7 +31336000,airspeed,0.62005544,0.6055637 +31336000,mag,0.19600001,-0.07900001,0.42600003 +31344000,airspeed,1.3748122,1.3426718 +31344000,baro,488.4033 +31344000,mag,0.19800001,-0.08100001,0.42800003 +31344000,imu,-0.2621083,0.1411294,-9.860801,0.0028440745,0.002153808,-0.0020737892 +31347999,baro,488.47372 +31347999,imu,-0.2227686,0.12514935,-9.980644,0.0028070542,-0.0017507605,-0.0020911682 +31347999,airspeed,1.3572901,1.3255534 +31347999,mag,0.19800001,-0.08100001,0.42800003 +31352000,imu,-0.24848872,0.09130236,-9.96483,0.004768211,-0.003866721,-0.0032060565 +31352000,baro,488.3188 +31352000,mag,0.19800001,-0.08100001,0.42800003 +31352000,airspeed,-2.5596442,-2.499817 +31356000,mag,0.19800001,-0.08100001,0.42800003 +31356000,airspeed,2.4594703,2.401998 +31356000,imu,-0.2970665,0.07159843,-9.873769,0.009585757,-0.0034634566,-0.0066333646 +31356000,baro,488.22018 +31359999,airspeed,0.5433592,0.5306586 +31359999,baro,488.3282 +31359999,imu,-0.2747298,0.11992077,-9.899814,0.009044862,0.0025489728,-0.0016029903 +31359999,mag,0.19800001,-0.08100001,0.42800003 +31364000,mag,0.19800001,-0.08100001,0.42800003 +31364000,baro,488.3282 +31364000,imu,-0.22326744,0.14550264,-9.952776,0.0032588772,0.008523317,0.0041531734 +31364000,airspeed,-3.367677,-3.2889602 +31368000,airspeed,-1.7635688,-1.7223537 +31368000,baro,488.26245 +31368000,imu,-0.20419748,0.1614438,-9.93972,-0.0018474505,0.0035171784,-0.00037884244 +31368000,mag,0.19800001,-0.08100001,0.42800003 +31371999,airspeed,-3.2924373,-3.2154922 +31371999,baro,488.26245 +31371999,mag,0.19800001,-0.08100001,0.42800003 +31371999,imu,-0.21010971,0.14600623,-9.895096,0.000106176856,-0.001482555,-0.0010107183 +31376000,baro,488.38922 +31376000,airspeed,-4.4182186,-4.3149304 +31376000,imu,-0.1503996,0.13487646,-9.919922,0.0075930916,0.0022666433,0.003608348 +31376000,mag,0.19800001,-0.08100001,0.42800003 +31380000,mag,0.19800001,-0.08100001,0.42800003 +31380000,baro,488.33286 +31380000,imu,-0.13597889,0.07940085,-9.921092,0.0061151227,0.0061225044,0.0030952366 +31380000,airspeed,-2.029261,-1.981828 +31388000,baro,488.36572 +31388000,imu,-0.25566667,0.13381553,-9.983114,0.0054439404,-0.006041108,0.0036793943 +31388000,mag,0.19800001,-0.08100001,0.42800003 +31388000,airspeed,1.731642,1.6911627 +31392000,airspeed,-2.57971,-2.5194013 +31392000,baro,488.3939 +31392000,mag,0.19800001,-0.08100001,0.42800003 +31392000,imu,-0.28632677,0.15526079,-10.029139,0.00872955,-0.0007731755,0.004247361 +31396000,airspeed,2.8064008,2.7408082 +31396000,baro,488.30002 +31396000,mag,0.19800001,-0.08000001,0.42800003 +31396000,imu,-0.3016372,0.16740447,-10.035263,0.005698249,0.0016296126,0.004818765 +31400000,airspeed,2.939642,2.8709352 +31400000,baro,488.30002 +31400000,mag,0.19800001,-0.08000001,0.42800003 +31400000,imu,-0.2615881,0.07702773,-9.989327,0.0021452191,-0.00155572,0.00827525 +31404000,mag,0.19800001,-0.08000001,0.42800003 +31404000,baro,488.27652 +31404000,imu,-0.26492718,0.01893982,-9.906507,0.0032857752,-0.0024188936,0.0007638261 +31404000,airspeed,2.8893166,2.82179 +31408000,imu,-0.2601871,0.057430897,-9.904439,-0.0013065574,-0.0041390886,-0.0018478169 +31408000,airspeed,-1.0486567,-1.0241412 +31408000,mag,0.19800001,-0.08000001,0.42800003 +31408000,baro,488.38922 +31411999,airspeed,-3.2920682,-3.2151277 +31411999,mag,0.19800001,-0.08000001,0.42800003 +31411999,imu,-0.21543597,0.070232324,-9.923332,-0.0066100243,-0.009012046,0.005047751 +31411999,baro,488.28122 +31416000,imu,-0.24905418,0.1445544,-9.899885,-0.00062818534,-0.013468294,0.0023800775 +31416000,baro,488.38922 +31416000,mag,0.19800001,-0.08000001,0.42800003 +31416000,airspeed,-2.7644234,-2.6997964 +31420000,baro,488.26245 +31420000,landed,0.0 +31420000,airspeed,1.1467127,1.1199132 +31420000,imu,-0.23060417,0.25106058,-9.933815,0.0061750435,-0.01117682,0.0011027143 +31420000,mag,0.19800001,-0.08000001,0.42800003 +31423999,mag,0.19800001,-0.08000001,0.42800003 +31423999,airspeed,-1.9456091,-1.9001318 +31423999,imu,-0.16943988,0.19720465,-9.968151,0.0017878758,-0.011271027,-0.00030369623 +31423999,baro,488.3282 +31428000,imu,-0.2115233,0.20387535,-9.940975,-0.0020722286,-0.011396073,0.0035730759 +31428000,baro,488.37982 +31428000,mag,0.19800001,-0.08000001,0.42800003 +31428000,airspeed,2.4901152,2.4319024 +31435999,baro,488.3094 +31435999,airspeed,-2.174226,-2.123407 +31435999,imu,-0.23890932,0.108717375,-9.957302,4.3642667e-05,-0.02144793,0.0025641697 +31435999,mag,0.19800001,-0.08000001,0.42800003 +31440000,imu,-0.16770099,0.1393577,-9.946223,0.0035594837,-0.013802367,-0.0026596498 +31440000,airspeed,3.3954315,3.3161223 +31440000,baro,488.03708 +31440000,mag,0.19800001,-0.08000001,0.42800003 +31447999,mag,0.19800001,-0.07800001,0.42800003 +31447999,baro,488.44086 +31447999,imu,-0.24576342,0.14912403,-9.98835,-0.0019413177,-0.01518532,0.00241501 +31447999,airspeed,2.980101,2.9104228 +31452000,airspeed,-3.5884094,-3.5045083 +31452000,baro,488.44086 +31452000,imu,-0.20290671,0.06352964,-10.017199,-0.0027972262,-0.012481181,0.0006353897 +31452000,mag,0.19800001,-0.07800001,0.42800003 +31456000,mag,0.19800001,-0.07800001,0.42800003 +31456000,baro,488.3282 +31456000,imu,-0.19253516,0.087464705,-9.95253,0.0028449812,-0.01450591,0.0005713048 +31456000,airspeed,1.9808064,1.9345057 +31460000,airspeed,-1.8384002,-1.7954435 +31460000,imu,-0.2628965,0.16812052,-9.850518,0.00292022,-0.018513884,0.00047529466 +31460000,baro,488.18262 +31460000,mag,0.19800001,-0.07800001,0.42800003 +31464000,mag,0.19800001,-0.07800001,0.42800003 +31464000,imu,-0.21586913,0.1449366,-9.858482,0.0062357667,-0.026464064,0.0024818918 +31464000,baro,488.4033 +31464000,airspeed,-4.1239524,-4.027538 +31468000,airspeed,-3.27587,-3.1993186 +31468000,imu,-0.19013917,0.1370242,-9.84705,0.011457644,-0.023037452,0.0041071298 +31468000,mag,0.19800001,-0.07800001,0.42800003 +31468000,baro,488.21548 +31472000,imu,-0.24569745,0.15056099,-9.893482,0.0074846675,-0.02299033,0.0019530961 +31472000,baro,488.21548 +31472000,airspeed,-1.3892131,-1.3567495 +31472000,mag,0.19800001,-0.07800001,0.42800003 +31475999,mag,0.19800001,-0.07800001,0.42800003 +31475999,imu,-0.23308352,0.17143176,-9.918253,0.007567343,-0.01692558,-0.0023153448 +31475999,airspeed,-2.5281775,-2.4690678 +31475999,baro,488.4174 +31484000,mag,0.19900002,-0.07800001,0.42800003 +31484000,imu,-0.17733698,0.09439526,-9.869781,0.010234696,-0.020013442,-0.0012776786 +31484000,airspeed,3.2617354,3.1854813 +31484000,baro,488.38922 +31487999,baro,488.24365 +31487999,mag,0.19900002,-0.07800001,0.42800003 +31487999,imu,-0.18283227,0.14361326,-9.863247,0.005662821,-0.021850957,0.0038449368 +31487999,airspeed,1.930957,1.8858303 +31496000,airspeed,-2.024454,-1.9771423 +31496000,imu,-0.2616882,0.12844732,-9.89043,0.0075673875,-0.025085922,0.0004316552 +31496000,baro,488.24365 +31496000,mag,0.19900002,-0.07800001,0.42800003 +31499999,baro,488.34695 +31499999,airspeed,-2.9340208,-2.8654346 +31499999,mag,0.2,-0.077000014,0.43 +31499999,imu,-0.27545282,0.17838842,-9.874277,0.008371114,-0.018330757,0.0040306346 +31508000,airspeed,1.1612778,1.1341435 +31508000,baro,488.17325 +31508000,mag,0.2,-0.077000014,0.43 +31508000,imu,-0.21442585,0.13562034,-9.844787,0.0036920423,-0.010358497,-0.0032816366 +31516000,imu,-0.24581172,0.16737054,-9.860143,-1.2443818e-05,-0.019630916,0.0027835078 +31516000,baro,488.15915 +31516000,mag,0.201,-0.077000014,0.43 +31516000,airspeed,2.221741,2.1698291 +31520000,airspeed,-3.296094,-3.2190742 +31520000,imu,-0.27760684,0.12737218,-9.901454,-0.0039971625,-0.016927881,0.005229075 +31524000,imu,-0.22445203,0.1308264,-9.8633585,-0.004993929,-0.012917035,-0.003331738 +31524000,baro,488.23428 +31524000,mag,0.201,-0.077000014,0.43 +31524000,airspeed,-3.6431847,-3.5580442 +31528000,baro,488.21548 +31528000,airspeed,2.3030365,2.2492175 +31528000,mag,0.201,-0.077000014,0.43 +31528000,imu,-0.22454758,0.14917234,-9.755411,0.004140536,-0.0135951545,-0.008686215 +31532000,airspeed,1.7094512,1.6695133 +31532000,baro,488.1169 +31532000,imu,-0.22947931,0.09238005,-9.783132,0.007881926,-0.015486104,-0.0022705065 +31532000,mag,0.201,-0.077000014,0.43 +31539999,baro,488.14975 +31539999,imu,-0.27274713,0.12205366,-9.833175,-0.005153392,-0.0112555865,0.00021185463 +31539999,airspeed,-1.3554429,-1.3237729 +31539999,mag,0.201,-0.077000014,0.43 +31544000,imu,-0.31090617,0.1517843,-9.850104,0.0016023254,-0.007834384,-0.0032097562 +31544000,airspeed,2.8954737,2.8278196 +31544000,gps,488782.0,85456077.0,473977508.0,0.0,0.02,0.71 +31544000,baro,488.15915 +31544000,mag,0.201,-0.077000014,0.43 +31548000,mag,0.201,-0.077000014,0.43 +31548000,baro,488.14038 +31548000,imu,-0.23114793,0.21138309,-9.83613,0.007845865,-0.016192943,-0.0055770567 +31548000,airspeed,-3.6946402,-3.608317 +31556000,mag,0.201,-0.07800001,0.43 +31556000,airspeed,2.8571413,2.7903948 +31556000,imu,-0.16652626,0.17270322,-9.772188,-0.00999465,-0.015774883,-0.0051809438 +31556000,baro,488.08405 +31563999,airspeed,-1.2150674,-1.186674 +31563999,imu,-0.33904293,0.14506209,-9.914153,-0.0026265574,-0.008336247,-0.0058511854 +31563999,baro,488.19672 +31563999,mag,0.201,-0.07800001,0.43 +31568000,mag,0.201,-0.07800001,0.43 +31572000,imu,-0.20900908,0.19172594,-9.873954,-0.0052649938,-0.0098477295,0.0045122 +31572000,mag,0.201,-0.07800001,0.43 +31572000,baro,488.14508 +31572000,airspeed,1.8152198,1.7728071 +31580000,imu,-0.19424033,0.11339294,-9.918567,-0.006921304,-0.0070866174,-0.0023576247 +31580000,mag,0.201,-0.07800001,0.43 +31580000,airspeed,-3.3039036,-3.2267022 +31580000,baro,488.17325 +31584000,airspeed,-3.2415936,-3.1658483 +31584000,baro,488.17325 +31584000,mag,0.201,-0.07800001,0.43 +31584000,imu,-0.18519823,0.16456357,-9.94573,-0.0047159176,-0.008112561,-0.0013517272 +31588000,mag,0.201,-0.07800001,0.43 +31588000,imu,-0.26142648,0.11715591,-9.833699,-0.0037992226,-0.012126024,0.0029932787 +31588000,airspeed,1.8064547,1.7642343 +31588000,baro,488.26245 +31592000,imu,-0.32137042,0.16456622,-9.820681,-0.0005860357,-0.010643824,0.00084565417 +31592000,mag,0.201,-0.07800001,0.43 +31592000,airspeed,-3.1702728,-3.0961843 +31592000,baro,488.22488 +31596000,mag,0.201,-0.07800001,0.43 +31596000,airspeed,-2.419236,-2.3627098 +31596000,imu,-0.3445373,0.13862684,-9.905231,-0.0036549482,-0.009516252,-0.0015212318 +31596000,baro,488.14508 +31603999,baro,488.2108 +31603999,mag,0.201,-0.077000014,0.42900002 +31603999,airspeed,4.2975187,4.1970897 +31603999,imu,-0.26949447,0.17446214,-9.890326,-0.004111903,-0.011218941,-0.0070199883 +31608000,baro,488.2108 +31608000,imu,-0.2489677,0.16823444,-9.872353,-5.3534272e-06,-0.013514293,-0.005417558 +31608000,mag,0.201,-0.077000014,0.42900002 +31608000,airspeed,1.9355251,1.8902936 +31612000,airspeed,-3.736405,-3.649065 +31612000,baro,488.3188 +31612000,imu,-0.23159839,0.15666583,-9.867863,0.00075698143,-0.014566734,0.0021927024 +31612000,mag,0.201,-0.077000014,0.42900002 +31615999,imu,-0.2265127,0.14283757,-9.807663,-0.0059025255,-0.018127905,0.0039683604 +31615999,baro,488.18262 +31615999,airspeed,-2.8990474,-2.8313038 +31615999,mag,0.201,-0.077000014,0.42900002 +31620000,imu,-0.25799838,0.11518743,-9.849294,-0.006114287,-0.018048404,0.0016201534 +31620000,mag,0.201,-0.077000014,0.42900002 +31620000,baro,488.22018 +31620000,airspeed,2.8050482,2.7394948 +31624000,mag,0.201,-0.077000014,0.42900002 +31624000,imu,-0.33327362,0.08587438,-9.904974,-0.0023716763,-0.01343399,0.000142851 +31624000,airspeed,1.9562272,1.9105082 +31624000,baro,488.24365 +31627999,airspeed,2.0307596,1.9833167 +31627999,imu,-0.3262856,0.08689672,-9.94158,-0.0034362003,-0.017546622,-0.008212022 +31627999,mag,0.201,-0.077000014,0.42900002 +31627999,baro,488.0887 +31632000,imu,-0.21347913,0.13142496,-10.018415,-0.007230419,-0.021690719,-0.0033751868 +31632000,mag,0.201,-0.077000014,0.42900002 +31632000,airspeed,2.9406216,2.8719203 +31632000,baro,488.1028 +31636000,mag,0.202,-0.077000014,0.42900002 +31636000,imu,-0.20788302,0.16033539,-9.980314,-0.0033093696,-0.016082952,0.0057594134 +31636000,airspeed,0.69207203,0.67590326 +31636000,baro,488.1028 +31640000,mag,0.202,-0.077000014,0.42900002 +31640000,airspeed,-2.2798648,-2.2265973 +31640000,baro,488.12628 +31640000,imu,-0.24194208,0.14769664,-9.973648,0.00072825403,-0.015376703,0.0036626968 +31648000,baro,488.27652 +31648000,imu,-0.1820992,0.11085988,-9.978782,-0.002853648,-0.010011038,0.0011949876 +31648000,mag,0.202,-0.077000014,0.42900002 +31648000,airspeed,2.4810188,2.4230297 +31652000,airspeed,2.554988,2.4952965 +31652000,imu,-0.28751805,0.13423319,-9.957755,-0.0023114332,-0.012293416,0.004706429 +31656000,imu,-0.28374967,0.08259743,-9.980994,0.0009579853,-0.02040208,0.0040602465 +31656000,mag,0.201,-0.077000014,0.43 +31656000,baro,488.33755 +31656000,airspeed,2.4760487,2.4181666 +31660000,mag,0.201,-0.077000014,0.43 +31660000,baro,488.14975 +31664000,mag,0.202,-0.077000014,0.43 +31664000,airspeed,-4.0604987,-3.9656193 +31664000,imu,-0.2261347,0.24861261,-9.975704,-0.0010209687,-0.011608333,-0.007943113 +31664000,baro,488.15915 +31667999,baro,488.23428 +31667999,airspeed,-0.6173509,-0.6029228 +31667999,mag,0.202,-0.077000014,0.42900002 +31667999,imu,-0.20713064,0.25342268,-9.966238,0.0029735505,-0.016252484,-0.008892324 +31672000,airspeed,-3.1840487,-3.1096404 +31672000,imu,-0.1413343,0.18314315,-10.009577,-0.0015213896,-0.014410471,-0.006648065 +31672000,mag,0.202,-0.077000014,0.42900002 +31672000,baro,488.20142 +31679999,mag,0.202,-0.077000014,0.42900002 +31679999,airspeed,-1.8823208,-1.8383268 +31679999,imu,-0.3018212,0.24558474,-9.919606,-0.006409755,-0.021487694,-0.00223227 +31679999,baro,488.25775 +31684000,baro,488.3047 +31684000,airspeed,0.6887751,0.6726749 +31684000,imu,-0.25836506,0.13708243,-9.880976,-0.009564787,-0.020219335,-0.0011215099 +31684000,mag,0.202,-0.077000014,0.42900002 +31688000,imu,-0.24890426,0.06309966,-9.841075,-0.0078107086,-0.019305982,-0.001827894 +31688000,airspeed,-4.026931,-3.9328504 +31688000,mag,0.202,-0.077000014,0.42900002 +31688000,baro,488.0934 +31691999,baro,488.0934 +31691999,imu,-0.21905088,0.1722966,-9.866074,-0.009663397,-0.023200512,-0.0020501008 +31691999,mag,0.202,-0.077000014,0.42900002 +31691999,airspeed,1.5009348,1.4658687 +31696000,airspeed,0.5623353,0.54919547 +31696000,baro,488.15445 +31696000,imu,-0.15412644,0.1815287,-9.826857,-0.0069989506,-0.024763897,0.0016999088 +31696000,mag,0.202,-0.077000014,0.42900002 +31704000,airspeed,2.0569985,2.0089366 +31704000,baro,488.13098 +31704000,imu,-0.17145246,0.112356804,-9.931526,-1.0035669e-05,-0.025276901,0.0027235835 +31704000,mag,0.202,-0.07800001,0.42900002 +31712000,baro,488.1169 +31712000,airspeed,-0.4474662,-0.4370114 +31712000,mag,0.20300001,-0.07900001,0.425 +31712000,imu,-0.19609848,0.13301843,-9.95516,-0.0061391476,-0.015766166,-0.0036719278 +31716000,baro,488.12158 +31716000,mag,0.20300001,-0.07900001,0.425 +31719999,airspeed,-2.356911,-2.3018377 +31719999,imu,-0.2985892,0.1164317,-9.9106045,-0.012430055,-0.02383713,-0.008202351 +31724000,mag,0.20300001,-0.07900001,0.425 +31724000,imu,-0.25671783,0.10303034,-9.917509,-0.0058834096,-0.019347724,-0.0026007371 +31724000,baro,488.08405 +31724000,airspeed,1.9434987,1.8980937 +31728000,baro,488.08405 +31728000,mag,0.20300001,-0.07900001,0.425 +31728000,imu,-0.22769488,0.1393502,-9.822752,-0.002724647,-0.01522012,-0.0029198807 +31728000,airspeed,2.4598374,2.4023695 +31731999,mag,0.20300001,-0.07900001,0.425 +31736000,airspeed,-1.9831913,-1.9368294 +31736000,baro,488.33286 +31736000,imu,-0.24035966,0.13900258,-9.961828,-0.007274758,-0.021867905,0.0024103173 +31740000,baro,488.1169 +31740000,mag,0.20300001,-0.07900001,0.425 +31740000,airspeed,-4.0752316,-3.980016 +31740000,imu,-0.23894875,0.1127782,-9.892151,-0.0040861866,-0.022173328,-0.0015764309 +31743999,baro,488.0089 +31743999,mag,0.20300001,-0.07900001,0.425 +31743999,imu,-0.216988,0.086723894,-9.892234,-0.008435864,-0.017542407,-0.006308326 +31743999,airspeed,3.492263,3.41069 +31748000,baro,487.97604 +31748000,airspeed,1.6547855,1.616136 +31748000,imu,-0.3126826,0.07853697,-9.870783,-0.00632174,-0.013149774,-0.0022700287 +31748000,gps,488647.0,85456078.0,473977508.0,0.0,0.049999997,0.71999997 +31748000,mag,0.20300001,-0.07900001,0.425 +31755999,airspeed,2.7372344,2.6732664 +31755999,baro,488.20142 +31755999,mag,0.20300001,-0.07900001,0.425 +31755999,imu,-0.22239204,0.115868405,-9.928516,-0.014581039,-0.017525528,-0.0015069606 +31760000,imu,-0.19708665,0.12227849,-9.94235,-0.010605769,-0.010508986,-0.0029990869 +31760000,mag,0.201,-0.07600001,0.43 +31760000,baro,488.02768 +31760000,airspeed,2.1958003,2.1445076 +31764000,airspeed,0.74853027,0.7310441 +31764000,baro,488.04648 +31764000,imu,-0.20086068,0.15403049,-9.886996,-0.007063358,-0.005825222,-0.0011104658 +31764000,mag,0.201,-0.07600001,0.43 +31768000,imu,-0.22660227,0.089286886,-9.89102,-0.0121353185,-0.00569118,0.003294952 +31768000,mag,0.201,-0.07600001,0.43 +31768000,airspeed,-2.1472647,-2.097125 +31768000,baro,487.87277 +31772000,mag,0.201,-0.07600001,0.43 +31772000,airspeed,-2.817002,-2.7511933 +31772000,imu,-0.24897078,0.08255671,-9.926356,-0.015435029,-0.007431272,0.0055751614 +31772000,baro,488.05588 +31776000,mag,0.201,-0.07600001,0.43 +31776000,airspeed,2.3688922,2.3135436 +31776000,imu,-0.22308442,0.14551893,-9.923131,-0.0118490625,-0.0049113864,0.0009238195 +31776000,baro,488.1169 +31780000,mag,0.201,-0.07600001,0.43 +31780000,baro,487.97134 +31783999,airspeed,-1.6108601,-1.5732176 +31783999,imu,-0.18721853,0.122416794,-9.890333,-0.006068035,-0.0018798907,0.0060348557 +31788000,mag,0.201,-0.07600001,0.43 +31788000,baro,488.13098 +31788000,airspeed,-3.1101155,-3.0374458 +31788000,imu,-0.17271966,0.14653972,-9.854784,-0.007634441,-0.006808794,0.0026093721 +31792000,imu,-0.22324485,0.11356116,-9.891714,-0.00458021,-0.008721966,0.0028094896 +31792000,airspeed,-3.2748127,-3.1983128 +31795999,mag,0.201,-0.07600001,0.43 +31795999,airspeed,3.0279126,2.957171 +31795999,imu,-0.21039845,0.10514448,-9.897251,-0.007752125,-0.005864637,0.00019826861 +31795999,baro,488.0887 +31804000,mag,0.201,-0.07600001,0.43 +31804000,imu,-0.29173905,0.058600765,-9.912394,-0.0045101335,0.0006752741,-0.009985562 +31804000,airspeed,-1.2680693,-1.2384512 +31804000,baro,487.97604 +31807999,mag,0.201,-0.07600001,0.43 +31807999,imu,-0.29002202,0.07221067,-9.843854,0.000907629,-0.0063151964,-0.0033791251 +31807999,baro,487.87744 +31807999,airspeed,0.14709942,0.14366451 +31812000,airspeed,3.680255,3.59428 +31812000,imu,-0.25315544,0.09789776,-9.911891,0.004450977,-0.0030589357,0.0014555526 +31812000,mag,0.201,-0.07800001,0.42900002 +31812000,baro,488.04648 +31819999,mag,0.201,-0.07800001,0.42900002 +31819999,imu,-0.1836905,0.15384671,-9.960441,0.0034973763,-0.0027651282,0.007013313 +31819999,airspeed,2.054739,2.0067344 +31819999,baro,488.07465 +31824000,baro,488.1075 +31824000,mag,0.201,-0.07800001,0.42900002 +31824000,airspeed,3.3410444,3.2629821 +31824000,imu,-0.13621637,0.16174835,-9.9264345,-0.0017945203,-0.0076206513,0.009099337 +31828000,mag,0.201,-0.07800001,0.42900002 +31828000,imu,-0.20407699,0.15593107,-9.910556,0.0047654086,-0.0064859916,0.0019750982 +31828000,airspeed,1.6730018,1.6339105 +31828000,baro,488.13098 +31832000,mag,0.201,-0.07800001,0.42900002 +31832000,imu,-0.31042558,0.10153551,-9.904996,0.013050929,-0.0039055017,0.0010626378 +31832000,airspeed,3.0154676,2.9450014 +31832000,baro,488.16855 +31836000,airspeed,2.2019684,2.15052 +31836000,imu,-0.1659271,0.09032097,-9.956871,0.017126463,-0.0020308828,0.0034929204 +31840000,baro,488.13098 +31840000,imu,-0.11602766,0.10340237,-9.954802,0.016516892,0.0014023816,0.004938425 +31840000,airspeed,4.235975,4.1369963 +31840000,mag,0.201,-0.07800001,0.42900002 +31844000,baro,488.0089 +31844000,airspeed,3.0045435,2.9343605 +31844000,mag,0.201,-0.07800001,0.42900002 +31844000,imu,-0.23870838,0.08044015,-9.906534,0.0077829147,-4.7222093e-05,0.001384731 +31847999,baro,488.16385 +31847999,airspeed,2.6479268,2.5860493 +31847999,mag,0.201,-0.07800001,0.42900002 +31847999,imu,-0.29991603,0.15865828,-9.98179,0.010304766,-0.00046585096,-0.0043929536 +31852000,baro,488.06055 +31852000,airspeed,-3.1667783,-3.0927958 +31852000,imu,-0.23595177,0.18752798,-10.012923,0.009365523,-0.0028991818,-0.0008570736 +31852000,mag,0.201,-0.07800001,0.42900002 +31859999,airspeed,-2.9509687,-2.8820314 +31859999,baro,488.03708 +31859999,mag,0.201,-0.07800001,0.42900002 +31859999,imu,-0.1990189,0.12426436,-9.846503,0.011339576,-0.0022069735,-0.0015681771 +31868000,airspeed,1.4831494,1.4484949 +31868000,imu,-0.26627693,0.09228668,-9.908857,-0.0013340324,-0.002819135,-0.0067500607 +31868000,baro,488.1169 +31868000,mag,0.201,-0.08000001,0.43100002 +31871999,imu,-0.22808878,0.17331043,-9.8824215,0.000495725,0.0022372243,0.00034053478 +31871999,mag,0.201,-0.08000001,0.43100002 +31871999,airspeed,-2.2684023,-2.2154055 +31871999,baro,488.07465 +31876000,imu,-0.12287924,0.23020874,-9.819702,0.0082404725,0.007032562,0.005180301 +31876000,airspeed,-2.7313938,-2.6675904 +31876000,baro,488.0089 +31876000,mag,0.201,-0.08000001,0.43100002 +31883999,imu,-0.20622766,0.10864909,-9.856042,0.00973291,0.0022848549,0.0112227695 +31883999,airspeed,-2.3904893,-2.334658 +31883999,baro,487.94318 +31883999,mag,0.201,-0.08000001,0.43100002 +31888000,airspeed,2.2633152,2.2104595 +31888000,baro,487.90094 +31888000,imu,-0.22125892,0.11342883,-9.855485,0.009170546,0.003257344,0.0028032123 +31888000,mag,0.201,-0.08000001,0.43100002 +31892000,airspeed,1.2826458,1.2526826 +31892000,mag,0.201,-0.08000001,0.43100002 +31892000,baro,488.02768 +31892000,imu,-0.25208402,0.14884469,-9.920452,0.007548819,0.0041527217,-0.0037889292 +31896000,baro,487.94318 +31896000,imu,-0.232387,0.15023279,-9.9527855,0.0036165633,0.0028752477,0.004382704 +31896000,airspeed,0.36007103,0.3516614 +31896000,mag,0.201,-0.08000001,0.43100002 +31900000,baro,488.0089 +31900000,mag,0.201,-0.08000001,0.43100002 +31900000,airspeed,3.3486948,3.270471 +31900000,imu,-0.18317497,0.1550013,-9.983093,0.008716168,0.006306859,0.008119149 +31904000,baro,488.04648 +31904000,airspeed,1.6594008,1.6206346 +31904000,mag,0.201,-0.08000001,0.43100002 +31904000,imu,-0.16527207,0.12904662,-9.926251,0.016442599,0.009977509,0.001746511 +31908000,imu,-0.1779592,0.09023717,-9.902159,0.009652294,0.008481605,0.0025491978 +31908000,airspeed,0.9520167,0.929779 +31908000,mag,0.201,-0.08000001,0.43100002 +31908000,baro,487.99014 +31916000,mag,0.2,-0.08100001,0.42900002 +31916000,baro,488.03708 +31916000,airspeed,-3.0052347,-2.9350286 +31916000,imu,-0.19118601,0.14974864,-9.810875,0.000118972086,0.0069203107,0.004487198 +31920000,imu,-0.18290038,0.13640417,-9.778883,-0.0009759624,-0.0008845349,0.00062523433 +31920000,mag,0.2,-0.08100001,0.42900002 +31920000,airspeed,4.2559347,4.156511 +31920000,baro,488.03708 +31928000,airspeed,-0.9484636,-0.92631525 +31928000,baro,487.87277 +31928000,imu,-0.2832387,0.11739849,-9.920256,0.0009065183,0.005416726,0.0009901869 +31928000,mag,0.2,-0.08100001,0.42900002 +31932000,imu,-0.25704548,0.14254567,-9.904555,-0.00840762,0.008815829,0.0024026842 +31932000,mag,0.2,-0.08100001,0.42900002 +31932000,airspeed,-4.660006,-4.551224 +31932000,baro,487.7366 +31935999,imu,-0.24651356,0.09734861,-9.891857,-0.012183933,0.0059158276,0.002353521 +31935999,airspeed,0.8433579,0.8236635 +31940000,imu,-0.1941588,0.105073564,-9.913207,-0.0052054613,0.0010664618,0.00033188667 +31940000,baro,487.98544 +31940000,mag,0.2,-0.08100001,0.42900002 +31940000,airspeed,-0.6251115,-0.61051 +31944000,imu,-0.1960594,0.12612389,-9.99961,-0.0053971778,0.001391555,-0.002526879 +31944000,baro,488.03238 +31944000,airspeed,2.362904,2.307704 +31944000,mag,0.2,-0.08100001,0.42900002 +31947999,baro,488.03238 +31947999,airspeed,1.5246302,1.4890131 +31947999,mag,0.2,-0.08100001,0.42900002 +31947999,imu,-0.19857407,0.15572304,-9.930329,-0.010475339,0.0044043805,0.00071050343 +31952000,airspeed,-3.3846822,-3.3056145 +31952000,imu,-0.22139092,0.20959455,-9.869703,-0.01448683,0.009949255,0.005842212 +31952000,gps,488499.0,85456079.0,473977508.0,0.0,0.03,0.71 +31952000,baro,488.0183 +31952000,mag,0.2,-0.08100001,0.42900002 +31956000,airspeed,-3.6110413,-3.5266771 +31956000,imu,-0.26959035,0.15573414,-9.94112,-0.0134659745,0.008525099,0.0054778997 +31956000,baro,488.06055 +31956000,mag,0.2,-0.08100001,0.42900002 +31960000,baro,487.87744 +31960000,airspeed,2.9751968,2.9057188 +31960000,mag,0.2,-0.08100001,0.42900002 +31960000,imu,-0.24021696,0.11452943,-9.925302,-0.011098726,0.010391779,0.0040256507 +31964000,mag,0.2,-0.08100001,0.42900002 +31964000,baro,487.93848 +31964000,imu,-0.22158769,0.16480671,-9.936902,-0.014081303,0.008209726,0.0011077846 +31964000,airspeed,2.6548333,2.5928276 +31968000,mag,0.20400001,-0.07900001,0.42800003 +31968000,baro,488.04648 +31968000,imu,-0.19513053,0.18207878,-9.937751,-0.013715629,0.0006888919,-0.0038932266 +31968000,airspeed,-2.0271842,-1.9798244 +31975999,mag,0.20400001,-0.07900001,0.42800003 +31975999,baro,488.07935 +31975999,imu,-0.18226206,0.22973686,-9.948602,-0.011419833,0.003437013,0.0049970523 +31975999,airspeed,1.3419396,1.3105862 +31980000,baro,487.95728 +31980000,airspeed,-3.1153905,-3.0426238 +31980000,imu,-0.2373346,0.19936103,-9.899824,-0.009560162,0.0067908773,0.0037641851 +31980000,mag,0.20400001,-0.07900001,0.42800003 +31984000,mag,0.20400001,-0.07900001,0.42800003 +31984000,baro,487.9197 +31984000,imu,-0.27120593,0.12234918,-9.9121065,-0.010439561,0.0037767726,-0.00051834463 +31984000,airspeed,-0.50067514,-0.48898193 +31987999,baro,487.9197 +31987999,imu,-0.20381999,0.13779838,-9.848076,-0.007826187,-0.0011027263,-0.0027310774 +31987999,mag,0.20400001,-0.07900001,0.42800003 +31987999,airspeed,-3.8498478,-3.7599351 +31992000,baro,487.88684 +31992000,airspeed,-2.5225837,-2.4636736 +31992000,mag,0.20400001,-0.07900001,0.42800003 +31992000,imu,-0.22383994,0.16237618,-9.811673,-0.007573313,0.0019203452,0.00010952847 +31999999,mag,0.20400001,-0.08000001,0.42800003 +31999999,imu,-0.22479051,0.1398155,-9.900763,-0.0022504828,0.001695138,-0.0023658574 +31999999,baro,488.0183 +31999999,airspeed,-1.5714306,-1.5347209 +32004000,baro,487.915 +32004000,imu,-0.23668608,0.10042754,-9.8876,-0.001259701,0.0015691497,0.000105933665 +32004000,airspeed,-3.1265886,-3.0535674 +32004000,mag,0.20400001,-0.08000001,0.42800003 +32008000,imu,-0.2645379,0.14182541,-9.829121,0.0046307426,0.0033061814,-0.0025288698 +32011999,imu,-0.25693426,0.16730346,-9.878243,-0.00051393494,-0.001290963,-0.005501188 +32011999,mag,0.20400001,-0.08000001,0.42800003 +32011999,airspeed,-0.6573472,-0.6419991 +32011999,baro,487.80704 +32016000,airspeed,-3.5314164,-3.4489605 +32016000,imu,-0.25859237,0.11849087,-9.895873,-0.0031394311,0.0015442703,-0.0013731617 +32016000,baro,487.8164 +32016000,mag,0.20400001,-0.08000001,0.42800003 +32024000,imu,-0.23582844,0.2234201,-9.884583,-0.010676119,0.00914338,-0.003270198 +32024000,baro,487.76007 +32024000,mag,0.19800001,-0.07800001,0.43 +32024000,airspeed,-3.2728171,-3.1964107 +32028000,imu,-0.2451,0.2443081,-9.851237,-0.008311915,0.0031865088,-0.0012114246 +32028000,mag,0.19800001,-0.07800001,0.43 +32028000,airspeed,-4.2745466,-4.1747584 +32028000,baro,487.7366 +32032000,airspeed,2.7464714,2.6823556 +32032000,imu,-0.24071948,0.21007892,-9.859567,-0.0023617032,-0.0032143306,-0.004710191 +32032000,baro,487.7366 +32032000,mag,0.19800001,-0.07800001,0.43 +32039999,imu,-0.23669675,0.0214875,-9.798944,-0.0047106207,0.009075553,-0.0011137581 +32039999,baro,487.71313 +32039999,airspeed,0.87710106,0.85662663 +32039999,mag,0.19800001,-0.07800001,0.43 +32044000,imu,-0.22897539,0.06523312,-9.883848,-0.008410563,0.012402623,-0.0018458625 +32044000,mag,0.19800001,-0.07800001,0.43 +32044000,airspeed,2.6850636,2.6223555 +32044000,baro,487.9056 +32048000,baro,487.84927 +32048000,mag,0.19800001,-0.07800001,0.43 +32051999,imu,-0.28255394,0.14045605,-9.913567,-0.014723244,0.0048121414,-0.0007847447 +32051999,airspeed,-2.9235742,-2.855281 +32051999,baro,487.98544 +32051999,mag,0.19800001,-0.07800001,0.43 +32056000,mag,0.19800001,-0.07800001,0.43 +32056000,baro,487.96664 +32060000,imu,-0.1916564,0.17417307,-9.878099,-0.0035132226,0.0025960042,0.0013322774 +32060000,airspeed,1.7202437,1.6800541 +32063999,airspeed,2.7887275,2.723575 +32063999,mag,0.19800001,-0.07800001,0.43 +32063999,baro,488.04648 +32063999,imu,-0.18556127,0.1299411,-9.922562,-0.0073347925,0.0021749598,0.0018476862 +32068000,imu,-0.201619,0.09906746,-9.90365,-0.007722887,0.0004342779,0.001608634 +32068000,airspeed,1.5689642,1.5323275 +32068000,mag,0.19800001,-0.07800001,0.43 +32068000,baro,487.8399 +32072000,airspeed,3.1051674,3.032658 +32072000,imu,-0.29120514,0.11288304,-9.855789,-0.011600756,0.0005307722,0.0027347975 +32072000,baro,487.84457 +32072000,mag,0.201,-0.08100001,0.42900002 +32075999,airspeed,-3.5774107,-3.493874 +32075999,imu,-0.18168445,0.09256763,-9.843455,-0.014863705,-0.0029694315,0.005260416 +32080000,mag,0.201,-0.08100001,0.42900002 +32080000,airspeed,2.1919832,2.1407814 +32080000,imu,-0.20001288,0.060731906,-9.833828,-0.015115267,0.0008324485,0.00079490704 +32080000,baro,487.97134 +32084000,imu,-0.3412348,0.07778314,-9.825305,-0.010900884,-0.00013537412,0.0018526962 +32084000,mag,0.201,-0.08100001,0.42900002 +32084000,baro,487.97134 +32084000,airspeed,1.8122435,1.7699119 +32088000,airspeed,-2.6125402,-2.5515401 +32088000,imu,-0.28292835,0.13500606,-9.886813,-0.008517198,-0.009232956,0.0037768865 +32088000,mag,0.201,-0.08100001,0.42900002 +32088000,baro,487.80234 +32096000,mag,0.201,-0.08100001,0.42900002 +32096000,airspeed,-1.7505323,-1.7096554 +32096000,baro,487.8399 +32096000,imu,-0.27067283,0.08424331,-9.871036,-0.0084570255,-0.007822189,-4.1041145e-05 +32100000,mag,0.201,-0.08100001,0.42900002 +32100000,airspeed,-3.3521383,-3.2738621 +32100000,imu,-0.21369791,0.092602275,-9.821702,-0.0128723895,-0.012611692,-0.0018086409 +32100000,baro,487.8399 +32103999,mag,0.201,-0.08100001,0.42900002 +32103999,airspeed,-2.642058,-2.5803843 +32103999,baro,487.69904 +32103999,imu,-0.20253499,0.14021234,-9.806129,-0.012871576,-0.012790344,0.0014293803 +32108000,baro,487.90094 +32108000,imu,-0.13628778,0.16118371,-9.877032,-0.01289129,-0.01380159,0.0019073979 +32108000,mag,0.201,-0.08100001,0.42900002 +32108000,airspeed,-3.9497862,-3.85754 +32112000,baro,487.96198 +32112000,imu,-0.19291134,0.13513492,-9.932028,-0.013976238,-0.011316112,0.0036965807 +32112000,airspeed,-3.2236283,-3.1483302 +32112000,mag,0.201,-0.08100001,0.42900002 +32115999,imu,-0.32082993,0.04455468,-9.842007,-0.01235692,-0.0058054235,0.0014334088 +32115999,mag,0.201,-0.08100001,0.42900002 +32115999,airspeed,-3.843161,-3.7533917 +32115999,baro,487.96198 +32120000,imu,-0.28236902,0.091400065,-9.740112,-0.011566423,-0.0005868049,0.0019485941 +32120000,baro,487.80234 +32120000,airspeed,1.3637874,1.3319443 +32120000,mag,0.201,-0.08100001,0.42900002 +32124000,airspeed,-2.0675297,-2.0192533 +32124000,mag,0.2,-0.08000001,0.42800003 +32124000,baro,487.8164 +32124000,imu,-0.22846478,0.19212717,-9.851227,-0.011583116,-0.0021431006,0.0059763095 +32127999,mag,0.2,-0.08000001,0.42800003 +32127999,baro,487.8258 +32127999,airspeed,-2.5911593,-2.5306542 +32127999,imu,-0.23530471,0.18083696,-9.86933,-0.010933506,-0.0098015815,-0.0012388352 +32132000,baro,487.8305 +32132000,airspeed,-1.3111002,-1.2804849 +32132000,mag,0.2,-0.08000001,0.42800003 +32132000,imu,-0.26343468,0.16757926,-9.860533,-0.0143831335,-0.011487142,-0.004280008 +32136000,airspeed,2.318141,2.2640114 +32136000,mag,0.2,-0.08000001,0.42800003 +32136000,imu,-0.2483849,0.12067379,-9.9092455,-0.013971009,-0.002696541,0.0022164246 +32136000,baro,487.8211 +32140000,airspeed,2.168811,2.1181684 +32140000,mag,0.2,-0.08000001,0.42800003 +32140000,baro,487.8211 +32140000,imu,-0.23373732,0.13358568,-9.8276825,-0.008817801,0.0011476097,0.0035453248 +32144000,mag,0.2,-0.08000001,0.42800003 +32144000,baro,487.8211 +32148000,baro,487.8211 +32148000,mag,0.2,-0.08000001,0.42800003 +32148000,imu,-0.14369252,0.1068448,-9.8239565,-0.0066772853,-0.011865876,0.00069112744 +32148000,airspeed,-3.00428,-2.9341285 +32156000,mag,0.2,-0.08000001,0.42800003 +32156000,baro,487.66617 +32156000,gps,488360.0,85456080.0,473977508.0,-0.01,0.049999997,0.7 +32156000,airspeed,-3.3033032,-3.2262 +32156000,imu,-0.2348573,0.07821083,-9.920034,-0.00062489347,-0.0031932115,-0.003754499 +32160000,mag,0.2,-0.08000001,0.42800003 +32160000,imu,-0.2870698,0.124022216,-9.886293,-0.00037900245,-0.009138884,-0.0037460804 +32160000,baro,487.89154 +32160000,airspeed,4.323296,4.2223268 +32164000,mag,0.2,-0.08000001,0.42800003 +32164000,baro,487.9103 +32164000,airspeed,-1.1157565,-1.0896972 +32164000,imu,-0.31763986,0.14260915,-9.919563,-0.0021957124,-0.014638128,-0.0061010956 +32172000,imu,-0.37269607,0.13501164,-9.93199,0.0008601435,-0.004319859,0.0016562432 +32172000,baro,487.77887 +32172000,mag,0.2,-0.08000001,0.42800003 +32172000,airspeed,-0.10151549,-0.099145286 +32176000,mag,0.201,-0.08100001,0.42800003 +32176000,airspeed,3.5250828,3.4427845 +32176000,baro,487.7507 +32176000,imu,-0.2678476,0.1487023,-9.926724,0.0031403238,-0.007696305,-0.00109254 +32179999,baro,487.8164 +32179999,airspeed,2.3957543,2.339813 +32179999,mag,0.201,-0.08100001,0.42800003 +32179999,imu,-0.18837467,0.13511929,-9.939959,0.010157259,-0.0101399645,0.0007077618 +32184000,mag,0.201,-0.08100001,0.42800003 +32184000,baro,487.80234 +32188000,airspeed,-1.5668893,-1.5303031 +32188000,imu,-0.17207502,0.07988111,-9.817132,0.0073083458,-0.01342413,-0.0032544592 +32191999,baro,487.6333 +32191999,mag,0.201,-0.08100001,0.42800003 +32191999,imu,-0.24890038,0.12685958,-9.886355,0.0019302359,-0.011415174,-0.0061058304 +32191999,airspeed,-2.9190314,-2.8509018 +32196000,mag,0.201,-0.08100001,0.42800003 +32196000,baro,487.78354 +32200000,imu,-0.2629779,0.13040939,-9.878213,-0.00438833,-0.008115267,-0.0023819401 +32200000,baro,487.6568 +32200000,mag,0.201,-0.08100001,0.42800003 +32200000,airspeed,-0.5149045,-0.50288594 +32204000,imu,-0.19433501,0.12862018,-9.857747,-0.007954145,-0.010368069,0.0025681378 +32204000,airspeed,-2.1188476,-2.0693855 +32208000,baro,487.7225 +32208000,airspeed,-3.6593246,-3.5738974 +32208000,mag,0.201,-0.08100001,0.42800003 +32208000,imu,-0.20151211,0.14720812,-9.891729,0.000298383,-0.011179535,-0.003037314 +32212000,imu,-0.21670854,0.1433333,-9.87547,0.0011030682,-0.004714761,-0.00420143 +32212000,airspeed,2.9887426,2.9190052 +32216000,airspeed,-2.918872,-2.8507264 +32216000,baro,487.746 +32216000,mag,0.201,-0.08100001,0.42800003 +32216000,imu,-0.24395104,0.16758944,-9.887361,-0.00506334,-0.0065059713,-0.0011005782 +32224000,baro,487.8352 +32224000,airspeed,-1.9338894,-1.8887298 +32224000,mag,0.201,-0.08100001,0.42800003 +32224000,imu,-0.27248833,0.11700861,-9.87569,-0.003818507,0.0022178746,-0.0020579386 +32231999,imu,-0.28684178,0.10047515,-9.886847,-0.0051297834,-0.015120778,-0.004099084 +32231999,baro,487.95728 +32231999,airspeed,-3.185437,-3.1110277 +32231999,mag,0.201,-0.07600001,0.42900002 +32240000,baro,487.8352 +32240000,airspeed,-1.603282,-1.5658423 +32240000,mag,0.201,-0.07600001,0.42900002 +32240000,imu,-0.24053426,0.08088775,-9.957883,-0.00582237,-0.006980617,-0.0028046584 +32244000,imu,-0.22785349,0.14301066,-9.932873,-0.004456747,-0.012819458,0.0057089 +32244000,baro,487.66617 +32244000,mag,0.201,-0.07600001,0.42900002 +32244000,airspeed,2.2390773,2.1868126 +32252000,airspeed,-2.4055448,-2.3493848 +32252000,mag,0.201,-0.07600001,0.42900002 +32252000,baro,487.7319 +32252000,imu,-0.18871479,0.18348679,-9.931617,0.002410488,-0.014030493,-0.0026755577 +32256000,airspeed,-1.486662,-1.451964 +32256000,imu,-0.2733672,0.13926622,-9.948026,0.00026891349,-0.011645905,-0.0074763615 +32256000,mag,0.201,-0.07600001,0.42900002 +32256000,baro,487.61923 +32264000,mag,0.201,-0.07600001,0.42900002 +32264000,imu,-0.21404912,0.15065669,-9.919217,0.0072104135,-0.015161607,0.00014578982 +32264000,airspeed,-2.7154748,-2.6520662 +32264000,baro,487.81174 +32268000,baro,487.7225 +32268000,airspeed,3.5228336,3.440591 +32268000,mag,0.201,-0.07600001,0.42900002 +32268000,imu,-0.23332064,0.16642703,-9.904994,0.0049411226,-0.017565703,0.008994157 +32272000,mag,0.201,-0.07600001,0.42900002 +32272000,imu,-0.24435626,0.12741007,-9.942213,0.0040204735,-0.015946366,0.007890458 +32272000,baro,487.70374 +32272000,airspeed,3.5674996,3.4842176 +32276000,mag,0.201,-0.07600001,0.42900002 +32276000,imu,-0.17959593,0.06473169,-9.926246,-0.00036481066,-0.014834546,0.0028191349 +32276000,baro,487.7319 +32276000,airspeed,-2.9095664,-2.841639 +32280000,mag,0.2,-0.08000001,0.42800003 +32280000,imu,-0.21146248,0.15687011,-9.978663,-0.005412741,-0.010357102,-0.00034961937 +32280000,airspeed,3.4127686,3.3331084 +32280000,baro,487.6568 +32284000,imu,-0.16058066,0.20088847,-9.9714,0.0013352426,-0.009619327,0.0013329496 +32284000,baro,487.6568 +32284000,airspeed,2.7775078,2.7126758 +32284000,mag,0.2,-0.08000001,0.42800003 +32288000,airspeed,1.6574988,1.6188089 +32288000,baro,487.66617 +32288000,imu,-0.12428833,0.15243654,-9.845094,0.0068576895,-0.012143221,0.0014657702 +32288000,mag,0.2,-0.08000001,0.42800003 +32292000,airspeed,3.2747166,3.198277 +32292000,baro,487.66617 +32292000,mag,0.2,-0.08000001,0.42800003 +32292000,imu,-0.18941171,0.17880742,-9.885459,0.006920864,-0.009533796,-0.00300486 +32296000,mag,0.2,-0.08000001,0.42800003 +32296000,baro,487.7319 +32296000,airspeed,-2.222544,-2.170656 +32296000,imu,-0.22886513,0.17525418,-9.93484,0.0060721138,-0.00872591,-0.004820199 +32300000,imu,-0.27784356,0.1908716,-9.841984,0.003918422,-0.011868234,-0.0012568671 +32300000,mag,0.2,-0.08000001,0.42800003 +32300000,baro,487.5488 +32300000,airspeed,-2.068407,-2.020139 +32304000,mag,0.2,-0.08000001,0.42800003 +32304000,imu,-0.22896118,0.18927696,-9.776656,0.00603715,-0.010868866,0.0013800756 +32304000,baro,487.50186 +32304000,airspeed,-1.659979,-1.6212466 +32308000,airspeed,-2.0649846,-2.0167587 +32308000,mag,0.2,-0.08000001,0.42800003 +32308000,baro,487.86337 +32308000,imu,-0.20834255,0.19473486,-9.868614,0.008680695,-0.004970518,0.0014453853 +32312000,baro,487.638 +32312000,airspeed,-1.1921992,-1.1643718 +32312000,imu,-0.17543037,0.2520449,-9.9487915,-0.00067120115,-0.0034040282,0.0070306985 +32312000,mag,0.2,-0.08000001,0.42800003 +32320000,baro,487.76477 +32320000,mag,0.2,-0.08000001,0.42800003 +32320000,imu,-0.23550281,0.10884837,-9.951883,-0.00030728197,-0.010418404,0.000465137 +32320000,airspeed,4.2508163,4.151566 +32324000,airspeed,3.882907,3.792294 +32324000,mag,0.2,-0.08000001,0.42800003 +32324000,baro,487.5535 +32324000,imu,-0.23776865,0.106385775,-9.99948,-0.0023189182,-0.013094963,-0.0014537018 +32328000,airspeed,-1.2602453,-1.2308344 +32328000,mag,0.2,-0.08000001,0.42800003 +32328000,imu,-0.2579517,0.15576081,-9.965328,-0.009210074,-0.0088970605,-0.0030732234 +32328000,baro,487.57227 +32336000,baro,487.7507 +32336000,mag,0.19900002,-0.08000001,0.42900002 +32336000,imu,-0.26539367,0.20861316,-9.877847,-0.006669158,-0.0053850613,-0.0024938274 +32336000,airspeed,-2.9769695,-2.9074638 +32340000,mag,0.19900002,-0.08000001,0.42900002 +32340000,baro,487.51123 +32344000,imu,-0.20544891,0.068404585,-9.845462,-0.004994331,-0.011047576,0.0042159245 +32344000,airspeed,-2.4720094,-2.4143198 +32348000,mag,0.19900002,-0.08000001,0.42900002 +32348000,airspeed,-1.9945977,-1.9480379 +32348000,baro,487.66617 +32348000,imu,-0.23680124,0.06350407,-9.898166,-0.007974096,-0.0018592902,0.0035901803 +32352000,baro,487.66617 +32352000,mag,0.19900002,-0.08000001,0.42900002 +32352000,imu,-0.26132643,0.08256053,-9.916959,-0.007094474,-0.00054118276,-0.00039816432 +32352000,airspeed,0.3411423,0.33317903 +32356000,airspeed,-2.276596,-2.223458 +32356000,gps,488212.0,85456081.0,473977508.0,-0.01,0.03,0.66999996 +32356000,baro,487.6333 +32356000,mag,0.19900002,-0.08000001,0.42900002 +32356000,imu,-0.28439543,0.15454017,-9.936013,-0.0065861754,-0.00449944,-0.0018561176 +32360000,airspeed,1.9110378,1.8664322 +32360000,baro,487.6333 +32360000,mag,0.19900002,-0.08000001,0.42900002 +32360000,imu,-0.3556601,0.11760322,-9.909975,-0.0105122,-0.0064860173,0.0030167412 +32364000,baro,487.62393 +32364000,airspeed,-2.3749475,-2.319515 +32364000,imu,-0.27434042,0.08000664,-9.902468,-0.008608733,-0.0045822207,0.011575149 +32364000,mag,0.19900002,-0.08000001,0.42900002 +32368000,baro,487.58636 +32368000,imu,-0.19121423,0.11294555,-9.911467,-0.0029408908,-0.004306189,0.006438926 +32368000,mag,0.19900002,-0.08000001,0.42900002 +32368000,airspeed,2.2170568,2.165314 +32372000,baro,487.58636 +32372000,imu,-0.121753134,0.14911886,-9.886067,-0.0033418292,-0.0046288846,0.004457127 +32372000,airspeed,2.9866438,2.91694 +32372000,mag,0.19900002,-0.08000001,0.42900002 +32376000,airspeed,-3.7872205,-3.6988144 +32376000,baro,487.67087 +32376000,mag,0.19900002,-0.08000001,0.42900002 +32376000,imu,-0.15154803,0.111016326,-9.904037,-0.005442776,-0.0034058082,0.0065614046 +32380000,imu,-0.23203874,0.08249749,-9.903449,-0.008632038,-0.0052383495,-0.002384899 +32380000,airspeed,-3.4069996,-3.3274791 +32380000,mag,0.19900002,-0.08000001,0.42900002 +32380000,baro,487.61453 +32384000,airspeed,-1.2822937,-1.2523562 +32384000,imu,-0.2428631,0.12418964,-9.886544,-0.014789836,-0.005656115,0.00034199996 +32384000,baro,487.7272 +32384000,mag,0.202,-0.08200001,0.42900002 +32392000,baro,487.6474 +32392000,airspeed,2.8681884,2.8012388 +32392000,imu,-0.30412093,0.16478932,-9.843622,-0.014773046,-0.008444382,-0.0049229246 +32392000,mag,0.202,-0.08200001,0.42900002 +32396000,baro,487.6568 +32396000,mag,0.202,-0.08200001,0.42900002 +32396000,imu,-0.24213572,0.1431717,-9.877752,-0.02135496,-0.0006115397,0.0038766756 +32396000,airspeed,-2.2486331,-2.1961436 +32400000,imu,-0.22368719,0.17549089,-9.910828,-0.018373087,0.0045946054,0.0016103354 +32404000,imu,-0.27200407,0.15098137,-9.940644,-0.017119735,0.0018326069,0.0023018315 +32404000,airspeed,-3.4652083,-3.3843343 +32404000,mag,0.202,-0.08200001,0.42900002 +32404000,baro,487.59106 +32408000,airspeed,3.7197983,3.6329854 +32408000,mag,0.2,-0.084000014,0.42900002 +32408000,baro,487.57227 +32408000,imu,-9.400888,-10.450664,-24.954123,-0.6139067,0.62502277,-0.03187846 +32412000,airspeed,-3.3310838,-3.253322 +32412000,imu,-1.6845245,-4.24386,-97.494675,-0.5960067,0.61862993,-0.036477905 +32416000,airspeed,-3.5669186,-3.4836798 +32416000,mag,0.202,-0.084000014,0.42900002 +32416000,baro,487.5488 +32416000,imu,7.5265,6.4072523,-82.591095,0.010730378,-0.01518627,0.005094528 +32420000,airspeed,4.0727096,3.977634 +32420000,mag,0.202,-0.084000014,0.42900002 +32420000,baro,487.68497 +32420000,imu,-0.06955746,0.28528926,-10.1790695,0.005189079,-0.012611195,0.011565893 +32420000,landed,0.0 +32424000,baro,487.6568 +32424000,mag,0.202,-0.084000014,0.42900002 +32428000,imu,-0.101517186,0.238441,-10.310407,0.0047641457,-0.012445987,0.007434159 +32428000,airspeed,-2.627272,-2.565955 +32432000,imu,-0.005123239,0.3881037,-10.805712,0.015138321,-0.017757175,0.002540073 +32432000,baro,487.58636 +32432000,mag,0.202,-0.084000014,0.42900002 +32432000,airspeed,-2.5205333,-2.4617076 +32436000,baro,487.62863 +32436000,mag,0.19900002,-0.08300001,0.43100002 +32440000,airspeed,3.8065896,3.7177398 +32440000,imu,0.0030872608,0.33377948,-11.194345,0.045673423,-0.03920425,0.0061608455 +32444000,imu,0.04367621,0.30073422,-11.02584,0.051160764,-0.048934717,0.0038801841 +32444000,baro,487.62393 +32444000,mag,0.19900002,-0.08300001,0.43100002 +32444000,airspeed,1.1706454,1.1433218 +32448000,airspeed,-3.3883193,-3.3092587 +32448000,imu,-0.07371528,0.17812043,-10.8162985,0.059718106,-0.057030447,0.004201409 +32448000,mag,0.19900002,-0.08300001,0.43100002 +32448000,baro,487.49246 +32452000,baro,487.7413 +32452000,mag,0.2,-0.08300001,0.43100002 +32456000,baro,487.47836 +32456000,mag,0.2,-0.08300001,0.43100002 +32456000,airspeed,1.469308,1.4350257 +32456000,imu,-0.11147232,0.16924447,-9.859941,0.06355955,-0.05772367,0.0035671734 +32460000,baro,487.69434 +32460000,mag,0.2,-0.08300001,0.43100002 +32460000,airspeed,1.2721152,1.2424177 +32460000,imu,-0.22454269,0.07447207,-8.558456,0.05820987,-0.04131006,0.004033818 +32464000,airspeed,-2.4662511,-2.4086857 +32464000,imu,-0.53727233,-0.13754563,-7.609077,0.049707826,-0.0139281135,0.0061802487 +32464000,baro,487.6333 +32464000,mag,0.2,-0.08300001,0.43100002 +32468000,baro,487.469 +32468000,mag,0.2,-0.08300001,0.43100002 +32468000,imu,-0.6334852,-0.0909058,-7.0289307,0.017211784,-0.005464957,0.00064967014 +32472000,baro,487.5582 +32472000,mag,0.2,-0.08300001,0.43100002 +32472000,airspeed,-2.4729185,-2.4152079 +32472000,imu,-0.5023116,-0.25140926,-6.743282,-0.03618582,-0.0043159155,-0.0017863236 +32476000,baro,487.75537 +32476000,mag,0.2,-0.08300001,0.43100002 +32476000,airspeed,-3.471583,-3.3905258 +32476000,imu,-0.3369149,0.13876243,-10.194882,-0.039314903,0.004074996,0.0015358643 +32480000,airspeed,-3.3340802,-3.256269 +32480000,mag,0.2,-0.08300001,0.43100002 +32480000,baro,487.57697 +32480000,imu,-0.15754648,0.611282,-11.80193,-0.01125734,-0.003662422,-0.005172554 +32488000,imu,-0.26587668,0.16507447,-9.834139,0.0050807977,-0.0029358666,-0.0034196158 +32488000,baro,487.59106 +32488000,mag,0.20300001,-0.08200001,0.42600003 +32488000,airspeed,3.5410311,3.4583871 +32492000,imu,-0.2548583,0.19517551,-9.80619,0.0024760517,-0.004515187,0.002509591 +32492000,baro,487.57227 +32492000,airspeed,-1.8146665,-1.7723161 +32492000,mag,0.20300001,-0.08200001,0.42600003 +32496000,imu,-0.18357344,0.17442013,-9.881161,0.0015364401,-0.0057488596,0.00595484 +32496000,baro,487.68967 +32496000,airspeed,-1.6588919,-1.6201655 +32496000,mag,0.20300001,-0.08200001,0.42600003 +32504000,baro,487.51123 +32504000,airspeed,-3.8666673,-3.7764413 +32504000,mag,0.20300001,-0.08200001,0.42600003 +32504000,imu,-0.23884797,0.21581784,-9.905185,0.0030024652,-0.006861,-0.0016552455 +32508000,airspeed,-1.3401374,-1.3088578 +32508000,imu,-0.24848896,0.23004149,-9.968233,-0.004627231,-0.009125104,-0.0010831759 +32512000,mag,0.20300001,-0.08200001,0.42600003 +32512000,airspeed,-3.5356648,-3.4531026 +32512000,baro,487.80234 +32512000,imu,-0.21674038,0.16971098,-9.919616,-0.008042186,-0.0029601604,-0.003341092 +32520000,airspeed,-3.6715224,-3.585805 +32520000,baro,487.7225 +32520000,imu,-0.2762286,0.15615378,-9.973444,-0.0015095408,-0.008863314,-0.0041886414 +32520000,mag,0.20300001,-0.08200001,0.42600003 +32524000,airspeed,-5.8579264,-5.7211637 +32524000,mag,0.20300001,-0.08200001,0.42600003 +32524000,baro,487.7225 +32524000,imu,-0.30474734,0.16234747,-9.912748,-0.0018239897,-0.006814368,-0.0034599993 +32528000,baro,487.7413 +32528000,mag,0.20300001,-0.08200001,0.42600003 +32528000,airspeed,-3.878009,-3.787466 +32528000,imu,-0.2461042,0.17127252,-9.898937,-0.0028364668,-0.00087020587,4.5866555e-06 +32532000,mag,0.20300001,-0.08200001,0.42600003 +32532000,imu,-0.2659652,0.19119988,-9.885532,-0.0070749526,-0.0016750508,0.0062631285 +32532000,airspeed,-1.7724891,-1.7311053 +32532000,baro,487.7413 +32536000,airspeed,0.8249757,0.8057194 +32536000,imu,-0.31933522,0.17807172,-9.8831215,-0.0030433137,-0.0055496693,0.00071759906 +32536000,baro,487.638 +32536000,mag,0.20300001,-0.08200001,0.42600003 +32540000,airspeed,-1.2678392,-1.2382544 +32540000,mag,0.20300001,-0.08100001,0.42700002 +32540000,baro,487.52063 +32540000,imu,-0.22726275,0.18879297,-9.943487,-0.001872854,-0.0005588658,-0.0019414877 +32544000,baro,487.52063 +32544000,airspeed,-1.3197726,-1.2889761 +32544000,mag,0.20300001,-0.08100001,0.42700002 +32544000,imu,-0.19256802,0.15298931,-9.88436,-0.005120579,0.003682435,-0.000103392806 +32552000,airspeed,0.84661347,0.8268546 +32552000,mag,0.20300001,-0.08100001,0.42700002 +32552000,baro,487.58636 +32552000,imu,-0.22233272,0.21462463,-9.9216795,-0.0036148496,-0.004842014,0.0074851722 +32556000,mag,0.20300001,-0.08100001,0.42700002 +32556000,airspeed,2.2898953,2.236452 +32556000,gps,488091.0,85456082.0,473977508.0,0.0,0.02,-0.07 +32556000,baro,487.58636 +32556000,imu,-0.23957966,0.16102491,-9.921299,-0.0039595985,-0.0008966973,-0.00027717603 +32560000,airspeed,3.6157992,3.5313933 +32560000,imu,-0.19785757,0.12018608,-9.995365,-0.0020465078,-0.0028078102,1.4747047e-05 +32564000,imu,-0.17596655,0.13040802,-9.996834,-0.0013324944,-0.004870251,-0.0012923337 +32564000,mag,0.20300001,-0.08100001,0.42700002 +32564000,airspeed,1.1987972,1.1708082 +32564000,baro,487.7366 +32568000,imu,-0.19817428,0.15506892,-9.929054,-0.0035872655,-0.0030439678,0.0018899216 +32568000,airspeed,0.5497028,0.53687286 +32568000,mag,0.20300001,-0.08100001,0.42700002 +32568000,baro,487.60513 +32572000,baro,487.5488 +32572000,airspeed,-1.8208681,-1.7783755 +32572000,mag,0.20300001,-0.08100001,0.42700002 +32572000,imu,-0.19789179,0.17550756,-9.899627,-0.004235807,-0.002249788,0.006724885 +32576000,mag,0.20300001,-0.08100001,0.42700002 +32576000,baro,487.6568 +32576000,airspeed,2.0878992,2.0391614 +32576000,imu,-0.22335258,0.15580131,-9.906186,0.00012951627,-0.009905608,9.2114504e-05 +32584000,imu,-0.2608369,0.17003474,-9.9307375,-0.0062488765,-0.005905224,0.0032589377 +32584000,airspeed,-3.9419482,-3.8499408 +32584000,baro,487.61453 +32584000,mag,0.20300001,-0.08100001,0.42700002 +32588000,imu,-0.17051443,0.2018464,-9.965274,-0.0026687249,-0.0019814102,-0.0010960682 +32588000,airspeed,-3.2521,-3.1761749 +32588000,baro,487.71783 +32588000,mag,0.20300001,-0.08100001,0.42700002 +32592000,baro,487.6333 +32592000,imu,-0.24989861,0.16792528,-9.938239,0.0017990815,-0.00033789966,0.00078572764 +32592000,mag,0.19900002,-0.08200001,0.43 +32592000,airspeed,-2.398478,-2.3424945 +32600000,imu,-0.27579647,0.17235616,-9.863703,-0.0038473718,-0.0033505885,0.0031381785 +32600000,mag,0.19900002,-0.08200001,0.43 +32600000,baro,487.6521 +32600000,airspeed,-3.5610027,-3.47788 +32608000,airspeed,-1.7924187,-1.7505792 +32608000,imu,-0.13119204,0.19900052,-9.849317,-0.001439933,-0.0075896555,-0.004275972 +32608000,mag,0.19900002,-0.08200001,0.43 +32608000,baro,487.6521 +32612000,imu,-0.21051103,0.15096237,-10.003411,0.0003651409,-0.006574254,-0.0053101797 +32612000,baro,487.6521 +32612000,mag,0.19900002,-0.08200001,0.43 +32612000,airspeed,-2.332737,-2.278285 +32616000,airspeed,0.9790494,0.95620126 +32616000,imu,-0.21951687,0.19048004,-9.9780245,-0.002615109,-0.0007368182,0.0021553764 +32616000,mag,0.19900002,-0.08200001,0.43 +32616000,baro,487.5582 +32620000,mag,0.19900002,-0.08200001,0.43 +32620000,airspeed,3.7293718,3.6423392 +32620000,baro,487.5582 +32620000,imu,-0.2734503,0.18058965,-9.852738,-0.004660694,-0.0047963737,0.0019986357 +32624000,baro,487.5488 +32624000,mag,0.19900002,-0.08200001,0.43 +32628000,airspeed,-2.1330085,-2.0832338 +32628000,imu,-0.2178032,0.14083816,-9.965233,0.0009978736,-0.004179481,0.0050081336 +32632000,mag,0.19900002,-0.08200001,0.43 +32632000,airspeed,-1.778775,-1.7372477 +32632000,imu,-0.2437407,0.18335281,-9.92902,-0.00042958642,-0.0027701051,0.0034730604 +32632000,baro,487.71313 +32636000,mag,0.19900002,-0.08200001,0.43 +32636000,imu,-0.31352812,0.14571868,-9.912193,0.00034028967,-0.0017864595,0.003525772 +32636000,baro,487.75537 +32636000,airspeed,2.6619701,2.5998168 +32640000,imu,-0.31964177,0.1712582,-9.897053,0.00031289412,3.9494105e-05,-0.0010220478 +32640000,baro,487.4737 +32640000,mag,0.19900002,-0.08200001,0.43 +32640000,airspeed,-3.5974572,-3.5135212 +32644000,imu,-0.28558758,0.2126764,-9.830115,0.00048550236,-0.0011918053,-0.005934902 +32644000,airspeed,-0.80349267,-0.78473634 +32644000,mag,0.2,-0.08300001,0.42900002 +32644000,baro,487.67087 +32648000,mag,0.2,-0.08300001,0.42900002 +32648000,baro,487.67087 +32648000,airspeed,-2.2155106,-2.1637928 +32648000,imu,-0.2481477,0.1594513,-9.862494,-0.00013810801,0.0008241146,-0.00624687 +32652000,baro,487.7225 +32652000,imu,-0.20852801,0.11666998,-9.86857,0.0018668972,-0.0024639743,-0.0026792851 +32652000,airspeed,-2.9927895,-2.9229178 +32652000,mag,0.2,-0.08300001,0.42900002 +32656000,imu,-0.22087452,0.15021357,-9.853422,0.005006985,-0.010670449,-0.0019277681 +32656000,mag,0.2,-0.08300001,0.42900002 +32656000,baro,487.53003 +32656000,airspeed,1.5634894,1.5270047 +32664000,imu,-0.3046714,0.25438762,-9.938679,-0.0016489858,0.0057786526,0.0019296268 +32664000,baro,487.61453 +32664000,mag,0.2,-0.08300001,0.42900002 +32664000,airspeed,2.459669,2.4022596 +32668000,imu,-0.30198956,0.25493774,-9.944395,7.689422e-05,0.0015275945,0.0062038233 +32668000,airspeed,-4.73359,-4.6230726 +32668000,mag,0.2,-0.08300001,0.42900002 +32668000,baro,487.7366 +32672000,baro,487.60043 +32672000,imu,-0.22174393,0.17035134,-9.948196,4.885607e-09,-0.004696944,0.0005791004 +32672000,mag,0.2,-0.08300001,0.42900002 +32672000,airspeed,-0.9909971,-0.9678678 +32680000,mag,0.2,-0.08300001,0.42900002 +32680000,imu,-0.18861243,0.1432359,-9.946207,0.001440705,-0.007957746,-0.0047285743 +32680000,baro,487.6568 +32680000,airspeed,0.68711925,0.6710799 +32684000,baro,487.6568 +32684000,mag,0.2,-0.08300001,0.42900002 +32684000,imu,-0.23433918,0.20106046,-9.93437,-0.0013286616,-0.010890724,-0.0030286491 +32684000,airspeed,-2.3083844,-2.2545 +32688000,airspeed,-1.0950868,-1.0695256 +32688000,baro,487.638 +32688000,mag,0.2,-0.08300001,0.42900002 +32688000,imu,-0.26356888,0.18136553,-9.911562,-0.005536646,-0.008504843,0.004230814 +32696000,mag,0.2,-0.07900001,0.42400002 +32696000,airspeed,-3.9378366,-3.8459013 +32696000,baro,487.7225 +32696000,imu,-0.18820481,0.23161125,-9.92168,-0.004036944,-0.006564486,-0.0021976198 +32700000,airspeed,-1.8595004,-1.8160923 +32700000,mag,0.2,-0.07900001,0.42400002 +32700000,imu,-0.17774758,0.2057381,-9.885289,-0.004395362,-0.0016919546,0.0048522973 +32700000,baro,487.67557 +32708000,mag,0.2,-0.07900001,0.42400002 +32708000,baro,487.5394 +32708000,airspeed,1.4830626,1.448454 +32708000,imu,-0.30664337,0.1820078,-9.813118,0.001080312,-0.009840317,-0.0008242992 +32712000,imu,-0.29383013,0.16739526,-9.87512,-0.004051398,-0.008455271,-0.002528105 +32712000,airspeed,-3.3765368,-3.2977235 +32716000,mag,0.2,-0.07900001,0.42400002 +32716000,imu,-0.20602578,0.095674604,-9.908969,-0.0015578241,0.00067824905,0.0016622621 +32716000,baro,487.6333 +32716000,airspeed,-1.9540873,-1.908476 +32720000,imu,-0.14580803,0.14329447,-9.90458,0.0010723427,-2.6449403e-05,0.0019152847 +32720000,airspeed,-3.4751081,-3.3939815 +32720000,mag,0.2,-0.07900001,0.42400002 +32720000,baro,487.69434 +32728000,baro,487.7319 +32728000,mag,0.2,-0.07900001,0.42400002 +32728000,imu,-0.24186687,0.27947447,-9.908543,-0.002585207,-0.009237389,0.00052019506 +32728000,airspeed,-3.049454,-2.9782581 +32732000,airspeed,4.2719584,4.1722364 +32732000,imu,-0.28963402,0.25400928,-9.890424,-0.0051234877,-0.007028604,0.00018287254 +32732000,mag,0.2,-0.07900001,0.42400002 +32732000,baro,487.66617 +32736000,imu,-0.27777073,0.1659573,-9.98438,-0.0047834157,-0.003816389,-0.0017906274 +32736000,baro,487.79764 +32736000,airspeed,-1.4769641,-1.4424753 +32740000,mag,0.2,-0.07900001,0.42400002 +32744000,imu,-0.21349446,0.21566279,-9.921336,0.0005352986,-0.006881792,0.0079198 +32744000,mag,0.2,-0.07900001,0.42400002 +32744000,airspeed,-0.124429256,-0.121524625 +32744000,baro,487.67087 +32748000,mag,0.19900002,-0.08100001,0.42600003 +32748000,airspeed,3.6937866,3.6075776 +32748000,imu,-0.221791,0.23292547,-9.936139,0.0010925466,-0.0104662245,0.0072326493 +32748000,baro,487.59106 +32752000,mag,0.19900002,-0.08100001,0.42600003 +32752000,airspeed,-2.9784796,-2.9089592 +32752000,baro,487.62863 +32752000,imu,-0.21321592,0.16059113,-9.868793,-0.0023532237,-0.0056733224,0.0030558296 +32756000,baro,487.66617 +32756000,imu,-0.22287737,0.13991737,-9.901043,0.0021807975,-0.0062237843,0.003986403 +32756000,mag,0.19900002,-0.08100001,0.42600003 +32756000,airspeed,1.554756,1.5184629 +32764000,imu,-0.30534172,0.18299966,-9.943754,0.0029723183,-0.008114664,-0.0014509594 +32764000,airspeed,3.5408208,3.458195 +32764000,mag,0.19900002,-0.08100001,0.42600003 +32764000,baro,487.52533 +32768000,baro,487.52533 +32768000,imu,-0.22289039,0.21611327,-9.9115095,0.004324405,-0.009794294,-0.0005285679 +32768000,airspeed,-3.1538768,-3.0802803 +32768000,mag,0.19900002,-0.08100001,0.42600003 +32772000,baro,487.76477 +32772000,airspeed,2.1759374,2.1251314 +32772000,mag,0.19900002,-0.08100001,0.42600003 +32772000,imu,-0.19087766,0.19221042,-9.862387,0.0007409592,-0.010622346,0.0022098555 +32780000,imu,-0.19441554,0.14584865,-9.941145,-0.0017603112,-0.004181088,-0.003602838 +32780000,baro,487.70844 +32780000,airspeed,-0.7327136,-0.7156077 +32780000,mag,0.19900002,-0.08100001,0.42600003 +32784000,mag,0.19900002,-0.08100001,0.42600003 +32784000,airspeed,3.2859719,3.2092907 +32784000,imu,-0.22374141,0.18763392,-10.011511,-0.0019582822,0.000914766,-0.0032895878 +32784000,baro,487.5394 +32788000,baro,487.5394 +32788000,imu,-0.18623544,0.0964356,-9.984314,0.0019720742,-0.0025180145,-0.0038619337 +32788000,airspeed,-3.2862613,-3.2095735 +32788000,mag,0.19900002,-0.08100001,0.42600003 +32792000,airspeed,-0.8582577,-0.83822453 +32792000,baro,487.638 +32792000,mag,0.19900002,-0.08100001,0.42600003 +32792000,imu,-0.20864715,0.12777492,-9.889984,-0.0004420437,-0.0036614577,-0.0047327704 +32800000,imu,-0.25120917,0.2411149,-9.968603,0.0020376262,-0.0119897425,0.0023029048 +32800000,mag,0.19900002,-0.08100001,0.42700002 +32800000,airspeed,-2.4510474,-2.393849 +32800000,landed,0.0 +32800000,baro,487.5488 +32804000,airspeed,-1.5597667,-1.5233674 +32804000,imu,-0.25255632,0.24372356,-9.942685,0.0024845176,-0.012320749,-0.0005465862 +32804000,baro,487.5488 +32804000,mag,0.19900002,-0.08100001,0.42700002 +32808000,airspeed,-2.617083,-2.5559995 +32808000,baro,487.61453 +32808000,imu,-0.23742013,0.20038657,-9.937714,-0.0053556454,-0.011046786,-0.0034556603 +32808000,mag,0.19900002,-0.08100001,0.42700002 +32812000,baro,487.71313 +32812000,imu,-0.1590931,0.1376881,-9.943983,-0.00045483577,-0.0078736,-0.006529443 +32812000,mag,0.19900002,-0.08100001,0.42700002 +32812000,airspeed,2.4282188,2.3715296 +32816000,imu,-0.13447939,0.07722781,-9.910193,0.0024083487,-0.0041955058,0.0003924965 +32816000,airspeed,2.7116222,2.6483166 +32816000,baro,487.71313 +32816000,mag,0.19900002,-0.08100001,0.42700002 +32820000,mag,0.19900002,-0.08100001,0.42700002 +32820000,imu,-0.16886993,0.09192462,-9.865347,-0.003408049,-0.008967212,0.0039418195 +32820000,baro,487.66617 +32820000,airspeed,-2.4589727,-2.4015725 +32828000,mag,0.19900002,-0.08100001,0.42700002 +32828000,airspeed,1.6907259,1.6512594 +32828000,imu,-0.20864366,0.18975288,-9.955936,-0.0044843727,-0.0003923717,0.0050124708 +32828000,baro,487.6568 +32832000,airspeed,-3.3497145,-3.2715333 +32832000,baro,487.60513 +32832000,mag,0.19900002,-0.08100001,0.42700002 +32832000,imu,-0.14127219,0.11957945,-9.958374,-0.00057829986,-0.0043822397,0.0027192277 +32840000,airspeed,-3.6243565,-3.5397458 +32840000,imu,-0.27273595,0.11324635,-9.904406,-0.005202075,-0.0040726014,-0.009156408 +32840000,mag,0.19900002,-0.08100001,0.42700002 +32840000,baro,487.69434 +32848000,mag,0.19900002,-0.08100001,0.42700002 +32848000,airspeed,-3.261965,-3.1857982 +32848000,imu,-0.18973674,0.20525344,-9.963796,-0.0026365377,-0.005930292,-0.00086533924 +32848000,baro,487.77887 +32852000,airspeed,3.7906067,3.702096 +32852000,imu,-0.2382867,0.13156012,-9.935593,0.001442548,-0.005216658,0.0002785572 +32856000,imu,-0.28962594,0.1502864,-9.851788,0.0029694953,-0.0076626656,0.001481464 +32856000,mag,0.20300001,-0.08200001,0.42900002 +32856000,gps,488114.0,85456082.0,473977507.0,0.0,0.0,-0.01 +32856000,baro,487.5676 +32856000,airspeed,-0.75335425,-0.73577267 +32860000,airspeed,1.4280095,1.394683 +32860000,imu,-0.26545694,0.14176472,-9.81465,0.008670662,-0.011019161,0.00072349317 +32860000,mag,0.20300001,-0.08200001,0.42900002 +32860000,baro,487.5676 +32864000,airspeed,-1.2617849,-1.2323265 +32864000,mag,0.20300001,-0.08200001,0.42900002 +32864000,baro,487.7225 +32864000,imu,-0.20359686,0.15811,-9.812075,0.004149544,-0.011406308,0.0012023688 +32868000,mag,0.20300001,-0.08200001,0.42900002 +32868000,baro,487.60043 +32868000,imu,-0.20251276,0.18471573,-9.845984,-0.00071107666,-0.011931571,0.0012544633 +32868000,airspeed,2.3027575,2.2490125 +32872000,imu,-0.2473245,0.17455849,-9.902315,0.0003496795,-0.013954336,-0.0036852374 +32872000,airspeed,3.7165685,3.6298225 +32876000,baro,487.61453 +32876000,mag,0.20300001,-0.08200001,0.42900002 +32876000,imu,-0.24365316,0.15587914,-9.941874,-0.006489243,-0.010179125,-0.004622553 +32876000,airspeed,1.8825451,1.8386059 +32880000,airspeed,1.4883678,1.4536271 +32880000,imu,-0.25347003,0.116369136,-9.93488,-0.0050592152,-0.00863955,-0.0030833716 +32884000,airspeed,0.913232,0.8919089 +32884000,baro,487.76477 +32884000,imu,-0.2332788,0.20692928,-9.9461,-0.000913113,-0.0059477706,0.0011144051 +32884000,mag,0.20300001,-0.08200001,0.42900002 +32888000,mag,0.20300001,-0.08200001,0.42900002 +32888000,baro,487.76477 +32888000,imu,-0.2335687,0.20084031,-9.923951,0.0017429027,-0.0049302806,0.0028362973 +32888000,airspeed,1.9029341,1.8585023 +32896000,baro,487.67557 +32896000,imu,-0.36283544,0.21667588,-9.873519,0.006484509,-0.0040722243,0.0003406538 +32896000,airspeed,3.275263,3.1988058 +32896000,mag,0.20300001,-0.08200001,0.42900002 +32904000,mag,0.20300001,-0.08200001,0.42900002 +32904000,airspeed,1.8160839,1.7736881 +32904000,imu,-0.2712913,0.16309187,-9.908326,-0.0039037017,-0.0068619307,-0.0007182757 +32904000,baro,487.68967 +32912000,imu,-0.21594007,0.16944668,-10.068001,-0.0022932678,-0.0069863037,-0.00037843292 +32912000,airspeed,3.7427573,3.655395 +32912000,mag,0.202,-0.07900001,0.43 +32912000,baro,487.638 +32916000,airspeed,-2.4180074,-2.361567 +32916000,mag,0.202,-0.07900001,0.43 +32916000,baro,487.638 +32916000,imu,-0.19229384,0.1845901,-10.024568,-0.0063619525,-0.002740336,-0.0017937622 +32920000,mag,0.202,-0.07900001,0.43 +32920000,airspeed,-2.9886732,-2.9188883 +32920000,baro,487.77417 +32920000,imu,-0.16781749,0.17618226,-9.893027,-0.0051031364,-0.0046520145,-0.00720072 +32924000,airspeed,-2.2361355,-2.183942 +32924000,imu,-0.17393486,0.13752937,-9.82741,-0.0012208127,-0.006365012,-0.006960156 +32924000,baro,487.62393 +32924000,mag,0.202,-0.07900001,0.43 +32928000,imu,-0.13034788,0.12741865,-9.835425,-0.0045931083,-0.0044511724,0.007185944 +32928000,mag,0.202,-0.07900001,0.43 +32928000,baro,487.62393 +32928000,airspeed,-1.6592096,-1.6204822 +32932000,imu,-0.11472919,0.17385277,-9.817722,-0.0035042663,-0.000773805,0.0048193634 +32932000,mag,0.202,-0.07900001,0.43 +32932000,baro,487.7366 +32932000,airspeed,2.3335483,2.2790658 +32936000,mag,0.202,-0.07900001,0.43 +32936000,baro,487.50656 +32936000,imu,-0.20343718,0.22008574,-9.880806,-0.0011674148,-0.0061350283,-0.0033399807 +32936000,airspeed,2.3665793,2.311357 +32940000,mag,0.202,-0.07900001,0.43 +32940000,baro,487.7272 +32940000,imu,-0.2523011,0.20406857,-9.8911495,-0.0050597023,-0.008124475,0.0036469402 +32940000,airspeed,-0.68066144,-0.66477007 +32948000,airspeed,-2.4249678,-2.3683658 +32948000,baro,487.6333 +32948000,mag,0.202,-0.07900001,0.43 +32948000,imu,-0.24386297,0.2336973,-9.98325,-0.0007214407,0.0020657624,0.006124894 +32952000,imu,-0.22356382,0.25494003,-9.879183,-0.0010280894,0.0035421173,0.010175076 +32952000,airspeed,-3.2793934,-3.202848 +32952000,mag,0.202,-0.07900001,0.43 +32952000,baro,487.6333 +32956000,baro,487.469 +32956000,mag,0.19900002,-0.08100001,0.42800003 +32956000,airspeed,-3.139864,-3.0666053 +32956000,imu,-0.18069272,0.2541505,-9.782689,-0.002461695,-0.0007886757,0.001597875 +32960000,imu,-0.23169178,0.25431433,-9.839702,-0.0006251326,-0.00469887,0.0014674013 +32960000,mag,0.19900002,-0.08100001,0.42800003 +32960000,baro,487.469 +32960000,airspeed,-3.191195,-3.1167386 +32964000,baro,487.77887 +32964000,imu,-0.31298795,0.2042371,-9.908439,0.001381903,-0.0013639441,0.0016330269 +32964000,mag,0.19900002,-0.08100001,0.42800003 +32964000,airspeed,3.475017,3.3938758 +32972000,imu,-0.29026237,0.25003237,-9.864827,-0.005570585,-0.0069369003,-0.0020104388 +32972000,airspeed,-2.0471668,-1.9993712 +32972000,mag,0.19900002,-0.08100001,0.42800003 +32972000,baro,487.7319 +32976000,airspeed,3.0264556,2.9557996 +32976000,baro,487.71313 +32976000,mag,0.19900002,-0.08100001,0.42800003 +32976000,imu,-0.25006574,0.17193002,-9.922633,-0.0037711237,-0.011870432,0.00010085913 +32980000,airspeed,-4.2841406,-4.184154 +32980000,mag,0.19900002,-0.08100001,0.42800003 +32980000,imu,-0.20530483,0.09386757,-9.944657,-0.0018392799,-0.009926618,-0.002012605 +32980000,baro,487.58636 +32984000,mag,0.19900002,-0.08100001,0.42800003 +32984000,baro,487.69904 +32984000,imu,-0.1535165,0.12597261,-9.896882,-0.0012027995,-0.009823578,-0.0031735734 +32984000,airspeed,1.5088542,1.4736296 +32988000,imu,-0.17600442,0.20601267,-9.904219,-0.00086989393,-0.0074860477,-0.0062015443 +32988000,mag,0.19900002,-0.08100001,0.42800003 +32988000,baro,487.67557 +32988000,airspeed,-2.1337597,-2.0839498 +32996000,airspeed,2.8019204,2.7365334 +32996000,mag,0.19900002,-0.08100001,0.42800003 +32996000,baro,487.5488 +32996000,imu,-0.28577262,0.20118481,-9.919526,0.010130157,-0.00836014,0.00075766403 +33000000,airspeed,1.7703868,1.7290561 +33000000,baro,487.70374 +33000000,mag,0.19900002,-0.08100001,0.42800003 +33000000,imu,-0.29529732,0.121325195,-9.905882,0.007242474,-0.0048691197,-0.0037633744 +33004000,airspeed,2.4480364,2.3909004 +33004000,imu,-0.21500657,0.12750359,-9.913045,-0.003533092,-0.008483503,0.0013721986 +33004000,baro,487.60043 +33004000,mag,0.19900002,-0.08100001,0.42800003 +33008000,baro,487.5582 +33008000,imu,-0.20094173,0.16584978,-9.917616,-0.0027952641,-0.011779388,0.00078780815 +33008000,mag,0.2,-0.08200001,0.43 +33008000,airspeed,2.371318,2.3159785 +33012000,imu,-0.2390281,0.1990293,-9.873815,0.0019060217,-0.010299309,0.0008864832 +33012000,mag,0.2,-0.08200001,0.43 +33012000,baro,487.5582 +33012000,airspeed,2.2293591,2.1773324 +33016000,baro,487.59576 +33016000,airspeed,2.6938307,2.6309586 +33016000,mag,0.2,-0.08200001,0.43 +33016000,imu,-0.23663515,0.18647934,-9.854837,0.002365224,-0.009757128,0.0026952669 +33020000,baro,487.69904 +33020000,airspeed,-0.5339947,-0.52152836 +33020000,imu,-0.20231311,0.14313918,-9.925347,-0.0038027111,-0.012235075,0.0032632153 +33020000,mag,0.2,-0.08200001,0.43 +33028000,imu,-0.23099677,0.20446673,-9.831637,-0.0037985353,-0.00430148,-0.0018170819 +33028000,baro,487.5488 +33028000,mag,0.2,-0.08200001,0.43 +33028000,airspeed,-1.9778324,-1.931677 +33036000,baro,487.42203 +33036000,airspeed,-2.2456882,-2.1932988 +33036000,mag,0.2,-0.08200001,0.43 +33036000,imu,-0.24605243,0.21572894,-9.96499,0.003042379,-0.009085211,-0.0014315888 +33040000,airspeed,-2.6170108,-2.5559194 +33040000,baro,487.67557 +33040000,imu,-0.27789146,0.13371885,-9.914911,0.0006778467,-0.0041277986,-0.0032879491 +33040000,mag,0.2,-0.08200001,0.43 +33044000,imu,-0.29580328,0.1832814,-9.894077,-0.0015469855,-0.0014382922,-0.00067045947 +33044000,airspeed,-1.01671,-0.99297637 +33048000,mag,0.2,-0.08200001,0.43 +33048000,baro,487.7319 +33048000,airspeed,3.7963905,3.7077556 +33048000,imu,-0.2573873,0.20095693,-9.912589,-0.0021580998,-0.009388143,0.0054011606 +33052000,airspeed,4.0315666,3.9375174 +33052000,imu,-0.2119715,0.23505539,-9.876809,-0.0029944133,-0.011632452,0.0041497867 +33056000,mag,0.2,-0.08200001,0.43 +33056000,gps,488115.0,85456082.0,473977507.0,0.0,-0.01,0.0 +33056000,baro,487.50656 +33056000,airspeed,2.1625216,2.1120617 +33056000,imu,-0.18062595,0.24661888,-9.857197,-0.0035585607,-0.0035828785,-0.0038014927 +33060000,imu,-0.20806783,0.19692066,-9.858397,0.00042810894,-0.0011350485,-0.0055524106 +33060000,airspeed,-2.963515,-2.8943632 +33060000,baro,487.51593 +33060000,mag,0.2,-0.08300001,0.43100002 +33068000,mag,0.2,-0.08300001,0.43100002 +33068000,baro,487.4596 +33068000,airspeed,1.5340443,1.4982535 +33068000,imu,-0.23261388,0.15895736,-9.914751,0.0005041626,-0.002858029,-0.00018229136 +33072000,mag,0.2,-0.08300001,0.43100002 +33072000,baro,487.66617 +33072000,imu,-0.2542502,0.16146244,-9.930982,0.00071532605,-0.0001550036,0.0001875632 +33072000,airspeed,-4.178134,-4.080603 +33076000,mag,0.2,-0.08300001,0.43100002 +33076000,imu,-0.29982936,0.1318591,-9.92312,0.000952635,0.0007350382,0.0056673116 +33076000,airspeed,1.9036952,1.8592634 +33076000,baro,487.60513 +33080000,landed,0.0 +33084000,imu,-0.29202336,0.10299079,-9.885444,-0.00084248115,0.00048618737,0.0030780297 +33084000,airspeed,3.1534228,3.0798438 +33084000,baro,487.48776 +33084000,mag,0.2,-0.08300001,0.43100002 +33088000,airspeed,3.532323,3.4498649 +33088000,baro,487.67557 +33088000,mag,0.2,-0.08300001,0.43100002 +33088000,imu,-0.28789052,0.17284721,-9.89666,0.0006464317,-0.0014661454,-0.002418684 +33096000,mag,0.2,-0.08300001,0.43100002 +33096000,airspeed,-2.6723917,-2.6100304 +33096000,imu,-0.21527049,0.16340972,-9.902661,0.0012586403,-0.0024614981,0.0007686879 +33096000,baro,487.52533 +33104000,mag,0.2,-0.08300001,0.43100002 +33104000,airspeed,1.0428808,1.0185425 +33104000,imu,-0.16470398,0.14354451,-9.899024,-0.0023456856,-0.0034421377,0.0050154487 +33104000,baro,487.5676 +33108000,imu,-0.23968719,0.25209072,-9.929146,-0.004174917,0.0024572979,-0.003931198 +33108000,airspeed,1.4065996,1.373776 +33108000,baro,487.53003 +33108000,mag,0.2,-0.08300001,0.43100002 +33112000,imu,-0.26507556,0.23545992,-9.92649,-0.0071741138,-0.0007065778,-0.0053245206 +33112000,airspeed,-0.40395942,-0.39452878 +33112000,mag,0.19900002,-0.08300001,0.42900002 +33112000,baro,487.70374 +33116000,imu,-0.21679142,0.18356666,-9.9050865,-0.0072631245,0.0005964112,-0.004605648 +33116000,mag,0.19900002,-0.08300001,0.42900002 +33116000,airspeed,-2.7747285,-2.7099698 +33116000,baro,487.58636 +33120000,imu,-0.2086653,0.16073333,-9.9091,-0.0047971606,-0.00276786,-0.005272668 +33124000,airspeed,-3.7623718,-3.6745713 +33124000,mag,0.19900002,-0.08300001,0.42900002 +33124000,baro,487.5488 +33124000,imu,-0.18836047,0.1483459,-9.895994,-0.004066614,-0.007550561,-0.0023533956 +33128000,imu,-0.21222425,0.17295206,-9.875554,-0.0054785493,-0.0020687028,-0.0039451714 +33128000,airspeed,1.6033123,1.5658777 +33128000,mag,0.19900002,-0.08300001,0.42900002 +33128000,baro,487.7507 +33132000,baro,487.70844 +33132000,imu,-0.27931106,0.21580623,-9.862109,-0.0004592855,-0.0027802582,-0.0071340757 +33132000,mag,0.19900002,-0.08300001,0.42900002 +33132000,airspeed,-4.290155,-4.189998 +33136000,mag,0.19900002,-0.08300001,0.42900002 +33136000,baro,487.8352 +33140000,imu,-0.23438154,0.17625047,-9.881438,-0.009237265,-0.007905955,-0.001388448 +33140000,baro,487.71313 +33140000,mag,0.19900002,-0.08300001,0.42900002 +33140000,airspeed,-2.8620827,-2.7952642 +33144000,airspeed,4.882166,4.768194 +33144000,baro,487.68497 +33144000,imu,-0.22059909,0.18901706,-9.84005,0.0019285346,-0.008218645,0.0016690694 +33144000,mag,0.19900002,-0.08300001,0.42900002 +33148000,mag,0.19900002,-0.08300001,0.42900002 +33148000,baro,487.57697 +33148000,airspeed,0.20161073,0.19690548 +33148000,imu,-0.22121657,0.21007572,-9.878988,0.0058113704,-0.007062838,0.0028242562 +33156000,baro,487.51123 +33156000,imu,-0.25664362,0.19154271,-9.913684,0.0006713983,-0.0063134073,0.004158865 +33156000,mag,0.19900002,-0.08300001,0.42900002 +33156000,airspeed,-1.7788429,-1.7373346 +33160000,mag,0.19900002,-0.08300001,0.42900002 +33160000,baro,487.51123 +33160000,imu,-0.17629811,0.14698058,-9.962007,0.0018692022,-0.00812894,0.0050834725 +33160000,airspeed,-2.7671552,-2.7025852 +33164000,airspeed,3.4805384,3.3992753 +33164000,baro,487.7413 +33164000,imu,-0.26434392,0.17302722,-10.025684,0.0019244269,-0.007394221,0.0020432973 +33164000,mag,0.19800001,-0.08000001,0.42900002 +33168000,airspeed,-1.3278432,-1.2968409 +33168000,imu,-0.3016836,0.112908244,-10.016262,-0.0028236106,-0.0046071676,0.001016269 +33168000,baro,487.7413 +33168000,mag,0.19800001,-0.08000001,0.42900002 +33172000,baro,487.60983 +33172000,mag,0.19800001,-0.08000001,0.42900002 +33176000,baro,487.60983 +33176000,airspeed,1.6604706,1.6217154 +33176000,imu,-0.20119447,0.19136275,-9.935206,0.003366053,-0.003346705,-0.0009533083 +33176000,mag,0.19800001,-0.08000001,0.42900002 +33180000,imu,-0.23011325,0.22342943,-9.985454,0.0065575875,-0.0017761345,0.0035430717 +33180000,airspeed,-2.5355299,-2.4763339 +33180000,baro,487.71783 +33180000,mag,0.19800001,-0.08000001,0.42900002 +33184000,imu,-0.22889867,0.19477734,-9.905968,-0.0043646353,-0.004385956,0.0040489603 +33184000,baro,487.58636 +33184000,mag,0.19800001,-0.08000001,0.42900002 +33184000,airspeed,-1.1921288,-1.1643062 +33192000,airspeed,4.0452294,3.9507678 +33192000,imu,-0.1744236,0.16802469,-9.885936,-0.0048921057,-0.012825135,0.0021253321 +33192000,mag,0.19800001,-0.08000001,0.42900002 +33192000,baro,487.80234 +33196000,mag,0.19800001,-0.08000001,0.42900002 +33196000,baro,487.61453 +33200000,imu,-0.30016187,0.20262101,-9.905756,-0.004297721,-0.0039493684,0.0047007115 +33200000,airspeed,3.001453,2.9314225 +33204000,imu,-0.30795184,0.18816939,-9.852378,-0.0031850212,-0.0039060265,0.00464328 +33204000,airspeed,2.1895854,2.1384702 +33204000,mag,0.19800001,-0.08000001,0.42900002 +33204000,baro,487.68967 +33208000,mag,0.19800001,-0.08000001,0.42900002 +33208000,airspeed,-1.5663872,-1.5298313 +33208000,baro,487.57227 +33208000,imu,-0.22748886,0.21085565,-9.946994,6.578522e-05,-0.01102745,-0.0006381247 +33212000,imu,-0.23514768,0.20409776,-9.960358,0.00015922371,-0.003079604,0.0018748179 +33212000,baro,487.638 +33212000,mag,0.19800001,-0.08000001,0.42900002 +33212000,airspeed,-2.8188426,-2.7530453 +33216000,airspeed,2.554487,2.4948685 +33216000,mag,0.19800001,-0.077000014,0.42900002 +33216000,imu,-0.25731274,0.22736947,-9.928182,-0.0031730887,0.0047481535,0.0020157858 +33216000,baro,487.58636 +33220000,airspeed,4.2082663,4.1100507 +33220000,imu,-0.24869485,0.26075017,-9.916936,-0.0064012883,0.00088151643,-0.004401025 +33220000,mag,0.19800001,-0.077000014,0.42900002 +33220000,baro,487.58636 +33228000,baro,487.7507 +33228000,mag,0.19800001,-0.077000014,0.42900002 +33228000,imu,-0.2543316,0.15819934,-9.922583,-0.0059210784,-0.0063646627,-0.0055839564 +33228000,airspeed,-1.0227764,-0.99889636 +33232000,mag,0.19800001,-0.077000014,0.42900002 +33232000,imu,-0.26797754,0.13191764,-9.920131,-0.0034147603,-0.008845939,-0.003644206 +33232000,baro,487.4596 +33232000,airspeed,3.3663354,3.2877946 +33236000,imu,-0.25452527,0.20584223,-9.937466,-0.0049027298,-0.0058840443,-0.00267225 +33236000,airspeed,-1.8353457,-1.7925248 +33236000,mag,0.19800001,-0.077000014,0.42900002 +33236000,baro,487.4596 +33240000,airspeed,2.7669692,2.702402 +33240000,mag,0.19800001,-0.077000014,0.42900002 +33240000,imu,-0.24834968,0.26299727,-9.930383,-0.0013394604,-0.0052668666,-0.0013625384 +33240000,baro,487.52533 +33248000,mag,0.19800001,-0.077000014,0.42900002 +33248000,imu,-0.20145388,0.18484196,-9.874805,-0.0035773602,-0.0074915965,0.0059252786 +33248000,airspeed,-0.94224405,-0.9202614 +33248000,baro,487.44083 +33256000,mag,0.19800001,-0.077000014,0.42900002 +33256000,baro,487.69434 +33256000,gps,488105.0,85456081.0,473977508.0,0.0,0.02,-0.04 +33256000,airspeed,-2.112938,-2.0636117 +33256000,imu,-0.1504713,0.17572303,-9.948422,-0.0018938747,-0.006138857,0.002514214 +33260000,airspeed,-1.832964,-1.790179 +33260000,baro,487.638 +33260000,imu,-0.22357874,0.20924498,-9.920111,-0.0041680806,-0.0027062926,0.004065932 +33260000,mag,0.19800001,-0.077000014,0.42900002 +33264000,baro,487.62863 +33264000,airspeed,3.0276763,2.9570067 +33264000,mag,0.19800001,-0.077000014,0.42900002 +33264000,imu,-0.2102326,0.24024914,-9.890778,-0.0066194874,-0.0035209314,-0.000992944 +33268000,airspeed,-1.9617089,-1.9159296 +33268000,imu,-0.1917537,0.21026182,-9.937328,-0.0030397028,-0.0060586017,-0.0013066201 +33268000,baro,487.5488 +33268000,mag,0.202,-0.08100001,0.42700002 +33272000,airspeed,1.7826377,1.7410297 +33272000,imu,-0.17656529,0.17956102,-9.920227,0.005198603,-0.003805048,-0.0047261124 +33276000,mag,0.202,-0.08100001,0.42700002 +33276000,airspeed,-2.7803986,-2.7155023 +33276000,baro,487.62393 +33276000,imu,-0.21599329,0.14902309,-9.889189,0.0025715083,-0.004256027,-0.006824253 +33284000,mag,0.202,-0.08100001,0.42700002 +33284000,airspeed,-1.4706562,-1.4363292 +33284000,imu,-0.17441915,0.1843496,-9.956618,0.0018236703,-0.0050515532,-0.0013871404 +33284000,baro,487.6333 +33288000,airspeed,3.2859733,3.2092717 +33288000,mag,0.202,-0.08100001,0.42700002 +33288000,baro,487.6474 +33288000,imu,-0.2617945,0.23363456,-9.906401,0.0026740185,-0.0074698627,-0.0016000526 +33296000,airspeed,-2.0499556,-2.002123 +33296000,baro,487.49716 +33296000,mag,0.202,-0.08100001,0.42700002 +33296000,imu,-0.36758348,0.17607918,-9.98325,0.0001746713,-0.006625466,-0.007913852 +33300000,mag,0.202,-0.08100001,0.42700002 +33300000,airspeed,1.1420746,1.1154261 +33300000,imu,-0.32009745,0.17254455,-9.975646,0.0011160062,-0.0045788437,-0.006105095 +33300000,baro,487.49716 +33304000,mag,0.202,-0.08100001,0.42700002 +33304000,imu,-0.18515204,0.1944865,-9.942961,-0.0028133132,-0.0063697896,0.00045034522 +33304000,baro,487.6427 +33304000,airspeed,2.3643503,2.309162 +33312000,imu,-0.22290765,0.2356957,-9.94782,-0.003539962,-0.0036048945,0.0065829456 +33312000,airspeed,-2.9795806,-2.9100125 +33312000,baro,487.7507 +33312000,mag,0.202,-0.08100001,0.42700002 +33316000,airspeed,0.25354457,0.2476255 +33316000,baro,487.69904 +33316000,mag,0.202,-0.08100001,0.42700002 +33316000,imu,-0.19940607,0.18554962,-9.905553,-0.006412836,-0.004208353,0.0038396842 +33320000,airspeed,-1.8199646,-1.777472 +33320000,imu,-0.21341228,0.16727771,-9.872449,-0.0048362776,-0.003601649,-0.0006333549 +33320000,baro,487.7507 +33320000,mag,0.19800001,-0.08000001,0.42800003 +33324000,baro,487.5535 +33324000,airspeed,-2.5976243,-2.5370042 +33324000,mag,0.19800001,-0.08000001,0.42800003 +33324000,imu,-0.20819958,0.20842877,-9.913771,-0.0008320019,-0.0026759948,0.00085856323 +33328000,imu,-0.26796588,0.2226593,-9.911225,-0.0022554775,-0.002685939,-0.0022257362 +33328000,mag,0.19800001,-0.08000001,0.42800003 +33328000,baro,487.48306 +33328000,airspeed,1.0609409,1.0361865 +33332000,imu,-0.30086005,0.18921107,-9.863791,-0.00044390312,-0.008953444,-0.0013450403 +33332000,mag,0.19800001,-0.08000001,0.42800003 +33332000,baro,487.48306 +33332000,airspeed,2.347493,2.29272 +33336000,airspeed,-1.7734795,-1.7320791 +33336000,imu,-0.3009322,0.1680734,-9.791541,0.0016284598,-0.018484406,-0.0010079625 +33336000,mag,0.19800001,-0.08000001,0.42800003 +33336000,baro,487.67557 +33340000,baro,487.60513 +33340000,imu,-0.24971229,0.18826737,-9.829663,0.00084027264,-0.0137820225,0.0014855893 +33340000,airspeed,1.7338935,1.6934248 +33340000,mag,0.19800001,-0.08000001,0.42800003 +33344000,baro,487.60513 +33344000,airspeed,1.3589301,1.327213 +33344000,imu,-0.20592539,0.21570005,-9.87861,-0.008287249,-0.005400558,-0.0013523776 +33344000,mag,0.19800001,-0.08000001,0.42800003 +33348000,baro,487.62863 +33348000,mag,0.19800001,-0.08000001,0.42800003 +33352000,airspeed,-1.1387783,-1.1121964 +33352000,imu,-0.1591004,0.17888115,-9.856271,-0.0019988806,-0.0013248165,-0.0031178973 +33356000,baro,487.68967 +33356000,mag,0.19800001,-0.08000001,0.42800003 +33356000,imu,-0.1742412,0.21206944,-9.826745,-0.003042461,-0.00737353,0.0040856586 +33356000,airspeed,2.9628704,2.8937027 +33364000,imu,-0.28117716,0.27131835,-9.967918,-0.00915525,-0.004258941,-0.0022095412 +33364000,baro,487.57227 +33364000,mag,0.19800001,-0.08000001,0.42800003 +33364000,airspeed,3.3799307,3.3010504 +33368000,imu,-0.25551128,0.21158433,-9.895615,-0.0022609557,-0.004861281,1.3973842e-05 +33368000,mag,0.19800001,-0.08000001,0.42800003 +33368000,airspeed,2.448307,2.3911564 +33368000,baro,487.66147 +33372000,imu,-0.19550857,0.14919539,-9.85849,0.001463715,-0.006813065,0.0006037959 +33372000,baro,487.66147 +33372000,airspeed,-1.8359406,-1.7930844 +33372000,mag,0.19800001,-0.08000001,0.42900002 +33380000,imu,-0.17912236,0.22192651,-9.873545,-0.0040096208,-0.0057097743,0.0023831853 +33380000,mag,0.19800001,-0.08000001,0.42900002 +33380000,airspeed,3.6638398,3.578328 +33380000,baro,487.60043 +33388000,mag,0.19800001,-0.08000001,0.42900002 +33388000,airspeed,3.1495275,3.0760179 +33388000,baro,487.60983 +33388000,imu,-0.2593837,0.22267021,-9.964101,0.0040947488,-0.00026725247,-0.0040893364 +33392000,mag,0.19800001,-0.08000001,0.42900002 +33392000,airspeed,-1.577366,-1.5405381 +33392000,baro,487.7413 +33392000,imu,-0.27165484,0.19958441,-9.948555,0.0031552818,-0.0011410965,0.00043168676 +33396000,imu,-0.2886752,0.23852275,-9.857897,-0.0011186175,-0.0072990204,0.004447385 +33396000,baro,487.66147 +33396000,airspeed,-3.3681302,-3.289508 +33396000,mag,0.19800001,-0.08000001,0.42900002 +33400000,landed,1.0 +33400000,airspeed,-2.4182816,-2.36183 +33400000,imu,-0.22194332,0.2610482,-9.856371,-0.00665428,-0.009397298,0.0020522196 +33404000,imu,-0.23390682,0.21917595,-9.9507885,-0.008853752,-0.0028020595,-0.004496484 +33404000,mag,0.19800001,-0.08000001,0.42900002 +33404000,baro,487.84457 +33404000,airspeed,-3.1137125,-3.0409956 +33408000,mag,0.19800001,-0.08000001,0.42900002 +33408000,imu,-0.23844634,0.2001349,-9.953895,-0.007001856,-0.004916626,-0.0069961594 +33408000,baro,487.9197 +33408000,airspeed,2.2330081,2.180849 +33416000,imu,-0.19028023,0.19893728,-9.909869,-0.004888312,-0.0019071988,0.00352629 +33416000,baro,487.5535 +33416000,airspeed,2.653533,2.591608 +33416000,mag,0.19800001,-0.08000001,0.42900002 +33420000,landed,1.0 +33424000,baro,487.60043 +33424000,imu,-0.21086542,0.17745636,-9.914674,-0.0018587345,-0.0043024924,0.0015982286 +33424000,airspeed,-3.1308541,-3.0577815 +33424000,mag,0.19600001,-0.08000001,0.42900002 +33428000,airspeed,-1.7851167,-1.7434492 +33428000,baro,487.638 +33428000,mag,0.19600001,-0.08000001,0.42900002 +33428000,imu,-0.25096983,0.1908459,-9.885867,0.0035953529,-0.0082456395,0.0010665503 +33432000,airspeed,-2.1522286,-2.1020021 +33432000,mag,0.19600001,-0.08000001,0.42900002 +33432000,imu,-0.2802049,0.22482151,-9.856147,5.3367643e-05,-0.0061272816,-0.0026190123 +33432000,baro,487.5535 +33436000,imu,-0.21413909,0.19202586,-9.838918,-0.0016583955,-0.0068731704,-0.005299169 +33436000,airspeed,-2.2005534,-2.1491852 +33436000,baro,487.66617 +33436000,mag,0.19600001,-0.08000001,0.42900002 +33440000,imu,-0.16731048,0.1981609,-9.892593,-0.00016897886,-0.0086068725,-0.0017963677 +33440000,airspeed,3.4716845,3.39066 +33444000,airspeed,-2.1418905,-2.0919032 +33444000,baro,487.57227 +33444000,imu,-0.2405065,0.19793078,-9.928828,-0.0030892058,-0.0053135282,0.00014473237 +33444000,mag,0.19600001,-0.08000001,0.42900002 +33448000,baro,487.66147 +33448000,imu,-0.24865842,0.16531791,-9.932807,-0.0018317499,-0.0069431,-0.00088008 +33448000,airspeed,-2.3826299,-2.327012 +33448000,mag,0.19600001,-0.08000001,0.42900002 +33452000,mag,0.19600001,-0.08000001,0.42900002 +33452000,imu,-0.2523482,0.1940678,-9.911512,0.002504884,-0.008259337,0.0009663952 +33452000,airspeed,-2.2496588,-2.1971326 +33452000,baro,487.75537 +33456000,baro,487.59576 +33456000,gps,488090.0,85456081.0,473977508.0,0.0,0.0,0.0 +33456000,mag,0.19600001,-0.08000001,0.42900002 +33456000,airspeed,1.8167081,1.7743076 +33456000,imu,-0.27192625,0.1914228,-9.841393,0.0037030221,-0.0045551006,0.001909891 +33460000,mag,0.19600001,-0.08000001,0.42900002 +33460000,airspeed,2.1957421,2.1444952 +33460000,baro,487.59576 +33460000,imu,-0.22926669,0.17594807,-9.876854,-0.0011068477,-0.00040081708,0.0040304502 +33464000,airspeed,-2.5207207,-2.4618728 +33464000,baro,487.70844 +33464000,mag,0.19600001,-0.08000001,0.42900002 +33464000,imu,-0.19483858,0.16572851,-9.904762,-0.0010212408,0.0008952448,0.010317568 +33468000,airspeed,-3.3711638,-3.292496 +33468000,imu,-0.2019298,0.15552185,-9.873725,0.0036206974,-0.0022136704,0.008193208 +33468000,mag,0.19600001,-0.08000001,0.42900002 +33468000,baro,487.53003 +33472000,imu,-0.2229509,0.18808177,-9.891541,0.0031146675,-0.003204951,0.0043893605 +33472000,mag,0.19600001,-0.08000001,0.42900002 +33472000,airspeed,2.9192324,2.8510985 +33472000,baro,487.60513 +33476000,imu,-0.18001346,0.16622467,-9.90156,-0.0035727858,-0.0122872,0.004415639 +33476000,mag,0.19900002,-0.07800001,0.42800003 +33476000,airspeed,1.47575,1.4412949 +33476000,baro,487.7366 +33484000,airspeed,-3.9544394,-3.862163 +33484000,mag,0.19900002,-0.07800001,0.42800003 +33484000,imu,-0.27559337,0.17989083,-9.942093,0.0036696421,-0.0058076545,-0.0041737338 +33484000,baro,487.52063 +33488000,mag,0.19900002,-0.07800001,0.42800003 +33488000,baro,487.49716 +33488000,imu,-0.1947698,0.2511888,-9.925223,0.0037990422,0.0027438295,-0.00053178804 +33488000,airspeed,2.0764265,2.0279765 +33492000,airspeed,1.8937072,1.8494955 +33492000,imu,-0.19669375,0.23240672,-9.930589,-0.0010232723,-0.003177043,-0.0008550431 +33496000,baro,487.75537 +33496000,imu,-0.2395443,0.14294411,-9.907083,0.0005345235,-0.003311092,0.00037380905 +33496000,airspeed,1.4403003,1.4066713 +33496000,mag,0.19900002,-0.07800001,0.42800003 +33500000,baro,487.75537 +33500000,airspeed,2.4454348,2.3883371 +33500000,mag,0.19900002,-0.07800001,0.42800003 +33504000,imu,-0.19055139,0.1431744,-9.889107,-0.0047405385,-0.010434707,-0.0034514961 +33508000,airspeed,2.254165,2.2015336 +33508000,imu,-0.21345326,0.147734,-9.868454,9.570247e-05,-0.012259625,0.001077392 +33512000,mag,0.19900002,-0.07800001,0.42800003 +33512000,baro,487.62863 +33512000,airspeed,-0.9231322,-0.9015852 +33512000,imu,-0.2502495,0.12537509,-9.81021,0.00047988567,-0.011236697,0.0039568422 +33516000,imu,-0.24866222,0.14182615,-9.819015,0.00032891374,-0.0030488216,-0.002354651 +33516000,baro,487.66617 +33516000,airspeed,-1.4946077,-1.4597186 +33516000,mag,0.19900002,-0.07800001,0.42800003 +33520000,mag,0.19900002,-0.07800001,0.42800003 +33520000,imu,-0.25268298,0.20971507,-9.896403,-0.0072314,-0.0010449203,-0.0019673875 +33520000,baro,487.53473 +33520000,airspeed,-0.8726451,-0.85228133 +33524000,mag,0.19900002,-0.07800001,0.42800003 +33524000,airspeed,-2.8631725,-2.7963178 +33524000,imu,-0.25775674,0.2149303,-9.896129,-0.00666011,-0.004789627,0.0033185002 +33524000,baro,487.77887 +33528000,mag,0.19500001,-0.07800001,0.43 +33528000,imu,-0.24666172,0.2452721,-9.921419,0.0014688062,-0.0021722685,0.0044110073 +33528000,airspeed,-2.995576,-2.9256737 +33528000,baro,487.52533 +33532000,mag,0.19500001,-0.07800001,0.43 +33532000,baro,487.52533 +33532000,airspeed,1.4871604,1.4524574 +33532000,imu,-0.20375375,0.23251571,-9.912047,-0.0072160824,-0.0034686776,0.00046579112 +33536000,baro,487.5488 +33536000,airspeed,-0.9044761,-0.88336885 +33536000,mag,0.19500001,-0.07800001,0.43 +33536000,imu,-0.21392703,0.1812701,-9.910978,-0.012022669,-0.008036761,-0.0023599793 +33540000,airspeed,-1.410899,-1.3779635 +33540000,mag,0.19500001,-0.07800001,0.43 +33540000,imu,-0.23815869,0.1413441,-9.949671,-0.0016897672,-0.0074166837,-0.0007583042 +33540000,baro,487.67087 +33544000,imu,-0.24700156,0.13695376,-9.885226,0.005167234,-0.0046241214,-0.0012894626 +33544000,airspeed,1.7862693,1.7445824 +33544000,mag,0.19500001,-0.07800001,0.43 +33544000,baro,487.5629 +33548000,imu,-0.2808743,0.15907691,-9.878363,0.0019857816,-0.0022895637,-0.0028539237 +33548000,airspeed,-1.4270862,-1.3937818 +33548000,mag,0.19500001,-0.07800001,0.43 +33548000,baro,487.5629 +33552000,imu,-0.25987327,0.1597597,-9.888955,-0.0009146253,-0.0023882187,0.0020149185 +33552000,airspeed,-2.1680107,-2.1173966 +33552000,mag,0.19500001,-0.07800001,0.43 +33552000,baro,487.70844 +33560000,airspeed,2.5840702,2.5237572 +33560000,imu,-0.2341108,0.14874354,-9.837163,0.0021281005,0.0011006645,0.0049223774 +33560000,mag,0.19500001,-0.07800001,0.43 +33560000,baro,487.61453 +33564000,baro,487.47836 +33564000,imu,-0.19711849,0.19341245,-9.9004545,-0.0010241537,0.0015012744,0.001716468 +33564000,mag,0.19500001,-0.07800001,0.43 +33564000,airspeed,-3.8738399,-3.783454 +33568000,mag,0.19500001,-0.07800001,0.43 +33568000,airspeed,-2.1645093,-2.113969 +33568000,imu,-0.23615633,0.16821896,-9.900763,0.0030678234,-0.0031695708,-0.002029108 +33568000,baro,487.77417 +33572000,baro,487.58636 +33572000,mag,0.19500001,-0.07800001,0.43 +33572000,airspeed,0.77161175,0.7536033 +33572000,imu,-0.2720418,0.15962233,-9.854427,0.007473488,-0.006655984,-0.0031466428 +33580000,mag,0.20400001,-0.08200001,0.42700002 +33580000,baro,487.7507 +33580000,airspeed,1.3904793,1.358014 +33580000,imu,-0.21423584,0.16574064,-9.966575,-0.0051053455,-0.007957087,-0.007796483 +33584000,mag,0.20400001,-0.08200001,0.42700002 +33588000,imu,-0.24959247,0.14879091,-9.880506,-4.0221632e-05,-0.008512222,0.0014215314 +33588000,airspeed,-1.7041987,-1.6644208 +33588000,baro,487.62863 +33592000,imu,-0.1759929,0.2088582,-9.842274,0.0020518785,-0.008132454,0.000823095 +33592000,mag,0.20400001,-0.08200001,0.42700002 +33592000,airspeed,1.8356762,1.7928305 +33592000,baro,487.61923 +33596000,imu,-0.16494624,0.19080214,-9.899949,0.0029478038,-0.0053173034,-0.0026064515 +33596000,baro,487.61923 +33596000,airspeed,-3.837361,-3.7477949 +33596000,mag,0.20400001,-0.08200001,0.42700002 +33600000,baro,487.67087 +33600000,mag,0.20400001,-0.08200001,0.42700002 +33600000,airspeed,2.1268692,2.0772207 +33600000,imu,-0.25580218,0.15123084,-9.932346,0.0019275662,-0.0020660318,-0.0066564125 +33604000,mag,0.20400001,-0.08200001,0.42700002 +33604000,baro,487.6568 +33604000,imu,-0.26351082,0.1371064,-9.914895,-0.004856776,-0.0014966789,-0.008944556 +33604000,airspeed,-0.71555036,-0.6988475 +33608000,baro,487.71313 +33608000,airspeed,-2.9558592,-2.8868513 +33608000,mag,0.20400001,-0.08200001,0.42700002 +33608000,imu,-0.23247217,0.14003871,-9.943933,-0.0074332003,-0.007822982,-0.0025483628 +33616000,baro,487.5394 +33616000,mag,0.20400001,-0.08200001,0.42700002 +33616000,imu,-0.26282492,0.1550881,-9.85003,-0.0008437429,-0.010564145,0.003245731 +33616000,airspeed,1.6858369,1.6464964 +33620000,imu,-0.26452726,0.15997438,-9.924,0.0005045024,-0.012916925,0.00657488 +33620000,mag,0.20400001,-0.08200001,0.42700002 +33620000,airspeed,-4.005463,-3.9119592 +33620000,baro,487.68027 +33624000,airspeed,-0.8539616,-0.83402663 +33624000,imu,-0.25079438,0.20579334,-9.926629,0.0006813916,-0.0048618573,0.008281955 +33624000,mag,0.20400001,-0.08200001,0.42700002 +33624000,baro,487.68027 +33628000,mag,0.20400001,-0.08200001,0.42700002 +33628000,baro,487.60983 +33632000,imu,-0.23998879,0.20487024,-10.054025,0.001608111,-0.0070302635,0.00031481808 +33632000,baro,487.53473 +33632000,airspeed,2.534863,2.47571 +33632000,mag,0.202,-0.08100001,0.42900002 +33636000,mag,0.202,-0.08100001,0.42900002 +33636000,baro,487.53473 +33640000,airspeed,-3.081443,-3.0095363 +33640000,imu,-0.22313693,0.17523082,-9.914178,6.323887e-05,-0.0037076222,-0.0018939428 +33644000,mag,0.202,-0.08100001,0.42900002 +33644000,airspeed,1.6504064,1.611887 +33644000,baro,487.59576 +33644000,imu,-0.22313476,0.14618978,-9.940226,0.0036219812,-0.002194267,0.00029266425 +33648000,mag,0.202,-0.08100001,0.42900002 +33648000,airspeed,1.8909189,1.846776 +33648000,baro,487.68967 +33648000,imu,-0.22773972,0.2074042,-9.986156,0.0010646051,0.00075759756,0.0055261008 +33652000,imu,-0.21609591,0.22905521,-9.944395,-0.0022319732,8.8168e-06,0.0059234356 +33652000,airspeed,3.6852918,3.5992599 +33652000,mag,0.202,-0.08100001,0.42900002 +33652000,baro,487.68967 +33656000,mag,0.202,-0.08100001,0.42900002 +33656000,imu,-0.275858,0.1519311,-9.923479,-0.001958107,-0.0010650201,0.0023693938 +33656000,airspeed,2.2127912,2.1611333 +33656000,baro,487.69434 +33656000,gps,488094.0,85456082.0,473977508.0,0.0,0.0,-0.01 +33660000,imu,-0.33062974,0.11062508,-9.967293,-0.0062419227,-0.0008418279,0.0014769947 +33660000,mag,0.202,-0.08100001,0.42900002 +33660000,airspeed,3.6508336,3.5656044 +33660000,baro,487.69434 +33664000,imu,-0.27380058,0.13198863,-9.928261,-0.006280322,-0.009025819,-0.0011377429 +33664000,airspeed,2.0890632,2.040301 +33664000,mag,0.202,-0.08100001,0.42900002 +33664000,baro,487.638 +33668000,baro,487.67087 +33668000,mag,0.202,-0.08100001,0.42900002 +33672000,baro,487.77417 +33672000,airspeed,-3.8325653,-3.743077 +33672000,imu,-0.24009286,0.2764468,-9.929892,0.0015063046,-0.0035294883,-0.007248936 +33672000,mag,0.202,-0.08100001,0.42900002 +33676000,mag,0.202,-0.08100001,0.42900002 +33676000,baro,487.69904 +33680000,imu,-0.27113584,0.21971878,-9.852514,-0.0013862227,-0.0074333674,-0.00546315 +33680000,airspeed,-2.3730443,-2.3176556 +33684000,imu,-0.22820973,0.24336004,-9.857649,-0.00058982114,-0.008375465,-0.0019833993 +33684000,airspeed,1.0883137,1.0629054 +33684000,baro,487.71783 +33684000,mag,0.202,-0.08100001,0.43 +33688000,airspeed,2.4820168,2.4240704 +33688000,baro,487.71783 +33688000,imu,-0.23062186,0.20787261,-9.841917,-0.0037830372,-0.0057279984,9.261666e-06 +33688000,mag,0.202,-0.08100001,0.43 +33696000,mag,0.202,-0.08100001,0.43 +33696000,airspeed,4.0478363,3.953369 +33696000,imu,-0.22711752,0.2176453,-9.90499,0.0022596428,-0.0005548003,0.0018359517 +33696000,baro,487.5676 +33700000,imu,-0.25845885,0.15372835,-9.920118,0.0062480867,-0.0032858804,0.002043714 +33700000,mag,0.202,-0.08100001,0.43 +33700000,baro,487.5676 +33700000,airspeed,-0.55211407,-0.539229 +33704000,imu,-0.27883497,0.12959099,-9.891016,0.006006721,-0.007770981,0.0047456194 +33704000,airspeed,-2.1098776,-2.0606377 +33704000,mag,0.202,-0.08100001,0.43 +33704000,baro,487.57227 +33708000,baro,487.57227 +33708000,airspeed,-3.1670425,-3.0931306 +33708000,imu,-0.27417094,0.14393502,-9.882313,-0.0039739166,-0.006396278,0.001054201 +33708000,mag,0.202,-0.08100001,0.43 +33712000,imu,-0.22196968,0.19601105,-9.855646,-0.0059622223,-0.0062780185,-0.003055965 +33712000,baro,487.638 +33712000,mag,0.202,-0.08100001,0.43 +33712000,airspeed,-3.0772412,-3.0054135 +33716000,airspeed,-1.9428877,-1.8975213 +33716000,mag,0.202,-0.08100001,0.43 +33716000,imu,-0.24120165,0.18979019,-9.787352,0.0015888793,-0.0063920305,-0.0035352178 +33716000,baro,487.77887 +33720000,baro,487.66617 +33720000,airspeed,2.6153655,2.554314 +33720000,imu,-0.2353668,0.17836787,-9.859181,0.004618916,-0.0062229843,-0.004601185 +33720000,mag,0.202,-0.08100001,0.43 +33724000,imu,-0.22591063,0.22461385,-9.876888,-0.0046904916,-0.0048644952,-0.004024364 +33724000,airspeed,1.453062,1.4191426 +33724000,mag,0.202,-0.08100001,0.43 +33724000,baro,487.66617 +33732000,mag,0.202,-0.08100001,0.43 +33732000,baro,487.59106 +33732000,imu,-0.2475471,0.25916275,-9.889634,0.0032806406,-0.00804021,0.00072695303 +33732000,airspeed,2.519069,2.4602768 +33736000,baro,487.638 +33736000,mag,0.2,-0.08300001,0.42600003 +33736000,airspeed,0.87390953,0.8535111 +33736000,imu,-0.27124497,0.15181698,-9.858843,0.004623422,-0.008217946,-0.00193318 +33740000,imu,-0.30572122,0.19895178,-9.8787775,-0.0029432003,-0.0076671275,-0.0027591882 +33740000,airspeed,-1.6112489,-1.5736414 +33744000,baro,487.67557 +33744000,airspeed,1.9961116,1.9495149 +33744000,imu,-0.29889312,0.14870407,-9.849696,-0.010357806,-0.005119531,0.003156198 +33744000,mag,0.2,-0.08300001,0.42600003 +33748000,airspeed,-2.61061,-2.5496686 +33748000,baro,487.67557 +33748000,imu,-0.25075233,0.11751621,-9.844141,-0.009864855,-0.0016187686,0.0008675054 +33748000,mag,0.2,-0.08300001,0.42600003 +33752000,imu,-0.2766113,0.18977019,-9.8717,-0.0011845261,0.002373737,-0.0027969878 +33752000,baro,487.6568 +33752000,airspeed,2.6110175,2.5500689 +33752000,mag,0.2,-0.08300001,0.42600003 +33756000,airspeed,1.724762,1.684489 +33756000,baro,487.77887 +33756000,imu,-0.2250433,0.18985152,-9.868222,0.002412973,-0.00016183399,-0.0048155696 +33760000,mag,0.2,-0.08300001,0.42600003 +33764000,airspeed,2.8145132,2.7488072 +33764000,mag,0.2,-0.08300001,0.42600003 +33764000,imu,-0.23751457,0.1566358,-9.884374,-0.0030997018,-0.00461031,-0.0029659315 +33764000,baro,487.69904 +33768000,imu,-0.24914168,0.13596661,-9.903826,-0.00041417635,-0.005625186,-9.763449e-06 +33768000,airspeed,2.176823,2.1260076 +33768000,baro,487.67557 +33768000,mag,0.2,-0.08300001,0.42600003 +33772000,baro,487.67557 +33772000,airspeed,-2.1642776,-2.113755 +33772000,mag,0.2,-0.08300001,0.42600003 +33772000,imu,-0.33540216,0.12954262,-9.861141,-0.0009720768,-0.003943441,0.0013496944 +33776000,airspeed,-3.747393,-3.6599066 +33776000,imu,-0.27110887,0.14272237,-9.894627,-0.0036380393,-0.0017360066,-0.0042493525 +33780000,baro,487.71313 +33780000,airspeed,-1.292995,-1.2628088 +33780000,mag,0.2,-0.08300001,0.42600003 +33780000,imu,-0.24745592,0.17184626,-9.927019,0.0022432476,-0.0008138587,-0.0019450119 +33784000,airspeed,2.270964,2.2179804 +33784000,mag,0.2,-0.08300001,0.42600003 +33784000,baro,487.4502 +33784000,imu,-0.19837947,0.22966637,-9.864929,0.0012388284,-0.004640162,-0.004285228 +33788000,imu,-0.1717888,0.23911871,-9.8357,-0.00532391,-0.005049816,-0.007837255 +33788000,mag,0.2,-0.07900001,0.43 +33788000,baro,487.6568 +33788000,airspeed,-3.1670296,-3.0931017 +33792000,mag,0.2,-0.07900001,0.43 +33792000,baro,487.76007 +33792000,airspeed,1.0994141,1.073744 +33792000,imu,-0.25273573,0.17571123,-9.8800745,-0.011368765,-0.0045267586,0.0054251384 +33796000,mag,0.2,-0.07900001,0.43 +33800000,airspeed,1.719384,1.6792461 +33800000,mag,0.2,-0.07900001,0.43 +33800000,baro,487.68027 +33800000,imu,-0.27685845,0.22783528,-9.885887,0.0014832583,-0.013054704,-0.0033062731 +33804000,baro,487.68027 +33804000,mag,0.2,-0.07900001,0.43 +33804000,imu,-0.23456483,0.21843772,-9.904497,-0.0002808855,-0.015961278,-0.002086983 +33804000,airspeed,1.8848444,1.840844 +33808000,baro,487.5582 +33808000,mag,0.2,-0.07900001,0.43 +33808000,airspeed,2.8762994,2.8091755 +33808000,imu,-0.21048114,0.12512924,-9.954277,0.00095808285,-0.010094776,-0.0011482495 +33812000,baro,487.53003 +33812000,mag,0.2,-0.07900001,0.43 +33812000,airspeed,-1.399903,-1.3672357 +33812000,imu,-0.24586064,0.13172336,-9.977519,-0.0015139134,-0.0073927618,0.0014403268 +33816000,imu,-0.1927638,0.22213984,-9.950842,-0.0025313487,-0.009147219,0.008686794 +33816000,baro,487.71783 +33816000,airspeed,2.9446197,2.8758729 +33816000,mag,0.2,-0.07900001,0.43 +33820000,baro,487.76007 +33820000,airspeed,1.5570657,1.5207102 +33820000,imu,-0.22811416,0.27047136,-9.93758,-0.0005281171,-0.011583737,0.0030924163 +33820000,mag,0.2,-0.07900001,0.43 +33824000,baro,487.5629 +33824000,airspeed,3.0024872,2.932417 +33824000,imu,-0.29660207,0.24815685,-9.969929,0.0069820094,-0.008537108,-0.0036230234 +33824000,mag,0.2,-0.07900001,0.43 +33832000,baro,487.67087 +33832000,imu,-0.2677613,0.19000202,-9.811388,-0.0042413394,-0.0057734456,-0.0017387792 +33832000,airspeed,-2.1881602,-2.1370804 +33832000,mag,0.2,-0.07900001,0.43 +33836000,airspeed,-1.5094595,-1.474223 +33836000,baro,487.67087 +33836000,mag,0.2,-0.07900001,0.43 +33836000,imu,-0.34386608,0.22831145,-9.855818,-0.0058274213,-0.00046975294,0.0017950244 +33844000,mag,0.2,-0.07900001,0.42800003 +33844000,imu,-0.21335262,0.17931616,-9.912592,-0.0058017056,-0.006912143,0.0028955995 +33844000,airspeed,2.8388495,2.7725863 +33844000,baro,487.638 +33848000,baro,487.638 +33848000,mag,0.2,-0.07900001,0.42800003 +33848000,airspeed,-1.0948242,-1.0692693 +33848000,imu,-0.20962916,0.24854104,-9.933766,-0.0051989146,-0.0016821335,0.0012148629 +33852000,mag,0.2,-0.07900001,0.42800003 +33852000,baro,487.5394 +33852000,airspeed,2.4236593,2.367101 +33852000,imu,-0.18555516,0.23813528,-9.876752,-0.0023586878,0.0009438367,-0.0007803136 +33856000,gps,488103.0,85456081.0,473977508.0,0.01,0.02,-0.01 +33856000,mag,0.2,-0.07900001,0.42800003 +33856000,baro,487.6427 +33860000,airspeed,-1.9295708,-1.8845205 +33860000,imu,-0.21325077,0.15675448,-9.847974,-0.0009011502,0.004315692,-0.004686798 +33864000,baro,487.7319 +33864000,mag,0.2,-0.07900001,0.42800003 +33864000,airspeed,-3.0105715,-2.9402828 +33864000,imu,-0.22265951,0.22243689,-9.895769,0.0005620903,0.0036453048,0.0012486336 +33868000,imu,-0.14214502,0.22902024,-9.928898,0.0015999294,0.00036955054,-8.144708e-05 +33868000,airspeed,3.8417864,3.7521632 +33868000,mag,0.2,-0.07900001,0.42800003 +33868000,baro,487.41266 +33872000,airspeed,3.5601609,3.477068 +33872000,mag,0.2,-0.07900001,0.42800003 +33872000,imu,-0.15180358,0.23044695,-9.978006,0.0063587376,0.0011216878,-0.0025067567 +33872000,baro,487.60513 +33876000,baro,487.61453 +33876000,mag,0.2,-0.07900001,0.42800003 +33876000,airspeed,-2.7652903,-2.7007473 +33876000,imu,-0.19304127,0.2214999,-9.951506,0.0009403174,-0.0072916704,-0.0014756878 +33880000,imu,-0.17791362,0.17604722,-9.905446,-0.007948234,-0.0066760215,0.00076524704 +33884000,baro,487.5441 +33884000,mag,0.2,-0.07900001,0.42800003 +33884000,imu,-0.20712468,0.16471018,-9.893397,-0.0025245952,-0.0049213143,0.0033419838 +33884000,airspeed,3.6464317,3.5613377 +33888000,baro,487.5441 +33888000,mag,0.2,-0.07900001,0.42800003 +33888000,imu,-0.21182384,0.17913954,-9.86417,0.00034137774,-0.010918492,-0.0014220655 +33888000,airspeed,-3.0607524,-2.989326 +33892000,airspeed,-3.7992945,-3.7106042 +33892000,mag,0.2,-0.07900001,0.42800003 +33892000,imu,-0.21942978,0.19987054,-9.854693,-0.0018290957,-0.009496639,-0.0048171007 +33892000,baro,487.67557 +33896000,airspeed,-2.0525794,-2.0046592 +33896000,baro,487.71783 +33896000,mag,0.19700001,-0.07900001,0.43 +33896000,imu,-0.20624225,0.1758639,-9.883911,-0.004834253,-0.0042774426,-0.0027608455 +33900000,imu,-0.25895804,0.1493065,-9.972545,-0.002411746,-0.005251373,-0.008692613 +33900000,airspeed,-0.9372849,-0.91541004 +33900000,mag,0.19700001,-0.07900001,0.43 +33900000,baro,487.58636 +33904000,airspeed,1.6251479,1.5872194 +33904000,imu,-0.262297,0.17508896,-9.989847,0.00139732,-0.012946493,-0.005020921 +33904000,baro,487.58636 +33904000,mag,0.19700001,-0.07900001,0.43 +33912000,airspeed,-4.1624527,-4.065322 +33912000,imu,-0.22317232,0.11699593,-9.906705,-0.0005660145,-0.0039457222,-0.0017427114 +33912000,mag,0.19700001,-0.07900001,0.43 +33912000,baro,487.52533 +33916000,imu,-0.2307609,0.17167903,-9.933151,-0.0056266906,-0.00405841,0.0020019412 +33916000,baro,487.69904 +33916000,mag,0.19700001,-0.07900001,0.43 +33916000,airspeed,3.3690166,3.2903662 +33920000,airspeed,-2.4631593,-2.4056778 +33920000,baro,487.5488 +33920000,mag,0.19700001,-0.07900001,0.43 +33920000,imu,-0.1766003,0.23567127,-9.961289,-0.00952904,-0.0106440885,0.0022148322 +33924000,imu,-0.21609333,0.1756303,-9.928864,-0.008379838,-0.007755568,-0.00037091365 +33924000,airspeed,-1.3059194,-1.2754395 +33924000,baro,487.60513 +33928000,mag,0.19700001,-0.07900001,0.43 +33932000,airspeed,4.456936,4.3529315 +33932000,imu,-0.3176031,0.2376407,-9.872762,-0.00026702546,-0.004280853,0.0055318093 +33932000,mag,0.19700001,-0.07900001,0.43 +33932000,baro,487.53003 +33936000,imu,-0.3005838,0.24287641,-9.90568,-0.002652494,-0.005653798,-0.0008778313 +33944000,airspeed,-3.2153265,-3.1402934 +33944000,baro,487.5441 +33944000,imu,-0.22399236,0.14870885,-9.94562,-0.0038507378,-0.009399338,-2.8454729e-06 +33944000,mag,0.201,-0.084000014,0.42700002 +33948000,baro,487.5441 +33948000,mag,0.201,-0.084000014,0.42700002 +33948000,airspeed,2.7151515,2.6517904 +33948000,imu,-0.20842756,0.17699593,-9.887167,0.0020133357,-0.0074042086,0.005122517 +33956000,airspeed,-5.100076,-4.981022 +33956000,baro,487.67087 +33956000,imu,-0.16997202,0.27980873,-9.867156,-0.0035874313,-0.0009064279,0.010706343 +33956000,mag,0.201,-0.084000014,0.42700002 +33960000,mag,0.201,-0.084000014,0.42700002 +33964000,baro,487.7319 +33964000,imu,-0.21824089,0.24108301,-9.943686,-0.002425982,-0.011402209,0.0039809197 +33964000,airspeed,3.6415634,3.5565429 +33968000,baro,487.7319 +33968000,imu,-0.21176164,0.20871589,-9.872916,-0.002277949,-0.0075634466,-0.0022250735 +33968000,airspeed,3.8435163,3.753781 +33968000,mag,0.201,-0.084000014,0.42700002 +33972000,imu,-0.28096202,0.14839906,-9.794698,0.0003465373,-0.0016721252,-0.00032591564 +33972000,airspeed,1.6788538,1.6396714 +33972000,baro,487.58636 +33972000,mag,0.201,-0.084000014,0.42700002 +33976000,mag,0.201,-0.084000014,0.42700002 +33976000,imu,-0.26041466,0.16375864,-9.822295,0.0014296509,-0.0045810556,0.003411932 +33976000,baro,487.58636 +33976000,airspeed,2.518139,2.4593687 +33980000,mag,0.201,-0.084000014,0.42700002 +33980000,imu,-0.22752108,0.10149759,-9.823946,0.0029848993,-0.008282021,0.0024061278 +33980000,baro,487.6474 +33980000,airspeed,-2.3932936,-2.337429 +33984000,imu,-0.20221592,0.12277072,-9.820564,0.00500067,-0.0053610536,-0.00024829095 +33984000,airspeed,-5.111484,-4.992157 +33988000,imu,-0.19621503,0.15321626,-9.895662,0.008477979,-0.004783463,-0.00052942184 +33988000,mag,0.201,-0.084000014,0.42700002 +33988000,baro,487.51123 +33988000,airspeed,0.59481716,0.58093745 +33996000,airspeed,-2.1874053,-2.1363485 +33996000,mag,0.2,-0.08000001,0.42800003 +33996000,imu,-0.19474514,0.17088605,-9.929104,-0.00433046,-0.0019964268,-0.0032686514 +33996000,baro,487.62863 +34000000,airspeed,-2.741809,-2.6778116 +34000000,baro,487.62863 +34000000,imu,-0.17288405,0.14644302,-9.926078,-0.0014904233,-0.0056677056,0.0014186891 +34000000,mag,0.2,-0.08000001,0.42800003 +34004000,mag,0.2,-0.08000001,0.42800003 +34004000,airspeed,3.9757729,3.8829942 +34004000,baro,487.5441 +34004000,imu,-0.22196117,0.15192838,-9.9463005,-9.997778e-06,-0.009840453,0.007900989 +34008000,imu,-0.22387634,0.17547013,-9.9340315,-0.0011538015,-0.0055037555,0.0022334813 +34008000,baro,487.61453 +34008000,mag,0.2,-0.08000001,0.42800003 +34008000,airspeed,2.3706603,2.3153284 +34012000,baro,487.50656 +34012000,airspeed,-1.8226998,-1.7801685 +34012000,mag,0.2,-0.08000001,0.42800003 +34016000,imu,-0.27535424,0.15045378,-9.840823,-0.0075740777,-0.0040478674,-0.0011175625 +34016000,baro,487.50656 +34016000,airspeed,-1.7771873,-1.7357181 +34016000,mag,0.2,-0.08000001,0.42800003 +34024000,mag,0.2,-0.08000001,0.42800003 +34024000,baro,487.62393 +34024000,imu,-0.228912,0.17466506,-9.900483,0.0014841275,-0.009851439,0.0017085681 +34024000,airspeed,1.84457,1.801516 +34028000,mag,0.2,-0.08000001,0.42800003 +34028000,baro,487.76007 +34028000,airspeed,-3.048154,-2.9769828 +34028000,imu,-0.23728642,0.1267708,-9.935568,0.0014744363,-0.004309803,-0.002547546 +34032000,mag,0.2,-0.08000001,0.42800003 +34032000,baro,487.66617 +34032000,airspeed,3.0873942,3.0153246 +34032000,imu,-0.26554272,0.13011454,-9.961392,0.0029084126,-0.005490898,-0.0012990226 +34036000,baro,487.70374 +34036000,imu,-0.2679137,0.1361783,-9.8550825,0.0028359252,-0.009381548,-0.0044576363 +34036000,airspeed,2.5400167,2.4807186 +34036000,mag,0.2,-0.08000001,0.42800003 +34040000,mag,0.2,-0.08000001,0.42800003 +34040000,airspeed,3.329593,3.2518904 +34040000,baro,487.5535 +34040000,imu,-0.21511514,0.12734875,-9.898599,0.0015295253,-0.0066546896,-0.005072302 +34044000,airspeed,4.483522,4.378883 +34044000,mag,0.2,-0.08000001,0.42800003 +34044000,imu,-0.21966821,0.14262375,-9.91273,0.0020688784,-0.010172472,0.0026330682 +34044000,baro,487.58636 +34048000,imu,-0.28576887,0.15429355,-9.887309,-0.006151757,-0.008577432,-0.00060127553 +34048000,mag,0.20300001,-0.08300001,0.425 +34048000,baro,487.66617 +34048000,airspeed,-1.6276566,-1.589662 +34052000,mag,0.20300001,-0.08300001,0.425 +34052000,baro,487.70844 +34052000,airspeed,-0.3057969,-0.29865783 +34052000,imu,-0.32178026,0.17387457,-9.936089,-0.003617653,-0.0037646096,-0.0033052585 +34056000,gps,488101.0,85456082.0,473977508.0,0.0,0.01,-0.049999997 +34060000,mag,0.20300001,-0.08300001,0.425 +34060000,baro,487.50186 +34060000,imu,-0.13404617,0.15493943,-9.814163,-0.004119145,-0.0038531935,0.00045155842 +34060000,airspeed,-5.1816297,-5.0607224 +34064000,mag,0.20300001,-0.08300001,0.425 +34064000,baro,487.50186 +34064000,imu,-0.18981503,0.23354837,-9.925099,-0.0030286913,-0.0006750888,0.0032868388 +34064000,airspeed,1.6046742,1.5672309 +34068000,airspeed,3.1743324,3.1002626 +34068000,baro,487.50656 +34068000,imu,-0.27153322,0.27674142,-9.924619,5.1816587e-05,-0.006710508,0.0041714255 +34068000,mag,0.20300001,-0.08300001,0.425 +34072000,airspeed,-3.1635647,-3.089708 +34072000,baro,487.71313 +34072000,mag,0.20300001,-0.08300001,0.425 +34072000,imu,-0.19371486,0.24930355,-9.815291,0.0046505993,-0.006674333,-0.0038336422 +34076000,airspeed,-2.8249598,-2.7590063 +34076000,baro,487.7225 +34076000,mag,0.20300001,-0.08300001,0.425 +34076000,imu,-0.16554764,0.15823886,-9.858585,-0.0013341098,-0.005326879,-0.005056565 +34080000,mag,0.20300001,-0.08300001,0.425 +34080000,imu,-0.24090265,0.13219185,-9.905394,-0.0057659145,-0.0071217944,0.0030051342 +34080000,baro,487.6521 +34080000,airspeed,2.0909908,2.0421817 +34084000,imu,-0.28479573,0.15458485,-9.931963,-0.0004794553,-0.007588101,0.0054397816 +34084000,baro,487.48776 +34084000,airspeed,-2.9479103,-2.8791268 +34084000,mag,0.20300001,-0.08300001,0.425 +34088000,imu,-0.2455555,0.24059923,-9.928905,-1.5846277e-05,-0.008282958,-0.0005991694 +34088000,airspeed,-1.9603842,-1.9146427 +34092000,imu,-0.18504559,0.23091795,-9.888557,-0.0022863352,-0.0049816524,0.0033173342 +34092000,baro,487.53003 +34092000,airspeed,2.6503232,2.5884767 +34092000,mag,0.20300001,-0.08300001,0.425 +34096000,mag,0.20300001,-0.08300001,0.425 +34096000,baro,487.638 +34096000,imu,-0.2546739,0.15045637,-9.8867,-0.0041561406,-0.005164365,0.009038334 +34096000,airspeed,-1.0856849,-1.0603431 +34100000,baro,487.59576 +34100000,airspeed,-3.3500743,-3.2718859 +34100000,imu,-0.3411069,0.20183294,-9.868115,-0.004873975,-0.010181982,0.00037807433 +34100000,mag,0.202,-0.08000001,0.42700002 +34104000,airspeed,-4.3120275,-4.2113943 +34104000,imu,-0.276207,0.21824554,-9.913743,-0.004022619,-0.0053468854,-0.004348206 +34104000,mag,0.202,-0.08000001,0.42700002 +34104000,baro,487.57227 +34108000,airspeed,-3.6355326,-3.550687 +34108000,imu,-0.21825223,0.18568696,-9.899639,-0.0051823133,-0.0029685881,-0.005126034 +34108000,mag,0.202,-0.08000001,0.42700002 +34108000,baro,487.57227 +34112000,mag,0.202,-0.08000001,0.42700002 +34112000,airspeed,0.26570207,0.25950134 +34112000,baro,487.5582 +34112000,imu,-0.23595712,0.17700273,-9.907245,-0.0053008622,0.0013233308,-0.0056582578 +34120000,airspeed,3.17086,3.096839 +34120000,mag,0.202,-0.08000001,0.42700002 +34120000,imu,-0.27090964,0.22707017,-9.902113,-0.0002770589,-0.001233672,-0.00032307356 +34120000,baro,487.68027 +34128000,airspeed,-3.9888778,-3.8957605 +34128000,mag,0.202,-0.08000001,0.42700002 +34128000,imu,-0.23282246,0.16632538,-9.951254,0.0014220515,-0.003198527,0.0058954707 +34128000,baro,487.68027 +34132000,airspeed,-2.7827635,-2.717801 +34132000,mag,0.202,-0.08000001,0.42700002 +34132000,baro,487.68497 +34132000,imu,-0.26458007,0.19162515,-9.945859,-0.0027098935,-0.0041649775,0.005279971 +34136000,imu,-0.2962784,0.19450982,-9.891499,0.0019527609,-0.0045974753,0.006010137 +34136000,mag,0.202,-0.08000001,0.42700002 +34136000,airspeed,-4.406072,-4.3032875 +34136000,baro,487.40326 +34140000,imu,-0.28612992,0.19638178,-9.922872,0.0052101268,-0.0071017644,0.00535449 +34144000,imu,-0.24597225,0.19937262,-9.948282,0.0033213387,-0.008395678,0.0019795997 +34144000,mag,0.202,-0.08000001,0.42700002 +34144000,airspeed,1.3381593,1.3069217 +34144000,baro,487.67557 +34148000,imu,-0.26940152,0.174087,-9.947259,-0.0023498137,-0.008804468,0.0015595141 +34148000,baro,487.5676 +34148000,airspeed,-2.0026324,-1.9558955 +34148000,mag,0.202,-0.08000001,0.42700002 +34156000,baro,487.78824 +34156000,imu,-0.228042,0.18726246,-9.884526,-0.0011848827,-0.008524796,-0.0014259435 +34156000,mag,0.2,-0.07900001,0.42900002 +34156000,airspeed,2.3051066,2.2512813 +34160000,imu,-0.20351787,0.17573456,-9.8833065,-0.0006793472,-0.004554809,0.0021338894 +34160000,baro,487.71783 +34160000,mag,0.2,-0.07900001,0.42900002 +34160000,airspeed,3.4254942,3.3455205 +34164000,imu,-0.24799459,0.14352691,-9.877939,-0.0074118567,-0.0074429438,0.004647119 +34164000,airspeed,-2.3351307,-2.280638 +34168000,imu,-0.25614944,0.14985976,-9.8791275,-0.0049536284,-0.0053840284,-0.001024586 +34168000,airspeed,3.2506611,3.1747823 +34168000,baro,487.6521 +34168000,mag,0.2,-0.07900001,0.42900002 +34172000,imu,-0.24703814,0.22573979,-9.897617,0.0013211888,-0.0038944804,-0.0034884121 +34172000,airspeed,0.5834053,0.5697871 +34172000,baro,487.6521 +34172000,mag,0.2,-0.07900001,0.42900002 +34176000,mag,0.2,-0.07900001,0.42900002 +34176000,airspeed,2.9476328,2.8788478 +34176000,imu,-0.22333086,0.24237557,-9.867308,-0.0012076573,-0.005937245,0.0024011813 +34176000,baro,487.53473 +34180000,imu,-0.26103643,0.24295865,-9.891666,0.0015144412,-0.0027537209,0.009759131 +34180000,airspeed,-3.5760784,-3.4926372 +34180000,mag,0.2,-0.07900001,0.42900002 +34180000,baro,487.49246 +34184000,imu,-0.24102664,0.19390364,-9.877029,-0.0020363096,-0.004666906,0.007542957 +34184000,airspeed,2.6497557,2.5879285 +34184000,mag,0.2,-0.07900001,0.42900002 +34184000,baro,487.49246 +34188000,airspeed,-2.2419658,-2.1896217 +34188000,mag,0.2,-0.07900001,0.42900002 +34188000,baro,487.7319 +34188000,imu,-0.16782272,0.13362083,-9.825893,-0.008592927,-0.0063415626,0.0024734675 +34196000,imu,-0.24842434,0.16606198,-9.928767,-0.0011324364,-0.010057856,0.0038177671 +34196000,airspeed,-4.192024,-4.094197 +34196000,baro,487.5488 +34196000,mag,0.2,-0.07900001,0.42900002 +34200000,baro,487.5488 +34200000,airspeed,-1.1027863,-1.077051 +34200000,mag,0.2,-0.07900001,0.42900002 +34200000,imu,-0.2715507,0.19678394,-9.897249,-0.00020042018,-0.008943496,0.0037815755 +34204000,airspeed,4.032458,3.9383428 +34204000,imu,-0.22423291,0.13191052,-9.919687,0.0026354454,-0.008876576,0.0018298081 +34204000,baro,487.60043 +34204000,mag,0.2,-0.07900001,0.42800003 +34208000,baro,487.60043 +34208000,imu,-0.17706311,0.10486927,-9.951123,0.004914705,-0.009469587,0.0004424274 +34208000,airspeed,3.6682134,3.5825994 +34208000,mag,0.2,-0.07900001,0.42800003 +34216000,mag,0.2,-0.07900001,0.42800003 +34216000,imu,-0.2766735,0.23605567,-9.917554,0.0010405341,-0.012055545,-0.0007491604 +34216000,airspeed,1.4331471,1.399705 +34216000,baro,487.51593 +34220000,baro,487.6521 +34220000,airspeed,-1.9890035,-1.942575 +34220000,mag,0.2,-0.07900001,0.42800003 +34220000,imu,-0.21042405,0.20192225,-9.885263,0.004754529,-0.014216922,0.0021357615 +34224000,airspeed,-3.0104067,-2.9401186 +34224000,baro,487.75537 +34224000,mag,0.2,-0.07900001,0.42800003 +34224000,imu,-0.15683748,0.12911588,-9.875336,0.0022397367,-0.008195124,-0.00011579572 +34228000,mag,0.2,-0.07900001,0.42800003 +34228000,baro,487.66617 +34228000,airspeed,4.4409914,4.3373237 +34228000,imu,-0.16602819,0.13022171,-9.895273,0.0033340587,-0.0061379094,-0.0011023344 +34232000,baro,487.58167 +34232000,mag,0.2,-0.07900001,0.42800003 +34232000,airspeed,-2.114063,-2.0647244 +34232000,imu,-0.13990554,0.20716785,-9.866545,0.0049750903,-0.007991008,-0.00055663334 +34236000,airspeed,-1.6554554,-1.616799 +34236000,imu,-0.17524762,0.23084082,-9.894434,0.00263464,-0.0055298633,0.008571366 +34236000,baro,487.79294 +34240000,airspeed,2.695739,2.632791 +34240000,baro,487.79294 +34240000,mag,0.2,-0.07900001,0.42800003 +34240000,imu,-0.2423027,0.1783531,-9.965057,0.0026079947,-0.0032971378,0.0057138843 +34244000,airspeed,0.74470544,0.7273282 +34244000,baro,487.51593 +34244000,mag,0.2,-0.07900001,0.42800003 +34244000,imu,-0.2875102,0.18644693,-9.9839525,0.0026305085,-0.0009799288,-0.0029702333 +34248000,imu,-0.29818723,0.14190975,-9.954574,-0.0023782647,-0.0045930566,0.004514033 +34248000,baro,487.638 +34248000,airspeed,2.1641467,2.1136312 +34248000,mag,0.2,-0.07900001,0.42800003 +34252000,airspeed,3.452932,3.3723295 +34252000,baro,487.66617 +34252000,mag,0.2,-0.07900001,0.42800003 +34252000,imu,-0.1721978,0.14636335,-9.898492,0.00062941376,-0.0052976683,0.0025889575 +34256000,gps,488099.0,85456081.0,473977508.0,0.0,0.01,0.02 +34260000,imu,-0.34206113,0.14843814,-9.908044,-0.0058514858,-0.0030754427,-0.006196249 +34260000,baro,487.53003 +34260000,mag,0.19800001,-0.08000001,0.42800003 +34260000,airspeed,2.6487184,2.5869093 +34264000,baro,487.53003 +34264000,mag,0.19800001,-0.08000001,0.42800003 +34268000,imu,-0.1409627,0.23330037,-9.93449,0.0051341583,-0.006973814,0.0005106243 +34268000,airspeed,1.877434,1.8336066 +34272000,imu,-0.21819593,0.23450513,-9.901161,0.005451661,-0.012925083,-0.00037457433 +34272000,baro,487.62393 +34272000,mag,0.19800001,-0.08000001,0.42800003 +34272000,airspeed,-3.7983434,-3.7096875 +34276000,baro,487.76007 +34276000,mag,0.19800001,-0.08000001,0.42800003 +34276000,airspeed,1.247684,1.2185521 +34276000,imu,-0.24396959,0.13558091,-9.850336,0.0009779761,-0.008481466,-0.0009668367 +34284000,imu,-0.1654074,0.19335926,-9.918548,-0.0023851388,-0.00631398,-0.00020499586 +34284000,baro,487.57697 +34284000,mag,0.19800001,-0.08000001,0.42800003 +34284000,airspeed,3.9786854,3.8858297 +34288000,baro,487.5676 +34288000,imu,-0.2023173,0.15912026,-9.917476,0.00079697574,-0.005032586,-0.006004377 +34288000,mag,0.19800001,-0.08000001,0.42800003 +34288000,airspeed,2.6717944,2.6094415 +34292000,airspeed,-2.9421396,-2.8734694 +34292000,baro,487.60983 +34292000,mag,0.19800001,-0.08000001,0.42800003 +34292000,imu,-0.2159122,0.1435591,-9.891186,-0.0024744414,-0.0041769594,-0.007656672 +34296000,airspeed,-3.5125618,-3.430569 +34296000,baro,487.6568 +34296000,imu,-0.17585196,0.23390344,-9.867965,-0.0063848505,-0.0006834363,-0.00037943333 +34296000,mag,0.19800001,-0.08000001,0.42800003 +34300000,imu,-0.14881183,0.2612429,-9.87429,-0.00858492,0.0003355834,0.0009167515 +34300000,baro,487.6568 +34300000,airspeed,2.2152457,2.1635358 +34300000,mag,0.19800001,-0.08000001,0.42800003 +34304000,mag,0.19800001,-0.08000001,0.42800003 +34304000,imu,-0.20222452,0.19179638,-9.8473,-0.00496,-0.0039203176,-0.0025319646 +34304000,airspeed,2.0586216,2.010588 +34304000,baro,487.48776 +34308000,mag,0.201,-0.08000001,0.43100002 +34308000,airspeed,2.9098155,2.8418899 +34308000,imu,-0.23235832,0.21193902,-9.830514,-0.00203414,-0.0064754547,-0.0010183795 +34308000,baro,487.67087 +34312000,baro,487.67087 +34312000,airspeed,-2.3490472,-2.2942119 +34312000,imu,-0.22355093,0.23067272,-9.873328,-0.00068944733,-0.0007708379,-0.0034837907 +34312000,mag,0.201,-0.08000001,0.43100002 +34320000,baro,487.43613 +34320000,airspeed,1.7880961,1.7463802 +34320000,mag,0.201,-0.08000001,0.43100002 +34320000,imu,-0.19606666,0.1290341,-9.864944,0.0020762528,-0.008372111,0.00081621634 +34328000,airspeed,3.8544967,3.7645051 +34328000,baro,487.7319 +34328000,imu,-0.19955097,0.17308642,-9.808488,-0.00051498524,-0.0025165717,-0.0054945895 +34328000,mag,0.201,-0.08000001,0.43100002 +34332000,baro,487.7319 +34332000,airspeed,-2.9960046,-2.9260566 +34332000,imu,-0.16449547,0.15913431,-9.836577,0.002159656,-0.010037802,0.0039819246 +34332000,mag,0.201,-0.08000001,0.43100002 +34340000,baro,487.5676 +34340000,imu,-0.307569,0.14445287,-9.903847,-0.0027979722,-0.00936788,4.5026918e-05 +34340000,airspeed,2.046828,1.9990597 +34340000,mag,0.201,-0.08000001,0.43100002 +34344000,baro,487.61923 +34344000,imu,-0.30754948,0.18147732,-9.949583,-0.0075141513,-0.0030937155,0.0035864175 +34344000,mag,0.201,-0.08000001,0.43100002 +34344000,airspeed,-3.5983868,-3.5143983 +34348000,mag,0.201,-0.08000001,0.43100002 +34348000,imu,-0.20557311,0.25153795,-9.912511,-0.0034568468,-0.0016783775,-0.0014413596 +34348000,baro,487.61923 +34348000,airspeed,2.355638,2.300656 +34352000,mag,0.201,-0.08000001,0.43100002 +34352000,imu,-0.1601663,0.27651936,-9.8876095,-0.0020346984,-0.0055349986,0.00029480088 +34352000,baro,487.6474 +34352000,airspeed,-1.9105405,-1.8659444 +34360000,baro,487.62863 +34360000,airspeed,3.5819316,3.4983256 +34360000,imu,-0.22475554,0.22663857,-9.930437,0.0010329413,-0.008911526,-0.0006675933 +34360000,mag,0.201,-0.08100001,0.42800003 +34364000,baro,487.62863 +34364000,airspeed,-2.689022,-2.6262577 +34364000,mag,0.201,-0.08100001,0.42800003 +34364000,imu,-0.2728432,0.21088828,-9.914573,0.007619913,-0.0047356803,-0.0053804647 +34368000,airspeed,2.8817394,2.814476 +34368000,baro,487.6333 +34368000,imu,-0.3679179,0.21215226,-9.89641,0.0007248979,-0.003549935,-0.0049940613 +34368000,mag,0.201,-0.08100001,0.42800003 +34376000,imu,-0.26056436,0.14675285,-9.885293,-0.001138466,-0.011281748,-1.1679371e-07 +34376000,airspeed,-1.594733,-1.5575036 +34376000,mag,0.201,-0.08100001,0.42800003 +34376000,baro,487.69904 +34380000,mag,0.201,-0.08100001,0.42800003 +34380000,baro,487.79294 +34380000,imu,-0.28351367,0.123251185,-9.932393,-0.0067435037,-0.0068575614,0.002160036 +34380000,airspeed,-0.11056096,-0.1079793 +34384000,airspeed,4.121317,4.02511 +34384000,imu,-0.31184834,0.107518926,-9.926012,-0.0028912427,-0.0036050063,-0.0018362533 +34388000,imu,-0.3037709,0.10099086,-9.88633,-0.002413735,-0.0022356468,-0.0035578625 +34388000,mag,0.201,-0.08100001,0.42800003 +34388000,baro,487.67557 +34388000,airspeed,1.1298696,1.1034942 +34392000,baro,487.6427 +34392000,imu,-0.20635764,0.14318573,-9.900161,0.0005242152,-0.0035751658,-0.0030640208 +34392000,airspeed,-3.7128403,-3.6261752 +34392000,mag,0.201,-0.08100001,0.42800003 +34400000,imu,-0.19342297,0.1989503,-9.797487,-0.0015944139,-0.0021951036,0.0037287078 +34400000,baro,487.57697 +34400000,mag,0.201,-0.08100001,0.42800003 +34400000,airspeed,1.9904028,1.9439504 +34404000,airspeed,-1.275142,-1.2453796 +34404000,imu,-0.2039116,0.108125836,-9.847381,-0.0013004496,-0.0012258226,0.0012375378 +34404000,baro,487.61453 +34404000,mag,0.201,-0.08100001,0.42800003 +34408000,mag,0.201,-0.08100001,0.42800003 +34408000,imu,-0.24174942,0.10975281,-9.910027,-0.0040221526,-0.0051889657,-0.0009598781 +34408000,baro,487.61453 +34408000,airspeed,-3.1285083,-3.0554876 +34412000,imu,-0.281237,0.21107002,-9.930364,-0.005026893,-0.003981654,-0.00013853968 +34412000,baro,487.68027 +34412000,mag,0.201,-0.07800001,0.42600003 +34412000,airspeed,3.360835,3.2823794 +34416000,imu,-0.27628124,0.22278,-9.989485,-0.001798826,0.00016605655,0.0068057682 +34416000,mag,0.201,-0.07800001,0.42600003 +34416000,baro,487.5441 +34416000,airspeed,-2.8660004,-2.799119 +34420000,airspeed,-0.7819869,-0.76373583 +34420000,landed,1.0 +34420000,mag,0.201,-0.07800001,0.42600003 +34420000,baro,487.59576 +34420000,imu,-0.2619566,0.13644286,-9.929689,-0.0013498219,-0.0048957206,0.008422201 +34424000,airspeed,1.4613258,1.4272057 +34424000,imu,-0.23734747,0.19290508,-9.911526,-0.00071442366,-0.0071766167,0.0005996085 +34428000,airspeed,2.1260245,2.0763845 +34428000,baro,487.75537 +34428000,imu,-0.18770234,0.1692348,-9.999566,-0.0047692126,-0.0008468146,-0.0013004999 +34428000,mag,0.201,-0.07800001,0.42600003 +34432000,airspeed,1.4332604,1.3998016 +34432000,baro,487.68497 +34432000,imu,-0.18988581,0.114566,-9.982527,-0.0054093245,-0.0017162374,0.0027282266 +34432000,mag,0.201,-0.07800001,0.42600003 +34436000,mag,0.201,-0.07800001,0.42600003 +34436000,baro,487.638 +34436000,imu,-0.1884508,0.12705883,-9.947483,0.0011850992,-0.008922076,0.0060522906 +34436000,airspeed,-3.7109208,-3.6243017 +34444000,mag,0.201,-0.07800001,0.42600003 +34444000,baro,487.60983 +34444000,imu,-0.24660222,0.18693507,-9.946497,-0.0059503214,-0.00052660215,0.0043815104 +34444000,airspeed,2.8926806,2.8251648 +34452000,mag,0.201,-0.07800001,0.42600003 +34452000,baro,487.71313 +34452000,imu,-0.3106195,0.13165091,-9.858098,-8.5485066e-05,-0.0053148083,0.004579366 +34452000,airspeed,-0.76213944,-0.74434644 +34456000,airspeed,0.9423611,0.9203606 +34456000,baro,487.71313 +34456000,gps,488105.0,85456081.0,473977508.0,0.0,0.0,0.0 +34456000,mag,0.201,-0.07800001,0.42600003 +34456000,imu,-0.31244418,0.1832469,-9.827722,-0.009996951,-0.003876638,0.0009849346 +34460000,baro,487.67557 +34460000,airspeed,1.3773408,1.345188 +34460000,imu,-0.27562648,0.13466495,-9.876677,-0.007997226,-0.004046213,0.0010658046 +34460000,mag,0.201,-0.07800001,0.42600003 +34464000,imu,-0.20161876,0.16953728,-9.913762,-0.0041606505,-0.00704441,0.0020015654 +34464000,mag,0.19900002,-0.08000001,0.42600003 +34464000,baro,487.60983 +34464000,airspeed,-3.1915035,-3.1170135 +34468000,mag,0.19900002,-0.08000001,0.42600003 +34468000,baro,487.60983 +34468000,imu,-0.13757807,0.20914643,-9.892095,-0.00025024862,-0.00696541,0.00043618522 +34468000,airspeed,-0.87446076,-0.85405076 +34472000,baro,487.5629 +34472000,mag,0.19900002,-0.08000001,0.42600003 +34472000,imu,-0.19739775,0.22633314,-9.85449,3.600813e-05,-0.004409,-0.004659754 +34472000,airspeed,-0.9427325,-0.9207316 +34476000,mag,0.19900002,-0.08000001,0.42600003 +34476000,imu,-0.23171717,0.18974866,-9.786698,-0.0019315167,-0.0057385745,-0.0015000183 +34476000,baro,487.469 +34476000,airspeed,-2.533612,-2.474498 +34480000,baro,487.61453 +34480000,airspeed,-2.0686898,-2.0204058 +34480000,mag,0.19900002,-0.08000001,0.42600003 +34480000,imu,-0.21201624,0.23113208,-9.857312,-0.0020038458,-0.008514168,0.0033579953 +34484000,mag,0.19900002,-0.08000001,0.42600003 +34484000,imu,-0.2779351,0.22153895,-9.935868,-0.0018321662,-0.006408403,0.002943693 +34484000,baro,487.746 +34484000,airspeed,-2.8320212,-2.765899 +34488000,mag,0.19900002,-0.08000001,0.42600003 +34488000,baro,487.5676 +34488000,imu,-0.22583236,0.18067428,-9.903918,0.0016797597,-0.0033417402,0.0042469366 +34488000,airspeed,3.1851556,3.1108222 +34492000,baro,487.5629 +34492000,airspeed,-1.6027697,-1.5653654 +34492000,mag,0.19900002,-0.08000001,0.42600003 +34492000,imu,-0.1882992,0.14967385,-9.893525,0.0020248923,-0.0064506056,0.0016866591 +34496000,airspeed,3.8038058,3.7150657 +34496000,imu,-0.28638867,0.092061885,-9.904119,0.0017828908,-0.004928454,-0.0006257609 +34496000,baro,487.42673 +34496000,mag,0.19900002,-0.08000001,0.42600003 +34504000,imu,-0.17331776,0.1382143,-9.929391,-0.0003993212,-0.0057500056,-0.0029839322 +34504000,airspeed,2.9070837,2.8392034 +34504000,baro,487.77887 +34504000,mag,0.19900002,-0.08000001,0.42600003 +34508000,imu,-0.20415111,0.18550089,-9.83196,-0.00451434,-0.0017710482,-8.1516875e-05 +34508000,baro,487.77887 +34508000,mag,0.19900002,-0.08000001,0.42600003 +34508000,airspeed,2.2314804,2.1793754 +34512000,mag,0.19900002,-0.08000001,0.42600003 +34512000,airspeed,0.88202,0.86143076 +34512000,baro,487.66617 +34512000,imu,-0.1803378,0.19082631,-9.866092,-0.008617995,0.0020126256,-0.0041060117 diff --git a/src/lib/ecl/test/sensor_simulator/.gitignore b/src/lib/ecl/test/sensor_simulator/.gitignore new file mode 100644 index 0000000000..c18dd8d83c --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/src/lib/ecl/test/sensor_simulator/CMakeLists.txt b/src/lib/ecl/test/sensor_simulator/CMakeLists.txt new file mode 100644 index 0000000000..efdb9a60bf --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/CMakeLists.txt @@ -0,0 +1,51 @@ +############################################################################ +# +# Copyright (c) 2019 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + + +set(SRCS + sensor_simulator.cpp + ekf_wrapper.cpp + ekf_logger.cpp + sensor.cpp + imu.cpp + mag.cpp + baro.cpp + gps.cpp + flow.cpp + range_finder.cpp + vio.cpp + airspeed.cpp + ) + +add_library(ecl_sensor_sim ${SRCS}) +target_link_libraries(ecl_sensor_sim ecl_EKF) diff --git a/src/lib/ecl/test/sensor_simulator/airspeed.cpp b/src/lib/ecl/test/sensor_simulator/airspeed.cpp new file mode 100644 index 0000000000..6b7e35979e --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/airspeed.cpp @@ -0,0 +1,35 @@ +#include "airspeed.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Airspeed::Airspeed(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Airspeed::~Airspeed() +{ +} + +void Airspeed::send(uint64_t time) +{ + if(_true_airspeed_data > FLT_EPSILON && _indicated_airspeed_data > FLT_EPSILON) + { + airspeedSample airspeed_sample; + airspeed_sample.time_us = time; + airspeed_sample.eas2tas = _true_airspeed_data / _indicated_airspeed_data; + airspeed_sample.true_airspeed = _true_airspeed_data; + _ekf->setAirspeedData(airspeed_sample); + } +} + +void Airspeed::setData(float true_airspeed, float indicated_airspeed) +{ + _true_airspeed_data = true_airspeed; + _indicated_airspeed_data = indicated_airspeed; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/airspeed.h b/src/lib/ecl/test/sensor_simulator/airspeed.h new file mode 100644 index 0000000000..79dcd87ebd --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/airspeed.h @@ -0,0 +1,64 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with airspeed data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Airspeed: public Sensor +{ +public: + Airspeed(std::shared_ptr ekf); + ~Airspeed(); + + void setData(float true_airspeed, float eas2tas); + +private: + float _true_airspeed_data{0.0f}; + float _indicated_airspeed_data{0.0f}; + + void send(uint64_t time) override; + +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/baro.cpp b/src/lib/ecl/test/sensor_simulator/baro.cpp new file mode 100644 index 0000000000..75a25a7cd4 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/baro.cpp @@ -0,0 +1,27 @@ +#include "baro.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Baro::Baro(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Baro::~Baro() +{ +} + +void Baro::send(uint64_t time) +{ + _ekf->setBaroData(baroSample{time, _baro_data}); +} + +void Baro::setData(float baro) +{ + _baro_data = baro; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/baro.h b/src/lib/ecl/test/sensor_simulator/baro.h new file mode 100644 index 0000000000..fbe5a9c597 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/baro.h @@ -0,0 +1,63 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with Mag data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Baro: public Sensor +{ +public: + Baro(std::shared_ptr ekf); + ~Baro(); + + void setData(float baro); + +private: + float _baro_data{0.0f}; + + void send(uint64_t time) override; + +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/convertULogToSensorData.py b/src/lib/ecl/test/sensor_simulator/convertULogToSensorData.py new file mode 100644 index 0000000000..0e656a684a --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/convertULogToSensorData.py @@ -0,0 +1,141 @@ +from pyulog import ULog +import pandas as pd + +def getVioData(ulog: ULog) -> pd.DataFrame: + + vehicle_visual_odometry = ulog.get_dataset("vehicle_visual_odometry").data + vio = pd.DataFrame({'timestamp': vehicle_visual_odometry['timestamp'], + 'sensor' : 'vio', + 'x': vehicle_visual_odometry["x"], + 'y': vehicle_visual_odometry["y"], + 'z': vehicle_visual_odometry["z"], + 'qw': vehicle_visual_odometry["q[0]"], + 'qx': vehicle_visual_odometry["q[1]"], + 'qy': vehicle_visual_odometry["q[2]"], + 'qz': vehicle_visual_odometry["q[3]"], + 'vx': vehicle_visual_odometry["vx"], + 'vy': vehicle_visual_odometry["vy"], + 'vz': vehicle_visual_odometry["vz"] + }) + return vio + + +def getOpticalFlowData(ulog: ULog) -> pd.DataFrame: + + optical_flow = ulog.get_dataset("optical_flow").data + flow = pd.DataFrame({'timestamp': optical_flow['timestamp'], + 'sensor' : 'flow', + 'pixel_flow_x_integral': optical_flow["pixel_flow_x_integral"], + 'pixel_flow_y_integral': optical_flow["pixel_flow_y_integral"], + 'gyro_x_rate_integral': optical_flow["gyro_x_rate_integral"], + 'gyro_y_rate_integral': optical_flow["gyro_y_rate_integral"], + 'gyro_z_rate_integral': optical_flow["gyro_z_rate_integral"], + 'quality': optical_flow["quality"] + }) + return flow + + +def getAirspeedData(ulog: ULog) -> pd.DataFrame: + + airspeed = ulog.get_dataset("airspeed").data + airspeed = pd.DataFrame({'timestamp': airspeed['timestamp'], + 'sensor' : 'airspeed', + 'true_as': airspeed["true_airspeed_m_s"], + 'indicated_as': airspeed["indicated_airspeed_m_s"] + }) + return airspeed + + +def getRangeFinderData(ulog: ULog) -> pd.DataFrame: + + range = pd.DataFrame() + try: + range_0 = ulog.get_dataset("distance_sensor", 0).data + rng_0 = pd.DataFrame({'timestamp': range_0['timestamp'], + 'sensor' : 'range', + 'data': range_0["current_distance"], + 'quality': range_0["signal_quality"] + }) + range = pd.concat([range, rng_0], ignore_index=True, sort=False) + except: + pass + + try: + range_1 = ulog.get_dataset("distance_sensor", 1).data + rng_1 = pd.DataFrame({'timestamp': range_1['timestamp'], + 'sensor' : 'range', + 'data': range_1["current_distance"], + 'quality': range_1["signal_quality"] + }) + range = pd.concat([range, rng_1], ignore_index=True, sort=False) + except: + pass + + try: + range_2 = ulog.get_dataset("distance_sensor", 2).data + rng_2 = pd.DataFrame({'timestamp': range_2['timestamp'], + 'sensor' : 'range', + 'data': range_2["current_distance"], + 'quality': range_2["signal_quality"] + }) + range = pd.concat([range, rng_2], ignore_index=True, sort=False) + except: + pass + + return range + + +def getGpsData(ulog: ULog) -> pd.DataFrame: + + vehicle_gps_position = ulog.get_dataset("vehicle_gps_position").data + gps = pd.DataFrame({'timestamp': vehicle_gps_position['timestamp'], + 'sensor' : 'gps', + 'alt': vehicle_gps_position["alt"], + 'lon': vehicle_gps_position["lon"], + 'lat': vehicle_gps_position["lat"], + 'vel_N': vehicle_gps_position["vel_n_m_s"], + 'vel_E': vehicle_gps_position["vel_e_m_s"], + 'vel_D': vehicle_gps_position["vel_d_m_s"], + }) + return gps + + +def getBarometerData(ulog: ULog) -> pd.DataFrame: + + vehicle_air_data = ulog.get_dataset("vehicle_air_data").data + baro = pd.DataFrame({'timestamp': vehicle_air_data['timestamp'], + 'sensor' : 'baro', + 'baro_alt_meter': vehicle_air_data["baro_alt_meter"]}) + return baro + + +def getMagnetometerData(ulog: ULog) -> pd.DataFrame: + + vehicle_magnetometer = ulog.get_dataset("vehicle_magnetometer").data + mag = pd.DataFrame({'timestamp': vehicle_magnetometer['timestamp'], + 'sensor' : 'mag', + 'magnetometer_ga[0]': vehicle_magnetometer["magnetometer_ga[0]"], + 'magnetometer_ga[1]': vehicle_magnetometer["magnetometer_ga[1]"], + 'magnetometer_ga[2]': vehicle_magnetometer["magnetometer_ga[2]"]}) + return mag + + +def getImuData(ulog: ULog) -> pd.DataFrame: + + sensor_combined = ulog.get_dataset("sensor_combined").data + imu = pd.DataFrame({'timestamp': sensor_combined['timestamp'], + 'sensor' : 'imu', + 'accel_m_s2[0]': sensor_combined["accelerometer_m_s2[0]"], + 'accel_m_s2[1]': sensor_combined["accelerometer_m_s2[1]"], + 'accel_m_s2[2]': sensor_combined["accelerometer_m_s2[2]"], + 'gyro_rad[0]': sensor_combined["gyro_rad[0]"], + 'gyro_rad[1]': sensor_combined["gyro_rad[1]"], + 'gyro_rad[2]': sensor_combined["gyro_rad[2]"]}) + return imu + +def getVehicleLandingStatus(ulog: ULog) -> pd.DataFrame: + vehicle_land_detected = ulog.get_dataset("vehicle_land_detected").data + land = pd.DataFrame({'timestamp': vehicle_land_detected['timestamp'], + 'sensor' : 'landed', + 'landed': vehicle_land_detected["landed"]}) + return land diff --git a/src/lib/ecl/test/sensor_simulator/createSensorDataFile.py b/src/lib/ecl/test/sensor_simulator/createSensorDataFile.py new file mode 100644 index 0000000000..38b26e71ff --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/createSensorDataFile.py @@ -0,0 +1,124 @@ +from pyulog import ULog +import argparse +import pandas as pd +import csv +import convertULogToSensorData as util + +path = "/home/kamil/Documents/QGroundControl/Logs/iris_vision.ulg" +output_path = "/home/kamil/Documents/QGroundControl/Logs/sensor_data_iris_vision.csv" + + +def get_arguments(): + """ + parses the command line arguments + :return: + """ + parser = argparse.ArgumentParser( + description='Create a csv file with sensor data values in chronological order from a single' + 'ulog file.') + parser.add_argument('input_file', metavar='file.ulg', help='ULog input file path') + parser.add_argument('output_file', metavar='file.ulg', help='csv output file path') + return parser.parse_args() + +def main() -> None: + """ + main entry point + :return: + """ + args = get_arguments() + + table = pd.DataFrame() + + try: + ulog = ULog(args.input_file) + except: + print("Could not find ulog file") + exit(-1) + + try: + imu = util.getImuData(ulog) + print("IMU data detected") + table = pd.concat([table, imu], ignore_index=True, sort=False) + except: + print("IMU data not detected") + + try: + mag = util.getMagnetometerData(ulog) + print("Mag data detected") + table = pd.concat([table, mag], ignore_index=True, sort=False) + except: + print("Mag data not detected") + + try: + baro = util.getBarometerData(ulog) + print("Baro data detected") + table = pd.concat([table, baro], ignore_index=True, sort=False) + except: + print("Baro data not detected") + + try: + gps = util.getGpsData(ulog) + print("GPS data detected") + table = pd.concat([table, gps], ignore_index=True, sort=False) + except: + print("GPS data not detected") + + try: + airspeed = util.getAirspeedData(ulog) + print("Airspeed data detected") + table = pd.concat([table, airspeed], ignore_index=True, sort=False) + except: + print("Airspeed data not detected") + + try: + flow = util.getOpticalFlowData(ulog) + print("Flow data detected") + table = pd.concat([table, flow], ignore_index=True, sort=False) + except: + print("Flow data not detected") + + try: + range = util.getRangeFinderData(ulog) + print("Range data detected") + table = pd.concat([table, range], ignore_index=True, sort=False) + except: + print("Range data not detected") + + try: + vio = util.getVioData(ulog) + print("VIO data detected") + table = pd.concat([table, vio], ignore_index=True, sort=False) + except: + print("VIO data not detected") + + try: + land = util.getVehicleLandingStatus(ulog) + print("Landing data detected") + table = pd.concat([table, land], ignore_index=True, sort=False) + except: + print("Landing data not detected") + + table = table.sort_values('timestamp', axis=0, ascending=True) + table['timestamp'] = table['timestamp'] - table['timestamp'].iloc[0] + # remove the first 0.5 seconds of data to be robust against faulty initialized data + table = table[table.timestamp > 500000] + table.timestamp = table.timestamp - 500000 + + try: + table.to_csv(args.output_file, index=None, header=None) + + # post processing remove empty cells from csv + result = [] + with open(args.output_file, "r") as in_file: + reader = csv.reader(in_file) + result = [[item for item in row if item != ''] for row in reader] + + with open(args.output_file, "w") as out_file: + csv_writer = csv.writer(out_file) + csv_writer.writerows(result) + except: + print("Could not write to specified output file") + + +if __name__ == '__main__': + main() diff --git a/src/lib/ecl/test/sensor_simulator/ekf_logger.cpp b/src/lib/ecl/test/sensor_simulator/ekf_logger.cpp new file mode 100644 index 0000000000..4ff9f7beca --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/ekf_logger.cpp @@ -0,0 +1,77 @@ +#include "ekf_logger.h" + +EkfLogger::EkfLogger(std::shared_ptr ekf): +_ekf{ekf}, +_ekf_wrapper(ekf) +{ + +} + +EkfLogger::~EkfLogger() {} + +void EkfLogger::setFilePath(std::string file_path) +{ + _file_path = file_path; +} + +void EkfLogger::writeStateToFile() +{ + if(!_file_opened) + { + _file.open(_file_path); + _file_opened = true; + _file << "Timestamp"; + if(_state_logging_enabled) + { + for(int i = 0; i < 24; i++) + { + _file << ",state[" << i << "]"; + } + } + if(_variance_logging_enabled) + { + for(int i = 0; i < 24; i++) + { + _file << ",variance[" << i << "]"; + } + } + _file << std::endl; + } + + if (_file) + { + writeState(); + } + else + { + std::cerr << "Can not write to output file" << std::endl; + std::exit(-1); + } + +} + +void EkfLogger::writeState() +{ + if(_state_logging_enabled) + { + uint64_t time = _ekf->get_imu_sample_delayed().time_us; + _file << time; + if(_state_logging_enabled) + { + matrix::Vector state = _ekf->getStateAtFusionHorizonAsVector(); + for(int i = 0; i < 24; i++) + { + _file << "," << state(i); + } + } + if(_variance_logging_enabled) + { + matrix::Vector variance = _ekf->covariances_diagonal(); + for(int i = 0; i < 24; i++) + { + _file << "," << variance(i); + } + } + _file << std::endl; + } +} diff --git a/src/lib/ecl/test/sensor_simulator/ekf_logger.h b/src/lib/ecl/test/sensor_simulator/ekf_logger.h new file mode 100644 index 0000000000..e23cde194a --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/ekf_logger.h @@ -0,0 +1,74 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Class to write EKF state to file + * @author Kamil Ritz + */ +#pragma once + +#include "EKF/ekf.h" +#include "EKF/estimator_interface.h" +#include "ekf_wrapper.h" +#include +#include + +class EkfLogger +{ +public: + EkfLogger(std::shared_ptr ekf); + ~EkfLogger(); + void setFilePath(std::string file_path); + + void enableStateLogging(){ _state_logging_enabled = true; }; + void disableStateLogging(){ _state_logging_enabled = false; }; + void enableVarianceLogging(){ _variance_logging_enabled = true; }; + void disableVarianceLogging(){ _variance_logging_enabled = false; }; + + void writeStateToFile(); + +private: + std::shared_ptr _ekf; + EkfWrapper _ekf_wrapper; + + std::string _file_path; + std::ofstream _file; + + bool _file_opened {false}; + + bool _state_logging_enabled {true}; + bool _variance_logging_enabled {true}; + + void writeState(); + +}; diff --git a/src/lib/ecl/test/sensor_simulator/ekf_wrapper.cpp b/src/lib/ecl/test/sensor_simulator/ekf_wrapper.cpp new file mode 100644 index 0000000000..ed8890eb0a --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/ekf_wrapper.cpp @@ -0,0 +1,239 @@ +#include "ekf_wrapper.h" + +EkfWrapper::EkfWrapper(std::shared_ptr ekf): +_ekf{ekf} +{ + _ekf_params = _ekf->getParamHandle(); +} + +EkfWrapper::~EkfWrapper() +{ +} + +void EkfWrapper::setBaroHeight() +{ + _ekf_params->vdist_sensor_type = VDIST_SENSOR_BARO; +} + +bool EkfWrapper::isIntendingBaroHeightFusion() const +{ + return _ekf->control_status_flags().baro_hgt; +} + +void EkfWrapper::setGpsHeight() +{ + _ekf_params->vdist_sensor_type = VDIST_SENSOR_GPS; +} + +bool EkfWrapper::isIntendingGpsHeightFusion() const +{ + return _ekf->control_status_flags().gps_hgt; +} + +void EkfWrapper::setRangeHeight() +{ + _ekf_params->vdist_sensor_type = VDIST_SENSOR_RANGE; +} + +bool EkfWrapper::isIntendingRangeHeightFusion() const +{ + return _ekf->control_status_flags().rng_hgt; +} + +void EkfWrapper::setVisionHeight() +{ + _ekf_params->vdist_sensor_type = VDIST_SENSOR_EV; +} + +bool EkfWrapper::isIntendingVisionHeightFusion() const +{ + return _ekf->control_status_flags().ev_hgt; +} + +void EkfWrapper::enableGpsFusion() +{ + _ekf_params->fusion_mode |= MASK_USE_GPS; +} + +void EkfWrapper::disableGpsFusion() +{ + _ekf_params->fusion_mode &= ~MASK_USE_GPS; +} + +bool EkfWrapper::isIntendingGpsFusion() const +{ + return _ekf->control_status_flags().gps; +} + +void EkfWrapper::enableGpsHeadingFusion() +{ + _ekf_params->fusion_mode |= MASK_USE_GPSYAW; +} + +void EkfWrapper::disableGpsHeadingFusion() +{ + _ekf_params->fusion_mode &= ~MASK_USE_GPSYAW; +} + +bool EkfWrapper::isIntendingGpsHeadingFusion() const +{ + return _ekf->control_status_flags().gps_yaw; +} + +void EkfWrapper::enableFlowFusion() +{ + _ekf_params->fusion_mode |= MASK_USE_OF; +} + +void EkfWrapper::disableFlowFusion() +{ + _ekf_params->fusion_mode &= ~MASK_USE_OF; +} + +bool EkfWrapper::isIntendingFlowFusion() const +{ + return _ekf->control_status_flags().opt_flow; +} + +void EkfWrapper::setFlowOffset(const Vector3f &offset) +{ + _ekf_params->flow_pos_body = offset; +} + +void EkfWrapper::enableExternalVisionPositionFusion() +{ + _ekf_params->fusion_mode |= MASK_USE_EVPOS; +} + +void EkfWrapper::disableExternalVisionPositionFusion() +{ + _ekf_params->fusion_mode &= ~MASK_USE_EVPOS; +} + +bool EkfWrapper::isIntendingExternalVisionPositionFusion() const +{ + return _ekf->control_status_flags().ev_pos; +} + +void EkfWrapper::enableExternalVisionVelocityFusion() +{ + _ekf_params->fusion_mode |= MASK_USE_EVVEL; +} + +void EkfWrapper::disableExternalVisionVelocityFusion() +{ + _ekf_params->fusion_mode &= ~MASK_USE_EVVEL; +} + +bool EkfWrapper::isIntendingExternalVisionVelocityFusion() const +{ + return _ekf->control_status_flags().ev_vel; +} + +void EkfWrapper::enableExternalVisionHeadingFusion() +{ + _ekf_params->fusion_mode |= MASK_USE_EVYAW; +} + +void EkfWrapper::disableExternalVisionHeadingFusion() +{ + _ekf_params->fusion_mode &= ~MASK_USE_EVYAW; +} + +bool EkfWrapper::isIntendingExternalVisionHeadingFusion() const +{ + return _ekf->control_status_flags().ev_yaw; +} + +void EkfWrapper::enableExternalVisionAlignment() +{ + _ekf_params->fusion_mode |= MASK_ROTATE_EV; +} + +void EkfWrapper::disableExternalVisionAlignment() +{ + _ekf_params->fusion_mode &= ~MASK_ROTATE_EV; +} + +bool EkfWrapper::isIntendingMagHeadingFusion() const +{ + return _ekf->control_status_flags().mag_hdg; +} + +bool EkfWrapper::isIntendingMag3DFusion() const +{ + return _ekf->control_status_flags().mag_3D; +} + +void EkfWrapper::setMagFuseTypeNone() +{ + _ekf_params->mag_fusion_type = MAG_FUSE_TYPE_NONE; +} + +bool EkfWrapper::isWindVelocityEstimated() const +{ + return _ekf->control_status_flags().wind; +} + +void EkfWrapper::enableTerrainRngFusion() +{ + _ekf_params->terrain_fusion_mode |= TerrainFusionMask::TerrainFuseRangeFinder; +} + +void EkfWrapper::disableTerrainRngFusion() +{ + _ekf_params->terrain_fusion_mode &= ~TerrainFusionMask::TerrainFuseRangeFinder; +} + +bool EkfWrapper::isIntendingTerrainRngFusion() const +{ + terrain_fusion_status_u terrain_status; + terrain_status.value = _ekf->getTerrainEstimateSensorBitfield(); + return terrain_status.flags.range_finder; +} + +void EkfWrapper::enableTerrainFlowFusion() +{ + _ekf_params->terrain_fusion_mode |= TerrainFusionMask::TerrainFuseOpticalFlow; +} + +void EkfWrapper::disableTerrainFlowFusion() +{ + _ekf_params->terrain_fusion_mode &= ~TerrainFusionMask::TerrainFuseOpticalFlow; +} + +bool EkfWrapper::isIntendingTerrainFlowFusion() const +{ + terrain_fusion_status_u terrain_status; + terrain_status.value = _ekf->getTerrainEstimateSensorBitfield(); + return terrain_status.flags.flow; +} + +Eulerf EkfWrapper::getEulerAngles() const +{ + return Eulerf(_ekf->getQuaternion()); +} + +float EkfWrapper::getYawAngle() const +{ + const Eulerf euler(_ekf->getQuaternion()); + return euler(2); +} + +matrix::Vector EkfWrapper::getQuaternionVariance() const +{ + return matrix::Vector(_ekf->orientation_covariances().diag()); +} + +int EkfWrapper::getQuaternionResetCounter() const +{ + float tmp[4]; + uint8_t counter; + _ekf->get_quat_reset(tmp, &counter); + return static_cast(counter); +} + +matrix::Vector3f EkfWrapper::getDeltaVelBiasVariance() const +{ + return _ekf->covariances_diagonal().slice<3, 1>(13,0); +} diff --git a/src/lib/ecl/test/sensor_simulator/ekf_wrapper.h b/src/lib/ecl/test/sensor_simulator/ekf_wrapper.h new file mode 100644 index 0000000000..c7ef60ec4d --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/ekf_wrapper.h @@ -0,0 +1,118 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Wrapper class for Ekf object to set behavior or check status + * @author Kamil Ritz + */ +#pragma once + +#include +#include "EKF/ekf.h" +#include "EKF/estimator_interface.h" + +class EkfWrapper +{ +public: + EkfWrapper(std::shared_ptr ekf); + ~EkfWrapper(); + + + void setBaroHeight(); + bool isIntendingBaroHeightFusion() const; + + void setGpsHeight(); + bool isIntendingGpsHeightFusion() const; + + void setRangeHeight(); + bool isIntendingRangeHeightFusion() const; + + void setVisionHeight(); + bool isIntendingVisionHeightFusion() const; + + void enableGpsFusion(); + void disableGpsFusion(); + bool isIntendingGpsFusion() const; + + void enableGpsHeadingFusion(); + void disableGpsHeadingFusion(); + bool isIntendingGpsHeadingFusion() const; + + void enableFlowFusion(); + void disableFlowFusion(); + bool isIntendingFlowFusion() const; + void setFlowOffset(const matrix::Vector3f &offset); + + void enableExternalVisionPositionFusion(); + void disableExternalVisionPositionFusion(); + bool isIntendingExternalVisionPositionFusion() const; + + void enableExternalVisionVelocityFusion(); + void disableExternalVisionVelocityFusion(); + bool isIntendingExternalVisionVelocityFusion() const; + + void enableExternalVisionHeadingFusion(); + void disableExternalVisionHeadingFusion(); + bool isIntendingExternalVisionHeadingFusion() const; + + bool isIntendingMagHeadingFusion() const; + bool isIntendingMag3DFusion() const; + void setMagFuseTypeNone(); + + void enableExternalVisionAlignment(); + void disableExternalVisionAlignment(); + + bool isWindVelocityEstimated() const; + + void enableTerrainRngFusion(); + void disableTerrainRngFusion(); + bool isIntendingTerrainRngFusion() const; + + void enableTerrainFlowFusion(); + void disableTerrainFlowFusion(); + bool isIntendingTerrainFlowFusion() const; + + Eulerf getEulerAngles() const; + float getYawAngle() const; + matrix::Vector getQuaternionVariance() const; + int getQuaternionResetCounter() const; + + matrix::Vector3f getDeltaVelBiasVariance() const; + +private: + std::shared_ptr _ekf; + + // Pointer to Ekf internal param struct + parameters* _ekf_params; + +}; diff --git a/src/lib/ecl/test/sensor_simulator/flow.cpp b/src/lib/ecl/test/sensor_simulator/flow.cpp new file mode 100644 index 0000000000..2ef66d019d --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/flow.cpp @@ -0,0 +1,39 @@ +#include "flow.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Flow::Flow(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Flow::~Flow() +{ +} + +void Flow::send(uint64_t time) +{ + _flow_data.time_us = time; + _ekf->setOpticalFlowData(_flow_data); +} + +void Flow::setData(const flowSample& flow) +{ + _flow_data = flow; + +} + +flowSample Flow::dataAtRest() +{ + flowSample flow_at_rest; + flow_at_rest.dt = static_cast(_update_period) * 1e-6f; + flow_at_rest.flow_xy_rad = Vector2f{0.0f, 0.0f}; + flow_at_rest.gyro_xyz = Vector3f{0.0f, 0.0f, 0.0f}; + flow_at_rest.quality = 255; + return flow_at_rest; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/flow.h b/src/lib/ecl/test/sensor_simulator/flow.h new file mode 100644 index 0000000000..9dca908093 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/flow.h @@ -0,0 +1,64 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with optical flow data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Flow: public Sensor +{ +public: + Flow(std::shared_ptr ekf); + ~Flow(); + + void setData(const flowSample& flow); + flowSample dataAtRest(); + +private: + flowSample _flow_data; + + void send(uint64_t time) override; + +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/gps.cpp b/src/lib/ecl/test/sensor_simulator/gps.cpp new file mode 100644 index 0000000000..40229b786c --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/gps.cpp @@ -0,0 +1,131 @@ +#include "gps.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Gps::Gps(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Gps::~Gps() +{ +} + +void Gps::send(const uint64_t time) +{ + const float dt = static_cast(time - _gps_data.time_usec) * 1e-6f; + + _gps_data.time_usec = time; + + if (fabsf(_gps_pos_rate(0)) > FLT_EPSILON || fabsf(_gps_pos_rate(1)) > FLT_EPSILON) { + stepHorizontalPositionByMeters(Vector2f(_gps_pos_rate) * dt); + } + if (fabsf(_gps_pos_rate(2)) > FLT_EPSILON) { + stepHeightByMeters(-_gps_pos_rate(2) * dt); + } + + _ekf->setGpsData(_gps_data); +} + +void Gps::setData(const gps_message& gps) +{ + _gps_data = gps; +} + +void Gps::setAltitude(const int32_t alt) +{ + _gps_data.alt = alt; +} + +void Gps::setLatitude(const int32_t lat) +{ + _gps_data.lat = lat; +} + +void Gps::setLongitude(const int32_t lon) +{ + _gps_data.lon = lon; +} + +void Gps::setVelocity(const Vector3f& vel) +{ + _gps_data.vel_ned = vel; +} + +void Gps::setYaw(const float yaw) { + _gps_data.yaw = yaw; +} + +void Gps::setYawOffset(const float yaw_offset) { + _gps_data.yaw_offset = yaw_offset; +} + +void Gps::setFixType(const int fix_type) +{ + _gps_data.fix_type = fix_type; +} + +void Gps::setNumberOfSatellites(const int num_satellites) +{ + _gps_data.nsats = num_satellites; +} + +void Gps::setPdop(const float pdop) +{ + _gps_data.pdop = pdop; +} + +void Gps::setPositionRateNED(const Vector3f& rate) +{ + _gps_pos_rate = rate; +} + +void Gps::stepHeightByMeters(const float hgt_change) +{ + _gps_data.alt += hgt_change * 1e3f; +} + +void Gps::stepHorizontalPositionByMeters(const Vector2f hpos_change) +{ + float hposN_curr {0.f}; + float hposE_curr {0.f}; + + double lat_new {0.0}; + double lon_new {0.0}; + + map_projection_project(&_ekf->global_origin(), _gps_data.lat * 1e-7, _gps_data.lon * 1e-7, &hposN_curr, &hposE_curr); + + Vector2f hpos_new = Vector2f{hposN_curr, hposE_curr} + hpos_change; + + map_projection_reproject(&_ekf->global_origin(), hpos_new(0), hpos_new(1), &lat_new, &lon_new); + + _gps_data.lon = static_cast(lon_new * 1e7); + _gps_data.lat = static_cast(lat_new * 1e7); +} + +gps_message Gps::getDefaultGpsData() +{ + gps_message gps_data{}; + gps_data.time_usec = 0; + gps_data.lat = 473566094; + gps_data.lon = 85190237; + gps_data.alt = 422056; + gps_data.yaw = NAN; + gps_data.yaw_offset = 0.0f; + gps_data.fix_type = 3; + gps_data.eph = 0.5f; + gps_data.epv = 0.8f; + gps_data.sacc = 0.2f; + gps_data.vel_m_s = 0.0; + gps_data.vel_ned.setZero(); + gps_data.vel_ned_valid = 1; + gps_data.nsats = 16; + gps_data.pdop = 0.0f; + + return gps_data; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/gps.h b/src/lib/ecl/test/sensor_simulator/gps.h new file mode 100644 index 0000000000..d5d50860fe --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/gps.h @@ -0,0 +1,77 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with Gps data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Gps: public Sensor +{ +public: + Gps(std::shared_ptr ekf); + ~Gps(); + + void setData(const gps_message& gps); + void stepHeightByMeters(const float hgt_change); + void stepHorizontalPositionByMeters(const Vector2f hpos_change); + void setPositionRateNED(const Vector3f& rate); + void setAltitude(const int32_t alt); + void setLatitude(const int32_t lat); + void setLongitude(const int32_t lon); + void setVelocity(const Vector3f& vel); + void setYaw(const float yaw); + void setYawOffset(const float yaw); + void setFixType(const int fix_type); + void setNumberOfSatellites(const int num_satellites); + void setPdop(const float pdop); + + gps_message getDefaultGpsData(); + +private: + void send(uint64_t time) override; + + gps_message _gps_data{}; + Vector3f _gps_pos_rate{}; +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/imu.cpp b/src/lib/ecl/test/sensor_simulator/imu.cpp new file mode 100644 index 0000000000..78d13f7a80 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/imu.cpp @@ -0,0 +1,46 @@ +#include "imu.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Imu::Imu(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Imu::~Imu() +{ +} + +void Imu::send(uint64_t time) +{ + const float dt = float((time - _time_last_data_sent) * 1.e-6f); + imuSample imu_sample{}; + imu_sample.time_us = time; + imu_sample.delta_ang_dt = dt; + imu_sample.delta_ang = _gyro_data * imu_sample.delta_ang_dt; + imu_sample.delta_vel_dt = dt; + imu_sample.delta_vel = _accel_data * imu_sample.delta_vel_dt; + + _ekf->setIMUData(imu_sample); +} + +void Imu::setData(const Vector3f& accel, const Vector3f& gyro) +{ + setAccelData(accel); + setGyroData(gyro); +} + +void Imu::setAccelData(const Vector3f& accel) +{ + _accel_data = accel; +} + +void Imu::setGyroData(const Vector3f& gyro) +{ + _gyro_data = gyro; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/imu.h b/src/lib/ecl/test/sensor_simulator/imu.h new file mode 100644 index 0000000000..bdd2632b92 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/imu.h @@ -0,0 +1,66 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with Imu data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Imu: public Sensor +{ +public: + Imu(std::shared_ptr ekf); + ~Imu(); + + void setData(const Vector3f& accel, const Vector3f& gyro); + void setAccelData(const Vector3f& accel); + void setGyroData(const Vector3f& gyro); + +private: + Vector3f _accel_data; + Vector3f _gyro_data; + + void send(uint64_t time) override; + +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/mag.cpp b/src/lib/ecl/test/sensor_simulator/mag.cpp new file mode 100644 index 0000000000..482af9c179 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/mag.cpp @@ -0,0 +1,27 @@ +#include "mag.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Mag::Mag(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Mag::~Mag() +{ +} + +void Mag::send(uint64_t time) +{ + _ekf->setMagData(magSample{time, _mag_data}); +} + +void Mag::setData(const Vector3f& mag) +{ + _mag_data = mag; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/mag.h b/src/lib/ecl/test/sensor_simulator/mag.h new file mode 100644 index 0000000000..8b659ff672 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/mag.h @@ -0,0 +1,63 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with Mag data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Mag: public Sensor +{ +public: + Mag(std::shared_ptr ekf); + ~Mag(); + + void setData(const Vector3f& mag); + +private: + Vector3f _mag_data; + + void send(uint64_t time) override; + +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/range_finder.cpp b/src/lib/ecl/test/sensor_simulator/range_finder.cpp new file mode 100644 index 0000000000..489bdd3304 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/range_finder.cpp @@ -0,0 +1,36 @@ +#include "range_finder.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +RangeFinder::RangeFinder(std::shared_ptr ekf):Sensor(ekf) +{ +} + +RangeFinder::~RangeFinder() +{ +} + +void RangeFinder::send(uint64_t time) +{ + _range_sample.time_us = time; + _ekf->setRangeData(_range_sample); + _ekf->set_rangefinder_limits(_min_distance, _max_distance); +} + +void RangeFinder::setData(float range_data_meters, int8_t range_quality) +{ + _range_sample.rng = range_data_meters; + _range_sample.quality = range_quality; +} + +void RangeFinder::setLimits(float min_distance_m, float max_distance_m) +{ + _min_distance = min_distance_m; + _max_distance = max_distance_m; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/range_finder.h b/src/lib/ecl/test/sensor_simulator/range_finder.h new file mode 100644 index 0000000000..ab126311c8 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/range_finder.h @@ -0,0 +1,65 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf with range finder data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class RangeFinder: public Sensor +{ +public: + RangeFinder(std::shared_ptr ekf); + ~RangeFinder(); + + void setData(float range_data, int8_t range_quality); + void setLimits(float min_distance_m, float max_distance_m); + +private: + rangeSample _range_sample {}; + float _min_distance {0.2f}; + float _max_distance {20.0f}; + + void send(uint64_t time) override; +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/sensor.cpp b/src/lib/ecl/test/sensor_simulator/sensor.cpp new file mode 100644 index 0000000000..dea0974b1b --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/sensor.cpp @@ -0,0 +1,33 @@ +#include "sensor.h" + +namespace sensor_simulator +{ + +Sensor::Sensor(std::shared_ptr ekf): _ekf{ekf} +{ +} + +Sensor::~Sensor() +{ +} + +void Sensor::update(uint64_t time) +{ + if(should_send(time)) + { + send(time); + _time_last_data_sent = time; + } +} + +bool Sensor::should_send(uint64_t time) const +{ + return _is_running && is_time_to_send(time); +} + +bool Sensor::is_time_to_send(uint64_t time) const +{ + return (time >= _time_last_data_sent) && ((time - _time_last_data_sent) >= _update_period); +} + +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/sensor.h b/src/lib/ecl/test/sensor_simulator/sensor.h new file mode 100644 index 0000000000..813287fb75 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/sensor.h @@ -0,0 +1,84 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Base class for defining the interface for simulaton of a sensor + * @author Kamil Ritz + */ + +#pragma once + +#include "EKF/ekf.h" +#include +#include + +namespace sensor_simulator +{ + +class Sensor +{ +public: + + Sensor(std::shared_ptr ekf); + virtual ~Sensor(); + + void update(uint64_t time); + + void setRateHz(uint32_t rate){ _update_period = uint32_t(1000000)/rate; } + + bool isRunning() const { return _is_running; } + + void start(){ _is_running = true; } + + void stop(){ _is_running = false; } + + bool should_send(uint64_t time) const; + +protected: + + std::shared_ptr _ekf; + // time in microseconds + uint32_t _update_period; + uint64_t _time_last_data_sent{0}; + + bool _is_running{false}; + + // Checks that the right amount time passed since last send data to fulfill rate + bool is_time_to_send(uint64_t time) const; + + // call set*Data function of Ekf + virtual void send(uint64_t time) = 0; + +}; + +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/sensor_simulator.cpp b/src/lib/ecl/test/sensor_simulator/sensor_simulator.cpp new file mode 100644 index 0000000000..fbb4c1ed4c --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/sensor_simulator.cpp @@ -0,0 +1,318 @@ +#include "sensor_simulator.h" + + +SensorSimulator::SensorSimulator(std::shared_ptr ekf): + _airspeed(ekf), + _baro(ekf), + _flow(ekf), + _gps(ekf), + _imu(ekf), + _mag(ekf), + _rng(ekf), + _vio(ekf), + _ekf{ekf} +{ + setSensorRateToDefault(); + setSensorDataToDefault(); + startBasicSensor(); +} + +SensorSimulator::~SensorSimulator() +{ + +} + +void SensorSimulator::loadSensorDataFromFile(std::string file_name) +{ + std::ifstream file(file_name); + std::string line; + + while (!file.eof()) { + std::string timestamp; + std::string sensor_type; + std::string sensor_data; + sensor_info sensor_sample; + + getline(file, timestamp, ','); + + if (!timestamp.compare("")){ // empty line at end of file + break; + } + sensor_sample.timestamp = std::stoul(timestamp); + + if(_replay_data.size() > 0) { + sensor_info last_sample = _replay_data.back(); + if (sensor_sample.timestamp < last_sample.timestamp) + { + std::cout << "Timestamps not sorted ascendingly" << std::endl; + exit(-1); + } + } + + getline(file, sensor_type, ','); + if (!sensor_type.compare("imu")) { + sensor_sample.sensor_type = sensor_info::IMU; + } else if (!sensor_type.compare("mag")) { + sensor_sample.sensor_type = sensor_info::MAG; + + } else if (!sensor_type.compare("baro")) { + sensor_sample.sensor_type = sensor_info::BARO; + + } else if (!sensor_type.compare("gps")) { + sensor_sample.sensor_type = sensor_info::GPS; + + } else if (!sensor_type.compare("airspeed")) { + sensor_sample.sensor_type = sensor_info::AIRSPEED; + + } else if (!sensor_type.compare("range")) { + sensor_sample.sensor_type = sensor_info::RANGE; + + } else if (!sensor_type.compare("flow")) { + sensor_sample.sensor_type = sensor_info::FLOW; + + } else if (!sensor_type.compare("vio")) { + sensor_sample.sensor_type = sensor_info::VISION; + + } else if (!sensor_type.compare("landed")) { + sensor_sample.sensor_type = sensor_info::LANDING_STATUS; + + } else { + std::cout << "Sensor type in file unknown" << std::endl; + exit(-1); + } + + getline(file, sensor_data); + std::stringstream ss(sensor_data); + int8_t i = 0; + while( ss.good() ) + { + if(i>=10){ + std::cout << "sensor data bigger than expected" << std::endl; + exit(-1); + } + std::string value_string; + getline( ss, value_string, ',' ); + if(!value_string.compare("")){ + continue; + } + sensor_sample.sensor_data[i] = std::stod(value_string); + i++; + } + _replay_data.emplace_back(sensor_sample); + } + file.close(); + _has_replay_data = true; +} + +void SensorSimulator::setSensorRateToDefault() +{ + _imu.setRateHz(200); + _mag.setRateHz(80); + _baro.setRateHz(80); + _gps.setRateHz(5); + _flow.setRateHz(50); + _rng.setRateHz(30); + _vio.setRateHz(30); + _airspeed.setRateHz(100); +} + +void SensorSimulator::setSensorDataToDefault() +{ + _airspeed.setData(0.0f, 0.0f); + _baro.setData(122.2f); + _flow.setData(_flow.dataAtRest()); + _gps.setData(_gps.getDefaultGpsData()); + _imu.setData(Vector3f{0.0f,0.0f,-CONSTANTS_ONE_G}, Vector3f{0.0f,0.0f,0.0f}); + _mag.setData(Vector3f{0.2f, 0.0f, 0.4f}); + _rng.setData(0.2f, 100); + _vio.setData(_vio.dataAtRest()); +} + +void SensorSimulator::startBasicSensor() +{ + _baro.start(); + _imu.start(); + _mag.start(); +} + +void SensorSimulator::runSeconds(float duration_seconds) +{ + runMicroseconds( uint32_t(duration_seconds * 1e6f) ); +} + +void SensorSimulator::runMicroseconds(uint32_t duration) +{ + // simulate in 1000us steps + const uint64_t start_time = _time; + + for(;_time < start_time + (uint64_t)duration; _time+=1000) + { + bool update_imu = _imu.should_send(_time); + updateSensors(); + + if (update_imu) { + // Update at IMU rate + _ekf->update(); + } + } +} + +void SensorSimulator::updateSensors() +{ + _imu.update(_time); + _mag.update(_time); + _baro.update(_time); + _gps.update(_time); + _flow.update(_time); + _rng.update(_time); + _vio.update(_time); + _airspeed.update(_time); +} + +void SensorSimulator::runReplaySeconds(float duration_seconds) +{ + runReplayMicroseconds( uint32_t(duration_seconds * 1e6f) ); +} + +void SensorSimulator::runReplayMicroseconds(uint32_t duration) +{ + if(!_has_replay_data) { + std::cout << "Can not run replay without replay data" << std::endl; + exit(-1); + } + // simulate in 1000us steps + const uint64_t start_time = _time; + + for(;_time < start_time + duration; _time+=1000) + { + setSensorDataFromReplayData(); + + bool update_imu = _imu.should_send(_time); + updateSensors(); + + if(update_imu) + { + _ekf->update(); + } + } +} + +void SensorSimulator::setSensorDataFromReplayData() +{ + if(_replay_data.size() > 0) { + sensor_info sample = _replay_data[_current_replay_data_index]; + while(sample.timestamp < _time) + { + setSingleReplaySample(sample); + if(_current_replay_data_index < _replay_data.size()) + { + _current_replay_data_index ++; + } else { + break; + } + sample = _replay_data[_current_replay_data_index]; + } + } else { + std::cerr << "Loaded replay data empty. Likely could not load replay data" << std::endl; + exit(-1); + } +} + +void SensorSimulator::setSingleReplaySample(const sensor_info& sample) +{ + if (sample.sensor_type == sensor_info::IMU) { + Vector3f accel{(float) sample.sensor_data[0], + (float) sample.sensor_data[1], + (float) sample.sensor_data[2]}; + Vector3f gyro{(float) sample.sensor_data[3], + (float) sample.sensor_data[4], + (float) sample.sensor_data[5]}; + _imu.setData(accel, gyro); + + } else if (sample.sensor_type == sensor_info::MAG) { + Vector3f mag{(float) sample.sensor_data[0], + (float) sample.sensor_data[1], + (float) sample.sensor_data[2]}; + _mag.setData(mag); + + } else if (sample.sensor_type == sensor_info::BARO) { + _baro.setData((float) sample.sensor_data[0]); + + } else if (sample.sensor_type == sensor_info::GPS) { + _gps.setAltitude((int32_t) sample.sensor_data[0]); + _gps.setLatitude((int32_t) sample.sensor_data[1]); + _gps.setLongitude((int32_t) sample.sensor_data[2]); + _gps.setVelocity(Vector3f((float) sample.sensor_data[3], + (float) sample.sensor_data[4], + (float) sample.sensor_data[5])); + + } else if (sample.sensor_type == sensor_info::AIRSPEED) { + _airspeed.setData((float) sample.sensor_data[0], (float) sample.sensor_data[1]); + + } else if (sample.sensor_type == sensor_info::RANGE) { + _rng.setData((float) sample.sensor_data[0], (float) sample.sensor_data[1]); + + } else if (sample.sensor_type == sensor_info::FLOW) { + flowSample flow_sample; + flow_sample.flow_xy_rad = Vector2f(sample.sensor_data[0], + sample.sensor_data[1]); + flow_sample.gyro_xyz = Vector3f(sample.sensor_data[2], + sample.sensor_data[3], + sample.sensor_data[4]); + flow_sample.quality = sample.sensor_data[5]; + _flow.setData(flow_sample); + + } else if (sample.sensor_type == sensor_info::VISION) { + // sensor not yet implemented + + // extVisionSample vision_sample; + // vision_sample.pos; + // vision_sample.quat; + // vision_sample.vel; + // _vio.setData((float) sample.sensor_data[0], (float) sample.sensor_data[1]); + + } else if (sample.sensor_type == sensor_info::LANDING_STATUS) { + bool landed = sample.sensor_data[0]; + _ekf->set_in_air_status(!landed); + + } else { + printf("Unknown sensor type, can not set replay sample"); + exit(-1); + } +} + +void SensorSimulator::setGpsLatitude(const double latitude) +{ + int32_t lat = static_cast(latitude * 1e7); + _gps.setLatitude(lat); +} + +void SensorSimulator::setGpsLongitude(const double longitude) +{ + int32_t lon = static_cast(longitude * 1e7); + _gps.setLongitude(lon); +} + +void SensorSimulator::setGpsAltitude(const float altitude) +{ + int32_t alt = static_cast(altitude * 1e3); + _gps.setAltitude(alt); +} + +void SensorSimulator::setImuBias(Vector3f accel_bias, Vector3f gyro_bias) +{ + _imu.setData(Vector3f{0.0f,0.0f,-CONSTANTS_ONE_G} + accel_bias, + Vector3f{0.0f,0.0f,0.0f} + gyro_bias); +} + +void SensorSimulator::simulateOrientation(Quatf orientation) +{ + const Vector3f world_sensed_gravity = {0.0f, 0.0f, -CONSTANTS_ONE_G}; + const Vector3f world_mag_field = Vector3f{0.2f, 0.0f, 0.4f}; + const Dcmf R_bodyToWorld(orientation); + const Vector3f sensed_gravity_body = R_bodyToWorld.transpose() * world_sensed_gravity; + const Vector3f body_mag_field = R_bodyToWorld.transpose() * world_mag_field; + + _imu.setData(sensed_gravity_body, Vector3f{0.0f,0.0f,0.0f}); + _mag.setData(body_mag_field); +} diff --git a/src/lib/ecl/test/sensor_simulator/sensor_simulator.h b/src/lib/ecl/test/sensor_simulator/sensor_simulator.h new file mode 100644 index 0000000000..37e1ed2be2 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/sensor_simulator.h @@ -0,0 +1,141 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * This class is providing methods to feed the ECL EKF with measurement. + * It takes a pointer to the Ekf object and will manipulate the object + * by call set*Data functions. + * It simulates the time to allow for sensor data being set at certain rate + * and also calls the update method of the EKF + * @author Kamil Ritz + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "imu.h" +#include "mag.h" +#include "baro.h" +#include "gps.h" +#include "flow.h" +#include "range_finder.h" +#include "vio.h" +#include "airspeed.h" +#include "EKF/ekf.h" + +using namespace sensor_simulator::sensor; + +struct sensor_info { + uint64_t timestamp {}; + enum measurement_t {IMU, MAG, BARO, GPS, AIRSPEED, RANGE, FLOW, VISION, LANDING_STATUS} sensor_type = IMU; + std::array sensor_data {}; +}; + +class SensorSimulator +{ + +public: + SensorSimulator(std::shared_ptr ekf); + ~SensorSimulator(); + + uint64_t getTime() const { return _time; }; + + void runSeconds(float duration_seconds); + void runMicroseconds(uint32_t duration); + + void runReplaySeconds(float duration_seconds); + void runReplayMicroseconds(uint32_t duration); + + void startBaro() { _baro.start(); } + void stopBaro() { _baro.stop(); } + + void startGps() { _gps.start(); } + void stopGps() { _gps.stop(); } + + void startFlow() { _flow.start(); } + void stopFlow() { _flow.stop(); } + + void startRangeFinder() { _rng.start(); } + void stopRangeFinder() { _rng.stop(); } + + void startExternalVision() { _vio.start(); } + void stopExternalVision() { _vio.stop(); } + + void startAirspeedSensor() { _airspeed.start(); } + void stopAirspeedSensor() { _airspeed.stop(); } + + void setGpsLatitude(const double latitude); + void setGpsLongitude(const double longitude); + void setGpsAltitude(const float altitude); + + void setImuBias(Vector3f accel_bias, Vector3f gyro_bias); + + void simulateOrientation(Quatf orientation); + + void loadSensorDataFromFile(std::string filename); + + Airspeed _airspeed; + Baro _baro; + Flow _flow; + Gps _gps; + Imu _imu; + Mag _mag; + RangeFinder _rng; + Vio _vio; + +protected: + +private: + void setSensorDataToDefault(); + void setSensorDataFromReplayData(); + void setSensorRateToDefault(); + void setSingleReplaySample(const sensor_info& sample); + void startBasicSensor(); + void updateSensors(); + + std::shared_ptr _ekf {nullptr}; + + std::vector _replay_data {}; + + bool _has_replay_data {false}; + + uint64_t _current_replay_data_index {0}; + uint64_t _time {0}; // microseconds + +}; diff --git a/src/lib/ecl/test/sensor_simulator/vio.cpp b/src/lib/ecl/test/sensor_simulator/vio.cpp new file mode 100644 index 0000000000..cf8fd52e34 --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/vio.cpp @@ -0,0 +1,86 @@ +#include "vio.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +Vio::Vio(std::shared_ptr ekf):Sensor(ekf) +{ +} + +Vio::~Vio() +{ +} + +void Vio::send(uint64_t time) +{ + _vio_data.time_us = time; + _ekf->setExtVisionData(_vio_data); +} + +void Vio::setData(const extVisionSample& vio_data) +{ + _vio_data = vio_data; +} + +void Vio::setVelocityVariance(const Vector3f& velVar) +{ + setVelocityCovariance(matrix::diag(velVar)); +} + +void Vio::setVelocityCovariance(const Matrix3f& velCov) +{ + _vio_data.velCov = velCov; +} + +void Vio::setPositionVariance(const Vector3f& posVar) +{ + _vio_data.posVar = posVar; +} + +void Vio::setAngularVariance(float angVar) +{ + _vio_data.angVar = angVar; +} + +void Vio::setVelocity(const Vector3f& vel) +{ + _vio_data.vel = vel; +} + +void Vio::setPosition(const Vector3f& pos) +{ + _vio_data.pos = pos; +} + +void Vio::setOrientation(const Quatf& quat) +{ + _vio_data.quat = quat; +} + +void Vio::setVelocityFrameToBody() +{ + _vio_data.vel_frame = velocity_frame_t::BODY_FRAME_FRD; +} + +void Vio::setVelocityFrameToLocal() +{ + _vio_data.vel_frame = velocity_frame_t::LOCAL_FRAME_FRD; +} + +extVisionSample Vio::dataAtRest() +{ + extVisionSample vio_data; + vio_data.pos = Vector3f{0.0f, 0.0f, 0.0f};; + vio_data.vel = Vector3f{0.0f, 0.0f, 0.0f};; + vio_data.quat = Quatf{1.0f, 0.0f, 0.0f, 0.0f}; + vio_data.posVar = Vector3f{0.1f, 0.1f, 0.1f}; + vio_data.velCov = matrix::eye() * 0.1f; + vio_data.angVar = 0.05f; + vio_data.vel_frame = velocity_frame_t::LOCAL_FRAME_FRD; + return vio_data; +} + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/sensor_simulator/vio.h b/src/lib/ecl/test/sensor_simulator/vio.h new file mode 100644 index 0000000000..bcae46d4eb --- /dev/null +++ b/src/lib/ecl/test/sensor_simulator/vio.h @@ -0,0 +1,74 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Feeds Ekf external vision data + * @author Kamil Ritz + */ +#pragma once + +#include "sensor.h" + +namespace sensor_simulator +{ +namespace sensor +{ + +class Vio: public Sensor +{ +public: + Vio(std::shared_ptr ekf); + ~Vio(); + + void setData(const extVisionSample& vio_data); + void setVelocityVariance(const Vector3f& velVar); + void setVelocityCovariance(const Matrix3f& velCov); + void setPositionVariance(const Vector3f& posVar); + void setAngularVariance(float angVar); + void setVelocity(const Vector3f& vel); + void setPosition(const Vector3f& pos); + void setOrientation(const Quatf& quat); + void setVelocityFrameToLocal(); + void setVelocityFrameToBody(); + + extVisionSample dataAtRest(); + +private: + extVisionSample _vio_data; + + void send(uint64_t time) override; + +}; + +} // namespace sensor +} // namespace sensor_simulator diff --git a/src/lib/ecl/test/test_AlphaFilter.cpp b/src/lib/ecl/test/test_AlphaFilter.cpp new file mode 100644 index 0000000000..06c23299d3 --- /dev/null +++ b/src/lib/ecl/test/test_AlphaFilter.cpp @@ -0,0 +1,260 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file test_AlphaFilter.cpp + * + * @brief Unit tests for the alpha filter class + */ + +#include +#include +#include + +#include "AlphaFilter/AlphaFilter.hpp" + +using matrix::Vector3f; + +TEST(AlphaFilterTest, initializeToZero) +{ + AlphaFilter filter_float{}; + ASSERT_EQ(filter_float.getState(), 0.f); +} + +TEST(AlphaFilterTest, resetToValue) +{ + AlphaFilter filter_float{}; + const float reset_value = 42.42f; + filter_float.reset(reset_value); + ASSERT_EQ(filter_float.getState(), reset_value); +} + +TEST(AlphaFilterTest, runZero) +{ + AlphaFilter filter_float{}; + const float input = 0.f; + for (int i = 0; i < 10; i++) { + filter_float.update(input); + } + ASSERT_EQ(filter_float.getState(), input); +} + +TEST(AlphaFilterTest, runPositive) +{ + // GIVEN an input of 1 in a filter with a default time constant of 9 (alpha = 0.9) + AlphaFilter filter_float{}; + const float input = 1.f; + filter_float.setAlpha(.1f); + + // WHEN we run the filter 9 times + for (int i = 0; i < 9; i++) { + filter_float.update(input); + } + + // THEN the state of the filter should have reached 63% + ASSERT_NEAR(filter_float.getState(), 0.63f, 0.02); +} + +TEST(AlphaFilterTest, runNegative) +{ + // GIVEN an input of 1 in a filter with a default time constant of 9 (alpha = 0.9) + AlphaFilter filter_float{}; + const float input = -1.f; + filter_float.setAlpha(.1f); + + // WHEN we run the filter 9 times + for (int i = 0; i < 9; i++) { + filter_float.update(input); + } + + // THEN the state of the filter should have reached 63% + ASSERT_NEAR(filter_float.getState(), -0.63f, 0.02); +} + +TEST(AlphaFilterTest, riseTime) +{ + // GIVEN an input of 1 in a filter with a default time constant of 9 (alpha = 0.9) + AlphaFilter filter_float{}; + const float input = 1.f; + filter_float.setAlpha(.1f); + + // WHEN we run the filter 27 times (3 * time constant) + for (int i = 0; i < 3 * 9; i++) { + filter_float.update(input); + } + + // THEN the state of the filter should have reached 95% + ASSERT_NEAR(filter_float.getState(), 0.95f, 0.02f); +} + +TEST(AlphaFilterTest, convergence) +{ + // GIVEN an input of 1 in a filter with a default time constant of 9 (alpha = 0.9) + AlphaFilter filter_float{}; + const float input = 1.f; + filter_float.setAlpha(.1f); + + // WHEN we run the filter 45 times (5 * time constant) + for (int i = 0; i < 5 * 9; i++) { + filter_float.update(input); + } + + // THEN the state of the filter should have converged to the input + ASSERT_NEAR(filter_float.getState(), 1.f, 0.01f); +} + +TEST(AlphaFilterTest, convergenceVector3f) +{ + // GIVEN an Vector3f input in a filter with a default time constant of 9 (alpha = 0.9) + AlphaFilter filter_v3{}; + const Vector3f input = {3.f, 7.f, -11.f}; + filter_v3.setAlpha(.1f); + + // WHEN we run the filter 45 times (5 * time constant) + for (int i = 0; i < 5 * 9; i++) { + filter_v3.update(input); + } + + // THEN the state of the filter should have converged to the input (1% error allowed) + Vector3f output = filter_v3.getState(); + for (int i = 0; i < 3; i++) { + ASSERT_NEAR(output(i), input(i), fabsf(0.01f * input(i))); + } +} + +TEST(AlphaFilterTest, convergenceVector3fAlpha) +{ + // GIVEN a Vector3f input in a filter with a defined time constant and the default sampling time + AlphaFilter filter_v3{}; + const Vector3f input = {3.f, 7.f, -11.f}; + const float tau = 18.f; + const float dt = 1.f; + filter_v3.setParameters(dt, tau); + + // WHEN we run the filter 18 times (1 * time constant) + for (int i = 0; i < 18; i++) { + filter_v3.update(input); // dt is assumed equal to 1 + } + + // THEN the state of the filter should have reached 65% (2% error allowed) + Vector3f output = filter_v3.getState(); + for (int i = 0; i < 3; i++) { + ASSERT_NEAR(output(i), 0.63f * input(i), fabsf(0.02f * input(i))); + } +} + +TEST(AlphaFilterTest, convergenceVector3fTauDt) +{ + // GIVEN a Vector3f input in a filter with a defined time constant and sampling time + AlphaFilter filter_v3{}; + const Vector3f input = {51.f, 7.f, -11.f}; + const float tau = 2.f; + const float dt = 0.1f; + filter_v3.setParameters(dt, tau); + + // WHEN we run the filter (1 * time constant) + const float n = tau / dt; + for (int i = 0; i < n; i++) { + filter_v3.update(input); + } + + // THEN the state of the filter should have reached 65% (2% error allowed) + Vector3f output = filter_v3.getState(); + for (int i = 0; i < 3; i++) { + ASSERT_NEAR(output(i), 0.63f * input(i), fabsf(0.02f * input(i))); + } + + // ALSO when the filter is reset to a specified value + const Vector3f reset_vector = {-1.f, 71.f, -42.f}; + filter_v3.reset(reset_vector); + output = filter_v3.getState(); + + // THEN the filter should exactly contain those values + for (int i = 0; i < 3; i++) { + ASSERT_EQ(output(i), reset_vector(i)); + } +} + +TEST(AlphaFilterTest, AllZeroTest) +{ + AlphaFilter _alpha_filter; + _alpha_filter.update(0.f); + EXPECT_FLOAT_EQ(_alpha_filter.getState(), 0.f); +} + +TEST(AlphaFilterTest, AlphaOneTest) +{ + AlphaFilter _alpha_filter; + _alpha_filter.setParameters(1e-5f, 1e5f); + + for (int i = 0; i < 100; i++) { + _alpha_filter.update(1.f); + EXPECT_NEAR(_alpha_filter.getState(), 0.f, 1e-4f); + } +} + +TEST(AlphaFilterTest, AlphaZeroTest) +{ + AlphaFilter _alpha_filter; + _alpha_filter.setParameters(.1f, 0.f); + + for (int i = 0; i < 100; i++) { + const float new_smaple = static_cast(i); + _alpha_filter.update(new_smaple); + EXPECT_FLOAT_EQ(_alpha_filter.getState(), new_smaple); + } +} + +TEST(AlphaFilterTest, ConvergenceTest) +{ + AlphaFilter _alpha_filter; + _alpha_filter.setParameters(.1f, 1.f); + + float last_value{0.f}; + + for (int i = 0; i < 100; i++) { + _alpha_filter.update(1.f); + EXPECT_GE(_alpha_filter.getState(), last_value); + last_value = _alpha_filter.getState(); + } + + EXPECT_NEAR(last_value, 1.f, 1e-4f); + + for (int i = 0; i < 1000; i++) { + _alpha_filter.update(-100.f); + EXPECT_LE(_alpha_filter.getState(), last_value); + last_value = _alpha_filter.getState(); + } + + EXPECT_NEAR(last_value, -100.f, 1e-4f); +} diff --git a/src/lib/ecl/test/test_EKF_airspeed.cpp b/src/lib/ecl/test/test_EKF_airspeed.cpp new file mode 100644 index 0000000000..6be558d839 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_airspeed.cpp @@ -0,0 +1,118 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the fusion of airspeed data + * @author Kamil Ritz + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" + + +class EkfAirspeedTest : public ::testing::Test { + public: + + EkfAirspeedTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf), + _quat_sim(Eulerf(0.0f, 0.0f, math::radians(45.0f))) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + const Quatf _quat_sim; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + _sensor_simulator.simulateOrientation(_quat_sim); + _sensor_simulator.runSeconds(7); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } +}; + +TEST_F(EkfAirspeedTest, testWindVelocityEstimation) +{ + + const Vector3f simulated_velocity_earth(0.0f,1.5f,0.0f); + const Vector2f airspeed_body(0.4f, 0.0f); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator._vio.setVelocity(simulated_velocity_earth); + _sensor_simulator.startExternalVision(); + + _ekf->set_in_air_status(true); + _sensor_simulator.startAirspeedSensor(); + _sensor_simulator._airspeed.setData(airspeed_body(0), airspeed_body(0)); + + // Wind estimation is rather slow + _sensor_simulator.runSeconds(15); + + EXPECT_TRUE(_ekf_wrapper.isWindVelocityEstimated()); + + const Vector3f vel = _ekf->getVelocity(); + const Vector2f vel_wind_earth = _ekf->getWindVelocity(); + const float height_before_pressure_correction = _ekf->getPosition()(2); + + const Dcmf R_to_earth_sim(_quat_sim); + EXPECT_TRUE(matrix::isEqual(vel, simulated_velocity_earth)); + const Vector3f vel_wind_expected = simulated_velocity_earth - R_to_earth_sim * (Vector3f(airspeed_body(0), airspeed_body(1), 0.0f)); + EXPECT_TRUE(matrix::isEqual(vel_wind_earth, Vector2f(vel_wind_expected.slice<2,1>(0,0)))); + EXPECT_NEAR(height_before_pressure_correction, 0.0f, 1e-5f); + + // Apply height correction + const float static_pressure_coef_xp = 1.0f; + const float static_pressure_coef_yp = -1.0f; // not used as wind direction is along x axis + parameters* _params = _ekf->getParamHandle(); + _params->static_pressure_coef_xp = static_pressure_coef_xp; + _params->static_pressure_coef_yp = static_pressure_coef_yp; + float expected_height_difference = 0.5f * static_pressure_coef_xp * airspeed_body(0) * airspeed_body(0) / CONSTANTS_ONE_G; + + _sensor_simulator.runSeconds(20); + + const float height_after_pressure_correction = _ekf->getPosition()(2); + // height increase means that state z decrease due to z axis pointing down + const float expected_height_after_pressure_correction = height_before_pressure_correction - + expected_height_difference; + + EXPECT_NEAR(height_after_pressure_correction, expected_height_after_pressure_correction, 1e-3f); + +} diff --git a/src/lib/ecl/test/test_EKF_basics.cpp b/src/lib/ecl/test/test_EKF_basics.cpp new file mode 100644 index 0000000000..fce4bf1c4f --- /dev/null +++ b/src/lib/ecl/test/test_EKF_basics.cpp @@ -0,0 +1,288 @@ +/**************************************************************************** + * + * Copyright (c) 2019-2020 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" + +class EkfBasicsTest : public ::testing::Test { + public: + EkfBasicsTest(): + ::testing::Test(), + _ekf{std::make_shared()}, + _ekf_wrapper(_ekf) , + _sensor_simulator(_ekf) + { + }; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + _sensor_simulator.runSeconds(_init_duration_s); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } + + std::shared_ptr _ekf {nullptr}; + EkfWrapper _ekf_wrapper; + SensorSimulator _sensor_simulator; + + // Duration of initalization with only providing baro,mag and IMU + const uint32_t _init_duration_s{4}; + +protected: + double _latitude {0.0}; + double _longitude {0.0}; + float _altitude {0.f}; + + double _latitude_new {0.0}; + double _longitude_new {0.0}; + float _altitude_new {0.f}; + + uint64_t _origin_time = 0; + +private: + +}; + + +TEST_F(EkfBasicsTest, tiltAlign) +{ + // GIVEN: reasonable static sensor data for some duration + // THEN: EKF should tilt align + EXPECT_TRUE(_ekf->attitude_valid()); +} + +TEST_F(EkfBasicsTest, initialControlMode) +{ + // GIVEN: reasonable static sensor data for some duration + // THEN: EKF control status should be reasonable + EXPECT_EQ(1, (int) _ekf->control_status_flags().tilt_align); + EXPECT_EQ(1, (int) _ekf->control_status_flags().yaw_align); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gps); + EXPECT_EQ(0, (int) _ekf->control_status_flags().opt_flow); + EXPECT_EQ(1, (int) _ekf->control_status_flags().mag_hdg); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_3D); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_dec); + EXPECT_EQ(0, (int) _ekf->control_status_flags().in_air); + EXPECT_EQ(0, (int) _ekf->control_status_flags().wind); + EXPECT_EQ(1, (int) _ekf->control_status_flags().baro_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().rng_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gps_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_pos); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_yaw); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().fuse_beta); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_field_disturbed); + EXPECT_EQ(0, (int) _ekf->control_status_flags().fixed_wing); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_fault); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gnd_effect); + EXPECT_EQ(0, (int) _ekf->control_status_flags().rng_stuck); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gps_yaw); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_aligned_in_flight); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_vel); + EXPECT_EQ(0, (int) _ekf->control_status_flags().synthetic_mag_z); +} + +TEST_F(EkfBasicsTest, convergesToZero) +{ + // GIVEN: initialized EKF with default IMU, baro and mag input + _sensor_simulator.runSeconds(4); + + const Vector3f pos = _ekf->getPosition(); + const Vector3f vel = _ekf->getVelocity(); + const Vector3f accel_bias = _ekf->getAccelBias(); + const Vector3f gyro_bias = _ekf->getGyroBias(); + const Vector3f ref{0.0f, 0.0f, 0.0f}; + + // THEN: EKF should stay or converge to zero + EXPECT_TRUE(matrix::isEqual(pos, ref, 0.001f)); + EXPECT_TRUE(matrix::isEqual(vel, ref, 0.001f)); + EXPECT_TRUE(matrix::isEqual(accel_bias, ref, 0.001f)); + EXPECT_TRUE(matrix::isEqual(gyro_bias, ref, 0.001f)); +} + +TEST_F(EkfBasicsTest, gpsFusion) +{ + // GIVEN: initialized EKF with default IMU, baro and mag input for + // WHEN: setting GPS measurements for 11s, minimum GPS health time is set to 10 sec + + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(11); + + // THEN: EKF should fuse GPS, but no other position sensor + EXPECT_EQ(1, (int) _ekf->control_status_flags().tilt_align); + EXPECT_EQ(1, (int) _ekf->control_status_flags().yaw_align); + EXPECT_EQ(1, (int) _ekf->control_status_flags().gps); + EXPECT_EQ(0, (int) _ekf->control_status_flags().opt_flow); + EXPECT_EQ(1, (int) _ekf->control_status_flags().mag_hdg); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_3D); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_dec); + EXPECT_EQ(0, (int) _ekf->control_status_flags().in_air); + EXPECT_EQ(0, (int) _ekf->control_status_flags().wind); + EXPECT_EQ(1, (int) _ekf->control_status_flags().baro_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().rng_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gps_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_pos); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_yaw); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_hgt); + EXPECT_EQ(0, (int) _ekf->control_status_flags().fuse_beta); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_field_disturbed); + EXPECT_EQ(0, (int) _ekf->control_status_flags().fixed_wing); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_fault); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gnd_effect); + EXPECT_EQ(0, (int) _ekf->control_status_flags().rng_stuck); + EXPECT_EQ(0, (int) _ekf->control_status_flags().gps_yaw); + EXPECT_EQ(0, (int) _ekf->control_status_flags().mag_aligned_in_flight); + EXPECT_EQ(0, (int) _ekf->control_status_flags().ev_vel); + EXPECT_EQ(0, (int) _ekf->control_status_flags().synthetic_mag_z); +} + +TEST_F(EkfBasicsTest, accelBiasEstimation) +{ + // GIVEN: initialized EKF with default IMU, baro and mag input + // WHEN: Added more sensor measurements with accel bias and gps measurements + const Vector3f accel_bias_sim = {0.0f,0.0f,0.1f}; + + _sensor_simulator.startGps(); + _sensor_simulator.setImuBias(accel_bias_sim, Vector3f(0.0f,0.0f,0.0f)); + _ekf->set_min_required_gps_health_time(1e6); + _sensor_simulator.runSeconds(30); + + const Vector3f pos = _ekf->getPosition(); + const Vector3f vel = _ekf->getVelocity(); + const Vector3f accel_bias = _ekf->getAccelBias(); + const Vector3f gyro_bias = _ekf->getGyroBias(); + const Vector3f zero = {0.0f, 0.0f, 0.0f}; + + // THEN: EKF should stay or converge to zero + EXPECT_TRUE(matrix::isEqual(pos, zero, 0.05f)) + << "pos = " << pos(0) << ", " << pos(1) << ", " << pos(2); + EXPECT_TRUE(matrix::isEqual(vel, zero, 0.02f)) + << "vel = " << vel(0) << ", " << vel(1) << ", " << vel(2); + EXPECT_TRUE(matrix::isEqual(accel_bias, accel_bias_sim, 0.01f)) + << "accel_bias = " << accel_bias(0) << ", " << accel_bias(1) << ", " << accel_bias(2); + EXPECT_TRUE(matrix::isEqual(gyro_bias, zero, 0.001f)) + << "gyro_bias = " << gyro_bias(0) << ", " << gyro_bias(1) << ", " << gyro_bias(2); +} + +TEST_F(EkfBasicsTest, reset_ekf_global_origin_gps_initialized) +{ + _latitude_new = 15.0000005; + _longitude_new = 115.0000005; + _altitude_new = 100.0; + + _sensor_simulator.startGps(); + _ekf->set_min_required_gps_health_time(1e6); + _sensor_simulator.runSeconds(1); + + _sensor_simulator.setGpsLatitude(_latitude_new); + _sensor_simulator.setGpsLongitude(_longitude_new); + _sensor_simulator.setGpsAltitude(_altitude_new); + _sensor_simulator.runSeconds(2); + + _ekf->getEkfGlobalOrigin(_origin_time, _latitude, _longitude, _altitude); + + EXPECT_DOUBLE_EQ(_latitude, _latitude_new); + EXPECT_DOUBLE_EQ(_longitude, _longitude_new); + EXPECT_NEAR(_altitude, _altitude_new, 0.01f); + + _latitude_new = -15.0000005; + _longitude_new = -115.0000005; + _altitude_new = 1500.0; + + _ekf->setEkfGlobalOrigin(_latitude_new, _longitude_new, _altitude_new); + _ekf->getEkfGlobalOrigin(_origin_time, _latitude, _longitude, _altitude); + + EXPECT_DOUBLE_EQ(_latitude, _latitude_new); + EXPECT_DOUBLE_EQ(_longitude, _longitude_new); + EXPECT_FLOAT_EQ(_altitude, _altitude_new); + + float hpos = 0.f; + float vpos = 0.f; + float hvel = 0.f; + float vvel = 0.f; + + // After the change of origin, the pos and vel innovations should stay small + _ekf->getGpsVelPosInnovRatio(hvel, vvel, hpos, vpos); + + EXPECT_NEAR(hpos, 0.f, 0.05f); + EXPECT_NEAR(vpos, 0.f, 0.05f); + + EXPECT_NEAR(hvel, 0.f, 0.02f); + EXPECT_NEAR(vvel, 0.f, 0.02f); +} + +TEST_F(EkfBasicsTest, reset_ekf_global_origin_gps_uninitialized) +{ + _ekf->getEkfGlobalOrigin(_origin_time, _latitude_new, _longitude_new, _altitude_new); + + EXPECT_DOUBLE_EQ(_latitude, _latitude_new); + EXPECT_DOUBLE_EQ(_longitude, _longitude_new); + EXPECT_FLOAT_EQ(_altitude, _altitude_new); + + _latitude_new = 45.0000005; + _longitude_new = 111.0000005; + _altitude_new = 1500.0; + + _ekf->setEkfGlobalOrigin(_latitude_new, _longitude_new, _altitude_new); + _ekf->getEkfGlobalOrigin(_origin_time, _latitude, _longitude, _altitude); + + EXPECT_DOUBLE_EQ(_latitude, _latitude_new); + EXPECT_DOUBLE_EQ(_longitude, _longitude_new); + EXPECT_FLOAT_EQ(_altitude, _altitude_new); + + float hpos = 0.f; + float vpos = 0.f; + float hvel = 0.f; + float vvel = 0.f; + + // After the change of origin, the pos and vel innovations should stay small + _ekf->getGpsVelPosInnovRatio(hvel, vvel, hpos, vpos); + + EXPECT_NEAR(hpos, 0.f, 0.05f); + EXPECT_NEAR(vpos, 0.f, 0.05f); + + EXPECT_NEAR(hvel, 0.f, 0.02f); + EXPECT_NEAR(vvel, 0.f, 0.02f); +} + +// TODO: Add sampling tests diff --git a/src/lib/ecl/test/test_EKF_externalVision.cpp b/src/lib/ecl/test/test_EKF_externalVision.cpp new file mode 100644 index 0000000000..a1c5e7c9b8 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_externalVision.cpp @@ -0,0 +1,365 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the external vision functionality + * @author Kamil Ritz + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" +#include "test_helper/reset_logging_checker.h" + + +class EkfExternalVisionTest : public ::testing::Test { + public: + + EkfExternalVisionTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + static constexpr float _tilt_align_time = 7.f; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } +}; + +TEST_F(EkfExternalVisionTest, checkVisionFusionLogic) +{ + _sensor_simulator.runSeconds(_tilt_align_time); // Let the tilt align + _ekf_wrapper.enableExternalVisionPositionFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(2); + + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.runSeconds(2); + + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + _ekf_wrapper.enableExternalVisionHeadingFusion(); + _sensor_simulator.runSeconds(2); + + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); +} + +TEST_F(EkfExternalVisionTest, visionVelocityReset) +{ + _sensor_simulator.runSeconds(_tilt_align_time); + ResetLoggingChecker reset_logging_checker(_ekf); + reset_logging_checker.capturePreResetState(); + + const Vector3f simulated_velocity(0.3f, -1.0f, 0.4f); + + _sensor_simulator._vio.setVelocity(simulated_velocity); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + // Note: test duration needs to allow time for tilt alignment to complete + _sensor_simulator.runMicroseconds(2e5); + + // THEN: a reset to Vision velocity should be done + // Note: velocity will drift after reset due to INAV errors so the tolerance needs to allow for this + const Vector3f estimated_velocity = _ekf->getVelocity(); + EXPECT_TRUE(isEqual(estimated_velocity, simulated_velocity, 0.01f)); + + // AND: the reset in velocity should be saved correctly + reset_logging_checker.capturePostResetState(); + EXPECT_TRUE(reset_logging_checker.isHorizontalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVerticalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVelocityDeltaLoggedCorrectly(0.01f)); +} + +TEST_F(EkfExternalVisionTest, visionVelocityResetWithAlignment) +{ + _sensor_simulator.runSeconds(_tilt_align_time); + ResetLoggingChecker reset_logging_checker(_ekf); + reset_logging_checker.capturePreResetState(); + // GIVEN: Drone is pointing north, and we use mag (ROTATE_EV) + // Heading of drone in EKF frame is 0° + + // WHEN: Vision frame is rotate +90°. The reported heading is -90° + Quatf vision_to_ekf(Eulerf(0.0f,0.0f,math::radians(-90.0f))); + _sensor_simulator._vio.setOrientation(vision_to_ekf.inversed()); + _ekf_wrapper.enableExternalVisionAlignment(); + + const Vector3f simulated_velocity_in_vision_frame(0.3f, -1.0f, 0.4f); + const Vector3f simulated_velocity_in_ekf_frame = + Dcmf(vision_to_ekf) * simulated_velocity_in_vision_frame; + _sensor_simulator._vio.setVelocity(simulated_velocity_in_vision_frame); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runMicroseconds(2e5); + + // THEN: a reset to Vision velocity should be done + const Vector3f estimated_velocity_in_ekf_frame = _ekf->getVelocity(); + EXPECT_TRUE(isEqual(estimated_velocity_in_ekf_frame, simulated_velocity_in_ekf_frame, 0.01f)); + // And: the frame offset should be estimated correctly + Quatf estimatedExternalVisionFrameOffset = _ekf->getVisionAlignmentQuaternion(); + EXPECT_TRUE(matrix::isEqual(vision_to_ekf.canonical(), + estimatedExternalVisionFrameOffset.canonical())); + + // AND: the reset in velocity should be saved correctly + reset_logging_checker.capturePostResetState(); + EXPECT_TRUE(reset_logging_checker.isHorizontalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVerticalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVelocityDeltaLoggedCorrectly(0.01f)); +} + +TEST_F(EkfExternalVisionTest, visionHorizontalPositionReset) +{ + _sensor_simulator.runSeconds(_tilt_align_time); + const Vector3f simulated_position(8.3f, -1.0f, 0.0f); + + _sensor_simulator._vio.setPosition(simulated_position); + _ekf_wrapper.enableExternalVisionPositionFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runMicroseconds(2e5); + + // THEN: a reset to Vision velocity should be done + const Vector3f estimated_position = _ekf->getPosition(); + EXPECT_TRUE(isEqual(estimated_position, simulated_position, 1e-5f)); +} + +TEST_F(EkfExternalVisionTest, visionHorizontalPositionResetWithAlignment) +{ + _sensor_simulator.runSeconds(_tilt_align_time); + // GIVEN: Drone is pointing north, and we use mag (ROTATE_EV) + // Heading of drone in EKF frame is 0° + + // WHEN: Vision frame is rotate +90°. The reported heading is -90° + Quatf vision_to_ekf(Eulerf(0.0f,0.0f,math::radians(-90.0f))); + _sensor_simulator._vio.setOrientation(vision_to_ekf.inversed()); + _ekf_wrapper.enableExternalVisionAlignment(); + + const Vector3f simulated_position_in_vision_frame(8.3f, -1.0f, 0.0f); + const Vector3f simulated_position_in_ekf_frame = + Dcmf(vision_to_ekf) * simulated_position_in_vision_frame; + _sensor_simulator._vio.setPosition(simulated_position_in_vision_frame); + _ekf_wrapper.enableExternalVisionPositionFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runMicroseconds(2e5); + + // THEN: a reset to Vision velocity should be done + const Vector3f estimated_position_in_ekf_frame = _ekf->getPosition(); + EXPECT_TRUE(isEqual(estimated_position_in_ekf_frame, simulated_position_in_ekf_frame, 1e-2f)); +} + + +TEST_F(EkfExternalVisionTest, visionVarianceCheck) +{ + _sensor_simulator.runSeconds(_tilt_align_time); + const Vector3f velVar_init = _ekf->getVelocityVariance(); + EXPECT_NEAR(velVar_init(0), velVar_init(1), 0.0001); + + _sensor_simulator._vio.setVelocityVariance(Vector3f{2.0f,0.01f,0.01f}); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + const Vector3f velVar_new = _ekf->getVelocityVariance(); + EXPECT_TRUE(velVar_new(0) > velVar_new(1)); +} + +TEST_F(EkfExternalVisionTest, visionAlignment) +{ + _sensor_simulator.runSeconds(_tilt_align_time); + // GIVEN: Drone is pointing north, and we use mag (ROTATE_EV) + // Heading of drone in EKF frame is 0° + + // WHEN: Vision frame is rotate +90°. The reported heading is -90° + Quatf externalVisionFrameOffset(Eulerf(0.0f,0.0f,math::radians(90.0f))); + _sensor_simulator._vio.setOrientation(externalVisionFrameOffset.inversed()); + _ekf_wrapper.enableExternalVisionAlignment(); + + // Simulate high uncertainty on vision x axis which is in this case + // the y EKF frame axis + _sensor_simulator._vio.setVelocityVariance(Vector3f{2.0f,0.01f,0.01f}); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + + const Vector3f velVar_init = _ekf->getVelocityVariance(); + EXPECT_NEAR(velVar_init(0), velVar_init(1), 0.0001); + + _sensor_simulator.runSeconds(4); + + // THEN: velocity uncertainty in y should be bigger + const Vector3f velVar_new = _ekf->getVelocityVariance(); + EXPECT_TRUE(velVar_new(1) > velVar_new(0)); + + // THEN: the frame offset should be estimated correctly + Quatf estimatedExternalVisionFrameOffset = _ekf->getVisionAlignmentQuaternion(); + EXPECT_TRUE(matrix::isEqual(externalVisionFrameOffset.canonical(), + estimatedExternalVisionFrameOffset.canonical())); +} + +TEST_F(EkfExternalVisionTest, velocityFrameBody) +{ + // GIVEN: Drone is turned 90 degrees + const Quatf quat_sim(Eulerf(0.0f, 0.0f, math::radians(90.0f))); + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_tilt_align_time); + + // Without any measurement x and y velocity variance are close + const Vector3f velVar_init = _ekf->getVelocityVariance(); + EXPECT_NEAR(velVar_init(0), velVar_init(1), 0.0001); + + // WHEN: measurement is given in BODY-FRAME and + // x variance is bigger than y variance + _sensor_simulator._vio.setVelocityFrameToBody(); + float vel_cov_data [9] = {2.0f, 0.0f, 0.0f, + 0.0f, 0.01f, 0.0f, + 0.0f, 0.0f, 0.01f}; + const Matrix3f vel_cov_body(vel_cov_data); + const Vector3f vel_body(1.0f, 0.0f, 0.0f); + _sensor_simulator._vio.setVelocityCovariance(vel_cov_body); + _sensor_simulator._vio.setVelocity(vel_body); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + // THEN: As the drone is turned 90 degrees, velocity variance + // along local y axis is expected to be bigger + const Vector3f velVar_new = _ekf->getVelocityVariance(); + EXPECT_NEAR(velVar_new(1) / velVar_new(0), 80.f, 15.f); + + const Vector3f vel_earth_est = _ekf->getVelocity(); + EXPECT_NEAR(vel_earth_est(0), 0.0f, 0.1f); + EXPECT_NEAR(vel_earth_est(1), 1.0f, 0.1f); +} + +TEST_F(EkfExternalVisionTest, velocityFrameLocal) +{ + // GIVEN: Drone is turned 90 degrees + const Quatf quat_sim(Eulerf(0.0f, 0.0f, math::radians(90.0f))); + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_tilt_align_time); + + // Without any measurement x and y velocity variance are close + const Vector3f velVar_init = _ekf->getVelocityVariance(); + EXPECT_NEAR(velVar_init(0), velVar_init(1), 0.0001); + + // WHEN: measurement is given in LOCAL-FRAME and + // x variance is bigger than y variance + _sensor_simulator._vio.setVelocityFrameToLocal(); + float vel_cov_data [9] = {2.0f, 0.0f, 0.0f, + 0.0f, 0.01f, 0.0f, + 0.0f, 0.0f, 0.01f}; + const Matrix3f vel_cov_earth(vel_cov_data); + const Vector3f vel_earth(1.0f, 0.0f, 0.0f); + _sensor_simulator._vio.setVelocityCovariance(vel_cov_earth); + _sensor_simulator._vio.setVelocity(vel_earth); + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + // THEN: Independently on drones heading, velocity variance + // along local x axis is expected to be bigger + const Vector3f velVar_new = _ekf->getVelocityVariance(); + EXPECT_NEAR(velVar_new(0) / velVar_new(1), 80.f, 15.f); + + const Vector3f vel_earth_est = _ekf->getVelocity(); + EXPECT_NEAR(vel_earth_est(0), 1.0f, 0.1f); + EXPECT_NEAR(vel_earth_est(1), 0.0f, 0.1f); +} + +TEST_F(EkfExternalVisionTest, positionFrameLocal) +{ + // GIVEN: Drone is turned 90 degrees + const Quatf quat_sim(Eulerf(0.0f, 0.0f, math::radians(90.0f))); + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_tilt_align_time); + + // WHEN: using EV yaw fusion and rotate EV is set + Quatf vision_to_ekf(Eulerf(0.0f, 0.0f, 0.f)); + _sensor_simulator._vio.setOrientation(vision_to_ekf.inversed()); + _ekf_wrapper.enableExternalVisionAlignment(); // ROTATE_EV + _ekf_wrapper.enableExternalVisionHeadingFusion(); // EV_YAW + + // AND WHEN: using EV position aiding + const Vector3f pos_var_earth(0.01f, 0.01f, 0.01f); + Vector3f pos_earth(0.0f, 0.0f, 0.0f); + _sensor_simulator._vio.setPositionVariance(pos_var_earth); + _sensor_simulator._vio.setPosition(pos_earth); + _ekf_wrapper.enableExternalVisionPositionFusion(); // EV_POS + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + // THEN: the fusions should start and the position should not drift + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + Vector3f pos_earth_est = _ekf->getPosition(); + EXPECT_NEAR(pos_earth_est(0), pos_earth(0), 0.01f); + EXPECT_NEAR(pos_earth_est(1), pos_earth(1), 0.01f); + + // WHEN: the measurement in EV FRD frame changes + pos_earth = Vector3f(0.3f, 0.0f, 0.0f); + _sensor_simulator._vio.setPosition(pos_earth); + _sensor_simulator.runSeconds(4); + + // THEN: the position should converge to the EV position + // Note that the estimate is now in the EV frame because it is + // the reference frame + pos_earth_est = _ekf->getPosition(); + EXPECT_NEAR(pos_earth_est(0), pos_earth(0), 0.1f); + EXPECT_NEAR(pos_earth_est(1), pos_earth(1), 0.1f); +} diff --git a/src/lib/ecl/test/test_EKF_flow.cpp b/src/lib/ecl/test/test_EKF_flow.cpp new file mode 100644 index 0000000000..a40f4203a0 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_flow.cpp @@ -0,0 +1,287 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the flow fusion + * @author Kamil Ritz + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" +#include "test_helper/reset_logging_checker.h" + + +class EkfFlowTest : public ::testing::Test { + public: + + EkfFlowTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + const float max_flow_rate = 5.f; + const float min_ground_distance = 0.f; + const float max_ground_distance = 50.f; + _ekf->set_optical_flow_limits(max_flow_rate, min_ground_distance, max_ground_distance); + + _ekf->init(0); + _sensor_simulator.runSeconds(7); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } + + void startRangeFinderFusion(float distance); + void startZeroFlowFusion(); + void setFlowFromHorizontalVelocityAndDistance(flowSample &flow_sample, const Vector2f &simulated_horz_velocity, float estimated_distance_to_ground); +}; + +void EkfFlowTest::startRangeFinderFusion(float distance) +{ + _sensor_simulator._rng.setData(distance, 100); + _sensor_simulator._rng.setLimits(0.1f, 9.f); + _sensor_simulator.startRangeFinder(); +} + +void EkfFlowTest::startZeroFlowFusion() +{ + // Start fusing zero flow data + _sensor_simulator._flow.setData(_sensor_simulator._flow.dataAtRest()); + _ekf_wrapper.enableFlowFusion(); + _sensor_simulator.startFlow(); +} + +void EkfFlowTest::setFlowFromHorizontalVelocityAndDistance(flowSample &flow_sample, const Vector2f &simulated_horz_velocity, float estimated_distance_to_ground) +{ + flow_sample.flow_xy_rad = + Vector2f( simulated_horz_velocity(1) * flow_sample.dt / estimated_distance_to_ground, + -simulated_horz_velocity(0) * flow_sample.dt / estimated_distance_to_ground); +} + +TEST_F(EkfFlowTest, resetToFlowVelocityInAir) +{ + ResetLoggingChecker reset_logging_checker(_ekf); + + // WHEN: simulate being 5m above ground + const float simulated_distance_to_ground = 5.f; + startRangeFinderFusion(simulated_distance_to_ground); + _ekf->set_in_air_status(true); + + _sensor_simulator.runSeconds(5.f); + + const float estimated_distance_to_ground = _ekf->getTerrainVertPos(); + EXPECT_FLOAT_EQ(estimated_distance_to_ground, simulated_distance_to_ground); + + reset_logging_checker.capturePreResetState(); + + // WHEN: start fusing flow data + const Vector2f simulated_horz_velocity(0.5f, -0.2f); + flowSample flow_sample = _sensor_simulator._flow.dataAtRest(); + setFlowFromHorizontalVelocityAndDistance(flow_sample, simulated_horz_velocity, estimated_distance_to_ground); + _sensor_simulator._flow.setData(flow_sample); + _ekf_wrapper.enableFlowFusion(); + _sensor_simulator.startFlow(); + // Let it reset but not fuse more measurements. We actually need to send 2 + // samples to get a reset because the first one cannot be used as the gyro + // compensation needs to be accumulated between two samples. + _sensor_simulator.runSeconds(0.14); + + // THEN: estimated velocity should match simulated velocity + const Vector2f estimated_horz_velocity = Vector2f(_ekf->getVelocity()); + EXPECT_TRUE(isEqual(estimated_horz_velocity, simulated_horz_velocity)) + << "estimated vel = " << estimated_horz_velocity(0) << ", " + << estimated_horz_velocity(1); + + // AND: the reset in velocity should be saved correctly + reset_logging_checker.capturePostResetState(); + EXPECT_TRUE(reset_logging_checker.isHorizontalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVerticalVelocityResetCounterIncreasedBy(0)); + EXPECT_TRUE(reset_logging_checker.isVelocityDeltaLoggedCorrectly(1e-9f)); +} + +TEST_F(EkfFlowTest, resetToFlowVelocityOnGround) +{ + ResetLoggingChecker reset_logging_checker(_ekf); + + // WHEN: being on ground + const float estimated_distance_to_ground = _ekf->getTerrainVertPos(); + EXPECT_LT(estimated_distance_to_ground, 0.3f); + + reset_logging_checker.capturePreResetState(); + + // WHEN: start fusing flow data + flowSample flow_sample = _sensor_simulator._flow.dataAtRest(); + flow_sample.dt = 0.f; // some sensors force dt to zero when quality is low + flow_sample.quality = 0; + _sensor_simulator._flow.setData(flow_sample); + _ekf_wrapper.enableFlowFusion(); + _sensor_simulator.startFlow(); + _sensor_simulator.runSeconds(1.0); + + // THEN: estimated velocity should match simulated velocity + const Vector2f estimated_horz_velocity = Vector2f(_ekf->getVelocity()); + EXPECT_TRUE(isEqual(estimated_horz_velocity, Vector2f(0.f, 0.f))) + << estimated_horz_velocity(0) << ", " << estimated_horz_velocity(1); + + // AND: the reset in velocity should be saved correctly + reset_logging_checker.capturePostResetState(); + EXPECT_TRUE(reset_logging_checker.isHorizontalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVerticalVelocityResetCounterIncreasedBy(0)); + EXPECT_TRUE(reset_logging_checker.isVelocityDeltaLoggedCorrectly(1e-9f)); +} + +TEST_F(EkfFlowTest, inAirConvergence) +{ + // WHEN: simulate being 5m above ground + const float simulated_distance_to_ground = 5.f; + startRangeFinderFusion(simulated_distance_to_ground); + _ekf->set_in_air_status(true); + + _sensor_simulator.runSeconds(5.f); + + const float estimated_distance_to_ground = _ekf->getTerrainVertPos(); + + // WHEN: start fusing flow data + Vector2f simulated_horz_velocity(0.5f, -0.2f); + flowSample flow_sample = _sensor_simulator._flow.dataAtRest(); + setFlowFromHorizontalVelocityAndDistance(flow_sample, simulated_horz_velocity, estimated_distance_to_ground); + _sensor_simulator._flow.setData(flow_sample); + _ekf_wrapper.enableFlowFusion(); + _sensor_simulator.startFlow(); + // Let it reset but not fuse more measurements. We actually need to send 2 + // samples to get a reset because the first one cannot be used as the gyro + // compensation needs to be accumulated between two samples. + _sensor_simulator.runSeconds(0.14); + + // THEN: estimated velocity should match simulated velocity + Vector2f estimated_horz_velocity = Vector2f(_ekf->getVelocity()); + EXPECT_TRUE(isEqual(estimated_horz_velocity, simulated_horz_velocity)) + << "estimated vel = " << estimated_horz_velocity(0) << ", " + << estimated_horz_velocity(1); + + // AND: when the velocity changes + simulated_horz_velocity = Vector2f(0.8f, -0.5f); + setFlowFromHorizontalVelocityAndDistance(flow_sample, simulated_horz_velocity, estimated_distance_to_ground); + _sensor_simulator._flow.setData(flow_sample); + _sensor_simulator.runSeconds(5.0); + + // THEN: estimated velocity should converge to the simulated velocity + // This takes a bit of time because the data is inconsistent with IMU measurements + estimated_horz_velocity = Vector2f(_ekf->getVelocity()); + EXPECT_NEAR(estimated_horz_velocity(0), simulated_horz_velocity(0), 0.05f) + << "estimated vel = " << estimated_horz_velocity(0); + EXPECT_NEAR(estimated_horz_velocity(1), simulated_horz_velocity(1), 0.05f) + << estimated_horz_velocity(1); +} + +TEST_F(EkfFlowTest, yawMotionCorrectionWithAutopilotGyroData) +{ + // WHEN: fusing range finder and optical flow data in air + const float simulated_distance_to_ground = 5.f; + startRangeFinderFusion(simulated_distance_to_ground); + startZeroFlowFusion(); + _ekf->set_in_air_status(true); + + _sensor_simulator.runSeconds(5.f); + + // AND WHEN: there is a pure yaw rotation + const Vector3f body_rate(0.f, 0.f, 3.14159f); + const Vector3f flow_offset(0.15, -0.05f, 0.2f); + _ekf_wrapper.setFlowOffset(flow_offset); + + const Vector2f simulated_horz_velocity(body_rate % flow_offset); + flowSample flow_sample = _sensor_simulator._flow.dataAtRest(); + setFlowFromHorizontalVelocityAndDistance(flow_sample, simulated_horz_velocity, simulated_distance_to_ground); + + // use autopilot gyro data + flow_sample.gyro_xyz.setAll(NAN); + + _sensor_simulator._flow.setData(flow_sample); + _sensor_simulator._imu.setGyroData(body_rate); + _sensor_simulator.runSeconds(10.f); + + // THEN: the flow due to the yaw rotation and the offsets is canceled + // and the velocity estimate stays 0 + const Vector2f estimated_horz_velocity = Vector2f(_ekf->getVelocity()); + EXPECT_NEAR(estimated_horz_velocity(0), 0.f, 0.01f) + << "estimated vel = " << estimated_horz_velocity(0); + EXPECT_NEAR(estimated_horz_velocity(1), 0.f, 0.01f) + << "estimated vel = " << estimated_horz_velocity(1); +} + +TEST_F(EkfFlowTest, yawMotionCorrectionWithFlowGyroData) +{ + // WHEN: fusing range finder and optical flow data in air + const float simulated_distance_to_ground = 5.f; + startRangeFinderFusion(simulated_distance_to_ground); + startZeroFlowFusion(); + _ekf->set_in_air_status(true); + + _sensor_simulator.runSeconds(5.f); + + // AND WHEN: there is a pure yaw rotation + const Vector3f body_rate(0.f, 0.f, 3.14159f); + const Vector3f flow_offset(-0.15, 0.05f, 0.2f); + _ekf_wrapper.setFlowOffset(flow_offset); + + const Vector2f simulated_horz_velocity(body_rate % flow_offset); + flowSample flow_sample = _sensor_simulator._flow.dataAtRest(); + setFlowFromHorizontalVelocityAndDistance(flow_sample, simulated_horz_velocity, simulated_distance_to_ground); + + // use flow sensor gyro data + // for clarification of the sign, see definition of flowSample + flow_sample.gyro_xyz = -body_rate * flow_sample.dt; + + _sensor_simulator._flow.setData(flow_sample); + _sensor_simulator._imu.setGyroData(body_rate); + _sensor_simulator.runSeconds(10.f); + + // THEN: the flow due to the yaw rotation and the offsets is canceled + // and the velocity estimate stays 0 + const Vector2f estimated_horz_velocity = Vector2f(_ekf->getVelocity()); + EXPECT_NEAR(estimated_horz_velocity(0), 0.f, 0.01f) + << "estimated vel = " << estimated_horz_velocity(0); + EXPECT_NEAR(estimated_horz_velocity(1), 0.f, 0.01f) + << "estimated vel = " << estimated_horz_velocity(1); +} diff --git a/src/lib/ecl/test/test_EKF_fusionLogic.cpp b/src/lib/ecl/test/test_EKF_fusionLogic.cpp new file mode 100644 index 0000000000..9430efbe55 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_fusionLogic.cpp @@ -0,0 +1,385 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the fusion start and stop logic + * @author Kamil Ritz + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" + + +class EkfFusionLogicTest : public ::testing::Test { + public: + + EkfFusionLogicTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + _sensor_simulator.runSeconds(7); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } +}; + + +TEST_F(EkfFusionLogicTest, doNoFusion) +{ + // GIVEN: a tilt and heading aligned filter + // WHEN: having no aiding source + // THEN: EKF should not have a valid position estimate + EXPECT_FALSE(_ekf->local_position_is_valid()); + + _sensor_simulator.runSeconds(4); + + // THEN: Local and global position should not be valid + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); +} + +TEST_F(EkfFusionLogicTest, doGpsFusion) +{ + // GIVEN: a tilt and heading aligned filter + // WHEN: we enable GPS fusion and we send good quality gps data for 11s + _ekf_wrapper.enableGpsFusion(); + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(11); + + // THEN: EKF should intend to fuse GPS + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsFusion()); + // THEN: Local and global position should be valid + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_TRUE(_ekf->global_position_is_valid()); + + // WHEN: GPS data is not send for 11s + _sensor_simulator.stopGps(); + _sensor_simulator.runSeconds(11); + + // THEN: EKF should stop to intend to fuse GPS + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsFusion()); + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + // WHEN: GPS data is send again for 11s + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(11); + + // THEN: EKF should to intend to fuse GPS + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsFusion()); + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_TRUE(_ekf->global_position_is_valid()); + + // // WHEN: clients decides to stop GPS fusion + // _ekf_wrapper.disableGpsFusion(); + // // THEN: EKF should stop to intend to fuse GPS immediately + // _sensor_simulator.runMicroseconds(1000); + // EXPECT_FALSE(_ekf_wrapper.isIntendingGpsFusion()); + // THIS is not happening at the moment +} + +TEST_F(EkfFusionLogicTest, rejectGpsSignalJump) +{ + // GIVEN: a tilt and heading aligned filter + // WHEN: we enable GPS fusion and we send good quality gps data for 11s + _ekf_wrapper.enableGpsFusion(); + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(15); + + // THEN: EKF should intend to fuse GPS + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsFusion()); + + // WHEN: Having a big horizontal position Gps jump coming from the Gps Receiver + const Vector3f pos_old = _ekf->getPosition(); + const Vector3f vel_old = _ekf->getVelocity(); + const Vector3f accel_bias_old = _ekf->getAccelBias(); + _sensor_simulator._gps.stepHorizontalPositionByMeters(Vector2f{20.0f, 0.0f}); + _sensor_simulator.runSeconds(2); + + // THEN: The estimate should not change much in the short run + // and GPS fusion should be stopped after a while. + Vector3f pos_new = _ekf->getPosition(); + Vector3f vel_new = _ekf->getVelocity(); + Vector3f accel_bias_new = _ekf->getAccelBias(); + EXPECT_TRUE(matrix::isEqual(pos_new, pos_old, 0.01f)); + EXPECT_TRUE(matrix::isEqual(vel_new, vel_old, 0.01f)); + EXPECT_TRUE(matrix::isEqual(accel_bias_new, accel_bias_old, 0.01f)); + + _sensor_simulator.runSeconds(10); + pos_new = _ekf->getPosition(); + vel_new = _ekf->getVelocity(); + accel_bias_new = _ekf->getAccelBias(); + EXPECT_TRUE(matrix::isEqual(pos_new, pos_old, 0.01f)); + EXPECT_TRUE(matrix::isEqual(vel_new, vel_old, 0.01f)); + EXPECT_TRUE(matrix::isEqual(accel_bias_new, accel_bias_old, 0.01f)); + // EXPECT_TRUE(_ekf_wrapper.isIntendingGpsFusion()); // What do we expect here? +} + +TEST_F(EkfFusionLogicTest, doFlowFusion) +{ + // GIVEN: a tilt and heading aligned filter + // WHEN: sending flow data without having the flow fusion enabled + // flow measurement fusion should not be intended. + const float max_flow_rate = 5.f; + const float min_ground_distance = 0.f; + const float max_ground_distance = 50.f; + _ekf->set_optical_flow_limits(max_flow_rate, min_ground_distance, max_ground_distance); + _sensor_simulator.startFlow(); + _sensor_simulator.runSeconds(4); + + // THEN: EKF should not intend to fuse flow measurements + EXPECT_FALSE(_ekf_wrapper.isIntendingFlowFusion()); + // THEN: Local and global position should not be valid + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + // WHEN: Flow data is not send and we enable flow fusion + _sensor_simulator.stopFlow(); + _sensor_simulator.runSeconds(1); // empty buffer + _ekf_wrapper.enableFlowFusion(); + _sensor_simulator.runSeconds(3); + + // THEN: EKF should not intend to fuse flow + EXPECT_FALSE(_ekf_wrapper.isIntendingFlowFusion()); + // THEN: Local and global position should not be valid + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + // WHEN: Flow data is sent and we enable flow fusion + _sensor_simulator.startFlow(); + _ekf_wrapper.enableFlowFusion(); + _sensor_simulator.runSeconds(10); + + // THEN: EKF should intend to fuse flow + EXPECT_TRUE(_ekf_wrapper.isIntendingFlowFusion()); + // THEN: Local and global position should be valid + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + // WHEN: Stop sending flow data + _sensor_simulator.stopFlow(); + _sensor_simulator.runSeconds(11); + + // THEN: EKF should not intend to fuse flow measurements + EXPECT_FALSE(_ekf_wrapper.isIntendingFlowFusion()); + // THEN: Local and global position should not be valid + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); +} + +TEST_F(EkfFusionLogicTest, doVisionPositionFusion) +{ + // WHEN: allow vision position to be fused and we send vision data + _ekf_wrapper.enableExternalVisionPositionFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + // THEN: EKF should intend to fuse vision position estimate + // and we have a valid local position estimate + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + // WHEN: stop sending vision data + _sensor_simulator.stopExternalVision(); + _sensor_simulator.runSeconds(7); + + // THEN: EKF should stop to intend to fuse vision position estimate + // and EKF should not have a valid local position estimate anymore + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); +} + +TEST_F(EkfFusionLogicTest, doVisionVelocityFusion) +{ + // WHEN: allow vision position to be fused and we send vision data + _ekf_wrapper.enableExternalVisionVelocityFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + // THEN: EKF should intend to fuse vision position estimate + // and we have a valid local position estimate + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + EXPECT_TRUE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + + // WHEN: stop sending vision data + _sensor_simulator.stopExternalVision(); + _sensor_simulator.runSeconds(7); + + // THEN: EKF should stop to intend to fuse vision position estimate + // and EKF should not have a valid local position estimate anymore + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); +} + +TEST_F(EkfFusionLogicTest, doVisionHeadingFusion) +{ + // WHEN: allow vision position to be fused and we send vision data + const int initial_quat_reset_counter = _ekf_wrapper.getQuaternionResetCounter(); + _ekf_wrapper.enableExternalVisionHeadingFusion(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(4); + + // THEN: EKF should intend to fuse vision heading estimates + // and we should not have a valid local position estimate + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + // THEN: Yaw state should be reset to vision + EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 1); + + // WHEN: stop sending vision data + _sensor_simulator.stopExternalVision(); + _sensor_simulator.runSeconds(7.1); + + // THEN: EKF should stop to intend to fuse vision position estimate + // and EKF should not have a valid local position estimate anymore + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionPositionFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionVelocityFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingExternalVisionHeadingFusion()); + EXPECT_FALSE(_ekf->local_position_is_valid()); + EXPECT_FALSE(_ekf->global_position_is_valid()); + // THEN: Yaw state shoud be reset to mag + EXPECT_TRUE(_ekf_wrapper.isIntendingMagHeadingFusion()); + EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 2); +} + +TEST_F(EkfFusionLogicTest, doBaroHeightFusion) +{ + // GIVEN: EKF that receives baro data + + // THEN: EKF should intend to fuse baro by default + EXPECT_TRUE(_ekf_wrapper.isIntendingBaroHeightFusion()); + + // WHEN: stop sending baro data + _sensor_simulator.stopBaro(); + _sensor_simulator.runSeconds(6); + + // THEN: EKF should stop to intend to use baro hgt + // TODO: We have no fall back in balce + EXPECT_TRUE(_ekf_wrapper.isIntendingBaroHeightFusion()); // TODO: Needs to change +} + + +TEST_F(EkfFusionLogicTest, doGpsHeightFusion) +{ + // WHEN: commanding GPS height and sending GPS data + _ekf_wrapper.setGpsHeight(); + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(11); + + // THEN: EKF should intend to fuse gps height + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsHeightFusion()); + + // WHEN: stop sending gps data + _sensor_simulator.stopGps(); + _sensor_simulator.runSeconds(11); // TODO: We have to wait way too long + + // THEN: EKF should stop to intend to use gps height + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsHeightFusion()); +} + + +TEST_F(EkfFusionLogicTest, doRangeHeightFusion) +{ + // WHEN: commanding range height and sending range data + _ekf_wrapper.setRangeHeight(); + _sensor_simulator.startRangeFinder(); + _sensor_simulator.runSeconds(2.5f); + // THEN: EKF should intend to fuse range height + EXPECT_TRUE(_ekf_wrapper.isIntendingRangeHeightFusion()); + + const float dt = 8e-3f; + for (int i = 0; i < 5; i++) { + _sensor_simulator.runSeconds(dt); + // THEN: EKF should intend to fuse range height, even if + // there is no new data at each EKF iteration (EKF rate > sensor rate) + EXPECT_TRUE(_ekf_wrapper.isIntendingRangeHeightFusion()); + } + + // WHEN: stop sending range data + _sensor_simulator.stopRangeFinder(); + _sensor_simulator.runSeconds(5.1); + + // THEN: EKF should stop to intend to use range height + // and fall back to baro height + EXPECT_FALSE(_ekf_wrapper.isIntendingRangeHeightFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingBaroHeightFusion()); +} + +TEST_F(EkfFusionLogicTest, doVisionHeightFusion) +{ + // WHEN: commanding vision height and sending vision data + _ekf_wrapper.setVisionHeight(); + _sensor_simulator.startExternalVision(); + _sensor_simulator.runSeconds(2); + + // THEN: EKF should intend to fuse vision height + EXPECT_TRUE(_ekf_wrapper.isIntendingVisionHeightFusion()); + + // WHEN: stop sending vision data + _sensor_simulator.stopExternalVision(); + _sensor_simulator.runSeconds(12); + + // THEN: EKF should stop to intend to use vision height + + EXPECT_FALSE(_ekf_wrapper.isIntendingVisionHeightFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingBaroHeightFusion()); +} diff --git a/src/lib/ecl/test/test_EKF_gps.cpp b/src/lib/ecl/test/test_EKF_gps.cpp new file mode 100644 index 0000000000..fd311d5005 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_gps.cpp @@ -0,0 +1,142 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the gps fusion + * @author Kamil Ritz + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" +#include "test_helper/reset_logging_checker.h" + +class EkfGpsTest : public ::testing::Test { + public: + + EkfGpsTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + _sensor_simulator.runSeconds(2); + _ekf_wrapper.enableGpsFusion(); + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(11); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } +}; + +TEST_F(EkfGpsTest, gpsTimeout) +{ + // GIVEN:EKF that fuses GPS + + // WHEN: setting the PDOP to high + _sensor_simulator._gps.setNumberOfSatellites(3); + + // THEN: EKF should stop fusing GPS + _sensor_simulator.runSeconds(20); + + // TODO: this is not happening as expected + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsFusion()); +} + +TEST_F(EkfGpsTest, resetToGpsVelocity) +{ + ResetLoggingChecker reset_logging_checker(_ekf); + // GIVEN:EKF that fuses GPS + // and has gps checks already passed + + // WHEN: stopping GPS fusion + _sensor_simulator.stopGps(); + _sensor_simulator.runSeconds(11); + + reset_logging_checker.capturePreResetState(); + + // AND: simulate constant velocity gps samples for short time + _sensor_simulator.startGps(); + const Vector3f simulated_velocity(0.5f, 1.0f, -0.3f); + _sensor_simulator._gps.setVelocity(simulated_velocity); + const uint64_t dt_us = 1e5; + _sensor_simulator._gps.stepHorizontalPositionByMeters( + Vector2f(simulated_velocity) * dt_us * 1e-6); + _sensor_simulator._gps.stepHeightByMeters( + simulated_velocity(2) * dt_us * 1e-6); + _sensor_simulator.runMicroseconds(dt_us); + + // THEN: a reset to GPS velocity should be done + const Vector3f estimated_velocity = _ekf->getVelocity(); + EXPECT_TRUE(isEqual(estimated_velocity, simulated_velocity, 1e-2f)); + + // AND: the reset in velocity should be saved correctly + reset_logging_checker.capturePostResetState(); + EXPECT_TRUE(reset_logging_checker.isHorizontalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVerticalVelocityResetCounterIncreasedBy(1)); + EXPECT_TRUE(reset_logging_checker.isVelocityDeltaLoggedCorrectly(1e-2f)); +} + +TEST_F(EkfGpsTest, resetToGpsPosition) +{ + // GIVEN:EKF that fuses GPS + // and has gps checks already passed + const Vector3f previous_position = _ekf->getPosition(); + + // WHEN: stopping GPS fusion + _sensor_simulator.stopGps(); + _sensor_simulator.runSeconds(11); + + // AND: simulate jump in position + _sensor_simulator.startGps(); + const Vector3f simulated_position_change(2.0f, -1.0f, 0.f); + _sensor_simulator._gps.stepHorizontalPositionByMeters( + Vector2f(simulated_position_change)); + _sensor_simulator.runMicroseconds(1e5); + + // THEN: a reset to the new GPS position should be done + const Vector3f estimated_position = _ekf->getPosition(); + EXPECT_TRUE(isEqual(estimated_position, + previous_position + simulated_position_change, 1e-2f)); +} diff --git a/src/lib/ecl/test/test_EKF_gps_yaw.cpp b/src/lib/ecl/test/test_EKF_gps_yaw.cpp new file mode 100644 index 0000000000..ecf6acf91a --- /dev/null +++ b/src/lib/ecl/test/test_EKF_gps_yaw.cpp @@ -0,0 +1,271 @@ +/**************************************************************************** + * + * Copyright (c) 2020 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the gps yaw fusion + * @author Kamil Ritz + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" +#include "test_helper/reset_logging_checker.h" + +class EkfGpsHeadingTest : public ::testing::Test { + public: + + EkfGpsHeadingTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + void runConvergenceScenario(float yaw_offset_rad = 0.f, float antenna_offset_rad = 0.f); + void checkConvergence(float truth, float tolerance = FLT_EPSILON); + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + _sensor_simulator.runSeconds(_init_duration_s); + _sensor_simulator._gps.setYaw(NAN); + _sensor_simulator.runSeconds(2); + _ekf_wrapper.enableGpsFusion(); + _ekf_wrapper.enableGpsHeadingFusion(); + _sensor_simulator.startGps(); + _sensor_simulator.runSeconds(11); + } + + const uint32_t _init_duration_s{4}; +}; + +void EkfGpsHeadingTest::runConvergenceScenario(float yaw_offset_rad, float antenna_offset_rad) +{ + // GIVEN: an initial GPS yaw, not aligned with the current one + float gps_heading = matrix::wrap_pi(_ekf_wrapper.getYawAngle() + yaw_offset_rad); + + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator._gps.setYawOffset(antenna_offset_rad); + + // WHEN: the GPS yaw fusion is activated + _ekf_wrapper.enableGpsHeadingFusion(); + _sensor_simulator.runSeconds(5); + + // THEN: the estimate is reset and stays close to the measurement + checkConvergence(gps_heading, 0.05f); +} + +void EkfGpsHeadingTest::checkConvergence(float truth, float tolerance) +{ + const float yaw_est = _ekf_wrapper.getYawAngle(); + EXPECT_NEAR(yaw_est, truth, math::radians(tolerance)) + << "yaw est: " << math::degrees(yaw_est) << "gps yaw: " << math::degrees(truth); +} + +TEST_F(EkfGpsHeadingTest, fusionStartWithReset) +{ + // GIVEN:EKF that fuses GPS + + // WHEN: enabling GPS heading fusion and heading difference is bigger than 15 degrees + const float gps_heading = _ekf_wrapper.getYawAngle() + math::radians(20.f); + _sensor_simulator._gps.setYaw(gps_heading); + _ekf_wrapper.enableGpsHeadingFusion(); + const int initial_quat_reset_counter = _ekf_wrapper.getQuaternionResetCounter(); + _sensor_simulator.runSeconds(0.4); + + // THEN: GPS heading fusion should have started; + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsHeadingFusion()); + + // AND: a reset to GPS heading is performed + EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 1); + EXPECT_NEAR(_ekf_wrapper.getYawAngle(), gps_heading, 0.001); + + // WHEN: GPS heading is disabled + _sensor_simulator._gps.stop(); + _sensor_simulator.runSeconds(11); + + // THEN: after a while the fusion should be stopped + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsHeadingFusion()); +} + +TEST_F(EkfGpsHeadingTest, yawConvergence) +{ + // GIVEN: an initial GPS yaw, not aligned with the current one + const float initial_yaw = math::radians(10.f); + float gps_heading = matrix::wrap_pi(_ekf_wrapper.getYawAngle() + initial_yaw); + + _sensor_simulator._gps.setYaw(gps_heading); + + // WHEN: the GPS yaw fusion is activated + _ekf_wrapper.enableGpsHeadingFusion(); + _sensor_simulator.runSeconds(5); + + // THEN: the estimate is reset and stays close to the measurement + checkConvergence(gps_heading, 0.05f); + + // AND WHEN: the the measurement changes + gps_heading += math::radians(2.f); + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(10); + + // THEN: the estimate slowly converges to the new measurement + // Note that the process is slow, because the gyro did not detect any motion + checkConvergence(gps_heading, 0.5f); +} + +TEST_F(EkfGpsHeadingTest, yaw0) +{ + runConvergenceScenario(); +} + +TEST_F(EkfGpsHeadingTest, yaw60) +{ + const float yaw_offset_rad = math::radians(60.f); + const float antenna_offset_rad = math::radians(80.f); + runConvergenceScenario(yaw_offset_rad, antenna_offset_rad); +} + +TEST_F(EkfGpsHeadingTest, yaw180) +{ + const float yaw_offset_rad = math::radians(180.f); + const float antenna_offset_rad = math::radians(-20.f); + runConvergenceScenario(yaw_offset_rad, antenna_offset_rad); +} + +TEST_F(EkfGpsHeadingTest, yawMinus120) +{ + const float yaw_offset_rad = math::radians(120.f); + const float antenna_offset_rad = math::radians(-42.f); + runConvergenceScenario(yaw_offset_rad, antenna_offset_rad); +} + +TEST_F(EkfGpsHeadingTest, yawMinus30) +{ + const float yaw_offset_rad = math::radians(-30.f); + const float antenna_offset_rad = math::radians(10.f); + runConvergenceScenario(yaw_offset_rad, antenna_offset_rad); +} + +TEST_F(EkfGpsHeadingTest, fallBackToMag) +{ + // GIVEN: an initial GPS yaw, not aligned with the current one + // GPS yaw is expected to arrive a bit later, first feed some NANs + // to the filter + _sensor_simulator.runSeconds(6); + float gps_heading = matrix::wrap_pi(_ekf_wrapper.getYawAngle() + math::radians(10.f)); + _sensor_simulator._gps.setYaw(gps_heading); + + // WHEN: the GPS yaw fusion is activated + _sensor_simulator.runSeconds(1); + + // THEN: GPS heading fusion should have started, and mag + // fusion should be disabled + EXPECT_TRUE(_ekf_wrapper.isIntendingGpsHeadingFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingMagHeadingFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingMag3DFusion()); + + const int initial_quat_reset_counter = _ekf_wrapper.getQuaternionResetCounter(); + + // BUT WHEN: the GPS yaw is suddenly invalid + gps_heading = NAN; + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(7.5); + + // THEN: after a few seconds, the fusion should stop and + // the estimator should fall back to mag fusion + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsHeadingFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingMagHeadingFusion()); + EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 1); +} + +TEST_F(EkfGpsHeadingTest, yaw_jump) +{ + // GIVEN: the GPS yaw fusion activated + float gps_heading = _ekf_wrapper.getYawAngle(); + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(5); + _ekf->set_in_air_status(true); + + // WHEN: the measurement suddenly changes + const int initial_quat_reset_counter = _ekf_wrapper.getQuaternionResetCounter(); + gps_heading = matrix::wrap_pi(_ekf_wrapper.getYawAngle() + math::radians(180.f)); + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(7.5); + + // THEN: the fusion should reset + EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 1); + + // BUT WHEN: the measurement jumps a 2nd time + gps_heading = matrix::wrap_pi(_ekf_wrapper.getYawAngle() + math::radians(180.f)); + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(7.5); + + // THEN: after a few seconds, the fusion should stop and + // the estimator should fall back to mag fusion + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsHeadingFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingMagHeadingFusion()); +} + +TEST_F(EkfGpsHeadingTest, stop_on_ground) +{ + // GIVEN: the GPS yaw fusion activated and there is no mag data + _sensor_simulator._mag.stop(); + float gps_heading = _ekf_wrapper.getYawAngle(); + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(5); + + // WHEN: the measurement stops + gps_heading = NAN; + _sensor_simulator._gps.setYaw(gps_heading); + _sensor_simulator.runSeconds(7.5); + + // THEN: the fusion should stop and the GPS pos/vel aiding + // should stop as well because the yaw is not aligned anymore + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsHeadingFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingGpsFusion()); + + // AND IF: the mag fusion type is set to NONE + _ekf_wrapper.setMagFuseTypeNone(); + + // WHEN: running without yaw aiding + const matrix::Vector quat_variance_before = _ekf_wrapper.getQuaternionVariance(); + _sensor_simulator.runSeconds(20.0); + const matrix::Vector quat_variance_after = _ekf_wrapper.getQuaternionVariance(); + + // THEN: the yaw variance is constrained by fusing constant data + EXPECT_LT(quat_variance_after(3), quat_variance_before(3)); +} diff --git a/src/lib/ecl/test/test_EKF_imuSampling.cpp b/src/lib/ecl/test/test_EKF_imuSampling.cpp new file mode 100644 index 0000000000..3a98f727d0 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_imuSampling.cpp @@ -0,0 +1,215 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include "EKF/ekf.h" +#include "EKF/imu_down_sampler.hpp" + +class EkfImuSamplingTest : public ::testing::TestWithParam> +{ + public: + + Ekf _ekf{}; + + uint32_t _t_us{0}; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf.init(0); + + } + + void TearDown() override + { + + } +}; + +TEST_P(EkfImuSamplingTest, imuSamplingAtMultipleRates) +{ + // WHEN: adding imu samples at a higher rate than the update loop + // THEN: imu sample should be down sampled + // WHEN: adding imu samples at a same or lower rate than the update loop + // THEN: imu sample should reach buffer unchanged + + uint32_t dt_us = std::get<0>(GetParam()) * (_ekf.FILTER_UPDATE_PERIOD_MS * 1000); + uint32_t expected_dt_us = std::get<1>(GetParam()) * (_ekf.FILTER_UPDATE_PERIOD_MS * 1000); + + Vector3f ang_vel= std::get<2>(GetParam()); + Vector3f accel = std::get<3>(GetParam()); + imuSample imu_sample; + imu_sample.delta_ang_dt = dt_us * 1.0e-6f; + imu_sample.delta_ang = ang_vel * imu_sample.delta_ang_dt; + imu_sample.delta_vel_dt = dt_us * 1.0e-6f; + imu_sample.delta_vel = accel * imu_sample.delta_vel_dt; + + // The higher the imu rate is the more measurements we have to set before reaching the FILTER_UPDATE_PERIOD + int n_samples = 0; + for(int i = 0; i<(int)20/std::get<0>(GetParam()); ++i) + { + n_samples++; + imu_sample.time_us = _t_us; + _ekf.setIMUData(imu_sample); + _t_us += dt_us; + } + + // Get the imu sample that was put into the buffer + imuSample imu_sample_buffered = _ekf.get_imu_sample_delayed(); + EXPECT_NEAR(expected_dt_us / 1e6f, imu_sample_buffered.delta_ang_dt, 1e-5f); + EXPECT_NEAR(expected_dt_us / 1e6f, imu_sample_buffered.delta_vel_dt, 1e-5f); + + // WHEN: downsampling the imu measurement + // THEN: the delta vel should be accumulated correctly + // Allow for accumulation of rounding error with each sample + EXPECT_TRUE(matrix::isEqual(ang_vel, imu_sample_buffered.delta_ang/imu_sample_buffered.delta_ang_dt, float(n_samples) * 1e-7f)); + EXPECT_TRUE(matrix::isEqual(accel, imu_sample_buffered.delta_vel/imu_sample_buffered.delta_vel_dt, float(n_samples) * 1e-7f)); +} + +INSTANTIATE_TEST_SUITE_P(imuSamplingAtMultipleRates, + EkfImuSamplingTest, + ::testing::Values( + std::make_tuple(1.0f, 1.0f,Vector3f{0.0f,0.0f,0.0f},Vector3f{-0.46f,0.87f,0.20f}), + std::make_tuple(0.5f, 1.0f,Vector3f{0.0f,0.0f,0.0f},Vector3f{-0.46f,0.87f,0.20f}), + std::make_tuple(1.6f, 1.6f,Vector3f{0.0f,0.0f,0.0f},Vector3f{-0.46f,0.87f,0.20f}), + std::make_tuple(0.333f,1.0f,Vector3f{0.0f,0.0f,0.0f},Vector3f{-0.46f,0.87f,0.20f}), + std::make_tuple(1.0f, 1.0f,Vector3f{1.0f,0.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(0.5f, 1.0f,Vector3f{1.0f,0.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(1.6f, 1.6f,Vector3f{1.0f,0.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(0.333f,1.0f,Vector3f{1.0f,0.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(1.0f, 1.0f,Vector3f{0.0f,1.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(0.5f, 1.0f,Vector3f{0.0f,1.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(1.6f, 1.6f,Vector3f{0.0f,1.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(0.333f,1.0f,Vector3f{0.0f,1.0f,0.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(1.0f, 1.0f,Vector3f{0.0f,0.0f,1.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(0.5f, 1.0f,Vector3f{0.0f,0.0f,1.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(1.6f, 1.6f,Vector3f{0.0f,0.0f,1.0f},Vector3f{0.0f,0.0f,0.0f}), + std::make_tuple(0.333f,1.0f,Vector3f{0.0f,0.0f,1.0f},Vector3f{0.0f,0.0f,0.0f}) + )); + +TEST_F(EkfImuSamplingTest, accelDownSampling) +{ + ImuDownSampler sampler(0.008f); + + Vector3f ang_vel{0.0f,0.0f,0.0f}; + Vector3f accel{-0.46f,0.87f,0.0f}; + imuSample input_sample; + input_sample.delta_ang_dt = 0.004f; + input_sample.delta_ang = ang_vel * input_sample.delta_ang_dt; + input_sample.delta_vel_dt = 0.004f; + input_sample.delta_vel = accel * input_sample.delta_vel_dt; + input_sample.time_us = 0; + + // WHEN: adding samples at the double rate as the target rate + EXPECT_FALSE(sampler.update(input_sample)); + input_sample.time_us = 4000; + + // THEN: after two samples a first downsampled sample is ready + EXPECT_TRUE(sampler.update(input_sample)); + + // THEN: downsampled sample should fit to input data + imuSample output_sample = sampler.getDownSampledImuAndTriggerReset(); + EXPECT_FLOAT_EQ(output_sample.delta_ang_dt, 0.008f); + EXPECT_FLOAT_EQ(output_sample.delta_vel_dt, 0.008f); + EXPECT_TRUE(matrix::isEqual(ang_vel * 0.008f, output_sample.delta_ang, 1e-10f)); + EXPECT_TRUE(matrix::isEqual(accel * 0.008f, output_sample.delta_vel, 1e-10f)); +} + +TEST_F(EkfImuSamplingTest, gyroDownSampling) +{ + ImuDownSampler sampler(0.008f); + + Vector3f ang_vel{0.0f,0.0f,1.0f}; + Vector3f accel{0.0f,0.0f,0.0f}; + imuSample input_sample; + + input_sample.delta_ang_dt = 0.004f; + input_sample.delta_ang = ang_vel * input_sample.delta_ang_dt; + input_sample.delta_vel_dt = 0.004f; + input_sample.delta_vel = accel * input_sample.delta_vel_dt; + input_sample.time_us = 0; + + // WHEN: adding samples at the double rate as the target rate + EXPECT_FALSE(sampler.update(input_sample)); + input_sample.time_us += 4000; + + // THEN: after two samples a first downsampled sample is ready + EXPECT_TRUE(sampler.update(input_sample)); + input_sample.time_us += 4000; + + // THEN: downsampled sample should fit to input data + imuSample output_sample = sampler.getDownSampledImuAndTriggerReset(); + EXPECT_FLOAT_EQ(output_sample.delta_ang_dt, 0.008f); + EXPECT_FLOAT_EQ(output_sample.delta_vel_dt, 0.008f); + EXPECT_TRUE(matrix::isEqual(ang_vel * 0.008f, output_sample.delta_ang, 1e-10f)); + EXPECT_TRUE(matrix::isEqual(accel * 0.008f, output_sample.delta_vel, 1e-10f)); + + ang_vel = Vector3f{0.0f,1.0f,0.0f}; + input_sample.delta_ang = ang_vel * input_sample.delta_ang_dt; + input_sample.delta_vel = accel * input_sample.delta_vel_dt; + + // WHEN: adding samples at the double rate as the target rate + EXPECT_FALSE(sampler.update(input_sample)); + input_sample.time_us += 4000; + + // THEN: after two more samples a second downsampled sample is ready + EXPECT_TRUE(sampler.update(input_sample)); + input_sample.time_us += 4000; + + // THEN: downsampled sample should fit the adapted input data + output_sample = sampler.getDownSampledImuAndTriggerReset(); + EXPECT_FLOAT_EQ(output_sample.delta_ang_dt, 0.008f); + EXPECT_FLOAT_EQ(output_sample.delta_vel_dt, 0.008f); + EXPECT_TRUE(matrix::isEqual(ang_vel * 0.008f, output_sample.delta_ang, 1e-10f)); + EXPECT_TRUE(matrix::isEqual(accel * 0.008f, output_sample.delta_vel, 1e-10f)); + + ang_vel = Vector3f{1.0f,0.0f,0.0f}; + input_sample.delta_ang = ang_vel * input_sample.delta_ang_dt; + input_sample.delta_vel = accel * input_sample.delta_vel_dt; + + // WHEN: adding samples at the double rate as the target rate + EXPECT_FALSE(sampler.update(input_sample)); + input_sample.time_us += 4000; + + // THEN: after two more samples a second downsampled sample is ready + EXPECT_TRUE(sampler.update(input_sample)); + input_sample.time_us += 4000; + + // THEN: downsampled sample should fit the adapted input data + output_sample = sampler.getDownSampledImuAndTriggerReset(); + EXPECT_FLOAT_EQ(output_sample.delta_ang_dt, 0.008f); + EXPECT_FLOAT_EQ(output_sample.delta_vel_dt, 0.008f); + EXPECT_TRUE(matrix::isEqual(ang_vel * 0.008f, output_sample.delta_ang, 1e-10f)); + EXPECT_TRUE(matrix::isEqual(accel * 0.008f, output_sample.delta_vel, 1e-10f)); +} diff --git a/src/lib/ecl/test/test_EKF_initialization.cpp b/src/lib/ecl/test/test_EKF_initialization.cpp new file mode 100644 index 0000000000..9f2b20c6e0 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_initialization.cpp @@ -0,0 +1,272 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" + +class EkfInitializationTest : public ::testing::Test { + public: + EkfInitializationTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + const float _init_tilt_period = 1.0; // seconds + + // GTests is calling this + void SetUp() override + { + _ekf->init(0); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } + + void initializedOrienationIsMatchingGroundTruth(Quatf true_quaternion) + { + const Quatf quat_est = _ekf->getQuaternion(); + const float precision = 0.0002f; // TODO: this is only required for the pitch90 test to pass + EXPECT_TRUE(matrix::isEqual(quat_est, true_quaternion, precision)) + << "quat est = " << quat_est(0) << ", " << quat_est(1) << ", " + << quat_est(2) << ", " << quat_est(3) + << "\nquat true = " << true_quaternion(0) << ", " << true_quaternion(1) << ", " + << true_quaternion(2) << ", " << true_quaternion(3); + } + + void validStateAfterOrientationInitialization() + { + quaternionVarianceBigEnoughAfterOrientationInitialization(); + velocityAndPositionCloseToZero(); + velocityAndPositionVarianceBigEnoughAfterOrientationInitialization(); + } + + void quaternionVarianceBigEnoughAfterOrientationInitialization() + { + const matrix::Vector quat_variance = _ekf_wrapper.getQuaternionVariance(); + const float quat_variance_limit = 0.0001f; + EXPECT_TRUE(quat_variance(1) > quat_variance_limit) << "quat_variance(1)" << quat_variance(1); + EXPECT_TRUE(quat_variance(2) > quat_variance_limit) << "quat_variance(2)" << quat_variance(2); + EXPECT_TRUE(quat_variance(3) > quat_variance_limit) << "quat_variance(3)" << quat_variance(3); + } + + void velocityAndPositionCloseToZero() + { + const Vector3f pos = _ekf->getPosition(); + const Vector3f vel = _ekf->getVelocity(); + + EXPECT_TRUE(matrix::isEqual(pos, Vector3f{}, 0.002f)) + << "pos = " << pos(0) << ", " << pos(1) << ", " << pos(2); + EXPECT_TRUE(matrix::isEqual(vel, Vector3f{}, 0.003f)) + << "vel = " << vel(0) << ", " << vel(1) << ", " << vel(2); + } + + void velocityAndPositionVarianceBigEnoughAfterOrientationInitialization() + { + const Vector3f pos_var = _ekf->getPositionVariance(); + const Vector3f vel_var = _ekf->getVelocityVariance(); + + const float pos_variance_limit = 0.1f; + EXPECT_TRUE(pos_var(0) > pos_variance_limit) << "pos_var(0)" << pos_var(0); + EXPECT_TRUE(pos_var(1) > pos_variance_limit) << "pos_var(1)" << pos_var(1); + EXPECT_TRUE(pos_var(2) > pos_variance_limit) << "pos_var(2)" << pos_var(2); + + const float vel_variance_limit = 0.3f; + EXPECT_TRUE(vel_var(0) > vel_variance_limit) << "vel_var(0)" << vel_var(0); + EXPECT_TRUE(vel_var(1) > vel_variance_limit) << "vel_var(1)" << vel_var(1); + EXPECT_TRUE(vel_var(2) > vel_variance_limit) << "vel_var(2)" << vel_var(2); + } + + void learningCorrectAccelBias() + { + const Dcmf R_to_earth = Dcmf(_ekf->getQuaternion()); + const Vector3f dvel_bias_var = _ekf_wrapper.getDeltaVelBiasVariance(); + const Vector3f accel_bias = _ekf->getAccelBias(); + + for (int i = 0; i < 3; i++){ + if (fabsf(R_to_earth(2, i)) > 0.8f) { + // Highly observable, the variance decreases + EXPECT_LT(dvel_bias_var(i), 4.0e-6f) << "axis " << i; + } + + EXPECT_LT(accel_bias(i), 4.0e-6f) << "axis " << i; + } + } +}; + +TEST_F(EkfInitializationTest, initializeWithZeroTilt) +{ + const float pitch = math::radians(0.0f); + const float roll = math::radians(0.0f); + const Eulerf euler_angles_sim(roll, pitch, 0.0f); + const Quatf quat_sim(euler_angles_sim); + + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_init_tilt_period); + + initializedOrienationIsMatchingGroundTruth(quat_sim); + validStateAfterOrientationInitialization(); + + _sensor_simulator.runSeconds(1.f); + learningCorrectAccelBias(); +} + +TEST_F(EkfInitializationTest, gyroBias) +{ + // GIVEN: a healthy filter + _sensor_simulator.runSeconds(20); + + // WHEN: there is a yaw gyro bias after initial convergence of the filter + _sensor_simulator._imu.setGyroData(Vector3f(0.f, 0.f, 0.1f)); + + // THEN: the vertical accel bias should not be affected + Vector3f accel_bias; + for (int i = 0; i < 100; i++) { + _sensor_simulator.runSeconds(0.5); + accel_bias = _ekf->getAccelBias(); + if (fabsf(accel_bias(2)) > 0.3f) { + + // Print state covariance and correlation matrices for debugging + const matrix::SquareMatrix P = _ekf->covariances(); + + printf("State covariance:\n"); + for (int i = 0; i <= 15; i++) { + for (int j = 0; j <= 15; j++) { + printf("%.3fe-9 ", ((double)P(i, j))*1e9); + } + printf("\n"); + } + + printf("State correlation:\n"); + printf("\t0\t1\t2\t3\t4\t5\t6\t7\t8\t9\t10\t11\t12\t13\t14\t15\n"); + for (uint8_t i = 0; i <= 15; i++) { + printf("%d| ", i); + for (uint8_t j = 0; j <= 15; j++) { + double corr = sqrt(abs(P(i, i) * P(j, j))); + + if (corr > 0.0) corr = double(abs(P(i, j))) / corr; + printf("%.3f\t", corr); + } + printf("\n"); + } + + printf("Accel bias = (%f, %f, %f)\n", (double)accel_bias(0), (double)accel_bias(1), (double)accel_bias(2)); + + Vector3f gyro_bias = _ekf->getGyroBias(); + printf("Gyro bias = (%f, %f, %f)\n", (double)gyro_bias(0), (double)gyro_bias(1), (double)gyro_bias(2)); + + EXPECT_TRUE(false); + break; + } + } +} + +TEST_F(EkfInitializationTest, initializeHeadingWithZeroTilt) +{ + const float pitch = math::radians(0.0f); + const float roll = math::radians(0.0f); + const float yaw = math::radians(90.0f); + const Eulerf euler_angles_sim(roll, pitch, yaw); + const Quatf quat_sim(euler_angles_sim); + + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_init_tilt_period); + + initializedOrienationIsMatchingGroundTruth(quat_sim); + validStateAfterOrientationInitialization(); + + _sensor_simulator.runSeconds(1.f); + learningCorrectAccelBias(); +} + +TEST_F(EkfInitializationTest, initializeWithTilt) +{ + const float pitch = math::radians(30.0f); + const float roll = math::radians(60.0f); + const Eulerf euler_angles_sim(roll, pitch, 0.0f); + const Quatf quat_sim(euler_angles_sim); + + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_init_tilt_period); + + initializedOrienationIsMatchingGroundTruth(quat_sim); + validStateAfterOrientationInitialization(); + + _sensor_simulator.runSeconds(1.f); + learningCorrectAccelBias(); +} + +TEST_F(EkfInitializationTest, initializeWithPitch90) +{ + const float pitch = math::radians(90.0f); + const float roll = math::radians(0.0f); + const Eulerf euler_angles_sim(roll, pitch, 0.0f); + const Quatf quat_sim(euler_angles_sim); + + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_init_tilt_period); + + initializedOrienationIsMatchingGroundTruth(quat_sim); + // TODO: Quaternion Variance is smaller and vel x is larger + // in this case than in the other cases + validStateAfterOrientationInitialization(); + + _sensor_simulator.runSeconds(1.f); + learningCorrectAccelBias(); +} + +TEST_F(EkfInitializationTest, initializeWithRoll90) +{ + const float pitch = math::radians(0.0f); + const float roll = math::radians(90.0f); + const Eulerf euler_angles_sim(roll, pitch, 0.0f); + const Quatf quat_sim(euler_angles_sim); + + _sensor_simulator.simulateOrientation(quat_sim); + _sensor_simulator.runSeconds(_init_tilt_period); + + initializedOrienationIsMatchingGroundTruth(quat_sim); + validStateAfterOrientationInitialization(); + + _sensor_simulator.runSeconds(1.f); + learningCorrectAccelBias(); +} diff --git a/src/lib/ecl/test/test_EKF_measurementSampling.cpp b/src/lib/ecl/test/test_EKF_measurementSampling.cpp new file mode 100644 index 0000000000..d053d0d17c --- /dev/null +++ b/src/lib/ecl/test/test_EKF_measurementSampling.cpp @@ -0,0 +1,78 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include "EKF/ekf.h" + +class EkfMeasurementSamplingTest : public ::testing::Test +{ + public: + EkfMeasurementSamplingTest(): ::testing::Test(), + _ekf{std::make_shared()}{}; + + std::shared_ptr _ekf; + + void SetUp() override + { + _ekf->init(0); + } +}; + +TEST_F(EkfMeasurementSamplingTest, baroDownSampling) +{ + // Need to send imu samples to initialise + imuSample imu_sample; + + // WHEN: baro data = {1, -1 , 1, -1, ...} being set at high rate + int baro_rate_Hz = 10000; + uint64_t time = 0; + float baro_data = 1.0f; + for(int i = 0; i < 2 * baro_rate_Hz; i++) + { + if(i % 100 == 0) + { + // send imu data at a 100 times lower rate + imu_sample.time_us = time; + _ekf->setIMUData(imu_sample); + } + _ekf->setBaroData(baroSample{time, baro_data}); + baro_data *= -1.0f; + time += 1000000 / baro_rate_Hz; + } + _ekf->update(); + + // THEN: average and buffered baro dato should be close to zero + baroSample baro_sample_from_buffer = _ekf->get_baro_sample_delayed(); + EXPECT_NEAR(baro_sample_from_buffer.hgt, 0.0f, 0.01f); +} diff --git a/src/lib/ecl/test/test_EKF_ringbuffer.cpp b/src/lib/ecl/test/test_EKF_ringbuffer.cpp new file mode 100644 index 0000000000..fc26d9187b --- /dev/null +++ b/src/lib/ecl/test/test_EKF_ringbuffer.cpp @@ -0,0 +1,159 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include "EKF/ekf.h" + +struct sample { + uint64_t time_us; + float data[3]; +}; + + +class EkfRingBufferTest : public ::testing::Test { + public: + + sample _x, _y, _z; + RingBuffer* _buffer; + + void SetUp() override + { + _buffer = new RingBuffer(); + _x.time_us = 1000000; + _x.data[0] = _x.data[1] = _x.data[2] = 1.5f; + + _y.time_us = 2000000; + _y.data[0] = _y.data[1] = _y.data[2] = 3.0f; + + _z.time_us = 3000000; + _z.data[0] = _z.data[1] = _z.data[2] = 4.0f; + } + + void TearDown() override + { + delete _buffer; + } +}; + +TEST_F(EkfRingBufferTest, goodInitialisation) +{ + // WHEN: buffer was allocated + // THEN: allocation should have succeed + ASSERT_EQ(true, _buffer->allocate(3)); + +} + +TEST_F(EkfRingBufferTest, badInitialisation) +{ + // WHEN: buffer allocation input is bad + // THEN: allocation should fail + + // TODO: Change buffer implementation to pass this test + // ASSERT_EQ(false, _buffer->allocate(-1)); + // ASSERT_EQ(false, _buffer->allocate(0)); +} + +TEST_F(EkfRingBufferTest, orderOfSamples) +{ + ASSERT_EQ(true, _buffer->allocate(3)); + // GIVEN: allocated buffer + // WHEN: adding multiple samples + // THEN: they should be added in order + _buffer->push(_x); + + EXPECT_EQ(_x.time_us, _buffer->get_newest().time_us); + EXPECT_EQ(_x.time_us, _buffer->get_oldest().time_us); + + _buffer->push(_z); + _buffer->push(_y); + + EXPECT_EQ(_x.time_us, _buffer->get_oldest().time_us); + EXPECT_EQ(_y.time_us, _buffer->get_newest().time_us); +} + +TEST_F(EkfRingBufferTest, popSample) +{ + ASSERT_EQ(true, _buffer->allocate(3)); + _buffer->push(_x); + _buffer->push(_y); + _buffer->push(_z); + + // GIVEN: allocated and filled buffer + + sample pop = {}; + // WHEN: we want to retrieve a sample that is older than any in the buffer + // THEN: we should not get any sample + EXPECT_EQ(false, _buffer->pop_first_older_than(0, &pop)); + + // WHEN: when calling "pop_first_older_than" + // THEN: we should get the first sample from the head that is older + EXPECT_EQ(true, _buffer->pop_first_older_than(_x.time_us+1, &pop)); + EXPECT_EQ(_x.time_us, pop.time_us); + EXPECT_EQ(true, _buffer->pop_first_older_than(_y.time_us+10, &pop)); + EXPECT_EQ(_y.time_us, pop.time_us); + EXPECT_EQ(true, _buffer->pop_first_older_than(_z.time_us+100, &pop)); + EXPECT_EQ(_z.time_us, pop.time_us); + // TODO: When changing the order of popping sample it does not behave as expected, fix this +} + +TEST_F(EkfRingBufferTest, askingForTooNewSample) +{ + ASSERT_EQ(true, _buffer->allocate(3)); + _buffer->push(_x); + _buffer->push(_y); + _buffer->push(_z); + + sample pop = {}; + // WHEN: all buffered samples are older by 0.1s than your query timestamp + // THEN: should get no sample returned + EXPECT_EQ(true, _buffer->pop_first_older_than(_z.time_us+99000, &pop)); + EXPECT_EQ(false, _buffer->pop_first_older_than(_y.time_us+100000, &pop)); +} + +TEST_F(EkfRingBufferTest, reallocateBuffer) +{ + ASSERT_EQ(true, _buffer->allocate(5)); + _buffer->push(_x); + _buffer->push(_y); + _buffer->push(_y); + _buffer->push(_y); + _buffer->push(_z); + + // GIVEN: allocated and filled buffer + // WHEN: do another allocate call + _buffer->allocate(3); + // THEN: its length should update + EXPECT_EQ(3, _buffer->get_length()); + +} diff --git a/src/lib/ecl/test/test_EKF_terrain_estimator.cpp b/src/lib/ecl/test/test_EKF_terrain_estimator.cpp new file mode 100644 index 0000000000..6bc6b22134 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_terrain_estimator.cpp @@ -0,0 +1,176 @@ +/**************************************************************************** + * + * Copyright (c) 2020 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Test the terrain estimator + * @author Mathieu Bresciani + */ + +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" + +class EkfTerrainTest : public ::testing::Test { + public: + + EkfTerrainTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _ekf->init(0); + _sensor_simulator.runSeconds(2); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } + + void runFlowAndRngScenario(const float rng_height, const float flow_height) + { + _sensor_simulator.startGps(); + _ekf->set_min_required_gps_health_time(1e6); + _ekf_wrapper.enableGpsFusion(); + _ekf_wrapper.setBaroHeight(); + _sensor_simulator.runSeconds(2); // Run to pass the GPS checks + + const Vector3f simulated_velocity(0.5f, -1.0f, 0.f); + + // Configure GPS simulator data + _sensor_simulator._gps.setVelocity(simulated_velocity); + _sensor_simulator._gps.setPositionRateNED(simulated_velocity); + + // Configure range finder simulator data + _sensor_simulator._rng.setData(rng_height, 100); + _sensor_simulator._rng.setLimits(0.1f, 20.f); + _sensor_simulator.startRangeFinder(); + + // Configure optical flow simulator data + flowSample flow_sample = _sensor_simulator._flow.dataAtRest(); + flow_sample.flow_xy_rad = + Vector2f( simulated_velocity(1) * flow_sample.dt / flow_height, + -simulated_velocity(0) * flow_sample.dt / flow_height); + _sensor_simulator._flow.setData(flow_sample); + const float max_flow_rate = 5.f; + const float min_ground_distance = 0.f; + const float max_ground_distance = 50.f; + _ekf->set_optical_flow_limits(max_flow_rate, min_ground_distance, max_ground_distance); + _sensor_simulator.startFlow(); + + _ekf->set_in_air_status(true); + _sensor_simulator.runSeconds(8); + } +}; + +TEST_F(EkfTerrainTest, setFlowAndRangeTerrainFusion) +{ + // WHEN: simulate being 5m above ground + // By default, both rng and flow aiding are active + const float simulated_distance_to_ground = 1.f; + _sensor_simulator._rng.setData(simulated_distance_to_ground, 100); + _sensor_simulator._rng.setLimits(0.1f, 9.f); + _sensor_simulator.startRangeFinder(); + _ekf->set_in_air_status(true); + _sensor_simulator.runSeconds(1.5f); + + // THEN: By default, both rng and flow aiding are active + EXPECT_TRUE(_ekf_wrapper.isIntendingTerrainRngFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingTerrainFlowFusion()); + const float estimated_distance_to_ground = _ekf->getTerrainVertPos(); + EXPECT_FLOAT_EQ(estimated_distance_to_ground, simulated_distance_to_ground); + + // WHEN: rng fusion is disabled + _ekf_wrapper.disableTerrainRngFusion(); + _sensor_simulator.runSeconds(0.2); + + // THEN: only rng fusion should be disabled + EXPECT_FALSE(_ekf_wrapper.isIntendingTerrainRngFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingTerrainFlowFusion()); + + // WHEN: flow is now diabled + _ekf_wrapper.disableTerrainFlowFusion(); + _sensor_simulator.runSeconds(0.2); + + // THEN: flow is now also disabled + EXPECT_FALSE(_ekf_wrapper.isIntendingTerrainRngFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingTerrainFlowFusion()); +} + +TEST_F(EkfTerrainTest, testFlowForTerrainFusion) +{ + // GIVEN: flow for terrain enabled but not range finder + _ekf_wrapper.enableTerrainFlowFusion(); + _ekf_wrapper.disableTerrainRngFusion(); + + // WHEN: the sensors do not agree + const float rng_height = 1.f; + const float flow_height = 5.f; + runFlowAndRngScenario(rng_height, flow_height); + + // THEN: the estimator should use flow for terrain and the estimated terrain height + // should converge to the simulated height + EXPECT_FALSE(_ekf_wrapper.isIntendingTerrainRngFusion()); + EXPECT_TRUE(_ekf_wrapper.isIntendingTerrainFlowFusion()); + + const float estimated_distance_to_ground = _ekf->getTerrainVertPos(); + EXPECT_NEAR(estimated_distance_to_ground, flow_height, 0.5f); +} + +TEST_F(EkfTerrainTest, testRngForTerrainFusion) +{ + // GIVEN: rng for terrain but not flow + _ekf_wrapper.disableTerrainFlowFusion(); + _ekf_wrapper.enableTerrainRngFusion(); + + // WHEN: the sensors do not agree + const float rng_height = 1.f; + const float flow_height = 5.f; + runFlowAndRngScenario(rng_height, flow_height); + + // THEN: the estimator should use rng for terrain and the estimated terrain height + // should converge to the simulated height + EXPECT_TRUE(_ekf_wrapper.isIntendingTerrainRngFusion()); + EXPECT_FALSE(_ekf_wrapper.isIntendingTerrainFlowFusion()); + + const float estimated_distance_to_ground = _ekf->getTerrainVertPos(); + EXPECT_NEAR(estimated_distance_to_ground, rng_height, 0.01f); +} diff --git a/src/lib/ecl/test/test_EKF_utils.cpp b/src/lib/ecl/test/test_EKF_utils.cpp new file mode 100644 index 0000000000..81df57446b --- /dev/null +++ b/src/lib/ecl/test/test_EKF_utils.cpp @@ -0,0 +1,99 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file test_EKF_utils.cpp + * + * @brief Unit tests for the miscellaneous EKF utilities + */ + +#include +#include +#include +#include + +#include "EKF/utils.hpp" + +TEST(eclPowfTest, compareToStandardImplementation) +{ + std::vector exponents = {-3,-2,-1,-0,0,1,2,3}; + std::vector bases = {-INFINITY, -11.1f,-0.5f, -0.f, 0.f, 0.5f, 11.1f, INFINITY}; + + for (auto const exponent : exponents) { + for (auto const basis : bases) { + EXPECT_EQ(ecl::powf(basis, exponent), + std::pow(basis, static_cast(exponent))); + } + } +} + +TEST(euler312YawTest, fromQuaternion) +{ + matrix::Quatf q1(3.5f,2.4f,-0.5f,-3.f); + q1.normalize(); + const matrix::Eulerf euler1(q1); + EXPECT_FLOAT_EQ(euler1(2), getEuler321Yaw(q1)); + + matrix::Quatf q2(0.f,0,-1.f,0.f); + q2.normalize(); + const matrix::Eulerf euler2(q2); + EXPECT_FLOAT_EQ(euler2(2), getEuler321Yaw(q2)); +} + +TEST(shouldUse321RotationSequenceTest, pitch90) +{ + matrix::Eulerf euler(0.f, math::radians(90), 0.f); + matrix::Dcmf R(euler); + EXPECT_FALSE(shouldUse321RotationSequence(R)); +} + +TEST(shouldUse321RotationSequenceTest, roll90) +{ + matrix::Eulerf euler(math::radians(90.f), 0.f, 0.f); + matrix::Dcmf R(euler); + EXPECT_TRUE(shouldUse321RotationSequence(R)); +} + +TEST(shouldUse321RotationSequenceTest, moreRollThanPitch) +{ + matrix::Eulerf euler(math::radians(45.f), math::radians(30.f), 0.f); + matrix::Dcmf R(euler); + EXPECT_TRUE(shouldUse321RotationSequence(R)); +} + +TEST(shouldUse321RotationSequenceTest, morePitchThanRoll) +{ + matrix::Eulerf euler(math::radians(30.f), math::radians(45.f), 0.f); + matrix::Dcmf R(euler); + EXPECT_FALSE(shouldUse321RotationSequence(R)); +} diff --git a/src/lib/ecl/test/test_EKF_withReplayData.cpp b/src/lib/ecl/test/test_EKF_withReplayData.cpp new file mode 100644 index 0000000000..f9b686e4f3 --- /dev/null +++ b/src/lib/ecl/test/test_EKF_withReplayData.cpp @@ -0,0 +1,93 @@ +/**************************************************************************** + * + * Copyright (c) 2019 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include +#include "EKF/ekf.h" +#include "sensor_simulator/sensor_simulator.h" +#include "sensor_simulator/ekf_wrapper.h" +#include "sensor_simulator/ekf_logger.h" + +class EkfReplayTest : public ::testing::Test { + public: + EkfReplayTest(): ::testing::Test(), + _ekf{std::make_shared()}, + _sensor_simulator(_ekf), + _ekf_wrapper(_ekf), + _ekf_logger(_ekf) {}; + + std::shared_ptr _ekf; + SensorSimulator _sensor_simulator; + EkfWrapper _ekf_wrapper; + EkfLogger _ekf_logger; +}; + +TEST_F(EkfReplayTest, irisGps) +{ + _sensor_simulator.loadSensorDataFromFile("../../../test/replay_data/iris_gps.csv"); + _ekf_logger.setFilePath("../../../test/change_indication/iris_gps.csv"); + + // Start simulation and enable fusion of additional sensor types here + // By default the IMU, Baro and Mag sensor simulators are already running + _sensor_simulator.startGps(); + _ekf_wrapper.enableGpsFusion(); + + uint8_t logging_rate_hz = 10; + for(int i = 0; i < 35 * logging_rate_hz; ++i) + { + _sensor_simulator.runReplaySeconds(1.0f / logging_rate_hz); + _ekf_logger.writeStateToFile(); + } +} + +TEST_F(EkfReplayTest, ekfGsfReset) +{ + _sensor_simulator.loadSensorDataFromFile("../../../test/replay_data/ekf_gsf_reset.csv"); + _ekf_logger.setFilePath("../../../test/change_indication/ekf_gsf_reset.csv"); + + // Start simulation and enable fusion of additional sensor types here + // By default the IMU, Baro and Mag sensor simulators are already running + _sensor_simulator.startGps(); + _ekf_wrapper.enableGpsFusion(); + auto params = _ekf->getParamHandle(); + params->gps_vel_innov_gate = 1.f; + params->gps_pos_innov_gate = 1.f; + + uint8_t logging_rate_hz = 10; + for(int i = 0; i < 39 * logging_rate_hz; ++i) + { + _sensor_simulator.runReplaySeconds(1.0f / logging_rate_hz); + _ekf_logger.writeStateToFile(); + } +} diff --git a/src/lib/ecl/test/test_SensorRangeFinder.cpp b/src/lib/ecl/test/test_SensorRangeFinder.cpp new file mode 100644 index 0000000000..901af5fd09 --- /dev/null +++ b/src/lib/ecl/test/test_SensorRangeFinder.cpp @@ -0,0 +1,329 @@ +/**************************************************************************** + * + * Copyright (c) 2020 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include "EKF/common.h" +#include "EKF/sensor_range_finder.hpp" +#include + +using estimator::rangeSample; +using matrix::Dcmf; +using matrix::Eulerf; +using namespace estimator::sensor; + +class SensorRangeFinderTest : public ::testing::Test { +public: + // Setup the Ekf with synthetic measurements + void SetUp() override + { + _range_finder.setPitchOffset(0.f); + _range_finder.setCosMaxTilt(0.707f); + _range_finder.setLimits(_min_range, _max_range); + } + + // Use this method to clean up any memory, network etc. after each test + void TearDown() override + { + } + +protected: + SensorRangeFinder _range_finder{}; + const rangeSample _good_sample{(uint64_t)2e6, 1.f, 100}; // {time_us, range, quality} + const float _min_range{0.5f}; + const float _max_range{10.f}; + + void updateSensorAtRate(uint64_t duration_us, uint64_t dt_update_us, uint64_t dt_sensor_us); + void testTilt(const Eulerf &euler, bool should_pass); +}; + +void SensorRangeFinderTest::updateSensorAtRate(uint64_t duration_us, uint64_t dt_update_us, uint64_t dt_sensor_us) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + rangeSample new_sample = _good_sample; + uint64_t t_now_us = _good_sample.time_us; + for (int i = 0; i < int(duration_us / dt_update_us); i++) { + t_now_us += dt_update_us; + if ((i % int(dt_sensor_us / dt_update_us)) == 0) { + new_sample.rng += 0.2f; // update the range to not trigger the stuck detection + if (new_sample.rng > _max_range) { + new_sample.rng = _min_range; + } + new_sample.time_us = t_now_us; + _range_finder.setSample(new_sample); + } + _range_finder.runChecks(t_now_us, attitude); + } +} + +void SensorRangeFinderTest::testTilt(const Eulerf &euler, bool should_pass) +{ + const Dcmf attitude{euler}; + _range_finder.setSample(_good_sample); + _range_finder.runChecks(_good_sample.time_us, attitude); + + if (should_pass) { + EXPECT_TRUE(_range_finder.isDataHealthy()); + EXPECT_TRUE(_range_finder.isHealthy()); + + } else { + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + } +} + +TEST_F(SensorRangeFinderTest, setRange) +{ + rangeSample sample{}; + sample.rng = 1.f; + sample.time_us = 1e6; + sample.quality = 9; + + _range_finder.setRange(sample.rng); + _range_finder.setDataReadiness(true); + _range_finder.setValidity(true); + EXPECT_TRUE(_range_finder.isDataHealthy()); + EXPECT_TRUE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, goodData) +{ + // WHEN: the drone is leveled and the data is good + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + _range_finder.setSample(_good_sample); + _range_finder.runChecks(_good_sample.time_us, attitude); + + // THEN: the data can be used for aiding + EXPECT_TRUE(_range_finder.isDataHealthy()); + EXPECT_TRUE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, tiltExceeded) +{ + const Eulerf zero(0.f, 0.f, 0.f); + const Eulerf pitch_46(0.f, 0.8f, 0.f); + const Eulerf pitch_minus46(0.f, -0.8f, 0.f); + const Eulerf pitch_40(0.f, 0.7f, 1.f); + const Eulerf pitch_minus40(0.f, -0.7f, 0.f); + const Eulerf roll_46(0.8f, 0.f, 0.f); + const Eulerf roll_minus46(-0.8f, 0.f, 0.f); + const Eulerf roll_40(0.7f, 0.f, 2.f); + const Eulerf roll_minus40(-0.7f, 0.f, 3.f); + const Eulerf roll_28_pitch_minus28(0.5f, -0.5f, 4.f); + const Eulerf roll_46_pitch_minus46(0.8f, -0.8f, 4.f); + + testTilt(zero, true); + testTilt(pitch_46, false); + testTilt(pitch_minus46, false); + testTilt(pitch_40, true); + testTilt(pitch_minus40, true); + testTilt(roll_46, false); + testTilt(roll_minus46, false); + testTilt(roll_40, true); + testTilt(roll_minus40, true); + testTilt(roll_28_pitch_minus28, true); + testTilt(roll_46_pitch_minus46, false); + +} + +TEST_F(SensorRangeFinderTest, rangeMaxExceeded) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + // WHEN: the measured range is larger than the maximum + rangeSample bad_sample = _good_sample; + bad_sample.rng = _max_range + 0.01f; + _range_finder.setSample(bad_sample); + _range_finder.runChecks(bad_sample.time_us, attitude); + + // THEN: the data should be marked as unhealthy + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, rangeMinExceeded) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + // WHEN: the measured range is shorter than the minimum + rangeSample bad_sample = _good_sample; + bad_sample.rng = _min_range - 0.01f; + _range_finder.setSample(bad_sample); + _range_finder.runChecks(bad_sample.time_us, attitude); + + // THEN: the data should be marked as unhealthy + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, outOfDate) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + // WHEN: the data is outdated + rangeSample outdated_sample = _good_sample; + outdated_sample.time_us = 0; + uint64_t t_now = _good_sample.time_us; + _range_finder.setSample(outdated_sample); + _range_finder.runChecks(t_now, attitude); + + // THEN: the data should be marked as unhealthy + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, rangeStuck) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + // WHEN: the data is first not valid and then + // constantly the same + rangeSample new_sample = _good_sample; + const uint64_t dt = 3e5; + const uint64_t stuck_timeout = 11e6; + new_sample.quality = 0; + for (int i = 0; i < int(stuck_timeout / dt); i++) { + _range_finder.setSample(new_sample); + _range_finder.runChecks(new_sample.time_us, attitude); + new_sample.time_us += dt; + } + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + + new_sample.quality = 100; + // we need a few sample to pass the hysteresis check + for (int i = 0; i < int(2e6 / dt); i++) { + _range_finder.setSample(new_sample); + _range_finder.runChecks(new_sample.time_us, attitude); + new_sample.time_us += dt; + } + + // THEN: the data should be marked as unhealthy + // because the sensor is "stuck" + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + + // BUT WHEN: we continue to send samples but with changing distance + for (int i = 0; i < 2; i++) { + new_sample.rng += 1.f; + _range_finder.setSample(new_sample); + _range_finder.runChecks(new_sample.time_us, attitude); + new_sample.time_us += dt; + } + + // THEN: the data should be marked as healthy + // because the sensor is not "stuck" anymore + EXPECT_TRUE(_range_finder.isDataHealthy()); + EXPECT_TRUE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, qualityHysteresis) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + // WHEN: the data is first bad and then good + rangeSample new_sample = _good_sample; + + new_sample.quality = 0; + _range_finder.setSample(new_sample); + _range_finder.runChecks(new_sample.time_us, attitude); + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + + new_sample.quality = _good_sample.quality; + _range_finder.setSample(new_sample); + _range_finder.runChecks(new_sample.time_us, attitude); + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + + // AND: we need to put enough good data to pass the hysteresis + const uint64_t dt = 3e5; + const uint64_t hyst_time = 1e6; + for (int i = 0; i < int(hyst_time / dt) + 2; i++) { + _range_finder.setSample(new_sample); + _range_finder.runChecks(new_sample.time_us, attitude); + new_sample.time_us += dt; + } + + // THEN: the data is again declared healthy + EXPECT_TRUE(_range_finder.isDataHealthy()); + EXPECT_TRUE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, continuity) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + + // WHEN: the data rate is too slow + const uint64_t dt_update_us = 10e3; + uint64_t dt_sensor_us = 4e6; + uint64_t duration_us = 8e6; + updateSensorAtRate(duration_us, dt_update_us, dt_sensor_us); + + // THEN: the data should be marked as unhealthy + // Note that it also fails the out-of-date test here + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + + // AND WHEN: the data rate is acceptable + dt_sensor_us = 3e5; + duration_us = 5e5; + updateSensorAtRate(duration_us, dt_update_us, dt_sensor_us); + + // THEN: it should still fail until the filter converge + // to the new datarate + EXPECT_FALSE(_range_finder.isDataHealthy()); + EXPECT_FALSE(_range_finder.isHealthy()); + + updateSensorAtRate(duration_us, dt_update_us, dt_sensor_us); + EXPECT_TRUE(_range_finder.isDataHealthy()); + EXPECT_TRUE(_range_finder.isHealthy()); +} + +TEST_F(SensorRangeFinderTest, distBottom) +{ + const Dcmf attitude{Eulerf(0.f, 0.f, 0.f)}; + rangeSample sample{}; + sample.rng = 1.f; + sample.time_us = 1e6; + sample.quality = 9; + + _range_finder.setSample(sample); + _range_finder.runChecks(sample.time_us, attitude); + EXPECT_FLOAT_EQ(_range_finder.getDistBottom(), sample.rng); + + const Dcmf attitude20{Eulerf(-0.35f, 0.f, 0.f)}; + _range_finder.runChecks(sample.time_us, attitude20); + EXPECT_FLOAT_EQ(_range_finder.getDistBottom(), sample.rng * cosf(-0.35)); +} diff --git a/src/lib/ecl/test/test_geo.cpp b/src/lib/ecl/test/test_geo.cpp new file mode 100644 index 0000000000..2970bdf5a7 --- /dev/null +++ b/src/lib/ecl/test/test_geo.cpp @@ -0,0 +1,220 @@ +/**************************************************************************** + * + * Copyright (c) 2020 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include +#include +#include + +class GeoTest : public ::testing::Test { + public: + void SetUp() override + { + origin.timestamp = 0; + origin.lat_rad = math::radians(473566094 / 1e7); + origin.lon_rad = math::radians(85190237 / 1e7); + origin.sin_lat = sin(origin.lat_rad); + origin.cos_lat = cos(origin.lat_rad); + origin.init_done = true; + } + + protected: + map_projection_reference_s origin; + +}; + + +TEST_F(GeoTest, reprojectProject) +{ + // GIVEN: x and y coordinates in the local cartesian frame + float x = 0.5; + float y = 1; + double lat; + double lon; + map_projection_reproject(&origin, x, y, &lat, &lon); + float x_new; + float y_new; + map_projection_project(&origin, lat, lon, &x_new, &y_new); + double lat_new; + double lon_new; + map_projection_reproject(&origin, x_new, y_new, &lat_new, &lon_new); + EXPECT_FLOAT_EQ(x, x_new); + EXPECT_FLOAT_EQ(y, y_new); + EXPECT_FLOAT_EQ(lat, lat_new); + EXPECT_FLOAT_EQ(lon, lon_new); +} + +TEST_F(GeoTest, projectReproject) +{ + // GIVEN: x and y coordinates in the local cartesian frame + double lat = 47.356616973876953; + double lon = 8.5190505981445313; + float x; + float y; + map_projection_project(&origin, lat, lon, &x, &y); + double lat_new; + double lon_new; + map_projection_reproject(&origin, x, y, &lat_new, &lon_new); + float x_new; + float y_new; + map_projection_project(&origin, lat_new, lon_new, &x_new, &y_new); + // WHEN: apply the mapping and its inverse the output should stay the same + EXPECT_FLOAT_EQ(x, x_new); + EXPECT_FLOAT_EQ(y, y_new); + EXPECT_FLOAT_EQ(lat, lat_new); + EXPECT_FLOAT_EQ(lon, lon_new); +} + +TEST_F(GeoTest, waypoint_from_heading_and_zero_distance) +{ + // GIVEN: a starting waypoint, a heading and a distance of 0 + double lat_start = -33; + double lon_start = 18; + float bearing = 0; + float dist = 0; + + double lat_target = 0; + double lon_target = 0; + + // WHEN: we get the next waypoint + waypoint_from_heading_and_distance(lat_start, lon_start, bearing, dist, &lat_target, &lon_target); + + // THEN: it should be the same + EXPECT_DOUBLE_EQ(lat_start, lat_target); + EXPECT_DOUBLE_EQ(lon_start, lon_target); +} + + +TEST_F(GeoTest, waypoint_from_heading_and_negative_distance) +{ + // GIVEN: a starting waypoint, a heading and negative distance + double lat_start = -33; + double lon_start = 18; + float bearing = 0; + float lat_offset = -0.01f; + float dist = CONSTANTS_RADIUS_OF_EARTH * M_PI / 180.f * lat_offset; + + double lat_target = 0; + double lon_target = 0; + + // WHEN: we get the next waypoint + waypoint_from_heading_and_distance(lat_start, lon_start, bearing, dist, &lat_target, &lon_target); + + // THEN: it should be the same + EXPECT_FLOAT_EQ(lat_start + lat_offset, lat_target); + EXPECT_DOUBLE_EQ(lon_start, lon_target); +} + +TEST_F(GeoTest, waypoint_from_heading_and_positive_distance) +{ + // GIVEN: a starting waypoint, a heading and positive distance + double lat_start = -33; + double lon_start = 18; + float bearing = 0; + float lat_offset = 0.01f; + float dist = CONSTANTS_RADIUS_OF_EARTH * M_PI / 180.f * lat_offset; + + double lat_target = 0; + double lon_target = 0; + + // WHEN: we get the next waypoint + waypoint_from_heading_and_distance(lat_start, lon_start, bearing, dist, &lat_target, &lon_target); + + // THEN: it should be the same + EXPECT_FLOAT_EQ(lat_start + lat_offset, lat_target); + EXPECT_DOUBLE_EQ(lon_start, lon_target); +} + +TEST_F(GeoTest, waypoint_from_line_and_zero_distance) +{ + // GIVEN: a starting waypoint, a heading and a distance of 0 + double lat_start = -33; + double lon_start = 18; + double lat_end = -32; + double lon_end = 18; + float dist = 0; + + double lat_target = 0; + double lon_target = 0; + + // WHEN: we get the next waypoint + create_waypoint_from_line_and_dist(lat_start, lon_start, lat_end, lon_end, dist, &lat_target, &lon_target); + + // THEN: it should be the same + EXPECT_DOUBLE_EQ(lat_start, lat_target); + EXPECT_DOUBLE_EQ(lon_start, lon_target); +} + +TEST_F(GeoTest, waypoint_from_line_and_positive_distance) +{ + // GIVEN: a starting waypoint, a heading and a positive distance + double lat_start = -33; + double lon_start = 18; + double lat_offset = 0.01; + double lat_end = lat_start + lat_offset; + double lon_end = 18; + float dist = CONSTANTS_RADIUS_OF_EARTH * M_PI / 180.f * lat_offset; + + double lat_target = 0; + double lon_target = 0; + + // WHEN: we get the next waypoint + create_waypoint_from_line_and_dist(lat_start, lon_start, lat_end, lon_end, dist, &lat_target, &lon_target); + + // THEN: it should be the same + EXPECT_FLOAT_EQ(lat_start + lat_offset, lat_target); + EXPECT_DOUBLE_EQ(lon_start, lon_target); +} + + +TEST_F(GeoTest, waypoint_from_line_and_negative_distance) +{ + // GIVEN: a starting waypoint, a heading and a negative distance + double lat_start = -33; + double lon_start = 18; + double lat_offset = 0.01; + double lat_end = lat_start + lat_offset; + double lon_end = 18; + float dist = -CONSTANTS_RADIUS_OF_EARTH * M_PI / 180.f * lat_offset; + + double lat_target = 0; + double lon_target = 0; + + // WHEN: we get the next waypoint + create_waypoint_from_line_and_dist(lat_start, lon_start, lat_end, lon_end, dist, &lat_target, &lon_target); + + // THEN: it should be the same + EXPECT_FLOAT_EQ(lat_start - lat_offset, lat_target); + EXPECT_DOUBLE_EQ(lon_start, lon_target); +} diff --git a/src/lib/ecl/test/test_geo_lookup.cpp b/src/lib/ecl/test/test_geo_lookup.cpp new file mode 100644 index 0000000000..9f187d0306 --- /dev/null +++ b/src/lib/ecl/test/test_geo_lookup.cpp @@ -0,0 +1,5085 @@ +/**************************************************************************** + * + * Copyright (c) 2020 Estimation and Control Library (ECL). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name ECL nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include + +#include + + +TEST(GeoLookupTest, declination) { + EXPECT_NEAR(get_mag_declination_degrees(-50, -180), 31.22632, 0.40062 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -175), 31.43125, 0.39369 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -170), 31.45948, 0.38791 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -165), 31.35965, 0.38308 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -160), 31.17413, 0.37904 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -155), 30.94218, 0.37566 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -150), 30.70103, 0.37282 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -145), 30.48387, 0.37042 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -140), 30.31479, 0.3684 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -135), 30.20241, 0.36666 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -130), 30.1344, 0.36518 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -125), 30.07459, 0.36393 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -120), 29.96382, 0.36293 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -115), 29.72417, 0.36222 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -110), 29.26595, 0.36189 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -105), 28.49674, 0.36206 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -100), 27.33155, 0.36289 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -95), 25.70302, 0.36451 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -90), 23.57105, 0.36709 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -85), 20.93084, 0.37074 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -80), 17.81904, 0.37556 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -75), 14.3166, 0.38159 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -70), 10.54671, 0.38884 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -65), 6.66556, 0.39729 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -60), 2.84542, 0.40694 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -55), -0.74804, 0.4178 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -50), -3.97893, 0.42987 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -45), -6.75956, 0.4431 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -40), -9.05999, 0.45733 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -35), -10.9081, 0.47225 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -30), -12.38211, 0.4873 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -25), -13.59895, 0.50169 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -20), -14.70193, 0.51445 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -15), -15.84874, 0.52446 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -10), -17.19785, 0.53063 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, -5), -18.89007, 0.53212 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 0), -21.02515, 0.52859 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 5), -23.64, 0.52027 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 10), -26.69905, 0.50801 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 15), -30.10306, 0.49306 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 20), -33.71351, 0.47684 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 25), -37.38188, 0.46071 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 30), -40.97281, 0.44576 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 35), -44.37557, 0.43276 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 40), -47.50516, 0.42217 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 45), -50.29733, 0.41421 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 50), -52.7019, 0.40895 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 55), -54.67675, 0.40639 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 60), -56.18302, 0.40653 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 65), -57.18072, 0.40939 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 70), -57.62356, 0.41509 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 75), -57.45223, 0.42383 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 80), -56.58685, 0.43591 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 85), -54.92077, 0.45168 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 90), -52.32019, 0.47137 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 95), -48.63641, 0.49485 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 100), -43.73928, 0.52108 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 105), -37.57814, 0.54773 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 110), -30.2617, 0.57098 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 115), -22.11535, 0.58641 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 120), -13.65199, 0.59083 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 125), -5.43631, 0.58389 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 130), 2.07839, 0.56802 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 135), 8.63511, 0.54687 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 140), 14.15725, 0.52376 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 145), 18.68449, 0.50101 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 150), 22.3122, 0.47994 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 155), 25.15328, 0.46114 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 160), 27.32, 0.44477 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 165), 28.91772, 0.43075 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 170), 30.04369, 0.41889 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 175), 30.78674, 0.40894 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-50, 180), 31.22632, 0.40062 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -180), 26.308, 0.37409 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -175), 26.61858, 0.37022 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -170), 26.7617, 0.36698 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -165), 26.77697, 0.3643 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -160), 26.69717, 0.36207 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -155), 26.55315, 0.36026 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -150), 26.37774, 0.35881 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -145), 26.20589, 0.35769 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -140), 26.07013, 0.35687 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -135), 25.99328, 0.35635 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -130), 25.98076, 0.35609 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -125), 26.01472, 0.3561 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -120), 26.05072, 0.35638 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -115), 26.0171, 0.35695 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -110), 25.81778, 0.35787 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -105), 25.33936, 0.35922 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -100), 24.46325, 0.36114 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -95), 23.08147, 0.36382 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -90), 21.11386, 0.36744 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -85), 18.52398, 0.37219 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -80), 15.33193, 0.37817 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -75), 11.62246, 0.38544 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -70), 7.54518, 0.39395 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -65), 3.30267, 0.40366 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -60), -0.87557, 0.41456 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -55), -4.76917, 0.42671 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -50), -8.20273, 0.44025 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -45), -11.07038, 0.4553 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -40), -13.34321, 0.47191 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -35), -15.06047, 0.48998 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -30), -16.31061, 0.50912 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -25), -17.21113, 0.52865 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -20), -17.89601, 0.54748 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -15), -18.51455, 0.56406 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -10), -19.23585, 0.57648 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, -5), -20.24342, 0.58283 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 0), -21.70682, 0.58173 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 5), -23.73427, 0.57286 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 10), -26.33183, 0.55714 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 15), -29.39668, 0.5365 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 20), -32.75018, 0.51338 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 25), -36.18963, 0.49012 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 30), -39.53151, 0.46857 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 35), -42.63165, 0.44991 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 40), -45.38497, 0.43476 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 45), -47.71501, 0.42327 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 50), -49.56255, 0.41536 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 55), -50.87734, 0.41079 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 60), -51.6133, 0.40931 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 65), -51.72525, 0.41066 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 70), -51.16542, 0.41461 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 75), -49.8792, 0.42093 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 80), -47.8034, 0.42936 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 85), -44.87329, 0.43948 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 90), -41.04506, 0.45055 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 95), -36.33483, 0.46139 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 100), -30.86013, 0.47048 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 105), -24.85408, 0.47636 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 110), -18.62665, 0.47816 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 115), -12.48431, 0.47591 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 120), -6.65787, 0.47038 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 125), -1.27896, 0.4626 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 130), 3.59834, 0.45349 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 135), 7.96181, 0.44372 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 140), 11.81514, 0.43376 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 145), 15.16672, 0.42396 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 150), 18.02767, 0.41455 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 155), 20.41321, 0.40575 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 160), 22.34507, 0.39769 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 165), 23.85415, 0.39047 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 170), 24.98228, 0.38415 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 175), 25.78119, 0.3787 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-45, 180), 26.308, 0.37409 + 2); + EXPECT_NEAR(get_mag_declination_degrees(-40, -180), 22.51027, 0.35465 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -175), 22.85602, 0.35262 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -170), 23.0537, 0.35098 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -165), 23.13675, 0.34967 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -160), 23.12769, 0.34864 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -155), 23.04478, 0.34786 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -150), 22.90952, 0.34732 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -145), 22.75012, 0.34703 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -140), 22.59904, 0.347 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -135), 22.48639, 0.34726 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -130), 22.43201, 0.34781 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -125), 22.43825, 0.34868 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -120), 22.4832, 0.34988 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -115), 22.51416, 0.3514 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -110), 22.44286, 0.35326 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -105), 22.14672, 0.35552 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -100), 21.47999, 0.35828 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -95), 20.29477, 0.36175 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -90), 18.46762, 0.36613 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -85), 15.92583, 0.37164 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -80), 12.66921, 0.37841 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -75), 8.78497, 0.38643 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -70), 4.45072, 0.39561 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -65), -0.08165, 0.40582 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -60), -4.52493, 0.41703 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -55), -8.61034, 0.42937 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -50), -12.13757, 0.4431 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -45), -15.00312, 0.45855 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -40), -17.20056, 0.47597 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -35), -18.79731, 0.49549 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -30), -19.89861, 0.51703 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -25), -20.61346, 0.54027 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -20), -21.03793, 0.56444 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -15), -21.266, 0.58804 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -10), -21.42263, 0.60868 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, -5), -21.69365, 0.62321 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 0), -22.31575, 0.62853 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 5), -23.50857, 0.62279 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 10), -25.38054, 0.60625 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 15), -27.8747, 0.58125 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 20), -30.7938, 0.55143 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 25), -33.87968, 0.52053 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 30), -36.89011, 0.49158 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 35), -39.637, 0.46645 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 40), -41.9876, 0.446 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 45), -43.84869, 0.43036 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 50), -45.15055, 0.41921 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 55), -45.83768, 0.41205 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 60), -45.86562, 0.40829 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 65), -45.20006, 0.40732 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 70), -43.8151, 0.40855 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 75), -41.69088, 0.41138 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 80), -38.81637, 0.41513 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 85), -35.20564, 0.41903 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 90), -30.92941, 0.42217 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 95), -26.14619, 0.42367 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 100), -21.10168, 0.42296 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 105), -16.07603, 0.42002 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 110), -11.30161, 0.41545 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 115), -6.90468, 0.41005 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 120), -2.90421, 0.40449 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 125), 0.74543, 0.39915 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 130), 4.10308, 0.39413 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 135), 7.2074, 0.38934 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 140), 10.06793, 0.38469 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 145), 12.67268, 0.38013 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 150), 14.99993, 0.37566 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 155), 17.02704, 0.37134 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 160), 18.73631, 0.36723 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 165), 20.12071, 0.36344 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 170), 21.18959, 0.36005 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 175), 21.97145, 0.35712 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-40, 180), 22.51027, 0.35465 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -180), 19.46112, 0.33991 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -175), 19.80007, 0.33903 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -170), 20.01391, 0.33842 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -165), 20.13465, 0.33802 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -160), 20.17729, 0.33781 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -155), 20.14725, 0.33776 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -150), 20.05139, 0.33787 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -145), 19.90536, 0.33816 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -140), 19.73406, 0.33867 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -135), 19.56698, 0.33943 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -130), 19.43181, 0.34048 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -125), 19.3478, 0.34187 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -120), 19.31708, 0.3436 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -115), 19.31226, 0.34567 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -110), 19.26276, 0.34807 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -105), 19.04743, 0.35083 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -100), 18.50231, 0.35403 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -95), 17.4459, 0.35787 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -90), 15.71585, 0.36259 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -85), 13.20679, 0.36841 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -80), 9.90202, 0.37542 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -75), 5.89503, 0.38357 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -70), 1.39386, 0.39266 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -65), -3.30216, 0.40252 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -60), -7.85749, 0.41311 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -55), -11.97234, 0.42463 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -50), -15.44282, 0.4375 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -45), -18.18721, 0.45214 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -40), -20.23506, 0.46892 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -35), -21.68862, 0.48804 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -30), -22.67083, 0.50965 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -25), -23.27767, 0.53374 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -20), -23.55556, 0.56009 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -15), -23.51902, 0.58777 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -10), -23.2073, 0.61467 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, -5), -22.75425, 0.63722 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 0), -22.42088, 0.65089 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 5), -22.5393, 0.65183 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 10), -23.37389, 0.63865 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 15), -24.99092, 0.61318 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 20), -27.23599, 0.57968 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 25), -29.82196, 0.5432 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 30), -32.44488, 0.50808 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 35), -34.85496, 0.47714 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 40), -36.87137, 0.45171 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 45), -38.36792, 0.43199 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 50), -39.25624, 0.4175 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 55), -39.4773, 0.40747 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 60), -38.99963, 0.40102 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 65), -37.81816, 0.39726 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 70), -35.94885, 0.39538 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 75), -33.42092, 0.3946 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 80), -30.27677, 0.3942 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 85), -26.58975, 0.39348 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 90), -22.495, 0.3918 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 95), -18.20558, 0.3888 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 100), -13.98167, 0.38451 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 105), -10.05478, 0.37941 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 110), -6.55381, 0.37418 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 115), -3.48187, 0.36939 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 120), -0.75038, 0.36535 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 125), 1.75953, 0.36207 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 130), 4.14293, 0.35937 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 135), 6.44444, 0.35703 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 140), 8.66095, 0.35484 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 145), 10.7611, 0.35269 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 150), 12.70476, 0.35054 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 155), 14.45279, 0.34839 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 160), 15.96998, 0.34631 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 165), 17.2289, 0.34435 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 170), 18.2182, 0.34259 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 175), 18.95026, 0.3411 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-35, 180), 19.46112, 0.33991 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -180), 16.96866, 0.32861 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -175), 17.27172, 0.32844 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -170), 17.47119, 0.32849 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -165), 17.60262, 0.32871 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -160), 17.67786, 0.32908 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -155), 17.69218, 0.32956 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -150), 17.6381, 0.33017 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -145), 17.5164, 0.3309 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -140), 17.33974, 0.3318 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -135), 17.13067, 0.33291 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -130), 16.91811, 0.33427 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -125), 16.73268, 0.33592 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -120), 16.59739, 0.33788 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -115), 16.50995, 0.34014 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -110), 16.42004, 0.34268 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -105), 16.213, 0.34552 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -100), 15.71372, 0.34875 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -95), 14.71598, 0.35256 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -90), 13.02891, 0.35719 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -85), 10.52572, 0.36285 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -80), 7.18392, 0.36957 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -75), 3.111, 0.37723 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -70), -1.45339, 0.38555 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -65), -6.17165, 0.39433 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -60), -10.67965, 0.40359 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -55), -14.67082, 0.41365 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -50), -17.95707, 0.425 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -45), -20.4861, 0.43812 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -40), -22.31903, 0.45332 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -35), -23.58162, 0.47074 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -30), -24.40325, 0.49045 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -25), -24.86209, 0.51252 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -20), -24.95978, 0.53697 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -15), -24.64319, 0.56344 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -10), -23.87303, 0.59055 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, -5), -22.71597, 0.61535 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 0), -21.41232, 0.63339 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 5), -20.35488, 0.63998 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 10), -19.94994, 0.63237 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 15), -20.43348, 0.61111 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 20), -21.77577, 0.57977 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 25), -23.72993, 0.54344 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 30), -25.9575, 0.50699 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 35), -28.13505, 0.47395 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 40), -30.00273, 0.44617 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 45), -31.37107, 0.42416 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 50), -32.11451, 0.40751 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 55), -32.16616, 0.39538 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 60), -31.51379, 0.38678 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 65), -30.19049, 0.38076 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 70), -28.25623, 0.37647 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 75), -25.77747, 0.37321 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 80), -22.82163, 0.37038 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 85), -19.47825, 0.36747 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 90), -15.89459, 0.36406 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 95), -12.28788, 0.36 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 100), -8.90257, 0.35545 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 105), -5.92727, 0.35084 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 110), -3.42742, 0.34664 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 115), -1.3377, 0.34319 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 120), 0.48907, 0.34058 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 125), 2.2106, 0.33873 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 130), 3.93661, 0.3374 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 135), 5.70433, 0.33635 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 140), 7.49038, 0.3354 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 145), 9.24243, 0.33444 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 150), 10.90666, 0.33346 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 155), 12.43726, 0.33244 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 160), 13.79314, 0.33144 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 165), 14.9366, 0.33049 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 170), 15.84205, 0.32966 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 175), 16.50927, 0.32902 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-30, 180), 16.96866, 0.32861 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -180), 14.93089, 0.32004 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -175), 15.17684, 0.32031 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -170), 15.33569, 0.32077 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -165), 15.45058, 0.32141 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -160), 15.53495, 0.32218 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -155), 15.57823, 0.32306 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -150), 15.56141, 0.32403 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -145), 15.47113, 0.32511 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -140), 15.30632, 0.32631 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -135), 15.07924, 0.32766 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -130), 14.8153, 0.3292 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -125), 14.55116, 0.33096 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -120), 14.3252, 0.33295 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -115), 14.15504, 0.33514 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -110), 14.00663, 0.33753 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -105), 13.77057, 0.34014 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -100), 13.26416, 0.3431 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -95), 12.26567, 0.34659 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -90), 10.56953, 0.35083 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -85), 8.04333, 0.35599 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -80), 4.67301, 0.36203 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -75), 0.58837, 0.36872 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -70), -3.94201, 0.37578 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -65), -8.55822, 0.383 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -60), -12.89207, 0.39052 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -55), -16.6524, 0.39874 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -50), -19.67618, 0.40822 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -45), -21.93362, 0.41939 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -40), -23.49835, 0.43246 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -35), -24.4971, 0.44739 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -30), -25.04966, 0.46399 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -25), -25.21557, 0.4821 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -20), -24.97122, 0.50162 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -15), -24.23546, 0.52233 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -10), -22.94087, 0.54342 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, -5), -21.1256, 0.56295 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 0), -19.00392, 0.57778 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 5), -16.96273, 0.58436 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 10), -15.45402, 0.58017 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 15), -14.82592, 0.565 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 20), -15.19603, 0.54093 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 25), -16.43639, 0.51156 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 30), -18.25014, 0.48074 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 35), -20.27485, 0.45166 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 40), -22.16517, 0.42633 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 45), -23.64287, 0.40559 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 50), -24.52094, 0.38936 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 55), -24.71013, 0.37705 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 60), -24.21022, 0.36784 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 65), -23.08483, 0.36095 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 70), -21.42358, 0.35569 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 75), -19.30761, 0.35152 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 80), -16.80211, 0.34798 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 85), -13.98594, 0.34471 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 90), -10.99695, 0.34138 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 95), -8.04649, 0.33787 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 100), -5.37107, 0.33427 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 105), -3.14205, 0.33087 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 110), -1.3956, 0.32797 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 115), -0.02849, 0.32576 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 120), 1.14478, 0.32426 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 125), 2.30994, 0.32336 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 130), 3.58557, 0.32286 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 135), 4.99741, 0.32255 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 140), 6.49843, 0.32227 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 145), 8.01389, 0.32196 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 150), 9.478, 0.3216 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 155), 10.8431, 0.3212 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 160), 12.06866, 0.32079 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 165), 13.11257, 0.32042 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 170), 13.93892, 0.32013 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 175), 14.53655, 0.31999 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-25, 180), 14.93089, 0.32004 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -180), 13.28954, 0.31381 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -175), 13.46461, 0.31434 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -170), 13.56174, 0.31506 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -165), 13.63469, 0.31596 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -160), 13.70279, 0.31699 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -155), 13.75423, 0.31814 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -150), 13.76228, 0.31937 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -145), 13.70193, 0.32068 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -140), 13.55932, 0.32208 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -135), 13.33594, 0.32359 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -130), 13.05173, 0.32521 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -125), 12.74556, 0.32697 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -120), 12.46508, 0.32885 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -115), 12.23974, 0.33083 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -110), 12.04345, 0.33291 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -105), 11.76696, 0.33516 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -100), 11.2214, 0.33771 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -95), 10.17868, 0.34075 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -90), 8.43341, 0.34448 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -85), 5.86409, 0.34897 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -80), 2.4784, 0.3541 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -75), -1.56675, 0.35959 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -70), -5.98165, 0.36512 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -65), -10.4031, 0.37058 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -60), -14.48024, 0.37617 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -55), -17.94961, 0.38238 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -50), -20.67051, 0.38974 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -45), -22.61975, 0.39865 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -40), -23.86138, 0.40919 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -35), -24.50359, 0.42114 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -30), -24.64909, 0.43403 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -25), -24.35118, 0.44738 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -20), -23.59631, 0.4608 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -15), -22.32956, 0.47398 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -10), -20.51716, 0.48642 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, -5), -18.21788, 0.49715 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 0), -15.62813, 0.50468 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 5), -13.07283, 0.50727 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 10), -10.93612, 0.50365 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 15), -9.55742, 0.49351 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 20), -9.13682, 0.47773 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 25), -9.68396, 0.45811 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 30), -11.02032, 0.4368 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 35), -12.82788, 0.41585 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 40), -14.72829, 0.39677 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 45), -16.36946, 0.38043 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 50), -17.49427, 0.36707 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 55), -17.97388, 0.3565 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 60), -17.80138, 0.34827 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 65), -17.05171, 0.34187 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 70), -15.82449, 0.33685 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 75), -14.19776, 0.33288 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 80), -12.22096, 0.32963 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 85), -9.95352, 0.32683 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 90), -7.51919, 0.32422 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 95), -5.12432, 0.32168 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 100), -3.00658, 0.31922 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 105), -1.33749, 0.31702 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 110), -0.14455, 0.31524 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 115), 0.6962, 0.314 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 120), 1.39818, 0.3133 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 125), 2.17056, 0.31304 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 130), 3.13955, 0.31306 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 135), 4.31918, 0.31319 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 140), 5.63886, 0.31332 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 145), 7.00164, 0.31339 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 150), 8.33068, 0.3134 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 155), 9.57831, 0.31337 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 160), 10.70722, 0.31333 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 165), 11.6737, 0.31329 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 170), 12.43351, 0.31333 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 175), 12.96533, 0.31348 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-20, 180), 13.28954, 0.31381 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -180), 12.0036, 0.30967 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -175), 12.10317, 0.31036 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -170), 12.12548, 0.31123 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -165), 12.13716, 0.31228 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -160), 12.16712, 0.31346 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -155), 12.20642, 0.31476 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -150), 12.22423, 0.31613 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -145), 12.18644, 0.31757 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -140), 12.06825, 0.31906 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -135), 11.86175, 0.3206 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -130), 11.58182, 0.32221 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -125), 11.26762, 0.32386 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -120), 10.97055, 0.32554 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -115), 10.72304, 0.32725 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -110), 10.49749, 0.32899 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -105), 10.17909, 0.33085 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -100), 9.57452, 0.333 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -95), 8.45863, 0.33561 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -90), 6.64013, 0.33883 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -85), 4.02226, 0.34264 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -80), 0.6431, 0.34683 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -75), -3.31451, 0.35106 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -70), -7.55174, 0.35506 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -65), -11.71935, 0.35878 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -60), -15.49608, 0.36249 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -55), -18.64661, 0.36668 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -50), -21.04203, 0.37184 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -45), -22.65048, 0.37829 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -40), -23.51333, 0.38605 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -35), -23.71508, 0.39476 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -30), -23.34934, 0.40384 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -25), -22.48766, 0.41257 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -20), -21.16584, 0.42039 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -15), -19.39988, 0.42694 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -10), -17.2246, 0.43203 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, -5), -14.73125, 0.43547 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 0), -12.08257, 0.43696 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 5), -9.50133, 0.43608 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 10), -7.24312, 0.43243 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 15), -5.56192, 0.4258 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 20), -4.66601, 0.41639 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 25), -4.66211, 0.40482 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 30), -5.50413, 0.39204 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 35), -6.97787, 0.37901 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 40), -8.74378, 0.3666 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 45), -10.42872, 0.35542 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 50), -11.72756, 0.34581 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 55), -12.4697, 0.33782 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 60), -12.62658, 0.33132 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 65), -12.26587, 0.32609 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 70), -11.48105, 0.32191 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 75), -10.33651, 0.31859 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 80), -8.86108, 0.31594 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 85), -7.0927, 0.31379 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 90), -5.1391, 0.31194 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 95), -3.19967, 0.31028 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 100), -1.51429, 0.30878 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 105), -0.26112, 0.30751 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 110), 0.53004, 0.30659 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 115), 0.99235, 0.30607 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 120), 1.35848, 0.30593 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 125), 1.8566, 0.3061 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 130), 2.61985, 0.30647 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 135), 3.65269, 0.3069 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 140), 4.86427, 0.30731 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 145), 6.13815, 0.30765 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 150), 7.38738, 0.30793 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 155), 8.56409, 0.30816 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 160), 9.63396, 0.30837 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 165), 10.552, 0.30857 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 170), 11.26617, 0.30882 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 175), 11.7451, 0.30917 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-15, 180), 12.0036, 0.30967 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -180), 11.03235, 0.30745 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -175), 11.06344, 0.30825 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -170), 11.00911, 0.30922 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -165), 10.95055, 0.31033 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -160), 10.92952, 0.31158 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -155), 10.94355, 0.31292 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -150), 10.96042, 0.31432 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -145), 10.93849, 0.31576 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -140), 10.84322, 0.31721 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -135), 10.65886, 0.31867 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -130), 10.39663, 0.32013 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -125), 10.09549, 0.32159 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -120), 9.80639, 0.32301 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -115), 9.55724, 0.32441 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -110), 9.31138, 0.32582 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -105), 8.94517, 0.32737 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -100), 8.26428, 0.3292 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -95), 7.05572, 0.33149 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -90), 5.1536, 0.33428 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -85), 2.4949, 0.33749 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -80), -0.84973, 0.34082 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -75), -4.67841, 0.34393 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -70), -8.69647, 0.34657 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -65), -12.58008, 0.34876 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -60), -16.03976, 0.35079 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -55), -18.86075, 0.35312 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -50), -20.91515, 0.35619 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -45), -22.15588, 0.36024 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -40), -22.60339, 0.36524 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -35), -22.32905, 0.37085 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -30), -21.43499, 0.37645 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -25), -20.03255, 0.38136 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -20), -18.2272, 0.38501 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -15), -16.11639, 0.38716 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -10), -13.79694, 0.38785 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, -5), -11.37086, 0.38733 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 0), -8.94478, 0.38586 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 5), -6.63068, 0.38354 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 10), -4.55664, 0.38032 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 15), -2.88066, 0.37603 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 20), -1.78317, 0.37061 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 25), -1.41903, 0.36418 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 30), -1.84161, 0.35702 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 35), -2.94396, 0.34953 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 40), -4.46179, 0.3421 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 45), -6.04833, 0.33506 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 50), -7.38648, 0.32867 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 55), -8.27926, 0.32308 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 60), -8.67537, 0.31832 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 65), -8.62688, 0.31434 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 70), -8.21323, 0.31107 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 75), -7.48134, 0.30845 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 80), -6.43901, 0.30639 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 85), -5.10273, 0.30478 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 90), -3.56182, 0.30352 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 95), -2.0034, 0.30251 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 100), -0.66414, 0.3017 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 105), 0.27273, 0.30112 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 110), 0.77076, 0.30081 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 115), 0.9637, 0.3008 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 120), 1.09418, 0.30105 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 125), 1.40293, 0.30153 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 130), 2.02865, 0.30214 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 135), 2.96989, 0.30281 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 140), 4.12177, 0.30345 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 145), 5.35334, 0.30403 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 150), 6.56914, 0.30456 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 155), 7.71963, 0.30502 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 160), 8.77125, 0.30545 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 165), 9.67631, 0.30587 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 170), 10.37449, 0.3063 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 175), 10.82379, 0.30681 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-10, 180), 11.03235, 0.30745 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -180), 10.32516, 0.30702 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -175), 10.30886, 0.30792 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -170), 10.19016, 0.30895 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -165), 10.06599, 0.3101 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -160), 9.99394, 0.31134 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -155), 9.98122, 0.31265 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -150), 9.99618, 0.31397 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -145), 9.99009, 0.31528 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -140), 9.91849, 0.31657 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -135), 9.75815, 0.31782 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -130), 9.51746, 0.31903 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -125), 9.23483, 0.3202 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -120), 8.95807, 0.32131 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -115), 8.70599, 0.32239 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -110), 8.42938, 0.32352 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -105), 7.99644, 0.32482 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -100), 7.21734, 0.32644 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -95), 5.89955, 0.3285 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -90), 3.91037, 0.33099 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -85), 1.22406, 0.3337 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -80), -2.05949, 0.33633 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -75), -5.72921, 0.33853 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -70), -9.50547, 0.34008 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -65), -13.09426, 0.34105 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -60), -16.23331, 0.34171 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -55), -18.71984, 0.34247 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -50), -20.42252, 0.34372 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -45), -21.28387, 0.34566 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -40), -21.31719, 0.34825 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -35), -20.59833, 0.3512 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -30), -19.25192, 0.35402 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -25), -17.43294, 0.35618 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -20), -15.30675, 0.35725 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -15), -13.03042, 0.3571 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -10), -10.73564, 0.35589 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, -5), -8.51463, 0.35396 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 0), -6.4162, 0.35167 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 5), -4.46159, 0.34923 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 10), -2.68099, 0.34667 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 15), -1.1544, 0.34388 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 20), -0.02558, 0.34073 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 25), 0.53584, 0.33716 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 30), 0.41667, 0.33322 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 35), -0.35852, 0.32902 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 40), -1.60121, 0.3247 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 45), -3.01196, 0.32041 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 50), -4.28804, 0.31632 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 55), -5.22508, 0.31254 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 60), -5.75715, 0.30916 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 65), -5.9221, 0.30622 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 70), -5.78574, 0.30373 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 75), -5.37974, 0.30169 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 80), -4.69426, 0.30009 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 85), -3.72636, 0.29888 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 90), -2.54525, 0.29802 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 95), -1.31985, 0.29743 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 100), -0.27523, 0.29709 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 105), 0.4067, 0.29698 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 110), 0.68343, 0.29709 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 115), 0.68308, 0.29743 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 120), 0.64856, 0.29796 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 125), 0.82505, 0.29865 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 130), 1.35449, 0.29946 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 135), 2.23403, 0.30033 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 140), 3.35295, 0.3012 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 145), 4.57269, 0.30204 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 150), 5.79153, 0.30283 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 155), 6.95643, 0.30356 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 160), 8.03136, 0.30424 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 165), 8.96369, 0.30489 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 170), 9.68372, 0.30554 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 175), 10.13772, 0.30623 + 1); + EXPECT_NEAR(get_mag_declination_degrees(-5, 180), 10.32516, 0.30702 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -180), 9.81655, 0.30821 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -175), 9.78974, 0.30924 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -170), 9.63533, 0.31035 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -165), 9.466, 0.31151 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -160), 9.35745, 0.3127 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -155), 9.32958, 0.3139 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -150), 9.35308, 0.31506 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -145), 9.37202, 0.31616 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -140), 9.33086, 0.31718 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -135), 9.19769, 0.31812 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -130), 8.97724, 0.31899 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -125), 8.70634, 0.31979 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -120), 8.42785, 0.32056 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -115), 8.15021, 0.32133 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -110), 7.81267, 0.32221 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -105), 7.27969, 0.32333 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -100), 6.37266, 0.32482 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -95), 4.92627, 0.32673 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -90), 2.84509, 0.32897 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -85), 0.14009, 0.33132 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -80), -3.06563, 0.3334 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -75), -6.56065, 0.33491 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -70), -10.08621, 0.33565 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -65), -13.37704, 0.33569 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -60), -16.19228, 0.3353 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -55), -18.33769, 0.33483 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -50), -19.68309, 0.33463 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -45), -20.17383, 0.33486 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -40), -19.83324, 0.33555 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -35), -18.75499, 0.33648 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -30), -17.08763, 0.33732 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -25), -15.01486, 0.33772 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -20), -12.73334, 0.33741 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -15), -10.42739, 0.33631 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -10), -8.2405, 0.33458 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, -5), -6.25118, 0.33248 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 0), -4.46713, 0.33029 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 5), -2.84907, 0.3282 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 10), -1.36103, 0.32626 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 15), -0.02566, 0.32439 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 20), 1.04871, 0.32248 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 25), 1.69621, 0.32044 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 30), 1.77352, 0.31824 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 35), 1.25012, 0.31588 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 40), 0.25296, 0.31337 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 45), -0.96742, 0.31077 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 50), -2.13412, 0.30814 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 55), -3.04783, 0.3056 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 60), -3.63645, 0.30321 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 65), -3.9288, 0.30105 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 70), -3.98201, 0.29915 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 75), -3.81882, 0.29755 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 80), -3.41831, 0.29628 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 85), -2.76253, 0.29533 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 90), -1.90084, 0.29471 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 95), -0.97927, 0.29438 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 100), -0.20299, 0.29432 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 105), 0.25586, 0.2945 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 110), 0.35244, 0.29488 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 115), 0.20575, 0.29545 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 120), 0.05015, 0.29618 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 125), 0.12678, 0.29704 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 130), 0.57811, 0.29802 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 135), 1.4045, 0.29908 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 140), 2.49826, 0.30019 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 145), 3.721, 0.3013 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 150), 4.96772, 0.3024 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 155), 6.18033, 0.30345 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 160), 7.3172, 0.30445 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 165), 8.31855, 0.30539 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 170), 9.1043, 0.30631 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 175), 9.60766, 0.30724 + 1); + EXPECT_NEAR(get_mag_declination_degrees(0, 180), 9.81655, 0.30821 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -180), 9.42534, 0.31084 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -175), 9.4409, 0.31205 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -170), 9.2972, 0.31325 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -165), 9.12044, 0.31441 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -160), 9.0051, 0.31553 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -155), 8.986, 0.31658 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -150), 9.03817, 0.31752 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -145), 9.09907, 0.31833 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -140), 9.1011, 0.31902 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -135), 9.00179, 0.3196 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -130), 8.79979, 0.32008 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -125), 8.52793, 0.3205 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -120), 8.2229, 0.32092 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -115), 7.8838, 0.3214 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -110), 7.44264, 0.32206 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -105), 6.76671, 0.32304 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -100), 5.69536, 0.32442 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -95), 4.09508, 0.32621 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -90), 1.90903, 0.32825 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -85), -0.81784, 0.33028 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -80), -3.94461, 0.33194 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -75), -7.26402, 0.33292 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -70), -10.53829, 0.33308 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -65), -13.52725, 0.33246 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -60), -16.0092, 0.3313 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -55), -17.80294, 0.32992 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -50), -18.7915, 0.32862 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -45), -18.93871, 0.3276 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -40), -18.29047, 0.32689 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -35), -16.96115, 0.32641 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -30), -15.11274, 0.32595 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -25), -12.93447, 0.32532 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -20), -10.62464, 0.32435 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -15), -8.36887, 0.32297 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -10), -6.31046, 0.32128 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, -5), -4.5205, 0.31942 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 0), -2.98689, 0.31759 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 5), -1.63774, 0.31592 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 10), -0.39646, 0.31444 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 15), 0.75505, 0.31312 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 20), 1.7402, 0.3119 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 25), 2.40671, 0.31069 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 30), 2.6004, 0.30944 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 35), 2.25694, 0.3081 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 40), 1.45715, 0.30663 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 45), 0.40869, 0.30502 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 50), -0.63938, 0.30332 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 55), -1.49808, 0.30157 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 60), -2.09397, 0.29985 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 65), -2.45101, 0.29823 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 70), -2.62307, 0.29675 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 75), -2.6315, 0.29545 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 80), -2.45256, 0.29439 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 85), -2.05967, 0.2936 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 90), -1.48479, 0.29311 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 95), -0.84869, 0.29291 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 100), -0.3301, 0.293 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 105), -0.08337, 0.29333 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 110), -0.15041, 0.29387 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 115), -0.42225, 0.29458 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 120), -0.67955, 0.29543 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 125), -0.69235, 0.29641 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 130), -0.32013, 0.29753 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 135), 0.44474, 0.29879 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 140), 1.50565, 0.30014 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 145), 2.73172, 0.30156 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 150), 4.01809, 0.303 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 155), 5.30092, 0.30442 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 160), 6.53073, 0.30579 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 165), 7.63934, 0.30711 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 170), 8.5361, 0.30838 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 175), 9.14032, 0.30962 + 1); + EXPECT_NEAR(get_mag_declination_degrees(5, 180), 9.42534, 0.31084 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -180), 9.05883, 0.31461 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -175), 9.1827, 0.31606 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -170), 9.11323, 0.31738 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -165), 8.98446, 0.31857 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -160), 8.9071, 0.3196 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -155), 8.93134, 0.32046 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -150), 9.03871, 0.32114 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -145), 9.16225, 0.32165 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -140), 9.22321, 0.322 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -135), 9.16733, 0.32221 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -130), 8.98417, 0.32233 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -125), 8.69928, 0.32241 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -120), 8.34162, 0.32251 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -115), 7.90309, 0.32275 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -110), 7.31393, 0.32324 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -105), 6.45098, 0.3241 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -100), 5.17691, 0.32539 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -95), 3.39251, 0.32703 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -90), 1.0787, 0.32886 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -85), -1.68836, 0.33058 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -80), -4.75228, 0.33184 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -75), -7.90897, 0.33239 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -70), -10.93728, 0.3321 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -65), -13.61869, 0.33101 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -60), -15.75381, 0.32931 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -55), -17.18563, 0.3273 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -50), -17.82568, 0.32524 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -45), -17.66887, 0.32334 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -40), -16.7878, 0.3217 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -35), -15.31105, 0.32029 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -30), -13.39837, 0.31904 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -25), -11.22382, 0.31784 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -20), -8.96669, 0.31657 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -15), -6.79882, 0.31518 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -10), -4.8585, 0.31368 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, -5), -3.21691, 0.31214 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 0), -1.85963, 0.31066 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 5), -0.70376, 0.30933 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 10), 0.34843, 0.30819 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 15), 1.3429, 0.30722 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 20), 2.23091, 0.3064 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 25), 2.87922, 0.30566 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 30), 3.13544, 0.30495 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 35), 2.91659, 0.3042 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 40), 2.26992, 0.30334 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 45), 1.36691, 0.30233 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 50), 0.43002, 0.30118 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 55), -0.36354, 0.29993 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 60), -0.94065, 0.29864 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 65), -1.32213, 0.29736 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 70), -1.56197, 0.29615 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 75), -1.68626, 0.29505 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 80), -1.67637, 0.29412 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 85), -1.50434, 0.2934 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 90), -1.18887, 0.29295 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 95), -0.82552, 0.29279 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 100), -0.56274, 0.29292 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 105), -0.53093, 0.29331 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 110), -0.76376, 0.29392 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 115), -1.16109, 0.29469 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 120), -1.5217, 0.2956 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 125), -1.6312, 0.29666 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 130), -1.35269, 0.29789 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 135), -0.66853, 0.2993 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 140), 0.34147, 0.30089 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 145), 1.55971, 0.3026 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 150), 2.88462, 0.3044 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 155), 4.24688, 0.30621 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 160), 5.58833, 0.30801 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 165), 6.83254, 0.30976 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 170), 7.87977, 0.31145 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 175), 8.63629, 0.31306 + 1); + EXPECT_NEAR(get_mag_declination_degrees(10, 180), 9.05883, 0.31461 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -180), 8.62436, 0.3191 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -175), 8.92814, 0.32084 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -170), 9.00891, 0.32235 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -165), 8.99903, 0.32358 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -160), 9.01819, 0.32453 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -155), 9.12911, 0.32521 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -150), 9.32132, 0.32564 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -145), 9.52756, 0.32585 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -140), 9.66172, 0.32589 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -135), 9.6589, 0.32581 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -130), 9.49746, 0.32566 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -125), 9.19215, 0.32549 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -120), 8.76236, 0.3254 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -115), 8.19442, 0.3255 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -110), 7.42146, 0.32589 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -105), 6.335, 0.32668 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -100), 4.82423, 0.32787 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -95), 2.82448, 0.32936 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -90), 0.35269, 0.33093 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -85), -2.48549, 0.33229 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -80), -5.51699, 0.33313 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -75), -8.53568, 0.33324 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -70), -11.33069, 0.33254 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -65), -13.70356, 0.33106 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -60), -15.48414, 0.32899 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -55), -16.55307, 0.32657 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -50), -16.86362, 0.32404 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -45), -16.44811, 0.3216 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -40), -15.40275, 0.31938 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -35), -13.85967, 0.31743 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -30), -11.96263, 0.31572 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -25), -9.8577, 0.31421 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -20), -7.69508, 0.31283 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -15), -5.62616, 0.3115 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -10), -3.78223, 0.3102 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, -5), -2.23907, 0.30894 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 0), -0.99109, 0.30776 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 5), 0.04048, 0.30671 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 10), 0.95965, 0.30581 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 15), 1.82978, 0.30508 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 20), 2.62622, 0.30451 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 25), 3.23815, 0.30407 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 30), 3.52399, 0.3037 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 35), 3.3933, 0.30332 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 40), 2.86916, 0.30284 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 45), 2.09188, 0.3022 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 50), 1.25813, 0.30138 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 55), 0.53232, 0.30041 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 60), -0.01343, 0.29936 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 65), -0.39673, 0.29828 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 70), -0.67233, 0.29721 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 75), -0.87425, 0.29621 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 80), -0.99478, 0.29532 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 85), -1.01105, 0.29462 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 90), -0.93346, 0.29415 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 95), -0.83444, 0.29397 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 100), -0.83096, 0.29407 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 105), -1.02574, 0.29444 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 110), -1.43977, 0.29504 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 115), -1.97874, 0.2958 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 120), -2.45929, 0.29671 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 125), -2.68383, 0.29779 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 130), -2.5198, 0.29908 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 135), -1.93863, 0.30061 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 140), -1.00083, 0.30237 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 145), 0.19229, 0.30433 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 150), 1.54462, 0.30643 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 155), 2.98226, 0.30862 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 160), 4.43886, 0.31082 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 165), 5.83146, 0.31301 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 170), 7.05472, 0.31514 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 175), 8.00543, 0.31719 + 1); + EXPECT_NEAR(get_mag_declination_degrees(15, 180), 8.62436, 0.3191 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -180), 8.04802, 0.32387 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -175), 8.59772, 0.32591 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -170), 8.90757, 0.32762 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -165), 9.09605, 0.32894 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -160), 9.27987, 0.32984 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -155), 9.52703, 0.33037 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -150), 9.83468, 0.33059 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -145), 10.14018, 0.33058 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -140), 10.3567, 0.33042 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -135), 10.41298, 0.33017 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -130), 10.27645, 0.32991 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -125), 9.94872, 0.32968 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -120), 9.43759, 0.32957 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -115), 8.72421, 0.32969 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -110), 7.74695, 0.33013 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -105), 6.41437, 0.33094 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -100), 4.64275, 0.3321 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -95), 2.4005, 0.33344 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -90), -0.26151, 0.33472 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -85), -3.20824, 0.33565 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -80), -6.24621, 0.33598 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -75), -9.16055, 0.33558 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -70), -11.74523, 0.33441 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -65), -13.82241, 0.33255 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -60), -15.25861, 0.33019 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -55), -15.98224, 0.32751 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -50), -15.99503, 0.32474 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -45), -15.36636, 0.32204 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -40), -14.20929, 0.31953 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -35), -12.65026, 0.3173 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -30), -10.8096, 0.31537 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -25), -8.80125, 0.31372 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -20), -6.74441, 0.31231 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -15), -4.76847, 0.31107 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -10), -2.99631, 0.30995 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, -5), -1.50907, 0.30893 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 0), -0.31508, 0.30799 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 5), 0.65069, 0.30717 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 10), 1.48747, 0.30648 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 15), 2.26718, 0.30594 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 20), 2.98555, 0.30557 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 25), 3.55638, 0.30535 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 30), 3.85581, 0.30521 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 35), 3.79484, 0.30509 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 40), 3.37958, 0.30486 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 45), 2.72219, 0.30445 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 50), 1.9925, 0.30382 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 55), 1.33937, 0.30298 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 60), 0.83236, 0.30202 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 65), 0.4576, 0.301 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 70), 0.16095, 0.29997 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 75), -0.09938, 0.29898 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 80), -0.32892, 0.29808 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 85), -0.51431, 0.29733 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 90), -0.66224, 0.2968 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 95), -0.82522, 0.29655 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 100), -1.08971, 0.29658 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 105), -1.52911, 0.29688 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 110), -2.14813, 0.2974 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 115), -2.85423, 0.29809 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 120), -3.47879, 0.29894 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 125), -3.83967, 0.29997 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 130), -3.80885, 0.30124 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 135), -3.34787, 0.30278 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 140), -2.49896, 0.30462 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 145), -1.34741, 0.30672 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 150), 0.01675, 0.30903 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 155), 1.51588, 0.31149 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 160), 3.07686, 0.31403 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 165), 4.6131, 0.31659 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 170), 6.01872, 0.31913 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 175), 7.18731, 0.32158 + 1); + EXPECT_NEAR(get_mag_declination_degrees(20, 180), 8.04802, 0.32387 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -180), 7.29559, 0.32852 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -175), 8.13944, 0.33082 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -170), 8.74628, 0.33272 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -165), 9.20879, 0.33413 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -160), 9.62623, 0.33504 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -155), 10.06099, 0.33549 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -150), 10.51432, 0.33561 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -145), 10.93214, 0.3355 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -140), 11.23441, 0.3353 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -135), 11.35018, 0.33509 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -130), 11.23922, 0.33493 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -125), 10.88999, 0.33488 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -120), 10.29746, 0.33502 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -115), 9.43671, 0.33541 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -110), 8.25106, 0.33611 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -105), 6.66533, 0.33714 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -100), 4.62084, 0.33839 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -95), 2.11636, 0.33966 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -90), -0.76504, 0.34067 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -85), -3.85765, 0.34112 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -80), -6.94304, 0.34084 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -75), -9.79215, 0.33978 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -70), -12.20128, 0.33802 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -65), -14.01523, 0.33571 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -60), -15.14181, 0.33304 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -55), -15.56032, 0.33018 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -50), -15.31946, 0.32731 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -45), -14.51986, 0.32453 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -40), -13.28429, 0.32195 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -35), -11.72893, 0.31965 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -30), -9.95048, 0.31766 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -25), -8.03387, 0.31599 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -20), -6.07081, 0.31461 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -15), -4.16992, 0.31347 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -10), -2.4441, 0.31253 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, -5), -0.97768, 0.31171 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 0), 0.20668, 0.31101 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 5), 1.15562, 0.31041 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 10), 1.95587, 0.30993 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 15), 2.68056, 0.30958 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 20), 3.34188, 0.3094 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 25), 3.87923, 0.30937 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 30), 4.19181, 0.30943 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 35), 4.19932, 0.3095 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 40), 3.89664, 0.30945 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 45), 3.36926, 0.30918 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 50), 2.75726, 0.30862 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 55), 2.18909, 0.30781 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 60), 1.72828, 0.30682 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 65), 1.36445, 0.30575 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 70), 1.0465, 0.30465 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 75), 0.72778, 0.30359 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 80), 0.39073, 0.30262 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 85), 0.03793, 0.30179 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 90), -0.33671, 0.30118 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 95), -0.76907, 0.30083 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 100), -1.31716, 0.30075 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 105), -2.02475, 0.30093 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 110), -2.87724, 0.30133 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 115), -3.77908, 0.30188 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 120), -4.57163, 0.30258 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 125), -5.08547, 0.30347 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 130), -5.19749, 0.3046 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 135), -4.86241, 0.30604 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 140), -4.10821, 0.30781 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 145), -3.00733, 0.3099 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 150), -1.645, 0.31226 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 155), -0.10198, 0.31482 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 160), 1.5436, 0.31754 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 165), 3.20474, 0.32034 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 170), 4.78065, 0.32316 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 175), 6.16932, 0.32592 + 1); + EXPECT_NEAR(get_mag_declination_degrees(25, 180), 7.29559, 0.32852 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -180), 6.38632, 0.33285 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -175), 7.54618, 0.33531 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -170), 8.49285, 0.33734 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -165), 9.28539, 0.33885 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -160), 9.99311, 0.33982 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -155), 10.66109, 0.34032 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -150), 11.2887, 0.3405 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -145), 11.83113, 0.34051 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -140), 12.22052, 0.3405 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -135), 12.3928, 0.34057 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -130), 12.3051, 0.3408 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -125), 11.93522, 0.34124 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -120), 11.26564, 0.34194 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -115), 10.26435, 0.34292 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -110), 8.8774, 0.34421 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -105), 7.04264, 0.34574 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -100), 4.72257, 0.34734 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -95), 1.94296, 0.3487 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -90), -1.1819, 0.3495 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -85), -4.45361, 0.34945 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -80), -7.62495, 0.34844 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -75), -10.45014, 0.34656 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -70), -12.7284, 0.34402 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -65), -14.32961, 0.3411 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -60), -15.20334, 0.33802 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -55), -15.37556, 0.33495 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -50), -14.93368, 0.332 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -45), -14.00049, 0.32925 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -40), -12.70273, 0.32672 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -35), -11.14639, 0.32448 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -30), -9.40991, 0.32255 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -25), -7.55712, 0.32095 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -20), -5.65893, 0.31967 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -15), -3.80598, 0.31867 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -10), -2.09981, 0.31791 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, -5), -0.62399, 0.31732 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 0), 0.58741, 0.31687 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 5), 1.56209, 0.31653 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 10), 2.3699, 0.31629 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 15), 3.07934, 0.31617 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 20), 3.71483, 0.31619 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 25), 4.24077, 0.31635 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 30), 4.5827, 0.31659 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 35), 4.6744, 0.31682 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 40), 4.50403, 0.31689 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 45), 4.13115, 0.31668 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 50), 3.66222, 0.31612 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 55), 3.19909, 0.31525 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 60), 2.7941, 0.31415 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 65), 2.43875, 0.31294 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 70), 2.08723, 0.31171 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 75), 1.69244, 0.31053 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 80), 1.22887, 0.30944 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 85), 0.69023, 0.30852 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 90), 0.07032, 0.3078 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 95), -0.65237, 0.30734 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 100), -1.50925, 0.30713 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 105), -2.51436, 0.30715 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 110), -3.63093, 0.30735 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 115), -4.75533, 0.30767 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 120), -5.73387, 0.30811 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 125), -6.40718, 0.30871 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 130), -6.65839, 0.30956 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 135), -6.44018, 0.31072 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 140), -5.77257, 0.31224 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 145), -4.72029, 0.31411 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 150), -3.36615, 0.31631 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 155), -1.7938, 0.31878 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 160), -0.08447, 0.32147 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 165), 1.67738, 0.3243 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 170), 3.40049, 0.32722 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 175), 4.99401, 0.33011 + 1); + EXPECT_NEAR(get_mag_declination_degrees(30, 180), 6.38632, 0.33285 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -180), 5.39109, 0.33705 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -175), 6.86049, 0.3395 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -170), 8.15567, 0.34157 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -165), 9.3009, 0.34318 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -160), 10.3296, 0.3443 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -155), 11.26159, 0.34504 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -150), 12.08775, 0.34551 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -145), 12.76955, 0.34592 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -140), 13.25203, 0.3464 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -135), 13.48117, 0.34709 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -130), 13.4155, 0.34805 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -125), 13.02559, 0.34935 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -120), 12.28328, 0.351 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -115), 11.14907, 0.353 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -110), 9.56923, 0.3553 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -105), 7.49065, 0.35774 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -100), 4.89281, 0.36003 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -95), 1.82587, 0.36175 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -90), -1.56465, 0.36247 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -85), -5.0452, 0.3619 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -80), -8.33757, 0.36001 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -75), -11.17978, 0.35707 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -70), -13.37699, 0.35349 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -65), -14.82595, 0.3497 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -60), -15.51491, 0.346 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -55), -15.50774, 0.34256 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -50), -14.91901, 0.33945 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -45), -13.88392, 0.33668 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -40), -12.52906, 0.33423 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -35), -10.95289, 0.33211 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -30), -9.22353, 0.33031 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -25), -7.39346, 0.32885 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -20), -5.52069, 0.32773 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -15), -3.68175, 0.32692 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -10), -1.96583, 0.32638 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, -5), -0.4516, 0.32607 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 0), 0.82037, 0.32592 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 5), 1.86136, 0.32589 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 10), 2.72318, 0.32596 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 15), 3.46564, 0.32612 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 20), 4.1208, 0.32639 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 25), 4.67537, 0.32675 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 30), 5.08152, 0.32716 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 35), 5.28984, 0.3275 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 40), 5.28479, 0.32764 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 45), 5.10063, 0.32743 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 50), 4.80714, 0.32682 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 55), 4.47379, 0.32585 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 60), 4.13596, 0.32461 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 65), 3.7841, 0.32324 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 70), 3.3786, 0.32186 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 75), 2.87618, 0.32055 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 80), 2.2488, 0.31937 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 85), 1.48566, 0.31836 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 90), 0.58245, 0.31755 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 95), -0.46796, 0.31697 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 100), -1.67083, 0.31661 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 105), -3.00944, 0.31641 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 110), -4.42156, 0.3163 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 115), -5.79069, 0.31623 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 120), -6.96387, 0.31622 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 125), -7.79061, 0.31633 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 130), -8.16314, 0.31666 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 135), -8.03842, 0.31732 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 140), -7.43582, 0.31836 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 145), -6.41815, 0.3198 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 150), -5.06841, 0.32161 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 155), -3.47275, 0.32375 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 160), -1.71367, 0.32617 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 165), 0.12901, 0.3288 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 170), 1.97583, 0.33156 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 175), 3.75073, 0.33435 + 1); + EXPECT_NEAR(get_mag_declination_degrees(35, 180), 5.39109, 0.33705 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -180), 4.41079, 0.34175 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -175), 6.16002, 0.34406 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -170), 7.77869, 0.34612 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -165), 9.26172, 0.34785 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -160), 10.60918, 0.34926 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -155), 11.8143, 0.35044 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -150), 12.85519, 0.35152 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -145), 13.69429, 0.35266 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -140), 14.28521, 0.35403 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -135), 14.58203, 0.35575 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -130), 14.54501, 0.35791 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -125), 14.13934, 0.36054 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -120), 13.32776, 0.36367 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -115), 12.06326, 0.36725 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -110), 10.29035, 0.37114 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -105), 7.96186, 0.37506 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -100), 5.07175, 0.37855 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -95), 1.69425, 0.38098 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -90), -1.99143, 0.38177 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -85), -5.71333, 0.38059 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -80), -9.16127, 0.37755 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -75), -12.06005, 0.37317 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -70), -14.22514, 0.36813 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -65), -15.58149, 0.36305 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -60), -16.15128, 0.35835 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -55), -16.02662, 0.35422 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -50), -15.33825, 0.3507 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -45), -14.22566, 0.34774 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -40), -12.81259, 0.34527 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -35), -11.19316, 0.34322 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -30), -9.43253, 0.34156 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -25), -7.58045, 0.34027 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -20), -5.68938, 0.33935 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -15), -3.82571, 0.33879 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -10), -2.06638, 0.33854 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, -5), -0.48166, 0.33856 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 0), 0.88659, 0.33878 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 5), 2.03772, 0.33914 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 10), 3.00699, 0.33958 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 15), 3.84325, 0.34008 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 20), 4.58139, 0.34063 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 25), 5.22526, 0.34121 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 30), 5.75023, 0.34175 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 35), 6.12292, 0.34217 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 40), 6.32519, 0.34232 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 45), 6.36735, 0.3421 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 50), 6.28198, 0.34145 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 55), 6.10299, 0.34041 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 60), 5.84407, 0.33911 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 65), 5.49048, 0.33769 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 70), 5.00761, 0.33627 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 75), 4.35819, 0.33495 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 80), 3.51658, 0.33378 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 85), 2.47295, 0.33277 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 90), 1.22924, 0.33194 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 95), -0.20439, 0.33127 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 100), -1.80462, 0.33069 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 105), -3.52086, 0.33013 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 110), -5.26118, 0.32951 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 115), -6.89199, 0.32879 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 120), -8.25873, 0.32801 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 125), -9.22098, 0.3273 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 130), -9.68498, 0.32679 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 135), -9.61919, 0.32663 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 140), -9.04968, 0.3269 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 145), -8.04253, 0.32763 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 150), -6.68295, 0.3288 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 155), -5.0589, 0.33036 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 160), -3.25237, 0.33227 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 165), -1.3377, 0.33445 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 170), 0.6172, 0.33682 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 175), 2.55072, 0.3393 + 1); + EXPECT_NEAR(get_mag_declination_degrees(40, 180), 4.41079, 0.34175 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -180), 3.54019, 0.34825 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -175), 5.52652, 0.35036 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -170), 7.42074, 0.35241 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -165), 9.19784, 0.35437 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -160), 10.83345, 0.35625 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -155), 12.29932, 0.35814 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -150), 13.56034, 0.36017 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -145), 14.57493, 0.36249 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -140), 15.29834, 0.36524 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -135), 15.68641, 0.36857 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -130), 15.6972, 0.37255 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -125), 15.28861, 0.37725 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -120), 14.41329, 0.38265 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -115), 13.0153, 0.38866 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -110), 11.03514, 0.39504 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -105), 8.42954, 0.40131 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -100), 5.20711, 0.40671 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -95), 1.47013, 0.41031 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -90), -2.56146, 0.41126 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -85), -6.57082, 0.4092 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -80), -10.21445, 0.40446 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -75), -13.20824, 0.39792 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -70), -15.38366, 0.39068 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -65), -16.69568, 0.38361 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -60), -17.19671, 0.37727 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -55), -16.99957, 0.37189 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -50), -16.24347, 0.36749 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -45), -15.06712, 0.36397 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -40), -13.59022, 0.36119 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -35), -11.90492, 0.35902 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -30), -10.07811, 0.35739 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -25), -8.16234, 0.35623 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -20), -6.20943, 0.35552 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -15), -4.27897, 0.35522 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -10), -2.4365, 0.3553 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, -5), -0.7419, 0.3557 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 0), 0.76599, 0.35634 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 5), 2.07952, 0.35712 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 10), 3.22049, 0.35798 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 15), 4.22599, 0.35885 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 20), 5.1288, 0.35969 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 25), 5.9425, 0.36048 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 30), 6.65852, 0.36114 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 35), 7.25501, 0.36162 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 40), 7.71072, 0.3618 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 45), 8.01453, 0.36162 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 50), 8.16506, 0.36106 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 55), 8.16158, 0.36018 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 60), 7.99359, 0.35909 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 65), 7.63652, 0.35793 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 70), 7.05658, 0.35683 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 75), 6.22127, 0.35584 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 80), 5.10955, 0.355 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 85), 3.71738, 0.35427 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 90), 2.05891, 0.3536 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 95), 0.16777, 0.35287 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 100), -1.89774, 0.35198 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 105), -4.04657, 0.3508 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 110), -6.15127, 0.34926 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 115), -8.05771, 0.34738 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 120), -9.61003, 0.3453 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 125), -10.68196, 0.34322 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 130), -11.20055, 0.34138 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 135), -11.15333, 0.33996 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 140), -10.57956, 0.33907 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 145), -9.55257, 0.33874 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 150), -8.1609, 0.33897 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 155), -6.49335, 0.33969 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 160), -4.63024, 0.34085 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 165), -2.64063, 0.34236 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 170), -0.58324, 0.34416 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 175), 1.49148, 0.34616 + 1); + EXPECT_NEAR(get_mag_declination_degrees(45, 180), 3.54019, 0.34825 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -180), 2.83333, 0.35866 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -175), 5.01277, 0.36062 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -170), 7.12823, 0.36279 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -165), 9.14445, 0.36516 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -160), 11.02353, 0.36779 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -155), 12.72394, 0.37075 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -150), 14.2004, 0.37419 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -145), 15.40479, 0.37825 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -140), 16.28766, 0.38308 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -135), 16.79916, 0.38884 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -130), 16.88825, 0.39564 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -125), 16.49989, 0.40355 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -120), 15.57163, 0.41256 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -115), 14.03352, 0.42248 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -110), 11.81719, 0.43288 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -105), 8.88052, 0.44295 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -100), 5.24916, 0.45144 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -95), 1.06313, 0.45685 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -90), -3.40178, 0.45792 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -85), -7.77049, 0.45425 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -80), -11.6617, 0.4466 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -75), -14.7873, 0.43652 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -70), -17.00277, 0.42567 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -65), -18.29777, 0.41534 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -60), -18.75452, 0.40624 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -55), -18.50331, 0.39866 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -50), -17.68848, 0.39258 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -45), -16.4463, 0.38783 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -40), -14.89261, 0.38421 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -35), -13.11879, 0.38152 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -30), -11.19493, 0.37962 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -25), -9.17794, 0.37838 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -20), -7.12075, 0.37774 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -15), -5.07791, 0.37763 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -10), -3.10474, 0.37799 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, -5), -1.25033, 0.37873 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 0), 0.45206, 0.37974 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 5), 1.99177, 0.38092 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 10), 3.38033, 0.38217 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 15), 4.64297, 0.38339 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 20), 5.80559, 0.38452 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 25), 6.88294, 0.38551 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 30), 7.87302, 0.38633 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 35), 8.75877, 0.38693 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 40), 9.51438, 0.3873 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 45), 10.11132, 0.38742 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 50), 10.52082, 0.38733 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 55), 10.71253, 0.3871 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 60), 10.65182, 0.38684 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 65), 10.29954, 0.38667 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 70), 9.61565, 0.38666 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 75), 8.56652, 0.38682 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 80), 7.13339, 0.38707 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 85), 5.31993, 0.38726 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 90), 3.15857, 0.38717 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 95), 0.71583, 0.38655 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 100), -1.90335, 0.38516 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 105), -4.55588, 0.38284 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 110), -7.07041, 0.37961 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 115), -9.26955, 0.37564 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 120), -10.99931, 0.37128 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 125), -12.15463, 0.36693 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 130), -12.6916, 0.36294 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 135), -12.62411, 0.35957 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 140), -12.00977, 0.35694 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 145), -10.93191, 0.3551 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 150), -9.48288, 0.35399 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 155), -7.75156, 0.35356 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 160), -5.8161, 0.35372 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 165), -3.74136, 0.35439 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 170), -1.5801, 0.35548 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 175), 0.62407, 0.35693 + 1); + EXPECT_NEAR(get_mag_declination_degrees(50, 180), 2.83333, 0.35866 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -180), 2.28547, 0.3764 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -175), 4.62276, 0.37839 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -170), 6.91382, 0.38093 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -165), 9.12049, 0.38406 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -160), 11.20026, 0.38785 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -155), 13.1062, 0.39243 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -150), 14.78731, 0.39796 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -145), 16.18919, 0.40462 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -140), 17.25428, 0.41261 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -135), 17.92127, 0.42214 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -130), 18.12307, 0.4334 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -125), 17.78391, 0.44651 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -120), 16.81738, 0.46144 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -115), 15.12932, 0.47791 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -110), 12.63227, 0.49516 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -105), 9.27867, 0.51171 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -100), 5.11423, 0.52536 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -95), 0.33399, 0.53351 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -90), -4.70216, 0.53421 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -85), -9.53515, 0.52718 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -80), -13.73637, 0.51408 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -75), -17.02095, 0.49768 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -70), -19.28183, 0.4806 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -65), -20.55374, 0.46468 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -60), -20.95365, 0.45087 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -55), -20.63082, 0.43945 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -50), -19.73547, 0.43031 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -45), -18.40241, 0.42321 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -40), -16.74453, 0.41782 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -35), -14.85244, 0.41385 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -30), -12.79825, 0.41107 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -25), -10.64151, 0.40928 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -20), -8.43505, 0.40834 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -15), -6.22849, 0.40811 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -10), -4.06799, 0.40849 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, -5), -1.99273, 0.40934 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 0), -0.02984, 0.41055 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 5), 1.80902, 0.41196 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 10), 3.52728, 0.41346 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 15), 5.13833, 0.41494 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 20), 6.65725, 0.41634 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 25), 8.09226, 0.41761 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 30), 9.43902, 0.41876 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 35), 10.67878, 0.4198 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 40), 11.78012, 0.4208 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 45), 12.70199, 0.42182 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 50), 13.39658, 0.42297 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 55), 13.81104, 0.42437 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 60), 13.88874, 0.42613 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 65), 13.57139, 0.42834 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 70), 12.80331, 0.43099 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 75), 11.53874, 0.43395 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 80), 9.75215, 0.43694 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 85), 7.45106, 0.43951 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 90), 4.68961, 0.44107 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 95), 1.57912, 0.44101 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 100), -1.71058, 0.43885 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 105), -4.96517, 0.43444 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 110), -7.95641, 0.42804 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 115), -10.48079, 0.42026 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 120), -12.39198, 0.41188 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 125), -13.61572, 0.40366 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 130), -14.14623, 0.39615 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 135), -14.03037, 0.38968 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 140), -13.34815, 0.3844 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 145), -12.19475, 0.38029 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 150), -10.66675, 0.37729 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 155), -8.85297, 0.37528 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 160), -6.82949, 0.37413 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 165), -4.65844, 0.37375 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 170), -2.3895, 0.37405 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 175), -0.06313, 0.37494 + 1); + EXPECT_NEAR(get_mag_declination_degrees(55, 180), 2.28547, 0.3764 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -180), 1.83383, 0.40746 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -175), 4.30724, 0.40978 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -170), 6.7448, 0.41312 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -165), 9.10934, 0.41757 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -160), 11.35901, 0.42326 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -155), 13.44665, 0.43037 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -150), 15.31943, 0.43913 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -145), 16.91838, 0.44983 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -140), 18.17727, 0.46279 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -135), 19.02055, 0.47837 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -130), 19.36014, 0.49692 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -125), 19.09192, 0.51871 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -120), 18.09418, 0.54378 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -115), 16.23313, 0.57169 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -110), 13.38449, 0.60106 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -105), 9.48188, 0.62914 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -100), 4.59424, 0.65166 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -95), -0.99795, 0.6638 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -90), -6.79929, 0.66234 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -85), -12.2229, 0.64768 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -80), -16.78185, 0.62366 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -75), -20.21279, 0.59543 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -70), -22.47233, 0.56724 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -65), -23.65972, 0.54166 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -60), -23.93708, 0.51977 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -55), -23.47757, 0.50177 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -50), -22.43991, 0.48734 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -45), -20.9591, 0.47602 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -40), -19.14553, 0.46732 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -35), -17.0878, 0.46079 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -30), -14.85715, 0.45605 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -25), -12.51221, 0.45279 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -20), -10.103, 0.45076 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -15), -7.67328, 0.44975 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -10), -5.26107, 0.44958 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, -5), -2.89737, 0.45006 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 0), -0.60446, 0.45103 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 5), 1.60517, 0.45235 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 10), 3.72784, 0.45388 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 15), 5.76545, 0.45553 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 20), 7.72042, 0.45724 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 25), 9.5902, 0.45903 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 30), 11.36277, 0.46093 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 35), 13.01408, 0.46306 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 40), 14.50744, 0.46555 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 45), 15.79435, 0.46858 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 50), 16.81585, 0.47236 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 55), 17.50389, 0.47709 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 60), 17.78284, 0.48295 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 65), 17.57168, 0.49003 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 70), 16.78859, 0.49826 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 75), 15.35976, 0.50733 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 80), 13.23473, 0.51655 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 85), 10.40956, 0.52481 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 90), 6.95459, 0.53067 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 95), 3.03631, 0.53259 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 100), -1.08431, 0.52955 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 105), -5.08975, 0.5214 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 110), -8.67166, 0.50911 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 115), -11.59385, 0.49428 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 120), -13.72434, 0.47866 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 125), -15.03107, 0.46364 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 130), -15.55621, 0.45012 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 135), -15.38608, 0.43853 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 140), -14.6267, 0.42895 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 145), -13.38704, 0.42131 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 150), -11.76897, 0.41543 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 155), -9.86186, 0.4111 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 160), -7.74059, 0.40814 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 165), -5.46585, 0.4064 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 170), -3.08627, 0.40575 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 175), -0.64156, 0.40611 + 1); + EXPECT_NEAR(get_mag_declination_degrees(60, 180), 1.83383, 0.40746 + 1); +} + +TEST(GeoLookupTest, inclination) { + EXPECT_NEAR(get_mag_inclination_degrees(-50, -180), -71.61084, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -175), -70.62874, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -170), -69.66156, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -165), -68.70996, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -160), -67.77313, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -155), -66.84867, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -150), -65.93165, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -145), -65.01326, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -140), -64.07996, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -135), -63.11352, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -130), -62.09258, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -125), -60.99525, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -120), -59.80277, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -115), -58.50354, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -110), -57.09767, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -105), -55.60145, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -100), -54.05122, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -95), -52.50565, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -90), -51.04505, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -85), -49.76644, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -80), -48.77365, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -75), -48.16244, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -70), -48.00301, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -65), -48.32392, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -60), -49.10299, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -55), -50.26916, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -50), -51.7152, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -45), -53.31692, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -40), -54.95222, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -35), -56.51501, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -30), -57.92171, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -25), -59.11145, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -20), -60.04289, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -15), -60.6911, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -10), -61.04716, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, -5), -61.12106, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 0), -60.94633, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 5), -60.58335, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 10), -60.11826, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 15), -59.65548, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 20), -59.30388, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 25), -59.16, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 30), -59.29354, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 35), -59.73961, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 40), -60.49909, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 45), -61.54488, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 50), -62.83111, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 55), -64.30243, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 60), -65.90204, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 65), -67.57743, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 70), -69.28362, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 75), -70.98365, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 80), -72.64657, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 85), -74.2438, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 90), -75.74507, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 95), -77.11542, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 100), -78.31467, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 105), -79.30011, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 110), -80.03303, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 115), -80.48779, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 120), -80.65989, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 125), -80.5679, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 130), -80.24721, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 135), -79.73977, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 140), -79.08555, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 145), -78.31855, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 150), -77.46631, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 155), -76.55131, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 160), -75.59245, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 165), -74.60612, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 170), -73.60651, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 175), -72.60523, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-50, 180), -71.61084, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -180), -68.20669, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -175), -67.22797, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -170), -66.25707, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -165), -65.29468, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -160), -64.34086, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -155), -63.39583, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -150), -62.45923, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -145), -61.52809, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -140), -60.5947, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -135), -59.64535, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -130), -58.66053, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -125), -57.61636, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -120), -56.48727, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -115), -55.25013, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -110), -53.89033, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -105), -52.40978, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -100), -50.83564, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -95), -49.22754, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -90), -47.68018, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -85), -46.31884, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -80), -45.28587, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -75), -44.71806, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -70), -44.7182, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -65), -45.3283, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -60), -46.51504, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -55), -48.17512, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -50), -50.1593, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -45), -52.30494, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -40), -54.4643, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -35), -56.52085, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -30), -58.3918, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -25), -60.02065, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -20), -61.3657, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -15), -62.39107, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -10), -63.06529, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, -5), -63.36853, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 0), -63.30535, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 5), -62.91719, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 10), -62.2889, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 15), -61.54516, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 20), -60.83467, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 25), -60.30448, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 30), -60.07253, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 35), -60.20886, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 40), -60.73089, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 45), -61.61077, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 50), -62.78907, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 55), -64.18959, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 60), -65.73231, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 65), -67.34292, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 70), -68.95838, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 75), -70.52777, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 80), -72.00943, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 85), -73.36593, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 90), -74.56015, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 95), -75.55536, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 100), -76.32079, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 105), -76.84012, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 110), -77.11768, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 115), -77.17696, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 120), -77.05184, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 125), -76.77586, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 130), -76.37525, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 135), -75.86774, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 140), -75.26484, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 145), -74.57518, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 150), -73.807, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 155), -72.96982, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 160), -72.07528, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 165), -71.13721, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 170), -70.17066, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 175), -69.19, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-45, 180), -68.20669, 0.21 + 2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -180), -64.40123, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -175), -63.40989, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -170), -62.42121, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -165), -61.43383, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -160), -60.44609, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -155), -59.45872, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -150), -58.47501, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -145), -57.49848, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -140), -56.52964, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -135), -55.56325, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -130), -54.58675, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -125), -53.57938, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -120), -52.51249, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -115), -51.35204, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -110), -50.06563, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -105), -48.63463, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -100), -47.06998, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -95), -45.42672, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -90), -43.81194, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -85), -42.38115, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -80), -41.32024, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -75), -40.81272, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -70), -40.9969, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -65), -41.92538, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -60), -43.54482, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -55), -45.70875, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -50), -48.21862, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -45), -50.87331, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -40), -53.50675, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -35), -56.00419, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -30), -58.29807, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -25), -60.35044, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -20), -62.13088, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -15), -63.59969, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -10), -64.70365, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, -5), -65.38668, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 0), -65.6108, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 5), -65.37863, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 10), -64.74921, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 15), -63.84218, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 20), -62.82738, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 25), -61.89757, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 30), -61.22941, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 35), -60.94774, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 40), -61.1073, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 45), -61.69516, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 50), -62.64687, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 55), -63.86781, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 60), -65.25352, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 65), -66.70558, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 70), -68.14109, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 75), -69.49496, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 80), -70.71616, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 85), -71.76184, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 90), -72.59461, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 95), -73.18685, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 100), -73.53019, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 105), -73.64274, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 110), -73.56619, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 115), -73.35232, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 120), -73.04642, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 125), -72.67646, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 130), -72.25157, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 135), -71.76788, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 140), -71.21652, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 145), -70.58973, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 150), -69.88384, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 155), -69.10012, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 160), -68.24515, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 165), -67.33098, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 170), -66.37408, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 175), -65.3924, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-40, 180), -64.40123, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -180), -60.05412, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -175), -59.0323, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -170), -58.01236, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -165), -56.9893, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -160), -55.95698, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -155), -54.91369, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -150), -53.86402, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -145), -52.8168, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -140), -51.7811, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -135), -50.76224, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -130), -49.7582, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -125), -48.75587, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -120), -47.72731, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -115), -46.62924, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -110), -45.41012, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -105), -44.02727, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -100), -42.47152, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -95), -40.79138, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -90), -39.10729, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -85), -37.60859, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -80), -36.52939, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -75), -36.10328, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -70), -36.50342, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -65), -37.78693, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -60), -39.8706, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -55), -42.55561, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -50), -45.58958, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -45), -48.73389, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -40), -51.8084, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -35), -54.70553, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -30), -57.37854, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -25), -59.81401, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -20), -61.9999, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -15), -63.90128, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -10), -65.45275, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, -5), -66.5701, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 0), -67.17675, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 5), -67.23375, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 10), -66.76225, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 15), -65.85344, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 20), -64.66652, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 25), -63.41142, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 30), -62.31155, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 35), -61.55499, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 40), -61.25511, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 45), -61.43638, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 50), -62.04571, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 55), -62.97885, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 60), -64.11063, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 65), -65.32048, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 70), -66.50802, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 75), -67.59698, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 80), -68.52986, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 85), -69.26028, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 90), -69.75156, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 95), -69.98501, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 100), -69.97215, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 105), -69.75906, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 110), -69.41507, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 115), -69.01016, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 120), -68.59327, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 125), -68.1819, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 130), -67.7657, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 135), -67.31931, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 140), -66.81615, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 145), -66.23687, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 150), -65.57102, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 155), -64.81556, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 160), -63.97396, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 165), -63.05711, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 170), -62.08335, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 175), -61.07541, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-35, 180), -60.05412, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -180), -55.00897, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -175), -53.93558, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -170), -52.87017, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -165), -51.80338, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -160), -50.7222, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -155), -49.61924, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -150), -48.49717, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -145), -47.36748, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -140), -46.24613, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -135), -45.14876, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -130), -44.08535, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -125), -43.05288, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -120), -42.02667, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -115), -40.95555, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -110), -39.76889, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -105), -38.39968, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -100), -36.81969, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -95), -35.07429, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -90), -33.30248, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -85), -31.7327, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -80), -30.65026, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -75), -30.33758, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -70), -30.99693, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -65), -32.68144, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -60), -35.27063, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -55), -38.50991, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -50), -42.09352, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -45), -45.74628, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -40), -49.27254, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -35), -52.56714, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -30), -55.5978, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -25), -58.37053, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -20), -60.89103, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -15), -63.13516, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -10), -65.03835, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, -5), -66.50648, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 0), -67.44334, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 5), -67.78368, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 10), -67.51848, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 15), -66.70631, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 20), -65.47524, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 25), -64.01813, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 30), -62.5716, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 35), -61.37063, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 40), -60.59218, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 45), -60.31544, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 50), -60.51665, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 55), -61.09507, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 60), -61.91361, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 65), -62.83644, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 70), -63.75202, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 75), -64.57766, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 80), -65.25079, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 85), -65.71862, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 90), -65.93865, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 95), -65.89273, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 100), -65.60408, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 105), -65.14068, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 110), -64.5966, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 115), -64.05953, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 120), -63.58178, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 125), -63.16864, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 130), -62.78731, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 135), -62.38873, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 140), -61.92913, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 145), -61.38091, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 150), -60.73156, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 155), -59.97752, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 160), -59.12103, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 165), -58.17206, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 170), -57.1511, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 175), -56.08709, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-30, 180), -55.00897, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -180), -49.10955, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -175), -47.95851, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -170), -46.83089, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -165), -45.71322, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -160), -44.58381, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -155), -43.42648, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -150), -42.23839, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -145), -41.03014, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -140), -39.82165, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -135), -38.63678, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -130), -37.4965, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -125), -36.40783, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -120), -35.34954, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -115), -34.26296, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -110), -33.0595, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -105), -31.65123, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -100), -29.99742, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -95), -28.14903, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -90), -26.27198, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -85), -24.63816, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -80), -23.58178, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -75), -23.42491, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -70), -24.38669, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -65), -26.50776, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -60), -29.63056, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -55), -33.45219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -50), -37.62097, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -45), -41.82618, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -40), -45.8488, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -35), -49.57148, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -30), -52.95948, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -25), -56.02448, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -20), -58.78377, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -15), -61.22785, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -10), -63.30687, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, -5), -64.93853, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 0), -66.03249, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 5), -66.52062, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 10), -66.38074, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 15), -65.6479, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 20), -64.41849, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 25), -62.85383, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 30), -61.17559, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 35), -59.63525, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 40), -58.45497, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 45), -57.7662, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 50), -57.58195, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 55), -57.81518, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 60), -58.32691, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 65), -58.97559, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 70), -59.64676, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 75), -60.25645, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 80), -60.73718, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 85), -61.02489, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 90), -61.06285, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 95), -60.82423, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 100), -60.33693, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 105), -59.6881, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 110), -58.99822, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 115), -58.37632, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 120), -57.8802, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 125), -57.5015, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 130), -57.18096, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 135), -56.84212, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 140), -56.42315, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 145), -55.89072, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 150), -55.23444, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 155), -54.4539, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 160), -53.55173, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 165), -52.53725, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 170), -51.43347, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 175), -50.2774, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-25, 180), -49.10955, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -180), -42.22083, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -175), -40.96089, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -170), -39.75115, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -165), -38.5752, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -160), -37.40144, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -155), -36.20199, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -150), -34.96489, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -145), -33.69628, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -140), -32.41671, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -135), -31.15531, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -130), -29.94131, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -125), -28.78906, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -120), -27.67858, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -115), -26.54291, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -110), -25.27815, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -105), -23.78276, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -100), -22.0149, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -95), -20.04317, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -90), -18.06801, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -85), -16.40336, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -80), -15.42011, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -75), -15.4606, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -70), -16.74375, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -65), -19.29393, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -60), -22.92938, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -55), -27.31984, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -50), -32.08298, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -45), -36.87344, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -40), -41.43579, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -35), -45.61926, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -30), -49.36431, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -25), -52.67119, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -20), -55.56145, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -15), -58.04448, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -10), -60.10007, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, -5), -61.68035, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 0), -62.72623, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 5), -63.18845, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 10), -63.04494, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 15), -62.31289, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 20), -61.06017, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 25), -59.41843, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 30), -57.5889, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 35), -55.82237, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 40), -54.36297, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 45), -53.37593, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 50), -52.90219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 55), -52.86807, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 60), -53.13766, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 65), -53.57145, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 70), -54.05999, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 75), -54.52352, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 80), -54.89108, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 85), -55.08446, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 90), -55.02685, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 95), -54.67601, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 100), -54.05948, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 105), -53.28236, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 110), -52.49432, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 115), -51.83023, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 120), -51.35592, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 125), -51.04807, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 130), -50.81661, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 135), -50.55337, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 140), -50.17672, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 145), -49.64906, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 150), -48.9654, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 155), -48.13136, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 160), -47.15148, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 165), -46.03476, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 170), -44.80756, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 175), -43.51746, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-20, 180), -42.22083, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -180), -34.2652, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -175), -32.86388, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -170), -31.55165, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -165), -30.31114, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -160), -29.1001, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -155), -27.8763, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -150), -26.61516, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -145), -25.31516, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -140), -23.99473, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -135), -22.6857, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -130), -21.42217, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -125), -20.2216, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -120), -19.06123, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -115), -17.86487, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -110), -16.51802, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -105), -14.91647, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -100), -13.03113, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -95), -10.95906, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -90), -8.93646, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -85), -7.30723, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -80), -6.45518, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -75), -6.71621, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -70), -8.29274, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -65), -11.19771, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -60), -15.25013, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -55), -20.12363, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -50), -25.42612, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -45), -30.77971, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -40), -35.87868, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -35), -40.5176, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -30), -44.5916, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -25), -48.07525, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -20), -50.98926, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -15), -53.36722, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -10), -55.23289, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, -5), -56.59225, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 0), -57.4361, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 5), -57.74676, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 10), -57.50676, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 15), -56.71373, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 20), -55.40441, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 25), -53.68253, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 30), -51.73434, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 35), -49.81145, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 40), -48.17186, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 45), -46.99911, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 50), -46.34686, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 55), -46.14513, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 60), -46.25833, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 65), -46.55161, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 70), -46.92596, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 75), -47.31119, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 80), -47.63611, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 85), -47.80865, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 90), -47.72953, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 95), -47.33712, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 100), -46.65479, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 105), -45.80387, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 110), -44.96465, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 115), -44.30099, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 120), -43.88894, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 125), -43.6893, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 130), -43.57789, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 135), -43.41122, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 140), -43.08598, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 145), -42.56048, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 150), -41.83673, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 155), -40.92818, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 160), -39.84232, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 165), -38.58849, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 170), -37.19762, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 175), -35.73086, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-15, 180), -34.2652, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -180), -25.27473, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -175), -23.70845, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -170), -22.28049, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -165), -20.9751, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -160), -19.73947, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -155), -18.51481, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -150), -17.26077, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -145), -15.96529, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -140), -14.64297, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -135), -13.32673, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -130), -12.05286, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -125), -10.83768, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -120), -9.65206, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -115), -8.41115, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -110), -6.99718, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -105), -5.31574, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -100), -3.36246, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -95), -1.26667, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -90), 0.70929, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -85), 2.21463, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -80), 2.88258, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -75), 2.40912, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -70), 0.61767, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -65), -2.50482, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -60), -6.80577, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -55), -11.99442, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -50), -17.69194, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -45), -23.49529, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -40), -29.04214, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -35), -34.05984, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -30), -38.38647, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -25), -41.96323, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -20), -44.80755, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -15), -46.98012, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -10), -48.5562, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, -5), -49.6046, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 0), -50.1728, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 5), -50.27733, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 10), -49.90447, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 15), -49.02917, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 20), -47.65352, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 25), -45.85219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 30), -43.79986, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 35), -41.755, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 40), -39.99208, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 45), -38.70836, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 50), -37.96042, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 55), -37.67198, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 60), -37.70132, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 65), -37.9165, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 70), -38.23089, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 75), -38.58793, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 80), -38.92047, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 85), -39.12556, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 90), -39.08246, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 95), -38.70896, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 100), -38.02131, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 105), -37.15381, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 110), -36.31529, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 115), -35.69833, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 120), -35.38981, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 125), -35.33506, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 130), -35.37548, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 135), -35.33142, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 140), -35.07667, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 145), -34.56438, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 150), -33.80293, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 155), -32.81363, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 160), -31.60742, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 165), -30.19482, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 170), -28.61284, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 175), -26.9389, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-10, 180), -25.27473, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -180), -15.44634, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -175), -13.71526, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -170), -12.17612, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -165), -10.81787, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -160), -9.57864, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -155), -8.38224, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -150), -7.17015, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -145), -5.91754, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -140), -4.63394, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -135), -3.35262, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -130), -2.11051, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -125), -0.92053, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -120), 0.25357, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -115), 1.50135, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -110), 2.9347, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -105), 4.62764, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -100), 6.5549, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -95), 8.56147, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -90), 10.37815, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -85), 11.67433, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -80), 12.12606, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -75), 11.47679, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -70), 9.57724, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -65), 6.40376, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -60), 2.06341, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -55), -3.20889, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -50), -9.06787, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -45), -15.10219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -40), -20.90353, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -35), -26.13702, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -30), -30.58508, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -25), -34.15446, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -20), -36.85584, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -15), -38.77204, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -10), -40.02463, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, -5), -40.74088, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 0), -41.02157, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 5), -40.91533, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 10), -40.41144, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 15), -39.46218, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 20), -38.03479, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 25), -36.17433, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 30), -34.04395, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 35), -31.91004, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 40), -30.06434, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 45), -28.71675, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 50), -27.92364, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 55), -27.59839, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 60), -27.5893, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 65), -27.76454, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 70), -28.04923, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 75), -28.4025, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 80), -28.7657, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 85), -29.03072, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 90), -29.06033, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 95), -28.75417, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 100), -28.1197, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 105), -27.29856, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 110), -26.52067, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 115), -26.00123, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 120), -25.83595, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 125), -25.95737, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 130), -26.17754, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 135), -26.28478, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 140), -26.1308, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 145), -25.66131, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 150), -24.88781, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 155), -23.83733, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 160), -22.52394, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 165), -20.96028, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 170), -19.19064, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 175), -17.30998, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(-5, 180), -15.44634, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -180), -5.1642, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -175), -3.30434, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -170), -1.68383, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -165), -0.29959, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -160), 0.9158, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -155), 2.05399, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -150), 3.1919, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -145), 4.36839, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -140), 5.58021, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -135), 6.79449, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -130), 7.97418, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -125), 9.10928, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -120), 10.23969, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -115), 11.45239, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -110), 12.84439, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -105), 14.46402, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -100), 16.26011, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -95), 18.06651, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -90), 19.6287, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -85), 20.65752, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -80), 20.88576, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -75), 20.10833, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -70), 18.20094, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -65), 15.12731, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -60), 10.94957, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -55), 5.84512, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -50), 0.11365, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -45), -5.84963, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -40), -11.62067, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -35), -16.82895, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -30), -21.21776, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -25), -24.66363, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -20), -27.16348, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -15), -28.80749, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -10), -29.74618, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, -5), -30.15044, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 0), -30.16525, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 5), -29.86856, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 10), -29.25454, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 15), -28.25718, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 20), -26.81313, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 25), -24.93968, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 30), -22.78636, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 35), -20.62161, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 40), -18.74708, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 45), -17.38008, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 50), -16.57615, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 55), -16.24083, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 60), -16.21446, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 65), -16.36458, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 70), -16.62584, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 75), -16.97269, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 80), -17.35913, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 85), -17.68042, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 90), -17.79295, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 95), -17.58523, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 100), -17.05621, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 105), -16.34675, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 110), -15.69391, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 115), -15.32238, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 120), -15.33164, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 125), -15.64693, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 130), -16.06294, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 135), -16.34661, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 140), -16.33163, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 145), -15.95348, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 150), -15.22099, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 155), -14.16242, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 160), -12.79367, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 165), -11.13008, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 170), -9.22337, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 175), -7.18423, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(0, 180), -5.1642, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -180), 5.05582, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -175), 6.97337, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -170), 8.62321, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -165), 9.99748, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -160), 11.16322, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -155), 12.22204, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -150), 13.26608, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -145), 14.34773, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -140), 15.47108, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -135), 16.60517, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -130), 17.7131, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -125), 18.78506, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -120), 19.85821, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -115), 21.00842, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -110), 22.3114, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -105), 23.79016, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -100), 25.37692, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -95), 26.90991, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -90), 28.16509, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -85), 28.90476, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -80), 28.92027, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -75), 28.05468, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -70), 26.2075, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -65), 23.33722, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -60), 19.47651, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -55), 14.75912, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -50), 9.43795, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -45), 3.86872, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -40), -1.54891, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -35), -6.45059, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -30), -10.56989, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -25), -13.76367, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -20), -16.00804, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -15), -17.38138, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -10), -18.03932, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, -5), -18.17514, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 0), -17.96459, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 5), -17.5109, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 10), -16.81732, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 15), -15.80846, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 20), -14.39962, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 25), -12.58486, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 30), -10.49614, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 35), -8.39154, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 40), -6.56698, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 45), -5.2365, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 50), -4.45412, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 55), -4.12471, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 60), -4.08821, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 65), -4.2138, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 70), -4.44258, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 75), -4.76108, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 80), -5.13839, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 85), -5.4833, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 90), -5.66018, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 95), -5.55829, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 100), -5.17061, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 105), -4.62769, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 110), -4.15527, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 115), -3.96946, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 120), -4.16616, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 125), -4.67094, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 130), -5.27839, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 135), -5.75057, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 140), -5.91091, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 145), -5.68266, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 150), -5.06489, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 155), -4.08086, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 160), -2.74575, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 165), -1.07728, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 170), 0.86729, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 175), 2.96725, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(5, 180), 5.05582, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -180), 14.70275, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -175), 16.58812, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -170), 18.20597, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -165), 19.53545, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -160), 20.63611, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -155), 21.61096, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -150), 22.56072, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -145), 23.54838, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -140), 24.58601, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -135), 25.64668, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -130), 26.69427, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -125), 27.7161, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -120), 28.74014, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -115), 29.82422, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -110), 31.01984, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -105), 32.32858, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -100), 33.67564, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -95), 34.91433, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -90), 35.8577, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -85), 36.31918, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -80), 36.14283, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -75), 35.21419, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -70), 33.45822, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -65), 30.8409, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -60), 27.38636, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -55), 23.20411, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -50), 18.50636, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -45), 13.59435, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -40), 8.8097, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -35), 4.47003, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -30), 0.81843, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -25), -1.9994, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -20), -3.93838, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -15), -5.05085, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -10), -5.47518, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, -5), -5.4034, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 0), -5.02388, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 5), -4.4575, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 10), -3.72048, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 15), -2.74029, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 20), -1.42436, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 25), 0.24953, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 30), 2.17196, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 35), 4.1111, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 40), 5.79595, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 45), 7.02837, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 50), 7.75656, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 55), 8.06761, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 60), 8.1116, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 65), 8.01326, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 70), 7.82808, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 75), 7.56303, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 80), 7.23474, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 85), 6.9128, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 90), 6.71034, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 95), 6.72381, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 100), 6.9615, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 105), 7.31107, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 110), 7.57524, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 115), 7.56371, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 120), 7.19143, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 125), 6.52535, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 130), 5.75373, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 135), 5.1014, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 140), 4.74483, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 145), 4.77258, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 150), 5.20122, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 155), 6.01877, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 160), 7.21411, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 165), 8.76892, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 170), 10.62452, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 175), 12.65906, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(10, 180), 14.70275, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -180), 23.41542, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -175), 25.18118, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -170), 26.70977, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -165), 27.96735, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -160), 28.99979, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -155), 29.90205, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -150), 30.77463, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -145), 31.68598, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -140), 32.65556, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -135), 33.66244, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -130), 34.67262, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -125), 35.66896, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -120), 36.66612, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -115), 37.70042, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -110), 38.79938, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -105), 39.94784, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -100), 41.07047, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -95), 42.03991, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -90), 42.70507, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -85), 42.92369, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -80), 42.5836, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -75), 41.6074, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -70), 39.94844, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -65), 37.59252, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -60), 34.57262, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -55), 30.9896, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -50), 27.02194, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -45), 22.91112, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -40), 18.92357, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -35), 15.30628, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -30), 12.25499, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -25), 9.90012, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -20), 8.29966, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -15), 7.43041, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -10), 7.18515, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, -5), 7.39378, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 0), 7.87537, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 5), 8.50314, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 10), 9.24692, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 15), 10.1649, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 20), 11.34293, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 25), 12.81121, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 30), 14.48616, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 35), 16.17551, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 40), 17.64892, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 45), 18.73427, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 50), 19.38277, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 55), 19.66644, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 60), 19.71631, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 65), 19.64587, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 70), 19.50883, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 75), 19.31144, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 80), 19.05992, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 85), 18.79973, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 90), 18.61266, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 95), 18.57076, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 100), 18.67836, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 105), 18.84427, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 110), 18.90904, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 115), 18.71828, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 120), 18.20254, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 125), 17.41753, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 130), 16.52327, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 135), 15.71804, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 140), 15.1681, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 145), 14.97033, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 150), 15.15888, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 155), 15.7369, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 160), 16.70037, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 165), 18.03299, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 170), 19.67973, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 175), 21.5272, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(15, 180), 23.41542, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -180), 31.04863, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -175), 32.62416, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -170), 34.01685, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -165), 35.18293, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -160), 36.15135, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -155), 37.00119, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -150), 37.82363, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -145), 38.68592, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -140), 39.61244, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -135), 40.58916, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -130), 41.58582, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -125), 42.58124, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -120), 43.57617, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -115), 44.5857, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -110), 45.61583, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -105), 46.63872, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -100), 47.58152, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -95), 48.33537, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -90), 48.77929, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -85), 48.80601, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -80), 48.33798, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -75), 47.32998, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -70), 45.76549, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -65), 43.65736, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -60), 41.05664, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -55), 38.06323, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -50), 34.82661, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -45), 31.5305, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -40), 28.36582, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -35), 25.50527, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -30), 23.08949, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -25), 21.22219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -20), 19.96269, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -15), 19.31042, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -10), 19.19207, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, -5), 19.47159, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 0), 19.99182, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 5), 20.63245, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 10), 21.35231, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 15), 22.18857, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 20), 23.20945, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 25), 24.44511, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 30), 25.83702, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 35), 27.23814, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 40), 28.46649, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 45), 29.38163, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 50), 29.9391, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 55), 30.19296, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 60), 30.24991, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 65), 30.20795, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 70), 30.1184, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 75), 29.99023, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 80), 29.82412, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 85), 29.64439, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 90), 29.50091, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 95), 29.43795, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 100), 29.45208, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 105), 29.47098, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 110), 29.37269, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 115), 29.03985, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 120), 28.41995, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 125), 27.55772, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 130), 26.58251, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 135), 25.66065, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 140), 24.94147, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 145), 24.52457, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 150), 24.45896, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 155), 24.76278, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 160), 25.44021, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 165), 26.47912, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 170), 27.83224, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 175), 29.40202, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(20, 180), 31.04863, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -180), 37.6458, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -175), 38.98329, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -170), 40.20596, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -165), 41.26591, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -160), 42.17586, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -155), 42.99437, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -150), 43.79577, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -145), 44.63895, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -140), 45.54896, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -135), 46.51759, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -130), 47.51932, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -125), 48.53078, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -120), 49.54126, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -115), 50.54789, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -110), 51.53928, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -105), 52.47826, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -100), 53.29515, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -95), 53.89626, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -90), 54.18353, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -85), 54.07573, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -80), 53.5219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -75), 52.50423, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -70), 51.03494, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -65), 49.15435, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -60), 46.93219, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -55), 44.46819, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -50), 41.88595, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -45), 39.31878, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -40), 36.89322, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -35), 34.71862, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -30), 32.88606, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -25), 31.47004, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -20), 30.52223, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -15), 30.05438, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -10), 30.02152, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, -5), 30.32372, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 0), 30.83553, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 5), 31.45215, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 10), 32.12666, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 15), 32.87477, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 20), 33.74244, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 25), 34.75393, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 30), 35.87125, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 35), 36.99026, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 40), 37.97719, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 45), 38.7247, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 50), 39.19471, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 55), 39.42437, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 60), 39.49502, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 65), 39.48638, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 70), 39.44508, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 75), 39.38293, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 80), 39.29864, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 85), 39.20101, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 90), 39.11334, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 95), 39.05475, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 100), 39.01276, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 105), 38.92898, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 110), 38.71249, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 115), 38.27788, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 120), 37.58845, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 125), 36.68075, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 130), 35.65751, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 135), 34.65478, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 140), 33.80244, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 145), 33.19725, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 150), 32.8973, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 155), 32.93188, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 160), 33.31225, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 165), 34.0311, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 170), 35.0509, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 175), 36.29362, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(25, 180), 37.6458, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -180), 43.36964, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -175), 44.44644, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -170), 45.47942, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -165), 46.42345, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -160), 47.27878, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -155), 48.08263, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -150), 48.88788, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -145), 49.73904, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -140), 50.65656, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -135), 51.63511, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -130), 52.65352, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -125), 53.68821, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -120), 54.7209, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -115), 55.73596, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -110), 56.70952, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -105), 57.59829, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -100), 58.33573, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -95), 58.8396, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -90), 59.02848, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -85), 58.84, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -80), 58.24345, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -75), 57.24328, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -70), 55.87574, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -65), 54.20325, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -60), 52.30875, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -55), 50.28889, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -50), 48.24441, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -45), 46.26898, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -40), 44.44125, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -35), 42.82437, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -30), 41.4719, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -25), 40.43266, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -20), 39.74613, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -15), 39.42731, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -10), 39.45048, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, -5), 39.74655, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 0), 40.22167, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 5), 40.79053, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 10), 41.4058, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 15), 42.06589, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 20), 42.79553, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 25), 43.6104, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 30), 44.48723, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 35), 45.35777, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 40), 46.13105, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 45), 46.73111, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 50), 47.12826, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 55), 47.34614, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 60), 47.4426, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 65), 47.4781, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 70), 47.49149, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 75), 47.49519, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 80), 47.48709, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 85), 47.46577, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 90), 47.43526, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 95), 47.39522, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 100), 47.32505, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 105), 47.17568, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 110), 46.87937, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 115), 46.37584, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 120), 45.64215, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 125), 44.71023, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 130), 43.66276, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 135), 42.61072, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 140), 41.66507, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 145), 40.91541, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 150), 40.42236, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 155), 40.22105, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 160), 40.32717, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 165), 40.73765, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 170), 41.4248, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 175), 42.33051, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(30, 180), 43.36964, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -180), 48.43953, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -175), 49.25963, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -170), 50.10087, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -165), 50.92629, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -160), 51.7287, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -155), 52.5266, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -150), 53.35067, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -145), 54.22772, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -140), 55.16925, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -135), 56.16901, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -130), 57.2084, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -125), 58.26465, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -120), 59.31559, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -115), 60.338, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -110), 61.30064, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -105), 62.15717, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -100), 62.84432, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -95), 63.28877, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -90), 63.42139, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -85), 63.19386, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -80), 62.59092, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -75), 61.63394, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -70), 60.37621, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -65), 58.89377, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -60), 57.27489, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -55), 55.60941, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -50), 53.9788, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -45), 52.44858, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -40), 51.06622, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -35), 49.86566, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -30), 48.87563, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -25), 48.12524, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -20), 47.64093, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -15), 47.4349, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -10), 47.49204, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, -5), 47.7658, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 0), 48.18895, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 5), 48.6954, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 10), 49.24158, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 15), 49.8146, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 20), 50.42258, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 25), 51.07287, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 30), 51.7519, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 35), 52.41889, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 40), 53.01773, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 45), 53.49994, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 50), 53.84522, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 55), 54.06773, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 60), 54.20541, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 65), 54.29994, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 70), 54.37982, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 75), 54.45473, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 80), 54.52092, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 85), 54.57018, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 90), 54.59361, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 95), 54.5775, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 100), 54.49536, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 105), 54.3047, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 110), 53.95482, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 115), 53.40483, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 120), 52.64379, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 125), 51.70225, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 130), 50.64909, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 135), 49.57581, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 140), 48.57614, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 145), 47.7297, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 150), 47.09424, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 155), 46.70571, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 160), 46.58148, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 165), 46.7218, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 170), 47.10793, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 175), 47.7, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(35, 180), 48.43953, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -180), 53.08741, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -175), 53.68014, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -170), 54.34608, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -165), 55.05872, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -160), 55.80795, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -155), 56.5982, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -150), 57.44114, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -145), 58.34636, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -140), 59.31462, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -135), 60.33583, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -130), 61.39176, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -125), 62.46021, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -120), 63.51737, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -115), 64.53632, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -110), 65.48245, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -105), 66.30895, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -100), 66.9564, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -95), 67.35912, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -90), 67.45807, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -85), 67.21633, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -80), 66.6307, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -75), 65.73427, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -70), 64.58996, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -65), 63.2787, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -60), 61.8867, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -55), 60.49421, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -50), 59.16713, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -45), 57.95275, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -40), 56.88081, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -35), 55.9694, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -30), 55.23281, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -25), 54.68644, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -20), 54.34516, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -15), 54.21552, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -10), 54.28673, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, -5), 54.5269, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 0), 54.88877, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 5), 55.32295, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 10), 55.79209, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 15), 56.27802, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 20), 56.77818, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 25), 57.29376, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 30), 57.81741, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 35), 58.32794, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 40), 58.79547, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 45), 59.19349, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 50), 59.5107, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 55), 59.7553, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 60), 59.94955, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 65), 60.11828, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 70), 60.27821, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 75), 60.4332, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 80), 60.57601, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 85), 60.69293, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 90), 60.76655, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 95), 60.7747, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 100), 60.68776, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 105), 60.46891, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 110), 60.08091, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 115), 59.49866, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 120), 58.72211, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 125), 57.78286, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 130), 56.74074, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 135), 55.67217, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 140), 54.6555, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 145), 53.75883, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 150), 53.03347, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 155), 52.51271, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 160), 52.21367, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 165), 52.13913, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 170), 52.27816, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 175), 52.60623, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(40, 180), 53.08741, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -180), 57.5203, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -175), 57.9332, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -170), 58.45433, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -165), 59.06672, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -160), 59.76021, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -155), 60.53058, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -150), 61.37611, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -145), 62.29322, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -140), 63.27327, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -135), 64.30161, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -130), 65.35885, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -125), 66.42263, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -120), 67.46826, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -115), 68.46718, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -110), 69.38365, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -105), 70.17198, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -100), 70.77695, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -95), 71.14007, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -90), 71.21156, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -85), 70.96476, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -80), 70.40619, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -75), 69.57639, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -70), 68.54151, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -65), 67.38038, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -60), 66.1719, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -55), 64.98531, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -50), 63.87424, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -45), 62.8748, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -40), 62.00787, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -35), 61.28436, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -30), 60.71123, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -25), 60.29526, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -20), 60.04242, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -15), 59.95339, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -10), 60.01823, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, -5), 60.21388, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 0), 60.50707, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 5), 60.8618, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 10), 61.24807, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 15), 61.64729, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 20), 62.05182, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 25), 62.45959, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 30), 62.86735, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 35), 63.26685, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 40), 63.64605, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 45), 63.99418, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 50), 64.30715, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 55), 64.58969, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 60), 64.8526, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 65), 65.10686, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 70), 65.35757, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 75), 65.60082, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 80), 65.82398, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 85), 66.0079, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 90), 66.12905, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 95), 66.16021, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 100), 66.07111, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 105), 65.83092, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 110), 65.41434, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 115), 64.81014, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 120), 64.02857, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 125), 63.10372, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 130), 62.08941, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 135), 61.05008, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 140), 60.05034, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 145), 59.14649, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 150), 58.38169, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 155), 57.7848, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 160), 57.37166, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 165), 57.14709, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 170), 57.10652, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 175), 57.23727, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(45, 180), 57.5203, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -180), 61.88464, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -175), 62.17108, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -170), 62.58268, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -165), 63.10935, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -160), 63.74217, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -155), 64.47293, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -150), 65.29276, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -145), 66.19056, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -140), 67.15195, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -135), 68.15915, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -130), 69.19155, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -125), 70.22632, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -120), 71.23809, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -115), 72.19734, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -110), 73.06804, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -105), 73.80589, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -100), 74.35961, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -95), 74.67734, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -90), 74.71812, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -85), 74.46497, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -80), 73.93268, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -75), 73.16614, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -70), 72.23027, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -65), 71.19733, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -60), 70.13606, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -55), 69.10446, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -50), 68.14626, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -45), 67.29052, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -40), 66.55396, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -35), 65.94482, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -30), 65.46692, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -25), 65.12223, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -20), 64.91091, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -15), 64.82929, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -10), 64.8673, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, -5), 65.00729, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 0), 65.22561, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 5), 65.49669, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 10), 65.798, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 15), 66.1137, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 20), 66.43544, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 25), 66.76042, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 30), 67.08817, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 35), 67.41801, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 40), 67.74844, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 45), 68.07822, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 50), 68.4079, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 55), 68.74005, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 60), 69.07776, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 65), 69.42164, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 70), 69.76689, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 75), 70.10154, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 80), 70.4065, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 85), 70.65697, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 90), 70.82434, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 95), 70.87838, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 100), 70.78994, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 105), 70.53483, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 110), 70.09918, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 115), 69.48452, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 120), 68.71069, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 125), 67.81476, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 130), 66.84611, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 135), 65.85929, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 140), 64.90686, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 145), 64.03401, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 150), 63.2756, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 155), 62.65558, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 160), 62.18815, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 165), 61.87952, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 170), 61.72974, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 175), 61.73414, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(50, 180), 61.88464, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -180), 66.24322, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -175), 66.4494, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -170), 66.78185, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -165), 67.23442, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -160), 67.79972, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -155), 68.4688, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -150), 69.23063, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -145), 70.07174, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -140), 70.97614, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -135), 71.92545, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -130), 72.89915, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -125), 73.87455, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -120), 74.82609, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -115), 75.72377, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -110), 76.53139, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -105), 77.20565, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -100), 77.69824, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -95), 77.96281, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -90), 77.96642, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -85), 77.70124, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -80), 77.18942, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -75), 76.47826, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -70), 75.62889, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -65), 74.70479, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -60), 73.76351, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -55), 72.85222, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -50), 72.00619, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -45), 71.24926, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -40), 70.59573, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -35), 70.05285, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -30), 69.62335, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -25), 69.30703, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -20), 69.10119, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -15), 69.00011, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -10), 68.99419, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, -5), 69.06982, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 0), 69.21033, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 5), 69.39826, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 10), 69.61798, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 15), 69.85796, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 20), 70.11167, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 25), 70.37716, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 30), 70.65566, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 35), 70.95005, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 40), 71.26364, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 45), 71.59952, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 50), 71.9601, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 55), 72.34635, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 60), 72.7565, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 65), 73.18441, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 70), 73.61813, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 75), 74.03901, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 80), 74.42197, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 85), 74.73673, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 90), 74.95028, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 95), 75.03026, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 100), 74.94946, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 105), 74.69061, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 110), 74.2506, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 115), 73.6425, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 120), 72.89445, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 125), 72.04597, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 130), 71.14258, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 135), 70.23038, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 140), 69.35165, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 145), 68.54187, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 150), 67.82842, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 155), 67.23065, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 160), 66.76089, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 165), 66.42592, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 170), 66.22845, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 175), 66.1683, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(55, 180), 66.24322, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -180), 70.57639, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -175), 70.73325, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -170), 71.00594, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -165), 71.39026, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -160), 71.88018, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -155), 72.4677, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -150), 73.1426, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -145), 73.89245, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -140), 74.70269, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -135), 75.5567, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -130), 76.43577, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -125), 77.31868, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -120), 78.18076, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -115), 78.99246, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -110), 79.71781, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -105), 80.31411, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -100), 80.73487, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -95), 80.9378, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -90), 80.89703, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -85), 80.61343, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -80), 80.11598, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -75), 79.45321, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -70), 78.68102, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -65), 77.85312, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -60), 77.01578, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -55), 76.20591, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -50), 75.45105, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -45), 74.77026, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -40), 74.17555, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -35), 73.67344, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -30), 73.26634, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -25), 72.95359, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -20), 72.732, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -15), 72.59599, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -10), 72.5377, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, -5), 72.54725, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 0), 72.61356, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 5), 72.72554, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 10), 72.87346, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 15), 73.05019, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 20), 73.25183, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 25), 73.47772, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 30), 73.72986, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 35), 74.01193, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 40), 74.32818, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 45), 74.68242, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 50), 75.07681, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 55), 75.51082, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 60), 75.97999, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 65), 76.47471, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 70), 76.97922, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 75), 77.47103, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 80), 77.92106, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 85), 78.29491, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 90), 78.55584, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 95), 78.66956, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 100), 78.61042, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 105), 78.36716, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 110), 77.94596, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 115), 77.36934, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 120), 76.67173, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 125), 75.89374, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 130), 75.07695, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 135), 74.26015, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 140), 73.47706, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 145), 72.75518, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 150), 72.11568, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 155), 71.57383, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 160), 71.14, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 165), 70.82066, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 170), 70.61947, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 175), 70.53803, 0.21 + 1.2); + EXPECT_NEAR(get_mag_inclination_degrees(60, 180), 70.57639, 0.21 + 1.2); +} + +TEST(GeoLookupTest, strength) { + EXPECT_NEAR(get_mag_strength_tesla(-50, -180) * 1e9, 58500.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -175) * 1e9, 57365.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -170) * 1e9, 56217.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -165) * 1e9, 55065.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -160) * 1e9, 53913.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -155) * 1e9, 52765.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -150) * 1e9, 51620.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -145) * 1e9, 50471, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -140) * 1e9, 49306.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -135) * 1e9, 48110.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -130) * 1e9, 46866, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -125) * 1e9, 45555.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -120) * 1e9, 44165.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -115) * 1e9, 42692, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -110) * 1e9, 41137.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -105) * 1e9, 39514.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -100) * 1e9, 37849.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -95) * 1e9, 36172.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -90) * 1e9, 34525.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -85) * 1e9, 32951.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -80) * 1e9, 31494.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -75) * 1e9, 30193.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -70) * 1e9, 29077.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -65) * 1e9, 28161.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -60) * 1e9, 27445.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -55) * 1e9, 26908.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -50) * 1e9, 26521.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -45) * 1e9, 26243.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -40) * 1e9, 26034.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -35) * 1e9, 25861.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -30) * 1e9, 25699.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -25) * 1e9, 25536.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -20) * 1e9, 25375.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -15) * 1e9, 25228.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -10) * 1e9, 25120.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, -5) * 1e9, 25086, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 0) * 1e9, 25167.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 5) * 1e9, 25413.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 10) * 1e9, 25869.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 15) * 1e9, 26577.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 20) * 1e9, 27566.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 25) * 1e9, 28849.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 30) * 1e9, 30422.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 35) * 1e9, 32265.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 40) * 1e9, 34342.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 45) * 1e9, 36612.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 50) * 1e9, 39026, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 55) * 1e9, 41532.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 60) * 1e9, 44083.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 65) * 1e9, 46633.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 70) * 1e9, 49143.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 75) * 1e9, 51576.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 80) * 1e9, 53901.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 85) * 1e9, 56086.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 90) * 1e9, 58099.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 95) * 1e9, 59913.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 100) * 1e9, 61501.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 105) * 1e9, 62844.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 110) * 1e9, 63930.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 115) * 1e9, 64756.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 120) * 1e9, 65327.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 125) * 1e9, 65653.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 130) * 1e9, 65751.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 135) * 1e9, 65640, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 140) * 1e9, 65339.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 145) * 1e9, 64869.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 150) * 1e9, 64251.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 155) * 1e9, 63504.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 160) * 1e9, 62648.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 165) * 1e9, 61701.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 170) * 1e9, 60682.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 175) * 1e9, 59610.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-50, 180) * 1e9, 58500.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -180) * 1e9, 56331, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -175) * 1e9, 55140.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -170) * 1e9, 53941.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -165) * 1e9, 52743, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -160) * 1e9, 51551, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -155) * 1e9, 50369.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -150) * 1e9, 49198.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -145) * 1e9, 48034.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -140) * 1e9, 46866, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -135) * 1e9, 45677.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -130) * 1e9, 44449.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -125) * 1e9, 43162.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -120) * 1e9, 41798.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -115) * 1e9, 40350, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -110) * 1e9, 38814.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -105) * 1e9, 37202.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -100) * 1e9, 35535.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -95) * 1e9, 33846.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -90) * 1e9, 32178, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -85) * 1e9, 30582.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -80) * 1e9, 29112.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -75) * 1e9, 27821, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -70) * 1e9, 26746.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -65) * 1e9, 25911.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -60) * 1e9, 25314.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -55) * 1e9, 24929.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -50) * 1e9, 24713.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -45) * 1e9, 24613.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -40) * 1e9, 24574.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -35) * 1e9, 24553.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -30) * 1e9, 24519, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -25) * 1e9, 24456, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -20) * 1e9, 24362.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -15) * 1e9, 24248.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -10) * 1e9, 24135.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, -5) * 1e9, 24057.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 0) * 1e9, 24061, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 5) * 1e9, 24203.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 10) * 1e9, 24548.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 15) * 1e9, 25156.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 20) * 1e9, 26074.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 25) * 1e9, 27329.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 30) * 1e9, 28923.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 35) * 1e9, 30833.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 40) * 1e9, 33018.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 45) * 1e9, 35420.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 50) * 1e9, 37976.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 55) * 1e9, 40621.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 60) * 1e9, 43293, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 65) * 1e9, 45937.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 70) * 1e9, 48509.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 75) * 1e9, 50974.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 80) * 1e9, 53300.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 85) * 1e9, 55458.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 90) * 1e9, 57421.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 95) * 1e9, 59162.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 100) * 1e9, 60660.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 105) * 1e9, 61898.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 110) * 1e9, 62871.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 115) * 1e9, 63582.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 120) * 1e9, 64041.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 125) * 1e9, 64263.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 130) * 1e9, 64267.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 135) * 1e9, 64071.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 140) * 1e9, 63694.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 145) * 1e9, 63154.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 150) * 1e9, 62470, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 155) * 1e9, 61657.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 160) * 1e9, 60735.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 165) * 1e9, 59722.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 170) * 1e9, 58638.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 175) * 1e9, 57501.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-45, 180) * 1e9, 56331, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -180) * 1e9, 53976, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -175) * 1e9, 52756.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -170) * 1e9, 51532.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -165) * 1e9, 50311.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -160) * 1e9, 49098.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -155) * 1e9, 47899.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -150) * 1e9, 46715.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -145) * 1e9, 45545, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -140) * 1e9, 44381.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -135) * 1e9, 43212, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -130) * 1e9, 42017.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -125) * 1e9, 40778.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -120) * 1e9, 39477.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -115) * 1e9, 38100.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -110) * 1e9, 36641.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -105) * 1e9, 35104.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -100) * 1e9, 33502.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -95) * 1e9, 31866.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -90) * 1e9, 30238.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -85) * 1e9, 28676, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -80) * 1e9, 27241.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -75) * 1e9, 25997.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -70) * 1e9, 24995.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -65) * 1e9, 24263.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -60) * 1e9, 23800.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -55) * 1e9, 23574.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -50) * 1e9, 23529.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -45) * 1e9, 23599.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -40) * 1e9, 23723.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -35) * 1e9, 23851.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -30) * 1e9, 23951.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -25) * 1e9, 24009.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -20) * 1e9, 24019.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -15) * 1e9, 23985, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -10) * 1e9, 23919, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, -5) * 1e9, 23845.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 0) * 1e9, 23805.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 5) * 1e9, 23857.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 10) * 1e9, 24077.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 15) * 1e9, 24544.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 20) * 1e9, 25329.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 25) * 1e9, 26480.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 30) * 1e9, 28013.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 35) * 1e9, 29911, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 40) * 1e9, 32126.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 45) * 1e9, 34592.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 50) * 1e9, 37228.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 55) * 1e9, 39952.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 60) * 1e9, 42686.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 65) * 1e9, 45365.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 70) * 1e9, 47939.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 75) * 1e9, 50371.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 80) * 1e9, 52631.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 85) * 1e9, 54694.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 90) * 1e9, 56536, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 95) * 1e9, 58134.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 100) * 1e9, 59473.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 105) * 1e9, 60547.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 110) * 1e9, 61359.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 115) * 1e9, 61923.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 120) * 1e9, 62255.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 125) * 1e9, 62374, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 130) * 1e9, 62296.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 135) * 1e9, 62038.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 140) * 1e9, 61613.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 145) * 1e9, 61035.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 150) * 1e9, 60317.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 155) * 1e9, 59473.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 160) * 1e9, 58518.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 165) * 1e9, 57471.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 170) * 1e9, 56351.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 175) * 1e9, 55179.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-40, 180) * 1e9, 53976, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -180) * 1e9, 51464.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -175) * 1e9, 50242.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -170) * 1e9, 49018.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -165) * 1e9, 47799.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -160) * 1e9, 46588.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -155) * 1e9, 45390, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -150) * 1e9, 44207.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -145) * 1e9, 43043.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -140) * 1e9, 41895.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -135) * 1e9, 40754.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -130) * 1e9, 39607, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -125) * 1e9, 38436.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -120) * 1e9, 37225.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -115) * 1e9, 35958.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -110) * 1e9, 34623.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -105) * 1e9, 33214.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -100) * 1e9, 31736.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -95) * 1e9, 30212.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -90) * 1e9, 28682.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -85) * 1e9, 27204.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -80) * 1e9, 25849, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -75) * 1e9, 24688.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -70) * 1e9, 23781.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -65) * 1e9, 23162.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -60) * 1e9, 22830.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -55) * 1e9, 22745.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -50) * 1e9, 22844.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -45) * 1e9, 23055.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -40) * 1e9, 23313.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -35) * 1e9, 23571.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -30) * 1e9, 23804.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -25) * 1e9, 23999.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -20) * 1e9, 24152.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -15) * 1e9, 24256.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -10) * 1e9, 24309.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, -5) * 1e9, 24316.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 0) * 1e9, 24302.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 5) * 1e9, 24318.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 10) * 1e9, 24440.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 15) * 1e9, 24761.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 20) * 1e9, 25373.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 25) * 1e9, 26350.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 30) * 1e9, 27732.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 35) * 1e9, 29517.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 40) * 1e9, 31664.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 45) * 1e9, 34101.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 50) * 1e9, 36734.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 55) * 1e9, 39463.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 60) * 1e9, 42195.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 65) * 1e9, 44851.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 70) * 1e9, 47373.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 75) * 1e9, 49721.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 80) * 1e9, 51866.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 85) * 1e9, 53783.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 90) * 1e9, 55451.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 95) * 1e9, 56851.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 100) * 1e9, 57978.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 105) * 1e9, 58839.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 110) * 1e9, 59453.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 115) * 1e9, 59845.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 120) * 1e9, 60043, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 125) * 1e9, 60063.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 130) * 1e9, 59920.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 135) * 1e9, 59620.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 140) * 1e9, 59170.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 145) * 1e9, 58577.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 150) * 1e9, 57851.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 155) * 1e9, 57001.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 160) * 1e9, 56040.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 165) * 1e9, 54984.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 170) * 1e9, 53855, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 175) * 1e9, 52674.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-35, 180) * 1e9, 51464.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -180) * 1e9, 48811.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -175) * 1e9, 47613.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -170) * 1e9, 46418.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -165) * 1e9, 45228.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -160) * 1e9, 44045.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -155) * 1e9, 42872.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -150) * 1e9, 41713.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -145) * 1e9, 40574.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -140) * 1e9, 39458.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -135) * 1e9, 38360.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -130) * 1e9, 37275.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -125) * 1e9, 36190.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -120) * 1e9, 35091.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -115) * 1e9, 33961.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -110) * 1e9, 32783.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -105) * 1e9, 31541.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -100) * 1e9, 30230.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -95) * 1e9, 28864.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -90) * 1e9, 27479, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -85) * 1e9, 26131.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -80) * 1e9, 24894.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -75) * 1e9, 23846.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -70) * 1e9, 23049.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -65) * 1e9, 22541.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -60) * 1e9, 22319.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -55) * 1e9, 22343.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -50) * 1e9, 22547.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -45) * 1e9, 22858.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -40) * 1e9, 23215.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -35) * 1e9, 23581.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -30) * 1e9, 23940, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -25) * 1e9, 24285.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -20) * 1e9, 24611, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -15) * 1e9, 24902.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -10) * 1e9, 25138, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, -5) * 1e9, 25299.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 0) * 1e9, 25389.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 5) * 1e9, 25439.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 10) * 1e9, 25518.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 15) * 1e9, 25720.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 20) * 1e9, 26150.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 25) * 1e9, 26906.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 30) * 1e9, 28055.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 35) * 1e9, 29626.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 40) * 1e9, 31594.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 45) * 1e9, 33892.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 50) * 1e9, 36422.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 55) * 1e9, 39069.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 60) * 1e9, 41723.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 65) * 1e9, 44293.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 70) * 1e9, 46714.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 75) * 1e9, 48938.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 80) * 1e9, 50935.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 85) * 1e9, 52676.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 90) * 1e9, 54138.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 95) * 1e9, 55307.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 100) * 1e9, 56187.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 105) * 1e9, 56803.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 110) * 1e9, 57195.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 115) * 1e9, 57405.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 120) * 1e9, 57468.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 125) * 1e9, 57400.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 130) * 1e9, 57205.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 135) * 1e9, 56879.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 140) * 1e9, 56418.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 145) * 1e9, 55825.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 150) * 1e9, 55105.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 155) * 1e9, 54267, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 160) * 1e9, 53320.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 165) * 1e9, 52280.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 170) * 1e9, 51165.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 175) * 1e9, 50001.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-30, 180) * 1e9, 48811.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -180) * 1e9, 46045.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -175) * 1e9, 44900.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -170) * 1e9, 43763.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -165) * 1e9, 42633.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -160) * 1e9, 41509.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -155) * 1e9, 40392.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -150) * 1e9, 39287.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -145) * 1e9, 38202.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -140) * 1e9, 37144.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -135) * 1e9, 36114.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -130) * 1e9, 35111.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -125) * 1e9, 34130.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -120) * 1e9, 33160.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -115) * 1e9, 32185.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -110) * 1e9, 31182.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -105) * 1e9, 30129.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -100) * 1e9, 29013, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -95) * 1e9, 27836.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -90) * 1e9, 26630.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -85) * 1e9, 25449.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -80) * 1e9, 24363, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -75) * 1e9, 23446.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -70) * 1e9, 22763.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -65) * 1e9, 22350.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -60) * 1e9, 22208.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -55) * 1e9, 22300.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -50) * 1e9, 22566, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -45) * 1e9, 22939.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -40) * 1e9, 23367.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -35) * 1e9, 23823.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -30) * 1e9, 24298.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -25) * 1e9, 24793.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -20) * 1e9, 25300.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -15) * 1e9, 25796.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -10) * 1e9, 26241.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, -5) * 1e9, 26595.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 0) * 1e9, 26837.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 5) * 1e9, 26978, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 10) * 1e9, 27069, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 15) * 1e9, 27195.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 20) * 1e9, 27462.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 25) * 1e9, 27983.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 30) * 1e9, 28852.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 35) * 1e9, 30130, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 40) * 1e9, 31821.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 45) * 1e9, 33878, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 50) * 1e9, 36202.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 55) * 1e9, 38673.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 60) * 1e9, 41169.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 65) * 1e9, 43590.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 70) * 1e9, 45860, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 75) * 1e9, 47927.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 80) * 1e9, 49754.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 85) * 1e9, 51305, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 90) * 1e9, 52550.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 95) * 1e9, 53478.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 100) * 1e9, 54101.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 105) * 1e9, 54464, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 110) * 1e9, 54629.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 115) * 1e9, 54660.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 120) * 1e9, 54597.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 125) * 1e9, 54454.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 130) * 1e9, 54219.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 135) * 1e9, 53876.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 140) * 1e9, 53412.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 145) * 1e9, 52824.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 150) * 1e9, 52118.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 155) * 1e9, 51303.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 160) * 1e9, 50388, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 165) * 1e9, 49383.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 170) * 1e9, 48308.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 175) * 1e9, 47187.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-25, 180) * 1e9, 46045.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -180) * 1e9, 43225.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -175) * 1e9, 42164.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -170) * 1e9, 41116.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -165) * 1e9, 40078.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -160) * 1e9, 39047.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -155) * 1e9, 38022.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -150) * 1e9, 37009.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -145) * 1e9, 36016.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -140) * 1e9, 35051.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -135) * 1e9, 34121.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -130) * 1e9, 33228.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -125) * 1e9, 32372.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -120) * 1e9, 31547.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -115) * 1e9, 30737, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -110) * 1e9, 29918.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -105) * 1e9, 29063.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -100) * 1e9, 28153.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -95) * 1e9, 27185.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -90) * 1e9, 26182.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -85) * 1e9, 25190.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -80) * 1e9, 24272.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -75) * 1e9, 23494.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -70) * 1e9, 22914.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -65) * 1e9, 22569.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -60) * 1e9, 22466.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -55) * 1e9, 22580.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -50) * 1e9, 22865.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -45) * 1e9, 23268.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -40) * 1e9, 23745.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -35) * 1e9, 24275.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -30) * 1e9, 24853.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -25) * 1e9, 25479.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -20) * 1e9, 26144.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -15) * 1e9, 26817.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -10) * 1e9, 27448.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, -5) * 1e9, 27982.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 0) * 1e9, 28378.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 5) * 1e9, 28630.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 10) * 1e9, 28768.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 15) * 1e9, 28860.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 20) * 1e9, 29004.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 25) * 1e9, 29313.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 30) * 1e9, 29899.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 35) * 1e9, 30853.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 40) * 1e9, 32212.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 45) * 1e9, 33952.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 50) * 1e9, 35989.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 55) * 1e9, 38202.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 60) * 1e9, 40466.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 65) * 1e9, 42674.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 70) * 1e9, 44746.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 75) * 1e9, 46627.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 80) * 1e9, 48268.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 85) * 1e9, 49626.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 90) * 1e9, 50663, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 95) * 1e9, 51361.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 100) * 1e9, 51743, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 105) * 1e9, 51870.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 110) * 1e9, 51830.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 115) * 1e9, 51700.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 120) * 1e9, 51528.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 125) * 1e9, 51322.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 130) * 1e9, 51057.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 135) * 1e9, 50701.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 140) * 1e9, 50234.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 145) * 1e9, 49652.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 150) * 1e9, 48963, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 155) * 1e9, 48177.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 160) * 1e9, 47305, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 165) * 1e9, 46354.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 170) * 1e9, 45342.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 175) * 1e9, 44291.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-20, 180) * 1e9, 43225.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -180) * 1e9, 40461.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -175) * 1e9, 39514.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -170) * 1e9, 38585.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -165) * 1e9, 37671, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -160) * 1e9, 36766.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -155) * 1e9, 35870.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -150) * 1e9, 34987.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -145) * 1e9, 34126.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -140) * 1e9, 33295.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -135) * 1e9, 32502.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -130) * 1e9, 31751.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -125) * 1e9, 31044.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -120) * 1e9, 30378.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -115) * 1e9, 29740.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -110) * 1e9, 29106.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -105) * 1e9, 28451.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -100) * 1e9, 27750.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -95) * 1e9, 26998, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -90) * 1e9, 26206.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -85) * 1e9, 25411.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -80) * 1e9, 24661.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -75) * 1e9, 24010.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -70) * 1e9, 23508.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -65) * 1e9, 23193.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -60) * 1e9, 23082.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -55) * 1e9, 23169.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -50) * 1e9, 23429.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -45) * 1e9, 23827.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -40) * 1e9, 24327.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -35) * 1e9, 24909.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -30) * 1e9, 25562.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -25) * 1e9, 26281.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -20) * 1e9, 27051.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -15) * 1e9, 27837.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -10) * 1e9, 28589, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, -5) * 1e9, 29245.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 0) * 1e9, 29758.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 5) * 1e9, 30106.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 10) * 1e9, 30303.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 15) * 1e9, 30394.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 20) * 1e9, 30461.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 25) * 1e9, 30608.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 30) * 1e9, 30954.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 35) * 1e9, 31608.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 40) * 1e9, 32635.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 45) * 1e9, 34034.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 50) * 1e9, 35740.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 55) * 1e9, 37640.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 60) * 1e9, 39615.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 65) * 1e9, 41559.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 70) * 1e9, 43393.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 75) * 1e9, 45060, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 80) * 1e9, 46505.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 85) * 1e9, 47674.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 90) * 1e9, 48519.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 95) * 1e9, 49020.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 100) * 1e9, 49201.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 105) * 1e9, 49138, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 110) * 1e9, 48931.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 115) * 1e9, 48672.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 120) * 1e9, 48413.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 125) * 1e9, 48153.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 130) * 1e9, 47859.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 135) * 1e9, 47487.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 140) * 1e9, 47012.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 145) * 1e9, 46432.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 150) * 1e9, 45759.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 155) * 1e9, 45006.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 160) * 1e9, 44185.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 165) * 1e9, 43304.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 170) * 1e9, 42376.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 175) * 1e9, 41421, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-15, 180) * 1e9, 40461.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -180) * 1e9, 37907.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -175) * 1e9, 37101.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -170) * 1e9, 36319, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -165) * 1e9, 35554.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -160) * 1e9, 34804.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -155) * 1e9, 34066.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -150) * 1e9, 33347.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -145) * 1e9, 32654.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -140) * 1e9, 31994.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -135) * 1e9, 31373.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -130) * 1e9, 30794.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -125) * 1e9, 30260.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -120) * 1e9, 29768.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -115) * 1e9, 29307.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -110) * 1e9, 28860.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -105) * 1e9, 28400.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -100) * 1e9, 27905, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -95) * 1e9, 27361.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -90) * 1e9, 26774, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -85) * 1e9, 26161.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -80) * 1e9, 25559.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -75) * 1e9, 25007.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -70) * 1e9, 24548.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -65) * 1e9, 24222.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -60) * 1e9, 24056.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -55) * 1e9, 24066.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -50) * 1e9, 24251.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -45) * 1e9, 24598.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -40) * 1e9, 25081.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -35) * 1e9, 25675.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -30) * 1e9, 26359.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -25) * 1e9, 27115.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -20) * 1e9, 27920.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -15) * 1e9, 28740.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -10) * 1e9, 29529, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, -5) * 1e9, 30232.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 0) * 1e9, 30803.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 5) * 1e9, 31215.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 10) * 1e9, 31465, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 15) * 1e9, 31579.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 20) * 1e9, 31617.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 25) * 1e9, 31670.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 30) * 1e9, 31853, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 35) * 1e9, 32277.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 40) * 1e9, 33023.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 45) * 1e9, 34108.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 50) * 1e9, 35483.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 55) * 1e9, 37054.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 60) * 1e9, 38711.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 65) * 1e9, 40361.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 70) * 1e9, 41930.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 75) * 1e9, 43363.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 80) * 1e9, 44604.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 85) * 1e9, 45592.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 90) * 1e9, 46272.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 95) * 1e9, 46617.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 100) * 1e9, 46654.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 105) * 1e9, 46460.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 110) * 1e9, 46142.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 115) * 1e9, 45793.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 120) * 1e9, 45465, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 125) * 1e9, 45154.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 130) * 1e9, 44821.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 135) * 1e9, 44422, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 140) * 1e9, 43929.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 145) * 1e9, 43343.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 150) * 1e9, 42681.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 155) * 1e9, 41962.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 160) * 1e9, 41197.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 165) * 1e9, 40396.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 170) * 1e9, 39569.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 175) * 1e9, 38734, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-10, 180) * 1e9, 37907.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -180) * 1e9, 35742.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -175) * 1e9, 35098.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -170) * 1e9, 34482.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -165) * 1e9, 33885.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -160) * 1e9, 33306.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -155) * 1e9, 32745.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -150) * 1e9, 32211.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -145) * 1e9, 31710.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -140) * 1e9, 31248.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -135) * 1e9, 30826.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -130) * 1e9, 30445.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -125) * 1e9, 30102.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -120) * 1e9, 29796.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -115) * 1e9, 29519, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -110) * 1e9, 29256.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -105) * 1e9, 28985.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -100) * 1e9, 28683.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -95) * 1e9, 28330.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -90) * 1e9, 27919.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -85) * 1e9, 27458.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -80) * 1e9, 26966, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -75) * 1e9, 26475.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -70) * 1e9, 26022.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -65) * 1e9, 25646.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -60) * 1e9, 25385.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -55) * 1e9, 25274.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -50) * 1e9, 25336.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -45) * 1e9, 25579.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -40) * 1e9, 25989.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -35) * 1e9, 26539.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -30) * 1e9, 27194, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -25) * 1e9, 27922.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -20) * 1e9, 28693.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -15) * 1e9, 29473.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -10) * 1e9, 30226.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, -5) * 1e9, 30910.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 0) * 1e9, 31486.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 5) * 1e9, 31926.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 10) * 1e9, 32218.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 15) * 1e9, 32372.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 20) * 1e9, 32429.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 25) * 1e9, 32463.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 30) * 1e9, 32573.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 35) * 1e9, 32864.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 40) * 1e9, 33415.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 45) * 1e9, 34251.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 50) * 1e9, 35337.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 55) * 1e9, 36597.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 60) * 1e9, 37942.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 65) * 1e9, 39294.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 70) * 1e9, 40593.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 75) * 1e9, 41787.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 80) * 1e9, 42823.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 85) * 1e9, 43639.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 90) * 1e9, 44180.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 95) * 1e9, 44416.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 100) * 1e9, 44369.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 105) * 1e9, 44109.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 110) * 1e9, 43733.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 115) * 1e9, 43330.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 120) * 1e9, 42944.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 125) * 1e9, 42573.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 130) * 1e9, 42182.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 135) * 1e9, 41733, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 140) * 1e9, 41203.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 145) * 1e9, 40599.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 150) * 1e9, 39940.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 155) * 1e9, 39249.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 160) * 1e9, 38541.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 165) * 1e9, 37826, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 170) * 1e9, 37113.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 175) * 1e9, 36415, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(-5, 180) * 1e9, 35742.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -180) * 1e9, 34123.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -175) * 1e9, 33652.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -170) * 1e9, 33209.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -165) * 1e9, 32786.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -160) * 1e9, 32382, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -155) * 1e9, 32003.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -150) * 1e9, 31660.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -145) * 1e9, 31362.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -140) * 1e9, 31111.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -135) * 1e9, 30904.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -130) * 1e9, 30734.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -125) * 1e9, 30596.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -120) * 1e9, 30485.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -115) * 1e9, 30395.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -110) * 1e9, 30315.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -105) * 1e9, 30224.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -100) * 1e9, 30095.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -95) * 1e9, 29902.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -90) * 1e9, 29630, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -85) * 1e9, 29273.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -80) * 1e9, 28847.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -75) * 1e9, 28376.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -70) * 1e9, 27894.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -65) * 1e9, 27441, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -60) * 1e9, 27060.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -55) * 1e9, 26800.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -50) * 1e9, 26702.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -45) * 1e9, 26794.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -40) * 1e9, 27073.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -35) * 1e9, 27515.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -30) * 1e9, 28077.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -25) * 1e9, 28718.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -20) * 1e9, 29400.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -15) * 1e9, 30092.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -10) * 1e9, 30766.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, -5) * 1e9, 31391.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 0) * 1e9, 31939.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 5) * 1e9, 32385.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 10) * 1e9, 32712.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 15) * 1e9, 32922, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 20) * 1e9, 33038.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 25) * 1e9, 33119.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 30) * 1e9, 33246.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 35) * 1e9, 33503.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 40) * 1e9, 33956.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 45) * 1e9, 34625.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 50) * 1e9, 35486.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 55) * 1e9, 36482.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 60) * 1e9, 37549.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 65) * 1e9, 38629.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 70) * 1e9, 39675.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 75) * 1e9, 40644.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 80) * 1e9, 41487.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 85) * 1e9, 42147.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 90) * 1e9, 42574.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 95) * 1e9, 42740.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 100) * 1e9, 42658.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 105) * 1e9, 42385.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 110) * 1e9, 41996.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 115) * 1e9, 41561, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 120) * 1e9, 41117.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 125) * 1e9, 40667.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 130) * 1e9, 40189.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 135) * 1e9, 39658.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 140) * 1e9, 39065.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 145) * 1e9, 38422.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 150) * 1e9, 37751.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 155) * 1e9, 37077.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 160) * 1e9, 36417.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 165) * 1e9, 35784.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 170) * 1e9, 35187.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 175) * 1e9, 34633.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(0, 180) * 1e9, 34123.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -180) * 1e9, 33147.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -175) * 1e9, 32840.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -170) * 1e9, 32563.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -165) * 1e9, 32306.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -160) * 1e9, 32070.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -155) * 1e9, 31866.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -150) * 1e9, 31709.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -145) * 1e9, 31611.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -140) * 1e9, 31572.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -135) * 1e9, 31582.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -130) * 1e9, 31630.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -125) * 1e9, 31702.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -120) * 1e9, 31792.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -115) * 1e9, 31892.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -110) * 1e9, 31990.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -105) * 1e9, 32065.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -100) * 1e9, 32085.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -95) * 1e9, 32019.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -90) * 1e9, 31842.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -85) * 1e9, 31547.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -80) * 1e9, 31143, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -75) * 1e9, 30654.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -70) * 1e9, 30115.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -65) * 1e9, 29567.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -60) * 1e9, 29057.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -55) * 1e9, 28641.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -50) * 1e9, 28372.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -45) * 1e9, 28288.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -40) * 1e9, 28400.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -35) * 1e9, 28686.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -30) * 1e9, 29107.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -25) * 1e9, 29617.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -20) * 1e9, 30178.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -15) * 1e9, 30762.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -10) * 1e9, 31345.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, -5) * 1e9, 31905.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 0) * 1e9, 32420.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 5) * 1e9, 32868.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 10) * 1e9, 33230.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 15) * 1e9, 33504.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 20) * 1e9, 33708.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 25) * 1e9, 33885.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 30) * 1e9, 34094.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 35) * 1e9, 34397.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 40) * 1e9, 34834.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 45) * 1e9, 35414.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 50) * 1e9, 36119.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 55) * 1e9, 36912.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 60) * 1e9, 37754.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 65) * 1e9, 38610.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 70) * 1e9, 39444.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 75) * 1e9, 40222.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 80) * 1e9, 40900.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 85) * 1e9, 41430.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 90) * 1e9, 41769.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 95) * 1e9, 41895.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 100) * 1e9, 41812.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 105) * 1e9, 41556.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 110) * 1e9, 41175.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 115) * 1e9, 40714.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 120) * 1e9, 40203, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 125) * 1e9, 39649.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 130) * 1e9, 39049.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 135) * 1e9, 38402.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 140) * 1e9, 37713.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 145) * 1e9, 37002.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 150) * 1e9, 36295.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 155) * 1e9, 35615.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 160) * 1e9, 34985.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 165) * 1e9, 34418.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 170) * 1e9, 33924, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 175) * 1e9, 33503.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(5, 180) * 1e9, 33147.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -180) * 1e9, 32830.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -175) * 1e9, 32662.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -170) * 1e9, 32531, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -165) * 1e9, 32422.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -160) * 1e9, 32338.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -155) * 1e9, 32295.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -150) * 1e9, 32312.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -145) * 1e9, 32403, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -140) * 1e9, 32565.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -135) * 1e9, 32786.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -130) * 1e9, 33047.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -125) * 1e9, 33328.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -120) * 1e9, 33618.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -115) * 1e9, 33905.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -110) * 1e9, 34175.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -105) * 1e9, 34402, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -100) * 1e9, 34549.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -95) * 1e9, 34579.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -90) * 1e9, 34465.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -85) * 1e9, 34195.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -80) * 1e9, 33780.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -75) * 1e9, 33247, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -70) * 1e9, 32632, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -65) * 1e9, 31980.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -60) * 1e9, 31344.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -55) * 1e9, 30784.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -50) * 1e9, 30357.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -45) * 1e9, 30106.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -40) * 1e9, 30047.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -35) * 1e9, 30164.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -30) * 1e9, 30424.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -25) * 1e9, 30787.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -20) * 1e9, 31220.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -15) * 1e9, 31698.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -10) * 1e9, 32202.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, -5) * 1e9, 32713.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 0) * 1e9, 33209.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 5) * 1e9, 33665.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 10) * 1e9, 34067, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 15) * 1e9, 34409.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 20) * 1e9, 34709.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 25) * 1e9, 35000.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 30) * 1e9, 35323.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 35) * 1e9, 35713.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 40) * 1e9, 36184.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 45) * 1e9, 36732.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 50) * 1e9, 37342.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 55) * 1e9, 37995.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 60) * 1e9, 38674.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 65) * 1e9, 39364.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 70) * 1e9, 40044, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 75) * 1e9, 40681.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 80) * 1e9, 41239, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 85) * 1e9, 41676.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 90) * 1e9, 41959.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 95) * 1e9, 42068.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 100) * 1e9, 42001.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 105) * 1e9, 41771.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 110) * 1e9, 41399.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 115) * 1e9, 40907.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 120) * 1e9, 40313.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 125) * 1e9, 39633.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 130) * 1e9, 38885.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 135) * 1e9, 38089.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 140) * 1e9, 37270.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 145) * 1e9, 36458.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 150) * 1e9, 35681.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 155) * 1e9, 34966.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 160) * 1e9, 34334.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 165) * 1e9, 33802.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 170) * 1e9, 33378.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 175) * 1e9, 33060.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(10, 180) * 1e9, 32830.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -180) * 1e9, 33133.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -175) * 1e9, 33064.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -170) * 1e9, 33047.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -165) * 1e9, 33063, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -160) * 1e9, 33113.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -155) * 1e9, 33216.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -150) * 1e9, 33392.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -145) * 1e9, 33655.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -140) * 1e9, 34003.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -135) * 1e9, 34419.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -130) * 1e9, 34878.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -125) * 1e9, 35358.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -120) * 1e9, 35838.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -115) * 1e9, 36303.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -110) * 1e9, 36733.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -105) * 1e9, 37096.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -100) * 1e9, 37352.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -95) * 1e9, 37459.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -90) * 1e9, 37387.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -85) * 1e9, 37124.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -80) * 1e9, 36682.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -75) * 1e9, 36090.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -70) * 1e9, 35392, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -65) * 1e9, 34638.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -60) * 1e9, 33888.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -55) * 1e9, 33206.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -50) * 1e9, 32650.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -45) * 1e9, 32262.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -40) * 1e9, 32058.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -35) * 1e9, 32026.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -30) * 1e9, 32138.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -25) * 1e9, 32363.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -20) * 1e9, 32678.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -15) * 1e9, 33065.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -10) * 1e9, 33510.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, -5) * 1e9, 33991.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 0) * 1e9, 34483.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 5) * 1e9, 34958.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 10) * 1e9, 35399.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 15) * 1e9, 35804.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 20) * 1e9, 36191, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 25) * 1e9, 36586.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 30) * 1e9, 37016.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 35) * 1e9, 37493.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 40) * 1e9, 38013.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 45) * 1e9, 38561.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 50) * 1e9, 39122.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 55) * 1e9, 39692, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 60) * 1e9, 40271, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 65) * 1e9, 40858.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 70) * 1e9, 41443.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 75) * 1e9, 41999.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 80) * 1e9, 42491.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 85) * 1e9, 42882.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 90) * 1e9, 43144.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 95) * 1e9, 43259.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 100) * 1e9, 43215.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 105) * 1e9, 43009.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 110) * 1e9, 42638.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 115) * 1e9, 42104.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 120) * 1e9, 41418.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 125) * 1e9, 40603.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 130) * 1e9, 39693.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 135) * 1e9, 38729.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 140) * 1e9, 37756.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 145) * 1e9, 36813.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 150) * 1e9, 35934.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 155) * 1e9, 35148.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 160) * 1e9, 34478.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 165) * 1e9, 33941.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 170) * 1e9, 33544.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 175) * 1e9, 33282.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(15, 180) * 1e9, 33133.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -180) * 1e9, 33999.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -175) * 1e9, 33984.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -170) * 1e9, 34043.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -165) * 1e9, 34156.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -160) * 1e9, 34322.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -155) * 1e9, 34556.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -150) * 1e9, 34877.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -145) * 1e9, 35296.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -140) * 1e9, 35809.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -135) * 1e9, 36398, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -130) * 1e9, 37033.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -125) * 1e9, 37687.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -120) * 1e9, 38337.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -115) * 1e9, 38960.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -110) * 1e9, 39530.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -105) * 1e9, 40011.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -100) * 1e9, 40360, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -95) * 1e9, 40531.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -90) * 1e9, 40493.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -85) * 1e9, 40233.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -80) * 1e9, 39764.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -75) * 1e9, 39117.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -70) * 1e9, 38341.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -65) * 1e9, 37497.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -60) * 1e9, 36651.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -55) * 1e9, 35872.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -50) * 1e9, 35218.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -45) * 1e9, 34729.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -40) * 1e9, 34416.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -35) * 1e9, 34267.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -30) * 1e9, 34260.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -25) * 1e9, 34372.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -20) * 1e9, 34589, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -15) * 1e9, 34902, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -10) * 1e9, 35299.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, -5) * 1e9, 35760.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 0) * 1e9, 36253.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 5) * 1e9, 36747.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 10) * 1e9, 37221.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 15) * 1e9, 37674.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 20) * 1e9, 38123, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 25) * 1e9, 38590.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 30) * 1e9, 39094.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 35) * 1e9, 39634.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 40) * 1e9, 40194.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 45) * 1e9, 40753.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 50) * 1e9, 41299, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 55) * 1e9, 41834.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 60) * 1e9, 42371.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 65) * 1e9, 42917.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 70) * 1e9, 43468.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 75) * 1e9, 44000.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 80) * 1e9, 44479.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 85) * 1e9, 44871.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 90) * 1e9, 45148.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 95) * 1e9, 45288.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 100) * 1e9, 45274, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 105) * 1e9, 45086.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 110) * 1e9, 44707.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 115) * 1e9, 44127.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 120) * 1e9, 43353.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 125) * 1e9, 42410.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 130) * 1e9, 41345.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 135) * 1e9, 40216.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 140) * 1e9, 39083, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 145) * 1e9, 37995.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 150) * 1e9, 36994.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 155) * 1e9, 36112.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 160) * 1e9, 35371.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 165) * 1e9, 34789.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 170) * 1e9, 34374, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 175) * 1e9, 34118, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(20, 180) * 1e9, 33999.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -180) * 1e9, 35377.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -175) * 1e9, 35375.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -170) * 1e9, 35475, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -165) * 1e9, 35658.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -160) * 1e9, 35920.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -155) * 1e9, 36271.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -150) * 1e9, 36723.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -145) * 1e9, 37281.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -140) * 1e9, 37937.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -135) * 1e9, 38669.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -130) * 1e9, 39449, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -125) * 1e9, 40244.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -120) * 1e9, 41029.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -115) * 1e9, 41777.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -110) * 1e9, 42457.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -105) * 1e9, 43031, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -100) * 1e9, 43451.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -95) * 1e9, 43675.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -90) * 1e9, 43668, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -85) * 1e9, 43416.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -80) * 1e9, 42930.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -75) * 1e9, 42244.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -70) * 1e9, 41411.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -65) * 1e9, 40498.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -60) * 1e9, 39580, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -55) * 1e9, 38728.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -50) * 1e9, 38002.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -45) * 1e9, 37437.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -40) * 1e9, 37042, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -35) * 1e9, 36804.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -30) * 1e9, 36704.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -25) * 1e9, 36725.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -20) * 1e9, 36862.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -15) * 1e9, 37110.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -10) * 1e9, 37463, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, -5) * 1e9, 37898.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 0) * 1e9, 38383.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 5) * 1e9, 38883.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 10) * 1e9, 39374.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 15) * 1e9, 39853.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 20) * 1e9, 40334, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 25) * 1e9, 40836.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 30) * 1e9, 41374.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 35) * 1e9, 41942.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 40) * 1e9, 42523, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 45) * 1e9, 43096, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 50) * 1e9, 43651.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 55) * 1e9, 44196, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 60) * 1e9, 44743, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 65) * 1e9, 45303.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 70) * 1e9, 45872.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 75) * 1e9, 46429.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 80) * 1e9, 46940.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 85) * 1e9, 47370.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 90) * 1e9, 47690.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 95) * 1e9, 47871.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 100) * 1e9, 47890.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 105) * 1e9, 47718.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 110) * 1e9, 47330.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 115) * 1e9, 46710.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 120) * 1e9, 45862.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 125) * 1e9, 44816.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 130) * 1e9, 43625.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 135) * 1e9, 42358.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 140) * 1e9, 41083.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 145) * 1e9, 39861.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 150) * 1e9, 38740.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 155) * 1e9, 37752.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 160) * 1e9, 36924.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 165) * 1e9, 36272.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 170) * 1e9, 35802.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 175) * 1e9, 35510.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(25, 180) * 1e9, 35377.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -180) * 1e9, 37232.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -175) * 1e9, 37211.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -170) * 1e9, 37324.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -165) * 1e9, 37553.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -160) * 1e9, 37892.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -155) * 1e9, 38343.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -150) * 1e9, 38908.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -145) * 1e9, 39583.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -140) * 1e9, 40355.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -135) * 1e9, 41199.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -130) * 1e9, 42083.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -125) * 1e9, 42978.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -120) * 1e9, 43854.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -115) * 1e9, 44682.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -110) * 1e9, 45431.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -105) * 1e9, 46060.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -100) * 1e9, 46525.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -95) * 1e9, 46783.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -90) * 1e9, 46799.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -85) * 1e9, 46559.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -80) * 1e9, 46072, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -75) * 1e9, 45370.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -70) * 1e9, 44508.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -65) * 1e9, 43556.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -60) * 1e9, 42593.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -55) * 1e9, 41691.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -50) * 1e9, 40910.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -45) * 1e9, 40283.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -40) * 1e9, 39819, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -35) * 1e9, 39505.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -30) * 1e9, 39327.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -25) * 1e9, 39271.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -20) * 1e9, 39336.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -15) * 1e9, 39521.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -10) * 1e9, 39821.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, -5) * 1e9, 40215.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 0) * 1e9, 40671.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 5) * 1e9, 41155.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 10) * 1e9, 41640.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 15) * 1e9, 42120, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 20) * 1e9, 42604.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 25) * 1e9, 43109.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 30) * 1e9, 43647.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 35) * 1e9, 44217, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 40) * 1e9, 44804, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 45) * 1e9, 45394, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 50) * 1e9, 45980.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 55) * 1e9, 46568.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 60) * 1e9, 47168.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 65) * 1e9, 47786.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 70) * 1e9, 48416.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 75) * 1e9, 49034.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 80) * 1e9, 49607.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 85) * 1e9, 50100, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 90) * 1e9, 50476.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 95) * 1e9, 50706.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 100) * 1e9, 50758.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 105) * 1e9, 50601.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 110) * 1e9, 50207.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 115) * 1e9, 49560.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 120) * 1e9, 48665, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 125) * 1e9, 47553.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 130) * 1e9, 46282.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 135) * 1e9, 44924, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 140) * 1e9, 43551.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 145) * 1e9, 42231.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 150) * 1e9, 41014.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 155) * 1e9, 39938.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 160) * 1e9, 39027.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 165) * 1e9, 38298.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 170) * 1e9, 37759.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 175) * 1e9, 37408.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(30, 180) * 1e9, 37232.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -180) * 1e9, 39532.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -175) * 1e9, 39480.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -170) * 1e9, 39587.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -165) * 1e9, 39842, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -160) * 1e9, 40235.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -155) * 1e9, 40761.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -150) * 1e9, 41412, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -145) * 1e9, 42174.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -140) * 1e9, 43026.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -135) * 1e9, 43940.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -130) * 1e9, 44886, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -125) * 1e9, 45831, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -120) * 1e9, 46746.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -115) * 1e9, 47604.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -110) * 1e9, 48372.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -105) * 1e9, 49013.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -100) * 1e9, 49487.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -95) * 1e9, 49752.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -90) * 1e9, 49777.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -85) * 1e9, 49548.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -80) * 1e9, 49070.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -75) * 1e9, 48375.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -70) * 1e9, 47515, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -65) * 1e9, 46557.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -60) * 1e9, 45579.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -55) * 1e9, 44651.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -50) * 1e9, 43829.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -45) * 1e9, 43148.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -40) * 1e9, 42618.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -35) * 1e9, 42233, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -30) * 1e9, 41979.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -25) * 1e9, 41850.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -20) * 1e9, 41844.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -15) * 1e9, 41960.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -10) * 1e9, 42194.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, -5) * 1e9, 42527.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 0) * 1e9, 42931.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 5) * 1e9, 43372.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 10) * 1e9, 43825.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 15) * 1e9, 44282.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 20) * 1e9, 44748, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 25) * 1e9, 45235.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 30) * 1e9, 45756, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 35) * 1e9, 46313.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 40) * 1e9, 46902.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 45) * 1e9, 47515.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 50) * 1e9, 48148.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 55) * 1e9, 48804.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 60) * 1e9, 49485.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 65) * 1e9, 50190.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 70) * 1e9, 50905.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 75) * 1e9, 51605.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 80) * 1e9, 52255.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 85) * 1e9, 52816.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 90) * 1e9, 53252.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 95) * 1e9, 53527.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 100) * 1e9, 53609.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 105) * 1e9, 53465.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 110) * 1e9, 53072, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 115) * 1e9, 52415.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 120) * 1e9, 51505, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 125) * 1e9, 50373.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 130) * 1e9, 49077.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 135) * 1e9, 47687.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 140) * 1e9, 46277.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 145) * 1e9, 44913.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 150) * 1e9, 43648.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 155) * 1e9, 42521.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 160) * 1e9, 41555.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 165) * 1e9, 40768.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 170) * 1e9, 40168.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 175) * 1e9, 39758.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(35, 180) * 1e9, 39532.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -180) * 1e9, 42226, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -175) * 1e9, 42145, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -170) * 1e9, 42239.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -165) * 1e9, 42501.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -160) * 1e9, 42921.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -155) * 1e9, 43487.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -150) * 1e9, 44183.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -145) * 1e9, 44987.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -140) * 1e9, 45872.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -135) * 1e9, 46808.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -130) * 1e9, 47762.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -125) * 1e9, 48705, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -120) * 1e9, 49607.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -115) * 1e9, 50441.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -110) * 1e9, 51179.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -105) * 1e9, 51787.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -100) * 1e9, 52230.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -95) * 1e9, 52473.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -90) * 1e9, 52488.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -85) * 1e9, 52262.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -80) * 1e9, 51801.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -75) * 1e9, 51132, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -70) * 1e9, 50300.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -65) * 1e9, 49368.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -60) * 1e9, 48405, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -55) * 1e9, 47474.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -50) * 1e9, 46630.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -45) * 1e9, 45906.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -40) * 1e9, 45316.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -35) * 1e9, 44861.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -30) * 1e9, 44533.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -25) * 1e9, 44330.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -20) * 1e9, 44248.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -15) * 1e9, 44288.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -10) * 1e9, 44444, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, -5) * 1e9, 44698.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 0) * 1e9, 45027.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 5) * 1e9, 45403.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 10) * 1e9, 45804.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 15) * 1e9, 46221, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 20) * 1e9, 46654.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 25) * 1e9, 47114.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 30) * 1e9, 47614.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 35) * 1e9, 48161.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 40) * 1e9, 48757.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 45) * 1e9, 49401.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 50) * 1e9, 50091.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 55) * 1e9, 50824, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 60) * 1e9, 51595.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 65) * 1e9, 52395, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 70) * 1e9, 53201.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 75) * 1e9, 53984, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 80) * 1e9, 54706.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 85) * 1e9, 55328.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 90) * 1e9, 55813.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 95) * 1e9, 56123.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 100) * 1e9, 56228.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 105) * 1e9, 56097.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 110) * 1e9, 55713.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 115) * 1e9, 55068.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 120) * 1e9, 54177, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 125) * 1e9, 53072.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 130) * 1e9, 51808.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 135) * 1e9, 50451.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 140) * 1e9, 49070.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 145) * 1e9, 47728.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 150) * 1e9, 46475.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 155) * 1e9, 45349.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 160) * 1e9, 44373.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 165) * 1e9, 43565.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 170) * 1e9, 42935.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 175) * 1e9, 42488.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(40, 180) * 1e9, 42226, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -180) * 1e9, 45210.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -175) * 1e9, 45114.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -170) * 1e9, 45195, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -165) * 1e9, 45446.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -160) * 1e9, 45860.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -155) * 1e9, 46421.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -150) * 1e9, 47109.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -145) * 1e9, 47898.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -140) * 1e9, 48757.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -135) * 1e9, 49656.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -130) * 1e9, 50563.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -125) * 1e9, 51448.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -120) * 1e9, 52285.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -115) * 1e9, 53048.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -110) * 1e9, 53712.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -105) * 1e9, 54248, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -100) * 1e9, 54626.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -95) * 1e9, 54821.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -90) * 1e9, 54809.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -85) * 1e9, 54580.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -80) * 1e9, 54140.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -75) * 1e9, 53510.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -70) * 1e9, 52730.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -65) * 1e9, 51852.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -60) * 1e9, 50932.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -55) * 1e9, 50027.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -50) * 1e9, 49185.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -45) * 1e9, 48437.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -40) * 1e9, 47801.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -35) * 1e9, 47286.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -30) * 1e9, 46891, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -25) * 1e9, 46614.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -20) * 1e9, 46456.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -15) * 1e9, 46415.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -10) * 1e9, 46483.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, -5) * 1e9, 46647.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 0) * 1e9, 46889.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 5) * 1e9, 47187.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 10) * 1e9, 47523.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 15) * 1e9, 47889.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 20) * 1e9, 48286.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 25) * 1e9, 48722.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 30) * 1e9, 49208.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 35) * 1e9, 49754, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 40) * 1e9, 50365.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 45) * 1e9, 51044.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 50) * 1e9, 51789.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 55) * 1e9, 52592.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 60) * 1e9, 53443.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 65) * 1e9, 54322.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 70) * 1e9, 55202.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 75) * 1e9, 56048.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 80) * 1e9, 56823.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 85) * 1e9, 57487.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 90) * 1e9, 58002, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 95) * 1e9, 58333.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 100) * 1e9, 58453, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 105) * 1e9, 58337.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 110) * 1e9, 57975.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 115) * 1e9, 57366.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 120) * 1e9, 56529.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 125) * 1e9, 55497.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 130) * 1e9, 54320.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 135) * 1e9, 53057.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 140) * 1e9, 51769.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 145) * 1e9, 50513.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 150) * 1e9, 49334.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 155) * 1e9, 48266.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 160) * 1e9, 47333.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 165) * 1e9, 46552.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 170) * 1e9, 45933.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 175) * 1e9, 45484.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(45, 180) * 1e9, 45210.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -180) * 1e9, 48314.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -175) * 1e9, 48216.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -170) * 1e9, 48280.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -165) * 1e9, 48504.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -160) * 1e9, 48877.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -155) * 1e9, 49385.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -150) * 1e9, 50008.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -145) * 1e9, 50720, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -140) * 1e9, 51491.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -135) * 1e9, 52293.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -130) * 1e9, 53096, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -125) * 1e9, 53872.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -120) * 1e9, 54598, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -115) * 1e9, 55249.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -110) * 1e9, 55805, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -105) * 1e9, 56240.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -100) * 1e9, 56534.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -95) * 1e9, 56665.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -90) * 1e9, 56617.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -85) * 1e9, 56384.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -80) * 1e9, 55970.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -75) * 1e9, 55393.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -70) * 1e9, 54684.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -65) * 1e9, 53883.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -60) * 1e9, 53035.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -55) * 1e9, 52185.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -50) * 1e9, 51374.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -45) * 1e9, 50631.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -40) * 1e9, 49977.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -35) * 1e9, 49424, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -30) * 1e9, 48976.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -25) * 1e9, 48638.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -20) * 1e9, 48410.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -15) * 1e9, 48290.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -10) * 1e9, 48272.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, -5) * 1e9, 48346.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 0) * 1e9, 48499.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 5) * 1e9, 48716.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 10) * 1e9, 48987, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 15) * 1e9, 49303.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 20) * 1e9, 49667.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 25) * 1e9, 50084.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 30) * 1e9, 50565, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 35) * 1e9, 51116.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 40) * 1e9, 51746.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 45) * 1e9, 52456.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 50) * 1e9, 53241.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 55) * 1e9, 54092.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 60) * 1e9, 54991.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 65) * 1e9, 55914.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 70) * 1e9, 56830.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 75) * 1e9, 57704.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 80) * 1e9, 58497.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 85) * 1e9, 59172.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 90) * 1e9, 59694.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 95) * 1e9, 60032.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 100) * 1e9, 60162.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 105) * 1e9, 60068.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 110) * 1e9, 59745.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 115) * 1e9, 59200.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 120) * 1e9, 58452.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 125) * 1e9, 57534.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 130) * 1e9, 56492.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 135) * 1e9, 55375.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 140) * 1e9, 54235.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 145) * 1e9, 53119.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 150) * 1e9, 52067.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 155) * 1e9, 51109.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 160) * 1e9, 50268.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 165) * 1e9, 49558.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 170) * 1e9, 48990.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 175) * 1e9, 48573.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(50, 180) * 1e9, 48314.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -180) * 1e9, 51302, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -175) * 1e9, 51207.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -170) * 1e9, 51250, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -165) * 1e9, 51425.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -160) * 1e9, 51727, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -155) * 1e9, 52140.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -150) * 1e9, 52649.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -145) * 1e9, 53231.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -140) * 1e9, 53861.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -135) * 1e9, 54515.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -130) * 1e9, 55166.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -125) * 1e9, 55792.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -120) * 1e9, 56371.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -115) * 1e9, 56883.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -110) * 1e9, 57310.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -105) * 1e9, 57632, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -100) * 1e9, 57832.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -95) * 1e9, 57896.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -90) * 1e9, 57814.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -85) * 1e9, 57582.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -80) * 1e9, 57203.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -75) * 1e9, 56691.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -70) * 1e9, 56069.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -65) * 1e9, 55365.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -60) * 1e9, 54615.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -55) * 1e9, 53851.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -50) * 1e9, 53105, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -45) * 1e9, 52403.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -40) * 1e9, 51766.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -35) * 1e9, 51207.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -30) * 1e9, 50737.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -25) * 1e9, 50360.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -20) * 1e9, 50080.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -15) * 1e9, 49896.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -10) * 1e9, 49806.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, -5) * 1e9, 49803.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 0) * 1e9, 49879.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 5) * 1e9, 50026.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 10) * 1e9, 50239.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 15) * 1e9, 50513, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 20) * 1e9, 50849.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 25) * 1e9, 51253.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 30) * 1e9, 51730.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 35) * 1e9, 52287.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 40) * 1e9, 52927, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 45) * 1e9, 53648.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 50) * 1e9, 54444.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 55) * 1e9, 55303.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 60) * 1e9, 56203.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 65) * 1e9, 57120.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 70) * 1e9, 58022.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 75) * 1e9, 58876.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 80) * 1e9, 59646.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 85) * 1e9, 60298.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 90) * 1e9, 60802.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 95) * 1e9, 61132.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 100) * 1e9, 61272.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 105) * 1e9, 61210.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 110) * 1e9, 60946.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 115) * 1e9, 60491.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 120) * 1e9, 59865.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 125) * 1e9, 59098.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 130) * 1e9, 58227.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 135) * 1e9, 57294.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 140) * 1e9, 56340.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 145) * 1e9, 55404.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 150) * 1e9, 54517.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 155) * 1e9, 53707, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 160) * 1e9, 52990.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 165) * 1e9, 52383.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 170) * 1e9, 51894.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 175) * 1e9, 51532.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(55, 180) * 1e9, 51302, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -180) * 1e9, 53916.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -175) * 1e9, 53822.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -170) * 1e9, 53833.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -165) * 1e9, 53946, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -160) * 1e9, 54153.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -155) * 1e9, 54447, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -150) * 1e9, 54811.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -145) * 1e9, 55231.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -140) * 1e9, 55688.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -135) * 1e9, 56163.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -130) * 1e9, 56635.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -125) * 1e9, 57087.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -120) * 1e9, 57501.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -115) * 1e9, 57861, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -110) * 1e9, 58151, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -105) * 1e9, 58357.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -100) * 1e9, 58467.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -95) * 1e9, 58472.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -90) * 1e9, 58364, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -85) * 1e9, 58140.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -80) * 1e9, 57806.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -75) * 1e9, 57370.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -70) * 1e9, 56847.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -65) * 1e9, 56258, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -60) * 1e9, 55625, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -55) * 1e9, 54972.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -50) * 1e9, 54324.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -45) * 1e9, 53701.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -40) * 1e9, 53121.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -35) * 1e9, 52598.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -30) * 1e9, 52142.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -25) * 1e9, 51762.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -20) * 1e9, 51462.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -15) * 1e9, 51244.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -10) * 1e9, 51109, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, -5) * 1e9, 51054.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 0) * 1e9, 51077, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 5) * 1e9, 51174.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 10) * 1e9, 51343.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 15) * 1e9, 51584.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 20) * 1e9, 51897.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 25) * 1e9, 52285.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 30) * 1e9, 52751.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 35) * 1e9, 53297, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 40) * 1e9, 53921.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 45) * 1e9, 54621.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 50) * 1e9, 55386.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 55) * 1e9, 56202.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 60) * 1e9, 57049.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 65) * 1e9, 57903.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 70) * 1e9, 58737.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 75) * 1e9, 59520.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 80) * 1e9, 60223.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 85) * 1e9, 60819.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 90) * 1e9, 61282.9, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 95) * 1e9, 61595.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 100) * 1e9, 61744.2, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 105) * 1e9, 61723.8, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 110) * 1e9, 61537.1, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 115) * 1e9, 61194.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 120) * 1e9, 60714.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 125) * 1e9, 60122, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 130) * 1e9, 59446.3, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 135) * 1e9, 58719, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 140) * 1e9, 57972, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 145) * 1e9, 57234.6, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 150) * 1e9, 56532, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 155) * 1e9, 55885, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 160) * 1e9, 55309.5, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 165) * 1e9, 54817.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 170) * 1e9, 54417.4, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 175) * 1e9, 54115.7, 145 + 500); + EXPECT_NEAR(get_mag_strength_tesla(60, 180) * 1e9, 53916.7, 145 + 500); +} diff --git a/src/lib/ecl/test/test_helper/CMakeLists.txt b/src/lib/ecl/test/test_helper/CMakeLists.txt new file mode 100644 index 0000000000..3c5a89b97e --- /dev/null +++ b/src/lib/ecl/test/test_helper/CMakeLists.txt @@ -0,0 +1,40 @@ +############################################################################ +# +# Copyright (c) 2019 ECL Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name ECL nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + + +set(SRCS + reset_logging_checker.cpp + ) + +add_library(ecl_test_helper ${SRCS}) +target_link_libraries(ecl_test_helper ecl_EKF) diff --git a/src/lib/ecl/test/test_helper/reset_logging_checker.cpp b/src/lib/ecl/test/test_helper/reset_logging_checker.cpp new file mode 100644 index 0000000000..d02b4a4bc3 --- /dev/null +++ b/src/lib/ecl/test/test_helper/reset_logging_checker.cpp @@ -0,0 +1,81 @@ +#include "reset_logging_checker.h" + +// call immediately after state reset +void ResetLoggingChecker::capturePreResetState() { + float a[2]; + float b; + uint8_t c; + _ekf->get_velNE_reset(a, &c); + horz_vel_reset_counter_before_reset = c; + _ekf->get_velD_reset(&b, &c); + vert_vel_reset_counter_before_reset = c; + _ekf->get_posNE_reset(a, &c); + horz_pos_reset_counter_before_reset = c; + _ekf->get_posD_reset(&b, &c); + vert_pos_reset_counter_before_reset = c; + + velocity_before_reset = _ekf->getVelocity(); + position_before_reset = _ekf->getPosition(); +} + +// call immediately after state reset +void ResetLoggingChecker::capturePostResetState() { + float a[2]; + float b; + uint8_t c; + _ekf->get_velNE_reset(a, &c); + logged_delta_velocity(0) = a[0]; + logged_delta_velocity(1) = a[1]; + horz_vel_reset_counter_after_reset = c; + _ekf->get_velD_reset(&b, &c); + logged_delta_velocity(2) = b; + vert_vel_reset_counter_after_reset = c; + _ekf->get_posNE_reset(a, &c); + logged_delta_position(0) = a[0]; + logged_delta_position(1) = a[1]; + horz_pos_reset_counter_after_reset = c; + _ekf->get_posD_reset(&b, &c); + logged_delta_position(2) = b; + vert_pos_reset_counter_after_reset = c; + + velocity_after_reset = _ekf->getVelocity(); + position_after_reset = _ekf->getPosition(); +} + +bool ResetLoggingChecker::isVelocityDeltaLoggedCorrectly(float accuracy) { + const Vector3f measured_delta_velocity = velocity_after_reset - + velocity_before_reset; + + return matrix::isEqual(logged_delta_velocity, + measured_delta_velocity, + accuracy); +} + +bool ResetLoggingChecker::isHorizontalVelocityResetCounterIncreasedBy(int offset) { + return horz_vel_reset_counter_after_reset == + horz_vel_reset_counter_before_reset + offset; +} + +bool ResetLoggingChecker::isVerticalVelocityResetCounterIncreasedBy(int offset) { + return vert_vel_reset_counter_after_reset == + vert_vel_reset_counter_before_reset + offset; +} + +bool ResetLoggingChecker::isPositionDeltaLoggedCorrectly(float accuracy) { + const Vector3f measured_delta_position = position_after_reset - + position_before_reset; + + return matrix::isEqual(logged_delta_position, + measured_delta_position, + accuracy); +} + +bool ResetLoggingChecker::isHorizontalPositionResetCounterIncreasedBy(int offset) { + return horz_pos_reset_counter_after_reset == + horz_pos_reset_counter_before_reset + offset; +} + +bool ResetLoggingChecker::isVerticalPositionResetCounterIncreasedBy(int offset) { + return vert_pos_reset_counter_after_reset == + vert_pos_reset_counter_before_reset + offset; +} diff --git a/src/lib/ecl/test/test_helper/reset_logging_checker.h b/src/lib/ecl/test/test_helper/reset_logging_checker.h new file mode 100644 index 0000000000..a1c4fccc50 --- /dev/null +++ b/src/lib/ecl/test/test_helper/reset_logging_checker.h @@ -0,0 +1,86 @@ +/**************************************************************************** + * + * Copyright (c) 2020 ECL Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * Helper class to check the state_reset_status member of the ekf object. + * Used for checking if state resets are logged correctly. + * @author Kamil Ritz + */ + +#pragma once + +#include +#include "EKF/ekf.h" + +class ResetLoggingChecker { +public: + ResetLoggingChecker(std::shared_ptr ekf) : _ekf(ekf) {} + + // call immediately before state reset + void capturePreResetState(); + + // call immediately after state reset + void capturePostResetState(); + + bool isVelocityDeltaLoggedCorrectly(float accuracy); + + bool isHorizontalVelocityResetCounterIncreasedBy(int offset); + + bool isVerticalVelocityResetCounterIncreasedBy(int offset); + + bool isPositionDeltaLoggedCorrectly(float accuracy); + + bool isHorizontalPositionResetCounterIncreasedBy(int offset); + + bool isVerticalPositionResetCounterIncreasedBy(int offset); + +private: + std::shared_ptr _ekf; + + Vector3f velocity_before_reset; + Vector3f position_before_reset; + int horz_vel_reset_counter_before_reset; + int vert_vel_reset_counter_before_reset; + int horz_pos_reset_counter_before_reset; + int vert_pos_reset_counter_before_reset; + + Vector3f velocity_after_reset; + Vector3f position_after_reset; + int horz_vel_reset_counter_after_reset; + int vert_vel_reset_counter_after_reset; + int horz_pos_reset_counter_after_reset; + int vert_pos_reset_counter_after_reset; + + Vector3f logged_delta_velocity; + Vector3f logged_delta_position; +}; diff --git a/src/lib/ecl/tools/format.sh b/src/lib/ecl/tools/format.sh new file mode 100755 index 0000000000..da4c7620e4 --- /dev/null +++ b/src/lib/ecl/tools/format.sh @@ -0,0 +1,38 @@ +#!/bin/bash +do_format=$1 +files_to_format=""" +EKF/AlphaFilter.hpp +EKF/RingBuffer.h +EKF/vel_pos_fusion.cpp +EKF/imu_down_sampler.*pp +mathlib/*.cpp +mathlib/*.h +""" +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +if ! hash clang-format-6.0 +then + echo -e ${RED}Error: No clang-format-6.0 installed${NC} + exit 1 +fi + +if [[ $do_format -eq 1 ]] +then + # formatting + clang-format-6.0 -i -style=file ${files_to_format} + echo -e ${GREEN}Formatting finished${NC} +else + # checking format... + clang-format-6.0 -style=file -output-replacements-xml ${files_to_format} | grep -c " /dev/null + if [[ $? -eq 0 ]] + then + echo -e ${RED}Error: need to format${NC} + echo -e ${YELLOW}From cmake build directory run: 'make format'${NC} + exit 1 + fi + echo -e ${GREEN}no formatting needed${NC} + exit 0 +fi diff --git a/src/lib/l1/CMakeLists.txt b/src/lib/l1/CMakeLists.txt index c564b308f1..7c93473776 100644 --- a/src/lib/l1/CMakeLists.txt +++ b/src/lib/l1/CMakeLists.txt @@ -36,5 +36,4 @@ px4_add_library(l1 ECL_L1_Pos_Controller.hpp ) -add_dependencies(l1 git_ecl) target_link_libraries(l1 PRIVATE ecl_geo) diff --git a/src/lib/tecs/CMakeLists.txt b/src/lib/tecs/CMakeLists.txt index f66ca1c8f0..f8ce904697 100644 --- a/src/lib/tecs/CMakeLists.txt +++ b/src/lib/tecs/CMakeLists.txt @@ -36,5 +36,4 @@ px4_add_library(tecs TECS.hpp ) -add_dependencies(tecs git_ecl) target_link_libraries(tecs PRIVATE ecl_geo) diff --git a/src/modules/airspeed_selector/CMakeLists.txt b/src/modules/airspeed_selector/CMakeLists.txt index 6c2ad20cf4..e87cf3c056 100644 --- a/src/modules/airspeed_selector/CMakeLists.txt +++ b/src/modules/airspeed_selector/CMakeLists.txt @@ -36,7 +36,6 @@ px4_add_module( SRCS airspeed_selector_main.cpp DEPENDS - git_ecl ecl_airdata AirspeedValidator ) diff --git a/src/modules/attitude_estimator_q/CMakeLists.txt b/src/modules/attitude_estimator_q/CMakeLists.txt index 6563648fc5..ba1ca526c6 100644 --- a/src/modules/attitude_estimator_q/CMakeLists.txt +++ b/src/modules/attitude_estimator_q/CMakeLists.txt @@ -39,7 +39,6 @@ px4_add_module( SRCS attitude_estimator_q_main.cpp DEPENDS - git_ecl ecl_geo_lookup ) diff --git a/src/modules/commander/CMakeLists.txt b/src/modules/commander/CMakeLists.txt index f9568a0c3b..8dad922009 100644 --- a/src/modules/commander/CMakeLists.txt +++ b/src/modules/commander/CMakeLists.txt @@ -57,7 +57,6 @@ px4_add_module( DEPENDS circuit_breaker failure_detector - git_ecl ecl_geo hysteresis PreFlightCheck diff --git a/src/modules/ekf2/CMakeLists.txt b/src/modules/ekf2/CMakeLists.txt index 56d0b143e9..5a4954df20 100644 --- a/src/modules/ekf2/CMakeLists.txt +++ b/src/modules/ekf2/CMakeLists.txt @@ -44,7 +44,6 @@ px4_add_module( EKF2Selector.cpp EKF2Selector.hpp DEPENDS - git_ecl ecl_EKF ecl_geo perf diff --git a/src/modules/local_position_estimator/CMakeLists.txt b/src/modules/local_position_estimator/CMakeLists.txt index a54534e6d0..3fbc213e06 100644 --- a/src/modules/local_position_estimator/CMakeLists.txt +++ b/src/modules/local_position_estimator/CMakeLists.txt @@ -49,7 +49,6 @@ px4_add_module( sensors/landing_target.cpp DEPENDS controllib - git_ecl ecl_geo px4_work_queue ) diff --git a/src/modules/mavlink/CMakeLists.txt b/src/modules/mavlink/CMakeLists.txt index 62f2075acb..4e256b2864 100644 --- a/src/modules/mavlink/CMakeLists.txt +++ b/src/modules/mavlink/CMakeLists.txt @@ -72,7 +72,6 @@ px4_add_module( drivers_magnetometer git_mavlink_v2 conversion - git_ecl ecl_geo version UNITY_BUILD diff --git a/src/modules/mc_pos_control/CMakeLists.txt b/src/modules/mc_pos_control/CMakeLists.txt index 1b26f7998d..323674aff2 100644 --- a/src/modules/mc_pos_control/CMakeLists.txt +++ b/src/modules/mc_pos_control/CMakeLists.txt @@ -45,7 +45,6 @@ px4_add_module( PositionControl Takeoff controllib - git_ecl ecl_geo SlewRate ) diff --git a/src/modules/navigator/CMakeLists.txt b/src/modules/navigator/CMakeLists.txt index 4a237ccc5b..54499d7c88 100644 --- a/src/modules/navigator/CMakeLists.txt +++ b/src/modules/navigator/CMakeLists.txt @@ -52,11 +52,10 @@ px4_add_module( gpsfailure.cpp follow_target.cpp DEPENDS - git_ecl ecl_geo landing_slope geofence_breach_avoidance motion_planning ) -px4_add_functional_gtest(SRC RangeRTLTest.cpp LINKLIBS modules__navigator modules__dataman) \ No newline at end of file +px4_add_functional_gtest(SRC RangeRTLTest.cpp LINKLIBS modules__navigator modules__dataman) diff --git a/src/modules/sensors/CMakeLists.txt b/src/modules/sensors/CMakeLists.txt index e2f605325a..324bf88685 100644 --- a/src/modules/sensors/CMakeLists.txt +++ b/src/modules/sensors/CMakeLists.txt @@ -52,7 +52,6 @@ px4_add_module( conversion data_validator drivers__device - git_ecl mathlib sensor_calibration vehicle_acceleration diff --git a/src/modules/simulator/CMakeLists.txt b/src/modules/simulator/CMakeLists.txt index fdc6837154..8a3eb93fe9 100644 --- a/src/modules/simulator/CMakeLists.txt +++ b/src/modules/simulator/CMakeLists.txt @@ -67,7 +67,6 @@ px4_add_module( DEPENDS git_mavlink_v2 conversion - git_ecl ecl_geo drivers_accelerometer drivers_barometer diff --git a/src/modules/vmount/CMakeLists.txt b/src/modules/vmount/CMakeLists.txt index 069a1cca13..50f67f3fa6 100644 --- a/src/modules/vmount/CMakeLists.txt +++ b/src/modules/vmount/CMakeLists.txt @@ -44,7 +44,6 @@ px4_add_module( output_rc.cpp vmount.cpp DEPENDS - git_ecl ecl_geo ) diff --git a/src/systemcmds/tests/CMakeLists.txt b/src/systemcmds/tests/CMakeLists.txt index 42e6422e27..c4ab834e9a 100644 --- a/src/systemcmds/tests/CMakeLists.txt +++ b/src/systemcmds/tests/CMakeLists.txt @@ -104,7 +104,6 @@ px4_add_module( SRCS ${srcs} DEPENDS - git_ecl ecl_geo_lookup # TODO: move this output_limit version