第329章 抛弃框架,从零开始造轮子

+A -A

  随着靳雪雯的讲解,江寒对战神一号的基本结构,很快就有了初步的了解。

   接下来就该研究一下,如何改进它的性能,提升战斗力了。

   “这是什么传感器?”江寒指着一个小机关。

   靳雪雯看了一眼:“这是碰撞传感器。”

   “这一颗呢?”

   “红外线传感器。”

   ……

   江寒一个个询问过去。

   很快,他就看到了一个小洞洞,表面微微凸起。

   江寒仔细看了看:“这里好像是个摄像头?”

   靳雪雯点了点头:“这叫二维视觉传感器,其实就是一颗摄像头。”

   江寒思索了一下,问:“通过这个东西,战神一号就可以‘看’到目标了吧?”

   靳雪雯说:“对的,但因为是二维画面,不太容易判断出距离远近,具体工作过程是这样的……”

   江寒用心倾听,同时拿出纸和笔,列了几个式子,写写算算起来。

   “战神一号”最大的问题,是攻击移动目标时,射击精度太差。

   敌机距离太远,子弹就会发生滞后的现象;敌机距离太近时,又会胡乱“抢拍”。

   之所以会有这样的表现,归根结底是因为预测算法有bug。

   要想彻底解决这个问题,还是要从根本处入手。

   事实上,对于实弹射击来说,无论数据处理速度多快,都必须对目标的移动轨迹做预测。

   否则的话,子弹只会追在敌人的屁股后面,永远打不中。

   很简单,当你经过计算、射出子弹时,敌机早就不在原来的位置上了。

   “战神一号”定位敌机时,主要使用超声波传感器,限于硬件精度,效果不算很理想。

   所以靳雪雯还通过摄像头,采集到实时图像,以进行辅助定位。

   但她在图像处理时,使用了官方提供的图像识别框架。

   说实话,官方出品的这个编程框架,稳定性真的不错,但效率方面就没法期待了。

   虽然靳雪雯在noip中表现不俗,编程功力相当不错,但想要甩掉框架,从0开始自己造轮子,还是力有不逮的。

   此外,她在处理图像数据时,对于深度的处理,得也有问题。

   靳雪雯毕竟才初三,无论信息学还是数学,都还缺乏了一点底蕴。

   能做到现在这样,已经相当不错了,还真没法苛责她什么。

   根据靳雪雯的说法,“战神一号”的反应阈值是0.2秒。

   也就是说,从发现目标、确认敌机方位,到经过计算,调整自身角度、发射出子弹,至少需要0.2秒的时间。

   但这并不是说,其机载计算机的数据处理速度,只能达到每秒5帧。

   真要是那样的话,类比成电脑游戏的画面表现,这已经卡成ppt了……

   由于图像处理技术的限制,“战神一号”每秒只能处理大约10帧画面。

   这个速率其实不算很慢,基本上达到了参赛机器人的平均水准。

   但在瞬息万变的战场上,这样的信息处理速度,自然是无法让人满意的。

   关于如何改进“战神一号”,江寒很快就有了思路。

   如何通过摄像头,算出与敌机的相对距离?

   最容易想到的,就是安装第二颗摄像头,形成三维视觉,然后用立体成像算法,把数据放到三维空间中处理。

   但这种算法比较复杂,且需要反复测试,调整参数。

   这需要大量时间,可明天就要参赛了,可能会有点来不及。

   那么还有没有别的办法呢?

   其实是有的。

   靳雪雯编写的控制程序,其图像处理部分,在通过像素信息计算深度时,存在相当大的误差,对角度的判断也有一点小问题。

   这是导致预测失败的根本原因。

   只要对目前的图像识别算法,做出一些改进和优化,使其能正确计算深度和角度,就能正确预测敌机的行动了。

   同时还要尽量提高数据处理的效率。

   当帧率超过10以上,就能极大缓解各种由于延迟导致的问题,超过20,肉眼就看不出卡顿,如果帧率超过30……

   江寒算得认真,靳雪雯就一直聚精会神地看着他的侧脸。

   不知怎么的,脸上就热了起来,小心脏也跳得更加欢快了。

   唔,果然认真工作的男人,才是最有魅力的吗?

   靳雪雯默默地想着。

   就在这时,江寒嘴角微微勾起,忽然抬头看了她一眼:“战神一号的主控代码,你有备份吧?”

   靳雪雯正沉迷着,闻言顿时一惊:“啊?”

   慢了不止一拍,才反应了过来,慌忙点了点头:“哦!”

   然后定了定神,说:“有的,有好几个版本。”

   江寒洒然一笑:“很好,那我就在目前版本的基础上,试着改进、优化一下,看看效果怎么样。”

   靳雪雯连连点头:“好的!”

   江寒想了想,又说:“不过,你这个机器人的编程环境,我也不是很熟悉……”

   沉吟了一下,说:“要不这样吧,咱们合作一下,我来改进算法,你负责编写代码,怎么样?”

   靳雪雯兴奋点头:“太好了,就这么办!”

   随后,她就拿出改锥和镊子等工具,拆起了“战神一号”的外壳。

   江寒看她笨手笨脚的样子,不由得微微一笑:“行了,交给我吧,你去准备好编程环境就行了。”

   靳雪雯只要讪讪地一笑,将工具交给江寒,然后摆弄自己带来的笔记本电脑去了。

   江寒将战车腹板拆下,从中取下了它的数据处理核心。

   这是一块卡片计算机,名为“神机w-2012”,在同类产品中,性能算得上可圈可点。

   靳雪雯一边忙活,一边给江寒介绍。

   “神机”的峰值功耗为8w,搭载了一块1.0ghz的armcpu,拥有独立的gpu、2gram、128grom,还带有wifi和usb接口。

   其运算速度还是相当过得去的。

   跟高配的台式机、笔记本电脑相比,可能略有不及;但与配置一般的智能手机、平板电脑相比,已经差不了多少了。

   只是再多的计算资源,也得合理运用,才能发挥出应有的效能。

   江寒将“神机”拆下来后,交给了靳雪雯。

   随后,小丫头用usb线,将“神机”连到了笔记本电脑上。

   开发专用的ide也已经准备就绪了。

   江寒开始在纸面上设计算法,并让靳雪雯修改相应的代码。

   首先要做的,是调整摄像头工作时的分辨率。

   “战神一号”搭载的这颗摄像头,一共支持三种分辨率:640×320、1280×720、1920×1080。

   清晰度越高,获得的图像质量自然越好,但处理起来也就越慢。

   因此,江寒一上来就让靳雪雯将摄像头的工作模式,调整到了640×320。

   然后通过调整曝光时间,以及矫正gamma值等手段,获得更好的图像质量。

   接下来,就是第一个关键点:机体识别算法。

   靳雪雯在自己编写的程序中,使用了官方的图像识别框架,实现了在采集到的图像中,匹配机体外壳上的特征图案。

   江寒看了一下框架的源代码,就知道这个东西能不用最好不用。

   这个框架复杂而且臃肿,效能十分低下。

   唯一的优点就是易学易用,即使是初中生,也可以只用几个月的时间掌握它。

   但现在既然追求极限的效率,那就必须抛弃它,从零开始造轮子!

   江寒提出了这一点,靳雪雯却犯了愁:“从头写底层……那太难了吧?一晚上的时间,只怕不太够啊。”

   江寒微微一笑,平静地说:“这个模块我来写吧,等下你再把它整合到主程序里。”

   顿了顿:“当然,平台相关的部分,还有涉及到硬件操作的地方,你得随时给我指点,不然我还得时不时去翻官方的白皮书。”

   靳雪雯欣然应允,将笔记本电脑推到了江寒面前。

   江寒开始工作。

   图像识别算法的改进方案,早就在江寒的脑海中了。

   实战时用来检测碰撞的“皮肤”上,集成了一些用来显示血量等信息的led灯。

   用来检测和判定敌机,无疑是比较适合的。

   首先由于led是发光的,那么就可以调低曝光,以屏蔽环境光干扰;

   再二值化处理一下,图像中除了led部分,就都变成了黑色……

   预处理做得好,在后续步骤中,可以大大降低计算量。

   至于如何识别图像中的机体……

   江寒的第一个念头,就是各种人工神经网络算法。

   运用深度学习技术,对输入图像进行识别,输出所属类别和定位信息……

   看起来的确相当有可行性。

   但江寒稍微深入一想,就知道这个办法只是看起来很美,在比赛中很可能行不通。

我要报错】【 推荐本书
推荐阅读:
重生学神有系统 第329章 抛弃框架,从零开始造轮子