Author Archives: chen

Robocar控制器快速入门指南

Published by:

图片发布

需求

在开始之前,您需要满足以下条件:

  • 具有iOS或Android的手机

安装移动应用

Robocar Controller在Apple的App Store和Google Play商店均可使用。只需在手机上安装此应用即可。

图片发布

用预先建立的映像刷新SD卡

  1. 下载Etcher
  2. 在此处下载我们的预制图像
  3. 将图像刷入SD卡
  4. 将卡插入Pi

将手机连接到热点

  1. 打开Raspberry Pi
  2. 等到绿灯停止闪烁。第一次可能最多需要2-3分钟。Pi会重新启动1-2次,直到准备就绪为止。
  3. 转到手机的Wifi设置屏幕。您将看到一个名为“ donkey-xxxxxx”的热点。在离开设置屏幕之前,请确保已连接到该热点。

首次设置

  1. 启动应用程序。首次使用时,请同意条款。
  2. 该应用程序将在网络中搜索汽车。您的汽车应显示IP 192.168.50.1。
  3. 点击显示的汽车。您将进入首次设置屏幕。
  4. 选择您正在使用的控制器类型。最有可能您将使用PCA9685。MM1用户请选择MM1。
  5. 选择您所在的国家。我们需要此信息,因为wpa请求者需要此信息以符合国家/地区特定的Wifi规则。如果选择了不正确的国家/地区,则可能会发生意外的wifi连接问题。
  6. 设置wifi连接。搜索附近的wifi网络,然后选择要让Pi连接的wifi网络。输入密码,然后点击完成。
  7. 查看设置。如果一切正常,请点按“完成”,然后Pi将禁用热点并连接到Wifi网络。此时,您会看到您的手机已从热点断开连接,因为Pi在成功连接到Wifi后会禁用它。您的手机很可能会回退并连接到原来用于连接的Wifi网络。确保您的手机与Pi连接到相同的网络。
  8. 您将被重定向回车辆搜索屏幕。您应该看到您的汽车随Wifi网络分配的IP一起出现。
  9. 点击汽车,然后转到汽车的控制面板。

图片发布

校准

完成首次设置后,您可能要做的第一件事就是校准汽车。点击进入校准屏幕。将显示两个选项卡以配置转向和油门:

图片发布

PCA9685的校准屏幕

驾驶

校准后,点击驾驶按钮以开始驾驶汽车。系统将询问您是否要使用虚拟游戏杆或物理游戏杆。现在选择虚拟游戏杆。此外,系统还会要求您分享您的当前位置。该应用程序将此位置(经度,纬度)添加到浴缸的meta.json文件中。

图片发布

图片发布

图片发布

数据

数据视图显示您在树莓派上收集的所有数据(数据桶)。

图片发布

图片发布

培养

截至今天,我们为移动应用程序用户提供免费的培训服务。

图片发布

图片发布

图片发布

自动驾驶仪

您可以通过两种方式启动自动驾驶仪。一种方法是在火车功能内启动自动驾驶仪。就像上面显示的屏幕截图一样,您可以直接从那里启动自动驾驶仪。另一种方法是使用控制面板上的“自动驾驶”功能。该应用程序将列出Pi内的所有型号。换句话说,您可以将模型复制到Pi中,但仍可以使用该应用程序启动自动驾驶仪。

图片发布

进阶设定

Doneky汽车软件带有多种配置,您可以进行试验。我们提供了一些您可能想要更改的常用选项。

  • 训练配置
  • 传动系设置

图片发布

结论

本文向您展示如何在不键入单个命令的情况下将Robocar控制器与Donkey汽车软件一起使用。我们希望这将简化并降低每个人尝试Donkey Car的技术障碍。感谢您阅读并访问Donkey Discord,以告诉我们您使用该应用程序的经验。

未来的增强功能和错误报告

如果您有任何建议或只是想报告错误,请随时在此处提交问题

商业用途

如果您打算使用此应用程序来赚钱,请遵循驴车指南,让我们知道

原文:https://medium.com/robocar-store/robocar-controller-quick-start-guide-bdf8cb16d7ce

DonkeySim挑战赛

Published by:

如果不使用神经网络的参赛者仅需看第4与第5部分内容!
1.0 DonkeyCar的安装
1.1安装miniconda Python 3.7
安装miniconda Python 3.7 64位。
安装方法参见:Windows 10下安装Miniconda3

