Skip to content

Command Break Down

Go to the dishwasher then find an apple and get it and bring it to the waving person in the office

  • go(dishwasher)

  • find(apple)

    • gaze(n predefined points)
    • detect(apple)
    • approach_point(apple)
  • pick(apple)
  • go(office)
  • find(waving_person)
    • gaze(n predefined points)
    • detect(waving_person)
    • approach_point(waving_person)
  • give(apple)

Locate a waving person in the kitchen and answer a question

  • go(kitchen)
  • find(waving_person)
    • gaze(n predefined points)
    • detect(waving person)
    • approach_point(waving_person)
  • say(ask_question)
  • hear(user)
  • contextual_say(answer)

Meet Axel in the bedroom and answer a quiz

  • go(bedroom)
  • find(Axel)
    • gaze(n predefined points)
    • detect(person)
    • if person[i] == Axel then approach_point(Axel)
    • else: for person in persons: approach_point(person) -> ask if is Axel
    • save_to_context(Axel)
  • say(ask_question)
  • hear(user)
  • contextual_say(answer)

Tell me how many waving persons are in the kitchen

  • go(kitchen)
  • count(waving_person)
    • gaze(n predefined points)
    • detect(waving person)
  • go(task_origin)
  • contextual_say(answer)

Tell me the gesture of the person at the tv stand

  • go(tv_stand)
  • find(person)
    • gaze(n predefined points)
    • detect(person)
  • go(task_origin)
  • contextual_say(gesture)

Say your teams affiliation to the waving person in the bathroom - go(bathroom) - find(waving_person) - gaze(n predefined points) - detect(waving person) - approach_point(waving_person) - contextual_say(affiliation)

Answer the quiz of the person raising their right arm in the living room

  • go(living_room)
  • find(person_raising_right_arm)
    • gaze(n predefined points)
    • detect(person_raising_right_arm)
    • approach_point(person_raising_right_arm)
  • say(ask_quiz)
  • hear(user)
  • contextual_say(answer)

Follow Jane from the desk to the kitchen

  • go(desk)
  • find(Jane)
    • gaze(n predefined points)
    • detect(person)
    • if person[i] == Jane then approach_point(Jane)
    • else: for person in persons: approach_point(person) -> ask if is Jane
    • save_to_context(Jane)
  • say(intent)
  • follow_person_until(Jane, kitchen)

Escort Axel from the trashbin to the pantry

  • go(trashbin)
  • find(Axel)
    • gaze(n predefined points)
    • detect(Axel)
    • if person[i] == Axel then approach_point(Axel)
    • else: for person in persons: approach_point(person) -> ask if is Axel
    • save_to_context(Axel)
  • say(intent)
  • escort_to(pantry)

Take the person pointing to the right from the armchair to the exit

  • go(armchair)
  • find(person_pointing_right)
    • gaze(n predefined points)
    • detect(person_pointing_right)
    • approach_point(person_pointing_right)
  • say(intent)
  • escort_to(exit)

Take the person wearing a yellow t shirt from the side tables to the office

  • go(side_tables)
  • find(person_yellow_tshirt)
    • gaze(n predefined points)
    • detect(person_yellow_tshirt)
    • approach_point(person_yellow_tshirt)
  • say(intent)
  • escort_to(office)

Say hello to the person wearing a gray t shirt in the living room and answer a quiz

  • go(living_room)
  • find(person_gray_tshirt)
    • gaze(n predefined points)
    • detect(person_gray_tshirt)
    • approach_point(person_gray_tshirt)
  • say(hello)
  • say(ask_quiz)
  • hear(user)
  • contextual_say(answer)

Say hello to Morgan in the kitchen and answer a question

  • go(kitchen)
  • find(Morgan)

    • gaze(n predefined points)
    • detect(Morgan)
    • if person[i] == Morgan then approach_point(Morgan)
    • else: for person in persons: approach_point(Morgan) -> ask if is Morgan
    • save_to_context(Morgan)
  • say(hello)

  • say(ask_question)
  • hear(user)
  • contextual_say(answer)

Note: in the second find, the person should be already known i/e found person[i] == Jane Meet Jane at the entrance then locate them in the kitchen

  • go(entrance)
  • find(Jane)
    • gaze(n predefined points)
    • detect(Jane)
    • if person[i] == Jane then approach_point(Jane)
    • else: for person in persons: approach_point(Jane) -> ask if is Jane
    • save_to_context(Jane)
  • go(kitchen)
  • find(Jane)
    • gaze(n predefined points)
    • detect(Jane)
    • if person[i] == Jane then approach_point(Jane)
    • else: for person in persons: approach_point(Jane) -> ask if is Jane
    • save_to_context(Jane)
  • say(intent finished)

