仿人手臂系统设计

概述

平台

硬件平台

  Festo气动人工肌肉
  NI数据采集卡及其配套硬件

软件平台

  LabVIEW2018

主要硬件介绍

  整套系统所需硬件如下:
硬件配置图

  其中比较重要的有:Festo气动人工肌肉、LabVIEW数据采集卡及其配套硬件和电气比例阀等。

Festo气动人工肌肉

  气动人工肌肉驱动器Pneumatic Muscle Actuator, PMA,简称为气动肌肉,是一种以空气为驱动力的拉伸型驱动器。McKibben型的PMA由于其和生物肌肉的运动具有高度的相似性,一直是气动肌肉研究者的首选类型。其中,McKibben型中比较典型的有德国的Festor气动人工肌肉和英国的Shadow气动人工肌肉,本项目主要采用的Festor气动人工肌肉。该气动人工肌肉具有结构紧凑,响应速度快,输出拉力大等优点,可以很好的模拟人体肌肉的性能。详细信息可参考官网Festo气动肌腱
Festo气动人工肌肉
  本项目采用的型号为:DMSP-10-300-AM-AM,即直径为10mm,长度为300mm,两端连接方式均为:Axial connection(轴向连接),理论最大承受压力为8bar(0.8MPa)。

NI数据采集卡及其配套硬件

  数据采集(DAQ)是使用计算机测量电压、电流、温度、压力或声音等电子、物理现象的过程。DAQ系统由传感器、DAQ测量硬件和带有可编程软件的计算机组成。与传统的测量系统相比,基于PCDAQ系统利用行业标准计算机的处理、生产、显示和连通能力,提供更强大、灵活且具有成本效益的测量解决方案。其系统结构图如图所示:
DAQ系统结构

  目前,NI DAQ经过30多年的不断发展,提供了5千万个I/O通道,是最值得用户信赖的基于计算机的测量硬件。创新的DAQ硬件和NI-DAQmx驱动技术提供了更高的精确度和最优的性能(就是太贵了)。
  详细信息可参考NI官网:数据采集

  目前,本系统所采用的NI数据采集卡型号为:PXI-6281PXIe-6353,分别具有2个模拟输出通道和4个模拟输出通道,详细信息可参考官网采集卡型号
PXI-6281(6353和6281类似)
  安装方法:将其插入计算机中的PXIPXIe插槽即可。
  除了数据采集卡,还需要缆线和接线盒配套使用,接线盒也叫I/O接线盒,用于将I/O信号连接至插入式DAQ设备(这里指NI采集卡),而线缆就是连接接线盒和采集卡的屏蔽线。具体如图所示:
线缆和接线盒
  详细信息可参考NI官网:接线盒线缆

电气比例阀

  电气比例阀可以通过电气比例信号,实现对压缩空气的无级控制(相对于水龙头的作用)。
  本项目采用的是日本电气比例阀,型号为:ITV0050-3ML
电气比例阀
  其具体含义为:
电气比例阀说明
  由于本项目所需电气比例阀较多,所以使用集装式安装,即堆叠在一起,通过上下汇流板固定。
电气比例阀集装式
  图中①指的是Supply(输入口),②指的是output(输出口),③指的是Exhaust(排气口)。

仿人手臂系统设计思想

  本系统的主要设计思想来源于实际的人体手臂系统。

人体手臂结构

人体手臂结构图
  人体手臂由两骨骼三关节的组织结构构成,即上肢带骨(上臂)和自由上肢骨(下臂),肩关节、肘关节和腕关节组成。手臂肌肉都统称为人体的上肢肌,其中又具体细分为肩肌、臂肌、前臂肌和手肌四个。
  人体手臂肌肉的原理为:首先由神经系统发出一定的控制信号,当肌肉组织接收到该信号后会立即产生一定的效应力,并通过该效应力使得肌肉周围附着的骨骼组织做出相应的运动。

