Skip to content

Commit 17cd0cf

Browse files
guidoAIdewagter
authored andcommitted
Added camera id to ABI message
1 parent 644da66 commit 17cd0cf

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

conf/abi.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<field name="flow_der_y" type="int32_t">The derotated flow calculation in the y direction (in subpixels)</field>
6666
<field name="quality" type="float"/>
6767
<field name="size_divergence" type="float">Divergence as determined with the size method (in 1/seconds) with LK, and Divergence (1/seconds) itself with EF</field>
68+
<field name="camera_id" type="uint8_t">Camera ID (bottom or front)</field>
6869
</message>
6970

7071
<message name="VELOCITY_ESTIMATE" id="12">

sw/airborne/modules/computer_vision/opticflow_module.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ void opticflow_module_run(void)
150150
opticflow_result[idx_camera].flow_der_x,
151151
opticflow_result[idx_camera].flow_der_y,
152152
opticflow_result[idx_camera].noise_measurement,
153-
opticflow_result[idx_camera].div_size);
153+
opticflow_result[idx_camera].div_size,
154+
(uint8_t) idx_camera);
154155
//TODO Find an appropriate quality measure for the noise model in the state filter, for now it is tracked_cnt
155156
if (opticflow_result[idx_camera].noise_measurement < 0.8) {
156157
AbiSendMsgVELOCITY_ESTIMATE(VEL_OPTICFLOW_ID + idx_camera, now_ts,

sw/airborne/modules/ctrl/optical_flow_landing.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ static void send_divergence(struct transport_tx *trans, struct link_device *dev)
271271
void vertical_ctrl_agl_cb(uint8_t sender_id, uint32_t stamp, float distance);
272272
// Callback function of the optical flow estimate:
273273
void vertical_ctrl_optical_flow_cb(uint8_t sender_id, uint32_t stamp, int32_t flow_x,
274-
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence);
274+
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence, uint8_t camera_id);
275275

276276
// common functions for different landing strategies:
277277
static void set_cov_div(int32_t thrust);
@@ -1107,14 +1107,19 @@ void vertical_ctrl_agl_cb(uint8_t sender_id UNUSED, __attribute__((unused)) uint
11071107

11081108
void vertical_ctrl_optical_flow_cb(uint8_t sender_id UNUSED, uint32_t stamp,
11091109
int32_t flow_x UNUSED, int32_t flow_y UNUSED,
1110-
int32_t flow_der_x UNUSED, int32_t flow_der_y UNUSED, float quality UNUSED, float size_divergence)
1110+
int32_t flow_der_x UNUSED, int32_t flow_der_y UNUSED,
1111+
float quality UNUSED, float size_divergence,
1112+
uint8_t camera_id)
11111113
{
11121114

1113-
optical_flow_x = ((float)flow_der_x)/10.0;
1114-
optical_flow_y = ((float)flow_der_y)/10.0;
1115-
divergence_vision = size_divergence;
1116-
//printf("Reading %f, %f, %f\n", optical_flow_x, optical_flow_y, divergence_vision);
1117-
vision_time = ((float)stamp) / 1e6;
1115+
if(camera_id == 0)
1116+
{
1117+
optical_flow_x = ((float)flow_der_x)/10.0;
1118+
optical_flow_y = ((float)flow_der_y)/10.0;
1119+
divergence_vision = size_divergence;
1120+
//printf("Reading %f, %f, %f\n", optical_flow_x, optical_flow_y, divergence_vision);
1121+
vision_time = ((float)stamp) / 1e6;
1122+
}
11181123
}
11191124

11201125
////////////////////////////////////////////////////////////////////

sw/airborne/modules/loggers/file_logger.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,13 @@ int16_t OF_flow_der_x;
9191
int16_t OF_flow_der_y;
9292
float OF_quality;
9393
float OF_size_divergence;
94+
uint8_t OF_camera_id;
9495
static abi_event OF_ev; ///< The sonar ABI event
9596
static void logger_optical_flow_cb(uint8_t sender_id __attribute__((unused)),uint32_t stamp, int32_t flow_x,
96-
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence);
97+
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence, uint8_t camera_id);
9798

9899
static void logger_optical_flow_cb(uint8_t sender_id, uint32_t stamp, int32_t flow_x,
99-
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence)
100+
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence, uint8_t camera_id)
100101
{
101102
OF_previous_stamp = OF_stamp;
102103
OF_stamp = stamp;
@@ -106,6 +107,7 @@ static void logger_optical_flow_cb(uint8_t sender_id, uint32_t stamp, int32_t fl
106107
OF_flow_der_y = flow_der_y;
107108
OF_quality = quality;
108109
OF_size_divergence = size_divergence;
110+
OF_camera_id = camera_id;
109111
}
110112
uint32_t OF_stamp2=0;
111113
uint32_t OF_previous_stamp2=0;
@@ -115,12 +117,13 @@ int16_t OF_flow_der_x2;
115117
int16_t OF_flow_der_y2;
116118
float OF_quality2;
117119
float OF_size_divergence2;
120+
uint8_t OF_camera_id2;
118121
static abi_event OF_ev2; ///< The sonar ABI event
119122
static void logger_optical_flow_cb2(uint8_t sender_id __attribute__((unused)),uint32_t stamp, int32_t flow_x,
120-
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence);
123+
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence, uint8_t camera_id);
121124

122125
static void logger_optical_flow_cb2(uint8_t sender_id, uint32_t stamp, int32_t flow_x,
123-
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence)
126+
int32_t flow_y, int32_t flow_der_x, int32_t flow_der_y, float quality, float size_divergence, uint8_t camera_id)
124127
{
125128
OF_previous_stamp2 = OF_stamp;
126129
OF_stamp2 = stamp;
@@ -130,6 +133,7 @@ static void logger_optical_flow_cb2(uint8_t sender_id, uint32_t stamp, int32_t f
130133
OF_flow_der_y2 = flow_der_y;
131134
OF_quality2 = quality;
132135
OF_size_divergence2 = size_divergence;
136+
OF_camera_id2 = camera_id;
133137
}
134138

135139
// reading RPMs:

0 commit comments

Comments
 (0)