程序员小哥为赢过老婆打造自动瞄准弓,闭眼也能百发百中
丰色 梦晨 发自 凹非寺
量子位 报道 | 公众号 QbitAI
油管上一位小哥最近有个烦恼:老婆射箭技术太好,我很菜又想赢怎么办?
苦练6个月、6年?No No No,不如花时间做一个自动瞄准的弓箭,一劳永逸!
这就是这位DIY达人的思考方式该死的胜负欲。
不得不说,小哥花了6周还真做出来了,最终这把弓箭就像狗见了肉猫见了耗子兔子见了萝卜直奔目标。
不看都能射中:
换个苹果,没问题:
运动的靶子也能弹无虚发:
小哥一把视频传到YouTube上,就引来了数百万网友的围观,“Brilliant”、Incredible”、“Awesome”满天飞,膜拜之声不绝于耳。
当然,为了赢老婆,小哥也不是没想过直接买一把自动瞄准的弓箭作弊,可惜网上没有卖的。
作为一名硬核工程师+程序员,完全不能允许2021年还有这种事情,必须自己做!
零件电路算法全自制
首先买一把轻型的弓,毕竟还要往上加很多零件,太重了就举不动了。
自动瞄准的思路小哥已经想好了:
先来一个自动瞄准装置负责移动弓,再来一个自动释放装置,在系统判定的时机自动放箭。
瞄准用的视觉系统由8个高速摄像头组成,每秒钟可以更新50次的那种。
除了弓箭和摄像头是买来的,其他零件都是自己设计、自己造出来的,电路是自己焊的,连瞄准的算法也是自己用Python写的。
真是全能啊。
都做好后,上下、左右方向都能自动调整,发射时机也不用人操心。
终于大功告成,上靶测试一下。
呃…准不准先不说,因为弓自己移动到合适位置的时机无法预料,猝不及防地自动发射让拉弓的手总打到自己脸。
小哥后续解释道其实把弓拉满就可以避免这个问题,但在测试期间为了避免射出去的箭力道太大误伤到房间里其他物品,只好选择拉到半满牺牲一下自己了。
再来看看准头。
有点偏,而且每次都是往左上偏。
这种情况虽然有简单的办法解决:人为加一个修正,每次都往右下一点瞄。
小哥多年的开发经验告诉他,这样做会为将来更多Bug埋下伏笔。
不过也管不了这么多了,先临时加上这个“非常蠢的修正”,把老婆叫来比一场吧。
结果是……0:3完败。
他不甘心,一切都正常只是箭有点偏,那一定是代码的问题。
再加上还要驯服移动靶子,与其修改代码不如全删了重写,于是小哥又Coding了一周。
好了,再试试。
拉好弓,“咳咳,老婆扔靶子”:
小哥按下启动按钮,剩下的就交给跟踪系统了:
系统每300毫秒检查一下靶子运动的抛物线轨迹传给计算机,然后通过一个“乏味”的小计算来确定弓的移动位置,同时考虑到箭头到达目标的时间以及箭的弯曲路径。
随着数据的更新,弓不停的移动,终于它瞄准时机,一箭发射:
完美错过……
代码还是有问题,改!
说好了只需一分钟修复,小哥花了一个小时,老婆表示懒得等了。
没人给他发靶子了,不过这也难不住他:再造一个自动投靶器呗。
据小哥后来回忆,这个投靶器在整个6周的开发过程中至少投了上千次靶子。
好了好了再试!
emmm……不是发太早就是发太晚、甚至连静态靶子都射不中了……
Bug Bug全是Bug连投靶器也有Bug。再次修理了一番之后,还是差一点点????。
小哥一番检查确定机器和自动瞄准系统都没有问题,到底哪不对?他打算换个思路。
除了科技还有氪金
小哥通过慢镜头回放箭的飞行过程发现,这箭它咋不是笔直射出去的呢?
原来不是自动瞄准系统出了问题,而是他买的这把入门级反曲弓不行。
根据反曲弓的原理,用力拉弦时箭身也会受到外力发生轻微弯曲形变,松手发射之后箭身受力取消,会在弹性恢复力的作用下有恢复原状的趋势。
这股力又会让箭身向反方向弯曲,同时改变箭的飞行方向。反方向弯曲到了一定程度又会再次回弹,又改变飞行方向。
小哥参考另一个油管频道SmartEveryDay的视频搞明白了这个问题。
在这样的反复循环中,箭就不是笔直的射向目标,而是不断摇摆着前进。
在专业射箭运动中,箭矢的抗弯曲度程度称为“挠度(Spine)”,挠度也影响着箭飞行时摇摆的程度,不同磅数的弓要搭配不同挠度的箭才容易射中目标。
小哥觉得虽然增强一下算法,把挠度也考虑进去就能解决这个问题,但这不符合他野生钢铁侠的风格呀。
毕竟钢铁侠除了懂技术还有钱。
小哥决定氪金!买一把能把箭射直的复合弓。
把瞄准装置挪到复合弓上后,最开始担心的那个问题还真出现了:整套系统太重了,举不动。
不过这也难不倒他,小哥又给自己搞了一套装甲,用整个上半身的力量支撑弓的重量。
这下整套系统可以说从自动瞄准弓进化成了瞄准机器人,留给人的任务就只有拉弓了。
再找老婆比赛!
为了赢得更稳,小哥还调整到了精准模式,等瞄准装置完全停止运动再发射。
这一回3:0完胜。
不过小哥还不过瘾,再次挑战移动靶,成功!
再来更难的挑战,能不能射中乐高小人头上顶着的超小“苹果”。
有多小呢?直径还不如箭杆大。
从结果来看虽然能射中,就是乐高小人消耗极快。
下一步挑战更远距离
这位小哥名叫Shane Wighton,曾在美国一家3D打印机公司(Formlabs)做了八年工程师,拥有机械工程学士学位和计算机科学硕士学位。
毕业学校虽不怎么有名(北卡罗来纳大学夏洛特分校),但从四岁起就开始在老爸的带领下捣鼓塑料模型焊接了。
才华横溢、热爱制作的他已经从公司辞职,现在似乎在全职做YouTuber。
他的频道自从去年疫情爆发期间推出以来,不到一年半的时间总订阅人数已超300万。
应该有不少人看过他的作品吧。
就比如这个自动理发器:
还有这种百发百中的篮筐和台球杆(似乎小哥对自动瞄准这个事有些执念):
最后回到自动弓箭,虽然Shane觉得现在效果已经够酷了,但他想要的是能和真正的射箭高手同台竞技。
接下来他要挑战在45米距离射中乐高小人头上的苹果。
因为距离会把微小的偏差放大,要达成这个目标就需要开发全新的自动瞄准弓2代。
而改进方法在他脑袋里已经设计好了。
- END -
本文为转载分享&推荐阅读,若侵权请联系后台删除
-------------------------------------
长按识别下方二维码,并关注公众号1.回复“PY”领取1GB Python数据分析资料2.回复“BG”领取3GB 名企数据分析报告
程序员小哥为赢过老婆打造自动瞄准弓,闭眼也能百发百中相关推荐
- 拒收苹果超10万元赏金!程序员小哥找出iCloud账户漏洞后,发文直指苹果不够公开透明...
明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 好不容易找出iCloud账户漏洞,但他竟然拒收苹果1.8万美元奖金! 最近,这件事在Hacker News上引起大批网友围观. 本来程序员找 ...
- 看程序员小哥如何机智应对电信诈骗
不知道大家,有没有收到诈骗短信的经历哈~ 拒不完全统计,自娜姐有手机以来,累计中奖63次,奖金共计1260万元(人民币),另有苹果手机39部,电脑9台,轿车17辆 ,收到法院传票38张,被大学录取27 ...
- 程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬
在如今的职场上,很多人会以工资的高低来评判一个人混的好不好,职场上有这样一个职业,虽然说他们的工资拿的比较高,但是很多人对这个职业并不是很看好,那就是程序员.大家认为他们能赚到这么多的钱,都是透支了自 ...
- URL 地址栏能玩出什么新花样?这位歪果程序员小哥给你开开脑洞!
前言 在现在一些互联网营销号的传播素材中,程序员往往会被塑造成一个邋遢.木讷.秃头.低情商的形象,以借此博得普通群众的眼球,吸引他人注意力. 前阵子,暴走漫画发布的一个视频<创造1024> ...
- 程序员口中的demo是什么意思_URL 地址栏能玩出什么新花样?这位歪果程序员小哥给你开开脑洞!...
前言 在现在一些互联网营销号的传播素材中,程序员往往会被塑造成一个邋遢.木讷.秃头.低情商的形象,以借此博得普通群众的眼球,吸引他人注意力. 前阵子,暴走漫画发布的一个视频<创造1024> ...
- GitHub火热!程序员小哥不得不知的所有定律法则(附项目链接)
来源:机器之心 本文约3000字,建议阅读5分钟. 本文介绍了最近 GitHub 上很火的"定律合集"项目. 当谈到开发问题时,人们总会谈论各种定律.但对于大多数人来说,总有一些是 ...
- GitHub最热!程序员小哥不得不知的所有定律法则(附项目链接)
来源:机器之心 本文约3000字,建议阅读5分钟. 本文介绍了最近 GitHub 上很火的"定律合集"项目. 当谈到开发问题时,人们总会谈论各种定律.但对于大多数人来说,总有一些是 ...
- 云话题 | 你女朋友在买买买时,程序员小哥在干嘛?
简介:年货节来了,你女朋友下单了吗?观看直播已经成为人们日常上网的习惯之一,直播购物作为其中的重要项目,销售额屡创新高.最近,天猫年货节刚刚开幕,淘宝直播中就涌入了不少的用户前来抢购,毕竟足不出户就可 ...
- 你女朋友在买买买时,程序员小哥在干嘛?
年货节来了,你女朋友下单了吗? 观看直播已经成为人们日常上网的习惯之一,直播购物作为其中的重要项目,销售额屡创新高.最近,天猫年货节刚刚开幕,淘宝直播中就涌入了不少的用户前来抢购,毕竟足不出户就可以买 ...
最新文章
- CodeIgniter 的购物车类只能添加10个商品的解决办法
- 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行
- [Silverlight入门系列]使用MVVM模式(3):Model的INotifyPropertyChanged接口实现
- java c s聊天程序_Java建立C/S 模式聊天室服务器和客户端
- wimbuilder2教程_Wimbuilder WIN10XPE制作所需的工程文件
- oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...
- VB中用API实现文件拖放
- VC++ EasyPR车牌识别
- win10计算机磁盘图标,主编教你win10系统无法正常显示硬盘图标的方法
- I盘显示无法访问数据错误(循环冗余检查),里面的资料怎么恢复
- WebDriverException: Message: unknown error: cannot find Chrome binary(ChromeDriver及谷歌官网下载地址)
- 小米5查看设备号信息及验证type-c数据线
- mysql按1-12月查询统计数据
- 自学方法测试【进行中】
- 老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记18...
- Selenium学习(七) selenium IDE命令之 store系列详解
- 如何做数据分析,数据分析流程是什么?
- [ZZ]测试阶段及类型(Testing Phases Types)
- 随笔2:开发任务的分解过程
- ros 机械臂复位_限位开关在机械手控制S7-300 PLC项目中的电气设计与程序编制
热门文章
- 2020年自考计算机应用基础都考什么题型,2019年10月自考计算机应用基础试题和答案...
- 日本东京的穷人是怎样的生活水平?
- 【计算机毕业设计】009基于推荐算法的电影推荐系统
- WOJ-204 继续找相同
- 笑傲江湖:完美解决205:您所选择的线路不存在问题
- android contentprovider 插件化之一
- 计算机不少于五百字知识探索,计算机基础知识练习题探索.doc
- asp.net企业微信开发之同步通讯录
- 计算机在教学应用英文视频,计算机视频截取技术在乡村中学英语教学中的运用...
- java台球击球角度_台球角度瞄准方法