国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于位置關(guān)聯(lián)的競(jìng)賽機(jī)器人任務(wù)序列優(yōu)化軟件結(jié)構(gòu)設(shè)計(jì)

2018-01-03 22:29徐文
軟件工程 2018年11期

徐文

摘 要:MCU端軟件結(jié)構(gòu)設(shè)計(jì)質(zhì)量是影響循跡機(jī)器人工作效率、適應(yīng)突發(fā)任務(wù)變更和異常狀態(tài)能力的重要因素,但目前普適性的改進(jìn)手段不多。本文通過遙控競(jìng)賽機(jī)器人任務(wù)特征分析,設(shè)計(jì)基于位置關(guān)聯(lián)的控制設(shè)備與機(jī)器人間通訊協(xié)議,使用鏈表進(jìn)行任務(wù)節(jié)點(diǎn)的封裝和序列構(gòu)造,最終基于位置信息實(shí)施控制流程。結(jié)果表明,任意給定任務(wù)序列能夠準(zhǔn)確實(shí)現(xiàn)。相對(duì)順序式控制流程,該軟件結(jié)構(gòu)和關(guān)聯(lián)流程設(shè)計(jì)在路徑優(yōu)化的同時(shí)還能適應(yīng)任務(wù)序列的重整定。

關(guān)鍵詞:循跡機(jī)器人;任務(wù)序列;軟件結(jié)構(gòu)

中圖分類號(hào):TP249 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):2096-1472(2018)-11-31-03

1 引言(Introduction)

目前循跡機(jī)器人的應(yīng)用研究側(cè)重于本體組成設(shè)計(jì)[1]、路徑優(yōu)化設(shè)計(jì)[2]、穩(wěn)定驅(qū)動(dòng)設(shè)計(jì)[3,4]、傳感器選型設(shè)計(jì)[5]等領(lǐng)域,機(jī)器人本體MCU(Microcontroller Unit)控制軟件的結(jié)構(gòu)設(shè)計(jì)關(guān)注偏低。本文以一款遙控智能賽車(以下稱“循跡機(jī)器人”)、安卓遙控手機(jī)(以下稱“移動(dòng)控制端”)為實(shí)驗(yàn)對(duì)象,以賽道地圖、任務(wù)集合為需求輸入,通過任務(wù)節(jié)點(diǎn)的特征分析,給出有效的循跡機(jī)器人控制軟件結(jié)構(gòu)設(shè)計(jì)方案。

2 任務(wù)分析(Task analysis)

2.1 任務(wù)概述

利用移動(dòng)控制端軟件,控制循跡機(jī)器人完成賽道上的各項(xiàng)任務(wù),如圖1所示。賽道地圖背景色為灰色無光;賽道為白色,寬30cm;尋跡線為黑色,寬3cm;循跡機(jī)器人以循跡線為賽道在行駛的同時(shí)完成移動(dòng)控制端下發(fā)的各工作點(diǎn)任務(wù),以入車庫(kù)為任務(wù)終點(diǎn)。圖中A、B、C三個(gè)位置為工作點(diǎn)停車線,A、B、兩處可按指令前進(jìn)到工作線位置,C點(diǎn)則通過測(cè)距或固定位移方式前進(jìn),停車后執(zhí)行任務(wù)。1#車庫(kù)為起點(diǎn),2~4#為候選入庫(kù)停車位。

2.2 任務(wù)特征細(xì)分

