初留珠,白皓然,李 娟,王方艷,郭若皓,孫 陽
(青島農(nóng)業(yè)大學 機電工程學院,山東 青島 266109)
針對提高農(nóng)業(yè)移動機器人遠程控制的便捷性、安全性和可操作性,提出了一種應用于安卓智能手機上的移動智能機器人遙控系統(tǒng)的方案。目前,美國和德國在機器人的研究中處于領先地位,開發(fā)了各種類型的農(nóng)業(yè)機器人[1]。尤其近年來,隨著網(wǎng)絡智能技術的高速發(fā)展,推動了多功能農(nóng)業(yè)機器人更廣泛地為農(nóng)業(yè)服務[2]。
目前,經(jīng)過多年開發(fā)和研究,各種性能的農(nóng)業(yè)機器人層出不窮,如采摘機器人、移栽機器人、扦插機器人及嫁接機器人等[3]。丹麥農(nóng)業(yè)方面科學家對農(nóng)田除草的機器人做了深入的研究。該機器人利用15種參數(shù)來描述雜草和布局的環(huán)境因子情況,雜草定位通過GPS來實現(xiàn)[4]。到了20世紀末,經(jīng)過幾年的努力,對農(nóng)業(yè)機器人的研究也取得了不錯的成績,如草莓采摘機器人及噴藥機等[5]。2005年,中國農(nóng)業(yè)大學設計出了套管式蔬菜嫁接機器人[6];2009年,東北農(nóng)業(yè)大學研究了果實采摘機械手及其控制系統(tǒng)[7];2011 年,中國農(nóng)業(yè)大學成功研究了黃瓜采摘機器人,基于深度學習和圖譜識別完成黃瓜的采摘[8]。本文研究利用安卓系統(tǒng)實現(xiàn)手機遠程遙控操作,采用WiFi模式及其4G網(wǎng)絡實現(xiàn)與ARM的通訊,進而完成農(nóng)業(yè)環(huán)境信息的智能感知和圖譜識別,構(gòu)建靶向目標的可視化操作。
硬件的核心部分是STM32F407單片機,主要由多個重要的模塊組合成,包括供電模塊、L298N電機驅(qū)動模塊、電動推桿模塊、HLK——RM04海陵型WiFi模塊和視頻采集模塊、LM2596S穩(wěn)壓模塊及機械臂模塊等,如圖1所示。
圖1 硬件組成的整體框架
農(nóng)業(yè)智能機器人在農(nóng)田完成作業(yè)任務時,地面阻力較大,因此本設計采用兩個電源來對該移動機器人持續(xù)地提供能量。設計移動機器人小車電源電壓為12V,小車攜帶電池的總?cè)萘繛? 000mA/h;選用STM32作為該機器人的單片機,單片機電源電壓為5V,單片機的電源電池容量為2 200mA/h。兩種電源應用零歐姆的電阻單點共地的工作方式,使得電源能夠源源不斷地提供3.3V的電壓供給STM32單片機,保障其正常地工作。
本文設計的農(nóng)業(yè)機器人選擇大電流電機驅(qū)動芯片,采用15引腳封裝;內(nèi)含有兩個H橋的高電壓大電流全橋式驅(qū)動器,能夠用來驅(qū)動直流電動機和進步電動機。 本系計劃配有4個直流電動機,電動機選用的是掌控直流減速電機,L298N電機進行機器人的驅(qū)動。因為負責驅(qū)動機器人的電機需要特別大的功率,所以要通過單片機發(fā)出相應的PWM信號增加L298N驅(qū)動電電路,從而實現(xiàn)對小車、發(fā)動、前進及停止的控制。
本文設計的智能移動機器人的驅(qū)動系統(tǒng)由控制器、電機驅(qū)動模塊及電機3個主要部分組成,確保了電動機驅(qū)動體系擁有高轉(zhuǎn)矩質(zhì)量比、寬調(diào)速范疇和高可靠性。系統(tǒng)采用了易控制、高性能、供電便利的直流電機驅(qū)動模塊,利用H全橋電路實現(xiàn)電機驅(qū)動功能,利用H橋驅(qū)動實現(xiàn)主電機正向和反向驅(qū)動,通過控制不同開關的連接,即可實現(xiàn)電動機正反向驅(qū)動。
攝像頭能實現(xiàn)遠程監(jiān)控是本系統(tǒng)實現(xiàn)遠程控制的關鍵技術之一。本設計選擇 IP網(wǎng)絡攝像頭作為移動機器人的視覺傳感器,只需要1個電源,通過局域網(wǎng)和設定的服務器將攝像頭的實時視頻鑲嵌到自己的APP界面中,輸送到手持手機中,然后使用OPENCV進行圖像的識別和處理。IP網(wǎng)絡攝像頭源碼如下:
//監(jiān)聽服務器發(fā)來的消息,獲取輸入輸出視頻流:
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();
}
}
};
本系統(tǒng)設計的移動機器人是利用手持安卓手機操控、用WiFi模塊進行連接,通過TCP鏈接實現(xiàn)手機客戶端與單片機之間進行無線通信。
WiFi模塊相當于設置系統(tǒng)的無線路由器,接有1個網(wǎng)絡攝像頭,借助于WiFi來實現(xiàn)命令的收發(fā),再把相應的命令傳遞給單片機;單片機對指令經(jīng)過分析和處理,利用通信接口控制移動機器人、機械臂舵機及網(wǎng)絡攝像頭等各個模塊完成各項作業(yè)任務。
作為一種多功能智能移動機器人,它可以靈活地移動到指定的目標位置來把握對象,從而很容易地擴展;扭轉(zhuǎn)到各個不同的姿勢,有時候考慮到目標物在狹小的空間中,還要方便、靈活、有效地避讓障礙物。考慮到還有底盤的移動及機械臂的質(zhì)量,本系統(tǒng)設計了手、臂、肩3個自由度。
本機器人系統(tǒng)的控制端使用的網(wǎng)絡攝像頭,經(jīng)過局域網(wǎng)和設定的服務器將攝像頭的視頻鑲嵌到自己上位機的APP界面中。該APP是在eclipse的環(huán)境下,通過android,Java語言編寫的上位機APP,控制移動機器人前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等一系列動作,以及控制機械臂的舵機、電動推桿的上升和下降,完美地實現(xiàn)了機器的智能化。這個APP屏幕按鍵狀況會進行不斷的檢測,操作人員按動手機軟件上的一個鍵,指令會借助于WiFi模塊很快地傳遞到單片機上。機器人指令都是由16個字節(jié)代碼的數(shù)據(jù)包組成,保證了每一個單片機能夠按照接收到的數(shù)據(jù)包指令控制移動機器人的運行狀態(tài),實現(xiàn)對機器人的遠程操作,手機客戶端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;}}
本文選用STM32F407單片機作為核心處理器,其具有很多優(yōu)點。首先該單片機控制器集成了單周期DSP指令和FPU指令,還可以完全地兼容于STM32F2系列產(chǎn)品,可以對ST的用戶進行擴展產(chǎn)品升級。除此之外,STM32F4單片算法的運行速度和效率有了大幅度的提升。支持程序執(zhí)行和數(shù)據(jù)傳輸并行處理,單片機代碼如下:
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);
}}
根據(jù)系統(tǒng)分布式的設計理念,對系統(tǒng)的每一個軟硬件進行聯(lián)合調(diào)試:①檢查系統(tǒng)的WiFi模塊和檢查手機APP是夠能連接到無線網(wǎng)絡,檢查手機屏幕是否可以接收到攝像頭視頻流,保障屏幕成像清晰;②對于接收到不同機器人指令的單片機相應的每一個模塊進行調(diào)試;③檢查機器人電機驅(qū)動電路L298N、機器人的機械臂模塊及機器人的推桿模塊等。每一個模塊都調(diào)試完成后,要進行的聯(lián)機進行調(diào)試,一直調(diào)試到系統(tǒng)完成開發(fā)再停止。
實現(xiàn)了手機安卓APP的操作和遠程遙控操作,采用WiFi模塊及其4G網(wǎng)絡使機器人性能更穩(wěn)定。 通過傳感模塊,實現(xiàn)農(nóng)業(yè)環(huán)境信息的智能感知和圖譜識別,構(gòu)建靶向目標的可視化操作,實現(xiàn)智能感知、圖譜識別和知識決策。用手機安卓或者平板電腦控制移動機器人工作,方便快捷,屬于農(nóng)機化機器人應用的新領域,具有重要的現(xiàn)實意義。
本設計的農(nóng)業(yè)機智能機器人主要在山東省青島市城陽區(qū)青島農(nóng)業(yè)大學蔬菜瓜果種植試驗基地使用,選擇草莓大棚設置作為實驗對象。用戶通過手機下載安裝,用Java語言構(gòu)建APP,打開APP界面會顯示前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止,重力感應、退出感應按鈕用來控制機器人的各種功能。
實踐證明:該農(nóng)業(yè)智能機器人工作穩(wěn)定可靠,耗能小, 手機操作方便,使用簡單,能滿足大部分群體用戶要求。另外,降低了人工成本,提高了農(nóng)業(yè)機械化水平,避免踩踏莊稼和踩硬土層,移動靈活,效率高,可帶來更大的生產(chǎn)效益。圖3是應用實際操作圖。
采用STM32F407單片機作為核心控制器,在eclipse環(huán)境下,通過android語言、Java語言構(gòu)建APP后臺操作平臺,利用xml構(gòu)建手機APP界面,利用傳感器構(gòu)建移動機器人監(jiān)控傳感系統(tǒng)。通過WiFi模塊技術實現(xiàn)遠程網(wǎng)絡化操控功能及對機器人進行智能遠程操作。該設計可以降低農(nóng)民的勞動強度,改善農(nóng)民工作環(huán)境,提高作業(yè)效率,進而提高了農(nóng)業(yè)的生產(chǎn)效率。