环境:

Leap motion & C++ SDK V2

AX-12A舵机 & DynamixelSDK

VC++ 2013

USB2Dynamixel串口模块

SMPS2Dynamixel电源模块

12V5A电源

QQ截图20160922144224

正文:

现在体感和虚拟现实非常热门。关于Leap motion在这方面的体现,大家可以到网上搜索相关资讯。

这里主要使用Leap motion来实现对ROBOTIS 公司生产的Dynamixel舵机的体感交互。

Leap motion的SDK现在分为两个版本,一个Orion,一个是V2。Orion是为了实现三维空间和VR技术的结合而诞生的软件版本,V2是原生的三维空间开发控制的软件版本,但两者使用的leap motion硬件都是一样的。由于这里不涉及VR的相关东西,所以使用V2就足够了。

QQ截图20160920185957

 

如上图所示,Leap motion 可以使用很多种程序语言进行开发,这里我现在比较熟悉的C++进行样例开发。

首先,来说说这个样例的功能。

这个样例程序我主要想实现的是Dynamixel舵机能够跟我的手掌进行互动,也就是我手掌怎样摆动,它也跟着怎样摆动。

为了简单明了地说明开发流程,这里我只使用两个AX-12A舵机模拟手掌的两个维度Pitch和Yaw,以后可以添加更多舵机模拟不同的关节(原理是一样的)。对于这两个维度的说明解释,大家请参阅以下的一篇文章:

《关于leap-motion设备里的-pitch、yaw、roll-的理解》

leapmotionpyr

从AX-12A的技术参数可以了解到,它的转动范围为0到300度,把角度转换为数值的表现形式就是0到1023,所以这个舵机的分辨率是300/1023≈0.29度。但我们驱动舵机的协议里的数值并非角度值,而是0到1023这样的数值。

dx_series_goal

Pitch和Yaw是用弧度进行表示的,但在Leap motion SDK里可以转换成角度值。

通过Pitch 和Yaw对舵机进行控制,就必须得由弧度转换成角度,再由角度转换成数值。

OK,基本原理了解得差不多了,现在对开发环境进行配置。主要包括两个SDK环境的配置:

注意(非常重要):配置过程中使用到路径的,建议使用绝对路径

(对于不熟悉VS IDE开发环境的人是一种避免麻烦的好方式)

一个是Leap motion SDK,相关配置详细流程,请参阅以下文章:

《leap motion c++ 开发环境配置 (VS2013)》

另一个是DynamixelSDK的开发环境配置,详细流程请参阅以下文章:

《DynamixelSDK Windows版本 C++例程 控制舵机程序的编译运行》

 

环境配置成功之后,就可以开始写代码了。(代码只是对上面两个例程的简单结合,没有进行优化)

演示效果如下:

leap motion 控制舵机

 

OpenCM9.04控制XM430-W350舵机

视频地址: https://haokan.baidu.com/v?vid=8171648541988572636

阅读全文

利用OpenCM9.04控制板获取舵机反馈

声明:此文档版权归属于北京小芽科技,可以转载,但要声明出处(北京小芽科技博客xiaoyatec.com)   OpenCM9.04控制板分为 A、B、C三个版本,这三个版...

阅读全文

Dynamixel Protocol 2.0 的协议使用样例介绍

声明:此文档版权归属于北京小芽科技,可以转载,但要声明出处(北京小芽科技博客xiaoyatec.com)   对于Robotis舵机来说,由于舵机版本的不同,使用的...

阅读全文

欢迎留言

你必须启用JavaScript才能看到这里的验证码!