【数理知识】刚体基本运动

news2024/9/23 11:21:53

文章目录

  • 1 刚体定义
  • 2 自由刚体
  • 3 两种基本运动
    • 1 平动
    • 2 转动
  • 4 举例 1
    • 1 计算质心位置,求差得到平移向量
    • 2 计算协方差矩阵
    • 3 奇异值分解
    • 4 计算旋转矩阵
  • Ref

1 刚体定义

刚体就是质点间距离保持不变的质点系。

刚体的空间位置由任意与刚体固连的不共线三点决定。

2 自由刚体

自由刚体指上述提到的不共线三点,它们任意两点间的距离都保持不变,除此之外不再受到其它任何额外约束。

而自由刚体的自由度为
D o F = 6 DoF = 6 DoF=6

3 两种基本运动

1 平动

平动是指刚体重任何两点的连线在运动中保持方向不变。

在这里插入图片描述

在这里插入图片描述

平动刚体的自由度为
D o F = 3 DoF = 3 DoF=3

这是因为平动仅表示了在 x 、 y 、 z x、y、z xyz 轴上的移动。这一点在之前的文章 【数理知识】自由度 degree of freedom 及自由度的计算方法 也已经有过描述。

注意:平动刚体的运动可由基点运动确定。

2 转动

刚体的转动过程中,有两点(如下图中的 A , B A, B A,B)的连线不动。

A B AB AB 称为转动轴,如果它始终不懂,则称为固定转动轴(或固定轴);如果它只是瞬时不动,则称为顺势转动轴(或瞬时轴)。

另外,基点或转动轴可在刚体之外,只需与刚体固连。

在这里插入图片描述

4 举例 1

假设有 3 个相对位置保持不变的 Marker 点,已知它们在 t 1 t_1 t1 时刻和 t 2 t_2 t2 时刻的位置,然后计算平动矩阵和旋转矩阵。

t 1 t_1 t1 时刻:
Marker 1 的位置为: p 1 t 1 = ( 1 , 2 , 3 ) p_1^{t_1} = (1, 2, 3) p1t1=(1,2,3)
Marker 2 的位置为: p 2 t 1 = ( 4 , 5 , 6 ) p_2^{t_1} = (4, 5, 6) p2t1=(4,5,6)
Marker 3 的位置为: p 3 t 1 = ( 7 , 8 , 9 ) p_3^{t_1} = (7, 8, 9) p3t1=(7,8,9)

t 2 t_2 t2 时刻:
Marker 1 的位置为: p 1 t 2 = ( 2 , 3 , 4 ) p_1^{t_2} = (2, 3, 4) p1t2=(2,3,4)
Marker 2 的位置为: p 2 t 2 = ( 5 , 6 , 7 ) p_2^{t_2} = (5, 6, 7) p2t2=(5,6,7)
Marker 3 的位置为: p 3 t 2 = ( 8 , 9 , 10 ) p_3^{t_2} = (8, 9, 10) p3t2=(8,9,10)

计算思路为:

  • 先计算平移:通过求取这些点在两个时刻的质心位置,然后求差来得到平移矩阵

1 计算质心位置,求差得到平移向量

t 1 t_1 t1 时刻刚体的质心位置为
Center t 1 = ( p 1 x t 1 + p 2 x t 1 + p 3 x t 1 3 , p 1 y t 1 + p 2 y t 1 + p 3 y t 1 3 , p 1 z t 1 + p 2 z t 1 + p 3 z t 1 3 ) = ( 1 + 4 + 7 3 , 2 + 5 + 8 3 , 3 + 6 + 9 3 ) = ( 4 , 5 , 6 ) \begin{aligned} \text{Center}_{t1} &= (\frac{p_{1x}^{t1} + p_{2x}^{t1} + p_{3x}^{t1}}{3}, \frac{p_{1y}^{t1} + p_{2y}^{t1} + p_{3y}^{t1}}{3}, \frac{p_{1z}^{t1} + p_{2z}^{t1} + p_{3z}^{t1}}{3}) \\ &= (\frac{1 + 4 + 7}{3}, \frac{2 + 5 + 8}{3}, \frac{3 + 6 + 9}{3}) \\ &= (4, 5, 6) \end{aligned} Centert1=(3p1xt1+p2xt1+p3xt1,3p1yt1+p2yt1+p3yt1,3p1zt1+p2zt1+p3zt1)=(31+4+7,32+5+8,33+6+9)=(4,5,6)

