Python骨架肌体运动学数学模型

🎯要点

🎯运动学矢量计算 | 🎯跳远的运动学计算 | 🎯关节肢体运动最小加加速度模型 | 🎯膝关节和踝关节角度二维运动学计算 | 🎯上下肢体关节连接运动链数学模型 | 🎯刚体连接点速度加速度计算 | 🎯刚体变换二维三维运动学计算 | 🎯奇异值分解算法刚体变换 | 🎯三维运动角速度计算 | 🎯肌体和步态模型

📜Python,R,C++/C#和MATLAB运动学刚体动力学用例

📜Python重力弹弓流体晃动微分方程模型和交直流电阻电容电路

📜Python和R概率统计算法建模评估气象和运动

📜Python流体数据统计模型和浅水渗流平流模型模拟

📜Python自行车六自由度飞行器多连接件非线性运动方程模型

📜Python协作运动机器人刚体力学解耦模型

📜ROS2(Cpp或Python)机器学习路径选择三维模拟平衡车及YOLOv8视觉消息

📜Python | C++ | MATLAB机器人正逆向运动学动力学求解器及算法

📜Python | C# | MATLAB 库卡机器人微分运动学 | 欧拉-拉格朗日动力学 | 混合动力控制

📜C++和Python蚂蚁搬食和蚊虫趋光性和浮标机群行为算法神经网络

📜Python人形机踊跃跨栏举重投篮高维数动作算法模型

📜MATLAB和Python发那科ABB库卡史陶比尔工业机器人模拟示教框架

📜MATLAB雨刮通风空调模糊器和发电厂电力聚变器卷积神经

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python运动学可视化

运动学是力学的一个分支,涉及物体的运动,而不考虑引起运动的力。给定一个描述粒子位置矢量随时间变化的方程,就可以计算各种运动学属性。最重要的是速度和加速度。如果粒子沿直线运动,则运动是直线运动。类似地,沿着弯曲路径行进的粒子也进行曲线运动。

x x x y y y z z z 笛卡尔坐标系定义了粒子在欧几里得空间中的空间位置。方程 1 显示了粒子位置随时间的变化。秒 (s) 是时间单位,米 (m) 是位置单位。
r ⃗ ( t ) = x ( t ) ı ^ + y ( t ) ȷ ^ + z ( t ) k ^ ( 1 ) \vec{r}(t)=x(t) \hat{\imath}+y(t) \hat{\jmath}+z(t) \hat{k}\qquad(1) r (t)=x(t)^+y(t)^+z(t)k^(1)
曲率半径 (rho) 是从粒子 P 到路径 C 的曲率中心的距离。当粒子在空间中移动时,曲率半径会根据描述运动的函数而变化。

速度是由方程 2 表示的位置的一阶导数。速度矢量与粒子的轨迹相切。

v ⃗ ( t ) = d x ( t ) d t ı ^ + d y ( t ) d t ȷ ^ + d z ( t ) d t k ^ ( 2 ) \vec{v}(t)=\frac{d x(t)}{d t} \hat{\imath}+\frac{d y(t)}{d t} \hat{\jmath}+\frac{d z(t)}{d t} \hat{k}\qquad(2) v (t)=dtdx(t)^+dtdy(t)^+dtdz(t)k^(2)
该方向上的单位矢量是单位切矢量,由公式 3 给出。它等于速度矢量除以幅值。

u ^ t = v ⇀ v ( 3 ) \hat{u}_t=\frac{\stackrel{\rightharpoonup}{v}}{v}\qquad(3) u^t=vv(3)
向量有方向和大小。公式 4 显示了如何计算 3 维位置矢量的大小。它可以应用于任何向量并扩展到任意数量的维度。

∥ r ⃗ ∥ = r = x 2 + y 2 + z 2 ( 4 ) \|\vec{r}\|=r=\sqrt{x^2+y^2+z^2}\qquad(4) r =r=x2+y2+z2 (4)
加速度是位置的二阶导数或速度的一阶导数。法向分量和切向分量包括加速度。

  • 切向加速度与速度方向相同。
  • 法向加速度是朝着粒子路径的曲率中心的方向。

方程 5 显示了加速度的两个分量。单位切向加速度矢量和法向加速度矢量是正交单位矢量。因此,它们形成一个称为密切平面的平面。

a ⃗ ( t ) = a t u ^ t ⏟ 切向  + a n u ^ n ⏟ 法向  ( 5 ) \vec{a}(t)=\underbrace{a_t \hat{u}_t}_{\text {切向 }}+\underbrace{a_n \hat{u}_n}_{\text {法向 }}\qquad(5) a (t)=切向  atu^t+法向  anu^n(5)
单位副法向量垂直于密切平面,构成右手正交系。因此,方程 6 给出了单位副法线。
u ^ b = u ^ t × u ^ n = v ⃗ × a ⃗ ∥ v ⃗ × a ⃗ ∥ ( 6 ) \hat{u}_b=\hat{u}_t \times \hat{u}_n=\frac{\vec{v} \times \vec{a}}{\|\vec{v} \times \vec{a}\|}\qquad(6) u^b=u^t×u^n=v ×a v ×a (6)
单位法线指向曲率中心,这意味着曲率中心 C 位于密切平面内。因此,相对于粒子 P,曲率中心 C 由方程 7 给出。
r ⃗ c / p = ρ u ^ n ( 7 ) \vec{r}_{c / p}=\rho \hat{u}_n\qquad(7) r c/p=ρu^n(7)
向量相加给出了 C 的位置向量,如公式 8 所示。
r ⃗ c = r ⃗ + r ⃗ c / p ( 8 ) \vec{r}_c=\vec{r}+\vec{r}_{c / p}\qquad(8) r c=r +r c/p(8)

Python模拟三维运动学

模拟从 0 秒开始,360 秒后结束。以下代码显示了时间线束参数。

t0 = 0
tf = 720
dt = 1
time = np.arange(t0, tf, dt, dtype='float')

方程 9 定义了粒子的位置如何随时间变化,从而定义了轨迹。
r ⃗ ( t ) = sin ⁡ ( 3 t ) ı ^ + cos ⁡ ( t ) ȷ ^ + cos ⁡ ( 2 t ) k ^ ( 9 ) \vec{r}(t)=\sin (3 t) \hat{\imath}+\cos (t) \hat{\jmath}+\cos (2 t) \hat{k}\qquad(9) r (t)=sin(3t)^+cos(t)^+cos(2t)k^(9)
以下显示了该符号运动方程以及速度和加速度导数的声明。还提出了切向加速度方程,它是速度大小的导数。

t = sp.symbols('t')
R = [sp.cos(t), sp.sin(t), t / 5] 
V = vector_derivative(R, t)
A = vector_derivative(V, t)
At = vector_magnitude(V).diff(t)

矢量方程

def vector_derivative(vector, wrt):return [component.diff(wrt) for component in vector]def vector_magnitude(vector):magnitude = 0for component in vector:magnitude += component ** 2return magnitude ** (1 / 2)def unit_vector(from_vector_and_magnitude=None, from_othogonal_vectors=None, from_orthogonal_unit_vectors=None):if from_vector_and_magnitude is not None:vector_a, magnitude = from_vector_and_magnitude[0], from_vector_and_magnitude[1]return [component / magnitude for component in vector_a]if from_othogonal_vectors is not None:vector_a, vector_b = from_othogonal_vectors[0], from_othogonal_vectors[1]vector_normal = np.cross(vector_a, vector_b)return unit_vector(from_vector_and_magnitude=(vector_normal, vector_magnitude(vector_normal)))if from_orthogonal_unit_vectors is not None:u1, u2 = from_orthogonal_unit_vectors[0], from_orthogonal_unit_vectors[1]return np.cross(u1, u2)def evaluate_vector(vector, time_step):numerical_vector = [float(component.subs(t, time_step).evalf()) for component in vector]magnitude = vector_magnitude(numerical_vector)return numerical_vector, magnitude

定义了相关的矢量函数后,就可以开始随时间传播。以下显示了用于运行模拟的代码。

