第4章:MATLAB机器人工具箱入门:安装与配置、基本函数介绍、创建第一个机器人模型
说实话,做机器人运动学这么多年,我见过太多人一上来就啃理论公式,结果被各种旋转矩阵、齐次变换搞得晕头转向。我个人习惯是——先让机器人“动起来”,再回头理解它为什么这么动。而MATLAB机器人工具箱,就是帮你快速上手的最佳工具。
这一章,咱们就直奔主题。我会带你完成三件事:装好工具箱、认识几个核心函数、创建你的第一个机器人模型。嗯,别怕,跟着我来,十分钟你就能看到自己的机器人在屏幕上跳舞。
4.1 安装与配置:别让环境卡住你
先说说安装。我当年第一次装这个工具箱,愣是折腾了半小时——版本不兼容、路径没加对、函数找不到……全是坑。所以我把最稳妥的步骤给你列出来。
4.1.1 下载与安装
MATLAB机器人工具箱(Robotics Toolbox)由Peter Corke教授开发。目前主流版本是10.x,支持MATLAB R2016b及以上版本。
- 下载方式:去MathWorks File Exchange搜索“Robotics Toolbox”,或者直接去Peter Corke的GitHub仓库下载。
- 安装方法:下载后解压,在MATLAB中切换到该目录,运行
startup_rvc.m脚本即可。 - 验证安装:在命令行输入
ver,看看列表中是否有“Robotics Toolbox”。或者直接输入mdl_puma560,如果没报错,就说明装好了。
pathtool 手动调整工具箱的加载顺序。
4.1.2 配置建议
我个人习惯把工具箱路径永久添加到MATLAB搜索路径中。这样每次启动都不用再手动切换目录。
% 添加工具箱路径(永久保存)
addpath('C:\你的工具箱路径\rvctools');
savepath;
另外,我建议你安装时顺便把文档也下载下来。遇到不懂的函数,直接 doc 函数名 查看,比上网搜快得多。
4.2 基本函数介绍:先认识几个“老朋友”
工具箱里函数很多,但常用的其实就十几个。你想想看,机器人运动学无非就是坐标变换、正解、逆解这几件事。下面这几个函数,是你必须掌握的。
4.2.1 坐标变换相关
| 函数 | 功能 | 示例 |
|---|---|---|
transl() |
创建平移变换矩阵 | T = transl(1, 2, 3) |
trotx() / troty() / trotz() |
创建绕X/Y/Z轴的旋转矩阵 | R = trotx(pi/4) |
trplot() |
可视化显示坐标系 | trplot(T) |
tform2tr() |
将4x4齐次矩阵转为工具箱格式 | —— |
说白了,机器人运动学就是不停地做平移和旋转。你只要会用 transl 和 trotx 这几个,就能拼出任意位姿。
4.2.2 机器人模型相关
| 函数 | 功能 | 示例 |
|---|---|---|
Link() |
定义单个连杆 | L = Link([0 0 0 0]) |
SerialLink() |
将连杆串联成机器人 | robot = SerialLink([L1 L2]) |
fkine() |
正运动学求解 | T = robot.fkine(q) |
ikine() |
逆运动学求解 | q = robot.ikine(T) |
plot() |
可视化机器人 | robot.plot(q) |
teach() |
交互式拖动关节 | robot.teach() |
teach() 函数。它会弹出一个滑块界面,你拖动滑块改变关节角度,机器人模型会实时更新。这比看枯燥的公式直观多了。
4.3 创建第一个机器人模型:从零到动起来
好了,理论知识差不多了。咱们直接上手,创建一个两自由度的平面机器人。为什么选两自由度?因为简单、直观,你能一眼看明白每个参数的作用。
4.3.1 定义连杆参数
先定义两个连杆。每个连杆用 Link() 函数定义,参数是 [theta, d, a, alpha]——也就是DH参数。
% 定义第一个连杆:长度1,绕Z轴旋转
L1 = Link([0, 0, 1, 0]);
% 定义第二个连杆:长度0.8,绕Z轴旋转
L2 = Link([0, 0, 0.8, 0]);
% 注意:Link默认是旋转关节。如果想定义移动关节,加一个参数 'prismatic'
这里我解释一下:Link([theta, d, a, alpha]) 是标准DH参数。对于旋转关节,theta是变量;对于移动关节,d是变量。咱们这里两个都是旋转关节,所以theta初始设为0,后面通过关节角度来驱动。
4.3.2 串联成机器人
用 SerialLink 把两个连杆串起来,再给机器人起个名字。
% 创建机器人对象
robot = SerialLink([L1, L2], 'name', '我的第一个机器人');
% 显示机器人的DH参数表
robot.display();
运行 robot.display(),你会看到类似这样的输出:
我的第一个机器人 (2 axis, RRR)
┌────────┬───────┬───────┬───────┬───────┐
│ 关节 │ θ │ d │ a │ α │
├────────┼───────┼───────┼───────┼───────┤
│ 1 │ 0 │ 0 │ 1 │ 0 │
│ 2 │ 0 │ 0 │ 0.8 │ 0 │
└────────┴───────┴───────┴───────┴───────┘
嗯,看到这个表格,你就知道机器人结构已经定义好了。
4.3.3 让机器人动起来
定义一组关节角度,然后让机器人动起来。
% 定义关节角度(弧度)
q = [0.5, 0.8]; % 关节1转0.5弧度,关节2转0.8弧度
% 正运动学:计算末端位姿
T = robot.fkine(q);
disp('末端位姿矩阵:');
disp(T);
% 可视化机器人
robot.plot(q);
运行后,你会看到一个2D的机器人图形。两个连杆按照你设定的角度展开。你可以试试改变 q 的值,看看机器人怎么动。
q,它给你 T。这是机器人控制中最基础、最常用的操作。
4.3.4 交互式探索
我个人最喜欢的功能来了——teach()。它会弹出一个滑块面板,你可以拖动滑块实时调整关节角度。
% 交互式控制
robot.teach();
拖动滑块时,你会发现机器人图形跟着动,同时末端位姿矩阵也会实时更新。这比看任何教科书都直观。我曾经用这个功能给学生上课,十分钟他们就理解了正运动学的含义。
4.4 知识体系总览
为了让你对本章内容有个整体把握,我画了一张图。它展示了从安装到创建机器人的完整流程。
4.5 避坑指南与经验分享
最后,分享几个我实际项目中遇到的坑,你提前知道,能省不少时间。
- DH参数顺序别搞错:
Link([theta, d, a, alpha])这个顺序是固定的。我见过有人把a和d写反了,结果机器人模型完全变形。 - 角度单位是弧度:工具箱默认用弧度。如果你习惯用角度,记得用
deg2rad()转换。我曾经在调试时直接传了角度值,机器人转得乱七八糟,查了半天才发现。 - 版本兼容性:如果你用的是MATLAB R2020a之后的版本,建议安装工具箱10.3以上版本。旧版本在某些新MATLAB上会报错。
- 可视化卡顿:如果
teach()拖动时画面卡顿,试试在命令窗口输入robot.delay = 0.01,降低刷新延迟。
mdl_puma560 就能加载。用这些现成模型来学习,比自己从头搭要快得多。
好了,这一章的内容就到这里。你现在应该已经装好了工具箱,认识了几个核心函数,并且亲手创建了第一个机器人模型。别小看这个两自由度的简单模型——它包含了机器人运动学的所有核心概念。后面的章节,我们会在这个基础上,一步步深入下去。