Please review any and all PUBLIC repositories, groups and associate files. These allow anyone on the Internet to access without authentication. Repository and group owners are responsible for their content and permission settings. Go to your project(s), click on Settings > General and expand the "Visibility, project features, permissions" to change this setting.

Commit fd098c05 authored by Brutzman, Don's avatar Brutzman, Don

confirmed correct during weekly call

parent 08ab26df
;This code written in ANSI Common Lisp, Allegro 10.1 enhancement, from Franz, Inc., by
;Prof. Robert B. McGhee (robertbmcghee@gmail.com) at the Naval Postgraduate School,
;Monterey, CA 93943. Date of latest update: 4 January 2020.
;Monterey, CA 93943. Date of latest update: 10 August 2020.
;Comment1: As of the time of this writing, the default Allegro IDE editor window print
;font is oversized, and does not print a full-width copy of the IDE Debug or Editor
......@@ -25,7 +25,8 @@
;evolution of RBM software. The "mission controller" is usually assumed to be electronic,
;but could be a human "executive officer" in the case of a manned vehicle. The mission
;agent is always a vehicle. If the vehicle has an onboard computer incorporating the
;mission controller, then the vehicle is a robot. If not, it is an "ROV" or a "drone".
;mission controller, then the vehicle is a robot. If not, it is an "ROV" or a
;remotely operated "drone".
;;;;;;;;;;;;;;;;;;;;;;;;;Begin Universal Mission Execution Engine;;;;;;;;;;;;;;;;;;;;;;;
......@@ -36,6 +37,7 @@
(defclass mission-execution-engine ()
((external-agent-response :accessor external-agent-response :initform nil)
(previous-execution-phase :accessor previous-execution-phase :initform nil)
(current-execution-phase :accessor current-execution-phase :initform 'phase1)
(successor-list-index :accessor successor-list-index :initform 0)))
......@@ -57,15 +59,13 @@
(new-successor-list (successor-list (eval phase)))
(new-index (successor-list-index MEE))
(next-phase (second (nth new-index new-successor-list))))
(setf (current-execution-phase MEE) next-phase)))
(setf (previous-execution-phase MEE) phase (current-execution-phase MEE) next-phase)))
(defmethod set-successor-list-index ((MEE mission-execution-engine))
(let* ((index (convert-outcome-to-index (external-agent-response MEE))))
(setf (successor-list-index MEE) index)))
(defvar mission-controller (make-instance 'mission-execution-engine)) ; instantiate the class as an object
; discussion for future work: naming conventions
(defvar mission-controller (make-instance 'mission-execution-engine))
(defun execute-phase ()
(issue-command mission-controller)
......@@ -95,7 +95,6 @@
(create-mission-orders)
(execute-mission))
; execute starting at a new phase, also enables testing and refinement resuming in the middle of a mission
(defun rerun (new-start-phase)
(setf (current-execution-phase mission-controller) new-start-phase)
(execute-mission))
......@@ -111,8 +110,19 @@
(cond ((member (current-execution-phase mission-controller) terminal-phase-list) (execute-terminal-phase))
(t (execute-phase)(execute-mission))))
(defun repeat ()
(rerun (previous-execution-phase mission-controller)))
(defun refine-last-command ()
(let* ((previous-phase (previous-execution-phase mission-controller)))
(cond ((equal previous-phase 'phase1) (rerun 'phase1.1)))))
;;;;;;;;;;;;;;;;;;;;;;;;;End Universal Mission Execution Engine;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;Begin 8-phase Sailor Overboard Mission Orders;;;;;;;;;;;;;;;;;;;;
(defvar phase1 (make-instance 'mission-phase))
......@@ -143,7 +153,7 @@
'(("Success." phase2) ("Failed." phase8) ("Exception." phase8)))
(initialize-phase phase2 "Rendezvous with Sailor!"
'(("Success." phase4) ("Failed." phase3) ("Exception." phase8)))
'(("Success." phase4) ("Failed." phase3) ("Exception." phase8))) ; deviation from phase4/phase3/phase5
(initialize-phase phase3 "Search for Sailor!"
'(("Success." phase4) ("Failed." phase8) ("Exception." phase8)))
......@@ -158,7 +168,6 @@
(initialize-phase phase7 "Halt and deploy recovery beacon!" nil)
(initialize-phase phase8 "Halt and await further orders!" nil)
)
(initialize-phase phase8 "Halt and await further orders!" nil))
;;;;;;;;;;;;;;;;;;;;;;End 8-phase Sailor Overboard Mission Orders;;;;;;;;;;;;;;;;;;;;;;;;;
\ No newline at end of file
;;;;;;;;;;;;;;;;;;;;;;End 8-phase Sailor Overboard Mission Orders;;;;;;;;;;;;;;;;;;;;;;;;;
; Fast loading C:\x-nps-gitlab\NetworkOptionalWarfare\ethicalcontrol\missions\lisp\SailorOverboard\SailorOverboardMission8State.fasl
RESULTS
CG-USER(1): (run)
Deploy!
Did goal succeed (s), fail (f), or abort (x)?s
......@@ -12,30 +13,15 @@ Halt and prepare for recovery!
NIL
CG-USER(2): (run)
Deploy!
Did goal succeed (s), fail (f), or abort (x)?s
Rendezvous with Sailor!
Did goal succeed (s), fail (f), or abort (x)?f
Search for Sailor!
Did goal succeed (s), fail (f), or abort (x)?s
Track Sailor Afloat Until Safe!
Did goal succeed (s), fail (f), or abort (x)?x
Halt and await further orders!
NIL
CG-USER(3): (rerun phase3)
Search for Sailor!
Did goal succeed (s), fail (f), or abort (x)?s
Track Sailor Afloat Until Safe!
Did goal succeed (s), fail (f), or abort (x)?s
Proceed to recovery!
Did goal succeed (s), fail (f), or abort (x)?s
Halt and prepare for recovery!
NIL
CG-USER(4): (run)
CG-USER(3): (repeat)
Deploy!
Did goal succeed (s), fail (f), or abort (x)?x
Did goal succeed (s), fail (f), or abort (x)?f
Halt and await further orders!
NIL
CG-USER(5): (rerun phase1.1)
CG-USER(4): (refine-last-command)
Choose Tube and Launch!
Did goal succeed (s), fail (f), or abort (x)?s
Enter Water and Get GPS Fix!
......@@ -49,4 +35,4 @@ Did goal succeed (s), fail (f), or abort (x)?s
Proceed to recovery!
Did goal succeed (s), fail (f), or abort (x)?s
Halt and prepare for recovery!
NIL
NIL
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment