From e5952fadafc2de2ad5db841fd53ef7e9d85b5742 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Thu, 3 May 2018 13:07:56 -0400 Subject: [PATCH] cmake standalone build --- .gitignore | 2 +- .gitmodules | 3 - CMakeLists.txt | 88 ++++++++++----- EKF/CMakeLists.txt | 58 ++-------- EKF/FindEigen3.cmake | 90 ---------------- EKF/common.h | 2 +- EKF/estimator_interface.h | 2 +- .../matlab}/EKF_replay/Common/AlignTilt.m | 0 .../matlab}/EKF_replay/Common/ConvertToC.m | 0 .../matlab}/EKF_replay/Common/ConvertToM.m | 0 .../matlab}/EKF_replay/Common/EulToQuat.m | 0 .../matlab}/EKF_replay/Common/LLH2NED.m | 22 ++-- .../matlab}/EKF_replay/Common/NormQuat.m | 0 .../EKF_replay/Common/OptimiseAlgebra.m | 0 .../matlab}/EKF_replay/Common/Quat2Tbn.m | 0 .../matlab}/EKF_replay/Common/QuatDivide.m | 0 .../matlab}/EKF_replay/Common/QuatMult.m | 0 .../matlab}/EKF_replay/Common/QuatToEul.m | 0 .../matlab}/EKF_replay/Common/RotToQuat.m | 0 .../EKF_replay/Common/convert_apm_data.m | 0 .../convert_px4_distance_sensor_csv_data.m | 0 .../convert_px4_optical_flow_csv_data.m | 0 .../convert_px4_sensor_combined_csv_data.m | 0 .../convert_px4_vehicle_gps_position_csv.m | 0 .../matlab}/EKF_replay/Filter/AlignHeading.m | 0 .../EKF_replay/Filter/ConstrainStates.m | 0 .../EKF_replay/Filter/FuseBaroHeight.m | 0 .../matlab}/EKF_replay/Filter/FuseBodyVel.m | 0 .../EKF_replay/Filter/FuseMagDeclination.m | 0 .../EKF_replay/Filter/FuseMagHeading.m | 0 .../EKF_replay/Filter/FuseMagnetometer.m | 0 .../EKF_replay/Filter/FuseOpticalFlow.m | 0 .../matlab}/EKF_replay/Filter/FusePosition.m | 0 .../matlab}/EKF_replay/Filter/FuseVelocity.m | 0 .../EKF_replay/Filter/GenerateEquations24.m | 0 .../EKF_replay/Filter/InitCovariance.m | 0 .../matlab}/EKF_replay/Filter/InitStates.m | 0 .../matlab}/EKF_replay/Filter/PlotData.m | 0 .../EKF_replay/Filter/PredictCovariance.m | 0 .../matlab}/EKF_replay/Filter/PredictStates.m | 0 .../matlab}/EKF_replay/Filter/RunFilter.m | 0 .../EKF_replay/Filter/SetParameterDefaults.m | 0 .../matlab}/EKF_replay/Filter/SetParameters.m | 0 .../matlab}/EKF_replay/Filter/calcF24.m | 0 .../matlab}/EKF_replay/Filter/calcH_HDG.m | 0 .../matlab}/EKF_replay/Filter/calcH_LOSX.m | 0 .../matlab}/EKF_replay/Filter/calcH_LOSY.m | 0 .../matlab}/EKF_replay/Filter/calcH_MAGD.m | 0 .../matlab}/EKF_replay/Filter/calcH_MAGX.m | 0 .../matlab}/EKF_replay/Filter/calcH_MAGY.m | 0 .../matlab}/EKF_replay/Filter/calcH_MAGZ.m | 0 .../matlab}/EKF_replay/Filter/calcH_VELX.m | 0 .../matlab}/EKF_replay/Filter/calcH_VELY.m | 0 .../matlab}/EKF_replay/Filter/calcH_VELZ.m | 0 .../matlab}/EKF_replay/Filter/calcQ24.m | 0 .../EKF_replay/Filter/find_best_gps_delay.m | 0 .../quat_to_euler_error_transfer_matrix.m | 0 .../EKF_replay/Filter/replay_apm_data.m | 0 .../EKF_replay/Filter/replay_px4_data.m | 0 .../Filter/replay_px4_optflow_data.m | 0 .../EKF_replay/Filter/transfer_matrix.m | 0 .../EKF_replay/SensorCalibration/allan.m | 0 .../compare_mag_calibration.m | 0 .../SensorCalibration/ellipsoid_fit.m | 0 {matlab => EKF/matlab}/EKF_replay/readme.txt | 0 {matlab => EKF/matlab}/README.md | 0 .../matlab}/analysis/estimatorLogViewerPX4.m | 0 .../matlab}/analysis/importPX4log.m | 0 .../matlab}/analysis/usageSamples.m | 0 .../Inertial Nav EKF/Airspeed Fusion.txt | 0 .../Covariance Prediction.txt | 0 .../Magnetic Declination Fusion.txt | 0 .../Inertial Nav EKF/Magnetometer Fusion.txt | 0 .../generated/Inertial Nav EKF/Notes.txt | 0 .../Inertial Nav EKF/Optical Flow Fusion.txt | 0 .../Inertial Nav EKF/Sideslip Fusion.txt | 0 .../Simple Magnetometer Fusion.txt | 0 .../Inertial Nav EKF/Yaw Angle Fusion.txt | 0 {matlab => EKF/matlab}/generated/README.md | 0 .../scripts/Inertial Nav EKF/Airspeed.mat | Bin .../scripts/Inertial Nav EKF/C_code24.txt | 0 .../scripts/Inertial Nav EKF/ConvertToC.m | 0 .../scripts/Inertial Nav EKF/ConvertToM.m | 0 .../matlab}/scripts/Inertial Nav EKF/Drag.mat | Bin .../scripts/Inertial Nav EKF/EulToQuat.m | 0 .../GenerateNavFilterEquations.m | 0 .../matlab}/scripts/Inertial Nav EKF/H_LOSX.c | 0 .../matlab}/scripts/Inertial Nav EKF/H_LOSY.c | 0 .../matlab}/scripts/Inertial Nav EKF/H_VELX.c | 0 .../matlab}/scripts/Inertial Nav EKF/H_VELY.c | 0 .../matlab}/scripts/Inertial Nav EKF/H_VELZ.c | 0 .../matlab}/scripts/Inertial Nav EKF/K_LOSX.c | 0 .../matlab}/scripts/Inertial Nav EKF/K_LOSY.c | 0 .../matlab}/scripts/Inertial Nav EKF/K_VELX.c | 0 .../matlab}/scripts/Inertial Nav EKF/K_VELY.c | 0 .../matlab}/scripts/Inertial Nav EKF/K_VELZ.c | 0 .../matlab}/scripts/Inertial Nav EKF/LOSX.c | 0 .../matlab}/scripts/Inertial Nav EKF/LOSY.c | 0 .../scripts/Inertial Nav EKF/M_code24.txt | 0 .../scripts/Inertial Nav EKF/Magnetometer.mat | Bin .../scripts/Inertial Nav EKF/NormQuat.m | 0 .../Inertial Nav EKF/OptimiseAlgebra.m | 0 .../scripts/Inertial Nav EKF/Q_airdata.c | 0 .../scripts/Inertial Nav EKF/Quat2Tbn.m | 0 .../scripts/Inertial Nav EKF/QuatDivide.m | 0 .../QuatErrTransferEquations.m | 0 .../scripts/Inertial Nav EKF/QuatMult.m | 0 .../scripts/Inertial Nav EKF/QuatToEul.m | 0 .../scripts/Inertial Nav EKF/RotToQuat.m | 0 .../scripts/Inertial Nav EKF/SaveScriptCode.m | 0 .../scripts/Inertial Nav EKF/Sideslip.mat | Bin .../StateAndCovariancePrediction.mat | Bin .../Inertial Nav EKF/StatePrediction.mat | Bin .../Inertial Nav EKF/SymbolicOutput24.mat | Bin .../Inertial Nav EKF/SymbolicOutput24.txt | 0 .../scripts/Inertial Nav EKF/Tbn_312.c | 0 .../scripts/Inertial Nav EKF/Tbn_321.c | 0 .../scripts/Inertial Nav EKF/Tbn_quat.c | 0 .../scripts/Inertial Nav EKF/calcH_YAW312.c | 0 .../scripts/Inertial Nav EKF/calcH_YAW321.c | 0 .../scripts/Inertial Nav EKF/calcMAGD.c | 0 .../Inertial Nav EKF/derive_air_data_errors.m | 0 .../scripts/Inertial Nav EKF/fix_c_code.m | 0 .../scripts/Inertial Nav EKF/polar2cart_cov.m | 0 .../scripts/Inertial Nav EKF/quat2yaw312.m | 0 .../scripts/Inertial Nav EKF/quat2yaw321.m | 0 .../scripts/Inertial Nav EKF/quatCovMat.c | 0 .../scripts/Inertial Nav EKF/rotVarVec.c | 0 .../scripts/Inertial Nav EKF/temp1.mat | Bin .../scripts/Inertial Nav EKF/temp2.mat | Bin .../scripts/Inertial Nav EKF/temp3.mat | Bin .../test_output_filter_gains.m | 0 .../scripts/Inertial Nav EKF/yaw_input_312.c | 0 .../scripts/Inertial Nav EKF/yaw_input_321.c | 0 .../GenerateEquationsTerrainEstimator.m | 0 .../matlab}/scripts/Terrain Estimator/H_OPT.c | 0 .../matlab}/scripts/Terrain Estimator/H_RNG.c | 0 {swig => EKF/swig}/ecl.i | 0 {swig => EKF/swig}/numpy.i | 0 Jenkinsfile | 47 +++++--- Makefile | 101 ++++++++++++++++++ build.sh => airdata/CMakeLists.txt | 28 ++--- airdata/WindEstimator.cpp | 5 +- airdata/WindEstimator.hpp | 1 + attitude_fw/CMakeLists.txt | 43 ++++++++ attitude_fw/ecl_controller.cpp | 2 +- attitude_fw/ecl_controller.h | 5 +- attitude_fw/ecl_pitch_controller.cpp | 29 +++-- attitude_fw/ecl_pitch_controller.h | 4 +- attitude_fw/ecl_roll_controller.cpp | 20 ++-- attitude_fw/ecl_roll_controller.h | 5 +- attitude_fw/ecl_wheel_controller.cpp | 14 +-- attitude_fw/ecl_wheel_controller.h | 5 +- attitude_fw/ecl_yaw_controller.cpp | 30 +++--- attitude_fw/ecl_yaw_controller.h | 5 +- ecl.h | 27 +++-- geo/CMakeLists.txt | 39 +++++++ geo_lookup/CMakeLists.txt | 39 +++++++ geo_lookup/geo_mag_declination.cpp | 2 +- l1/CMakeLists.txt | 40 +++++++ l1/ecl_l1_pos_controller.h | 4 +- mathlib/CMakeLists.txt | 39 +++++++ mathlib/mathlib.cpp | 7 +- mathlib/mathlib.h | 10 +- matrix | 1 - tecs/CMakeLists.txt | 39 +++++++ tecs/tecs.cpp | 2 +- tecs/tecs.h | 2 +- validation/CMakeLists.txt | 40 +++++++ validation/data_validator.cpp | 4 +- validation/data_validator.h | 2 +- validation/data_validator_group.cpp | 2 +- validation/data_validator_group.h | 2 +- 173 files changed, 588 insertions(+), 324 deletions(-) delete mode 100644 .gitmodules delete mode 100644 EKF/FindEigen3.cmake rename {matlab => EKF/matlab}/EKF_replay/Common/AlignTilt.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/ConvertToC.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/ConvertToM.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/EulToQuat.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/LLH2NED.m (96%) rename {matlab => EKF/matlab}/EKF_replay/Common/NormQuat.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/OptimiseAlgebra.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/Quat2Tbn.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/QuatDivide.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/QuatMult.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/QuatToEul.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/RotToQuat.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/convert_apm_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/convert_px4_optical_flow_csv_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/AlignHeading.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/ConstrainStates.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseBaroHeight.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseBodyVel.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseMagDeclination.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseMagHeading.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseMagnetometer.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseOpticalFlow.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FusePosition.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/FuseVelocity.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/GenerateEquations24.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/InitCovariance.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/InitStates.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/PlotData.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/PredictCovariance.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/PredictStates.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/RunFilter.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/SetParameterDefaults.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/SetParameters.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcF24.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_HDG.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_LOSX.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_LOSY.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_MAGD.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_MAGX.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_MAGY.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_MAGZ.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_VELX.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_VELY.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcH_VELZ.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/calcQ24.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/find_best_gps_delay.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/replay_apm_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/replay_px4_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/replay_px4_optflow_data.m (100%) rename {matlab => EKF/matlab}/EKF_replay/Filter/transfer_matrix.m (100%) rename {matlab => EKF/matlab}/EKF_replay/SensorCalibration/allan.m (100%) rename {matlab => EKF/matlab}/EKF_replay/SensorCalibration/compare_mag_calibration.m (100%) rename {matlab => EKF/matlab}/EKF_replay/SensorCalibration/ellipsoid_fit.m (100%) rename {matlab => EKF/matlab}/EKF_replay/readme.txt (100%) rename {matlab => EKF/matlab}/README.md (100%) rename {matlab => EKF/matlab}/analysis/estimatorLogViewerPX4.m (100%) rename {matlab => EKF/matlab}/analysis/importPX4log.m (100%) rename {matlab => EKF/matlab}/analysis/usageSamples.m (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Airspeed Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Covariance Prediction.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Magnetic Declination Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Magnetometer Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Notes.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Optical Flow Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Sideslip Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Simple Magnetometer Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/Inertial Nav EKF/Yaw Angle Fusion.txt (100%) rename {matlab => EKF/matlab}/generated/README.md (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Airspeed.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/C_code24.txt (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/ConvertToC.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/ConvertToM.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Drag.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/EulToQuat.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/GenerateNavFilterEquations.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/H_LOSX.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/H_LOSY.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/H_VELX.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/H_VELY.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/H_VELZ.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/K_LOSX.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/K_LOSY.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/K_VELX.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/K_VELY.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/K_VELZ.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/LOSX.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/LOSY.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/M_code24.txt (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Magnetometer.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/NormQuat.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/OptimiseAlgebra.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Q_airdata.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Quat2Tbn.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/QuatDivide.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/QuatErrTransferEquations.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/QuatMult.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/QuatToEul.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/RotToQuat.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/SaveScriptCode.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Sideslip.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/StateAndCovariancePrediction.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/StatePrediction.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/SymbolicOutput24.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/SymbolicOutput24.txt (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Tbn_312.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Tbn_321.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/Tbn_quat.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/calcH_YAW312.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/calcH_YAW321.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/calcMAGD.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/derive_air_data_errors.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/fix_c_code.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/polar2cart_cov.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/quat2yaw312.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/quat2yaw321.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/quatCovMat.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/rotVarVec.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/temp1.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/temp2.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/temp3.mat (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/test_output_filter_gains.m (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/yaw_input_312.c (100%) rename {matlab => EKF/matlab}/scripts/Inertial Nav EKF/yaw_input_321.c (100%) rename {matlab => EKF/matlab}/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m (100%) rename {matlab => EKF/matlab}/scripts/Terrain Estimator/H_OPT.c (100%) rename {matlab => EKF/matlab}/scripts/Terrain Estimator/H_RNG.c (100%) rename {swig => EKF/swig}/ecl.i (100%) rename {swig => EKF/swig}/numpy.i (100%) create mode 100644 Makefile rename build.sh => airdata/CMakeLists.txt (79%) mode change 100755 => 100644 create mode 100644 attitude_fw/CMakeLists.txt create mode 100644 geo/CMakeLists.txt create mode 100644 geo_lookup/CMakeLists.txt create mode 100644 l1/CMakeLists.txt create mode 100644 mathlib/CMakeLists.txt delete mode 160000 matrix create mode 100644 tecs/CMakeLists.txt create mode 100644 validation/CMakeLists.txt diff --git a/.gitignore b/.gitignore index 5f40a80050..ea2b51b57b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ *.DS_Store *~ .cache/ -Build/ +build/ EKF/tests/pytest/__pycache__/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 88c937c27f..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "matrix"] - path = matrix - url = https://github.com/PX4/Matrix diff --git a/CMakeLists.txt b/CMakeLists.txt index 626f2d6e42..f9b97cb95f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (c) 2015 ECL Development Team. All rights reserved. +# 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 @@ -30,31 +30,63 @@ # POSSIBILITY OF SUCH DAMAGE. # ############################################################################ -include_directories(.) -px4_add_library(ecl - airdata/WindEstimator.cpp - attitude_fw/ecl_controller.cpp - attitude_fw/ecl_pitch_controller.cpp - attitude_fw/ecl_roll_controller.cpp - attitude_fw/ecl_wheel_controller.cpp - attitude_fw/ecl_yaw_controller.cpp - EKF/airspeed_fusion.cpp - EKF/control.cpp - EKF/covariance.cpp - EKF/drag_fusion.cpp - EKF/ekf.cpp - EKF/ekf_helper.cpp - EKF/estimator_interface.cpp - EKF/gps_checks.cpp - EKF/mag_fusion.cpp - EKF/optflow_fusion.cpp - EKF/sideslip_fusion.cpp - EKF/terrain_estimator.cpp - EKF/vel_pos_fusion.cpp - geo/geo.cpp - geo_lookup/geo_mag_declination.cpp - l1/ecl_l1_pos_controller.cpp - tecs/tecs.cpp - validation/data_validator.cpp - validation/data_validator_group.cpp + +cmake_minimum_required(VERSION 3.0) + +project(ECL CXX) + +execute_process( + COMMAND git describe --always --tags + OUTPUT_VARIABLE git_tag + OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) + +message(STATUS "PX4 ECL: Very lightweight Estimation & Control Library ${git_tag}") + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +set(ECL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + # ECL standalone build + add_definitions(-DECL_STANDALONE) + + add_custom_target(prebuild_targets) + + add_compile_options( + -pedantic + + -Wall + -Wextra + -Werror + + -Wno-unused-parameter + ) + + # fetch latest matrix from github + include(ExternalProject) + ExternalProject_Add(matrix + GIT_REPOSITORY "https://github.com/PX4/Matrix.git" + UPDATE_COMMAND "" + PATCH_COMMAND "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + ) + add_dependencies(prebuild_targets matrix) + include_directories(${CMAKE_BINARY_DIR}/matrix-prefix/src/matrix) + + add_subdirectory(mathlib) +endif() + +add_subdirectory(airdata) +add_subdirectory(attitude_fw) +add_subdirectory(EKF) +add_subdirectory(geo) +add_subdirectory(geo_lookup) +add_subdirectory(l1) +add_subdirectory(tecs) +add_subdirectory(validation) diff --git a/EKF/CMakeLists.txt b/EKF/CMakeLists.txt index 207febef4e..c2bafba509 100644 --- a/EKF/CMakeLists.txt +++ b/EKF/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (c) 2015 ECL Development Team. All rights reserved. +# 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 @@ -31,27 +31,7 @@ # ############################################################################ -cmake_minimum_required(VERSION 2.8) - -project(ECL CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) - -set(MATRIX_DIR ${CMAKE_SOURCE_DIR}/../matrix) -if(NOT EXISTS "${MATRIX_DIR}/.git") - message(SEND_ERROR "The git submodules are not available. Please run git submodule update --init --recursive") -endif() - -include_directories( - .. - ${MATRIX_DIR} - ) - -set(SRCS - ../geo/geo.cpp - ../geo_lookup/geo_mag_declination.cpp - ../mathlib/mathlib.cpp +add_library(ecl_EKF airspeed_fusion.cpp control.cpp covariance.cpp @@ -65,28 +45,12 @@ set(SRCS sideslip_fusion.cpp terrain_estimator.cpp vel_pos_fusion.cpp - ) - -add_definitions(-DPOSIX_SHARED) -add_compile_options( - -pedantic - -std=c++11 - - -Wall - -Werror +) - -Wno-deprecated-declarations - -Wno-enum-compare - -Wno-unused-local-typedefs - -Wno-unused-parameter - ) - -# clang tolerate unknown gcc options -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_compile_options(-Wno-unknown-warning-option) -endif() +add_dependencies(ecl_EKF prebuild_targets) -add_library(ecl SHARED ${SRCS}) +target_include_directories(ecl_EKF PUBLIC ${ECL_SOURCE_DIR}) +target_link_libraries(ecl_EKF PRIVATE ecl_geo_lookup) # Python bindings & tests # Use cmake -DPythonTests=1 ../EKF && make pytest @@ -120,27 +84,27 @@ if(PythonTests) swig_link_libraries(ecl ${PYTHON_LIBRARIES} ecl) add_custom_target(pytest - env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/tests/pytest/ekf_test --verbose + env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/pytest/ekf_test --verbose ) add_dependencies(pytest ${SWIG_MODULE_ecl_REAL_NAME}) add_custom_target(pytest-quick - env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/tests/pytest/ekf_test --quick --verbose + env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/pytest/ekf_test --quick --verbose ) add_dependencies(pytest-quick ${SWIG_MODULE_ecl_REAL_NAME}) add_custom_target(pytest-benchmark - env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/tests/pytest/ekf_test --benchmark + env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/pytest/ekf_test --benchmark ) add_dependencies(pytest-benchmark ${SWIG_MODULE_ecl_REAL_NAME}) add_custom_target(pytest-plots - env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/tests/pytest/ekf_test --plots + env PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/tests/pytest/ekf_test --plots ) add_dependencies(pytest-plots ${SWIG_MODULE_ecl_REAL_NAME}) add_custom_target(pytest-lint - COMMAND cd ${CMAKE_SOURCE_DIR}/tests/pytest/ && ${CMAKE_SOURCE_DIR}/tests/pytest/lint + COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/tests/pytest/ && ${CMAKE_CURRENT_SOURCE_DIR}/tests/pytest/lint ) add_dependencies(pytest-lint ${SWIG_MODULE_ecl_REAL_NAME}) endif() diff --git a/EKF/FindEigen3.cmake b/EKF/FindEigen3.cmake deleted file mode 100644 index cea1afeabc..0000000000 --- a/EKF/FindEigen3.cmake +++ /dev/null @@ -1,90 +0,0 @@ -# - Try to find Eigen3 lib -# -# This module supports requiring a minimum version, e.g. you can do -# find_package(Eigen3 3.1.2) -# to require version 3.1.2 or newer of Eigen3. -# -# Once done this will define -# -# EIGEN3_FOUND - system has eigen lib with correct version -# EIGEN3_INCLUDE_DIR - the eigen include directory -# EIGEN3_VERSION - eigen version -# -# This module reads hints about search locations from -# the following enviroment variables: -# -# EIGEN3_ROOT -# EIGEN3_ROOT_DIR - -# Copyright (c) 2006, 2007 Montel Laurent, -# Copyright (c) 2008, 2009 Gael Guennebaud, -# Copyright (c) 2009 Benoit Jacob -# Redistribution and use is allowed according to the terms of the 2-clause BSD license. - -if(NOT Eigen3_FIND_VERSION) - if(NOT Eigen3_FIND_VERSION_MAJOR) - set(Eigen3_FIND_VERSION_MAJOR 2) - endif(NOT Eigen3_FIND_VERSION_MAJOR) - if(NOT Eigen3_FIND_VERSION_MINOR) - set(Eigen3_FIND_VERSION_MINOR 91) - endif(NOT Eigen3_FIND_VERSION_MINOR) - if(NOT Eigen3_FIND_VERSION_PATCH) - set(Eigen3_FIND_VERSION_PATCH 0) - endif(NOT Eigen3_FIND_VERSION_PATCH) - - set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}") -endif(NOT Eigen3_FIND_VERSION) - -macro(_eigen3_check_version) - file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) - - string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") - set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") - string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}") - set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}") - string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}") - set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}") - - set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION}) - if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) - set(EIGEN3_VERSION_OK FALSE) - else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) - set(EIGEN3_VERSION_OK TRUE) - endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) - - if(NOT EIGEN3_VERSION_OK) - - message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, " - "but at least version ${Eigen3_FIND_VERSION} is required") - endif(NOT EIGEN3_VERSION_OK) -endmacro(_eigen3_check_version) - -if (EIGEN3_INCLUDE_DIR) - - # in cache already - _eigen3_check_version() - set(EIGEN3_FOUND ${EIGEN3_VERSION_OK}) - -else (EIGEN3_INCLUDE_DIR) - - find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library - HINTS - ENV EIGEN3_ROOT - ENV EIGEN3_ROOT_DIR - PATHS - ${CMAKE_INSTALL_PREFIX}/include - ${KDE4_INCLUDE_DIR} - PATH_SUFFIXES eigen3 eigen - ) - - if(EIGEN3_INCLUDE_DIR) - _eigen3_check_version() - endif(EIGEN3_INCLUDE_DIR) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) - - mark_as_advanced(EIGEN3_INCLUDE_DIR) - -endif(EIGEN3_INCLUDE_DIR) - diff --git a/EKF/common.h b/EKF/common.h index 45e376615e..251c694069 100644 --- a/EKF/common.h +++ b/EKF/common.h @@ -40,7 +40,7 @@ * */ -#include +#include namespace estimator { diff --git a/EKF/estimator_interface.h b/EKF/estimator_interface.h index 8f8ddec0f2..06f6f3051e 100644 --- a/EKF/estimator_interface.h +++ b/EKF/estimator_interface.h @@ -43,7 +43,7 @@ #include "RingBuffer.h" #include -#include +#include #include using namespace estimator; diff --git a/matlab/EKF_replay/Common/AlignTilt.m b/EKF/matlab/EKF_replay/Common/AlignTilt.m similarity index 100% rename from matlab/EKF_replay/Common/AlignTilt.m rename to EKF/matlab/EKF_replay/Common/AlignTilt.m diff --git a/matlab/EKF_replay/Common/ConvertToC.m b/EKF/matlab/EKF_replay/Common/ConvertToC.m similarity index 100% rename from matlab/EKF_replay/Common/ConvertToC.m rename to EKF/matlab/EKF_replay/Common/ConvertToC.m diff --git a/matlab/EKF_replay/Common/ConvertToM.m b/EKF/matlab/EKF_replay/Common/ConvertToM.m similarity index 100% rename from matlab/EKF_replay/Common/ConvertToM.m rename to EKF/matlab/EKF_replay/Common/ConvertToM.m diff --git a/matlab/EKF_replay/Common/EulToQuat.m b/EKF/matlab/EKF_replay/Common/EulToQuat.m similarity index 100% rename from matlab/EKF_replay/Common/EulToQuat.m rename to EKF/matlab/EKF_replay/Common/EulToQuat.m diff --git a/matlab/EKF_replay/Common/LLH2NED.m b/EKF/matlab/EKF_replay/Common/LLH2NED.m similarity index 96% rename from matlab/EKF_replay/Common/LLH2NED.m rename to EKF/matlab/EKF_replay/Common/LLH2NED.m index ac2df39585..72ed981215 100644 --- a/matlab/EKF_replay/Common/LLH2NED.m +++ b/EKF/matlab/EKF_replay/Common/LLH2NED.m @@ -1,12 +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]; +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/matlab/EKF_replay/Common/NormQuat.m b/EKF/matlab/EKF_replay/Common/NormQuat.m similarity index 100% rename from matlab/EKF_replay/Common/NormQuat.m rename to EKF/matlab/EKF_replay/Common/NormQuat.m diff --git a/matlab/EKF_replay/Common/OptimiseAlgebra.m b/EKF/matlab/EKF_replay/Common/OptimiseAlgebra.m similarity index 100% rename from matlab/EKF_replay/Common/OptimiseAlgebra.m rename to EKF/matlab/EKF_replay/Common/OptimiseAlgebra.m diff --git a/matlab/EKF_replay/Common/Quat2Tbn.m b/EKF/matlab/EKF_replay/Common/Quat2Tbn.m similarity index 100% rename from matlab/EKF_replay/Common/Quat2Tbn.m rename to EKF/matlab/EKF_replay/Common/Quat2Tbn.m diff --git a/matlab/EKF_replay/Common/QuatDivide.m b/EKF/matlab/EKF_replay/Common/QuatDivide.m similarity index 100% rename from matlab/EKF_replay/Common/QuatDivide.m rename to EKF/matlab/EKF_replay/Common/QuatDivide.m diff --git a/matlab/EKF_replay/Common/QuatMult.m b/EKF/matlab/EKF_replay/Common/QuatMult.m similarity index 100% rename from matlab/EKF_replay/Common/QuatMult.m rename to EKF/matlab/EKF_replay/Common/QuatMult.m diff --git a/matlab/EKF_replay/Common/QuatToEul.m b/EKF/matlab/EKF_replay/Common/QuatToEul.m similarity index 100% rename from matlab/EKF_replay/Common/QuatToEul.m rename to EKF/matlab/EKF_replay/Common/QuatToEul.m diff --git a/matlab/EKF_replay/Common/RotToQuat.m b/EKF/matlab/EKF_replay/Common/RotToQuat.m similarity index 100% rename from matlab/EKF_replay/Common/RotToQuat.m rename to EKF/matlab/EKF_replay/Common/RotToQuat.m diff --git a/matlab/EKF_replay/Common/convert_apm_data.m b/EKF/matlab/EKF_replay/Common/convert_apm_data.m similarity index 100% rename from matlab/EKF_replay/Common/convert_apm_data.m rename to EKF/matlab/EKF_replay/Common/convert_apm_data.m diff --git a/matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m b/EKF/matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m similarity index 100% rename from matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m rename to EKF/matlab/EKF_replay/Common/convert_px4_distance_sensor_csv_data.m diff --git a/matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m b/EKF/matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m similarity index 100% rename from matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m rename to EKF/matlab/EKF_replay/Common/convert_px4_optical_flow_csv_data.m diff --git a/matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m b/EKF/matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m similarity index 100% rename from matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m rename to EKF/matlab/EKF_replay/Common/convert_px4_sensor_combined_csv_data.m diff --git a/matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m b/EKF/matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m similarity index 100% rename from matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m rename to EKF/matlab/EKF_replay/Common/convert_px4_vehicle_gps_position_csv.m diff --git a/matlab/EKF_replay/Filter/AlignHeading.m b/EKF/matlab/EKF_replay/Filter/AlignHeading.m similarity index 100% rename from matlab/EKF_replay/Filter/AlignHeading.m rename to EKF/matlab/EKF_replay/Filter/AlignHeading.m diff --git a/matlab/EKF_replay/Filter/ConstrainStates.m b/EKF/matlab/EKF_replay/Filter/ConstrainStates.m similarity index 100% rename from matlab/EKF_replay/Filter/ConstrainStates.m rename to EKF/matlab/EKF_replay/Filter/ConstrainStates.m diff --git a/matlab/EKF_replay/Filter/FuseBaroHeight.m b/EKF/matlab/EKF_replay/Filter/FuseBaroHeight.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseBaroHeight.m rename to EKF/matlab/EKF_replay/Filter/FuseBaroHeight.m diff --git a/matlab/EKF_replay/Filter/FuseBodyVel.m b/EKF/matlab/EKF_replay/Filter/FuseBodyVel.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseBodyVel.m rename to EKF/matlab/EKF_replay/Filter/FuseBodyVel.m diff --git a/matlab/EKF_replay/Filter/FuseMagDeclination.m b/EKF/matlab/EKF_replay/Filter/FuseMagDeclination.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseMagDeclination.m rename to EKF/matlab/EKF_replay/Filter/FuseMagDeclination.m diff --git a/matlab/EKF_replay/Filter/FuseMagHeading.m b/EKF/matlab/EKF_replay/Filter/FuseMagHeading.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseMagHeading.m rename to EKF/matlab/EKF_replay/Filter/FuseMagHeading.m diff --git a/matlab/EKF_replay/Filter/FuseMagnetometer.m b/EKF/matlab/EKF_replay/Filter/FuseMagnetometer.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseMagnetometer.m rename to EKF/matlab/EKF_replay/Filter/FuseMagnetometer.m diff --git a/matlab/EKF_replay/Filter/FuseOpticalFlow.m b/EKF/matlab/EKF_replay/Filter/FuseOpticalFlow.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseOpticalFlow.m rename to EKF/matlab/EKF_replay/Filter/FuseOpticalFlow.m diff --git a/matlab/EKF_replay/Filter/FusePosition.m b/EKF/matlab/EKF_replay/Filter/FusePosition.m similarity index 100% rename from matlab/EKF_replay/Filter/FusePosition.m rename to EKF/matlab/EKF_replay/Filter/FusePosition.m diff --git a/matlab/EKF_replay/Filter/FuseVelocity.m b/EKF/matlab/EKF_replay/Filter/FuseVelocity.m similarity index 100% rename from matlab/EKF_replay/Filter/FuseVelocity.m rename to EKF/matlab/EKF_replay/Filter/FuseVelocity.m diff --git a/matlab/EKF_replay/Filter/GenerateEquations24.m b/EKF/matlab/EKF_replay/Filter/GenerateEquations24.m similarity index 100% rename from matlab/EKF_replay/Filter/GenerateEquations24.m rename to EKF/matlab/EKF_replay/Filter/GenerateEquations24.m diff --git a/matlab/EKF_replay/Filter/InitCovariance.m b/EKF/matlab/EKF_replay/Filter/InitCovariance.m similarity index 100% rename from matlab/EKF_replay/Filter/InitCovariance.m rename to EKF/matlab/EKF_replay/Filter/InitCovariance.m diff --git a/matlab/EKF_replay/Filter/InitStates.m b/EKF/matlab/EKF_replay/Filter/InitStates.m similarity index 100% rename from matlab/EKF_replay/Filter/InitStates.m rename to EKF/matlab/EKF_replay/Filter/InitStates.m diff --git a/matlab/EKF_replay/Filter/PlotData.m b/EKF/matlab/EKF_replay/Filter/PlotData.m similarity index 100% rename from matlab/EKF_replay/Filter/PlotData.m rename to EKF/matlab/EKF_replay/Filter/PlotData.m diff --git a/matlab/EKF_replay/Filter/PredictCovariance.m b/EKF/matlab/EKF_replay/Filter/PredictCovariance.m similarity index 100% rename from matlab/EKF_replay/Filter/PredictCovariance.m rename to EKF/matlab/EKF_replay/Filter/PredictCovariance.m diff --git a/matlab/EKF_replay/Filter/PredictStates.m b/EKF/matlab/EKF_replay/Filter/PredictStates.m similarity index 100% rename from matlab/EKF_replay/Filter/PredictStates.m rename to EKF/matlab/EKF_replay/Filter/PredictStates.m diff --git a/matlab/EKF_replay/Filter/RunFilter.m b/EKF/matlab/EKF_replay/Filter/RunFilter.m similarity index 100% rename from matlab/EKF_replay/Filter/RunFilter.m rename to EKF/matlab/EKF_replay/Filter/RunFilter.m diff --git a/matlab/EKF_replay/Filter/SetParameterDefaults.m b/EKF/matlab/EKF_replay/Filter/SetParameterDefaults.m similarity index 100% rename from matlab/EKF_replay/Filter/SetParameterDefaults.m rename to EKF/matlab/EKF_replay/Filter/SetParameterDefaults.m diff --git a/matlab/EKF_replay/Filter/SetParameters.m b/EKF/matlab/EKF_replay/Filter/SetParameters.m similarity index 100% rename from matlab/EKF_replay/Filter/SetParameters.m rename to EKF/matlab/EKF_replay/Filter/SetParameters.m diff --git a/matlab/EKF_replay/Filter/calcF24.m b/EKF/matlab/EKF_replay/Filter/calcF24.m similarity index 100% rename from matlab/EKF_replay/Filter/calcF24.m rename to EKF/matlab/EKF_replay/Filter/calcF24.m diff --git a/matlab/EKF_replay/Filter/calcH_HDG.m b/EKF/matlab/EKF_replay/Filter/calcH_HDG.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_HDG.m rename to EKF/matlab/EKF_replay/Filter/calcH_HDG.m diff --git a/matlab/EKF_replay/Filter/calcH_LOSX.m b/EKF/matlab/EKF_replay/Filter/calcH_LOSX.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_LOSX.m rename to EKF/matlab/EKF_replay/Filter/calcH_LOSX.m diff --git a/matlab/EKF_replay/Filter/calcH_LOSY.m b/EKF/matlab/EKF_replay/Filter/calcH_LOSY.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_LOSY.m rename to EKF/matlab/EKF_replay/Filter/calcH_LOSY.m diff --git a/matlab/EKF_replay/Filter/calcH_MAGD.m b/EKF/matlab/EKF_replay/Filter/calcH_MAGD.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_MAGD.m rename to EKF/matlab/EKF_replay/Filter/calcH_MAGD.m diff --git a/matlab/EKF_replay/Filter/calcH_MAGX.m b/EKF/matlab/EKF_replay/Filter/calcH_MAGX.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_MAGX.m rename to EKF/matlab/EKF_replay/Filter/calcH_MAGX.m diff --git a/matlab/EKF_replay/Filter/calcH_MAGY.m b/EKF/matlab/EKF_replay/Filter/calcH_MAGY.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_MAGY.m rename to EKF/matlab/EKF_replay/Filter/calcH_MAGY.m diff --git a/matlab/EKF_replay/Filter/calcH_MAGZ.m b/EKF/matlab/EKF_replay/Filter/calcH_MAGZ.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_MAGZ.m rename to EKF/matlab/EKF_replay/Filter/calcH_MAGZ.m diff --git a/matlab/EKF_replay/Filter/calcH_VELX.m b/EKF/matlab/EKF_replay/Filter/calcH_VELX.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_VELX.m rename to EKF/matlab/EKF_replay/Filter/calcH_VELX.m diff --git a/matlab/EKF_replay/Filter/calcH_VELY.m b/EKF/matlab/EKF_replay/Filter/calcH_VELY.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_VELY.m rename to EKF/matlab/EKF_replay/Filter/calcH_VELY.m diff --git a/matlab/EKF_replay/Filter/calcH_VELZ.m b/EKF/matlab/EKF_replay/Filter/calcH_VELZ.m similarity index 100% rename from matlab/EKF_replay/Filter/calcH_VELZ.m rename to EKF/matlab/EKF_replay/Filter/calcH_VELZ.m diff --git a/matlab/EKF_replay/Filter/calcQ24.m b/EKF/matlab/EKF_replay/Filter/calcQ24.m similarity index 100% rename from matlab/EKF_replay/Filter/calcQ24.m rename to EKF/matlab/EKF_replay/Filter/calcQ24.m diff --git a/matlab/EKF_replay/Filter/find_best_gps_delay.m b/EKF/matlab/EKF_replay/Filter/find_best_gps_delay.m similarity index 100% rename from matlab/EKF_replay/Filter/find_best_gps_delay.m rename to EKF/matlab/EKF_replay/Filter/find_best_gps_delay.m diff --git a/matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m b/EKF/matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m similarity index 100% rename from matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m rename to EKF/matlab/EKF_replay/Filter/quat_to_euler_error_transfer_matrix.m diff --git a/matlab/EKF_replay/Filter/replay_apm_data.m b/EKF/matlab/EKF_replay/Filter/replay_apm_data.m similarity index 100% rename from matlab/EKF_replay/Filter/replay_apm_data.m rename to EKF/matlab/EKF_replay/Filter/replay_apm_data.m diff --git a/matlab/EKF_replay/Filter/replay_px4_data.m b/EKF/matlab/EKF_replay/Filter/replay_px4_data.m similarity index 100% rename from matlab/EKF_replay/Filter/replay_px4_data.m rename to EKF/matlab/EKF_replay/Filter/replay_px4_data.m diff --git a/matlab/EKF_replay/Filter/replay_px4_optflow_data.m b/EKF/matlab/EKF_replay/Filter/replay_px4_optflow_data.m similarity index 100% rename from matlab/EKF_replay/Filter/replay_px4_optflow_data.m rename to EKF/matlab/EKF_replay/Filter/replay_px4_optflow_data.m diff --git a/matlab/EKF_replay/Filter/transfer_matrix.m b/EKF/matlab/EKF_replay/Filter/transfer_matrix.m similarity index 100% rename from matlab/EKF_replay/Filter/transfer_matrix.m rename to EKF/matlab/EKF_replay/Filter/transfer_matrix.m diff --git a/matlab/EKF_replay/SensorCalibration/allan.m b/EKF/matlab/EKF_replay/SensorCalibration/allan.m similarity index 100% rename from matlab/EKF_replay/SensorCalibration/allan.m rename to EKF/matlab/EKF_replay/SensorCalibration/allan.m diff --git a/matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m b/EKF/matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m similarity index 100% rename from matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m rename to EKF/matlab/EKF_replay/SensorCalibration/compare_mag_calibration.m diff --git a/matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m b/EKF/matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m similarity index 100% rename from matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m rename to EKF/matlab/EKF_replay/SensorCalibration/ellipsoid_fit.m diff --git a/matlab/EKF_replay/readme.txt b/EKF/matlab/EKF_replay/readme.txt similarity index 100% rename from matlab/EKF_replay/readme.txt rename to EKF/matlab/EKF_replay/readme.txt diff --git a/matlab/README.md b/EKF/matlab/README.md similarity index 100% rename from matlab/README.md rename to EKF/matlab/README.md diff --git a/matlab/analysis/estimatorLogViewerPX4.m b/EKF/matlab/analysis/estimatorLogViewerPX4.m similarity index 100% rename from matlab/analysis/estimatorLogViewerPX4.m rename to EKF/matlab/analysis/estimatorLogViewerPX4.m diff --git a/matlab/analysis/importPX4log.m b/EKF/matlab/analysis/importPX4log.m similarity index 100% rename from matlab/analysis/importPX4log.m rename to EKF/matlab/analysis/importPX4log.m diff --git a/matlab/analysis/usageSamples.m b/EKF/matlab/analysis/usageSamples.m similarity index 100% rename from matlab/analysis/usageSamples.m rename to EKF/matlab/analysis/usageSamples.m diff --git a/matlab/generated/Inertial Nav EKF/Airspeed Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Airspeed Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Airspeed Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Airspeed Fusion.txt diff --git a/matlab/generated/Inertial Nav EKF/Covariance Prediction.txt b/EKF/matlab/generated/Inertial Nav EKF/Covariance Prediction.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Covariance Prediction.txt rename to EKF/matlab/generated/Inertial Nav EKF/Covariance Prediction.txt diff --git a/matlab/generated/Inertial Nav EKF/Magnetic Declination Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Magnetic Declination Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Magnetic Declination Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Magnetic Declination Fusion.txt diff --git a/matlab/generated/Inertial Nav EKF/Magnetometer Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Magnetometer Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Magnetometer Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Magnetometer Fusion.txt diff --git a/matlab/generated/Inertial Nav EKF/Notes.txt b/EKF/matlab/generated/Inertial Nav EKF/Notes.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Notes.txt rename to EKF/matlab/generated/Inertial Nav EKF/Notes.txt diff --git a/matlab/generated/Inertial Nav EKF/Optical Flow Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Optical Flow Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Optical Flow Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Optical Flow Fusion.txt diff --git a/matlab/generated/Inertial Nav EKF/Sideslip Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Sideslip Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Sideslip Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Sideslip Fusion.txt diff --git a/matlab/generated/Inertial Nav EKF/Simple Magnetometer Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Simple Magnetometer Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Simple Magnetometer Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Simple Magnetometer Fusion.txt diff --git a/matlab/generated/Inertial Nav EKF/Yaw Angle Fusion.txt b/EKF/matlab/generated/Inertial Nav EKF/Yaw Angle Fusion.txt similarity index 100% rename from matlab/generated/Inertial Nav EKF/Yaw Angle Fusion.txt rename to EKF/matlab/generated/Inertial Nav EKF/Yaw Angle Fusion.txt diff --git a/matlab/generated/README.md b/EKF/matlab/generated/README.md similarity index 100% rename from matlab/generated/README.md rename to EKF/matlab/generated/README.md diff --git a/matlab/scripts/Inertial Nav EKF/Airspeed.mat b/EKF/matlab/scripts/Inertial Nav EKF/Airspeed.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Airspeed.mat rename to EKF/matlab/scripts/Inertial Nav EKF/Airspeed.mat diff --git a/matlab/scripts/Inertial Nav EKF/C_code24.txt b/EKF/matlab/scripts/Inertial Nav EKF/C_code24.txt similarity index 100% rename from matlab/scripts/Inertial Nav EKF/C_code24.txt rename to EKF/matlab/scripts/Inertial Nav EKF/C_code24.txt diff --git a/matlab/scripts/Inertial Nav EKF/ConvertToC.m b/EKF/matlab/scripts/Inertial Nav EKF/ConvertToC.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/ConvertToC.m rename to EKF/matlab/scripts/Inertial Nav EKF/ConvertToC.m diff --git a/matlab/scripts/Inertial Nav EKF/ConvertToM.m b/EKF/matlab/scripts/Inertial Nav EKF/ConvertToM.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/ConvertToM.m rename to EKF/matlab/scripts/Inertial Nav EKF/ConvertToM.m diff --git a/matlab/scripts/Inertial Nav EKF/Drag.mat b/EKF/matlab/scripts/Inertial Nav EKF/Drag.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Drag.mat rename to EKF/matlab/scripts/Inertial Nav EKF/Drag.mat diff --git a/matlab/scripts/Inertial Nav EKF/EulToQuat.m b/EKF/matlab/scripts/Inertial Nav EKF/EulToQuat.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/EulToQuat.m rename to EKF/matlab/scripts/Inertial Nav EKF/EulToQuat.m diff --git a/matlab/scripts/Inertial Nav EKF/GenerateNavFilterEquations.m b/EKF/matlab/scripts/Inertial Nav EKF/GenerateNavFilterEquations.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/GenerateNavFilterEquations.m rename to EKF/matlab/scripts/Inertial Nav EKF/GenerateNavFilterEquations.m diff --git a/matlab/scripts/Inertial Nav EKF/H_LOSX.c b/EKF/matlab/scripts/Inertial Nav EKF/H_LOSX.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/H_LOSX.c rename to EKF/matlab/scripts/Inertial Nav EKF/H_LOSX.c diff --git a/matlab/scripts/Inertial Nav EKF/H_LOSY.c b/EKF/matlab/scripts/Inertial Nav EKF/H_LOSY.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/H_LOSY.c rename to EKF/matlab/scripts/Inertial Nav EKF/H_LOSY.c diff --git a/matlab/scripts/Inertial Nav EKF/H_VELX.c b/EKF/matlab/scripts/Inertial Nav EKF/H_VELX.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/H_VELX.c rename to EKF/matlab/scripts/Inertial Nav EKF/H_VELX.c diff --git a/matlab/scripts/Inertial Nav EKF/H_VELY.c b/EKF/matlab/scripts/Inertial Nav EKF/H_VELY.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/H_VELY.c rename to EKF/matlab/scripts/Inertial Nav EKF/H_VELY.c diff --git a/matlab/scripts/Inertial Nav EKF/H_VELZ.c b/EKF/matlab/scripts/Inertial Nav EKF/H_VELZ.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/H_VELZ.c rename to EKF/matlab/scripts/Inertial Nav EKF/H_VELZ.c diff --git a/matlab/scripts/Inertial Nav EKF/K_LOSX.c b/EKF/matlab/scripts/Inertial Nav EKF/K_LOSX.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/K_LOSX.c rename to EKF/matlab/scripts/Inertial Nav EKF/K_LOSX.c diff --git a/matlab/scripts/Inertial Nav EKF/K_LOSY.c b/EKF/matlab/scripts/Inertial Nav EKF/K_LOSY.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/K_LOSY.c rename to EKF/matlab/scripts/Inertial Nav EKF/K_LOSY.c diff --git a/matlab/scripts/Inertial Nav EKF/K_VELX.c b/EKF/matlab/scripts/Inertial Nav EKF/K_VELX.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/K_VELX.c rename to EKF/matlab/scripts/Inertial Nav EKF/K_VELX.c diff --git a/matlab/scripts/Inertial Nav EKF/K_VELY.c b/EKF/matlab/scripts/Inertial Nav EKF/K_VELY.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/K_VELY.c rename to EKF/matlab/scripts/Inertial Nav EKF/K_VELY.c diff --git a/matlab/scripts/Inertial Nav EKF/K_VELZ.c b/EKF/matlab/scripts/Inertial Nav EKF/K_VELZ.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/K_VELZ.c rename to EKF/matlab/scripts/Inertial Nav EKF/K_VELZ.c diff --git a/matlab/scripts/Inertial Nav EKF/LOSX.c b/EKF/matlab/scripts/Inertial Nav EKF/LOSX.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/LOSX.c rename to EKF/matlab/scripts/Inertial Nav EKF/LOSX.c diff --git a/matlab/scripts/Inertial Nav EKF/LOSY.c b/EKF/matlab/scripts/Inertial Nav EKF/LOSY.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/LOSY.c rename to EKF/matlab/scripts/Inertial Nav EKF/LOSY.c diff --git a/matlab/scripts/Inertial Nav EKF/M_code24.txt b/EKF/matlab/scripts/Inertial Nav EKF/M_code24.txt similarity index 100% rename from matlab/scripts/Inertial Nav EKF/M_code24.txt rename to EKF/matlab/scripts/Inertial Nav EKF/M_code24.txt diff --git a/matlab/scripts/Inertial Nav EKF/Magnetometer.mat b/EKF/matlab/scripts/Inertial Nav EKF/Magnetometer.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Magnetometer.mat rename to EKF/matlab/scripts/Inertial Nav EKF/Magnetometer.mat diff --git a/matlab/scripts/Inertial Nav EKF/NormQuat.m b/EKF/matlab/scripts/Inertial Nav EKF/NormQuat.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/NormQuat.m rename to EKF/matlab/scripts/Inertial Nav EKF/NormQuat.m diff --git a/matlab/scripts/Inertial Nav EKF/OptimiseAlgebra.m b/EKF/matlab/scripts/Inertial Nav EKF/OptimiseAlgebra.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/OptimiseAlgebra.m rename to EKF/matlab/scripts/Inertial Nav EKF/OptimiseAlgebra.m diff --git a/matlab/scripts/Inertial Nav EKF/Q_airdata.c b/EKF/matlab/scripts/Inertial Nav EKF/Q_airdata.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Q_airdata.c rename to EKF/matlab/scripts/Inertial Nav EKF/Q_airdata.c diff --git a/matlab/scripts/Inertial Nav EKF/Quat2Tbn.m b/EKF/matlab/scripts/Inertial Nav EKF/Quat2Tbn.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Quat2Tbn.m rename to EKF/matlab/scripts/Inertial Nav EKF/Quat2Tbn.m diff --git a/matlab/scripts/Inertial Nav EKF/QuatDivide.m b/EKF/matlab/scripts/Inertial Nav EKF/QuatDivide.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/QuatDivide.m rename to EKF/matlab/scripts/Inertial Nav EKF/QuatDivide.m diff --git a/matlab/scripts/Inertial Nav EKF/QuatErrTransferEquations.m b/EKF/matlab/scripts/Inertial Nav EKF/QuatErrTransferEquations.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/QuatErrTransferEquations.m rename to EKF/matlab/scripts/Inertial Nav EKF/QuatErrTransferEquations.m diff --git a/matlab/scripts/Inertial Nav EKF/QuatMult.m b/EKF/matlab/scripts/Inertial Nav EKF/QuatMult.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/QuatMult.m rename to EKF/matlab/scripts/Inertial Nav EKF/QuatMult.m diff --git a/matlab/scripts/Inertial Nav EKF/QuatToEul.m b/EKF/matlab/scripts/Inertial Nav EKF/QuatToEul.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/QuatToEul.m rename to EKF/matlab/scripts/Inertial Nav EKF/QuatToEul.m diff --git a/matlab/scripts/Inertial Nav EKF/RotToQuat.m b/EKF/matlab/scripts/Inertial Nav EKF/RotToQuat.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/RotToQuat.m rename to EKF/matlab/scripts/Inertial Nav EKF/RotToQuat.m diff --git a/matlab/scripts/Inertial Nav EKF/SaveScriptCode.m b/EKF/matlab/scripts/Inertial Nav EKF/SaveScriptCode.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/SaveScriptCode.m rename to EKF/matlab/scripts/Inertial Nav EKF/SaveScriptCode.m diff --git a/matlab/scripts/Inertial Nav EKF/Sideslip.mat b/EKF/matlab/scripts/Inertial Nav EKF/Sideslip.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Sideslip.mat rename to EKF/matlab/scripts/Inertial Nav EKF/Sideslip.mat diff --git a/matlab/scripts/Inertial Nav EKF/StateAndCovariancePrediction.mat b/EKF/matlab/scripts/Inertial Nav EKF/StateAndCovariancePrediction.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/StateAndCovariancePrediction.mat rename to EKF/matlab/scripts/Inertial Nav EKF/StateAndCovariancePrediction.mat diff --git a/matlab/scripts/Inertial Nav EKF/StatePrediction.mat b/EKF/matlab/scripts/Inertial Nav EKF/StatePrediction.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/StatePrediction.mat rename to EKF/matlab/scripts/Inertial Nav EKF/StatePrediction.mat diff --git a/matlab/scripts/Inertial Nav EKF/SymbolicOutput24.mat b/EKF/matlab/scripts/Inertial Nav EKF/SymbolicOutput24.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/SymbolicOutput24.mat rename to EKF/matlab/scripts/Inertial Nav EKF/SymbolicOutput24.mat diff --git a/matlab/scripts/Inertial Nav EKF/SymbolicOutput24.txt b/EKF/matlab/scripts/Inertial Nav EKF/SymbolicOutput24.txt similarity index 100% rename from matlab/scripts/Inertial Nav EKF/SymbolicOutput24.txt rename to EKF/matlab/scripts/Inertial Nav EKF/SymbolicOutput24.txt diff --git a/matlab/scripts/Inertial Nav EKF/Tbn_312.c b/EKF/matlab/scripts/Inertial Nav EKF/Tbn_312.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Tbn_312.c rename to EKF/matlab/scripts/Inertial Nav EKF/Tbn_312.c diff --git a/matlab/scripts/Inertial Nav EKF/Tbn_321.c b/EKF/matlab/scripts/Inertial Nav EKF/Tbn_321.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Tbn_321.c rename to EKF/matlab/scripts/Inertial Nav EKF/Tbn_321.c diff --git a/matlab/scripts/Inertial Nav EKF/Tbn_quat.c b/EKF/matlab/scripts/Inertial Nav EKF/Tbn_quat.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/Tbn_quat.c rename to EKF/matlab/scripts/Inertial Nav EKF/Tbn_quat.c diff --git a/matlab/scripts/Inertial Nav EKF/calcH_YAW312.c b/EKF/matlab/scripts/Inertial Nav EKF/calcH_YAW312.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/calcH_YAW312.c rename to EKF/matlab/scripts/Inertial Nav EKF/calcH_YAW312.c diff --git a/matlab/scripts/Inertial Nav EKF/calcH_YAW321.c b/EKF/matlab/scripts/Inertial Nav EKF/calcH_YAW321.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/calcH_YAW321.c rename to EKF/matlab/scripts/Inertial Nav EKF/calcH_YAW321.c diff --git a/matlab/scripts/Inertial Nav EKF/calcMAGD.c b/EKF/matlab/scripts/Inertial Nav EKF/calcMAGD.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/calcMAGD.c rename to EKF/matlab/scripts/Inertial Nav EKF/calcMAGD.c diff --git a/matlab/scripts/Inertial Nav EKF/derive_air_data_errors.m b/EKF/matlab/scripts/Inertial Nav EKF/derive_air_data_errors.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/derive_air_data_errors.m rename to EKF/matlab/scripts/Inertial Nav EKF/derive_air_data_errors.m diff --git a/matlab/scripts/Inertial Nav EKF/fix_c_code.m b/EKF/matlab/scripts/Inertial Nav EKF/fix_c_code.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/fix_c_code.m rename to EKF/matlab/scripts/Inertial Nav EKF/fix_c_code.m diff --git a/matlab/scripts/Inertial Nav EKF/polar2cart_cov.m b/EKF/matlab/scripts/Inertial Nav EKF/polar2cart_cov.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/polar2cart_cov.m rename to EKF/matlab/scripts/Inertial Nav EKF/polar2cart_cov.m diff --git a/matlab/scripts/Inertial Nav EKF/quat2yaw312.m b/EKF/matlab/scripts/Inertial Nav EKF/quat2yaw312.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/quat2yaw312.m rename to EKF/matlab/scripts/Inertial Nav EKF/quat2yaw312.m diff --git a/matlab/scripts/Inertial Nav EKF/quat2yaw321.m b/EKF/matlab/scripts/Inertial Nav EKF/quat2yaw321.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/quat2yaw321.m rename to EKF/matlab/scripts/Inertial Nav EKF/quat2yaw321.m diff --git a/matlab/scripts/Inertial Nav EKF/quatCovMat.c b/EKF/matlab/scripts/Inertial Nav EKF/quatCovMat.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/quatCovMat.c rename to EKF/matlab/scripts/Inertial Nav EKF/quatCovMat.c diff --git a/matlab/scripts/Inertial Nav EKF/rotVarVec.c b/EKF/matlab/scripts/Inertial Nav EKF/rotVarVec.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/rotVarVec.c rename to EKF/matlab/scripts/Inertial Nav EKF/rotVarVec.c diff --git a/matlab/scripts/Inertial Nav EKF/temp1.mat b/EKF/matlab/scripts/Inertial Nav EKF/temp1.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/temp1.mat rename to EKF/matlab/scripts/Inertial Nav EKF/temp1.mat diff --git a/matlab/scripts/Inertial Nav EKF/temp2.mat b/EKF/matlab/scripts/Inertial Nav EKF/temp2.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/temp2.mat rename to EKF/matlab/scripts/Inertial Nav EKF/temp2.mat diff --git a/matlab/scripts/Inertial Nav EKF/temp3.mat b/EKF/matlab/scripts/Inertial Nav EKF/temp3.mat similarity index 100% rename from matlab/scripts/Inertial Nav EKF/temp3.mat rename to EKF/matlab/scripts/Inertial Nav EKF/temp3.mat diff --git a/matlab/scripts/Inertial Nav EKF/test_output_filter_gains.m b/EKF/matlab/scripts/Inertial Nav EKF/test_output_filter_gains.m similarity index 100% rename from matlab/scripts/Inertial Nav EKF/test_output_filter_gains.m rename to EKF/matlab/scripts/Inertial Nav EKF/test_output_filter_gains.m diff --git a/matlab/scripts/Inertial Nav EKF/yaw_input_312.c b/EKF/matlab/scripts/Inertial Nav EKF/yaw_input_312.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/yaw_input_312.c rename to EKF/matlab/scripts/Inertial Nav EKF/yaw_input_312.c diff --git a/matlab/scripts/Inertial Nav EKF/yaw_input_321.c b/EKF/matlab/scripts/Inertial Nav EKF/yaw_input_321.c similarity index 100% rename from matlab/scripts/Inertial Nav EKF/yaw_input_321.c rename to EKF/matlab/scripts/Inertial Nav EKF/yaw_input_321.c diff --git a/matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m b/EKF/matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m similarity index 100% rename from matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m rename to EKF/matlab/scripts/Terrain Estimator/GenerateEquationsTerrainEstimator.m diff --git a/matlab/scripts/Terrain Estimator/H_OPT.c b/EKF/matlab/scripts/Terrain Estimator/H_OPT.c similarity index 100% rename from matlab/scripts/Terrain Estimator/H_OPT.c rename to EKF/matlab/scripts/Terrain Estimator/H_OPT.c diff --git a/matlab/scripts/Terrain Estimator/H_RNG.c b/EKF/matlab/scripts/Terrain Estimator/H_RNG.c similarity index 100% rename from matlab/scripts/Terrain Estimator/H_RNG.c rename to EKF/matlab/scripts/Terrain Estimator/H_RNG.c diff --git a/swig/ecl.i b/EKF/swig/ecl.i similarity index 100% rename from swig/ecl.i rename to EKF/swig/ecl.i diff --git a/swig/numpy.i b/EKF/swig/numpy.i similarity index 100% rename from swig/numpy.i rename to EKF/swig/numpy.i diff --git a/Jenkinsfile b/Jenkinsfile index 8971aef4a5..926c9a3559 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,53 +5,66 @@ pipeline { parallel { stage('build') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + } agent { docker { image 'px4io/px4-dev-base:2017-12-30' - args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' } } steps { - sh 'git clean -ff -x -d .' - sh 'git submodule deinit -f .' - sh 'git submodule update --init --recursive' - sh './build.sh' + sh 'make distclean' + sh 'make' + sh 'make distclean' } } stage('build clang') { + environment { + CCACHE_BASEDIR = "${env.WORKSPACE}" + CC = 'clang' + CXX = 'clang++' + } agent { docker { image 'px4io/px4-dev-clang:2017-12-30' - args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' } - } steps { - sh 'git clean -ff -x -d .' - sh 'git submodule deinit -f .' - sh 'git submodule update --init --recursive' - sh 'CC=clang CXX=clang++ ./build.sh' + sh 'make distclean' + sh 'make' + sh 'make distclean' } } stage('pytest') { agent { docker { - image 'px4io/px4-dev-ecl' - args '-e CI=true -e CCACHE_BASEDIR=$WORKSPACE -e CCACHE_DIR=/tmp/ccache -v /tmp/ccache:/tmp/ccache:rw' + image 'px4io/px4-dev-ecl:2018-04-22' + args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw' } } steps { - sh 'git clean -ff -x -d .' - sh 'git submodule deinit -f .' - sh 'git submodule update --init --recursive' + sh 'make distclean' + sh 'make' //sh 'RUN_PYTEST=1 ./build.sh' - sh './build.sh' + sh 'make distclean' } } } } } + + environment { + CCACHE_DIR = '/tmp/ccache' + CI = true + } + options { + buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30')) + timeout(time: 60, unit: 'MINUTES') + } } diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..abdc537150 --- /dev/null +++ b/Makefile @@ -0,0 +1,101 @@ +############################################################################ +# +# 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 + +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) || (rm -rf $(BUILD_DIR)); fi ++@(cd $(BUILD_DIR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) +endef + + +all: + $(call cmake-build,$@,$(SRC_DIR)) + + +# Cleanup +# -------------------------------------------------------------------- +.PHONY: clean distclean + +clean: + @rm -rf $(SRC_DIR)/build + +distclean: + @git clean -ff -x -d . + + + \ No newline at end of file diff --git a/build.sh b/airdata/CMakeLists.txt old mode 100755 new mode 100644 similarity index 79% rename from build.sh rename to airdata/CMakeLists.txt index ba0eda77db..3e55b4bb73 --- a/build.sh +++ b/airdata/CMakeLists.txt @@ -1,7 +1,6 @@ -#!/bin/sh ############################################################################ # -# Copyright (c) 2015-2016 ECL Development Team. All rights reserved. +# 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 @@ -32,24 +31,9 @@ # ############################################################################ -# Exit on any error. -set -e +add_library(ecl_airdata + WindEstimator.cpp + ) +add_dependencies(ecl_airdata prebuild_targets) -if [ -z ${RUN_PYTEST} ]; -then - # Build EKF shared library. - mkdir Build -p - cd Build - cmake ../EKF - make - cd .. -else - # Build EKF shared library. - mkdir Build -p - cd Build - cmake -DPythonTests=1 ../EKF - make pytest - make pytest-quick - make pytest-plots - cd .. -fi +target_include_directories(ecl_airdata PUBLIC ${ECL_SOURCE_DIR}) \ No newline at end of file diff --git a/airdata/WindEstimator.cpp b/airdata/WindEstimator.cpp index 25736d761d..de8963263d 100644 --- a/airdata/WindEstimator.cpp +++ b/airdata/WindEstimator.cpp @@ -38,7 +38,6 @@ #include "WindEstimator.hpp" - bool WindEstimator::initialise(const matrix::Vector3f &velI, const matrix::Vector2f &velIvar, const float tas_meas) { @@ -321,7 +320,7 @@ WindEstimator::run_sanity_checks() } } - if (!PX4_ISFINITE(_state(w_n)) || !PX4_ISFINITE(_state(w_e)) || !PX4_ISFINITE(_state(tas))) { + if (!ISFINITE(_state(w_n)) || !ISFINITE(_state(w_e)) || !ISFINITE(_state(tas))) { _initialised = false; return; } @@ -353,4 +352,4 @@ WindEstimator::check_if_meas_is_rejected(uint64_t time_now, float innov, float i reinit_filter = time_now - time_meas_rejected > 5 * 1000 * 1000 && time_meas_rejected != 0; return time_meas_rejected != 0; -} \ No newline at end of file +} diff --git a/airdata/WindEstimator.hpp b/airdata/WindEstimator.hpp index 61a1f1b6b4..1c712fb3d4 100644 --- a/airdata/WindEstimator.hpp +++ b/airdata/WindEstimator.hpp @@ -38,6 +38,7 @@ #pragma once +#include #include #include diff --git a/attitude_fw/CMakeLists.txt b/attitude_fw/CMakeLists.txt new file mode 100644 index 0000000000..29dfacb499 --- /dev/null +++ b/attitude_fw/CMakeLists.txt @@ -0,0 +1,43 @@ +############################################################################ +# +# 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_attitude_fw + ecl_controller.cpp + ecl_pitch_controller.cpp + ecl_roll_controller.cpp + ecl_wheel_controller.cpp + ecl_yaw_controller.cpp + ) +add_dependencies(ecl_attitude_fw prebuild_targets) + +target_include_directories(ecl_attitude_fw PUBLIC ${ECL_SOURCE_DIR}) diff --git a/attitude_fw/ecl_controller.cpp b/attitude_fw/ecl_controller.cpp index 7f8a4066f2..ec870f3623 100644 --- a/attitude_fw/ecl_controller.cpp +++ b/attitude_fw/ecl_controller.cpp @@ -133,7 +133,7 @@ float ECL_Controller::constrain_airspeed(float airspeed, float minspeed, float m { float airspeed_result = airspeed; - if (!PX4_ISFINITE(airspeed)) { + if (!ISFINITE(airspeed)) { /* airspeed is NaN, +- INF or not available, pick center of band */ airspeed_result = 0.5f * (minspeed + maxspeed); diff --git a/attitude_fw/ecl_controller.h b/attitude_fw/ecl_controller.h index d6705bd05f..9b08692cac 100644 --- a/attitude_fw/ecl_controller.h +++ b/attitude_fw/ecl_controller.h @@ -48,8 +48,7 @@ #pragma once -#include -#include +#include struct ECL_ControlData { float roll; @@ -73,7 +72,7 @@ struct ECL_ControlData { bool lock_integrator; }; -class __EXPORT ECL_Controller +class ECL_Controller { public: ECL_Controller(const char *name); diff --git a/attitude_fw/ecl_pitch_controller.cpp b/attitude_fw/ecl_pitch_controller.cpp index f15cfc50e2..3760674efc 100644 --- a/attitude_fw/ecl_pitch_controller.cpp +++ b/attitude_fw/ecl_pitch_controller.cpp @@ -40,12 +40,9 @@ #include "ecl_pitch_controller.h" #include -#include #include #include -#include #include -#include ECL_PitchController::ECL_PitchController() : ECL_Controller("pitch"), @@ -58,11 +55,11 @@ float ECL_PitchController::control_attitude(const struct ECL_ControlData &ctl_da { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.pitch_setpoint) && - PX4_ISFINITE(ctl_data.roll) && - PX4_ISFINITE(ctl_data.pitch) && - PX4_ISFINITE(ctl_data.airspeed))) { - warnx("not controlling pitch"); + if (!(ISFINITE(ctl_data.pitch_setpoint) && + ISFINITE(ctl_data.roll) && + ISFINITE(ctl_data.pitch) && + ISFINITE(ctl_data.airspeed))) { + ECL_WARN("not controlling pitch"); return _rate_setpoint; } @@ -78,14 +75,14 @@ float ECL_PitchController::control_attitude(const struct ECL_ControlData &ctl_da float ECL_PitchController::control_bodyrate(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.roll) && - PX4_ISFINITE(ctl_data.pitch) && - PX4_ISFINITE(ctl_data.body_y_rate) && - PX4_ISFINITE(ctl_data.body_z_rate) && - PX4_ISFINITE(ctl_data.yaw_rate_setpoint) && - PX4_ISFINITE(ctl_data.airspeed_min) && - PX4_ISFINITE(ctl_data.airspeed_max) && - PX4_ISFINITE(ctl_data.scaler))) { + if (!(ISFINITE(ctl_data.roll) && + ISFINITE(ctl_data.pitch) && + ISFINITE(ctl_data.body_y_rate) && + ISFINITE(ctl_data.body_z_rate) && + ISFINITE(ctl_data.yaw_rate_setpoint) && + ISFINITE(ctl_data.airspeed_min) && + ISFINITE(ctl_data.airspeed_max) && + ISFINITE(ctl_data.scaler))) { return math::constrain(_last_output, -1.0f, 1.0f); } diff --git a/attitude_fw/ecl_pitch_controller.h b/attitude_fw/ecl_pitch_controller.h index 249d08e4d5..632072e8a4 100644 --- a/attitude_fw/ecl_pitch_controller.h +++ b/attitude_fw/ecl_pitch_controller.h @@ -49,13 +49,11 @@ #ifndef ECL_PITCH_CONTROLLER_H #define ECL_PITCH_CONTROLLER_H -#include -#include #include #include "ecl_controller.h" -class __EXPORT ECL_PitchController : +class ECL_PitchController : public ECL_Controller { public: diff --git a/attitude_fw/ecl_roll_controller.cpp b/attitude_fw/ecl_roll_controller.cpp index 128dedc193..dd2d2a9c5c 100644 --- a/attitude_fw/ecl_roll_controller.cpp +++ b/attitude_fw/ecl_roll_controller.cpp @@ -38,14 +38,10 @@ * Authors and acknowledgements in header. */ -#include #include "ecl_roll_controller.h" -#include #include #include -#include #include -#include ECL_RollController::ECL_RollController() : ECL_Controller("roll") @@ -55,7 +51,7 @@ ECL_RollController::ECL_RollController() : float ECL_RollController::control_attitude(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.roll_setpoint) && PX4_ISFINITE(ctl_data.roll))) { + if (!(ISFINITE(ctl_data.roll_setpoint) && ISFINITE(ctl_data.roll))) { return _rate_setpoint; } @@ -71,13 +67,13 @@ float ECL_RollController::control_attitude(const struct ECL_ControlData &ctl_dat float ECL_RollController::control_bodyrate(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.pitch) && - PX4_ISFINITE(ctl_data.body_x_rate) && - PX4_ISFINITE(ctl_data.body_z_rate) && - PX4_ISFINITE(ctl_data.yaw_rate_setpoint) && - PX4_ISFINITE(ctl_data.airspeed_min) && - PX4_ISFINITE(ctl_data.airspeed_max) && - PX4_ISFINITE(ctl_data.scaler))) { + if (!(ISFINITE(ctl_data.pitch) && + ISFINITE(ctl_data.body_x_rate) && + ISFINITE(ctl_data.body_z_rate) && + ISFINITE(ctl_data.yaw_rate_setpoint) && + ISFINITE(ctl_data.airspeed_min) && + ISFINITE(ctl_data.airspeed_max) && + ISFINITE(ctl_data.scaler))) { return math::constrain(_last_output, -1.0f, 1.0f); } diff --git a/attitude_fw/ecl_roll_controller.h b/attitude_fw/ecl_roll_controller.h index cb127ef029..95c01b3c15 100644 --- a/attitude_fw/ecl_roll_controller.h +++ b/attitude_fw/ecl_roll_controller.h @@ -49,12 +49,9 @@ #ifndef ECL_ROLL_CONTROLLER_H #define ECL_ROLL_CONTROLLER_H -#include -#include - #include "ecl_controller.h" -class __EXPORT ECL_RollController : +class ECL_RollController : public ECL_Controller { public: diff --git a/attitude_fw/ecl_wheel_controller.cpp b/attitude_fw/ecl_wheel_controller.cpp index a488d324da..58f6e95e2f 100644 --- a/attitude_fw/ecl_wheel_controller.cpp +++ b/attitude_fw/ecl_wheel_controller.cpp @@ -39,13 +39,9 @@ */ #include "ecl_wheel_controller.h" -#include #include #include -#include #include -#include -#include ECL_WheelController::ECL_WheelController() : ECL_Controller("wheel") @@ -55,9 +51,9 @@ ECL_WheelController::ECL_WheelController() : float ECL_WheelController::control_bodyrate(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.body_z_rate) && - PX4_ISFINITE(ctl_data.groundspeed) && - PX4_ISFINITE(ctl_data.groundspeed_scaler))) { + if (!(ISFINITE(ctl_data.body_z_rate) && + ISFINITE(ctl_data.groundspeed) && + ISFINITE(ctl_data.groundspeed_scaler))) { return math::constrain(_last_output, -1.0f, 1.0f); } @@ -110,8 +106,8 @@ float ECL_WheelController::control_bodyrate(const struct ECL_ControlData &ctl_da float ECL_WheelController::control_attitude(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.yaw_setpoint) && - PX4_ISFINITE(ctl_data.yaw))) { + if (!(ISFINITE(ctl_data.yaw_setpoint) && + ISFINITE(ctl_data.yaw))) { return _rate_setpoint; } diff --git a/attitude_fw/ecl_wheel_controller.h b/attitude_fw/ecl_wheel_controller.h index 1c84aa1399..26554bb7f3 100644 --- a/attitude_fw/ecl_wheel_controller.h +++ b/attitude_fw/ecl_wheel_controller.h @@ -49,12 +49,9 @@ #ifndef ECL_HEADING_CONTROLLER_H #define ECL_HEADING_CONTROLLER_H -#include -#include - #include "ecl_controller.h" -class __EXPORT ECL_WheelController : +class ECL_WheelController : public ECL_Controller { public: diff --git a/attitude_fw/ecl_yaw_controller.cpp b/attitude_fw/ecl_yaw_controller.cpp index f3a638d1e5..7c8bc83557 100644 --- a/attitude_fw/ecl_yaw_controller.cpp +++ b/attitude_fw/ecl_yaw_controller.cpp @@ -39,13 +39,9 @@ */ #include "ecl_yaw_controller.h" -#include #include #include -#include #include -#include -#include ECL_YawController::ECL_YawController() : ECL_Controller("yaw"), @@ -65,10 +61,10 @@ float ECL_YawController::control_attitude(const struct ECL_ControlData &ctl_data return control_attitude_impl_accclosedloop(ctl_data); default: - static hrt_abstime last_print = 0; + static ecl_abstime last_print = 0; if (ecl_elapsed_time(&last_print) > 5e6) { - warnx("invalid param setting FW_YCO_METHOD"); + ECL_WARN("invalid param setting FW_YCO_METHOD"); last_print = ecl_absolute_time(); } } @@ -79,10 +75,10 @@ float ECL_YawController::control_attitude(const struct ECL_ControlData &ctl_data float ECL_YawController::control_attitude_impl_openloop(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.roll) && - PX4_ISFINITE(ctl_data.pitch) && - PX4_ISFINITE(ctl_data.roll_rate_setpoint) && - PX4_ISFINITE(ctl_data.pitch_rate_setpoint))) { + if (!(ISFINITE(ctl_data.roll) && + ISFINITE(ctl_data.pitch) && + ISFINITE(ctl_data.roll_rate_setpoint) && + ISFINITE(ctl_data.pitch_rate_setpoint))) { return _rate_setpoint; } @@ -118,8 +114,8 @@ float ECL_YawController::control_attitude_impl_openloop(const struct ECL_Control ctl_data.airspeed_min : ctl_data.airspeed); } - if (!PX4_ISFINITE(_rate_setpoint)) { - warnx("yaw rate sepoint not finite"); + if (!ISFINITE(_rate_setpoint)) { + ECL_WARN("yaw rate sepoint not finite"); _rate_setpoint = 0.0f; } @@ -129,10 +125,10 @@ float ECL_YawController::control_attitude_impl_openloop(const struct ECL_Control float ECL_YawController::control_bodyrate(const struct ECL_ControlData &ctl_data) { /* Do not calculate control signal with bad inputs */ - if (!(PX4_ISFINITE(ctl_data.roll) && PX4_ISFINITE(ctl_data.pitch) && PX4_ISFINITE(ctl_data.body_y_rate) && - PX4_ISFINITE(ctl_data.body_z_rate) && PX4_ISFINITE(ctl_data.pitch_rate_setpoint) && - PX4_ISFINITE(ctl_data.airspeed_min) && PX4_ISFINITE(ctl_data.airspeed_max) && - PX4_ISFINITE(ctl_data.scaler))) { + if (!(ISFINITE(ctl_data.roll) && ISFINITE(ctl_data.pitch) && ISFINITE(ctl_data.body_y_rate) && + ISFINITE(ctl_data.body_z_rate) && ISFINITE(ctl_data.pitch_rate_setpoint) && + ISFINITE(ctl_data.airspeed_min) && ISFINITE(ctl_data.airspeed_max) && + ISFINITE(ctl_data.scaler))) { return math::constrain(_last_output, -1.0f, 1.0f); } @@ -151,7 +147,7 @@ float ECL_YawController::control_bodyrate(const struct ECL_ControlData &ctl_data /* input conditioning */ float airspeed = ctl_data.airspeed; - if (!PX4_ISFINITE(airspeed)) { + if (!ISFINITE(airspeed)) { /* airspeed is NaN, +- INF or not available, pick center of band */ airspeed = 0.5f * (ctl_data.airspeed_min + ctl_data.airspeed_max); diff --git a/attitude_fw/ecl_yaw_controller.h b/attitude_fw/ecl_yaw_controller.h index ef23274b7d..15549a9977 100644 --- a/attitude_fw/ecl_yaw_controller.h +++ b/attitude_fw/ecl_yaw_controller.h @@ -48,12 +48,9 @@ #ifndef ECL_YAW_CONTROLLER_H #define ECL_YAW_CONTROLLER_H -#include -#include - #include "ecl_controller.h" -class __EXPORT ECL_YawController : +class ECL_YawController : public ECL_Controller { public: diff --git a/ecl.h b/ecl.h index 0f87d43392..fe2b921753 100644 --- a/ecl.h +++ b/ecl.h @@ -45,30 +45,41 @@ #define ecl_absolute_time hrt_absolute_time #define ecl_elapsed_time hrt_elapsed_time +using ecl_abstime = hrt_abstime; + #define ECL_INFO PX4_INFO #define ECL_WARN PX4_WARN #define ECL_ERR PX4_ERR #else +#include +#include + #define ecl_absolute_time() (0) -#define ecl_elapsed_time (0) +#define ecl_elapsed_time(t) (*t * 0UL) // TODO: add simple time functions + +using ecl_abstime = uint64_t; + #define ECL_INFO printf #define ECL_WARN printf #define ECL_ERR printf -#endif +#endif /* PX4_POSIX || PX4_NUTTX */ + + +#if defined(__PX4_QURT) + +// Missing math.h defines +#define ISFINITE(x) __builtin_isfinite(x) + +#else /* !QuRT */ -#ifndef __PX4_QURT -#if defined(__cplusplus) && !defined(__PX4_NUTTX) #include +#if defined(__cplusplus) && !defined(__PX4_NUTTX) #define ISFINITE(x) std::isfinite(x) #else #define ISFINITE(x) isfinite(x) #endif -#endif -#if defined(__PX4_QURT) -// Missing math.h defines -#define ISFINITE(x) __builtin_isfinite(x) #endif diff --git a/geo/CMakeLists.txt b/geo/CMakeLists.txt new file mode 100644 index 0000000000..1d3a6c3551 --- /dev/null +++ b/geo/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_geo + geo.cpp + ) +add_dependencies(ecl_geo prebuild_targets) + +target_include_directories(ecl_geo PUBLIC ${ECL_SOURCE_DIR}) diff --git a/geo_lookup/CMakeLists.txt b/geo_lookup/CMakeLists.txt new file mode 100644 index 0000000000..acfdf58196 --- /dev/null +++ b/geo_lookup/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_geo_lookup + geo_mag_declination.cpp + ) +add_dependencies(ecl_geo_lookup prebuild_targets) + +target_include_directories(ecl_geo_lookup PUBLIC ${ECL_SOURCE_DIR}) diff --git a/geo_lookup/geo_mag_declination.cpp b/geo_lookup/geo_mag_declination.cpp index 28b76ddef3..6f75438d27 100644 --- a/geo_lookup/geo_mag_declination.cpp +++ b/geo_lookup/geo_mag_declination.cpp @@ -32,7 +32,7 @@ ****************************************************************************/ /** -* @file geo_mag_declination.c +* @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 diff --git a/l1/CMakeLists.txt b/l1/CMakeLists.txt new file mode 100644 index 0000000000..127842b80c --- /dev/null +++ b/l1/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_l1 + ecl_l1_pos_controller.cpp + ) +add_dependencies(ecl_l1 prebuild_targets) + +target_include_directories(ecl_l1 PUBLIC ${ECL_SOURCE_DIR}) +target_link_libraries(ecl_l1 PRIVATE ecl_geo) diff --git a/l1/ecl_l1_pos_controller.h b/l1/ecl_l1_pos_controller.h index e9df28e5dc..dd26a39150 100644 --- a/l1/ecl_l1_pos_controller.h +++ b/l1/ecl_l1_pos_controller.h @@ -63,12 +63,12 @@ #include #include #include -#include +#include /** * L1 Nonlinear Guidance Logic */ -class __EXPORT ECL_L1_Pos_Controller +class ECL_L1_Pos_Controller { public: /** diff --git a/mathlib/CMakeLists.txt b/mathlib/CMakeLists.txt new file mode 100644 index 0000000000..5fbb4846b8 --- /dev/null +++ b/mathlib/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(mathlib + mathlib.cpp + ) +add_dependencies(mathlib prebuild_targets) + +target_include_directories(mathlib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/mathlib/mathlib.cpp b/mathlib/mathlib.cpp index c72b959730..69aee15ffc 100644 --- a/mathlib/mathlib.cpp +++ b/mathlib/mathlib.cpp @@ -40,8 +40,7 @@ */ #include "mathlib.h" -#ifdef POSIX_SHARED - +#ifdef ECL_STANDALONE namespace math { @@ -71,6 +70,6 @@ float degrees(float radians) return (radians * 180.0f) / M_PI_F; } -} +} // namespace math -#endif \ No newline at end of file +#endif /* ECL_STANDALONE */ diff --git a/mathlib/mathlib.h b/mathlib/mathlib.h index 4656e874c1..c8d0d7677a 100644 --- a/mathlib/mathlib.h +++ b/mathlib/mathlib.h @@ -40,9 +40,9 @@ */ #ifndef MATHLIB_H #define MATHLIB_H -#ifdef POSIX_SHARED -// #include -// #include + +#ifdef ECL_STANDALONE + #ifndef M_PI_F #define M_PI_F 3.14159265358979323846f #endif @@ -67,6 +67,8 @@ float degrees(float radians); } #else + #include -#endif //POSIX_SHARED + +#endif //ECL_STANDALONE #endif //MATHLIB_H diff --git a/matrix b/matrix deleted file mode 160000 index e595ebb9a7..0000000000 --- a/matrix +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e595ebb9a704c24aeae990dac768d26949fcaee0 diff --git a/tecs/CMakeLists.txt b/tecs/CMakeLists.txt new file mode 100644 index 0000000000..35d5543d1f --- /dev/null +++ b/tecs/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_tecs + tecs.cpp + ) +add_dependencies(ecl_tecs prebuild_targets) + +target_include_directories(ecl_tecs PUBLIC ${ECL_SOURCE_DIR}) diff --git a/tecs/tecs.cpp b/tecs/tecs.cpp index b5f8597942..95a564446f 100644 --- a/tecs/tecs.cpp +++ b/tecs/tecs.cpp @@ -33,7 +33,7 @@ #include "tecs.h" -#include +#include #include using math::constrain; diff --git a/tecs/tecs.h b/tecs/tecs.h index e3d7283d7a..bdd7ecefa2 100644 --- a/tecs/tecs.h +++ b/tecs/tecs.h @@ -42,7 +42,7 @@ #include #include -class __EXPORT TECS +class TECS { public: TECS() = default; diff --git a/validation/CMakeLists.txt b/validation/CMakeLists.txt new file mode 100644 index 0000000000..d9c028b516 --- /dev/null +++ b/validation/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_validation + data_validator.cpp + data_validator_group.cpp + ) +add_dependencies(ecl_validation prebuild_targets) + +target_include_directories(ecl_validation PUBLIC ${ECL_SOURCE_DIR}) diff --git a/validation/data_validator.cpp b/validation/data_validator.cpp index 0fe4dbc8fe..eb56260262 100644 --- a/validation/data_validator.cpp +++ b/validation/data_validator.cpp @@ -40,7 +40,7 @@ */ #include "data_validator.h" -#include +#include DataValidator::DataValidator() : _error_mask(ERROR_FLAG_NO_ERROR), @@ -172,6 +172,6 @@ DataValidator::print() for (unsigned i = 0; i < dimensions; i++) { ECL_INFO("\tval: %8.4f, lp: %8.4f mean dev: %8.4f RMS: %8.4f conf: %8.4f", (double) _value[i], (double)_lp[i], (double)_mean[i], - (double)_rms[i], (double)confidence(hrt_absolute_time())); + (double)_rms[i], (double)confidence(ecl_absolute_time())); } } diff --git a/validation/data_validator.h b/validation/data_validator.h index b7aad66ec2..6afd49b486 100644 --- a/validation/data_validator.h +++ b/validation/data_validator.h @@ -44,7 +44,7 @@ #include #include -class __EXPORT DataValidator { +class DataValidator { public: static const unsigned dimensions = 3; diff --git a/validation/data_validator_group.cpp b/validation/data_validator_group.cpp index 4f6fcd0dcf..d84db5d56a 100644 --- a/validation/data_validator_group.cpp +++ b/validation/data_validator_group.cpp @@ -40,7 +40,7 @@ */ #include "data_validator_group.h" -#include +#include #include DataValidatorGroup::DataValidatorGroup(unsigned siblings) : diff --git a/validation/data_validator_group.h b/validation/data_validator_group.h index 4ffebda7be..b6b387ab3a 100644 --- a/validation/data_validator_group.h +++ b/validation/data_validator_group.h @@ -43,7 +43,7 @@ #include "data_validator.h" -class __EXPORT DataValidatorGroup { +class DataValidatorGroup { public: /** * @param siblings initial number of DataValidator's. Must be > 0.