Showing posts with label leap. Show all posts
Showing posts with label leap. Show all posts

Saturday, 11 October 2014

Integration of Subsystems on the Software level

This post we will be talking about integrating the all subsystems on software level. As a whole, we are using 3 arduino boards.
                                Board 1 - Robot Arm and Hand
                                Board 2 - IR Sensors on the Robot Hand
                                Board 3 - Glove (Vibrational Motors)

Shown is the overview of how the user control the robot remotely. Setting up the server is discussed in detail here.
Figure 1 - Overview

Calibrating the Arm

In the previous posts we talked about how we applied Inverse Kinematics and kinematic analysis of the mentor arm. As mentioned the arm consists with Potentiometers and DC motors and with the POTs we get a feedback on the angle and movement direction. In this post we will be talking on calibrating the arm. 

Indeed the reading from the POTs are consistent. And we don't have a control circuit to receive accurate readings. We are passing each POT readings through a digital low pass filter so it filters out the high frequency noise. Also there is a threshold value for pot readings (+/- 10) to avoid the overshoot. 

In the mentor arm there are physical limits to avoid gears getting damaged physically. In the code we will limiting the movement of each arm respect to the limits of the leap motion and including these physical limits. Also in the using the IK formulae calculated angles, will go to infinity if the distance of the palm and the leap origin is greater than the total length of Top arm and bot arm which is 31.5cm. So if the function "jointangles"outputs "NaN" (Not a Number - infinity) we ignore them.


Wednesday, 8 October 2014

Leap Motion V2 Tracking Beta

With the new beta version of leap motion API, skeletal tracking it enable us to receive additional for each overall hand and data is much improved compared to version 1.

Leap motion - skeletal tracking
https://community.leapmotion.com/t/v2-tracking-beta-new-sdk-and-tracking-release-v2-0-3-17004/1329

Friday, 16 May 2014

Identifying all the fingers seperately

In order to control each servo we have to identify fingers separately(thumb, index, pinky, ring, middle). The sdk assigns an ID to each finger however this randomise always. So I did some research regarding this and most of them were suggesting to identify each finger by taking their lengths and the angle between palm and the tip position.

However I managed to identify each finger by sorting the x coordinates. So the left most finger is the Thumb, then index and vice versa.

Tuesday, 11 March 2014

Interfacing Leap Motion with Arduino


Using the WebSocket server in leapmotion SDK we can analyse the tracking data.
Its super easy! Just connect the port to ws://127.0.0.1:6437

I have used 'ws' library from node.js. To install the 'ws' library the following command is used.
npm install ws --save

We communicate with Arduino using the 'johnny-five' library. It's installed using this 
npm install johnny-five --save

Yeah! Thanks to node.js :)




You can find the code on github: arduinoleapcar

Have FUN! :)