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