通過對(duì)循跡機(jī)器人(含移動(dòng)控制端)任務(wù)特征的類屬、執(zhí)行設(shè)備、通訊方式、賽道位置和參數(shù)等維度項(xiàng)的分析,歸結(jié)為表1所示的任務(wù)特征細(xì)分。類屬的候選值有:A循跡路徑驅(qū)動(dòng)、B信號(hào)檢測(cè)、C攝像及視頻nfc信息處理、D賽道指令,其中A、B、D類任務(wù)由循跡機(jī)器人執(zhí)行,C類由移動(dòng)控制端執(zhí)行。執(zhí)行設(shè)備包括:A下位機(jī)(循跡機(jī)器人)、B上位機(jī)(移動(dòng)控制端)。通訊方式的候選值有:A由上位機(jī)向下位機(jī)單向發(fā)送、B由下位機(jī)向上位機(jī)單向發(fā)送、C雙向傳輸(存在握手需求:即機(jī)器人接受命令并執(zhí)行后需向安卓移動(dòng)端返回執(zhí)行結(jié)果)、D無需通訊。賽道位置由命令幀或者數(shù)據(jù)報(bào)幀決定,表1不作定義。

2.3 硬件結(jié)構(gòu)

循跡機(jī)器人的硬件系統(tǒng)構(gòu)成包括:核心板、循跡驅(qū)動(dòng)板、任務(wù)板和云臺(tái)攝像頭等部件。核心板采用宏晶STC15系列IAP15F2K61S2為MCU,通過電纜分別與其他部件連接,Keil C51為開發(fā)平臺(tái)。循跡采用8組紅外對(duì)管(TCR T5000),驅(qū)動(dòng)采用L298N器件,用PWM信號(hào)驅(qū)動(dòng)兩側(cè)車輪電機(jī)。任務(wù)板包括超聲波測(cè)距、光強(qiáng)度檢測(cè)、光敏檢測(cè)、紅外收發(fā)等器件。

3 MCU軟件結(jié)構(gòu)(MCU software structure)

文獻(xiàn)[6,7]在機(jī)器人本體MCU上采用順序式控制,缺少對(duì)于任務(wù)序列的結(jié)構(gòu)性變更、隨機(jī)性調(diào)整的靈活性,軟件的冗余度偏高。本文根據(jù)任務(wù)特征細(xì)分和循跡機(jī)器人硬件結(jié)構(gòu)設(shè)計(jì),MCU軟件結(jié)構(gòu)設(shè)計(jì)包括:與移動(dòng)控制端的通訊協(xié)議、任務(wù)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)、主控流程。

3.1 通訊協(xié)議

移動(dòng)控制端通過WIFI轉(zhuǎn)串口方式向循跡機(jī)器人發(fā)ASCⅡ格式命令幀,包括下列字段:命令幀起始字符、命令協(xié)議字符(必要時(shí)附帶2位十進(jìn)制參數(shù)數(shù))、通訊方式字符(同表1)、機(jī)器人位置(同表2)字符、命令幀結(jié)尾字符。

循跡機(jī)器人向移動(dòng)控制端發(fā)送數(shù)據(jù)報(bào)幀包括下列字段:數(shù)據(jù)幀起始字符、傳感器數(shù)據(jù)(4位十進(jìn)制數(shù))、信號(hào)協(xié)議字符(命令幀中的信號(hào)采集命令協(xié)議字符)、機(jī)器人位置(同表2)、數(shù)據(jù)幀結(jié)尾字符。

循跡機(jī)器人的運(yùn)行狀態(tài)及位置如表2所示。圖1中的三個(gè)工作位置中A、B點(diǎn)均有停車線和工作線,C點(diǎn)停車線即工作線。

3.2 任務(wù)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)

循跡機(jī)器人通常在起點(diǎn)處獲得移動(dòng)控制端下發(fā)的任務(wù)序列,在賽道上亦可隨機(jī)收取新任務(wù)并插入到任務(wù)序列中。異常狀態(tài)(如,出界)下,循跡機(jī)器人可主動(dòng)插入數(shù)據(jù)報(bào)來重構(gòu)任務(wù)序列。根據(jù)循跡機(jī)器人任務(wù)節(jié)點(diǎn)的離散、有序、與位置關(guān)聯(lián)的特點(diǎn),選擇鏈表表征任務(wù)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu),并實(shí)現(xiàn)任務(wù)序列的構(gòu)造與管理。按照循跡機(jī)器人任務(wù)特征細(xì)分(表1),以及命令幀格式、數(shù)據(jù)報(bào)幀格式的設(shè)計(jì),且便于反向追溯,循跡任務(wù)鏈表設(shè)計(jì)為雙鏈表:

