基于安卓系统农业智能移动机器人的系统设计
2018-08-10初留珠白皓然王方艳郭若皓
初留珠,白皓然,李 娟,王方艳,郭若皓,孙 阳
(青岛农业大学 机电工程学院,山东 青岛 266109)
0 引言
针对提高农业移动机器人远程控制的便捷性、安全性和可操作性,提出了一种应用于安卓智能手机上的移动智能机器人遥控系统的方案。目前,美国和德国在机器人的研究中处于领先地位,开发了各种类型的农业机器人[1]。尤其近年来,随着网络智能技术的高速发展,推动了多功能农业机器人更广泛地为农业服务[2]。
目前,经过多年开发和研究,各种性能的农业机器人层出不穷,如采摘机器人、移栽机器人、扦插机器人及嫁接机器人等[3]。丹麦农业方面科学家对农田除草的机器人做了深入的研究。该机器人利用15种参数来描述杂草和布局的环境因子情况,杂草定位通过GPS来实现[4]。到了20世纪末,经过几年的努力,对农业机器人的研究也取得了不错的成绩,如草莓采摘机器人及喷药机等[5]。2005年,中国农业大学设计出了套管式蔬菜嫁接机器人[6];2009年,东北农业大学研究了果实采摘机械手及其控制系统[7];2011 年,中国农业大学成功研究了黄瓜采摘机器人,基于深度学习和图谱识别完成黄瓜的采摘[8]。本文研究利用安卓系统实现手机远程遥控操作,采用WiFi模式及其4G网络实现与ARM的通讯,进而完成农业环境信息的智能感知和图谱识别,构建靶向目标的可视化操作。
1 机器人硬件部分
硬件的核心部分是STM32F407单片机,主要由多个重要的模块组合成,包括供电模块、L298N电机驱动模块、电动推杆模块、HLK——RM04海陵型WiFi模块和视频采集模块、LM2596S稳压模块及机械臂模块等,如图1所示。
图1 硬件组成的整体框架
1.1 电源供电模块稳压电路
农业智能机器人在农田完成作业任务时,地面阻力较大,因此本设计采用两个电源来对该移动机器人持续地提供能量。设计移动机器人小车电源电压为12V,小车携带电池的总容量为6 000mA/h;选用STM32作为该机器人的单片机,单片机电源电压为5V,单片机的电源电池容量为2 200mA/h。两种电源应用零欧姆的电阻单点共地的工作方式,使得电源能够源源不断地提供3.3V的电压供给STM32单片机,保障其正常地工作。
1.2 小车L298N电机驱动模块
本文设计的农业机器人选择大电流电机驱动芯片,采用15引脚封装;内含有两个H桥的高电压大电流全桥式驱动器,能够用来驱动直流电动机和进步电动机。 本系计划配有4个直流电动机,电动机选用的是掌控直流减速电机,L298N电机进行机器人的驱动。因为负责驱动机器人的电机需要特别大的功率,所以要通过单片机发出相应的PWM信号增加L298N驱动电电路,从而实现对小车、发动、前进及停止的控制。
1.3 控制继电器模块的H桥模块
本文设计的智能移动机器人的驱动系统由控制器、电机驱动模块及电机3个主要部分组成,确保了电动机驱动体系拥有高转矩质量比、宽调速范畴和高可靠性。系统采用了易控制、高性能、供电便利的直流电机驱动模块,利用H全桥电路实现电机驱动功能,利用H桥驱动实现主电机正向和反向驱动,通过控制不同开关的连接,即可实现电动机正反向驱动。
1.4 IP网络摄像头模块和图谱识别
摄像头能实现远程监控是本系统实现远程控制的关键技术之一。本设计选择 IP网络摄像头作为移动机器人的视觉传感器,只需要1个电源,通过局域网和设定的服务器将摄像头的实时视频镶嵌到自己的APP界面中,输送到手持手机中,然后使用OPENCV进行图像的识别和处理。IP网络摄像头源码如下:
//监听服务器发来的消息,获取输入输出视频流:
private Runnable mRunnable = new Runnable()
{
public void run() { try {
mSocketClient = new Socket(sIP, port);
mBufferedReaderClient = new
BufferedReader(new
InputStreamReader(mSocketClient.getInputStream()));mPrintWriterClient = new PrintWriter(mSocketClient.getOutputStream(), true);handler.sendMessage(msg);} catch (Exception e) {return;}}}
// 设置视频可见
private void setViewVisible() {
if (bProgress) {
bProgress = false;
progressView.setVisibility(View.INVISIBLE);
getCameraParams();
}
}
private void getCameraParams() {
NativeCaller.PPPPGetSystemParams(strDID, ContentCommon.MSG_TYPE_GET_CAMERA_PARAMS);
}
private Handler msgHandler = new Handler() {
public void handleMessage(Message msg)
{
if (msg.what == 1) {
Log.d("tag", "断线了");
Toast.makeText(getApplicationContext(), R.string.pppp_status_disconnect,
Toast.LENGTH_SHORT).show();
finish();
}
}
};
1.5 WiFi模块和通讯接口
本系统设计的移动机器人是利用手持安卓手机操控、用WiFi模块进行连接,通过TCP链接实现手机客户端与单片机之间进行无线通信。
WiFi模块相当于设置系统的无线路由器,接有1个网络摄像头,借助于WiFi来实现命令的收发,再把相应的命令传递给单片机;单片机对指令经过分析和处理,利用通信接口控制移动机器人、机械臂舵机及网络摄像头等各个模块完成各项作业任务。
1.6 机械臂模块
作为一种多功能智能移动机器人,它可以灵活地移动到指定的目标位置来把握对象,从而很容易地扩展;扭转到各个不同的姿势,有时候考虑到目标物在狭小的空间中,还要方便、灵活、有效地避让障碍物。考虑到还有底盘的移动及机械臂的质量,本系统设计了手、臂、肩3个自由度。
2 机器人软件的设计
2.1 机器人控制端软件的设计
本机器人系统的控制端使用的网络摄像头,经过局域网和设定的服务器将摄像头的视频镶嵌到自己上位机的APP界面中。该APP是在eclipse的环境下,通过android,Java语言编写的上位机APP,控制移动机器人前进、后退、左转、右转、停止等一系列动作,以及控制机械臂的舵机、电动推杆的上升和下降,完美地实现了机器的智能化。这个APP屏幕按键状况会进行不断的检测,操作人员按动手机软件上的一个键,指令会借助于WiFi模块很快地传递到单片机上。机器人指令都是由16个字节代码的数据包组成,保证了每一个单片机能够按照接收到的数据包指令控制移动机器人的运行状态,实现对机器人的远程操作,手机客户端APP界面如图2所示。
图2 手机APP界面
程序代码如下:
//重力感应控制电机和舵机:
public void
onSensorChanged(SensorEvent event) {
int x = (int) event.values[0];
int y = (int) event.values[1];
int z = (int) event.values[2];
if (x==0&&y < 0) {
if (isConnecting && mSocketClient != null) {
String OUTPUT = "OUTPUT 0";
char a = 'a';
try {
mPrintWriterClient.print(a);
mPrintWriterClient.flush();
mPrintWriterClient.print(OUTPUT);
mPrintWriterClient.flush();
} catch (Exception e) {return;}}
2.2 单片机程序设计
本文选用STM32F407单片机作为核心处理器,其具有很多优点。首先该单片机控制器集成了单周期DSP指令和FPU指令,还可以完全地兼容于STM32F2系列产品,可以对ST的用户进行扩展产品升级。除此之外,STM32F4单片算法的运行速度和效率有了大幅度的提升。支持程序执行和数据传输并行处理,单片机代码如下:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(115200);
EN_Init();
TIM14_PWM_Init(500-1,84-1)
GPIO_SetBits(GPIOD,GPIO_Pin_0 | GPIO_Pin_1 |
GPIO_Pin_2 | GPIO_Pin_3);
while(1){
TIM_SetCompare1(TIM14,500);
a=USART_ReceiveData(USART1);
if(a=='a'){
TIM_SetCompare1(TIM14,80);
}}
2.3 系统软硬件调试
根据系统分布式的设计理念,对系统的每一个软硬件进行联合调试:①检查系统的WiFi模块和检查手机APP是够能连接到无线网络,检查手机屏幕是否可以接收到摄像头视频流,保障屏幕成像清晰;②对于接收到不同机器人指令的单片机相应的每一个模块进行调试;③检查机器人电机驱动电路L298N、机器人的机械臂模块及机器人的推杆模块等。每一个模块都调试完成后,要进行的联机进行调试,一直调试到系统完成开发再停止。
3 系统技术特点和应用方式方法
实现了手机安卓APP的操作和远程遥控操作,采用WiFi模块及其4G网络使机器人性能更稳定。 通过传感模块,实现农业环境信息的智能感知和图谱识别,构建靶向目标的可视化操作,实现智能感知、图谱识别和知识决策。用手机安卓或者平板电脑控制移动机器人工作,方便快捷,属于农机化机器人应用的新领域,具有重要的现实意义。
4 农业上应用的实例
本设计的农业机智能机器人主要在山东省青岛市城阳区青岛农业大学蔬菜瓜果种植试验基地使用,选择草莓大棚设置作为实验对象。用户通过手机下载安装,用Java语言构建APP,打开APP界面会显示前进、后退、左转、右转、停止,重力感应、退出感应按钮用来控制机器人的各种功能。
实践证明:该农业智能机器人工作稳定可靠,耗能小, 手机操作方便,使用简单,能满足大部分群体用户要求。另外,降低了人工成本,提高了农业机械化水平,避免踩踏庄稼和踩硬土层,移动灵活,效率高,可带来更大的生产效益。图3是应用实际操作图。
5 结论
采用STM32F407单片机作为核心控制器,在eclipse环境下,通过android语言、Java语言构建APP后台操作平台,利用xml构建手机APP界面,利用传感器构建移动机器人监控传感系统。通过WiFi模块技术实现远程网络化操控功能及对机器人进行智能远程操作。该设计可以降低农民的劳动强度,改善农民工作环境,提高作业效率,进而提高了农业的生产效率。