|
|
@ -49,29 +49,28 @@ public: |
|
|
|
Vector3f position_delta; // position delta (in meters) of most recent update
|
|
|
|
Vector3f position_delta; // position delta (in meters) of most recent update
|
|
|
|
uint64_t time_delta_usec; // time delta (in usec) between previous and most recent update
|
|
|
|
uint64_t time_delta_usec; // time delta (in usec) between previous and most recent update
|
|
|
|
float confidence; // confidence expressed as a value from 0 (no confidence) to 100 (very confident)
|
|
|
|
float confidence; // confidence expressed as a value from 0 (no confidence) to 100 (very confident)
|
|
|
|
uint32_t last_update_ms; // system time (in milliseconds) of last update from sensor
|
|
|
|
uint32_t last_sensor_update_ms; // system time (in milliseconds) of last update from sensor
|
|
|
|
|
|
|
|
uint32_t last_processed_sensor_update_ms; // timestamp of last sensor update that was processed
|
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// detect and initialise any sensors
|
|
|
|
// detect and initialise any sensors
|
|
|
|
void init(); |
|
|
|
void init(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// should be called really, really often. The faster you call
|
|
|
|
|
|
|
|
// this the lower the latency of the data fed to the estimator.
|
|
|
|
|
|
|
|
void update(); |
|
|
|
|
|
|
|
|
|
|
|
// return true if sensor is enabled
|
|
|
|
// return true if sensor is enabled
|
|
|
|
bool enabled() const; |
|
|
|
bool enabled() const; |
|
|
|
|
|
|
|
|
|
|
|
// return true if sensor is basically healthy (we are receiving data)
|
|
|
|
// return true if sensor is basically healthy (we are receiving data)
|
|
|
|
bool healthy() const; |
|
|
|
bool healthy() const; |
|
|
|
|
|
|
|
|
|
|
|
// state accessors
|
|
|
|
|
|
|
|
const Vector3f &get_angle_delta() const { return _state.angle_delta; } |
|
|
|
|
|
|
|
const Vector3f &get_position_delta() const { return _state.position_delta; } |
|
|
|
|
|
|
|
uint64_t get_time_delta_usec() const { return _state.time_delta_usec; } |
|
|
|
|
|
|
|
float get_confidence() const { return _state.confidence; } |
|
|
|
|
|
|
|
uint32_t get_last_update_ms() const { return _state.last_update_ms; } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// return a 3D vector defining the position offset of the camera in meters relative to the body frame origin
|
|
|
|
// return a 3D vector defining the position offset of the camera in meters relative to the body frame origin
|
|
|
|
const Vector3f &get_pos_offset(void) const { return _pos_offset; } |
|
|
|
const Vector3f &get_pos_offset(void) const { return _pos_offset; } |
|
|
|
|
|
|
|
|
|
|
|
// consume VISUAL_POSITION_DELTA data from MAVLink messages
|
|
|
|
// consume data from MAVLink messages
|
|
|
|
void handle_msg(mavlink_message_t *msg); |
|
|
|
void handle_msg(mavlink_message_t *msg); |
|
|
|
|
|
|
|
|
|
|
|
static const struct AP_Param::GroupInfo var_info[]; |
|
|
|
static const struct AP_Param::GroupInfo var_info[]; |
|
|
@ -80,6 +79,13 @@ private: |
|
|
|
|
|
|
|
|
|
|
|
static AP_VisualOdom *_singleton; |
|
|
|
static AP_VisualOdom *_singleton; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// state accessors
|
|
|
|
|
|
|
|
const Vector3f &get_angle_delta() const { return _state.angle_delta; } |
|
|
|
|
|
|
|
const Vector3f &get_position_delta() const { return _state.position_delta; } |
|
|
|
|
|
|
|
uint64_t get_time_delta_usec() const { return _state.time_delta_usec; } |
|
|
|
|
|
|
|
float get_confidence() const { return _state.confidence; } |
|
|
|
|
|
|
|
uint32_t get_last_update_ms() const { return _state.last_sensor_update_ms; } |
|
|
|
|
|
|
|
|
|
|
|
// parameters
|
|
|
|
// parameters
|
|
|
|
AP_Int8 _type; |
|
|
|
AP_Int8 _type; |
|
|
|
AP_Vector3f _pos_offset; // position offset of the camera in the body frame
|
|
|
|
AP_Vector3f _pos_offset; // position offset of the camera in the body frame
|
|
|
|