基于人手运动姿态学习的仿生机械手的非接触式控制方法与流程

文档序号:12736992阅读:来源:国知局

技术特征:

1.一种基于人手运动姿态学习的仿生机械手的非接触式控制方法,其特征在于,步骤如下:

(1)基本概念

RGB-D图像:通过RGB-D相机采集,由RGB图像和深度图像两部分组成;其中,RGB图像的每个像素值表示图像的颜色信息,深度图像的每个像素值表示传感器距离物体的实际距离;RGB图像和深度图像是配准的,即RGB图像和深度图像的每个像素之间存在一一对应的关系;

手部关节模型:根据解剖学中的人体手部骨骼结构和运动学约束条件定义手部关节模型,该模型用于建立三维手部模型;

手部关节模型包括5根掌骨、5根近端指骨、4根中间指骨及5根远端指骨;手腕关节点为世界坐标系原点,具有6个自由度,包括全局旋转和全局平移,分别有3个自由度;手部关节模型包含四种关节点,即MCP关节点、PIP关节点、DIP关节点和IP关节点,其中,掌骨和近端指骨的连接点为MCP关节点,近端指骨与中间指骨的连接点为PIP关节点,中间指骨与远端指骨的连接点为DIP关节点,大拇指的远端指骨与近端指骨之间的连接点为IP关节点;每个MCP关节点具有左右伸展、前后摆动2个自由度;PIP、DIP和IP三种关节点仅有前后摆动1个自由度;

二维手部模型:将采集到的手部深度图像进行四叉树分解,根据深度值的相似度将手部深度图像划分成多个图像块,对于每个图像块采用二维混合高斯模型进行建模,即得到二维手部模型,记为符号CI

三维手部模型:使用各向同性的混合高斯模型对手部进行三维建模,记为符号CH

投影模型:将当前位姿状态下的三维手部模型投影到图像上,获得对应的投影模型,使用符号Cp表示;

(2)通过对RGB-D图像中人手的所有关节进行跟踪、获取其位姿参数,并将所有参数转换为机械手的动作指令,实现两者的同步;

1)自适应手部建模

手部骨骼长度的比例系数包括手部长度Lhand、手部宽度Whand、各手掌骨之间长度的比例及夹角、手指长度及手指各骨骼长度的比例;

(a)手部长度和手部宽度:定义采集到的深度图像中手部长度和手部宽度所占的像素个数m和n,计算得到手部的平均深度davg;根据投影比例得到实际手部长度Lhand和手部宽度Whand

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>L</mi> <mrow> <mi>h</mi> <mi>a</mi> <mi>n</mi> <mi>d</mi> </mrow> </msub> <mo>=</mo> <mfrac> <mi>m</mi> <mi>f</mi> </mfrac> <msub> <mi>d</mi> <mrow> <mi>a</mi> <mi>v</mi> <mi>g</mi> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>W</mi> <mrow> <mi>h</mi> <mi>a</mi> <mi>n</mi> <mi>d</mi> </mrow> </msub> <mo>=</mo> <mfrac> <mi>n</mi> <mi>f</mi> </mfrac> <msub> <mi>d</mi> <mrow> <mi>a</mi> <mi>v</mi> <mi>g</mi> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

其中:f表示以像素为单位的焦距大小,获取粗略的手部的长宽后,在粗略值的0.9~1.1倍范围内寻找准确值;

(b)各手掌骨长度的比值及夹角:对手部相同名称的骨骼按照从小拇指到大拇指的顺序,分别编号为1~5,即MC1~MC5;以中指掌骨为参考位置,其他4根掌骨与中指掌骨的夹角分别表示为θ1~θ4

