工业机器人的实时轨迹插补算法(精)

工业机器人的实时轨迹插补算法(精)
工业机器人的实时轨迹插补算法(精)

工业机器人的实时轨迹插补算法

李天友 ,孟正大 ,陈勍奇

(东南大学自动化学院,江苏南京 210096)

摘要:提出了一种实现工业机器人实时轨迹插补的规划算法。该算法既能满足时间上的实时性,又能够在完成机器人当前轨迹插补的同时,实现在线调整插补参数,改变机器人当前插补方程,从而改变机器人运动轨迹与状态。而对于不同插补类型,只要找准对应线长的表示,不需要对算法本身进行修改,就可以完成相应的轨迹插补。本算法应用于“昆山一号”焊接机器人中,表明其满足焊接实时性和可调速性要求。

关键词:工业机器人;实时插补;算法;轨迹规划

示教再现方式下的轨迹插补算法是工业机器人的一个传统课题[1],技术和方法比较成熟有效。文献[2-4]分别解决了直线、圆弧、样条曲线等单一类型的轨迹插补,文献[5,6]讨论了复杂曲线在编程时用分段直线或圆弧进行拟合插补的方法,文献[7]研究了关节空间和笛卡儿空间的通用插补算法,把插补段分为加速段、匀速段、减速段进行插补, 但算法复杂,运算量大,且不能进行实时控制。此外,时间上满足实时性的轨迹插补方法也得到了研究[3,4]。但是既满足实时性要求又能够进行平滑调速并且能够同时完成关节空间和笛卡儿空间各种类型插补的通用轨迹插补算法却比较少见。

本文介绍工业机器人的实时轨迹插补算法。它是为满足“昆山一号”焊接机器人的实时性而设计的,实时性包含两层涵义,一是满足时间上的实时性,即在一个采样周期内能够完成一次轨迹插补,多数算法能够满足这层要求;而实时性第二层涵义是系统能够在完成机器人当前轨迹插补的同时,实现在线调整插补参数,改变机器人当前插补方程,从而改变机器人运动轨迹与状态,本文的算法很好地完成了这层实时性的要求。并且这种算法能够完成PTP (点到点)、多点关节空间、直线、圆弧、样条曲线、FlyBy [8,9]等多种类型的轨迹插补。

本文首先介绍实时轨迹插补算法的提出背景,然后给出了算法基本原理的详细说明,并且运用流程图进一步明确了基本算法,对算法的实时性和调速控制进行了分析,最后阐述了算法在多种插补类型中的实际应用。

1 实时轨迹插补算法

1.1 提出背景

“昆山一号”机器人是我国第一台自主研制的全自动工业焊接机器人,其核心技术“自动控制软件系统”第一版在轨迹插补方面,不仅实现了常见的PTP 、直线、圆弧这些插补方式,而且实现了样条曲线插补和多点笛卡尔坐标空间插补等新型插补方式,丰富了机器人的轨迹插补功能,这些插补算法在实际系统运行中,操作简单方便,机器人运行平稳[10]。

先前的算法是把插补段分为加速段、匀速段、减速段,分别对位置和姿态进行定时插补计算,然后把所有的插补点位姿全部求解出来形成位置和姿态链表。通过对插补点位置和姿态链表进行依次读取执行,来完成各种类型的插补。这种方法虽然能够完成姿态的插补,但是在已知插补类型的情况下,不能对机器人运动轨迹与状态进行控制,也就是不能满足实时性第二层内容的要求,当然也就不能满足“昆山一号”焊接机器人在实际应用中的电弧跟踪实

基金项目:江苏省科技成果转化专项资金项目(BA2007058)和国家高技术研究发展计划资助项目

