一种基于人形机器人的掷骰子方法及人形机器人与流程

文档序号:16857864发布日期:2019-02-12 23:33阅读:406来源:国知局
一种基于人形机器人的掷骰子方法及人形机器人与流程

本发明涉及人形机器人技术领域,尤其涉及一种基于人形机器人的掷骰子方法及人形机器人。



背景技术:

在人力资源越发紧缺的大环境下,对自动化机械的投入愈发受到各行业的重视,带给了机器人产业发展的巨大机遇与挑战。2013年的中国是全世界机器人购买数量最多的国家,甚至超过了机械自动化程度更高的日本。现在,高效率,好管理的机器人越来越受到各行业的青睐。

但是,以库卡、安川、发那科为首的外资机器人品牌占据了中国将近90%的机器人市场。国产机器人的销售量只有区区市场总量的十分之一,说明国产机器人的竞争力还不够足。打铁还需自身硬,要提高国产机器人的市场竞争力,需要突破自身的技术桎梏,提高核心技术水平,才能在机器人市场突出重围,与外资品牌正面交锋。在《中国制造2025》的政策扶持与战略指导下,中国的机器人产业正欣欣向荣,遍地开花,多个机器人产业园区已经建成并投入使用,围绕着技术研发这一关键环节开展工作。

2018年5月16号,在天津举办的第二届世界智能大会上,各种各样的机器人及应用场景,无一不在预示着:以人工智能为代表的新一轮科技革命孕育兴起,正以前所未有的速度和方式改变着世界。其中最令人瞩目的就是各种机器人对各种场景的实际应用。

中国首个独立研制的人形机器人是一台命名为“先行者”的机器人,于2000年11月29日在长沙国防科技大学展示,先行者的体重有20公斤,身高达1.4米。其外观造型与人类相似,与人类一样具有五官与四肢,可以实现拟人化的行走以及一些基本操作,步行速率为每秒两步,而且还有语言能力。

此后,又有多个研究所及公司展开对人形机器人的研究。现阶段,人形机器人的应用场景主要以军工、航天等行业应用为主。根据学界的定义,完整形态上的智能机器人应具备感知、交互、决策、控制四大功能。具体到人形机器人形体,其核心技术难点在于步态控制、环境感知等环节,所以目前为止大部分研究所及公司主要在攻关或者完善核心技术难题,如平衡控制,姿态规划,自主避障等。

在第50届国际最具影响力的美国ces(internationalconsumerelectronicsshow,国际消费性电子展会)展会上,令人眼前一亮的talos机器人。是来自中国的乐聚(深圳)机器人技术有限公司自主研发的人形机器人。talos机器人具有高精度数字伺服舵机、高级步态算法和人形slam技术。这是中国企业首次公布的具有slam算法的人形机器人。talos能够根据地面的变化调整身体重心,从而保持平衡。此外,talos每只手具有3根手指,虽然结构简单,但是依旧能够完成对轻量物品的抓取任务。

国内对于人形机器人抓取研究的实验及文献较少,较大的原因是人形机器人手指电机功率较小,普遍只能抓取质量较轻的物体。而且对于不规则物体的抓取还需要大量的样本数据进行分析实验。因此,机器人抓取的开发大部分是使用机械臂进行的。

厦门电子产品展会就展出过某厂家利用六轴机械臂实现的掷骰子这一过程。所有骰子需要放在一个器皿里面,让机械臂去抓取这个器皿再倾倒出骰子。局限性在于需要手动去把倒出来的骰子一个一个拣出来,再重新放进到骰盅里面去。

国外的人形机器人发展起步较早,最为突出的应属谷歌旗下的波士顿动力公司研发的atlas人形机器人,在2018年5月其公司发布的视频来看。atlas已经能够在城市公路以及微小崎岖的土路上奔跑,并且可以实现后空翻。抓取方面,atlas可以搬动重达10磅的箱子,但从视频中看,atlas为了提高抓取的精度,依旧采用了贴上定位标签进行定点搬运工作。

同样在机器人方面研究有深厚底蕴的日本丰田公司,在2017年六月份发布了一款命名为t-hr3的人形机器人。可以完全复制人类的动作,并且完成精度非常高。从抓取气球而不使气球产生较大形变的结果看来,该机器人对抓取力度的控制十分精确。但是该机器人还是存在一定局限性:没有人工智能自主能力,需要人类坐在控制台上来操纵机器人。

