sw2urdf导出的urdf文件中的惯性参数(inertial)错误的问题

现象描述

有时候,当我们使用solidworks建好我们的模型,然后利用【sw2urdf】导出后,发现其中的惯性参数,似乎不正确,ixx、izz这些参数都是很接近0的:
在这里插入图片描述

资料查找

其实这个不是我们设置的问题,而算是sw2urdf的bug:【 Wrong inertia values in the exported URDF #117 】
在这里插入图片描述据参与讨论的人的回答,大概是说只有当一个link都是一个独立的零件时,导出的惯性参数才是正确的;一旦你的link是装配体,那就不行了。
而我的,所有link都是装配体:
在这里插入图片描述
所以自然不行了。

解决方案

检查你的link是否是装配体,是的话,可以利用SolidWorks自己的质量工具得到惯性量,然后自己填到urdf里面。
操作流程:选中你的link部件后,选择 工具–》评估–》质量属性,就可以得到惯性量了。要注意坐标和单位,urdf中用的是千克平方米,而质量属性中默认显示的是克平方毫米,而1克每平方毫米=1e-9千克每平方。
不过你可以通过设置“质量属性”中的选项来选定单位:
在这里插入图片描述

在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用sw2urdf将SolidWorks文件转换为URDF文件时,可以通过定义SolidWorks组件之间的mate关系来添加joint,将链轮和链条连接起来。以下是具体步骤: 1. 在SolidWorks,打开链轮和链条的零件文件,并将它们组装起来。可以使用Mate工具将链轮和链条定位在正确的位置。如果需要,可以将它们固定在一起。 2. 将组装好的链轮和链条保存为一个新的SolidWorks组件。 3. 将组装好的SolidWorks组件导入sw2urdf,生成URDF文件。 4. 在生成的URDF文件,找到chainwheel和chain的link标签。 5. 在链轮的link标签,添加以下代码: ``` <visual> ... </visual> <collision> ... </collision> <inertial> ... </inertial> <origin rpy="0 0 0" xyz="0 0 0"/> ``` 6. 在链条的link标签,添加以下代码: ``` <visual> ... </visual> <collision> ... </collision> <inertial> ... </inertial> <origin rpy="0 0 0" xyz="0 0 0"/> ``` 7. 在URDF文件添加joint,将链轮和链条连接起来。可以使用Revolute joint来定义它们之间的关系,具体代码如下: ``` <joint name="chainwheel_joint" type="revolute"> <origin xyz="x y z" rpy="0 0 0"/> <parent link="chainwheel"/> <child link="chain"/> <axis xyz="0 0 1"/> <limit lower="-3.1415" upper="3.1415" effort="100" velocity="3.1415"/> </joint> ``` 其,name是joint的名称,type是joint的类型,origin是joint的原点,parent link是joint的父部件,child link是joint的子部件,axis是joint的旋转轴,limit是joint的运动限制。 8. 保存URDF文件,并使用URDF解析器加载机器人模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值