可实现自动驾驶和人脸识别-基于树莓派的智能机器人小车

2019年11月06日 作者:Teardown

在学习电子工程专业的四年级时,我决定为上学期参加的课程付诸行动制作一个机器人。我着迷于我们可以通过简单的数学运算来完成的事情,这些运算由Matlab等程序或Python等编程语言的计算能力提供支持。

开发的主要应用包括用于自动驾驶的机器学习,用于语音识别,远程控制远程信息处理,增强现实和QR码识别以及面部识别,并且为此我需要开发了一个Android应用来控制机器人。

该机器人基于配置有自定义Wheezy OS的Raspberry Pi B +型。我有一个WiFi卡,用于创建自己的网络以进行远程连接和远程控制。这样,开发板就可以连接到计算机,并访问开发板和arduino中包含的远程信息处理数据。通信连接是基于SSH的,更新可以通过互补的TCP协议发送到主板。

树莓派显然已经具备我想要实现的基本功能(自动驾驶和图像处理),因此采用这种方式只可以处理外部计算机中的内容,然后让机器人行动。因此,主要的机器人应用程序将在机器人外部的计算机中运行,并且该机器人将长期充当机器的“人偶”。这样,我们还可以使用操纵杆远程控制机器人,并获取自动驾驶所需的远程信息处理数据。这以较低的成本解决了处理能力的问题,使我们能够测试更高级的算法,例如VGG16神经体系结构。

该机器人能够在以下方面提供远程信息处理信息:

  • RGB图像以60 FPS的视频馈送,分辨率为1080 x 720
  • 基于PWM脉冲频率的车轮转速
  • 摄像机的伺服角度和目标位置
  • 相机麦克风的单声道音频输入
  • Raspberry PI中包含的任何信息,例如存储的图像,文件和GPIO数据

自动驾驶

对于自动驾驶部分,我们主要使用VGG16网络。这意味着我们删除了对图像特征进行分类的密集网络,并用我们自己的网络代替,该网络可以提供所需的车轮速度作为输出。为了进行训练,我用纸条在我公寓的地板上画了一条电路,并配置了机器人进行远程控制。我通过不同的电路对机器人进行了操纵,以确保每经过几步就对其进行更改。结果是一个庞大的数据集,其中包含图像信息和每帧记录的车轮速度。我们花了几个小时在我大学的计算机超强GPU上训练了神经网络。考虑到图像的网络传输和处理中的延迟,其结果是对自动驾驶是一个很好的推荐,其速度相当合理。每帧花费80毫秒来处理黑白大小调整后的图像。未来的测试将包括用于RGB处理的更快的GPU和更完善的神经网络。

人脸识别

机器人的另一个应用是识别人脸。当我介绍机器人时,这也是最吸引人的地方。该人脸识别算法是众所周知的人脸识别算法,它使用Python编码的类似Haar的功能。一旦找到面部,伺服器就会移动,以使面部在相机中居中。简单但很有效,对许多人来说显然很友好。像这样的简单交互可以确保人类和机器人有基本的互动,认为机器人是平易近人的,而不是外星人。

 

版权声明:电路城原创编译,翻译自Hackaday,转载请注明出处!

相关文章

tracer