我国国内对人形机器人领域的研究虽然起步得晚,但是其发展速度十分迅猛,直到2013年,人形机器人的相关科研工作已经在国内绝大多数“985”、“211”高校开展。同时,国内还举办了许多关于人形机器人的竞赛,以进行进一步交流学习。除此之外,在与人形机器人关联的图像处理及定位算法领域,我国的学者也取得了许多成果,包括一些高校的图像处理算法和定位算法。因此,尽管我国国内对人形机器人领域的研究虽然起步得晚,但学者们和科研人员们仍在不断学习与探索人形机器人。但是,现有的人形机器人的研究方案还无法实现人形机器人能够自动掷骰子。



技术实现要素:

有鉴于此,本发明的目的在于提出一种基于人形机器人的掷骰子方法及人形机器人,能够实现人形机器人能够自动掷骰子。

根据本发明的一个方面,提供一种基于人形机器人的掷骰子方法,包括:

人形机器人获取其到骰子的距离信息;

根据所述获取到的距离信息,运动到距离骰子合适的地点位置;

在所述运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据所述调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出。

其中,所述人形机器人获取其到骰子的距离信息,包括:

采用摄像头摄像方式,获取骰子的图像;

将所述获取到的骰子的图像的格式调整成构造函数形式;

将所述调整成构造函数格式后的骰子的图像先进行二值化处理再转化成灰度图像;

将所述转化成灰度图像后的骰子的图像先去除噪声再平滑图像;

采用多级边缘检测算法算子对所述平滑图像后的骰子的图像进行边缘检测;

对所述经边缘检测后的骰子的图像进行形态学处理包括图像膨胀、图像腐蚀;

对所述经形态学处理后的骰子的图像进行轮廓检测及绘制轮廓;

计算所述绘制的轮廓所包含图像的像素面积;

根据所述计算得到的像素面积,获取其到骰子的距离信息。

其中,所述人形机器人根据所述获取到的距离信息,运动到距离骰子合适的地点位置,包括:

所述人形机器人根据所述获取到的距离信息,确定能抓取到骰子的位置信息,根据所述确定的能抓取到骰子的位置信息确定骰子在所述位置上的像素面积大小,并将所述确定的骰子在所述位置上的像素面积大小设置为像素阈值,在运动过程中只要骰子在当前位置上的像素面积大小没有达到所述像素阈值则继续往前运动,直到运动到骰子在当前位置上的像素面积大小达到所述像素阈值则停下,运动到距离骰子合适的地点位置。

其中,所述人形机器人采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,包括:

人形机器人采用体感方式,获取人体的运动过程;

根据所述获取到的人体的运行过程数据,提取人体的骨胳关节点模型;

根据所述提取到的人体的骨胳关节点模型,采用绘制方式绘制仿人体骨胳关节点运动轨迹数据。

其中,所述人形机器人根据所述调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出,包括:

人形机器人根据所述调取出的仿人体骨胳关节点运动轨迹数据,模拟抓取骰子和掷出骰子的过程,并根据所述模拟抓取骰子和掷出骰子的过程,抓取骰子并掷出。

根据本发明的另一个方面,提供一种人形机器人,包括:

信息处理系统、控制系统和执行系统;

所述信息处理系统,用于获取人形机器人到骰子的距离信息;

所述控制系统,用于根据所述获取到的距离信息,运动到距离骰子合适的地点位置;

所述执行系统,用于在所述运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据所述调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出。

其中,所述信息处理系统,具体用于:

采用摄像头摄像方式,获取骰子的图像;

将所述获取到的骰子的图像的格式调整成构造函数形式;

将所述调整成构造函数格式后的骰子的图像先进行二值化处理再转化成灰度图像;

将所述转化成灰度图像后的骰子的图像先去除噪声再平滑图像;

采用多级边缘检测算法算子对所述平滑图像后的骰子的图像进行边缘检测;

对所述经边缘检测后的骰子的图像进行形态学处理包括图像膨胀、图像腐蚀;

对所述经形态学处理后的骰子的图像进行轮廓检测及绘制轮廓;

计算所述绘制的轮廓所包含图像的像素面积;

根据所述计算得到的像素面积,获取其到骰子的距离信息。

其中,所述控制系统,具体用于:

根据所述获取到的距离信息,确定能抓取到骰子的位置信息,根据所述确定的能抓取到骰子的位置信息确定骰子在所述位置上的像素面积大小,并将所述确定的骰子在所述位置上的像素面积大小设置为像素阈值,在运动过程中只要骰子在当前位置上的像素面积大小没有达到所述像素阈值则继续往前运动,直到运动到骰子在当前位置上的像素面积大小达到所述像素阈值则停下,运动到距离骰子合适的地点位置。

其中,所述执行系统,具体用于:

采用体感方式,获取人体的运动过程;

根据所述获取到的人体的运行过程数据,提取人体的骨胳关节点模型;

根据所述提取到的人体的骨胳关节点模型,采用绘制方式绘制仿人体骨胳关节点运动轨迹数据。

其中,所述执行系统,具体用于:

根据所述调取出的仿人体骨胳关节点运动轨迹数据,模拟抓取骰子和掷出骰子的过程,并根据所述模拟抓取骰子和掷出骰子的过程,抓取骰子并掷出。

可以发现,以上方案,人形机器人可以在该运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据该调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出,能够实现人形机器人能够自动掷骰子。

进一步的,以上方案,人形机器人当关节角度运行到特殊情况时,可以通过例如滤波器的方式调整来解决,使得代码工作量降低,在对单个刚体或刚体系统进行运动学及动力学的描述、分析和计算的时候,空间向量可以提供简洁的符号、更少的未知数、更少的方程。

进一步的,以上方案,人形机器人可以采用空间向量方式的优点是能精确反应人体骨骼的正确运动轨迹,实时性好。

进一步的,以上方案,人形机器人可以采用逆运动学的矩阵变换方式的优点是计算准确,因为骰子是静止放置,而计算过程与骰子的位置有关,不会被人身体的晃动所干扰到。

进一步的,以上方案,人形机器人可以采用双目测距方式的优点是定位较为准确,人形机器人采用单目测距方式的优点是原理简单,易于代码实现,计算量小,反应速度快。

进一步的,以上方案,人形机器人可以先对图片进行二值化处理再转化灰度图可以最大限度的降低环境和光线造成的图像噪声。

进一步的,以上方案,人形机器人采用的边缘检测算法是一个多级边缘算法,因其低错误率、高定位性、最小响应的良好表现被普遍认为是边缘检测的最优算法。

附图说明

图1为本发明基于人形机器人的掷骰子方法一实施例的流程示意图;

图2为本发明基于人形机器人的掷骰子方法一实施例中人形机器人空间坐标系统的一举例示意图;

图3为为本发明基于人形机器人的掷骰子方法一实施例中采用体感方式对人体的骨胳关节点模型进行编号的一举例示意图;

图4为为本发明基于人形机器人的掷骰子方法一实施例中采用kinect动作捕捉绘图效果的一举例示意图;

图5为本发明基于人形机器人的掷骰子方法一实施例中采用双目测距方式测人形机器到骰子的距离的一举例示意图;

图6为本发明基于人形机器人的掷骰子方法一实施例中采用单目测距方式进行棋盘标定的一举例示意图;

图7为本发明基于人形机器人的掷骰子方法一实施例中对转化成灰度图像后的骰子的图像去除噪声后的一举例示意图;

图8为本发明基于人形机器人的掷骰子方法一实施例中采用多级边缘检测算法对经平滑图像后的骰子的图像进行边缘检测的一举例示意图;

图9为本发明基于人形机器人的掷骰子方法一实施例中对经边缘检测后的骰子的图像进行形态学处理后的一举例示意图;

图10为本发明基于人形机器人的掷骰子方法一实施例中对骰子进行轮廓绘制后的一举例示意图;

图11为本发明基于人形机器人的掷骰子方法一实施例中彩采用kinect动作捕捉的具体实现过程的一举例示意图;

图12为本发明基于人形机器人的掷骰子方法一实施例中进行opencv图像处理的具体实现过程的一举例示意图;

图13为本发明人形机器人一实施例的结构示意图。

具体实施方式

下面结合附图和实施例,对本发明作进一步的详细描述。特别指出的是,以下实施例仅用于说明本发明,但不对本发明的范围进行限定。同样的,以下实施例仅为本发明的部分实施例而非全部实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明提供一种基于人形机器人的掷骰子方法,能够实现人形机器人能够自动掷骰子。

请参见图1,图1为本发明基于人形机器人的掷骰子方法一实施例的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该方法包括如下步骤:

s101:人形机器人获取其到骰子的距离信息。

其中,该人形机器人获取其到骰子的距离信息,可以包括:

采用摄像头摄像方式,获取骰子的图像;

将该获取到的骰子的图像的格式调整成np.array(构造函数)形式;

将该调整成构造函数格式后的骰子的图像先进行二值化处理再转化成灰度图像;

将该转化成灰度图像后的骰子的图像先去除噪声再平滑图像;

采用canny(多级边缘检测算法)算子对该平滑图像后的骰子的图像进行边缘检测;

对该经边缘检测后的骰子的图像进行形态学处理包括图像膨胀、图像腐蚀等;

对该经形态学处理后的骰子的图像进行轮廓检测及绘制轮廓;

计算该绘制的轮廓所包含图像的像素面积;

根据该计算得到的像素面积,获取其到骰子的距离信息。

s102:人形机器人根据该获取到的距离信息,运动到距离骰子合适的地点位置。

其中,该人形机器人根据该获取到的距离信息,运动到距离骰子合适的地点位置,可以包括:

该人形机器人根据该获取到的距离信息,确定能抓取到骰子的位置信息,根据该确定的能抓取到骰子的位置信息确定骰子在该位置上的像素面积大小,并将该确定的骰子在该位置上的像素面积大小设置为像素阈值,在运动过程中只要骰子在当前位置上的像素面积大小没有达到该像素阈值则继续往前运动,直到运动到骰子在当前位置上的像素面积大小达到该像素阈值则停下,运动到距离骰子合适的地点位置。

s103:人形机器人在该运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据该调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出。

其中,该人形机器人采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,可以包括:

人形机器人采用kinect(体感)方式,获取人体的运动过程;

根据该获取到的人体的运行过程数据,提取人体的骨胳关节点模型;

根据该提取到的人体的骨胳关节点模型,采用绘制方式绘制仿人体骨胳关节点运动轨迹数据。

其中,该人形机器人根据该调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出,可以包括:

人形机器人根据该调取出的仿人体骨胳关节点运动轨迹数据,模拟抓取骰子和掷出骰子的过程,并根据该模拟抓取骰子和掷出骰子的过程,抓取骰子并掷出。

在本实施例中,可以采用kinect体感方式,内部可以嵌入深度传感器,其原理是使用红外线向外投射,再计算出投射的红外线被反射回传感器的时间,通过红外线经过的时间来计算出距离,即tof(timeoflight,飞行时间测距)算法来获取物体的深度信息。

在本实施例中,由于kinect摄像机获取的图片是带有深度信息的,所以kinect的相机空间使用的是3d(3dimensions,三维)空间坐标,可以定义如下:

(1)kinect的红外相机中心是kinect坐标空间的原点。

(2)kinect的摄像机投射方向的正左方是kinect坐标空间的x轴方向。

(3)kinect的摄像机投射方向的正上方是kinect坐标空间的y轴方向。

(4)kinect的摄像机投射方向的正前方是kinect坐标空间的z轴方向。

请参见图2,图2为本发明基于人形机器人的掷骰子方法一实施例中人形机器人空间坐标系统的一举例示意图。如图2所示,人形机器人的空间坐标系,可以定义为:

(1)坐标原点(x=0,y=0,z=0)位于直立状态下两脚掌中心在地面连线的中点。

(2)人形机器人面朝的正前方为坐标空间的x轴方向。

(3)人形机器人面朝的正左方为坐标空间的y轴方向。

(4)人形机器人面朝的正上方为坐标空间的z轴方向。

(5)角度正方向定义为x轴逆时针旋转的角度。

在本实施例中,人形机器人创建变量时可以无需声明数据格式的便捷性。所以在调用kinect获取图片信息时,将图片的坐标信息重新按顺序导入到对象中,即kinect的x轴y轴z轴分别为人形机器人的的-y轴z轴-x轴,并且以人体胸口位置点为坐标原点,重新建立一个坐标系,在该新建的坐标系上来计算关节角度。

在本实施例中,可以采用空间向量方式来计算关节角度,该空间向量方式提供了关于刚体运动状态或施加在其上的力的完整描述。与欧氏向量提供的关于运动状态和受力的完整描述是一样的。特别的,空间向量将刚体运动或力的线性运动和旋转运动两个方面结合成了一个单独的量。

在本实施例中,当关节角度运行到特殊情况时,可以通过例如滤波器的方式调整来解决,使得代码工作量降低。在对单个刚体或刚体系统进行运动学及动力学的描述、分析和计算的时候,空间向量可以提供简洁的符号、更少的未知数、更少的方程。

在本实施例中,可以通过人形机器人逆运动学的矩阵变换方式也可以得到合适的关节角度。由于抓取目标的位置是固定的,抓取时人肢体末端是和骰子重合的,所以可以通过逆运动学求解来得出各个关节的角度。具体原理如下:

假设右肩前关节(rshoulderpitch)为矩阵r11,右肩滚动关节(rshoulderroll)为r12,右肘滚动关节(relbowyaw)为r13,右肘前关节(relbowpitch)为px。因为在逆运动学中手腕关节对于求解无意义,故可省略其变换矩阵。

其中:

r11=c1(c2c3c3+s2s4)-(c4s1s3);

r12=-c1c2s3-c3s1;

r13=c1(-c2c3s4+c4s2)+s1s3s4;

px=c1s2d3;

r21=s1(c2c3c3+s2s4)+c2c4s3);

r22=-c2s1s3+c3c1;

r23=s1(-c2c3s4+c4s2)-c1s3s4;

py=s1s2d3;

r31=c2s4-c3c4s2;

r32=s2s3;

r33=c3s2s4+c2c4;

pz=c2d3等。

其中,矩阵a可以左乘来得到第一个需要的肩膀关节,进而从各个关节的角度值使机器人的手置于卡式坐标系中的位置。

在本实施例中,空间向量方式的优点是能精确反应人体骨骼的正确运动轨迹,实时性好。

在本实施例中,逆运动学的矩阵变换方式的优点是计算准确,因为骰子是静止放置,而计算过程与骰子的位置有关,不会被人身体的晃动所干扰到。

请参见图3,图3为为本发明基于人形机器人的掷骰子方法一实施例中采用体感方式对人体的骨胳关节点模型进行编号的一举例示意图。如图3所示,要在kinect的信息空间中提取需要的自由度,重新编写序号,使之对应到人形机器人上。

请参见图4,图4为为本发明基于人形机器人的掷骰子方法一实施例中采用kinect动作捕捉绘图效果的一举例示意图。如图4所示,可以在提取好所需的骨骼关节点后,需要将保留的骨骼关节点按照顺序连线,就可以重新建立起一个能与人形机器人各个关节相对应的骨骼模型。通过opencv(opensourcecomputervisionlibrary,开源计算机视觉库)的可视化窗口可以比较直观的看出肢体在空间中的运动轨迹。

在本实施例中,测距算法的精准度,直接决定了人形机器人抓取骰子过程顺利与否。虽然kinect摄像机带有深度摄像头,能输出带有深度信息的图像。但是官方给出的文档中明确规定了kinect在运行时每分钟移动位置的次数不得超过6次。所以将kinect摄像机安装在机器人身上的想法比较不现实,对骰子的测距可以由通过人形机器人摄像机获取的图片来计算。

在本实施例中,可以采用双目测距方式测人形机器到骰子的距离,对于双目测距算法,可以理解为:相同一个物体,在两个同向平行的摄像头中所成的像是不同的,不同之处在于物体在图像中的位置相对于中心的偏移方向不同,即左边摄像机拍出的图像中物体位置靠右,右边摄像机拍出的图像中物体位置靠左。然后依据两个偏移量的长度与相似三角形原理来计算出物体与两摄像头中点的距离。

请参见图5,图5为本发明基于人形机器人的掷骰子方法一实施例中采用双目测距方式测人形机器到骰子的距离的一举例示意图。如图5所示,f是每个摄像头本身的焦距,即传感器与镜头之间的距离。t则是两个摄像头的镜头之间的距离。这些参数都是定值。而d是不确定的,d是一个物体在分别两个传感器上所成的像,也就是xl和xr之间的距离,是个变量。所以只要获得d的值,之后再根据相似三角形原理,就可以求出z。

在本实施例中,还可以采用单目测距方式测人形机器到骰子的距离,单目测距方式的原理比双目测距算法较好理解,可以参照小孔成像模型。

请参见图6,图6为本发明基于人形机器人的掷骰子方法一实施例中采用单目测距方式进行棋盘标定的一举例示意图。如图6所示,单目测距方式的优点是原理简单,易于代码实现,计算量小,反应速度快,但存在着致命缺点就是准确度极低,因为人形机器人的相机像素较低,在采用单目测距方式进行棋盘标定时,如图6所示,棋盘的边缘畸变非常严重。

在本实施例中,双目测距方式的优点是定位较为准确,单目测距方式的优点是原理简单,易于代码实现,计算量小,反应速度快。

在本实施例中,由光的成像原理可以得知,物体离摄像头越近,物体在视野中的成像面积就越大。于是,只要确定好当机器人位于能抓取骰子的位置时,骰子在机器人的视野中的像素面积大小,就能将这个像素面积设为阈值,只要在机器人视野中物体所占的像素面积没达到这个阈值就继续往前走,当达到阈值时则停下。

在本实施例中,人形机器人在逐渐靠近骰子的过程中,骰子在平面图像中的形状会逐渐发生变化。但是总体上还是可以将这种变化视为一个线性增长的过程。由于人形机器人两个摄像头的角度不同,骰子的成像形状也不同。启动两个相机并设定好各自的阈值,可以在一定程度上修正误差。该算法的优点是不需要计算出准确距离所以计算量小,实时性较优,响应快。

