一起来从Solidworks中导出URDF模型

本文详细介绍了如何使用sw_urdf_exporter插件将Solidworks装配体模型转换为URDF格式,包括配置坐标系、关节和链接,以及在ROS中进行模型导入和仿真的过程。
摘要由CSDN通过智能技术生成

这个博客是用来记录关于【从Solidworks中导出URDF模型】的学习历程:

相关课程链接见:如何从Solidworks导出URDF模型 • 古月 (guyuehome.com)

关于URDF的相关基础见我之前的一篇博客:ROS建模:一起从零手写URDF模型-CSDN博客

下面让我们一起开始吧!!!

1. sw_urdf_exporter插件介绍

插件下载链接:sw_urdf_exporter - ROS Wiki

sw_urdf_exporter插件是一个用于SolidWorks CAD软件的工具,允许用户将SolidWorks模型导出为URDF(统一机器人描述格式)文件。URDF文件是一种XML格式的文件,被广泛用于描述机器人的物理结构和关节,以便于在机器人操作系统(ROS)等平台上进行仿真和控制。

 插件安装完成后,打开SW软件进行查看,任意打开一个装配体模型:

点击:工具 ——> Tools ——> Export as URDF

发现左边多出来了一个URDF Exporter,说明插件安装成功

2. 如何导出移动机器人URDF模型

        机器人中的每个link之间的关系是通过joint来描述的,首先,先来配置好机器人的核心坐标系以及旋转轴

        先来确定各个link的坐标系,整个移动机器人的底盘有个base_link坐标系,4个轮子有4个轮子的坐标系,控制板和雷达也有2个坐标系。加起来一个有7个坐标系。下面开始创建坐标系:

        点击:参考几何体 ——> 点

首先来确定base_link,点击底板的底面:

在中间会出现一个圆球,这个是默认的中心点位置。确定该位置后,再点击左边的 “ √ ”:

底盘的中心点创建完毕,该点是作为base_link坐标系的原点。

继续使用同样的方式来确定4个轮子坐标系的原点:

下面开始创建雷达和控制板的坐标原点,选择2条线的交点作为控制板的坐标原点:

最后创建雷达的坐标原点,选择圆弧的中心点作为雷达的坐标原点:

接下来我们在这7个点上面来创建7个坐标系,这7个坐标系分别代表7个link的坐标系所在的位置。

下面选择点1后,再点击参考几何体命令,选择坐标系:

我们发现在点1上出现了一个坐标系,在ROS中,坐标系是以“右手”坐标系来定义的。

小车往前走,是以x轴正方向运动相对应。所以需要将坐标系的方向进行修改,车的正前方以雷达的端部为准,设置x的坐标轴方向:

 这个截图的坐标系方向与ROS中的方向是匹配的,点击确认。

 可以发现,坐标系1创建完毕。

接下来进行坐标系2的创建,依然确保坐标系的x轴是指向正前方的:

 同理,车轮的坐标系创建依次进行上述同样的操作步骤:

最后,控制板和雷达的坐标系创建也遵循上述要求:

有了手动创建的这7个坐标系之后,接下来在后面的自动导出过程中,就可以选择每一个link它所相对应的坐标系。

坐标系建立完成之后,继续创建旋转轴:

下面继续,在参考几何体的命令中点击基准轴,找到旋转轴的位置:

小车一共有4个轮子,其实只要确定好2个基准轴就OK了,前后的2轮可同轴(公共轴):

坐标系和旋转轴都定义好了之后,下面才能开始利用SW_URDF插件:

--------------------------------------------------------------------------------------------
接下来点击:工具 ——> Tools ——> Export as URDF

        首先来定义模型的base_link, 选择好零件后,不要忘了坐标系的确定,以及child_links的数量确定:

其中4个轮子都是跟底盘来做连接的,所以小车的底盘有4个child_links,下面来配置4个轮子:

Link_name和Joint_name可以自定义,确定参考坐标系和参考轴,轮子的关节类型选择continuous,最后选择link元件所包含的内容。

下面安装同样的方式来配置其余的3个轮子,直接点击模型树中即可:

 轮子的配置结束后,再配置控制板和雷达,它们都是固定在base_link上的,继续点击base_link:

扩展出2个 child_links,总数变为6个child_links:

设置Link_name和Joint_name,确定参考坐标系和参考轴(None),轮子的关节类型选择fixed,最后选择link元件所包含的内容:

同理,进行雷达的设置:

好了,插件的配置选择到此结束!

检查一遍上面的设置是否正确,确认无误后,点击:Preview and Export...

 插件生成完成后,会弹出下面的界面,用来进一步检查,确认无误后,点击右下角的Next:

 弹出第二个窗口,是用来确定link的配置:

会发现每一个link会自动产生它的质量以及惯性矩阵,真是太妙了!

最后确认无误后,点击右下角的:Export URDF and Meshes

自定义文件名后再点击保存,确定保持到对应的文件夹中即可:

完成了保存之后,返回SW的操作界面,会发现最后多出来了一个URDF Export:

 保存SW文件:Ctrl + S

下次打开依然点击:工具 ——> Tools ——> Export as URDF

注意:可以发现先前创建的URDF设置还在,但是坐标系的设置改变了,后续需要修改模型的配置那就只能重新配置坐标系。

 -----------------------------------------------------------------------------------------

下面我们来找到之前生成的ares_description功能包:

        这些自动产生的文件与ROS是一致的,整个文件夹本身就是一个功能包,后面是可以直接来运行的。以上的这些文件不用做太多的修改,就可以结合ROS来做进一步的开发与仿真。

补充:其中的textures文件夹是用来放模型的纹理;meshes文件夹是用来放置STL文件;config文件夹是用来放置joint名字的配置文件,方便后续的仿真。

-----------------------------------------------------------------------------------------

下面将上面自动生成的URDF文件移动至Ubuntu20.04系统中,做进一步的编译:

后续进入linux系统中,将之前生成的ares_description功能包移动到src工作空间下:

接下来返回上一级的catkin_ws的目录中,开启一个终端,进行编译:

 进入conda环境中,使用指令:catkin_make

编译成功后,下面来运行launch文件,进入这个文件夹当中,找到display.launch文件:

下面任意开启一个终端来运行如下的launch文件,指令:

conda activate hjx

roslaunch ares_description display.launch

如果遇到如下报错:

发现报错开头:[rosout-1] process has died

经过问题的排查,发现这篇博客解决了我遇到的问题:运行roscore 出现[rosout-1] process has died [pid 13103, exit code 127_[synexens_ros1-1] process has died [pid 9305, exit-CSDN博客

解决办法:

进入到.bashrc文件中,在最后加上下面的这行代码:

# 这里noetic改成你的ros版本,我的版本是noetic
export LD_LIBRARY_PATH=/opt/ros/noetic/lib

然后保存.bashrc文件,让环境生效即可。

----------------------------------------------------------------------------

下面再次运行launch文件,会出现如下Rviz界面:

 目前在Rviz界面中没有模型显示,需要来做一些配置:

首先,修改Fixed Frame,将map改为base_link:

 可以发现error消失,随后,点击Add来添加RobotModel:

可以发现,小车的模型显示在了Rviz界面中!该模型与SW中的模型是一致的

下面看看这个小车的4个轮子能否在Rviz界面转起来:

只需拖动这个对应关节的滑动条,即可观察到4个车轮都可以进行旋转。

确认好每个关节的旋转轴无误后,说明我们的URDF模型导出是没有问题的!

------------------------------------------------------------------------------

下面在launch文件夹当中,找到gazebo.launch文件:

来尝试运行一下gazebo.launch文件:

任意开启一个终端来运行如下的launch文件,指令:

conda activate hjx

roslaunch ares_description gazebo.launch

遇到如下报错:

 此时可以打开Gazebo,但无法显示导入模型。问题是没有安装numpy包

 安装一下numpy包:pip install numpy

下面再次运行gazebo.launch文件,发现还是缺包的问题:

 这次的解决方案,安装如下的包:

pip install pycryptodomex

安装完成后,可能又会报错:ModuleNotFoundError: No module named 'gnupg'
则执行以下指令进行安装:

pip install gnupg

安装成功后,再次运行gazebo.launch文件,指令:

conda activate hjx

roslaunch ares_description gazebo.launch

可以发现,小车模型出现在了gazebo仿真环境中:

 在打开gazebo的一瞬间,小车会向后倒退,这不知道是什么原因,待解决~~~

 由于篇幅问题,后续的补充博客如下:补充:一起来从Solidworks中导出机械臂的URDF模型-CSDN博客

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随机惯性粒子群

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值