一种基于人脸识别的智能坐姿矫正方法与流程

文档序号:23384707发布日期:2020-12-22 13:49阅读:359来源:国知局
一种基于人脸识别的智能坐姿矫正方法与流程

本发明属于坐姿识别与矫正技术领域,特别涉及一种基于人脸识别的智能坐姿矫正方法。



背景技术:

基于人脸识别的智能坐姿矫正系统是一种根据传感器信息对人的坐姿进行识别和纠正的智能系统,由于电机、传感器等电子元件成本越来越低,性能越来越好,在坐姿矫正领域出现越来越多智能系统。

目前的坐姿智能矫正系统主要有两类。

一类是在座椅上布线,如专利申请号为201910385447.8的一种坐姿矫正装置及方法,该方案在座椅背部和底部安装超声波传感器、压力传感器等。检测人体坐的位置和颈部位置从而判断人体坐姿。该方案的缺点在于只能提供报警服务,无法对人体进行机械限位,同时,也无法检测歪头等不良坐姿。

一类使用固定于桌面上的独立装置:如专利申请号为201910230662.0的一种带有坐姿矫正的人工智能的在线教育终端。该方案可检测多种坐姿但是只能发出语音提醒,无法对使用者进行机械限位,对使用者的坐姿约束能力不够。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种采用人脸识别的方法判断人脸的空间位姿,通过相机坐标系与机械手坐标系的映射关系得出直流电机和舵机的控制量,使用pid算法控制直流电机,使用pwm控制舵机。该智能坐姿矫正方法依托dlib库和人脸识别模型,检测精度高,实现了坐姿纠正的高度自动化,并且能够对多种错误坐姿进行检测和纠正。

本发明的目的是通过以下技术方案来实现的:一种基于人脸识别的智能坐姿矫正方法,包括以下步骤:

s1、获取机械手坐标系中人头部的姿态和位置;

s2、进行歪头坐姿矫正;

s3、计算机械手末端所处高度;

s4、计算舵机偏转角度和直流电机行程;

s5、计算控制舵机的pwm占空比:设舵机的目标转动角度为θ,则控制舵机转到目标角度所需的pwm占空比=(2.5+θ/18)/100;

s6、使用pid控制直流电机转动;

s7、记录当前转过的总脉冲数:使用数据库更新当前编码器检测到的总脉冲的个数,等待下一次微动开关的按下,重复执行s2;

s8、电机与舵机复位:令目标脉冲数m=0,根据当前脉冲数m和目标脉冲数m,执行pid控制直流电机程序,结束后更新数据库记录的脉冲数m。

进一步地,所述步骤s1具体实现方法为:

s11、读取摄像头捕获的一帧原始图像,图像为长1920像素、宽1080像素的rgb图像;

s12、将捕获的图像进行等比例缩放,并进行高斯滤波,得到长为1280像素,宽为720像素的图像;

s13、使用dlib库和人脸识别模型识别图像中的所有人脸,并对所有人脸及对应的图像区域进行编号;

s14、遍历所有人脸对应的图像区域,确定最大的人脸所在区域对应的编号,并获得最大人脸的六个特征点在图像坐标系中的二维坐标,六个特征点分别为:鼻尖p0、下巴下侧的边界点p1、左眼的左边界点p2、右眼的右边界点p3、嘴的左边界点p4、嘴的右边界点p5;

s15、根据人脸上六个特征点实际的空间分布,假设当人脸正对相机时,这六个特征点在相机坐标系下的三维坐标分别为q0,q1,q2,q3,q4,q5;根据pn和qn的值,以及预先测得的相机内参矩阵k、相机畸变系数d,运用pnp算法解算人脸在相机坐标系中的位置向量vc和绕z、y、x轴旋转的欧拉角αc、βc、γc,同时得到人脸位姿在相机坐标内的齐次变换矩阵tc;n=0,1,2,3,4,5;

根据相机坐标系与世界坐标系之间的映射变换矩阵twc,得到人头部的位姿在世界坐标系内的齐次变换矩阵:

tw=twc·tc

根据齐次变换矩阵tw计算人头部在世界坐标系内的位置向量vw和绕z、y、x轴旋转的欧拉角αw、βw、γw。

进一步地,所述步骤s2具体实现方法为:设竖直方向为z轴,人脸的偏转角度用γw来表示,通过判断γw是否在预设的允许范围内来判断是否存在歪头的不良坐姿;检测到γw超出允许范围时进行计数累加,连续计数10次时,发出语音提醒;如果在计数到10次前检测到人脸偏转角度回归正常范围,则清零计数次数。

