Mission file: missions/mapir_rhodon_demo_lab33b1_emptyRoom/Mission.moos



Mission file Short description Modules
missions/mapir_rhodon_demo_lab33b1_emptyRoom/Mission.moos (no description) Agenda , Executor , GasSourceLocalization , GenericSensor , JoystickControl , LocalizationFusion, LocalizationPF, MCENose, MobileRobot_Pioneer , MOOSDB, NavigatorReactivePTG , Planner , Rawlog-grabber, RobotGUI2010 , StateChart, Trunk , VoiceVerbio , WorldModel

Mission modules graph:

Raw file contents:

/////////////////////////////////////////////
// Antler configuration  block

ProcessConfig = ANTLER
{
	MSBetweenLaunches 	= 200

	
	//crucial processes
	Run = MOOSDB        			@  NewConsole = false	
	Run = pStateChart 				@  NewConsole = true	//Graph with the task to perform. They are passed to the Agenda one by one.
	Run = pAgenda 					@  NewConsole = true
	Run = pPlanner 					@  NewConsole = true
	Run = pExecutor 				@  NewConsole = true	
	Run = pWorldModel 				@  NewConsole = true	//Graph with the available nodes and paths
	Run = pLocalizationPF     	    @  NewConsole = false
	Run = pLocalizationFusion    	@  NewConsole = false
	Run = pNavigatorReactivePTG  	@  NewConsole = false
	Run = iRobotGUI2010     		@  NewConsole = false
	Run = pRawlog-grabber			@  NewConsole = false	
	
	//Sensors and Actuators
	Run = pMobileRobot_Pioneer 		@  NewConsole = true
	Run = pGenericSensor			@  NewConsole = false ~ LASER_BACK		//Hokuyo
	Run = pGenericSensor	    	@  NewConsole = false ~ LASER_SICK
	Run = pMCENose     				@  NewConsole = true	
	Run = pTrunk       				@  NewConsole = true
	Run = pGasSourceLocalization	@  NewConsole = true
	Run = pJoystickControl     		@  NewConsole = false
	
	//Run = pNeck       			@  NewConsole = false
	Run = pVoiceVerbio 				@   NewConsole =true
	
	
	// MOOS-Scope: Visualizer of MOOS-DB	

}

//---------------- CRUCIAL PROCESS -------------------//

ProcessConfig = pStateChart
{
	CommsTick = 15
	AppTick = 15
	objective_file = Objetivo.scxml
}

ProcessConfig = pAgenda
{	
	CommsTick = 2
	AppTick = 2
}

ProcessConfig = pCommon
{
	num_actions = 1
	actions_names = SAY@MOVE@SAY_TIME@PAUSE_MOVE@RESUME_MOVE@TRACK_OBJECT@STOP_TRACK_OBJECT@PLAY_ITEM@HELLO@START@FIN@WAIT_TO_START@WAIT_TO_PRESENT@PRESENT@SAY_JOKES@END_SAY_JOKES@WAIT_TO_GO@LOOK_AT@PUBLISH

	num_elements = 1      //here by now, it should be published by the world model module
}

ProcessConfig = pPlanner
{
	CommsTick = 25
	AppTick = 25

	world_model = demo.gph
	planning_domain = domain.pddl

	num_actions = 19
	//Action Compatibility
	actions_names = SAY@MOVE@SAY_TIME@PAUSE_MOVE@RESUME_MOVE@TRACK_OBJECT@STOP_TRACK_OBJECT@PLAY_ITEM@HELLO@START@FIN@WAIT_TO_START@WAIT_TO_PRESENT@PRESENT@SAY_JOKES@END_SAY_JOKES@WAIT_TO_GO@LOOK_AT@PUBLISH

	action0 = MOVE PAUSE_MOVE WAIT_TO_START WAIT_TO_GO
	action1 = SAY SAY_TIME PAUSE_MOVE RESUME_MOVE WAIT_TO_START WAIT_TO_GO WAIT_TO_PRESENT PLAY_ITEM
	action2 = MOVE PAUSE_MOVE WAIT_TO_START
	action3 = MOVE SAY SAY_TIME
	action4 = SAY SAY_TIME PAUSE_MOVE
	action5 = SAY SAY_TIME
	action6 = TRACK_OBJECT SAY SAY_TIME
	action7 = PAUSE_MOVE STOP_TRACK_OBJECT WAIT_TO_START END LOOK_AT MOVE
	action8 = MOVE WAIT_TO_START
	action9 = MOVE WAIT_TO_START
	action10 = MOVE PLAY_ITEM WAIT_TO_GO
	action11 = SAY SAY_TIME PLAY_ITEM START MOVE PRESENT
	action12 = SAY SAY_TIME PLAY_ITEM PRESENT MOVE WAIT_TO_PRESENT WAIT_TO_START LOOK_AT
	action13 = WAIT_TO_PRESENT
	action14 = MOVE PAUSE_MOVE SAY SAY_TIME RESUME_MOVE
	action15 = SAY_JOKES
	action16 = MOVE
	action17 = PLAY_ITEM WAIT_TO_PRESENT 
	action18 = PLAY_ITEM WAIT_TO_PRESENT 
	
	//This means that the action 0 (SAY) is compatible with action 1 (MOVE) and vice versa
}

