前言
动态运动基元(Dynamic Movement Primitive, DMP),是一种轨迹规划的模仿学习方法。其在学术界有大量的相关学术研究,但是鲜有教材会去讲解 DMP 系统学习过程。
这里浅浅分享一下我学习过程中一些收藏内容。
movement_primitives 项目
进阶选择,该项目对于 DMP 代码的封装更为完整。代码涉及:一维 DMP、三维 DMP、笛卡尔位置和姿态 (Cartesian position and orientation)、双臂笛卡尔位置和姿态(Dual Cartesian position and orientation)、双臂笛卡尔 DMP 在位置/姿态上的耦合(Coupling terms for synchronization of position and/or orientation of dual Cartesian DMPs)、耦合避障、概率运动基元(Probabilistic Movement Primitives, ProMPs)。
- https://github.com/dfki-ric/movement_primitives.git GitHub 库
- https://dfki-ric.github.io/movement_primitives/ 文档发布页
- https://dfki-ric.github.io/movement_primitives/api.html API 接口文档
- https://bitbucket.org/khansari/lasahandwritingdataset/src/master/ LASA手写数据集(代码中涉及)
- https://cloud.dfki.de/owncloud/index.php/s/KMQtk73LzLrbcHi 未公开依赖项(包括URDF模型和一些包等文件)
论文
- Ude A, Nemec B, Petrić T, et al. Orientation in cartesian space dynamic movement primitives[C]//2014 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2014: 2997-3004. 笛卡尔空间 DMP,包括笛卡尔空间位置(矢量)和姿态(旋转矩阵和四元数)。
- Saveriano M, Abu-Dakka F J, Kramberger A, et al. Dynamic movement primitives in robotics: A tutorial survey[J]. The International Journal of Robotics Research, 2023, 42(13): 1133-1184. 进阶的话可以仔细阅读这篇综述,反过来寻找自己感兴趣的点,去阅读对应方向的论文。
可能用到的知识点
- 阻尼比。阻尼、阻尼系数与阻尼比。DMP 的本质是弱二阶线性系统,而了解二阶线性系统必掌握阻尼。
- 二阶线性系统。DMP 的本质是弱二阶线性系统。
- 机器人学-熊有伦第 9 章-操作臂的轨迹控制
- 动态运动基元与二阶线性系统 这里推荐我之间写的一篇文章。
- 四元数。DMP 在笛卡尔空间表示姿态,有多种方法,其中旋转矩阵表示有奇异点,因此借助四元数来弥补这一缺点。
- 四元数Quaternion的基本运算 这一篇文章详细讲解了四元数的公式推导,基本四元数运算,唯一的缺点是符号不太友好,不统一,建议深度理解四元数过一遍即可。
- Gimbal Lock欧拉角死锁问题 对应上一篇文章,对照来看。
- 2.5 Quaternions 两个公式简洁合理漂亮,平时手算四元数这两个公式即可。
- S 型函数
- S 型函数-维基百科 有助于理解 DMP 中相位函数。