Browse Source

paa3905: update scaling from datasheet

main
Daniel Agar 3 years ago
parent
commit
ab4e10dc26
  1. 11
      src/drivers/optical_flow/paa3905/PAA3905.cpp

11
src/drivers/optical_flow/paa3905/PAA3905.cpp

@ -603,8 +603,15 @@ void PAA3905::RunImpl()
// rotate measurements in yaw from sensor frame to body frame // rotate measurements in yaw from sensor frame to body frame
const matrix::Vector3f pixel_flow_rotated = _rotation * matrix::Vector3f{(float)delta_x_raw, (float)delta_y_raw, 0.f}; const matrix::Vector3f pixel_flow_rotated = _rotation * matrix::Vector3f{(float)delta_x_raw, (float)delta_y_raw, 0.f};
report.pixel_flow[0] = pixel_flow_rotated(0) / 500.0f; // proportional factor + convert from pixels to radians // datasheet provides 11.914 CPI (count per inch) scaling per meter of height
report.pixel_flow[1] = pixel_flow_rotated(1) / 500.0f; // proportional factor + convert from pixels to radians static constexpr float PIXART_RESOLUTION = 11.914f; // counts per inch (CPI) per meter (from surface)
static constexpr float INCHES_PER_METER = 39.3701f;
// CPI/m -> radians
static constexpr float SCALE = 1.f / (PIXART_RESOLUTION * INCHES_PER_METER);
report.pixel_flow[0] = pixel_flow_rotated(0) * SCALE;
report.pixel_flow[1] = pixel_flow_rotated(1) * SCALE;
} }
report.timestamp = hrt_absolute_time(); report.timestamp = hrt_absolute_time();

Loading…
Cancel
Save