Category Archives: DeepPiCar

DeepPiCar2:Raspberry Pi设置和PiCar组装

组装PiCar硬件并安装所有软件驱动程序。让它在客厅里运行

执行摘要

欢迎回来!在本指南中,我们将首先介绍要购买的硬件以及我们需要它们的原因。接下来,我们将对它们进行设置,以便在本文末尾我们将在客厅中运行PiCar。

硬件供应清单

  • 1 x Raspberry Pi 3型号B +套件,带2.5A电源(50美元)这是DeepPiCar的大脑。这款最新型号的Raspberry Pi配备1.4Ghz 64位四核处理器,双频wifi,蓝牙,4个USB端口和一个HDMI端口。我推荐这个套件(仅在Raspberry Pi板上),因为它带有一个电源适配器,你需要在进行非驱动编码和测试时插入,以及两个芯片散热器,这将阻止你的Raspberry Pi CPU过热。
  • 1 x 64 GB micro SD卡(8美元)这是Raspberry Pi操作系统和我们所有软件的存储位置。任何品牌的micro SD卡都应该可以正常工作。你可能只有一个人躺在你的房子周围。32GB也应该没问题。我选择了64 GB,因为我计划在我的汽车行驶时记录大量视频,以便稍后分析其行为,并使用视频在以后的项目中进行深度学习培训。
  • 1 x SunFounder PiCar-V套件(115美元)这是DeepPiCar的主体。确保你得到如上所示的Model V(又名Version 2.0)。除了Raspberry Pi和电池外,它还配备了机器人汽车所需的一切。市场上有很多Raspberry Pi车载套件,我之所以选择这款车载套件是因为它配备了开源python API来控制汽车,而其他供应商则拥有其专有的API或基于C的API。众所周知,python现在是机器学习和深度学习的首选语言。此外,开源很重要,因为如果我们发现API中的错误而不必等待制造商提供软件更新,我们可能会自己修改汽车API的内部。
  • 4 x 18650电池和1 x电池充电器(20美元)您可以获得任何18650电池和兼容充电器。这些电池适用于高耗电应用,例如驱动Raspberry Pi板和PiCar。PiCar只需要两个电池,但你总是想要另外一对新电池,这样你就可以随时保持你的车在轨道上运行。我建议晚上给两套充电,这样你就不必担心测试过程中电池没电了。
  • 1个Google Edge TPU USB加速器(75美元)每个英雄都需要一个伙伴。谷歌的边缘TPU(Edge意味着它适用于移动和嵌入式设备,而TPU代表Tensor处理单元)是Raspberry Pi板的绝佳附件。虽然Pi CPU在很小的捆绑中包含了大量的计算能力,但它并不是为深度学习而设计的。另一方面,Google新发布的Edge TPU(2019年3月)专门用于运行用TensorFlow编写的深度学习模型。在本系列的第6部分中,我们将在TensorFlow中构建一个实时交通标志检测模型。这个模型深200多层!仅在Raspberry Pi的CPU上运行此模型只能处理每秒1帧(FPS),这几乎不是实时的。此外,它消耗100%的CPU并使所有其他程序无响应。但在Edge TPU的帮助下,我们现在可以处理12个FPS,这对于实时工作来说已经足够了。我们的CPU保持冷却,可用于执行其他处理任务,如控制汽车。
  • 套迷你交通标志(15美元)和一些乐高小雕像。如果您的年轻人在游戏室中有一些玩具标志和乐高小雕像,您可能不需要购买它们。你可以使用你发现的任何标志来训练模型,只要确保它们不是太大了
  • (可选)1 x 170度广角USB相机(40美元)。这是一个可选配件。我买了它来取代SunFounder PiCar附带的相机,这样汽车就可以拥有广阔的视野。相机很棒,但不像我喜欢的广角,它不能看到前轮前面3-4英寸的车道线。我最初使用相机拍摄了第4部分中的代码。在尝试了几个镜头后,我发现这款广角相机的精度和稳定性大大提高了。控制硬件和软件(与在汽车模拟器中运行汽车相比)是很好的,因为如果单独通过软件无法轻易解决问题,您可以采用硬件修复。
  • USB键盘/鼠标和带HDMI输入的显示器。在Pi的初始设置阶段,您只需要这些。之后,我们可以通过VNC或Putty远程控制Pi。
  • 运行Windows / Mac或Linux的台式机或笔记本电脑,我将在此处称之为“PC”。我们将使用此PC远程访问并将代码部署到Pi计算机。

有时候,我的惊喜是Raspberry Pi,我们汽车的大脑只有30美元左右,比我们的许多其他配件便宜。事实上,随着时间的推移,硬件变得越来越便宜,而且软件完全免费且丰富。难道我们不是生活在一个伟大的时代吗?!

这是组装完成后的最终产品。我在这里使用广角相机。

Raspberry Pi设置

Raspberry Pi操作系统设置(1小时)

  • 按照这个优秀的分步指南,将NOOBS Raspbian操作系统(各种Linux)安装到micro SD卡上。它需要大约20分钟和大约4GB的磁盘空间。安装并重新启动后,您应该看到如下所示的完整GUI桌面。这感觉就像你在Windows或Mac GUI环境中,不是吗?
  • 在安装过程中,Pi会要求您更改默认用户的密码pirasp例如,我们将密码设置为。
  • 初始安装后,Pi可能需要升级到最新的软件。这可能需要10-15分钟。

设置远程访问

设置远程访问允许Pi计算机无头运行(即没有显示器/键盘/鼠标),这使我们无需一直连接显示器和键盘/鼠标。该视频提供了有关如何设置SSH和VNC远程访问的非常好的教程。无论如何,这是步骤。

  • 打开终端应用程序,如下所示。终端应用程序是一个非常重要的程序,因为后面文章中的大多数命令都将从终端输入。
  • 通过运行找到Pi的IP地址ifconfig。在这种情况下,我的Pi的IP地址是192.168.1.120
pi @ raspberrypi:〜$ ifconfig | grep wlan0 -A1
wlan0:flags = 4163 <UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.120 netmask 255.255.255.0 broadcast 192.168.1.255
  • sudo raspi-config在终端中运行以启动“Raspberry Pi软件配置工具”。系统可能会提示您输入用户密码pi
  • 启用S​​SH服务器:选择5. Interface Options– > SSH– >Enable
  • 启用VNC服务器:选择5. Interface Options– > VNC– >Enable
  • 下载RealVNC Viewer并将其安装到您的PC上。
  • 使用Real VNC Viewer连接到Pi的IP地址。您将看到与Pi正在运行的桌面相同的桌面。
  • 此时,您可以安全地断开显示器/键盘/鼠标与Pi计算机的连接,只需插入电源适配器即可。

设置远程文件访问

由于我们的Pi将无头运行,我们希望能够从远程计算机访问Pi的文件系统,以便我们可以轻松地将文件传输到Pi计算机或从Pi计算机传输文件。我们将在Pi上安装Samba文件服务器。

pi @ raspberrypi:〜$ sudo apt-get update && sudo apt-get upgrade -y
获取:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB] 
软件包[45.0 kB] 
[省略...] 
解压缩lxplug-ptbatt(0.5)over(0.4)... 
设置lxplug-ptbatt(0.5)... 
pi @ 




raspberrypi :〜$ sudo apt-get install samba samba-common-bin -y读取包列表...完成构建依赖树        [省略...] 处理libc-bin的触发器(2.24-11 + deb9u4)... 处理触发器为systemd(232-25 + deb9u11)... pi @ raspberrypi :〜$ sudo rm / etc /samba/smb.conf pi @ raspberrypi:〜$ sudo nano /etc/samba/smb.conf

然后将以下行粘贴到nano编辑器中

[global] 
netbios name = Pi
服务器字符串= PiCar文件系统
工作组= WORKGROUP

