MATLAB机器人工具箱【0】—— 安装+初步了解

此博客用于自己学习过程中的知识拾记与总结回顾,结合自己实际学习过程记录整理。
《Robotics,Vision & Control》这本书就是此工具箱的开发者撰写的,可以当做工具箱的详细说明书,另外还有 robot.pdf 这个函数使用说明文档,可以查看API。

1. Robotic 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,2plot_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

Matlab之inv函数的函数功能,左除右除区别

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/24*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);   %可以通过第四个输入参数为直线段指定一个速度

在这里插入图片描述

  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值