4、基准轴与坐标系的建立:在SolidWorks中创建必要的基准轴、参考点、坐标系,为关节定义做准备
好,我们继续往下走。上一章我们把模型拆成了零件,也检查了装配体层级。但光有零件还不够——URDF 要的是「关节怎么转、往哪个方向转、转轴在哪」。这些信息,SolidWorks 不会自动给你。
你得手动告诉它:轴在哪,原点在哪,方向朝哪。
说白了,这一步就是给每个关节「立规矩」。我刚开始做的时候,觉得这步可有可无,直接在装配体里瞎对位置。结果导出 URDF 后,机器人要么原地打转,要么关节方向反了……嗯,从那以后,我再也不敢跳过基准定义了。
4.1 为什么不能直接用零件默认坐标系?
你可能会问:零件本身不是有坐标系吗?为什么还要新建?
原因很简单——默认坐标系通常不在关节旋转中心上。
举个例子,一个机械臂的肩关节,旋转轴穿过电机输出轴的中心。但零件建模时的原点可能在法兰盘的角落,或者某个安装孔的圆心。如果你直接用那个原点做关节,URDF 里的关节位置就偏了,整个运动学链都会错位。
我在项目里遇到过:一个六轴机器人,肩关节偏了 2mm,结果末端执行器在仿真里画了个大圆弧,根本没法用。查了两天才发现是基准轴没对齐。
| 坐标系来源 | 是否推荐 | 原因 |
|---|---|---|
| 零件默认坐标系 | ❌ 不推荐 | 原点通常不在关节中心,方向也不对齐旋转轴 |
| 新建基准轴 + 参考点 | ✅ 推荐 | 精确定位到旋转中心,方向可控 |
| 装配体坐标系 | ⚠️ 视情况 | 适合基座固定坐标系,不适合运动关节 |
4.2 基准轴:关节旋转的「脊梁」
基准轴就是关节的旋转轴。URDF 里的 <joint> 标签中,axis 参数就是靠这根轴来定义的。
4.2.1 创建基准轴的三种方法
我个人习惯用「圆柱面/圆锥面」法,因为大多数关节轴都是圆柱形的。但其他方法也很有用,看情况选。
- 圆柱面/圆锥面法:选中电机输出轴或关节销轴的圆柱面,SolidWorks 自动生成通过轴心的基准轴。最常用,也最准。
- 两点法:选中两个参考点(比如圆心或顶点),生成穿过这两点的轴。适合没有圆柱面的情况。
- 平面交点法:选中两个平面,生成它们的交线作为轴。适合用基准面定位的场景。
4.2.2 基准轴命名规范
命名这件事,看似小事,但后面 URDF 导出时你会感谢我的。我见过有人叫「Axis1」「轴1」「aaaa」,结果自己都分不清哪个是哪个。
| 关节类型 | 推荐命名 | 示例 |
|---|---|---|
| 旋转关节 | Axis_<关节名> |
Axis_shoulder_pitch |
| 棱柱关节 | Axis_<关节名> |
Axis_slider_x |
| 固定关节 | 不需要 | — |
4.3 参考点:坐标系的「锚」
基准轴定方向,参考点定位置。参考点就是坐标系的原点候选。
创建参考点的方法也很直接:
- 圆心点:选中圆形边线或圆柱端面,生成圆心点。最常用。
- 交点:选中基准轴和某个平面,生成交点。适合轴与安装面的交点。
- 投影点:把一个点投影到另一个平面上。偶尔用到。
我个人建议:每个关节至少创建一个参考点,位置就在关节旋转中心。这样后面建坐标系时,直接「点 + 轴」就能搞定,不用再临时找位置。
4.4 坐标系:URDF 关节的「身份证」
坐标系是基准轴和参考点的组合体。URDF 里每个关节都需要一个坐标系,用来描述子连杆相对于父连杆的位置和方向。
4.4.1 创建坐标系的步骤
- 点击「参考几何体」→「坐标系」。
- 选择参考点作为原点。
- 选择基准轴作为 Z 轴(URDF 默认旋转轴是 Z 轴)。
- 选择另一个平面或边线作为 X 轴方向。
- Y 轴自动生成,检查方向是否正确。
嗯,这里要注意:URDF 的关节旋转轴默认是 Z 轴。所以你在 SolidWorks 里建坐标系时,一定要把基准轴对齐到 Z 轴方向。如果搞反了,导出的 URDF 里关节方向就是错的。
4.4.2 坐标系命名规范
命名要跟 URDF 里的连杆名对应。我习惯用 CS_<连杆名> 的格式。
| 连杆名 | 坐标系名 | 说明 |
|---|---|---|
| base_link | CS_base_link |
基座固定坐标系 |
| upper_arm | CS_upper_arm |
上臂关节坐标系 |
| forearm | CS_forearm |
前臂关节坐标系 |
4.5 知识体系总览
下面这张图把基准轴、参考点、坐标系的关系画清楚了。你可以对照着看,心里有个谱。
4.6 实战避坑指南
我做了这么多年,踩过的坑不少。挑几个典型的跟你说说:
- 坐标系方向搞反:URDF 的旋转轴是 Z 轴,但 SolidWorks 默认坐标系可能把 Z 轴当成竖直方向。如果你关节是水平旋转的,一定要手动调整坐标系方向。
- 参考点不在关节中心:选圆心时,一定要确认是关节旋转的圆心,不是安装孔的圆心。我犯过这个错,结果仿真时关节位置偏了 5mm。
- 忘记命名规范:后面导出 URDF 时,SolidWorks 插件会按名称匹配坐标系。如果你命名乱七八糟,插件根本认不出来。
- 基准轴和坐标系建在装配体里:我个人建议建在零件里。因为装配体里的参考几何体容易随配合变化而失效,零件里的更稳定。
4.7 本章小结
基准轴、参考点、坐标系,这三样东西是 URDF 关节定义的基石。你想想看,如果没有它们,SolidWorks 怎么知道关节往哪转、转轴在哪?
所以,别嫌麻烦。每个关节都老老实实建好基准轴和坐标系,后面导出 URDF 时你会感谢自己的。