[HOMEPI]
路径= / home / pi
comment =无评论
browsable = yes
writable =是
创建掩码= 0777
目录掩码= 0777
public = no

通过Ctrl-X保存并退出nano,单击是以保存更改。

然后设置Samba服务器密码。为简单起见,我们将使用与raspSamba服务器密码相同的内容。设置密码后,重新启动Samba服务器。

#create samba密码
pi @ raspberrypi:〜$ sudo smbpasswd -a pi
新的SMB密码:
重新输入新的SMB密码:
添加了用户pi。#re restart samba server
pi @ raspberrypi:〜$ sudo service smbd restart

此时,您应该能够通过Pi的IP地址(My Pi的IP为192.168.1.120)从PC连接到Pi计算机。转到您的PC(Windows),打开命令提示符(cmd.exe)并键入:

#将Pi主目录挂载到R:PC上的驱动器
C:> net use r:\ 192.168.1.120 homepi
命令成功完成。
C: Users dctia> r:C:> dir r:
驱动器R中的
卷是HOMEPI 卷序列号是61E3-70FF 目录R: 05/02/2019 03:57 PM <DIR>。
04/08/2019 04:48 AM <DIR> ..
04/08/2019 05:43 AM <DIR> Desktop
04/08/2019 05:43 AM <DIR> Documents
04/08/2019 05:43 AM < DIR>下载
04/08/2019 05:15 AM <DIR> MagPi
04/08/2019 05:43 AM <DIR> Music
05/02/2019 03:43 PM <DIR>图片
04/08/2019 05:43 AM <DIR> Public
04/08/2019 05:43 AM <DIR>模板
04/08/2019 05:43 AM <DIR>视频
0文件0字节
11 Dir(s )22,864,379,904字节免费

事实上,这是我们的Pi计算机文件系统,我们可以从它的文件管理器中看到。这将非常有用,因为我们可以直接从我们的PC编辑驻留在Pi上的文件。例如,我们可以使用PyCharm IDE首先在Pi上编辑Python程序,然后使用Pi的终端(通过VNC)来运行这些程序。

如果你有一台Mac,这里是如何连接到Pi的文件服务器。按Command-K打开“连接到服务器”窗口。输入网络驱动器路径(替换为Pi的IP地址),即smb://192.168.1.120/homepi,然后单击“连接”。输入登录名/密码,即pi / rasp,然后单击“确定”以安装网络驱动器。然后,驱动器现在将显示在桌面和Finder窗口侧栏中。有关Mac上更深入的网络连接说明,请查看此优秀文章

安装USB摄像头

USB摄像头的设备驱动程序应该已经配备了Raspian OS。我们将安装摄像机查看器,以便我们可以看到实时视频。

  • 将USB相机从PiCar套件中取出并插入Pi计算机的USB端口
  • sudo apt-get install cheese从终端运行安装“奶酪”,相机查看器。
pi @ raspberrypi:〜$ sudo apt-get install cheese -y
读取包列表...完成
构建依赖关系树
读取状态信息...完成
....
cheese是最新版本(3.22.1-1)。
  • 通过Raspberry Pi button(Top Left Corner)– > Sound & Video– > 启动奶酪应用程序Cheese您应该看到如上图所示的实时视频源。

SunFounder PiCar-V软件配置(偏离手册)

在组装PiCar之前,我们需要安装PiCar的python API。SunFounder发布了其Python API的服务器版本和客户端版本。客户端API代码用于远程控制PiCar,在您的PC上运行,它使用Python版本3.服务器API代码在PiCar上运行,遗憾的是,它使用的是Python版本2,这是一个过时的版本。由于我们编写的自驱动程序将专门在PiCar上运行,因此PiCar Server API也必须在Python 3中运行。幸运的是,SunFounder的所有API代码都是Github上的开源代码,我制作了一个分支并将整个仓库(服务器和客户端)更新为Python 3.(我将很快将我的更改提交给SunFounder,因此它可以合并回到主要回购,一经SunFounder批准。)

