一种基于种群随机乱序多目标遗传算法的手势跟踪方法与流程

文档序号:11717071阅读:192来源:国知局
一种基于种群随机乱序多目标遗传算法的手势跟踪方法与流程

本发明涉及一种基于种群随机乱序多目标遗传算法的手势跟踪方法,属于机械臂人机交互自动控制领域。



背景技术:

随着科技发展,人类和机器之间互动的重要性与日俱增。基于视觉的手势跟踪技术已经成为人机交互研究的重要组成部分,特别是利用该项技术将真实人体手臂与仿真机械臂进行有效结合,实现和谐、友好、高效、顺畅的人机交流。高性能仿真机械手臂在机器人、医疗救援、资源勘探、工业、教学、危险物品处理等方面得到了广泛的应用,寻找改善机械臂运动、提高其速度与精度的方法、确保机械臂运动轨迹安全性和合理性以及减少能量消耗均具有重要的研究意义。

现有的机械臂的操作方式主要为手柄或者摇杆操作,操作指令无法直接控制机械臂整体运动的位移和速度,使得操作者未经训练难以完成复杂动作,使用灵活度低,一般运用中造成一定延迟,同时无法保证位置精度。有研究尝试使用数据手套操作机械臂,数据手套能够精准的确定操作者手的位置和姿势,但是现有实用机械臂无需模仿手的动作即可实现夹持等功能,而且其大量采用柔性设备,成本较高,功能浪费。拥有较低的价格,灵活简便的操作方式的人机交互系统成了机械臂运用市场的广泛需求。



技术实现要素:

为了解决现有技术的不足,本发明提供了一种基于种群随机乱序多目标遗传算法的手势跟踪方法,通过扫描人体手臂的运动来控制机械臂。该方法通过双摄像头传感器扫描获取人体手臂各关节运动坐标数据,将人体手臂末端位置坐标以文本形式保存,经过多目标遗传算法处理,其中三个目标函数分别为能量消耗函数,最终位置误差函数以及手臂跟踪轨迹函数。通过每代种群随机乱序的方式,在保证机械臂跟踪过程中能量消耗最小和机械臂末端位置精度的前提下,不断提高机械臂轨迹跟踪模仿相似度。经二维平面坐标运算得到手臂末端位置坐标,利用跟踪误差函数加快目标函数的收敛。依据此方法,输出得到机械臂对应各关节旋转角度,经指令转换,传输给下位机,控制仿真机械臂准确模拟真人的手臂动作,到达指定末端位置。经测试发现,这种方法明显使跟踪轨迹得到优化。通过传感器实反馈,补偿量会加入到下次手臂运动中,用闭环控制机械臂系统效果。

本发明为解决其技术问题所采用的技术方案是:

(1)手臂骨骼信息获取:利用传感器提取人体手臂骨骼的彩色图像数据流和深度图像数据流,获取手臂各个关节信息,得到各个关节位置坐标;

(2)建立机械臂运动模型:将机械臂简化为三连杆模型,由步骤(1)的手臂各关节信息中获得手臂末端位置,并由个关节位置坐标计算人体各关节旋转角度;由机械臂尺寸和机械臂关节旋转角度,表示机械臂末端位置;

(3)多目标遗传算法能量及轨迹优化:以能量函数、手臂跟踪轨迹函数以及位置误差函数为目标函数的3个目标子函数,经多目标遗传算法处理,通过每代种群随机乱序迭代进化,得到机械臂达到末端对应位置时的各关节旋转角度,并且旋转角度达到能量全局最小,最终位置误差全局最小,手臂跟踪轨迹全局最优;

(4)跟踪手势:将多目标遗传算法处理后的机械臂各关节旋转角度数据传输至机械臂,驱动机械臂跟跟踪手势运动,反馈关节旋转角度并进行闭环控制。

步骤(2)具体包括以下过程:

(2-1)将六自由度实体机械臂简化为三连杆机械臂模型,即建立机械臂动力学模型;