propagation_time_history = []for ti in time:ti_r = d2r(ti)r, r_mag = evaluate_vector(R, ti_r)v, v_mag = evaluate_vector(V, ti_r)v_theta = [r2d(angle) for angle in direction_angles(v, v_mag)]a_theta = [r2d(angle) for angle in direction_angles(a, a_mag)]ut = unit_vector(from_vector_and_magnitude=(v, v_mag))ub = unit_vector(from_othogonal_vectors=(v, a))un = unit_vector(from_orthogonal_unit_vectors=(ub, ut))at = float(At.subs(t, ti_r).evalf())rc = r + (rho * un)rc_mag = vector_magnitude(rc)iteration_results = {'t': ti, 'rx': r[0], 'ry': r[1], 'rz': r[2], 'r_mag': r_mag,'vx': v[0], 'vy': v[1], 'vz': v[2], 'v_mag': v_mag,'rcx': rc[0], 'rcy': rc[1], 'rcz': rc[2], 'rc_mag': rc_mag, 'rho': rho,'ax': a[0], 'ay': a[1], 'az': a[2], 'a_mag': a_mag, 'an': an, 'at': at,'ubx': ub[0], 'uby': ub[1], 'ubz': ub[2],'utx': ut[0], 'uty': ut[1], 'utz': ut[2],'unx': un[0], 'uny': un[1], 'unz': un[2]}propagation_time_history.append(iteration_results)df = pd.DataFrame(propagation_time_history)

👉参阅&更新:计算思维 | 亚图跨际

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

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

相关文章

[python]Markdown图片引用格式批处理桌面应用程序

需求 使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为 文件名_blog.md。有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的输出路径,用户拖入…

Springboot实战:AI大模型+亮数据代理助力短视频时代

目录 前言1.如何入门亮数据1.1、注册登录1.2、注册账号1.3、登录1.4、购买静态住宅代理1.5、展示购买的代理 2. 使用Springboot、AI大模型构建系统2.1 使用Springboot、AI大模型构建爬虫2.2、在Springboot项目添加工具 3、编写代码,爬取视频素材3.1、代码里使用代理…

Redis核心问题总结(一)

1、为什么要使用Redis做缓存 缓存的好处 使用缓存的目的就是提升读写性能。而实际业务场景下,更多的是为了提升读性能,带来更好的性 能,带来更高的并发量。Redis 的读写性能比 Mysql 好的多,我们就可以把 Mysql 中的热点数据缓 …

如何编译ffmpeg支持h265(hevc)?

推荐使用这里的文件:https://github.com/runner365/ffmpeg_rtmp_h265 根据你ffmpeg的源码 版本,切换到不同分支即可。 国内cdn方式: 新增codecid hevc/vp8/vp9/opus在rtmp中的codecid没有官方协议定义,由国内众多知名cdn共同制定。 FLV_COD…

1. LangChain4j 之入门(简单易学)

一:前言 什么是LangChain?而LangChain4j又是什么?不知道的朋友,可以看我一下两篇文章 1分钟了解LangChain是什么? | 1分钟了解LangChain4j是什么? LangChain4j是LangChain的Java版本,帮助开发者很容易的接入大模型的…

提升结构安全性:应变计在现代建筑中的应用

在现代建筑领域,随着工程技术的不断进步,对结构安全性的要求也日益提高。作为一种关键的工程仪器仪表,应变计在提升结构安全性方面发挥着不可替代的作用。本文将深入探讨应变计在现代建筑中的应用,以及它如何助力工程师们实时监测…

权力之望怎么注册账号创建角色 权利之网角色账号注册教程

权力之望是一款全新的大型MMORPG游戏,拥有9把独特武器和56种职业组合,并搭配了超炫酷的战斗画面,全程采用低俯视角游戏,让玩家能体验到更强的操作感和爽快感。这款游戏主打高养成自由度玩家可以自由更换武器进行战斗,还…

前端面试题30(闭包和作用域链的关系)

闭包和作用域链在JavaScript中是紧密相关的两个概念,理解它们之间的关系对于深入掌握JavaScript的执行机制至关重要。 作用域链 作用域链是一个链接列表,它包含了当前执行上下文的所有父级执行上下文的变量对象。每当函数被调用时,JavaScri…

零基础也能成为产品册设计高手

