机器人测试(共5篇)
机器人测试 篇1
据英国《每日邮报》网站报道, 美国波士顿动力学工程公司打造的一款名叫PETMAN的仿生测试机器人正在接受各项性能的检测, 待通过“实战演习”之后, 将正式投入使用。PETMAN使用了当前最为先进的机器人技术, 它能像真人一样活动, 能够模拟身穿防护服的士兵在真实环境下的情景。PETMAN通过与之相连接的电线获得所需电力。以前实验用机器人肢体活动有限, 需要通过机械控制, 而PETMAN在无外力支持的情况下, 能够维持平衡, 完成走路、弯腰以及应对有毒物质等一系列动作。除了灵活度较高之外, PETMAN还能通过控制温度、湿度和出汗量来模拟人体生理现象, 以期达到更真实的测试效果。目前, PETMAN仿生测试机器人正在接受各项性能的检验。该公司的下一步计划是让PETMAN接受“实战演习”, 检验其是否能在沙林、芥子毒气等环境中运行。
回归测试中机器挑选用例方法研究 篇2
【关键词】机器学习;回归测试;测试用例
1.引言
机器学习(Machine Learning, ML)是一门交叉型学科,它涉及到了多个领域,包括:概率与统计学、高等数学、逼近和凸分析等。机器学习人类的学习过程和学习行为,并且加以计算机的模拟或实现。在机器学习过程中,机器本身了获取新的知识或技能。
在机器学习和人工智能的壮大发展的时代背景,对传统的测试工作提出了一些新的挑战。研究通过机器学习的方法,提升传统的测试工作的效率,进一步的提高整个软件开发活动的劳动生产率。
2.软件测试工程的研究综述
软件测试是用于分析是否程序出现错误的过程,测试使用人工操作或者软件自动运行的方式。每个不同的软件有对自身错误的定义方式:通常是软件需求规格中定义了预期结果。
软件测试分类
1、从是否要变异/执行被测试软件分类,分为静态测试和动态测试。如基于代码审查的单元测试,以及相关代码审查工具,都属于静态测试的范畴。
2、从是否要针对软件结构、算法进行覆盖分类,分为白盒测试和黑盒测试。
3、从测试活动在软件开发过程中所处的不同阶段分类,分为单元测试、集成测试、系统测试、验收测试。
我们这里讨论的“回归测试”是属于系统测试的最后一个阶段。
在修改了旧代码后,需要对这部分子都进行测试,以确保这个代码修订没产生新的错误。在大多数情况下,回归测试占测试周期和测试自由的50%。因此,如果能够制定更有效的回归测试用例,将极大的提升整个测试的效率。
回归测试的流程如下:
(1)找出程序中因为新增需求或者故障解决,而被修改的代码
(2)从总的用例库中,去除掉不再合适的测试用例:这部分用例可能是修改没涉及的功能,也可能是一些系统性稳定性的低优先级的测试用例
(3)针对修改的影响部分,增加一部分相关模块的测试用例
(4)搜索出最基本的测试用例,纳入到测试计划:这部分测试用例保证软件不出现意外的基本功能错误
(5)用上述2~4的测试用例集合,形成回归测试的测试范围
3.现有回归测试用例选择方法
对于一个软件开发项目来说,项目的测试组在实施测试的过程中会将所开发的测试用例保存到“测试用例库”中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。
针对修改部分的测试是我们希望改进的内容
当前是优秀的高级工程师逐一的查看开发提交的各个修改点,根据自己对相关部分的理解,以及对开发修改点的学习。整理出需要回归的测试点:这种方法的主要问题是:
需要优秀的工程师参与,这位工程师必须同时具备:既了解测试组的全部测试用例库,也需要能够理解开发提供的修订说明。
每一轮测试完成后,就需要人工干预,从而产生下一轮的测试用例
替代人工的方法是,为每一轮测试,执行类型level 0/1/2这样的测试用例等级。这样同样会带来冗余的测试用例执行,拉长了测试进度。
4.机器选择测试用例的方法
用机器来模拟和替代人工的挑选测试用例:是在回归测试中引入智能化方法的先决条件。整体按照如下的流程:
首先进行的是为每一条测试用例,生成不同的特征向量。在这个步骤中,将原始的测试用例转变成为“记录每个词出现的频率”的数学符号。最后生成如下表格:
其中行代表不同的测试用例,列代表不同的词语描述,数字代表不同的词语在不同测试用例中出现的词频。
然后,根据TFIDF算法将测试用例生成的文本特征向量,转换成为最终的文本特征向量。
这样,表一通过TFIDF算法最终转化的向量表示如下:
完成了特征词语的选择后,就要给选出的特征词语赋以权重。比如“测试”一词,在每个测试用例中都有出现,那么这个词虽然词频很高:但是“权重为零”——也就是说这个词对于描述不同测试用例的不同特征,无任何帮助。对于本研究方案而言,我们使用TF*IDF算法,计算出精确的统计量,以描述特征词语对于中文内容的重要性。
最后,将代码变更说明收集起来,计算特征向量。同时将测试用例库中的内容也做成特征向量。逐个的拿代码变更的特征向量,与用例库中的特征向量进行对比:选出与代码变更特征向量相识程度最高的。这个特征向量所代表的测试用例,既为下一轮回归测试的输入。在这个模块中,我们选择KNN算法,KNN算法也叫K最近邻算法。抽取测试用例库中的每个文本,逐一的与被测试的向量进行比较,每个比较完成后相似度被计算出来。下一步:找出K个最相似的测试用例。并在此基础上给每个被选出的测试用例打分,取分值大者作为比较结果。具体计算公式为:
其中:d为待测文本(开发提交的代码变更说明)向量,q为训练集中文本(原始的测试用例描述)向量。
这里给出一个具体实践:
开发提交了一个代码变更说明如下
最后机器推荐的相关性最紧密的四个用例,如下表:
可以看出,这四个被挑出来的点,都是对ACL重定向的测试:并且测试覆盖了物理端口、AP端口、SVI端口三种不同的端口类型。
进一步的,对这部分的测试进行基于代码覆盖率的验证,可以证明机器挑选出的四个测试用例,确实的有测试覆盖到开发修订的代码。
5.结束语
让机器来自主选择回归测试用例,然后将这个方法融入到自动化测试框架中。让自动化测试框架具有一定智能,能够“自主的产生回归测试用例的变化集合”。譬如整个ACL模块测试用例个数达到300,如果全部回归费时费力,而人工参与分析则会打断持续的自动化测试过程。新方法使用四个测试用例,就可以对开发修订提交的代码进行覆盖;这样一方面我们减少了回归测试的测试用例个数,另外一方面开发修订的代码,也被完整的测试了。
参考文献
[1]米歇尔(Mitchell,T.M.).机器学习.机械工业出版社,2008-03-01
[2]盧苇,彭雅.几种常用文本分类算法性能比较与分析.湖南大学学报(自然科学版), 2007.
[3]JOACHIMST.A probabilistic analysis of the rocchio algorithm with TFIDF for text categorization Nashville:1997:143-151.
机器人测试 篇3
水生生物依靠自身独特的游动推进模式实现了高速、高效和高机动性的游动运动。模仿生物游动方式的仿生水下机器人在推进性能上大大优于传统的螺旋桨推进水下机器人,特别是微小型仿生水下机器人具有更好的机动性和水下珊瑚礁等复杂环境的适应能力,因而成为水下机器人研究领域的热点[1,2]。以游动过程中水动力学参数测量为基础的实验研究是揭示游动推进机理的重要途径,为仿生水下机器人研究提供理论支撑。国内外研究者针对不同仿生水下机器人,分别搭建了多种水动力学测量装置[3,4,5,6,7]。微小型仿生水下机器人在游动过程中的水动力数值较小,通常在几十毫牛至几牛之间[8,9],大部分研究者都采用多维力传感器进行直接测量[10,11,12],参数的精确测量对测试平台和传感器的要求高,传感器价格较贵。一些研究者尝试利用杠杆原理实现水动力参数的放大测量[13],从而提高测量的精度,但大多局限在单维度的推进力测量,无法同时对仿生水下机器人的游动过程中受到的侧向力和沉浮力进行测量。
本文针对微小型仿生水下机器人水动力性能测试的特点,研制了基于一维力传感器对称分布式的三维水动力测试系统。通过误差源的分析建模和误差补偿确保了测试系统具有较高的测量精度。
1 测试系统设计
1.1 功能需求分析
在游动过程中,生物身体与周围流体的相互作用使其受到多种作用力,以鱼类为例其受力情况,如图1所示。仿生水下机器人研究的重要目标在于实现与生物近似的游动性能,包括推进力、推进效率和游动速度等。
相关参数的获得,需要对微小型水下机器人在游动过程中的三维力进行精确测量,并记录其随时间的变化情况。为了实时的测量实验对象的三维流体力,需要研制出一套针对微小型仿生水下机器人游动过程中微小水动力具有放大作用,并能对相关测试数据进行实时采集和存储的测试系统。
1.2 机械结构设计
测试系统中机械结构的主要功能是放大被测力、固定力传感器和实现被测物与台架的连接。综合考虑结构简单与功能可靠,以模块化设计思想为指导,将机械结构分为:水平方向上两轴力测量模块和竖直方向上单轴力测量模块,2个模块之间通过L型转接块连接,如图2(a)所示。
水平测量模块(图2(b))包括上固定板、下固定板、支撑块、顶尖、安装杆、方形块和关节轴承。上固定板与L型转接块连接。安装杆通过关节轴承安装在下固定板上,下端与被测物连接,上端与方形块连接,以关节轴承为支点利用杠杆原理实现被测水平力的放大,通过调节安装杆在关节轴承两端的距离可以调节放大倍率。对称分布的4个支撑块连接上、下固定板,4个S型力传感器通过螺栓水平安装在支撑块上,传感器前端装有带滚珠的顶尖,顶尖压在方形块上,调节安装螺栓可以实现传感器的位置移动来实现预紧。
竖直测量模块(图2(c))包括顶部安装板、吊架、弹簧、固定板、转接板、顶尖、中心轴和转接轴等。固定板安装在L型转接块上,并与直线轴承连接。中心轴与顶部安装板固接并与直线轴承配合,保证只有水平测量模块受到的竖直方向的力能传递到竖直模块。吊架连接在顶部安装板,通过转接轴和轴承与2块转接板连接,并作为竖直方向力的杠杆放大支撑。2个力传感器固定在顶部安装板上,并通过顶尖与转接板接触。弹簧安装在顶部安装板和转接板之间,用于平衡水平测量模块的重力。
1.3 信号处理系统设计
测量信号处理系统(图3)由传感器、信号变送器、12V直流电源、数据采集卡、计算机以及测试软件组成。传感器选用上海研衡仪器有限公司S型拉压力传感器,其量程为50 N,综合精度0.05%,信号变送器的输出为±5 V。为保证数据的测量精度,采集卡选用NI公司的USB-6009,其最大模拟输入电压±10 V,分辨率14位,采样率48 k Hz。6个S型拉压力传感器经信号变送器后输出的模拟信号由数据采集卡采集并传输至计算机,Labview软件编写的上位机程序实时显示各传感器的测量数据,并将其存储于指定文件中。
2 系统测量原理
2.1 坐标系及传感器定义
为了对测量系统进行分析,定义系统笛卡尔坐标系oxyz,其中xoy平面为水平测量模块中4个力传感器受力方向所构成的水平平面,z轴为安装杆的轴线,如图2所示。
该测试系统中共有6个S型拉压力传感器,为便于说明,定义水平测量模块中受力方向为x轴负方向的传感器为S1,受力方向为x轴正方向的传感器为S2,受力方向为y轴负方向的传感器为S3,受力方向为y轴正方向的传感器为S4,竖直测量模块中的传感器分别为S5和S6。
2.2 测量原理建模
S1-S4通过顶尖与方形块的4个侧面垂直接触,S5和S6通过顶尖与转接板的上表面保持垂直接触,初始状态时均有一定量的压力预紧,且测量过程中所有传感器均受到压力作用,F1-F6表示S1-S6传感器的力值,FS表示弹簧力,Gxy为水平模块的重力,初始状态下弹簧力与水平模块重力抵消,测量系统三维力放大示意图,如图4所示。
被测物运动过程中,在x、y、z方向上的受力为:
式中:l1为坐标原点到关节轴承中心点的距离(mm);l2为被测物受力点到关节轴承中心的距离(mm);l3为S5和S6传感器的受力点到转接轴轴线之间的水平距离(mm);l4为转接轴轴线到z轴之间的水平距离(mm)。
定义V1~V6为S1~S6力传感器的信号变送器输出电压值变化量,即电压输出值与初始值的差值。其向量形式为V=[V1V2V3V4V5V6]T,定义被测物受到的三维力为向量F=[FxFyFz]T,其矩阵表达式为:
式中:KS为力传感器的输出电压值与受力大小的比例系数;Tl为三维力的放大系数矩阵;TZ为三维力与力传感器测量值的变换矩阵。
被测物受到的三维力与力传感器的输出电压之间的关系,可表示为:
3 误差源分析与建模
测试系统中存在的多种误差源是影响系统测量精度的主要原因,因此需要对系统误差进行建模分析并修正误差以保证系统具有较高的测量精度。该测试系统误差源主要包括机械结构的传感器安装位姿误差、摩擦力、传感器受力变形误差和传感器测量的随机误差。
3.1 机械误差
机械误差体现在传感器的实际空间位姿与理想空间位姿的角度偏差、传感器受力点的实际空间位置与理想的空间位置的偏移量、传感器安装顶尖与受力模块滚动接触的滚动摩擦力以及传感器的受力变形。机械误差属于系统误差,通过标定方法能够进行补偿修正。
1)位置误差
零件的加工误差、装配误差以及关节轴承的轴向游隙使传感器受力点的空间位置存在误差,并导致测试系统被测力放大机构存在误差。由于受力方块加工有顶尖定位槽,可保证传感器S1-S4的受力点在同一水平面内,所以x轴和y轴方向的被测力放大系数保持一致,则三维力放大误差为:
式中:Δl1、Δl2、Δl3、Δl4分别为l1-l4的误差。
2)角度误差
零件的加工误差和安装误差使传感器的实际空间位姿与理想位姿之间存在3个转动偏差。考虑角度偏差情况下的三维力测量误差为:
式中:α为传感器力矢量与测量系统坐标系x轴的夹角;β为传感器力矢量与测量系统坐标系y轴的夹角;γ为传感器力矢量与测量系统坐标系z轴的夹角;夹角下标表示传感器代号。
3)滚动摩擦力误差
水平模块的维间耦合由于存在摩擦力的影响,使得一个方向的加载而另一方向的力受到其摩擦力影响,由于传感器的压头带有滚珠,因此为滚动摩擦,定义滚动摩擦系数为f且传感器S1~S4的滚动摩擦系数相同。因S5、S6的测量不受的滚动摩擦力的影响,则考虑摩擦力情况下的三维力测量误差为:
4)传感器变形误差
在水平方向上传感器的受力应变,导致安装杆的绕关节轴承偏离竖直方向,定义关节轴承下方的安装杆的质量为M,传感器的弹性系数为KL,则力传感器变形导致的x、y轴方向的测量误差为:
式中:g为重力加速度。
竖直模块中由于平衡弹簧的存在,使得力传感器受力应变的同时,弹簧也会发生一定量的变形从而产生作用力。定义弹簧的弹性系数为KH,则弹簧力为:
由力矩平衡原理可得测试系统z轴方向的测量误差为:
力传感器变形误差导致测量系统的三维力测量误差为:
5)机械误差综合修正模型
以上机械部分的位置、角度、摩擦力、传感器变形误差均可通过实验标定的方法来修正。综合式(2)-式(11)可得测试系统的机械误差综合模型为:
式(12)为系统误差的补偿模型,可通过实验标定的方法解出各误差参数的数值。
3.2 传感器测量的随机误差
力传感器的测量误差受到温度和蠕变的影响,定义S1-S6的信号输出误差均为σ0,即σ1=σ2=σ3=σ4=σ5=σ6=σ0。测量系统中的S型拉压力传感器的综合精度范围同为0.05%~0.1%,则系统三维力的测量误差分别为:
取σ0的最大值为0.1%,则被测试力的最大随机误差为0.14%。
4 误差修正
测试系统的误差可采用实验标定方法进行修正,通过实验获取指定加载力测量值的大小,实验采用3个轴均匀加载方式,每个轴的加载范围为-50 N~+50 N,间隔10 N。将测得的多组输入、输出数据带代入误差补偿模型中,可反求出误差补偿模型中的误差参数。
力传感器的随机误差影响KS的值,根据实验结果采用最小二乘法对其进行线性拟合,能得到每个传感器的加载和输出的线性方程,6个传感器的标定结果,如图5所示。
通过对测试系统的系统误差和随机误差进行误差补偿后,明显的提高了测量的精度,3个轴方向同时加载后的测试结果,如表1所示。补偿后的精度控制在0.9%以内,达到了使用要求。
5 应用
如图6所示,该测试系统的测力装置安装在由2根SBR导轨和滑块构成的可移动平台上,力传感器变送器、电源、数据采集卡等都以模块的形式固定在水池的支撑架上,数据采集卡通过USB延长线连接计算机,采集的数据均通过Labview软件编制的控制程序实现实时显示和保存,最后应用Matlab软件解算出被测物的三维力。
6 结语
介绍了一种服务于微小型仿生水下机器人实验的新型流体力测试系统,该测试系统能够将实验对象受到的三维流体力进行放大并实时的测量和记录,具有功能稳定、精度高、结构简单、成本低等优点。通过应用建立的能够补偿传感器空间位姿、摩擦力、传感器受力变形引起的误差和力传感器随机误差的数学模型,在对模型进行修正补偿后,测试系统的测量精度<0.9%。
机器人测试 篇4
跳跃运动是生物运动的常见形式,跳跃机器人是仿生机器人研究的重要方面。跳跃机器人在整个运动过程(包括平衡、起跳、空中飞行、自由下落、碰撞、弹起)中,系统所受约束发生变化,这将导致系统动力学模型的复杂化。对跳跃机器人研究有助于深入理解步行机器人的动态平衡和稳定原理,为步行机器人的动态步行或跑步控制奠定基础,而且也为研究先进控制理论和方法提供了良好的实验平台。
建立准确可信的动力学模型是对跳跃机器人进行研究的前提。得益于虚拟样机技术的成熟[1],ADAMS等大型系统分析软件为我们提供了代替实体的可靠仿真验证平台,也为跳跃机器人动力学模型的测试提供了新的思路。
本文介绍一种靠双臂摆动来驱动弹性腿的跳跃机器人,给出用拉格朗日方法建立的动力学模型。通过Matlab编程可以得到模型在给定初态、无输入情形下的动态响应。基于用仿真结果反过来验证模型的思路,以ADAMS下对应的仿真结果为参照,通过对比响应曲线的吻合程度来测试机器人的动力学模型。
1 双臂单腿跳跃机器人简介
已有的跳跃机器人研究对象的腿部多数有驱动输入,可以直接控制系统的弹性振动来激发跳跃[2]。
本文所研究的是一种新型跳跃机器人[3,4],该机器人采用双臂驱动,弹性伸缩腿中不安装驱动部件,系统依靠内部动力学耦合实现动态站立平衡、起跳和稳定连续跳跃。
机器人的机械本体由北方工业大学设计并加工,如图1所示。
为了减少电机质量的负面影响,两个直流伺服电机被安装在臂端,使其质量用作臂端的配重,增大了双臂摆动时的惯量,有利于机器人的起跳。电机的输出经由钢丝传到机器人肩部,以实现臂的摆动。两个电机的安装方式被设计为向内侧错开,把双臂的质心调整到机器人的对称轴线上,以消除摆臂时因肩宽而产生的力矩。
机器人的脚趾是一对橡皮轮,与地面实质上是线接触,机器人在与这条接触线垂直的平面内跳跃。
2 建模及仿真
2.1 建立动力学模型
将机器人的结构简化,得到如图2所示的模型[3]。
进一步假设机器人腿部由有质量腿和无质量腿两段组成,其中有质量腿段的长度为l1,质量为m1,质心位于形心,无质量腿段的长度为l2,并与有质量腿段之间用带线性弹簧的直线运动副连接,直线弹簧的刚度为k。两驱动臂的长度均为r,质量均为m2,质心位于连杆末端。两驱动臂与有质量腿段铰接于同一点,不考虑臂与腿的干涉。
定义该机器人模型的广义坐标变量为(x, z, l2, φ, θ1, θ2),其中(x, z)为脚趾在垂直平面内的坐标,l2为伸缩腿伸出的长度(假设当弹簧处于自由状态时l2=l0,当机器人垂直站立并静止时l2=l20),φ为腿部轴线与水平面之间的夹角,θ1, θ2分别为驱动臂与腿部轴线之间的夹角,所有角度变量的正向为逆时针方向。
机器人的运动过程可分两个阶段,即支撑运动相(stance phase)和飞行运动相(flight phase),在不同的运动阶段,机器人系统的运动模型是不同的,下面将用拉格朗日方法对机器人的两个运动相建立起动力学方程。
a) 支撑相:在支撑相,由于机器人脚趾与地面保持接触,故脚趾位置坐标为常量。这时机器人的广义变量q1=[l2φ θ1θ2]T,广义驱动力Q1[0012]T(前两个元素为零表示对应于腿部伸缩和腿部角度的广义坐标无驱动力,而1,2分别为两臂的驱动力矩)。
系统的动能由三部分构成:有质量腿的动能(设为T1)、右臂的动能(设为T2)、左臂的动能(设为T3)。
系统的势能由四部分构成:有质量腿的势能(设为V1)、右臂的势能(设为V2)、左臂的势能(设为V3)、弹簧势能(设为Vk)。
T=T1+T2+T3 (1)
V=V1+V2+V3+Vk (2)
则拉格朗日算子:
L=T-V (3)
动力学方程为:
undefined12]T (4)
其中,f为无质量腿伸缩时所受的阻力。
进一步整理可得如下形式的方程:
undefined(5)
式中:M1为质量惯性矩阵;C1为由哥氏力、离心力、重力、阻力、弹性力等组成。
b) 飞行相:在飞行相,机器人的脚趾离地,因为无质量腿,腿部的弹性振动停止,也即l2=l0为常量。这时系统的广义变量q2=[x z φ θ1θ2]T,广义驱动力。Q2=[00012]T
系统的动能依然由三部分构成符号定义与支撑相相同;系统的势能没有了弹簧势能,其余与支撑相相同。
同理,整理可得如下形式的方程:
undefined(6)
其中,M2为质量惯性矩阵,C2为由哥氏力、离心力、重力等组成,忽略了飞行过程中的空气阻力,则C2中不包括弹性力和摩擦力。
2.2 Matlab中的编程仿真
机器人的数学模型既已得到,它的动力学特性就能通过解算方程得到。仿真的主要工作有两个:一是解算微分方程的数值解;二是对运动相的准确判断和及时切换。
Matlab中的仿真流程如图3所示。
其中,i为当前迭代步数,n为总步数,qqx代表undefined代表undefined为1或2)。
3 模型的测试
3.1 测试的必要性
准确可信的模型是我们了解机器人的运动特性、进而指导我们探索有效控制方法并且设计实际控制器的前提。
然而,因为机器人模型的复杂而且动力学方程推导过程的繁琐,我们不能保证在动力学分析和公式运算过程中不出差错,这使得对模型的测试很有必要。
一般地,我们可以列举几个特殊的形位,借助仿真结果反过来验证模型的可信性。但是我们设想的情形毕竟有限而且特殊,不能完全暴露出模型中可能存在的问题,各状态的变化细节更是无从判断其正误。本文利用ADAMS软件的自动建模和仿真功能,提出一种测试模型的方法。
3.2ADAMS的建模与仿真原理
ADAMS(automatic dynamic analysis of mechanical system)是美国MDI公司开发的虚拟样机分析软件,它使用交互式图形环境和零件库、约束库、力库,创建完全参数化的机械系统几何模型,建立系统动力学方程,可对虚拟样机进行静力学、运动学和动力学分析。
进行多体动力学分析时,ADAMS采用拉格朗日方法得到系统的运动方程,再运用拉格朗日乘子法,导出基于约束的系统动力学方程[5,6,7,8],如下式所示:
undefined
(7)
式中,Φq表示Φ对q偏导;undefined表示θ对undefined的偏导;ρ为对应于完整约束的拉氏乘子列阵;μ为对应于非完整约束的拉氏乘子列阵。
对于刚性系统,ADAMS采用变系数的向后微分公式(backwards differentiation formulation,BDF)刚性积分程序,它是自动变阶、变步长的预估校正法,并分别以Index3、SI2、SI1积分格式,在积分的每一步采用了修正的Newton-Raphson迭代算法[5]。
可见,ADAMS的自动建模原理上依然采用拉格朗日方法,只是它把完整的约束方程集成进来;而在解算微分方程时ADAMS也采用了更好的迭代算法。这两点使得我们有理由以ADAMS为参照来验证模型的正确性。
正如分析柔性体时,ANSYS软件分析模拟是代替实体制造的可靠仿真验证平台[9],得益于机械系统仿真软件(MSS,mechanical systems simulation)已经与有限元分析软件(FEA,finite element analysis)一样成熟[8],对于刚性系统,ADAMS可以作为复杂机械系统的虚拟实验平台。大量的工程应用已经充分显示ADAMS强大的自动建模和仿真求解能力[10,11,12,13,14,15]。
文献[4]与本文相呼应,它用凯恩方法建立的火炮模型验证了ADAMS建模及仿真的可信性。
3.3 测试实例
ADAMS中建立的机器人模型如图4所示。
相关的物理参数尽量保持一致(ADAMS中的无质量腿有微小质量,否则运行会出错),但因为ADAMS的仿真参数设置(如步长、积分器的设置)对模型的求解会有一定影响[5,6,7],所以在对比仿真结果时,不要求对应数据的完全一致,只要数据的走向及发生变化的时刻没有大的出入,就可以认为两个模型具有相同的运动特性,从而证明所建模型的可信。
给定初始状态、不加输入观察机器人的动态响应,大量仿真结果表明,不同初始条件下系统的动态响应曲线均是近似相同的,所建模型的准确得到了验证。
下面给出两个有代表性的测试实例。其中,m1=2.0kg, m2=5.0kg;弹簧刚度:k=4263N/m;弹簧阻尼:c=2.5Ns/m; l0=0.3m, l1=0.3m, r=0.4m。
a) 测试实例1:初态如表1所示,各状态的速度和加速度全为零。
这时的机器人竖直站立,弹簧为原长,两臂平举。仿真时间为2s,结果如图5。
Matlab给出了全部六个状态的变化曲线,ADAMS仿真后测得其中最主要的z, l2和θ1三条曲线,对照两个仿真结果,可以发现它们的走势能很好吻合。
b) 测试实例2:上例的角度比较特殊,可以随意给一个机器人的位形,初态如表2,各状态的速度和加速度为零。
仿真时间为0.45s,结果见图6。
ADAMS中测得了全部六个状态的曲线。
注意到,对于状态,ADAMS中不能保持其平直,总在不断偏移。这是因为在Matlab编程仿真中假设机器人脚趾与地面的摩擦无穷大,无相对滑动,而在ADAMS中设置摩擦时不可能设得很大。尽管如此,这并不影响该初态下机器人倒下时的运动特性,在其余状态,Matlab结果都能与之很好对应。
4 结论
ADAMS已广泛应用在机械、车辆和航空航天等领域,它的自动建模和仿真求解能力也是被大量的工程实践所证明的。
在双臂单腿跳跃机器人的规划与控制研究中,正确的模型是基础。本文基于用仿真结果反过来验证模型的思路,以ADAMS的仿真结果为参照,提出一种测试机器人动力学模型的有效方法。以机器人动态响应曲线的相似程度为标准,用大量测试用例验证了模型的可信性。
图灵测试——机器是否有智能 篇5
英国科学家图灵 (Alan Turing) 曾首先提出现代计算机的数学模型———图灵机。这个模型对后世计算机和计算机科学的发展有深远的影响。图灵因此而获得了极大的荣誉。目前世界上计算机科学的最高奖就是图灵奖。
图灵还有一项重要贡献。这项贡献也许不像图灵机的贡献那么大, 但是也涉及计算机科学的一个根本性问题, 对后来人工智能的研究有重大意义。这就是图灵测试的思想。自从计算机诞生以后, 人们对计算机是否具有智能进行了长期的争论。图灵在1950年发表于《哲学》杂志的一篇文章认为, (关于机器智能的) 争论无法解决, 是由于我们没有一个关于“机器”和“思维” (智能) 的明确定义。为此, 图灵设计了一种实验的方法, 来判定机器是否能够思维 (即机器是否具有智能) 。这就是著名的图灵测试。
图灵测试是有其特定含义的, 即指通过人-机对话来判断机器是否具有智能的方法。有人认为只要计算机在某些方面做得很好, 甚至于让人看不出来这是计算机做的, 就算是通过了图灵测试, 这是一种误解。实际上, 计算机在计算速度方面早就做得比人强了。计算机在艺术方面已经可以创造出能够乱真的作品。人们也并没有因之说计算机通过了图灵测试。图灵测试就其本质来说, 测试的是一种特定的智能, 我们称之为言语智能。
很多人对图灵的观点是持赞同意见的, 当然, 他们对图灵测试中的具体测试方法做了很多改进和推广。米奇指出, 图灵的仅仅依据被试的言语表达来判定机器是否具有智能, 失掉了人类在思维过程中的某些重要部分, 因此对图灵测试应该进行改进和推广。米奇同时提醒人们, 不要将图灵的原意扭曲, 那就是, 图灵提出这个测试方法, 并不是为了验证机器是否具有与人一样的思维能力, 而是为了验证机器是否有思维能力。
哈纳还提出了完全图灵测试的观点。他认为, 非语言行为同语言行为在表达人类的思维方面至少具有同等重要的作用。因此他指出, 图灵测试不应被简单地看作是一个测试过程, 而应该把它当作一个科学准则。一个完全图灵测试除了包括图灵所说的语言行为之外, 还应该包括机器的非语言行为在内。而且这种测试不应该被限制在短短的5分钟之内, 而是应该在很长的时间内进行。
在哈纳的基础上, 费彻还进一步分析了图灵测试 (TT) 与完全图灵测试 (TTT) 之间的关系, 他认为TT与TTT至少有两点不一样:TT认为凡是通过测试的机器都具有智能, 它是“具有智能”的充分条件, 而TTT则认为凡是通不过测试的机器都不具有智能, 它只是“具有智能”的必要条件;另一个区别是它们在测试时采用的形式不同, TT仅仅依据语言行为来进行判断, 而TTT则综合了非语言行为。
对哲学家和认知科学家的挑战———机器能否具有智能
关于计算机是否和如何才能具有智能的问题首先是一个哲学问题, 因此引起了哲学家的极大关心, 历来争论激烈。
图灵在这篇文章里, 已经预见到会有很多人反对他的这个观点。为此, 他分别就这些反对者的观点作了解释。
(1) 来自数学的异议:“根据歌德尔定理, 机器能力有限, 而人类智能则没有这种局限性。”图灵认为, 尽管已经证明任何一台特定的机器都是能力有限的, 但并没有任何证据说, 人类智能就没有这种局限性。
(2) 来自意识的论点:“机器只能机械地执行事先编好的程序, 而不能感受到它究竟在做什么, 机器是没有意识的”。图灵认为这是一种唯我论的表现。按照这种观点, 最极端的形式就是:若要肯定一台机器是否能思维, 唯一的途径就是成为那台机器, 并且去感受它的思维活动。同样, 若要知道某人是否在思维, 唯一的途径就是成为那个特定的人。但这显然是不可行的。
(3) 来自种种能力限制的论据:“现在的机器虽然可以干很多事情, 但有些事情是机器永远也不能做到的, 比如:和蔼, 机灵, 美丽, 富于首创精神, 有幽默感等等。”图灵认为这是一种基于归纳得到的结果, 因为人们还没有看到能够做到这些事情的机器, 所以就认为机器永远也不可能做到, 这是缺乏根据的。
(4) 拉芙莱丝夫人 (即英国著名诗人拜伦的女儿, 为贝贝奇编过程序) 的异议。拉芙莱丝夫人的回忆录中曾对贝贝奇的分析机做过详尽的记述。她写道:“分析机没有任何意图要想创作什么东西。它只能做我们知道该怎样去指挥它做的任何事。”还有另一种说法, 即“机器永远也不能创新”。
(5) 来自神经系统连续性的论证:“神经系统不像离散状态的机器, 所以不能用一个离散状态系统去模仿神经系统的行为。”图灵指出, 虽然从内部构造上, 机器和神经系统是不同的, 但如果严格遵循模拟游戏的条件, 反对者就不能从这个差别得到任何有利之处。
(6) 来自行为规则的论证:“如果每一个人都有一套行动规则来制约他的生活, 那么, 人同机器就会相差无几了。但实际上不存在这种规则, 因此, 人不能成为机器。”图灵指出, 这里的论证将“行为规则”和“行为规律”混为一谈。所谓“行为规则”是指人们需要服从的, 并能够意识到的一类规则;而“行为规律”则是自然规律。
(7) 来自超感官知觉的论证。这是图灵认为人同人创造的机器之间最终的区别。然而, 当时可能被图灵认为超感官知觉存在的证据, 后来都被证实是假的。我们相信将来也不会找到这样的证据。
最著名的反对意见, 是索尔于1980年提出的“中文屋子”问题。它实际上是上面提到的第 (2) 点反对意见的进一步发挥。
对语言学家和计算机科学家的挑战———计算机能否掌握谈话技巧
以考核言语智能为特点的图灵测试程序, 其最基本的组成部分就是对话系统。对话系统的研究不是一个新课题, 实验系统也很多。
按照对话系统的输入输出方式, 可以分为基于语音和基于文字的两种。基于文字的对话系统所涉及的技术包括:自然语言理解, 机器翻译, 对话分析, 故事理解, 自然语言生成等部分。而基于语音的对话系统在此基础上, 还需要语音识别和语音生成技术。
按照对话系统的应用范围, 可分为面向特定领域的和非面向特定领域的两种。按照对话系统的核心功能, 还可以分为技术型对话系统和知识型对话系统两类。早期出现的系统以及目前流行的许多系统都是技术型系统。这类系统的特点是不拥有一个大型知识库。纯凭对话技术与用户周旋。
按照对话的生成原则, 可以分为动态生成型、规划型和脚本型三类。动态生成型事先没有一定的计划, 根据对话方输入的内容临时决定如何应签。规划型根据双方对话的进展以合作方式逐渐生成一个对话计划。脚本型以仙克 (Schank) 的概念依赖理论和脚本技术为依据, 事先规划好对话的基本模式, 再按某种状态转移图把用户的输入转换成输出。这种方法的功能受限, 主要用于特定领域的对话。
按照所使用的自然语言处理技术, 可以把对话系统分为语法型、语义型和语用型对话系统。语法型对话系统通常使用关键字匹配和句型匹配和置换技术。在使用这类技术时, 对方输入的自然语言其实并没有被真正理解, 而是被“望文生义”了, 并且是“望关键字和句型生义”。
语义型系统力图理解用户的输入并做出合理的反应。这类系统要求有一个比较完整的自然语言理解模块。但是因为自然语言理解是一个目前还不可能完全解决的难题, 所以语义型系统的语义理解和处理功能肯定还是有限的。目前的观点认为, 对话系统的研究是语用学的研究, 但是在历史上许多系统是基于句法和语义来研究, 因为语用学的研究被认为是太难了。
目前世界上比较有规模的图灵测试比赛, 是柳步纳 (Hugh Leobner) 博士、美国国家自然科学基金和斯龙 (Sloan) 基金于1991年共同创办的柳步纳大赛。每年举行一次, 在参赛的程序中挑选出最“人性化”的程序。此外, 还设立了一个10万美元的大奖, 奖励第一个通过非限制的图灵测试的程序。这个大赛也被称为侃大山程序比赛。
对知识工程和知识科学专家的挑战——能否建立强大的常识知识库
侃大山系统, 或聊天系统的最大缺陷就是不以广泛的知识为基础。它们一般都有一些为了维持聊天所必需的起码知识。
这里所说的知识不是指专业知识, 而是指常识。常识与专业知识有很大的不同, 专业知识的重要性是人所共知的。它被广泛应用于各类专家系统和应用软件之中, 而常识的重要性却往往被忽略。麦卡西曾指出, 缺乏常识是当前专家系统的一大弱点。在人机对话中, 常识是考验一个对话者是否具有正常人的智力和行为的试金石。常识与专业知识的第二个区别是:人类积累的专业知识虽浩如烟海, 但比起常识来, 专业知识还只如小巫之见大巫。常识知识范围之广袤, 是专业知识所不可比拟的。它们的第三个区别是:专业知识一般都是形式化了的, 或比较便于形式化, 而常识知识却极难形式化。
所以, 一个强有力的常识知识库是成功实施图灵测试的必要支持。国外建立常识知识库的著名例子是雷纳的CYC系统。该系统原则上采用一个阶谓词演算加框架树作知识表示, 以框架树表示基本知识 (客观世界中物理和精神对象的分类体系) , 以谓词演算作推理手段, 并为每个问题领域建立一个微理论 (公理体系) 。经过十余年努力, 耗费数百人年的工作量, 建立起一个拥有百万段言的知识库。国内的努力有中科院计算所曹存根的CNKI海量知识库, 以及中科院数学所、清华大学和中山大学合作建立的《盘古》常识知识库。还在《盘古》的支持下作了少儿图灵测试的尝试。该知识库选定Agent作为常识单元, 以Agent类属作为纵向继承体系, 并按本体论原则组织各Agent的横向联系, 通过各类本体建立联想式的网络体系。它的常识存储是分布式的, 常识不仅体现在单个Agent的个体知识之中, 而且体现在本体的组织结构之中。Agent之间的通信采用KQML。
从国内外的研究情况来看, 开发大型常识库的主要问题是完备性 (哪些知识是常识?如何收罗浩如烟海的常识?怎样用有限的库容装进无限的常识?) 、一致性 (常识有强烈的情景依赖性。如何限定常识的应用前提才能不发生矛盾?) 和高效性 (常识推理所需时间随常识的量而上升, 如何使海量的常识与高效的推理相兼容?)
研究图灵测试的目的
在围绕图灵测试而展开的争论中, 有许多问题的哲学意义大于其科学意义。人何可以从哲学角度或科学角度或技术角度去研究。我们不想否定任何一种角度。