(2-2)实时利用传感器提取人体手臂骨骼的彩色图像数据流和深度图像数据流,获取手臂各个关节信息,选取一组周期为t的样本数据(θ1o,θ2o,θ3o,x0,y0),其中,θio为经传感器获取和处理得到的人体第i关节,i={1,2,3},(x0,y0)为人体手臂末端位置所处的二维平面坐标;

(2-3)由三个关节偏离竖直轴的旋转角度θ1、θ2和θ3表示机械臂末端位置(x,y),其中li表示机械臂第i个关节的长度,i={1,2,3}。

步骤(3)具体包括以下过程:

(3-1)确定三个目标子函数f1、f2和f3,目标子函数的自变量为待求取的机械臂各关节旋转角度θi,i={1,2,3};f1为能量函数,用于保证机械臂运动中能量消耗最低;f2为位置误差函数,用于保证机械臂末端位置(x,y)的精度求;f3为手臂跟踪轨迹函数,用于保证机械臂运动轨迹与人体手臂运动相仿;

(3-2)初始化当前代数t;将械臂各关节旋转角度θi作为遗传空间中基因按二进制编码方式组成的个体,设置待求个体的染色体条数nvar和机械臂运动旋转角度精度p,每条染色体θi由k0位二进制数进行编码,个体s=(θ1,θ2,θ3)编码后染色体组合为(θ1u,θ2s,θ3l)。其中,u、s、l的取值为1~k0;经解码,s为以下组合:

其中,u1表示k0位二进制数00000...0000=0,δ表示设置的编码精度;

从组合中选择m个个体s作为初始种群;将初始种群作为当前种群;

(3-3)将当前种群分为k组,并分别带入目标子函数f1、f2和f3,计算每组中每个个体的适应度fq=fj(sq)+c,其中j={1,2,3},q=[1,k],sq为组中的第q个个体,c取使fq的值大于或等于零的任意正整数;设置各个体被遗传至下一代的遗传概率其中为群体的适应度值总和;同时将每组个体中适应度最高的个体作为精英保留,遗传至下一代种群;

(3-4)从遗传后的种群中由轮盘赌方法选出两个个体s1和s2,由其设定的交叉概率进行单点交叉,交换两个染色体随机位置后的位串,并以0.7/lind的变异概率随机改变个体s1和s2的二进制串结构数据中任意一位的值,得到经遗传交叉变异生成子代种群;

(3-5)判断种群中个体的适应度是否收敛,若收敛,或当前代数t达到设置的最大迭代次数t,则将(θ1,θ2,θ3)输出作为最优解;否则t累加1,将新种群随机乱序作为当前种群,返回步骤(3-3)重新分为三组评估对应目标函数适应度,使种群每个个体对三个目标函数均能得到最佳适应。

步骤(3-2)中,θi的范围为-π/2~π/2,θi(up)=π/2,θi(low)=-π/2。

步骤(3-1)中,所述能量函数f1为:

其中g1、g2和g3分别表示机械臂各关节重量;

位置误差函数f2=e(0<e<emax)+100*e(e>emax),

误差公式k0为设置的机械臂与人体手臂比例;

手臂跟踪轨迹函数

步骤(3-2)中,nvar设置为3,机械臂关节角度θi范围为-π/2~π/2,每条染色体θi编码为二进制数的位数k0为18,则编码后的染色体θi精确到10-3,三个关节的总编码即个体s=(θ1,θ2,θ3)长度为54位。

本发明基于其技术方案所具有的有益效果在于:

(1)本发明的一种基于种群随机乱序多目标遗传算法的手势跟踪方法,通过传感器获取人体骨骼运动信息,实现机械臂的控制并保证末端位置精度,提高了机械臂操作的直观性和便捷性,增加了机械臂的实用性;

(2)本发明的一种基于种群随机乱序多目标遗传算法的手势跟踪方法,提出了利用以能量函数、手臂跟踪轨迹函数以及最终位置误差函数为目标函数的多目标遗传算法,在保证机械臂末端精度的基础上实现机械臂操作过程中的能量最低,路径最优,手臂跟踪最佳,克服了以往方法的复杂难以应用的问题;

