public SM_TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, string objectLocation, bool succesGetClose)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.objectLocation = objectLocation;
            attemptCounter = 0;
            this.finalState = FinalStates.StillRunning;

            this.anyObject = anyObject;
            if (anyObject)
                this.ObjectToFind = ObjectToFind;
            else
                this.ObjectToFind = "objects";

            this.foundObject = ObjectToFind;
            this.succesGetClose = succesGetClose;

            SM.AddState(new FunctionState((int)States.GetCloseObjectLocation, new SMStateFuncion(GetCloseObjectLocation)));
            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
Example #2
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public NavigateTo(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string locationToReach = "")
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.locationToReach = locationToReach;

            navigSucceded = "I reach the location.";
            navigFailed = "I can't reach the location.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.RiseArms, RiseArms));
            SM.AddState(new FunctionState((int)States.Navigate, Navigate));
            SM.AddState(new FunctionState((int)States.Navigate_Succeeded, Navigate_Succeeded));
            SM.AddState(new FunctionState((int)States.Navigate_Failed, Navigate_Failed));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #3
0
        /// <summary>
        /// Creates a state machine for the test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public Restaurant(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            tableCommandRecognized   = false;
            kitchenCommandRecognized = false;
            tablesToVisit            = new Queue <MapLocation>();

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.FollowHuman, FollowHuman));
            SM.AddState(new FunctionState((int)States.WaitForLocationCommand, WaitForLocationCommand));
            SM.AddState(new FunctionState((int)States.WaitForLocationConfirmation, WaitForLocationConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionCommand, WaitForTableDirectionCommand));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionConfirmation, WaitForTableDirectionConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForOrderingCommand, WaitForOrderingCommand));
            SM.AddState(new FunctionState((int)States.WaitForOrderTableConfirmation, WaitForOrderTableConfirmation));
            SM.AddState(new FunctionState((int)States.GoToOrderTable, GoToOrderTable));
            SM.AddState(new FunctionState((int)States.TakeOrder, TakeOrder));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #4
0
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, bool useHandOver)
        {
            SM                        = new FunctionBasedStateMachine();
            this.brain                = brain;
            this.cmdMan               = cmdMan;
            this.attemptCounter       = 0;
            this.searchAttemptCounter = 0;
            this.finalState           = FinalStates.StillRunning;

            this.objectsFound    = new List <string>();
            this.useTakeHandOver = useHandOver;

            this.anyObject = anyObject;
            if (anyObject)
            {
                this.ObjectToFind = "objects";
            }
            else
            {
                this.ObjectToFind = ObjectToFind;
            }

            this.foundObject = ObjectToFind;

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine for the test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public Restaurant(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            tableCommandRecognized = false;
            kitchenCommandRecognized = false;
            tablesToVisit = new Queue<MapLocation>();

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.FollowHuman, FollowHuman));
            SM.AddState(new FunctionState((int)States.WaitForLocationCommand, WaitForLocationCommand));
            SM.AddState(new FunctionState((int)States.WaitForLocationConfirmation, WaitForLocationConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionCommand, WaitForTableDirectionCommand));
            SM.AddState(new FunctionState((int)States.WaitForTableDirectionConfirmation, WaitForTableDirectionConfirmation));
            SM.AddState(new FunctionState((int)States.WaitForOrderingCommand, WaitForOrderingCommand));
            SM.AddState(new FunctionState((int)States.WaitForOrderTableConfirmation, WaitForOrderTableConfirmation));
            SM.AddState(new FunctionState((int)States.GoToOrderTable, GoToOrderTable));
            SM.AddState(new FunctionState((int)States.TakeOrder, TakeOrder));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #6
0
        public SM_TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, string objectLocation, bool succesGetClose)

        {
            SM                  = new FunctionBasedStateMachine();
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.objectLocation = objectLocation;
            attemptCounter      = 0;
            this.finalState     = FinalStates.StillRunning;

            this.anyObject = anyObject;
            if (anyObject)
            {
                this.ObjectToFind = ObjectToFind;
            }
            else
            {
                this.ObjectToFind = "objects";
            }

            this.foundObject    = ObjectToFind;
            this.succesGetClose = succesGetClose;

            SM.AddState(new FunctionState((int)States.GetCloseObjectLocation, new SMStateFuncion(GetCloseObjectLocation)));
            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
Example #7
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public NavigateTo(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string locationToReach = "")
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.locationToReach = locationToReach;

            navigSucceded = "I reach the location.";
            navigFailed   = "I can't reach the location.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.RiseArms, RiseArms));
            SM.AddState(new FunctionState((int)States.Navigate, Navigate));
            SM.AddState(new FunctionState((int)States.Navigate_Succeeded, Navigate_Succeeded));
            SM.AddState(new FunctionState((int)States.Navigate_Failed, Navigate_Failed));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, bool useHandOver)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.attemptCounter = 0;
            this.searchAttemptCounter = 0;
            this.finalState = FinalStates.StillRunning;

            this.objectsFound = new List<string>();
            this.useTakeHandOver = useHandOver;

            this.anyObject = anyObject;
            if (anyObject)
                this.ObjectToFind = "objects";
            else
                this.ObjectToFind = ObjectToFind;

            this.foundObject = ObjectToFind;

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind, bool useHandOver, int searchAttempts = 2, bool twoArms=false)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.attemptCounter = 0;
            this.searchAttemptCounter = 0;
            this.searchAttempts = searchAttempts;
            this.finalState = FinalStates.StillRunning;
            this.twoArms = twoArms;
            this.takeCounter = 0;
            this.firstObjectTaken=false;
            /**********************/
            this.laTaken = false;
            this.armToUse = "";

            this.objectsFound = new List<string>();
            this.useTakeHandOver = useHandOver;

            this.objectsToFind = new string[2];
            this.foundObjects = new string[2];
            this.armsOrder = new string[2];
            this.foundObjects[0] = "";
            this.foundObjects[1] = "";

            this.armsOrder[0] = "";
            this.armsOrder[1] = "";

            this.anyObject = anyObject;
            if (anyObject)
            {
                //this.ObjectToFind = "objects";
                this.objectsToFind[0] = "objects";
                this.objectsToFind[1] = "";
            }
            else
            {
                this.objectsToFind[0] = objectsToFind[0];
                this.objectsToFind[1] = objectsToFind[1];
            }

            //this.objectsToTake = new string[2];
            //this.objectsToTake[0] = "";
            //this.objectsToTake[1] = "";
            //this.foundObjects = new string[2];
            //this.foundObjects[0] = ObjectToFind;
            //this.foundObjects[1] = "";

            //objectsToTake = new string[2];

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
        public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind, bool useHandOver, int searchAttempts = 2, bool twoArms = false)
        {
            SM                        = new FunctionBasedStateMachine();
            this.brain                = brain;
            this.cmdMan               = cmdMan;
            this.attemptCounter       = 0;
            this.searchAttemptCounter = 0;
            this.searchAttempts       = searchAttempts;
            this.finalState           = FinalStates.StillRunning;
            this.twoArms              = twoArms;
            this.takeCounter          = 0;
            this.firstObjectTaken     = false;
            /**********************/
            this.laTaken  = false;
            this.armToUse = "";

            this.objectsFound    = new List <string>();
            this.useTakeHandOver = useHandOver;

            this.objectsToFind   = new string[2];
            this.foundObjects    = new string[2];
            this.armsOrder       = new string[2];
            this.foundObjects[0] = "";
            this.foundObjects[1] = "";

            this.armsOrder[0] = "";
            this.armsOrder[1] = "";

            this.anyObject = anyObject;
            if (anyObject)
            {
                //this.ObjectToFind = "objects";
                this.objectsToFind[0] = "objects";
                this.objectsToFind[1] = "";
            }
            else
            {
                this.objectsToFind[0] = objectsToFind[0];
                this.objectsToFind[1] = objectsToFind[1];
            }

            //this.objectsToTake = new string[2];
            //this.objectsToTake[0] = "";
            //this.objectsToTake[1] = "";
            //this.foundObjects = new string[2];
            //this.foundObjects[0] = ObjectToFind;
            //this.foundObjects[1] = "";

            //objectsToTake = new string[2];

            SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects)));
            SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake)));
            SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
 public NaturalLanguageProcessor(HAL9000Brain hal9000Brain)
 {
     this.hal9000Brain             = hal9000Brain;
     this.commonQuestions          = new SortedList <int, string>();
     this.answersToCommonQuestions = new SortedList <int, string>();
     this.whatAmIThinkingAnswers   = new List <string>();
     this.knownVerbs      = new SortedList <int, string>();
     this.knownVerbsTypes = new SortedList <int, VerbType>();
     this.random          = new Random(DateTime.Now.Second);
 }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_WaitForRequest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchRequest, new SMStateFuncion(SearchRequest)));
            SM.AddState(new FunctionState((int)States.GoToRequest, new SMStateFuncion(GoToRequest)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
Example #13
0
        public frmActionPlanner()
        {
            InitializeComponent();
            if (!Directory.Exists(".\\" + DateTime.Today.ToString("yyyy-MM-dd")))
            {
                Directory.CreateDirectory(".\\" + DateTime.Today.ToString("yyyy-MM-dd"));
            }
            TextBoxStreamWriter.DefaultLog = new TextBoxStreamWriter(txtConsole, ".\\" + DateTime.Today.ToString("yyyy-MM-dd") + "\\" +
                                                                     DateTime.Now.ToString("HH.mm.ss") + ".txt", 300);

            TextBoxStreamWriter.DefaultLog.AppendDate                = false;
            TextBoxStreamWriter.DefaultLog.DefaultPriority           = 1;
            TextBoxStreamWriter.DefaultLog.TextBoxVerbosityThreshold = 1;
            this.hal9000Brain = new HAL9000Brain();
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_WaitForRequest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchRequest, new SMStateFuncion(SearchRequest)));
            SM.AddState(new FunctionState((int)States.GoToRequest, new SMStateFuncion(GoToRequest)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
        /// <summary>
        /// Creates a state machine for the Navigation test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public NavigationTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectPersonFall(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain   = brain;
            this.cmdMan  = cmdMan;
            timer        = new System.Diagnostics.Stopwatch();
            fallDetected = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchFall, new SMStateFuncion(SearchFall)));
            SM.AddState(new FunctionState((int)States.GoToFall, new SMStateFuncion(GoToFall)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectPersonFall(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            timer = new System.Diagnostics.Stopwatch();
            fallDetected = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchFall, new SMStateFuncion(SearchFall)));
            SM.AddState(new FunctionState((int)States.GoToFall, new SMStateFuncion(GoToFall)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
        public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location, bool tryToOpenDoor)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.location = location;
            this.finalState = FinalStates.StillRunning;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.WaitForDoorToBeOpened, new SMStateFuncion(WaitForDoorToBeOpened)));
            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
        public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location, bool tryToOpenDoor)
        {
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.location       = location;
            this.finalState     = FinalStates.StillRunning;
            this.attemptCounter = 0;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.WaitForDoorToBeOpened, new SMStateFuncion(WaitForDoorToBeOpened)));
            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectWaving(HAL9000Brain brain, HAL9000CmdMan cmdMan, double headAngle, double headPan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            this.headAngle = headAngle;
            this.headPan = headPan;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchWaving, new SMStateFuncion(SearchWaving)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
Example #21
0
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_DetectWaving(HAL9000Brain brain, HAL9000CmdMan cmdMan, double headAngle, double headPan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            this.headAngle = headAngle;
            this.headPan   = headPan;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SearchWaving, new SMStateFuncion(SearchWaving)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
        /// <summary>
        /// Creates a state machine for the Manipulation test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public ManipulationTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
 public SM_FollowHuman(HAL9000Brain brain, HAL9000CmdMan cmdman)
 {
     this.brain = brain;
     this.cmdMan = cmdman;
     TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Ejecutando prueba de seguimiento");
     this.brain.Status.TestBeingExecuted = "Fllw1";
     this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
     this.finalState = FinalStates.StillRunning;
     SM = new FunctionBasedStateMachine();
     SM.AddState(new FunctionState((int)States.SubiendoMisBrazos, SubiendoMisBrazos));
     SM.AddState(new FunctionState((int)States.EsperandoPersonaEnFrente, EsperandoPersonaEnFrente));
     SM.AddState(new FunctionState((int)States.SensandoPersona, SensandoPersona));
     SM.AddState(new FunctionState((int)States.PersiguiendoPersona, PersiguiendoPersona));
     SM.AddState(new FunctionState((int)States.AntesDeTerminar, AntesDeTerminar, true));
     SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
     SM.SetFinalState((int)States.FinalState);
 }
 public SM_FollowHuman(HAL9000Brain brain, HAL9000CmdMan cmdman)
 {
     this.brain  = brain;
     this.cmdMan = cmdman;
     TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Ejecutando prueba de seguimiento");
     this.brain.Status.TestBeingExecuted = "Fllw1";
     this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
     this.finalState = FinalStates.StillRunning;
     SM = new FunctionBasedStateMachine();
     SM.AddState(new FunctionState((int)States.SubiendoMisBrazos, SubiendoMisBrazos));
     SM.AddState(new FunctionState((int)States.EsperandoPersonaEnFrente, EsperandoPersonaEnFrente));
     SM.AddState(new FunctionState((int)States.SensandoPersona, SensandoPersona));
     SM.AddState(new FunctionState((int)States.PersiguiendoPersona, PersiguiendoPersona));
     SM.AddState(new FunctionState((int)States.AntesDeTerminar, AntesDeTerminar, true));
     SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
     SM.SetFinalState((int)States.FinalState);
 }
        public SM_TakeTray(HAL9000Brain brain, HAL9000CmdMan cmdMan, double height)
        {
            SM = new FunctionBasedStateMachine();
            this.brain = brain;
            this.cmdMan = cmdMan;
            distance = 0;
            this.height = height;
            headPan = 0;
            headTilt = -1.1;
            percent = 50;
            this.finalState = FinalStates.StillRunning;

            SM.AddState(new FunctionState((int)States.LineTable,LineTable));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState,true));
            SM.SetFinalState((int)States.FinalState);
        }