在本实施例中,在调取了人形机器人摄像机中的原始图片之后,需要对图片进行一系列处理才能获得一个较好的骰子轮廓。而较高的轮廓精确度则会直接影响到测距工作的进行。对原始图片进行二值化处理后再转化成灰度图。这一步骤非常关键,先对图片进行二值化处理再转化灰度图可以最大限度的降低环境和光线造成的图像噪声。

请参见图7,图7为本发明基于人形机器人的掷骰子方法一实施例中对转化成灰度图像后的骰子的图像去除噪声后的一举例示意图。如图7所示,对转化成灰度图像后的骰子的图像中存在的高频噪声进行处理,降低图像变化率,使图像变得平滑。过程中可以用到低通滤泼器来对图片进行模糊化处理,例如可以使用9x9内核的低通滤波器进行图像处理,之后再对模糊的图像进行二值化,经过测试发现,在实验室环境下的图像梯度可以设置为200,将高于这个梯度的像素都可以设置为白,高于此梯度的像素可以设置为黑,这样处理有助于更加直观的暴露出骰子的面积。

请参见图8,图8为本发明基于人形机器人的掷骰子方法一实施例中采用多级边缘检测算法对经平滑图像后的骰子的图像进行边缘检测的一举例示意图。如图8所示,获得最佳阈值之后输入canny算子函数中,使用canny算子进行边缘检测。canny边缘检测算法是一个多级边缘算法,因其低错误率、高定位性、最小响应的良好表现被普遍认为是边缘检测的最优算法。在opencv中,canny边缘检测函数原型为:canny(image,threshold1,threshold2,[edges])。其中,image是待处理的图像。threshold1、threshold2是两个自行设定的阈值,threshold2较大,用来控制强边缘的初始分割,但经过threshold2检测出来的边缘会显得断断续续,此时就要由较小的threshold1阈值来将间断的边缘连接起来。

在本实施例中,可以选定sobel(sobeloperator,索贝尔算子)算子的矩阵大小,canny函数会对滤波后图像中的每个像素计算其梯度的大小和方向,而sobel算子的矩阵可以作为对x反向和y方向偏微分的一阶近似的矩阵,由此得出每个像素的梯度大小与方向,进而找到每个像素点的邻接像素。

请参见图9,图9为本发明基于人形机器人的掷骰子方法一实施例中对经边缘检测后的骰子的图像进行形态学处理后的一举例示意图。如图9所示,如果经过canny检测之后边缘线条仍然有不连续的像素点,则需要进行形态学上的处理,分别执行预设次数的图像腐蚀与图像膨胀,使边缘连线连贯且自然。

请参见图10,图10为本发明基于人形机器人的掷骰子方法一实施例中对骰子进行轮廓绘制后的一举例示意图。如图10所示,需要通过opencv的findcontours()函数来找出待处理图片中的轮廓。函数原型可以为:findcontours(image,mode,method)returnimage,cnts,hierarchyimage为待处理图片,该函数只接受二值化图片。mode参数提供了四个途径来检测图像中的轮廓,四个参数如下:

cv_retr_external:省略大轮廓中的小轮廓,保留最外围大轮廓。

cv_retr_list:检测图像中存在的所有轮廓,但不包含轮廓间的继承与包含关系。

cv_retr_tree:检测图像中存在的所有轮廓,并且保留轮廓间的继承与包含关系,当选中此模式时返回的hierarchy参数才有意义。

cv_retr_ccomp:图像中存在的所有轮廓都将被检测,保留在轮廓之间继承与包含关系,与上个参数不同的是继承与包含关系只有两层。

method通过两个参数来选取不同的轮廓表示方法:

cv_chain_approx_none:识别轮廓的所有像素点并储存。

cv_chain_approx_simple:只对图像中的线段的起始点信息保留,线段需为对角线、水平线或垂线。

cv2.findcontours()函数返回两个值和一个可选值hierarchy,一个是检测到的轮廓,另一个是保留的轮廓信息。函数返回的信息都保存在numpy列表中,格式(type)为np.array形式呈现。在本实施例中,可以优选选择cv_retr_external,cv_chain_approx_simple,因为需要获得的是最大的骰子轮廓。

在本实施例中,可以通过drawcontours()函数将上述描绘出的图像中的轮廓过行绘制。其中,该drawcontours()函数的原型可以为:cv2.drawcontours(image,cnt,contourid,color),image是选取在哪张图像上进行描绘轮廓,cnt是contours的缩写,是findcontours()函数返回的一个列表,列表中包含轮廓信息,contourid是对第二个参数cnt列表的选择,可指定描绘cnt列表中的任何一个轮廓,当contourid为-1时,程序将描绘所有的轮廓。color参数输入rgb(红、绿、蓝三色)形式的颜色就可以指定轮廓线条的颜色。此外该函数还可以通过参数调整轮廓宽度等,在此不再赘述。