Tell me how many people in the office are wearing yellow coats

  • go(office)
  • count(person_yellow_coat)
    • gaze(n predefined points)
    • detect(person_yellow_coat)
    • save_to_context(count)
  • go(task_origin)
  • contextual_say(answer)

Tell me how many people in the living room are wearing gray coats

  • go(living_room)
  • count(person_gray_coat)
    • gaze(n predefined points)
    • detect(person_gray_coat)
    • save_to_context(count)
  • go(task_origin)
  • contextual_say(answer)

Tell the gesture of the person at the side tables to the person at the tv stand

  • go(side_tables)
  • find(person)

    • gaze(n predefined points)
    • detect(person)
    • save_to_context(gesture)
  • go(tv_stand)

  • find(person)
    • gaze(n predefined points)
    • detect(person)
  • contextual_say(gesture)

Follow the standing person in the living room

  • go(living_room)
  • find(standing_person)
    • gaze(n predefined points)
    • detect(standing_person)
    • approach_point(standing_person)
  • say(intent)
  • follow_person_until_canceled(standing_person)

Go to the kitchen then locate a snack and get it and deliver it to Adel in the bathroom

  • go(kitchen)
  • find(snack)
    • gaze(n predefined points)
    • detect(snack)
    • approach_point(snack)
  • pick(snack)
  • go(bathroom)
  • find(Adel)
    • gaze(n predefined points)
    • detect(Adel)
    • if person[i] == Adel then approach_point(Adel)
    • else: for person in persons: approach_point(Adel) -> ask if is Adel
    • save_to_context(Adel)
  • say(intent)
  • give(snack)

Take a cleaning supply from the kitchen table and bring it to the standing person in the kitchen

  • go(kitchen_table)
  • find(cleaning_supply)
    • gaze(n predefined points)
    • detect(cleaning_supply)
    • approach_point(cleaning_supply)
  • pick(cleaning_supply)
  • find(standing_person)
    • gaze(n predefined points)
    • detect(standing_person)
    • approach_point(standing_person)
  • say(intent)
  • give(cleaning_supply)

Locate a cleaning supply in the bedroom then take it and bring it to the standing person in the bedroom

  • go(bedroom)
  • find(cleaning_supply)
    • gaze(n predefined points)
    • detect(cleaning_supply)
    • approach_point(cleaning_supply)
  • pick(cleaning_supply)
  • find(standing_person)
    • gaze(n predefined points)
    • detect(standing_person)
    • approach_point(standing_person)
  • say(intent)
  • give(cleaning_supply)

Tell me how many fruits there are on the bed

  • go(bed)
  • count(fruits)
    • gaze(n predefined points)
    • detect(fruits)
    • save_to_context(count)
  • go(task_origin)
  • contextual_say(answer)

TODO: how to detect biggest object?

Tell me what is the biggest object on the kitchen table

  • go(kitchen_table)
  • find(biggest_object)
    • gaze(n predefined points)
    • detect(biggest_object)
    • save_to_context(objects)
  • go(task_origin)
  • contextual_say(biggest_object)

Bring me a soccer ball from the dishwasher

  • go(dishwasher)
  • find(soccer_ball)
    • gaze(n predefined points)
    • detect(soccer_ball)
    • approach_point(soccer_ball)
  • pick(soccer_ball)
  • go(task_origin)
  • give(soccer_ball)

TODO: how to detect lightest object that is a toy?

Tell me what is the lightest toy on the bookshelf

  • go(bookshelf)
  • find(lightest_toy)
    • gaze(n predefined points)
    • detect(toys)
    • save_to_context(toys)
  • go(task_origin)
  • contextual_say(lightest_toy)

Todo ideas

TODO: how to detect lightest object that is a toy?

  • When in the find method, insert all objects matching description to a db.
  • In the db, store previously know object properties.
  • When determining the lightest object, compare the objects in the db and return the lightest one.
  • Perhaps, implement a contextual_say method that fetches context to answer queries?
  • Let the contextual say choose between the databases

TODO: how to detect biggest object?

  • Same idea as previous todo

TODO: how to handle finds with different requirements?

  • i.e. find by name, by posture, by object recognizable with model?

TODO: deux ex machina integration

-

TODO: confirmation implementation

  • How to add confirmation and fallbacks to the subcommands? add confirmation within the subcommand or before/after the subcommands?