Kinect4AlphaRobot使用kinect制作简易的体感控制机器人(动作模仿)

项目环境

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

项目说明

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

演示视频

使用kinect体感控制机器人

项目技术点

Todo List:

  • 蓝牙通信
  • 串口开发(项目可实现的基础)
  • Kinect获取到的骨骼节点三维坐标数据与Alpha 1S电机转动角度的转换运算
  • 机器人动作重心偏移解决方法
  • 解决Kinect排除多人数据捕捉干扰方法

项目硬件模块



开发环境搭建

  1. 安装Kinect开发环境 完成后插入Kinect设备看是否正常
  2. 安装.net framework 与 visual studio 开发环境
  3. 打开vs , 导入项目工程文件
  4. 按淘宝买来的蓝牙模块组装后,按附带的教程,测试蓝牙发射模块是否可行
  5. 去优必优官网下载蓝牙控制指令文档
    蓝牙控制指令文档
    用户使用说明书
  6. 确定可以通过PC发送指令给机器人,机器人能动
  7. 核实蓝牙模块插的USB口与代码里的一致
  8. 运行项目程序 (应该有动作了,祝你好运),也可以自己打包生成BIN文件 ,下次直接双击运行就可了,因为代码目录里的BIN文件是基于我的电脑环境的,所以在你的电脑可能会不行,USB口一致性的问题,也可以在VS里下载个打包插件,这样能生成EXE,也是可以的

开发软件环境

  • Kinect for Windows SDK 2.0(附带kinect browser与kinect studio)
  • 串口调试助手
  • Visual Studio 2017(本项目使用C#)

实现原理思路

利用Kinect获取人体骨骼关节点的三维空间坐标数据(x,y,z)

Kinect技术可追踪20个骨骼关节点,骨骼数据包含20个关节点的X,Y,Z坐标信息,我们利用Kinect SDK

里的BodyBase案例里的深度图像处理技术进行二次开发,取相对应的14个节点数值

(图片只画出左侧标注)

  • 头部(Head) --肩膀中心(ShoulderCenter)
  • 肩膀中心(ShoulderCenter) -- 脊柱中心(Spine)
  • 脊柱中心(Spine) -- 髋部中心(HipCenter)
  • 髋部中心(HipCenter) -- 左或右膝关节(KneeLeft or KneeRight)
  • 左膝关节KneeLeft(右膝关节KneeRight) -- 左踝关节leLeft (右踝关节AnkleRight)
  • 左踝关节AnkleLeft (右踝关节AnkleRight)- 左脚FootLeft (右脚FootRight)
  • 左手(HeadLeft) --左手腕(Wrist Left)
  • 左手腕(Wrist Left) -- 左胳膊肘(Elbow Left)
  • 左胳膊肘(Elbow Left) -- 左肩膀(Shoulder Left)
  • 左肩膀(Shoulder Left)--肩膀中心(Shoulder Center)
  • 肩膀中心(Shoulder Center)-右肩膀(Shoulder Right)
  • 右肩膀(Shoulder Right)- 右胳膊肘 (Elbow Right)
  • 右胳膊肘 (Elbow Right)- 右手腕(Wrist Right)
  • 右手腕(Wrist Right)- 右手 (Hand Right)

Kinect 人体感应示意图

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

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

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

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

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

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

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

  • 机器人的左手(即画面右则手臂) shoulder对应的机器人电机初始角度为 0 度,竖直向上时为180度;
  • 机器人的右手(即画面左则手臂) shoulder对应的机器人电机初始角度 180 度,竖直向上时为0度;
    tan值的 + 与 -- 区域正好可表达角度是大于90度还是小于90度,也可观察其递变规律。

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

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

将小数转换成实际角度

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

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

PS:这是一个非常粗暴的通过公式计算来控制舵机的方法,纯属兴趣实验性质,硬件通信是他人实现。

相关推荐
Wnq100723 小时前
巡检机器人户外视觉识别困境剖析与自动优化模式构建
图像处理·目标检测·低代码·计算机视觉·目标跟踪·机器人·需求分析
haing201912 小时前
SCARA 机器人点到点(PTP)轨迹规划方法
机器人·ptp速度规划·主运动轴
2501_927283581 天前
WMS市场中的专业力量:为何天津荣联汇智是制造企业的重点关注对象
运维·人工智能·机器人·自动化·制造·agv
深圳多奥智能一卡(码、脸)通系统1 天前
电梯门禁系统及机器人乘梯功能的安装调试需要电梯公司技术人员全程配合,这主要由电梯设备的特殊性、安全规范要求及系统集成的复杂性决定。以下是具体原因及配合内容:
机器人·agv·电梯门禁·梯控·国密梯控·二维码电梯·人脸识别电梯
文火冰糖的硅基工坊1 天前
[嵌入式系统-150]:智能机器人(具身智能)内部的嵌入式系统以及各自的功能、硬件架构、操作系统、软件架构
android·linux·算法·ubuntu·机器人·硬件架构
酌量2 天前
基于3D激光点云的障碍物检测与跟踪---(3)基于匈牙利算法的障碍物跟踪
学习·算法·机器人·匈牙利算法·障碍物跟踪
浊酒与说心事2 天前
AGV机器人
机器人
福客AI2 天前
电商智能客服机器人:客服的服务革新之路
人工智能·机器人
Matlab程序猿小助手2 天前
【MATLAB源码-第303期】基于matlab的蒲公英优化算法(DO)机器人栅格路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab·机器人·kmeans
悟空码字2 天前
宇树科技:决定更名
机器人·宇树科技·更名