Project showcase
Gesture Controlled Robotic Arm Using Kinect & Arduino

Gesture Controlled Robotic Arm Using Kinect & Arduino

This is a Simulink model to control a robotic arm using gestures that are captured using Kinect; robotic arm developed using servo motors.

  • 9,962 views
  • 0 comments
  • 29 respects

Components and supplies

Apps and online services

About this project

About

This is a Simulink model to control a robotic arm by gestures that are captured using a Kinect sensor. This robot arm is developed using servo motors that replicate the right arm shoulder, elbow and hand movements.

My file at Mathworks File Exchange: https://in.mathworks.com/matlabcentral/fileexchange/58189-gesture-controlled-robotic-arm-using-kinect--simulink-support-for-kinect--and-arduino

Software Required:

  • Matlab 2013a or later
  • Arduino IDE

Components Required:

  • Kinect Sensor
  • Arduino Board
  • Servo Motors
  • Matlab 2013a

This is a project by B.Avinash & J.Karthikeyan

The Zip file contains the Matlab Simulink Support for Kinect and the Simulink model named "GestureControlledRoboticArm" that we have created as well as the Arduino code and wiring diagram. The Simulink Support for Kinect was downloaded from Mathworks File Exchange and the full credits go to "Takashi Chikamasa" for providing it. We do not own the copyrights or have developed the Simulink Support for Kinect.

Simulink Support for Kinect consists of IMAQ, Image, IR, Depth, Motion and Skeleton blocks to achieve real-time image data acquisition from Kinect devices such as Microsoft Kinect or ASUS Xtion PRO under Simulink simulation environment. It works with 32bit/64bit version of MATLAB R2010b or later in Windows 7 32bit/64bit and it requires the following 3rd party software:

  • C MEX Compiler: Microsoft Visual Studio 2010 Express Edition (VC++) - Microsoft Windows SDK 7.1

For more detailed information, please refer to document in the zip file and help of the blocks.

Optional MATLAB products:

  • Computer Vision System Toolbox (highly recommended)
  • DSP System Toolbox (to acquire Kinect Microphone Array data)
  • Simulink Coder (to generate *.exe file)

Acknowledgements: Kinect Matlab, Simulink Support For Kinect, and Kinect Microsoft Sdk inspired this project.

Awards and Recognitions:

Code

Arduino Program to Receive Angle Data from MatlabArduino
The angle output from the Matlab Software is encypted. In the Arduino IDE, we have written a rogram to receive the angle data, decrypt it and send it to the servo motors.
#include <Servo.h> 
 
Servo myservo1; //Servo Shoulder Vertical Movement
Servo myservo2; //Servo Shoulder horizontal Movement
Servo myservo3; //Elbow Movement
Servo myservo4; //Gripper Movement

void setup() 
{
  Serial1.begin(9600);
  myservo1.attach(9); //Attach Shoulder Vertical Movement Control Signal Pin To 9
  myservo2.attach(10); //Attach Shoulder Horizontal Control Signal Pin To 10
  myservo3.attach(3); //Attach Elbow Movement Control Signal Pin To 3
  myservo4.attach(5); //Attach Gripper Movement Control Signal Pin To 5
}

void loop() 
{
 if(Serial1.available()>0) //Check for any data in Serial Port
 {
   byte con = Serial1.read(); //Read serial data and store it in con
  
   if(con > 0)
   {
   if(con < 50)
   {
   con = (180*con)/50;  //Decrypt the data obtained
   myservo1.write(con); //Write the data to myservo1          
   delay(15);
   }
   }
  
   if(con > 50)
   {
   if(con < 100)
   {
   con = (180*(con-50))/50; //Decrypt the data obtained
   myservo2.write(con); //Write the data to myservo2            
   delay(15);
   }
   }
    
   if(con > 100)
   {
   if(con < 150)
   {
   con = (180*(con-100))/50; //Decrypt the data obtained
   myservo3.write(con); //Write the data to myservo3
   delay(15);
   }
   }
   
   if(con > 150)
   {
   if(con < 200)
   {
   con = (180*(con-150))/50; //Decrypt the data obtained
   if(con<20)
   {
   myservo4.write(180); //Write the data to myservo4
   delay(15);
   }
   if(con>20)
   {
   myservo4.write(60);
   delay(15);
   }
  }
 }
      
      }

}

Custom parts and enclosures

Simulink Model
Open the GestureControlledRoboticArm.mdl using Matlab after installing the Simulink Support for Kinect.
GestureControlledRoboticArm.mdl
Matlab Simulink Code & Library Files (Instructions included)
In the .ZIP, you can find the Simulink for Kinect Support developed by Takashi Chikamasa, Mathworks. Inside the "slkinect" folder, you can find the instruction on how to install the library file in Matlab.
Gesture%20Controlled%20Robotic%20Arm%20Using%20Matlab%20Simulink%20Support%20For%20Kinect.zip

Schematics

Arduino - Servo Connection
The data output (angle) from the matlab software is sent to the arduino via TTL device. The connection from the TTL - Arduino & Arduino - Servo motors are as shown in the diagram.
Arduino%20servo%20connection
Simulink Model (Gesture Controlled Robotic Arm)
This is the simulink model we have developed to aquire the data from kinect, convert xyz co-ordinates to angle, decrypt the data and send it to Arduino via Serial Communication.
Simulink%20model

Comments

Similar projects you might like

Robotic Arm Controlled by Human Arm

Project showcase by zezarandrade

  • 3,704 views
  • 0 comments
  • 5 respects

Nunchuk Controlled Robotic Arm (with Arduino)

Project tutorial by Igor Fonseca Albuquerque

  • 4,616 views
  • 5 comments
  • 36 respects

Gesture Controlled Robotic Arm

by Teddy99

  • 2,095 views
  • 0 comments
  • 2 respects

Local and Remote Programmable Robotic Arm

Project tutorial by MJRoBot

  • 17,966 views
  • 7 comments
  • 54 respects

PC Controlled Robotic Arm

Project tutorial by AhmedAzouz

  • 8,453 views
  • 12 comments
  • 67 respects

How to Make a Remote Controlled Robotic Hand with Arduino

Project showcase by Gabry295

  • 35,362 views
  • 5 comments
  • 110 respects
Add projectSign up / Login