//-------------------------------------------------
// NAME: M. Benjamin, MIT CSAIL
// FILE: alpha.moos
//-------------------------------------------------

ServerHost = localhost		
ServerPort = 9000
Community  = alpha

MOOSTimeWarp = 1

// Forest Lake
//LatOrigin  = 43.825300 
//LongOrigin = -70.330400 

// MIT Sailing Pavilion (use this one)
//LatOrigin  = 42.358456 
//LongOrigin = -71.087589

// Marina Bay, Singapore                                                                                       
LatOrigin  =    1.286164
LongOrigin =  103.856314

//------------------------------------------
// Antler configuration  block
ProcessConfig = ANTLER
{
  MSBetweenLaunches = 200

  Run = MOOSDB          @ NewConsole = false
  Run = pLogger         @ NewConsole = false
  Run = uSimMarine      @ NewConsole = false
  Run = pMarinePID      @ NewConsole = false
  Run = pHelmIvP        @ NewConsole = false
  Run = pMarineViewer	  @ NewConsole = false
  Run = uProcessWatch	  @ NewConsole = false
  Run = pNodeReporter	  @ NewConsole = false
  Run = pObstacleMgr	  @ NewConsole = false
  Run = uTimerScript    @ NewConsole = false
}

//------------------------------------------
ProcessConfig = pObstacleMgr
{
  AppTick   = 2
  CommsTick = 2
}

//------------------------------------------
ProcessConfig = uTimerScript                                    
{                                                               
  AppTick   = 4                                                 
  CommsTick = 4                                                 
  
	delay_start = 1

  rand_var    = varname=RND_AX, type=gaussian, min=380, max=390, mu=385, sigma=2, key=at_reset
  rand_var    = varname=RND_AY, type=gaussian, min=200, max=208, mu=204, sigma=2, key=at_reset

  rand_var    = varname=RND_BX, type=gaussian, min=390, max=400, mu=395, sigma=2, key=at_reset
  rand_var    = varname=RND_BY, type=gaussian, min=200, max=210, mu=205, sigma=2, key=at_reset

  rand_var    = varname=RND_CX, type=gaussian, min=386, max=396, mu=391, sigma=2, key=at_reset
  rand_var    = varname=RND_CY, type=gaussian, min=187, max=197, mu=192, sigma=2, key=at_reset
                                           
  rand_var    = varname=RND_DX, type=gaussian, min=381, max=391, mu=386, sigma=2, key=at_reset
  rand_var    = varname=RND_DY, type=gaussian, min=172, max=182, mu=177, sigma=2, key=at_reset
                                           
  rand_var    = varname=RND_EX, type=gaussian, min=383, max=393, mu=388, sigma=2, key=at_reset
  rand_var    = varname=RND_EY, type=gaussian, min=192, max=202, mu=197, sigma=2, key=at_reset
                                           
  rand_var    = varname=RND_FX, type=gaussian, min=381, max=391, mu=386, sigma=2, key=at_reset
  rand_var    = varname=RND_FY, type=gaussian, min=182, max=192, mu=187, sigma=2, key=at_reset
                                           
  rand_var    = varname=RND_GX, type=gaussian, min=387, max=397, mu=392, sigma=2, key=at_reset
  rand_var    = varname=RND_GY, type=gaussian, min=193, max=205, mu=198, sigma=2, key=at_reset
                                           
  reset_max   = 8
  reset_time  = all-posted

	event       = var=VIEW_POLYGON, val="pts={380,212 : 402,212 : 403,170 : 381,168}, edge_color=gray60, vertex_color=dodger_blue"


	event       = var=VIEW_POINT, val="x=$[RND_AX],y=$[RND_AY],active=true,label=$[TCOUNT],msg=a,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=1.44
	event       = var=VIEW_POINT, val="x=$[RND_BX],y=$[RND_BY],active=true,label=$[TCOUNT],msg=b,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=2
	event       = var=VIEW_POINT, val="x=$[RND_CX],y=$[RND_CY],active=true,label=$[TCOUNT],msg=c,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=2.3
	event       = var=VIEW_POINT, val="x=$[RND_DX],y=$[RND_DY],active=true,label=$[TCOUNT],msg=d,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=2.3
	event       = var=VIEW_POINT, val="x=$[RND_EX],y=$[RND_EY],active=true,label=$[TCOUNT],msg=e,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=2.3
	event       = var=VIEW_POINT, val="x=$[RND_FX],y=$[RND_FY],active=true,label=$[TCOUNT],msg=f,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=2.3
	event       = var=VIEW_POINT, val="x=$[RND_GX],y=$[RND_GY],active=true,label=$[TCOUNT],msg=g,type=obstacle,label_color=invisible,vertex_color=grey60,vertex_size=1", time=2.3

	event       = var=TRACKED_FEATURE, val="x=$[RND_AX],y=$[RND_AY],label=a,color=1,size=2", time=1.44
	event       = var=TRACKED_FEATURE, val="x=$[RND_BX],y=$[RND_BY],label=b,color=2,size=2", time=2
	event       = var=TRACKED_FEATURE, val="x=$[RND_CX],y=$[RND_CY],label=c,color=3,size=2", time=2.3
	event       = var=TRACKED_FEATURE, val="x=$[RND_DX],y=$[RND_DY],label=d,color=3,size=2", time=2.3
	event       = var=TRACKED_FEATURE, val="x=$[RND_EX],y=$[RND_EY],label=e,color=3,size=2", time=2.3
	event       = var=TRACKED_FEATURE, val="x=$[RND_FX],y=$[RND_FY],label=f,color=3,size=2", time=2.3
	event       = var=TRACKED_FEATURE, val="x=$[RND_GX],y=$[RND_GY],label=g,color=3,size=2", time=2.3
}                                                               

