———— 用 Processing 的 Android 模式编程
一、小车平台选择
前面已经完成了手机和手机之间的 Wifi 通讯,实现了用一个手机采集图像,并传输到另一个手机上显示,同时实现了双向数据通讯,这样,“带视频监控的Wifi 控制智能小车”基础已经有了,下面就在此基础上实现一个小车的操控。
首先,选择一个小车平台,我所选用的是基于“轮式驱动单元”和舵机组合的单轮驱动小车平台,因为这种驱动方式的小车转向和行走的控制是完全独立的,控制算法比较简单。轮式驱动单元集成了电机PWM驱动和简单的码盘反馈部分,用 TTL 电平的 IO 口可以方便的控制,选择任何一个单片机核心板就可以驱动,无须增加任何额外的部件,简单、方便。
轮式驱动单元的码盘精度虽然一般,只有 2.51mm/脉冲,但为控制行走距离提供了可能,再低精度的码盘也比延时控制精确。
因为是通过 Wifi 用 UDP 协议实现控制,会有丢包和延时的可能,操控命令实时性和可靠性均不高,所以基于这种模式的操控,应尽量采用非连续的操作模式,即一个命令小车只行走一段距离,或者是一个有限的转向,控制端根据反馈确定下一步操作。而不是用一个命令启动小车运行,再根据反馈发送停止命令,这样如果发生丢包或延时,小车的行为将失控。
为了便于交流,选择了最流行的 Arduino Nano 控制板作为驱动板,一方面是编程方便,另一方面Arduino 有现成的舵机驱动函数。
为了便于轮式驱动单元的使用,发挥其全部功能,我尝编写了一个驱动轮式驱动单元的 Arduino 库。不是很完善,欢迎吐槽!不过 Arduino的库编写还是很方便的,赞一个!
因为轮式驱动单元、舵机和Arduino 控制板均可以5V工作,所以选择了手机移动电源作为小车电源,这样充电很方便,电压输出也稳定,还不重复投资^_^
小车部分的详细介绍见前面的博文“单轮驱动小车平台硬件介绍”,此处不再赘述。
二、整体构思
这是用PC作为操控端的 Wifi智能小车框图: