[博客翻译]我设计了一个在角落里平衡的立方体


原文地址:https://willempennings.nl/balancing-cube/

代码地址:https://icodebase.cn/openoker/balancing-cube.git

这个立方体设法在一个角落上平衡自己,并且可以同时以受控的方式绕其轴旋转。它使用巧妙的控件和一组三个反作用轮来做到这一点。

这个设备的最初想法来自苏黎世联邦理工学院的研究人员,他们在这个视频中展示了他们的 “Cubli”。在后来的几年中,它的设计在某些方面得到了改进。值得注意的是,Bobrow等人 (圣保罗大学) 引入了改进的控制概念,将所需的imu (惯性测量单元) 的数量减少到只有一个而不是六个。

我决定挑战自己建造一个。尽管这个想法并不新鲜,但以前的作品在很大程度上是闭源的。我计划改变这一点。这意味着我不得不从头开始逆向工程和绘制一切。我的工作结果是完全开源的 (GitHub)。

cube-19-2048x1362.jpg

你可能会想: 又一个没用的机器?!当我发布我的M & Ms分拣机时,我收到了很多类似的评论。确实,它没有实用价值,但是类似的应用,例如基于颜色的水果,蔬菜和坚果的分类。对于这个立方体,情况是相似的: 虽然这主要是一个很好的学习经验和研究项目,但反应轮经常在卫星 (如詹姆斯·韦伯望远镜) 中用于姿态控制目的。

机械设计

这个立方体的机械设计大部分与原始的Cubli相同,但有一些细微的差异。主结构由八个 “基石” 和六个面板组成。这些面板中的三个具有支撑马达和反作用轮组件的附加特征。所有零件都是在 (con)Fusion 360中绘制的。我的学生时代已经结束,所以我不得不告别Siemens NX。无论如何,后者在DIY社区中并不常用 (如果有的话?),因此我现在可以更轻松地与他人分享我的设计。

大多数结构部件由不锈钢制成,以获得出色的强度。面板由铝制成以节省重量。这些不需要由钢制成,因为无论如何,当由铝制成时,组装的结构将足够坚硬。

本项目所有金属零件均由PCBWay制造。我以前使用过他们的PCB原型制作服务,并且对他们的CNC功能感兴趣。这些零件的部分费用由PCBWay赞助。订购过程很简单,我喜欢在上传零件并指定材料类型后直接自动计算报价。我对零件及其质量感到满意: 一个小生产问题很快得到解决,所有零件都没有问题。下图: 自己判断。

我对电机和飞轮组件的设计很满意。我一直在寻找一种坚固的设计-毕竟,车轮可以达到每分钟6000发的速度-同时还可以保持轻巧。尽管我是一名受过教育的机械工程师,但建筑原理并不是我的主要优势,但毕竟这就是这些项目的原因: 学习!我终于想出了以下。

使用三个沉头螺钉将电机连接到不锈钢桥。桥最终连接到铝面板之一。

一个小轮毂安装在电机轴上,并使用三个固定螺钉固定。该轮毂是关键的: 如果中心孔相对于平坦的三角形面不垂直,则车轮将不与电机轴对准,从而引起振动和磨损。

使用三个沉头螺钉将反作用轮安装到轮毂上。此步骤需要进行一些反复试验,以纠正轮毂和车轮中的缺陷,这些缺陷可能会导致我前面提到的未对准。我通过在轮毂和车轮的水平接触面之间放置小纸片来解决这些问题,这提供了令人满意的结果。毕竟,这些部分并不经常被拆开。

将一个小的径向滚珠轴承插入其中一个面板中,并使用氰基丙烯酸酯 (“super”) 胶固定。该滚珠轴承将支撑电机轴的一端。轴的另一端也由电机自身内的轴承支撑。

最后,将电机轴插入轴承中,并使用四个螺栓将桥连接到面板。这个过程再重复两次。

这导致了半个立方体。其余面板不需要任何特殊的组装步骤,可以直接组装。注意其中一个电机相对于它所连接的桥的方向是如何不同的?这是故意的: 它简化了以后的布线工作。

结果是坚固但相对轻质的结构。铝面板本身相对较弱,但组装在一起时不会移动。

机电设计

对于电机和电机控制器,其他平衡块使用 “EC flat” 系列的Maxon电机。虽然有可能找到更便宜的替代品,但电机及其控制器是关键部件,我不想在它们上面略过。立方体将通过向电机施加扭矩来平衡。许多直流电机甚至没有指定转矩常数 (定义转矩和电流之间的关系) 的数据表,许多无刷电机控制器 (如esc) 仅提供速度控制,而不提供电流控制。两者对于实现这个项目都是必不可少的,因此高质量组件的选择在这里是显而易见的。

我选择了60 w电机和兼容的四象限电机控制器,可以提供高达6 a的电流。在24 v时,这对应于几乎150 W。虽然这远远超出了电动机的额定功率,但是短暂地使电动机过载是没有问题的。此外,控制器具有内置I2t算法,如果估计绕组温度变得太高,则该算法限制到电机的电流。无论如何,立方体在正常操作中不太可能达到这些极限,因为在平衡时电流通常非常低。