在本实施例中,可以应用opencv的contourarea()函数。输入检测得到的cnts参数即可得到骰子轮廓圈得的区域的像素面积。

请参见图11,图11为本发明基于人形机器人的掷骰子方法一实施例中彩采用kinect动作捕捉的具体实现过程的一举例示意图。如图11所示,该kinect动作捕捉的具体实现过程,可以包括:

(1)、kinect开始工作。

(2)、kinect分析视野中的人体的关节点并对骨骼点进行追踪。

(3)、返回关节点在kinect空间中的坐标信息。

(4)、建立坐标系,确定坐标系原点为两肩中点shoulderspine,x轴方向为从左肩指向右肩,y轴方向为shoulderspine垂直向下,z轴为从shoulderspine指向kinect摄像头。

(5)、kinect筛选与人形机器人相对应的关节点。

(6)、用线条代替骨骼,连接关节点绘制出骨骼框架。

(7)、求出关节点的在新坐标系的位置,通过位置相减得到方向向量,再用方向向量进行计算得出向量间的角度,即为关节角度。对关节角度设定安全范围,确保不损坏机器人。

(8)、设定好人形机器人的ip地址和端口号,连接alproxy,并将角度传输给alproxy,alproxy通过角度来使机器人运动。设定好关节转动的速度,避免机器人损伤。

(9)、运行程序,使机器人模仿人体动作。

(10)、创建空列表,将运行过程中的关节角度保存在列表内,可以设定每隔1秒保存一次,减少误差。

在本实施例中,由以上可知,kinect动作捕捉的主要工作,可以包括:建立新的kinect与人形机器人坐标系新的映射关系、筛选需要的自由度加以处理、设置合适的关节范围。

请参见图12,图12为本发明基于人形机器人的掷骰子方法一实施例中进行opencv图像处理的具体实现过程的一举例示意图。如图12所示,该opencv图像处理的具体实现过程,可以包括:

(1)、获取图像前需要先使程序连接上人形机器人,通过连接alproxy,调用其中的视觉模块,选择切换那个摄像头来完成。分为连接人形,调取人形的图像并修改图像格式两步。

(2)、二值化图像:可以通过opencv的threshold()函数完成,但函数中的参数要因环境光线做出些许调整,然后再转化成灰度图。

(3)、首先使用低通滤泼器平滑图像例如9x9内核,使图像中的高频噪声平滑,降低图像变化率,再对图像二值化,例如梯度图像中所有小于100的像素都可以被设置为0(黑色),大于100的全部可以设置为255(白色)。

(4)、在用canny算子进行边缘检测时,可以使用高斯滤波器对图像进行处理,高斯内核可以选择(3,3),然后再对平滑处理后的图像用canny算子进行边缘检测,通过另外编写的测试canny函数阈值的程序得出当前环境下的最优阈值。

(5)、经过canny算子检测的轮廓线有断断续续的现象,会对下一步的轮廓绘制有所影响,对轮廓线进行形态学处理,可以分别执行预设次数如4次图像腐蚀与图像膨胀,使轮廓线闭合,平滑。

(6)、经过上述的图像处理,得到一个较为精确的骰子轮廓,检测这个轮廓,并将这个轮廓绘制在原图上。

(7)、上一步第(6)步中轮廓检测函数会返回轮廓大小与属性,可以通过对轮廓信息的提取,计算出轮廓的像素面积,同时考虑到可能存在些许噪点的干扰,函数中选择max()来或者面积最大的函数。

可以发现,在本实施例中,人形机器人可以在该运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据该调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出,能够实现人形机器人能够自动掷骰子。

进一步的,在本实施例中,人形机器人当关节角度运行到特殊情况时,可以通过例如滤波器的方式调整来解决,使得代码工作量降低,在对单个刚体或刚体系统进行运动学及动力学的描述、分析和计算的时候,空间向量可以提供简洁的符号、更少的未知数、更少的方程。

进一步的,在本实施例中,人形机器人可以采用空间向量方式的优点是能精确反应人体骨骼的正确运动轨迹,实时性好。

进一步的,在本实施例中,人形机器人可以采用逆运动学的矩阵变换方式的优点是计算准确,因为骰子是静止放置,而计算过程与骰子的位置有关,不会被人身体的晃动所干扰到。

进一步的,在本实施例中,人形机器人可以采用双目测距方式的优点是定位较为准确,人形机器人采用单目测距方式的优点是原理简单,易于代码实现,计算量小,反应速度快。

