查看: 3947|回复: 19

[项目] 动捕+VR+远程机械臂控制

[复制链接]
花了一个星期时间,攒了个Demo玩玩。两台手机、VR、手臂动捕、机械臂
AllTogether.JPG


视频走起

PS:为了避免控制代码堆栈,从扮演VR头显角色的手机发送指令的间隔设置了100ms,另外除非舵机的下一次转角会大于3度,否则不会发送指令。所以现在看上去不流畅,之后再慢慢优化吧。




功能独立演示的视频
“头部”同步转动的视频

VR环境下牵引机械臂的视频(那个角度正好被其中一台手机挡住了夹持器)



先介绍下涉及到的硬件
淘宝上弄来的小机械臂。除去夹持器的话,只有三个自由度。用2020铝型材搭了一个支架,上面固定了两个舵机用于实现手机的转动(后面会详细介绍)。用Arduino Duemilanove(加了一个拓展板)控制所有的舵机。
IMG_20170602_105510.jpg

把手机组装上去的样子
Robot.jpg
用OTG线连接这台手机和Arduino Duemilanove。这台手机有两个作用:
1. 开启摄像头,做局域网的图像回传。
2. 通过局域网接收机械臂的控制指令,并传递给Arduino Duemilanove完成进一步的控制。
这里先说明一下,这里“手机+Arduino”的实现方案完全可以用Intel Edison的板子来完全代替,或者用淘宝上刷好Openwrt的小路由器代替手机,实现起来也会简单很多。但我之前做过“安卓USB通信”的东西,另外想直接搞个监控界面出来,所以还是用回了“手机+Arduino”的方式。

这台手机的软件架构大概是这样的:
1. 把手机变成一个Http服务器。需要提供两个访问端口(Port):一个端口接收控制指令,并回复客户端;另一个端口在收到客户端请求时回传一帧摄像头图像(后面会说明为什么没有用视频流而是一帧图像)。
2. 搭建手机和单片机之间的USB通信。


下面就是软件的界面,简单说明一下:
- 左上角是图像监控窗口,可以看到里面的图像是重叠的。大的图像是直接显示启动摄像头后来自摄像头的画面,小的图像则是显示准备好回传给客户端的图像(因为压缩转格式的关系,导致相对于大的画面会有一定延迟)
- 右上角是一堆滑块组件,两个功能:单独控制对应的舵机,实时显示来自客户端的控制指令中的舵机目标角度。
- 左下角是一个滚动信息窗口
- 右下角三个按键:“Acknowledge”按键用于验证通过USB连接的设备,“Reset robot arm”按键用于重置机械臂位置, “Connect”按键启动Http服务器功能。
WebUsbRobotScreenShot.png

接下来是手臂动作捕捉的硬件。之前的帖子里面说过,主板上专门留了拓展接口,这次就是利用拓展接口改装了一下,增加了一个含两个数字按键的手柄。
IMG_20170602_101843.jpg
IMG_20170602_104108.jpg

现在来说说Demo中的另外一台手机。这台手机的软件是在Unity3D下面开发的,因为要用Cardboard的SDK开做成VR模式。软件架构大概是这样:
1. 集成Cardboard的SDK。软件就变成VR模式了。可以实时采集头部的转动,用头部的转动去控制机械臂上方的两个舵机,这样之前那台手机的转动就和这里的头部转动同步了。
2. 在Unity下,在头部(Main Camera)前面绑定一个半透明的Plane组件,接收到的回传图像就是显示在这。做成半透明,是为了不遮挡观察3D环境(如手臂模型和机械臂模型)。
3. 集成蓝牙BLE。通过蓝牙连接手臂动捕设备,实现虚拟手臂和现实手臂的同步。手柄上的按键可以调用一些简单功能。
4. 3D重构一个机械臂。这里不用做完全相同的重构,只要把完整的机械关系表现出来就可以了。
5. 机械臂的控制。没有用机械臂和手臂转动同步的方式来实现控制,这么做太麻烦,因为人的手臂和Demo中使用的机械臂没有任何对应关系。在3D环境中可以自主地去牵引机械臂的夹持器,实时测量虚拟机械臂关节处的转动,用这些数据去同步控制现实中的机械臂。
TIM截图20170602104813.png
VRScreenshot.png






饶厂长  中级技师

发表于 2017-6-2 15:21:20

好项目, 机械臂精度一上去就牛逼了
回复 支持 反对

使用道具 举报

Fantc  初级技匠
 楼主|

发表于 2017-6-3 08:47:15

饶厂长 发表于 2017-6-2 15:21
好项目, 机械臂精度一上去就牛逼了

应该不是精度吧 而是电机转动的分辨率
回复 支持 反对

使用道具 举报

Forgotten  版主

发表于 2017-6-4 13:24:53

先膜拜一下大神作品
回复 支持 反对

使用道具 举报

luna  管理员

发表于 2017-6-5 10:35:24

666,超级赞!大神出山玩的都很高级
回复 支持 反对

使用道具 举报

hnyzcj  超级版主

发表于 2017-6-5 12:48:52

膜拜
回复 支持 反对

使用道具 举报

全天假日  学徒

发表于 2017-6-5 14:32:54

回复 支持 反对

使用道具 举报

安卓机器人  高级技匠

发表于 2017-6-5 18:45:52

VR
回复 支持 反对

使用道具 举报

luna  管理员

发表于 2017-6-14 17:02:56

楼主~视频挂了
回复 支持 反对

使用道具 举报

Fantc  初级技匠
 楼主|

发表于 2017-6-15 08:48:23

luna 发表于 2017-6-14 17:02
楼主~视频挂了

没有啊。可以看的
回复 支持 反对

使用道具 举报

killerlist  初级技师

发表于 2017-6-16 21:41:16

怎么看视频???
回复 支持 反对

使用道具 举报

Fantc  初级技匠
 楼主|

发表于 2017-6-17 09:45:48

killerlist 发表于 2017-6-16 21:41
怎么看视频???

可以看的呀。没什么问题啊
回复 支持 反对

使用道具 举报

lh5442  学徒

发表于 2017-7-13 20:01:55

楼主可以给代码看看吗
回复 支持 反对

使用道具 举报

Fantc  初级技匠
 楼主|

发表于 2017-7-14 10:38:58

lh5442 发表于 2017-7-13 20:01
楼主可以给代码看看吗

都是些基础代码
回复 支持 反对

使用道具 举报

lh5442  学徒

发表于 2017-7-15 13:36:15

Fantc 发表于 2017-7-14 10:38
都是些基础代码

借鉴一下您的代码
回复 支持 反对

使用道具 举报

AtlasC  学徒

发表于 2017-7-20 15:21:26

大大大佬,我前一段日子想到想用六轴传感器做个手臂动作捕捉装置,然后一搜发现你都已经做出成品了,我现在也没什么基础,大佬可以有什么联系方式吗?我想请教下需要的技术基础,都需要什么技术,需要学些什么,还有一些功能是怎么实现出来的,我还是小白,但我坚定的想做这个出来。
回复 支持 反对

使用道具 举报

AtlasC  学徒

发表于 2017-7-20 15:21:29

大大大佬,我前一段日子想到想用六轴传感器做个手臂动作捕捉装置,然后一搜发现你都已经做出成品了,我现在也没什么基础,大佬可以有什么联系方式吗?我想请教下需要的技术基础,都需要什么技术,需要学些什么,还有一些功能是怎么实现出来的,我还是小白,但我坚定的想做这个出来。
回复 支持 反对

使用道具 举报

Ash  管理员

发表于 2017-8-15 15:43:30

hi,你发在DF创客社区的这个内容,无线电杂志的编辑觉得很好希望能刊载在他们的杂志上,可以发我一下你的联系方式吗?
回复 支持 反对

使用道具 举报

gray6666  中级技匠

发表于 2017-9-5 10:26:27

高端大气上档次。。。。。。。。。。。
回复 支持 反对

使用道具 举报

ss123123  学徒

发表于 2017-11-9 12:34:11

大神可以给个联系方式吗?对这个非常有兴趣,也想独立做一个出来,但是没有专业知识。本人QQ460612367。求大神分享经验
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4 Licensed

QQ