刚体运动理论基础

刚体在空间中运动时,其运动只能是三种情况:
1、纯平移
2、绕一个轴的纯旋转
3、平移与旋转的结合
一、纯平移
在三维空间中,一般平移用一个向量表示,如平移向量为D=(dx,dy,dz),一般习惯写成列向量的形式:

空间中任意一点P(x,y,z)经过上述向量D平移后的新坐标为

二、绕一个轴的纯旋转
关于右手笛卡尔坐标系的 x-, y- 和 z-轴的旋转也习惯分别叫做 roll, pitch 和 yaw 旋转

三、平移与旋转的结合
当刚体是既有平移又有旋转的复合运动,为了方便计算和表示,一般会把上述两种变换矩阵结合起来,使其能同时表示平移和旋转。将一个3 x 3旋转矩阵和3 x 1位移向量组合成一个4 x 4齐次变换矩阵是以后会经常用到的操作。例如将上述绕 X 轴旋转和平移向量合成一个齐次变换矩阵为

Mathematica实现

方法(一)-现有函数包
Mathematica系统没有直接实现这个功能的函数,但有大牛写的第三方函数包可以实现,如:Screws.m,该程序包基于旋量理论,其中有个函数RPToHomogeneous可以实现此功能。该程序包在此处可以下载
使用方法1:先安装该程序包,然后直接调用。
使用方法2:先设置该程序包所在目录,然后载入,即可调用。
个人推荐使用方法2,演示如下

SetDirectory["Z:\Wushuichuan\05-计算仿真\基于Mathematica机器人仿真\Packages"];
<< Screws.m
R = RotationMatrix[\[CurlyTheta], {1, 0, 0}];(*产生一个绕X轴旋转\[CurlyTheta]角的旋转矩阵*)
P = {dx, dy, dz};
RPToH = RPToHomogeneous[R, P] // MatrixForm


值得注意的是,在使用RPToHomogeneous时,要注意第二个参数的形式,否则会出错。应该使用坐标点(向量)的形式,即{dx,dy,dz}。
方法(二)-自定义函数
要在Mathematica中实现矩阵合并的功能并不难,毕竟是宇宙第一的科学计算软件,这怎么能难倒MMA呢?仅一行就搞定

RPToH[u_, v_] := ArrayFlatten[{{u, v}, {0, 1}}];(* u是3x3旋转矩阵,v是3x1平移矩阵 *)
R = RotationMatrix[\[CurlyTheta], {1, 0, 0}];
(*产生一个绕X轴旋转\[CurlyTheta]角的旋转矩阵*)
P = {{dx}, {dy}, {dz}};
RPToH[R, P] // MatrixForm

注意上述代码中的注释,v是矩阵,不能是坐标点或向量的形式,否则会出错。

注意上述两个合并旋转矩阵和平移矩阵的方法中,平移向量的定义是不一样的,在方法(一)中,P是一个一维列表;在方法(二)中,P是一个二维列表,但其实它们写成矩阵形式是一样的,不同的是它们的数据结构不同,这里与函数ArrayFlatten有关。

P1 = {dx, dy, dz} // MatrixForm
P2 = {{dx}, {dy}, {dz}} // MatrixForm

