资源简介

针对目前五指仿人五指机械手控制方式的局限性,我们设计了一种以操作人员体感手势图像为输入控制信号,操控五指仿人五指机械手的手指按照体感手势进行实时地动作的机械手控制系统。系统首次采用Leap Motion作为体感设备采集手势数据;利用计算机程序分析体感数据,发现手势并进行判别;运用MSP430单片机设定体感手势对应的控制指令;五指仿生机械手按照单片机的控制指令,完成指定的动作。经过实际装置测试,五指仿真机械手的手指可以按照体感手势进行实时地动作。 本项目包含三部分内容 (1)基于Leap Motion API所编写的手势判断处理模块,该程序在Leap API自带的Gesture之外,可识别“剪刀”“石头”“布”“竖起大拇指”等4种手势。 (2)Leap Motion上位机与MSP430G2553单片机串口通信程序。 (3)MSP430G2553接收上位机传来参数并产生相应PWM波控制舵机程序。 上位机开发环境:Win7+VS2013 语言 C++ 单片机开发环境:Win7+CCS V5.5 语言 C 本项目受中国石油大学(华东)大学生创新训练项目支持

资源截图

代码片段和文件信息

/******************************************************************************\
* Copyright (C) 2012-2014 Leap Motion Inc. All rights reserved.               *
* Leap Motion proprietary and confidential. Not for distribution.              *
* Use subject to the terms of the Leap Motion SDK Agreement available at       *
* https://developer.leapmotion.com/sdk_agreement or another agreement         *
* between Leap Motion and you your company or other organization.             *
\******************************************************************************/

#include 
#include 
#include “Leap.h“
#include “COM.h“

using namespace Leap;

class SampleListener : public Listener {
  public:
    virtual void onInit(const Controller&);
    virtual void onConnect(const Controller&);
    virtual void onDisconnect(const Controller&);
    virtual void onExit(const Controller&);
    virtual void onframe(const Controller&);
    virtual void onfocusGained(const Controller&);
    virtual void onfocusLost(const Controller&);
    virtual void onDeviceChange(const Controller&);
    virtual void onServiceConnect(const Controller&);
    virtual void onServiceDisconnect(const Controller&);

  private:
};

const std::string fingerNames[] = {“Thumb“ “Index“ “Middle“ “Ring“ “Pinky“};
const std::string boneNames[] = {“metacarpal“ “Proximal“ “Middle“ “Distal“};
const std::string stateNames[] = {“STATE_INVALID“ “STATE_START“ “STATE_UPDATE“ “STATE_END“};

void SampleListener::onInit(const Controller& controller) {
  std::cout << “Initialized“ << std::endl;
}

void SampleListener::onConnect(const Controller& controller) {
  std::cout << “Connected“ << std::endl;
  controller.enableGesture(Gesture::TYPE_CIRCLE);
  controller.enableGesture(Gesture::TYPE_KEY_TAP);
  controller.enableGesture(Gesture::TYPE_SCREEN_TAP);
  controller.enableGesture(Gesture::TYPE_SWIPE);
}

void SampleListener::onDisconnect(const Controller& controller) {
  // Note: not dispatched when running in a debugger.
  std::cout << “Disconnected“ << std::endl;
}

void SampleListener::onExit(const Controller& controller) {
  std::cout << “Exited“ << std::endl;
}

void SampleListener::onframe(const Controller& controller) {
  // Get the most recent frame and report some basic information
  const frame frame = controller.frame();
 /* std::cout << “frame id: “ << frame.id()
            << “ timestamp: “ << frame.timestamp()
            << “ hands: “ << frame.hands().count()
<< “ extended fingers: “ << frame.fingers().extended().count()
            << “ tools: “ << frame.tools().count()
            << “ gestures: “ << frame.gestures().count() << std::endl;*/

  /**根据手指数量识别手势动作** start **/
  switch (frame.fingers().extended().count())
  {
case 0:
{
  std::cout << “fast“ << std::endl;
  CmdNum = 2;
  Write[0] = CmdNum;
  WriteFile(hCom Write strlen(Write) &dwTX NULL); //发送字符
  brea

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-06-13 22:31  Leap Motion上位机程序\
     文件        3089  2015-04-28 22:41  Leap Motion上位机程序\COM.h
     目录           0  2015-06-13 01:14  Leap Motion上位机程序\Debug\
     文件     1150800  2015-03-21 10:10  Leap Motion上位机程序\Debug\Leap.dll
     文件      114176  2015-05-05 23:13  Leap Motion上位机程序\Debug\Sample.exe
     文件     1044892  2015-05-05 23:13  Leap Motion上位机程序\Debug\Sample.ilk
     文件      343888  2015-05-05 23:13  Leap Motion上位机程序\Debug\Sample.obj
     文件     1739776  2015-05-05 23:13  Leap Motion上位机程序\Debug\Sample.pdb
     文件        2751  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.log
     目录           0  2015-06-13 01:14  Leap Motion上位机程序\Debug\SampleVS2012.tlog\
     文件        1274  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\cl.command.1.tlog
     文件       31330  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\CL.read.1.tlog
     文件        1180  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\CL.write.1.tlog
     文件        2232  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\link.command.1.tlog
     文件        3202  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\link.read.1.tlog
     文件        1196  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\link.write.1.tlog
     文件         264  2015-05-05 23:13  Leap Motion上位机程序\Debug\SampleVS2012.tlog\SampleVS2012.lastbuildstate
     文件      797696  2015-05-05 23:13  Leap Motion上位机程序\Debug\vc120.idb
     文件      512000  2015-05-05 23:13  Leap Motion上位机程序\Debug\vc120.pdb
     文件       10690  2015-05-05 23:22  Leap Motion上位机程序\Sample.cpp
     文件        1212  2015-03-21 10:11  Leap Motion上位机程序\SampleVS2012.sln
     文件       27136  2015-05-05 23:22  Leap Motion上位机程序\SampleVS2012.v12.suo
     文件       10065  2015-04-28 22:41  Leap Motion上位机程序\SampleVS2012.vcxproj
     文件         165  2015-04-27 21:30  Leap Motion上位机程序\SampleVS2012.vcxproj.user
     文件         160  2015-06-13 22:33  Leap Motion上位机程序\程序说明.txt
     目录           0  2015-06-13 01:14  Leap_G2553\
     文件         464  2014-05-08 16:06  Leap_G2553\.ccsproject
     文件       22974  2014-05-08 16:07  Leap_G2553\.cproject
     目录           0  2015-06-13 01:14  Leap_G2553\.launches\
     文件        3848  2015-04-09 10:31  Leap_G2553\.launches\Leap_G2553.launch
     文件         840  2014-05-08 16:06  Leap_G2553\.project
............此处省略46个文件信息

评论

共有 条评论

相关资源