Example #26
0
        public SM_TakeTray(HAL9000Brain brain, HAL9000CmdMan cmdMan, double height)

        {
            SM              = new FunctionBasedStateMachine();
            this.brain      = brain;
            this.cmdMan     = cmdMan;
            distance        = 0;
            this.height     = height;
            headPan         = 0;
            headTilt        = -1.1;
            percent         = 50;
            this.finalState = FinalStates.StillRunning;

            SM.AddState(new FunctionState((int)States.LineTable, LineTable));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine for the Navigation test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GraspCereal(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here
            SM.AddState(new FunctionState((int)States.PerformAction, PerformAction));
            SM.AddState(new FunctionState((int)States.FindPerson, FindPerson));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #28
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TellPhrase(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string phrase)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.phraseToTell    = phrase;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateTellPhrase, StateTellPhrase));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #29
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TellPhrase(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string phrase)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.phraseToTell = phrase;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateTellPhrase, StateTellPhrase));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #30
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public AnswerQuestion(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus    = Status.Ready;
            attemptCounter = 0;

            this.SMConfiguration = SMConfiguration;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateQuestion, StateQuestion));
            SM.AddState(new FunctionState((int)States.StateAnswer, StateAnswer));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_SimpleIdentifyPerson(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool startIdentifyPerson, string[] knownPersons, string defaultName, List<string> rejectedNames)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.startIdentifyPerson = startIdentifyPerson;
            this.defaultName = defaultName;
            this.knownPersons = knownPersons;
            this.rejectedNames = rejectedNames;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SpeachToHuman, new SMStateFuncion(SpeachToHuman)));
            SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman)));
            SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName)));
            SM.AddState(new FunctionState((int)States.AsociateName, new SMStateFuncion(AsociateName)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
        /// <summary>
        /// Creates a state machine to navigate to a predefined MVN-PLN location.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public DefaultStateMachineSM(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus    = Status.Ready;
            attemptCounter = 0;
            objectTaken    = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.GetCloseToTable, GetCloseToTable));
            SM.AddState(new FunctionState((int)States.DropObject, DropObject));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public AnswerQuestion(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;
            attemptCounter = 0;

            this.SMConfiguration = SMConfiguration;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.StateQuestion, StateQuestion));
            SM.AddState(new FunctionState((int)States.StateAnswer, StateAnswer));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_SimpleIdentifyPerson(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool startIdentifyPerson, string[] knownPersons, string defaultName, List <string> rejectedNames)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;
            this.startIdentifyPerson = startIdentifyPerson;
            this.defaultName         = defaultName;
            this.knownPersons        = knownPersons;
            this.rejectedNames       = rejectedNames;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.SpeachToHuman, new SMStateFuncion(SpeachToHuman)));
            SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman)));
            SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName)));
            SM.AddState(new FunctionState((int)States.AsociateName, new SMStateFuncion(AsociateName)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
        /// <summary>
        /// Creates a state machine to navigate to a predefined MVN-PLN location.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public DefaultStateMachineSM(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;
            attemptCounter = 0;
            objectTaken = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.GetCloseToTable, GetCloseToTable));
            SM.AddState(new FunctionState((int)States.DropObject, DropObject));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #36
0
        /// <summary>
        /// Creates a state machine for the test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;
            second_confirmation = false;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            //TODO: Link States-enum whith States-Methods here

            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.WaitForQuestion, WaitForQuestion));
            SM.AddState(new FunctionState((int)States.PerformAction, PerformAction));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));
            SM.SetFinalState((int)States.FinalState);
        }
        public CocktailPartyTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Cocktail Party Test");
            this.brain.Status.TestBeingExecuted = "Cocktail Party";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));

            this.finalState = FinalStates.StillRunning;
            tryToOpenDoor = false;
            entranceLocation = "frontentrance";
            partyroomLocation = "partyroom";
            drinksLocation = "drinks";
            exitLocation = "exit";
            defaultDrink = "mangojuice";
            attemptCounter = 0;
            gestureFailed = false;
            defaultNames = new string[] { "Alan", "Albert", "Angel" };
            SM = new FunctionBasedStateMachine();
            //orders = new Queue<order>(3);
            ordersCount = 0;
            rejectedNames = new List<string>(3);

            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.GoToPartyRoom, new SMStateFuncion(GoToPartyRoom)));
            SM.AddState(new FunctionState((int)States.WaitForRequest, new SMStateFuncion(WaitForRequest)));
            SM.AddState(new FunctionState((int)States.IdentifyPerson, new SMStateFuncion(IdentifyPerson)));
            SM.AddState(new FunctionState((int)States.WaitForOrder, new SMStateFuncion(WaitForOrder)));
            SM.AddState(new FunctionState((int)States.NoGestureRecognized, new SMStateFuncion(NoGestureRecognized)));
            SM.AddState(new FunctionState((int)States.WaitForConfirmation, new SMStateFuncion(WaitForConfirmation)));
            SM.AddState(new FunctionState((int)States.EnqueueOrder, new SMStateFuncion(EnqueueOrder)));
            SM.AddState(new FunctionState((int)States.GoToDrinksLocation, new SMStateFuncion(GoToDrinksLocation)));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, new SMStateFuncion(SearchAndTakeObject)));
            SM.AddState(new FunctionState((int)States.GoToHumanLocation, new SMStateFuncion(GoToHumanLocation)));
            SM.AddState(new FunctionState((int)States.DeliverDrink, new SMStateFuncion(DeliverDrink)));
            SM.AddState(new FunctionState((int)States.LeaveArena, new SMStateFuncion(LeaveArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
Example #38
0
        public CocktailPartyTest(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Cocktail Party Test");
            this.brain.Status.TestBeingExecuted = "Cocktail Party";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));

            this.finalState   = FinalStates.StillRunning;
            tryToOpenDoor     = false;
            entranceLocation  = "frontentrance";
            partyroomLocation = "partyroom";
            drinksLocation    = "drinks";
            exitLocation      = "exit";
            defaultDrink      = "mangojuice";
            attemptCounter    = 0;
            gestureFailed     = false;
            defaultNames      = new string[] { "Alan", "Albert", "Angel" };
            SM = new FunctionBasedStateMachine();
            //orders = new Queue<order>(3);
            ordersCount   = 0;
            rejectedNames = new List <string>(3);

            SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena)));
            SM.AddState(new FunctionState((int)States.GoToPartyRoom, new SMStateFuncion(GoToPartyRoom)));
            SM.AddState(new FunctionState((int)States.WaitForRequest, new SMStateFuncion(WaitForRequest)));
            SM.AddState(new FunctionState((int)States.IdentifyPerson, new SMStateFuncion(IdentifyPerson)));
            SM.AddState(new FunctionState((int)States.WaitForOrder, new SMStateFuncion(WaitForOrder)));
            SM.AddState(new FunctionState((int)States.NoGestureRecognized, new SMStateFuncion(NoGestureRecognized)));
            SM.AddState(new FunctionState((int)States.WaitForConfirmation, new SMStateFuncion(WaitForConfirmation)));
            SM.AddState(new FunctionState((int)States.EnqueueOrder, new SMStateFuncion(EnqueueOrder)));
            SM.AddState(new FunctionState((int)States.GoToDrinksLocation, new SMStateFuncion(GoToDrinksLocation)));
            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, new SMStateFuncion(SearchAndTakeObject)));
            SM.AddState(new FunctionState((int)States.GoToHumanLocation, new SMStateFuncion(GoToHumanLocation)));
            SM.AddState(new FunctionState((int)States.DeliverDrink, new SMStateFuncion(DeliverDrink)));
            SM.AddState(new FunctionState((int)States.LeaveArena, new SMStateFuncion(LeaveArena)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState)));

            SM.SetFinalState((int)States.FinalState);
        }