暂时,运行以下命令(粗体),而不是SunFounder手册中的软件命令。您不必在本手册的第20-26页上运行命令。

#将所有对python(版本2)的调用路由到python3,
#pip(版本2)到pip3,即使在sudo模式下
#note:`sudo abcd`在管理员模式下运行`abcd`命令
alias python = python3
alias pip = pip3
alias sudo ='sudo'
#下载修补的PiCar-V驱动程序API,并运行它的设置
pi @ raspberrypi :〜$ cd pi @ raspberrypi:〜$ git clone https://github.com/dctian/SunFounder_PiCar.git
克隆到' SunFounder_PiCar'...
remote:枚举对象:9,完成。
remote:计数对象:100%(9/9),完成。
remote:压缩对象:100%(9/9),完成。
remote:总计276(delta 0),重用2(delta 0),pack-reused 267
接收物体:100%(276/276),53.33 KiB | 0字节/秒,完成。
解决增量:100%(171/171),完成。
pi @ raspberrypi:〜$ cd~ / SunFounder_PiCar / picar /

pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ git clone https://github.com/dctian/SunFounder_PCA9685.git
克隆到'SunFounder_PCA9685'...
remote:枚举对象:7,完成了。
remote:计数对象:100%(7/7),完成。
remote:压缩对象:100%(5/5),完成。
远程:总计87(delta 2),重用6(delta 2),pack-
reused 80 Unpacking对象:100%(87/87),完成。pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ cd~ / SunFounder_PiCar /
pi @ raspberrypi:〜/ SunFounder_PiCar $ sudo python setup.py install
将SunFounder-PiCar 1.0.1添加到easy-install.pth文件
中将picar脚本安装到/ usr / local / bin
[省略....] #下载修补后的PiCar-V应用程序
#并安装相关软件
pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ cd
pi @ raspberrypi :〜$ git clone https://github.com/dctian/SunFounder_PiCar-V.git
克隆到'SunFounder_PiCar-V'...
remote:枚举对象:969,完成。
remote:总计969(delta 0),重用0(delta 0),pack-
reused 969 接收对象:100%(969/969),9.46 MiB | 849.00 KiB / s,完成。
解决增量:100%(432/432),完成。pi @ raspberrypi:〜$ cd SunFounder_PiCar -V pi @ raspberrypi:〜/ SunFounder_PiCar-V $sudo ./install_dependencies
将sunFounder-PiCar 1.0.1添加到easy-install.pth文件
中将picar脚本安装到/ usr / local / bin 安装/usr/local/lib/python2.7/dist-packages/SunFounder_PiCar-1.0.1- py2.7.egg
处理SunFounder-PiCar的依赖关系== 1.0.1
完成SunFounder-PiCar的处理依赖关系== 1.0.1
完成
将MJPG-Streamer复制到备用位置。完成
Enalbe I2C。完成安装结果:
django成功
python-smbus成功
python-opencv成功
libjpeg8-dev成功
你需要更改的东西可能需要重启才能生效。
你想立即重启吗?(是/否)是的

回答是,提示重启时。重新启动后,应安装所有必需的硬件驱动程序。我们将在汽车装配后测试它们。

PiCar大会

装配过程密切重新组装构建复杂的乐高套装,整个过程大约需要2个小时,手眼协调很多,并且很有趣。(您甚至可能在施工阶段让您的年轻人参与其中。)PiCar Kit附带一份印刷的逐步说明手册。但我推荐这两个额外的资源。

  • 教学手册的PDF版本。打印手册很小,图表可能打印得不是很清楚,而PDF版本非常清晰,可以搜索和放大以获得更多细节。我发现在组装阶段我的笔记本电脑上的PDF非常有帮助。
  • 由SunFounder发布的YouTube 4部分教学视频。不幸的是,这些视频适用于较旧版本的PiCar,因此某些部件(如伺服电机组件)不同。但大多数零件和装配技术都是一样的。因此,如果您对装配手册中的特定图表感到头疼,您可能需要查看视频的相关部分。我希望SunFounder能够为新的PiCar-V套件发布一组新的视频。

