summaryrefslogtreecommitdiff
path: root/n/es-2006/src/sniff_rvb.c
diff options
context:
space:
mode:
Diffstat (limited to 'n/es-2006/src/sniff_rvb.c')
-rw-r--r--n/es-2006/src/sniff_rvb.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/n/es-2006/src/sniff_rvb.c b/n/es-2006/src/sniff_rvb.c
index fa48498..e5cc765 100644
--- a/n/es-2006/src/sniff_rvb.c
+++ b/n/es-2006/src/sniff_rvb.c
@@ -39,8 +39,8 @@ uint8_t sniff_rvb_ref_ratio_ = 3;
/* test with new robot clothes */
/* ball black/white detection */
-uint16_t green_limit_ = 2800;
-uint16_t clear_limit_ = 3200;
+uint16_t green_limit_ = 3700;
+uint16_t clear_limit_ = 4000;
/** Configure the sensor analysis system. */
void
@@ -83,11 +83,17 @@ sniff_rvb_try_reference (uint8_t sensor_num, uint16_t
uint8_t
sniff_rvb_analysis_ball (uint8_t sensor)
{
- if ((sensor_rvb_values[sensor][RVB_INDEX_GREEN] > green_limit_)
- && (sensor_rvb_values[sensor][RVB_INDEX_CLEAR] > clear_limit_))
- return RVB_SNIFF_BLACK;
- else
- return RVB_SNIFF_WHITE;
+ /* If sensor is valid */
+ if (sensor_rvb_values[sensor][0] < RVB_INVALID_CAPTURE)
+ {
+ // XXX We can use all four values, and not only two ?
+ if ((sensor_rvb_values[sensor][RVB_INDEX_GREEN] > green_limit_)
+ && (sensor_rvb_values[sensor][RVB_INDEX_CLEAR] > clear_limit_))
+ return RVB_SNIFF_BLACK;
+ else
+ return RVB_SNIFF_WHITE;
+ }
+ return 0;
}
/* Test blue or red */
@@ -97,7 +103,7 @@ sniff_rvb_analysis_color_other (uint8_t sensor, uint8_t color)
uint8_t what_is_it = RVB_SNIFF_OTHER;
if (color == RVB_SNIFF_BLUE)
{
- if (sensor_rvb_values[sensor][RVB_INDEX_GREEN] > sniff_rvb_reference_color[sensor][RVB_INDEX_GREEN])
+ if (sensor_rvb_values[sensor][RVB_INDEX_CLEAR] < sniff_rvb_reference_color[sensor][RVB_INDEX_CLEAR])
what_is_it = RVB_SNIFF_BLUE;
}
else if (color == RVB_SNIFF_RED)
@@ -130,20 +136,21 @@ sniff_rvb_analysis_color (uint8_t sensor, uint8_t mode)
return what_is_it;
/* test for red */
- if (sniff_rvb_analysis_color_other (sensor, RVB_SNIFF_RED))
+ if (sniff_rvb_analysis_color_other (sensor, RVB_SNIFF_RED)
+ == RVB_SNIFF_RED)
{
what_is_it = RVB_SNIFF_RED;
return what_is_it;
}
/* test for blue */
- if (sniff_rvb_analysis_color_other (sensor, RVB_SNIFF_BLUE))
+ if (sniff_rvb_analysis_color_other (sensor, RVB_SNIFF_BLUE)
+ == RVB_SNIFF_BLUE)
{
what_is_it = RVB_SNIFF_BLUE;
return what_is_it;
}
/* else other */
- what_is_it = RVB_SNIFF_OTHER;
- return what_is_it;
+ return RVB_SNIFF_OTHER;
}