其他分享
首页 > 其他分享> > 基于Kinect 2.0 与 Alpha 1s 阿尔法机器人的体感控制开发

基于Kinect 2.0 与 Alpha 1s 阿尔法机器人的体感控制开发

作者:互联网

Kinect4AlphaRobot

基于Kinect 2.0 与 Alpha 1s 阿尔法机器人的体感控制开发

项目是两位成员@Cheman @JYang 完成。

项目说明

项目通过Kinect捕捉人体动作数据,通过蓝牙模块控制 Alpha Robot (优必选阿尔法机器人1S)

演示视频

https://share.weiyun.com/IhiifkW6

项目技术点

项目硬件模块

bluemodel
kinect2.0
alpha1s

BLE蓝牙4.0串口模块 [购买链接:【1】带底板HC-05主从机一体蓝牙模块 无线串口透传通讯 兼容arduino https://item.taobao.com/item.htm?spm=a230r.1.14.62.55cc54ccJ5Dicz&id=39244262350&ns=1&abbucket=15#detail

【2】CH340G代替PL2303 USB转TTL 转串口 中九升级小板 刷机线 STC下载https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-16248799899.14.5ec6546ewcZDPA&id=17817178269]

Kinect One 2.0(可同时记录6个人的20个关节点)[XBOX ONE/S Kinect 2.0感应器 开发高清体感摄像头 Kinect体感器https://item.jd.com/11466539367.html?jd_pop=ba27070e-17ed-489b-900c-178a9b63ff51&abt=0]

Alpha 1s 阿尔法机器人(16个自由度)[https://item.jd.com/10536803062.html]

Win8系统以上的主机(支持USB3.0+内存在4G以上)[https://item.jd.com/3879331.html]

开发环境搭建:

1、找一台Win8系统以上的主机(支持USB3.0+内存在4G以上)

2、安装Kinect开发环境 http://www.microsoft.com/en-us/download/details.aspx?id=44561 完成后插入Kinect设备看是否正常

3、安装.net framework 与 visual studio 开发环境 【1】https://www.microsoft.com/en-us/download/details.aspx?id=17851 【2】 https://visualstudio.microsoft.com/

4、打开vs , 导入项目工程文件

5、按淘宝买来的蓝牙模块组装后,按附带的教程,测试蓝牙发射模块是否可行

6、去优必优官网下载蓝牙控制指令文档【1】蓝牙控制指令文档 https://assets-new.ubtrobot.com/Alpha 1 系列蓝牙通信协议.pdf?download 【2】用户使用说明书 https://assets-new.ubtrobot.com/Alpha 1S用户使用手册.pdf?download

7、确定可以通过PC发送指令给机器人,机器人能动

8、核实蓝牙模块插的USB口与代码里的一致

9、运行项目程序 (应该有动作了,祝你好运),也可以自己打包生成BIN文件 ,下次直接双击运行就可了,因为代码目录里的BIN文件是基于我的电脑环境的,所以在你的电脑可能会不行,USB口一致性的问题,也可以在VS里下载个打包插件,这样能生成EXE,也是可以的

开发软件环境

实现原理思路

yuanli

Kinect技术可追踪20个骨骼关节点,骨骼数据包含20个关节点的X,Y,Z坐标信息,我们利用Kinect SDK 里的BodyBase案例里的深度图像处理技术进行二次开发,取相对应的14个节点数值

zuobiao
(图片只画出左侧标注)

Kinect 人体感应示意图

yuanli

面向感应器,X代表左右,Y代表上下,Z代表前后(距离在1.2~3.5m范围内,1.8米最适合)
蓝牙通信协议开发标准(可上优必选官网下载,看懂文档是开发者的基本功就不多说了)

要注意的是它是16进制,需要把组装好的命令字符串进行转换打包后,通过蓝牙模块发送
应用三角函数进行角度转换

面向感应器,三维坐标在扫描画面的左下角,以画面左边手臂为参考;
手从竖直立正抬至P状态为动作过程分析,r为与初始位置时的角度;
每一帧获取到的r值随运动改变,电机也将即时改变角度;

体感控制示意图(面向设备)

jishuan

设P状态下,取shoulder肩部点O(x0,y0,z0),elbow肘部点P(x,y,z),Z轴值保持不变;

对于肘到肩部shoulder所对应的机器人电机可忽略Z轴的影响,即通过这两点的X与Y值来求出r值。

当双手竖直向下时,Alpha 1S机器人有以下初始值:

tan值的 + 与 – 区域正好可表达角度是大于90度还是小于90度,也可观察其递变规律。

转化为平面三角运算示意图为:为:

当手竖直向下时 电机角度 r= 0 ,当手竖直向上时,电机角度 r= 180; 则

tan r = (x-x0)/(y-y0), r = arctan (x-x0)/(y-y0)(0<r<π)

将小数转换成实际角度

α = r/π*180

将含有角度值的命令字符串用16进制转换后通过蓝牙传给机器人,即可响应。

同样道理,当手向前水平合拢时,肩部关节点shoulder基本不变,通过X与Z轴求得手臂在肩部点前后转动的角度,方法与公式就不再详细说明。

勾搭我们

标签:1s,体感,机器人,蓝牙,Kinect,https,Alpha,com
来源: https://www.cnblogs.com/chaowen/p/14709456.html