本文档创建于2023年3月8日
本文档介绍了将外部模型导入webots的方法
文档作者:RobotFreak
外部模型导入webots主要分两部分:将建模软件中的模型文件转换为urdf等格式,将URDF等格式的文件导入webots
参考博客:(6条消息) sw2urdf使用探索_liwei28256的博客-CSDN博客
首先需要下载sw2urdf插件,根据自己的SW版本选择对应的release进行下载:Releases · ros/solidworks_urdf_exporter (github.com)
运行可执行文件后,可以将URDFExporter文件夹放在安装sw的文件夹中:
安装好之后,在sw中点击设置处的插件:
建好模型后,需要给每个连杆生成参考坐标系与参考轴,参考坐标系与参考轴在转urdf时也会用到。
可以自己手动建参考坐标系与参考轴,也可以让插件自动生成坐标系和轴。自动生成的话需要配合关系设置好,配合关系设置的不好会自动生成不想要的关节类型。
参考坐标系尽量在几何体的中心或者边界上,参考轴与实际想要的运动一致即可:
建好参考坐标系和参考轴之后就可以进行urdf的导出了:
然后在出来的界面中设定各个连杆和关节,选择关节的类型、参考坐标系、参考轴等。设置好后选择Preview and Export。
设置好配合关系,自动生成参考坐标系与参考轴还是非常方便的。
在sw2urdf的界面中选择自动生成参考坐标系与参考轴即可:
然后接下来注意设置关节的limit,根据需要来,一般旋转关节可以设置为-3.14~3.14(可以转整圈),力矩和最大速度依据需要设置。检查一下旋转轴有没有错误。
再之后的连杆设定可以直接按照默认生成的来。
然后电机Export URDF and Meshes生成package。生成的package是一个文件夹,默认的名字有.SLDASM后缀,注意将后缀.SLDASM去掉。
参考资料:
webots导入URDF模型文件_哔哩哔哩_bilibili
urdf2webots · PyPI
urdf导入webots用到了一个模块urdf2webots,需要先安装这个模块:
pip install --no-cache-dir -U urdf2webots
安装成功:
切换到urdf文件所在目录,利用urdf2webots生成proto文件:
生成好后,将需要的文件复制到webots的项目目录下。
这里可能会有[urdf文件名_meshes]文件夹,如果有的话也需要复制过去。这些复制到webots项目的protos目录下:
然后是将meshes文件夹和textures文件夹复制到webots项目目录下。(如果没有用到textures的话里边是空的,也可以不复制)
复制到webots目录下:
proto文件中mesh的链接(url)默认是绝对路径,我们需要将其改为相对路径,否则直接导入到webots中url会为空:
在webots的项目中添加节点,导入proto:
导入后模型显示出来:
将节点转换为Robot节点,选择Convert to Base Node(s):
这样导入就基本完成了,后续可以对节点的字段信息进行相应调整。
一般在webots中直接建立一个节点给它一个形状时,坐标系是默认位于中心的。对于SW导出的模型来说,base_link的坐标系是origin_global。当我们选择为base_link自动生成坐标系时,origin_global默认以SW中的原点为坐标系原点建立坐标系。当我们的base_link距离原点比较远时,就会在导入webots时出现base_link的坐标系离它的实体很远的现象。
解决方法本质上来说就是调整base_link的参考坐标系的位置,可以通过两种途径:
另外,在我们画机械图的时候就可以通过一些技巧来方便坐标系的建立。比如,建立模型的时候就努力使原点位于模型的中心(这意味着要习惯于使用两侧对称而不是单向拉伸)。
如下图,原点位于几何体中心:
这样在装配体中可以很方便的通过移动零部件到(0,0,0)位置来使得原点位于几何体中心(经常是对于base_link)