这是关于Donkey Car的3部分系列的第2部分。这是第1部分和第3部分。在第1部分中,我谈到了如何基于Raspberry Pi启动并运行新的Donkey Car,并使相机连接正常工作。我用RPi Cam Web界面测试了相机,并在我们家的一楼开车,以感受汽车的感觉以及它如何导航。
在这种模式下,Pi只是在Web服务器后面的便携式摄像机,将视频图像传输到其网页。RC汽车完全由汽车附带的2.4 Ghz控制器控制。要运行RPi Cam Web Interface软件,我只需打开Pi上的终端并从github站点下载代码。然后我运行了启动Web服务器的startup.sh脚本。
我感兴趣的是,相机拍摄的图像与网页上出现的图像之间有多大的延迟。延迟可以忽略不计,这让我只需通过观看网页上的图像来驾驶汽车。这意味着相机和Pi之间的输入/输出速度很快,因为图像通过WiFi芯片转换为Web浏览器。它基本上证明了Pi中有足够的马力来进行实时远程视频驱动。
然后我断开连接器与RC汽车附带的2.4GHz接收器,并将连接移动到我从亚马逊订购的伺服控制器。虽然这个伺服控制器板设计用于控制多达16个伺服系统,但我们只需要使用两个伺服系统。一次是速度,一次是转弯。我还必须将四条线从伺服控制器连接到Pi 40 Pin GPIO总线。这些连接的照片如下:
下一步是转向和加速度计的校准。要做到这一点,我必须SSH到Pi并运行校准。这个过程有点棘手,因为许多电子速度控制器(ESC)有点不同。据记载毛驴车网站在这里。因为我的“停止”频率不正确,我仍然无法让汽车进入倒车状态。最终结果是我们有一个配置文件,可以编码油门的参数和汽车的转向。
一旦完成,我就准备开车绕过测试跑道了。令我妻子懊恼的是,我把地下室的家具搬到了房间的一侧,在地下室的地板上放了一些白色的电工胶带。我们在地板上放了一层很酷的环氧树脂涂层,但白色胶带的对比度很好。
你还可以看到地板上灯光的很多反射。我们的训练过程必须学会忽略光反射,只能对地板上的白色胶带“注意”。注意力是深度学习的一个重要概念。
然后,我从墙上插头上取下了Pi,并使用我在亚马逊上购买的新型6800 mAH电源组为其供电。我用了一些磁带来固定平台下的电源组。我应该注意,来自ESC的GND和VCC导线确实为RC汽车中使用的2.4GHz接收器中的数字电路供电。然而,这个电流不足以为Pi供电。作为测试,我在Pi运行时将USP电流表连接到汽车上。结果如下图所示:
生成培训数据
一旦我们将所有汽车组装好,我们就可以生成训练数据集了。然后我做了一个SSH进入Pi并启动了驱动程序:
$ python manage.py drive
这是一个python程序,它启动一个Web服务器,显示摄像头上的内容,它还为您提供了一些捕获训练集的控件。一旦驱动程序开始,您可以转到任何Web浏览器并使用端口8887键入您的汽车的IP地址。现在是困难的部分。我不得不在赛道上开车10次以建立一个训练集!
问题是虽然我可以用键盘键控制汽车,但很难驾驶。我也试过网络界面“指针”,但这也很难引导。最后,我拿出手机,在手机浏览器中拉出了Donkey Car的网页。网络浏览器足够智能,可以检测到手机的前倾和侧向倾斜,并将其转换为速度和转弯。非常聪明!通过大约一个小时的练习,我可以绕过课程。然后我按下“开始录音”,大约10圈后我按下“停止录音”。完成此操作后,我可以通过SSH进入Donkey Car并将目录更改为“tub”文件夹。在该文件夹中有大约30K .jpg和.json文件。每个JSON文件都具有对图像的引用以及时间戳,加速和转向作为浮点数。这是我们的培训数据。
以下是JSON文件的示例:
{
“user / angle”:0.18989955357142868,
“user / throttle”:0.7175781250000001,
“user / mode”:“user”,
“cam / image_array”:“1000_cam-image_array_.jpg”,
“timestamp”:“2019-01- 05 17:09:35.184483“
}
这是与该JSON文件对应的图像:
然后我将Donkey Car中的图像复制到我的笔记本电脑进行培训。我将在第3部分介绍。