Example #39
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public BringObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectName = "")
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectName      = objectName;

            foundPersonMessage = "Human please get close to me and take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.DeliverObject, DeliverObject));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #40
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public BringObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectName="")
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectName = objectName;

            foundPersonMessage = "Human please get close to me and take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.DeliverObject, DeliverObject));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        /// <summary>
        /// Creates a state machine to enter the arena up to a location known by the motion planner.
        /// </summary>
        /// <param name="brain">A HAL9000Brain instance</param>
        /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param>
        public SM_AssociateNameAndFace(HAL9000Brain brain, HAL9000CmdMan cmdMan, string [] knownPersons, string defaultName, bool usePanAndTilt, List <string> rejectedNames, bool trainPersonsShirt)
        {
            this.brain          = brain;
            this.cmdMan         = cmdMan;
            this.attemptCounter = 0;
            this.defaultName    = defaultName;
            this.knownPersons   = knownPersons;
            this.rejectedNames  = rejectedNames;
            this.usePanAndTilt  = usePanAndTilt;
            this.trainShirt     = trainPersonsShirt;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState)));
            SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName)));
            SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman)));
            SM.AddState(new FunctionState((int)States.TrainFace, new SMStateFuncion(TrainFace)));
            SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true));

            SM.SetFinalState((int)States.FinalState);
            finalState = FinalStates.StillRunning;
        }
