一、方法講解:
本項目分為三個部分:機器人周圍一定范圍內基於RRT的全局檢測,
根據上一步檢測的未知區域點執行sklearn.cluster.MeanShift聚類,獲取聚類中心;
根據聚類中心計算各點增益,取最大增益點為目標,調用move_base規划路徑和控制機器人行走。
二、各部分詳解:
2.1 基於RRT的全局檢測:檢測未知區域點並發布
以機器人為中心,激光采樣范圍為半徑的正方形區域內,采用RRT算法計算未知區域點:如果RRT計算的某點在要計算的地圖范圍內,並且該點在地圖內的狀態為空閑區域點,則將該點加入RRT樹;如果該點在地圖的狀態為未知狀態區域,則該點不加入RRT樹,並將該點發布出去;
2.2 根據上一步檢測的未知區域點執行sklearn.cluster.MeanShift聚類,獲取聚類中心:
該部分訂閱全局檢測的未知區域點,並利用MeanShift算法獲取聚類中心;
2.3 根據聚類中心計算各點增益,取最大增益點為目標,調用move_base規划路徑和控制行走。
根據設定的信息半徑,和上一步的聚類中心,結合聚類中心離機器人的距離,計算各個聚類中心的信息增益,然后取信息增益最大的點作為目標點,調用move_base來向該點移動;新的聚類中心和增益不停被計算,因此在運動過程中目標點可能會改變,或者因為移動地圖中原來的目標點變為空閑區域,則新的目標點會被計算。
三、效果展示:
建圖算法采用gmapping,激光角度220度.,激光范圍14米。
藍色線:全局RRT樹;
綠色點:地圖狀態未知區域點
綠色線:move_base全局規划
紫色線:機器人移動軌跡。
例一:
例二、
仿真環境下:左下角、底部及右下角圖建歪了。
仿真模型大小:70米*64米