- 收藏
- 加入书签
基于嵌入式技术机械手姿态感知控制系统设计与实现
摘要:本文通过仿人机械手及其控制方法的国内外研究现状,分析了其现阶段存在的优点与不足,基于仿生学设计了一种仿人机械手,文章基于体感传感原理,研发了一种全新的机械手操作方式——嵌入式技术机械手姿态感知。该机械手利用姿态传感器采集人的手势变化信息,实时传输给舵机,从而实现人手对机械手臂的控制。这种全新的控制方式简化了传统机械手的程序设计,使人和机器有更友好的互动。具有良好的社会效益与广阔的应用前景。
前言
随着工业4.0的提出,在全球新一轮工业革命的趋势下,更多智能化产品将会逐渐面世。文章将“互联网 +”和工业技术相互结合,把当下较为热门的姿态感知控制和传统工业中的机械手相互结合。姿态感知机械手的工作原理是通过传感器采集手部的运动情况,并将处理后的数据发送给舵机端处理,使机械手做出相对应的动作。将手指的弯曲程度通过传感器电阻的变化处理为可被单片机捕捉的电信号,将手指的动作转化为数据,将具体的动作数字化,实现人和机器真正的交融。现在的机械手一般是单纯依靠人工编写操作指令和程序,存在劳动强度高程序繁琐难懂等问题。文章将姿态感知技术应用到机械手控制中,能实现机械手臂的手势实时控制,对提升程序设计及开发人员工作效率有重要的实际意义。通过姿态感知控制同步机械手,使得机械手的操控更为简易化化,用户无需过多的编程经验,就可以操纵机械手,降低了机械手的使用门槛和使用难度,提升了操作能力和用户体验。
1 系统设计
1.1整体架构
本设计可分为数据手套与仿生机械手两部分。数据手套部分由主控器、传感器所组成。由传感器通过弯曲阻值变化来实现采集人手变化获取手指弯曲信息。Arduino Nano控制板负责接收由弯曲度传感器传来的信号,经过处理器处理后,传递给由机械手舵机组成仿生机械手,控制机械手舵机的运动。
1.2 软硬件设计
硬件部分:分别由主控器、Flex 弯曲传感器和三轴加速度计MPU6050 数据采集模块、舵机响应模块、5v电源稳压模块组成。控制器开发平台选择 Arduino Nano,是一种基于 ATmega328P 芯片的友好型主板,Arduino 是当前较流行的开源硬件平台,调用丰富的 API 接口,可以简化代码结构,把主要精力放在算法优化上。体感传感器选用 Flex 传感器与三轴加速度传感器 MPU6050。Flex 弯曲传感器是一款弯曲度传感器,而三轴加速度传感器 MPU6050 可以测量空间加速度,能够全面准确反映物体的运动性质。Flex 传感器将操作人手指弯曲程度转变成电信号。当数据手套手指弯曲时,Flex 传感器随手指弯曲形变产生不同电信号,当手掌左右翻动时,三轴加速度传感器MPU6050也会产不同电信号。将这些数据传送给主控制器处理。实现对舵机的控制,进而引起机械手响应,实现操控。
软件设计:
编程软件选择的是arduino IDE进行编程。Arduino是一种开源电子原型平台,由硬件和软件组成。支持Arduino的开发板可以通过Arduino变成来读取输入信号(输入信号可以来自按钮、开关、传感器等)并将其转换为输出以控制灯、舵机和其他设备。程序主要分为传感器数据采集与舵机驱动两个部分。然后 Arduino的模拟输入口通过函数 analogRead()直接获取传感器的实时数据,经程序处理后判断采集值是否在合理范围内,若采集数据正常,将采集的数据给从控模块,从控模块接收并处理收到的数据,通过 map()换算为驱动舵机的控制信号,控制舵机转动相应的角度,与舵机对应的机械手手指做出动作响应。各模块功能联系及实现如图1。
2 系统实现
2.1 仿生机械手的结构设计
仿生机械手系统由仿生机械手和自制体感机械手套 2 个部分组成,仿生机械手系统框图如图 2 所示。
动力模块由四个SG90舵机构成,舵机转动拉动线运动,从而带动机械手各手指运动。每个舵机柄上连接两根线,这两根线分别连接在手指两侧,通过两根线的运动带动手指弯曲和张开。如图3,图4所示。
为精确控制机械手,首先需确定传感器实际测量各个手指伸直——弯曲时的数据范围。测试时正确穿戴好数据手套,多次缓慢进行张手——握拳动作,通过串口监视器观察传感器实际测量值。
2.2 仿生机械手的程序设计
手指弯曲感知代码是人体手指动作与机械臂动作之间的桥梁,结合采集到的偏转角、俯仰角和航空角度数的改变,使机械臂根据手指弯曲度可以实时做出相应的动作变化。Flex传感器控制舵机的程序如下所示:
const int FLEX_PIN = A0;// 电压采集接口
const float VCC =5.0;// 模块供电电压,ADC参考电压为V
const float R_DIV =20000.0;// 分压电阻为20KΩ
const float STRAIGHT_RESISTANCE =8245.0;// 平直时的电阻值
const float BEND_RESISTANCE =22341.0;// 180度弯曲时的电阻值
#include <Servo.h>
Servo myservo;// 定义Servo对象来控制
int pos = 0; // 角度存储变量
void setup(){
Serial.begin(9600);
pinMode(FLEX_PIN,INPUT);
myservo.attach(9);// 控制线连接数字9
}
void loop(){
// Read the ADC,and calculate voltage and resistance from it
int flexADC=analogRead(FLEX_PIN);
float flexV=flexADC* VCC / 1024.0;
float flexR= R_DIV *(VCC / flexV-1.0);
Serial.println("Voltage:"+String(flexV)+" V");
Serial.println("Resistance:"+String(flexR)+" ohms");
// Use the calculated resistance to estimate the sensor's bend angle:
float angle = map(flexR,STRAIGHT_RESISTANCE,BEND_RESISTANCE,0,180.0);
Serial.println("Bend:"+String(angle)+" degrees");
myservo.write(angle);// 控制舵机转到计算出的角度
delay(500);
}
3 创新点
(1)该机械手使用仿生运动原理,模仿人手的运动角度,可以很好的将人手的动作体现在仿生机械手上。
(2)将手指的弯曲程度通过传感器电阻的变化处理为可被单片机捕捉的电信号,将手指的动作转化为数据,将具体的动作数字化,实现人和机器真正的交融。
(3)该机械手摒弃传统机械手程序控制或者按键控制这些不方便的控制方式,利用体感方式极大地提高了机械手的精确度和可操控性,机械手完全同步人手的动作,通过人手的动作随心所欲控制机械手的动作,简化控制。使用该机械手的
人员无需培iJ Jll!P可使用,为从事危险工作或者接触危险品工作人员的安全提供保障。
(4)该机械手和传感器手套通过无线模块连接,其有效连接范围约百米,简化了线材的使用,人可远距离无线操控机械手。
(5)将电子电路、单片机和机械机构巧妙结合,运用于解决与人类活动相关的执行操作。机械手成本低,却可以达到较高的精确度。
4 应用前景
该机械手应用广泛,可大量应用于危险工作的场景。
(1)可用于排爆机器人。将该机械手装置于排爆机器人,人可远程通过手部动作操控机械手进行爆炸物的拆除,通过体感方式大大增加了可操控性及精确性,同时还降低了机械手使用的难度,数据也可通过无线方式传输,人在安全区域
操作,最大程度保障拆弹人员的安全。
(2)应用于危险实验场景。人可以通过体感方式操控机械手来做一些危险的实验,无需直接接触危险品,大大降低了危险化学实验的危险性。
(3)应用于潜艇的机械臂及机械手。使用高强度材料打造机械手,可应用于深海潜艇作业,人通过体感方式直接操控机械手,大大增加了机械手的灵活性和可操控性,更降低了海底作业的难度。该机械手制作成本低,用途广泛,使用方法简单,弥补了当前社会上机械手不易操控,精确性低等缺点。若能批量生产投放相应市场,必能产生巨大的经济利益。
参考文献:
[1]孟令达,方俊杰,周雨.无线体感仿生机械手[J].物联网技术,2017,7(07):12-13.
[2]张涛,郑丽英,黄厚志,汤永清.人体体感感知机械手设计与实现[J].电子制作,2019(13):18-19.DOI:10.16589/j.cnki.cn11-3571/tn.2019.13.006.
[3]陈吕洲 .Arduino 程序设计基础 [M]. 北京:北京航空航天大学出版社,2015.
[4]卢光跃,吴涛 .基于 Arduino控制的机械臂的运动与程序设计 [J].机械制造,2014(3):50-52.
[5]刘宏,姜力. 仿人多指灵巧手及其操作控制[M]. 北京:科学出版社,2010.
[6]郭洪武.浅析机械手的应用与发展趋势[J].中国西部科技,2012(10):3-12.



京公网安备 11011302003690号