电控最应该看的课程,机械组入门教程01——如何导出URDF(维护TF树)

诺丁汉大学联队

写在最开始

俣琦2026-08-27 01:012.7k 字1 个链接 · 17 张图

为什么会有这个帖子

RM比赛的很多队伍在长久以来一直面临一个非常明显的问题,即,在机械还在画车造车的时候,各位电控组成员似乎除了带小登,维护老车之外无事可做,但如果小登或者老车有什么问题的话,电控组只能被迫天天摸鱼,有事没事抽机械陀螺,随后在赛前把前面摸的所有的鱼狠狠地找补回来。

问:那么有什么办法可以解决这个问题呢?

答:让电控在出车之前就把车在仿真里面写好控制策略,等实车造出来之后按照仿真进行部署。

我其实早在2023年就有过这样的念头了,但是想法的开始往往也是想法的结束,很多队伍往往会在产生这个想法之后,随着之后的一系列问题而被迫停手,转回到抽机械陀螺的无聊时光之中。

本队在面对这种问题时,在URDF的导出上,选择了一种在我们认为非常合理的做法:让机械自己构建和维护自己的机械的所有的运动约束。

因此本贴的核心目的实际上是借助论坛来保存我队的入门必学课程之一:如何导出URDF。

另外我觉得论坛应该是我目前能找到的最稳定的可以记录教学资料的方式,所以后续可能会有一些其他的入门教程更新(画饼,有没有两说)

食用须知

本队的绘图软件为Inventor(实际上这部分相关内容约等于无)

使用的URDF软件在多方尝试之后最终选择了最简单的Onshpe

本人其实探索过很多其他的相关导出和生成工具,但是多数工具在构建节点的时候要么类型缺失,要么闭环困难,Onshape算是其中非常友好的一个选择

后续我将以一个我设计的四足机器人的部分零件为例来进行展示(实在是懒得一点点全干了)


预处理

在开始真正地要导出URDF之前,需要进行一个模型预处理,预处理的目的主要有以下目的:

1、减少URDF中的文件数量

2、减少模型中的复杂特征

3、设定好符合命名规范的命名(一定要是纯英文,不要空格,空格使用下划线(_)代替)

预处理第一步:新建部件

我非常清楚多数人的绘图习惯好不到哪去,完整的模型部件内可能各种层级都有,所以第一步,需要新建一个部件,在这个部件内,要把自己原图纸中的不会发生相对运动的零件,单独粘贴过来,并装配好(实际上在原部件中直接复制,然后新建部件直接粘贴就好了)

从这样:

image.png新建一个单独的子部件变成这样:

image.png随后在上方工具栏选择装配→简化:

image.png

然后根据需求调整删除特征和高级特征,注意一定要勾选样式中箭头指出的选项(电机建议重新直接画一个简化的然后装配进去,官方的电机模型一般复杂度偏高计算时间长,电路板之类的建议直接删除):

image.png

在合并完成之后,将单独的零件以英文命名并保存,随后将所有的单独的保存的零件重新拼接为一个机器人,注意这一过程中一定要记住,要将机器人所有关节角度设定为预期的初始角度(即电控零位,不确定的可以问电控意见)

最终效果如图:

image.png

注意在完成这一步之后,要警惕你的机器人世界坐标系正方向,机器人坐标系正方向应该与世界系对齐。

完成这一步之后导出STEP并随后导入到Onshape

URDF正式构建

Onshape是什么

Onshape是一个免费的在线模型编辑器,它的使用体验在我看来,那是真的纯纯的依托,但是它内置了URDF导出功能并且可以完美识别自己设定的约束,这一点第三方插件还是远远比不了的

想要正确使用Onshape,你只需要两步

第一:点击这个链接: https://cad.onshape.com/signin 并完成登录

第二:看完这个使用说明:

image.png

当然,你不看也不是完全不行,在这个教程里,我将告诉你完成一个URDF导出,所需的最基本内容

导入文件

在进入Onshape之后选择左上角的创建→导入文件,就可以导入之前导出的Step

image.png

建议参考以下设定(换一个也不是不行,可以自己探索)

image.png

此时你只需要等待右上角的信息提示告诉你导入完成,然后进入文件。

文件检查

进入之后需要检查以下内容:

1、你的每个零件是否真的如你所想合并完了

2、你的每个零件是否在完成导入之后有所缺损(这是导入复杂STEP的通病,因此我强烈建议合并的时候老老实实只保留需要的特征,镂空什么的随它去吧)

3、你的机器人的预期坐标系是否和世界坐标系真的重合,如果不是可以在Onshape里面再次调整,但是我不保证这个东西能用

4、你的各个零件命名是不是真的是英文(中文真的会报错),如果不是,Onshpe可以进行修改(挺麻烦的)

固定零件

完成检查之后,全选零件,右击鼠标,选择固定(忽略报错),这一步是为了让你在后续的设定关节的过程中零件不会乱动

image.png

创建配合连接器

配合连接器是Onshape完成各种组装的核心,所有的onshape组装的本质都是配合连接器识别到的零件的某个坐标系位置对齐,并构成某种坐标系约束,这一逻辑与URDF链路一致,这也是为什么Onshape可以直接导出URDF。

配合连接器在工具栏的左上角:

image.png

创建配合连接器可以选择零件的对应特征进行选取。

这个过程中有个技巧,我们需要AB,两个零件进行装配,那么大多数情况下,这两个零件的装配位置是贴在一起的,直接创建配合连接器会无法选取,这个时候我们可以关闭某一个零件的可见性

image.png

这个时候你就可以看到需要选取的位置(如果还不行就多关闭几个)

这样我们可以在我们需要的地方构建配合连接器

image.png

在完成配合连接器的创建之后,需要记得在配合特征中修改命名,同样只能使用英文命名

如果只有旋转特征的话可以使用Joint进行命名,例如两个配合连接器可以被命名为Joint1_A和Joint1_B

image.png

构建特征

在设定完两个配合连接器之后,可以选择你需要的特征,并且选定你的特征连接器

image.png

image.png

完成确定之后修改你的特征命名,你的一个特征构建就完成了。

在完成所有特征的构建之后,取消所有零件的固定,并且固定核心零件。

导出URDF

如果炸图了,或者报错了,建议检查你的图纸装配。在全部完成之后和电控进行核对,随后导出:

image.png

image.png

最后导出就可以。

写在最后

机器人一直是一个系统架构工程,真想要干好这个事情,机械电控算法一样都少不了,但是实际上很多队伍在内部合作沟通的过程中会有一个很明显的问题,就是内部的沟通缺失,把仿真加入到设计的一环可以提前让各组之前开始协作,并且这个协作并不是等机器人完成设计之后才可以开始的,很多的机械其实在设计之初就有一个大概的构想了,但是很容易遇到完全设计完之后调试偏离预期,这个时候不如在设计之初,就做一个简化模型,先忽略掉技术细节和规则细节,仅保留所有需要的自由度,交给其他组开始在仿真里探索,这样的话,沟通也会多起来的。

正文与图片来自原文,版权归原作者所有;本站仅作检索与阅读。原文链接 ↗