1.2安装git 64 bit
安装git 64 bit。
安装方法参见:GIT -2.18.0-64.bit 的安装与使用

1.3创建项目目录
从开始菜单启动Anaconda Prompt
创建并更改为您希望用作项目的目录
C:\Users\adminitrator>d:
D:\>mkdir projects
D:\>cd projects
1
2
3
1.4从Github获取最新的Donkeycar
git clone https://github.com/autorope/donkeycar
cd donkeycar
git checkout master
1
2
3
1.5更换国内源
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config –set show_channel_urls yes
1
2
3
1.6更新与删除
conda update -n base -c defaults conda
conda env remove -n donkey
1
2
1.7创建Python Anaconda环境
conda env create -f install\envs\windows.yml
conda activate donkey
pip install -e .[pc]
1
2
3
1.8安装Tensorflow GPU(可选)
如果你有NVidia卡,你应该更新到最新的驱动程序并安装Cuda SDK。

conda install tensorflow-gpu==1.13.1
1
1.9创建工作目录
donkey createcar –path D:/mycar
1
安装keras-vis

pip install keras-vis
1
2.0安装DonkeySim
d:
cd projects
git clone https://github.com/tawnkramer/gym-donkeycar
conda activate donkey
pip install -e gym-donkeycar
1
2
3
4
5
3.0修改相应文件
3.1修改dtypes.py
文件位置:D:\Miniconda3\envs\donkey\lib\site-packages\tensorflow\python\framework\dtypes.py。
修改dtpes.py文件的第526~530、535行。
原:

_np_qint8 = np.dtype([(“qint8”, np.int8, 1)])
_np_quint8 = np.dtype([(“quint8”, np.uint8, 1)])
_np_qint16 = np.dtype([(“qint16”, np.int16, 1)])
_np_quint16 = np.dtype([(“quint16”, np.uint16, 1)])
_np_qint32 = np.dtype([(“qint32”, np.int32, 1)])
np_resource = np.dtype([(“resource”, np.ubyte, 1)])
1
2
3
4
5
6
修改为:

_np_qint8 = np.dtype([(“qint8”, np.int8, (1,))])
_np_quint8 = np.dtype([(“quint8”, np.uint8, (1,))])
_np_qint16 = np.dtype([(“qint16”, np.int16, (1,))])
_np_quint16 = np.dtype([(“quint16”, np.uint16, (1,))])
_np_qint32 = np.dtype([(“qint32”, np.int32, (1,))])
np_resource = np.dtype([(“resource”, np.ubyte, (1,))])
1
2
3
4
5
6
3.2修改train.py文件
文件位置:D:\projects\gym-donkeycar\examples
\supervised_learning\train.py
修改train.py文件的第29行:
原:

matplotlib.use(‘Agg’)
1
修改为:

matplotlib.use(‘TkAgg’)
1
4.0 DonkeySim模拟器的使用
4.1下载DonkeySim模拟器
从Donkey Gym Release下载并解压主机PC平台上可运行的模拟器(DonkeySimWindows.zip)。
将模拟器放在合适的位置。如:~/projects/DonkeySimWindows。

可使用游戏杆/键盘手动驾驶、自动驾驶还可使用训练好的神经网络驾驶,运行界面如下:

选择窗口大小,点击“Play!”进入。

点击“Log dir”可设置记录数据目录。

在主界面点击“Generated Track”,进入我们挑战赛的赛道环境。

可以选择右侧的各种驾驶模式。

这是速度、转向和PD参数设置界面,在自动驾驶时,要设置这些参数,取得好成绩。

4.2设置验证
打开Anaconda Prompt。
使用示例模型来验证设置。

conda activate donkey
d:
cd projects\gym-donkeycar\examples\supervised_learning
python evaluate.py –model=models/example_model.h5
1
2
3
4
启动“DonkeySim”环境。单击“NN Control over Network”按钮。

4.3获取自己的训练数据
现在,你可以尝试根据自己的数据来训练自己的模型。
在模拟器中,按“Exit”进入主菜单。
单击“log dir”按钮并指定一个日志目录以保存数据。例如,你可以选择d:/projects/gym-donkeycar/examples/supervised_learning/log文件夹。
选择Generated Track环境。
单击“Auto Drive w Rec”或“Joystick/Keyboard w Rec”。记录约1万个样本(一圈以上)。查看左下角以查看日志计数。
完成后,单击“Stop”。

