mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-30 18:06:39 +08:00
rc2param: min and max values
This commit is contained in:
Submodule mavlink/include/mavlink/v1.0 updated: 87350ba3d2...b5732d07ec
@@ -154,6 +154,8 @@ MavlinkParametersManager::handle_message(const mavlink_message_t *msg)
|
|||||||
_rc_param_map.param_id[i][MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = '\0';
|
_rc_param_map.param_id[i][MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = '\0';
|
||||||
_rc_param_map.scale[i] = map_rc.scale;
|
_rc_param_map.scale[i] = map_rc.scale;
|
||||||
_rc_param_map.value0[i] = map_rc.param_value0;
|
_rc_param_map.value0[i] = map_rc.param_value0;
|
||||||
|
_rc_param_map.value_min[i] = map_rc.param_value_min;
|
||||||
|
_rc_param_map.value_max[i] = map_rc.param_value_max;
|
||||||
if (map_rc.param_index == -2) { // -2 means unset map
|
if (map_rc.param_index == -2) { // -2 means unset map
|
||||||
_rc_param_map.valid[i] = false;
|
_rc_param_map.valid[i] = false;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1440,11 +1440,13 @@ Sensors::rc_parameter_map_poll(bool forced)
|
|||||||
}
|
}
|
||||||
warnx("rc to parameter map updated");
|
warnx("rc to parameter map updated");
|
||||||
for (int i = 0; i < RC_PARAM_MAP_NCHAN; i++) {
|
for (int i = 0; i < RC_PARAM_MAP_NCHAN; i++) {
|
||||||
warnx("\ti %d param_id %s scale %.3f value0 %.3f",
|
warnx("\ti %d param_id %s scale %.3f value0 %.3f, min %.3f, max %.3f",
|
||||||
i,
|
i,
|
||||||
_rc_parameter_map.param_id[i],
|
_rc_parameter_map.param_id[i],
|
||||||
(double)_rc_parameter_map.scale[i],
|
(double)_rc_parameter_map.scale[i],
|
||||||
(double)_rc_parameter_map.value0[i]
|
(double)_rc_parameter_map.value0[i],
|
||||||
|
(double)_rc_parameter_map.value_min[i],
|
||||||
|
(double)_rc_parameter_map.value_max[i]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1645,7 +1647,9 @@ Sensors::set_params_from_rc()
|
|||||||
* maybe we need to introduce a more aggressive limit here */
|
* maybe we need to introduce a more aggressive limit here */
|
||||||
if (rc_val > param_rc_values[i] + FLT_EPSILON || rc_val < param_rc_values[i] - FLT_EPSILON) {
|
if (rc_val > param_rc_values[i] + FLT_EPSILON || rc_val < param_rc_values[i] - FLT_EPSILON) {
|
||||||
param_rc_values[i] = rc_val;
|
param_rc_values[i] = rc_val;
|
||||||
float param_val = _rc_parameter_map.value0[i] + _rc_parameter_map.scale[i] * rc_val;
|
float param_val = math::constrain(
|
||||||
|
_rc_parameter_map.value0[i] + _rc_parameter_map.scale[i] * rc_val,
|
||||||
|
_rc_parameter_map.value_min[i], _rc_parameter_map.value_max[i]);
|
||||||
param_set(_parameter_handles.rc_param[i], ¶m_val);
|
param_set(_parameter_handles.rc_param[i], ¶m_val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ struct rc_parameter_map_s {
|
|||||||
char param_id[RC_PARAM_MAP_NCHAN][PARAM_ID_LEN + 1]; /**< corresponding param id, null terminated */
|
char param_id[RC_PARAM_MAP_NCHAN][PARAM_ID_LEN + 1]; /**< corresponding param id, null terminated */
|
||||||
float scale[RC_PARAM_MAP_NCHAN]; /** scale to map the RC input [-1, 1] to a parameter value */
|
float scale[RC_PARAM_MAP_NCHAN]; /** scale to map the RC input [-1, 1] to a parameter value */
|
||||||
float value0[RC_PARAM_MAP_NCHAN]; /** inital value around which the parameter value is changed */
|
float value0[RC_PARAM_MAP_NCHAN]; /** inital value around which the parameter value is changed */
|
||||||
|
float value_min[RC_PARAM_MAP_NCHAN]; /** minimal parameter value */
|
||||||
|
float value_max[RC_PARAM_MAP_NCHAN]; /** minimal parameter value */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user