(3)本发明的一种基于种群随机乱序多目标遗传算法的手势跟踪方法,在多目标遗传算法迭代过程中,每代种群在遗传运算前均进行随机乱序,再分组分别三个目标函数计算适应度,使得每个个体在迭代时对三个目标函数均能较好的适应;同时采用精英保留策略,直接将每一代种群中对三个目标函数分别适应度最高的个体遗传至下一代,在有益效果(2)的基础上,使每代种群对三个目标函数均能得到最佳优化。

附图说明

图1是系统框架图

图2是机械臂动态模型图。

图3是机械臂系统环境搭建图。

图4是不同算法每代最优个体角度变化示意图。

图5是不同算法每代种群方差示意图。

图6是不同算法三个目标函数结果示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

本发明提供了一种基于种群随机乱序多目标遗传算法的手势跟踪方法,首先搭建系统环境,参照图3,由kinect传感器,个人电脑,stm32单片机系统,6自由度机械臂,adxl345三轴角加速度传感器组成。实验环境及效果示意图如图3所示。其中,建立简化动态模型后六自由度机械臂三个关节长度分别为l1=17cm,l2=10cm,l3=17cm,重量分别为g1=0.8kg,g2=0.6kg,g3=0.4kg。系统运行过程如图1所示,首先抓取kinect获得的深度数据流,在个人电脑中建立人体三维骨骼信息图,获取人体右臂各关节数据及手臂末端位置,得到机械臂对应末端位置。经多目标遗传算法处理后,获得机械臂各关节旋转数据。通过串口传输至stm32,确定机械臂关节旋转角度,并由机械臂各关节的三轴角加速度传感器反馈给上位机,经pid算法将误差量累计至下次数据中。

kinect是微软开发的一款获取彩色和深度设备,通过红外线发射器向人体发送激光散斑,不同深度产生不同散斑图案,通过红外线摄像头信息的采集深度场信息并加以处理即可得到人体骨骼运动信息。多目标遗传算法通过设置多个目标函数,将解空间进行编码,通过交叉,变异得到新的子个体,通过对目标函数的计算筛选出下一代直到满足算法要求。

具体地,参照图1,本发明包括以下过程:

(1)手臂骨骼信息获取:利用传感器提取人体手臂骨骼的彩色图像数据流和深度图像数据流,获取手臂各个关节信息,得到各个关节位置坐标,具体包括以下过程:

(1-1)通过传感器识别运动的人体各部位和关节,根据追踪到的20个关节点生成人体骨架系统,建立人体骨骼运动模型;

(1-2)人体的各关节点位置用(x,y,z)坐标表示,单位为米。坐标轴x,y,z即以感应器为原点的实体空间x,y,z坐标轴,调用nuiapi,得到传感器识别出的20个关节,选取其中手臂部分的关节。并对手臂关节的数据进行滤波处理,即可得到识别到的手臂运动关节的三维坐标。

(2)建立机械臂运动模型:将机械臂简化为四关节(三连杆)模型,即建立机械臂的动力学模型,实现能量的量化计算。由步骤(1)的手臂各关节信息中获得手臂末端位置,并由个关节位置坐标计算人体各关节旋转角度;由机械臂尺寸和机械臂关节旋转角度,表示机械臂末端位置;具体包括以下过程:

(2-1)将六自由度实体机械臂简化为四关节(三连杆)机械臂模型,即建立机械臂的动力学模型,实现能量的量化计算。实体机械臂及建立的动力学模型见图2。在x–y平面坐标系,三关节转动的角度分别为θi(i=1,2,3),顺序如图所示,范围为π/2~-π/2。经测量,三关节各自的长度li(i=1,2,3)及重量gi(i=1,2,3)如表1,

表1机械臂动态模型参数表

由于人体手臂与仿真机械臂存在比例上的差别,设置比例系数为k0。在本系统中,可得k0约等于1.8。

(2-2)上位机实时读取采集的人体手臂信息,选取一组周期为t的样本数据(θ1o,θ2o,θ3o,x0,y0)。其中,θio(i=1,2,3)是人体手臂三关节角度的原始数据,由传感器获取、处理得到。其对应于机械臂动态模型的三关节。(x0,y0)为人体手臂末端位置所处的二维平面坐标。(x0,y0)为人体手臂末端位置所处的二维平面坐标。根据步骤(2-1)中人体手臂与机械臂比例系数为1.8,则人体手臂末端位置(x0,y0)与机械臂实际末端位置联合应用时,需有系数相乘以保证比例准确;