人体手臂运动机理

  人体的大部分运动都是通过肌肉的收缩和舒张产生的,而肌肉的收缩运动一般都是发生在关节上的。因此,在人体关节的两侧会存在着两组彼此分离、作用不同的肌肉,一般称为主动肌和拮抗肌,它们彼此相互配合才能实现一个完整的关节动作。
  当神经系统产生关节运动的信号时,主动肌会收缩并带动关节肢体产生相应方向的运动,而此时拮抗肌也会同时产生一个与主动肌相反的收缩运动,其作用就是为了克制住主动肌带来的力度和速度,以保证关节肢体能够平稳并适时地停止运动。
  例如如上图所示的肱二头肌和肱三头肌就是肱骨两侧的屈伸肌对。这些屈伸肌对通常会以某个复合关节为支点,以杠杆的形式实现相应的内收和伸展动作。
手臂简化图
  通常会将手臂模型简化为上臂,前臂和手三个部分。而由于手的长度占整体手臂的比例很小,所以一般来说,也可以将前臂和手当成一个部分,最终可以简化为一个二关节的手臂肌肉骨骼模型,如上图左所示。在整个手臂中,存在着若干对肌肉对,为了便于模型的分析与计算,同样可以将其简化为三组比较重要的肌肉对,即分别位于肩关节、肘关节和同时位于两个关节的肌肉对,最终简化的手臂肌肉模型如上图右所示。

仿人手臂系统结构设计

  受到上述理论的启发,本系统采用6Festo气动人工肌肉模拟人体手臂肌肉的输出特性并为关节提供驱动扭矩。由Pro/Engineer三维软件绘制的模具设计图如图所示:
仿人手臂模型图

机械结构

  该仿人手臂系统一共具有3个关节,即肩关节,肘关节和手臂末端点(手和手腕忽略为末端点)。其中肩关节半固定在金属支架上,中间采用金属法兰盘与气动人工肌肉组相连接,肘关节也采用同样类似的结构搭建而成,但相比肩关节,中间会有2层金属薄片,主要是考虑到要放置相应的传感器。
  其中每个金属法兰盘有5个开孔,最中间的开孔通过1根细金属两杆上下穿过以固定气动手臂系统,剩下的位于金属法兰盘周围的4个开孔用于气动肌肉的连接。

运动过程

  仿人系统采用纯气动的方式驱动。当系统实际运行时,通过每对气动肌肉的充气和放气来模拟人体手臂的主动-拮抗作用。例如大臂系统通过4根气动肌肉实现肘关节1自由度的旋转运动,其中4根气动肌肉分为2组,分别模拟人体手臂的肱二头肌和肱三头肌的屈伸肌对。每对肌肉中的1根气动肌肉产生拉伸/收缩运动,同时另一根进行相反的收缩/拉伸以防止主动肌过度伸缩。而且每个气动人工肌肉都可以由气动比例阀精确控制进气量,以实现关节的伸展或内收。通过各个关节的相互配合,最终模拟出人体手臂的肌肉协同作用,实现相应的抓取等动作。

仿人手臂系统实际搭建

手臂模型系统

仿人手臂系统
  实际搭建的仿人手臂系统如图所示。

电路系统

  电路系统连接主要指的是电气比例阀、气压传感器、开关电源和接线盒等之间的连接方式。

电路系统总图

  电路系统总图如图所示:
电路系统总图
  首先将气压传感器、压力传感器和气动比例阀的一端分别接入LabVIEW接线盒的模拟输入端和输出端,另一端接入仿人手臂系统,并分别通过电源接线盒供电。然后将LabVIEW接线盒与PC机中的LabVIEW数据采集卡相连,以实现气压传感器、压力传感器的数据通讯。最后将接入仿人手臂系统的角度传感器通过USB连接线接入PC机,以实现角度传感器的数据通讯。
  当系统运行时,首先通过气缸给气动比例阀供气,然后运行LabVIEW控制程序,并通过LabVIEW数据采集卡和接线盒将控制信号传入气动比例阀,并使其工作。此时角度传感器、气压传感器和压力传感器会实时检测到仿人手臂系统的工作状态,并通过LabVIEW数据采集卡和接线盒反馈给LabVIEW控制程序,如此循环往复,最终达到期望的效果。
  注:目前压力传感器未接入实际系统。(电气比例阀,气动比例阀指的是一个意思,懒得改了)