#define uchar unsigned char //類型定義

uchar Robot_Status ; //機(jī)器人賽道狀態(tài)、位置

typedef struct { //循跡任務(wù)鏈表數(shù)據(jù)結(jié)構(gòu)

char Type; //類屬(缺省值:A)

char Executor; //執(zhí)行設(shè)備(缺省值:A)

char CommunicationMode; //通訊方式

char Command; //命令字符

uchar Location; //機(jī)器人位置:與執(zhí)行命令關(guān)聯(lián)的Robot_Status位置值,點(diǎn)動(dòng)命令為空

uchar Status; //機(jī)器人狀態(tài):當(dāng)前循跡任務(wù)結(jié)束時(shí)的Robot_Status狀態(tài)值

struct Task_Tracking *link_next; //直接后繼循跡任務(wù)的指針

struct Task_Tracking *link_before; //直接前驅(qū)循跡任務(wù)的指針

} Task_Tracking;

Task_Tracking * TrackingNow; //循跡任務(wù)鏈表當(dāng)前節(jié)點(diǎn)指針

根據(jù)賽道路徑上位置、狀態(tài)的有限可枚舉特征,全局變量Robot_Status的侯選值選取自表2。循跡除外的任務(wù)(以下稱多任務(wù))與機(jī)器人位置關(guān)聯(lián)。參照循跡任務(wù)鏈表和命令協(xié)議字符設(shè)計(jì),多任務(wù)鏈表設(shè)計(jì)為單鏈表:

typedef struct {//多任務(wù)鏈表數(shù)據(jù)結(jié)構(gòu)

……

} Task_Multiple;

Task_Multiple* MultipleHead; //多任務(wù)鏈表表頭指針

Task_Multiple中包括:類屬(非A值)、執(zhí)行設(shè)備、通訊方式、命令字符、命令字符附帶2位十進(jìn)制數(shù)、傳感器數(shù)據(jù)4位十進(jìn)制數(shù)、傳感器信號(hào)協(xié)議字符、機(jī)器人位置、直接后繼節(jié)點(diǎn)指針等。

移動(dòng)控制端下發(fā)任務(wù)序列后循跡機(jī)器人構(gòu)建循跡任務(wù)鏈表和多任務(wù)鏈表,并對(duì)循跡任務(wù)鏈表基于位置屬性排序,此時(shí)TrackingNow和MultipleHead均為表頭指針。而后進(jìn)入主控流程,通過串口中斷隨機(jī)收新任務(wù)時(shí)則插入到任務(wù)鏈表中。

3.3 主控流程

在完成系統(tǒng)時(shí)鐘、各端口、外設(shè)、定時(shí)器、鏈表(初始時(shí)節(jié)點(diǎn)為空)及指針等全局變量初始化后,循跡機(jī)器人主控流程如圖2所示,闡述如下:

0.查詢收到的任務(wù)字符。如有且為A類任務(wù)則插入到循跡任務(wù)鏈表,如有且為其他任務(wù)則插入到多任務(wù)鏈表。

1.從MultipleHead開始,向鏈表尾部方向移動(dòng)指針方式查找Location值為空的節(jié)點(diǎn)。未找到則跳轉(zhuǎn)至步驟5。

2.找到則執(zhí)行節(jié)點(diǎn)任務(wù),完畢后校驗(yàn)CommunicationMode值。其值不為C跳至步驟4。

3.值為C,按照表4的結(jié)構(gòu)構(gòu)造一個(gè)數(shù)據(jù)報(bào),并通過串口轉(zhuǎn)WiFi發(fā)送至移動(dòng)控制端。

4.刪除該節(jié)點(diǎn),返回步驟1。