旧版PiCar的装配视频(4个部分),一个有用的参考

当橡胶遇上这条路!

现在PiCar的所有基本硬件和软件都已到位,让我们尝试运行它!

  • 通过VNC从PC连接到PiCar
  • 确保有新电池,将开关拨到ON位置并拔下micro USB充电线。请注意,您的VNC远程会话应该仍然有效。
  • 在Pi终端中,运行以下命令(以粗体显示)。你应该:
  1. 看到汽车行驶得更快,然后发出时减速 picar.back_wheel.test()
  2. 当发出时,看到前轮转向左,中间和右侧picar.front_wheel.test()。要停止这些测试,请按Ctrl-C。要退出python程序,请按Ctrl-D。
pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ python3 
Python 3.5.3(默认,2018年9月27日,17:25:39)
[GCC 6.3.0 20170516]关于linux输入
“help”,“copyright”,“credits”或“许可证”了解更多信息。>>> 导入picar
>>> picar.setup() >>> picar.front_wheels.test()
DEBUG“front_wheels.py”:设置调试关闭
DEBUG“front_wheels.py”:设置轮调试关闭
DEBUG“Servo.py” :设置调试关闭
turn_left
turn_straight
turn_right >>> picar.back_wheels.test()
DEBUG“back_wheels.py”:设置调试关闭
DEBUG“TB6612.py”:

DEBUG“PCA9685.py”:设置调试关闭
前进,速度= 0
前进,速度= 1
前进,速度= 2
前进,速度= 3
前进,速度= 4
前进,速度= 5
前进,速度= 6
前进,速度= 7
前进,速度= 8
前进,速度= 9
前进,速度= 10
前进,速度= 11
  • 如果您遇到错误或看不到车轮移动,那么您的硬件连接或软件设置有问题。对于前者,请仔细检查您的电线连接,确保电池充满电。对于后者,请在评论部分发布一条消息,其中包含您遵循的详细步骤和错误消息,我将尽力提供帮助。

下一步是什么

恭喜你,你现在应该有一个PiCar,可以看到(通过奶酪),并运行(通过python 3代码)!它还不是一款深度学习车,但我们正在努力实现这一目标。每当你准备好的时候,请继续前进到第3部分,在那里我们将为PiCar提供计算机视觉和深度学习的超级大国。

以下是整个指南的链接:

第1部分:概述

第2部分:Raspberry Pi设置和PiCar组装(本文)

第3部分:让PiCar看到并思考

第4部分:通过OpenCV进行自主车道导航

第5部分:通过深度学习进行自主车道导航

第6部分:交通标志和行人检测和处理

DeepPiCa1:如何建立一个深度学习,自动驾驶机器人汽车的预算

介绍

如今,特斯拉,谷歌,优步和通用汽车都在努力创造自己的自动驾驶汽车,可以在现实世界的道路上行驶。许多分析师预测,在未来5年内,我们将开始在我们的城市中运行全自动驾驶汽车,并且在30年内,几乎所有汽车都将完全自主。使用大家伙使用的一些相同技术来制造你自己的自动驾驶汽车不是很酷吗?在本文和接下来的几篇文章中,我将指导您如何从头开始构建自己的物理,深度学习,自动驾驶机器人汽车。您将能够在一周内检测并跟踪车道,识别并响应交通标志和路上的人。以下是您最终产品的预览。


来自DeepPiCar的DashCam的车道跟随(左)和交通标志和人员检测(右)

我们的路线图

第2部分:我将列出要购买的硬件以及如何设置它们。简而言之,您将需要一个Raspberry Pi板(50美元),SunFounder PiCar套件(115美元),Google的Edge TPU(75美元)以及一些配件,以及每个部件在后续文章中的重要性。这些材料的总成本约为250-300美元。我们还将安装Raspberry Pi和PiCar所需的所有软件驱动程序。

Raspberry Pi 3 B +(左),SunFounder PiCar-V(中),Google Edge TPU(右)

