[robocup-small] Unique patterns - SSL Vision

Joydeep Biswas joydeepb at ri.cmu.edu
Sat Oct 12 07:37:15 EDT 2013


Hi Jan, Miguel, Michael,

Attached is a patch (reference: revision 205 of trunk) that makes the
magic constants configurable.
This patch adds two configuration numbers, "Max Num Markers To Detect"
and "Max Query Distance" to the following configuration subtree in
ssl-vision: "Global" -> "Team Config" -> "Teams" -> <teamname> ->
"Other Marker Settings". Please try it out and verify that it solves
the problem by twiddling the magic numbers.

If someone facing this problem could send me some sample captured
pngs, I could test it out at my end as well.

The patch will be pushed to trunk once verified.

Thanks,
Joydeep

On Tue, Oct 8, 2013 at 12:22 PM, Jan <jansegre at gmail.com> wrote:
> Hi,
>
> We've had this kind of issue on our lab, to temporarily solve it we
> assembled smaller patterns. We know it's a hack and we'd largely appreciate
> if that magic parameter was configurable.
>
>
> On Tue, Oct 8, 2013 at 12:58 PM, Joydeep Biswas <joydeepb at ri.cmu.edu> wrote:
>>
>> Hi,
>>
>> > (2) There is a magic constant in the code for the distance in the search
>> > tree for the green/pink color patches. Maybe this distance is too
>> > restrictive.
>>
>> Yes, I've had issues with this as well, and is my primary suspect. I
>> think we should just add another entry to the VarXML tree for this
>> parameter and document it.
>>
>> -Joydeep
>> _______________________________________________
>> robocup-small mailing list
>> robocup-small at cc.gatech.edu
>> https://mailman.cc.gatech.edu/mailman/listinfo/robocup-small
>
>
>
>
> --
> Att,
> Jan Segre
> RoboIME
>
> _______________________________________________
> robocup-small mailing list
> robocup-small at cc.gatech.edu
> https://mailman.cc.gatech.edu/mailman/listinfo/robocup-small
>
-------------- next part --------------
Index: src/shared/cmpattern/cmpattern_team.h
===================================================================
--- src/shared/cmpattern/cmpattern_team.h	(revision 207)
+++ src/shared/cmpattern/cmpattern_team.h	(working copy)
@@ -79,6 +79,8 @@
       VarInt * _other_markers_max_height;
       VarInt * _other_markers_min_area;
       VarInt * _other_markers_max_area;
+      VarInt * _other_markers_max_detections;
+      VarDouble * _other_markers_max_query_distance;
 
     VarList * _histogram_settings;
       VarBool * _histogram_enable;
Index: src/shared/cmpattern/cmpattern_teamdetector.cpp
===================================================================
--- src/shared/cmpattern/cmpattern_teamdetector.cpp	(revision 207)
+++ src/shared/cmpattern/cmpattern_teamdetector.cpp	(working copy)
@@ -109,6 +109,9 @@
   _center_marker_uniform=_team->_center_marker_uniform->getDouble();
   _center_marker_duplicate_distance=_team->_center_marker_duplicate_distance->getDouble();
 
+  _other_markers_max_detections=_team->_other_markers_max_detections->getInt();
+  _other_markers_max_query_distance=_team->_other_markers_max_query_distance->getDouble();
+
   filter_team.setWidth(_team->_center_marker_min_width->getInt(),team->_center_marker_max_width->getInt());
   filter_team.setHeight(_team->_center_marker_min_height->getInt(),team->_center_marker_max_height->getInt());
   filter_team.setArea(_team->_center_marker_min_area->getInt(),team->_center_marker_max_area->getInt());
