當(dāng)我們?cè)谙掳l(fā)運(yùn)動(dòng)指令至機(jī)器人底盤時(shí),slamware首先會(huì)根據(jù)地圖和目標(biāo)點(diǎn)的情況進(jìn)行路徑規(guī)劃,規(guī)劃好后底盤才會(huì)根據(jù)規(guī)劃出的路徑產(chǎn)生相應(yīng)的運(yùn)動(dòng),有的用戶需要獲得路徑規(guī)劃是否成功的狀態(tài),這里對(duì)獲取方式進(jìn)行介紹。
測(cè)試代碼:TestCode.java
在Android SDK中,與底盤運(yùn)動(dòng)相關(guān)的moveTo、moveBy、rotate、rotateTo、goHome、startSweep、sweepSpot、recoverLocalization等方法都會(huì)返回一個(gè)IMoveAction類(或其子類)的對(duì)象,該對(duì)象中記錄了此次運(yùn)動(dòng)相關(guān)的信息,
這里通過action.getRemainingPath().getPoints().isEmpty()判斷剩下的路徑中路徑點(diǎn)是否為空來間接判斷路徑規(guī)劃是否成功。
測(cè)試現(xiàn)象
在機(jī)器人底盤周圍放置障礙物,使其無法規(guī)劃出一條能夠到達(dá)目標(biāo)點(diǎn)的路徑,地圖、障礙物、目標(biāo)點(diǎn)的情況見下圖:
運(yùn)行程序Logcat輸出如下,底盤無法規(guī)劃出路徑,也不會(huì)運(yùn)動(dòng)
撤除底盤旁邊的障礙物,再次運(yùn)行測(cè)試程序,底盤在間隔一段時(shí)間后規(guī)劃出路徑,并沿著路徑中的7個(gè)點(diǎn)逐點(diǎn)導(dǎo)航到目標(biāo)點(diǎn)。
Logcat輸出如下,可以看到slamware在幾毫秒后規(guī)劃出路徑,路徑中共有7個(gè)點(diǎn)
關(guān)鍵字:机器人底盘