中指掌骨MC3与其他掌骨的长度的比值范围为:

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>MC</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>MC</mi> <mn>1</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.05</mn> <mo>~</mo> <mn>1.14</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>MC</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>MC</mi> <mn>2</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.05</mn> <mo>~</mo> <mn>1.14</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>MC</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>MC</mi> <mn>4</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0.97</mn> <mo>~</mo> <mn>1.11</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>MC</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>MC</mi> <mn>5</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.25</mn> <mo>~</mo> <mn>1.39</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

五根掌骨之间的夹角范围为:

(c)按照从小拇指到大拇指的顺序分别定义各个手指长度为L1~L5,且长度分别为其对应手指骨骼长度之和,即:

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msup> <mi>L</mi> <mn>1</mn> </msup> <mo>=</mo> <msup> <mi>PP</mi> <mn>1</mn> </msup> <mo>+</mo> <msup> <mi>MP</mi> <mn>1</mn> </msup> <mo>+</mo> <msup> <mi>DP</mi> <mn>1</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>L</mi> <mn>2</mn> </msup> <mo>=</mo> <msup> <mi>PP</mi> <mn>2</mn> </msup> <mo>+</mo> <msup> <mi>MP</mi> <mn>2</mn> </msup> <mo>+</mo> <msup> <mi>DP</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>L</mi> <mn>3</mn> </msup> <mo>=</mo> <msup> <mi>PP</mi> <mn>3</mn> </msup> <mo>+</mo> <msup> <mi>MP</mi> <mn>3</mn> </msup> <mo>+</mo> <msup> <mi>DP</mi> <mn>3</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>L</mi> <mn>4</mn> </msup> <mo>=</mo> <msup> <mi>PP</mi> <mn>4</mn> </msup> <mo>+</mo> <msup> <mi>MP</mi> <mn>4</mn> </msup> <mo>+</mo> <msup> <mi>DP</mi> <mn>4</mn> </msup> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>L</mi> <mn>5</mn> </msup> <mo>=</mo> <msup> <mi>PP</mi> <mn>5</mn> </msup> <mo>+</mo> <msup> <mi>DP</mi> <mn>5</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

根据上述定义,使用如下三种比例关系描述一个手部各个关节的位置关系:

中指长度L3与中间掌骨MC3的长度比值:

<mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>L</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>MC</mi> <mn>3</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.19</mn> <mo>~</mo> <mn>1.32</mn> <mo>&rsqb;</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

中指长度与其他手指的长度比值:

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>L</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>L</mi> <mn>1</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.19</mn> <mo>~</mo> <mn>1.44</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>L</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>L</mi> <mn>2</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.04</mn> <mo>~</mo> <mn>1.13</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>L</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>L</mi> <mn>4</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.08</mn> <mo>~</mo> <mn>1.19</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>L</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>L</mi> <mn>5</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.52</mn> <mo>~</mo> <mn>1.83</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>

每个手指的近端指骨PP分别与指骨MP及远端指骨DP的比值范围如下:

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>1</mn> </msup> <mo>-</mo> <msup> <mi>MP</mi> <mn>1</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.57</mn> <mo>~</mo> <mn>1.90</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>1</mn> </msup> <mo>-</mo> <msup> <mi>DP</mi> <mn>1</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.73</mn> <mo>~</mo> <mn>2.09</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>2</mn> </msup> <mo>-</mo> <msup> <mi>MP</mi> <mn>2</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.42</mn> <mo>~</mo> <mn>1.72</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>2</mn> </msup> <mo>-</mo> <msup> <mi>DP</mi> <mn>2</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.71</mn> <mo>~</mo> <mn>2.07</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>MP</mi> <mn>3</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.52</mn> <mo>~</mo> <mn>1.83</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>3</mn> </msup> <mo>-</mo> <msup> <mi>DP</mi> <mn>3</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.82</mn> <mo>~</mo> <mn>2.20</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>4</mn> </msup> <mo>-</mo> <msup> <mi>MP</mi> <mn>4</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.46</mn> <mo>~</mo> <mn>1.77</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>4</mn> </msup> <mo>-</mo> <msup> <mi>DP</mi> <mn>4</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.70</mn> <mo>~</mo> <mn>2.06</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>r</mi> <mrow> <msup> <mi>PP</mi> <mn>5</mn> </msup> <mo>-</mo> <msup> <mi>MP</mi> <mn>5</mn> </msup> </mrow> </msub> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>1.07</mn> <mo>~</mo> <mn>1.30</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

