[ WARN] [1555592651.777067265]: W0418 21:04:11.000000 28585
sensor_bridge.cc:213] Ignored subdivision of a LaserScan message from
sensor scan because previous subdivision time 621355968000000000 is
not before current subdivision time 621355968000000000
報錯,主從機時間同步問題
sudo ntpdate ntp.ubuntu.com 這個命令分別在兩臺電腦上用了下,時間同步了
ubuntu16.04 安裝Ceres
參考https://zhuanlan.zhihu.com/p/151675712
map坐標系odom坐標系basefootprint坐標系的理解
參考原文鏈接:https://blog.csdn.net/gadwgdsk/article/details/95206155
簡單的描述:
1)在系統(tǒng)計算中,map的原點是fixed的,不會改變,而AMCL計算得到的機器人坐標(map坐標系下)我們認為是絕對準確的。
2)odometry節(jié)點根據(jù)編碼器積分的結(jié)果不停地發(fā)布odom到baselink的變換(換算到xy坐標系了)
問題:
odom到baselink的變換長時間后不是準確的,為什么要一直發(fā)布呢?這不會導(dǎo)致系統(tǒng)使用了錯誤的信息嗎?
解答:
在AMCL的代碼中我們可以看到,計算得到map坐標系下機器人的坐標后并沒有直接發(fā)布map到baselink的變換,而是根據(jù)odom和baselink的關(guān)系、map和baselink的關(guān)系,反推出map和odom的關(guān)系,然后發(fā)布map到odom的變換。而map和baselink的地圖中的實際位置是不可能改變的(意思是真實的),因此我們在rviz中能夠看到odom會隨著機器人的運動而改變??偨Y(jié)一下就是:通過改變odom坐標系原點的位置使得機器人里程計的信息能夠正確表達機器人的位置(改變的odom原點的量,就是機器人打滑等原因產(chǎn)生的里程計誤差的量)。
2019/12/3補充:
仔細研究了AMCL的代碼,發(fā)現(xiàn)其實很簡單。ODOM到BASELINK的變換通過里程計發(fā)出來,而且是高頻的不停地發(fā),以給機器人提供實時的短時定位。每當對粒子采樣一次,就可以得到機器人在MAP坐標系下的位置(我們認為是很準確的,跟眼睛看一樣)。所以我們要修改MAP到ODOM的變換,從而修正ODOM到BASELINK的變換的誤差(里程計累積的誤差)。而整個AMCL坐標系的關(guān)系很簡單:MAP→ODOM→BASELINK。 可見,MAP到BASELINK沒有直接的變換。