华为天才少年打造无人驾驶「自行车」,网友:特斯拉看了都流泪!

贝壳号 | 发布于2021-06-09

自行车什么时候能实现「自己行走」呢?

 自行车属于欠驱动系统,如果不进行控制就无法实现稳定站立

 最近,B站野生技术协会野生钢铁侠、「华为天才少年计划」入选者、AI算法工程师稚晖君发布了一个「自动驾驶」自行车项目,自行车化身「自动行走」的车!

 视频讲解详细,网友直呼:666666

 那么,稚晖君是如何打造自动驾驶「自行车」的呢?

 第一步当然是最基本的让车子跑起来,这就需要硬件改造,加入自动控制系统。

 第二步要去掉驾驶员工具人,这就需要给车子搭载一整套传感器组成的网络,还需要一个算力足够的芯片,而这个芯片也是整个自行车的「大脑」。

 最后,在前面的硬件基础上实现感知和控制算法,也就是给这台车「注入灵魂」。

 改造「死飞」

 介绍完步骤,我们具体来看

 改造的对象是一辆「死飞」(Fixed Gear),结构简单,没有刹车,靠反向蹬车减速。

 像钢铁侠造机器人那样,这台自动驾驶的自行车也需要用计算机辅助工具CAD来建模,得到一辆虚拟自行车,或者叫做自行车的数字孪生。

 有了车体模型,所有的改造工作都可以在计算机上完成,只需加上「亿点点」的细节,最终的改造方案就出来了:

 先给车子安装两个巨大的无刷电机。

以及一个控制龙头的舵机。

传感器方面搭载了一个RGBD的深度相机,加速度计和陀螺仪,以及一个激光雷达。

 而电池使用的是6S的航模动力锂电池,续航大约有2-3小时。

 主控计算模块被安置在了座椅的后方。

 驱动结构方面,控制龙头的旋转舵机,前后方向的平衡靠两个轮子的支撑和地面摩擦力。

 那么左右平衡呢?当在骑行状态下,可以靠着左右调节龙头来获得转向加速度以此来抵消重力的影响。

 那么静止状态下呢?

 这就要靠角动量守恒,学过大学物理的同学都知道角动量守恒定律是自然界中最普遍的守恒定律之一。

 当系统一个动力角动量发生变化的时候,就会将力矩传递给其他物体。所以这辆自行车中间的无刷电机,其实就是驱动一个金属的动量轮。

 实际上这也是在太空中卫星在没有摩擦力的情况下调整自身姿态的一样的原理。

 而后面的无刷电机就是靠摩擦力驱动后轮,让车子整体前后运动。

 关于零件,其中一部分零件可以用3D打印来制作,不过由于这次所需零件比较硬核,3D打印塑料的硬度和刚性都不太适合作为核心的结构件,因此用于固定电机的零件,稚晖君还是选择用金属来加工。

 此处就要感叹一下,有一个家里有厂,可以直接开模做零件的朋友也很重要!

安装机器大脑

 在所有的零件安装完成后,就需要安装电力系统了 ,也就是主控模块和AI计算单元。

 和人类一样,将计算单元分为小脑和大脑,小脑包括低算力、低时延、运行实时系统,大脑包括高算力、高时延、运行非实时操作系统,用于感知、思考和决策。

 而在这个项目中,小脑用的是HoloCubic里面的MCU,ESP32,大脑则应用了昇腾边缘计算机芯片昇腾310  AI处理器,搭载的达芬奇core可以提供高达22TOPS的算力。

 然后,稚晖君设计一个载板,将这两个计算单元整合到一起,板子的结构为四层设计。

 PCB打样之后再手工焊接一下,这也是传统艺能环节。

 之后通过总线把大脑和小脑相连,在软件上实现一套RPC框架,让它们可以方便地通信。

 其中小脑的框架基于FreeRtos,主要是实现传感器的数据处理,以及电机的控制算法。

 简单分为三个任务:闭环控制线程、电机通信线程、以及屏幕刷新线程。

 大脑的软件框架要复杂很多。

 除了基于昇腾的整个AI栈之外,还在系统中使用了一个做机器人常用的框架—— ROS,本质上是一个高性能的通信中间件。

 到这里,电路方面已经有了脑子,还缺一个很重要的模块,那就是心脏,也就是此前稚晖君设计的Ctrl-FOC驱动器。

 作为Ctrl的二代作品,它的表现还是非常的猛的,在很小的体积之下, 实现了两路共100安 的无刷电机FOC控制,同时还顺便  驱动了前面60Kg的舵机,以及一个散热风扇。

 到这里自动驾驶自行车就整合完成了。

 稚晖君简单做了一个总结:

 机器人是一个复杂的系统,设计的时候,科学的方法是将机器人进行理论上的分析,也就是运用运动学和动力学的建模,通过数学模型知道哪些事情是相对 容易的哪些是复杂的。

 例如,这辆车子的控制代码中,有超过50个重要参数:控制周期、反馈矩阵、PID增益、滤波器截止频率等。

 这些魔法数字要全部得到合理的设置,才能使系统进入稳定且快速收敛的状态。

 而一些物理参数的设置,如电机功率应该选多大的?飞轮质量应该选多少?

 重心的分布应该怎样设置才比较合理?也都需要准确的数学模型进行指导才行。

 在得到模型之后, 为了进一步验证理论的准确性,一般要在计算机中进行仿真,这里稚晖君使用的是游戏引擎Unity——先在游戏引擎中构建一个虚拟的物理环境,赋给小车真实的的质量和重力,接着将控制算法的计算结果可视化呈现出来。

 这一步验证完成之后 ,还有一个sim2real的过程,也就是把仿真结果迁移到现实环境中。

 其实这是一个很复杂的过程,因为现实中有更多的不确定性因素,很多情况下机器人往往在仿真中重拳出击,而在现实中「唯唯诺诺」秒变智障,这里视频中举了一个DARPA参赛作品的例子。

 同理,这台车在调试的过程中也是非常艰辛的

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

 经过漫长的参数整定,终于得到了一台成熟的「自动驾驶」自行车。

 那么,自动驾驶效果到底如何呢?

静态站立非常稳!

编辑按:本文转载至微信公众号 “新智元”,贝壳投研经授发布

飞鲸投研从多维度分析,整理了一份《成长50》的名单,可以关注同名公众号:"飞鲸投研":feijingtouyan,进行领取(点击复制)

该文观点仅代表作者本人,飞鲸投研系信息发布平台

/阅读下一篇/

剥离快时尚品牌「Zaful」后,百亿卖家环球易购申请破产

热门推荐