模拟输入端

  模拟输入端和气压传感器相连。接线盒的输入端采用单端接入,即连接AI+GND。气压传感器的白色接线端为信号线,棕色接线端为正极,蓝色接线端为负极。
  连接方式:将AI+(接线盒中的任意一个模拟输入端)与气压传感器的白色接线端相接,GND和下一个待接的GND相接(保证接线盒内的所有的地线都连通即可)。气压传感器的棕色接线端和蓝色接线端分别接入电源接线盒的正极和负极,给气压传感器供电。
  注:每个LabVIEW接线盒内要有1根地线与电源接线盒的地线(-V)相接。

模拟输出端

  模拟输出端和气动比例阀相连。气动比例阀的白色接线端为信号线,棕色接线端为正极,蓝色接线端为负极。
  连接方式:将AO(接线盒中的任意一个模拟输出端)与气动比例阀的白色接线端相接,GND和下一个待接的GND相接(保证接线盒内的所有的地线都连通即可)。气动比例阀的棕色接线端和蓝色接线端分别接入电源接线盒的正极和负极,给气动比例阀供电。

实际接线图

接线盒接线图
  这里的硬件指的是电气比例阀和气压传感器,下同。
开关电源接线图
  这里比较重要的是,每个接线盒内的地线一定要和开关电源的-V相连!不是零地火的地线!
接线器
  注:开关电源的开关需要购买插头和零地火导线制作。除了信号线建议使用较粗的导线,并注意使用颜色区分。

气动系统

  气动系统连接主要指的是气缸、电气比例阀和气动人工肌肉等之间的连接方式。
气动系统
  上面的汇流板中,1口为总输入口,接气缸,3为排气口,不用接。下面的汇流板的13口需要堵上。2口为输出口,接每根气动人工肌肉,并用三通阀接入气压传感器。其余部分需堵上。

气缸

  开启:①将抽气开关按下,阀门开关闭合。②接通电源。③打开抽气开关(提上去),气缸开始充气,待气压显示表到达指定气压值时(0.4~0.6MPa),按下开关。④打开阀门开关,即可出气。
  关闭:①关闭阀门开关,停止出气。②拔掉电源,气缸每隔一段时间自动漏气。

传感器系统

  目前接入系统的传感器有角度传感器:

基于LabVIEW的PID角度跟踪控制

LabVIEW软件安装

  本项目采用的是LabVIEW2018,所有程序均在2018下调试通过。
  LabVIEW软件下载:LabVIEW2018及其工具包下载(全网最快)LabVIEW2018 点击即可下载。(下载完需要激活,百度即可)
  NI驱动下载,驱动主要包括2个,即与DAQ通讯的NI-DAQmx和与USB通讯的NI-VISA。官网下载地址:NI驱动下载。注:NI的驱动要和LabVIEW的版本号对应,建议安装2018及以上版本。
  驱动测试:打开LabVIEW2018启动界面,选择工具->Measurement & Automation Explorer,点击我的系统->设备和接口,如果能找到相应的采集卡,则说明配置成功。
驱动测试

LabVIEW前面板设计

软件系统界面

LabVIEW程序框图设计

控制程序原理

  当控制系统每执行一次循环时,首先通过实际的角度值和期望的角度值计算得出控制误差,然后将此误差经过控制器得出其控制律,再将此控制律经过实际控制模型得出各个气动人工肌肉的实际输出力值,并通过气动比例阀精确调整各气动人工肌肉的气压输出,如此循环往复,直至满足期望的控制效果。

手臂模型

