GithubHelp home page GithubHelp logo

handihand_experiment's Introduction

Experiment

Setup

alt text

  • HANDi Hand mounted on Handi-Stand, next to pipet stand.
  • Shapes mounted to pipet stand to easily and repeatably position within the grasp of the HANDi Hand.
  • Shapes positioned in hand at angle of 52 degrees from vertical for a natural grasp
  • HANDi Hand faces black posterboard to provide solid background for camera data.
  • GLOVi Glove worn on user’s right hand.
  • Arduino Mega to collect HANDi Hand signals and drive servos; separate Arduino Leonardo to collect GLOVi Glove signals.
  • HANDi Hand signals coming in at 70ish Hz
  • GLOVi Glove signals coming in at 750ish Hz
  • Camera data coming in at 15 Hz, image size 480x640 RGB

Procedue

alt text

  • Recording starts.
  • Each trial: Button press initiates trial start. Hand waits 2s, during which time the shape is rotated into the grasping area. Hand closes completely and waits 2s, during which time the experimenter makes signal using gloved hand. See table below. Hand opens after 2s, during which time the shape is rotated out of the grasping area, and field of view of the camera.
    • When not signalling, the gloved hand was returned to a fully extended position.
    • D0 on the HANDi Hand remained fully rotated inward in both open and closed positions; all other fingers flexed for closure and extended to open.
  • Approximately 10 repetitions (trials) per episode, 3 episodes per object for a total of approximately 30 trials per object.
  • All trials for each object were completed sequentially before moving to the next object.
Object Trials Signal on GLOVi Glove Fingers Flexed (glove) Fingers Extended (glove)
Green Cyl 10+10+11 = 31 One D0, D1, D3, D4, D5 D2
Orange Step 9+11+10+3 = 33* Two D0, D1, D4, D5 D2, D3
Green Step 11+11+11 = 33 Three D0, D1, D5 D2, D3, D4
Orange Cyl 12+10+12 = 34 Four D0, D1 D2, D3, D4, D5
  • On trial 2 of episode 1, an unnamed experimenter forgot to signal with the glove when the hand closed, so a bonus episode of 3 trials was recorded.

The geometry of the shapes is given in the figure below. All shapes were 3d printed and weighed approx 70 grams. alt text

Data Recording

Handihand

15 signals were read from the HANDi hand at 70 Hz in a comma seperated list over USB communication. The order of the list was:

button, thumb rot D0, thumb flex D1P, fake, thumb flex D1D, index D2P, index D2I, middle D3P, middle D3I, ring D4P, pinky D5P, FSR thumb, FSR index, FSR middle, FSR ring, FSR pinky

The fake signal was for a nonexistant Potentiometer. As the data was read in by a python thread, the time that it was read was prepended onto the list and written to a .txt file.

Gloviglove

A simiar approach was done for the GLOVi glove which had 6 signals reading at about 750 Hz. The order of the comma seperate list was :

thumb proximal, thumb distal, index, middle, ring, pinky

The data was read in by a seperate python thread, the time prepended to the list and written to a .txt file.

Camera

The camera data was read by another python thread via OpenCV at a rate of about 15 Hz. Each 480x640x3 (color) frame was appended to an array and the time was recorded to a .txt file. To ensure that no data was lost due to file corruption and to limit the amount of data stored in RAM, if array contained 200 frames, it was converted to a numpy array and saved to disk with an appropriate section number in the filename. In this way, multiple sections could later be concatenated together to recreate the entire recorded video and could be time-matched with the Handihand and Gloviglove data via the timestamp recorded in the associated camera_times .txt file.

Data Parsing

After manually and progromatically verifying all of the data, color histogram data was calculated for each color channel for each frame. This resulted in 3 numbers valuing the of the average RGB of a frame.

The data was then merged using the glove data as a basis as it had the highest rate of recording. For each timestamp of the glove data, the most recent hand data and the most recent average (calculated by the cam_times.txt file) RGB values of the camera frames were appended together. Finally, using the handihand "button" as the indication of the start of a trial, 9 second trials were isolated and saved to disk.

handihand_experiment's People

Contributors

jadentravnik avatar djbrenne avatar

Watchers

James Cloos avatar  avatar

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.