220g格斗机器人建造日志(1) —— 结构和硬件设计

“——不就是一台遥控车吗”,查拉图斯特拉如是说。

某创,某秋,某配,每个月这么多板子不嫖一点总觉得自己亏了,于是乎歪脑筋一动想到用pcb来做结构件,传统艺能了属于是。pcb加工精度高,强度好,还能通过焊接来加固,电控系统也能直接做到上面而节约空间,看上去百利而无一害。至少一开始我真是这么认为的。

的确,这玩意硬件上基本没啥值得注意的点。一个单片机系统,4路有刷的H桥驱动对应4个自由度,电源模块,陀螺仪,基本上就是全部了,还不如之前做过的遥控器和四旋翼复杂。

唯一的难点在于车车的内部空间有限,并且还要考虑电机,电池,外壳等结构占据的空间,并考虑各部件连接走线的问题,因此虽然板子面积不小,但布局上的限制极大。万一弄得不好,一颗螺丝都能不小心干涉或者短路,那就亏大发了。

因此设计结构的时候一直都是ad和sw一起开,总体上先设计好结构,敲定板子具体形状和装配孔位置之后再到ad里面去画。把装配结构需要的空间预留出来,元件需要避开那些位置。不过还有比较重要的两点,一个考虑高度的限制,一个考虑元件焊接。当时画的时候电源接口用的是kf2.54的接口竖过来,结果忘记高度限制了差点装不上去。

底盘

结构

车车还是沿用了传统,分为底盘和上层两个部分设计。底盘主要包括pcb底板,行驶部分4个电机,1个云台电机,各种接口,电源和陀螺仪,轴承支架。220g格斗机器人建造日志(1) —— 结构和硬件设计_第1张图片

云台轴承是整个车和核心。要有足够的尺寸撑起整辆车。如果用普通金属齿轮的话重量就远远超了,为了减轻重量,翻遍了某宝找到pom薄壁轴承,重量25g,买来试了一下强度可以,整车大定。

也考虑过不用大轴承直接用舵机直连上层的设计。但算算总觉得这样一个重量会超,再一个电路的设计也会有麻烦,走线不好走,更重要的是旋转角度被限制死了,没办法转超过360°。遂作罢,还是采用的普通电机+内啮合齿圈,虽然这样会在传动的时候浪费电机速度,不过算了一下大概5:1的减速比,也还能接受。

云台电机使用输出轴反向的n20电机。想买1000rpm的,结果店家告诉我没货了只有500rpm。当时一算感觉这样的速度也不是不行,但是做出来之后才发现,云台转的太慢了,100多rpm看着还行,但是实际上根本没办法跟随遥控器的旋钮,更别提之后还想让他跟随车身角度了。这个云台电机还是弄快一点的。

行驶系统用的是n20电机和自带的电机支架。直接装到pcb上。后来被人说这样连接不可靠。本来是想着在pcb上预留焊盘,可以直接把黄铜减速器焊到底座上的,结果做的时候搞忘了。真是。

 轴承架考虑到连接上层,需要结实一点,因此使用abs打印,云台传动齿轮就用的普通pla。轴承架打出来,里面直角的部分实际上还残留着不少支撑没办法去掉,结果就是根本没办法配合到轴承上,用锉刀打磨了好久才塞进去。

电路系统

底盘结构其实没啥,主要是电路部分。这里有个大坑。

使用pcb底板的本意是为了方便装配,因为可以直接把螺母以及其他结构焊在上面,方便从不同的方向装螺丝。不过这个设定在后来的设计中逐渐去掉了,因为实在用不到。但是pcb底板保留下来了。为了节约内部空间以及炫技,采用了pcb底板之后理所当然的想着把电路直接做在底板上。后来画着画着发现不行,放不下。于是又想到了叠板设计,把主控等一部分电路独立出来放到一块小板子上,用排针和底板连接,剩下的电路放在底板上。后来才发现不仅没起到希望的作用,反而pcb底板吃了很多重量。灾难就这么开始了。。。。。。

底板

220g格斗机器人建造日志(1) —— 结构和硬件设计_第2张图片

底板上就一个LDO电源,主控板的接口,电机接口,6050。很简单的组合,布局上也没啥难度,主要是几个关键器件的位置配合。设计的时候还考虑了用毫米波雷达做自动索敌和规避,后来发现其实很难发挥用处。车内部根本没有足够空间走线,接口还浪费面积。

费老大力气把板子焊好装上,坑爹的事来了,机器人的车身角度闭环调了几个礼拜根本没办法收敛。排除了遥控器的bug之后,开始找pid算法和陀螺仪的问题。

陀螺仪起先都是在车身静止的时候观察的数据,一开始确实没发现问题,用6050自带的dmp解算库返回的欧拉角基本稳定在±1~2°之内,基本满足要求。然后开始找pid的问题。因为希望让车可以两头开,自动根据输入的角度和车身目前的夹角寻找最合适的旋转角度,自动判断是应该逆时针转某角度还是顺时针转过其补角,在角度环运算之前有一个数据的预处理。这预处理老费劲了,花了一周弄好,分了几种情况讨论,这个是纯软件问题,哪怕360°枚举,总能解决的。

PID调参调了俩礼拜,还拿出了之前写的通用pid算法库,换成专家pid,也没啥用。好像就是车突然就开始发疯,约转越离谱,用手强行把车停下来之后,车身的角度跟原始值比起来已经有了肉眼可见偏差。其实到这里基本上可以确定是陀螺仪数据的问题了。

后来把车架空,在车身不动的情况下让车轮空转,再观察陀螺仪角度。好家伙直接给我短短几十秒钟就产生了接近10°的偏差。行驶电机停下之后偏差速度减缓。

220g格斗机器人建造日志(1) —— 结构和硬件设计_第3张图片

 这还得了。猜想是电机旋转产生的某种神秘力量影响了陀螺仪的数据。去网上问了一通大部分人都说是电机振动引起的。虽然寻思着电机无规律振动没道理让陀螺仪数据偏离中心值,但还是做了个实验,把电机从板子上拆下来放旁边,用长线连到板子上,消除振动影响。这次点击不管怎么转陀螺仪数据都很稳定了。把电机摁回板子上,发现陀螺仪又开始飘了。好家伙困扰了几个礼拜的bug告破。电机直接硬连接在装有陀螺仪的pcb底板上,6050运动学解算出的欧拉角来自于四元数,四元数来自于DMP对三轴加速度计和三轴陀螺仪的ADC数据进行融合计算。当电机开始旋转,其产生的振动会直接传导到陀螺仪,影响到的应该是加速度计的数据。因此,其输出的欧拉角就有了较大的偏移。

上层

底盘最主要就是陀螺仪的问题,结构算比较稳固。上层问题也不小,主要是铲子太小了,没办法很好的控制。

220g格斗机器人建造日志(1) —— 结构和硬件设计_第4张图片

abs 100%填充打印,非常结实,但是小了点。正面2cm,侧面长的那一边才3cm。之所以画这么小是想兼容上面的锤子,实现一个武器臂复用。然而做出来才发现,这样的铲子根本没办法有效控制,掀不翻人。只有正面+侧面完全把对面铲起之后才能有效掀翻。

同时,75%填充的举升臂已经很敦实了,用手根本掰不动,下一版的时候可以考虑减重。

 总之就是,到处都有问题。等下一版改版。rmb--。

你可能感兴趣的:(造物记,机器人)