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

news2024/11/20 13:34:47

🎯要点

🎯腿式或固定式机器人模型 | 🎯网格、点云和体素网格碰撞检测 | 🎯正反向运动学和动力学 | 🎯机器人刚体力学计算 | 🎯编辑参考系姿势和路径 | 🎯软件接口实体机器人模拟 | 🎯三角网格碰撞刚体模拟 | 🎯机器人比例微分积分控制、扭矩控制和速度控制模拟 | 🎯相机、激光传感器、陀螺仪、力/扭矩传感器和加速度计模拟 | 🎯集成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.coloradmin.cn/o/1887326.html

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

相关文章

MyBatis-plus这么好用,不允许还有人不会

你好呀,我是 javapub. 做 Java 的同学都会用到的三件套,Spring、SpringMV、MyBatis。但是由于使用起来配置较多,依赖冲突频发。所有,各路大佬又在这上边做了包装,像我们常用的 SpringBoot、MyBatisPlus。 基于当前要…

2024年7月2日 (周二) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键,实现一键唤起、一键隐藏的 Windows 工具,并且支持窗口动态绑定快捷键(无需设置自动实现)。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 经典名作30周年新篇《恐怖惊魂夜…

谷歌网站SEO服务有哪些?

Seo其实说来说去就包含三样,网站本身技术优化,内容以及外链,而这三样里,网站的技术优化是前提本身,确保网站符合谷歌搜索规范,包括调整网站的结构、速度和移动设备兼容性,以提高用户体验和搜索引…

【C语言】const 关键字

在C语言中,const关键字用于定义常量,使得变量的值在其声明之后无法被修改。这可以帮助防止意外修改数据,提高代码的安全性和可读性。以下是有关const关键字的一些详细说明: 基本用法 const int max_value 100;在这个例子中&…

CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation

论文:CM-UNet: Hybrid :CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation 代码:https://github.com/XiaoBuL/CM-UNet Abstrcat: 由于大规模图像尺寸和对象变化,当前基于 CNN 和 Transformer 的遥感图像语义分割方…

[数据库原理]关系范式总结(自用)

如有错误,欢迎指正!!! 有一些题目我放在pdf里面了

this.$refs[tab.$attrs.id].scrollIntoView is not a function

打印this.$refs[tab.$attrs.id].scrollIntoView 在控制台看到的是一个undefined 是因为this.$refs[tab.$attrs.id] 不是一个dom 是一个vuecomponent 如图所示: 所以我用的这个document.querySelector(.${tab.$attrs.id})获取dom document.querySelector(.${tab.$attrs.id})…

海思SS928/SD3403开发笔记4——u盘挂载

首先一定要将u盘格式化成fat32。 挂载 mkdir /mnt/usb mount /dev/sda1 /mnt/usb成功示意图: 取消挂载 umount /mnt/usb

智谱AI: ChatGLM API的使用

一、获取API 1、打开网址:智谱AI开放平台 注册账号登录 2、登录,查看API key (注册后赠送100万token,实名认证后多赠送400万, 有效期一个) 二、安装及调用 安装质谱SDK pip install zhipuai调用方式 流式调用 from zhipuai import ZhipuA…

Dify自定义工具例子

1.天气(JSON) {"openapi": "3.1.0","info": {"title": "Get weather data","description": "Retrieves current weather data for a location.","version": "v1…

上交举办“大模型奥林匹克竞赛”,GPT-4o仅得39分

大模型的奥林匹克竞赛来了! 最近,上交构建了一个全面、极具挑战性的奥赛级别的基准——OlympicArena,从来自62个不同奥林匹克竞赛中筛选出11,163个问题,涵盖数学、物理、化学、生物、地理、天文学和计算机科学等七个学科&#xf…

RHCE——四:web服务器的高级优化方案

文章目录 一、基于https协议的静态网站1.概念解释2. SSL协议提供的服务:3.web服务的配置详解web服务的常用种类nginx的基本配置参数 4.使用nginx的http_ssl模块建立加密认证网站查看配置文件:ssl配置文件的主要参数实验一:搭建nginxssl的加密…

pads layout 脚本导出不能运行excle解决办法

在一台新的电脑上安装好PADS,打开PCB文件导出坐标文件时: 出现“ActiveX Automation: server could not be found.”的问题,导致无法成功导出文件,错误提示截图如下: 导致上述问题的原因是在我们配置导出带坐标的脚本时,默认使用的是微软…

eclipse断点调试(用图说话)

eclipse断点调试(用图说话) debug方式启动项目,后端调试bug调试 前端代码调试,请参考浏览器断点调试(用图说话) 1、前端 选中一条数据,点击删除按钮 2、后端接口打断点 断点按钮 介绍 resum…

软件鉴定测试的工作内容是什么?专业软件鉴定测试报告获取指南

软件鉴定测试是指对软件产品进行全面的检测和评估,以验证其是否符合规定的标准和要求。通过测试,能够发现软件中存在的问题和缺陷,并提供相应的改进建议。在不同的测试阶段,使用不同的测试方法和工具,包括功能测试、性…

Webpack: Loader开发 (2)

概述 在上一篇文章中,我们已经详细了解了开发 Webpack Loader 需要用到的基本技能,包括:Loader 基本形态、如何构建测试环境、如何使用 Loader Context 接口等。接下来我们继续拓展学习一些 Loader 辅助工具,包括: 了…

深度学习之半监督学习:一文梳理目标检测中的半监督学习策略

什么是半监督目标检测? 传统机器学习根据训练数据集中的标注情况,有着不同的场景,主要包括:监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性,在介绍半监督目标检测方法之前,我…

【产品运营】SaaS企业产品运营人员沦为打杂工

在职场上,谁都希望自己做的是核心业务或者是重要的工作。但实际上,很多运营的同学到最后,都会沦为打杂的工具人,到底问题出在哪里? 第一个问题:思维方式问题 为什么别人认为你会是打杂的呢?你自…

PHP7源码结构

PHP7程序的执行过程 1.PHP代码经过词法分析转换为有意义的Token; 2.Token经过语法分析生成AST(Abstract Synstract Syntax Tree,抽象语法树); 3.AST生成对应的opcode,被虚拟机执行。 源码结构&#xff1…

如何在 Odoo 16 中将按钮添加到所有表单视图的操作按钮

在 Odoo 中,操作按钮是关键组件,允许用户触发与特定表单视图相关的特定操作或工作流。这些按钮策略性地放置在用户界面中,可简化操作并提高用户效率。它们可以自定义以执行各种任务,例如创建记录、更新信息或启动特定流程。 操作…