第3部分:我们将设置所需的所有计算机视觉和深度学习软件。我们使用的主要软件工具是Python(用于机器学习/ AI任务的事实上的编程语言),OpenCV(一个功能强大的计算机视觉包)和Tensorflow(谷歌流行的深度学习框架)。注意我们在这里使用的所有软件都是免费的开源软件

第4部分:通过(繁琐的)硬件和软件设置,我们将直接进入FUN部分!我们的第一个项目是使用python和OpenCV教DeepPiCar通过检测车道线并相应地转向,在绕行的单车道道路上自主导航。

第5部分:我们将训练DeepPiCar自动导航,而不必像我们在第一个项目中那样明确地编写逻辑来控制它。这是通过使用“行为克隆”来实现的,我们只使用道路视频和每个视频帧的正确转向角来训练DeepPiCar自行驾驶。该实施的灵感来自NVIDIA的DAVE-2全尺寸自动驾驶汽车,它使用深度卷积神经网络来检测道路特征并做出正确的转向决策。

最后,在第6部分:我们将使用深度学习技术,如单镜头多盒物体检测转移学习,教DeepPiCar检测道路上的各种(微型)交通标志和行人。然后我们将教它停在红灯和停车标志,继续绿灯,停下来等待行人过马路,并根据张贴的速度标志等改变其速度限制。

条件

以下是这些文章的先决条件:

  • 首要的是愿意修补和破坏事物。与汽车模拟器不同,汽车模拟器中的一切都是确定性且完全可重复的,真实世界的模型汽车可能无法预测,您必须愿意亲自动手并开始修补硬件和软件。
  • 基本的Python编程技巧。我假设您知道如何在python中读取python代码和编写函数,if语句和循环。我的大部分代码都有详细记录,特别是难以理解的部分。
  • 基本的Linux操作系统知识。我将假设您知道如何在Linux中的Bash shell中运行命令,这是Raspberry Pi的操作系统。我的文章将告诉您确切的运行命令,运行它们的原因以及输出结果。
  • 最后,购买所有硬件和工作PC(Windows / Mac或Linux)需要大约250到300美元。同样,所有使用的软件都是免费的。

进一步思考[可选]

这是可选的阅读,因为我试图涵盖我在文章中需要知道的所有内容。但是,如果你想深入学习深度学习(双关语),除了我在整篇文章中提供的链接之外,还有一些资源需要检查。

Andrew Ng关于Coursera的机器学习和深度学习课程。正是这些课程点燃了我对机器学习和人工智能的热情,并给了我创建DeepPiCar的灵感。

  • 机器学习(免费):本课程涵盖传统的机器学习技术,如线性回归,逻辑回归和支持向量机等,以及神经网络。它创建于2012年,所以它使用的一些工具,即Matlab / Octave,已经过时了,并没有谈论深度学习。但它教给你的概念非常宝贵。你只需要高中水平的数学和一些基本的编程技巧来完成课程,而Ng博士非常好地解释了像反向传播这样的困难概念。完成本课程大约需要3个月。
  • 深度学习5门课程专业(如果你想获得证书,免费或50美元/月):该课程于2018年初推出。因此它涵盖了迄今为止所有最新的人工智能研究,如完全连接的神经网络,卷积神经网络(CNN)和序列模型(RNN / LSTM)。这个课程对我来说是一种享受。作为一名工程师,我总是想知道一些很酷的小工具是如何工作的,比如Siri如何回答你的问题,以及汽车如何识别路上的物品等等。现在我知道了。完成这个5门课程专业需要大约3-4个月。

下一步是什么

这是第一篇文章的全部内容。我会在第2部分见到你,我们会弄脏手,一起制造一辆机器人车!

以下是整个指南的链接:

第1部分:概述(本文)

第2部分:Raspberry Pi设置和PiCar组装

第3部分:让PiCar看到并思考

第4部分:通过OpenCV进行自主车道导航

第5部分:通过深度学习进行自主车道导航

第6部分:交通标志和行人检测和处理