SolidWorks 导出 URDF 中的惯性矩阵错误问题

系列文章目录


前言


一、

dsubhasish09于2021年5月23日发表评论
在装配体中定义由多个零件组成的 link 时,单个零件质心处各自的惯性值(在使用相似性变换使其与关节坐标系平行后)会直接相加,从而得到净惯性矩阵,而不是先平移到(链接中所有零件组合的)净质心处再相加。这样得到的惯性矩阵是错误的。这个问题最近才发现,请尽早解决。

jespersmith 于 2021 年 7 月 29 日发表评论说 - 
几年前我就注意到了这个问题,并在 bitbucket 上留下了问题报告。遗憾的是,我无法再调出这个报告,但这对于力控机器人来说是个问题。我们一直在手动更新惯性,并在创建模型时将其作为一个很好的审查步骤,因此它并不是一个真正的障碍。

还要注意的是,solidworks 输出的惯性张量与惯性矩阵的对角线外分量不同。

dsubhasish09于2021年7月29日发表评论

是的,我们也是这么做的,但要手动更改每个链接的惯性值非常麻烦,尤其是在链接数量较多的情况下。你们是否通过任何方式实现了自动化?

jespersmith 于 2021 年 7 月 29 日发表评论
我们有一个编辑 URDF 的简单用户界面,可以解析来自 solidworks 质量工具的数据(将数据复制到剪贴板)。我们刚刚重新开始开发,可能会考虑将其开源。

brawner 于 2021 年 11 月 22 日发表评论
很遗憾听到这个错误,因为我几乎只是使用 SW 的接口来计算 MOI。听起来这可能是上游的一个错误。

https://github.com/ros/solidworks_urdf_exporter/blob/master/SW2URDF/URDFExport/ExportHelperExtension.cs#L248-L260

你们是否有代表性模型和 URDF 以帮助进行比较?

bbokser 于 2022 年 5 月 4 日发表评论
如果您愿意,我可以提供有代表性的模型。我非常希望不必每次生成 URDF 时都要手动校正数值。天知道这么多年来这让我头疼了多少次......

xwavex 于 2022 年 8 月 4 日发表评论
这听起来像是急需解决的问题

internetKevin0 评论于 2023 年 2 月 1 日 - 
我想火上浇油。惯性计算不正确,需要尽快修复。我们的解决方法是在每个有两个以上部件或主体的链接中手动输入正确的惯性矩阵值。只有当每个链接只有一个主体时,导出程序才能正常工作。即使同一部件中有多个主体,如果它们的密度不同,惯性计算仍会出现偏差。

brawner 评论于 2023年2月1日
此代码已开源,欢迎随时提交 PR

luoye2333 于 Jun 3 - 发表评论 
我们有一个编辑 URDF 的简单用户界面,可以解析来自 solidworks 质量工具的数据(将数据复制到剪贴板)。我们刚刚重新开始开发,可能会考虑将其开源。

我使用 chatgpt 在 python 中生成一个转换程序。使用时,将 solidworks 质量工具中的文本复制到代码中的 const 字符串。然后将输出文本复制到原始 urdf 文件中。欢迎使用。

# 原始字符串
raw_string = """
所选零部件 的质量属性坐标系: BCS质量 = 5439.19 克体积 = 2525851.14 立方毫米表面积 = 979087.02  平方毫米重心 : ( 毫米 )X = 0.00Y = 1.10Z = 7.33惯性主轴和惯性主力矩: ( 克 *  平方毫米 )
由重心决定。Ix = ( 0.00, -1.00, -0.01)   	Px = 45020646.47Iy = ( 1.00,  0.00,  0.00)   	Py = 48410923.95Iz = ( 0.00, -0.01,  1.00)   	Pz = 80241299.66惯性张量: ( 克 *  平方毫米 )
由重心决定,并且对齐输出的坐标系。 (使用正张量记数法。)Lxx = 48410923.95	Lxy = 1.36	Lxz = -0.97Lyx = 1.36	Lyy = 45021610.36	Lyz = 184249.38Lzx = -0.97	Lzy = 184249.38	Lzz = 80240335.77惯性张量: ( 克 *  平方毫米 )
由输出座标系决定。 (使用正张量记数法。)Ixx = 48709740.16	Ixy = 0.92	Ixz = -3.91Iyx = 0.92	Iyy = 45313794.64	Iyz = 228269.22Izx = -3.91	Izy = 228269.22	Izz = 80246967.70
"""# 提取数值并除以10^9
mass = str(float(raw_string.split('质量 = ')[1].split()[0]) / 1e3)
cog_x = str(float(raw_string.split('X = ')[1].split()[0]) / 1e3)
cog_y = str(float(raw_string.split('Y = ')[1].split()[0]) / 1e3)
cog_z = str(float(raw_string.split('Z = ')[1].split()[0]) / 1e3)
ixx = str(float(raw_string.split('Lxx = ')[1].split()[0]) / 1e9)
ixy = str(-float(raw_string.split('Lxy = ')[1].split()[0]) / 1e9)
ixz = str(-float(raw_string.split('Lxz = ')[1].split()[0]) / 1e9)
iyy = str(float(raw_string.split('Lyy = ')[1].split()[0]) / 1e9)
iyz = str(-float(raw_string.split('Lyz = ')[1].split()[0]) / 1e9)
izz = str(float(raw_string.split('Lzz = ')[1].split()[0]) / 1e9)# 输出格式
output_string = f"""
<inertial><originxyz="{cog_x} {cog_y} {cog_z}"rpy="0 0 0" /><massvalue="{mass}" /><inertiaixx="{ixx}"ixy="{ixy}"ixz="{ixz}"iyy="{iyy}"iyz="{iyz}"izz="{izz}" />
</inertial>
"""print(output_string)

