/////////////////////////////////////////////
// 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 = test_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_laser2.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
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
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
}