t 2 t_2 t2 时刻刚体的质心位置为
Center t 2 = ( p 1 x t 2 + p 2 x t 2 + p 3 x t 2 3 , p 1 y t 2 + p 2 y t 2 + p 3 y t 2 3 , p 1 z t 2 + p 2 z t 2 + p 3 z t 2 3 ) = ( 2 + 5 + 8 3 , 3 + 6 + 9 3 , 4 + 7 + 10 3 ) = ( 5 , 6 , 7 ) \begin{aligned} \text{Center}_{t2} &= (\frac{p_{1x}^{t2} + p_{2x}^{t2} + p_{3x}^{t2}}{3}, \frac{p_{1y}^{t2} + p_{2y}^{t2} + p_{3y}^{t2}}{3}, \frac{p_{1z}^{t2} + p_{2z}^{t2} + p_{3z}^{t2}}{3}) \\ &= (\frac{2 + 5 + 8}{3}, \frac{3 + 6 + 9}{3}, \frac{4 + 7 + 10}{3}) \\ &= (5, 6, 7) \end{aligned} Centert2=(3p1xt2+p2xt2+p3xt2,3p1yt2+p2yt2+p3yt2,3p1zt2+p2zt2+p3zt2)=(32+5+8,33+6+9,34+7+10)=(5,6,7)

因此,平移向量 T T T 为:
T = Center t 2 − Center t 1 = [ 1 , 1 , 1 ] T = \text{Center}_{t2} - \text{Center}_{t1} = [1, 1, 1] T=Centert2Centert1=[1,1,1]

2 计算协方差矩阵

3 奇异值分解

4 计算旋转矩阵

Ref

  1. 刚体运动学
  2. 刚体 - WikiPedia
  3. 刚体的平面运动(摘要)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/811164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HDMI协议实现彩条静态显示方块移动

