//******************************************************* // Vehicle behavior configuration file initialize DEPLOY = false initialize RETURN = false initialize STATION_KEEP = true initialize CLUSTER = false initialize DEMUSTER = false initialize AVOID = false set MODE = ACTIVE { DEPLOY = true } INACTIVE set MODE = STATION-KEEPING { MODE = ACTIVE STATION_KEEP = true } set MODE = RETURNING { MODE = ACTIVE RETURN = true } set MODE = CLUSTERING { MODE = ACTIVE CLUSTER = true } set MODE = DECLUSTERING { MODE = ACTIVE DEMUSTER = true } TRAVERSING //---------------------------------------------- Behavior=BHV_Demuster { name = dubins_demuster pwt = 100 updates = DUBIN_UPDATE condition = MODE==DECLUSTERING activeflag = AVOID = false endflag = STATION_KEEP = true endflag = DEMUSTER = false endflag_all = DEMUSTER_COMPLETE = true perpetual = true r = $(TURN_RADIUS) precision = 1 // op_region = pts={90,25:-75,-54:-20,-160:143,-81}, label=area_x // op_region = pts={90,31:-75,-48:-20,-154:143,-75}, label=area_x slowdown_range = $(SLOWDOWN_RANGE) capture_radius = 2.5 slip_radius = 3.5 drift_radius = 0.5 drift_heading = 90 project_first_point = $(PROJECT_FIRST) max_safety_distance = $(DT_SAFETY_MAX) min_safety_distance = $(DT_SAFETY_MIN) max_horizon = $(DT_HORIZON_MAX) min_horizon = $(DT_HORIZON_MIN) default_speed = $(SPEED) temp_block_limit = $(TEMP_BLOCK_LIMIT) show_visualization = true // use_dynamic_speed = $(USE_DYNAMIC_SPEED) mode = $(MODE) #ifdef MODE sequential synchronize = false #else synchronize = $(SYNCHRONIZE) #endif // synchronize = false reverse_thrust = -100 #ifdef XMODE SIM use_compass_heading = false #elseifdef XMODE M300 use_compass_heading = true #endif turn_in_place = $(TURN_IN_PLACE) heading_noise = %(HEADING_DISTURBANCE) } //---------------------------------------------- Behavior = BHV_DemusterTask { name = decluster_task updates = TASK_FORMATION templating = spawn condition = MODE==ACTIVE type = decluster_task max_bid_wins = false formation_margin = $(FORMATION_MARGIN) formation_distance = $(FORMATION_DISTANCE) formation_type = circle formation_heading = $(FORMATION_HEADING) circle_radius = $(CIRCLE_RADIUS) dubin_turn_radius = $(TURN_RADIUS) capture_radius = 2.5 //Needed for the projection // assignment_metric = $(ASSIGNMENT_METRIC) assignment_metric = distance bidwonflag = DUBIN_UPDATE = $[POS_TEST] bidwonflag = DUBIN_UPDATE = $[H_TEST] bidwonflag = DUBIN_UPDATE = regenerate_path bidwonflag = STATION_KEEP = false bidwonflag = DEMUSTER = true xbidwonflag = MISSION_TASK = type=decluster_task,id=$[ID+1],exempt=$[OWNSHIP]:$[EXEMPT],task_time=$[UTC],pos_idx=$[POS_IDX],anchor_x=$[A_X],anchor_y=$[A_Y] } //---------------------------------------------- Behavior=BHV_Waypoint { name = waypt_return pwt = 100 condition = MODE==RETURNING perpetual = true updates = RETURN_UPDATE endflag = RETURN = false endflag = DEPLOY = false endflag = MISSION = complete activeflag = AVOID = true speed = $(SPEED) capture_radius = 2.0 slip_radius = 8.0 points = 0,-10 #ifdef VNAME abe point = 52,9 #elseifdef VNAME ben point = 39,4 #elseifdef VNAME cal point = 29,0 #elseifdef VNAME deb point = 16,-6 #elseifdef VNAME eve point = 4,-11 #elseifdef VNAME fin point = 2,-15 #elseifdef VNAME max point = 26,-2 #elseifdef VNAME ned point = 12,-8 #elseifdef VNAME oak point = 21,-5 #elseifdef VNAME pip point = -7,-14 #else point = $(START_POS) #endif } //---------------------------------------------- Behavior = BHV_StationKeep { name = station-keep pwt = 100 condition = MODE==STATION-KEEPING center_activate = true inner_radius = 8 outer_radius = 12 outer_speed = 0.4 transit_speed = 0.2 swing_time = 10 visual_hints = vertex_size=0, edge_color=invisible, label_color=invisible } //---------------------------------------------- Behavior = BHV_AvoidCollision { name = ac_ pwt = 350 // pwt = 100 condition = MODE == ACTIVE condition = MODE!=ACTIVE:STATION-KEEPING condition = AVOID == true updates = CONTACT_INFO endflag = CONTACT_RESOLVED = $[CONTACT] spawnflag = CONTACT_SPAWNED = $[CONTACT] idleflag = CONTACT_IDLE = $[CONTACT] runflag = CONTACT_RUN = $[CONTACT] activeflag = CONTACT_ACTIVE = $[CONTACT] inactiveflag = CONTACT_INACTIVE = $[CONTACT] templating = spawn contact = to-be-set on_no_contact_ok = true extrapolate = true decay = 30,60 use_refinery = true // pwt_outer_dist = 6 // pwt_inner_dist = 3 pwt_outer_dist = 25 pwt_inner_dist = 10 pwt_grade = linear completed_dist = 30 min_util_cpa_dist = 6 max_util_cpa_dist = 14 bearing_line_config = white:0, green:0.65, yellow:0.8, red:1.0 bearing_line_label_show = false bearing_line_show = false //TODO: Fix this... } // //---------------------------------------------- // Behavior = BHV_OpRegionV24 // { // name = opreg // pwt = 300 // updates = RECOVER_UPDATES // // core_poly = pts={90,25:-75,-54:-20,-160:143,-81} // core_poly = pts={90,31:-75,-48:-20,-154:143,-75} // dynamic_region_var = RESCUE_REGION // visual_hints = edge_size = 1 // visual_hints = save_edge_color = gray30 // visual_hints = halt_edge_color = gray40 // save_dist = 4 // halt_dist = 8 // draw_save_status = false // draw_halt_status = false // } //---------------------------------------------- Behavior=BHV_Waypoint { name = waypt_demuster pwt = 100 condition = MODE==TRAVERSING perpetual = true updates = WAYPOINT_UPDATE endflag = STATION_KEEP = true endflag = DUBIN_COMPLETE = true activeflag = AVOID = true speed = $(SPEED) capture_radius = 2.0 slip_radius = 8.0 point = 100,100 visual_hints = label_color=invisible visual_hints = nextpt_lcolor=invisible } // //---------------------------------------------- // Behavior=BHV_Demuster // { // name = cluster // pwt = 100 // updates = CLUSTER_UPDATE // condition = MODE==CLUSTERING // activeflag = AVOID = false // endflag = STATION_KEEP = true // endflag = CLUSTER = false // endflag_all = CLUSTER_COMPLETE = true // // endflag_all = MISSION_TASK_ALL = type=decluster_task,id=1,pos_idx=0,task_time=$[UTC] // // endflag_all = DEMUSTER_BEGIN = true // perpetual = true // r = $(TURN_RADIUS) // precision = 2 // // op_region = pts={90,25:-75,-54:-20,-160:143,-81}, label=area_x // // op_region = pts={90,31:-75,-48:-20,-154:143,-75}, label=area_x // slowdown_range = $(SLOWDOWN_RANGE) // capture_radius = 2.5 // slip_radius = 3.5 // drift_radius = 0.5 // drift_heading = 90 // project_first_point = $(PROJECT_FIRST) // max_safety_distance = 5 // min_safety_distance = 5 // max_horizon = $(DT_HORIZON_MAX) // min_horizon = $(DT_HORIZON_MIN) // default_speed = $(SPEED) // temp_block_limit = $(TEMP_BLOCK_LIMIT) // show_visualization = true // use_dynamic_speed = $(USE_DYNAMIC_SPEED) // mode = $(MODE) // synchronize = false // reverse_thrust = -100 // #ifdef XMODE SIM // use_compass_heading = false // #elseifdef XMODE M300 // use_compass_heading = true // #endif // }