ProcessConfig = pExecutor
{
	CommsTick = 25
	AppTick = 25

	num_jokes = 11
	joke1=Soy como robocop. Tengo los nervios de acero.
	joke2=De mi cerebro cibernético salen pepitas de oro.
	joke3=Este es mi lugar de trabajo. Aquí paseo sin parar hasta que me quedo sin baterías.
	joke4=Ya va haciendo calorcito no? O es que se me empiezan a chamuscar mis circuitos?
	joke5=Creo que me a mi también me está afectando la nube del volcán.
	joke6=Hola soy Sancho el guardian del laboratorio
	joke7=Mira que insisto pero, no me quieren construir una compañera robótica.
	joke8=Para empezar bien el día no hay nada mejor que un buen chupito de aceite.
	joke9=Queréis que os cuente un chiste?. Mejor no, seguro que no lo íbais a pillar
	joke10=Tengo muy mala memoria. Igual me estoy repitiendo. O no, no me acuerdo.
	joke11=Juas Juas
	joke12=
	joke13=
	joke14=
	joke15=
	joke16=

}

ProcessConfig = pWorldModel
{
	CommsTick = 15
	AppTick = 15
	world_model_file = zig_zag_lab33b1.xml
	//test_lab236.xml
}

ProcessConfig = pLocalizationPF
{
	CommsTick = 2
	AppTick = 2

	// The map used as a reference for localization
	// ---------------------------------------------------------
	// If "simplemap_file" is present, the other map entries are ignored.
	//simplemap_file = granada_22MAR2010.simplemap
	//simplemap_file = 26_MAY_2009_sancho_lab_seminario_pasillo.simplemap
	simplemap_file = Lab_3_3_b_1_empty.simplemap


	//gridmap_image_file	= example_map1.png
	//gridmap_image_res	= 0.05		// Resolution: Size of each pixel (meters)
	//gridmap_image_cx	= 100		// Pixel coordinates of the origin (0,0)
	//gridmap_image_cy	= 100		//  If not present, use the image center.

	// Initial uniform distribution:
	X_MIN		= -2
	X_MAX		= 2
	Y_MIN		= -2
	Y_MAX		= 2

	// Number of initial particles
	sampleSize=20000

	// The Particle Filter algorithm:
	//	0: pfStandardProposal	  ***
	//	1: pfAuxiliaryPFStandard
	//	2: pfOptimalProposal    
	//	3: pfAuxiliaryPFOptimal	  ***
	//
	PF_algorithm=0

	// The Particle Filter Resampling method:
	//	0: prMultinomial
	//	1: prResidual
	//	2: prStratified
	//	3: prSystematic
	resamplingMethod=0

	// Set to 1 to enable KLD adaptive sample size:
	adaptiveSampleSize=1

	// Only for algorithm=3 (pfAuxiliaryPFOptimal)
	pfAuxFilterOptimal_MaximumSearchSamples=250

	// Resampling threshold
	BETA=0.5

	// KLD-sampling
	KLD_binSize_PHI_deg=2.5
	KLD_binSize_XY=0.07
	KLD_delta=0.01
	KLD_epsilon=0.01
	KLD_maxSampleSize=40000
	KLD_minSampleSize=150

	// ====================================================
	//            MULTIMETRIC MAP CONFIGURATION
	// ====================================================
//	[MetricMap]
	// Creation of maps:
	occupancyGrid_count = 1 
	gasGrid_count       = 0
	landmarksMap_count  = 0
	pointsMap_count     = 0
	beaconMap_count     = 0

	// Selection of map for likelihood: (fuseAll=-1,occGrid=0, points=1,landmarks=2,gasGrid=3)
	likelihoodMapSelection=-1

	// ====================================================
	//   MULTIMETRIC MAP: OccGrid #00
	// ====================================================
	// Creation Options for OccupancyGridMap 00:
	//	[MetricMap_occupancyGrid_00_creationOpts]
	resolution=0.10

	// Insertion Options for OccupancyGridMap 00:
	//	[MetricMap_occupancyGrid_00_insertOpts]
	mapAltitude=0
	useMapAltitude=0
	maxDistanceInsertion=15
	maxOccupancyUpdateCertainty=0.55
	considerInvalidRangesAsFreeSpace=0
	minLaserScanNoiseStd=0.001

	// Likelihood Options for OccupancyGridMap 00:
	//	[MetricMap_occupancyGrid_00_likelihoodOpts]
	likelihoodMethod=4		// 0=MI, 1=Beam Model, 2=RSLC, 3=Cells Difs, 4=LF_Trun, 5=LF_II

	LF_decimation=20
	LF_stdHit=0.20
	LF_maxCorrsDistance=0.30
	LF_zHit=0.95
	LF_zRandom=0.05
	LF_maxRange=80
	LF_alternateAverageMethod=0
}