(2-3)由三个关节偏离竖直轴的旋转角度θ1、θ2和θ3表示机械臂末端位置(x,y),其中li表示机械臂第i个关节的长度,i={1,2,3}。

(3)多目标遗传算法能量及轨迹优化:以能量函数、手臂跟踪轨迹函数以及位置误差函数为目标函数的3个目标子函数,经多目标遗传算法处理,通过每代种群随机乱序迭代进化,得到机械臂达到末端对应位置时的各关节旋转角度,并且旋转角度达到能量全局最小,最终位置误差全局最小,手臂跟踪轨迹全局最优;具体包括以下过程:

(3-1)确定三个目标子函数f1、f2和f3,目标子函数的自变量为待求取的机械臂各关节旋转角度θi,i={1,2,3};f1为能量函数,用于保证机械臂运动中能量消耗最低;f2为位置误差函数,用于保证机械臂末端位置(x,y)的精度求;f3为手臂跟踪轨迹函数,用于保证机械臂运动轨迹与人体手臂运动相仿;所述能量函数f1为:

其中g1、g2和g3分别表示机械臂各关节重量;将θi,li,gi(i=1,2,3)带入目标子函数;以关节2为例。关节2重心位置的纵坐标上下移动,克服重力做功,由电池提供相应的能量。若预计算关节2当前重心位置纵坐标,需将关节长度l1、l2及θ1,θ2,带入纵坐标公式l1cosθ1+l2cosθ2/2,则克服重力做功消耗能量为(l1cosθ1+l2cosθ2/2)*g2,以此类推。公式中的θ1,θ2,θ3分别是由初始种群提供的起始角度数据。

位置误差函数f2=e(0<e<emax)+100*e(e>emax);误差公式k0为设置的机械臂与人体手臂比例;为了使函数更快的收敛,当位置误差过大,加入收敛系数,此处设置为常数100。当位置误差在可接受的范围内,f2即为原位置误差e;当位置误差e大于emax,则这组角度数据计算得到的末端位置(x,y)精度已不在置信区间内,予以剔除。

手臂跟踪轨迹函数

(3-2)初始化当前代数t;将械臂各关节旋转角度θi作为遗传空间中基因按二进制编码方式组成的个体,设置待求个体的染色体条数nvar和机械臂运动旋转角度精度p,每条染色体θi由k0位二进制数进行编码,个体s=(θ1,θ2,θ3)编码后染色体组合为(θ1u,θ2s,θ3l)。其中,u、s、l的取值为1~k0;经解码,s为以下组合:

其中,u1表示k0位二进制数00000...0000=0,u1+δ=00000...0001=1,u1+2δ=00000...0010=2,δ表示设置的编码精度;u、s、l的取值为1~18。

从组合中选择m个个体s作为初始种群;将初始种群作为当前种群;其中nvar设置为3,机械臂关节角度θi范围为-π/2~π/2,每条染色体θi编码为二进制数的位数k0为18,则编码后的染色体θi精确到10-3,三个关节的总编码即个体s=(θ1,θ2,θ3)长度为54位。

(3-3)将当前种群分为k组,并分别带入目标子函数f1、f2和f3,计算每组中每个个体的适应度fq=fj(sq)+c,其中j={1,2,3},q=[1,k],sq为组中的第q个个体,c取使fq的值大于或等于零的任意正整数;设置各个体被遗传至下一代的遗传概率其中为群体的适应度值总和;pq决定当前群体中各个个体遗传到下一代群体中的机会大小,为非负数;同时将每组个体中适应度最高的个体作为精英保留,不经过变异和交叉,直接遗传至下一代种群;

