简介:面向机械设计与机器人学习者的四足机器人SolidWorks设计资料包,覆盖从髋、膝、踝关节结构建模到运动学、动力学分析的完整流程,适合本科教学、毕设或入门项目参考。RAR压缩包共24个文件,约1.45MB,以13个STL三维模型为主体,另有URDF、SLX、YAML、Launch等仿真与配置文件,以及M脚本和文本说明,兼顾机械结构查看与ROS/Gazebo环境联调。已有717人学习下载。通过该包可快速查看各连杆与基座的三维外形,结合URDF和SLX能进行关节运动仿真、动力学计算与参数调整,YAML与Launch文件可辅助搭建仿真环境;M脚本与日志则为设计验证、排错和迭代提供参考。整体小而精,既可在SolidWorks中导入STL做逆向拆解,也可结合描述中的知识点系统理解四足机器人从概念设计到仿真验证的工程路径。
1. 用 SolidWorks 建四足机器人模型:真正的门槛在装配不在画图
“四足机器人 solidworks”这个关键词,大部分人是带着毕设或样机预研的诉求搜进来的。真正动手前会以为难点在零件造型,实际装完一台才发现:一个腿长改 10 mm,连接板孔位、电机布置、装配配合全得返工;模型转两下就崩溃;导进 Unity 不是破面就是整体放大 1000 倍。我先直接给结论:四足机器人建模的核心瓶颈不在画图,而在尺寸从哪里来、装配能不能动、改一处能不能全模型联动。
这条路线按「运动学底稿 → 骨架建模 → 装配体验证 → 避坑 → 仿真导入」的顺序拆。适合做四足机器人结构设计、课程设计、科研样机预研的人。照着做,可以拿到一套能驱动关节、能导出仿真环境的整机模型;想跳过原理直接抄参数的,直接看第 2 章末尾的全局变量表和第 5 章的避坑现场。
2. 先把运动学底稿立住:腿长、关节布置与自由度怎么定
2.1 每条腿 3 个自由度:髋侧摆、髋俯仰与膝弯曲的选型
四足腿部构型有很多种,但从 SolidWorks 建模的角度看,最稳的是每条腿 3 个主动自由度:髋侧摆负责整条腿在竖直平面外的左右摆动,髋俯仰负责大腿前后甩动,膝弯曲负责小腿折叠。四条腿一共 12 个主动自由度,足端通常不加驱动,做成一个被动小摆件或者直接固定,用来吸收落地冲击。
为什么这么分配?因为四足行走需要腿在三维空间里摆动,最少得有两个正交旋转轴,髋侧摆和髋俯仰正好构成一组正交轴;膝盖再加一个弯曲轴来调整离地高度和步长。再多加自由度会让控制指数级变难,机械上还要多一条轴的装配空间,对结构刚性和重量都不友好。
腿部还有个方向选择:多数四足采用膝向后弯,也就是从侧面看小腿从膝轴向后下方延伸。这样膝盖在后摆时不易扫到地面,也让髋俯仰电机承受的静态力矩更小。建模时先在前视草图里把膝盖放在髋轴的后侧,后续拉伸扫描才不容易反。
选驱动时,小尺寸样机常见用舵机,力矩够、控制简单,缺点是齿轮回差大;要求有一定速度和载荷能力时,我一般推荐“直流减速电机 + 行星齿轮箱”的方案,输出轴直径、法兰孔距都要按电机厂家手册里的实测尺寸画,不要随手画一个圆柱壳。关节模块方案成本高,但建模最省事,直接按模块外形尺寸做安装支架。
下面这张参数表是我自己做 300~500 mm 体长小型四足时的初始值,覆盖最常见的关节布置。先把运动范围写进骨架草图,后面装配体驱动检查时就不用再回头翻。
| 关节 | 运动范围(参考) | 驱动方式 | 建模要点 |
|---|---|---|---|
| 髋侧摆 | ±45° | 舵机或关节模块 | 轴线必须与机身侧板平行 |
| 髋俯仰 | -90°~+45° | 行星减速电机 | 轴孔按电机手册留公差 |
| 膝弯曲 | -150°~-15° | 行星减速电机 | 站立姿态时定为约 -120° |
| 足端 | 0~15° 被动 | 无 | 可用一根销轴连接,简化可不建 |
膝弯曲的角度符号在不同资料里定义不一样,建模时统一成“大腿与小腿展开角的补角”更不容易乱。这里把竖直站立时膝关节的自然弯曲记为 -120°,也就是大腿与小腿展开约 60°。
2.2 用一张侧视草图定下大腿长度和小腿长度
腿长不是拍脑袋定的。把整个四足放倒看侧面,髋轴、膝轴、踝轴三点构成一条折线,站立时这一折线要撑起目标髋高。常见做法是先在 SolidWorks 里新建一个零件,在前视基准面上画侧视草图,先画一条竖直参考线代表髋轴到地面的高度 H,然后从髋轴往下画出大腿长度 L1、再折出小腿长度 L2。
几何上要满足的是站立髋高 H = L1·cos(θ1) + L2·cos(θ2),这里的 θ 取相对竖直方向的角度。写精确公式意义不大,实际设计时会根据电机位置、足端离地高度反复调。我自己的经验是小型四足 L1:L2 落在 0.85~1.05 之间比较舒服,太长的大腿会让折叠姿态时膝轴顶到机身,太短则步高不够。
举个例子:目标髋高 240 mm,站立时取大腿相对竖直方向 40°、小腿相对竖直方向 20°,则大腿和小腿的投影高度分别是 130·cos40°≈99.6 mm,150·cos20°≈140.9 mm,两者相加约 240.5 mm。这样 L1 = 130 mm、L2 = 150 mm 就不是拍出来的,而是从站立高度反推出来的。体长到 600 mm 时,同理可取 L1 = 190 mm、L2 = 210 mm。
这个比例同时决定了最大步高。小腿越长,跨障碍能力越强;但小腿太长,抬起脚时踝轴附近会先扫到地面,所以还要给“抬起角度”留余量。一般我会把最大抬腿角限制在 45° 以内,避免足端在摆动相后半段画弧时撞到地面。
这一节最值得养成习惯的是:草图里所有几何基准都画在“关节轴心”上,不是零件外轮廓上。很多人第一次建模直接按外形画大腿,装配时加电机后才发现轴线对不齐。骨架草图里先只画点和轴线,实体零件全部基于轴线拉伸,轴线的位置才是整台机器的真理。
2.3 把几何尺寸转成全局变量:建模参数的初始值表
画完侧视草图,把二维尺寸提炼成一组全局变量,这是整个 SolidWorks 四足模型可维护性的基础。在 FeatureManager 里找到“方程式”文件夹,右键进入方程式管理界面,新建全局变量。变量名统一用英文大写加下划线,初值单位选毫米。
我自己常用的初始变量表如下。第一列是变量名,第二列是含义,第三列是小型机参考值。
| 全局变量 | 含义 | 参考值 | 说明 |
|---|---|---|---|
| HIP_OFFSET_X | 髋侧摆轴相对机身中心的 X 向偏移 | 45 mm | 决定机身宽度与电机安装空间 |
| THIGH_LEN | 髋俯仰轴到膝轴距离 | 130 mm | 大腿杆长度 |
| SHIN_LEN | 膝轴到踝轴距离 | 150 mm | 小腿杆长度 |
| HIP_YAW_RANGE | 髋侧摆运动范围角 | 45° | 用于装配体配置驱动 |
| AXLE_DIA | 关节轴公称直径 | 6 mm | 按电机输出轴定 |
| WALL_T | 结构件壁厚 | 3 mm | 3D 打印常用下限 |
建好变量后,草图尺寸处直接输入"THIGH_LEN"引用变量,注意带双引号,SolidWorks 会把变量名识别成尺寸引用。之后修改全局变量,整条派生链都会跟着变。单位上必须锁死毫米,混入英寸会在导入 Unity 时制造经典的 1000 倍模型。
注意:全局变量名虽然支持中文,但后面导出 URDF 或写控制脚本时会被外部工具直接当作标识符使用,英文加下划线最稳妥。
3. 自顶向下建模:用骨架模型派生四足机器人 12 个核心件
3.1 为什么不用自底向上:改一个尺寸零件全乱
自底向上的流程很直观:老老实实把 20 个零件逐个建出来,再进装配体加配合。四足机器人这么干的最大问题是零件之间强耦合——大腿长度变了,髋连接座的孔距、机身侧板的宽度、膝轴的位置全要跟着动。改一轮还能忍,改到第三轮就不知道哪一版是正确的。
自顶向下的套路是先做“骨架模型”。骨架模型通常是一个不参与打印的零件,里面只有 3D 草图和参考基准面,没有实体。所有关节轴线的空间位置、关键外形尺寸全定义在骨架里,实体零件通过“插入→零件”从骨架派生出来,或在装配体里直接配合锁定到骨架的轴线上。这样改任何一根轴的位置,派生件和装配体同步变化。
对四足这种高度对称的机构,骨架模型尤其划算:左腿和右腿共用一套骨架,镜像一下就能得到对称零件;机身侧板与腿部安装关系也由同一个骨架约束,不会出现左腿装得进去、右腿装不进去的尴尬。
这里还要区分两个层面:零件级骨架和装配级布局。零件级骨架长这样——一个叫 SKE_LEG 的零件里画好单腿所需的全部轴线;装配级布局则是把 SKE_LEG 和 SKE_BODY 两个骨架在总装里通过配合固定好相对位置。先做零件级骨架,再做装配级布局,顺序搞反的话,后期改结构会不停地在装配体里补配合。
3.2 顶层骨架里的 3D 草图和立体曲线怎么画
骨架零件建议直接命名 SKE_LEG 或 SKE_BODY,不要叫“参考零件”这种模糊名字。建 SKE_LEG 时,进入 3D 草图模式,沿空间三个方向拉出关节轴线:先通过原点画一条平行于 Z 的直线作为髋侧摆轴,再画一条平行于 Y 的直线作为髋俯仰轴,两条线相交于一点;从交汇点往下继续画大腿轴线,再折出小腿轴线。3D 草图可以同时捕捉 X、Y、Z 三个方向的几何关系,平面草图做这一步需要来回切视图,容易错。
如果用弧形大腿的结构,可以配合 SolidWorks 的立体曲线功能:在 3D 草图中先用样条曲线画出大腿中线的空间轨迹,再用“插入→曲线→组合曲线”把它转成可被扫描路径引用的曲线;实体大腿用扫描特征沿着这条曲线扫出。好处是既得到圆弧过渡的受力外形,也让膝关节在后摆时不会提前撞到髋部。
在骨架里还要放一个坐标参考:原点放在机身对称中心,X 指向前进方向,Y 垂直向上,Z 指向侧向。这个坐标系后面导出 URDF 或 FBX 时会直接变成外部工具的基准,现在不统一,进 Unity 后关节轴全部是歪的。骨架阶段宁可多花十分钟把这些基准面建标准,也不要事后在外部环境里逐个补旋转补偿。
立体曲线本身不要急着画。先用直线把自由度跑通、确认关节轴线互相正交且距离正确,再去追求大腿的弧形外形。外形可以在派生零件里单独调整,骨架里的轴线关系一旦锁定,后续改动成本最低。
3.3 从骨架派生四足机器人核心零件的顺序
派生操作最常见的做法是:新建一个零件文件,使用“插入→零件”选择要继承的骨架零件,随后在派生零件的环境里继续添加凸台、切除和孔特征。插入时 SolidWorks 会保留外部参考,零件上能看到源文件的引用关系。如果只想复制几何而不想被骨架后续改动影响,可以在插入后右键选择“断开外部参考”,但这属于最后收尾的操作,建模初期别断。
推荐的建模顺序是从安装基准往末端走:先做髋连接座,它同时连接机身侧板与髋侧摆电机,是所有腿部零件里基准最复杂的;接着做大腿杆,参考髋俯仰轴到膝轴的距离;再做小腿杆;最后做足端和机身侧板与横梁。左腿完成后不要从头画右腿,直接镜像。整机核心件数量如下。
| 模型名 | 零件 | 数量 | 备注 |
|---|---|---|---|
| SKE_LEG / SKE_BODY | 骨架模型 | 各 1 | 仅建模参考,不打印 |
| HIP_MOUNT | 髋连接座 | 4 | 左右腿各 2 件镜像 |
| THIGH_LINK | 大腿杆 | 4 | 可从骨架直接派生 |
| SHIN_LINK | 小腿杆 | 4 | 电机法兰处留沉孔 |
| FOOT | 足端 | 4 | 可简化成橡胶缓冲头 |
| BODY_SIDE | 机身侧板 | 2 | 开电机走线孔 |
| CROSS_BEAM | 机身横梁 | 2 | 连接左右侧板 |
如果要做轻量化,机身侧板和髋连接座上可以开蜂窝阵列:先画一个六边形单元草绘,再用“线性阵列”或“填充阵列”铺开。阵列参数不用精确到每个孔,关键是控制阵列范围不越过结构边缘。蜂窝阵列做在实体零件里没问题,别在装配体里做阵列,否则配合计算量会迅速拖垮整机模型性能。
4. 装配体搭建与验证:先装单腿、再做干涉、最后驱动关节
4.1 装配顺序:先装出单腿子装配体再镜像整机
总装配体直接装 20 个零件是四足建模里最乱的玩法。我一般会建一个“腿子装配体”,把髋连接座、大腿杆、小腿杆和足端先装成一条腿,再把这条腿作为子装配体拖进总装,用镜像零部件命令复制成四条腿。子装配体里的配合少、查错快,总装树也清爽。
总装里第一个插入的零件应该选骨架零件 SKE_BODY,而不是机身侧板。把 SKE_BODY 固定到原点后,机身侧板、横梁、腿子装配体都以它为基准添加配合,这样骨架原点就锁死了整台机器的坐标系。如果第一个固定件是实体零件,后面想重新对齐坐标系时,只能解除固定再重摆,操作又慢又容易出错。
腿子装配体内的配合命名要规范,后续 Motion 仿真和导出脚本都要按名字找关节。常用配合如下:
| 配合位置 | 配合类型 | 设计意图 |
|---|---|---|
| 电机法兰与髋连接座 | 同轴心 + 重合 | 固定电机位置 |
| 电机输出轴与大腿杆孔 | 同轴心 + 距离 0.1 mm | 保留旋转自由度且无径向旷量 |
| 膝轴两端与小腿杆 | 同轴心 + 平行 | 膝部单向弯曲 |
| 足端销轴 | 同轴心 | 被动转动,可不锁紧 |
装配时最容易犯的错是把每个配合都“锁死”。为了图省事给旋转副加了锁定配合,后面运动算例里马达一转就报错。正确做法是每个关节只保留一个旋转自由度,配合自由度留够,电机才有地方驱动,Motion 仿真也才能加上马达。
4.2 干涉检查的三处高频重叠区:大腿极限位、髋电机、足端
装配完成后立刻做静态干涉检查:菜单栏“评估”选项卡里点“干涉检查”,范围选整个装配体,勾选“视重合为干涉”。这样能直接看到零位姿态下所有零件的重叠体。但静态干涉查不出运动过程中的碰撞,旋转角度的干涉要靠运动算例跑。
我踩得最频繁的三个重叠区如下。第一处是膝关节折叠到极限时,大腿杆上端撞到髋连接座的底面。骨架建模时只标了轴距,没考虑实体凸出,解决办法是把大腿杆上端切成斜面或做避让圆弧。第二处是髋侧摆电机与机身侧板干涉,髋侧摆轴距机身中心留得不足,电机壳卡在侧板里面,解决办法是把骨架里的 HIP_OFFSET_X 加大到电机半径加 5 mm 以上。第三处是足端被动小关节摆动到最大角度时与小腿杆内壁相碰,加一个限位挡块或缩小摆动角度即可。
间隙设计上,我的经验值是:转动件之间留 2 mm,固定件配合面之间留 0.1~0.2 mm;如果是 3D 打印后还要装配,再额外加 0.3~0.5 mm 的装配间隙。没有间隙的轴孔配合打印出来基本是废件,后面塞不进电机轴。
干涉检查不要只看列表里的“重叠体积”数值,点选每一项后图形区会高亮对应零件,要看清楚重叠发生在什么姿态。有些干涉在零位显示不出来,比如大腿后摆 30° 时才碰侧板,这种只能靠运动算例或手动修改配合角度去定位。
4.3 用配置和运动算例驱动关节验证姿态
SolidWorks 的配置管理器里可以为装配体创建不同姿态配置,比如“站立”“蹲下”“趴下”。方法很直接:在配合里把控制膝角的角度尺寸设为 120°,在配置内覆盖成 150°,生成新配置。四个腿子装配体如果都是从同名骨架派生、配合名一致,改一个角度配置就能联动整机姿态。
运动验证用“运动算例”,计算类型选“Motion 分析”。如果 Motion 分析按钮是灰的,去“工具→插件”里勾选 SolidWorks Motion;没授权的话用“基本运动”也能凑合,只是精度和曲线输出少一点。添加旋转马达时直接选择膝轴圆柱面,速度设 10 RPM,仿真时长 3 秒,每秒 20 帧,跑一遍看膝关节是否能在运动范围内顺利转完不卡顿。哪一步报错,说明配合有问题,回去检查转子是否被多余约束锁住。
配置驱动的坑在于:如果配合里的角度尺寸没有用全局变量引用,而是直接在配合属性里写死数值,那么配置之间不会联动。最好在骨架里就定义好 HIP_YAW_RANGE 这类角度变量,装配体配合里引用它,配置只覆盖变量的值,这样四个腿的关节角度天然同步,不会出现一条腿站、三条腿蹲的场面。
5. 四足机器人模型避坑手册:崩溃、导入、打印和外部参考的 4 个现场
5.1 SolidWorks 崩溃与阴影反射:先关这两项再做大模型
现象:四足整机装配体里零件一多,旋转模型时画面卡到像幻灯片,动一下配合直接崩溃退出,重启后提示上次会话异常关闭。
原因:默认开启的阴影和反射让实时预览数据量激增,显卡和 CPU 跟不上;再加上自动保存没开,崩溃后回退好几个小时的进度。
解决:工具→选项→性能,把“在 shaded 模式下显示阴影”和“在 shaded 模式下显示反射”两项关掉;图像品质调成“更少”;装配体属性勾选“大型装配体设置”,并打开自动保存,间隔设 10 分钟,保留 3 个备份。这套组合拳能解决大部分建模中途崩溃的问题,尤其是零件数超过 50 个之后。
5.2 模型导入 Unity3D 破面与单位错乱:导出参数怎么选
现象:SolidWorks 里好好的模型,导入 Unity3D 后要么整体放大了几十倍,要么破面严重看不出零件边界,要么关节层级全部丢失,转子配好半天找不到对应的子物体。
原因:SolidWorks 默认单位是毫米,Unity 世界单位是米,导入不缩放就直接变成超大模型;OBJ/STL 只有网格不保留装配层级,破面往往是导出精度不够或法线不一致。
解决:展示用模型就把总装配体另存为 OBJ,导出设置里单位选毫米,导入 Unity 后把 Scale Factor 设为 0.01;做关节控制就优先导出 FBX,或者用 sw2urdf 这类插件导出 URDF。用 sw2urdf 前,必须在骨架里把 X 朝前、Z 朝上固定好,否则导出的旋转轴全偏。导出前先关掉零件里的阴影反射,可以避免导入后外观乌黑的小毛病。
5.3 3D 打印薄壁与悬空:给装配间隙留出余量
现象:模型打印出来后,螺丝孔塞不进螺丝、轴孔转不动、薄壁一掰就断,关节位置全是打印支撑残留。
原因:设计时按 CNC 加工思维留了 0.05 mm 的间隙,FDM 打印机喷头直径 0.4 mm,层线本身就有热膨胀误差;壁厚 0.8 mm 只有两层轮廓,强度远不够。
解决:受载结构壁厚至少 3 mm,孔位与零件边缘距离不小于 2 倍孔径;轴孔与轴颈的装配间隙给 0.3~0.5 mm,螺纹孔比标准值扩大 0.2 mm;悬空面控制在 45° 以内,超过就加支撑或改分件。四足样机零件长期受电机振动,材料上优先选尼龙或 ABS,PLA 夏天放在车里会慢慢变形,这是真实的材料坑。
5.4 派生零件改了不更新:外部参考断联的排查
现象:修改骨架里的 THIGH_LEN 后,大腿杆尺寸纹丝不动;或者打开派生零件时,参考图标变成红色、提示找不到源文件。
原因:建模过程中手动点了“断开外部参考”,派生零件与骨架的关联被切断;另一种情况是把骨架零件移动到了别的文件夹,SolidWorks 找不到路径。
解决:还在关联状态时,右键零件选择“编辑外部参考”,可以重新指定源文件路径;已经断开的零件只能手动把尺寸改成与骨架一致,没有后悔药。预防办法是建模期间把骨架与派生件放在同一个文件夹,所有尺寸都从全局变量读;确要断开某个零件做独立改动前,复制一份骨架做备份,别在原文件上直接操作。
6. Motion 仿真与 Unity3D 步态预览:让 SolidWorks 模型真的跑起来
6.1 用 Motion 分析跑一次单腿摆动
到了这一步,模型能转能装配,但没有验证真实运动范围之前不要出图。新建运动算例,计算类型选“Motion 分析”,给髋俯仰轴加一个旋转马达,速度常量 10 RPM,仿真时长 2 秒。跑完后看角度-时间曲线,应是一条平滑直线;如果曲线出现突然跳变或计算报错,说明某个配合把旋转副锁住了,或者存在隐藏干涉。
Motion 只计算你指定马达的那根轴,足端轨迹并不会自动显示。要看足端是否画出理想弧线,可以在装配体里放一个参考点做轨迹跟踪,或者在算例结果里输出角加速度曲线检查冲击。这样一轮检查做完,再把模型导入外部环境做步态规划。
6.2 用 Unity3D 脚本做四条腿的步态预览
模型验证后的进阶玩法是把 SolidWorks 装配体导入 Unity3D,用脚本驱动髋侧摆和膝关节做步态预览。展示用模型直接另存为 OBJ,导入 Unity 后把 Scale Factor 设为 0.01;需要按关节控制时,导出 FBX 或 URDF,然后给每个关节节点挂一个旋转控制脚本。
using UnityEngine; public class GaitPreview : MonoBehaviour { public Transform hipYaw; // 髋侧摆 public Transform hipPitch; // 髋俯仰 public Transform kneePitch; // 膝弯曲 public float hipYawAngle = 0f; public float hipPitchAngle = 15f; public float kneePitchAngle = -30f; private Vector3 hipYawStart; private Vector3 hipPitchStart; private Vector3 kneePitchStart; void Start() { hipYawStart = hipYaw.localEulerAngles; hipPitchStart = hipPitch.localEulerAngles; kneePitchStart = kneePitch.localEulerAngles; } void Update() { // 用 localEulerAngles 而不是 world rotation,避免万向锁造成乱转 hipYaw.localEulerAngles = hipYawStart + new Vector3(0f, hipYawAngle, 0f); hipPitch.localEulerAngles = hipPitchStart + new Vector3(0f, 0f, hipPitchAngle); kneePitch.localEulerAngles = kneePitchStart + new Vector3(0f, 0f, kneePitchAngle); } }脚本逻辑不复杂:Start 里记录三个关节的初始局部欧拉角,Update 里按设定的目标角叠加驱动。用 localEulerAngles 是因为四足关节的理想运动是相对父级节点旋转,直接改 world rotation 会让换轴补偿变成一场噩梦。SolidWorks 里 Z 轴向是竖直的,Unity 是 Y 轴向竖直,如果导入后转轴方向不对,不要改 FBX 的几何,在根节点挂一个空物体做轴向补偿最省事。
参数上,hipYawAngle 控制左右摆动,hipPitchAngle 控制大腿俯仰,kneePitchAngle 控制小腿弯曲。四条腿各自挂一份脚本,角度参数写成相位偏移,就能快速预览对角小跑的视觉效果。我早年第一次做这一步,在 Unity 里对着一个巨型模型和乱七八糟的旋转轴调了一整晚,最后发现只是 Scale Factor 少设了个 0。后来养成一个习惯:每台机器导入外部环境前,先拿一条腿单独导出,验证轴向和比例,再全机导出。这个小习惯帮我省了很多时间,希望帮到你。
本文还有配套的精品资源,点击获取