刚体运动的表示及其Mathematica实现相关推荐

  1. 刚体运动中变换矩阵的逆

    刚体运动中变换矩阵的逆 刚体运动中的变换矩阵为: T=[Rt0T1]T= \begin{bmatrix}\\R&t \\0^T&1 \end{bmatrix} T=[R0T​t1​] ...

  2. 「SLAM」三维空间刚体运动名词笔记

    主要内容:旋转矩阵.变换矩阵.四元数.欧拉角 3.1 旋转矩阵 3.1.1 点.向量和坐标系 刚体:三维空间中的物体,需要用三维坐标(xyz)和位姿(物体朝向)来描述 左/右手坐标系:将大拇指.食指. ...

  3. 【多视图几何】TUM 课程 第2章 刚体运动

    课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 .视频评论区可以找到课 ...

  4. 3点 刚体运动 opencv_模态法动力学分析中的刚体模态

    01 - 概述 在对汽车结构进行动力学有限元分析时,无论是瞬态问题还是频响问题,都经常使用模态叠加法. 模态叠加法动力学分析是常规模态分析的自然扩展,它利用结构振型来缩减问题求解规模,从而使数值求解更 ...

  5. 三维空间坐标的旋转算法详解_视觉slam | 三维空间刚体运动的五种表达:旋转矩阵 变化矩阵 欧拉角 旋转向量 四元数及互相转换...

    原po:高翔slam十四讲-刚体运动 1.旋转矩阵 考虑一次旋转 Before: 坐标系(e1,e2,e3), 向量(a1,a2,a3) After: 坐标系(e1',e2',e3'), 向量(a1' ...

  6. 三维空间刚体运动4-5:四元数多点离散数值解插值方法:Sping

    三维空间刚体运动4-5:四元数多点离散数值解插值方法:Sping 1. 正切曲率κ(γ,t)\kappa(\gamma, t)κ(γ,t)在H1H_{1}H1​上的离散数值解--Sping 1.1 离 ...

  7. 三维空间刚体运动4-4:四元数多点连续解析解插值方法:Spicv

    三维空间刚体运动4-4:四元数多点连续解析解插值方法:Spicv 1. 总述:多点旋转插值的数学方法 2. 插值曲线及其连续性 2.1 插值曲线定义 2.2 插值曲线连续性的讨论 3. 最优插值曲线 ...

  8. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)

    三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程) 一.显示运动轨迹原理讲解 二.前期准备 三.git管理子模块及克隆源代码 1.学习使用Git Submodule 2.克隆源 ...

  9. 三维旋转矩阵_第三讲:三维空间的刚体运动

    题图来自monicore | Pixabay 三维空间的刚体运动 本讲主要主要关注一个问题:一个刚体在三维空间中的运动是如何描述的. 为什么要研究这个问题?因为当我们描述机器人的位姿时,就是在描述一个 ...

最新文章

  1. 循环神经网络 递归神经网络_如何用递归神经网络预测空气污染
  2. 福利 | 从生物学到神经元:人工神经网络 ( ANN ) 简介
  3. Windows 远程桌面管理
  4. 手把手教你创建自己的Altium Designer集成元件库
  5. 台式机安装系统时区分BIOS与UEFI
  6. 看了这个总结,其实 Matplotlib 可视化,也没那么难!
  7. SQL Server下载安装
  8. Silverlight通过Wcf Data Service访问数据库之ADO.NET Entity Framework篇
  9. Java讲课笔记08:数组
  10. 效果奇特的HTML5动画,12个效果奇特的HTML5动画赏析
  11. BZOJ 2555: SubString [后缀自动机 LCT]
  12. 数据库JDBC的基本内容
  13. [Java][Android][Process] 分享 Process 执行命令行封装类
  14. android apk 防止反编译技术第一篇-加壳技术
  15. linux4.12 交叉编译链,交叉编译工具链(很详细)
  16. APP支付模块设计分析
  17. python诗歌文件格式处理_python实现诗歌游戏(类继承)
  18. 学习嵌入式怎么入门和提高?嵌入式开发教程pdf
  19. HTML中如何将字体加粗-前端入门
  20. java线程调度(优先级,休眠,让步,等待)

热门文章

  1. 014-无条件跳转指令jmp+
  2. 论文的研究方法实验方案技术路线
  3. 李宏毅nlp学习笔记12:DST(Dialogue State Tracking)
  4. 腾讯研究院院长司晓:互联网大脑的人文侧面
  5. 英国脱欧 光伏人怎么看?
  6. idae怎么修改背景图片
  7. 富士康服务器主板X58维修,富士康X58 Blood Rage主板BIOS预览
  8. signal软件如何退出账号_微信怎么一键切换登录 微信多账号一键切换方法【图文详解】...
  9. [ERP]ERP项目实施过程中的致命过失
  10. Redis实现点赞与关注