matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型

建立机器人模型)

机械臂

参考资料

建模

D-H参数

建关节

建立机器人

求初始机械臂状态,并显示

改进

另一种建模

机械臂

matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型_第1张图片

我使用的aubo的i5机械臂作为实验目标,也是用i5的D-H参数进行建模,前期使用matlab机器人工具箱进行仿真,熟悉机械臂的运动学算法,之后再在实际的机械臂上实验。

参考资料

我使用的是matliab机器人工具箱,具体的一些功能和操作可以参考:

清华大学出版社的《机器人仿真与编程技术》一书

以及我之前关于matlab机器人工具箱的7篇博文:

链接: 第一篇.等

建模

D-H参数

首先我们找到aubo_i5的D-H参数:

matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型_第2张图片

主要的参数d与a存入到matlab变量中

d1 = 0.122

d2 = 0.1215

a2 = 0.408

a3 = 0.376

d5 = 0.1025

d6 = 0.094

建关节

先熟悉Link:

>> Link

ans =

Revolute(std): theta=q, d=0, a=0, alpha=0, offset=0

根据D-H参数建立6个关节:

L(1)=Link([pi,d1,0,0],'modified')

L(2)=Link([-pi/2,d2,0,-pi/2],'modified')

L(3)=Link([0,0,a2,pi],'modified')

L(4)=Link([-pi/2,0,a3,pi],'modified')

L(5)=Link([0,d5,0,-pi/2],'modified')

L(6)=Link([0,d6,0,pi/2],'modified')

建立机器人

robot =SerialLink(L,'name','aubo_i5')

求初始机械臂状态,并显示

T = robot.fkine([0 0 0 0 0 0 ])

title("T")

robot.plot([0 0 0 0 0 0 ])

效果图:matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型_第3张图片

并且末端位姿为:

T =

1 0 0 0.784

0 0 1 0.2155

0 -1 0 0.0195

0 0 0 1

改进

但是到这里,我发现末端的姿态并不对,位置信息中x轴信息(0.784)不应该存在。机械臂各个Link中的theta似乎没有其作用。我自己尝试在定义Link的时候改变theta值,发现确实不起作用,只有在fkine求运动学正解的时候赋值(pi,-pi/2,0,-pi/2,0, 0)才会改变theta:

matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型_第4张图片

末端姿态也变成:

T =

1 0 0 0

0 0 -1 -0.2155

0 1 0 1.008

0 0 0 1

这会带来一个问题,实际电机的零位和模型零位不一致。看了Link的定义,发现theta的初始化受到offset的影响,除了前面的4个参数theta, d, a, alpha。第五个是关节类型,0为旋转,第六个就是offset,所以改变定义link的方式:

L(1)=Link([pi,d1,0,0,0,pi],'modified')

L(2)=Link([pi/2,d2,0,-pi/2,0,-pi/2],'modified',-pi/2)

L(3)=Link([0,0,a2,pi],'modified')

L(4)=Link([0,0,a3,pi,0,-pi/2],'modified',-pi/2)

L(5)=Link([0,d5,0,-pi/2],'modified')

L(6)=Link([0,d6,0,pi/2],'modified')

使得Link的参数变为:

robot =

aubo_i5:: 6 axis, RRRRRR, modDH, slowRNE

+---+-----------+-----------+-----------+-----------+-----------+

| j | theta | d | a | alpha | offset |

+---+-----------+-----------+-----------+-----------+-----------+

| 1| q1| 0.122| 0| 0| 3.14159|

| 2| q2| 0.1215| 0| -1.5708| -1.5708|

| 3| q3| 0| 0.408| 3.14159| 0|

| 4| q4| 0| 0.376| 3.14159| -1.5708|

| 5| q5| 0.1025| 0| -1.5708| 0|

| 6| q6| 0.094| 0| 1.5708| 0|

+---+-----------+-----------+-----------+-----------+-----------+

此时各个关节为0时,末端的位姿为:

T =

1 0 0 0

0 0 -1 -0.2155

0 1 0 1.008

0 0 0 1

matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型_第5张图片

至此初步建机器人模型成功

另一种建模

matlab可以直接读取URDF文件进行建模:

robot = importrobot('aubo_i5.urdf')

show(robot )

aubo的urdf模型和模型文件在git上:

链接: aubo_description.

在aubo_robot/aubo_description/里面有urdf和模型文件,如果用matlab读取urdf,需要把urdf中mesh filename属性修改,指到本地存mesh文件的地方。

修改后运行:

matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型_第6张图片具体的可以看我matlab工具箱的第8篇文章

链接: 通过URDF建立机器人模型.

你可能感兴趣的:(matlab机器人建立动力学模型,机械臂动力学建模(1)- 建立机器人模型)