MATLAB Robotics Toolbox 应用指南
以下内容将详细解析工具箱的使用方法及示例代码实现原理,分为路径配置、核心指令解析和代码实现三部分。
首先先下载RTB.mltbx工具箱(双击即可直接下载)


一、工具箱路径优先级设置
当存在同名函数时,需确保工具箱路径优先被调用:
操作流程
路径窗口操作
- 全选路径列表中所有
C:\Users\chujiacheng\...\Robotics Toolbox for MATLAB\开头的目录- 连续点击 上移箭头 图标,将选中的路径移至列表顶部
- 勾选 保存路径以用于将来的会话 → 应用 → 确定
原理说明:MATLAB按路径列表从上至下搜索函数,顶置路径可避免内置函数覆盖。
二、核心指令功能速查
| 分类 | 指令 | 作用 |
|---|---|---|
| 坐标变换 | transl(x,y,z) |
生成平移齐次变换矩阵(4×4),或从变换矩阵提取平移向量 |
trotx(θ) |
绕 X 轴旋转 θ 弧度的齐次变换矩阵 | |
troty(θ) |
绕 Y 轴旋转 θ 弧度的齐次变换矩阵 | |
trotz(θ) |
绕 Z 轴旋转 θ 弧度的齐次变换矩阵 | |
tr2rpy(T) |
从变换矩阵提取 RPY 角(滚转、俯仰、偏航) | |
rpy2tr(r,p,y) |
用 RPY 角生成齐次变换矩阵 | |
| 坐标系可视化 | trplot(T) |
绘制变换矩阵对应的坐标系 |
tranimate(T1,T2) |
从坐标系 T1 动画变换到 T2 | |
| 机器人建模 | Link() |
创建连杆对象(DH 参数) |
SerialLink() |
串联机器人对象,支持正逆运动学 | |
fkine(robot,q) |
机器人正运动学,计算末端位姿 | |
ikine(robot,T) |
机器人逆运动学,求解关节角 | |
| 轨迹规划 | ctraj(T1,T2,n) |
两个位姿之间的笛卡尔轨迹 |
jtraj(q1,q2,n) |
两个关节角之间的关节空间轨迹 |
三、坐标系变换代码解析
Matlab
% 清除命令窗口、工作空间变量,并关闭所有图形窗口
clc
clear
close all
% =========================
% 坐标变换部分:定义齐次变换矩阵
% =========================
% T1: 绕Z轴旋转π/6弧度,然后沿X轴平移2个单位
% trotz(theta) 生成绕Z轴的旋转矩阵,transl(x,y,z) 生成平移矩阵
T1 = trotz(pi/6) * transl(2,0,0); % 组合旋转和平移
% T2: 绕Z轴旋转π/4弧度,然后沿X轴平移1个单位
T2 = trotz(pi/4) * transl(1,0,0); % 组合旋转和平移
% T: 从世界坐标系到坐标系2的总体变换,T1 * T2 表示顺序变换
T = T1 * T2; % 组合两个变换矩阵
% =========================
% 图形窗口设置:创建3D绘图环境
% =========================
% 创建一个白色背景的图形窗口
figure('Color','w')
% 保持当前图形,允许多次绘图叠加
hold on
% 添加网格
grid on
% 设置坐标轴比例相等
axis equal
% 设置3D视图
view(3)
% 添加坐标轴标签
xlabel('X','FontSize',14)
ylabel('Y','FontSize',14)
zlabel('Z','FontSize',14)
% 添加标题
title('连续坐标变换','FontSize',16)
% 设置坐标轴范围,确保可视化效果清晰
xlim([-1 4])
ylim([-1 4])
zlim([-1 4])
% =========================
% 坐标系绘制:世界坐标系、坐标系1和坐标系2
% =========================
% 绘制世界坐标系(原点),使用单位矩阵 eye(4) 表示
% trplot 函数用于绘制变换矩阵对应的坐标系
trplot(eye(4), ... % 单位矩阵表示世界坐标系
'frame','0', ... % 坐标系标签为 '0'
'rgb', ... % 使用RGB颜色表示各轴
'length',0.8, ... % 坐标轴长度
'thick',2) % 坐标轴线宽
% 绘制坐标系1,基于变换矩阵 T1
trplot(T1, ... % T1 对应的坐标系
'frame','1', ... % 坐标系标签为 '1'
'rgb', ...
'length',0.8, ...
'thick',2)
% 绘制坐标系2,基于变换矩阵 T(T1 * T2)
trplot(T, ... % T 对应的坐标系
'frame','2', ... % 坐标系标签为 '2'
'rgb', ...
'length',0.8, ...
'thick',2)
% =========================
% 提取坐标原点:用于后续绘图
% =========================
% 世界坐标系原点 (0,0,0)
p0 = [0 0 0];
% 提取坐标系1的原点坐标(从 T1 的平移部分获取)
% transl 函数提取变换矩阵的平移向量
p1 = transl(T1);
% 提取坐标系2的原点坐标(从 T 的平移部分获取)
p2 = transl(T);
% =========================
% 连杆绘制:连接各坐标系原点
% =========================
% 绘制从世界坐标系原点 (p0) 到坐标系1原点 (p1) 的连杆
plot3([p0(1) p1(1)], ... % X坐标
[p0(2) p1(2)], ... % Y坐标
[p0(3) p1(3)], ... % Z坐标
'LineWidth',4, ... % 线宽
'Color',[0.5 0.2 0.2]) % 颜色(深红色)
% 绘制从坐标系1原点 (p1) 到坐标系2原点 (p2) 的连杆
plot3([p1(1) p2(1)], ...
[p1(2) p2(2)], ...
[p1(3) p2(3)], ...
'LineWidth',4, ...
'Color',[0.2 0.2 0.9]) % 颜色(蓝色)
% =========================
% 原点标记:突出显示各坐标系原点
% =========================
% 绘制世界坐标系原点标记(黑色圆点)
plot3(p0(1),p0(2),p0(3), ...
'ko', ... % 黑色圆形标记
'MarkerFaceColor','k', ... % 填充黑色
'MarkerSize',8) % 标记大小
% 绘制坐标系1原点标记(红色圆点)
plot3(p1(1),p1(2),p1(3), ...
'ro', ... % 红色圆形标记
'MarkerFaceColor','r', ... % 填充红色
'MarkerSize',8)
% 绘制坐标系2原点标记(蓝色圆点)
plot3(p2(1),p2(2),p2(3), ...
'bo', ... % 蓝色圆形标记
'MarkerFaceColor','b', ... % 填充蓝色
'MarkerSize',8)
% =========================
% 文本标签:为各原点添加说明文字
% =========================
% 在世界坐标系原点添加文本 ' Base'
text(p0(1),p0(2),p0(3), ...
' Base', ...
'FontSize',12)
% 在坐标系1原点添加文本 ' Frame1'
text(p1(1),p1(2),p1(3), ...
' Frame1', ...
'FontSize',12)
% 在坐标系2原点添加文本 ' Frame2'
text(p2(1),p2(2),p2(3), ...
' Frame2', ...
'FontSize',12)
关键注意事项:
如果你运行结果是这样的一条直线,恭喜你,没把第一节(一、工具箱路径优先级设置)看完,喜提错误一个!!
**错误原因:**当存在同名函数时,工具箱路径在最下面不会优先被调用。

正确运行结果



