enable gyro_calibration for CAN nodes

- allow saving initial gyro cal if very close to 0
This commit is contained in:
Daniel Agar
2022-06-17 15:12:27 -04:00
parent db4e09d529
commit 10deb7019e
7 changed files with 24 additions and 6 deletions
+8 -1
View File
@@ -86,10 +86,17 @@ unset BOARD_RC_SENSORS
. ${R}etc/init.d/rc.serial . ${R}etc/init.d/rc.serial
# Check for flow sensor # Check for flow sensor
if param compare SENS_EN_PX4FLOW 1 if param compare -s SENS_EN_PX4FLOW 1
then then
px4flow start -X & px4flow start -X &
fi fi
if param compare -s IMU_GYRO_CAL_EN 1
then
gyro_calibration start
fi
sensors start
uavcannode start uavcannode start
unset R unset R
+8
View File
@@ -2,6 +2,7 @@ CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
CONFIG_BOARD_ARCHITECTURE="cortex-m4" CONFIG_BOARD_ARCHITECTURE="cortex-m4"
CONFIG_BOARD_ROMFSROOT="cannode" CONFIG_BOARD_ROMFSROOT="cannode"
CONFIG_BOARD_CONSTRAINED_FLASH=y CONFIG_BOARD_CONSTRAINED_FLASH=y
CONFIG_BOARD_NO_HELP=y
CONFIG_BOARD_CONSTRAINED_MEMORY=y CONFIG_BOARD_CONSTRAINED_MEMORY=y
CONFIG_DRIVERS_BOOTLOADERS=y CONFIG_DRIVERS_BOOTLOADERS=y
CONFIG_DRIVERS_DISTANCE_SENSOR_BROADCOM_AFBRS50=y CONFIG_DRIVERS_DISTANCE_SENSOR_BROADCOM_AFBRS50=y
@@ -10,7 +11,14 @@ CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
CONFIG_DRIVERS_OPTICAL_FLOW_PAW3902=y CONFIG_DRIVERS_OPTICAL_FLOW_PAW3902=y
CONFIG_BOARD_UAVCAN_INTERFACES=1 CONFIG_BOARD_UAVCAN_INTERFACES=1
CONFIG_DRIVERS_UAVCANNODE=y CONFIG_DRIVERS_UAVCANNODE=y
CONFIG_MODULES_GYRO_CALIBRATION=y
CONFIG_MODULES_SENSORS=y
# CONFIG_SENSORS_VEHICLE_AIR_DATA is not set
# CONFIG_SENSORS_VEHICLE_GPS_POSITION is not set
# CONFIG_SENSORS_VEHICLE_MAGNETOMETER is not set
CONFIG_SYSTEMCMDS_PARAM=y CONFIG_SYSTEMCMDS_PARAM=y
CONFIG_SYSTEMCMDS_PERF=y CONFIG_SYSTEMCMDS_PERF=y
CONFIG_SYSTEMCMDS_TOP=y CONFIG_SYSTEMCMDS_TOP=y
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y
CONFIG_SYSTEMCMDS_UORB=y
CONFIG_SYSTEMCMDS_WORK_QUEUE=y
@@ -3,6 +3,8 @@
# board sensors init # board sensors init
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
param set-default IMU_GYRO_RATEMAX 1000
# Internal SPI # Internal SPI
paw3902 -s start -Y 180 paw3902 -s start -Y 180
+1 -1
View File
@@ -110,7 +110,7 @@ void Gyroscope::SensorCorrectionsUpdate(bool force)
bool Gyroscope::set_offset(const Vector3f &offset) bool Gyroscope::set_offset(const Vector3f &offset)
{ {
if (Vector3f(_offset - offset).longerThan(0.01f)) { if (Vector3f(_offset - offset).longerThan(0.01f) || (_calibration_count == 0)) {
if (PX4_ISFINITE(offset(0)) && PX4_ISFINITE(offset(1)) && PX4_ISFINITE(offset(2))) { if (PX4_ISFINITE(offset(0)) && PX4_ISFINITE(offset(1)) && PX4_ISFINITE(offset(2))) {
_offset = offset; _offset = offset;
_calibration_count++; _calibration_count++;
+2 -1
View File
@@ -1,6 +1,6 @@
############################################################################ ############################################################################
# #
# Copyright (c) 2021 PX4 Development Team. All rights reserved. # Copyright (c) 2021-2022 PX4 Development Team. All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions # modification, are permitted provided that the following conditions
@@ -41,4 +41,5 @@ px4_add_module(
GyroCalibration.hpp GyroCalibration.hpp
DEPENDS DEPENDS
px4_work_queue px4_work_queue
sensor_calibration
) )
@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
* *
* Copyright (c) 2021 PX4 Development Team. All rights reserved. * Copyright (c) 2021-2022 PX4 Development Team. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@@ -245,7 +245,7 @@ void GyroCalibration::Run()
const Vector3f old_offset{_gyro_calibration[gyro].offset()}; const Vector3f old_offset{_gyro_calibration[gyro].offset()};
if (_gyro_calibration[gyro].set_offset(_gyro_mean[gyro].mean())) { if (_gyro_calibration[gyro].set_offset(_gyro_mean[gyro].mean()) || !_gyro_calibration[gyro].calibrated()) {
calibration_updated = true; calibration_updated = true;
@@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
* *
* Copyright (c) 2021 PX4 Development Team. All rights reserved. * Copyright (c) 2021-2022 PX4 Development Team. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions