从SolidWorks到ROS2:手把手教你用sw2urdf插件生成urdf模型并可视化
如果你是一位机械工程师或机器人爱好者,习惯了在SolidWorks里构建精密的3D模型,当你想让这些模型在ROS2的世界里“活”起来时,可能会感到一丝迷茫。从静态的CAD装配体到能在rviz2中灵活运动的机器人模型,中间似乎隔着一道技术鸿沟。好消息是,sw2urdf 插件正是为连接这两个世界而生的桥梁。然而,这座桥并非完全畅通——官方插件生成的URDF包是基于ROS1的,直接丢进ROS2环境里,大概率会“水土不服”。本文将带你走通这条从设计到仿真的完整路径,不仅告诉你如何正确使用插件,更会深入剖析ROS2环境下所需的适配与修改,让你亲手赋予设计以“生命”。
1. 环境准备与核心工具解析
在开始动手之前,确保你的工作环境已经就绪。你需要一个正常运行的ROS2发行版(如Humble或Foxy),以及SolidWorks软件。sw2urdf 插件是本次流程的起点,它是一个由ROS社区维护的开源工具,允许你直接从SolidWorks的装配体导出URDF(统一机器人描述格式)文件包。
注意:截至本文撰写时,sw2urdf插件的最新稳定版本仍是2021年发布的v1.6.1。这意味着其原生输出是为ROS1设计的,这是我们后续所有适配工作的根本原因。
首先,从GitHub仓库下载并安装sw2urdf插件。安装过程通常是将插件文件放置到SolidWorks的指定插件目录,并在SolidWorks中启用它。安装成功后,你会在SolidWorks的菜单栏或工具栏中找到相关选项。
接下来,验证你的ROS2基础环境:
# 检查ROS2版本
ros2 version
# 确保rviz2已安装
ros2 pkg list | grep rviz2
一个常见的误区是认为只要安装了ROS2,所有ROS1时代的工具和包都能无缝迁移。实际上,ROS2在构建系统(ament取代了catkin)、launch文件格式(Python vs XML)乃至一些底层API上都发生了显著变化。因此,直接使用插件导出的原始包,编译和运行都会报错。
为了高效工作,我建议预先创建一个干净的ROS2工作空间:
mkdir -p ~/sw2urdf_ws/src
cd ~/sw2urdf_ws
这个工作空间将容纳我们后续创建的所有自定义包。
2. 在SolidWorks中准备模型与导出URDF
在SolidWorks中导出URDF并非简单点击“导出”按钮。模型的准备质量直接决定了后续步骤的顺利程度。一个适合转换为URDF的装配体,其结构应该清晰反映机器人的运动学链。
关键准备工作包括:
- 定义基准坐标系(Base Link):明确机器人的“根”部件,通常是底盘或固定基座。在SolidWorks中,确保该零件的坐标系方向符合你的世界坐标系期望(例如,Z轴向上)。
- 合理命名零部件:避免使用空格和特殊字符。简洁、有意义的名称(如
base_link,shoulder_link,arm_link)会让后续的URDF文件更易读。 - 建立运动副(Joint):这是核心步骤。你需要使用SolidWorks的配合(Mate)功能来定义零件之间的连接关系,但要以URDF关节(Joint)的思维来操作。例如:
- 固定关节(fixed):用于焊接或螺栓紧固的部件。
- 旋转关节(revolute):模拟铰链或旋转电机,需要定义旋转轴。
- 连续关节(continuous):无限旋转的关节,如轮子。
- 棱柱关节(prismatic):模拟直线滑动。
- 检查质量属性:虽然可视化阶段不一定需要精确的动力学参数,但为每个链接(Link)设置合理的质量(Mass)和惯性矩(Inertia)是一个好习惯,为未来的仿真打下基础。sw2urdf插件可以从SolidWorks模型中读取这些物理属性。
当装配体准备妥当后,启动sw2urdf插件。插件界面会引导你完成以下步骤:
- 选择根链接(Root Link)。
- 为每个运动副指定关节类型和运动轴。插件会尝试自动识别,但务必手动检查确认。
- 设置导出

288

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