2)三维手部跟踪

首先,从采集的RGB-D图像中将手部分割出来,然后进行掌心、手腕、指尖的检测;其次,对分割得到的手部进行二维建模,分为两个步骤:四叉树分解和图像混合高斯建模;然后,根据RGB-D图像建立自适应的三维手部模型;最后,通过将三维手部模型的投影模型与手部二维建模进行匹配,计算模型相似度匹配项Esim,结合肤色惩罚项Ecol_sim和帧间连续性惩罚项Efr_sim,通过求解目标函数得到手部的位姿,最终的归一化目标函数如下:

ε(Θ)=EsimfrEfr_simcolEcol_sim (8)

其中,ωfr为帧间连续性惩罚项Efr_sim的权值,ωcol为肤色惩罚项Ecol_sim的权值;

3)映射算法

对于手部关节模型中的MCP、PIP和DIP关节,分别对其前后摆动、左右伸展的角度进行约束;其中,MCP、PIP和DIP三种关节都具有前后摆动的能力,只有MCP关节具有进行左右伸展的能力;

(a)记MCP、PIP和DIP三种关节前后摆动的角度参数分别为θmcp_fe、θpip和θdip,静态约束如下:

(b)记MCP关节的左右伸展角度为θmcp_aa,静态约束为:

在公式(10)中从上至下k={1,2,3,4,5},分别对应小拇指、无名指、中指、食指和大拇指,θmcp_aa值的正负以中指作为参考;

五指仿生机械手模型,其中,大拇指、食指和中指分别有两个自由度,中指和小指各有一个自由度,均具有手指并拢和张开;所有关节的动作由9个参数控制,即大拇指正屈、大拇指两侧侧摆、食指近关节和远关节正屈、食指基关节正屈、中指基关节正屈、中指近关节和远关节正屈、无名指基关节正屈、小指基关节正屈和五指张开,参数的范围为:

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>T</mi> <mi>h</mi> <mi>u</mi> <mi>m</mi> <mi>b</mi> <mo>_</mo> <mi>F</mi> <mi>l</mi> <mi>e</mi> <mi>x</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.97</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>T</mi> <mi>h</mi> <mi>u</mi> <mi>m</mi> <mi>b</mi> <mo>_</mo> <mi>O</mi> <mi>p</mi> <mi>p</mi> <mi>o</mi> <mi>s</mi> <mi>i</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.99</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>I</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>D</mi> <mi>i</mi> <mi>s</mi> <mi>t</mi> <mi>a</mi> <mi>l</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>1.33</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>I</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>Pr</mi> <mi>o</mi> <mi>x</mi> <mi>i</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.80</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mi>i</mi> <mi>d</mi> <mi>d</mi> <mi>l</mi> <mi>e</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>Pr</mi> <mi>o</mi> <mi>x</mi> <mi>i</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.80</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mi>i</mi> <mi>d</mi> <mi>d</mi> <mi>l</mi> <mi>e</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>D</mi> <mi>i</mi> <mi>s</mi> <mi>t</mi> <mi>a</mi> <mi>l</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>1.33</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>R</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.98</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>P</mi> <mi>i</mi> <mi>n</mi> <mi>k</mi> <mi>y</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.98</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>S</mi> <mi>p</mi> <mi>e</mi> <mi>a</mi> <mi>d</mi> <mo>&Element;</mo> <mo>&lsqb;</mo> <mn>0</mn> <mo>,</mo> <mn>0.58</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

