中文路径在英语中可能有两种翻译:

path

trajectory

首先告诉大家,我们所说的“路径”的是后者——trajectory。我们看一下这两种“路径”在机械臂的世界里有什么区别。

设想机械臂的end-effector要从A点运动到B点:

从A到B叫path:

如果我们规定从A到B这个path,必须在特定的时间(t0–t6),经过这7个点。

那么这7个点叫waypoints。路径(trajectory)指的是通过这7个点的具体计划(例如什么时间,以什么速度等等)。规划我们如何经过这7个点的算法,叫做路径规划(trajectoryplanning)算法。

上面这7个点,如果机械臂的end-effector在通过的时候,位置连续、速度连续、甚至加速度也是连续的,那么我们说这个trajectory是平滑的(smooth)。

机械臂中有几种比较常见的trajectory:

TrapezoidalTrajectories(梯形路径)

梯形路径指的是:

end-effector在相邻waypoints之间的速度是象梯形一样,先线性加速,然后速度保持不变,在接近目标后线性减速。梯形路径的优点是比较简单实用,但是在每个waypoint会有停顿。下图是一个机械臂走梯形路径的样例:在过waypoints的时候,会完全停止,所以走的是直线,速度和加速度肯定不连续。

PolynomialTrajectories(多项式路径)

其中又分三次多项式和五次多项式。分别写作:

三次多项式可以记录end-effector的速度、位置的信息。五次多项式可以记录end-effector的位置、速度、加速度的信息。下图是一个五次多项式的例子,可以看到速度、加速度都是连续的。三次或者五次多项式的trajectory在通过waypoints的时候速度都是连续的,这和梯形路径是不一样的。

下图是一个机械臂走五次多项式路径的样例:为了保证过waypoints的时候速度不停顿,走的是曲线。

B-splines(B样条曲线)

B样条曲线将除了起始点和终点外,将其他的waypoints看成是控制点(controlpoints)。机械臂的end-effector并不会真正通过这些controlpoints,而在他们之间找一条平滑的曲线。这样做的目的是在平滑加速度和曲线拟合的准确性之间找一个折衷方法。

(图片来自于Wikipedia)

如果一个trajectory只有这7个点,无论机械臂控制器的运动控制模块如何强大,都无法保证做到“平滑”的运行。我们必须对路径点进行插值(interpolation)。

下图的橙色点为插值点示意:

在了解插值后,我们来看一下路径规划出来的信息如何和传递到反向运动学(inversekinematics)。反向运动学模块将确保end-effector按照规划出来的路径运行,即路径跟随(trajectoryfollowing)。

这里,我们按插值类型情况分两种模式:

1.Trajectoryinterpolatedintaskspace

在这种模式下,中间插值的点是在taskspace(即XYZ坐标系,或者叫笛卡尔坐标系)进行插值。下图表明了这一过程,这时候trajectorygeneration只需要做一次,产生所有的waypoints和interpolationpoints(插值点)。然后运动控制系统在每个控制周期都必须调用inversekinematics算法去做路径跟随(trajectoryfollowing)。

2.Trajectoryinterpolatedinjointspace

在这种模式下,中间插值点的点是在jointspace(即对关节角度插值)。下图表明了这一过程。这时候trajectorygeneration也只需要做一次,但做的过程和taskspace的做法不同。即在每一个waypoint调用一次inversekinematics,然后对关节角度的进行插值。Trajectoryfollowing模块只需执行插值后的角度指令。

角度方向插值(orientationinterpolation)

我们刚才谈到的插值,都是针对end-effector的位置(position,即XYZ的坐标)。我们不应该忽略end-effector的角度方向(orientation)插值。我们看一段动画来了解一下,什么是orientation的插值:

可以看到,随着end-effector的移动,它的方向也在不断做出平滑的调整,在end-effector运行到目标位置后,它的方向也调整到位。当然,有很多场合角度方向是不需要调整的。例如:喷漆机械臂,永远将end-effector指向喷漆作业面。

MATLAB中的机械臂路径规划算法

在R2019a发布后RoboticsSystemToolbox(RST)中多了几个机械臂路径规划的MATLAB函数和Simulink模块。

MATLAB函数:

Simulink模块:

不管是MATLAB函数还是类似Simulinkblock,大概这么几项功能:

生成梯形或者多项式的位置trajectory

生成角度方向的trajectory

将上两者合二为一的生成既包含位置,也包含角度方向(合称pose)的trajectory——即基于homogeneoustransforms的posetrajectory。

让我们写几行代码,来产生一个三次多项式的trajectory:

可以看到,位置是连续的。如果我们将速度(qd)、加速度(qdd)画出来,可以看到qdd是不连续的。

Simulink示例

在MATLABfileexchange里搜索“TrajectoryPlanningforRobotManipulators”,会找到一个用多种方式产生trajectory的例子。

用一张表格总结如下:

这里有两点值得注意:

无论是MATLAB函数还是Simulinkblock,所有角度方向的插值都是基于SLERP(sphericallinearinterpolation)。这是一种基于四元数(quaternions)的插值法。不会造成下图所示的“不走近路,绕远路”的问题。例如,角度要从0度转到30度。因为圆周是360度,错误的方式是从0度转到330度–虽然也能到达指定位置或者角度,但它是错误的。在manipJointTrajectory模型中,因为用到了基于jointspace(关节角度)的插值,读者可以注意一下如何处理这个问题。

