自动驾驶火出天际的时代,自行车能「金鸡独立」,还能「风驰电掣」?

 

近日,一位来自 B 站的硬核 up 主稚晖君带着一辆改装之后的自动驾驶自行车震撼亮相,他还发布了一个名为《我把自行车做成了自动驾驶!!》的视频,短短几天内,获得 180w+ 的播放量,且曾达到全站排行榜第 1 名。

与此同时,这条视频还吸引了 B 站 CEO 陈睿的强势围观,并赞其「重新定义“自行车”」。

而要问是什么让这位博主耗时四个月非要与一辆自行车“过不去”?

是因为无聊?对自行车的热爱?还是因为对技术的执着?

其实都不是!

 

自行车自行车,不会自行怎么配叫自行车?

 

这个项目得以诞生的很大一部分原因或要归功于天气。

某一天,天空不作美,飘着雨,骑着车的稚晖君在转弯的时候因为一个“漂移”,一不小心摔了一跤。

在养伤的过程中,稚晖君自我调侃道,“作为一个掌握了技术密码,并且永远头铁的野生钢铁侠,我表示这事就不能这么过去了。”

同时,受 2019 年清华大学依托精密仪器系的类脑计算研究中心施路平教授团队发布的类脑计算芯片“天机芯”让无人自行车落地的启发,在天空放晴之后,素有“科技教徒”、“野生钢铁侠”之称的稚晖君决定要拯救一下这个糟糕的天气,哦,不,是糟糕的自行车。

于是,他开始着手了自动驾驶之自行车的设计与落地之路,毕竟“如果自己不能跑,凭什么叫它自行车!”

 

自动驾驶自行车三步走

 

所谓自动驾驶自行车,首先要实现自动,众所周知,两个轮子的自行车在没有外力的支撑下,几乎不能站稳,因此相较四轮的汽车,自动驾驶自行车首先需要解决车子“立”起来的问题,这就需要一套自动控制系统;其次,需要将驾驶人的存在性消除,这需要靠传感器网络、AI 芯片来实现;最后,要实现“驾驶”,即车子需要跑起来,其背后离不开软件与算法的存在

为了实现以上,稚晖君主要从三个维度出发,逐个击破,开始改装传统的自行车。

第一步:硬件改造

  • 设备

视频中,稚晖君采用的是一款骑行爱好者颇为喜欢的自行车——死飞(Fixed Gear)自行车。这款车和普通的自行车有一定的区别,是一款单速车,其车轮和脚踏板一直是处于联动状态下,没有刹车,如果想减速可以通过反向蹬车来实现。

  • 建模

重构,首先要先搞清楚自己想法的可行性与理想状态,这就需要通过设计与模拟、验证来实现。

在此,稚晖君使用的是计算机辅助工具 CAD 实现建模工作,构建了自行车的数字孪生,基于此,所有的改造工作都可以在计算机上完成。

  • 设计图纸

经过多番斟酌之后,稚晖君将构想落地到了图纸上:

1. 车头处安装一个控制龙头的舵机,顾名思义,它是用来控制龙头的,包括转向等;传感器方面搭载一个 RGBD 深度相机,可以用于识别前方物体,进行避障或跟随;

2. 自行车车杆处安装一个加速度计、陀螺仪,另外还有一个激光雷达,主要用于自动驾驶的路径规划;

3. 下方搭载一个 6S 航模动力锂电池,续航可达 2-3 个小时;

4. 座椅处前后安装了 2 个无刷电机,它们的主要作用是让两轮的自行车在静止且无外力支撑状态下可以屹立不倒,其中运用到的原理是物理学、自然界普遍存在的基本定律之一——角动量守恒定律,即当系统中的一个物体角动量发生变化时,其会将力矩传递给其他物体。因此,在自行车中间的这个无刷电机就是用于驱动一个金属的动量轮,而后面的无刷电机是用于靠摩擦力驱动后轮,让车子整体前后运动;

5.主控计算模块安置在了座椅的后方,其中包含了 AI 计算单元等。

基于以上,完整的设计图纸如下所示:

  • 零件加工

针对零件部分,部分可以用 3D 打印制作而成,不过,有的零件对硬度和刚性要求较强,因此只能利用金属加工而成。在加工好所有的零件之后,组装好即可。

第二步:智能化

接下来,进入了第二个大环节——电路系统设计与安装,这其中包含了主控模块,旨在让车子跑起来。