5.校驗(yàn)TrackingNow,值為空則返回步驟1。

6.執(zhí)行節(jié)點(diǎn)任務(wù),完畢后用當(dāng)前狀態(tài)位置更新Status并修正Robot_Status。

7.從MultipleHead開始,向鏈表尾部方向移動(dòng)指針方式查找Location值與Robot_Status相匹配的節(jié)點(diǎn),未找到則跳轉(zhuǎn)至步驟11。

8.找到則執(zhí)行節(jié)點(diǎn)任務(wù),完畢后校驗(yàn)CommunicationMode值。其值不為C跳至步驟10。

9.值為C,按照表4的結(jié)構(gòu)構(gòu)造一個(gè)數(shù)據(jù)報(bào),并通過串口轉(zhuǎn)WiFi發(fā)送至移動(dòng)控制端。

10.刪除該節(jié)點(diǎn),返回步驟7。

11.校驗(yàn)Robot_Status,為異常狀態(tài)或者結(jié)束狀態(tài)值(表5中的1、2、3、13)則按照表4的結(jié)構(gòu)構(gòu)造一個(gè)數(shù)據(jù)報(bào),并通過串口轉(zhuǎn)WiFi發(fā)送至移動(dòng)控制端。

12.將TrackingNow更新為后繼節(jié)點(diǎn)指針,返回步驟0。

4 結(jié)論(Conclusion)

以上MCU端軟件結(jié)構(gòu)設(shè)計(jì)經(jīng)試驗(yàn)證明,能夠有效保障循跡機(jī)器人完成其總體任務(wù)目標(biāo),并在隨機(jī)接收臨時(shí)任務(wù)和工作狀態(tài)異常時(shí)實(shí)時(shí)調(diào)整任務(wù)序列,實(shí)現(xiàn)任務(wù)序列可整定功能。目前循跡機(jī)器人得到較廣泛用[8],本設(shè)計(jì)試圖為結(jié)構(gòu)化生產(chǎn)環(huán)境中提高移動(dòng)機(jī)器人控制軟件的執(zhí)行效率、降低設(shè)計(jì)成本提供案例和建設(shè)思路。

參考文獻(xiàn)(References)

[1] 劉強(qiáng),王超然,汪神岳,等.基于嵌入式系統(tǒng)的智能取書機(jī)器人設(shè)計(jì)[J].測(cè)控技術(shù),2018,37(3):36-40.

[2] 李元,王石榮,于寧波.基于RGB-D信息的移動(dòng)機(jī)器人SLAM和路徑規(guī)劃方法研究與實(shí)現(xiàn)[J].智能系統(tǒng)學(xué)報(bào),2018,13(3):445-451.

[3] 黃剛.實(shí)時(shí)修正偏移量的循跡機(jī)器人控制系統(tǒng)研究與實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2015,36(11):2538-2546.

[4] 張志美,程立英,趙以恒,等.基于模糊PID控制算法的導(dǎo)盲機(jī)器人研究[J].沈陽(yáng)師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,33(1):81-85.

[5] 牛國(guó)臣,許開魯.基于線性CCD的類人機(jī)器人循跡系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2018,41(5):133-136;140.

[6] 劉家春,劉利,劉鑫,等.基于競(jìng)賽的醫(yī)療服務(wù)機(jī)器人控制系統(tǒng)設(shè)計(jì)[J].山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,32(2):6-111.

[7] 張少華,劉富,劉利,等.面向競(jìng)賽的果園噴藥機(jī)器人設(shè)計(jì)[J].機(jī)械工程與自動(dòng)化,2018(2):153-156.

[8] 劉立軍.基于單片機(jī)智能循跡機(jī)器人控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表用戶,2017,24(5):42-45;68.

作者簡(jiǎn)介:

徐 文(1967-),男,碩士,高級(jí)工程師.研究領(lǐng)域:嵌入式應(yīng)用,自動(dòng)控制.