一、环境配置
软件版本:SolidWorks 2022 SP3.1 Premium
转换插件版本:sw2urdfSetup2021.exe
对硬件有一定要求,需要独立显卡,显存大一点,否则会很卡。
二、文件转换
SolidWorks中的零部件和装配体对应URDF文件中的link,零部件和装配体之间的连接对应URDF文件中的joint。因此,需要事先将SolidWorks模型划分为正确的零部件和装配体的树形结构,并创建基准轴和参考坐标系,用于指定joint的旋转轴和坐标原点。
(1)零部件和装配体分组
将机械臂各轴、底座、机械爪分别进行装配,形成一个个独立的子装配体,再进行总装。这里子装配体最好与想要生成的urdf的link形状保持一致,否则在选择link包含的零部件时,需要选择一大堆,如果装配成子装配体了,那么只需要选择一个子装配体就行了。
另外,如果是从step文件导入,对于SolidWorks2016以后的版本,需要在工具->选项->导入中,取消候选“启动3D interconnect”,否则导入的装配体及零件全部为固定,无法移动。
(2)机械臂摆正
在基座固定的情况下,主要依靠连杆中与基座底部平行的面之间的同心(通过边线)来确保机械臂是竖直的,这样导出的模型后期再rviz中加载也是直的。最好保证基座底部中心点与总装配体原点重合,且坐标轴也重合,这样可以少修改一些参数。
(3)设置材料类型。
在设置材料之前,先计算出零件的体积,若已知零件的质量,则可以计算出密度。
在评估->质量属性中可以查看零件体积。将6个电机的体积取平均数作为体积,再查看电机重量参数,计算出密度。

创建材料。选中任意零件,点击右键,在材料->编辑材料打开材料页面。选择材料文件夹,在自定义材料中的空白处,点击右键,在列表中选择新材料,输入密度参数(注意单位),自定义材料属性,为后续生成转动惯量等值做好准备。

创建材料以后,选中零件,在编辑材料页面中选中材料,点击应用即可指定材料。
(3)设置基准轴和参考坐标系
为每个关节设置基准轴。在装配体->参考几何体中选择基准轴,再通过曲面确定基准轴的方式,给关节对应的link设置旋转轴。
为每个link设置参考坐标原点。在装配体->参考几何体中选择点,再通过旋转轴的交点等方式为每个link设置参考坐标原点。
为每个link设置参考坐标系。在装配体->参考几何体中选择坐标系,坐标系的原点设置为参考坐标原点,再选择旋转轴来设置z轴、x轴,系统会自动确定y轴。
(4)转换配置
在“工具”--“Tools”--“Export as URDF”对SolidWorks转URDF进行配置。

首先选择的是base_link,这是基座的名称,然后旋转基座的坐标系,以及SW中基座的子装配体。
在下方base_link中点击右键,选择add_child_link,继续添加下一个连杆,依次类推。


依次配置每个link对应的零部件或子装配体,选择旋转轴、参考坐标系、关节类型。
注意:对于较长的连杆,电机质量集中于某一区域(如连杆末端),而连杆本身质量较轻且分布不均,合并建模会导致惯性矩阵(inertia)不准确,影响动力学仿真(如机器人摆动、碰撞响应)。因此应当单独创建为一个连杆。
选择完毕后,点击preview and export 按钮,等待一段时间后,进入关节设置界面。
设置每个关节运动的上下限范围,做功(“effort”)和速度(“velocity”)等参数。
点击“Export URDF and Meshes”,给urdf取一个英文名字,即可生成urdf文件和对应的mesh文件。
注意urdf的取名,会影响很多生成的文件,要慎重取名。另外注意生成的邮箱格式是不正确的,需要改成正确的格式。
(5)urdf文件校正
在urdf文件起始部分添加一个dummy link:
<link
name="dummy">
</link>
添加dummy link与base_link之间的joint:
<joint
name="dummy_joint"
type="fixed">
<origin
xyz="0 0 0"
rpy="0 0 0" />
<parent
link="dummy" />
<child
link="base_link" />
</joint>
URDF 模型中,base_link 是根链接(root link),并且它定义了 <inertial> 标签(即质量、惯性矩阵等)。
但是,KDL(Kinematics and Dynamics Library)不允许根链接有惯性属性,因为它假设根链接是“固定”的世界参考系。
这样做是为了避免运行rviz查看机器人模型时出现警告信息(最下层link不应该有惯性相关参数,否则会出现警告)。
这个警告通常不会阻止 Rviz 显示模型或进行正向运动学计算,但在使用依赖 KDL 的功能(如逆运动学求解器 ikfast、kdl_parser 解析动力学)时可能会出错或行为异常。
或者,直接删除base_link中的<inertial> 标签。
(6)URDF转换成xacro格式
# 安装 xacro
sudo apt install ros-humble-xacro
# urdf格式转xacro格式
ros2 run xacro
1669

被折叠的 条评论
为什么被折叠?



