1. 程式人生 > >ros中如何根據map.yaml和tf資料確定地圖中機器人的位置

ros中如何根據map.yaml和tf資料確定地圖中機器人的位置

地圖的yaml格式中有


其中origin是建圖時機器人的初始位置,單位是米m

問題1:如何將orgin轉換成實際地圖中的位置?

1.確定地圖的座標系,為最右上角的畫素為座標(0,0)

整副地圖都處於座標系的第三像限


2.解析origin x=-2.5m y=-1.6m,將x,y的值除以解析度resolution(米/畫素)

得出x=-50個畫素,y為-32個畫素

從地圖的最右上角畫素數,往左數第50個畫素,再往下數第32個畫素,就是orgin所代表的機器人初始位置。

問題2:如何在導航中實時顯示機器人的位置

1.確定機器人本身的座標系,一般是base_footprint或者base_link,在2d的地圖上這兩者基本沒有區別,可選取其中一個

2.獲取從map到base_footprint的tf變換,代表機器人以orgin位置為原點的座標系上位置。

3.orgin中的x,y(減去/加上)tf變換中的x,y,就是當前機器人的當前位置,再除以resolution,就是地圖中機器人位置所在的畫素。