进一步地,所述步骤s3具体实现方法为:连续检测人脸位姿20次,取后15次稳定数值的平均值,根据人脸的空间位姿来判断机械手末端的所在位置,继而计算舵机的偏转角度和直流电机的行程;具体计算如下:规定机械手末端所在位置位于人体锁骨最下端,人头部在世界坐标系中的位置向量为vw,根据查阅人体结构资料得到锁骨最下端相对于vw的变化矩阵tx,通过tx*vw计算出此时锁骨最末端应当所处的位置,得到其高度值h。

进一步地,所述步骤s4具体实现方法为:通过机械手末端所处高度h计算舵机的偏转角度和直流电机的行程,计算方式如下:

已知机械手舵机杆长度为115mm,桌面前端距人的距离为120mm,舵机轴沿桌面法向距离桌面的初始距离为130mm,则设舵机轴应当沿法线方向上升xmm,舵机应当转动θ角度,则

x*cos(75°)+115*cos(θ-15°)=120

x*sin(75°)+115*sin(θ-15°)=h

解方程得到x和θ的值,即为直流电机的行程和舵机的偏转角度;x和θ为s6中pid控制电机转动的目标位置提供依据;

由于直流电机的减速比为20,电机轴转动一圈产生7个脉冲,丝杆导程为2mm,计算出直流电机需要转动10x圈,即编码器检测到70x个脉冲。

进一步地,所述步骤s6具体实现方法为:用脉冲数表示机械手移动关节行程,电机每次启动前,调用数据库记录的编码器当前脉冲数m,视为当前机械手移动关节所处位置;在s4中,目标高度值h被转化成目标脉冲数m=70x,则初始误差total_err=m-m,total_err大于0则电机逆时针转动,编码器每返回一个脉冲,m值增加1;total_err小于0则电机顺时针转动,编码器每返回一个脉冲,m值减小1;

pid的公式为output=kp*err+ki*∑err+kd(err-err_last),其中,kp、ki、kd分别表示pid的比例、积分、微分系数;err为目标脉冲数与当前脉冲数之差,err_last为上一循环中的err值;输出output为控制直流电机的pwm占空比,当output>100时,将output置为100;每次循环结束前更新err_last的值,循环开始后更新err的值,不断循环直至err/total_err<2%。

本发明的有益效果是:本发明的矫正方法采用人脸识别的方法判断人脸的空间位姿,通过相机坐标系与机械手坐标系的映射关系得出直流电机和舵机的控制量,使用pid算法控制直流电机,使用pwm控制舵机。该方法依托dlib库和人脸识别模型,检测精度高,实现了坐姿纠正的高度自动化,并且能够对多种错误坐姿进行检测和纠正。

附图说明

图1为图1为本发明提出的一种基于人脸识别算法的智能矫正器的正面结构示意图;

图2是智能矫正器的背面结构示意图;

图3为本发明按钮结构示意图;

图4为本发明机械手的示意图;

图5为本发明阅读架的示意图;

图6为本发明底座的示意图;

图7为本发明主支撑平板的示意图;

图8为本发明的基于人脸识别的智能坐姿矫正方法的流程图。

具体实施方式

下面结合附图进一步说明本发明的技术方案。

本发明采用的智能坐姿矫正器结构如图1~图7所示,其包括树莓派1、驱动模块2、摄像头3、音箱4、按钮5,坐姿纠正机械系统包括机械手6,阅读架7,底座8,主支撑平板构成9。芯片搭载木板91通过螺钉连接在底座8上,并在其上放置玻璃平板92。机械手6安装在芯片搭载木板91的正前方。阅读架7通过阻尼铰链与芯片搭载木板91相连接,可以适当的旋转角度。按钮5置于玻璃平板92上方,用于开启与关闭智能识别。摄像头3安置在阅读架7下方,用于识别人脸位置。树莓派1,驱动模块2,音响4等置于芯片搭载木板91下方。树莓派1作为主控芯片用于接收摄像头3的拍摄数据,并通过识别算法得到人脸的位姿。此处的位姿数据映射到关节空间,得到直流电机和舵机的转动量。将转动量发给驱动模块2,产生pwm来控制直流电机和舵机的转动,实现对机械臂末端的调整。同时,树莓派1将根据人脸位姿数据判断是否使用者是否歪头,判断歪头后音箱4将发出语音提示。按钮5用于模式切换与机械手6的启动,芯片搭载木板91与阅读架7均贴上塑料保护贴膜。

