diff --git a/flix/estimate.ino b/flix/estimate.ino index a873b9a..e07bd07 100644 --- a/flix/estimate.ino +++ b/flix/estimate.ino @@ -1,7 +1,7 @@ // Copyright (c) 2023 Oleg Kalachev // Repository: https://github.com/okalachev/flix -// Attitude estimation from gyro and accelerometer +// Attitude estimation using gyro and accelerometer #include "quaternion.h" #include "vector.h" diff --git a/flix/flix.ino b/flix/flix.ino index 5d5ee43..422b818 100644 --- a/flix/flix.ino +++ b/flix/flix.ino @@ -21,8 +21,8 @@ void setup() { disableBrownOut(); setupParameters(); setupLED(); - setupMotors(); setLED(true); + setupMotors(); setupWiFi(); setupIMU(); setupRC(); diff --git a/flix/mavlink.ino b/flix/mavlink.ino index c7b3785..2df74d6 100644 --- a/flix/mavlink.ino +++ b/flix/mavlink.ino @@ -8,12 +8,13 @@ extern float controlTime; -bool mavlinkConnected = false; -String mavlinkPrintBuffer; int mavlinkSysId = 1; Rate telemetryFast(10); Rate telemetrySlow(2); +bool mavlinkConnected = false; +String mavlinkPrintBuffer; + void processMavlink() { sendMavlink(); receiveMavlink(); @@ -41,9 +42,9 @@ void sendMavlink() { } if (telemetryFast && mavlinkConnected) { - const float zeroQuat[] = {0, 0, 0, 0}; + const float offset[] = {0, 0, 0, 0}; mavlink_msg_attitude_quaternion_pack(mavlinkSysId, MAV_COMP_ID_AUTOPILOT1, &msg, - time, attitude.w, attitude.x, -attitude.y, -attitude.z, rates.x, -rates.y, -rates.z, zeroQuat); // convert to frd + time, attitude.w, attitude.x, -attitude.y, -attitude.z, rates.x, -rates.y, -rates.z, offset); // convert to frd sendMessage(&msg); mavlink_msg_rc_channels_raw_pack(mavlinkSysId, MAV_COMP_ID_AUTOPILOT1, &msg, controlTime * 1000, 0, diff --git a/flix/parameters.ino b/flix/parameters.ino index a8a83f9..dc924a4 100644 --- a/flix/parameters.ino +++ b/flix/parameters.ino @@ -15,9 +15,9 @@ extern float rcLossTimeout, descendTime; Preferences storage; struct Parameter { - const char *name; // max length is 15 (Preferences key limit) + const char *name; // max length is 15 bool integer; - union { float *f; int *i; }; // pointer to variable + union { float *f; int *i; }; // pointer to the variable float cache; // what's stored in flash Parameter(const char *name, float *variable) : name(name), integer(false), f(variable) {}; Parameter(const char *name, int *variable) : name(name), integer(true), i(variable) {}; @@ -112,6 +112,7 @@ Parameter parameters[] = { }; void setupParameters() { + print("Setup parameters\n"); storage.begin("flix", false); // Read parameters from storage for (auto ¶meter : parameters) {