Browse Source

Plane: OpticalFlow takes care of its own logging

master
Peter Barker 7 years ago committed by Andrew Tridgell
parent
commit
a5c34f6172
  1. 30
      ArduPlane/ArduPlane.cpp
  2. 41
      ArduPlane/Log.cpp
  3. 1
      ArduPlane/Plane.h
  4. 1
      ArduPlane/defines.h
  5. 2
      ArduPlane/system.cpp

30
ArduPlane/ArduPlane.cpp

@ -60,7 +60,7 @@ const AP_Scheduler::Task Plane::scheduler_tasks[] = {
SCHED_TASK(compass_cal_update, 50, 50), SCHED_TASK(compass_cal_update, 50, 50),
SCHED_TASK(accel_cal_update, 10, 50), SCHED_TASK(accel_cal_update, 10, 50),
#if OPTFLOW == ENABLED #if OPTFLOW == ENABLED
SCHED_TASK(update_optical_flow, 50, 50), SCHED_TASK_CLASS(OpticalFlow, &plane.optflow, update, 50, 50),
#endif #endif
SCHED_TASK(one_second_loop, 1, 400), SCHED_TASK(one_second_loop, 1, 400),
SCHED_TASK(check_long_failsafe, 3, 400), SCHED_TASK(check_long_failsafe, 3, 400),
@ -891,34 +891,6 @@ void Plane::update_flight_stage(void)
#if OPTFLOW == ENABLED
// called at 50hz
void Plane::update_optical_flow(void)
{
static uint32_t last_of_update = 0;
// exit immediately if not enabled
if (!optflow.enabled()) {
return;
}
// read from sensor
optflow.update();
// write to log and send to EKF if new data has arrived
if (optflow.last_update() != last_of_update) {
last_of_update = optflow.last_update();
uint8_t flowQuality = optflow.quality();
Vector2f flowRate = optflow.flowRate();
Vector2f bodyRate = optflow.bodyRate();
const Vector3f &posOffset = optflow.get_pos_offset();
ahrs.writeOptFlowMeas(flowQuality, flowRate, bodyRate, last_of_update, posOffset);
Log_Write_Optflow();
}
}
#endif
/* /*
If land_DisarmDelay is enabled (non-zero), check for a landing then auto-disarm after time expires If land_DisarmDelay is enabled (non-zero), check for a landing then auto-disarm after time expires

41
ArduPlane/Log.cpp

@ -208,39 +208,6 @@ void Plane::Log_Write_Sonar()
DataFlash.Log_Write_RFND(rangefinder); DataFlash.Log_Write_RFND(rangefinder);
} }
struct PACKED log_Optflow {
LOG_PACKET_HEADER;
uint64_t time_us;
uint8_t surface_quality;
float flow_x;
float flow_y;
float body_x;
float body_y;
};
#if OPTFLOW == ENABLED
// Write an optical flow packet
void Plane::Log_Write_Optflow()
{
// exit immediately if not enabled
if (!optflow.enabled()) {
return;
}
const Vector2f &flowRate = optflow.flowRate();
const Vector2f &bodyRate = optflow.bodyRate();
struct log_Optflow pkt = {
LOG_PACKET_HEADER_INIT(LOG_OPTFLOW_MSG),
time_us : AP_HAL::micros64(),
surface_quality : optflow.quality(),
flow_x : flowRate.x,
flow_y : flowRate.y,
body_x : bodyRate.x,
body_y : bodyRate.y
};
DataFlash.WriteBlock(&pkt, sizeof(pkt));
}
#endif
struct PACKED log_Arm_Disarm { struct PACKED log_Arm_Disarm {
LOG_PACKET_HEADER; LOG_PACKET_HEADER;
uint64_t time_us; uint64_t time_us;
@ -317,10 +284,6 @@ const struct LogStructure Plane::log_structure[] = {
"QTUN", "Qffffhhfffff", "TimeUS,AngBst,ThrOut,DAlt,Alt,DCRt,CRt,DVx,DVy,DAx,DAy,TMix", "s--mmnnnnoo-", "F--BBBB0000-" }, "QTUN", "Qffffhhfffff", "TimeUS,AngBst,ThrOut,DAlt,Alt,DCRt,CRt,DVx,DVy,DAx,DAy,TMix", "s--mmnnnnoo-", "F--BBBB0000-" },
{ LOG_AOA_SSA_MSG, sizeof(log_AOA_SSA), { LOG_AOA_SSA_MSG, sizeof(log_AOA_SSA),
"AOA", "Qff", "TimeUS,AOA,SSA", "sdd", "F00" }, "AOA", "Qff", "TimeUS,AOA,SSA", "sdd", "F00" },
#if OPTFLOW == ENABLED
{ LOG_OPTFLOW_MSG, sizeof(log_Optflow),
"OF", "QBffff", "TimeUS,Qual,flowX,flowY,bodyX,bodyY", "s-EEEE", "F-0000" },
#endif
{ LOG_PIQR_MSG, sizeof(log_PID), \ { LOG_PIQR_MSG, sizeof(log_PID), \
"PIQR", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \ "PIQR", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \
{ LOG_PIQP_MSG, sizeof(log_PID), \ { LOG_PIQP_MSG, sizeof(log_PID), \
@ -362,10 +325,6 @@ void Plane::Log_Write_Nav_Tuning() {}
void Plane::Log_Write_Status() {} void Plane::Log_Write_Status() {}
void Plane::Log_Write_Sonar() {} void Plane::Log_Write_Sonar() {}
#if OPTFLOW == ENABLED
void Plane::Log_Write_Optflow() {}
#endif
void Plane::Log_Arm_Disarm() {} void Plane::Log_Arm_Disarm() {}
void Plane::Log_Write_RC(void) {} void Plane::Log_Write_RC(void) {}
void Plane::Log_Write_Vehicle_Startup_Messages() {} void Plane::Log_Write_Vehicle_Startup_Messages() {}

1
ArduPlane/Plane.h

@ -823,7 +823,6 @@ private:
void Log_Write_Nav_Tuning(); void Log_Write_Nav_Tuning();
void Log_Write_Status(); void Log_Write_Status();
void Log_Write_Sonar(); void Log_Write_Sonar();
void Log_Write_Optflow();
void Log_Arm_Disarm(); void Log_Arm_Disarm();
void Log_Write_RC(void); void Log_Write_RC(void);
void Log_Write_Vehicle_Startup_Messages(); void Log_Write_Vehicle_Startup_Messages();

1
ArduPlane/defines.h

@ -140,7 +140,6 @@ enum log_messages {
LOG_SONAR_MSG, LOG_SONAR_MSG,
LOG_ARM_DISARM_MSG, LOG_ARM_DISARM_MSG,
LOG_STATUS_MSG, LOG_STATUS_MSG,
LOG_OPTFLOW_MSG,
LOG_QTUN_MSG, LOG_QTUN_MSG,
LOG_PARAMTUNE_MSG, LOG_PARAMTUNE_MSG,
LOG_THERMAL_MSG, LOG_THERMAL_MSG,

2
ArduPlane/system.cpp

@ -210,7 +210,7 @@ void Plane::init_ardupilot()
// initialise sensor // initialise sensor
#if OPTFLOW == ENABLED #if OPTFLOW == ENABLED
if (optflow.enabled()) { if (optflow.enabled()) {
optflow.init(); optflow.init(-1);
} }
#endif #endif

Loading…
Cancel
Save