参照图3,坐姿纠正智能控制系统中的按钮5由微动开关51,触碰开关52,按钮壳53,按钮电路板54组成,将两个按钮焊接于按钮电路板54上,并置于按钮壳53两个预留凹槽内,并通过螺钉孔与芯片搭载平板91连接,微动开关51负责在写作模式中启动机械手,触碰开关52负责写作模式和阅读模式的切换。

参照图4,坐姿纠正机械系统中的机械手6包括直流电机61,机械手底座62和机械手抬升结构63,舵机64,丝杆螺母65,舵机座66,舵机杆左67,u形杆69,舵机杆右68,其中舵机座由舵机座壳子661与舵机座夹板662构成,机械手底座62由机械手底座上621与机械手底座下622构成。直流电机安装在机械手底座上621中间的槽内,并用机械手底座下622与机械手底座上621和主支撑平板固定,将直流电机61夹住,形成六自由度的完全约束。丝杆螺母65与电机61通过联轴器与紧定螺钉连接,并与机械手抬升结构63连接,同时机械手抬升结构63与舵机座66通过自攻螺丝连接,通过控制直流电机61的旋转运动来控制舵机座66的上下运动,舵机64安置在舵机座壳子661中,并用舵机座夹板662夹住,通过舵机旋转轴和舵机座夹板662预留孔,安装舵机杆左67,舵机杆右68,u形杆69,三根杆件之间通过螺栓连接,避免悬臂结构。同时舵机线通过机械手底座上621凹槽直通芯片搭载木板91下端,连接上驱动模块2。工作时,直流电机61旋转使丝杆65上下运动,舵机64同步运动,上升至指定位置时,舵机64旋转左右舵机杆至合适位置停住。舵机64的型号为sg90舵机,直流电机61型号为jga12-n20。

参照图5,坐姿纠正机械系统中的阅读架7包括书本背板71,书本底板72,书本夹73,书本夹73为对称的两个夹子组成,书本底板72由大底板721与小底板722构成。书本底板72的大底板721与小底板722通过螺钉固定,并通过过盈配合敲入书本背板71,书本夹73先置于书本底板72两弧形凹槽内,而后通过螺钉与轴套与书本底板72连接。书本背板71通过两个阻尼铰链与芯片搭载木板91连接。阅读时,通过两个阻尼铰链将书本背板71旋转至合适位置,而后将书本放置在书本底板72上,拨动左右书本夹子73将书本页夹住,即可阅读。

参照图6,坐姿纠正机械系统中的底座8由型材81和小挡板82构成,型材的型号为2020欧标型材,长度为:50mm两条,80mm两条,140mm两条,320mm两条,510mm两条,内部连接方式采用内嵌角槽连接件连接。底座8架底部由两条510mm与两条320mm构成一长方形,510mm型材放置在320mm型材内部,在两条320mm型材上对称竖直放置50mm与80mm型材,然后将两条140mm型材与470mm型材拼成长方形(470mm型材置于内侧),然后将刚刚得到的长方形型材架放置在上方,两端分别与50mm,80mm的上端连接。最后将两个长方形小挡板82通过过盈配合的方式敲入型材内。采用型材架的目的是调整并固定主支撑平板9的角度为15°,15°的角度满足人体工程学,使人可以舒适的在其上写字办公,同时提供强度支撑,小挡板82的作用则是起限位作用,防止机构因摩擦不够而往后滑动。

参照图7,坐姿纠正机械系统中的主支撑平板9由芯片搭载木板91和玻璃平板92构成,芯片搭载在木板91的预留孔上,木板91与主支撑平板92通过螺钉连接。本机构所用到的所有芯片模块均搭载在芯片搭载木板91上,上层的玻璃平板92提升木板91的刚性并提供一个完整平面进行写作。

如图8所示,本发明的一种基于人脸识别的智能坐姿矫正方法,包括以下步骤:

s1、获取机械手坐标系中人头部的姿态和位置;具体实现方法为:

s11、读取摄像头捕获的一帧原始图像,图像为长1920像素、宽1080像素的rgb图像;

s12、将捕获的图像进行等比例缩放,并进行高斯滤波,得到长为1280像素,宽为720像素的图像;

s13、使用dlib库和预训练好的人脸识别模型识别图像中的所有人脸,并对所有人脸及对应的图像区域进行编号;

s14、遍历所有人脸对应的图像区域,确定最大的人脸所在区域对应的编号,并获得最大人脸的六个特征点在图像坐标系中的二维坐标,六个特征点分别为:鼻尖p0、下巴下侧的边界点p1、左眼的左边界点p2、右眼的右边界点p3、嘴的左边界点p4、嘴的右边界点p5;

