mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-31 07:01:35 +08:00
mc_pos_control, mc_att_control_vector: code style fixed
This commit is contained in:
@@ -530,6 +530,7 @@ MulticopterAttitudeControl::task_main()
|
|||||||
if (_att_sp.R_valid) {
|
if (_att_sp.R_valid) {
|
||||||
/* rotation matrix in _att_sp is valid, use it */
|
/* rotation matrix in _att_sp is valid, use it */
|
||||||
R_sp.set(&_att_sp.R_body[0][0]);
|
R_sp.set(&_att_sp.R_body[0][0]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* rotation matrix in _att_sp is not valid, use euler angles instead */
|
/* rotation matrix in _att_sp is not valid, use euler angles instead */
|
||||||
R_sp.from_euler(_att_sp.roll_body, _att_sp.pitch_body, _att_sp.yaw_body);
|
R_sp.from_euler(_att_sp.roll_body, _att_sp.pitch_body, _att_sp.yaw_body);
|
||||||
|
|||||||
@@ -322,6 +322,7 @@ MulticopterPositionControl::parameters_update(bool force)
|
|||||||
struct parameter_update_s param_upd;
|
struct parameter_update_s param_upd;
|
||||||
|
|
||||||
orb_check(_params_sub, &updated);
|
orb_check(_params_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(parameter_update), _params_sub, ¶m_upd);
|
orb_copy(ORB_ID(parameter_update), _params_sub, ¶m_upd);
|
||||||
|
|
||||||
@@ -380,26 +381,32 @@ MulticopterPositionControl::poll_subscriptions()
|
|||||||
bool updated;
|
bool updated;
|
||||||
|
|
||||||
orb_check(_att_sub, &updated);
|
orb_check(_att_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(vehicle_attitude), _att_sub, &_att);
|
orb_copy(ORB_ID(vehicle_attitude), _att_sub, &_att);
|
||||||
|
|
||||||
orb_check(_att_sp_sub, &updated);
|
orb_check(_att_sp_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(vehicle_attitude_setpoint), _att_sp_sub, &_att_sp);
|
orb_copy(ORB_ID(vehicle_attitude_setpoint), _att_sp_sub, &_att_sp);
|
||||||
|
|
||||||
orb_check(_control_mode_sub, &updated);
|
orb_check(_control_mode_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(vehicle_control_mode), _control_mode_sub, &_control_mode);
|
orb_copy(ORB_ID(vehicle_control_mode), _control_mode_sub, &_control_mode);
|
||||||
|
|
||||||
orb_check(_manual_sub, &updated);
|
orb_check(_manual_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(manual_control_setpoint), _manual_sub, &_manual);
|
orb_copy(ORB_ID(manual_control_setpoint), _manual_sub, &_manual);
|
||||||
|
|
||||||
orb_check(_arming_sub, &updated);
|
orb_check(_arming_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(actuator_armed), _arming_sub, &_arming);
|
orb_copy(ORB_ID(actuator_armed), _arming_sub, &_arming);
|
||||||
|
|
||||||
orb_check(_mission_items_sub, &updated);
|
orb_check(_mission_items_sub, &updated);
|
||||||
|
|
||||||
if (updated)
|
if (updated)
|
||||||
orb_copy(ORB_ID(mission_item_triplet), _mission_items_sub, &_mission_items);
|
orb_copy(ORB_ID(mission_item_triplet), _mission_items_sub, &_mission_items);
|
||||||
}
|
}
|
||||||
@@ -516,12 +523,13 @@ MulticopterPositionControl::task_main()
|
|||||||
reset_int_z = true;
|
reset_int_z = true;
|
||||||
reset_int_xy = true;
|
reset_int_xy = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
was_armed = _control_mode.flag_armed;
|
was_armed = _control_mode.flag_armed;
|
||||||
|
|
||||||
if (_control_mode.flag_control_altitude_enabled ||
|
if (_control_mode.flag_control_altitude_enabled ||
|
||||||
_control_mode.flag_control_position_enabled ||
|
_control_mode.flag_control_position_enabled ||
|
||||||
_control_mode.flag_control_climb_rate_enabled ||
|
_control_mode.flag_control_climb_rate_enabled ||
|
||||||
_control_mode.flag_control_velocity_enabled) {
|
_control_mode.flag_control_velocity_enabled) {
|
||||||
|
|
||||||
_pos(0) = _local_pos.x;
|
_pos(0) = _local_pos.x;
|
||||||
_pos(1) = _local_pos.y;
|
_pos(1) = _local_pos.y;
|
||||||
@@ -548,6 +556,7 @@ MulticopterPositionControl::task_main()
|
|||||||
_pos_sp(1) += ref_change_y;
|
_pos_sp(1) += ref_change_y;
|
||||||
_pos_sp(2) += _local_pos.ref_alt - ref_alt;
|
_pos_sp(2) += _local_pos.ref_alt - ref_alt;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref_timestamp = _local_pos.ref_timestamp;
|
ref_timestamp = _local_pos.ref_timestamp;
|
||||||
ref_lat = _local_pos.ref_lat;
|
ref_lat = _local_pos.ref_lat;
|
||||||
ref_lon = _local_pos.ref_lon;
|
ref_lon = _local_pos.ref_lon;
|
||||||
@@ -584,6 +593,7 @@ MulticopterPositionControl::task_main()
|
|||||||
|
|
||||||
/* limit setpoint move rate */
|
/* limit setpoint move rate */
|
||||||
float sp_move_norm = sp_move_rate.length();
|
float sp_move_norm = sp_move_rate.length();
|
||||||
|
|
||||||
if (sp_move_norm > 1.0f) {
|
if (sp_move_norm > 1.0f) {
|
||||||
sp_move_rate /= sp_move_norm;
|
sp_move_rate /= sp_move_norm;
|
||||||
}
|
}
|
||||||
@@ -599,12 +609,14 @@ MulticopterPositionControl::task_main()
|
|||||||
/* check if position setpoint is too far from actual position */
|
/* check if position setpoint is too far from actual position */
|
||||||
math::Vector<3> pos_sp_offs = (_pos_sp - _pos).edivide(_params.vel_max);
|
math::Vector<3> pos_sp_offs = (_pos_sp - _pos).edivide(_params.vel_max);
|
||||||
float pos_sp_offs_norm = pos_sp_offs.length();
|
float pos_sp_offs_norm = pos_sp_offs.length();
|
||||||
|
|
||||||
if (pos_sp_offs_norm > 1.0f) {
|
if (pos_sp_offs_norm > 1.0f) {
|
||||||
pos_sp_offs /= pos_sp_offs_norm;
|
pos_sp_offs /= pos_sp_offs_norm;
|
||||||
_pos_sp = _pos + pos_sp_offs.emult(_params.vel_max);
|
_pos_sp = _pos + pos_sp_offs.emult(_params.vel_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
reset_takeoff_sp = true;
|
reset_takeoff_sp = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* AUTO */
|
/* AUTO */
|
||||||
if (_mission_items.current_valid) {
|
if (_mission_items.current_valid) {
|
||||||
@@ -621,6 +633,7 @@ MulticopterPositionControl::task_main()
|
|||||||
/* add gap for takeoff setpoint */
|
/* add gap for takeoff setpoint */
|
||||||
_pos_sp(2) -= 0.5f * _params.vel_max(2) / _params.pos_p(2);
|
_pos_sp(2) -= 0.5f * _params.vel_max(2) / _params.pos_p(2);
|
||||||
reset_sp_z = true;
|
reset_sp_z = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
map_projection_project(item.lat, item.lon, &_pos_sp(0), &_pos_sp(1));
|
map_projection_project(item.lat, item.lon, &_pos_sp(0), &_pos_sp(1));
|
||||||
|
|
||||||
@@ -633,6 +646,7 @@ MulticopterPositionControl::task_main()
|
|||||||
reset_sp_xy = true;
|
reset_sp_xy = true;
|
||||||
reset_sp_z = true;
|
reset_sp_z = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* no waypoint, loiter, reset position setpoint if needed */
|
/* no waypoint, loiter, reset position setpoint if needed */
|
||||||
if (reset_sp_xy) {
|
if (reset_sp_xy) {
|
||||||
@@ -640,6 +654,7 @@ MulticopterPositionControl::task_main()
|
|||||||
_pos_sp(0) = _pos(0);
|
_pos_sp(0) = _pos(0);
|
||||||
_pos_sp(1) = _pos(1);
|
_pos_sp(1) = _pos(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reset_sp_z) {
|
if (reset_sp_z) {
|
||||||
reset_sp_z = false;
|
reset_sp_z = false;
|
||||||
_pos_sp(2) = _pos(2);
|
_pos_sp(2) = _pos(2);
|
||||||
@@ -723,6 +738,7 @@ MulticopterPositionControl::task_main()
|
|||||||
thrust_int(2) = -i;
|
thrust_int(2) = -i;
|
||||||
mavlink_log_info(mavlink_fd, "[mpc] reset hovering thrust: %.2f", (double)i);
|
mavlink_log_info(mavlink_fd, "[mpc] reset hovering thrust: %.2f", (double)i);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
reset_int_z = true;
|
reset_int_z = true;
|
||||||
}
|
}
|
||||||
@@ -734,6 +750,7 @@ MulticopterPositionControl::task_main()
|
|||||||
thrust_int(1) = 0.0f;
|
thrust_int(1) = 0.0f;
|
||||||
mavlink_log_info(mavlink_fd, "[mpc] reset xy vel integral");
|
mavlink_log_info(mavlink_fd, "[mpc] reset xy vel integral");
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
reset_int_xy = true;
|
reset_int_xy = true;
|
||||||
}
|
}
|
||||||
@@ -752,6 +769,7 @@ MulticopterPositionControl::task_main()
|
|||||||
thrust_sp(0) = 0.0f;
|
thrust_sp(0) = 0.0f;
|
||||||
thrust_sp(1) = 0.0f;
|
thrust_sp(1) = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_control_mode.flag_control_climb_rate_enabled) {
|
if (!_control_mode.flag_control_climb_rate_enabled) {
|
||||||
thrust_sp(2) = 0.0f;
|
thrust_sp(2) = 0.0f;
|
||||||
}
|
}
|
||||||
@@ -762,6 +780,7 @@ MulticopterPositionControl::task_main()
|
|||||||
|
|
||||||
/* limit min lift */
|
/* limit min lift */
|
||||||
float thr_min = _params.thr_min;
|
float thr_min = _params.thr_min;
|
||||||
|
|
||||||
if (!_control_mode.flag_control_velocity_enabled && thr_min < 0.0f) {
|
if (!_control_mode.flag_control_velocity_enabled && thr_min < 0.0f) {
|
||||||
/* don't allow downside thrust direction in manual attitude mode */
|
/* don't allow downside thrust direction in manual attitude mode */
|
||||||
thr_min = 0.0f;
|
thr_min = 0.0f;
|
||||||
@@ -856,7 +875,9 @@ MulticopterPositionControl::task_main()
|
|||||||
if (body_z(2) < 0.0f) {
|
if (body_z(2) < 0.0f) {
|
||||||
body_x = -body_x;
|
body_x = -body_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
body_x.normalize();
|
body_x.normalize();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* desired thrust is in XY plane, set X downside to construct correct matrix,
|
/* desired thrust is in XY plane, set X downside to construct correct matrix,
|
||||||
* but yaw component will not be used actually */
|
* but yaw component will not be used actually */
|
||||||
@@ -913,6 +934,7 @@ MulticopterPositionControl::task_main()
|
|||||||
} else {
|
} else {
|
||||||
reset_int_z = true;
|
reset_int_z = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* position controller disabled, reset setpoints */
|
/* position controller disabled, reset setpoints */
|
||||||
reset_sp_z = true;
|
reset_sp_z = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user