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