(2006AA040202

作者简介:李天友(1983-),男,河南民权人,硕士生,

litianyouseu@https://www.360docs.net/doc/1817256154.html,

时偏差补偿和插补过程中进行调速的需要,所以我们提出了实时轨迹插补算法。

1.2 基本算法

机器人控制系统计算点列并形成轨迹的过程叫插补,插补工作有三个要素:插补的参数、插补的方程、插补形成的轨迹(点列)。只有插补的参数、插补的方程都合乎操作者的需求时,产生的点列才是符合要求的。其中把插补的参数分成两部分:第一部分参数一般包括示教点的位姿如始点位姿和终点位姿、示教点间的插补方式如直线、圆弧等,一般能够规定插补的轨迹方程,第二部分参数一般包括设定的匀速段速度、变速段加速度、始点速度和终点速度等,一般能够规定机器人工具手末端的运动状态。

为方便说明问题,我们定义空间两点始点A 和终点B 以及它们之间的线段为直线段(实际上两点之间可以为圆弧、样条曲线、FlyBy 等任意形状的线段),算法原理图如图1所示。

图1 实时轨迹插补算法原理示意图图2 实时轨迹插补算法关键步骤说明示意图由图1可知第一部分参数有:始点A 位姿startAuxiT6,终点B 位姿

endAuxiT6,该图例表示的插补类型为直线;第二部分参数有:始点A 的速度为Vstart 、终点B 的速度为Vend 、始点A 和终点B 之间的匀速段速度velo 和变速段加速度accel 。

定义当前插补点的位姿为currentAuxiT6、速度为Vcurrent 和距离A 的线长Scurrent ,下一个插补点的位姿为nextAuxiT6、速度Vnext 和距离A 的线长Snext 。定义A 和B 总线长为S ,SA 为A 附近的变速距离(Vstart 按设定加速度

变化到velo 所需要的线长),SB 为B 附近的变速距离(velo 按设定加速度变化到Vend 所需要的线长),SAB 为总的变速距离。定义SAECE 为当前插补点处于末段变速状态时所需的变速距离(Vcurrent 按设定加速度变化到Vend 所需要的线长),SCE 为当前插补点到B 的距离。

输入变量有:startAuxiT6、 Vstart、endAuxiT6、Vend 、currentAuxiT6、Vcurrent 、Scurrent (以上三个变量由上次插补算法计算得到)、velo 、accel 、调速控制量Vrate (通过控制该变量完成机器人的调速,集中反映了该算法通过控制输入变量对机器人的插补状态实行控制)。

输出变量有: Vnext、Snext 、nextAuxiT6(以上三个量作为下次轨迹插补的输入控制量。算法的核心思想:由以上实时性的分析,可以通过控制输入变量对当前插补点状态施加控制,这样就把整段的连续插补变为可以控制插补状态(如插补的速度和姿态)的单步插补。在完成当前插补点轨迹插补的同时输出Vnext 和Snext ,通过计算得到nextAuxiT6,以上三个变量作为下次轨迹插补的输入变量对下次轨迹插补的状态进行控制。所以现在讨论的问题就变为如何通过控制当前插补点输入变量求解下一插补点的Vnext 和Snext 上。

在两个插补点之间,存在两个关键判断点:一是比较SCE 和SAECE ,若SCE 不大于SAECE ,当前插补点进入末段变速段;若SCE 大于SAECE ,则进入非末段的变速段;这就相当于直观的把整条线段分成了两个部分,末段变速段和非末段变速段。

第二个关键判断点是速度的对比。若当前插补点进入末段变速段,首先比较velo 和Vend ,确定变速段是加速状态还是减速状态,然后比较Vcurrent 和

Vend ,确定当前插补要进行相应的运动还是匀速运动。而当前插补点处于非末段变速段的处理方法与处于末段变速

段类似,首先比较velo 和Vstart ,确定本段是加速状态还是减速状态,然后比较Vcurrent 和Vstart ,确定当前插补要进行相应的运动还是匀速运动。其关键步骤说明示意图见图2。

所以实时轨迹插补算法处理流程如下:

step1:初始化操作,进行速度、加速度、距离合法性检验。求解SA 和SB ,求和得SAB ;

比较SAB 与S 的大小,判别S 的合法性;对插补点末点进行处理;

step2:求解处理关键判断点一。求解SAECE 和SCE ;比较SCE 和

SAECE ;若SCE 不

大于SAECE ,则进入末段的变速段,进入step3;若SCE 大于SAECE ,则进入

非末段的变速段,进入step6;

accel Vend Vcurrent fabs SAECE 2/ (22?= (1 step3:处理末段变速段的关键判断点二。比较velo 和Vend ,若velo 小于Vend ,则本

段为加速段,进入step4;若velo 大于Vend ,则本段为减速段,进入step5;

step4:比较Vcurrent 和Vend 。若Vcurrent 小于Vend ,加速操作,算出Vnext 、Snext ;

Ts accel Vcurrent Vnext *+= (2

2**5. 0*Ts accel Ts Vcurrent Scurrent Snext ++= (3 其它情况,加速过程提前到达末点速度,则做匀速运动;

Vend Vnext = (4 Ts Vcurrent Scurrent Snext *+= (5 step5:比较Vcurrent 和Vend 。若Vcurrent 大于Vend ,减速操作,算出Vnext 、Snext ;

Ts accel Vcurrent Vnext *?= (6

2**5. 0*Ts accel Ts Vcurrent Scurrent Snext ?+= (7

其它情况,减速过程中提前达到末点速度,则做匀速运动,计算公式同(4(5。

step6:处理非末段变速段的关键判断点二。比较velo 和Vstart ,若Vstart 小于velo ,则本段为加速段,进入step7;若Vstart 不小于velo ,则本段为减速段,进入step8;

图3 实时轨迹插补算法的流程示意图图4 直线在线实时插补的仿真效果示意图 step7:比较Vcurrent 和velo 。若Vcurrent 小于velo ,加速操作,算出Vnext 、Snext ,计算

公式同(2(3。若Vcurrent 达到或暂时超过velo ,则需要将速度保持或调整为

velo ,计算公式如下:

velo Vnext = (8 Ts Vcurrent Scurrent Snext *+= (9 step8:比较Vcurrent 和

velo 。若Vcurrent 大于velo ,减速操作,算出Vnext 、Snext ,

计算公式同(6(7。若Vcurrent 达到或暂时超过velo ,则需要将速度保持或调整

为velo ,计算公式同 (8(9。

step9:实时轨迹插补算法结束。

根据以上的分析推导过程可以得到如图3所示的实时轨迹插补算法流程图。

1.3 算法的实时性和调速控制分析

要实现调速控制,引入调速控制量Vrate (其中有效范围:0-100%),作为插补点的输入变量,对轨迹插补的速度进行控制。由

Sstep Scurrent Snext += (10 其中Sstep 为单步插补步长;要实现速度的调节,既把V 调整为V*Vrate;设Ssteprate 为速度调整后的步长, 由

dt V Sstep

t t ∫=21 (11

调整为 Vrate dt V dt Vrate V Ssteprate t t t t * ( *(212

1∫∫== (12

所以对速度V 的调节转化为对步长Sstep 的调节,得到引入Vrate 后的控制方程:

Vrate Sstep Scurrent Snext *+= (13 由以上推理可知,要实现速度的平滑调节,以公式(3为例,计算公式如下:

Vrate Ts accel Ts Vcurrent Scurrent Snext * **5. 0*(2++= (14 要实现电弧跟踪实时偏差补偿,由以上算法得到Vnext 和Snext ,计算得到nextAuxiT6,再由电弧跟踪得到的偏差补偿量进行姿态调整,求得补偿后的新的nextAuxiT6位姿量,然后把这三个量作为中间变量,等待下一步调用,这样就完成了电弧跟踪偏差的实时补偿。

插补的实时性在时间上要求一次计算过程必须在一个插补采样周期内完成。为了测试时间上的实时性,设定插补速度为0.1m/s,用Visual C++语言编程实现算法实时性的测试。在CPU 为P4,主频为2.0GHz ,内存为768MB ,以Windows XP 作操作系统的计算机上进行实时性测试,测得进行10000次插补用时16ms ,既每次插补用时1600ns 。因为目前饲服系统的采样周期一般为1ms [11]以上,而“昆山一号”机器人要求采样周期为10ms ,所以本算法能够满足实时性运算时间上的要求。

实时性和调速控制分析表明,本文研究的算法能满足机器人控制的实时性和可调速性要求,本研究成果已成功应用于“昆山一号”焊接机器人。

2 算法应用与分析

本文算法应用于“昆山一号”机器人的PTP 、多点关节空间、直线、圆弧、样条曲线、FlyBy 的在线实时插补算法中。以上类型在线实时插补算法的实现统一为三步:①求解总线长(PTP 对应关节角度变化量,直线对应两点之间线段长度,圆弧对应两点之间总的弧长,样条曲线对应两点之间的弦长,FlyBy 对应弗格森曲线[9]线长);②调用1.2描述的实时轨迹插补算法,对于不同的插补类型,其核心插补算法是相同的;③对位置和姿态进行插补。

以直线为例,说明实时轨迹插补算法的应用及算法如何实现电弧跟踪实时偏差补偿和调速控制。直线的在线实时插补算法首先在第一步求解A 和B 之间的线段

长度S ;第二步调用1.2中提出的实时轨迹插补算法,得到Vnext 和Snext ;第三步对位置和姿态分别进行插补,求解得到nextAuxiT6,计算公式为:

6.px startAuxiT -.px (endAuxiT6*(Snext/S+6.px startAuxiT =.px nextAuxiT6 (15

因为直线的位置和姿态都呈线性变化关系,所以式(15中px 既可以为表示位置的

x 、y 、z ,同时也可以为表示姿态的fi 、theta 、pusi 。要实现电弧跟踪偏差的实时补偿,只需根据偏差

量对nextAuxiT6进行调整即可,而对速度调节的实现只需要对调速控制量Vrate 进行操作即可,具体实现方法见1.3描述。应用了该算法的直线在线实时插

补的仿真效果图如图4所示。

3 结论

根据本文提出的工业机器人实时轨迹插补算法,只需要找到与轨迹类型相对应的线长S 的表示,即可通过本文提出的算法规划出相应的插补轨迹,并满足实时

性和可调速性的要求。本文给出的实时轨迹插补算法处理流程清晰,编码简单,易于实现,代码重复利用率高。该算法用于“昆山一号”焊接机器人轨迹规划中,满足了焊接工艺要求,验证了该算法的可行性。

参考文献:

[1] 付京逊. 机器人学[M]. 北京: 中国科学技术出版杜, 1989. 110-142.

[2] 叶伯生. 机器人空间三点圆弧功能的实现[J]. 华中科技大学学报(自然科学版), 2007, 35(8:5-8. [3] 邓勇. B样条曲线的实时插补[J]. 机械与电子, 2001, (4:23-24.

[4] 吴光琳, 林建平, 李从心, 等. B样条曲线的快速实时插补算法[J]. 模具工业, 2000, (10:14-16. [5] Vic B, Red E. Inaccuracy compensation and piecewise circular approximation of parameter curves [J]. Robotics, 1993, 11(5:413-425.

[6] 肖海荣, 周应兵, 周凤余, 等. 基于插补算法的大型喷漆机器人轨迹规划[A].

中国控制与决策学术年会论文集[C], 2001. 1099-1104.

[7] 刘晓平, 田西勇, 庄未. 基于非对称组合正弦函数的机器人规划方法[J]. 电子机械工程, 2008, 24(1:56-58.

[8] David Kincaid, Ward Cheney.数值分析(英文版[M].北京:机械工业出版社, 2005. 308-377. [9] 柳朝阳, 周晓平.计算机图形学:图形的计算与显示原理[M].西安:西安电子科技大学出版社, 2005. 158-203;223-227.

[10] 唐创奇.焊接机器人系统运动规划方法的研究与软件实现[D]. 南京: 东南大学, 2008. 7-27. [11] 边玉超, 张莉彦, 戴莺莺, 等. CNC系统中NURBS 曲线实时插补算法研究[J]. 机械制造与自动化, 2003, (6:36-39.

A Real-time Interpolation Algorithm for Trajectory Planning of Industrial Robot

LI Tian-you,MENG Zheng-da,CHEN Qing-qi

(School of Automation,SouthEast University,Nanjing 210096,China

Abstract: An algorithm for the real-time interpolation of industrial robot was put forward. The algorithm can meet the real-time requirement. Though controlling the input variables, it can control the state of current interpolation point and complete the trajectory planning, and it also can provide input variables for the next interpolation point in the same moment. For different types of trajectory planning, we can complete the corresponding trajectory interpolation by selecting the appropriate controlled volume. The algorithm has been used in the “KunShan No.1” welding robot, and it met the requirement of real-time and velocity control.

Key words: industrial robot;real-time interpolation;algorithm ;trajectory planning

五子棋贪心算法

五子棋人机对战算法 采用的是贪心算法 每一步扫描一下棋盘上未有子的地方 我假定落下一个子,我去判断一下这个子,如果是我方的话会几连,如果是对方的话会是几连,如果我方的子多,落子,如果对方的子多我去堵他。 总的来说,要让电脑知道该在哪一点下子,就要根据盘面的形势,为每 一可能落子的点计算其重要程度,也就是当这子落下后会形成什么棋型(如:“冲四”、“活三”等),然后通览 全盘选出最重要的一点,这便是最基本的算法。当然,仅靠当前盘面进行判定是远远不够的,这样下棋很轻易掉进 玩家设下的陷阱,因为它没有考虑以后的变化。所以在此基础上我们加入递归调用,即:在电脑中猜测出今后几步 的各种走法,以便作出最佳选择,这也是我们下棋时常说的“想了几步”。如此一来您的程序便具有一定的水平了。 什么?不信!过来试试吧! 总体思路弄清之后,下面进行具体讨论: 一:数据结构 先来看看数据结构,我们需要哪些变量? 首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个15*15的二维数组Table[15][15] (15*15是 五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用…0?表示空位、…1?代表己方的子、…2? 代表对方的子;这张表也是今后分析的基础。 在此之后还要为电脑和玩家双方各建立一张棋型表Computer[15][15][4]和 Player[15][15][4],用来存放棋型 数据,就是刚才所说的重要程度,比如用…20?代表“冲四”的点,用…15?代表“活三”的点,那么在计算重要 性时,就可以根据20>15得出前者比后者重要,下子时电脑便会自动选择“冲四”的点。那为什么棋型表要使用三 维数组呢?因为棋盘上的每一个点都可以与横、竖、左斜、右斜四个方向的棋子构成不同的棋型,所以一个点总共 有4个记录;这样做的另一个好处是可以轻易判定出复合棋型,例如:假如同一点上有2个…15?就是双三、有一个…15?和一个…20?就是四三。 怎么样!3个数组构成了程序的基本数据骨架,今后只要再加入一些辅助变量便可以应付自如了。应该不会太 难吧?OK!有了这么多有用的数据,我们就可以深入到程序的流程中去了。 二:程序流程 我们主要讨论五子棋的核心算法,即:人工智能部分,而其他像图形显示、键盘鼠标控制等,因较为简单,所 以就不作过多介绍了。 我们看到本程序由六个基本功能模块构成,各模块的具体分析如下:

机器人实验指导书

实验1机器人机械系统 一、实验目的 1、了解机器人机械系统的组成; 2、了解机器人机械系统各部分的原理和作用; 3、掌握机器人单轴运动的方法; 二、实验设备 1、RBT-5T/S02S教学机器人一台 2、RBT-5T/S02S教学机器人控制系统软件一套 3、装有运动控制卡的计算机一台 三、实验原理 RBT-5T/S02S五自由度教学机器人机械系统主要由以下几大部分组成:原动部件、传动部件、执行部件。基本机械结构连接方式为原动部件——传动部件——执行部件。机器人的传动简图如图2——1所示。 图2-1机器人的传动简图 Ⅰ关节传动链主要由伺服电机、同步带、减速器构成,Ⅱ关节传动链有伺服电机、减速器构成,Ⅲ关节传动链主要由步进电机、同步带、减速器构成,Ⅳ关节传动链主要由步进电机、公布戴、减速器构成,Ⅴ关节传动链主要由步进电机、同步带、锥齿轮、减速器构成在机器人末端还有一个气动的夹持器。 本机器人中,远东部件包括步进电机河伺服电机两大类,关节Ⅰ、Ⅱ采用交流伺服电机驱动方式:关节Ⅲ、Ⅳ、Ⅴ采用步进电机驱动方式。本机器人中采用了带传动、谐波减速传动、锥齿轮传动三种传动方式。执行部件采用了气动手爪机构,以完成抓取作业。 下面对在RBT-5T/S02S五自由度教学机器人中采用的各种传动部件的工作原理及特点作一简单介绍。1、同步齿形带传动 同步齿形带是以钢丝为强力层,外面覆聚氨酯或橡胶,带的工作面制成齿形(图2-2)。带轮轮面也制成相应的齿形,靠带齿与轮齿啮合实现传动。由于带与轮无相对滑动,能保持两轮的圆周速度同步,故称为同

步齿形带传动。 同步齿形带传动如下特点: 1.平均传动比准确; 2.带的初拉力较小,轴和轴承上所受的载荷较小; 3.由于带薄而轻,强力层强度高,故带速可达40m/s,传动比可达10,结构紧凑,传递功率可达200kW,因而应用日益广泛; 4.效率较高,约为0.98。 5.带及带轮价格较高,对制造安装要求高。 同步齿形带常用于要求传动比准确的中小功率传动中,其传动能力取决于带的强度。带的模数 m 及宽度b 越大,则能传递的圆周力也越大。 图2-2同步齿形带传动结构 2.谐波传动 谐波齿轮减速器是利用行星齿轮传动原理发展起来的一种新型减速器。谐波齿轮传动(简称谐波传动),它是依靠柔性零件产生弹性机械波来传递动力和运动的一种行星齿轮传动。 (一)传动原理 图2-3谐波传动原理 图2-3示出一种最简单的谐波传动工作原理图。 它主要由三个基本构件组成: (1)带有内齿圈的刚性齿轮(刚轮)2,它相当于行星系中的中心轮; (2)带有外齿圈的柔性齿轮(柔轮)1,它相当于行星齿轮; (3)波发生器H,它相当于行星架。 作为减速器使用,通常采用波发生器主动、刚轮固定、柔轮输出形式。

工业机器人编程与实操 期末试题

ABB机器人考试试题 姓名:李智鹏 班级:工业机器人161 一、判断题(Y/N) 正确填Y 错误填N 1.机械手亦可称之为机器人。(Y) 2.完成某一特定作业时具有多余自由度的机器人称为冗余自由度机器人。(Y) 3、关节空间是由全部关节参数构成的。(Y) 4、任何复杂的运动都可以分解为由多个平移和绕轴转动的简单运动的合成。(Y) 5、关节i的坐标系放在i-1关节的末端。(N) 6.手臂解有解的必要条件是串联关节链中的自由度数等于或小于6。(N) 7.对于具有外力作用的非保守机械系统,其拉格朗日动力函数L可定义为系统总动能与系统总势能之和。(N) 8.由电阻应变片组成电桥可以构成测量重量的传感器。(Y)9.激光测距仪可以进行散装物料重量的检测。(Y) 10.运动控制的电子齿轮模式是一种主动轴与从动轴保持一种灵活传动比的随动系统。(Y) 11.谐波减速机的名称来源是因为刚轮齿圈上任一点的径向位移呈近似于余弦波形的变化。(N) 12.轨迹插补运算是伴随着轨迹控制过程一步步完成的,而不是

在得到示教点之后,一次完成,再提交给再现过程的。(Y) 13.格林(格雷)码被大量用在相对光轴编码器中。(N) 14.图像二值化处理便是将图像中感兴趣的部分置1,背景部分置2。(N) 15.图像增强是调整图像的色度、亮度、饱和度、对比度和分辨率,使得图像效果清晰和颜色分明。(Y) 二、填空题 安全防护: 1.万一发生火灾,请使用(二氧化碳)灭火器对机器人进行灭火。 2 机器人在发生意外或运行不正常等情况下,均可使用 (急停)键,停止运行。 3. 气路系统中的压力可达(0.6)MP,任何相关检修都要 切断气源。 4.如果在(CPU)非常忙的时候发生断电,有可能由于系 统无法正常关机而导致无法重新启动。在这种情况下机器人系统将显示错误信息 5使能器—使动装置是一个位于示教器一侧的按钮,将该按钮按下一半可使系统切换至(ON)状态。释放或全按使动装置时,机器人切换至OFF 状态。 6. 机器人在(紧急停止)模式下,使能器无效。 7、在手动回“home”位置时,出现(80001)错误,可以

工业机器人的实时轨迹插补算法(精)

工业机器人的实时轨迹插补算法 李天友 ,孟正大 ,陈勍奇 (东南大学自动化学院,江苏南京 210096) 摘要:提出了一种实现工业机器人实时轨迹插补的规划算法。该算法既能满足时间上的实时性,又能够在完成机器人当前轨迹插补的同时,实现在线调整插补参数,改变机器人当前插补方程,从而改变机器人运动轨迹与状态。而对于不同插补类型,只要找准对应线长的表示,不需要对算法本身进行修改,就可以完成相应的轨迹插补。本算法应用于“昆山一号”焊接机器人中,表明其满足焊接实时性和可调速性要求。 关键词:工业机器人;实时插补;算法;轨迹规划 示教再现方式下的轨迹插补算法是工业机器人的一个传统课题[1],技术和方法比较成熟有效。文献[2-4]分别解决了直线、圆弧、样条曲线等单一类型的轨迹插补,文献[5,6]讨论了复杂曲线在编程时用分段直线或圆弧进行拟合插补的方法,文献[7]研究了关节空间和笛卡儿空间的通用插补算法,把插补段分为加速段、匀速段、减速段进行插补, 但算法复杂,运算量大,且不能进行实时控制。此外,时间上满足实时性的轨迹插补方法也得到了研究[3,4]。但是既满足实时性要求又能够进行平滑调速并且能够同时完成关节空间和笛卡儿空间各种类型插补的通用轨迹插补算法却比较少见。 本文介绍工业机器人的实时轨迹插补算法。它是为满足“昆山一号”焊接机器人的实时性而设计的,实时性包含两层涵义,一是满足时间上的实时性,即在一个采样周期内能够完成一次轨迹插补,多数算法能够满足这层要求;而实时性第二层涵义是系统能够在完成机器人当前轨迹插补的同时,实现在线调整插补参数,改变机器人当前插补方程,从而改变机器人运动轨迹与状态,本文的算法很好地完成了这层实时性的要求。并且这种算法能够完成PTP (点到点)、多点关节空间、直线、圆弧、样条曲线、FlyBy [8,9]等多种类型的轨迹插补。

五子棋AI算法的改进方法

又是本人一份人工智能作业……首先道歉,从Word贴到Livewrter,好多格式没了,也没做代码高亮……大家凑活着看……想做个好的人机对弈的五子棋,可以说需要考虑的问题还是很多的,我们将制作拥有强大AI五子棋的过程分为十四步,让我来步步介绍。 第一步,了解禁手规则 做一个五子棋的程序,自然对五子棋需要有足够的了解,现在默认大家现在和我研究五子棋之前了解是一样多的。以这个为基础,介绍多数人不大熟悉的方面。五子棋的规则实际上有两种:有禁手和无禁手。由于无禁手的规则比较简单,因此被更多人所接受。其实,对于专业下五子棋的人来说,有禁手才是规则。所以,这里先对“有禁手”进行一下简单介绍: 五子棋中“先手必胜”已经得到了论证,类似“花月定式”和“浦月定式”,很多先手必胜下法虽然需要大量的记忆,但高手确能做到必胜。所以五子棋的规则进行了优化,得到了“有禁手”五子棋。五子棋中,黑棋必然先行。因此“有禁手”五子棋竞技中对黑棋有以下“禁手”限制:“三三禁”:黑棋下子位置同时形成两个以上的三;“四四禁”:黑棋下子位置同时形成两个以上的四;“长连禁”:六子以上的黑棋连成一线。黑棋如下出“禁手“则马上输掉棋局。不过如果“连五”与“禁手”同时出现这时“禁手”是无效的。所以对于黑棋只有冲四活三(后面会有解释)是无解局面。反观白棋则多了一种获胜方式,那就是逼迫黑棋必定要下在禁点。 为了迎合所有玩家,五子棋自然需要做出两个版本,或者是可以进行禁手上的控制。 第二步,实现游戏界面 这里,我制作了一个简单的界面,但是,对于人机对弈来说,绝对够用。和很多网上的精美界面相比,我的界面也许略显粗糙,但,开发速度较高,仅用了不到半天时间。下面我们简单看下界面的做法。 界面我采用了WPF,表现层和逻辑层完全分开,前台基本可以通过拖拽完成布局,这里就不做过多介绍。根据界面截图简单介绍

五子棋人机对战算法分析

总的来说,要让电脑知道该在哪一点下子,就要根据盘面的形势,为每 一可能落子的点计算其重要程度,也就是当这子落下后会形成什么棋型(如:“冲四”、“活三”等),然后通览 全盘选出最重要的一点,这便是最基本的算法。当然,仅靠当前盘面进行判定是远远不够的,这样下棋很轻易掉进 玩家设下的陷阱,因为它没有考虑以后的变化。所以在此基础上我们加入递归调用,即:在电脑中猜测出今后几步 的各种走法,以便作出最佳选择,这也是我们下棋时常说的“想了几步”。如此一来您的程序便具有一定的水平了。 什么?不信!过来试试吧! 总体思路弄清之后,下面进行具体讨论: 一:数据结构 先来看看数据结构,我们需要哪些变量? 首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个15*15的二维数组Table[15][15] (15*15是 五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用…0?表示空位、…1?代表己方的子、…2? 代表对方的子;这张表也是今后分析的基础。 在此之后还要为电脑和玩家双方各建立一张棋型表Computer[15][15][4]和 Player[15][15][4],用来存放棋型 数据,就是刚才所说的重要程度,比如用…20?代表“冲四”的点,用…15?代表“活三”的点,那么在计算重要 性时,就可以根据20>15得出前者比后者重要,下子时电脑便会自动选择“冲四”的点。那为什么棋型表要使用三 维数组呢?因为棋盘上的每一个点都可以与横、竖、左斜、右斜四个方向的棋子构成不同的棋型,所以一个点总共 有4个记录;这样做的另一个好处是可以轻易判定出复合棋型,例如:假如同一点上有2个…15?就是双三、有一个…15?和一个…20?就是四三。 怎么样!3个数组构成了程序的基本数据骨架,今后只要再加入一些辅助变量便可以应付自如了。应该不会太 难吧?OK!有了这么多有用的数据,我们就可以深入到程序的流程中去了。 二:程序流程 我们主要讨论五子棋的核心算法,即:人工智能部分,而其他像图形显示、键盘鼠标控制等,因较为简单,所 以就不作过多介绍了。 我们看到本程序由六个基本功能模块构成,各模块的具体分析如下: (1)初始化:首先,建立盘面数组Table[15][15]、对战双方的棋型表Computer[15][15][4]和Player[15] [15][4]并将它们清零以备使用;然后初始化显示器、键盘、鼠等输入输出设备并在屏幕上画出棋盘。 (2)主循环控制模块:控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当一个

工业机器人的轨迹规划和控制

工业机器人的轨迹规划和控制 S. R. Munasinghe and Masatoshi Nakamura 1.简介 工业机器人操作臂被用在各种应用中来实现快速、精确和高质量的生产。在抓取和放置操作,比如对部分的操作,聚合等,操作臂的末端只执行器必须在工作空间中两个特定的位置之间移动,而它在两者之间的路径却不被关心。在路径追踪应用中,比如焊接,切削,喷涂等等,末端操作器必须在尽可能保持额定的速度下,在三维空间中遵循特定的轨迹运动。在后面的事例中,在对末端操作器的速度、节点加速度、轨迹有误等限订的情况下轨迹规划可能会很复杂。在没有对这些限制进行充分考虑的情况下进行轨迹规划,通常会得到很差的表现,比如轨迹超调,末端操作器偏离给定轨迹,过度的速度波动等。机器人在笛卡尔轨迹中的急弯处的的表现可能会更加恶化。到目前为止很多轨迹规划算法己经被提出,从笛卡尔轨迹规划到时间最优轨迹规划。然而,工业系统无法适应大多数的这些方法,有以下两点原因:(1)这些技术经常需要进行在目前机构中进行硬件的移动,生产过程必须被打断以进行系统重新配置,而这往往需要很长时间。(2)这些方法中很多通常只考虑到一种约束,而很少关注工业的需求和被请求的实际的约束。因此,它们很难在

工业中实现。 在本文的观点中,我们提出了一种新的轨迹规划算法,考虑到了末端操作器的速度限制,节点加速度限制,应用中的容错度。这些是在工业应用中实际的约束。其他工业操作臂中的技术问题是他们的动力学延迟,这导致末端操作臂在轨迹中的拐角处出轨。为了补救这个问题,我们设计了前向补偿,稍稍改变了拐角处的路径,使得即使在延迟动力学环节存在的情况下依然确保末端操作臂的实际跟踪轨迹。结合了前向补偿新的轨迹规划算法在控制系统中表现为单一的前向阻塞。它可以轻松地适应目前的工业操作臂系统,不冒风险,不花费时间重新配置硬件。 轨迹规划算法可以为所有操作臂的节点产生位置,速度和加速度的大体规划。在大多数工业操作臂中,系统输入是节点的位置数据,这在工业中是作为被给定的数据而广为人知的。为了用笛卡尔轨迹规划来控制操作臂,Paul描述了同类型的转换是怎样可以被用来代表一系列操作臂连杆的位置和原点的。Shin et.al.的工作和我们的很相似,但是实现在工业控制系统中的应用是很困难的,因为它需要知道很多操作臂的连杆和节点的参数。在大多数工业操作比系统中,这些参量并不能被精确的获知。 在我们之前的工作中我们解决了在二维空间中加速度和速度的约束,在目前的工作中,当我们考虑到容差度,我

机器人运动算法

1、简介 机器人的应用越来越广泛,几乎渗透到所有领域。移动机器人是机器人学中的一个重要分支。早在60年代,就已经开始了关于移动机器人的研究。关于移动机器人的研究涉及许多方面,首先,要考虑移动方式,可以是轮式的、履带式、腿式的,对于水下机器人,则是推进器。其次,必须考虑驱动器的控制,以使机器人达到期望的行为。第三,必须考虑导航或路径规划,对于后者,有更多的方面要考虑,如传感融合,特征提取,避碰及环境映射。因此,移动机器人是一个集环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统。 腿式机器人的腿部具有多个自由度,使运动的灵活性大大增强.它可以通过调节腿的长度保持身体水平,也可以通过调节腿的伸展程度调整重心的位置,因此不易翻倒,稳定性更高. 腿式机器人也存在一些不足之处.比如,为使腿部协调而稳定运动,从机械结构设计到控制系统算法都比较复杂;相比自然界的节肢动物,仿生腿式机器人的机动性还有很大差距. 腿的数目影响机器人的稳定性、能量效率、冗余度、关节控制的质量以及机器人可能产生的步态种类. 2、研究方法 保持稳定是机器人完成既定任务和目标的基本要求.腿式机器人稳定性的概念: 支持多边形(supportpolygon) 支持多边形的概念由Hildebrand首先提出,用它可以方便地描述一个步态循环周期中各个步态的情况.支持多边形指连接机器人腿部触地各点所形成的多边形在水平方向的投影.如果机器人的重心落在支持多边形内部,则认为机器人稳定. 算人物脚步放置位置及达到目标位置的走法是行走技术的重要环节。 2.1 控制算法 (1)姿态控制算法 这种算法的基本思想是:已知机器人的腿对身体共同作用产生的力和力矩向量,求每条腿上的力.用数学语言表达如下(假设机器人有四条腿): 其中和z已知,要求,解出这几个力,通过控制每条腿上的力向量,就可以使机器人达到预定的姿态,实现了机器人姿态的可控性,以适应不同地形. (2)运动控制算法 这个暂时不知道 (3)步态规划算法 这种算法的基本思想是:已知机器人的腿部末端在坐标系中的位置,求腿部各个关节的关节角.当关节角确定后,就可以构造机器人的步态模式.可用算法有ZMP算法、离线规划算法。 步态规划就是基于当前系统状态设计一种算法,得到期望的控制序列。步态规划在控制

五子棋核心算法

五子棋的核心算法 时间:2010-03-26 20:50来源:网络作者:佚名点击:3115次 介绍了五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。 五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。 一、相关的数据结构 关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。 1CList StepList; 2//其中Step结构的表示为: 3 4struct Step 5{ 6int m;//m,n表示两个坐标值 7int n; 8char side;//side表示下子方 9}; 10//以数组形式保存当前盘面的情况, 11//目的是为了在显示当前盘面情况时使用: 12char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 13 14//其中FIVE_MAX_LINE表示盘面最大的行数。 15 16//同时由于需要在递归搜索的过程中考虑时间和空间有效性, //只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索, //这里用变量CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合: 17 18CList CountList; 19//其中类CBoardSituiton为: 20class CBoardSituation 21{ 22CList StepList; //每一步的列表 23char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 24struct Step machineStep;//机器所下的那一步

五子棋几种算法详解

五子棋几种算法详解 算法一: 这里讲述棋盘大小为10×10的人机对战五子棋实现方法,要看完整代码请看Java做的五子棋 1.概述 玩家每走一步,对于玩家和计算机,都根据获胜表对棋盘各个空棋位进行评分,每个位置的分数与下面这句话有关:该位置所在的每一种获胜组合中已经拥有的棋子数,然后对玩家和计算机产生的分数均衡,以判断计算机是进攻还是防守。 2.数据结构 10×10的数据,用来记录棋盘状态; 两个获胜表([10][10][192]),也就是获胜组合,因为五个子一线则胜,不在一线上的五个子就不在一个组合中,对于10×10的棋盘获胜的组合有192种,下面将会详细说明,获胜表用来表示棋盘上的每个位置是否在玩家或计算机的获胜组合中; 一个二维数组([2][192]),记录玩家与计算机在各种获胜组合中填入了多少棋子; 两个10×10的数组,用来记录玩家与计算机在各个棋盘位置上的分数,分数高的将是计算机下一步的着法。 3.计算获胜组合

上图是一个10×10的五子棋棋盘,我们可以得出垂直方向上的获胜组合是10×6=60,同理,水平方向的获胜组合也是60,而两个倾斜方向上的获胜组合是(1+2+3+4+5)×2+6=36,即: 60*2+36*2=192。 4.评分 用两个数组存储每个棋位的分数,一个是计算机的,另一个是玩家的,表示该位置对于各方是最佳着法的肯定程度,对一个位置的评分就是:遍历该位置所在的每一种获胜组合,根据这个组合中已经拥有的己方棋子数1到4分别加不同分数,最后将这些所有的获胜组合所得出的分数相加就是该位置的分数,下图是对于黑方各棋位的评分(其中的1,2,3,4这几个值要根据实际需要来确定)。 5.思路

步进电机插补算法stm

#include "" #include "" #include "" #include <> #include "" #include "" #include "" #include <> void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void TIM_Configuration(void); void USART_Configuration(void); int fputc(int ch,FILE *f); int fgetc(FILE *f);

float Mx=,My=; * This file provides template for all exceptions handler and * peripherals interrupt service routine. ************************************************************************ ****** * @copy * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

工业机器人的运动轨迹

专题综述 课程名称工业自动化专题 题目名称工业机器人的运动轨迹学生学院____ _ 自动化________ 专业班级___ _ _ 学号 学生姓名___ _ _ 指导教师_____ _____ 2013 年 6月 27日

工业机器人的运动轨迹综述 【摘要】:随着知识经济时代的到来,高技术已成为世界各国争夺的焦点,机器人技术作为高技术的一个重要分支普遍受到了各国政府的重视。自此,多种不同的研究方向都在工业机器人实时高精度的路径跟踪来实现预期目的。而工业机器人的运动轨迹又是重中之重,在得到反馈信息之后,如何作出应答,并且实时检查轨迹与所计算出的轨迹是否吻合,为此也要进行追踪与动作修正。 【关键词】:工业机器人,视觉,路径跟踪,轨迹规划,高精度 1.机器人视觉,运动前的准备 实际的工业现场环境复杂,多种因素都有可能导致系统在运行过程中产生一定的偏差、测量精度降低,引起误差的原因主要有温度漂移和关节松动变形等,使测量模型的参数值改变从而导致定位误差增大,因此需要定期对工业机器人视觉测量系统进行精确的校准,从而实现精确定位和视觉测量。更少不得必要的优化。 1.1基于单目视觉的工业机器人运动轨迹准确度检测 建立的工业机器人单目视觉系统,整个系统主要由单目视觉单元,监控单元和机器人执行单元三大单元组成。单目视觉单元为一台固定在机器人上方的CCD摄像机,负责摄取工作环境中的目标并存入图像采集卡缓冲区;监控单元负责监控各工作站的当前状态,并完成对存储图像进行相关处理的工作,达到识别定位目标的目的;执行单元负责驱动机械手实施抓取操作。 1.2基于双目视觉的工业机器人运动轨迹准确度检测 以立体视觉理论为基础,研究了基于空间直线的二维投影面方程。根据投影面的空间解析几何约束关系,建立基于直线特征匹配的双目视觉误差测量的数学模型。在该模型基础上采用将两台摄像机固定于工业机器人末端的方案.对关节型工业机器人运动轨迹的准确度进行了检测。结果表明,该检测方法简单实用,基本上可以满足工业机器人CP性能检测的要求。 1.3一种面向工业机器人智能抓取的视觉引导技术研究 为实现工业机器人自主识别并抓取指定的目标,提出了一种基于计算机视觉引导的解决 方法。该方法利用指定目标的3D数据模型,以及由两台或者多台CCD摄像机从工作场景中不同角度获;取到的数字图像,经过目标姿态估算、投影计算并生成投影图像,再利用投影

步进电机插补算法stm

步进电机插补算法s t m 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

#include "" #include "" #include "" #include <> #include "" #include "" #include "" #include <> void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void TIM_Configuration(void); void USART_Configuration(void); int fputc(int ch,FILE *f); int fgetc(FILE *f);

float Mx=,My=; * This file provides template for all exceptions handler and * peripherals interrupt service routine. ************************************************************************ ****** * @copy * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE

五子棋算法详解

五子棋算法详解——解决方案之一 这里讲述棋盘大小为10×10的人机对战五子棋实现方法,要看完整代码请看AS3做的五子棋 1. 概述 玩家每走一步,对于玩家和计算机,都根据获胜表对棋盘各个空棋位进行评分,每个位置的分数与下面这句话有关:该位置所在的每一种获胜组合中已经拥有的棋子数,然后对玩家和计算机产生的分数均衡,以判断计算机是进攻还是防守。 2. 数据结构 10×10的数据,用来记录棋盘状态; 两个获胜表([10][10][192]),也就是获胜组合,因为五个子一线则胜,不在一线上的五个子就不在一个组合中,对于10×10的棋盘获胜的组合有192种,下面将会详细说明,获胜表用来表示棋盘上的每个位置是否在玩家或计算机的获胜组合中; 一个二维数组([2][192]),记录玩家与计算机在各种获胜组合中填入了多少棋子; 两个10×10的数组,用来记录玩家与计算机在各个棋盘位置上的分数,分数高的将是计算机下一步的着法。 3. 计算获胜组合

上图是一个10×10的五子棋棋盘,我们可以得出垂直方向上的获胜组合是 10×6=60,同理,水平方向的获胜组合也是60,而两个倾斜方向上的获胜组合是(1+2+3+4+5)×2+6=36,即: 60*2+36*2=192。 五子棋算法详解本文链 接:https://www.360docs.net/doc/1817256154.html,/wwwanq/blog/item/66a9f4c5f390cdc338db497f.htm l 4. 评分 用两个数组存储每个棋位的分数,一个是计算机的,另一个是玩家的,表示该位置对于各方是最佳着法的肯定程度,对一个位置的评分就是:遍历该位置所在的每一种获胜组合,根据这个组合中已经拥有的己方棋子数1到4分别加不同分数,最后将这些所有的获胜组合所得出的分数相加就是该位置的分数,下图是对于黑方各棋位的评分(其中的1,2,3,4这几个值要根据实际需要来确定)。 5. 思路

机器人逆运动学求解的可视化算法

2006年7月 July 2006 计 算 机 工 程 Computer Engineering 第 第14期Vol 32卷 .32 № 14 ·多媒体技术及应用· 文章编号:1000—3428(2006)14—0193—03 文献标识码:A 中图分类号:TP249 机器人逆运动学求解的可视化算法 周芳芳,樊晓平,赵 颖 (中南大学信息科学与工程学院自动化工程研究中心,长沙 410075) 摘 要:机器人逆运动学求解的可视化算法包含两部分,数值求解两个(或一个)非线性方程和4(或5)自由度机器人封闭解,实现了任意结构的6自由度机器人的逆运动学方程的求解,根据D-H 参数表生成机器人三维模型实现机器人结构的可视化,有效地判断逆解的合理性,并为机器人学习提供了辅助工具。 关键词:机器人;逆运动学;可视化;数值计算 Visual Algorithm of Robot Inverse Kinematics ZHOU Fangfang, FAN Xiaoping, ZHAO Ying (Research Center for Automation Engineering, College of Information Science and Engineering, Central South University, Changsha 410075) 【Abstract 】This paper introduces the robotic inverse kinematics visual algorithm which includes two parts. Firstly two (or one) non-linear equations are numerically computed, and then the remaining four (or five) joint values are determined in closed form once two (or one) joint values are known. And the visualization of the robot models produced by D-H parameters is used to determine the solutions effectively. 【Key words 】Robot manipulator; Inverse kinematics; Visualization; Numerical computer 机器人的可视化技术的研究可以帮助学习和研究机器人,减少分析和学习的时间,深入理解机器人的基本概念和研究的难点。机器人逆运动学求解的可视化算法通过数值计算快速求解任意结构的6自由度机器人的逆解,并将求解的结果可视化,有效地判断逆解的合理性,同时为机器人运动学的学习提供了辅助工具。 Pieper 最早提出含有3个相邻关节轴互相垂直(或平行)的6自由度机器人可以求逆运动学封闭解[1],求解的过程被简化为计算四元多项式方程。为了机器人的学习和研究需要求解一般结构的6自由度机器人的逆运动学方程,目前多采用数值计算的方法通过计算逆Jacobin 矩阵求解任意结构的6自由度机器人的运动学方程[3,4]。但该方法需要数值求解6个非线性方程,不仅计算量大,而且会产生不符合实际物理约束的多余解。 本论文介绍的求解方法建立在4、5自由度机器人的运动学求解的基础之上[5],将6自由度机器人逆运动学方程求解的过程简化为计算两个非线性方程。并且利用D-H 参数表产生机器人模型,利用解的可视化来判断解的有效性,排除不合理的逆解。 1运动学的定义 机器人运动学方程定义为 123456A A A A A A P = (1) 矩阵A i 定义为 00 1i i i i i i i i i i i i i i i i i i C S C a S S C S a C A d γσσγσγ????????=?????? 其中C i =cos θi ,S i =sin θi ,σi =sin αi ,γi =cos αi 。已知方程(1)中的角度θ,求解目标点的位姿P 为正运动学求解。 末端执行器的位姿矩阵可表示为 00010 1x x x x y y y y z z z z n b t p n b t p n b t p P n b t p ????????== ?????? ???? 其中n ,b ,t ,p 是3×1向量。已知末端执行器的位姿P 求解关节变量角θ为逆运动学求解。 2 机器人逆运动学求解 本文求解的是任意结构的6自由度机器人的逆运动学方程。求解的方法有以下3个特点: (1)该方法建立在4、5自由度机器人的运动学求解的基础之上[5],可以更好地理解6自由度机器人的结构和计算; (2)把6自由度机器人逆运动学方程求解的过程简化为数值计算两个非线性方程; (3)利用末端执行器的非完整性约束可进一步简化求解过程。 求解思路:考虑6自由度机器人杆件结构,对不同的结构采用不同的求解方法。通过分析主要有3种情况,如图1。 (1)对无垂直或无平行关节轴的6自由度机器人,首先化简为4自由度机器人,然后二维迭代求解2个关节变量,最后封闭求解其余4个变量; (2)对包含一对垂直或平行的关节轴的机器人,则化简为5自由度机器人,一维迭代求解1个关节变量,封闭求解另外5个变量; (3)对于包含3个相邻或3个以上的垂直或平行的关节轴机器人,可以直接求解6个关节变量。 基金项目:国家自然科学基金资助项目(69975003) 作者简介:周芳芳(1980—),女,博士,主研方向:虚拟现实技术,计算机网络,机器人仿真;樊晓平,博士、教授、博导;赵 颖,硕士 收稿日期:2005-07-27 E-mail :zff@https://www.360docs.net/doc/1817256154.html, —193—

人机对战五子棋经典算法

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。 一、相关的数据结构 关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。 CList StepList; 其中Step结构的表示为: struct Step { int m; //m,n表示两个坐标值 int n; char side; //side表示下子方 }; 以数组形式保存当前盘面的情况, 目的是为了在显示当前盘面情况时使用: char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 其中FIVE_MAX_LINE表示盘面最大的行数。 同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合: CList CountList; 其中类CBoardSituiton为: class CBoardSituation { CList StepList; //每一步的列表 char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; struct Step machineStep; //机器所下的那一步 double value; //该种盘面状态所得到的分数 } 二、评分规则 对于下子的重要性评分,需要从六个位置来考虑当前棋局的情况,分别为:-,¦,/,\,//,\\ 实际上需要考虑在这六个位置上某一方所形成的子的布局的情况,对于在还没有子的地方落子以后的当前局面的评分,主要是为了说明在这个地方下子的重要性程度,设定了一

_S_型加减速曲线在机器人轨迹插补算法中的应用研究_刘鹏飞

0 引言 工业机器人在一些应用领域如焊接和喷涂等需要对末端执行器运动的轨迹进行严格控制,这种控制称CP 控制(Continuous Path Control)[1],需要在笛卡尔空间内进行轨迹插补。用示教或离线编程的方式告诉机器人路径中的若干点,以及各点之间所走的路径是直线和圆弧等,控制器根据插补算法自动生成路径上的中间点,机器人运行后自动重复上述的路径。 轨迹插补不仅是对位置的插补,也是对速度和加速度的插补[2]。不但要求插补点的位置严格在规定路径上,而且要求末端执行器的速度连续变化,在精度速度要求更高的场合要求加速度也是连续变化的。 1 笛卡尔空间插补概念 1.1 位姿描述 机器人末端的位姿由齐次变换矩阵 描述, 其子矩阵 ‘S’型加减速曲线在机器人轨迹插补算法中的 应用研究 The study of S-curve’s application on manipulator’s trajectory interpolation algorithm 刘鹏飞,杨孟兴,宋 科,段晓妮 LIU Peng-fei, YANG Meng-xing, SONG Ke, DUAN Xiao-ni (中国航天科技集团 第16研究所,西安 710100) 摘 要: 本文用位置向量和姿态四元数描述机器人末端的位姿以减少实时插补的计算量。在分析传统笛卡尔空间插补算法的基础上,提出将‘S’型加减速曲线应用于机器人笛卡尔空间插补算法中。使机器人 末端沿直线或圆弧切线方向速度的大小呈‘S’ 型加减速规律变化,达到了速度和加速度平稳变化的要求,减小了对机器人驱动器和机械结构的冲击。针对‘S’型加减速曲线的生成算法以及归一化方法进行推导,分析并给出了相应的机器人直线和圆弧的插补方法。通过对一段直线和一段圆弧的插补仿真验证,表明该算法能使机器人末端的位姿及其一阶导数都连续平滑变化,满足应用要求。 关键词: 四元数;轨迹规划;S型加减速曲线;直线插补;圆弧插补 中图分类号:TP242 文献标识码:A 文章编号:1009-0134(2012)10(下)-0004-06Doi: 10.3969/j.issn.1009-0134.2012.10(下).02 为旋转矩阵,描述姿态;位置矢量 描述位置。旋转矩阵中的9个元素是相关的且只有3个独立变量,所以插补运算时需寻求更精简的姿态描述方式。 通常,用姿态角(回转、俯仰、偏转)[2]、欧拉角、等效旋转矢量和四元素这四种方式描述姿态,这四种表示方法是等效的,它们和姿态旋转矩阵之间转换方法参考文献[2]。本文用位置矢量和姿态四元数的组合描述位姿: 其中:P 是位置矢量;Q 是姿态四元数,是四元数的矢量部分, 四元数的标量部分,n 和j 分别是等效旋转轴和等效旋转角。用这种方法描述位姿应用于插补运算时的计算量最小[3]。 为了避免与机器人机械产生共振,插补周期应控制1-5ms 以内[4]。在每个插补周期内计算机 收稿日期:2012-04-24 基金项目:国家战略性新兴产业高端装备专项([2012]432) 作者简介:刘鹏飞(1988-),男,内蒙古人,研究生在读,研究方向为工业机器人插补技术。

人工智能-五子棋算法研究

五子棋算法研究 摘要:人工智能是一门正在迅速发展的新兴的综合性很强的边缘科学。博弈是人工智 能的主要研究领域之一,他涉及人工智能中的推理技术、搜索方法和决策规划。本文 将这些技术用于五子棋中。设计了一个智能五子棋系统,实现人和计算机两方进行博弈。 关键词:五子棋,人工智能,搜索 Gobang algorithm to research CAI Jie Information and Computational Science, Grade 2003 Directed by WANG Jian (Associate Professor) Abstract:Artificial intelligence is a newly-developed and highly comprehensive frontier science of rapid development.Gambling and chess is one of the major artificial intelligence research areas.It involves reasoning,decision—making and planning.These techniques are applied to the goban g.An intelligent gobang system is designed and realized in the game between human and compute r. Keywords: Gobang, Artificial intelligence, Search 1绪论 在人类文明发展的初期,人们便开始进行棋类博弈的游戏了。在人工智能领域内,博弈是很重要的一个研究分支,很多实际问题可以在博弈的研究中得到解决,并且使计算机智能更加靠近人类智能。电脑博弈是人工智能研究的一个方向,到了近50年前,随着电子计算机的诞生,科学家们开始通过电脑模拟人的智能逐步向人类智能发起挑战,香农(1950)与图灵(1953)提出了对棋类博弈程序的描述,随着电脑硬件和软件的高速发展,从1980开始,电脑博弈便开始逐渐大规模地向人的智能发起了挑战,到了1997年,IBM超

相关文档
最新文档