Skip to content
Snippets Groups Projects
Swarm_Search_and_Track.mp 3.34 KiB
/* Model of Swarm Search and Track

Created by Michael Revill on the 22nd of February, 2016.
Edited by Kristin Giammarco on the 26th of February, 2016.
Edited by Keane Reynolds in July, 2021.
Edited by Pamela Dyer in July and August, 2021.

Purpose: To illustrate the incorporations of both 
failure modes and failsafe behaviors into MP models.

Description: This model demonstrates using a decision 
structure to model a UAV drone's target acquisition. 
Users may reference this model to learn about COORDINATE 
statements and "or" blocks when automatically generating 
traces with connections between roots.

Established naming convention:
Noun-oriented events are actors  (root events)
Verb-oriented events in sentence case are activities 
Verb-oriented events in title case are states

References:
This MP model "Swarm_Search_and_Track.mp" incorporates 
Failure Modes and Failsafe Behaviors by elaborating on 
the "Perform_Mission" event in the MP model "Swarm_UAV.mp".

Giammarco, Kristin, and Kathleen Giles. "Verification and 
validation of behavior models using lightweight formal 
methods." In Disciplinary convergence in systems engineering 
research, pp. 431-447. Springer, Cham, 2018.
Available online:
https://calhoun.nps.edu/handle/10945/58237 

Search terms: behavior, swarm; search and track; autonomous; 
behavior, environment; failure mode; behavior, failsafe; 
behavior, unexpected; behavior, emergent

Instructions: Run for Scope 1.
This model demonstrates the found unexpected behavior for 
object discovery after bingo fuel (trace 6).
	Scope 1: 8 traces in less than 1 sec.

==========================================================*/

SCHEMA Swarm_Search_and_Track

ROOT 	Swarm_Operator:	Command_swarm_to_commence_mission
   						Monitor_mission
   						Issue_recovery_command;

	Monitor_mission:	(*	Receive_target_alert
    						Assess_detected_object 
    						( Object_is_Valid_Target | 
                                Object_is_Not_Target )
						*);

ROOT 	Swarm: {+ UAV +};
     
	UAV: 	Commence_mission
          	Search_and_track_objects
          	Return_to_base
		  	End_mission;

	Search_and_track_objects:	
			
			(*	( 	Detect_object 
    				Evaluate_object 
      				( Target_Found 
                      Alert_operator 
                      Track_target 		| 
                                            
                          Non_Target_Found 
                          Resume_target_search ) 	|
    							
        					Bingo_Fuel 
        					Reassess_environment 
      						[ ( Target_Found 
                                Alert_operator 
                                Track_target 		| 
                                
                                Non_Target_Found 	
                               ) ]
  													
                )
			*); 

COORDINATE 	$a: Command_swarm_to_commence_mission	FROM Swarm_Operator 
	DO	COORDINATE $b: Commence_mission				FROM Swarm 
 				DO ADD $a PRECEDES $b; OD;
	OD;	

COORDINATE 	$a: Alert_operator			FROM Swarm,
			$b: Receive_target_alert	FROM Swarm_Operator 
 	DO ADD $a PRECEDES $b; OD;

COORDINATE 	$a: Issue_recovery_command		FROM Swarm_Operator 
	DO	 COORDINATE $b: Return_to_base		FROM Swarm 
 			DO ADD $a PRECEDES $b; OD;
 	OD;		

ROOT Environment: (* Present_object_signature *);

COORDINATE 	$a: Present_object_signature 	FROM Environment, 
			$b: Detect_object				FROM Swarm
	DO ADD $a PRECEDES $b; OD;