Browse Source

Merge pull request #315 from DrTon/sdlog2

sdlog2: FLOW message added
sbg
sjwilks 12 years ago
parent
commit
8191130bbc
  1. 11
      src/modules/sdlog2/sdlog2.c
  2. 13
      src/modules/sdlog2/sdlog2_messages.h
  3. 4
      src/modules/uORB/topics/optical_flow.h

11
src/modules/sdlog2/sdlog2.c

@ -684,6 +684,7 @@ int sdlog2_thread_main(int argc, char *argv[]) @@ -684,6 +684,7 @@ int sdlog2_thread_main(int argc, char *argv[])
struct log_OUT0_s log_OUT0;
struct log_AIRS_s log_AIRS;
struct log_ARSP_s log_ARSP;
struct log_FLOW_s log_FLOW;
} body;
} log_msg = {
LOG_PACKET_HEADER_INIT(0)
@ -1067,7 +1068,15 @@ int sdlog2_thread_main(int argc, char *argv[]) @@ -1067,7 +1068,15 @@ int sdlog2_thread_main(int argc, char *argv[])
/* --- FLOW --- */
if (fds[ifds++].revents & POLLIN) {
orb_copy(ORB_ID(optical_flow), subs.flow_sub, &buf.flow);
// TODO not implemented yet
log_msg.msg_type = LOG_FLOW_MSG;
log_msg.body.log_FLOW.flow_raw_x = buf.flow.flow_raw_x;
log_msg.body.log_FLOW.flow_raw_y = buf.flow.flow_raw_y;
log_msg.body.log_FLOW.flow_comp_x = buf.flow.flow_comp_x_m;
log_msg.body.log_FLOW.flow_comp_y = buf.flow.flow_comp_y_m;
log_msg.body.log_FLOW.distance = buf.flow.ground_distance_m;
log_msg.body.log_FLOW.quality = buf.flow.quality;
log_msg.body.log_FLOW.sensor_id = buf.flow.sensor_id;
LOGBUFFER_WRITE_AND_COUNT(FLOW);
}
/* --- RC CHANNELS --- */

13
src/modules/sdlog2/sdlog2_messages.h

@ -186,6 +186,18 @@ struct log_ARSP_s { @@ -186,6 +186,18 @@ struct log_ARSP_s {
float pitch_rate_sp;
float yaw_rate_sp;
};
/* --- FLOW - OPTICAL FLOW --- */
#define LOG_FLOW_MSG 15
struct log_FLOW_s {
int16_t flow_raw_x;
int16_t flow_raw_y;
float flow_comp_x;
float flow_comp_y;
float distance;
uint8_t quality;
uint8_t sensor_id;
};
#pragma pack(pop)
/* construct list of all message formats */
@ -205,6 +217,7 @@ static const struct log_format_s log_formats[] = { @@ -205,6 +217,7 @@ static const struct log_format_s log_formats[] = {
LOG_FORMAT(OUT0, "ffffffff", "Out0,Out1,Out2,Out3,Out4,Out5,Out6,Out7"),
LOG_FORMAT(AIRS, "ff", "IndSpeed,TrueSpeed"),
LOG_FORMAT(ARSP, "fff", "RollRateSP,PitchRateSP,YawRateSP"),
LOG_FORMAT(FLOW, "hhfffBB", "RawX,RawY,CompX,CompY,Dist,Q,SensID"),
};
static const int log_formats_num = sizeof(log_formats) / sizeof(struct log_format_s);

4
src/modules/uORB/topics/optical_flow.h

@ -57,8 +57,8 @@ struct optical_flow_s { @@ -57,8 +57,8 @@ struct optical_flow_s {
uint64_t timestamp; /**< in microseconds since system start */
uint16_t flow_raw_x; /**< flow in pixels in X direction, not rotation-compensated */
uint16_t flow_raw_y; /**< flow in pixels in Y direction, not rotation-compensated */
int16_t flow_raw_x; /**< flow in pixels in X direction, not rotation-compensated */
int16_t flow_raw_y; /**< flow in pixels in Y direction, not rotation-compensated */
float flow_comp_x_m; /**< speed over ground in meters, rotation-compensated */
float flow_comp_y_m; /**< speed over ground in meters, rotation-compensated */
float ground_distance_m; /**< Altitude / distance to ground in meters */

Loading…
Cancel
Save