日本小哥“自虐神器”一夜爆火:代码自取,后果自负
yuyutoo 2025-01-12 19:58 1 浏览 0 评论
鱼羊 丰色 发自 凹非寺
量子位 | 公众号 QbitAI
用游戏手柄控(wan)制(huai)面部表情,是一种怎样的体验?
按下LB键眨左眼,按下RB键眨右眼,还可以左右左右走一套连击。(画面为镜像)
是不是有点怪,再看一眼……
摇动右摇杆,小哥瞬间就掌握了歪嘴战神的绝技。
而通过左摇杆,对于普通人类而言难度颇高的单边挑眉表情,也能瞬间拿下。
但要注意尽量别一通乱按,否则……
这就是这几天爆火的一个开源项目,作者小哥handaru是一名来自日本的研究生,自称热衷于一些“没啥用的工作”。
而他这个最新“没啥用”作品一传上网,直接把网友们都给看呆了,推文点赞已经将近7万。
走过路过的网友纷纷表示,这一波是多啦A梦照进现实啊:
△多啦A梦表情控制器
甚至还有更加奇怪的想法诞生了……
反之,只要动动面部肌肉,就能玩游戏了……?
就是看上去有点疼……
嗯,小哥自己也说了,就是会很疼……
△“使用中会很痛”
原理很简单,关键得找准穴位
这么一个看上去有点“自虐”的系统,原理其实很简单,大家打眼一看就明白,就是靠电刺激。
我们都知道,肌肉在受到一定的电刺激后就会收缩。
具体来说就是,如果给的电压能使肌细胞初始去极化程度到达阈电位,进而产生动作电位的话,肌肉收缩。
动作电位的峰电位持续时间为2ms,最高可由-80mV上升到60mV。
而大多数肌肉在受到刺激时会以20ms的周期收缩一次。
这和伺服电机的信号周期非常相似,于是小哥就用它来供电,保证最后输出的电压为150mV。
(此时小哥也“一拍大腿”:有没有可能伺服电机就是按肌肉收缩规律来制作的呢?)。
不过伺服电机的控制电压,也就是给电路板的供电电压为5V,就需要设计电路图进行处理:
然后通过快速蚀刻印刷出来。
主要的控制器是一块Arduino Uno (Arduino最新版):用它一头连手柄,一头连我们的肌肉。
小哥一共做了10个触头,为了增加导电率,每个触头上的电极都用盐水浸泡过的纱布覆盖,然后直接粘贴到皮肤上。
用下面这样的网格基板+凝胶导电贴也可以实现,但小哥发现都没有直接让电极接触皮肤的效果好。
最后就是编写程序了,这里用Arduino的一个现成库Servo来控制伺服电机,记得把电机的ON时间设置为2ms就行。
Servo可以很方便地添加通道,后续还可以做更复杂的控制,更扭曲的表情(bushi )……
然后在将手柄连接到Arduino板的接口之前,用一个叫做ROSSerial的框架设定一下哪个键对应哪个触头,一切就全部搞定了。
完整代码可以参考文末链接。
这不是还挺简单的?学废了吗?
小哥提示道,大多数时候把它往皮肤上一贴,不一定会有预期效果——关键得找准电击穴位,这就得靠自己对着人体肌肉模型一一摸索了。
以及适配手柄除了小哥手里的这个罗技,Switch、PS4也可以,还包括键盘。
最后,依照同样的原理,他还整了个控制手指的活儿:
瞧这效果,理论上控制足够精准,一个小白也能成钢琴家了不是吗(手动狗头)?
网友:反向操作,开打游戏
前面也说到,handaru小哥这一波操作下来,评论区的思维一下子就展开了。
比如反向操作,用脸迎战老头环里的女武神……
或者这样的玩法也不是不行:
还有人提到,这玩意儿利好酒店业,以后服务人员们再也不怕练不出标准微笑 :)
当然也有不少正经讨论,比如评论区大家纷纷关心的一个话题是:
这种设备能不能造福面瘫患者?
实际上,在针对面瘫患者的现有治疗方案中,确实有电刺激治疗这一种。
主要是中医疗法中,依据神经肌肉解剖学的功能特点,运用电针给予特定肌肉电刺激,以恢复神经传导的灵敏性。
小哥的其他“无用”发明
handaru小哥在自己的简介里是这样介绍自己的:
主要是在做一些没啥用的工作。
不过看上去,这回网友们都觉得他的这个“自虐”项目还挺有应用前景的。
而在此之前,小哥确实也没少整活儿,比如这个能让你和植物对话的花盆:
用上这个盆,你的植物就能通过通讯软件告诉你它现在的状态。
甚至还会发脾气……
最后,在奉上项目传送门之前,还是要提醒一下,尽管小哥已经将代码开源出来,但是模仿有风险!模仿有风险!模仿有风险!
小哥也在项目中注明了:
代码自取,风险自负。
项目地址:
https://github.com/maHidaka/ros_face
参考链接:
[1]https://twitter.com/handaru20pF/status/1514964058541199360
[2]https://handaru.net/blog/2022/04/17/307/
[3]https://weibo.com/6092740159/LoGQl89zD
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
相关推荐
- 史上最全的浏览器兼容性问题和解决方案
-
微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...
-
- 平面设计基础知识_平面设计基础知识实验收获与总结
-
CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...
-
2025-02-21 16:01 yuyutoo
- 写作排版简单三步就行-工具篇_作文排版模板
-
和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...
- 写一个2048的游戏_2048小游戏功能实现
-
1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...
- 今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……
-
最近的天气暖和得让很多小伙伴们喊“热”!!! 昨天的气温到底升得有多高呢?你家有没有榜上有名?...
- CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式
-
之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...
- 你的自我界限够强大吗?_你的自我界限够强大吗英文
-
我的结果:A、该设立新的界限...
- 行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?
-
行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...
-
- 让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
-
去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...
-
2025-02-21 16:00 yuyutoo
- 今年国家综合性消防救援队伍计划招录消防员15000名
-
记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...
- 一起盘点最新 Chrome v133 的5大主流特性 ?
-
1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...
- 竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使
-
style="text-align:center;"data-mce-style="text-align:...
- 学物理能做什么?_学物理能做什么 卢昌海
-
作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...
-
- 你不知道的关于这只眯眼兔的6个小秘密
-
在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...
-
2025-02-21 16:00 yuyutoo
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)