//------------------------------------------
// uProcessWatch config block

ProcessConfig = uProcessWatch
{
  AppTick   = 4
  CommsTick = 4

  summary_wait = 5

  nowatch   = uXMS*
  nowatch   = uMAC*
  nowatch   = uPokeDB*
  nowatch   = uTermCommand*
  watch_all = true
}


//------------------------------------------
// pLogger config block

ProcessConfig = pLogger
{
  AppTick   = 8
  CommsTick = 8

  AsyncLog = true

  // For variables that are published in a bundle on their first post,
  // explicitly declare their logging request

  Log = IVPHELM_LIFE_EVENT @ 0 NOSYNC
  Log = BHV_WARNING @ 0 NOSYNC

  LogAuxSrc = true
  WildCardLogging = true
  WildCardOmitPattern = *_STATUS
  WildCardOmitPattern = DB_VARSUMMARY
  WildCardOmitPattern = DB_RWSUMMARY
  WildCardExclusionLog = true
}

//------------------------------------------
// uSimMarine config block

ProcessConfig = uSimMarine
{
  AppTick	= 4
  CommsTick	= 4

  start_x       = 390
  start_y       = 260
  start_heading = 180
  start_speed   = 0
	max_deceleration = 0.1
  prefix        = NAV

  turn_rate     = 100
  thrust_map    = 0:0, 20:1, 40:2, 60:3, 80:4, 100:5
	thrust_reflect = true
}

//------------------------------------------
// pHelmIvP config block

ProcessConfig = pHelmIvP
{
  AppTick    = 2
  CommsTick  = 2

  term_report_interval=0

  bhv_dir_not_found_ok = true
  ivp_behavior_dir = /Users/ddmikerb

  behaviors  = alpha.bhv
  domain     = course:0:359:360
  domain     = speed:0:4:21
}

//------------------------------------------
// pMarinePID config block

ProcessConfig = pMarinePID
{
  AppTick    = 20
  CommsTick  = 20

  verbose       = true
  depth_control = false

  // SIM_INSTABILITY = 20

  // Yaw PID controller
  yaw_pid_kp		 = 1.2
  yaw_pid_kd		 = 0.0
  yaw_pid_ki		 = 0.3
  yaw_pid_integral_limit = 0.07

  // Speed PID controller
  speed_pid_kp		 = 1.0
  speed_pid_kd		 = 0.0
  speed_pid_ki		 = 0.0
  speed_pid_integral_limit = 0.07

  //MAXIMUMS
  maxrudder    = 100
  maxthrust    = 100

  // A non-zero SPEED_FACTOR overrides use of SPEED_PID
  // Will set DESIRED_THRUST = DESIRED_SPEED * SPEED_FACTOR
  speed_factor = 20
}

//------------------------------------------
// pMarineViewer config block

ProcessConfig = pMarineViewer
{
  AppTick    = 4
  CommsTick  = 4

  tiff_file            = AerialSingapore.tif

  set_pan_x            = -262
  set_pan_y            = -181
  zoom                 = 5.42

  vehicle_shape_scale  = 0.35
  hash_delta           = 50
  hash_shade           = 0.4
  hash_viewable        = true

  trails_point_size    = 1

  // Appcast configuration
  appcast_height       = 75
  appcast_width        = 30
  appcast_viewable     = true
  appcast_color_scheme = indigo
  nodes_font_size      = medium
  procs_font_size      = medium
  appcast_font_size    = small
  
  //left_context[polyvert] = POLY_VERT=x=$(XPOS),y=$(YPOS)
  left_context[pt] = VIEW_POINT = x=$(XPOS),y=$(YPOS),label=pt$(IX),vertex_color=white
	
  scope  = DST_AVD_OBSTACLESC
  scope  = RNG_AVD_OBSTACLESC
  scope  = RNG_AVD_OBSTACLESA
  scope  = POSE_KEEP
  scope  = VIEW_POLYGON
  scope  = VIEW_POINT
	scope  = RETURN
  scope  = WPT_STAT
  scope  = VIEW_SEGLIST

  button_one = DEPLOY # DEPLOY=true
  button_one = MOOS_MANUAL_OVERRIDE=false # RETURN=false
  button_two = RETURN # RETURN=true
}

//------------------------------------------
// pNodeReporter config block

ProcessConfig = pNodeReporter
{
  AppTick    = 2
  CommsTick	 = 2

  platform_type   = wamv
  platform_length = 10
}