(3-4)从遗传后的种群中由轮盘赌方法选出两个个体s1和s2,子代个体基因均来自父辈个体由其设定的概率进行单点交叉,交换两个染色体随机位置后的位串,并以0.7/lind(lind为染色体长度,即lind=k0=18)的变异概率随机改变个体s1和s2的二进制串结构数据中任意一位的值,得到经遗传交叉变异生成子代种群;t累加1。为符合生物界变异概率的范围,变异概率一般取在0.001~0.01之间,变异在此处作为后台算子,确保所研究机械臂搜寻区间永不为零,且具有阻止局部最优收敛的作用。

(3-5)判断种群中个体的适应度是否收敛,若收敛,或当前代数t达到设置的最大迭代次数t(可取值50),则将(θ1,θ2,θ3)输出作为最优解;否则t累加1,将新种群随机乱序作为当前种群,返回步骤(3-3)重新分为三组评估对应目标函数适应度,使种群每个个体对三个目标函数均能得到最佳适应。

利用上述步骤进行种群随机乱序多目标遗传算法的模拟验证。

(a)取14组经步骤1获取的人体手臂关节角度数据作为原始数据,经步骤3处理后得到14组机目标械臂关节角度结果数据,如表2所示:

表2原始数据与结果数据对照表

其中r1指机械臂结果数据得出能量消耗和原始数据能量消耗之比;r2指机械臂结果数据末端位置误差,单位为cm;r3指结果数据与原始数据间的跟踪误差。

由表2可以得出,经种群随机乱序多目标遗传算法处理后,机械臂能量消耗得以降低,末端位置误差在允许范围内,跟随误差较小说明手臂跟踪效果良好。

(b)将改进的种群随机乱序多目标遗传算法与单目标遗传算法及传统多目标遗传算法结果进行对比,见图4,图5,图6。图4(a)、图4(b)和图4(c)分别是三种遗传算法对机械臂三个关节角度进行处理后,每一代最优个体的对比。可以看出种群随机乱序多目标遗传算法的收敛速度最快且与原始数据最接近。

图5(a)、图5(b)和图5(c)分别是单目标ga、传统moga和改进moga方法(即本发明的基于种群随机乱序多目标遗传算法的手势跟踪方法)处理后每代种群方差示意图,可以看出种群随机乱序多目标遗传算法每代的方差相比较小,且末代方差最低,收敛性最好。

图6(a)是单目标ga、传统moga和改进moga方法对能量消耗函数的适应度结果图,图6(b)是单目标ga、传统moga和改进moga方法对末端误差函数的适应度结果图,和图6(c)是单目标ga、传统moga和改进moga方法对跟随误差函数的适应度结果图。可以看出种群随机乱序多目标遗传算法对于三个目标函数的收敛速度最快,且末代种群适应度最好。

(4)跟踪手势:将多目标遗传算法处理后的机械臂各关节旋转角度数据传输至机械臂,驱动机械臂跟跟踪手势运动,反馈关节旋转角度并进行闭环控制。具体包括以下过程:

(4-1)将步骤2中机械臂各关节旋转角度数据在上位机转换为角度指令。为便于通过8位串口传输且加快传输速度,使角度指令的范围为0~255。角度指令将直接配置在定时器中,通过控制定时器的中断生成控制信号,指令值对应舵机旋转角度表如下:

表3舵机旋转角度表

由表可知旋转角度和pwm波占空比成正比,可归纳转换方程为:

(4-2)机械臂的控制与驱动:下位机采用stm32单片机模块,下位机通过串口获取上位机发出角度指令,将其设定为定时器中断时间,根据角度指令产生控制信号,驱动对应的机械臂关节舵机旋转;舵机采用7.4v3000ma锂电池供电,旋转范围为0~180度,通过控制端口输入的控制信号决定旋转的度数,使其旋转至上位机指令要求的位置;

(4-3)获取安装于机械臂关节的adxl345传感器x,y,z三个轴加速度数据,计算出三轴角度变化值,用中值算法进行初步滤波后,反馈给上位机。计算获取角度指令与舵机旋转位置的差值e(t),将其作为pid输入量进行计算,待传感器反馈值稳定后,调节比例、积分、微分等三个参数,从pid中得到相应的补偿值u(t);将其与原角度指令相加作为下一次角度指令,发送给下位机,直到补偿值为零;pid算法控制规律为:

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1