1 base_local planner_params yaml 下面列舉了導航包下config/目錄下的 base_local_planner_params. yaml參數以及設定的值, 機器人在這樣的設定下運行得相當好
- controller_ frequency:3.0每多少秒我們需要更新一次路徑規划?把這個值設得太高會使性能不足的CPU過載。對於一台普通的計算機來說,設定為3到5就可以運行得相當不錯
- max_vel_x:0.3—機器人的最大線速度,單位是米/秒。對於室內機器人來說0.5就已經很快了,所以保守地選擇設為0.3。
- min vel x:0.05—機器人的最小線速度
- max rotation vel:1.0—機器人的最大旋轉速度,單位是弧度/秒。不要把這個值設得太高,不然機器人會錯過它的目標方向
- min_in_place_vel_theta:0.5—機器人的最小原地旋轉速度,單位是弧度/秒
- escape_vel:-0.1—機器人逃離時的速度,單位是米/秒。請注意這個值必須設為負數,這樣機器人才能反向
- mx:2.5—在x方向上的最大線加速度
- acc_lim_x:2.5-在x方向上的最大線加速度
- acc_lim_y:0.0—在y方向上的最大線加速度。對於差速驅動(非完整驅動)機器人我們設為0,這樣機器人就只能在x方向上線性運動(和旋轉)了
- acc_lim_theta:3.2—最大角加速度。
- holonomic_robot:false一除非你有一個全方向驅動機器人,否則一律設為alse
- yaw.goal_tolerane:0.1—至多距離目標方向的誤差(單位為弧度)是多少?把這個值設得太小的話可能會導致機器人在目標附近倒
- xy_goal_tolerance:0.1—至多距離目標位置的誤差(單位為米)是多少?如果把值設得太小,你的機器人可能會不斷地在目標位置附近作調整。注意:不要把最大誤差設定得比地圖的分辨率還小(下一部分會講到),否則機器人會永不停息地在目標附近徘徊但水遠到不了目標位置。
- pdist_scale:0.8—全局路徑規划和到達目的位置之間的權重。這個參數比gist-seae大時,機器人更傾向於考慮全局路徑規划
- gdist_scale:0.4—到達目的位置和全局路徑規划之間的權重。這個參數比 pdist_scale大時,機器人會更考慮到達目標位置,而不管這段路在全局路徑規划中是否是必須的
- occdist_seale:0.1—避開障礙物的權重
- sim_time:規划時需要考慮未來多長時間(單位為秒)呢?這個參數和下一個參數(dwa)一起極大地影響機器人往目標移動的路徑
- dwa:true在模擬未來的軌跡時是否用動態窗口方法( Dynamie Window Approach)
2 costmap_common_params. yaml
這個文件中只有兩個參數是需要你立刻為你的機器人調整的
- robot radius:0.165—對一個圓形的機器人來說,這是機器人的半徑,單位是米;對一個非圓形的機器人來說,你可以用接下來說到的 footprint參數。這里用到的值是 Turtle的原始數據。
- footprint:[[x0,y0],[xl,yl],x2,y2],[x3,y3],ect]—在列表中的每一個坐標代表機器人的邊上的一點,機器人的中心設為[0,0]。測量單位是米。這在機器人周長上的點要不按照順時針排列,要不按照逆時針排列。
- inflation_radius:0.3—地圖上的障礙物的半徑,單位為米。如果你的機器人不能很好地通過窄門或其他狹窄的地方,則稍微減小這個值。相反的,如果機器人不斷地撞到東西,則嘗試增大這個值。
3 global_costmap_params. yaml
這個文件中有一些參數,你需要根據機器人CPU的計算能力和你的工作站與機器人之間的情況來實驗得到。
- global frame:/mp—對於全局代價地圖,我們用map框架來作為 global框架
- robot base frame:/ /base_ footprint一這個通常不是/he-ink就是/ ase_footprint對於Turtle Bot應設為/ base_footprint
- update_frequency:1.0—根據傳感器數據,全局地圖更新的頻率,單位為赫茲。這個數值越大,你的計算機的CPU負擔會越重。特別對於全局地圖,通常會設定一個相對較小、在1.0到5.0之間的值。
- publish_frequency:0—對於靜態的全局地圖來說,不需要不斷發布。
- statie_map:true—這個參數和下一個參數通常會設為相反的值。全局地圖通常是靜態的,因此我們通常會把這個參數設為true
- rolling window:true當我們把這個參數設為 false時,全局地圖不會在機器人移動的時候更新。
- transform_ tolerance. 指定在tf樹中框架之間的轉換的最大延時,單位為秒。對於典型的工作站和機器人之間的無線網絡來說,與1.0秒同一級別的都可以工作得很好
4 local_costmap_params yaml
有幾個本地代價地圖的參數需要考慮一下
- global_ frame:/odom對於本地代價地圖來說,我們使用 odometry框架來作為 global框架
- robot_ base frame:/ base_footprint這個通常不是/ base link就是/ base_ footprint對於TurtleBot應設為/ base_footprint
- update_frequency:3.0—根據傳感器數據,本地地圖更新的頻率,單位為次/秒。對於很慢的計算機,你可能需要減小這個值。
- publish_ frequency:1.0—我們想更新已經發布出去的本地地圖,所以我們會把這個值設為非零。一秒一次應該足夠了,除非你的機器人要移動得更快
- static_map: false—這個參數和下一個參數通常會設為相反的值。當本地地圖需要根據傳感器數據動態更新的時候,我們通常會把這個參數設為 false
- rolling-window:true—下面的幾個參數定義了本地地圖更新用的滑動窗口
- width:6.0—滑動地圖的x維長度是多少米
- height:6.0-----滑動地圖的y維長度是多少米
- resolution:0.01—滑動地圖的分辨率,單位為米。這個參數應該與YAML文件設置的地圖分辨率匹配
- ransform tolerance:1.0—指定在tf樹框架之間的轉換,或可能會暫時中止的地圖繪制過程中兩者的最大延時,單位為秒。在一台速度較快、直連到機器人的計算機上,把這個值設定為1.0就能很好地工作了。但是在通過無線網絡連接的較慢計算機上,這個延 時容忍參數需要增大。