国外小哥打造“百发百中”自动瞄准弓箭,闭上眼睛也能射中火柴人前线

文章正文
发布时间:2021-08-17 14:46

射箭是一项“再简单不过”的运动,火柴人前线前提是不求弯弓射大雕,但求箭能射在靶上就行。

但是如果想做到“一发命中、百步穿杨”那就非常有难度了,不经过长期的训练是万万不行的。

那难道就没有一种智能的弓箭吗?那种只要你拉满弓,无需认真的瞄准,它就能自己射中目标的弓箭箭?

还别说,今天它真就有了,直接上图!

请注意哈,在上图中这位小哥把弓拉开之后,箭是自己发射出去的,而且是连环命中!

这就是这两天在 Youtube 上十分火爆的一个堪称“百发百中”的射箭视频,这位油管博主是一位硬核程序员,相信很多人并不陌生,他叫 Shane Wighton ,之前他自制的一个“理发机器人”、“百发百中投篮”、“百发百中台球杆”曾在 YouTube 上火了很多次。

这位硬核的博主目前在 3D 打印技术开发商和制造商 Formlabs 公司担任首席工程师。他之前就读于北卡罗来纳大学夏洛特分校,拥有机械工程学士学位和计算机科学硕士学位。

本次事情的起因是这样的,Shane Wighton 的妻子很擅长射箭,海上保卫战中文版Shane 却在这方面“笨手笨脚”,Shane 比之不过,于是他想“作弊”来买一款能够自动射箭的弓,可惜网上都没有卖的,无奈之下,他只好决定亲自动手打造一款出来。

因为 Shane Wighto 虽然不擅长射箭等运动技能,但是他很有极客精神,很擅长动手做工程。

Shane Wighto 在穿戴这款弓箭机器人装备之后,就没有再费劲瞄准了,几乎拥有了超能力,他射出去的箭就像狗一样能闻到目标的味道,自主击中目标。

可以说穿上这件衣服之后,比鹰眼还鹰眼!

弓箭机器人原理 

这款弓箭机器人装备大概需要瞄准和发射两个过程。

我们先来看一下比较简单的发射过程吧。

发射原理大概是这样:一共有两个小机器人,一个在持弓手和弓之间,用来移动弓的位置和角度;一个在拉弓手和弦之间,用来释放弦并发射弓。只要前面的瞄准工作做好之后,仓鼠特技飞天就会有个信号告诉伺服电机来实现发射工作。

看起来很简单是吧?

别急,还是来看看下面比较难的瞄准工作吧,想要打造这样的自动瞄准系统,首先,需要做出来一个弓瞄准机器。

像下面这样,只要握住把手后,弓就能在一定范围内自动地调整相应的位置和角度。

但射箭和打一束激光可不一样。首先箭的飞行轨迹不是一条直线,而是抛物线。而这条抛物线的弯曲形状,也取决于发射的速度。速度越快,这条抛物线越接近于直线,反之越接近于抛物线。

另外的困难还是在于精确地计算和掌控时间,当抛出一个飞靶时,也许射出的箭离集中靶心只差了 50 毫秒的时间,而 50 毫秒仅相当于眨眼瞬间的 1/3,所以必须要精确地计算好距离、发射角度、发射时间来做提前射击。

没错,你会说只需利用小学三年级学到的数学物理知识,疯狂的老头加强版不就足以能建模发射出箭的抛物线方程了嘛。

看起来核心思想非常简单嘛,但是,实际的设计和制造却是一个很大的挑战。

比如弓具体在调整位置和方向时用到了 Shane 亲自打造的“鹰眼”系统。

这套“鹰眼”系统一共利用了八个摄像头,来找到一个中心,告诉弓相对于目标的位置以及其他很多坐标。

可以看到上图有一个小反光球,所有 8 个摄像机都在同一时间拍摄到它,这样就能精确地来计算出小球的位置,这整个过程非常的快,一秒钟能拍 50 帧。

这些小球叫做跟踪球,被安装在弓的前方和拉弓手的手持部件上。

小跟踪球不止一个,所有的摄像机都会在同一时间拍摄到这些小跟踪球,并给出 50 个关于每个球的位置更新。

这样,系统就能分析出箭应该指向的角度,以及拉弓的力度,进而计算出箭射出后的抛物线。

Shane 声称自己写了一个非常“简单”的程序来计算这些数据,由于代码过于“简单”,机器猫铁人兵团Shane 似乎羞于对此做详细介绍。

