1. 程式人生 > >ros小車除錯經驗2

ros小車除錯經驗2

   今天,困擾多時的跑navigation stack 的ros小車走S 曲線問題終於解決了!最後原因居然是,網速太卡了,簡直是日了狗了!情況是這樣的,我的小車上一塊odroid(相當於樹莓派)的板,跑基本驅動節點,筆記本上跑move_base等規劃節點,樹莓派通過那種usb的無線網絡卡做熱點,筆記本連上。跑目標的時候,move_base偶爾有報控制超時,costmap 超時,我的control frequency設定的才5hz。今天把move_base等規劃節點一起放到小車上,筆記本上只打開個rviz來監視,設定目標,就解決了。

  期間,在解決這個問題的時候還解決了很多其他的問題,查了無數的資料,也攢了一些經驗:

  1、如果使用的是base local planner,裡面有兩個引數pdist_scale 和gdist_scale  ,要理解這兩個引數,設想一下兩個極端情況,pdist_scale很大,gdist_scale很小,這時候小車會不動,因為所有規劃出的區域性路徑都將導致離開全域性路徑,小車還不如停在原地不動,得分高;如果pdist_scale很小,gdist_scale很大,這時候小車將朝著區域性目標點(如果全域性目標點在區域性規劃範圍外,區域性目標點就是全域性路徑在區域性規劃範圍外的第一個點)或者全域性目標點跑,完全不照全域性路徑走;這時候有個不好的影響是,狹窄通道或者避障轉不過彎,因為區域性路徑規劃給出的路徑全部都是朝著目標走,而朝著目標走的區域性路徑都被障礙物擋住了,因此全部被否決,小車原地轉圈。因此實際中還是應當將pdist_scale取得大一點,gdist_scale取得小一點。

  2、amcl粒子云在小車持續轉彎後迅速發散問題,或者遲遲不收斂。這時候你需要除錯你的里程計,確保有一定的準度。如果你覺得里程計還是挺準的,記得要將amcl引數配置的關於里程計的引數odom_alpha1-5  這幾個引數調節小一點,因為它是設定里程計方差的,如果你設定過大,那就意味著要amcl不相信你的里程計,全部靠amcl來估計,因此粒子云會表現得不太穩定

  3、如果你發現在rviz中小車完全沒有按照區域性規劃路徑跑,那就是你的里程計給出的twist資訊錯誤了。好好除錯一下。

  4、最後,遇到問題,永遠都不要放棄。不放棄就總會解決。