Browse Source

拍照反馈连续触发问题,增加最短间隔参数。

测流自动模式开始重置测流号
celiu-4.0.17-rc8
zbr 3 years ago
parent
commit
279501d2dd
  1. 7
      ArduCopter/mode_auto.cpp
  2. 10
      libraries/AP_Camera/AP_Camera.cpp
  3. 2
      libraries/AP_Camera/AP_Camera.h

7
ArduCopter/mode_auto.cpp

@ -2086,6 +2086,9 @@ bool ModeAuto::verify_nav_wp_flow_measure(const AP_Mission::Mission_Command& cmd @@ -2086,6 +2086,9 @@ bool ModeAuto::verify_nav_wp_flow_measure(const AP_Mission::Mission_Command& cmd
}
if(copter.flow_measure.get_flow_update_state() > 3){
if(wp_nav_index == 0){
copter.flow_measure.flow_wp_index = 1;
}
copter.flow_measure.set_wp_auto_index(copter.flow_measure.flow_wp_index); // 第一次,先发个数据给测流
}
copter.flow_measure.set_reach_flow_wp(true); //到达航点标志置1
@ -2105,9 +2108,10 @@ bool ModeAuto::verify_nav_wp_flow_measure(const AP_Mission::Mission_Command& cmd @@ -2105,9 +2108,10 @@ bool ModeAuto::verify_nav_wp_flow_measure(const AP_Mission::Mission_Command& cmd
// states = 1;
copter.flow_measure.set_reach_flow_wp(false);
copter.flow_measure.set_flow_date_flag(false);
gcs().send_text(MAV_SEVERITY_INFO, "get data wp:#%i",copter.flow_measure.flow_wp_index);
// gcs().send_text(MAV_SEVERITY_INFO, "get data wp:#%i",copter.flow_measure.flow_wp_index);
copter.flow_measure.set_wp_auto_index(copter.flow_measure.flow_wp_index); // 修正测流起始航点
copter.flow_measure.flow_wp_index += 1; // nav 计数
wp_nav_index += 1;
return true; // 如果获取到流速,返回1
}
@ -2117,6 +2121,7 @@ bool ModeAuto::verify_nav_wp_flow_measure(const AP_Mission::Mission_Command& cmd @@ -2117,6 +2121,7 @@ bool ModeAuto::verify_nav_wp_flow_measure(const AP_Mission::Mission_Command& cmd
copter.flow_measure.set_reach_flow_wp(false);
gcs().send_text(MAV_SEVERITY_INFO, "获取数据超时,序号:#%i",cmd.index);
copter.flow_measure.flow_wp_index += 1; // nav 计数
wp_nav_index += 1;
return true;
}
return false;

10
libraries/AP_Camera/AP_Camera.cpp

@ -110,6 +110,8 @@ const AP_Param::GroupInfo AP_Camera::var_info[] = { @@ -110,6 +110,8 @@ const AP_Param::GroupInfo AP_Camera::var_info[] = {
AP_GROUPINFO("TYPE", 11, AP_Camera, _type, 0),
// 是否支持自适应拍照,0:不支持,1:支持
AP_GROUPINFO("ADAPT_CAM", 12, AP_Camera, _adapt_camera_trigger, 0),
// 最小触发时间间隔,ms
AP_GROUPINFO("MIN_INTE", 13, AP_Camera, _min_time_interval, 30),
AP_GROUPEND
@ -360,8 +362,12 @@ void AP_Camera::update() @@ -360,8 +362,12 @@ void AP_Camera::update()
*/
void AP_Camera::feedback_pin_isr(uint8_t pin, bool high, uint32_t timestamp_us)
{
_feedback_timestamp_us = timestamp_us;
_camera_trigger_count++;
static uint32_t last_timestamp_us;
if(timestamp_us - last_timestamp_us > _min_time_interval * 1000){
last_timestamp_us = timestamp_us;
_feedback_timestamp_us = timestamp_us;
_camera_trigger_count++;
}
}
/*

2
libraries/AP_Camera/AP_Camera.h

@ -168,7 +168,7 @@ private: @@ -168,7 +168,7 @@ private:
AP_Int8 _feedback_polarity;
AP_Int8 _adapt_camera_trigger;
AP_Int16 _min_time_interval;
uint32_t _camera_trigger_count;
uint32_t _camera_trigger_logged;
uint32_t _feedback_timestamp_us;

Loading…
Cancel
Save