结构设计的思维逻辑:先定接口,再画件
来源与授权
本文由 哈尔滨工业大学 竞技机器人队 的原始材料《结构设计的思维逻辑》(斯基系列)移植而来: 文字按页搬运、未改写结论;图未重排,每页标了原 PDF 页码,需要看图请回原文。 原文 PDF:下载 / 在线阅读。 版权归原作者;如作者要求撤下,见 免责声明与许可。
讲「怎么想」而不是「怎么画」:功能分解、接口确定、何时用标准件、何时必须非标,以及为什么照抄开源方案常常性能反而更差。
共 9 页 · 原文 PDF 在此 · 移植方式:逐页抽文字, 按句切段,去页眉水印;段落顺序与原文一致,可读性做了处理,内容未改。
原 PDF 第 1 页
2021.9.6
2021.9.15
1 / 9写在前面不管是任何类型的机器人比赛,只要是需要自己制作,都离不开结构设计,而一个好的方案、好的机构、好的运动性能都可以为队伍带来巨大的竞赛优势,让队伍处处占得先机,换句话说“机械水平决定了机器人的性能上限”。
但话又说回来,一个高水平的机械结构不是那么容易就搞出来的,它需要有高水平的设计者、丰富的测试、严谨而发散的思考、以及不断的迭代共同造就,而这对于任何一个队伍都不是一个容易的事情,更何况对于一些积淀尚浅的队伍,更是困难重重。
不过近年来开源环境在日趋改善,越来越多的队伍愿意开源、敢于开源,在客观上对一些积淀不足的队伍有相当的帮助。
但是,一些队伍在面对开源这座矿山时缺乏自主的思考,更多的是直接的“拿来主义”,而由于每个队伍的风格、需求、特点都不一样,由此而诞生的机器不可避免的会出现不协调,导致性能还不如开源的原版设计。
写这篇文档的目的,主要是阐述我个人对于设计逻辑上的一些思考,它的本质是设计的方法论,这部分的设计方法论很多时候是被设计者所经常忽略的,一套合理有效的方法论能快速培养设计者对于复杂结构上设计的能力,相信对于新老队伍都有相当的参考意义。
这篇文档也是我所写的所有文档中最重要的一篇,不谦虚的说,如果能吃透本文档内容,基本也就意味你所设计的机器必然会跻身一流行列,望大家在看完之后多多思考。
本文档受篇幅所限,案理不多,希望大家在读完后结合自身情况进行举一反三。
需要说明的是,本文档主要基于 RoboMaster 这类竞技机器人比赛,与实际的工业中的非标设计有所区别,请读者不要混淆。
哈尔滨工业大学 竞技机器人队金子旭版本说明首次发布,阐明 4 点核心方法论v1.0
原 PDF 第 2 页
本页含 3 张图,网页不复刻,见 原文第 2 页。
2 / 9第一要点 由需求牵引的目标导向设计的根本目的是完成需求,不论何时一定不要忘记这点。
反之,只有明确了“我到底需要什么”才能知道“我到底要设计什么”,进而才能了解到“我能通过什么实现”。
这点很关键,很多时候在设计进入瓶颈时,很容易在纷繁复杂的思绪中迷失方向,多想想“我到底要做什么”在很多时候能提供一些不一样的帮助。
例如对于设计初期,进行大体方案规划的时候,可以有如下思考:在想明白“我到底想要一个怎样的机器”之后,具体的思路基本也就清晰明了了。
这时可能会有人问,“我也不知道具体怎么设计啊,这怎么办?
”。
我们可以把上面的思维顺序称为“逻辑链”,而对于某一具体功能,或在已有设计上的某些机构迭代,可以有如下的逻辑链:例如我们队伍在 2021 赛季中的舵轮,它的功能逻辑链如下图所示。
这台机器最根本的需求的“跑的猛”,也就是加速性能要非常好,同时在实际的赛场上由于大多都是弯道,根本没有长距离加速的条件,这也就意味着加速性能远比最高速度要重要。
而这导出的二级需求就是结构的轻量化,而为实现这一点在结构上又可以有种种操作。
其实如果单纯选择机构的话并没有什么难度,它的难点在于“如何在现有的约束下进行取舍”,或者换句话说,设计就是取舍的艺术。
对于竞技机器人这样一个复杂系统而言,任何设计都是必然存在取舍的,而如何平衡好每一处取舍,最大限度的发挥出它的优势,同时转移劣势,这就是设计者思考的体现了。
原 PDF 第 3 页
本页含 1 张图,网页不复刻,见 原文第 3 页。
3 / 9那么如何进行合理的取舍呢?
对于绝大多数情况,取舍的根本在于需求的优先级。
例如这台机器最根本的一级需求是 A,二级需求是 B,三级需求是 C,那在设计遇到分岔口是就会以 A 为最重要的,宁可牺牲一些 C 或 B 的效果,也要尽量保证 A 的尽善尽美。
而到了下一个 B 的分岔口也是同理,会优先牺牲更低级的需求,以保证高优先级的设计目标的达成。
来举个例子,我们 2021 赛季第二代的工程机器人,它主要用于参加北部分区赛,这台机器设计之初把障碍块功能放到了一个非常重要的位置,和矿石并列成为优先级最高的设计需求,所以这代的逻辑流程其实是“障碍块机构->底盘(只定尺寸)->上层框架(只定尺寸)->取矿机构->矿石姿态调整->救援等小机构…”。
甚至说整台机器都是围绕障碍块机构来设计的也不为过,这是我们的“取”。
按照北部分区赛的规则版本,想要充分利用障碍块就必须要进行 roll 轴的姿态调整,这很麻烦,所以我们设计了一整套机构来完成这个翻转的功能,这也就导致一定程度上挤占了车体后部与中部的空间,对布线与维护造成了相当大的麻烦(这代机器对于布线和维护的设计优先级都不高),这是我们的“舍”。
说到底,根本还是在设计开始之前要想明白“我到底想要一个怎样的机器人”,只有明确了需求,才能设计有重点、有突出、有优势。
在大多数情况下,在比赛上“样样精通”也就意味着“样样稀松”,只有分清优先级,把某些重要功能做到极致,以局部的优势引导出整体的优势,才能使队伍获得整场比赛的胜利。
原 PDF 第 4 页
本页含 2 张图,网页不复刻,见 原文第 4 页。
4 / 9第二要点 力传递/能量传递原理我们知道,运动的本质是“力”的作用效果,而在竞技机器人这种限制条件下,机构的作用也就是将自己作为力传递的媒介,将原动机的动力对外传递出去,并同时实现某几种运动效果。
当然在有运动行程的情况下,力与能量的基本是一回事,而分析其中力传递或能量传递的路径与方式,可以帮助我们思考与设计这个机构的具体结构,便于我们在一些复杂条件下的机构设计。
下面举一个例子来说明。
还是 2021 赛季我们的舵轮步兵,它采用了动力单元的结构,将胶轮、电机、支承轴承、航向调整电机以及一部分的悬挂组件构成了一个整体,如果需要紧即更换的话可以直接将整体滑出,并直接进行更换。
在青工会上我分享了它的具体结构,如下图所示:咱们来分析一下它的力传递链。
考虑到它的工作情况,与地面接触的只能是最底端的胶轮,而受力有 3 种,一种是车体的重力作用和冲击带来的竖直向上的受力,另一种是由于电机牵引/制动或冲击产生的与左图视角垂直的力,还有一种是由于 45°制动或车辆受到外部撞击时产生的沿电机轴向的受力,这三种直接的力作用点都是胶轮与地面的接触面。
需要强调的是,截至到目前的分析和结构都无关,只要是个舵轮结构,都会有这样的受力,也正是因为如此分析力传递才可以帮助我们在大体明确方案后进行结构设计。
基本明确受力类型后,就可以根据受力类型进行结构设计。
第一种受力是竖直方向的,在这个方向会以整个动力单元作为一个整体,依靠避震器吸能,有足够的缓冲区间,直接对结构的冲击并不大,所以对于动力单元的刚度要求也就不是特别高,只要能保证轮系不发生肉眼可见的形变即可,正因为如此我在设计动力单元时才采用了单侧碳板支撑的结构,同时尽量压缩碳板偏向一侧的偏移量,从而减小它所承受的弯矩,同时可使碳板上部的缩口出尽量宽,以缓解在侧面撞击时的应力集中。
原 PDF 第 5 页
本页含 2 张图,网页不复刻,见 原文第 5 页。
5 / 9第二种受力也就是与牵引方向相同或相反的受力,这个方向是受力非常单纯直接,直接由支撑侧碳板承受,并传递到上部的回转支承轴承,进而传递到悬挂的滑轨上,从而带动车体运动。
整套传力路线中,由于轮系与回转支承轴承存在高度差,剧烈的加速度带来的力会在回转轴系的内圈上形成一个倾覆力矩,这也就意味着如何承受住这个倾覆力矩正是航向回转轴系的设计重点。
所以可以看到在套环的设计中留存了一定的轴向高度差,从而依靠压板的变形来实现回转支承轴承的轴向消隙,在轴承与套环的内外圈配合面上填充触变性轴承紧固胶来实现径向的消隙(左下图红框处),毕竟对于运动工况来说,间隙就意味着冲击,而冲击必然会使结构的寿命存在隐患,在完全消除间隙后,整体的结构稳定性便有了保障。
第三种受力是沿电机轴向的,这个方向的受力对于单端支撑的结构是最为“危险”的,这样的单端支撑结构的支撑板可以等效成一个悬臂梁,在受到外力作用时其根部的弯矩最大,也就是上方右侧图片中红框的部位,正是它的危险截面。
而对于支撑碳板而言,也正是需要承受法向载荷,我才会选用“大厚度+开减重孔”的组合,毕竟在同等重量下,“厚而窄”的板材比“薄而宽”的板材更适合承受弯矩。
就如同上面的例子一样,很多时候多想想力或能量是怎样传递的、作用到哪个零件上、需要由谁承受、谁会变形、谁需要加强等等问题,就能在相当的程度上指导以及推进设计的进行,在很多时候也就能避免“画到自闭”情况的出现,进而让整个设计流更为顺畅,同时也有利于简化结构,使结构更合理。
原 PDF 第 6 页
本页含 2 张图,网页不复刻,见 原文第 6 页。
6 / 9第三要点 “够用就行,适可而止”这一点是轻量化设计的精髓,在能完成功能及保证合理冗余的前提下,结构能省就省、板材能掏就掏、壁厚能薄就薄。
很多时候在分析明确了受力之后,只要保证几处关键部位的强度,就能保证整体的刚度,从而也就能省去很多冗余的结构,这是减重的核心。
在很多时候设计者总会有一种感觉,“哎这个地方强度刚度是不是不够啊,我是不是得再加厚一点/做强一点/再加个支撑结构...”,这种思维的结果就是该设计者设计出的结构存在大量的冗余,这就像木桶原理,比木桶的最短板高的部分都是冗余,而且是毫无意义的冗余。
显然,这会拖累机器的极限性能。
竞技机器人,突出的就是一个“竞技”,而想要从中脱颖而出,要的就是“极限”。
在同等需求下有极限的方案、极限的性能、极限的操作、极限的稳定,这些共同作用才能有一个极限的结果。
可以说对 RoboMaster 或 Robocon 这类的竞技机器人比赛,达不到极限的机器,是没有生存空间的,换言之“极限“就是队伍的生命线,这也是为什么尽量的去除冗余,达到极限是如此的重要。
不过我还是需要再次强调的是,去除冗余,前提是它真的是冗余。
而这就需要对结构的受力有着充分的认识,上文第二点的力传递理论对这方面有一定的帮助,希望大家多多练习这种思维,并思考其中的原理。
咱们再来举个例子。
下图中左侧标蓝的板子的步兵侧面装甲板的安装板,我们简单分析受力可以知道,由于这个板子与底盘框架固定的安装孔位在与装甲板固定的孔位的外侧,而装甲板与装甲板支架又可以视为一个刚体,故其主要内应力应集中于内、外安装孔之间,即红框的区域,而中部所承受的载荷很小,所以中间的基本所有区域都可以掏空,只留下很少的边条用来维持基本形态以方便装配与布线,在实际测试中装甲板安装刚度也很理想。
再者例如右上方图中的零件,它是一个垫块。
其受力部分集中于安装孔附近与外边框,中心部分基本不受力,故可以大幅度的掏空。
同时其又有从背后压住轴承的需求,故在中心部分设计了 2 条支板,可在尽量不增加重量的情况下压住轴承。
原 PDF 第 7 页
本页含 3 张图,网页不复刻,见 原文第 7 页。
7 / 9第四要点 合理并优雅着对于一流的设计者而言,只要看一眼机器,基本它背后设计者的水平也就呼之欲出了。
机器的构型、细节的处理、思维是否协调等多种因素共同决定了一个机器是否“优雅”,我同时也认为,这是对于一台机器的最高追求。
“一个优雅的设计不一定是个好设计,但好的设计一定是优雅的”。
如果一台机器可以被认为是“优雅的好设计”,这意味它不但性能出众、机构巧妙、结构合理、细节严谨、思维连续而且整体协调,我认为这是对它至高无上的评价,这也是我一直所追求的目标。
需求说明的是,“优雅的设计”并不是单纯的指外貌是否好看帅气,更多的内在的合理性,优雅的内在是合理性,合理性的背后是环环相扣的逻辑链,而这反映到机器的外表上就是不同机构间的均衡与协调,可以说如果机器人是合理且优雅的,那它的外貌必然是帅气的。
那么,如何设计出一个“优雅的好设计”呢?
我想有两点非常重要,一是设计的合理性,二是逻辑的连续性。
何为设计的合理性?
简而言之就是“以符合力学与材料特性的方式实现运动或动力的传递,并完善了其中的每一个细节”,换句话说它要满足两点:①结构与零件要符合力学原理与材料的特性;
②得处理好沿路的每一个细节。
举个例子,下方的两个图都是英雄机器人云台 yaw 轴回转轴系与底盘框架间的安装板,很明显,前者更合理一些,而后者是不太合理的。
理由很简单,后者没有利用好板材厚度与抗弯特性的关系(下文会说明),造成整体面积大且刚度弱于同重量的左侧结构。
所以下方左侧的设计是合理的,右侧的设计是不合理的。
上文中提到了板材的抗弯特性,我来简单说明一下。
我们知道想掰弯一块板子的话,沿着大表面的倾覆方向用力最容易,这也就引出了板材的一个特性:板材适合承受板面的切向力但不适合承受板面的法向力。
若简化成悬臂梁,由材料力学的矩形截面惯性矩公式可知:𝐼𝐼𝑥𝑥= 𝑎𝑎𝑏𝑏312
原 PDF 第 8 页
本页含 2 张图,网页不复刻,见 原文第 8 页。
8 / 9同时我们还知道,梁所受的弯曲应力𝜎𝜎的公式为:𝜎𝜎= 𝑀𝑀𝑚𝑚𝑚𝑚𝑚𝑚𝑊𝑊𝑥𝑥其中𝑀𝑀𝑚𝑚𝑚𝑚𝑚𝑚是梁所受的最大弯矩,𝑊𝑊𝑥𝑥是以 x 为中性轴的抗弯截面系数,而𝑊𝑊𝑥𝑥的公式为:𝑊𝑊𝑥𝑥=𝐼𝐼𝑥𝑥|𝑦𝑦𝑚𝑚𝑚𝑚𝑚𝑚| = 𝐼𝐼𝑥𝑥𝑏𝑏2带入𝐼𝐼𝑥𝑥的公式,
就可以得到:𝑊𝑊𝑥𝑥= 𝑎𝑎𝑏𝑏26在板材受法向力的情况下,𝑎𝑎和𝑏𝑏分别对应板材的“长或宽”和“厚度”,而若想减小弯曲应力,就得增强结构的抗弯截面系数,而增大 b 就是一个很合理的选择,而如果需要减重而需要去除材料,那在减小较多𝑎𝑎的同时增大少量𝑏𝑏,则可以实现保持法向的承载能力的同时减重的目的。
简而言之,板材越厚,抗弯越好,在同等重量下‘厚板材+大减重’的抗弯能力要好于‘薄板材+少减重’的方式,且更节约整体结构的体积再举个例子,下方是某两只队伍的英雄机器人底盘轮系的侧板,很明显,下图左侧的设计是比较合理的,右侧的设计是不合理的。
可以看到红框内都是轮系受到冲击后的回转中心,红色箭头都是地面给该板材的载荷方向,橙色箭头是避震器给该板材的力。
由于两者的减重孔设计方式都很清晰,分析两者的受力可以很容易得出结论,下图左侧的设计能以更轻的重量完成相同的任务,所以其设计要优于右侧的设计。
那么,什么是逻辑的连续性呢?
连续性主要是针对于结构的设计而言的,而不是针对零件的设计。
例如一个复杂的结构,一个需求摆在了我的面前,我设计出了 A 模块,接着由 A模块出发,并考虑工况与环境的影响设计出了 B 模块,再接着考虑 A、B 模块与环境和工况的影响设计出了 C 模块,这就是一个逻辑明确的设计顺序。
原 PDF 第 9 页
9 / 9换言之,就是要求不同的结构件要有联系,这个联系并不是力学上的,更多的设计思维上的。
要充分考虑不同模块或结构之间造成的影响与关联,不能只作单纯的模块拼接。
在效果上,逻辑连续性比较好的机器往往能体现出整体的协调性,而逻辑连续性不好的机器的不同模块间总会有一种“割裂感”,这不但影响美观,更影响性能。
不知大家发现没有,对于竞技机器人这种“复杂,但不是特别复杂”的机器人,很多队伍的设计者人数都很少,一人设计一台、一人设计好几台机器的情况也时有发生,如果单纯从设计协调性角度考虑,设计者人数越少,其设计的思路也就越连贯,在不同模块间也就基本不会出现巨大的割裂,从而能把整体设计水平维持在一个比较高的位置。
当然,一个人所能承担的工作量终究是有限的,无法应对过多的工作,在面对真正的大项目时必然需要多人合作。
但多人接入势必会损耗思维的连续性,毕竟每个人对于设计的理解都不同,多少会存在差异,而也会对设计出的产品水平有不利影响。
对于这种情况,我有几点建议:①设计者的质量远比数量重要,三个臭皮匠是比不上诸葛亮的,三十个也不行;
②核心设计者之间一定要交流设计思路,尽可能地缩小思路上的差异,保持设计的一致性;
③在开始设计之前简单画个逻辑链,明确设计逻辑。