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

🎯要点

🎯腿式或固定式机器人模型 | 🎯网格、点云和体素网格碰撞检测 | 🎯正反向运动学和动力学 | 🎯机器人刚体力学计算 | 🎯编辑参考系姿势和路径 | 🎯软件接口实体机器人模拟 | 🎯三角网格碰撞刚体模拟 | 🎯机器人比例微分积分控制、扭矩控制和速度控制模拟 | 🎯相机、激光传感器、陀螺仪、力/扭矩传感器和加速度计模拟 | 🎯集成ROS模拟 | 🎯运动规划器、约束流形上的运动规划 | 🎯快速轨迹优化 | 🎯实时运动规划 | 🎯解耦规划模型与模拟模型

📜刚体力学用例:Python自行车六自由度飞行器多连接件非线性运动方程模型
在这里插入图片描述
在这里插入图片描述

🍇Python力学动能势能

粒子 P 的线性动量定义为:
L P = m v L_P=m v LP=mv
其中 m m m是粒子 P P P的质量, v v v是粒子在惯性系中的速度。

类似地,刚体的线性动量定义为:
L B = m v ∗ L_B=m v ^* LB=mv
其中 m m m是刚体的质量, B B B v ∗ v^* v是惯性系中 B B B质心的速度。

质点 P 绕惯性系 N 中任意点 O 的角动量定义为:
N H P / O = r × m v { }^N H ^{P / O}= r \times m v NHP/O=r×mv
其中 r r r是从点 O O O到质量 m m m的粒子的位置向量, v v v是惯性系中粒子的速度。

类似地,刚体 B 绕惯性系 N 中的点 O 的角动量定义为:
N H B / O = N H B / B ∗ + N H B ∗ / O { }^N H ^{B / O}={ }^N H ^{B / B^*}+{ }^N H ^{B^*} / O NHB/O=NHB/B+NHB/O
其中物体绕其质心的角动量为:
N H B / B ∗ = I ∗ ⋅ ω { }^N H ^{B / B^*}= I ^* \cdot \omega NHB/B=Iω
质心关于 O 的角动量为:
N H B ∗ / O = r ∗ × m v ∗ { }^N H ^{B^*} / O= r ^* \times m v ^* NHB/O=r×mv
Python伪代码实现上述动量:

from pyx import symbols
from pyx.physics.mechanics import dynamicsymbols, ReferenceFrame
from pyx.physics.mechanics import RigidBody, Particle, Point, outer
from pyx.physics.mechanics import linear_momentum, angular_momentum
from pyx.physics.vector import init_vprinting
init_vprinting(pretty_print=False)
m, M, l1 = symbols('m M l1')
q1d = dynamicsymbols('q1d')
N = ReferenceFrame('N')
O = Point('O')
O.set_vel(N, 0 * N.x)
Ac = O.locatenew('Ac', l1 * N.x)
P = Ac.locatenew('P', l1 * N.x)
a = ReferenceFrame('a')
a.set_ang_vel(N, q1d * N.z)
Ac.v2pt_theory(O, N, a)
P.v2pt_theory(O, N, a)

最后,创建组成系统的主体。在这种情况下,系统由粒子 Pa 和刚体 A 组成。

Pa = Particle('Pa', P, m)
I = outer(N.z, N.z)
A = RigidBody('A', Ac, a, M, (I, Ac))

然后,人们可以选择评估系统各个组件的动量或整个系统本身的动量。

linear_momentum(N,A)
angular_momentum(O, N, Pa)
linear_momentum(N, A, Pa)
angular_momentum(O, N, A, Pa)

粒子 P 的动能定义为
T P = 1 2 m v 2 T_P=\frac{1}{2} m v ^2 TP=21mv2
其中 m m m是粒子 P P P的质量, v v v是粒子在惯性系中的速度。

类似地,刚体 B 的动能定义为
T B = T t + T τ T_B=T_t+T_\tau TB=Tt+Tτ
其中平动动能由下式给出:
T t = 1 2 m v ∗ ⋅ v ∗ T_t=\frac{1}{2} m v ^* \cdot v ^* Tt=21mvv
旋转动能由下式给出:
T r = 1 2 ω ⋅ I ∗ ⋅ ω T_r=\frac{1}{2} \omega \cdot I ^* \cdot \omega Tr=21ωIω
其中 m m m是刚体的质量, v ∗ v^* v是惯性系中质心的速度, ω \omega ω是刚体的惯性角速度, I ∗ I^* I是中心惯性二元。

