Prep to distrubte the magic numbers assgined in parameters.cpp
to the board_config.h
common/board_common.h will define:
1) BOARD_BATTERY[1|2]_V_DIV as 0.0f if not defined to ensure
the missing default trips a low voltage lockdown
2) BOARD_BATTERY[1|2]_A_PER_V as 0.0f if not defined to ensure
the default leads to an unrealistic current value.
The gpio leg can use either the FMU GPIO_SERVO (Aux Pins)
or the FMUv1 style IO pins.
We define either LED_ON_SERVO_GPIO or LED_ON_EXT_GPIO_AND_PIO
based on if the board_config provides GPIO_SERVO_1 or
GPIO_EXT_1.
For LED_ON_SERVO_GPIO we further define GPIO_MIN_SERVO_PIN and
the GPIO_MAX_SERVO_PIN based on the highest GPIO_SERVO_x provided
by the board_config
When base the ability to use the PX4PIO not in the existance of
the path but on the define BOARD_USES_PX4PIO
- reduces some code duplication
- provides clear API & separation for temp compensation
additional changes:
- added timestamp to sensor_correction topic
- reduced its publication rate, to only when voting index or scales or
offsets change (if there is more than 1deg change in temperature)
Sync the attitude controller to the raw gyro data to remove the latency in the rate loops caused by the sensor and estimator modules.
Attitude data latency will increase as it will be from the previous EKF update, however attitude loops are less latency sensitive.
Thermal compensation and bias data will be from the previous frame.
Enabled using TC_A_ENABLE and TC_G_ENABLE parameters
Disabled by default.
IMU offsets and scale factors for selected sensor published to sensor_correction topic
TODO Parameter storage method is cumbersome
until now the desired thrust was simply the absolute value of the thrust setpoint vector
but a multicopter is only capable of producing thrust in its (negative) body z axis
this leads to excess thrust during attitude tracking errors
one important use case is:
trying to land with minimal thrust in NED z axis against gravity
but the position controller still correcting some small horizontal estimation errors
then this prevents unwanted thrust in a completely wrong direction
the velocity controller was misusing the integral part to account for the constant gravitational force offset
the hover throttle from the parameter is now is now directly used as feed forward for the thrust in world z direction
the integrator compensates for inaccurate paarameter but should now be idealy zero