无用将逝。

经 czy 带佬发布,由俺整理而成。

实验要求

  1. 避障实验:设计障碍环境,实现小车自动避障功能。
  2. 追踪实验:选择追踪目标,实现小车追踪目标功能。

实验过程

0x00 硬件组装

参照官网教程完成

我们小组拿到的小车焊接工作已经完成,只需进行零件的拆装即可。其中尤应注意数据线的连接。

0x01 软件配置

0x02 demo1_自动避障

下载 AlexNet 并训练模型,运行 demo 实现自动避障。

  1. 在环境中拍很多张照片进行标记(通路与死路),尽量分布于各个位置与各个方向,作为模型的数据集。
  2. 然后运行代码,第一次运行会下载 244M 左右的大文件即 AlexNet。(存放于/home/jetbot/.torch/model目录下)
  3. 继续运行程序,完整的输出结果有三十行,每行后面的小数代表当前模型的准确度,程序最后会从这 30 个模型中选取准确度最高的作为最终模型。
  4. 引入我们训练出的模型,模型输入为经过处理的摄像头的图形信号,输出一个 0~1 的数,越接近 1 越意味着模型认为小车要撞墙了。由代码来看当大于 0.5 的时候就会触发转向,实现自动避障。

0x03 demo2_追踪目标

基于上一个 demo,我们还要下载一个模型 coco 数据集神经网络 用以检测 90 种不同的物体。

按教程把.engine 文件下载到指定位置,引入模型。

程序首先用字符串打印识别的物体,在数据集里搜索 label 的编号就能知道其代表的物体。如:

demo2_1

若有数据集里的物品,从输出里能看到蓝框标出,小车会自动转向物体,同时还保留了自动避障的程序。(label 62 代表椅子)

demo2_2

我们小组遇到第二个问题:摄像头调用无法更新。

按理说执行 observe 函数即可让摄像头更新,但执行该步无反应,小车只能依据单张画面判断物品。且拖动图像旁边的窗口组建,也并不能操纵小车的速度。

问题及其解决方案

第一个问题

问题

我们小组配置好小车后运行 demo ,始终指向同一个错误:OSError:[Errno121]RemoteI/Oerror

解决方案

沿着 jupyter notebook 的报错提示一直到最底层,得到 remoteIOerror, 看起来像是硬件的问题,则一步一步排查。

原因

开机时机器并没能正确载入设备,反倒是重新连接后能识别了

第二个问题

问题

摄像头只要调用过一次,后面就无法在其他地方再次调用。

尝试解决

由于拿到小车的时间有限,我们小组最后没有来得及自己编程调试问题,摄像头的问题暂待考究。

但我们掌握了小车的操作方法和 AI 程序的基本原理,受益匪浅。

心得体会

这段 xjb 扯淡

本次研究耗时两周,经过我们小组的通力协作,最终实现了小车自动避障的功能。并在理论上弄清了 AI 程序的基本原理,明晓了实现小车自动避障与追踪目标功能的过程细节。

我们小组通过查找国内外资料、付诸于实践、不断地修正过程中遇到的错误的方式,实现了从零到一的突破。我们成功地将无形的网络与可见的实体联系起来,以 jetbot 小车为载体实现了机器学习领域的尝鲜,也对机器学习和物联网的应用加深了理解。

同时,在研究的过程中,我们小组学会了如何更好的搜寻、整理资料,提升了阅读英文文档、团队协作、动手操作的能力,同时掌握了寻找过程中错误并分步调试的方法。

总之,本次 jetbot 小车实验带给我们小组所有人的,不止是实践能力的熟练,更是思想境界的提升。