Shane 试了试效果,按下系统启动键,开始瞄准,发射!

结果非常棒!

额,会打到自己的脸。

而且,箭也没法射中目标,每次都射到偏左上的位置。

怎么办?

既然每次都偏左上,那就往右下调偏差就行啦!

没有什么事情,是一行代码搞不定的。

接下来,就是见证奇迹的时刻了。

Shane 正式向妻子发起了挑战。

比赛规则是:Shane 和他的妻子比赛三局,每人各射击一箭,更准的人得一分。

结果是,Shane 一败涂地。

Shane 不服气,觉得还有改进的空间。

可是问题出在哪里呢?

没错,箭还是有些偏。

他觉得,还是代码的问题。

在经过一周的非常无聊的软件开发和调试之后,全新的系统出来了。

这一次,他选择了更难的任务,即以运动的靶子为目标。

弓已经拉好准备发射,按下按钮之后,计算机启动“鹰眼”跟踪系统,每 300 毫秒发送一次数据,更新所有物体的位置。

当计算机看到目标时,它会检查目标是否以抛物线运动,然后计算出它应该将箭指向何处,来射中目标,这其中会考虑箭移动到那里的时间,和箭的抛物线路径。

然后系统会开始调整弓的位置,随着跟踪数据的输入不断增加,弓会不断地进行调整,以适应手的抖动。

之后当系统认为瞄准到了正确位置的时候,就会开始调整箭的角度。

然后,只要按下按钮,箭就会发射出去。

咦?根本没有射中。

再继续改 bug 吧。

这时候,他的妻子已经不耐烦了,厌倦了他一遍又一遍地说只需要几分钟,结果却花费了几个小时来修改一个 bug。

怎么办?陪妻子散步去吗?

想多了。

没见过技术宅?

他制造了一个自动弹射器,把妻子晾在一边,然后尽情地自己玩耍。

在修改 bug 的过程中,他考虑了这些问题:为什么箭发射得太早?为什么箭发射得太晚?为什么靶子静止不动的时候没有击中目标?为什么会击偏?

尽管有这么多错误,但这只是时间问题。

现在,箭能击中静止不动的靶子了!

尽管还是不能击中运动目标,但到目前为止,我们已经非常接近最终的目标了。

箭确实可以依照设定的抛物线来飞行。

但是箭并没有足够漂亮的飞行轨迹,反而歪歪扭扭的。

这时 Shane 想到,他目前一直使用的都是反曲弓,这种弓有一个问题 —— 不能直接对着靶心射过去,得偏一点儿才行。(Shane 最初考虑使用这种弓也是因为它是最便宜的。)

当然,他也说道,这种错误可以通过算法来调整。

不过还有一种更加省事的方法 —— 花钱买更贵的复合弓。

这种复合弓射出的箭的轨迹非常笔直,他说道,这其实有点作弊嫌疑,但普通人用这把弓就能百发百中吗?哈哈,也不见得。何况,我们还有更花的玩法。

这种弓有一个缺点是非常的重。所以,他一怒之下做了一套“战斗衣”,借此用身体的力量来固定和支撑这把弓,好让自己能够轻松地操控。

鹰眼,完成!

是时候把气走的妻子哄回来了。

妻子惊呼,你这穿的是啥?钢铁侠?

少废话,战斗再次打响!

规则不变,还是看谁击中的准,谁赢。

这一次他减缓了速度,并开启了神枪手模式。

结果,三箭全中靶心!

而他的妻子一发未中!

3:0,游戏结束。

Shane 还说,他都完全没有集中精力。

接下来,在小苹果目标测试中,也完全没问题!

甚至都不用看目标。

再接下来,就是移动目标的射击了。

结果不出所料,一击中的!

在这个过程中,瞄准系统不仅识别出了弓箭的位置,还识别和预测到了目标的运动轨迹。

看看这些被箭射中的地方有多密集。

为了测试系统到底能有多准,Shane 拿出了心爱的乐高小人,并在它头上安装了一个“小苹果”,准备瞄准“小苹果”。

一开始不是很顺利,但最终,乐高小人被成功击中了。

“小苹果”不见了,是不是刚好被击中了呢?

慢镜头显示,击中的位置是小人的心脏。

我们再试一次。

啊哈!

当然,这个系统也还没达到十全十美的地步。

Shane 说道,下一次,他想挑战在 150 英尺(约 45 米)开外击中乐高小人头上的小苹果。

要知道,室内射箭比赛的距离一般才 18 米,而奥运射箭项目,不过 70 米。