一种基于体感技术的机器人离线示教编程系统及方法
技术领域
本发明属于机器人离线示教编程领域,具体涉及一种基于体感技术的机器人离线示教编程系统及方法。
背景技术
以现有的人与机器人间的交互方式,为使机器人按照人的意图进行工作,必须预先向机器人发出指令来规定机器人所要完成的动作以及任务的具体内容,这一过程称为机器人示教或对机器人进行编程。
机器人示教主要包括在线示教和离线编程。在线示教指通常所说的手把手示教,由人直接扳动机器人的手臂对机器人进行示教,如示教盒和示教和操作杆示教。在这种示教中,为了示教方便以及获取信息的快捷而准确,操作者可以选择在不同的坐标系下示教,例如,可以选择关节坐标系,直角坐标系以及工具坐标系或用户坐标系下进行示教。在线示教具有示教过程简单,不需要环境模型;对实际的机器人进行示教时,可以修正机械结构带来的误差等优越性,但也存在一定的技术问题。如机器人的在线示教编程过程繁琐、效率低;示教的精度完全靠示教者的经验目测决定,对于复杂路径难以取得令人满意的示教果;对于一些需要根据外部信息进行实时决策的应用无能为力。
离线编程可以克服在线示教的局限性。离线编程又称离线示教,离线示教与在线示教不同,操作者不对实际作业的机器人直接进行示教,而是脱离实际作业环境生成示教数据,间接地对机器人进行示教。在离线编程中,通过使用计算机内存储的机器人模型(CAD模型),不要求机器人实际产生运动,便能在示教结果的基础上对机器人的运动进行仿真,从而确定示教内容是否恰当及机器人是否按照示教者期望的方式运动。
机器人离线示教通过机器人离线编程系统实现,离线编程不仅要在计算机上建立起机器人系统的物理模型,而且要对其进行编程和动画仿真,以及对编程结果后置处理。一般说来。机器人离线编程系统包括以下一些主要模块:传感器、机器人系统CAD建模、离线编程、图形仿真、人机界面以及后置处理等。其中编程模块一般包括机器人及设备的作业任务描述(包括路径点的设定)、建立变换方程、求解未知矩阵及编制任务程序等。在进行图形仿真以后,根据动态仿真的结果,对程序做适当的修正,以达到满意效果,最后在线控制机器人运动以完成作业。传感器模块的主要作用为减少仿真模型与实际模型之间的误差,增加系统操作和程序的可靠性,提高编程效率。后置处理的主要任务是把离线编程的源程序编译为机器人控制系统能够识别的目标程序。即当作业程序的仿真结果完全达到作业的要求后,将该作业程序转换成目标机器人的控制程序和数据,并通过通信接口下装到目标机器人控制柜,驱动机器人去完成指定的任务。
目前获取机器人运动轨迹的传统方式一般为在线示教或者离线编程,过程极为繁琐,而且其示教或编程方式较为复杂,示教或编程识别精度和范围有限,示教效率不高。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于体感技术的机器人离线示教系统及方法,其通过优化的采集识别处理和模块搭建,从而能够大幅提高识别范围和识别精度,提高示教效率和效果。
为实现上述目的,按照本发明的一个方面,提供一种基于体感技术的机器人离线示教系统,其包括空间点位采集模块,数据处理模块和离线编程模块,其中,
上述空间点位采集模块用于完成机器人的示教过程,其通过体感设备识别和捕捉人体肢体动作,获得肢体运动轨迹中的空间点位,以提供给数据处理模块;
上述数据处理模块用于对所述空间点位进行滤波和光顺处理,从而获得适合机器人运动的运动轨迹,并将处理后的空间点位坐标提供给离线编程模块;
所述离线编程模块用于对运动轨迹中的空间点的坐标进行坐标变换和后置处理,从而生成机器人可以执行的代码,以用于输出至机器人实现示教。
作为本发明的进一步优选,所述空间点位采集模块通过骨骼点识别方式进行特征点位的采集。
作为本发明的进一步优选,所述通过骨骼点识别方式进行特征点位的采集包括:获取人体左手手部的三个骨骼的空间点位坐标与体感设备视野内RGB彩色图像,以获取到的RGB图像为背景,在RGB图像上画出骨骼点以及骨骼点间的连线,以用于实时生成可视化图像。
作为本发明的进一步优选,所述空间点位采集模块通过图像识别的方式进行特征点位的采集。
作为本发明的进一步优选,所述通过图像识别的方式进行特征点位的采集包括:
以球体作为手持外设装置识别对象,使得各个球心处的位置作为特征点的位置;
通过体感设备获取得到RGB彩色图像及其深度图像;
将得到的RGB图像转换为二进制灰度图像,识别灰度图像中的所有圆形轮廓,并获得每个轮廓的圆心在RGB图像中的位置;
在二进制灰度图像中识别轮廓并获得各个球心坐标的位置,然后转换到在RGB图像中某一像素的位置,通过判断RGB图像中该像素的RGB数值即各球的颜色便可辨别出各个特征点。
作为本发明的进一步优选,所述识别灰度图像中的所有圆形轮廓过程中,先获取圆心在RGB彩色图像中的RGB数值,通过筛选RGB数值,来对得到的所有轮廓进行筛选并分辨出不同颜色彩球球心的空间点位坐标。
作为本发明的进一步优选,所述数据处理模块进行处理的过程包括:
对采集到的空间点位进行坐标,将分离后的x,y,z坐标进行曲线拟合;
将拟合后的曲线离散为同等数量的坐标点;
将离散后的各个坐标点结合,得到数据处理后的空间坐标点。
作为本发明的进一步优选,所述数据处理模块进行处理的过程包括:
对采集到的空间点位进行坐标,将分离后的x,y,z坐标分别进行中值滤波;
将滤波后的坐标进行曲线拟合;
将拟合后的曲线离散为同等数量的坐标点;
将离散后的各个坐标点结合,得到数据处理后的空间坐标点。
作为本发明的进一步优选,所述离线编程模块中坐标转包括:
(1)首先将Kinect坐标系中的三组坐标值转换为用户坐标系下的坐标值;
(2)将工件坐标系下的坐标转换为机器人基础坐标系下的坐标,求得各点的欧拉角。
按照本发明的另一方面,提供一种利用上述系统进行离线示教的方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)本发明的机器人离线示教编程方法,利用体感技术代替传统的示教盒和操作杆,结合了在线示教与离线编程的优越性,极大的提高示教效率,同时示教过程在离线条件下完成,减少因示教过程对机器人工作时间的占用,降低示教成本。
(2)本发明的示教方法采用体感技术,极大地提高示教效率和示教的便捷性,示教过程中只用通过体感设备识别人体肢体的运动便可快速的得到轨迹中的点位。
附图说明
图1是按照本发明一个实施例的系统中体感设备空间点位采集示意图;
图2是按照本发明一个实施例的系统中采集左手手部骨骼点的示意图;
图3是按照本发明一个实施例的系统中的空间点位采集模块逻辑架构示意图;
图4是按照本发明一个实施例的系统中的手持外设的结构示意图;
图5是按照本发明另一个实施例的系统中的空间点位采集模块的逻辑架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1为按照本发明一个实施例的系统中体感设备空间点位采集示意图。
体感技术是一种全新的人机交互方式,他利用人的多种动作通道以并行的,非精确的方式与计算机进行交互,可以提高人机交互的自然性和效率。技术核心是对人体肢体动作的感知。人们可以很直接地使用肢体动作,与周边的装置或环境互动,而无需使用任何复杂的控制设备,便可让人们身历其境地与内容进行互动。本实施例中优选的体感设备为Kinect。
示教中为确定机器人末端执行元件的位姿,就必须确定末端执行元件的位置坐标与末端执行元件在该位置处的运动法矢与运动切矢。为获得这三要素,就需在一个采样周期中同时采集空间中的三个坐标点。如图1所示,其中1为末端执行元件的位置坐标,点2与点1的连线作为机器人末端执行元件在该位置时的运动法矢N,点3为辅助点,它与前两点所构成平面的法线作为该位置的运动切矢τ。
在空间点位采集模块为准确确定机器人末端执行元件的位姿,须利用体感设备采集空间中的三个特征点位。在本实施例中,采集方式可以为两种,分别是骨骼点识别的方法和图像识别的方法。
在一个实施例中,采用骨骼点识别方法进行特征点位的采集。具体地,首先应确定所识别的骨骼点,骨骼点的选取以方便工人示教和突出体感示教的优越性为原则。例如可选择如附图2所示的左手手部的三个骨骼点作为体感设备(例如Kinect)所要识别的骨骼点。左手手部的三个骨骼点只是适用该发明的采集的一种组合,但本发明中并不限于这三个骨骼点。
利用骨骼点识别方法的空间点位识别模块的逻辑架构分为两层,如图3所示。第一层是Kinect层,本实施例中优选可以利用微软提供的KinectSDK中的API获取人体左手手部的三个骨骼的空间点位坐标与Kinect视野内RGB彩色图像信息。第二层是应用层,负责把在Kinect层获取到的骨骼点的空间点位坐标与RGB彩色图像信息分成两个独立的线程分别进行处理,线程1是以获取到的RGB图像为背景,利用例如OPENCV绘图引擎在RGB图像上画出骨骼点以及骨骼点间的连线,可以用于提供一个实时图像的可视化效果。线程2是记录左手手部三个骨骼点的空间点位坐标并在接收到用户指令后将记录到的所有空间点位坐标以文本文件的形式保存在本地,以供后续过程使用。
在该实施例中,采用骨骼点识别方法进行特征点采集中,在一个采集周期包括以下三个步骤:
(1)Kinect识别人体手部的三个骨骼的空间点位坐标。
(2)将Kinect所识别到的骨骼点的空间点位坐标以文本文件的形式保存。
(3)根据Kinect所识别到的空间点位坐标利用OpenCV在软件界面绘图。
在另一个实施例中,利用图像识别的方法进行特征点采集。该实施例中采集前应首先设计所识别的手持外设。手持外设装置应具备以下特点:(1)Kinect识别方便。Kinect可以快速地在RGB图像信息中分辨出手持外设装置中的特征轮廓。(2)方便示教者使用。该手持外设装置应体积小巧,使用时运动灵活。(3)特征点可分辨。各个特征点功能不同,在每个采集周期应按顺序记录特征点的位置。
根据以上特点,本实施例中手持外设装置为方便Kinect识别,选择球体作为识别对象。球体以不同的视角观察,体现在二维图像中的轮廓始终为圆形,这样避免示教过程中因手持外设相对Kinect角度的变化而使在二维图像上的轮廓发生变化,降低轮廓识别难度。在计算机图像学中,圆形轮廓的识别算法已相当成熟,识别效率和精度可达到较高的水平。手持外设中各个球心处的位置即为特征点的位置。轮廓识别过程需要将从Kinect获取到的RGB图像转换为二进制灰度图像,在灰度图像中为了辨别出各个轮廓可以通过轮廓大小或两球之间的相对位置或球的颜色进行判断。如采用轮廓大小的方法进行辨别,就需要在手持外设中安装三个大小不同的球。如采用两球之间的相对位置进行辨别需要在获取球心坐标后进行两两球心之间距离的计算通过距离比较对彩球进行分辨。进行轮廓识别的二进制灰度图像是由RGB图像等画幅转换得到的,可以在二进制灰度图像中识别轮廓并获得各个球心坐标的位置,然后转换到在RGB图像中各球心所在像素的位置,通过判断RGB图像中该像素的RGB数值即各球的颜色便可辨别出各个特征点。本实施例中,手持外设装置如附图4所示,该手持外设外形设计和彩球颜色的选取只是适用该发明的一种样式,但本发明并不限于该该样式。
该实施例中,利用图像识别方法的空间点位模块的逻辑架构如附图5所示。第一层是Kinect层,优选利用微软提供的KinectSDK中的API获取得到RGB彩色图像与深度图像。第二层是应用层,应用层负责把在Kinect层中获取到的RGB彩色图像信息转换为二进制图像。在二进制图像中采用霍夫变换识别图像中所有的圆形轮廓,并获得每个轮廓的圆心在RGB图像中的位置。由于识别过程中存在较多其他异常圆形轮廓的干扰,为过滤异常轮廓,具体实施中首先获取圆心在RGB彩色图像中的RGB数值,通过筛选RGB数值,来对得到的所有轮廓进行筛选并分辨出不同颜色彩球球心的空间点位坐标。在筛选完成后,分别用与彩球相同的颜色在图像中描绘出来。
为获取各个彩球球心的空间点位,可以在所获取的RGB图像的基础上再获取深度图像信息。首先在RGB图像可以得到彩球球心空间点位的x,y的坐标值,然后将RGB图像信息与深度图像信息进行融合,获取球心空间点位的z坐标值。最终通过Kinect坐标系中x,y,z坐标值来确定球心在空间中的位置。
采用上述方式的数据输出过程不同于采用识别骨骼点的方式。采用识别骨骼点的方式时,每个采集周期均能输出三组坐标。但采用图像识别的方式,会存在一个采集周期中输出少于三个坐标值的情况,在这种情况下便不能确定采集时刻机器人末端的位姿。为避免此种情况发生,需要在输出时做一次判断,当同时采集到三组坐标值时本次输出作为一次有效输出并记录,否则为无效输出,跳过本周期的记录过程,进入下一采集周期。
在本实施例中,图像识别方法在一个采集周期包括以下八个步骤:
(1)利用Kinect获取RGB图像信息;
(2)利用Kinect获取深度图像信息;
(3)将RGB图像转换为灰度图像;
(4)在灰度图像中进行霍夫变换识别圆轮廓;
(5)根据RGB图像信息对识别到的全部圆轮廓进行筛选;
(6)将RGB图像与深度图像进行融合获得手持外设彩球球心的空间点位坐标;
(7)将Kinect所识别到的彩球球心的空间点位坐标以文本文件的形式保存;
(8)根据Kinect所识别到的空间点位坐标利用OpenCV在软件界面绘图;
数据处理模块负责对体感设备记录得到的原始空间点位进行滤波和光顺处理,获得适合机器人运动的运动轨迹。在数据处理完成后将处理后的空间点位坐标提供给离线编程模块。
数据处理模块根据空间点位采集方法的不同选用不同的数据处理算法。对采取骨骼点识别方法所采集到的空间点位坐标进行分析得到整个采集过程中均有连续的噪声点,因此利用骨骼点识别的方法采集空间点位时数据处理的主要任务是消除连续的噪声点以对采集到的运动轨迹进行光顺。为消除连续的噪声点,采用最小二乘法多项式拟合对采集到的原始空间点位进行拟合。
在一个实施例中,数据处理过程分为以下步骤:
(1)对采集到的空间点位进行坐标分离,将分离后的x,y,z坐标进行曲线拟合;
(2)将拟合后的曲线离散为同等数量的坐标点;
(3)将离散后的各个坐标点结合,得到数据处理后的空间坐标点。
对采取图像识别方法所采集到的空间点位坐标进行分析得到相比骨骼点识别单次识别精度有较大提高,但存在一定数量的孤立噪声点。因此采数据处理的主要任务是对孤立的噪声点进行中值滤波,滤波之后为满足机器人的运动要求需要对轨迹进行光顺处理,这里依然采用最小二乘法多项式拟合的方法,先将滤波后的曲线拟合为一条高次多项式曲线,然后再离散为各个坐标点。
在一个实施例中,数据处理过程分为以下步骤:
(1)对采集到的空间点位进行坐标分离,将分离后的x,y,z坐标分别进行中值滤波;
(2)将滤波后的坐标进行曲线拟合;
(3)将拟合后的曲线离散为同等数量的坐标点;
(4)将离散后的各个坐标点结合,得到数据处理后的空间坐标点。
数据处理模块可以集成到离线示教编程系统中,例如通过C++与Matlab混编的方式,采集过程结束后自动调用Matlab引擎对采集到的数据根据采集方式的不同按照预定的算法完成整个数据处理过程。
离线编程模块负责对处理后的轨迹中的空间点为坐标进行坐标变换和后置处理,生成机器人可以执行的代码,作为基于体感技术的离线示教编程系统的最终输出。离线编程模块需要将Kinect坐标系下的一系列空间点位坐标转换为机器人坐标系下的坐标。机器人坐标系分为基础坐标系,关节坐标系,用户坐标系,工具坐标系。
在一个实施例中,机器人的坐标转换分为两个步骤:
(1)首先将Kinect坐标系中的三组坐标值转换为用户坐标系下的坐标值;
(2)将工件坐标系下的坐标转换为机器人基础坐标系下的坐标,求得各点的欧拉角。
在完成坐标转换后根据坐标转换的结果经后置处理转换为机器人可以识别的代码。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。