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

news2024/10/28 23:51:30

系列文章目录


前言


一、

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.00
	Y = 1.10
	Z = 7.33

惯性主轴和惯性主力矩: ( 克 *  平方毫米 )
由重心决定。
	 Ix = ( 0.00, -1.00, -0.01)   	Px = 45020646.47
	 Iy = ( 1.00,  0.00,  0.00)   	Py = 48410923.95
	 Iz = ( 0.00, -0.01,  1.00)   	Pz = 80241299.66

惯性张量: ( 克 *  平方毫米 )
由重心决定,并且对齐输出的坐标系。 (使用正张量记数法。)
	Lxx = 48410923.95	Lxy = 1.36	Lxz = -0.97
	Lyx = 1.36	Lyy = 45021610.36	Lyz = 184249.38
	Lzx = -0.97	Lzy = 184249.38	Lzz = 80240335.77

惯性张量: ( 克 *  平方毫米 )
由输出座标系决定。 (使用正张量记数法。)
	Ixx = 48709740.16	Ixy = 0.92	Ixz = -3.91
	Iyx = 0.92	Iyy = 45313794.64	Iyz = 228269.22
	Izx = -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>
  <origin
    xyz="{cog_x} {cog_y} {cog_z}"
    rpy="0 0 0" />
  <mass
    value="{mass}" />
  <inertia
    ixx="{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.coloradmin.cn/o/2225785.html

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

相关文章

使用linuxdeployqt打包Qt程序问题及解决方法

dpkg: 处理归档 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb (--install)时出错: 预依赖问题 - 将不安装libmysqlclient18:amd64 在处理时有错误发生: libmysqlclient18_5.6.25-0ubuntu1_amd64.deb下载libmysqlclient18/5.6.25 libmysqlclient18/5.6.25-0ubuntu1 安装 s…

如何把图片转换成pdf?这几种转换方法看了就能学会!

如何把图片转换成pdf&#xff1f;在当今这个高度数字化的世界里&#xff0c;图片文件和PDF文件无疑是我们日常生活中最常接触到的两种文件格式&#xff0c;它们各自拥有独特的特性和功能&#xff0c;为我们的工作与生活带来了诸多便利&#xff0c;图片文件&#xff0c;以其卓越…

Android Activity SingleTop启动模式使用场景

通知栏 当用户点击通知栏中的通知时,可以使用单顶启动模式来打开对应的活动,并确保只有一个实例存在。 简单集成极光推送 创建应用 获取appkey参数 切换到极光工作台 极光sdk集成 Project 根目录的主 gradle 配置 Module 的 gradle 配置 Jpush依赖配置 配置推送必须…

乐维网管平台(一):如何精准掌控 IP 管理

业网络已成为支撑业务运转的关键基础设施&#xff0c;而在企业网络管理中&#xff0c;IP 管理至关重要&#xff0c;它就像是网络秩序的守护者&#xff0c;确保网络的高效运行、安全可靠。 一、为什么企业要进行 IP 管理 1. 优化资源分配 IP 地址作为网络中的重要资源&#xf…

c++数据结构算法复习基础--7--线性表-队列-常用操作接口-复杂度分析

1、队列 特点&#xff1a;先进先出&#xff0c;后进后出 环形队列&#xff08;依赖数组实现&#xff0c;单必须实现环形&#xff09; 链式队列&#xff08;依赖链表实现&#xff09; 2、环形队列 理论 常规数组思想随着队列的不断使用&#xff0c;会出现越界 所以要将其…

拍拍贷鸿蒙版H5容器之路

背景介绍 业务背景 2024年1月18日华为宣布&#xff1a;HarmonyOS NEXT 将不再支持 Android系统&#xff0c;基于以上背景及国内信贷业务现状&#xff0c;公司决定启动借款App鸿蒙化项目。 下图是2024年6月华为HDC大会上&#xff0c;华为宣布 HarmonyOS NEXT 将面向开发者和先…

Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置

文章目录 构建拓扑图配置IP地址配置路由器命令说明测试效果 构建拓扑图 1&#xff0c;添加2811路由器。 2&#xff0c;添加pc0。 3&#xff0c;使用交叉线连接路由器和pc&#xff08;注意线路端口&#xff09;。 4&#xff0c;使用配置线连接路由器和pc&#xff08;注意线路…

IT监控对接华三CAS云管平台监控方案

概述 CAS云管平台是新华三集团自主研发的虚拟化和云计算管理平台&#xff0c;它主要面向数据中心&#xff0c;提供虚拟化和云计算管理&#xff0c;在教育行业、网络安全领域、高性能计算业务、企业IT部门等领域被广泛应用。在信创国产化背景下&#xff0c;以CAS、Fusion等为代…

rtp协议:rtcp包格式和传输间隔

RTP Control Protocol -- RTCP-rtp控制协议 实时传输控制协议&#xff08;RTCP&#xff09;基于对会话中的所有参与者定期传输控制包&#xff0c;使用与数据包相同的分发机制。底层协议必须提供数据包和控制包的多路复用&#xff0c;例如使用UDP时使用不同的端口号。RTCP执行四…

LLMs 入门实战系列大全:LLMs应用、领域大模型介绍、大模型常见面经汇总

1. 常见大模型介绍 1.1 ChatGLM-6B 系列 ChatGLM2-6B [【ChatGLM2-6B 入门】清华大学开源中文版 ChatGLM-6B 模型学习与实战] 更强大的性能&#xff1a;基于 ChatGLM 初代模型的开发经验&#xff0c;我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目…

sa-token 所有的异常都是未登录异常的问题

在使用satoken的时候&#xff0c;有这么一个问题&#xff0c;就是不管我是什么错误&#xff0c;都会弹出未登录异常&#xff0c;起初的时候我以为satoken的拦截器会拦截所有的异常&#xff0c;但是今后测试才发现忽略了一点&#xff0c;也是最重要最容易忽视的一点。 如果我现在…

动态规划 —— 路径问题-不同路径

1. 不同路径 题目链接&#xff1a; 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/unique-paths/description/ 2. 算法原理 1. 状态表示&#xff1a;以莫一个位置为结尾 dp[i]表示&#xff1a;以[i&#xff0c;j]位置为结尾时&#xff0…

新手入门c++(8)

到时候了&#xff0c;是时候给你们讲一下其他的定义形式与格式化输入输出了。 1.长整型变量 长整型变量分为两种&#xff1a; ①long类型 在计算机编程中&#xff0c;long 类型是一个整型数据类型&#xff0c;用于存储较大的整数。它的大小和范围取决于操作系统和编译器的实…

存储引用服务(OSS)Minio 环境搭建

下载Docker desktop 最好进行相关的设置&#xff0c;比如说进行登陆docker账号等等 推荐使用 docker-engine源【目前还能使用下载】 https://ccr.ccs.tencentyun.com 使用docker拉取对应的minio镜像 netstat -aon|findstr "8081" 注意&#xff1a;dockerhub有时…

QT访问数据库:应用提示Driver not loaded

在QT中运行完全正确错误截图 解决办法 我用的是MySQL。我把libmysql.dll复制到应用程序的目录下&#xff0c;即可正常访问数据库。

Hugging Face 使用指南——并行智算云(10s上手版)

1. 在bash中使用 1.1 直接复制命令 echo export HF_ENDPOINT"https://hf-mirror.com" >> ~/.bashrc # 在bashrc文件中设置镜像地址 source ~/.bashrc # 使修改立即生效 echo $HF_ENDPOINT # 查看是否成功红框部分出现就是正确了 1.2 命令详解 命令行echo…

HarmonyOS开发 - 本地持久化之实现LocalStorage支持多实例

用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 在上一篇中&…

CodeQL学习笔记(1)-QL语法(逻辑连接词、量词、聚合词、谓词和类)

最近在学习CodeQL&#xff0c;对于CodeQL就不介绍了&#xff0c;目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记&#xff0c;根据个人知识库笔记修改整理而来的&#xff0c;分享出来共同学习。个人觉得QL的语法比较反人类&#xff0c;至少与目前主流的这些OOP语言相比&…

计算机视觉专栏(2)【LeNet】代码实战【pytorch】完整可运行

LeNet 系列 实践部分1.引言2. limu代码3. plpal代码3.1 代码调试3.2 代码详解 4. 总结 实践部分 Lenet的实现分为两种代码&#xff0c;一种是李沐老师的实现代码以及b友up霹雳啪啦的代码&#xff0c;两者都有不同的优点&#xff0c;李老师的lenet十分还原原著中的操作&#xf…

ios 项目升级极光SDK

由于项目使用的是旧版本&#xff0c;隐私合规检查不通过&#xff0c;需要升级到最新版本&#xff0c; 使用cocoapods集成无法正常运行&#xff0c;.a文件找不到&#xff0c;可能项目比较久了&#xff0c;最好选择手动导入 下载最新版本SDK&#xff0c;将 SDK 包解压&#xff…