1机器人控制基础32学时2学习本门课程有什么用?1入门,为进一步研究做准备2毕业设计3学分3教材JohnJ.Craig,机械工业出版社,2006.64主要掌握的内容1机器人的动力学模型(主要掌握)2机器人的基本控制方法5需要的基本知识:(1)理论力学;(2)控制理论;(3)Matlab;(4)微分方程和线性代数.第一章绪论1机器人的基本概念;什么是机器人?2机器人动力学与控制简介。(本课主要内容简介)7机器人“HRP-4C”在欢迎游客,售价大约为15万英镑这是世界上第一款时装模特机器人8你能想想一个骑自行车的机器人能够拥有连人类都无法做到的平衡能力吗?近日,来自日本的一款名为MurataBoy的平衡机器人就让人们大跌眼镜。它可以通过内置的多个感应器配合智能调节装置保持机器人近乎完美的平衡状态,甚至在完全静止的时候都可以纹丝不动。前置的超声感应装置还可以让机器人在遇到无法逾越的障碍物时自动停止,避免事故的发生。9苹果MP4机器人101.1机器人的基本概念1.1.1机器人的发展历史(1)东汉张衡发明的指南车;(2)1768-1774,瑞士钟表匠制作的木偶机器;(3)1920年,捷克剧作家KarelCapek首次提出Robota一词;(4)1950年,美国科幻作家Assimov提出了机器人三守则;(5)1954年,美国人设计了第一台电子可编程机器人;(6)1962年,美国GM公司设计使用的第一台机器人Unimate。11指南车木偶机器人12KarelCapekAssimov13可编程机器人Unimate14(7)1980年;机器人在日本得到普及;此年称为‘机器人元年’;(8)1995年——今,机器人的产量每年递增,机器人产业兴起;(9)机器人学兴起,机器人向智能化发展。机器人常见的杂志IEEE《RoboticsResearch》《Robotics》《RoboticsandAutomation》机器人研究:美国的MIT机器人生产大国日本15(1)国际标准化组织(ISO)的定义:机器人是一种自动的、位置可控的、具有编程能力的多功能机械手,这种机械手具有几个轴,能够借助于可编程序操作来处理各种材料、零件、工具和专用装置,以执行各种任务。(2)美国机器人协会(RIA)的定义:机器人是一种用于移动各种材料零件、工具和专用装置的,通过可编程序动作来执行各种任务的,具有编程能力的多功能机械手。1.1.2机器人的定义16(3)日本工业机器人协会(JIRA)的定义:工业机器人是一种装备有记忆装置和末端执行器的、能够转动并通过自动完成各种移动来替代人类劳动的通用机器。(2)美国国家标准局(NSB)的定义:机器人是一种能够进行编程并在自动控制下执行某些操作和移动作业任务的机械装置。1.1.2机器人的定义17(1)机器人的动作机构类似于人或人的某些器官;(2)机器人具有一定程度的智能;(3)机器人具有通用性;(4)机器人具有独立性,一旦工作程序设定,机器人在工作时不需要人的干预;(5)机器人是人造的机械装置。根据定义,可见机器人具有如下特点18(1)按代替人的器官分:操作机器人、移动机器人、视觉机器人(2)按用途分:工业机器人、极限操作/探索机器人、娱乐机器人(3)按控制方式分:操纵机器人、程序机器人、示教再现机器人、数控机器人、智能机器人1.1.3机器人的种类19深蓝计算机工业机器人5公斤搬运机器人20电子狗火星探测器电子眼数据手套“汇童”仿人机器人表演太极拳211.2操作臂的机构与控制本课程的一些内容:操作臂的动力学操作臂的控制222324控制任务是:把物体从A点移动到B点。25具体说来有以下内容本课程的一些内容1.2.1位姿描述坐标系基坐标系工具坐标系261.2.2操作臂正运动学运动学(Kinematics)连杆、关节转动关节:关节角移动关节:关节偏距自由度末端执行器272829正运动学:给定一组关节角,计算工具坐标系到基坐标系的位姿表示,即关节空间到笛卡尔空间的变换。301.2.3操作臂逆运动学逆运动学逆运动学:给定操作臂末端执行器的位置和姿态,计算所有可达位置和姿态的关节角。操作臂的工作空间311.2.4速度、静力、奇异性机构奇异性奇异点:雅可比矩阵不可逆的点。雅可比矩阵:关节空间的速度到笛卡尔空间速度的映射。关节力矩到接触力和力矩的计算用到雅可比矩阵32331.2.5动力学动力学的第二个作用是进行仿真。动力学:为了控制操作臂的运动,计算出通过关节驱动产生的复杂力矩函数。仿真:模拟,simulation,建立模型;在计算机上做实验。341.2.6轨迹生成路径点轨迹生成:如何计算运动函数。样条函数笛卡尔路径生成35用Matlab画出的三次样条函数00.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.936焊接机器人3738391.2.7操作臂的设计与传感器专用机器人:为特定任务设计的机器人。主要从预期任务进行考虑通用机器人:能完成某几类任务的机器人。401.2.8操作臂的线性位置控制核心是知道动力学方程,主要讲一下独立关节控制和PID控制控制算法对位置和速度传感器进行检测,以计算出驱动器的力矩指令。411.2.9操作臂的非线性位置控制非线性控制系统力控制是位置控制的补偿混合控制方式,也就是说,在某些方向上用位置控制法则来控制,而其余方向通过力控制来实现。421.2.10可编程机器人机器人编程语言是用户和工业机器人交互的接口。操作者将操作臂手臂上一个特殊的点指定为操作点,有时也叫做TCP(工具中心点),操作者可以操作点相对于用户坐标系的期望位置来描述机器人的运动。431.2.11离散编程和仿真离散编程系统是一个机器人编程环境。可以认为是一个仿真平台。44附录A:Matlab语言A.1:数据类型A.1.1:常量与变量1.变量2.常量piepsinfNaNi(j)45pians=3.1416formatlong,pians=3.1415926535897946A.1.2:Matlab数据类型1.数字变量abs(x)sqrt(x)real(x)image(x)round(x)sin(x)cos(x)tan(x)asin(x)accos(x)atan(x)atan2(x,y)变量的显示格式:formatlongformatshort……………………472.字符串s='Iamastudent's=Iamastudents=char('b','a','b','y');s'ans=baby483向量(1)向量的生成直接输入法:x=[2468]x=2468冒号:a=1:2:7a=1357函数命令:x=linspace(0,10,6)x=024681049(2)向量的引用X(n)X(n1:n2)x=[12345];x(1:3)ans=12350Isvector():判断是否为向量length():dot(a,b):cross(a,b):513矩阵(1)矩阵的生成直接输入法:A=[123;456;789]A=12345678952利用M文件创建在M文件:as36中输入:AA=[123456789];as36AAAA=12345678953特殊矩阵的创建zeros(m)zeros(m,n)eye(m)eye(m,n)ones(m)ones(m,n)rand(m)rand(m,n)……………………….54zeros(3)ans=000000000zeros(2,3)ans=00000055(2)矩阵元素的引用A(n,:)A(:,m)A(n,m)A=[123;456;789]A(:,3)ans=36956(3)矩阵元素的修改D=[A;BC]A(n,:)=[]A(:,m)=[]A(n,m)=aA(n,:)=[a,b,…]A(:,m)=[a,b,…]‘57A=[123;456];B=eye(2);BB=1001C=zeros(2,1)C=00D=[A;BC]D=12345610001058矩阵AD=size(A)[V,D]=eig(A)det(A)inv(A)rank(A)59例:A=magic(3)A=816357492D=size(A)D=33det(A)ans=-36060[V,D]=eig(A)V=-0.5774-0.8131-0.3416-0.57740.4714-0.4714-0.57740.34160.8131D=15.00000004.8990000-4.8990E=eig(A)E=15.00004.8990-4.899061inv(A)ans=0.1472-0.14440.0639-0.06110.02220.1056-0.01940.1889-0.1028rank(A)ans=362A.2:运算符A.2.1:算术运算符+-*/^A.2.2:关系运算符==~===A.2.3:逻辑运算符&~|xor63A.3:符号运算f=sym('sin(x)')f=sin(x)symsxyf=sin(x)+sin(y)f=sin(x)+sin(y)64findsym(f)ans=x,ysymsab;f1=subs(a+b,a,3)f1=3+b65A.4:M文件命令文件(脚本文件):s=1;fori=2:10s=s*i;enddisp('10的阶乘为:');sas3310的阶乘为:s=362880066whosNameSizeBytesClassi1x18doublearrays1x18doublearray67函数文件:functions=jiecheng(n)%此函数用来求非负整数n的阶乘,参数n要求非负ifn0error('输入参数不能为非负值');return;elseifn==0s=1;elses=1;fori=1:ns=s*i;endendendreturn;68jiecheng(10)ans=3628800jiecheng(-10)???Errorusing==jiecheng输入参数不能为非负值helpjiecheng此函数用来求非负整数n的阶乘,参数n要求非负69顺序结构:逐条运行命令例:求02cbxax的根a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a)(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),'x2=',num2str(x(2))]);a=?4b=?78c=?54x1=-0.7188x2=-18.7812A.6:程序设计70选择结构:if表达式执行语句end(1)条件判断(2)分支选择结构switch表达式case数值1程序模块1;case数值2程序模块2;……otherwise程序模块end71clearn=input('输入n=');switchfix(n/10)case{10,9}r='A';case8r='B'case7r='C'case6r='D'otherwiser='E'end打分程序输入n=88r=B72循环结构:for循环变量=起始值:步长:终止值执行语句endm=input('m=');p=2:m;fori=2:sqrt(m)n=find(rem(p,i)==0&p~=i);p(n)=[];endp用筛选法求素数求得结果m=100235711131719232931374143475359616771737983899773A.7:程序调试%此程序段用来演示break命令s=1;fori=1:100i=i+s;%keyboard;ifi50disp('已经大于50,终止循环');break;endendi74Kdbstopat5inas34Kii=10Kss=1K