//------------------------------------------------- // NAME: Tyler Paine adapted from M. Benjamin, MIT //------------------------------------------------- ServerHost = localhost ServerPort = $(MOOS_PORT) Community = $(VNAME) #define REGION1_COLOR red #define REGION2_COLOR green #define REGION3_COLOR yellow #define REGION4_COLOR orange #define REGION5_COLOR pink #define REGION1 x=40,y=-70 #define REGION2 x=126.6,y=-220.0 #define REGION3 x=-46.6,y=-220.0 #include plugs.moos //------------------------------------------------------------ Processconfig = ANTLER { MSBetweenLaunches = 50 Run = MOOSDB @ NewConsole = false Run = pLogger @ NewConsole = false Run = pNodeReporter @ NewConsole = false Run = pMarinePIDV22 @ NewConsole = false Run = pHelmIvP @ NewConsole = false Run = uProcessWatch @ NewConsole = false Run = pContactMgrV20 @ NewConsole = false Run = pShare @ NewConsole = false Run = pHostInfo @ NewConsole = false Run = uFldMessageHandler @ NewConsole = false Run = uFldNodeBroker @ NewConsole = false Run = uLoadWatch @ NewConsole = false Run = pRealm @ NewConsole = false //Run = pOdometry @ NewConsole = false Run = pOpinionManager @ NewConsole = false Run = uTimerScript @ NewConsole = false Run = uOptionMarker @ NewConsole = false Run = uUtilVectorMarker @ NewConsole = false Run = pSumVars @ NewConsole = false #ifdef XMODE SIM Run = uSimMarineV22 @ NewConsole = false #elseifdef XMODE M300 Run = iM300 @ NewConsole = false Run = iM300Health @ NewConsole = false #endif } #ifdef XMODE SIM #include plugs.moos #elseifdef XMODE M300 #include plugs.moos #include plugs.moos #endif #include plugs.moos #include plugs.moos #include plugs.moos #include plugs.moos //---------------------------------------------------- // pHelmIvP Config Block ProcessConfig = pHelmIvP { AppTick = 3 CommsTick = 3 ok_skew = any behaviors = targ_$(VNAME).bhv verbose = false domain = course:0:359:360 domain = speed:0:4:21 goals_mandatory = true hold_on_app = pContactMgrV20 } //-------------------------------------------------------- // pNodeReporter Config Block ProcessConfig = pNodeReporter { AppTick = 4 CommsTick = 4 #ifdef VNAME abe platform_type = kayak platform_color = cyan #elseifdef VNAME ben platform_type = kayak platform_color = cyan #elseifdef VNAME cal platform_type = kayak platform_color = cyan #elseifdef VNAME deb platform_type = kayak platform_color = cyan #else platform_type = heron #endif } //-------------------------------------------------------- // pContactMgrV20 Config Block ProcessConfig = pContactMgrV20 { AppTick = 2 CommsTick = 2 decay = 10,20 //decay = 30,60 alert_verbose = true contact_max_age = 35 display_radii = true display_radii_id = avd post_closest_range = true display_radii = true alert_range_color = gray70 cpa_range_color = gray30 hold_alerts_for_helm = true } //-------------------------------------------------- // uFldNodeBroker Config Block ProcessConfig = uFldNodeBroker { AppTick = 1 CommsTick = 1 try_shore_host = pshare_route=$(SHORE_IP):$(SHORE_PSHARE) //try_shore_host = pshare_route=128.30.24.232:9200 bridge = src=ARRIVAL bridge = src=COLREGS_AVOID_MODE bridge = src=AVDCOL_MODE bridge = src=VIEW_POLYGON bridge = src=VIEW_POINT bridge = src=VIEW_CIRCLE bridge = src=VIEW_SEGLIST bridge = src=VIEW_VECTOR bridge = src=VEHICLE_CONNECT bridge = src=APPCAST bridge = src=BCM_DETECTION_DIST bridge = src=READY_HOLD bridge = src=NODE_REPORT_LOCAL, alias=NODE_REPORT bridge = src=NODE_MESSAGE_LOCAL, alias=NODE_MESSAGE bridge = src=OPTION_INPUT1, alias=TOTAL_UTILITY_REGION1_$(VNAME) bridge = src=OPTION_INPUT2, alias=TOTAL_UTILITY_REGION2_$(VNAME) bridge = src=OPTION_INPUT3, alias=TOTAL_UTILITY_REGION3_$(VNAME) bridge = src=OPTION, alias=OPTION_$(VNAME) } //-------------------------------------------------- // uFldMessageHandler Config Block ProcessConfig = uFldMessageHandler { AppTick = 3 CommsTick = 3 strict_addressing = false } //----------------------------------------------------- // pMarinePIDV22 Config Block ProcessConfig = pMarinePIDV22 { AppTick = 2 CommsTick = 2 verbose = true depth_control = false active_start = true // Yaw PID controller yaw_pid_kp = 1.2 yaw_pid_kd = 0.1 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 } //-------------------------------------------------- // pLogger Config Block ProcessConfig = pLogger { AppTick = 10 CommsTick = 10 File = LOG_%(VNAME) PATH = ./ AsyncLog = true FileTimeStamp = true Log = IVPHELM_LIFE_EVENT @ 0 nosync // Log it all!!!!! LogAuxSrc = true WildCardLogging = true // Except these fellas WildCardOmitPattern = *_STATUS WildCardOmitPattern = APPCAST WildCardOmitPattern = *_ITER_GAP WildCardOmitPattern = *_ITER_LEN WildCardOmitPattern = PSHARE_OUTPUT_SUMMARY WildCardOmitPattern = DB_VARSUMMARY WildCardOmitPattern = DB_RWSUMMARY WildCardOmitPattern = NAV_SPEED_OVER_GROUND WildCardOmitPattern = SIMULATION_MODE WildCardOmitPattern = TRUE_X WildCardOmitPattern = TRUE_Y WildCardOmitPattern = NAV_PITCH WildCardOmitPattern = NAV_YAW WildCardOmitPattern = NAV_Z WildCardOmitPattern = NODE_PSHARE_VARS WildCardOmitPattern = NODE_BROKER_ACK CompressAlogs = false } //--------------------------------------------------------- // iM300 config block ProcessConfig = iM300 { AppTick = 10 CommsTick = 10 comms_type = client port = 29500 ip_addr = $(FSEAT_IP) stale_thresh = 15 max_rudder = 50 max_thrust = 100 drive_mode = normal ignore_msg = $GPGLL, $GPGSV, $GPVTG, $GPZDA, $CPALT, $CPIMU ignore_msg = $CPNVR, $GPGST, $CPRCM, $GNGLL, $GNGSV, $GNVTG, ignore_msg = $GNZDA, $GLGSV, $GNGSA, $GNTXT ignore_checksum_errors = true max_appcast_events = 8 // max_appcast_run_warnings = 10 // heading_source options are gps, imu, or auto where auto uses imu // when available and not timed out as defined in the stale_thresh // parameter heading_source = auto // threshold in seconds, default is 1.5 stale_thresh = 5 nav_prefix = NAV gps_prefix = GPS compass_prefix = COMPASS } //------------------------------------------------ // iM300Health config block ProcessConfig = iM300Health { AppTick = 4 CommsTick = 4 StaleTime = 3.0 // Time until messages are considered stale MaxHeadingDelta = 5.0 // Max Delta allowable between IMU and GPS LowBattThresh = 13.0 FullBattThresh = 14.4 } //------------------------------------------------ // pOdometry config block ProcessConfig = pOdometry { AppTick = 4 CommsTick = 4 } //---------Dissensus---------------------// #ifdef OPT_MODE dissensus pOpinionManager //------------------------------------------------ // pOpinionManager config block dissensus ProcessConfig = pOpinionManager { AppTick = 2 CommsTick = 2 SocialTick = 1 group = leader // leader, follower //option_file = basic_census.opt option_file = basic_dissensus.opt satFunOrder = 2.0 u_th = 1.75 tau_u = 4.0 min_attention = 1.2 max_attention = 1.2 opinion_thresh = 0.2 node_message_color = white neighbor_msg_stale_thresh = 2.0 // seconds // set sensitivity_g and tau_u internally numerical_int_gain = 0.5 // should be less than 1.0 // Example messages: // OPINION_MESSAGE=VNAME,GROUP,OPTION1_NAME,OPTION1_OPINION,OPTION2_NAME,OPTION2_OPINION // PROPOSAL_MESSAGE=VNAME,OPTIONX_NAME,VALUE_PROPOSITION #ifdef VNAME abe // app_logging = log #endif } #endif //---------Consensus-------------------------// #ifdef OPT_MODE consensus pOpinionManager //------------------------------------------------ // pOpinionManager config block consensus ProcessConfig = pOpinionManager { AppTick = 2 CommsTick = 2 SocialTick = 1 group = leader // leader, follower option_file = basic_census.opt //option_file = basic_dissensus.opt satFunOrder = 2.0 u_th = 1.75 tau_u = 4.0 min_attention = 0.3 max_attention = 0.3 opinion_thresh = 0.01 node_message_color = white neighbor_msg_stale_thresh = 2.0 // seconds // set sensitivity_g and tau_u internally numerical_int_gain = 1.0 // should be less than 1.0 // Example messages: // OPINION_MESSAGE=VNAME,GROUP,OPTION1_NAME,OPTION1_OPINION,OPTION2_NAME,OPTION2_OPINION // PROPOSAL_MESSAGE=VNAME,OPTIONX_NAME,VALUE_PROPOSITION #ifdef VNAME abe // app_logging = log #endif } #endif //------------------------------------------ // uTimerScript configuration block ProcessConfig = uTimerScript { AppTick = 2 CommsTick = 2 paused = false reset_max = unlimited script_name = RAND_OP script_atomic = true reset_var = OPT_INPUT_RESET randvar = varname=L3BIAS, min=0.0, max=0.50, key=at_post randvar = varname=L1BIAS, min=0.00, max=0.50, key=at_post randvar = varname=L2BIAS, min=0.00, max=0.50, key=at_post event = var=UTILITY_REGION3, val=$[L3BIAS], time=1 event = var=UTILITY_REGION1, val=$[L1BIAS], time=1 event = var=UTILITY_REGION2, val=$[L2BIAS], time=1 } //----------------------------------------- // uSumVars configuration block ProcessConfig = PSumVars { AppTick = 2 CommsTick = 2 // OPTION_INPUT1 = VAR1 + VAR2 + ... VARN sum_vars = OPTION_INPUT1:UTILITY_REGION1,BIAS_REGION1 sum_vars = OPTION_INPUT2:UTILITY_REGION2,BIAS_REGION2 sum_vars = OPTION_INPUT3:UTILITY_REGION3,BIAS_REGION3 } //------------------------------------------ // uOptionMarker configuration block ProcessConfig = uOptionMarker { AppTick = 2 CommsTick = 2 edge_size = 3.0 #ifdef VNAME abe radius = 5.0 #elseifdef VNAME ben radius = 5.0 #elseifdef VNAME cal radius = 5.0 #elseifdef VNAME deb radius = 5.0 #else radius = 4.0 #endif opinion_saturated_limit = 0.1 post_circ_with_stale_opinion = true visibility_cond_var = SHOW_MARKER color_set = LOITER1:$(REGION1_COLOR) color_set = LOITER2:$(REGION2_COLOR) color_set = LOITER3:$(REGION3_COLOR) color_set = LOITER4:$(REGION4_COLOR) color_set = LOITER5:$(REGION5_COLOR) } //------------------------------------------- // uUtilVectorMarker ProcessConfig = uUtilVectorMarker { AppTick = 1 CommsTick = 1 head_size = 1 // default is -1 max_magnitude = 200 vect_length_scale = 20 vector_set = var=OPTION_INPUT1:color=$(REGION1_COLOR):point_to=$(REGION1) vector_set = var=OPTION_INPUT2:color=$(REGION2_COLOR):point_to=$(REGION2) vector_set = var=OPTION_INPUT3:color=$(REGION3_COLOR):point_to=$(REGION3) visibility_cond_var = REGROUP }