mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-21 07:33:33 +08:00
fw pos/att ctrl: pass manual nose wheel increments during takeoff ground roll
This commit is contained in:
committed by
Daniel Agar
parent
fcee314646
commit
721131a135
@@ -556,6 +556,9 @@ void FixedwingAttitudeControl::Run()
|
|||||||
if (wheel_control) {
|
if (wheel_control) {
|
||||||
yaw_u = _wheel_ctrl.control_bodyrate(dt, control_input);
|
yaw_u = _wheel_ctrl.control_bodyrate(dt, control_input);
|
||||||
|
|
||||||
|
// XXX: this is an abuse -- used to ferry manual yaw inputs from position controller during auto modes
|
||||||
|
yaw_u += _att_sp.yaw_sp_move_rate * _param_fw_man_y_sc.get();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
yaw_u = _yaw_ctrl.control_euler_rate(dt, control_input, bodyrate_ff(2));
|
yaw_u = _yaw_ctrl.control_euler_rate(dt, control_input, bodyrate_ff(2));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1424,6 +1424,11 @@ FixedwingPositionControl::control_auto_takeoff(const hrt_abstime &now, const flo
|
|||||||
// yaw control is disabled once in "taking off" state
|
// yaw control is disabled once in "taking off" state
|
||||||
_att_sp.fw_control_yaw = _runway_takeoff.controlYaw();
|
_att_sp.fw_control_yaw = _runway_takeoff.controlYaw();
|
||||||
|
|
||||||
|
// XXX: hacky way to pass through manual nose-wheel incrementing. need to clean this interface.
|
||||||
|
if (_param_rwto_nudge.get()) {
|
||||||
|
_att_sp.yaw_sp_move_rate = _manual_control_setpoint.r;
|
||||||
|
}
|
||||||
|
|
||||||
// tune up the lateral position control guidance when on the ground
|
// tune up the lateral position control guidance when on the ground
|
||||||
if (_att_sp.fw_control_yaw) {
|
if (_att_sp.fw_control_yaw) {
|
||||||
_npfg.setPeriod(_param_rwto_l1_period.get());
|
_npfg.setPeriod(_param_rwto_l1_period.get());
|
||||||
@@ -2359,6 +2364,9 @@ FixedwingPositionControl::Run()
|
|||||||
// by default we don't want yaw to be contoller directly with rudder
|
// by default we don't want yaw to be contoller directly with rudder
|
||||||
_att_sp.fw_control_yaw = false;
|
_att_sp.fw_control_yaw = false;
|
||||||
|
|
||||||
|
// default to zero - is used (IN A HACKY WAY) to pass direct nose wheel steering via yaw stick to the actuators during auto takeoff
|
||||||
|
_att_sp.yaw_sp_move_rate = 0.0f;
|
||||||
|
|
||||||
if (_control_mode_current != FW_POSCTRL_MODE_AUTO_LANDING) {
|
if (_control_mode_current != FW_POSCTRL_MODE_AUTO_LANDING) {
|
||||||
reset_landing_state();
|
reset_landing_state();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -765,7 +765,8 @@ private:
|
|||||||
(ParamFloat<px4::params::FW_WING_SPAN>) _param_fw_wing_span,
|
(ParamFloat<px4::params::FW_WING_SPAN>) _param_fw_wing_span,
|
||||||
(ParamFloat<px4::params::FW_WING_HEIGHT>) _param_fw_wing_height,
|
(ParamFloat<px4::params::FW_WING_HEIGHT>) _param_fw_wing_height,
|
||||||
|
|
||||||
(ParamFloat<px4::params::RWTO_L1_PERIOD>) _param_rwto_l1_period
|
(ParamFloat<px4::params::RWTO_L1_PERIOD>) _param_rwto_l1_period,
|
||||||
|
(ParamBool<px4::params::RWTO_NUDGE>) _param_rwto_nudge
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -144,3 +144,11 @@ PARAM_DEFINE_FLOAT(RWTO_RAMP_TIME, 2.0f);
|
|||||||
* @group Runway Takeoff
|
* @group Runway Takeoff
|
||||||
*/
|
*/
|
||||||
PARAM_DEFINE_FLOAT(RWTO_L1_PERIOD, 5.0f);
|
PARAM_DEFINE_FLOAT(RWTO_L1_PERIOD, 5.0f);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable use of yaw stick for nudging the wheel during runway ground roll
|
||||||
|
*
|
||||||
|
* @boolean
|
||||||
|
* @group Runway Takeoff
|
||||||
|
*/
|
||||||
|
PARAM_DEFINE_INT32(RWTO_NUDGE, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user