jespersmith 于 Jun 19 - 发表评论 
我们有一个编辑 URDF 的简单用户界面,可以解析来自 solidworks 质量工具的数据(将数据复制到剪贴板)。我们刚刚重新开始开发,可能会考虑将其开源。

我使用 chatgpt 在 python 中生成一个转换程序。使用时,将 solidworks 质量工具中的文本复制到代码中的 const 字符串。然后将输出文本复制到原始 urdf 文件中。请随意使用。

请注意,Solidworks 和 URDF 之间的非对角线项需要负值。

摘自我的个人文档

WARNING: SolidWorks shows the moments of inertia, URDF expects the inertia tensor matrix.The inertia tensor matrix is defined below from the moments of inertia:![afbeelding](https://github.com/ros/solidworks_urdf_exporter/assets/8227626/70b210a0-026c-4544-9933-1491e382c23c)Pretty much, make the off-diagonal values negative when exporting.

luoye2333 于 Jun 21 发表评论
谢谢 jespersmith。您说得没错。我编辑了代码 #117(评论),并在 ixy ixz 和 iyz 中添加了减号“-”。

Hi,

I'm a student and I'm trying to export the urdf using the plugin. There are many parts that have an overridden mass in my robot model. I get wrong mass and moments of ineria and I am trying to correcting them manually.

I notice that the centre of gravity coordinates are obtained in a global coordinate system.

**System Information**
1. SolidWorks version and service pack: SolidWorks 2024
2. Version of exporter 16.1

**Describe the bug**

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

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

相关文章

鸿蒙UI开发——基于组件安全区方案实现沉浸式界面

1、概 述 本文是接着上篇文章 鸿蒙UI开发——基于全屏方案实现沉浸式界面 的继续讨论。除了全屏方案实现沉浸式界面外&#xff0c;我们还可以使用组件安全区的方案。 当我们没有使用setWindowLayoutFullScreen()接口设置窗口为全屏布局时&#xff0c;默认使用的策略就是组件安…

鸿蒙学习总结

鸿蒙&#xff08;HarmonyOS&#xff09;&#xff0c;做为国产自主研发设计的第一个操作系统&#xff0c;从开放测试以来一直备受关注。其纯血鸿蒙版&#xff08;HarmonyOS NEXT&#xff09;也于进日发布。过去的一段时间里&#xff0c;我站在一个移动开发者的角度对HarmonyOS进…

【electron8】electron实现“图片”的另存为

注&#xff1a;该列出的代码&#xff0c;都在文章内示例出 1. 另存为按钮事件&#xff1a; const saveAsHandler async () > {const { path, sessionId } recordInfoif(typeof message ! string) return;// 因为我的图片是加密的&#xff0c;所以我需要根据接口返回的路…

着色器的认识

知识了解&#xff1a; 着色器&#xff1a; 顶点着色器: 用来描述顶点的特性,如位置、颜色等&#xff0c;其中&#xff0c;顶点&#xff1a;是指二维或三维空间中的一个点比如交点或者端点。 片元着色器&#xff1a;用来进行逐片元处理操作&#xff0c;比如光照、颜色叠加等&…

如何将原本打开Edge呈现出的360浏览器,更换成原本的Edge页面或者百度等其他页面

每次打开Edge浏览器&#xff0c;都会呈现出360浏览器的页面&#xff0c;很烦。以下将说明如果将呈现出的360浏览器&#xff0c;更换成原本的Edge页面或者百度等其他页面。 1.找到你的控制面板&#xff0c;点击卸载程序。 2. 找到360安全卫士&#xff0c;右键单击更改/卸载。 3…

Android 应用申请 Google MBA权限

Google Case链接&#xff1a;89 > 34810 > 30025 > 155353 > Handheld > MBA Policies 按照指引填写模板 This bug is for the approval of MBAs under [13.2.2 Pregrant permissions policy](https://docs.partner.android.com/gms/policies/domains/mba#mba-…

基于 ThinkPHP+Mysql 灵活用工_灵活用工系统_灵活用工平台

基于 ThinkPHPMysql 灵活用工灵活用工平台灵活用工系统灵活用工小程序灵活用工源码灵活用工系统源码 开发语言 ThinkPHPMysql 源码合作 提供完整源代码 软件界面展示 一、企业管理后台 二、运用管理平台 三、手机端

Web 核心指标优化之 INP 篇

这篇文章是我在公司做 INP 优化经验分享的演讲稿。 大家好&#xff0c;今天我要做的分享是关于 INP 的一些优化经验。 概念 首先&#xff0c;什么叫 INP 呢。 INP 的全称叫 Interaction to Next Pain &#xff0c;翻译过来就是从交互到下一次绘制的延迟。这是 Google 提出来的…

Footprint Analytics 现已支持 TRON 链上数据分析

我们很高兴地宣布&#xff0c;全球最大的区块链网络之一 TRON&#xff08;波场&#xff09;已经成功接入 Footprint Analytics&#xff01;通过这次集成&#xff0c;开发者、分析师和区块链爱好者们现在可以使用 Footprint 的专业分析工具&#xff0c;深入挖掘 TRON 生态系统的…

考到了PMP证书之后,我的电话被打爆了....

考到了PMP之后&#xff0c;万年不见响的手机竟也开始频繁来call了~&#x1f645; 一般是哪些人&#xff0c;会因为什么事来找&#xff1f;本期小赛就给大家讲讲是啥情况~ 一、HR打电话邀请面试 在没有PMP证书的时候&#xff0c;自己投出去的简历往往是石沉大海&#xff0c;杳…

UI设计软件全景:13款工具助力创意实现

选择恰当的UI设计工具对于创建美观且用户体验良好的应用程序界面至关重要。不同的APP功能可能需要不同的界面设计软件&#xff0c;但并非所有工具都需要精通&#xff0c;熟练掌握几个常用的就足够了。以下是13款APP界面设计软件&#xff0c;它们能够为你的团队提供绘制APP界面所…

使用iframe内嵌grafana监控页面

grafana监控大盘被普遍采用&#xff0c;但一个缺点就是一次只能打开一个页面&#xff0c;切换页面很不便&#xff0c;如果能一次同时展示多个页面就好了&#xff0c;如图&#xff1a; 使用tab标签&#xff0c;结合iframe&#xff0c;把各个监控页面全放在一起&#xff0c;可以…

人脸美颜 API 对接说明

本文将介绍一种 人脸美颜 API 对接说明&#xff0c;它可以通过用户上传一张人脸图片&#xff08;最多能处理一张图片中最大的五张人脸信息&#xff09;&#xff0c;精准定位五官&#xff0c;实现美肤、亮肤、祛痘等美颜功能。 接下来介绍下 人脸美颜 API 的对接说明。 申请流…

【HTML】之基本标签的使用详解

HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是构建网页的基础。它不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;用于描述网页的内容和结构。本文将带你了解HTML的基础知识&#xff0c;并通过详细的代码示例和中文注释进行讲…

论文略读:Can We Edit Factual Knowledge by In-Context Learning?

EMNLP 2023 第一个探索in-context learning在语言模型知识编辑方便的效果 传统的知识编辑方法通过在包含特定知识的文本上进行微调来改进 LLMs 随着模型规模的增加&#xff0c;这些基于梯度的方法会带来巨大的计算成本->论文提出了上下文知识编辑&#xff08;IKE&#xff0…

HarmonyOS第一课——HarmonyOS介绍

HarmonyOS第一课 HarmonyOS介绍 HarmonyOS是新一代的智能终端操作系统&#xff08;泛终端服务的载体&#xff09;&#xff1b; 智慧互联协同&#xff0c;全场景交互体验&#xff1b; 核心技术理念&#xff1a; 一次开发 多次部署&#xff1a; 预览 可视化开发UI适配 事件交…

51单片机之按键驱动

1.按键简介 按键是一种电子开关&#xff0c;使用时轻轻按开关按钮就可使开关接通&#xff0c;当松开手时, 开关断开。开发板上使用的按键及内部简易图如下图所示&#xff1a;   按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xff0c; 如果…

如何用示波器测实时时钟信号和主时钟信号

使用示波器测量实时时钟信号&#xff08;RTC&#xff09;和主时钟信号&#xff08;Main Clock Signal&#xff09;的步骤如下&#xff1a; 1. 准备工作 选择合适的探头&#xff1a;使用高品质的示波器探头&#xff0c;通常10X衰减探头适合大部分情况。校准探头&#xff1a;确…

端口号和ip地址一样吗?区别是什么

在网络通信的世界里&#xff0c;端口号和IP地址是两个不可或缺的概念&#xff0c;它们各自扮演着独特的角色&#xff0c;共同维系着数据在网络中的有序传输。然而&#xff0c;对于许多初学者而言&#xff0c;这两者往往容易被混淆&#xff0c;认为它们是同一事物的不同表述。那…

【Linux】nohup 命令

【Linux】nohup 命令 1. 语法格式2. 实例3. 查找后台进程 nohup 英文全称 no hang up&#xff08;不挂起&#xff09;&#xff0c;用于在系统后台不挂断地运行命令&#xff0c;退出终端不会影响程序的运行。 nohup 命令&#xff0c;在默认情况下&#xff08;非重定向时&#x…