escon.png

Escon电机控制器附带的软件非常棒。有电机调试和调整工具以及一个漂亮的仪表板,显示电机的状态及其在运行期间的输入/输出 (如上面的屏幕截图所示)。

motherboard-3d.png

对于电池,我选择了6S1P锂聚合物电池。电机的额定电压为24 V,因此六电池LiPo电池 (标称电压22.2 V) 非常适合。电池的容量为1300 mAh (29 Wh),通常足以使立方体运行至少一个小时。

cube-24-2048x1362.jpg

主板是定制设计,集成了三个电机控制器,IMU (隐藏),ESP32-S3开发板以及一些支持组件,例如保护电路和稳压器。该板还期望通过为RC伺服电机提供输出来为立方体添加机械制动器。机械制动器将使立方体自己跳到平衡位置。我还没有完成制动器设计的开发。

组装电路板很有趣。我开始使用焊膏并放置表面贴装部件。在将其在小型烤面包机烤箱中回流后 (此处有关其工作原理的更多详细信息),我用手焊接了所有通孔部件。

后来,在集成和测试各种组件的过程中,我发现我犯了一些小的布线错误,我使用bodge wire着迅速纠正了这些错误。事实证明,电机控制器上只有一个数字输入支持PWM,我将PWM信号路由到另一个 (不支持) 输入。

我还设计了一块板来安装电池。它要简单得多: 它有两个XT60连接器和两个开关 (由于电流高达18 A而并联连接) 来打开和关闭立方体。

控制器设计和调整

我实际上并没有自己设计控制器cube,而是将Fabio Bobrow的工作从Arm Mbed移植到Arduino。我也使用ESP32而不是STM32核。然而,重写代码是一个很好的工作。此外,由于我使用不同的IMU (TDK Invensense的ICM20948),我不得不重写相应的 “驱动程序”。我仍然花了相当长的时间研究这个控制器的设计,并将花几句话来强调一些关于它的好东西。

主姿态控制器的设计是最有趣的。也许最好将其解释为两个矛盾目标之间的矛盾。第一个目标是保持立方体在其所需的方向,即,在其不稳定的平衡位置。然而,第二个目标是使车轮速度保持最小。不考虑第二个目标可能会导致车轮速度失控,使电机饱和,从而有效地使其无法在立方体上施加扭矩。

这两个目标是冲突的: 如果保持车轮速度接近零的 “愿望” 太大,立方体就会倒下。就像之前提到的,如果它太弱,车轮可能会失去控制。因此,诀窍是找到导致良好的平衡性能和干扰抑制的增益,同时保持车轮速度稍微低。

tomato-still.png

控制器中还有另一种优雅的机制来处理恒定的错误。什么是持续错误?例如,由于立方体的重量分布的缺陷,在配置的平衡位置和实际平衡之间可能存在小的差异。在PID (比例-积分-微分) 控制器中,积分部分处理这些类型的误差。该控制器使用车轮的位置 (以度为单位) 作为积分!在我看来,这实际上是可视化整体控制器的一种非常直观的方式。当我修改立方体的重量分布时 (在视频中: 通过在上面放一个西红柿),你可以看到反应轮的速度增加,然后降低: 它们正在移动到一个新的位置,以补偿增加的误差!

到目前为止,调试和调整控制器是与代码相关的最大工作。像任何有经验的控制工程师一样,我花了几天时间翻转各种信号的迹象,然后才把它们弄对。然后,我必须为控制器找到正确的增益。Bobrow的论文中描述的调整方法对我不起作用,所以我求助于手动调整增益。请注意,我的立方体使用不同的车轮相比,Bobrow的立方体,所以重用的增益是不可能的。使用迭代过程,我最终获得了导致稳定性能的增益。

cube-21-2048x1362.jpg

就这样!一个平衡立方体。据我所知,这是世界上唯一一个完全开源的立方体,它实现了类似于Cubli的平衡性能。我希望其他人现在也会受到启发来构建这个很酷的设备。

以下是一些指向类似立方体的链接,这些立方体至少有一些记录 (不仅仅是视频或照片):

下一步: 跳起来

我计划在反作用轮上增加机械制动器。这些将使车轮能够快速制动,从而产生比电动机所能提供的扭矩大得多的扭矩。这使得能够进行跳跃式操纵,这又使得立方体能够自行到达其平衡位置。据我所知,这个功能目前是原始Cubli独有的。我不特别喜欢Cubli出于各种原因使用的制动机制,因此我将采用不同的方法。我将在未来的帖子中分享结果!

您可以在此项目的GitHub存储库中找到与此项目相关的所有设计,配置和代码文件。如果您对项目有疑问或想要构建自己的项目,请随时联系。在我的情况下,BOM接近2500欧元,所以要为此做好准备。