基于加速度传感器的人体姿态跟踪角度算法
2011-03-23李文锋
李文锋,吴 翔,孙 俊,江 鹏
(武汉理工大学物流工程学院,湖北 武汉 430063)
人体姿态的检测和跟踪在各个行业都有广泛的应用[1],目前对人体姿态的检测和跟踪包括基于视觉的和基于普通传感器的.基于视觉的处理方法主要是利用高频摄像头的采集和图像的处理来分析,对摄像头和处理算法都提出了很高的要求,成本高,数据存储量大,同时又只局限于平面分析,其应用受到了很大的影响[2-3].利用低成本传感器来跟踪人体的姿态,已经有很多成功的例子,如法国学者Suguru goto设计的音乐机器人以及日本学者Fuminori Yamasaki在2007年设计的数据衣服都是利用普通传感器来采集人体信息[4].人体可以看做是由一根根连杆组成的关节系统,人体的运动可以简化成一根根连杆的角度变化.随着传感器技术的飞速发展,加速度传感器、位移传感器等已经能够满足捕捉人体姿态的要求.本文利用小型三轴加速度传感器,设计了一种跟踪人体的方法.
1 测量方法比较
1.1 基本方法
理论上,加速度a、速度 v和路程s之间满足
和
根据传感器采集的加速度信号,连续积分两次即可得到位移,进而计算出机器人四肢及身体的姿态.实验中,按照这一方法处理采集到的传感器数据,最终结果与理论值相差甚远,这是由于这种方法是利用微积分进行计算,而且初始位姿是开机设定的第一次,可能存在一定的标定误差,在多次积分的计算中又存在误差的时间累积性,最终导致错误的产生.
1.2 当前的研究方法分析
由于上面方法的不可行性,为了测量机器人的位姿状态,重庆大学的侯文生等人[5]提出了利用三轴小型加速度传感器中的两轴来测量角度的方法,其建立的模型如图1所示.
图1 传感器受力示意图
在该方法中,对加速度传感器有诸多约束条件,具体包括:1)加速度传感器必须绕某一参考点做圆周运动;2)保证其中一轴(图中是Z轴)始终与重力轴保持垂直;3)运动平面必须是垂直向下;4)其中一轴(图中是Y轴)必须始终保持与除去重力的加速度方向垂直.
在同时保证以上约束条件的情况下,能计算出剩下的一轴(X轴)与重力轴方向的夹角(θ角).
由于需要满足的条件太多,使得该方法在实际应用中极其不便,在机器人位姿检测中只能用于双臂的单平面角度检测.
1.3 改进的方法分析
充分利用传感器能测量三轴加速度的特点,在立体平面内对传感器进行受力分析(图2).
图2 加速度传感器三轴受力示意图
由于重力和外力都能影响加速度传感器的输出,假设重力加速度为g,合外力加速度为a,则传感器在各个方向应满足
式中:α,β,γ分别为合外力加速度a与X,Y,Z轴的夹角;αg,βg,γg分别为重力加速度g与X,Y,Z轴的夹角 ;Δ x,Δ y,Δ z 分别为计算出来的三轴的电压输出变化量;kx,ky,kz分别为传感器在X,Y,Z三个方向的灵敏度.
通过选取传感器的量程后,理论上可以通过一定的计算求出传感器在三个方向上的灵敏度kx=ky=kz=计算出来的常量,但由于各个传感器都存在计算精度的问题,实际上kx、ky、kz并不两两相等.
式(1)至式(5)组成的方程组一共存在7个未知量,为不定方程组.为了求得重力加速度g与X,Y,Z三轴的夹角αg,βg,γg;给定一约束条件合外力加速度a=0,则式(1)至式(4)分别等价于下面式(6)至式(9):
通过式(6)、式(7)、式(8)可计算出:
在实验中发现,实际上用重力标定的方法[5]来求出 kx、ky、kz,同时取重力加速度 g=9.8来进行最后的计算,这样得出的结果并不正确,所以本实验中采取将gk作为一个整体m来计算,例如求X轴的m值,只需测量出X轴在重力方向的静态输出值x1和垂直于重力方向的重力值x0,则
由于三轴上采集的数据可能有错误,通过式(9)验算,可进行初步的滤波处理.同时,由于在采集数据时会有在约束条件之外的数据,要进行相应的判断处理,将这些数据结构也滤掉.
这样测出来的角度就已经比较准确了,但在不同的应用场合还要有不同的处理.本实验最终是用来跟踪人体的位姿运动,考虑到人体的抖动对传感器采集到的数据有影响,还应设立一个去除人体抖动的干扰的阈值.具体的做法如图3所示.
图3 传感器数据处理流程图
2 实验测试
2.1 算法实验
设计此次实验的目的是为了比较用这种算法计算的角度值与实际情况下的角度值之间的结果,计算这种算法的误差,所以需要将计算出来的角度值在电脑上实时输出出来.
本实验选用的传感器是小型电容式三轴加速度传感器,对传感器模块进行稳压输入.在单片机上进行计算后,通过串口将数据发送给电脑,在电脑上将角度值实时输出.
表1是实验所得的几组数据.
表1 实验数据及误差分析 (°)
2.2 仿真验证
模型的建立和仿真分别是在3Dmax软件和OSG仿真平台[6-7]下实现的.仿真实验中,将传感器固定在人体两臂上,利用前面的角度转换算法,求出传感器的位置,进而通过一定的角度对应关系能找到人体两臂的运动位姿.实验结果如图4所示.
图4 人体仿真结果
3 结束语
从实验中可以看出,实验误差都在6°以内,在一般条件下,该方法确实能够将加速度值转化为角度值.而引起实验误差的原因在于实际测得角度的方法本来就有一定的误差,传感器本身的精度也不是很高.同时周围温度等环境条件都可能影响到实验结果.
将加速度传感器的加速度值转化为角度值,扩大了加速度传感器的应用范围,对人体姿态跟踪的仿真实验证明了其算法应用的可行性,与其他算法相比,能更准确记录人体位姿信息.
[1]John Kemp,Elena I.Gaura,James Brusey.Using body sensor networks for increased safety in bomb disposal missions[EB/OL].(2008-01-01)http://www.coventry.ac.uk/researchnet/external/content/1/c4/60/92/v1234782324/user/bsn.pdf.
[2]王兆其.基于视频的三维运动捕获方法研究[D].北京:中国科学院计算技术研究所,2006.
[3]张 莉.多摄像机人体跟踪技术的研究[D].杭州:浙江大学图书馆,2008.
[4]Suguru Goto,Fuminori Yamasaki.Integraion of percussion robots“robotmusic” with the data-suit“bodysuit”:technological aspects and concepts[C]//16th IEEE International Conference,2007:775-779.
[5]侯文生,戴加满,郑小林,等.基于加速度传感器的前臂运动姿态检测[J].传感器与微信息,2009(28):106-108.
[6]李 露,陈定方.基于OSG的粒子系统特效控制的研究[J].武汉工业大学学报,2009(24):51-53.
[7]汪 璇.基于OSG的分布式汽车驾驶模拟器运行仿真及碰撞检测研究[D].武汉:武汉理工大学图书馆,2008.