Example #42
0
        public OpenChallenge_Training(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;
            this.brain.UseFloorLaser = false;
            height                   = 0;
            LocationTable            = "table";
            LocationTray             = "tray";
            percent                  = 50;
            distance                 = 0;
            headPan                  = 0;
            headTilt                 = -1.1;
            voiceRecognitionAttempts = 0;
            alreadyKnownPersons      = new List <string>();
            defaultNames             = new string[] { "John", "James", "William", "Michael" };
            personCounter            = 0;
            usingRightArm            = true;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Open Challenge");
            this.brain.Status.TestBeingExecuted = "Open Challenge";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
            this.finalState = FinalStates.StillRunning;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.CallRobot, CallRobot));
            SM.AddState(new FunctionState((int)States.TrainFace, TrainFace));
            SM.AddState(new FunctionState((int)States.DeliverSheet, DeliverSheet));
            SM.AddState(new FunctionState((int)States.TrainVoice, TrainVoice));
            SM.AddState(new FunctionState((int)States.ReceiveSheet, ReceiveSheet));
            SM.AddState(new FunctionState((int)States.AdjustTable, AdjustTable));
            SM.AddState(new FunctionState((int)States.GotoTray, GotoTray));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.GotoTable, GotoTable));
            SM.AddState(new FunctionState((int)States.TrayOnTable, TrayOnTable));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
        public OpenChallenge_Training(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;
            this.brain.UseFloorLaser = false;
            height = 0;
            LocationTable = "table";
            LocationTray = "tray";
            percent = 50;
            distance = 0;
            headPan = 0;
            headTilt = -1.1;
            voiceRecognitionAttempts = 0;
            alreadyKnownPersons = new List<string>();
            defaultNames = new string[] {"John", "James", "William", "Michael"};
            personCounter = 0;
            usingRightArm = true;

            TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Open Challenge");
            this.brain.Status.TestBeingExecuted = "Open Challenge";
            this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status));
            this.finalState = FinalStates.StillRunning;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.CallRobot, CallRobot));
            SM.AddState(new FunctionState((int)States.TrainFace, TrainFace));
            SM.AddState(new FunctionState((int)States.DeliverSheet, DeliverSheet));
            SM.AddState(new FunctionState((int)States.TrainVoice, TrainVoice));
            SM.AddState(new FunctionState((int)States.ReceiveSheet, ReceiveSheet));
            SM.AddState(new FunctionState((int)States.AdjustTable, AdjustTable));
            SM.AddState(new FunctionState((int)States.GotoTray, GotoTray));
            SM.AddState(new FunctionState((int)States.TakeTray, TakeTray));
            SM.AddState(new FunctionState((int)States.GotoTable, GotoTable));
            SM.AddState(new FunctionState((int)States.TrayOnTable, TrayOnTable));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #44
