機器人想要實現(xiàn)智能行走,必須依靠自主定位導(dǎo)航技術(shù),自主定位導(dǎo)航包括定位、建圖與路徑規(guī)劃等。在思嵐提供的自主定位導(dǎo)航解決方案中,主要是通過激光雷達和里程計的數(shù)據(jù)來進行定位。雖然激光雷達在一定范圍內(nèi)會糾正里程計的誤差,但在某些特殊環(huán)境下(如激光雷達掃描的有效點較少時),里程計的準(zhǔn)備度還是會影響定位的效果。因此,對于需要自主定位導(dǎo)航的機器人而言,電機里程計的精準(zhǔn)度,對機器人的定位精度也起到了關(guān)鍵作用。
SDP Mini 里程計
里程計的選擇不容忽視
為了保證里程計的使用效果,選擇合適的里程計也是至關(guān)重要的,目前,常用的機器人底盤電機編碼器按實現(xiàn)原理來分類,包括光電編碼器及霍爾編碼器;按照其編碼方式分類,包括增量型和絕對型。
對于基于slamware的機器人底盤來說,里程計的分辨率需要在1mm以下,且總誤差最多不能超過5%,如果超過此數(shù)值,機器人將無法正常實現(xiàn)定位導(dǎo)航的功能。因此,無論選擇哪種編碼器,必須要達到其精度的要求??梢詤⒖家韵屡袛喙剑?br /> (2π/每轉(zhuǎn)編碼器脈沖數(shù))×輪子半徑≤0.001米 注:輪子半徑單位為米
系統(tǒng)電機應(yīng)答流程
(以兩輪差動電機為例)
SLAMWARE Core 每間隔delta時間,會向底盤發(fā)送左右輪的速度,向前為正,向后為負,即SET_BASE_MOTOR(0x40)。底盤會回復(fù)此時的左右輪里程計的累計值,即GET_BASE_MOTOR_DATA(0x31)。
請注意,無論輪子向前運動或向后運動,里程計的度數(shù)均遞增,因為SLAMWARE Core在下發(fā)速度時,已經(jīng)區(qū)分了向前還是向后。
SLAMWARE Core發(fā)送SET_BASE_MOTOR的請求報文為, 速度的單位為mm/s:
里程計代碼示例詳見:
https://wiki.slamtec.com/pages/viewpage.action?pageId=1016369
那么,對于里程計而言,我們該如何判斷其定位數(shù)據(jù)是否準(zhǔn)確呢?下面,就要借助可擴展的機器人管理與開發(fā)應(yīng)用軟件:Robo Studio
首先,先將準(zhǔn)備工作做好:
在調(diào)試之前,請找到一處合適測試的區(qū)域,該區(qū)域需有清晰的邊界,比如,矩形的空房間。安裝好Robo Studio,并連接上機器人(如SDP Mini)。Robo Studio下載鏈接及在線文檔可至思嵐官網(wǎng)下載安裝。
利用Robo Studio調(diào)試?yán)锍逃嫓?zhǔn)確度測試方法:
1.將機器人控制到離一面直墻若干米的位置,面朝直墻,如下圖所示。
2.將之前建好的地圖清除掉,點擊清空地圖,此時,機器人當(dāng)前的區(qū)域會重建。當(dāng)前區(qū)域重建好之后,可以點擊暫停建圖,停止地圖更新。 最后,可以將暫停定位開啟,開啟后,將關(guān)閉激光定位,僅用里程計的數(shù)據(jù)來定位。
3.控制機器人向前朝墻運動,觀察激光點是否和墻重合,如果和墻重合,證明里程計較為準(zhǔn)確;
如果激光點超出墻,證明底盤上報的里程計數(shù)據(jù)要大于實際運動的距離,里程計偏大。
如果激光點在墻之內(nèi),證明底盤上報的里程計數(shù)據(jù)要小于實際運動的距離,里程計偏小。
如果激光點和墻重合,可以繼續(xù)控制機器人倒退,左右轉(zhuǎn)動,看看激光點是否和周圍環(huán)境匹配;
相應(yīng)的,以SDP mini為例,里程計的測試效果如下:
1.里程計數(shù)據(jù)正常(SDP mini 底盤固件中ODOMETER_EST_PULSE_PER_METER 為原始值)
2.里程計數(shù)據(jù)偏大(SDP mini 底盤固件中ODOMETER_EST_PULSE_PER_METER 小于原始值),視頻中效果為里程計偏大較多的情況。
3.里程計數(shù)據(jù)偏?。⊿DP mini 底盤固件中ODOMETER_EST_PULSE_PER_METER 大于原始值),視頻中效果為里程計偏小較多的情況。
關(guān)鍵字:电机里程计