Nao Basic Environment

The concept is to identify the best possible action by looking at the test subject. The goal is to keep the engagement with with test subject all the time and ask the best suitable question from the test subject in order to maximize the attention.

there are 5 sets of state sets and in a state set there are 4 states. each state set represent a different question and based on the observation the action must be choose from set current state set or from the next state set.

as for the demonstration purpose we have created these steps as in a way of representing,

  • find child
  • name calling
  • with whom did you come
  • asking for the favorite color
  • picture showing
  • final state

and as for the observations we have stated with 3 main parameters - gaze - distance - task completion

and the task completion was divided into 4 pars as well - well finished with the 100% expectance - gave an answer with a yes or no by verbally or competed the task with near accuracy of 75% - answer was given through head nodding or poorly conducted bellow 50% - task was never completed at all or never tried to complete it

""" [image should be added here representing the state diagram] """

state machine

in order to track the progress of the robot a state machine was created.

state structure

a state class was created in order to maintain a proper structure and it included

  • id number
  • name
  • what should be the output from the state

this was created to have have with these funtions on it

  • observation
  • work that should set when the state was achieved
  • set the child states
  • and some other basic functions to get details and set details
class State:
    def __init__(self, id:int=0, name:str="default", state_out:str="out_default") -> None:
        self.id:int= id
        self.name:str = name
        self.state_out:str = state_out
        self.children: List[State] = []

    def observe(self, gaze:int, distance:int, task:int) -> tuple:
        self.gaze = gaze
        self.distance = distance
        self.task = task
        return self.gaze, self.distance, self.task

    def work(self, functions:List[callable]) -> None:
        ret = []
        for function in functions:
            _ret = function()
            ret.append(_ret)
        return ret

    def set_child(self, child):
        if child not in self.children:
            self.children.append(child)
            return True
        else:
            self.children = set(self.children)
            return False    

    def get_child(self):
        return self.children

state set strucure

this is more similar to state class but this holds the states.

1st environment

By changing how the observation get rewarded will allow us to differentiate the outcome of the action to be selected by the model.

as for the reward structure a reward array was created according to some pre-made moves. for an example

asd asd