ProcessConfig = pLocalizationFusion
{
	CommsTick = 30
	AppTick = 30
}

ProcessConfig = pNavigatorReactivePTG
{
	CommsTick = 10
	AppTick = 10

	// [xs...; ys...; zs...]
	virtual_obstacles_file = lab_virtual_obs.txt


	//[ROBOT_NAME]

	Name=SANCHO

	//[GLOBAL_CONFIG]
	// 0: VFF,  1: ND
	HOLONOMIC_METHOD=1
	debugWindows=1
	ALARM_SEEMS_NOT_APPROACHING_TARGET_TIMEOUT=100

	// ----------------------------------------------------
	//	Parameters for the "Nearness diagram" Holonomic method
	// ----------------------------------------------------
	//[ND_CONFIG]
	factorWeights=[1.0,0.5,2.0,0.4]
	// 1: Free space
	// 2: Dist. in sectors
	// 3: Closer to target (euclidean)
	// 4: Hysteresis

	WIDE_GAP_SIZE_PERCENT=0.50
	MAX_SECTOR_DIST_FOR_D2_PERCENT=0.25
	RISK_EVALUATION_SECTORS_PERCENT=0.25
	RISK_EVALUATION_DISTANCE=0.15		
	TARGET_SLOW_APPROACHING_DISTANCE=0.3
	TOO_CLOSE_OBSTACLE=0.02	

	// ----------------------------------------------------
	//	Parameters for the navigation on the ROBOT
	// ----------------------------------------------------
	//[THE_ROBOT]
	weights=[0.5, 0.05, 0.5, 2.0, 0.5, 0.1]
	// 1: Free space
	// 2: Dist. in sectors			
	// 3: Heading toward target
	// 4: Closer to target (euclidean)
	// 5: Hysteresis
	// 6: Security Distance

	DIST_TO_TARGET_FOR_SENDING_EVENT=0.30 //1.25	
	// Minimum. distance to target for sending the end event. Set to 0 to send it just on navigation end

	MinObstaclesHeight=0.08
	// Minimum coordinate in the "z" axis for an obstacle to be taken into account.

	MaxObstaclesHeight=1.20 		
	//Maximum coordinate in the "z" axis for an obstacle to be taken into account.

	robotMax_V_mps=0.2			
	//Speed limits

	robotMax_W_degps=20

	ROBOTMODEL_DELAY=0			
	// The delay until motor reaction

	ROBOTMODEL_TAU=0			
	// The TAU time constant of a first order lowpass filter

	MAX_REFERENCE_DISTANCE=4.50
	WIDE_GAP_SIZE_PERCENT=0.40
	RISK_EVALUATION_DISTANCE=0.1
	RISK_EVALUATION_SECTORS_PERCENT=0.20
	MAX_SECTOR_DIST_FOR_D2_PERCENT=0.25
	RESOLUCION_REJILLA_X=0.03
	RESOLUCION_REJILLA_Y=0.03

	PTG_COUNT=3

	// 		C-PTGs:
	// ------------------------------------
	PTG0_Type=1
	PTG0_nAlfas=300
	PTG0_v_max_mps=0.8
	PTG0_w_max_gps=40	Run = pNeck       @       NewConsole=false

	PTG0_K=1.0

	PTG1_Type=1
	PTG1_nAlfas=300
	PTG1_v_max_mps=0.4
	PTG1_w_max_gps=40
	PTG1_K=-1.0

	//	     a-A type PTGs:
	// ------------------------------------
	PTG2_Type=2
	PTG2_nAlfas=300
	PTG2_v_max_mps=0.8
	PTG2_w_max_gps=40
	PTG2_cte_a0v_deg=30
	PTG2_cte_a0w_deg=40

	RobotModel_shape2D_xs=[-0.35, 0.65, 0.65, -0.35]
	RobotModel_shape2D_ys=[0.35, 0.35, -0.40, -0.40]

}