Time-scaling。在manipTransformTrajectoryTimeScaling模型中,如果不加timescaling这个模块,那么所有的角度变化和位置变化都是基于线性插值。如果加入了“想要的”速度、加速度信息---即timescaling。我们可以使角度变化和位置变化按照我们想要的梯形或者多项式形式去调整。例如,我想让角度一开始不变,然后快速变化,最后速度为0。

matlab在机械手臂中基础,关于MATLAB中的机械臂算法的分析和介绍相关推荐

  1. matlab 入门 mobi,振动力学基础与MATLAB应用

    振动力学基础与MATLAB应用 下载 mobi epub pdf ☆☆☆☆☆ 鲍文博,白泉,陆海燕 编 下载链接在页面底部 发表于2021-03-17 类似图书 点击查看全场最低价 图书介绍 出版社: ...

  2. ORB_SLAM2中基础矩阵F求解的原理及源码分析

    1. 基础矩阵的定义 如图所示是对极几何约束关系图,图中 O 1 , O 2 O_{1},O_{2} O1​,O2​分别表示相机的两个位姿,平面 I 1 , I 2 I_{1},I_{2} I1​,I ...

  3. 电影里的机械手臂,和现实究竟有多大区别?

    在<王牌特工2:黄金圈>中,最夺人眼球的已经不再是Kingsman能当防弹盾牌的雨伞和能发射子弹的手表,而是反派特工的机械手臂. 查理的机械手臂能开车.开枪还能开定位发送信息,可以说是科幻 ...

  4. ABB 120 六轴机械手臂编程调试(一)

    硬件平台 机器人手臂使用ABB的120型号的六轴机械手臂 使用d652板卡与三菱fx3g plc 进行点位数据交互,由plc控制器对机械手臂进行控制. 机械手臂 开机后更改语言 首先将设备调到手动模式 ...

  5. Solving Rubik's Cube with a Robot Hand:OpenAI训练机械手臂解魔方

    说起<终结者>系列电影,我想最令人印象深刻的就是阿诺.施瓦辛格所饰演的T-800机器人,他那像人的手一样灵活的机械骨骼手臂可以说是相当的深入人心.继会玩DOTA的OpenAI Five后, ...

  6. 振动力学基础与matlab应用_【日文好书推荐】振动与噪声控制技术for机械设计者...

    声海译读活动日文小组为大家推荐好书,<振动与噪声控制技术for机械设计者>作者:小林英男,欢迎大家围观讨论提出宝贵意见! 目录译文(一) 译者:穆瑞林-天津科技大学 前言 第一章 机械设计 ...

  7. matlab中exp(liangx),Matlab基础知识

    <Matlab基础知识>由会员分享,可在线阅读,更多相关<Matlab基础知识(122页珍藏版)>请在人人文库网上搜索. 1.Lxy, China Jiliang Univer ...

  8. MATLAB 中的机械臂算法——运动学

    MATLAB 中的机械臂算法--运动学 机械臂算法 MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多关于机械臂方面的算法.而且随着客户需求的 ...

  9. matlab中求立方根,MATLAB基础入门

    MATLAB有许多使用方法,但最基本,也是入门时首先要掌握的是MATLAB命令窗口(Command Window)的使用方法. MATLAB命令窗口是用于输入数据,运行MATLAB函数和脚本,并显示结 ...

  10. 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)

    <控制工程基础(基于Matlab的线性系统串联校正)>由会员分享,可在线阅读,更多相关<控制工程基础(基于Matlab的线性系统串联校正)(16页珍藏版)>请在人人文库网上搜索 ...

最新文章

  1. 巧用apply让javascript函数仅执行一次
  2. dispatchTouchEvent onInterceptTouchEvent onTouchEvent区分
  3. 3-8 译码器设计实验--VHDL
  4. pythonの鉴黄之路(四)——urllib模块批量下载
  5. mvc 项目 webconfig 打开错误_Spring体系常用项目一览
  6. linux安装opencv让输入密码,linux下安装opencv的全过程(对初学者或者linux不熟悉的童鞋,非常适合)...
  7. Windows下编译redis
  8. php提示Undefined index的解决方法
  9. Jmeter链接MySQL读写数据
  10. CAPM模型的应用--回归模型中的Alpha, r_f
  11. 学周刊杂志学周刊杂志社学周刊编辑部2022年第24期目录
  12. 《那些年啊,那些事——一个程序员的奋斗史》——33
  13. php7反序列化问题,PHP7:反序列化漏洞案例及分析
  14. linux 2.6内核镜像,Linux2.6内核镜像的构建过程
  15. 乔布斯和盖茨的历史性对话(转录)
  16. linux的debin版本,8个最佳的基于Debian的Linux发行版
  17. 未来五年值得创业的是哪些行业?
  18. 张鑫溢:9.19黄金行情预测行情趋势分析及黄金原油独家操作建议指导.
  19. 钽电容一般用于电源输出端滤波
  20. 3.1-3.3 FEMA

热门文章

  1. 海康4200服务器进不去系统,ivms-4200客户端登入不了云服务器
  2. 最大子段和问题【思路及实现】
  3. python mobi_使用Python爬取mobi格式电纸书
  4. 常用z变换及其收敛域
  5. Vbs脚本编程简明教程之十二
  6. html 数据类型 text,客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”。...
  7. Element-UI省市区(县)三级联动---基于VUX移动框架的x-address组件
  8. 2021数学建模学习笔记
  9. 华为android最新版本下载地址,华为Android手机驱动
  10. python chardet模块_使用Python chardet模块解决中文乱码问题