0
        /// <summary>
        /// Creates a state machine for this test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            attemptCounter = 0;
            attemptLimit   = 3;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.NavigateToOperator, NavigateToOperator));
            SM.AddState(new FunctionState((int)States.WaitForCommand, WaitForCommand));
            SM.AddState(new FunctionState((int)States.ConfirmComand, ConfirmComand));
            SM.AddState(new FunctionState((int)States.ParseCommand, ParseCommand));
            SM.AddState(new FunctionState((int)States.PerformCommand, PerformCommand));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #45
0
        /// <summary>
        /// Creates a state machine for this test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            attemptCounter = 0;
            attemptLimit = 3;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.EnterArena, EnterArena));
            SM.AddState(new FunctionState((int)States.NavigateToOperator, NavigateToOperator));
            SM.AddState(new FunctionState((int)States.WaitForCommand, WaitForCommand));
            SM.AddState(new FunctionState((int)States.ConfirmComand, ConfirmComand));
            SM.AddState(new FunctionState((int)States.ParseCommand, ParseCommand));
            SM.AddState(new FunctionState((int)States.PerformCommand, PerformCommand));
            SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #46
0
        /// <summary>
        /// Creates a state machine for the RoboZoo test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public RoboZoo(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;


            t_HEADSearchMovements = new Thread(new ThreadStart(HEADSearchMovements));
            t_ARMSSearchMovements = new Thread(new ThreadStart(ARMSSearchMovements));
            t_SPGENSearchPhrases  = new Thread(new ThreadStart(SPGENSearchPhrases));
            t_BASEDanceMovements  = new Thread(new ThreadStart(BASEDanceMovements));
            t_ARMSDanceMovements  = new Thread(new ThreadStart(ARMSDanceMovements));
            t_HEADDanceMovements  = new Thread(new ThreadStart(HEADDanceMovements));
            t_SPGENHypnoSpeech    = new Thread(new ThreadStart(SPGENHypnoSpeech));
            t_ARMSHypnoMovements  = new Thread(new ThreadStart(ARMSHypnoMovements));
            t_HEADHypnoMovements  = new Thread(new ThreadStart(HEADHypnoMovements));

            headRandPos   = new Random();
            searchAttempt = 0;

            stopAllThreads      = false;
            hypnoSpeechFinished = false;
            stopDance           = false;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.SearchMarker, SearchMarker));
            SM.AddState(new FunctionState((int)States.MarkerFound, MarkerFound));
            SM.AddState(new FunctionState((int)States.MarkerNotFound, MarkerNotFound));
            SM.AddState(new FunctionState((int)States.PerformPresentation, PerformPresentation));
            SM.AddState(new FunctionState((int)States.PerformDance, PerformDance));
            SM.AddState(new FunctionState((int)States.PerformHipnotize, PerformHipnotize));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #47
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectToTake="")
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectToTake = objectToTake;

            SATO_succeeded = "I got it.";
            SATO_failed = "I can't take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.SATO_Failed, SATO_Failed));
            SM.AddState(new FunctionState((int)States.SATO_Succeeded, SATO_Succeeded));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