手臂上臂位姿表示
   $O$点为上臂运动的主动关节。假设整个上臂受到分别沿着$A{1}A{2},B{1}B{2},C{1}C{2},D{1}D{2}$四个方向的拉伸力$F{1},F{2},F{3},F{4}$,则由图可以看出,由气动人工肌肉提供的拉伸力$F{1},F{2},F{3},F{4}$会在以主动关节点$O$处,形成驱动力矩来带动整个上臂的运动。因此,上臂肘关节的旋转运动可以看成是四根拮抗式的气动人工肌肉直线拉伸运动合成而来。通过给定四根气动人工肌肉的输入气压来实时调节其拉伸力和有效长度,在合成的驱动力矩作用下实现关节的转动。
  由力矩的计算公式可知,力矩等于转动轴到着力点之间的距离乘上矢量力,即$\tau =F\cdot d$ 。因此,上臂肘关节的动力学方程可以表示为:

  其中$\tau$为控制力矩,即控制律,下文的控制器设计部分会解释。$F{i}$为单根气动人工肌肉的输出力,$d{i}$为$F_{i}$对关节转动中心$O$的力臂。具体分别为:

  其中$P{i}$为输出气压值,$\epsilon{i}$为收缩率,$a$,$b$为常数,分别为:$a=\frac{3\pi D{0}^{2}}{4tan^{2}\theta {0}}$,$b=\frac{\pi D{0}^{2}}{4sin^{2}\theta {0}}$,$\theta {0}$,$D {0}$为常数。

  注:具体公式推导这里不做解释,有兴趣可以看我的论文。

输出气压的理论计算

  输出力公式由气压$P$和收缩率$\epsilon$决定,为了体现仿人手臂系统的拮抗性和仿人性,本项目采用拮抗式运动方式分配气动肌肉的输入气压,即:

  其中$P{i}$为每个气动肌肉的输出气压,$P{0}$为初始气压,$\Delta P_{i}$为待定偏置气压,$\pm$表示该气动肌肉是拉伸还是收缩作用。
  因此每个气压值可以计算为(这里偷懒直接截图了):
气压计算
  注:这里这是上臂的推导过程,下臂原理和其类似。

输出气压的实际编程

  对于这种设计到大量公式的编程,使用LabVIEW里面的MathScript模块最好不过了(需要单独下载,下载链接见上文)。对于实际的控制系统而已,$P{1}$和$P{3}$应该是随着时间的增加越来越大,也就是不断叠加$\Delta P{i}$的过程,但增加的幅度会慢慢减小,因为控制律$\tau$在慢慢减小,然后直到趋于稳定。
  实际的LabVIEW程序图如下图所示:
输出气压
  上图表示的是$P
{1}$和$P{2}$的输出气压计算过程,其余类似。其中初始气压为0.4MPa。叠加$\Delta P{i}$的过程通过while循环的移位寄存器实现。具体公式在中间的MathScrip节点中实现。
  为了保证气动人工肌肉的安全性,通过设置上下限来保证各个气压的有效范围。其中,由于$\Delta P{2}$会随着时间会越来越小,甚至趋于0,因此本项目通过设置系数来保证$\Delta P{2}$减小的趋势。

收缩率的理论计算

  收缩率由$\epsilon =1-\frac{L}{L_{0}}$,具体公式如下:
收缩率公式

收缩率的实际编程

收缩率程序
  具体编程细节和输出气压类似。

力臂的理论计算

  力臂的计算公式比较简单,通过简单的几何分析可知:$d=r \dot cos\theta$。

力臂的实际编程

力臂

控制器设计

离散PID的理论计算

  由于整个系统是1000ms运行一次,因此可以看作是一个离散的控制系统,控制变量为肘关节的角度,控制误差为实际角度和期望角之差。其中位置式PID算法控制律如下:

  这里的$u\left ( t \right )$就是上文模型的控制力矩$\tau$。

离散PID的实际编程

离散PID
  这里的输入有3个,即期望值,第一次实际值和第二次实际值。实际的编程并没有加入积分控制,有兴趣可以自行编写积分控制程序。

传感器设置

谢谢老板!
-------------本文结束感谢您的阅读给个五星好评吧~~-------------