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