下面创建一个两个连杆的机械臂,它具有下面标准的D-H参数
Link | a i a_i ai | α i \alpha_i αi | d i d_i di | θ i \theta_i θi |
---|---|---|---|---|
1 | 1 | 0 | 0 | θ 1 \theta_1 θ1 |
2 | 1 | 0 | 0 | θ 2 \theta_2 θ2 |
我们设置连杆的长度为1,下面创建两个连杆对象
>> L1=Link([0 1 0 0 0],'standard')
L1 =
Revolute(std): theta=q, d=1, a=0, alpha=0, offset=0
>> L2=Link([0 1 0 0 0],'standard')
L2 =
Revolute(std): theta=q, d=1, a=0, alpha=0, offset=0
% 然后,将两组连杆连接到一起
>>r=SerialLink([L1 L2], 'name', 'myRobot')
r =
myRobot:: 2 axis, RR, stdDH, slowRNE
+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 1| 0| 0| 0|
| 2| q2| 1| 0| 0| 0|
+---+-----------+-----------+-----------+-----------+-----------+
前面两行命令创建连杆对象,注意连杆的第二个变量指定使用标准的D-H参数(这实际是默认的)。连杆的参数可以通过以下命令来查看:
>>help Link
%连杆或机械臂参数查询
>> L1.d
ans =
1
%机械臂的连杆数
>> r.n
ans =
2
工具箱Toolbox的机器人对象(例如上面的r)存储了机器人的运动学和惯性参数。
下面示例代码建立一个六自由度机器人
clear
clc;
close('all');
%随意建立一个机器人
PM_PI=3.1415926;
deg=PM_PI/180;
%%dh参数建模
% theta d a alpha sigma
ML1 = Link([ 0, 0.4967, 0, 0, 0], 'modified');
ML2 = Link([ 0, -0.18804, 0.2, 3*PM_PI/2, 0], 'modified');
ML3 = Link([ 0, 0.17248, 0.79876, 0 , 0], 'modified');
ML4 = Link([ 0, 0.98557, 0.25126, 3*PM_PI/2, 0], 'modified');
ML5 = Link([ 0, 0, 0, PM_PI/2 , 0], 'modified');
ML6 = Link([ 0, 0, 0, PM_PI/2 , 0], 'modified');
robot = SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','test\_robot');
robot.teach(); %可以自由拖动的关节角度
hold on;