华为天才少年,造出自动驾驶单车!图纸已开源,重新定义「自行」车!

程序员的成长之路
互联网/程序员/技术/资料共享
阅读本文大概需要 6 分钟 。
鱼羊 金磊 发自 凹非寺
量子位 报道 | 公众号
果然高手在民间 。
谁能料到,一辆自行车的硬核打开方式,竟是大火的自动驾驶 。
踢开脚撑,金鸡独立、稳如泰山:
单侧加个板砖?小场面:
毕竟,它是连高难度“杂技姿势”都能hold住的自行车:
没事走两步?
可以有,还是会自己拐弯的那种:
避障、上路,毫无压力:
甚至还配备了特斯拉都没有的激光雷达 。
这就是B站“野生钢铁侠”稚晖君耗时4个月时间(基本只是周末),打造出的全新项目XUAN(轩) 。
短短几天,播放量超过150W,硬核、复杂程度之高,直接看呆一众网友 。
来感受一下这个画风 。
连B站老板陈睿都被吸引而来:
甚至业内人士也直呼:
任何一个部分拿出来都是一篇本科毕业论文 。
还有实物,硕士毕业绰绰有余……
稚晖君到底是如何打造的这么一台“赛博朋克”自行车?
接下来,让我们一起一探究竟(经授权) 。
(你可能还很关心它的价格,别着急,我们文末揭晓答案~)
把自行车做成自动驾驶,共分几步?
稚晖君选择的自行车,是大家非常熟知的死飞(Fixed Gear) 。
(没错,就是漂移玩家的最爱)
这种自行车的一大特点,便是结构简单、没有刹车 。
于是,稚晖君先对死飞进行了一个CAD建模的工作 。
建模工作完成之后,便得到了一辆虚拟自行车 。
此后的所有改造工作,便可以在计算机上完成 。
整体来看,XUAN的诞生一共分为三大步:

华为天才少年,造出自动驾驶单车!图纸已开源,重新定义「自行」车!

文章插图
Step by Step,先来看下第一个大问题 。
自行车怎么自己保持平衡?
在骑自行车的时候,前后方向的平衡,靠得是2个轮子的支撑和地面摩擦力 。
而左右方向上,运动过程中靠的是龙头的左右调节,获取转向的加速度,以此抵消重力的影响 。像这样:
那么在静止状态下呢?
稚晖君给出的思路便是——角动量守恒 。
简单来说,当车子在重力作用下发生倾倒,就用动量轮来产生一个相反力矩,抵消掉重力力矩 。
具体而言,稚晖君在这辆死飞座位下方安装了一个无刷电机,目的是驱动一个金属的动量轮 。
而在座位后方,他也安装了一个无刷电机,这个目的则是靠摩擦力来驱动后轮,让自行车整体前后运动 。
稚晖君本是想用3D打印来完成这两个零件的加工,但碍于材料硬度和刚性不足,所以金属材料成为了此次的首选 。
(所幸,稚晖君朋友家里“有厂”,问题迎刃而解)
而后,便是快乐的组装环节:
OK,自行车的平衡问题,就此解决 。
自行车的“机器大脑”
硬件框架有了,想让自行车能跑起来,甚至能认路,下一步就是上“脑子” 。
跟人类相似,机器人也分“大脑”和“小脑” 。
简单来说,小脑用来控制实时行动;大脑则负责耗费算力、高时延的感知和决策 。
这一回,稚晖君给自行车上的“小脑”是ESP32 。
ESP32是一种低成本、低功耗的单片机控制器,集成Wi-Fi和双模蓝牙 。
基于(一个开源嵌入式实时操作系统),稚晖君搭建了小脑的RPC通信框架,用来实现传感器的数据处理,以及电机的控制算法 。
“大脑”则是昇腾310 。这是昇腾系列的边缘计算芯片,基于达芬奇架构,最高能够提供的算力 。
大脑的算法开发,主要基于昇腾AI栈和ROS(机器人操作系统)实现 。