从晶元到人工智能

    返回首页    发表留言
本文作者:李德强
          第三节 功能设计
 
 

        在这一节里,我们来对整个智能小车项目做一个整体的功能设计。做一个可以运动的小车简单,但是做一个可能任由我们随心控制的智能小车就不是那么容易了。在上一节中,我们对项目中需要用到的技术方案做了一些简要的说明,现在我们就要针对整个项目做一下功能说明。首先,我们可以将智能小车项目划分为以下四个部分:

  • 车体
  • 上位机
  • 云服务
  • 第三方云服务

        针对这四个大的模块,我们分别来介绍:

一、车体

        小车的车体是整个项目中最前端的部分,也就是说,我们整个项目会从小车的制作开始。而且小车是一个真正软硬结合的智能硬件设备,其中包含了小车的外观结构、动力系统、传感器系统、数据采集系统、自动化控制系统。

        1.结构:我们采用上一节中所描述的两个电动机做为主动轮,一个万向轮做为辅助轮的方案。这个方案其实是一量三轮车,但这个好处是我们可以通过控制两个车轮的运动方向直接作出小车的前进、后退、原地左转、原地右转的动作。

        2.动力:动力系统我们采用3节18650锂电池,也就是12V电源电压。电机我们采用带有编码计数器的N20减速电机。其减速比为1:210,也就是说电机主轴转动210周,车轮转动1周。采用大减速比的电机优点是电机力矩大、小车的载重大、行进稳定,对小车的异常反应时间足够。缺点是小车的运行速度较低。

        3.传感器:关于小车航向控制方面,我们需要使用一个MPU6050电子陀螺仪,MPU6050是一款6轴传感器,包括3轴陀螺仪和3轴加速度计。此外,我们还需要一个超声波测距传感器HC-SR04,这个传感器可以通过计算超声波发出之后,遇到障碍物返回后的时间间隔来计算前方物体到小车的距离。最后我们还需要使用一个摄像头用于小车的视觉,以便我们实际小车对人像的识别与跟踪。

        4.控制系统:实际上我们的控制系统分为三个子系统:电源子系统、控制子系统、业务子系统。

        严格来说,电源应该包含在动力系统当中,但我们需要自行制作一个电源模块接入12V电源,并为电机和控制电路板供电。所以就将电源子系统归为控制系统当中。

        控制子系统主要有三个功能:传感器的数据采集,自动化控制和驱动电机转动。

        由于我们的业务系统采用的是NanoPi平台的Arm Linux系统,其处理器、内存、接口等资源更丰富一些,因此我们将其作为业务处理器,并接入一个USB摄像头,作为小车的眼睛,并将摄像头的视频数据实时传入到上位机,再经由上位机进行人像的识别和响应,最后生成相应的响应指令传回业务系统,并进行控制指令化回传给控制系统。当然,我们也可以直接在NanoPi上完成一些比较复杂的业务功能,例如路径规划,自动航线等等。

二、上位机

        上位机程序我们准备使用Qt开发框架来完成图形化的界面程序,通过友好的用户界面(User Interface简称UI)。基本功能大致分为:前进、后退、左转、右转、转身、语音输入、人像跟踪等。

        除用户界面之外的,我们需要为上位机完成对下位机数据的接收和控制,以及向云服务器发送小车的相关数据,例如视频数据、音频数据、指令数据、传感器数据等等,以便云服务器将这些数据保存到大数据平台或关系数据库当中。

三、云服务

        云服务我们需要搭建一个JavaWeb服务器并集成一个MySQL数据库用于为上位机程序提供Web服务,接收并保存小车的相关数据。

        此外,我们还需要搭建一个大数据平台,保存小车的视频和音频数据。

        有了这两个云服务,我们就可以将小车的所有数据上传到云端,并根据这些数据对小车进行有效的监控和分析,对小车以往的数据进行回显,甚至可以在异地远程控制小车。

图、云服务、远程操控 

四、第三方云服务

        我们需要使用两个第三方云服务,一个是语音识别服务,另一个是基于图片的人像识别服务。这两个服务都是基于现在比较流行的深度学习框架下的应用服务。我们在后续的章节中会详细说明, 这里不做过多的介绍。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2023 问渠网 辽ICP备15013245号