记人手动作的参数为Θ={(θmcp_fe)k,(θmcp_aa)k,(θpip)k,(θdip)k}k={1,2,3,4,5},机械手的控制参数为Θ′,则定义如下的映射函数:

<mrow> <msup> <mi>&Theta;</mi> <mo>&prime;</mo> </msup> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>T</mi> <mi>h</mi> <mi>u</mi> <mi>m</mi> <mi>b</mi> <mo>_</mo> <mi>F</mi> <mi>l</mi> <mi>e</mi> <mi>x</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>=</mo> <mn>0.97</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>f</mi> <mi>e</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>5</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>I</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>D</mi> <mi>i</mi> <mi>s</mi> <mi>t</mi> <mi>a</mi> <mi>l</mi> <mo>=</mo> <mn>1.33</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>p</mi> <mi>i</mi> <mi>p</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>4</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>I</mi> <mi>n</mi> <mi>d</mi> <mi>e</mi> <mi>x</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>Pr</mi> <mi>o</mi> <mi>x</mi> <mi>i</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mo>=</mo> <mn>0.80</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>f</mi> <mi>e</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>4</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mi>i</mi> <mi>d</mi> <mi>d</mi> <mi>l</mi> <mi>e</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>Pr</mi> <mi>o</mi> <mi>x</mi> <mi>i</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mo>=</mo> <mn>0.80</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>f</mi> <mi>e</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>3</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mi>i</mi> <mi>d</mi> <mi>d</mi> <mi>l</mi> <mi>e</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>D</mi> <mi>i</mi> <mi>s</mi> <mi>t</mi> <mi>a</mi> <mi>l</mi> <mo>=</mo> <mn>1.33</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>p</mi> <mi>i</mi> <mi>p</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>3</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>R</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mo>_</mo> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>=</mo> <mn>0.98</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>f</mi> <mi>e</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>P</mi> <mi>i</mi> <mi>n</mi> <mi>k</mi> <mi>y</mi> <mo>=</mo> <mn>0.98</mn> <mo>/</mo> <mn>90</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>f</mi> <mi>e</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>1</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>F</mi> <mi>i</mi> <mi>n</mi> <mi>g</mi> <mi>e</mi> <mi>r</mi> <mo>_</mo> <mi>S</mi> <mi>p</mi> <mi>e</mi> <mi>a</mi> <mi>d</mi> <mo>=</mo> <mn>0.15</mn> <mo>/</mo> <mn>30</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>a</mi> <mi>a</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>1</mn> </msub> <mo>+</mo> <mn>0.01</mn> <mrow> <mo>(</mo> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>a</mi> <mi>a</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msub> <mo>+</mo> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>a</mi> <mi>a</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>4</mn> </msub> <mo>)</mo> </mrow> <mo>+</mo> <mn>0.15</mn> <mo>/</mo> <mn>45</mn> <msub> <mrow> <mo>(</mo> <msub> <mi>&theta;</mi> <mrow> <mi>m</mi> <mi>c</mi> <mi>p</mi> <mo>_</mo> <mi>a</mi> <mi>a</mi> </mrow> </msub> <mo>)</mo> </mrow> <mn>5</mn> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>12</mn> <mo>)</mo> </mrow> </mrow>

(3)基于人手运动姿态学习的仿生机械手的非接触式控制方法,步骤如下:

S1.采集RGB-D图像,并对深度图像进行预处理和特征提取,包括手部分割、指尖与手腕检测以及掌心提取,具体步骤如下:

S1.1.用z表示16位深度图像中某点的深度值,zmin表示16位深度图像中像素值大于0的最小值,则根据zmin所在的像素坐标,即获取手部在图像中的位置;限定深度在[zmin,zmin+200]范围内的图像区域为手部区域;通过公式(13)获取二值化的手部区域:

