## For instruction on writing tutorials
## http://www.ros.org/wiki/WritingTutorials
####################################
##FILL ME IN
####################################
## for a custom note with links:
## note =
## for the canned note of "This tutorial assumes that you have completed the previous tutorials:" just add the links 
## note.0= 
## descriptive title for the tutorial
## title = Reconfiguring the experience based parameter selector
## multi-line description to be displayed in search 
## description = This tutorial describes how the experience based parameter selector can be reconfigured to give out results with different properties.
## the next tutorial description (optional)
## next =
## links to next tutorial (optional)
## next.0.link=
## next.1.link=
## what level user is this tutorial for 
## level= AdvancedCategory
## keywords =
####################################

<<IncludeCSTemplate(TutorialCSHeaderTemplate)>>

<<TableOfContents(4)>>



## AUTOGENERATED DO NOT DELETE 
## TutorialCategory
## FILL IN THE STACK TUTORIAL CATEGORY HERE

== Running the exploring parameter chooser ==
For a stand alone tutorial on running the exploring parameter chooser have a look at this tutorial "[[face_contour_detector/Tutorials/Using face_contour_detector without the other packages in the portrait_bot stack.|Using face_contour_detector without the other packages in the portrait_bot stack.]]". If you want to run it in a complete environment (on the PR2) have a look at the tutorial on the [[portrait_bot/Tutorials]] page.

== What is the graph mass? ==
See [[face_contour_detector#exploring_parameter_selector_.28autoselect_service.29|face_contour_detector#exploring_parameter_selector]] for what the graph mass is and how it is being calculated.

== Changing the target graph mass ==

To reconfigure the target graph mass you will have to edit the explore_settings.xml file. It is located in the face_contour_detector package under the path config/explore_settings.xml .
The content of a typical explore_settings.xml looks like this:
{{{
<explore_settings>
	<!-- Sets up a worker,
	- steps, defines how many subdivision steps will be taken (the more, the longer it will take, but the results should be better) 
	- numresults defines how many results should result out of this worker (1 = only the best result, 2 = the best and the second best result...)-->
	<worker steps="15" numresults="2" >
		<!-- Currently only the areas "LeftEye", "RightEye", "Nose", "Mouth" and "Complete Face" area availible -->
		<area name="LeftEye">
			<!-- defines that the target graphmass for the area LeftEye should be 0.35 
			currently only the target_value graphmass is supported -->
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="RightEye">
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="Nose">
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="Mouth">
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="Complete Face">
			<target_value name="graphmass" value="0.25" />
		</area>
	</worker>
</explore_settings>
}}}
To modify the target graph mass for an area you just have modify the value in target_value tag of your desired area (in this case 0.35).
{{{
<target_value name="graphmass" value="0.35" />
}}} 

== Adding additional workers ==
Adding additional workers will allow you to get more results with different step sizes, amount of results or areas that will be used.<<BR>>
For example you could add a worker that returns one result, takes 15 steps, only uses the "Complete Face" area and tries to reach graphmass of 0.25 in this area.
'''Note: This is experimental. The learning based parameter chooser will only use proposals which use all areas. So do not try to rate proposals that do not use all areas.'''
{{{
	<worker steps="15" numresults="1" >
		<area name="Complete Face">
			<target_value name="graphmass" value="0.25" />
		</area>
	</worker>
}}}

Now we can add this to our previous config xml:

{{{
<explore_settings>
	<!-- Sets up a worker,
	- steps, defines how many subdivision steps will be taken (the more, the longer it will take, but the results should be better) 
	- numresults defines how many results should result out of this worker (1 = only the best result, 2 = the best and the second best result...)-->
	<worker steps="15" numresults="2" >
		<!-- Currently only the areas "LeftEye", "RightEye", "Nose", "Mouth" and "Complete Face" area availible -->
		<area name="LeftEye">
			<!-- defines that the target graphmass for the area LeftEye should be 0.35 
			currently only the target_value graphmass is supported -->
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="RightEye">
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="Nose">
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="Mouth">
			<target_value name="graphmass" value="0.35" />
		</area>
		<area name="Complete Face">
			<target_value name="graphmass" value="0.25" />
		</area>
	</worker>
	<worker steps="15" numresults="1" >
		<area name="Complete Face">
			<target_value name="graphmass" value="0.25" />
		</area>
	</worker>
</explore_settings>
}}}

If we now send a request to the face_contour_detector the first two proposals displayed in the gui will be form our old worker and the third one will be from our newly added one.