MATLAB机器人工具箱【0】—— 安装+初步了解
此博客用于自己学习过程中的知识拾记与总结回顾,结合自己实际学习过程记录整理。
《Robotics,Vision & Control》这本书就是此工具箱的开发者撰写的,可以当做工具箱的详细说明书,另外还有 robot.pdf 这个函数使用说明文档,可以查看API。
1. Robotic toolbox安装过程记录
-
Step1
附上Robotic toolbox 下载网址(免费,需翻墙) https://petercorke.com/toolboxes/robotics-toolbox/
我下载的是10.2版本的,我的网盘链接:https://pan.baidu.com/s/15lh8ro4UPY1-hYxxpqWuDQ
提取码:o4u8 -
Step2
将下载的压缩包解压到MATLAB安装目录的 toolbox 文件夹下:
- Step3:打开MATLAB,点击菜单栏中的设置路径:
- Step4:点击添加文件夹,将刚刚解压到 toolbox 的文件 选择 添加:
- Step5:
在MATLAB命令行输入 startup_rvc ,进行安装:
- Step6:
输入ver,如果出现,则安装成功
2. 位姿描述
2.1 二维空间位姿描述
clc
clear
%% 二维空间位姿描述
T1=SE2(1,2,30*pi/180) %建立齐次坐标变换,代表(1,2)的平移和30°的旋转
trplot2(T1,'frame','1','color','b')%绘制变换坐标系,名字:{1} 颜色:蓝色
axis([0 5 0 5]);%坐标轴范围x为0-5 y为0-5
T2=SE2(2,1,0) %齐次坐标变换:平移(2,1)零旋转的相对位姿
hold on
trplot2(T2,'frame','2','color','r');%绘制变换坐标系,名字:{2} 颜色:红色
T3=T1*T2
trplot2(T3,'frame','3','color','g');%绘制复合坐标系,名字:{3} 颜色:绿色
T4=T2*T1
trplot2(T4,'frame','4','color','c');
p=[3;2];%相对世界坐标系定义点(3,2)
plot_point(p,'*')%把p点用*表示在图中
p1=double(inv(T1))*[p;1] %p点相对于坐标系{1}的坐标
inv(T1) %对T1矩阵求逆
double(inv(T1))
e2h(p) %辅助函数e2h将欧几里得坐标点转换为齐次形式
h2e(double(inv(T1))*e2h(p)) %通过辅助函数e2h附加一个1将欧几里得坐标点转换为齐次形式。
%该齐次形式结果在坐标系{1}中有一个负的y坐标,使用h2e函数可以进行反变换
homtrans(double(inv(T1)),p) %简洁的表达式
p2=homtrans(double(inv(T2)),p) %p点相对于坐标系{2}的描述
运行结果:
T1 =
0.8660 -0.5000 1
0.5000 0.8660 2
0 0 1
T2 =
1 0 2
0 1 1
0 0 1
T3 =
0.8660 -0.5000 2.232
0.5000 0.8660 3.866
0 0 1
T4 =
0.8660 -0.5000 3
0.5000 0.8660 3
0 0 1
p1 =
1.7321
-1.0000
1.0000
ans =
0.8660 0.5000 -1.866
-0.5000 0.8660 -1.232
0 0 1
ans =
0.8660 0.5000 -1.8660
-0.5000 0.8660 -1.2321
0 0 1.0000
ans =
3
2
1
ans =
1.7321
-1.0000
ans =
1.7321
-1.0000
p2 =
1
1
2.2 三维空间位姿描述
分别绕x,y,z轴旋转/theta角后的标准正交矩阵表示为:
%% 三维空间位姿描述
R1 = rotx(pi/2)% 表示x轴的旋转矩阵
R2 = roty(pi/2)% 表示y轴的旋转矩阵
R3 = rotz(pi/2)% 表示z轴的旋转矩阵
trplot(R1,'frame','1','color','r') % 绘制坐标系
grid on
tranimate(R1) %旋转动画,展示世界坐标系旋转到指定坐标系的过程
2.3 平移旋转组合
R1 =
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000
R2 =
0.0000 0 1.0000
0 1.0000 0
-1.0000 0 0.0000
R3 =
0.0000 -1.0000 0
1.0000 0.0000 0
0 0 1.0000
>> transl(1,0,0) %创建一个有平移但是无旋转的相对位姿
ans =
1 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
>> trotx(pi/2) %trotx 返回一个绕x轴旋转pi/2的4*4齐次变换矩阵,旋转部分与rotx(pi/2)相同,平移部分为零
ans =
1.0000 0 0 0
0 0.0000 -1.0000 0
0 1.0000 0.0000 0
0 0 0 1.0000
>> transl(0,1,0)
ans =
1 0 0 0
0 1 0 1
0 0 1 0
0 0 0 1
>> T = transl(1,0,0)*trotx(pi/2)*transl(0,1,0)
T =
1.0000 0 0 1.0000
0 0.0000 -1.0000 0.0000
0 1.0000 0.0000 1.0000
0 0 0 1.0000
>> t2r(T) %提取矩阵中旋转矩阵部分
ans =
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000
>> transl(T) %提取矩阵中平移部分
ans =
1.0000
0.0000
1.0000
>> trplot(T) %用trplot(T)绘制相应坐标系
3. 轨迹
3.1 平滑一维轨迹
3.1.1 五次多项式轨迹
%% 五次多项式轨迹
%限制条件为:起始终止速度、加速度为0,起点终点设定。六个条件
%s=tpoly(0,1,50); %生成一个五次多项式轨迹,返回50*1列向量,其值在0-1范围内分50个时间步平滑变化
[s,sd,sdd]=tpoly(0,1,50); %相应的速度(sd)加速度(sdd)通过增加输出选项参数返回
subplot(3,1,1)
plot(s);xlabel('Time'); ylabel('s'); %绘制轨迹曲线
subplot(3,1,2)
plot(sd);xlabel('Time'); ylabel('sd'); %绘制速度曲线
subplot(3,1,3)
plot(sdd);xlabel('Time'); ylabel('sdd'); %绘制加速度曲线
%s=tpoly(0,1,50,0.5,0) %初始速度和终点速度默认值为0,也可设置非零值。初始速度0.5,最终速度0
mean(sd)/max(sd) %计算平均速度
3.1.2 抛物线轨迹规划
s=lspb(0,1,50)
[s,sd,sdd]=lspb(0,1,50); %参数与tpoly中的含义相同
subplot(3,1,1) %绘制轨迹曲线
plot(s);xlabel('Time'); ylabel('s');
subplot(3,1,2)
plot(sd);xlabel('Time'); ylabel('sd');
subplot(3,1,3)
plot(sdd);xlabel('Time'); ylabel('sdd');
max(sd) %函数lspb自动生成的直线段速度
s=lspb(0,1,50,0.025); %可以通过第四个输入参数为直线段指定一个速度