<mrow> <mi>B</mi> <mi>i</mi> <mi>n</mi> <mi>arg</mi> <mi>y</mi> <mi>Im</mi> <mi>a</mi> <mi>g</mi> <mi>e</mi> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> </mrow> </msub> <mo>&le;</mo> <mi>z</mi> <mo>&le;</mo> <msub> <mi>z</mi> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> </mrow> </msub> <mo>+</mo> <mn>200</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

S1.2.在二值化的手部图像上进行手部轮廓提取,进一步获取掌心、指尖及手腕的位置;掌心的位置为手部轮廓的最大内切圆圆心,再采用二维凸包算法中的Graham扫描法检测指尖与手腕位置,以二维凸包算法获取指尖与手腕的位置作为手部先验信息,计算手部各个关节长度;

S2.根据手部深度图像建立二维手部模型

S2.1.基于深度相似性的四叉树分解算法:首先,判定二值化的手部图像长宽是否为2的次幂,若不满足该条件则进行插值;其次,对二值化的手部图像进行递归式的分解,即将二值化的手部图像平均分为四个子块,分别判断各子块的最大与最小深度的差值是否小于12mm,若满足则停止对该子块分解,若不满足则继续将该子块均分成四个子块,并判断各子块是否满足阈值条件(14)

dmax-dmin≤12mm (14)

其中,dmax和dmin分别表示当前被分解的二值化的手部图像中子块深度的最大值与最小值;

S2.2.建立二维手部模型

步骤S2.1分解得到的第i个图像子块,构建二维高斯函数Gi,对其进行拟合,即子块i的中心位置对应于二维高斯函数的中心点,且二维高斯函数的标准差令二维手部模型中的所有高斯函数具有相同的权值1,则用公式(15)表示二维手部模型:

<mrow> <msub> <mi>C</mi> <mi>I</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </msubsup> <msub> <mi>G</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>;</mo> <msub> <mi>&mu;</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>&sigma;</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>d</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>p</mi> <mo>&Element;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>15</mn> <mo>)</mo> </mrow> </mrow>

其中,CI(p)表示二维手部模型,n表示图像模型中高斯函数的个数,p表示图像中像素点的二维坐标位置,Gi表示模型中的第i个二维高斯函数,μi表示第i个高斯函数中心点的位置,σi表示高斯函数的标准差,di表示高斯函数对应深度图像块的平均深度值;

S2.3.使用三维混合高斯模型对手部进行建模,其定义如下:

