/sw_urdf_exporter
sw_urdf_exporter
SolidWorks to URDF Exporter
SolidWorks到URDF导出器是一个SolidWorks加载项,允许将SW部件和组件方便地导出到URDF文件中。 导出器将创建一个类似ROS的包,其中包含网格,纹理和机器人(urdf文件)的目录。 对于单个SolidWorks零件,零件出口商将拉动材料属性并在URDF中创建单个链接。 对于程序集,导出器将构建链接,并基于SW组件层次结构创建树。 输出器可以自动确定正确的关节类型,关节变换和轴。
1 一些重要项目
不幸的是,我(Stephen Brawner)不再有资源跟上这个工具的开发(SolidWorks是昂贵的)。这个工具似乎在版本上工作正常,但我不能确认有关SolidWorks的更高版本。如果您有许可证可用于借款,我可以解决问题,我将不胜感激讨论的可能性。请保持报告错误或功能请求,以便当资源可用时,我可以工作他们。
想要获得有关此工具更新时间的通知吗?考虑加入ROS SolidWorks SIG
此项目不依赖于ROS,可用于导出任何URDF需要的SolidWorks文件。 URDF将包含rospack URI文件位置('package://'),因此您需要更改非ROS系统(一些Gazebo系统可以处理'package'URI)。
到目前为止,该加载项仅在Windows 7 64位与SolidWorks 64位测试。它目前不在32位机器上安装。加载项使用最新的SW API,因此我不希望此工具与SolidWorks 之前的版本一起使用(但尚未确认)。
要了解有关URDF的更多信息,请查看其文档。
如果您在阅读本文档后对SolidWorks至URDF出口商有任何疑问,请查看ROS答案以寻求可能的答案。如果您找不到答案,请提交带有“sw_urdf_exporter”标签的问题。
使用BitBucket报告错误或功能请求。请创建一个帐户,以便我们进一步询问您的问题。 [活动票单]
错误修复和新功能的详细信息放在更改日志中。
2安装
下载可作为预编译的安装程序或作为Visual Studio C#项目的源。
这听起来是,但是你不能将文件安装到标有“SW2URDF”的目录。 由于某些原因,Windows努力找到支持的插件,并会抛出一个未处理的异常错误。 如果有人有一些建议为什么,我很想知道。
2.1预编译安装程序
这将安装最新的稳定版本。
升级到.NET Framework V4
下载以上链接的安装程序。
运行安装程序。 它将要求您对计算机进行更改的权限。 您的Windows帐户需要有足够的权限才能进行这些更改。 它应该安装到SolidWorks目录中的程序文件中。
打开SolidWorks,在“工具>加载项”下,您将在最底部看到一个SW2URDF项目。 如果此设置文件不起作用,请尝试按如下所述手动安装。
2.2编译源
这些是最新的源文件。 因为这是定期检查,在源文件中可能有错误或未完成的代码。 如果你需要一个稳定版本的源,签出修订绑定到安装程序(rev 145)。
要构建源代码,您需要下载Visual C#Express 。
使用Mercurial检查源代码。 在Windows上,TortoiseHG是一个流行的HG工具。
以管理员身份运行Visual C#。 您的Windows帐户需要具有这些权限才能注册.dll。 为此,右键单击开始菜单中的Visual C#,然后单击“以管理员身份运行”。
单击“调试>开始调试”或按F5。 它将一起编译和运行SolidWorks。 做完这一次之后,你只需要从Visual C#运行就可以重新编译。 否则,只需使用该工具,就可以正常启动软件。
当SolidWorks打开时,在“工具>加载项”下,您将在最底部看到一个SW2URDF项目。 如果此设置文件不工作,请尝试手动安装如下所述。
出口商有两种单独的形式,一种用于将单个SW零件作为单个链路输出,第二种用于将组件输出为一组链环和接头。
3sw_urdf_exporter Tutorials
3.1Export a Part
将SolidWorks零件导出到URDF
说明:本教程介绍了将SolidWorks零件导出到URDF的非常简单的过程。
0.1导出零件
1在SolidWorks中打开您的零件。
2单击“文件>导出到URDF”
这将弹出一个单页形式,将材质属性,颜色属性和质量属性信息加载到表单中。 如果你愿意,你可以改变任何你喜欢的项目,但该部分将可以加载到Gazebo或RVIZ没有任何修改。
默认保存路径是以您的主文件夹中的部件命名的包,单击浏览以更改此选项。
您可以通过从计算机中选择纹理将纹理添加到链接。此文件将被复制到您的URDF包中。
单击完成以创建包。它将导出网格,复制纹理并创建一个URDF,它使用“package:// PackageName”相对位置指定这些文件的位置。如果您的目标计算机上没有安装rospack,则必须手动编辑这些位置。
0.2构建包
软件包将包含网格,纹理和机器人的目录。它还将包含一个ROS清单文件,因此您可以将其用作ROS包,只需将其复制到ROS系统。 URDF中的路径位置是相对于包本身的。如果没有rospack,则需要手动更改路径,以便它们使用URDF文件引用机器上的位置。如果你使用rospack,你需要将包添加到$ ROS_PACKAGE_PATH中的一个位置。为了简化复杂的网格,你可能喜欢使用像MeshLab或Blender的程序。
3.2Export a SolidWorks Assembly to URDF
将SolidWorks装配导出到URDF说明:本教程介绍使用SolidWorks到URDF导出器将SolidWorks装配导出到URDF的过程
1在SolidWorks中打开装配体。
2设置您的关节的位置,因为您希望它们导出
3单击“文件>导出到URDF”
属性管理
导出器首先打开一个属性管理器页面,供您配置URDF导出。 您将需要配置每个链接并手动构建树。 首次配置后,该工具将使用程序集本身保存配置。 然后,您应该可以跳过此步骤。
对于每个链接,您需要给它一个唯一的名称,给它一个唯一的联名,在SolidWorks中选择要与该链接相关联的组件(组件或零件),并添加必要数量的子项。 如果你有参考坐标系或轴,你宁愿使用工具,你可以从列表中选择。 您也可以手动指定每个关节类型。 每个URDF只有一个基本链路。 对于该一个链路,联合配置被禁用,因为不存在到更高级链路的联合。 你只需要命名链接(如果你不想调用它base_link),选择其组件并创建其子链接。
在SolidWorks中,如果在实际装配显示而不是FeatureManager设计树上选择组件,则只能选择零件。 更有可能你宁愿选择代表整个链接的程序集,在这种情况下,你将从设计树中选择它们,如上图所示。
配置树显示您添加的所有链接。 对于树上的每个子链接,将创建其父链接的联接。 您可以选择已添加的任何链接来更改其属性。 右键单击链接将允许您添加子项或删除链接。 您也可以拖放链接以重新排序。 将父链接拖动到子级上将导致子链接使用父级链接切换位置。 父链接的其他子项仍然保留原始父链接。
单击绿色复选标记将仅保存您的配置并退出。 单击红色x将允许您退出而不保存对配置所做的更改。
当您准备好构建您的URDF时,单击“预览并导出...”。 如果您已经指定了自动生成坐标系或坐标轴的工具,它将在此阶段生成它们。
0.2 joint属性
如果您发现这些联合起点通常不是在最理想的位置创建,您可以更改参考坐标系和轴,以满足出口商之外的需要。 但是,该模型将按原样工作。 3D草图仅用于临时构建,但是您可能会发现它对于调整参考几何的位置很有用。 在“联接属性”页面上按取消可以将坐标系和轴的名称保存到组态中。 然后可以继续调整坐标系和轴。 通过单击“文件>导出到URDF”重新启动导出过程。 确保为每个链接保存坐标系和轴的正确名称。 该工具将不再构建它们,而是引用已经存在的参考几何体。
联合页面包括不可配置的联合树,其中点击每个联接将在右侧提出其属性。 您可以在导出之前自定义任何关节的属性。 但是,使用配置不会保存这些属性。 他们将需要每次重新输入。
最初为空的字段不是urdf规范要求的。 如果它们留空,它们将不会写入URDF文件。 如果更改包含其他必填字段的节的属性,但忽略它们,则将使用0填充。
单击下一步转到链接属性页
0.3 link属性
此页面提供了与前面讨论的零件出口商相似的视图。 您可以更改树中任何链接的链接属性。 您可以添加纹理,更改颜色,更改不同部分的原点,更改惯性张量,质量等。这些更改也不会与您的配置一起保存。
单击完成以创建URDF包
0.4 构建包
软件包将包含网格,纹理和机器人的目录。 它还将包含一个ROS清单文件,因此您可以将其用作ROS包,只需将其复制到ROS系统。 URDF中的路径位置是相对于包本身的。 如果没有rospack,则需要手动更改路径,以便它们使用URDF文件引用机器上的位置。 如果你使用rospack,你需要将包添加到$ ROS_PACKAGE_PATH中的一个位置。 如果你发现你的网格太复杂,你可以参考教程来改进复杂的汇编导出,或者你可以通过使用像MeshLab或Blender程序简化复杂的网格。
3简化大型装配体的SolidWorks和URDF导出程序工作流程
说明:本教程介绍如何组织SolidWorks装配以创建更好的工作流程,以及如何在处理复杂装配时减少导出的网格复杂性。
如何组织复杂的SolidWorks装配以进行导出
3.1 介绍
本教程是我可以想到的所有技术的集合,以帮助使导出过程更简单。
简化目标:
1保持工作流程尽可能自然,并与项目轻松集成
2降低网格复杂度,而不牺牲目标#1
3.2 装配所有链接组件到一个程序集中
组织程序集最简单的方法是尽可能少的组件与每个链接相关联。 相反,尽可能地将每个独立链接分组到单个程序集中。 这个建议不是由于软件的限制,而是更多的可能是更长的列表,相关的组件将在整个开发过程中改变。 因此,这种做法会减少每次导出之前所需的配置量。 它还将帮助确保保存的导出配置对于打开程序集的所有人保持最新。
显然,如果你突然决定你的机器人手臂需要6个自由度,而不是5,但是当你添加更多的组件,它应该尽量减少修补周围配置。
3.3安装配置和显示状态
为了避免在组件中输出每个螺母,螺栓,螺钉或磁通电容器的网格,您可以在导出之前隐藏它们。但是,单独隐藏它们不允许您保存此配置以供以后导出。
创建专门用于导出的显示状态。单击属性管理器中的配置选项卡,右键单击显示状态所在的底部。添加一个新的显示状态,并命名它像“URDF导出”,以便您和其他人可以返回到它以后。从属性管理器树中,隐藏所有不想显示的子装配体和零件。双击原始显示状态,可能是“显示状态-1”,取消隐藏在URDF导出显示状态中隐藏的所有组件。
大多数SolidWorks用户都熟悉配置,但这些仅允许您抑制组件或功能。这不是有用的,因为导出器将在计算质量属性时忽略所有这些组件,并且您的配合可能会断开。显示状态是类似的功能,但是用于隐藏零件。
SolidWorks允许您“将显示状态链接到配置”,但不建议这样做。尽管能够将主组件中的配置与子组件中的配置相链接,但显示状态由于某种原因不会继承。所以你必须咬住子弹并在顶层组件中工作,以隐藏所有子组件组件。恼人我知道,这是SW的bug,而不是我的。我乐意接受如何处理这个问题的建议。
3.4皮肤部分
SolidWorks没有很好的工具来减少网格中低于“航向”导出选项的三角形数量,这对于模拟/碰撞检测来说是不够的。 因此,当不使用出口商时,许多人被迫创建自己的皮肤网格,并将它们合并到URDF中。 由于我们的目标是消除专门用于导出的自然工作流程之外的工作,因此建议在SolidWorks中创建您的皮肤部分。
创建一个零件,包围你的整个链接,并且模糊地类似于它的形状。 将此皮肤部分的材质设置为“空气”。 这没关系,但你可能想改变外观。 将其插入主组件。 将此组件放置在大致位置的链接上,并创建与组件中另一个组件的“锁定”配合。 然后激活您的“URDF导出”显示状态并隐藏每个组件,但隐藏您的皮肤部分。 然后在默认的“显示状态-1”或任何其调用,隐藏皮肤部分。
3.5家庭伙伴
如果您有机器人的首选归属状态,建议为每个自由度保持配合。 将这些伴侣命名为可识别的东西(例如“肩上的家乡状态”),这是一种简单的方式来抑制他们的第一个出口过程。 一旦创建了关节的参考几何体并且保存了关节类型,则不需要每次都抑制配合。 该工具将参考其配置,而不是试图自动生成它们,这将被禁止的家乡状态配对禁止。 但是,应确保坐标系和轴正确定位,并将其名称保存在组态中。