sw模型导入webots

本文档创建于2023年3月8日
本文档介绍了将外部模型导入webots的方法
文档作者:RobotFreak

外部模型导入webots主要分两部分:将建模软件中的模型文件转换为urdf等格式,将URDF等格式的文件导入webots

SW导出URDF

参考博客:(6条消息) sw2urdf使用探索_liwei28256的博客-CSDN博客

下载sw2urdf

首先需要下载sw2urdf插件,根据自己的SW版本选择对应的release进行下载:Releases · ros/solidworks_urdf_exporter (github.com)

运行可执行文件后,可以将URDFExporter文件夹放在安装sw的文件夹中:

sw模型导入webots_第1张图片

安装好之后,在sw中点击设置处的插件:

sw模型导入webots_第2张图片

显示出SW2URDF插件并已启动即可:
sw模型导入webots_第3张图片

生成参考坐标系与参考轴

建好模型后,需要给每个连杆生成参考坐标系与参考轴,参考坐标系与参考轴在转urdf时也会用到。

可以自己手动建参考坐标系与参考轴,也可以让插件自动生成坐标系和轴。自动生成的话需要配合关系设置好,配合关系设置的不好会自动生成不想要的关节类型。

手动建参考坐标系与参考轴

参考坐标系尽量在几何体的中心或者边界上,参考轴与实际想要的运动一致即可:

sw模型导入webots_第4张图片

建好参考坐标系和参考轴之后就可以进行urdf的导出了:

sw模型导入webots_第5张图片

然后在出来的界面中设定各个连杆和关节,选择关节的类型、参考坐标系、参考轴等。设置好后选择Preview and Export。

自动生成参考坐标系与参考轴

设置好配合关系,自动生成参考坐标系与参考轴还是非常方便的。

sw模型导入webots_第6张图片

在sw2urdf的界面中选择自动生成参考坐标系与参考轴即可:
sw模型导入webots_第7张图片

设置关节参数与连杆参数

然后接下来注意设置关节的limit,根据需要来,一般旋转关节可以设置为-3.14~3.14(可以转整圈),力矩和最大速度依据需要设置。检查一下旋转轴有没有错误

sw模型导入webots_第8张图片

再之后的连杆设定可以直接按照默认生成的来。

sw模型导入webots_第9张图片

然后电机Export URDF and Meshes生成package。生成的package是一个文件夹,默认的名字有.SLDASM后缀,注意将后缀.SLDASM去掉。

sw模型导入webots_第10张图片

URDF导入webots

参考资料:

  1. webots导入URDF模型文件_哔哩哔哩_bilibili

  2. urdf2webots · PyPI

urdf导入webots用到了一个模块urdf2webots,需要先安装这个模块:

pip install --no-cache-dir -U urdf2webots

安装成功:

sw模型导入webots_第11张图片

生成proto

切换到urdf文件所在目录,利用urdf2webots生成proto文件:

在这里插入图片描述

复制所需文件

生成好后,将需要的文件复制到webots的项目目录下。

sw模型导入webots_第12张图片

这里可能会有[urdf文件名_meshes]文件夹,如果有的话也需要复制过去。这些复制到webots项目的protos目录下:

sw模型导入webots_第13张图片

然后是将meshes文件夹和textures文件夹复制到webots项目目录下。(如果没有用到textures的话里边是空的,也可以不复制)

sw模型导入webots_第14张图片

复制到webots目录下:

sw模型导入webots_第15张图片

修改proto文件

proto文件中mesh的链接(url)默认是绝对路径,我们需要将其改为相对路径,否则直接导入到webots中url会为空:

在这里插入图片描述

在webots中导入proto

在webots的项目中添加节点,导入proto:

sw模型导入webots_第16张图片

导入后模型显示出来:

sw模型导入webots_第17张图片

将节点转换为Robot节点,选择Convert to Base Node(s):

sw模型导入webots_第18张图片

sw模型导入webots_第19张图片

这样导入就基本完成了,后续可以对节点的字段信息进行相应调整。

需要注意的地方

origin_global的位置

一般在webots中直接建立一个节点给它一个形状时,坐标系是默认位于中心的。对于SW导出的模型来说,base_link的坐标系是origin_global。当我们选择为base_link自动生成坐标系时,origin_global默认以SW中的原点为坐标系原点建立坐标系。当我们的base_link距离原点比较远时,就会在导入webots时出现base_link的坐标系离它的实体很远的现象。

解决方法本质上来说就是调整base_link的参考坐标系的位置,可以通过两种途径:

  1. 自己建立一个坐标系。在导出为urdf时选择以自建的坐标系为参考。
  2. 自动生成坐标系。将base_link与原点的相对位置调整好,或者在origin_global生成后调整origin_global的位置。

另外,在我们画机械图的时候就可以通过一些技巧来方便坐标系的建立。比如,建立模型的时候就努力使原点位于模型的中心(这意味着要习惯于使用两侧对称而不是单向拉伸)。

如下图,原点位于几何体中心:

sw模型导入webots_第20张图片

这样在装配体中可以很方便的通过移动零部件到(0,0,0)位置来使得原点位于几何体中心(经常是对于base_link)

你可能感兴趣的:(webots,solidworks,机器人)