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.xdnf.cn/news/1475592.html

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

相关文章

【算法】接雨水

难度:困难 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例: 示例1 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是…

使用AI学习英语

使用AI学英语可以通过与智能AI对话、模拟对话场景、提供即时反馈和个性化学习计划等方式提高学习效率和效果。然而,AI技术也存在局限性,如缺乏情感交流和真实语境,需要与真人教师结合使用。 AI学英语的基本原理和应用 AI的基本原理 AI&…

【chatgpt消费者偏好】是什么驱动了游客持续旅游意愿?推文分享—2024-07-08

今天推文的主题是【chatgpt&消费者意愿】 第一篇:文章主要研究了什么因素驱动旅游者继续使用ChatGPT进行旅行服务,并从人类拟态的角度探讨了旅游者对ChatGPT的感知和使用意图。第二篇:本文探讨了ChatGPT-4在生成针对TripAdvisor上发布的…

Python入门 2024/7/8 序列切片,set

目录 小知识 数据容器(序列)的切片 切片 语法 倒序取(步长为负数的情况下) 小练习 暴力方法 优雅方法 数据容器 set集合 特点 基本语法 定义集合字面量 定义集合变量 定义空集合 基础操作 添加新元素 移除元素 随机取一个元素 清空集…

【教学类-66-01】20240708通义万象下载的图片增加文件名

背景需求: 前期,通义万象下载的图片都是用“XX_XX”的数字表示 今天我下载了建筑,如果文件名只有数字,根本不知道它是什么建筑。 找到RPA读取的50个建筑的XCLX文件 第1个生成的是“”埃菲尔铁塔”,下载时,…

layui-表格

1.使用方法 加上table标签 加上classlayui-table colgroup是列属性 tr是行td是列 thead是表头,后面一一对应 2.基础属性 加lay-even逐行换色 加lay-skin 设置边框风格

数学系C++ 继承派生多态 (十四十三)

— 继承 可以使得派生类具有父类的各种属性和功能,而不需要再次编写相同的代码。 类的继承:派生类继承了父类的特性(数据和函数) ► 继承是可传递的:从父类继承的特性可以传递给新的子类 ► 继承方式:规…

成长过程,摔倒不要紧,爬起来、改过、前进

无论何时何地,我们都有重头再来的能力,这份生生不息的力量来自天之灵根; 学习过程会有跌倒,这是很正常的节奏次序,不能掩盖自己的过失、自欺欺人,这不是过失,摔倒了就拍拍身上的灰尘&#xff…

2-28 基于matlab提取出频域和时域信号的29个特征

基于matlab提取出频域和时域信号的29个特征,主运行文件feature_extraction,fre_statistical_compute和time_statistical_compute分别提取频域和时域的特征,生成的29个特征保存在生成的feature矩阵中。程序已调通,可直接运行。 2-2…

为什么要学习Go?

目录 前言 一、Go 语言的发展史 Robert Griesemer Rob Pike Ken Thompson 二、Go语言全面分析 主要优势 主要挑战 三、Go 语言最佳实践 1. 云原生开发 2. 网络服务开发 3. 系统工具和实用程序 4. 数据处理和分析 四、哪些知名公司使用 Go 语言? Google …

这几类人,千万不要买纯电车

文 | AUTO芯球 作者 | 响铃 纯电车的冤大头真是太多了, 我之前劝过,有些人不适合买纯电车, 你们看,果然吧,麦卡锡最近的一份报告就披露了 去年啊,22%的人在买了电车后后悔了, 这些人说了&a…

PCL 点云FPFH特征描述子

点云FPFH特征描述子 一、概述1.1 FPFH概念1.2 基本原理1.3 PFH和FPFH的区别二、代码实现三、结果示例一、概述 1.1 FPFH概念 快速点特征直方图(FPFH)描述子:计算 PFH 特征的效率其实是十分低的,这样的算法复杂度无法实现实时或接近实时的应用。因此,这篇文章将介绍 PFH 的简…

C++规范

一、VS工具集列表: Visual Studio 2008:v90 Visual Studio 2010:v100 Visual Studio 2012:v110 Visual Studio 2013:v120 Visual Studio 2015:v140 (v140_xp) Visual Studio 2017&a…

鸿蒙开发HarmonyOS NEXT (三) 熟悉ArkTs (上)

一、自定义组件 1、自定义组件 自定义组件,最基础的结构如下: Component struct Header {build() {} } 提取头部标题部分的代码,写成自定义组件。 1、新建ArkTs文件,把Header内容写好。 2、在需要用到的地方,导入…

【Linux】进程间通信——匿名管道

为什么要进行进程间通信? 1.数据传输:一个进程需要将它的数据发送给另一个进程,比如我们有两个进程,一个负责获取数据,另一个负责处理数据,这时第一个进程就要将获取到的数据交给第二个进程 2.资源共享&…

虚拟机使用

1、安装 如何安装虚拟机?保姆级安装教程! - 知乎 (zhihu.com) 2、使用 2.1 快照 作用:保留当前系统信息为快照,随时可以恢复,以防未来系统被你玩坏,就好比游戏中的归档!每配置好一个就可以保…

CANopen协议---PDO使用配置

1、CANopen知识回顾 在上一讲中,已经对CANopen的基本结构和整体内容进行了一番梳理,本笔记主要整理了一下CANopen如何配置PDO,实现数据周期性自动上传和控制信号快速发送等操作。 CANopen协议开发梳理总结笔记教程-CSDN博客文章浏览阅读920次…

代码随想录-Day53

739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: …

微信视频号及直播回放下载工具

最近需要下载微信视频号中的视频,找一圈,终于找到了,,免费,没广告 软件叫做:爱享素材下载器。 是一款开源的、完全免费的工具。 第1步:下载安装包 下载地址: https://github.com/p…

年销量超1亿箱,三得利BOSS咖啡如何凭借人群战略打造极致产品力?

BOSS咖啡诞生于1992年,在可口可乐、朝日、麒麟等饮料巨头先后入局,市场竞争非常激烈的情况下,BOSS咖啡成为受国民欢迎的品牌,它是如何做到的呢? 罐装咖啡趋势崛起,各大品牌推出罐装咖啡 自1980年代起,罐装…