​在当今数字化时代,产品册设计已成为企业营销的重要手段之一。过去,人们认为只有专业人士才能设计出精美的产品册,然而,随着设计工具的普及和在线学习资源的丰富,零基础的你也能成为产品册设计高手。本文将带你走进这…

MindsDB:一个利用企业数据构建 AI 的平台

MindsDB作为一个开源项目,它旨在将机器学习模型无缝集成到现有的数据库系统中,为用户提供实时的数据预测能力。这个项目的创新之处在于,它能够以简单、直观的方式让开发者和非技术人员都能够利用AI进行数据分析和预测。 它是根据企业数据库定…

航空航天单位保密网文件导出管理难点在哪里?如何解决?

航空航天单位的重要性不言而喻,它们在国家安全、科技进步、经济发展以及国际合作等多个领域都扮演着至关重要的角色。为了保护工作内容中的重要数据,遵守保密规定,对涉密人员、保密要害部门单位、涉密载体、涉密信息传输和涉密活动进行严格管…

glide加载mp4 源码堆栈调用核心代码分析

load 数据走的httpurlfetcher 的loaddata 从MultiLoader 调用而来 load到inputstream流后的处理 核心 图片是glide 首先创建解释器的时候 加了videodecoder 然后这里会从流中加载对应帧的图片保存在手机cache目录中 将这个file 作为bitmap传递 然后加载 private static final…

MySQL物理备份与恢复工具XtraBackend使用总结

文章目录 1.描述2.安装3.使用3.1 备份源数据库3.2 恢复到目标数据库3.2.1 恢复目录3.2.2 解压文件3.2.3 应用日志3.2.4 复制数据 4.使用总结4.1 备份4.2 恢复4.3 例子 1.描述 借助Percona XtraBackup工具实现MySQL的物理备份与恢复,相当于将整个MySQL进行了复制&am…

Django+vue自动化测试平台(25)-- 自动化测试之封装APscheduler定时任务框架

APscheduler简介 APscheduler全称Advanced Python Scheduler,作用为在指定的时间规则执行指定的作业,其是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及cront…

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片 1 目标效果视频 CamManager 2 CamManager读取本地文件时序 3 BD_Vision_Utility添加代码 3.0 导入链接库 BD_OperatorSets.dllSystem.Windows.Forms.dllOpencvSharp 3.1 导入VisionParam中创建的文件Util_FileO…

安防监控/视频汇聚平台EasyCVR设备录像回看请求播放时间和实际时间对不上,是什么原因?

安防监控EasyCVR视频汇聚平台可提供多协议(RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK)的设备接入、音视频采集、视频转码、处理、分发等服务,系统具备实时监控、云端录像、回看、告警、平台级联以及多视频流格式分发等视…

旅游计划定制小程序网页模板源码

手机在线旅游定制服务,定制旅游出行app小程序模板。包含:定制介绍、定制表单填写、我的订单等。 旅游计划定制小程序网页模板源码

C++ STL 文件系统用法介绍

目录 一. 获取当前工作目录 二:设置和读取文件写入时间 三:获取文件目录大小 四:获取文件类型信息 一. 获取当前工作目录 #include <filesystem> #include <iostream> #include <fstream> namespace fs = std::filesystem;int main() {std::cout &l…

交换机接口三种模式Access、Trunk、Hybrid

交换机接口的三种模式 1.access接口模式&#xff08;接入链路&#xff0c;接入模式&#xff09; 接收数据&#xff1a;当接收到一个无标记帧的时候&#xff0c;打上自己的PVid并接受&#xff08;就是自己的vlan标签&#xff09;。当接收到一个有标记帧的时候&#xff0c;对比…

swiftui中NavigationStack布局navigationBarTitleDisplayMode作用,以及内容顶部空白区域解决办法

写了一个小demo用于学习NavigationStack和toolbar/ToolbarItem知识&#xff0c;但是在写一个瀑布流布局的时候&#xff0c;设置了顶部的toolbar&#xff0c;然后内容区域的顶部出现了一大片空白区域&#xff0c;这样的效果并不是很美观很好看&#xff0c;所以就想着研究解决一下…