Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic Sfusion #363

Open
wants to merge 103 commits into
base: main
Choose a base branch
from
Open

Dynamic Sfusion #363

wants to merge 103 commits into from

Conversation

gorbit99
Copy link
Contributor

@gorbit99 gorbit99 commented Nov 12, 2024

This PR makes the following changes:

  1. IMU Support: adds support for icm45686, icm45605, and lsm6ds3 (non tr-c version)
  2. Adds nonblocking calibration
    • The tracker detects when it's at rest and calibrates itself
    • The calibration is then used the next time the tracker starts up
    • This replaces manual calibration and is set as the default
  3. Adds per sensor VQF parameters, so each IMU can be fine tuned
  4. Enables VQF's MBE feature by default, and modifies VQF to be somewhat temperature aware
  5. Adds the DELCAL serial command to only delete the IMU calibration without having to delete WIFI data
  6. Adds 32 bit sensor sample support into sfusion
  7. Overclocks the ESP, so no fifo overruns happen

kounocom and others added 30 commits July 14, 2024 03:02
@Eirenliel Eirenliel requested a review from ImUrX November 12, 2024 21:27
Copy link
Member

@Eirenliel Eirenliel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not finished yet...

platformio-tools.ini Outdated Show resolved Hide resolved
platformio-tools.ini Outdated Show resolved Hide resolved
src/debug.h Outdated Show resolved Hide resolved
float zroChangeOverTemperature = 0;

void handleTemperatureMeasurement(float temperature, float timeStep) {
#if USE_NONBLOCKING_CALIBRATION
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No C define blocks in softfusion core please :<
Should be separated as different (replaceable) calibration implementation, or at least separated in less spaghetti way :<

#include "../SensorFusionRestDetect.h"
#include "../nonblockingcalibration/NonBlockingCalibration.h"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is subjective but I'm not the fan of "nonblocking" name for that. I think something like "auto" or "self-learning" is more descriptive for what it is.

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not related strictly to the code, I would like to have some description (in PR I guess) about how that autocalibration works (both gyro and especially accel).


// Temperature stability constant - how many degrees of temperature for the bias to
// change by 0.01 Though I don't know if it should be 0.1 or 0.01, this is a guess
// and seems to work better than 0.1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's neither 0.01 nor 0.1 for any sensor.

src/sensors/sensor.h Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants