极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16378|回复: 9

让机械手臂模仿你!教你实现人体手臂主从同步控制机械手臂

[复制链接]
发表于 2015-6-23 23:19:41 | 显示全部楼层 |阅读模式
本帖最后由 UerRob 于 2015-6-23 23:23 编辑

在大学生电子爱好者论坛发了一次,现分享给大家咯,
原地址: http://bbs.uer8.com/thread-220-1-1.html

这学期参加学校科技作品大赛,小编自己的作品名叫搭载主从同步机械手臂的遥控勘探机器人
核心技术就在人体手臂同步控制机械手臂。
有一部分灵感来自《铁甲钢拳》~~

成品展示






在极客工坊发过单手指调试视频:
http://www.geek-workshop.com/thread-14876-1-1.html

另外还有一个半成品视频:
http://bbs.uer8.com/thread-180-1-1.html

以上是预审答辩调试视频,
答辩的最终视频找不到了,效果好得多,实现了对整条手臂的控制。

下面和大家分享分享这个idea,大家头脑风暴没准能可以提出更好的改善。

材料准备
首先大家需要一个手臂模型,这类某宝上有卖成品的,带云台、支架和舵机,
想自己买的话对舵机选择有问题可以联系我哈,烧了几台舵机后还是积累了一些经验。

当然大家纯测试准备一台小舵机就行。

其他需要准备的材料:
1、 adxl345加速度传感器  貌似8元
2、 CD4053模拟开关  这个几元可以买一大把
3、 arduino板子 (我用的mega2650)


PS:转载请注明出处

回复

使用道具 举报

 楼主| 发表于 2015-6-23 23:21:02 | 显示全部楼层
下面给大家分享一点自己DIY机械手臂手指的经验

机械手臂支架部分网上都大同小异,
为了配合我们要实现的功能,所以我们选择自己用AutoCad建模后在激光切割机上切割成型了机械手臂的手指部分

部分建模图:
  








使用的亚克力材料,切割后用ABS胶水粘在一起就OK咯。

成品手指:



上面帖子视频里也可以看到。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-23 23:21:36 | 显示全部楼层
技术部分
总体来说思路是这样的:
adxl345获得x y z轴加速度值  - >  转化为偏角   -> (通过wifi传输给手臂部分的单片机) - >  写入对应关节的舵机角度值

其中对于adxl345的特性在这就不介绍了,论坛资料挺多的,总之它能获取 x y z轴的加速度

另外adxl345使用I2C与arduino通信,我们需要同时连接5个adxl345,这时涉及到多从机防止干扰的问题,移步:
http://bbs.uer8.com/thread-207-1-1.html
用到了CD4053模拟开关


模块角度与舵机角度之间的转化方程

原理:由于重力加速度传感器在静止时受到重力作用,因此会有1g的重力加速度,加速度传感器可以感受到重力x、y、z轴三个方向上的分量,读数为分量与g的比值,从而计算出其在垂直平面上的倾斜角度。

数学模型:
1.建立三维直角坐标系,x、y、z轴模拟为加速度传感器x、y、z轴,轴方向符合右手定则,其中y轴方向为手指延伸方向。初始状态下,取z轴负方向为重力方向,即竖直方向。此时x=0,y=0,z=-1

2.人的手指或手臂带动传感器变动,相当于传感器的x、y、z轴相对重力方向变动,为使读图、计算方便,固定xyz轴位置,使g轴变动。

3.设x、y、z轴与g夹角分别为α、β、γ,传感器输出的为重力加速度分量值与其比值,即为x=cosα、y=cosβ、z=cosγ。由几何关系可知,欲求角(即x、y、z轴与地面的夹角)分别为90°-α、90°-β、90°-γ。又因为x=sin(90°-α)、y=sin(90°-β)、z=sin(90°-γ),所以所求角度
值分别为arcsinx、arcsiny、arcsinz.

4.每次测得的数据为θi(αi,βi,γi)(i∈N*,i≤n),舵机起始位置为水平面,输给舵机的角度值分别为θ1,θ2-θ1,θ3-θ2,θ4-θ3„„θn-θn-1。这样,舵机接受离散数据。

先写到这,回头补充详细...有问题可以留言哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-23 23:22:01 | 显示全部楼层
技术部分
总体来说思路是这样的:
adxl345获得x y z轴加速度值  - >  转化为偏角   -> (通过wifi传输给手臂部分的单片机) - >  写入对应关节的舵机角度值

其中对于adxl345的特性在这就不介绍了,论坛资料挺多的,总之它能获取 x y z轴的加速度

另外adxl345使用I2C与arduino通信,我们需要同时连接5个adxl345,这时涉及到多从机防止干扰的问题,移步:
http://bbs.uer8.com/thread-207-1-1.html
用到了CD4053模拟开关


模块角度与舵机角度之间的转化方程

原理:由于重力加速度传感器在静止时受到重力作用,因此会有1g的重力加速度,加速度传感器可以感受到重力x、y、z轴三个方向上的分量,读数为分量与g的比值,从而计算出其在垂直平面上的倾斜角度。

数学模型:
1.建立三维直角坐标系,x、y、z轴模拟为加速度传感器x、y、z轴,轴方向符合右手定则,其中y轴方向为手指延伸方向。初始状态下,取z轴负方向为重力方向,即竖直方向。此时x=0,y=0,z=-1

2.人的手指或手臂带动传感器变动,相当于传感器的x、y、z轴相对重力方向变动,为使读图、计算方便,固定xyz轴位置,使g轴变动。

3.设x、y、z轴与g夹角分别为α、β、γ,传感器输出的为重力加速度分量值与其比值,即为x=cosα、y=cosβ、z=cosγ。由几何关系可知,欲求角(即x、y、z轴与地面的夹角)分别为90°-α、90°-β、90°-γ。又因为x=sin(90°-α)、y=sin(90°-β)、z=sin(90°-γ),所以所求角度
值分别为arcsinx、arcsiny、arcsinz.

4.每次测得的数据为θi(αi,βi,γi)(i∈N*,i≤n),舵机起始位置为水平面,输给舵机的角度值分别为θ1,θ2-θ1,θ3-θ2,θ4-θ3„„θn-θn-1。这样,舵机接受离散数据。

先写到这,回头补充详细...有问题可以留言哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-23 23:22:35 | 显示全部楼层
申请加精~
回头补充些技术细节
回复 支持 反对

使用道具 举报

发表于 2015-6-24 11:21:04 | 显示全部楼层
不错!希望能够看到技术细节。
回复 支持 反对

使用道具 举报

发表于 2015-6-24 13:15:33 | 显示全部楼层
好东西,支持
回复 支持 反对

使用道具 举报

发表于 2015-6-25 00:46:56 | 显示全部楼层
膜拜一下大神!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-28 21:53:59 | 显示全部楼层
多谢支持~ 顶顶顶..
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-30 08:42:55 | 显示全部楼层
glen_f 发表于 2015-6-24 11:21
不错!希望能够看到技术细节。


技术细节整理中 考期结束就发上来
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 00:44 , Processed in 0.039197 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表