Code Monkey home page Code Monkey logo

i-spy's Introduction

i-spy

Play the I Spy game with the Kinova Gen3 Robot!

Main Software Requirements:

Build

$ cd ~/catkin_ws/src
$ git clone https://github.com/soroush-msd/i-spy.git
$ cd ~/catkin_ws/
$ catkin_make

Run

In one terminal:

$ roscore

And in another terminal:

$ cd ~/catkin_ws/
$ source devel/setup.bash
$ rosrun i-spy stateMachine.py [f]emale/[m]ale [h]uman/[r]obot/[g]reeting

How To Play?

This is a voice-based interaction. You need to have three components connected to your system:

  • A microphone through which you will speak to the robot.
  • A speaker through which the robot will speak to you.
  • The Kinova Gen3 Robotic Arm with a working camera to enable the robot to see and detect objects in the environment.

There are two/three-ish different scenarios you can play the game:

  1. The robot looks around, chooses one random object, picks its first letter and then you will need to guess the matching object.
  2. You look around, choose one random object within the robot's FOV and pick its first letter. The robot then asks you for the letter and tries to guess the matching object.
  3. The robot greets you, introduces itself, and then starts scenario 1.

So, for example, if you run:

$ rosrun i-spy stateMachine.py f r

The robot will play scenario 1 with the female voice.

Note: f stands for female, and r stands for robot in the command line arguments. This means the robot will have a female voice and will be providing a letter for the user to guess.

Or, if you run:

$ rosrun i-spy stateMachine.py m h

The robot will play scenario 2 with the male voice.

Note: m stands for male, and h stands for human in the command line arguments. This means the robot will have a female voice, and you will be providing a letter for the robot to guess.

Similarly, if you run:

$ rosrun i-spy stateMachine.py m g

The robot will play scenario 3 with the male voice.

Note: g stands for greeting in the command line arguments. Refer to scenario 3 for the explanation.

Important Notes:

⚠️ Your microphone needs to remain mute except when you are required to speak to the robot. When ready to speak:

  1. Unmute the microphone,
  2. Provide input,
  3. Mute back the microphone.

This might be due to the sensitivity of different microphones and the variety of energy level thresholds needed to adjust to ambient noise.


⚠️ When the robot asks you about the first letter of the object, you need to provide input by speaking in the following format:

  • letter x, for example, if the object starts with x. Or
  • letter y, for example, if the object starts with y.

State Machine Interactions

The diagram below demonstrates the interactions and transitions between state machines in different stages during the game:

Demo Videos

The videos below demonstrate the interactions between a human participant and the robot playing the game in different scenarios.

Scenario 3 with female voice
Related command:

$ rosrun i-spy stateMachine.py f g
1.mp4



Scenario 2 with female voice
Related command:

$ rosrun i-spy stateMachine.py f h
2.mp4



Scenario 1 with male voice
Related command:

$ rosrun i-spy stateMachine.py m r
3.mp4



Scenario 2 with male voice
Related command:

$ rosrun i-spy stateMachine.py m h
4.mp4

📚 More Info

For more information regarding this project and the whys and hows: CLICK ME

i-spy's People

Contributors

soroush-msd avatar

Watchers

 avatar

Forkers

chri-lab

i-spy's Issues

Demo Video

Add some of the actual Demo videos to the repo.

README

Change some wordings and add more explanations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.