• 机器人用到的专业Toolbox总结


    适用于 MATLAB® 版本 10 的机器人工具箱

    该工具箱利用 MATLAB 的本机功能(线性代数、可移植性、图形)为 MATLAB 带来了机器人特定功能。

    工具箱使用一种非常通用的方法将串行链接机械手的运动学和动力学表示为 MATLAB® 对象——用户可以为任何串行链接机械手创建机器人对象,并为 Kinova 的知名机器人提供了许多示例、Universal Robotics、Rethink 以及 Puma 560 和 Stanford arm 等经典机器人。

    该工具箱还支持具有机器人运动模型(独轮车、自行车)、路径规划算法(bug、距离变换、D*、PRM)、运动动力学规划(晶格、RRT)、定位(EKF、粒子滤波器)、地图功能的移动机器人构建(EKF)和同时定位和映射(EKF),以及非完整车辆的Simulink模型。该工具箱还包括用于四旋翼飞行机器人的详细 Simulink 模型。

    工具箱的优点是:

    • 代码成熟,为相同算法的其他实现提供了一个比较点;
    • 例程通常以简单的方式编写,以便于理解,可能以牺牲计算效率为代价。如果您对计算效率有强烈的感觉,那么您可以随时重写函数以提高效率,使用 MATLAB 编译器编译 M 文件,或创建 MEX 版本;
    • 由于源代码可用,因此有利于理解和教学。

    daimashil

    1. >> mdl_puma560
    2. >> p560
    3. p560 =
    4. Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE
    5. - viscous friction; params of 8/95;
    6. +---+-----------+-----------+-----------+-----------+-----------+
    7. | j | theta | d | a | alpha | offset |
    8. +---+-----------+-----------+-----------+-----------+-----------+
    9. | 1| q1| 0| 0| 1.5708| 0|
    10. | 2| q2| 0| 0.4318| 0| 0|
    11. | 3| q3| 0.15005| 0.0203| -1.5708| 0|
    12. | 4| q4| 0.4318| 0| 1.5708| 0|
    13. | 5| q5| 0| 0| -1.5708| 0|
    14. | 6| q6| 0| 0| 0| 0|
    15. +---+-----------+-----------+-----------+-----------+-----------+
    16. >> p560.fkine([0 0 0 0 0 0]) % forward kinematics
    17. ans =
    18. 1 0 0 0.4521
    19. 0 1 0 -0.15
    20. 0 0 1 0.4318
    21. 0 0 0 1

    可以为路径设置动画

    1. mdl_puma560
    2. p = [0.8 0 0];
    3. T = transl(p) * troty(pi/2);
    4. qr(1) = -pi/2;
    5. qqr = p560.ikine6s(T, 'ru');
    6. qrt = jtraj(qr, qqr, 50);
    7. plot_sphere(p, 0.05, 'y');
    8. p560.plot3d(qrt, 'view', ae, 'movie', 'move2ball.gif');

    四旋翼动画

    移动机器人沿着圆形轨迹升空并悬停在一个点上,同时缓慢转动。

    >> sl_quadrotor

    移动机器人动画

    使用 Reeds-Shepp 规划器计算的汽车式移动机器人进行 3 点转弯

    1. q0 = [0 0 0]'; % initial configuration [x y theta]
    2. qf = [0 0 pi]'; % final configuration
    3. maxcurv = 1/5; % 5m turning circle
    4. rs = ReedsShepp(q0, qf, maxcurv, 0.05)
    5. % set up a vehicle model for animation
    6. [car.image,~,car.alpha] = imread('car2.png');
    7. car.rotation = 180; % degrees
    8. car.centre = [648; 173]; % pix
    9. car.length = 4.2; % m
    10. % setup the plot
    11. clf; plotvol([-4 8 -6 6])
    12. a = gca;
    13. a.XLimMode = 'manual';
    14. a.YLimMode = 'manual';
    15. set(gcf, 'Color', 'w')
    16. grid on
    17. a = gca;
    18. xyzlabel
    19. % now animate
    20. plot_vehicle(rs.path, 'model', car, 'trail', 'r:', 'movie', '3point.gif');

    粒子过滤器定位动画

    使用粒子过滤器从信标定位的移动机器人。

    1. V = diag([0.1, 1*pi/180].^2);
    2. veh = Vehicle(V);
    3. veh.add_driver( RandomPath(10) );
    4. map = Map(20, 10);
    5. W = diag([0.1, 1*pi/180].^2);
    6. L = diag([0.1 0.1]);
    7. Q = diag([0.1, 0.1, 1*pi/180]).^2;
    8. pf = ParticleFilter(veh, sensor, Q, L, 1000, 'movie', 'pf.mp4');
    9. pf.run(100);

    https://github.com/petercorke/robotics-toolbox-matlabhttps://github.com/petercorke/robotics-toolbox-matlab

    ————————————————————————————————————

    机器视觉工具箱 (MVTB) 提供了许多在机器视觉和基于视觉的控制中有用的功能。这是一个有点折衷的收藏,反映了我个人对光度学、摄影测量学、色度学领域的兴趣。它包括100多个功能,涵盖图像文件读写、采集、显示、过滤、斑点、点和线特征提取、数学形态学、单应性、视觉雅可比、相机校准和色彩空间转换等操作。通过网络摄像头的输入和机器人的输出(未提供),可以完全在 MATLAB 中实现视觉伺服系统。

    图像通常被视为表示强度或范围的标量值的矩形阵列。矩阵是 MATLAB 的自然数据类型,因此可以用 MATLAB 语言中的算术语句轻松表达图像的操作。使用现有的 MATLAB 函数可以实现许多图像操作,例如阈值、过滤和统计。

    工具箱的优点是:

    • 代码成熟,为相同算法的其他实现提供了一个比较点;
    • 例程通常以简单的方式编写,以便于理解,可能以牺牲计算效率为代价。如果您对计算效率有强烈的感觉,那么您可以随时重写函数以提高效率,使用 MATLAB 编译器编译 M 文件,或创建 MEX 版本;
    • 由于源代码可用,因此有利于理解和教学。

    代码示例

    1. >> im = iread('shark2.png'); % read a binary image of two sharks
    2. >> idisp(im); % display it with interactive viewing tool
    3. >> f = iblobs(im, 'class', 1) % find all the white blobs
    4. f =
    5. (1) area=7827, cent=(172.3,156.1), theta=-0.21, b/a=0.585, color=1, label=2, touch=0, parent=1
    6. (2) area=7827, cent=(372.3,356.1), theta=-0.21, b/a=0.585, color=1, label=3, touch=0, parent=1
    7. >> f.plot_box('g') % put a green bounding box on each blob
    8. >> f.plot_centroid('o'); % put a circle+cross on the centroid of each blob
    9. >> f.plot_centroid('x');

    二进制 blob 层次结构

    我们可以加载带有嵌套对象的二进制图像

    1. >> im = iread('multiblobs.png');
    2. >> idisp(im)

     并请求我们随后显示的 blob 标签图像

    1. >> [label, m] = ilabel(im);
    2. >> idisp(label, 'colormap', jet, 'bar')

    GitHub - petercorke/machinevision-toolbox-matlab: Machine Vision Toolbox for MATLABMachine Vision Toolbox for MATLAB. Contribute to petercorke/machinevision-toolbox-matlab development by creating an account on GitHub.https://github.com/petercorke/machinevision-toolbox-matlab

    MATLAB® 空间数学工具箱

    概要

    此工具箱包含将 2D 和 3D(SO(2)、SE(2)、SO(3)、SE(3))中的方向和姿势表示为正交和齐次变换矩阵、单位四元数、扭曲、三角的函数和类, 和矩阵指数。工具箱还提供了用于操作这些数据类型、在它们之间进行转换、组合它们、以图形方式显示它们以及转换点和速度的功能。

    此工具箱的大部分功能以前在Robotics Toolbox for MATLAB中。

    工具箱的优点是:

    • 代码成熟,为相同算法的其他实现提供了一个比较点;
    • 例程通常以简单的方式编写,以便于理解,可能以牺牲计算效率为代价。如果您对计算效率有强烈的感觉,那么您可以随时重写函数以提高效率,使用 MATLAB 编译器编译 M 文件,或创建 MEX 版本;
    • 源代码可供理解和教学使用。

    安装

    从 MATLAB 工具条 Home>Add-Ons>Get Add-Ons 将打开 Add-On Explorer。在搜索框中输入“空间数学”,选择第一个条目,然后单击“从 GitHub 添加”。工具箱将被下载并添加到您的路径中。

    1. >> R = rotx(0.2) % SO(3) rotation matrix
    2. R =
    3. 1.0000 0 0
    4. 0 0.9801 -0.1987
    5. 0 0.1987 0.9801

    制作动画

    >> tranimate(R)

    将roll-pitch-yaw角度转换为单位四元数

    1. >> R = rpy2r(10, 20, 30, 'deg')
    2. R =
    3. 0.8138 -0.4410 0.3785
    4. 0.4698 0.8826 0.0180
    5. -0.3420 0.1632 0.9254

    默认情况下使用 ZYX 约定,即。这是绕 Z 轴旋转偏航角 (30 度),然后绕 Y 轴旋转俯仰角 (20 度),然后绕着横滚角 (10 度) 旋转X 轴。我们可以将其转换为单位四元数。

    1. >> q = UnitQuaternion(R)
    2. q =
    3. 0.95155 < 0.038135, 0.18931, 0.2393 >

    或使用变体构造函数直接创建单位四元数

    1. >> q2 = UnitQuaternion.rpy(10, 20, 30, 'deg')
    2. q2 =
    3. 0.95155 < 0.038135, 0.18931, 0.2393 >

    MATLAB 空间数学工具箱

    工程和物理学中的许多问题都要求我们指定某个对象的位置方向

    • 位置很简单,在 2 维中它只是两个坐标 (x,y),在 3 维中它是三个坐标 (x,y,z)。
    • 方向比较棘手。在二维中,我们需要一个单一的角度,我们通常称之为航向角或方位角。在 3 维中,我们需要三个角度,例如横滚角、俯仰角和偏航角;但是其他数学对象,例如正交矩阵和单位四元数,比三个角度具有优势。

    位置和方向的组合称为位姿。姿势始终是相对的,即某物相对于某个参考姿势(通常称为世界框架)的姿势。

    在机器人技术中,我们可能想要描述移动机器人的姿态、机器人手臂末端的工具的姿态、机器人要拾取的物体的姿态,或者摄像机观察机器人的姿态。位姿是相对的,所以如果手臂安装在移动机器人上,那么我们可以将移动机器人的位姿与手臂相对于移动机器人的位姿合成或合成,得到手臂工具相对于移动机器人的位姿世界框架。类似地,如果我们知道相机的位姿,并且相机测量物体相对于自身的位姿,那么我们就可以确定物体在世界坐标系中的位姿。如果我们知道机械臂底座的位姿,那么我们就可以估计机械臂到达物体所需的位姿。添加(组合)并减去它们。

    此工具箱包含表示方向的 MATLAB 函数和类:

    • 在二维中作为正交矩阵
    • 在 3D 中作为正交矩阵、单位四元数、三角、正交向量对

    并摆出姿势

    • 在二维中作为齐次变换矩阵、扭曲和矩阵指数。
    • 在 3D 中作为齐次变换矩阵、扭曲和矩阵指数。

    工具箱还提供了用于操作这些数据类型、在它们之间进行转换、组合它们、以图形方式显示它们以及转换点和速度的功能。

    工具箱支持两种工作方式:

    1. 使用原生 MATLAB 矩阵
    2. 使用MATLAB 类

    ————————————————————————

    Python 机器人工具箱

    这个工具箱为 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)。

    工具箱提供:

    • 成熟的代码,为相同算法的其他实现提供一个比较点;
    • 例程通常以简单明了的方式编写,易于理解,但可能以牺牲计算效率为代价;
    • 可供学习和教学阅读的源代码;
    • 与 Robotics Toolbox for MATLAB 的向后兼容性

    该工具箱利用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 机器人模型

    1. import roboticstoolbox as rtb
    2. robot = rtb.models.DH.Panda()
    3. print(robot)
    4. Panda (by Franka Emika): 7 axes (RRRRRRR), modified DH parameters
    5. ┏━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
    6. ┃ aⱼ₋₁ ┃ ⍺ⱼ₋₁ ┃ θⱼ ┃ dⱼ ┃ q⁻ ┃ q⁺ ┃
    7. ┣━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━━━╋━━━━━━━━━╋━━━━━━━━┫
    8. 0.00.0° ┃ q1 ┃ 0.333-166.0° ┃ 166.0° ┃
    9. 0.0-90.0° ┃ q2 ┃ 0.0-101.0° ┃ 101.0° ┃
    10. 0.090.0° ┃ q3 ┃ 0.316-166.0° ┃ 166.0° ┃
    11. 0.082590.0° ┃ q4 ┃ 0.0-176.0° ┃ -4.0° ┃
    12. -0.0825-90.0° ┃ q5 ┃ 0.384-166.0° ┃ 166.0° ┃
    13. 0.090.0° ┃ q6 ┃ 0.0-1.0° ┃ 215.0° ┃
    14. 0.08890.0° ┃ q7 ┃ 0.107-166.0° ┃ 166.0° ┃
    15. ┗━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━━━┻━━━━━━━━━┻━━━━━━━━┛
    16. ┌─────┬───────────────────────────────────────┐
    17. │tool │ t = 0, 0, 0.1; rpy/xyz = -45°, 0°, 0° │
    18. └─────┴───────────────────────────────────────┘
    19. ┌─────┬─────┬────────┬─────┬───────┬─────┬───────┬──────┐
    20. │name │ q0 │ q1 │ q2 │ q3 │ q4 │ q5 │ q6 │
    21. ├─────┼─────┼────────┼─────┼───────┼─────┼───────┼──────┤
    22. │ qz │ 0° │ 0° │ 0° │ 0° │ 0° │ 0° │ 0° │
    23. │ qr │ 0° │ -17.2° │ 0° │ -126° │ 0° │ 115° │ 45° │
    24. └─────┴─────┴────────┴─────┴───────┴─────┴───────┴──────┘
    25. T = robot.fkine(robot.qz) # forward kinematics
    26. print(T)
    27. 0.707107 0.707107 0 0.088
    28. 0.707107 -0.707107 0 0
    29. 0 0 -1 0.823
    30. 0 0 0 1

    求解逆运动学。我们首先选择根据位置和方向定义的 SE(3) 姿势(末端执行器 z 轴向下 (A=-Z) 和平行于 y 轴的手指方向 (O=+Y))。

    1. from spatialmath import SE3
    2. T = SE3(0.7, 0.2, 0.1) * SE3.OA([0, 1, 0], [0, 0, -1])
    3. sol = robot.ikine_LM(T) # solve IK
    4. print(sol)
    5. 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)
    6. q_pickup = sol.q
    7. print(robot.fkine(q_pickup)) # FK shows that desired end-effector pose was achieved
    8. Out[35]:
    9. -1 9.43001e-14 2.43909e-12 0.7
    10. 9.43759e-14 1 7.2574e-13 0.2
    11. -2.43913e-12 7.2575e-13 -1 0.1
    12. 0 0 0 1

    因为这个机器人是冗余的,所以除了末端执行器姿势之外,我们无法控制手臂配置,即。我们无法控制肘部的高度。

    我们可以为从直立qz配置到此拾取配置的路径设置动画

    1. qt = rtb.jtraj(robot.qz, q_pickup, 50)
    2. robot.plot(qt.q, movie='panda1.gif')

    Python 机器视觉工具箱

    Python 机器视觉工具箱 (MVTB-P) 提供了许多在机器视觉和基于视觉的控制中有用的功能。这是一个有点折衷的收藏,反映了我个人对光度学、摄影测量学、色度学领域的兴趣。它包括100多个功能,涵盖图像文件读写、采集、显示、过滤、斑点、点和线特征提取、数学形态学、单应性、视觉雅可比、相机校准和色彩空间转换等操作。通过网络摄像头的输入和机器人的输出(未提供),可以完全用 Python 实现视觉伺服系统。

    图像通常被视为表示强度或范围的标量值的矩形阵列,或表示彩色图像的 3 向量值。矩阵是NumPy的自然数据类型,因此可以用 Python 中的算术语句轻松表达图像的操作。
    这个 Python 工具箱的优点是:

    • 它尽可能多地使用OpenCV,这是一个可移植、高效、全面和成熟的图像处理和特征提取功能集合;
    • 它以一致的方式包装 OpenCV 函数,隐藏了 OpenCV 的一些复杂性;
    • 它与 MATLAB 的机器视觉工具箱有相似之处。

    GitHub - petercorke/machinevision-toolbox-python: Machine vision toolbox for PythonMachine vision toolbox for Python. Contribute to petercorke/machinevision-toolbox-python development by creating an account on GitHub.https://github.com/petercorke/machinevision-toolbox-pythonPython 的空间数学

    Spatial Math Toolbox for MATLAB® Python 实现

    https://github.com/petercorke/spatialmath-pythonicon-default.png?t=M5H6https://github.com/petercorke/spatialmath-python

    一个Python框图仿真包

    主要特点包括:

    • 可以使用 Python 代码轻松创建框图,而不是绘制方框和电线。这样就可以使用您最喜欢的 IDE、标准版本控制工具和开发工作流程。
    • 连线可以通信任何Python 类型,例如标量、列表、字典、NumPy 数组、对象和函数。对于使用Python 的 Spatial Maths Toolbox 的机器人和视觉应用程序,电线可以发送诸如SE3UnitQuaternionTwist3对象之类的值。
    • 超过 70 个模块,用于线性、非线性函数、显示模块以及连续和离散时间动态
      • 轻松添加自己的块,它只是一个类
      • 支持子系统,一个子系统可以在一个系统中独立实例化多次。子系统也可以嵌套。
      • 来自其他工具箱的块会被自动发现并包含在内。Robotics Toolbox for Python(例如手臂、地面和空中机器人)和Machine Vision Toolbox for Python(例如相机)中有一些功能块 。这些是在blocks这些工具箱的文件夹中定义的。
    • 该图可以在无头配置中执行,在 RaspberryPi 等嵌入式计算机上特别有用。
    • 基于python的图形编辑
      • 允许以图形方式创建框图
      • 该图存储在一个人类可读/可编辑的 JSON 文件中,扩展名为.bd
      • 创建高质量的图形以包含在出版物中
      • 可以启动bdsim导入和执行模型
      • 自动发现所有 bsdim 和 toolbbox 块并将它们添加到块库菜单
      • 可以使用任何图像创建工具或 LaTeX 表达式轻松创建图标

    GitHub - petercorke/bdsim: Simulate dynamic systems expressed in block diagram form using Pythonicon-default.png?t=M5H6https://github.com/petercorke/bdsim

  • 相关阅读:
    GBase 8c在结果集中定位方法
    java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
    Log4j 2.17.0 再曝漏洞,但不要惊慌
    ueditor整合到thinkPHP里
    实验室LIMS系统能带来什么好处?
    Linux--socket编程--双方收发
    Codeforces Round #813 (Div. 2)
    树的基本概念及二叉树
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校教室申请管理系统yf80k
    CSS显示模式
  • 原文地址:https://blog.csdn.net/weixin_51367832/article/details/125564342