ProcessConfig = pRawlog-grabber
{
	AppTick = 15			//Hz
	CommsTick = 15			//Hz
}




//--------------------- SENSORS AND ACTUATORS -----------------------------//

ProcessConfig = pMobileRobot_Pioneer
{
	CommsTick = 10
	AppTick = 10

	driver				= CActivMediaRobotBase
	robotPort_WIN 		= COM5
	robotPort_LIN 		= /dev/ttyUSB0
	robotBaud			= 115200
	enableSonars        = 0     // 0:Disabled (default), 1: Enabled

}

ProcessConfig = pMCEnose
{
	AppTick = 15			//Hz
	CommsTick = 15			//Hz
	
	//MCE-nose parameters
	num_chambers = 4		//Number of chambers
	num_sensors_chamber = 7	//Number of sensors on each cahmber
	strategy = 2			//Switching strategy 0->NoSwitching, 1->Periodic, 2->Adaptive 3->Calibration(all open), 4->Combination(MCE+enose)
	sensorID = 9282 		//Sensor ID to be monitored for the Switching strategy --> 0 = mean, 9282=0x2442
	minActiveTime = 0		//Minimun time [sec] a chamber must be active (odor flooded). In periodic Switching this is the Period
	decayValue = 0.05		//[Adaptive switching] Decay in the active chamber readings (%) to consider a decay phase --> Switch to other chamber (maxValue - maxValue*decayPercent/100.0 )
	graphics = 2			////0 = Nothing to display ,1 = Display only MCE-output ,2 = display all chambers
	graphics_min_x = -20	//[graphics =1] min value on the X axis plot (time)
	graphics_max_x = 220	//[graphics =1] max value on the X axis plot (time)
	min_diff = 0.25			//Minimum reading difference between the actual AC and the candidate AC, to allow switching
	delay = 2.8				//Delay introduced by the pneumatic system
	useMOSmodel = false		//Indicates if the MOSmodel must be used withing the smelling task
	
	//MOSmodel parameters
	tauR = 2.5 													//1.94	// Value for 0x2600 and 0x2620
	winNoise_size = 30	    									//[useMOSmodel] size for windows noise filtering
	decimate_value = 6											//[useMOSmodel] decimation value after noise filtering
	lastObservations_size = 5									//Must be higher than max delay_value/decimate_value
	calibrated_tauD_voltages = [0.5 0.983 1.263 2.01]			//Voltages values of the sensorID at the calibration points.
	calibrated_tauD_values = [5.8 5.8 7.6 13]					//Tau_d
	calibrated_delay_RobotSpeeds = [0.022 0.072 0.146 0.21]		//[m/s]
	calibrated_delay_values	= [4 12 20 24]						//Number of delayed samples before decimation
	save_maplog = false
	
	//Connection
	driver = CBoardENoses
	process_rate = 5 //Hz
	sensorLabel = MCEnose
	USB_serialname = ENOSE001
	
	COM_port_WIN = COM6
	COM_baudRate = 38400

	//3D position (in meters) of the eNose
	enose_poses_x = 0.66
	enose_poses_y = 0.0
	enose_poses_z = 0.09

	//3D pose angles (in degrees) of the eNose
	enose_poses_yaw = 0
	enose_poses_pitch = 0
	enose_poses_roll = 0	
}

ProcessConfig = LASER_BACK
{
	CommsTick = 100
	AppTick = 200

	driver			= CHokuyoURG
	process_rate		= 90		; Hz
	grab_decimation		= 3

	sensorLabel  	= LASER2
	pose_x			= -0.25	; Laser range scaner 3D position in the robot (meters)
	pose_y			= 0
	pose_z			= 0.43

	pose_yaw		= 180	; Angles in degrees
	pose_pitch		= 0
	pose_roll		= 0

	COM_port_WIN	= COM7
	COM_port_LIN	= ttyACM_FRONT

	// Optional: Exclusion zones to avoid the robot seeing itself:
	//exclusionZone1_x = -0.0.20 0.30 0.30 0.20
	//exclusionZone1_y = 0.20 0.30 0.30 0.20

	// Optional: Exclusion zones to avoid the robot seeing itself:
	exclusionAngles1_ini = 100  // Deg
	exclusionAngles1_end =-100  // Deg

}

