该工具箱利用 MATLAB 的本机功能(线性代数、可移植性、图形)为 MATLAB 带来了机器人特定功能。
工具箱使用一种非常通用的方法将串行链接机械手的运动学和动力学表示为 MATLAB® 对象——用户可以为任何串行链接机械手创建机器人对象,并为 Kinova 的知名机器人提供了许多示例、Universal Robotics、Rethink 以及 Puma 560 和 Stanford arm 等经典机器人。
该工具箱还支持具有机器人运动模型(独轮车、自行车)、路径规划算法(bug、距离变换、D*、PRM)、运动动力学规划(晶格、RRT)、定位(EKF、粒子滤波器)、地图功能的移动机器人构建(EKF)和同时定位和映射(EKF),以及非完整车辆的Simulink模型。该工具箱还包括用于四旋翼飞行机器人的详细 Simulink 模型。
工具箱的优点是:
daimashil
- >> mdl_puma560
- >> p560
- p560 =
-
- Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE
- - viscous friction; params of 8/95;
- +---+-----------+-----------+-----------+-----------+-----------+
- | j | theta | d | a | alpha | offset |
- +---+-----------+-----------+-----------+-----------+-----------+
- | 1| q1| 0| 0| 1.5708| 0|
- | 2| q2| 0| 0.4318| 0| 0|
- | 3| q3| 0.15005| 0.0203| -1.5708| 0|
- | 4| q4| 0.4318| 0| 1.5708| 0|
- | 5| q5| 0| 0| -1.5708| 0|
- | 6| q6| 0| 0| 0| 0|
- +---+-----------+-----------+-----------+-----------+-----------+
-
- >> p560.fkine([0 0 0 0 0 0]) % forward kinematics
- ans =
- 1 0 0 0.4521
- 0 1 0 -0.15
- 0 0 1 0.4318
- 0 0 0 1
可以为路径设置动画

- mdl_puma560
-
- p = [0.8 0 0];
- T = transl(p) * troty(pi/2);
- qr(1) = -pi/2;
- qqr = p560.ikine6s(T, 'ru');
- qrt = jtraj(qr, qqr, 50);
-
- plot_sphere(p, 0.05, 'y');
- p560.plot3d(qrt, 'view', ae, 'movie', 'move2ball.gif');
移动机器人沿着圆形轨迹升空并悬停在一个点上,同时缓慢转动。
>> sl_quadrotor
使用 Reeds-Shepp 规划器计算的汽车式移动机器人进行 3 点转弯
- q0 = [0 0 0]'; % initial configuration [x y theta]
- qf = [0 0 pi]'; % final configuration
- maxcurv = 1/5; % 5m turning circle
- rs = ReedsShepp(q0, qf, maxcurv, 0.05)
-
- % set up a vehicle model for animation
- [car.image,~,car.alpha] = imread('car2.png');
- car.rotation = 180; % degrees
- car.centre = [648; 173]; % pix
- car.length = 4.2; % m
-
- % setup the plot
- clf; plotvol([-4 8 -6 6])
- a = gca;
- a.XLimMode = 'manual';
- a.YLimMode = 'manual';
- set(gcf, 'Color', 'w')
- grid on
- a = gca;
- xyzlabel
-
- % now animate
- plot_vehicle(rs.path, 'model', car, 'trail', 'r:', 'movie', '3point.gif');
使用粒子过滤器从信标定位的移动机器人。
- V = diag([0.1, 1*pi/180].^2);
- veh = Vehicle(V);
- veh.add_driver( RandomPath(10) );
- map = Map(20, 10);
- W = diag([0.1, 1*pi/180].^2);
- L = diag([0.1 0.1]);
- Q = diag([0.1, 0.1, 1*pi/180]).^2;
-
- pf = ParticleFilter(veh, sensor, Q, L, 1000, 'movie', 'pf.mp4');
- pf.run(100);
————————————————————————————————————
机器视觉工具箱 (MVTB) 提供了许多在机器视觉和基于视觉的控制中有用的功能。这是一个有点折衷的收藏,反映了我个人对光度学、摄影测量学、色度学领域的兴趣。它包括100多个功能,涵盖图像文件读写、采集、显示、过滤、斑点、点和线特征提取、数学形态学、单应性、视觉雅可比、相机校准和色彩空间转换等操作。通过网络摄像头的输入和机器人的输出(未提供),可以完全在 MATLAB 中实现视觉伺服系统。
图像通常被视为表示强度或范围的标量值的矩形阵列。矩阵是 MATLAB 的自然数据类型,因此可以用 MATLAB 语言中的算术语句轻松表达图像的操作。使用现有的 MATLAB 函数可以实现许多图像操作,例如阈值、过滤和统计。
工具箱的优点是:
代码示例
- >> im = iread('shark2.png'); % read a binary image of two sharks
- >> idisp(im); % display it with interactive viewing tool
- >> f = iblobs(im, 'class', 1) % find all the white blobs
- f =
- (1) area=7827, cent=(172.3,156.1), theta=-0.21, b/a=0.585, color=1, label=2, touch=0, parent=1
- (2) area=7827, cent=(372.3,356.1), theta=-0.21, b/a=0.585, color=1, label=3, touch=0, parent=1
- >> f.plot_box('g') % put a green bounding box on each blob
- >> f.plot_centroid('o'); % put a circle+cross on the centroid of each blob
- >> f.plot_centroid('x');