文章目录 前言一、硬件原理1、硬件设计原理图2、引脚图 二、系统设计1、系统模块框图2、RTL视图3、RGB2DVI 模块框图4、ALTDDIO_OUT IP 核的信号框图 三、HDMI的行&场时序1、时序图2、常见显示器时序参数 四、源码1、video_driver(显示驱动模块)2、serializer_10_to_1(并转…

微信公众号接入AI ChatGPT机器人bot的详细教程

微信公众号可以与客服系统进行对接,实现智能自动回复或者人工回复的公众号客服系统实现对接的前提是需要公众号为认证的服务号,实现的功能概况:公众号客服接口对接,公众号模板消息提醒,网页授权获取到微信的昵称头像&a…

Python实现GA遗传算法优化支持向量机回归模型(SVR算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法(Genetic Algorithm,GA)最早是由美国的 John holland于20世…

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 -量勺

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 - 测量长度 Project Overview: 项目概况: A machine shop, where any idea can become a reality, can cost millions and million of dollars. Still, the most important tool in the shop is the…

基于Open3D的点云处理12-体素化

体素化Voxelization 体素(voxel)是像素(pixel)、体积(volume)和元素(element)的组合词,相当于3D空间中的像素; 体素化是通过用空间均匀大小的体素网格(voxel grid)来模…

openpnp - ReferenceStripFeeder 改版零件

文章目录 openpnp - ReferenceStripFeeder 改版零件概述笔记整体效果散料飞达主体磁铁仓盖板飞达编带中间压条飞达编带两边压条装配体用的8mm编带模型END openpnp - ReferenceStripFeeder 改版零件 概述 官方推荐了ReferenceStripFeeder的模型smd_strip_feeders_mod_tray.zip…

【C++学习】STL容器——vector

目录 一、vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vector 增删查改 1.2.5 vector 迭代器失效问题(重点) 二、vector深度剖析及模拟实现 ​编辑…

【JavaSE】数组的定义与使用

【本节目标】 1. 理解数组基本概念 2. 掌握数组的基本用法 3. 数组与方法互操作 4. 熟练掌握数组相关的常见问题和代码 目录 1. 数组的基本概念 1.1什么是数组 1.2 数组的创建及初始化 1.3 数组的使用 2. 数组是引用类型 2.1基本类型变量与引用类型变量的区别 2.2再谈引用…

慎思笃行,兴业致远:金融行业的数据之道

《中庸》中说,“博学之,审问之,慎思之,明辨之,笃行之”。这段话穿越千年,指引着中国千行百业的发展。对于金融行业来说,庞大的数据量可以说是“博学”的来源。但庞大的数据体量,既是…

网络通讯(服务端搭建)

一.本篇概况 本篇文章主要以C语言为主,通过C语言中所设定的函数以及环境来将网络通讯的服务端进行搭建。注:本篇并未涉及服务端与客户端之间的收发数据。 二.代码实现 1.初始化套接字库: if(WSAStartup(MAKEWORD(2, 2), &wsaData) ! 0…

你真的了解Java中的数组吗?

你真的了解Java中的数组吗? 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间。在C,C等语言中,数组的定义简洁清晰,而在J…

PDF.js实现搜索关键词高亮显示效果

在static\PDF\web\viewer.js找到定义setInitialView方法 大约是在1202行,不同的pdf.js版本不同 在方法体最后面添加如下代码: // 高亮显示关键词---------------------------------------- var keyword new URL(decodeURIComponent(location)).searchP…

【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言1 结构体的声明1.1 结构的基础知识1.2 结构的声明1.2.1 . 匿名结构体类型声明1.2.2 匿名结构…

【深度学习实践】垃圾检测

简介 本项目使用深度学习目标检测开源框架PaddleDetection中的yolox算法实现了垃圾检测,本文包含了从头训练yolox模型和直接使用训练好的模型进行推理的代码及相关权重。 一、数据集准备 本次训练的数据集为coco格式,共包含150张垃圾的照片&#xff0…

每日一题——丢失的数字

丢失的数字 题目链接 注:这一题的解法建立在位运算——异或^的基础之上,如果位运算和异或操作符不太了解,建议先看看: 位运算详解 只出现一次的数字 思路 同样,这题要求时间复杂度为O(n),空间复杂度为O…

二叉树中的深搜

一)计算布尔二叉树的值 2331. 计算布尔二叉树的值 - 力扣(LeetCode) 1)计算布尔二叉树需要从叶子节点向上进行计算,从下向上进行计算 2)完整二叉树是同时拥有左孩子和右孩子,或者是完全没有右孩子 3)当我只是盯着根节点来看的时候…

JSON Web 令牌 (JWT)攻击

一、什么是JSON Web 令牌 (JWT) JSON Web令牌(JWT)是一种开放标准(RFC 7519),用于在网络应用间传递声明信息。它是一种轻量级、自包含的安全性传输格式,通常用于在身份验证和授权过程…

三更博客系统(完整笔记+前后台系统代码实现)

三更博客前后端分离系统 前后端分离博客系统1.技术栈2.创建工程3.博客前台3.0 准备工作3.1 SpringBoot和MybatisPuls整合配置测试 3.1 热门文章列表3.1.0 文章表分析3.1.1 需求3.1.2 接口设计3.1.3 基础版本代码实现3.1.4 使用VO优化3.1.5 字面值处理 3.2 Bean拷贝工具类封装3.…

C#百万数据处理

C#百万数据处理 在我们经验的不断增长中不可避免的会遇到一些数据量很大操作也复杂的业务 这种情况我们如何取优化如何去处理呢?一般都要根据业务逻辑和背景去进行合理的改进。 文章目录 C#百万数据处理前言一、项目业务需求和开发背景项目开发背景数据量计算业务需…

OpenFeign原理浅析

OpenFeign原理我个人觉得是非常简单的,如果你对Spring非常了解,知道FactoryBean,以及注入bean的方式,并掌握动态代理,那么自己实现一个类似这样的Http代理客户端是一点问题也没有的! 使用流程 首先我们先过…