mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-29 03:36:07 +08:00
enable gyro_calibration for CAN nodes
- allow saving initial gyro cal if very close to 0
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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++;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user