ROS機(jī)器人底盤坐標(biāo)像素變換操作方法
上篇文章介紹了ROS TF坐標(biāo)變換基本概念及使用案例,今天給大家介紹ROS機(jī)器人底盤坐標(biāo)像素變換,一起看看吧
對(duì)于ROS小車底盤地圖數(shù)據(jù)需要知道的點(diǎn)
1.整幅地圖處于第三象限
2.坐標(biāo)值代表距離,單位米。
3.分辨率單位(米/像素)
因此通過地圖坐標(biāo)得到像素坐標(biāo)的辦法:
像素坐標(biāo)=(實(shí)時(shí)坐標(biāo)-初始坐標(biāo))/分辨率
實(shí)時(shí)坐標(biāo)的獲?。?br />觸發(fā)條件:定時(shí)反饋;300ms一次。
返回的json數(shù)據(jù)中
pose 車子當(dāng)前的位置坐標(biāo),x,y為x,y軸上的坐標(biāo),yaw為航向角。
初始坐標(biāo):
觸發(fā)條件:獲得地圖數(shù)據(jù)時(shí)反饋獲得發(fā)送get命令反饋。
"cmd_type":"slam_map_control" "cmd":"get"
返回的json數(shù)據(jù)中
pose x、y表示機(jī)器人實(shí)際初始位置坐標(biāo),yaw為航向角
resolution 地圖分辨率,表演一個(gè)像素點(diǎn)間隔表示0.05m
機(jī)器人在圖片中的像素像素坐標(biāo)位置為:
((cX-originX)/resolution,(cY-originY)/resolution)
下面接著給大家介紹下ROS中的坐標(biāo)系定義
ROS最常用到的三個(gè)坐標(biāo)系是:map
、odom
、base_link
。
base_link
描述的就是機(jī)器人當(dāng)前時(shí)刻的位姿,是移動(dòng)的坐標(biāo)系。
odom
是機(jī)器人運(yùn)動(dòng)的參考坐標(biāo)系,是固定不動(dòng)的(world fixed frame)。坐標(biāo)系原點(diǎn)設(shè)為機(jī)器人的運(yùn)動(dòng)起始點(diǎn),那么機(jī)器人的位姿是相對(duì)于odom
來描述的。
map
是世界坐標(biāo)系,是固定不動(dòng)的(world fixed frame)。可以在機(jī)器人所在的環(huán)境中隨意指定一個(gè)點(diǎn)作為世界坐標(biāo)系原點(diǎn),規(guī)定其具體的朝向,那么分布在不同地方的所有的機(jī)器人和其他設(shè)備(包括激光雷達(dá)、相機(jī)等等)的坐標(biāo)都可以統(tǒng)一到這個(gè)坐標(biāo)系下。map
可以和odom
重合,也可以不重合,取決于實(shí)際需要。通過map
和odom
之間的變換,可以得到機(jī)器人相對(duì)于世界坐標(biāo)系的位姿。
REP105提到:
The map frame is not continuous, meaning the pose of a mobile platform in the map frame can change in discrete jumps at any time.
In a typical setup, a localization component constantly re-computes the robot pose in the map frame based on sensor observations, therefore eliminating drift, but causing discrete jumps when new sensor information arrives.
這里指的應(yīng)該是SLAM中的回環(huán)檢測(cè)在發(fā)現(xiàn)回環(huán)后,通過非線性優(yōu)化消除視覺里程計(jì)的累積誤差時(shí),可能會(huì)順帶著把機(jī)器人的起始位姿給優(yōu)化了,比如機(jī)器人在世界坐標(biāo)系中的初始坐標(biāo)是(1,2,3),優(yōu)化后變成(1.1,2.2,3.3),而機(jī)器人起始位姿和世界坐標(biāo)系之間的關(guān)系是固定的,那么世界坐標(biāo)系也會(huì)隨著跳到一個(gè)新的位置,這就是文中說到的“discrete jumps”。這有兩個(gè)解決方案:
優(yōu)化時(shí)保持第一個(gè)位姿固定優(yōu)化所有位姿,但是要對(duì)優(yōu)化后的所有位姿做一個(gè)變換,使得第一個(gè)位姿恢復(fù)原樣。
注意在odom
下表達(dá)的位姿沒有上述問題,因?yàn)椴还茉趺磧?yōu)化,總是設(shè)置機(jī)器人起始位置在odom
坐標(biāo)系下就是(0,0,0),后面的位姿也都是相對(duì)于這個(gè)來計(jì)算,因此odom
坐標(biāo)系本身不會(huì)跳變。
REP(ROS Enhancement Proposal)第103條款推薦坐標(biāo)系的x軸指向前方,y軸指向左方,z軸指向上方。這和相機(jī)坐標(biāo)系有所區(qū)別,通常是x軸指向右方,y軸指向下方,z軸指向前方。
參考
[1] REP105
[2] REP103
[3] Confused about coordinate frames. Can someone please explain?
到此這篇關(guān)于ROS機(jī)器人底盤坐標(biāo)像素變換的文章就介紹到這了,更多相關(guān)ros 機(jī)器人底盤坐標(biāo)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Typora+PicGo+GitHub實(shí)現(xiàn)md自帶圖床效果
這篇文章主要介紹了Typora+PicGo+GitHub實(shí)現(xiàn)md自帶圖床效果,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04申請(qǐng)Jetbrains系列軟件無限期免費(fèi)用的方法
這篇文章主要介紹了如何申請(qǐng)Jetbrains系列軟件無限期免費(fèi)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Win10中Dreamweaver等軟件界面字太小的問題解決
最近發(fā)現(xiàn)Win10系統(tǒng)中Dreamweaver等軟件界面字太小,所以下面這篇文章主要給大家介紹了關(guān)于Win10中Dreamweaver等軟件界面字太小的問題解決辦法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2007-10-10