mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
MulticopterPositionControl: publish stricter tilt limit during takeoff
This commit is contained in:
parent
ff67da1bb4
commit
29e07b1e52
@ -10,3 +10,5 @@ uint8 TAKEOFF_STATE_RAMPUP = 4
|
||||
uint8 TAKEOFF_STATE_FLIGHT = 5
|
||||
|
||||
uint8 takeoff_state
|
||||
|
||||
float32 tilt_limit # limited tilt feasability during takeoff, contains maximum tilt otherwise
|
||||
|
||||
@ -461,13 +461,12 @@ void MulticopterPositionControl::Run()
|
||||
// Publish takeoff status
|
||||
const uint8_t takeoff_state = static_cast<uint8_t>(_takeoff.getTakeoffState());
|
||||
|
||||
if (takeoff_state != _old_takeoff_state) {
|
||||
takeoff_status_s takeoff_status{};
|
||||
takeoff_status.takeoff_state = takeoff_state;
|
||||
takeoff_status.timestamp = hrt_absolute_time();
|
||||
_takeoff_status_pub.publish(takeoff_status);
|
||||
|
||||
_old_takeoff_state = takeoff_state;
|
||||
if (takeoff_state != _takeoff_status_pub.get().takeoff_state
|
||||
|| !isEqualF(_tilt_limit_slew_rate.getState(), _takeoff_status_pub.get().tilt_limit)) {
|
||||
_takeoff_status_pub.get().takeoff_state = takeoff_state;
|
||||
_takeoff_status_pub.get().tilt_limit = _tilt_limit_slew_rate.getState();
|
||||
_takeoff_status_pub.get().timestamp = hrt_absolute_time();
|
||||
_takeoff_status_pub.update();
|
||||
}
|
||||
|
||||
// save latest reset counters
|
||||
|
||||
@ -92,7 +92,7 @@ private:
|
||||
|
||||
orb_advert_t _mavlink_log_pub{nullptr};
|
||||
|
||||
uORB::Publication<takeoff_status_s> _takeoff_status_pub{ORB_ID(takeoff_status)};
|
||||
uORB::PublicationData<takeoff_status_s> _takeoff_status_pub{ORB_ID(takeoff_status)};
|
||||
uORB::Publication<vehicle_attitude_setpoint_s> _vehicle_attitude_setpoint_pub;
|
||||
uORB::Publication<vehicle_local_position_setpoint_s> _local_pos_sp_pub{ORB_ID(vehicle_local_position_setpoint)}; /**< vehicle local position setpoint publication */
|
||||
|
||||
@ -200,8 +200,6 @@ private:
|
||||
systemlib::Hysteresis _failsafe_land_hysteresis{false}; /**< becomes true if task did not update correctly for LOITER_TIME_BEFORE_DESCEND */
|
||||
SlewRate<float> _tilt_limit_slew_rate;
|
||||
|
||||
uint8_t _old_takeoff_state{};
|
||||
|
||||
uint8_t _vxy_reset_counter{0};
|
||||
uint8_t _vz_reset_counter{0};
|
||||
uint8_t _xy_reset_counter{0};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user