<mrow> <msub> <mi>C</mi> <mi>H</mi> </msub> <mrow> <mo>(</mo> <mi>q</mi> <mo>)</mo> </mrow> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </msubsup> <msub> <mi>&omega;</mi> <mi>j</mi> </msub> <msub> <mi>G</mi> <mi>j</mi> </msub> <mrow> <mo>(</mo> <mi>q</mi> <mo>;</mo> <msub> <mi>&mu;</mi> <mi>H</mi> </msub> <mo>,</mo> <msub> <mi>&sigma;</mi> <mi>H</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <mi>q</mi> <mo>&Element;</mo> <msup> <mi>R</mi> <mn>3</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> </mrow>

其中,CH(q)为手部的三维混合高斯模型,m表示模型中的高斯函数个数,q表示深度图像中像素点的三维坐标位置,Gj表示模型中的第j个高斯函数,ωj表示第j个高斯函数的权值,μH和σH分别表示高斯函数的均值向量和协方差矩阵;

S3.求解公式(8)中的目标函数

S3.1.初始化人手的参数向量,包括手部长度Lhand、手部宽度Whand、手掌骨MC1~MC5长度的比值、4根掌骨与中指掌骨MC3的夹角θ1~θ4、中指长度L3和其他手指长度的比值、中指长度L3和中间掌骨MC3长度的比值、每个手指的近端指骨PP分别与指骨MP及远端指骨DP的比值、手部位姿参数Θ;

S3.2.计算投影模型

假设三维手部模型中的一个三维高斯函数为GH(q;μHH),μH和σH分别为其齐次均值向量与标准差,且μH=[μxyz,1];假设三维手部模型的正交投影的二维高斯函数为GP(q′;μPP),μP和σP分别为其齐次均值向量与标准差;在已知深度相机的内参数矩阵K和焦距f的情况下,两者之间的投影关系为:

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&sigma;</mi> <mi>P</mi> </msub> <mo>=</mo> <msub> <mi>&sigma;</mi> <mi>H</mi> </msub> <mi>f</mi> <mo>/</mo> <msub> <mi>&mu;</mi> <mi>z</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>&mu;</mi> <mi>P</mi> </msub> <mo>=</mo> <mi>H</mi> <mo>&lsqb;</mo> <mtable> <mtr> <mtd> <mi>I</mi> </mtd> <mtd> <mi>O</mi> </mtd> </mtr> </mtable> <mo>&rsqb;</mo> <msub> <mi>&mu;</mi> <mi>H</mi> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

其中,I为3×3的单位矩阵,O代表3×1的零向量,μz代表高斯函数中心位置的深度值;根据公式(17),分别对三维手部模型中所有的高斯函数进行投影,得到其对应的二维投影模型为:

<mrow> <msub> <mi>C</mi> <mi>P</mi> </msub> <mrow> <mo>(</mo> <msup> <mi>q</mi> <mo>&prime;</mo> </msup> <mo>)</mo> </mrow> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>&omega;</mi> <mi>j</mi> </msub> <msub> <mi>G</mi> <mi>j</mi> </msub> <mrow> <mo>(</mo> <msup> <mi>q</mi> <mo>&prime;</mo> </msup> <mo>;</mo> <msub> <mi>&sigma;</mi> <mi>P</mi> </msub> <mo>,</mo> <msub> <mi>&mu;</mi> <mi>P</mi> </msub> <mo>,</mo> <msub> <mi>d</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> <msup> <mi>q</mi> <mo>&prime;</mo> </msup> <mo>&Element;</mo> <msup> <mi>R</mi> <mn>2</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow>

其中,CP表示二维投影模型,m表示高斯函数个数,Gj表示投影模型中的第j个高斯函数,q′表示三维手部模型中像素点的三维坐标q投影到二维图像时对应的二维坐标,ωj表示投影高斯函数的权值,分别表示投影高斯函数的均值向量与标准差;dj表示投影高斯函数的平均深度值,即三维高斯函数前表面的深度值,通过将高斯函数中心位置的深度值减去其半径获得;

S3.3.计算二维手部模型和三维手部模型的投影模型之间相似性

二维手部模型CI与投影模型CP都是二维混合高斯模型,通过对两者中的所有高斯函数进行匹配,定义两者之间的相似性度量函数如下:

<mrow> <mi>E</mi> <mrow> <mo>(</mo> <msub> <mi>C</mi> <mi>I</mi> </msub> <mo>,</mo> <msub> <mi>C</mi> <mi>P</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>&Element;</mo> <msub> <mi>C</mi> <mi>I</mi> </msub> </mrow> </munder> <munder> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>&Element;</mo> <msub> <mi>C</mi> <mi>P</mi> </msub> </mrow> </munder> <msub> <mi>D</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>&Sigma;&Sigma;&omega;</mi> <mi>i</mi> </msub> <msub> <mi>&omega;</mi> <mi>j</mi> </msub> <msub> <mo>&Integral;</mo> <mi>&Omega;</mi> </msub> <msub> <mi>G</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <msub> <mi>G</mi> <mi>j</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mi>d</mi> <mi>x</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow>

其中,CI与CP分别表示二维手部模型与投影模型,i和j表示相应模型中二维高斯函数的序号,Dij表示CI与CP中两个高斯函数的积分表达式:

<mrow> <msub> <mi>D</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mn>2</mn> <mi>&pi;</mi> <mfrac> <mrow> <msubsup> <mi>&sigma;</mi> <mi>i</mi> <mn>2</mn> </msubsup> <msubsup> <mi>&sigma;</mi> <mi>j</mi> <mn>2</mn> </msubsup> </mrow> <mrow> <msubsup> <mi>&sigma;</mi> <mi>i</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>&sigma;</mi> <mi>j</mi> <mn>2</mn> </msubsup> </mrow> </mfrac> <mi>exp</mi> <mrow> <mo>(</mo> <mfrac> <mrow> <mo>|</mo> <mo>|</mo> <msub> <mi>&mu;</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mi>j</mi> </msub> <mo>|</mo> <msup> <mo>|</mo> <mn>2</mn> </msup> </mrow> <mrow> <msubsup> <mi>&sigma;</mi> <mi>i</mi> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>&sigma;</mi> <mi>j</mi> <mn>2</mn> </msubsup> </mrow> </mfrac> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow>

其中,μi和σi分别为二维手部模型中第i个二维高斯函数的均值与标准差,μj和σj分别为手部投影模型中第j个高斯函数的均值与标准差;

S3.4.计算帧间连续性

利用前两帧的手部位姿参数与当前帧的位姿参数的平滑程度来衡量当前帧位姿参数的合理性,具体公式如下:

<mrow> <msub> <mi>E</mi> <mrow> <mi>f</mi> <mi>r</mi> <mo>_</mo> <mi>s</mi> <mi>i</mi> <mi>m</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>&Theta;</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mrow> <msub> <mi>&theta;</mi> <mi>j</mi> </msub> <mo>&Element;</mo> <mi>&Theta;</mi> </mrow> </munder> <msup> <mrow> <mo>(</mo> <mn>0.5</mn> <mo>(</mo> <msubsup> <mi>&theta;</mi> <mi>j</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msubsup> <mi>&theta;</mi> <mi>j</mi> <mrow> <mi>t</mi> <mo>-</mo> <mn>2</mn> </mrow> </msubsup> <mo>)</mo> <mo>-</mo> <msubsup> <mi>&theta;</mi> <mi>j</mi> <mrow> <mi>t</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>21</mn> <mo>)</mo> </mrow> </mrow>

其中,Θ表示手部位姿参数向量,按照顺序包括全局位移3个维度、全局角度3个维度、关节角度14个维度,共20个维度;θj表示Θ的第j项,t表示当前帧的序号;

S3.5.计算肤色相似性

肤色模型建立惩罚项,在不增加跟踪系统复杂度的基础上提高算法鲁棒性,具体公式如下:

<mrow> <msub> <mi>E</mi> <mrow> <mi>c</mi> <mi>o</mi> <mi>l</mi> <mo>_</mo> <mi>s</mi> <mi>i</mi> <mi>m</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>C</mi> <mi>P</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mrow> <mi>j</mi> <mo>&Element;</mo> <msub> <mi>C</mi> <mi>P</mi> </msub> </mrow> </munder> <msub> <mi>S</mi> <mi>j</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>22</mn> <mo>)</mo> </mrow> </mrow>

其中,CP代表投影模型,j表示CP中的高斯函数索引,Sj为肤色判断公式,如果该高斯函数所在区域的颜色为肤色则其值为0,否则为1;

S3.6.通过求解公式(8)得到手部的位姿参数Θ

S4.将步骤3求解得到的参数作为输入传送至灵巧手控制系统,根据公式(12)计算五指仿生机械手各个关节的参数,并在控制系统下生成对应的动作指令,使五指仿生机械手完成和控制人员同样的动作。

2.根据权利要求1所述的非接触式控制方法,其特征在于,采用Kinect作为RGB-D图像的采集设备,将采集的图像通过USB接口传输至计算机。

3.根据权利要求1或2所述的非接触式控制方法,其特征在于,采用雄克SVH五指仿生手作为五指仿生机械手模型。

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