20年前,电脑还是大背锅,“休闲游戏”属于Windows。卡牌、扫雷、空当接龙……一波回忆杀。近日,来自肯尼索州立大学(KSU)的四兄弟利用开源电子原型平台Arduino,从头重现了另一款Windows经典游戏——3D弹球(3DPinball)。从3D建模,到编码,再到最后的动手搭建,他们用最专业的手段向童年致敬。正如其中一位兄弟所说:建造这样一个项目是我儿时的梦想。不仅如此,他们还制作了整个过程的教程——只要9个步骤,你也可以打造一个属于自己的3D弹球。为了让《3D弹珠台》成为现实,我们先来回顾一下这款经典的Windows游戏。一开始球会从右下角的管道中弹出,然后在桌面上自由滚动,遇到不同的障碍物会获得不同的分数。只要确保它不会掉出底部中间的缝隙即可。(满满的童年回忆……)那么,KSU兄弟打造的“立体弹球”到底长什么样呢?模型长这样:实物长这样:桌面布局可以说是完美再现了小游戏中的场景——从管道的位置到障碍物的布局,各种细节都“栩栩如生”。嗯,有内味儿。用手玩究竟是一种怎样的体验?让我们看看近景。几乎一样!不过,这款机器还有更强大的功能——全自动、多球。看完是不是也想拥有一个呢?别着急,KSU的4位师兄写了超详细的教程,教你打造逼真版“3D弹球”。9个步骤,一步步教你打造逼真版“3D弹球”。顶部有一个USB摄像头,在自动运行模式下会持续监控弹球的位置,并根据球的位置指挥击球者。使用的工具和材料清单:CNC机器或激光切割机Dremel和砂纸烙铁3D打印机Linux计算机USB摄像头大量22/24AWG电线大量热缩电线3/4"胶合板(波罗的海桦木)转换器弹球组件(在线购买))左右脚蹼组件2个翻转击球手2个翻转按钮2个叶片开关保险杠组件2个弹弓组件至少6个星柱弹弓至少2个2"橡胶肋发射器机构44号刺刀灯障碍物投掷器翻转开关第1步:最有可能纸面设计和低成本试错设计的问题可能是游戏机本身的尺寸限制和内部结构的布置。一些预期的弹球击球方式在实验中发现无法实现,因此需要先画出设计草图,然后在此基础上继续改进。在最终确定游戏场地的设计之前,团队经历了多次设计修改和优化。对于每一次改进,都会在便宜的胶合板上制作模型进行测试,并逐步接近最终设计。一些经验教训:模块化设计,不同的功能部件可以随意放置和移除。不要自己设计滑轮,借鉴成熟的弹球类游戏的场地设计,可以少走很多弯路。第2步:在SolidWorks中设计和建模弹球机的设计包括两个主要的子部分,运动场和看台。球场为标准尺寸-20.25x42in2,由3/4"厚的波罗的海桦木胶合板制成。运动场由第二层组成,第二层由2英寸直径的丙烯酸管和3D打印适配器组成。第二层有两个主要功能。首先,第二层作为媒介,将球从上场直接输送到左翼内侧。球落点的可预测性使第二层成为一个独特的通道,便于多球运动,这是它的第二大功能。当斜坡和左侧内线的翻转开关被背靠背触发时,伺服系统释放两个球,滚到第二层上方的两个管子之一中与从坡道发射的球。因此,在多球模式下,这些管子会将球送入第二层,进入左侧的内管。选择3/4"胶合板厚度为项目提供足够的刚度和允许更大的紧固件承重接头处的接合。之所以选择波罗的海桦木作为材料,是因为它质量上乘,杂质少,属于硬木,不易损坏,易于激光雕刻,一般较重的木结构首选。支架是运动场支架和家用定制电子设备。电子设备直接连接到底板上,延伸部分延伸到游戏板的底部。通过观察窗可以看到支架两侧的电子设备。此外,支架可以通过侧面的可拆卸销进行间距调整。游戏桌的倾斜角度范围为0-8度,每两度设置一个调节档位。更高的球道坡度允许更快节奏和更困难的比赛。第三步:使用数控机床或激光雕刻制作主体。虽然可以手动裁剪出游戏桌的整体结构,但误差较大,后续安装连接不方便,浪费材料。这些美国佬用大型5轴CNC机床进行铣削,最后用木楔进行细致的调整。第四步:电子和电源选择大多数弹球机的“高压”在35V-48V范围内,具体要看你买的电磁铁是什么牌子的,需要选择能支持这种磁铁的电源线圈。其次,您需要考虑“低压”电源,用于为灯或其他较小的电子元件供电。我们选择的低电压大约是6.3v,但这并不是一成不变的。这取决于您购买的是什么LED,以及您是否使用此电源为其他电器供电。一般6.3V应该可以满足需要。如果没有低压电源,还需要一个降压转换器,将高压(如48V)降到小元件的额定电压。此外,所用元件的电阻决定了电流的大小。因此,电源的总功率视情况而定。如果您的组件没有达到正确的功耗额定值,这些组件会在很短的时间内消耗大量电流。在这种情况下,单个撞针的内部线圈可能会产生3-4安培的电流,两者加起来约为8安培,会导致元器件烧毁。您应该计算“最坏情况”的电流大小,然后在给定合理安全裕度的情况下选择相应的电源。第五步:建立I/O接口电路开关量输入部分:开关量输入板负责将游戏场的所有数值读取到Arduino。这个单电路非常简单,但需要放大许多输入。由于Arduino有一个内部上拉电阻,您可以按上图所示接线。这里最大的问题是确保每个开关都有连接器,以防出于某种原因单独拔出一个开关进行调试。该项目使用标准引脚连接,可以轻松地将所有内容立即插入Arduino。灯控部分:该电路由一个BJT三极管(2n222222)、几个电阻和LED组成。晶体管充当可以打开或关闭的数字“开关”,将其连接到上述6.3v电源,您将拥有一个光源和可单独寻址的LED。不能将LED直接连接到Arduino的原因是Arduino无法提供多个LED所需的额定电流。正确的做法是使用Arduino作为数字开关,控制BJT。这允许将LED的数量扩大到我们需要的数量。螺线管控制部分:总体思路与LED板相同:从Arduino发送信号,可以打开/关闭电磁铁(翻转、弹弓、弹出式保险杠)中的任何一个。因为这些组件比LED更强大,所以需要一些更大的晶体管:MOSFET。电路元件清单:1k电阻10k电阻330电阻IRF44VMOSFET1N4004二极管47微法电容电磁铁需要接48V才能启动。这带来了一个问题,因为电感器不能瞬时改变电流。工作时,线圈会通过大电流,关断时,如果没有地方分散电流,可能会损坏元器件,非常危险。这里制作RC缓冲电路和二极管来解决这个问题。使它们覆盖尽可能多的电磁控制并联支路。前锋和其他线圈的电路略有不同。这是因为,在弹球游戏中,玩家有时会按住按钮以使击球手长时间处于激活状态。如果要用同一个电源线圈,很快就会烧坏。该电路中的第二个线圈允许快速翻转。翻转完成后,机械装置会打开EOS开关,迫使电流通过两个线圈。第6步:组装所有组件根据运动场的大小,焊接时间可长可短。这个项目花了大约两天的时间来焊接并将所有东西都安装到位。最后有5种类型的连接器插入电路板:大功率螺线管电源到螺线管专用开关的连接以及LED连接到开关和一些辅助电源(5V、48V、ETC。)。所有这些都插入一个包含所有电路的3D打印连接板。当需要打开盖子检测故障时,只需拔下5个大连接器并提起整个装置即可。第七步:安装Arduino软件驱动在本机上,需要在连接Arduino的电脑上安装如下依赖:ROSrosserial_arduinoROSpackageOpenCV(c++)TkinterApscheduler整个软件系统依赖ROS架构作为后端传回消息来回。四个主要节点异步通信以控制弹球机在自治模式下运行时的流量。这些节点是Input_Output.ino、track_metal.cpp、run_low_level.py和GUI.py。不在自治模式下运行时,可以省略track_metal.cpp节点。本项目的Github主页上发布了源码和详细解释。第八步:更改Pin,上传代码到Arduino,更新USB摄像头。如果您自己制作弹球机并使用本项目的源码,需要注意您的Arduino的Pin需要更新两个地方:Arduino/Input_Ouptut/Input_Ouptut.io和src/Classes/playfield。py。还需要调整脚本以删除对开关和LED的调用。playfield.py会记录有多少个item,你需要手动设置每个item的Pin。然后可以将代码上传到Arduino。这一步必须安装上一步提到的rosserial_arduino,并正确设置ArduinoIDE与ROS绑定??。最后,您所要做的就是更新您自己在代码中使用的相机名称。只需在src/Track/track_metal.cpp中找到“std:::stringcamera_metal.cpp”行:“std:::stringcamera_string=”/dev/v4l/by-id/usb-046d_Logitech_Webcam_C930e_6D6BFE5E-video-index0“;”将字符串更新为相机的名称,可能是“/dev/v4l/by-id/”所有步骤完成后,重新编译即可。第9步:开始玩吧!如果一切正常,则进入“Startup”目录,输入“roslaunchautomatic_pinball_c.report”这行代码启动弹球机相关的所有节点,包括GUI节点和跟踪球位置的节点。另外,你可以使用'roslaunchmanual_pinball.report'不运行任何自主部分,只体验手动模式。KSU毕业班的四位“造梦人”那么,将童年回忆变为现实的四位“造梦人”是谁呢?今年毕业于KSU的KevinKamperman目前在佐治亚理工学院实习,从事无人机相关研究。春季毕业时,凯文·坎珀曼还被堪萨斯州立大学评为今年的“荣誉毕业生”。今年同样毕业于堪萨斯州立大学的CodyMeier,主修机电一体化、机器人和自动化工程。OmarSalazar和之前的师兄同专业,同样主修机电一体化、机器人和自动化工程。他在接受视频采访时表示,该项目增强了他的团队合作能力。最后一个叫TylerGragg的家伙是“机器人制造”的粉丝。在他的个人介绍中,他写了《Let'sMakeRobots》,并参与了很多机器人项目。泰勒还入选了学校的“荣誉榜”。嗯,有四个很不错的“造梦人”。那些年,经典的Windows游戏纸牌、扫雷、空当接龙……这些Windows经典游戏至今仍拥有众多的粉丝。他们现在都在哪里?微软现在将这些经典游戏都放在了WindowsStore中,但《3DPinball》就没那么幸运了。事实上,从Win7开始,微软团队就将原有软件全部移植到了64位系统上。然而,《3D弹球》却出现了严重的错误。为了节省时间,微软直接放弃了这款游戏。但四兄弟的这个项目,让这部经典获得了新生。这个星球上有很多有趣的人。真人传送门《3DPinball》项目地址:https://www.instructables.com/id/Arduino-Pinball-Machine-That-Plays-Itself/Github源码地址:https://github.com/Tdoe4321/AutoPinball通用弹球游戏设计制作教程:https://howtobuildapinballmachine.wordpress.com