4.4训练模型
conda activate donkey
d:
cd projects\gym-donkeycar\examples\supervised_learning
python train.py –inputs=log/*.jpg –model=models/model.h5
1
2
3
4
模型结构可根据自己需要进行修改。
取消train.py文件的第208行注释,显示模型信息。
修改models.py文件(可设置学习率):
在第7行增加:

from tensorflow import keras
1
第57行修改为:

model.compile(optimizer=keras.optimizers.Adam(lr=0.0001), loss=’mse’, metrics=[‘acc’])
1
4.5评估模型
conda activate donkey
d:
cd projects\gym-donkeycar\examples\supervised_learning
python evaluate.py –model=models/model.h5
1
2
3
4
启动模拟器。选择Generated Track环境。单击“NN Control over Network”。

5.0 DonkeySim挑战赛
5.1 DonkeySim挑战赛类别
参加DonkeySim挑战赛的车必须连续不间断跑3圈以上,小车不能压到草坪,不能撞到障碍物,挑战赛共分为三大类:

游戏杆/键盘驾驶(Joystick/Keyboard)
自动驾驶(Auto Drive)
神经网络驾驶(NN Control over Network)
5.2 DonkeySim参赛者提交文件
参加DonkeySim挑战赛的选手,参赛作品必须提交以下文件、数据和视频。

5.2.1选手与作品简介
年龄和性别要真实(便于以后进一步的赛果分类),其他介绍可自由发挥;
参赛者首先应根据已公开(如该类别没有人提交或提交数少于10个)的其他参赛者提交的文件自行进行测试对比,成绩在前十名之内的即可提交,否则请不要提交。
5.2.2数据文件
自行测试成绩以文本文件方式提交;
数据要真实,不得人为编辑修改;
游戏杆/键盘驾驶参赛者提交压缩的原始数据记录(log)文件;
自动驾驶参赛者提交压缩的原始数据记录(log)文件和速度/转向/PD参数截图;
神经网络驾驶参赛者提交文件:
压缩的原始训练数据记录(log)文件
D:\projects\gym-donkeycar\examples\supervised_learning目录下的conf.py和models.py文件
D:\projects\gym-donkeycar\examples\supervised_learning\models目录下的model.h5和model.h5loss.png文件
5.2.3视频文件
游戏杆/键盘驾驶与自动驾驶参赛者提交原始数据记录(log)文件转成的.mp4格式文件,转换方法如下:
首先将DonkeySim内要转换为视频的记录数据(log),复制到D:\mycar\logs文件夹下,并运行下列命令:
conda activate donkey
d:
cd mycar
donkey makemovie –tub=D:\mycar\logs\log –out=log_movie.mp4
1
2
3
4
输出文件名为log_movie,mp4
神经网络驾驶参赛者视频文件的提交是可选的,也必须是.mp4格式的视频文件,请自行用合适的办法解决(参赛者如有好的方法,请共享出来,让大家享用)。
5.3 DonkeySim挑战赛评比方式
DonkeySim挑战赛公开参赛者提交的所有文件,采用自测与公示的方式进行评比,比赛成绩及时更新。比赛规则根据实施情况,听取大家的意见,不定时的更新,所有的原始数据尽量可靠的保存。
————————————————
版权声明:本文为CSDN博主「平衡-JL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wujingyu67971348/java/article/details/101982829

DonkeySim自动驾驶

Published by:

选择“Auto Drive No Rec”或“Auto Drive w Rec”即可进入DonkeySim的自动驾驶模式,开始测试时用“Auto Drive No Rec”方式,不记录数据,等调试稳定后再用“Auto Drive w Rec”方式运行,并记录数据,记录数据时如“DonkeySim游戏杆/键盘驾驶”一文选择记录数据文件夹。

在自动驾驶方式中需要调节如下图所描述的PID控制参数。

自动驾驶“Auto Drive w Rec”方式如下图所示。

————————————————
版权声明:本文为CSDN博主「平衡-JL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wujingyu67971348/java/article/details/102326899

DonkeySim游戏杆/键盘驾驶

Published by:

下载DonkeySim:从Donkey Gym Release下载并解压主机PC平台上可运行的模拟器(DonkeySimWindows.zip)。
解压并将模拟器放在合适的位置。如:D:/projects/DonkeySimWindows。

运行DonkeySim:双击可执行文件DonkeySim.exe即可进入DonkeySim启动界面。

如果取消“Windowed”前面的“勾选”,点击“Play!”进入的是“全屏”界面,否则可在“Screen resolution”下拉列表中选择你想要的分辨率后再点击“Play!”进入。

点击“Log dir”选择记录数据文件夹。

点击“Generated Track”进入赛道环境。

点击“Joystick/Keyboard No Rec”进入“游戏杆/键盘”驾驶操作状态。

按键盘上的“A,S,D,W”键或“上,下,左,右”箭头键即可操控小车的运动,按下“Stop”停止小车的运动,按下“Exit”退出比赛环境。按下“Quit”退出DonkeySim程序。

等熟练操作小车运动后,点击“Joystick/Keyboard w Rec”进入“游戏杆/键盘”驾驶操并记录驾驶数据,录下视频,提交文件,参加DonkeySim挑战赛了。

左下角的“Log”后面的数值为记录的帧数。
————————————————
版权声明:本文为CSDN博主「平衡-JL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wujingyu67971348/java/article/details/102312971

Donkey Car:第3部分 不到250美元资金就能学习自动驾驶

Published by:

学习驾驶Donkey Car的概念图。
绿色是初始的概念,蓝色的中间概念, 黑色是高层次的“完成”概念。

这是系列的第3部分。以下是第1部分和第2部分的链接。经过几天的挣扎,我终于让我的驴车在地下室的轨道周围自动驾驶!这里有一个简短的视频:

所以这就是让我失望的原因。当我将我的模型从我的Mac上传到Pi并运行“驱动器”命令时,加载模型时出错。我一直在重新运行这些步骤并得到了同样的错误。我花了几天才意识到我在Donkey Car上运行旧版TensorFlow(1.8)和更新版本我的MacBook Pro上的TensorFlow 1.12版本。我还在Donkey Car帮助Slack频道上发布了一个问题,他们在使用较新的TensorFlow版本1.12构建的模型上确认不会在较旧版本的TensorFlow上运行。一旦我弄清楚如何在我的Mac上降级TensorFlow(一线pip shell命令),我重新训练,用SCP将我的新模型转移到Pi,我的车开始运行……那是在我意识到我之后将相机镜头盖打开……

我从一个约16K图像的相对较小的训练集开始。TensorFlow 1.12的训练时间为55分钟,TensorFlow 1.8的时间为75分钟。1.8发布于2018年4月。让我们希望DonkeyCar图像很快升级,这样我们都可以利用这些性能改进!我也只是在赛道周围逆时针方向使用了一套测试装置。在真正的比赛中,我会用顺时针和逆时针方向训练赛车。但这也会增加构建模型的时间。

虽然汽车可以绕过轨道,但很容易被地板上的灯光和侧面的其他白色物体的反射所欺骗。这是因为我在地板上只使用了一条白色胶带。这对视觉系统来说还不够用。但是,我不认为我的妻子真的要我画一条宽大的黑色“道路”,中间有黄色条纹,就像官方的Donkey Car轨道一样。

当我终于让汽车在自动模式下工作时,它非常令人满意。但是也有点“怪异”。我实际上“教”了一个小大脑来跟随地板上的线。它几乎似乎模仿我糟糕的驾驶。它甚至学会了如何在直道上加速,并且在紧凑的曲线上减速。真的很酷!

虽然我在TensorFlow和Keras的工作中做过一些工作,但很多步骤都有点抽象。一旦我开始玩驴车,事情就更容易理解了。系统的优势及其弱点都变得清晰。我还意识到,在训练系统(我的MacBook)和推理系统(Pi)之间同步Python和TensorFlow库是一个关键步骤。

在完成所有步骤后,我现在了解了大部分组件,并且我正在构建一个“概念图”,其他人可以使用它来帮助理解他们需要知道什么概念才能让他们的Donkey Car运行。

我现在正在回顾我学到的所有步骤,并将这些步骤与我为当地CoderDojo俱乐部制作概念卡的先前工作相结合。这是博客文章顶部的数字。概念图中的每个方框最终将成为1/2张层压纸,正面有活动和问题,背面有答案。这些在CoderDojo中被称为“寿司卡”,因为它们是比特大小的学习点。以下是“电动机”概念卡的示例图像:

AI赛车联盟的电动概念卡。

我的朋友Jon Herke也有兴趣使用Donkey Cars建立一个“AI赛车联盟”,旨在教孩子们关于人工智能和机器人技术。请继续关注我们是否可以为hackdays建立一个基础和一个为期10周,每周4小时的夏令营类型计划。我们希望让女孩和弱势青年参与这些计划。如果您有兴趣帮助我们入门,请告诉我们。

Donkey Car:第2部分 – 构建,校准和生成培训数据

Published by:

这是我组装的驴车。我所拥有的chasis不符合我订购的3D部分,所以我不得不用一些有机玻璃即兴创作。

这是关于Donkey Car的3部分系列的第2部分。这是第1部分第3部分。在第1部分中,我谈到了如何基于Raspberry Pi启动并运行新的Donkey Car,并使相机连接正常工作。我用RPi Cam Web界面测试了相机,并在我们家的一楼开车,以感受汽车的感觉以及它如何导航。

来自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总线。这些连接的照片如下:

四条线用于在Pi和伺服控制器之间进行通信。黑色为地,红色为+ 5v,黄色和橙色线为SCL(时钟)和SDA(数据)。它们在伺服控制器上清晰标记,您可以看到Pi GPIO接口上的引脚分布。

下一步是转向和加速度计的校准。要做到这一点,我必须SSH到Pi并运行校准。这个过程有点棘手,因为许多电子速度控制器(ESC)有点不同。据记载毛驴车网站在这里。因为我的“停止”频率不正确,我仍然无法让汽车进入倒车状态。最终结果是我们有一个配置文件,可以编码油门的参数和汽车的转向。

一旦完成,我就准备开车绕过测试跑道了。令我妻子懊恼的是,我把地下室的家具搬到了房间的一侧,在地下室的地板上放了一些白色的电工胶带。我们在地板上放了一层很酷的环氧树脂涂层,但白色胶带的对比度很好。

我的驴车示例训练轨道

你还可以看到地板上灯光的很多反射。我们的训练过程必须学会忽略光反射,只能对地板上的白色胶带“注意”。注意力是深度学习的一个重要概念。

然后,我从墙上插头上取下了Pi,并使用我在亚马逊上购买的新型6800 mAH电源组为其供电。我用了一些磁带来固定平台下的电源组。我应该注意,来自ESC的GND和VCC导线确实为RC汽车中使用的2.4GHz接收器中的数字电路供电。然而,这个电流不足以为Pi供电。作为测试,我在Pi运行时将USP电流表连接到汽车上。结果如下图所示:

当前拍摄照片时,USB电流表显示Pi绘图约300mA的图像。在实践中,它的电流范围为300至500mA – 比ESP设计提供的电流大得多。

生成培训数据

一旦我们将所有汽车组装好,我们就可以生成训练数据集了。然后我做了一个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文件对应的图像:

样品160X120像素图像用于训练驴车

然后我将Donkey Car中的图像复制到我的笔记本电脑进行培训。我将在第3部分介绍

Donkey Car:第1部分 -用DIY机器人构建AI社区

Published by:

用DIY机器人构建AI社区:第1部分 – 驴车

使用DIY机器人构建AI社区

这是关于Donkey Car的3部分系列中的第一部。以下是第2 部分第3 部分的链接。

我已经通过CoderDojo计划建立了用于教孩子计算机科学近四年的机器人。这是一次有益的经历,我学到了很多关于构建Arduino套件和简单机器人的知识。我一直在为8-18岁的孩子创造“学习阶梯”,而我的机器人则被5岁以下的儿童在The Works Museum使用。围绕DIY项目构建STEM课程很有趣,也是寻找社区的好方法。你可以在Moving RainbowCoderDojo Robots网站上看到我的一些工作。

随着新的一年,我决定扩展我的舒适区,包括基于Raspberry Pi,Python和机器学习的更复杂的机器人。我的朋友Arun Batchu也通过购买非常酷的NVIDIA Jetson Xavier开发套件来鼓励这一点。不幸的是,我的小机器人不足以运行这个价值90亿的晶体管系统。我认为这对我来说是一个很好的方式来了解最新的图像识别和边缘计算的热门话题。建立一个本地DIY机器人小组也是在明尼阿波利斯地区建立一个更强大的AI社区的一种方式。

对于那些不熟悉Donkey Car项目的人来说,它是一个开源DIY项目,让人们学习实时图像识别和一些AI的基础知识。这辆车的零件大约250美元。这比我的Arduino机器人贵10倍,但它也更强大。在湾区,有超过2,500人参加了DIY Robocars聚会,Donkey Car Slack工作区几乎有多少人在汽车,赛道,算法,机器学习模型和相关主题上有数千个帖子。我们在明尼苏达州还没有像这样的社区,但我希望改变这个!

以下是我开始制作驴车的工作日记。所以他们说…我们参加了比赛!

我在Swarm64的伟大人物的最后一次MinneAnalytics会议上“天赋”了一个Raspberry Pi 3 B + Kit,其中包括Paul McCullugh和Thomas Richter。Swarm64使用FPGA为RDBMS系统提供了出色的加速器。如果你需要一个更快的关系数据库给他们一个电话!

Raspberry Pi套件包括带有PI OS的32GB micro SD卡,电源砖,GPIO分线器以及外壳以及其他一些部件。我添加了一个27美元的SainSmart广角鱼眼摄像头和一个PCA9685 16通道12位PWM伺服电机驱动器以及一辆新的90美元RC车(我还没有测试过)。我使用GPIO使用Thonny Python IDE对LED进行了闪烁测试,并找到了用于控制LED灯条的DMA库。我还在圣路易斯公园的Microcenter购买了两张额外的32GB SD卡,每张 4.99美元。这比我在亚马逊上找到的要少。微中心真的很摇滚!我建议你买几张微型SD卡,这样你就可以进行备份了。

在Arduino的“C / C ++”工作多年之后,我对Pi开始的难度感到有些惊讶。有许多库需要以正确的顺序安装,需要考虑许多版本的Python。Thonney Python IDE很不错,但它缺少我们需要用TensorFlow认真工作的大多数库。好消息是,一旦库设置编码变得非常快。如果您正在使用物理设备进行硬件编程,那么当您对代码进行更改并且必须将其上传到Arduino时,就没有“滞后”。程序立即运行!我认为这可以加快开发速度,特别是当你有大型程序时。

现在进入Donkey Car … Donkey Car网站做得非常好,但它假设UNIX和Pi的背景非常强大。当他们发出指示时,我不清楚我应该在我的新Pi或远程计算机上运行。我花了大约两天时间试图让各种Python和TensorFlow库在Pi上本地工作。虽然我在进步中学到了很多东西,但事实证明这是一个死路一条。只有2GB或RAM的Pi太小了,无法在没有英雄努力的情况下编译庞大的TensorFlow-Keras系统。即使在具有16GB内存的Mac上,我也遇到了基于Bazel的TensorFlow编译系统的bug。Bazel构建框架本身非常复杂,您需要Bazel来编译TensorFlow怪物。做只是没有削减它。我正要放弃。如果像我这样拥有25年UNIX经验的人无法安装这个东西,我怎么能希望培养我14岁的学生呢?

然后我开始意识到,在Donkey汽车上完成的所有事情都假设了一个无头Pi(没有监视器,只是一个SSH访问),并使用他们的磁盘映像,这些映像由Linux和Pi专家精心制作了三年。你需要启动他们的Pi图像,其他一切都有效!你不能将Pi用作开发系统。TensorFlow文档确实这样说,但我没有RTFM。

我努力了解如何基于Donkey图像(包含磁盘映像的zip文件)为Pi构建启动映像。在尝试了NOOBS系统后,我意识到balenaEtcher应用程序正是我所需要的。该应用程序在Windows或Mac上使用非常简单。您只需从Donkey Car网站下载图像zip文件,将新SD卡放入并运行belenaEtcher应用程序。它会提示您输入图像文件(无需解压缩zip文件),它会自动找到SD驱动器然后我点击“Flash”。噗!在短短几分钟内,我就有了经过验证的磁盘映像。

重新启动新SD到我的Pi后,我可以登录并更改wifi设置。再一次重启,我准备好进入我的新驴车。我还设置了静态IP地址,因此每次都会重新连接到同一个IP地址。“/ home / pi / env”目录下的文件计数显示了近13,000个文件。如果你想的复杂细节我把它们放在一个启用评论,谷歌文档文件在这里。随意为该文件添加注释。

我将在发布更新时发布更新,并在其他部分到达后发布。我需要它们来做校准步骤。