作为 AI 算法工程师的稚晖君,将电路系统的机器大脑分为两大板块:

  • 一个是用于控制身体的低算力、低时延、运行实时系统的小脑,这一项目中,稚晖君使用的是 MCU ESP32;

  • 另一个是用于感知、思考和决策的高算力、高时延、运行非实时操作系统的大脑,这里稚晖君选择的是华为面向边缘场景的高能效高集成度 AI 处理器——昇腾310,其搭载的达芬奇 Core 可以提供最高 22TOPS 的AI 算力。

通过一个载板将上述的两个计算单元整合到一起。在 PCB 打样之后,基于通过手工焊接方式,将大脑和小脑通过总线相连。

第三步:软件&算法

在软件层面,稚晖君表示:

  • 小脑的框架主要是基于 FreeRTOS 来实现传感器的数据处理,以及电机的控制算法。其中简单地划分了三个任务,一是闭环控制线程、二是电机通信线程、三是屏幕刷新线程。

  • 大脑的软件框架相对而言,复杂得多,除了基于昇腾的整个 AI 栈之外,在系统中还使用了机器人界常用的框架 ROS,其本质上是一个高性能的通信中间件,后续的消息分发、业务串流、SLAM 等实现都是基于 ROS 开发的。

基于此,小脑和大脑均已准备就绪。除了以上,稚晖君选用了其此前自制的 FOC 控制驱动器(https://www.bilibili.com/video/BV11V41127pq)作为电路的心脏,实现了两路共 100A 的无刷电机 FOC 控制,同时还顺便驱动了前面的 60 KG 舵机,以及一个散热风扇。

在视频中,稚晖君透露,这个车子的控制代码中,包含了控制周期、反馈矩阵、PID 增益、滤波器截止频率、电机功率、飞轮质量、重心分布设置等 50 个重要参数,而这些参数都必须在合理的设置下,才能使得系统进入稳定状态。

因此,在运行调试之前,稚晖君借助 Unity 引擎工具实现了一个虚拟的物理环境,在赋给自行车正式的质量、重力后,将控制算法的计算结果可视化显示出来。

其次,通过 Sim2Real,将仿真结果迁移到现实环境中。当然在被诸多不定性因素包裹的现实世界中,其调试过程也并非想象中那么容易,正如稚晖君在视频中细数的点滴,如:

在姿态控制中使用的是 LQR 控制器,方向控制使用了经典的 PID,传感器则是对加速度计和陀螺仪数据使用了二阶的巴特沃斯滤波器之后,再通过卡尔曼滤波进行数据融合,最终得到车身的姿态......

 

自动驾驶自行车——XUAN(轩)

 

几经“折腾”后,这个自行车不仅实现了基础的自动驾驶功能,而且能够自主探索环境。未来这个项目还有很大的提升空间,但当前的成果足以让人惊叹。

当稚晖君将这款项目命名为——XUAN(extremely Unnatural Auto-Navigation)的同时,其宣布将项目的结构设计全部开源。

 

 

稚晖君本君!

 

值此之际,我们也不仅好奇稚晖君究竟是何方神圣?

打开其个人网站,我们发现稚晖君虽然仅毕业三年,但是其在编程开发、硬件设计等层面早已身经百战。据悉,在学生时期,稚晖君从大二开始就参加了各种电子设计竞赛,并获得大量奖项。大三时,开始成立团队和工作室,专注于嵌入式软硬件和机器人项目的开发。研究生阶段,组建创业团队与公司,聚焦尖端机器人相关技术的研发,也获得过一些投资。

在 2018 年从电子科技大学毕业后,稚晖君加入 OPPO 研究院 AI 实验室,负责算法相关工作,后成为华为天才少年项目中的一员,目前担任华为 AI 算法工程师。

与此同时,他从 2017 年便开始在 B 站上开启了【自制】之路,除了此次自制自动驾驶自行车之外,还自制过便携显示器、FOC 矢量控制驱动器、火星车、门禁卡等等,其背后所运用的知识广度与宽度不容小觑,而稚晖君的技术能力也更令人佩服。

 

相关资料:

  • 视频地址:https://www.bilibili.com/video/BV1fV411x72a

  • GitHub 项目开源地址:https://github.com/peng-zhihui/XUAN-Bike

  • 个人网站:http://www.pengzhihui.xyz/