进一步的,在本实施例中,人形机器人可以先对图片进行二值化处理再转化灰度图可以最大限度的降低环境和光线造成的图像噪声。

进一步的,在本实施例中,人形机器人采用的canny边缘检测算法是一个多级边缘算法,因其低错误率、高定位性、最小响应的良好表现被普遍认为是边缘检测的最优算法。

本发明还提供一种人形机器人,能够实现人形机器人能够自动掷骰子。

请参见图13,图13为本发明人形机器人一实施例的结构示意图。本实施例中,该人形机器人130为上述实施例中的人形机器人,该人形机器人130包括信息处理系统131、控制系统132和执行系统133。

该信息处理系统131,用于获取人形机器人到骰子的距离信息。

该控制系统132,用于根据该获取到的距离信息,运动到距离骰子合适的地点位置。

该执行系统133,用于在该运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据该调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出。

可选地,该信息处理系统131,可以具体用于:

采用摄像头摄像方式,获取骰子的图像;

将该获取到的骰子的图像的格式调整成构造函数形式;

将该调整成构造函数格式后的骰子的图像先进行二值化处理再转化成灰度图像;

将该转化成灰度图像后的骰子的图像先去除噪声再平滑图像;

采用多级边缘检测算法算子对该平滑图像后的骰子的图像进行边缘检测;

对该经边缘检测后的骰子的图像进行形态学处理包括图像膨胀、图像腐蚀等;

对该经形态学处理后的骰子的图像进行轮廓检测及绘制轮廓;

计算该绘制的轮廓所包含图像的像素面积;

根据该计算得到的像素面积,获取其到骰子的距离信息。

可选地,该控制系统132,可以具体用于:

根据该获取到的距离信息,确定能抓取到骰子的位置信息,根据该确定的能抓取到骰子的位置信息确定骰子在该位置上的像素面积大小,并将该确定的骰子在该位置上的像素面积大小设置为像素阈值,在运动过程中只要骰子在当前位置上的像素面积大小没有达到该像素阈值则继续往前运动,直到运动到骰子在当前位置上的像素面积大小达到该像素阈值则停下,运动到距离骰子合适的地点位置。

可选地,该执行系统133,可以具体用于:

采用体感方式,获取人体的运动过程;

根据该获取到的人体的运行过程数据,提取人体的骨胳关节点模型;

根据该提取到的人体的骨胳关节点模型,采用绘制方式绘制仿人体骨胳关节点运动轨迹数据。

可选地,该执行系统133,可以具体用于:

根据该调取出的仿人体骨胳关节点运动轨迹数据,模拟抓取骰子和掷出骰子的过程,并根据该模拟抓取骰子和掷出骰子的过程,抓取骰子并掷出。

该人形机器人130的各个单元模块可分别执行上述方法实施例中对应步骤,故在此不对各单元模块进行赘述,详细请参见以上对应步骤的说明。

可以发现,以上方案,人形机器人可以在该运动到的地点位置调取所存储的采用绘制方式绘制的仿人体骨胳关节点运动轨迹数据,并根据该调取出的仿人体骨胳关节点运动轨迹数据抓取骰子并掷出,能够实现人形机器人能够自动掷骰子。

进一步的,以上方案,人形机器人当关节角度运行到特殊情况时,可以通过例如滤波器的方式调整来解决,使得代码工作量降低,在对单个刚体或刚体系统进行运动学及动力学的描述、分析和计算的时候,空间向量可以提供简洁的符号、更少的未知数、更少的方程。

进一步的,以上方案,人形机器人可以采用空间向量方式的优点是能精确反应人体骨骼的正确运动轨迹,实时性好。

进一步的,以上方案,人形机器人可以采用逆运动学的矩阵变换方式的优点是计算准确,因为骰子是静止放置,而计算过程与骰子的位置有关,不会被人身体的晃动所干扰到。

进一步的,以上方案,人形机器人可以采用双目测距方式的优点是定位较为准确,人形机器人采用单目测距方式的优点是原理简单,易于代码实现,计算量小,反应速度快。

进一步的,以上方案,人形机器人可以先对图片进行二值化处理再转化灰度图可以最大限度的降低环境和光线造成的图像噪声。

进一步的,以上方案,人形机器人采用的canny边缘检测算法是一个多级边缘算法,因其低错误率、高定位性、最小响应的良好表现被普遍认为是边缘检测的最优算法。

在本发明所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的部分实施例,并非因此限制本发明的保护范围,凡是利用本发明说明书及附图内容所作的等效装置或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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