我们可以加载带有嵌套对象的二进制图像
- >> im = iread('multiblobs.png');
- >> idisp(im)

并请求我们随后显示的 blob 标签图像
- >> [label, m] = ilabel(im);
- >> idisp(label, 'colormap', jet, 'bar')
此工具箱包含将 2D 和 3D(SO(2)、SE(2)、SO(3)、SE(3))中的方向和姿势表示为正交和齐次变换矩阵、单位四元数、扭曲、三角的函数和类, 和矩阵指数。工具箱还提供了用于操作这些数据类型、在它们之间进行转换、组合它们、以图形方式显示它们以及转换点和速度的功能。
此工具箱的大部分功能以前在Robotics Toolbox for MATLAB中。
工具箱的优点是:
从 MATLAB 工具条 Home>Add-Ons>Get Add-Ons 将打开 Add-On Explorer。在搜索框中输入“空间数学”,选择第一个条目,然后单击“从 GitHub 添加”。工具箱将被下载并添加到您的路径中。
- >> R = rotx(0.2) % SO(3) rotation matrix
- R =
- 1.0000 0 0
- 0 0.9801 -0.1987
- 0 0.1987 0.9801
制作动画
>> tranimate(R)
将roll-pitch-yaw角度转换为单位四元数
- >> R = rpy2r(10, 20, 30, 'deg')
- R =
- 0.8138 -0.4410 0.3785
- 0.4698 0.8826 0.0180
- -0.3420 0.1632 0.9254
默认情况下使用 ZYX 约定,即。这是绕 Z 轴旋转偏航角 (30 度),然后绕 Y 轴旋转俯仰角 (20 度),然后绕着横滚角 (10 度) 旋转X 轴。我们可以将其转换为单位四元数。
- >> q = UnitQuaternion(R)
- q =
- 0.95155 < 0.038135, 0.18931, 0.2393 >
或使用变体构造函数直接创建单位四元数
- >> q2 = UnitQuaternion.rpy(10, 20, 30, 'deg')
- q2 =
- 0.95155 < 0.038135, 0.18931, 0.2393 >
工程和物理学中的许多问题都要求我们指定某个对象的位置和方向。
位置和方向的组合称为位姿。姿势始终是相对的,即某物相对于某个参考姿势(通常称为世界框架)的姿势。
在机器人技术中,我们可能想要描述移动机器人的姿态、机器人手臂末端的工具的姿态、机器人要拾取的物体的姿态,或者摄像机观察机器人的姿态。位姿是相对的,所以如果手臂安装在移动机器人上,那么我们可以将移动机器人的位姿与手臂相对于移动机器人的位姿合成或合成,得到手臂工具相对于移动机器人的位姿世界框架。类似地,如果我们知道相机的位姿,并且相机测量物体相对于自身的位姿,那么我们就可以确定物体在世界坐标系中的位姿。如果我们知道机械臂底座的位姿,那么我们就可以估计机械臂到达物体所需的位姿。添加(组合)并减去它们。
此工具箱包含表示方向的 MATLAB 函数和类:
并摆出姿势
工具箱还提供了用于操作这些数据类型、在它们之间进行转换、组合它们、以图形方式显示它们以及转换点和速度的功能。
工具箱支持两种工作方式:
————————————————————————
这个工具箱为 Python 带来了机器人特定的功能,并利用 Python 的可移植性、普遍性和支持性的优势,以及线性代数(numpy、scipy)、图形(matplotlib、three.js、WebGL)的开源生态系统的能力,交互式开发(jupyter、jupyterlab、mybinder.org)和文档(sphinx)。
工具箱提供了用于表示串行链接机械手的运动学和动力学的工具 - 您可以轻松地以 Denavit-Hartenberg 形式创建自己的工具,导入 URDF 文件,或使用来自 Franka-Emika 的 30 多种提供的著名当代机器人模型, Kinova、Universal Robotics、Rethink 以及 Puma 560 和 Stanford arm 等经典机器人。
该工具箱还将支持具有机器人运动模型(独轮车、自行车)、路径规划算法(bug、距离变换、D*、PRM)、运动动力学规划(晶格、RRT)、定位(EKF、粒子过滤器)等功能的移动机器人,地图构建 (EKF) 和同时定位和映射 (EKF)。
工具箱提供:
该工具箱利用Python 的空间数学工具箱来提供对 SO(n) 和 SE(n) 矩阵、四元数、扭曲和空间向量等数据类型的支持。
安装包链接如下:
GitHub - petercorke/robotics-toolbox-python: Robotics Toolbox for PythonRobotics Toolbox for Python. Contribute to petercorke/robotics-toolbox-python development by creating an account on GitHub.
https://github.com/petercorke/robotics-toolbox-python加载一个使用修改(克雷格约定)Denavit-Hartenberg 符号经典定义的 Franka-Emika Panda 机器人模型
- import roboticstoolbox as rtb
- robot = rtb.models.DH.Panda()
- print(robot)
-
- Panda (by Franka Emika): 7 axes (RRRRRRR), modified DH parameters
- ┏━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
- ┃ aⱼ₋₁ ┃ ⍺ⱼ₋₁ ┃ θⱼ ┃ dⱼ ┃ q⁻ ┃ q⁺ ┃
- ┣━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━━━╋━━━━━━━━━╋━━━━━━━━┫
- ┃ 0.0 ┃ 0.0° ┃ q1 ┃ 0.333 ┃ -166.0° ┃ 166.0° ┃
- ┃ 0.0 ┃ -90.0° ┃ q2 ┃ 0.0 ┃ -101.0° ┃ 101.0° ┃
- ┃ 0.0 ┃ 90.0° ┃ q3 ┃ 0.316 ┃ -166.0° ┃ 166.0° ┃
- ┃ 0.0825 ┃ 90.0° ┃ q4 ┃ 0.0 ┃ -176.0° ┃ -4.0° ┃
- ┃-0.0825 ┃ -90.0° ┃ q5 ┃ 0.384 ┃ -166.0° ┃ 166.0° ┃
- ┃ 0.0 ┃ 90.0° ┃ q6 ┃ 0.0 ┃ -1.0° ┃ 215.0° ┃
- ┃ 0.088 ┃ 90.0° ┃ q7 ┃ 0.107 ┃ -166.0° ┃ 166.0° ┃
- ┗━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━━━┻━━━━━━━━━┻━━━━━━━━┛
-
- ┌─────┬───────────────────────────────────────┐
- │tool │ t = 0, 0, 0.1; rpy/xyz = -45°, 0°, 0° │
- └─────┴───────────────────────────────────────┘
-
- ┌─────┬─────┬────────┬─────┬───────┬─────┬───────┬──────┐
- │name │ q0 │ q1 │ q2 │ q3 │ q4 │ q5 │ q6 │
- ├─────┼─────┼────────┼─────┼───────┼─────┼───────┼──────┤
- │ qz │ 0° │ 0° │ 0° │ 0° │ 0° │ 0° │ 0° │
- │ qr │ 0° │ -17.2° │ 0° │ -126° │ 0° │ 115° │ 45° │
- └─────┴─────┴────────┴─────┴───────┴─────┴───────┴──────┘
-
- T = robot.fkine(robot.qz) # forward kinematics
- print(T)
-
- 0.707107 0.707107 0 0.088
- 0.707107 -0.707107 0 0
- 0 0 -1 0.823
- 0 0 0 1
求解逆运动学。我们首先选择根据位置和方向定义的 SE(3) 姿势(末端执行器 z 轴向下 (A=-Z) 和平行于 y 轴的手指方向 (O=+Y))。
- from spatialmath import SE3
-
- T = SE3(0.7, 0.2, 0.1) * SE3.OA([0, 1, 0], [0, 0, -1])
- sol = robot.ikine_LM(T) # solve IK
- print(sol)
- IKsolution(q=array([ 0.2134, 1.867, -0.2264, 0.4825, 0.2198, 1.396, -2.037]), success=True, reason=None, iterations=12, residual=1.4517646473808178e-11)
-
- q_pickup = sol.q
- print(robot.fkine(q_pickup)) # FK shows that desired end-effector pose was achieved
-
- Out[35]:
- -1 9.43001e-14 2.43909e-12 0.7
- 9.43759e-14 1 7.2574e-13 0.2
- -2.43913e-12 7.2575e-13 -1 0.1
- 0 0 0 1
因为这个机器人是冗余的,所以除了末端执行器姿势之外,我们无法控制手臂配置,即。我们无法控制肘部的高度。
我们可以为从直立qz配置到此拾取配置的路径设置动画
- qt = rtb.jtraj(robot.qz, q_pickup, 50)
- robot.plot(qt.q, movie='panda1.gif')
Python 机器视觉工具箱 (MVTB-P) 提供了许多在机器视觉和基于视觉的控制中有用的功能。这是一个有点折衷的收藏,反映了我个人对光度学、摄影测量学、色度学领域的兴趣。它包括100多个功能,涵盖图像文件读写、采集、显示、过滤、斑点、点和线特征提取、数学形态学、单应性、视觉雅可比、相机校准和色彩空间转换等操作。通过网络摄像头的输入和机器人的输出(未提供),可以完全用 Python 实现视觉伺服系统。
图像通常被视为表示强度或范围的标量值的矩形阵列,或表示彩色图像的 3 向量值。矩阵是NumPy的自然数据类型,因此可以用 Python 中的算术语句轻松表达图像的操作。
这个 Python 工具箱的优点是:
Spatial Math Toolbox for MATLAB®的 Python 实现
https://github.com/petercorke/spatialmath-python
https://github.com/petercorke/spatialmath-python
一个Python框图仿真包
主要特点包括:
SE3、UnitQuaternion或Twist3对象之类的值。blocks这些工具箱的文件夹中定义的。.bdbdsim导入和执行模型