Example #48
0
        /// <summary>
        /// Creates the SM of the primite action: Take-Object
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        /// <param name="objectToTake">Name of the object to take. Default: empty string.</param>
        public TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectToTake = "")
        {
            this.brain  = brain;
            this.cmdMan = cmdMan;

            finalStatus = Status.Ready;

            this.SMConfiguration = SMConfiguration;
            this.objectToTake    = objectToTake;

            SATO_succeeded = "I got it.";
            SATO_failed    = "I can't take the object.";

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));

            SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject));
            SM.AddState(new FunctionState((int)States.SATO_Failed, SATO_Failed));
            SM.AddState(new FunctionState((int)States.SATO_Succeeded, SATO_Succeeded));

            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
 public SM_AssociateNameAndFace(HAL9000Brain brain, HAL9000CmdMan cmdMan, string [] knownPersons, string defaultName, List <string> rejectedNames) : this(brain, cmdMan, knownPersons, defaultName, true, rejectedNames, false)
 {
 }
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind)
     : this(brain, cmdMan, anyObject, objectsToFind, true)
 {
 }
 /// <summary>
 /// Creates a state machine to enter the arena up to a location known by the motion planner called "frontentrance". It will not try to open the door by itself and will ask for help from the beginning instead.
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan)
     : this(brain, cmdMan, "frontentrance", false)
 {
 }
 /// <summary>
 /// Creates a state machine to enter the arena up to location known by the motion planner. It will not try to open the door by itself and will ask for help from the beginning instead.
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location)
     : this(brain, cmdMan, location, false)
 {
 }
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string[] objectsToFind, int searchAttempts, bool twoArms) : this(brain, cmdMan, anyObject, objectsToFind, true, searchAttempts, twoArms)
 {
 }
Example #54
0
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind) : this(brain, cmdMan, anyObject, ObjectToFind, true)
 {
 }
 public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string[] objectsToFind, int searchAttempts, bool twoArms)
     : this(brain, cmdMan, anyObject, objectsToFind, true, searchAttempts, twoArms)
 {
 }
 /// <summary>
 /// Creates a state machine to enter the arena up to a location known by the motion planner called "frontentrance".
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool tryToOpenDoor) : this(brain, cmdMan, "frontentrance", tryToOpenDoor)
 {
 }
Example #57
0
 public CmdRecognized(HAL9000Brain brain)
     : base("recognized")
 {
     this.hal9000Brain = brain;
 }
Example #58
0
        /// <summary>
        /// Creates a state machine for the RoboZoo test.
        /// </summary>
        /// <param name="brain">HAL9000Brain instance</param>
        /// <param name="cmdMan">HAL9000CmdMan instance</param>
        public RoboZoo(HAL9000Brain brain, HAL9000CmdMan cmdMan)
        {
            this.brain = brain;
            this.cmdMan = cmdMan;

            t_HEADSearchMovements = new Thread(new ThreadStart(HEADSearchMovements));
            t_ARMSSearchMovements = new Thread(new ThreadStart(ARMSSearchMovements));
            t_SPGENSearchPhrases = new Thread(new ThreadStart(SPGENSearchPhrases));
            t_BASEDanceMovements = new Thread(new ThreadStart(BASEDanceMovements));
            t_ARMSDanceMovements = new Thread(new ThreadStart(ARMSDanceMovements));
            t_HEADDanceMovements = new Thread(new ThreadStart(HEADDanceMovements));
            t_SPGENHypnoSpeech = new Thread(new ThreadStart(SPGENHypnoSpeech));
            t_ARMSHypnoMovements = new Thread(new ThreadStart(ARMSHypnoMovements));
            t_HEADHypnoMovements = new Thread(new ThreadStart(HEADHypnoMovements));

            headRandPos = new Random();
            searchAttempt = 0;

            stopAllThreads = false;
            hypnoSpeechFinished  = false;
            stopDance = false;

            finalStatus = Status.Ready;

            SM = new FunctionBasedStateMachine();
            SM.AddState(new FunctionState((int)States.InitialState, InitialState));
            SM.AddState(new FunctionState((int)States.SearchMarker, SearchMarker));
            SM.AddState(new FunctionState((int)States.MarkerFound, MarkerFound));
            SM.AddState(new FunctionState((int)States.MarkerNotFound, MarkerNotFound));
            SM.AddState(new FunctionState((int)States.PerformPresentation, PerformPresentation));
            SM.AddState(new FunctionState((int)States.PerformDance, PerformDance));
            SM.AddState(new FunctionState((int)States.PerformHipnotize, PerformHipnotize));
            SM.AddState(new FunctionState((int)States.FinalState, FinalState, true));

            SM.SetFinalState((int)States.FinalState);
        }
 /// <summary>
 /// Creates a state machine to enter the arena up to a location known by the motion planner called "frontentrance".
 /// </summary>
 /// <param name="brain">A HAL9000Brain instance</param>
 /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param>
 public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool tryToOpenDoor)
     : this(brain, cmdMan, "frontentrance", tryToOpenDoor)
 {
 }