基于MATLAB的机器人学、机器视觉与控制

本文深入探讨了使用MATLAB和Robotics Toolbox进行机器人运动学的研究,包括机械臂的描述、正运动学、逆运动学的计算以及轨迹规划。通过实例展示了两连杆和六轴(如Puma560)机器人的运动学分析,重点讲解了如何利用fkine和ikine函数解决正向和逆向运动问题。

  • 参考书目:《机器人学、机器视觉与控制——MATLAB算法基础》,Peter Corke
  • 准备工具:MATLAB,Robotics Toolbox[download],安装方法参考[blog]

根据毕业设计的要求,本文主要讨论机械臂动力学,视觉与控制

一、机械臂运动学

运动学是力学的一个分支,它在不考虑质量和作用力的前提下研究一个刚体,或者由多个刚体组成系统的运动。

1.描述一台机械臂

一个串联机械臂的整个链路是由一组被称为连杆的刚体组成的,这些连杆由关节(运动副)连接起来。每个关节有一个平移(滑动或移动副)或者转动(转动副)的自由度。关节的运动改变了其邻接连杆的相对角度和位置。
在这里插入图片描述

  • 使用工具箱中的 Link 对象来描述一个机器人连杆:
    在这里插入图片描述
>> L = Link([0, 0.1, 0.2, pi/2, 0])
 
L = 
Revolute(std): theta=q, d=0.1, a=0.2, alpha=1.5708, offset=0

输入向量的元素按顺序为:关节角,连杆偏移,连杆长度,连杆扭转角;第五个元素未指定则默认为转动关节。

  • 两连杆机器人
    D-H 参数如下所示,用这些参数创建一个 Link 对象的向量 L:
    在这里插入图片描述
>> L(1) = Link([0 0 1 0]);
>> L(2) = Link([0 0 1 0]);
>> L
 
L = 
Revolute(std):  theta=q1   d=0           a=1           alpha=0           offset=0          
Revolute(std):  theta=q2   d=0           a=1           alpha=0           offset=0          

这个向量将被传递给构造函数 SerialLink:

>> two_link = SerialLink(L, 'name', 'two link')
 
two_link = 
 
two link:: 2 axis, RR, stdDH, slowRNE                            
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|          0|          1|          0|          0|
|  2|         q2|          0|          1|          0|          0|
+---+-----------+-----------+-----------+-----------+-----------+

用以下指令,可以画出机器人的图形:

>> two_link.plot([0 0])
>> two_link.plot([pi/4 -pi/4])

在这里插入图片描述在这里插入图片描述

  • 六轴机器人
    以 Puma 560 机器人为例,使用如下指令定义一个 Puma 560 机器人的实例(工具箱自带模板指令来定义很多常见的工业机器人),它将在工作区中创建一个名为 p560 的 SerialLink 对象:
>> mdl_puma560
>> p560
 
p560 = 
 
Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, slowRNE            
 - viscous friction; params of 8/95;                             
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|          0|          0|     1.5708|          0|
|  2|         q2|          0|     0.4318|          0|          0|
|  3|         q3|    0.15005|     0.0203|    -1.5708|          0|
|  4|         q4|     0.4318|          0|     1.5708|          0|
|  5|         q5|          0|          0|    -1.5708|          0|
|  6|         q6|          0|          0|          0|          0|
+---+-----------+-----------+-----------+-----------+-----------+  

在这里插入图片描述

>> p560.plot(qz)
>> p560.plot(qr)
>> p560.plot(qs)
>> p560.plot(qn)

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.正运动学

在这里插入图片描述
在这里插入图片描述

  • 两连杆机器人 - planar2:
>> mdl_planar2 % 直接构造2连杆平面机器人,并创建名为 two_link 的 SerialLink 对象
>> two_link.fkine([0 0]) % q1 = 0, q2 = 0 时的变换矩阵
 

ans = 
         1         0         0         2
         0         1         0         0
         0         0         1         0
         0         0         0         1
>> two_link.fkine([pi/4 -pi/4]) % q1 = pi/4, q2 = -pi/4
 

ans = 
         1         0         0     1.707
         0         1         0    0.7071
         0         0         1         0
         0         0         0         1
  • 六轴机器人 - Puma 560:
>> mdl_puma560 % 直接构造 Puma 560 机器人,并创建名为 P560 的 SerialLink 对象
>> p560.fkine(qz) % 零角度时的变换矩阵
 

ans = 
         1         0         0    0.4521
         0         1         0     -0.15
         0         0         1    0.4318
         0         0         0         1
>> p560.fkine(qn) % 标准状态时的变换矩阵
 

ans = 
         0         0         1    0.5963
         0         1         0   -0.1501
        -1         0         0  -0.01435
         0         0         0         1

3.逆运动学

给定期望的末端执行器位姿,求取所需的关节坐标。一般而言,逆运动学的解不是唯一的,而且对于某些类型的机械臂甚至没有封闭形式的解存在,只能求出一个数值解

  • 封闭形式解 - ikine6s
    对于六轴机器人,其逆运动学具有封闭形式解的一个必要条件是:三个腕关节的轴相交于一个点。这意味着腕关节的运动只改变末端执行器的姿态,而不改变其位置
>> mdl_puma560
>> qn % 机器人标准状态的关节坐标

qn =

         0    0.7854    3.1416         0    0.7854         0

>> T = p560.fkine(qn) % 标准状态对应的末端执行器位姿
 

T = 
         0         0         1    0.5963
         0         1         0   -0.1501
        -1         0         0  -0.01435
         0         0         0         1
>> qi = p560.ikine6s(T) % ikine6s 方法计算其逆运动学的封闭解,要实现位姿 T,所需的关节坐标为 qi

qi =

    2.6486   -3.9270    0.0940    2.5326    0.9743    0.3734

由 qn 和 qi 的坐标比较可知,两组不同的关节坐标值得到了相同的末端执行器位姿,这两组坐标值对应的机器人位形如图所示:

在这里插入图片描述在这里插入图片描述
分别为左手运动学位形和右手运动学位形,一般来说,有8组不同的关节坐标值可以得到相同的末端执行器位姿

  • 数值解 - ikine
    对于不具有6个关节和球形腕关节的机器人,需要使用一种迭代数值解,使用 ikine 方法来计算一般逆运动学解:
>> mdl_puma560
>> qn % 机器人标准状态的关节坐标

qn =

         0    0.7854    3.1416         0    0.7854         0

>> T = p560.fkine(qn) % 标准状态对应的末端执行器位姿
 

T = 
         0         0         1    0.5963
         0         1         0   -0.1501
        -1         0         0  -0.01435
         0         0         0         1
>> qi = p560.ikine(T) % ikine 方法计算其逆运动学的封闭解,要实现位姿 T,所需的关节坐标为 qi

qi =

   -0.0000   -0.8335    0.0940    0.0000   -0.8312   -0.0000

4.轨迹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值