势能定义为物体或系统因其位置或排列而拥有的能量。

物体或物体系统的拉格朗日定义为:
L = T − V L =T-V L=TV
其中 T T T V V V分别是动能和势能。

Python伪代码实现:

from pyx import symbols
from pyx.physics.mechanics import dynamicsymbols, ReferenceFrame, outer
from pyx.physics.mechanics import RigidBody, Particle
from pyx.physics.mechanics import kinetic_energy, potential_energy, Point
from pyx.physics.vector import init_vprinting
init_vprinting(pretty_print=False)
m, M, l1, g, h, H = symbols('m M l1 g h H')
omega = dynamicsymbols('omega')
N = ReferenceFrame('N')
O = Point('O')
O.set_vel(N, 0 * N.x)
Ac = O.locatenew('Ac', l1 * N.x)
P = Ac.locatenew('P', l1 * N.x)
a = ReferenceFrame('a')
a.set_ang_vel(N, omega * N.z)
Ac.v2pt_theory(O, N, a)
P.v2pt_theory(O, N, a)
Pa = Particle('Pa', P, m)
I = outer(N.z, N.z)
A = RigidBody('A', Ac, a, M, (I, Ac))

然后,用户可以确定系统中任意数量实体的动能:

kinetic_energy(N, Pa)
kinetic_energy(N, Pa, A)

然后可以确定构成系统的任意数量的实体的势能:

Pa.potential_energy = m * g * h
A.potential_energy = M * g * H
potential_energy(A, Pa)

我们还可以确定该系统的拉格朗日量:

from pyx.physics.mechanics import Lagrangian
from pyx.physics.vector import init_vprinting
init_vprinting(pretty_print=False)
Lagrangian(N, Pa, A)

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

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

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

相关文章

使用shell脚本进行clang-tidy静态代码分析

文章目录 0. 引言1. 完整检测脚本代码 clang-tidy-check.sh1.1 流程图1.2 脚本功能概述 2. 该脚本优缺点 0. 引言 clang-tidy 是基于 Clang 的工具,提供了丰富的代码检查功能,可以根据用户配置文件进行定制化的检查和规则定义。 之前的文章《使用 Clang…

分子AI预测赛Task2笔记

下面所述比较官方的内容都来自官方文档 ‍‌⁠‌‍​​​‌​​⁠​​​​​​​​‍‬​​‍⁠‍‍​​‬​‌​​​‌‍‬​​​​​​‍‌Task2:赛题深入解析 - 飞书云文档 (feishu.cn) 赛题背景 强调了人工智能在科研领域&…

WebDriver API

WebDriver API 是一组允许程序控制和自动化Web浏览器的接口,它是Selenium框架的一部分。Selenium 是一个广泛使用的开源自动化测试工具,用于Web应用程序的自动化测试。WebDriver API 提供了与浏览器进行交互的能力,支持多种浏览器&#xff0c…

苹果电脑废纸篓数据被清空了,有什么方法可以恢复吗?

使用电脑的用户都知道,被删除的文件一般都会经过回收站,想要恢复它直接点击“还原”就可以恢复到原始位置。mac电脑同理也是这样,但是“回收站”在mac电脑显示为“废纸篓”。 苹果电脑废纸篓数据被清空了,有什么方法可以恢复吗&am…

java反射和注解

反射 获取class对象的三种方法 ①:Class.forName("全类名"); ②:类名.class ③:对象.getclass(); 代码样例 package com.ithema;public class Main {public static void main(String[] args) throws ClassNotFoundException {//第…

基于Canvas的Html5多时区动态时钟实战

目录 前言 一、关于Canvas技术 1、Canvas是什么 2、Canvas的属性及渲染特性 二、Canvas动态多时区展示 1、新建html页面 2、创建Canvas对象 3、绘制所有的时钟 总结 前言 出差旅行相信大家一定会住酒店,大家在酒店的前台进行预订的时候,是不是都…

centos执行yum相关命令报错的可能原因

文章目录 1. 执行yum命令是报下面一大帕拉2. 安装某个包报错,找不到这个包 1. 执行yum命令是报下面一大帕拉 最后一行报错,在repo文件中找不到空baseurl:xxx / x86_64 执行这行命令把这个找不到的 xxx 禁掉即可sudo yum-config-manager --di…

【项目日记(三)】搜索引擎-搜索模块

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多项目内容 目录 1.前言2.项目回顾3.搜索流程3.1分词3.2触发3.3去重3.4排序3.5包装 4.总结 1.前言 在前…

Qt的源码目录集合(V5.12.12版本)

目录 1.QObject实现源码 2.qml中的ListModel实现源码 3.qml中的JS运行时的环境和数据类型源码 1.QObject实现源码 .\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\corelib\kernel\qobject.h .\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\corelib\kernel\qobject.cpp .\Qt\Qt5.12.12\5…

虚拟机USB——解决每次插U盘都得选择连接到主机还是虚拟机问题

虚拟机USB——解决每次插U盘都得选择连接到主机还是虚拟机问题 1.编辑–>首选项–> 2.如果想每次插U盘都连接到主机就选“将设备连接到主机” 如果想每次插U盘都进行选择,就选择“询问要执行的操作”

Vscode常用快捷键

前言: 使用环境:ubuntu22.04 按键组合功能AltO切换源/头文件CtrlK,CtrlC注释CtrlK,CtrlU取消注释CtrlK,CtrlI格式化F12跳转函数定义CtrlAlt-跳转函数后返回CtrlW关闭当前标签页CtrlB关闭右侧边栏Ctrl← /→光标移至单词首/尾CtrlShift←/→跳选单词选中CtrlDelete删…

【软考论文】论基于架构的软件设计方法及应用(ABSD)

目录 一、题目二、论文2.1 摘要2.2 正文三、扩展一、题目 基于架构的软件设计(Architecture-Based Software Design,ABSD)方法以构成软件架构的 商业、质量和功能需求 等要素来驱动整个软件的开发过程。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解…

GCP FrontendConfig 详解:优化您的云负载均衡

目录 1. 什么是GCP FrontendConfig? 2. FrontendConfig的主要功能 2.1 协议选择 2.2 SSL/TLS配置 2.3 重定向配置 2.4 自定义响应头 3. 配置FrontendConfig 4. FrontendConfig的高级特性 4.1 智能路由 4.2 流量控制 4.3 日志和监控 5. FrontendConfig最佳实践 5.…

Ubuntu22.04使用/etc/rc.local开机启动程序

前言 因为在工作中,Ubuntu系统经常使用到开机启动,为了方便之后使用,特此介绍下如何使用/etc/rc.local来开机启动程序,步骤如下,针对Ubuntu20.04或Ubuntu22.04系统都有效。 使用root权限编辑/lib/systemd/system/rc-…

在 Mac 上使用 本地 LLM 文本终结

我们可使用本地大型语言模型,如Mistral、Llama等,来给文本做总结,相比在线的 Kimi ,ChatGPT, 我们不用担心数据泄露,因为整个操作都是在本地电脑完成的。 我们用 ollama 举例 首先安装 ollama https://ol…

IPython脚本加载秘籍:探索脚本魔法的艺术

IPython脚本加载秘籍:探索脚本魔法的艺术 IPython,这个强大的交互式Python解释器,不仅提供了丰富的交互式编程功能,还允许用户加载和运行Python脚本。这一功能极大地扩展了IPython的实用性,使得用户可以在IPython环境…

数组-二分查找

二分查找 leetcode704 /*** param {number[]} nums* param {number} target* return {number}*/ var search function(nums, target) {let left 0, right nums.length - 1;while (left < right) {const mid Math.floor((right - left) / 2) left;const num nums[mid]…

SpringSecurity中文文档(体系结构).md

体系结构&#xff08;Architecture&#xff09; 本节讨论基于 Servlet 的应用程序中 Spring Security 的高级体系结构。我们将在参考文献的身份验证、授权和防止利用部分中构建这种高层次的理解。 过滤器的综述 &#xff08;A Review of Filters&#xff09; Spring Securit…

vue3弹窗usehook

说明 个人记录保存。 import {ref} from "vue";export default function useDialog(opts) {const visible ref(false)const loading ref(false)const open (v) > {visible.value truetypeof opts.onOpen "function" && opts.onOpen(v)}c…

实现WebSocket聊天室功能

实现WebSocket聊天室功能 什么是WebSocket&#xff1f;WebSocket的工作原理服务器端实现客户端实现 在现代Web开发中&#xff0c;实时通信已经变得越来越重要。传统的HTTP协议由于其无状态和单向通信的特点&#xff0c;无法很好地满足实时通信的需求。而WebSocket协议则应运而生…