mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-23 16:53:35 +08:00
manual_yaw: compensate for yaw estimate convergence
When the yaw estimate is converging, the controller makes the drone yaw in order to follow the current setpoint. This is unintuitive for the pilot and it is preferable if the drone continues to fly towards the same physical direction.
This commit is contained in:
committed by
Mathieu Bresciani
parent
0aa4afdbce
commit
23b31cc5fd
@@ -64,6 +64,7 @@ bool FlightTaskManualAltitude::activate(const trajectory_setpoint_s &last_setpoi
|
||||
_acceleration_setpoint = Vector3f(0.f, 0.f, NAN); // altitude is controlled from position/velocity
|
||||
_position_setpoint(2) = _position(2);
|
||||
_velocity_setpoint(2) = 0.f;
|
||||
_stick_yaw.reset(_yaw, _unaided_yaw);
|
||||
_setDefaultConstraints();
|
||||
|
||||
_updateConstraintsFromEstimator();
|
||||
@@ -273,14 +274,15 @@ void FlightTaskManualAltitude::_ekfResetHandlerHeading(float delta_psi)
|
||||
{
|
||||
// Only reset the yaw setpoint when the heading is locked
|
||||
if (PX4_ISFINITE(_yaw_setpoint)) {
|
||||
_yaw_setpoint += delta_psi;
|
||||
_yaw_setpoint = wrap_pi(_yaw_setpoint + delta_psi);
|
||||
}
|
||||
|
||||
_stick_yaw.ekfResetHandler(delta_psi);
|
||||
}
|
||||
|
||||
void FlightTaskManualAltitude::_updateSetpoints()
|
||||
{
|
||||
_stick_yaw.generateYawSetpoint(_yawspeed_setpoint, _yaw_setpoint, _sticks.getYawExpo(), _yaw,
|
||||
_is_yaw_good_for_control, _deltatime);
|
||||
_stick_yaw.generateYawSetpoint(_yawspeed_setpoint, _yaw_setpoint, _sticks.getYawExpo(), _yaw, _deltatime, _unaided_yaw);
|
||||
_acceleration_setpoint.xy() = _stick_tilt_xy.generateAccelerationSetpoints(_sticks.getPitchRoll(), _deltatime, _yaw,
|
||||
_yaw_setpoint);
|
||||
_updateAltitudeLock();
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "FlightTask.hpp"
|
||||
#include <lib/mathlib/math/filter/AlphaFilter.hpp>
|
||||
#include "Sticks.hpp"
|
||||
#include "StickTiltXY.hpp"
|
||||
#include "StickYaw.hpp"
|
||||
@@ -115,6 +114,8 @@ private:
|
||||
|
||||
void setGearAccordingToSwitch();
|
||||
|
||||
bool _updateYawCorrection();
|
||||
|
||||
uint8_t _reset_counter = 0; /**< counter for estimator resets in z-direction */
|
||||
bool _terrain_follow{false}; /**< true when the vehicle is following the terrain height */
|
||||
bool _terrain_hold{false}; /**< true when vehicle is controlling height above a static ground position */
|
||||
|
||||
Reference in New Issue
Block a user