ProcessConfig = LASER_SICK
{
	CommsTick = 100
	AppTick = 200
	
	driver			= CSickLaserSerial
	process_rate	= 90		// Hz

	sensorLabel  	= LASER1
	pose_x			= 0.05	; Laser range scaner 3D position in the robot (meters)
	pose_y			= 0
	pose_z			= 0.29
	pose_yaw		= 0	; Angles in degrees
	pose_pitch		= 0
	pose_roll		= 180

	mm_mode 		= 0   	// 1: millimeter mode, 0:centimeter mode (Default=0)

	COM_port_WIN	= COM4
	COM_port_LIN	= ttyUSB0

	COM_baudRate 	= 500000
	resolution 		= 100          	// 100=1 deg, 50=0.5deg, 25=0.25 deg
	FOV				= 180			// 180 or 100 deg

	exclusionAngles1_ini = 70  // Deg
	exclusionAngles1_end =-70  // Deg
	
	// Optional: Exclusion zones to avoid the robot seeing itself(e-nose):
	exclusionZone1_x = 0.60 0.40 0.40 0.60
	exclusionZone1_y = 0.25 0.25 -0.25 -0.25
}


ProcessConfig = iRobotGUI2010
{
	CommsTick = 4
	AppTick = 4

	// The 3D model of the robot (empty: default model)
	//robot_3DS_model_file = ./mapir_sancho_robot.3ds.gz

}

ProcessConfig = pNeck
{
	CommsTick = 4
	AppTick = 4

	filterDepth = 10
	truncateFactor = 0.5	//The maximum and minimum angle of the neck will be set to +-truncatefactor*pi/2
}

ProcessConfig = pTrunk
{
	CommsTick = 20
	AppTick = 20

	filterDepth = 10
	truncateFactor = 0.5	//The maximum and minimum angle of the neck will be set to +-truncatefactor*pi/2
}
ProcessConfig = pGasSourceLocalization
{
	CommsTick = 20
	AppTick = 20

	behavior = 3			//0 = map + reactive+ statechart , 1 = auto map, 2 = gas search, 3 = inspect the room and go back to max concentration
	secure_distance = 0.7
	sensorID = 9282 		// Sensor ID to be monitored for the Switching strategy --> 0 = mean, 9282=0x2442
	umbralDetec = 0.8		// if the MCE-nose reading > umbralDetc --> A source is considered to be near and a slow exploration is carried out.
	max_v = 0.1				// Maximum linear speed (m/s)
	max_w = 15				// Maximum angular speed (deg/s)
	angle_inc_moving = 1.0
	angle_inc_stopped = 0.5			// Increment (deg) for the nose searching movement
	max_angle =	20.0					// total angle will be +- max_angle
}

ProcessConfig = pJoystickControl
{
	CommsTick = 15
	AppTick = 10

	max_v	= 0.1	// Maximum linear speed (m/s)
	max_w	= 15	// Maximum angular speed (deg/s)
}



ProcessConfig = pVoiceVerbio
{
	CommsTick = 25
	AppTick = 25

	say_welcome = Hola Javier, es un placer estar aquí
	say_welcome1 = Sí, estoy preparado y con muchas ganas de que me conozcáis

;;	action0=SAY#NT#decir#LOCATION
;;	action1=MOVE#T#navegar#LOCATION

	action0=SAY_TIME#NT#sancho  dime la hora,sancho que hora es#
	action1=PAUSE_MOVE#NT#sancho para,sancho parate#
	action2=RESUME_MOVE#NT#sancho sigue,sancho puedes seguir#
;;	action3=TRACK_OBJECT#NT#mira aqui,busca,busca busca,mira lo que tengo#
;;	action3=STOP_TRACK_OBJECT#NT#deja de mirar,no mires,deja de buscar#

	action3=PRESENT#NT#sancho comienza la presentación#
	action4=HELLO#NT#hola sancho#
	action5=HELLO1#NT#sancho estás preparado#
	action6=END#NT#sancho puedes irte#
	action7=WAIT_TO_START#NT#estado inicial#
	action8=START#NT#sancho ven aquí#
	action9=WAIT_TO_PRESENT#NT#estado esperando presentacion#
;;	action10=SAY_JOKES#NT#Sancho, cuentame un chiste#
;;	action11=END_SAY_JOKES#NT#Sancho callate#
	action10=WAIT_TO_GO#NT#estado esperando irse#
;;	action17=LOOK_AT#NT#mira al destino#
	action18=PUBLISH#NT#publica#



	element0=n3#LOCATION#laboratorio de malga,M,S#dos tres seis siete ocho,M,S


}




Page generated by Mooxygen 1.1.0 at Mon May 26 00:30:12 2014
Valid HTML 4.01 Transitional