s15、根据人脸上六个特征点实际的空间分布,假设当人脸正对相机时,这六个特征点在相机坐标系下的三维坐标分别为q0,q1,q2,q3,q4,q5;根据pn和qn的值,以及预先测得的相机内参矩阵k、相机畸变系数d,运用pnp算法解算人脸在相机坐标系中的位置向量vc和绕z、y、x轴旋转的欧拉角αc、βc、γc,同时得到人脸位姿在相机坐标内的齐次变换矩阵tc;n=0,1,2,3,4,5;

根据相机坐标系与世界坐标系之间的映射变换矩阵twc,得到人头部的位姿在世界坐标系内的齐次变换矩阵:

tw=twc·tc

根据齐次变换矩阵tw计算人头部在世界坐标系内的位置向量vw和绕z、y、x轴旋转的欧拉角αw、βw、γw。

s2、进行歪头坐姿矫正;具体实现方法为:设竖直方向为z轴,人脸的偏转角度用γw来表示,通过判断γw是否在预设的允许范围内来判断是否存在歪头的不良坐姿;检测到γw超出允许范围时进行计数累加,连续计数10次时,发出语音提醒;如果在计数到10次前检测到人脸偏转角度回归正常范围,则清零计数次数。

s3、计算机械手末端所处高度;具体实现方法为:连续检测人脸位姿20次,取后15次稳定数值的平均值,根据人脸的空间位姿来判断机械手末端的所在位置,继而计算舵机的偏转角度和直流电机的行程;具体计算如下:规定机械手末端所在位置位于人体锁骨最下端,人头部在世界坐标系中的位置向量为vw,根据查阅人体结构资料得到锁骨最下端相对于vw的变化矩阵tx,通过tx*vw计算出此时锁骨最末端应当所处的位置,得到其高度值h。

s4、计算舵机偏转角度和直流电机行程;具体实现方法为:通过机械手末端所处高度h计算舵机的偏转角度和直流电机的行程,计算方式如下:

已知机械手舵机杆长度为115mm,桌面前端距人的距离为120mm,舵机轴沿桌面法向距离桌面的初始距离为130mm,则设舵机轴应当沿法线方向上升xmm,舵机应当转动θ角度,则

x*cos(75°)+115*cos(θ-15°)=120

x*sin(75°)+115*sin(θ-15°)=h

解方程得到x和θ的值,即为直流电机的行程和舵机的偏转角度(直流电机负责转动,本身不会移动,通过电机—丝杠结构,使结构末端的舵机轴做直线移动,因此,舵机轴的移动距离即为直流电机的行程);x和θ为s6中pid控制电机转动的目标位置提供依据;

由于直流电机的减速比为20,电机轴转动一圈产生7个脉冲,丝杆导程为2mm,计算出直流电机需要转动10x圈,即编码器检测到70x个脉冲。

s5、计算控制舵机的pwm占空比:设舵机的目标转动角度为θ,则控制舵机转到目标角度所需的pwm占空比=(2.5+θ/18)/100;舵机的有效pwm占空比在2.5%~12.5%。

s6、使用pid控制直流电机转动;具体实现方法为:用脉冲数表示机械手移动关节行程,电机每次启动前,调用数据库记录的编码器当前脉冲数m,视为当前机械手移动关节所处位置;在s4中,目标高度值h被转化成目标脉冲数m=70x,则初始误差total_err=m-m,total_err大于0则电机逆时针转动,编码器每返回一个脉冲,m值增加1;total_err小于0则电机顺时针转动,编码器每返回一个脉冲,m值减小1;

pid的公式为output=kp*err+ki*∑err+kd(err-err_last),其中,kp、ki、kd分别表示pid的比例、积分、微分系数;err为目标脉冲数与当前脉冲数之差,err_last为上一循环中的err值;输出output为控制直流电机的pwm占空比,当output>100时,将output置为100;每次循环结束前更新err_last的值,循环开始后更新err的值,不断循环直至err/total_err<2%。

s7、记录当前转过的总脉冲数:使用数据库更新当前编码器检测到的总脉冲的个数,等待下一次微动开关的按下,重复执行s2;

s8、电机与舵机复位:当检测到触碰开关弹上时,不再进行检测;令目标脉冲数m=0,根据数据库中记录的当前脉冲数m和目标脉冲数m,执行pid控制直流电机程序,结束后更新数据库记录的脉冲数m。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

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