@@ -411,16 +414,16 @@
 {
 
   (void)image;
-  const int MaxMarkers = 16;
+  const int MaxDetections = _other_markers_max_detections;
   Marker cen; // center marker
-  Marker markers[MaxMarkers];
+  Marker markers[MaxDetections];
+  const float marker_max_query_dist = _other_markers_max_query_distance;
+  const float marker_max_dist = _pattern_max_dist;
 
-  float marker_max_dist = _pattern_max_dist;
-
   // partially forget old detections
   //decaySeen();
 
-  filter_team.init( colorlist->getRegionList(team_color_id).getInitialElement() );
+  filter_team.init( colorlist->getRegionList(team_color_id).getInitialElement());
   const CMVision::Region * reg=0;
   SSL_DetectionRobot * robot=0;
 
@@ -437,10 +440,10 @@
       cen.set(reg,reg_center3d,getRegionArea(reg,_robot_height));
       int num_markers = 0;
 
-      reg_tree.startQuery(*reg,20.0);
+      reg_tree.startQuery(*reg,marker_max_query_dist);
       double sd=0.0;
       CMVision::Region *mreg;
-      while((mreg=reg_tree.getNextNearest(sd))!=0 && num_markers<MaxMarkers) { 
+      while((mreg=reg_tree.getNextNearest(sd))!=0 && num_markers<MaxDetections) {
         //TODO: implement masking:
         // filter_other.check(*mreg) && det.mask.get(mreg->cen_x,mreg->cen_y)>=0.5
 
Index: src/shared/cmpattern/cmpattern_teamdetector.h
===================================================================
--- src/shared/cmpattern/cmpattern_teamdetector.h	(revision 207)
+++ src/shared/cmpattern/cmpattern_teamdetector.h	(working copy)
@@ -184,6 +184,8 @@
   double _center_marker_area_stddev;
   double _center_marker_uniform;
   double _center_marker_duplicate_distance;
+  int    _other_markers_max_detections;
+  double _other_markers_max_query_distance;
 
   bool  _histogram_enable;
   int    _histogram_pixel_scan_radius;
Index: src/shared/cmpattern/cmpattern_team.cpp
===================================================================
--- src/shared/cmpattern/cmpattern_team.cpp	(revision 207)
+++ src/shared/cmpattern/cmpattern_team.cpp	(working copy)
@@ -71,6 +71,8 @@
       _other_markers_max_height = _other_markers_filter->findChildOrReplace(new VarInt("Max Height (pixels)",40));
       _other_markers_min_area = _other_markers_filter->findChildOrReplace(new VarInt("Min Area (sq-pixels)",15));
       _other_markers_max_area = _other_markers_filter->findChildOrReplace(new VarInt("Max Area (sq-pixels)",600));
+      _other_markers_max_detections = _other_markers_filter->findChildOrReplace(new VarInt("Max Num Markers To Detect", 16));
+      _other_markers_max_query_distance = _other_markers_filter->findChildOrReplace(new VarDouble("Max Query Distance", 20.0));
 
     _histogram_settings = _settings->findChildOrReplace(new VarList("Histogram Settings"));
       _histogram_enable = _histogram_settings->findChildOrReplace(new VarBool("Enable",true));
Index: robocup-ssl-teams.xml
===================================================================
--- robocup-ssl-teams.xml	(revision 207)
+++ robocup-ssl-teams.xml	(working copy)
@@ -116,6 +116,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -288,6 +294,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -461,6 +473,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -634,6 +652,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -807,6 +831,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -980,6 +1010,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -1153,6 +1189,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -1326,6 +1368,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -1499,6 +1547,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -1672,6 +1726,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -1845,6 +1905,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				25000
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -2018,6 +2084,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -2191,6 +2263,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">
@@ -2364,6 +2442,12 @@
 			<Var name="Max Area (sq-pixels)" type="int" minval="" maxval="">
 				600
 			</Var>
+			<Var name="Max Num Markers To Detect" type="int" minval="" maxval="">
+				16
+			</Var>
+			<Var name="Max Query Distance" type="double" minval="" maxval="">
+				20.000000
+			</Var>
 		</Var>
 		<Var name="Histogram Settings" type="list">
 			<Var name="Enable" type="bool">


More information about the robocup-small mailing list