0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹一種基于編碼器合成里程計的方案

3D視覺工坊 ? 來源:混沌無形 ? 2023-04-19 10:16 ? 次閱讀

摘要:本文主要分析輪式移動機器人的通用里程計模型,并以兩輪差速驅(qū)動機器人的里程計計算為案例,給出簡化后的兩輪差速驅(qū)動機器人里程計模型。

01

引言

里程計是機器人導航系統(tǒng)中非常重要的一環(huán),那么何為里程計?

里程計,可簡單理解為記錄機器人在一段時間內(nèi)的運動狀態(tài),是基于時間戳的數(shù)據(jù)幀,該數(shù)據(jù)幀包含機器人位置、姿態(tài)及運動速度、角速度,具體結(jié)構(gòu)對應下圖 1.1。

961699bc-de57-11ed-bfe3-dac502259ad0.png

圖 1.1 ROS里程計數(shù)據(jù)結(jié)構(gòu)

里程計的英文單詞是Odometry,在ROS小車坐標系樹里面有一個里程計專用坐標系,叫做Odom。

但凡涉及到可移動的機器人的導航系統(tǒng),大概率會涉及到里程計的計算,比如輪式移動機器人、無人機、無人艇,以及多足機器人等,而計算里程計的方案也有很多種,比如基于編碼器合成里程計的方案、基于視覺的里程計方案(ORB SLAM)、基于激光雷達的里程計方案(Hector SLAM)、基于IMU的里程計方案,以及多傳感器融合的方案。

本文主要以輪式移動機器人為載體介紹基于編碼器合成里程計的方案,這是非常經(jīng)典常用的里程計計算方法之一,在輪式移動機器人領(lǐng)域有著廣泛的應用。

02

里程計模型分析

從圖 1.1可以看出,里程計主要包含的信息有兩部分:速度和位姿,因此接下來將從這兩個方面展開介紹。

2.1 速度計算

2.1.1 輪速計算

輪式機器人的驅(qū)動輪是由伺服電機驅(qū)動的,而電機轉(zhuǎn)軸后安裝有編碼器,通過編碼器采集的數(shù)據(jù)可以計算出電機輸出軸轉(zhuǎn)過的角度。

962b52b2-de57-11ed-bfe3-dac502259ad0.jpg

(a)編碼器結(jié)構(gòu)

96357396-de57-11ed-bfe3-dac502259ad0.png

(b)編碼器輸出波形

圖 2.1 光電編碼器原理

編碼器的種類很多,比如增量式光電編碼器(圖 2.1),紅色的光源是固定不動的,當光柵(圖中灰色帶孔圓盤)轉(zhuǎn)動的同時,其電路結(jié)構(gòu)會輸出A、B兩相的方波,使用單片機GPIO的中斷模式可采集到方波邊沿,進而進行計數(shù),當電機軸轉(zhuǎn)動一圈,可獲取總計數(shù)為N(可能是512、也可能是1024,這與編碼器分辨率有關(guān))。

pYYBAGQ_T5qAXtMUAADTXnDO4_Y084.jpg

這樣就可以將所有驅(qū)動輪的線速度計算出來,如果驅(qū)動輪與地面之間沒有相對滑動(也就是打滑),那么該線速度也就是驅(qū)動輪在地面上的運動線速度。

2.1.2 Odom速度計算

Odom坐標系一般與建立機器人運動學模型時的坐標系相同,也就是機器人零半徑轉(zhuǎn)彎的旋轉(zhuǎn)中心為坐標系原點,具體可參考《常見移動機器人運動學模型總結(jié)》。

需要注意的是,Odom是一個運動的坐標系,會隨著機器人的運動而運動,但是Odom記錄的是運動過程中的Odom坐標系狀態(tài)參數(shù)(速度、位姿)是在初始位姿的Odom的坐標系中描述的,如下圖所示:記錄的是Odom(tk)在Odom(t0)坐標系下的位姿和速度。

963b42ee-de57-11ed-bfe3-dac502259ad0.png

圖 2.2 差速驅(qū)動機器人運動及其軌跡

這里需要正運動學模型來計算Odom坐標系原點的運動速度,以兩輪差速驅(qū)動機器人為例,可表示為

9646fa62-de57-11ed-bfe3-dac502259ad0.png

圖 2.3 兩輪差速模型.機器人的外輪廓可視為圓形,直徑為dwb,ICR表示瞬時旋轉(zhuǎn)中心,藍色圓弧表示機器人運動路徑,點L和R分別為左右輪與地面的接觸點。

運動學模型寫為

pYYBAGQ_T7yAR9L8AAAc3sdY978889.jpg

其中,vr和vl分別表示兩驅(qū)動輪的線速度,是可以通過章節(jié)2.1.1中的方法計算出來的,因此幾何中心的線速度vc和角速度w就可以通過公式(4)計算出來。公式(4)中的vc也就是Odom坐標系x軸的線速度vx,由于兩輪差速驅(qū)動機器人的非完整性約束(具體分析可參考《兩輪差速驅(qū)動機器人運動模型及應用分析》),線速度vy和vz均為0,而公式(4)中的角速度w是Odom坐標系z軸的角速度wz,其余角速度wx和wy均為0。

從公式(4)中可以看出,除了前面提到的輪直徑需要校準之外,還需對輪間距dwb進行校準,由此實現(xiàn)

由此,圖 1.1中的的Odom結(jié)構(gòu)體中的Twist子結(jié)構(gòu)體可寫為

poYBAGQ_T9CAdK-9AAAvsBI3u9s122.jpg

表 2?1 兩輪差速驅(qū)動機器人Twist信息

linear angular
x vc 0
y 0 0
z 0 w

以上是兩輪差速驅(qū)動機器人的速度計算思路,而麥輪移動平臺與之不同,屬于全向移動機器人,是包含3個自由度,對應的運動學模型也是不一樣的,寫為

9655772c-de57-11ed-bfe3-dac502259ad0.png

圖 2.4 麥輪平臺運動分解示意圖. 圖中r表示中心點CENTER到麥輪與地面接觸點之間的距離,rx和ry分別表示r在CENTER坐標系x軸和y軸上的投影距離(均為正值).

采用同樣的思路,計算出四個驅(qū)動輪的線速度,結(jié)合公式(5)便可得到麥輪平臺中心的速度信息。

由此,圖 1.1中的的Odom結(jié)構(gòu)體中的Twist子結(jié)構(gòu)體可寫為

表 2?2 麥輪移動平臺Twist信息

linear angular
x vcx 0
y vcy 0
z 0 wc

除了兩輪差速驅(qū)動機器人和麥輪移動平臺,均可以通過上述思路計算得到里程計中的Twist信息。

2.2 位姿計算

計算Odom的位姿是依賴于章節(jié)2.1.2中的速度信息的,我們知道速度對時間積分就是位移,角速度對時間積分就是轉(zhuǎn)角。而里程計記錄的是機器人在某一時間段內(nèi)的運動軌跡,也就是位姿變換過程(如圖 2.2所示),需要用遞推方程表示,如果是兩輪差速驅(qū)動機器人,寫為:

pYYBAGQ_T-mALNTCAAAk7Brx_cE293.jpg

式中,[x y θ]分別表示兩輪差速驅(qū)動機器人在某時刻的位置和姿態(tài)角

965eafe0-de57-11ed-bfe3-dac502259ad0.png

圖 2.5 兩輪差速驅(qū)動機器人運動過程. 藍色弧線表示運動軌跡

結(jié)合圖 2.5來解釋公式(6),從公式(6)可以看出是做了近似處理,包括:dt時間內(nèi)假設(shè)機器人是以[vc w]的速度進行勻速運動,但實際速度肯定不是勻速運動的,這存在誤差;另外,驅(qū)動輪可能存在微弱打滑的情況,也會引入誤差;最后,兩輪差速驅(qū)動機器人運動軌跡是圓弧曲線,速度方向是沿著圓弧切線方向的變化而變化的,但這里假設(shè)dt時間間隔很短,故“以直代曲”,認為機器人運動軌跡是直線段、速度方向也是不變的,在dt時間內(nèi)保持著θ的方向,所以也會引入誤差。

如果是麥輪移動平臺,原理也是和兩輪差速驅(qū)動機器人一致的,但又有些區(qū)別:麥輪平臺多了一個自由度,但可以從速度分解(或運動合成)的角度分析

poYBAGQ_UAGAQKW7AABpohCXdOc183.jpg

麥輪移動平臺公式也包含了兩輪差速驅(qū)動機器人的近似處理思想。

綜合上述分析,可以計算得到t時刻下機器人的運動速度、位姿信息,合在一起也就是里程計信息了。

03

案例分析

從前面的分析可以看出,在計算速度、位姿時,經(jīng)過多次運算,位姿計算精度有所降低,此外,計算速度和位姿時,都需要一個時間間隔dt,那么可以從這個dt入手,進一步化簡,得到更簡潔、優(yōu)雅的公式。

這里以兩輪差速機器人為例,計算化簡里程計公式。

假設(shè)差速機器人在極短的dt時間內(nèi)運動了一小節(jié)距離,故可視為在dt時間內(nèi)機器人做勻速運動,如圖 3.1所示,在極短時間內(nèi)做勻速運動,可寫為

poYBAGQ_UBWABRN4AAANhTFPO5Y576.jpg

9677c444-de57-11ed-bfe3-dac502259ad0.png

圖 3.1 差速驅(qū)動機器人里程計示意圖

如果機器人做勻速運動,且存在角速度,那么機器人中心的運動軌跡一定是一段標準的圓弧,其長度表示為△Sc,對應的圓心角為△θ,因此有下面的這個關(guān)系式

poYBAGQ_UDWAGtmZAABjaaICACY987.jpg

為后續(xù)計算,這里需要對公式(6)做一個修正,細心的讀者可能已經(jīng)發(fā)現(xiàn)問題了,在公式(6)中,方向角使用的是θt,也就是速度vct的方向,這個方向和△dc的方向之間存在一個夾角,這個夾角的大小是△θ/2,使用△dc的方向比速度vct的方向更加準確,因此修正后的公式(6)為

pYYBAGQ_UFGAfm07AADYTZMAMuI513.jpg

從公式(13)可以看出,兜兜轉(zhuǎn)轉(zhuǎn),又回到了公式(8),這里就需要做一個權(quán)衡,如果dt時間間隔極短,那么可以取近似值,也就是認為△dc≈△Sc,以直代曲,如果dt時間間隔偏長,那么可以采用公式(12)計算,計算中包含正弦函數(shù),但會降低計算效率、損失計算精度。

這里就采用“以直代曲”的方式來做進一步計算:

poYBAGQ_UGiAEjpCAADtW1gjYUo213.jpg

從公式(17)可知,僅需要計算左右驅(qū)動輪在dt時間內(nèi)運動過路程,便可得到dt時刻的位姿,回顧到本文的章節(jié)2.1.1的輪速計算,根據(jù)公式(1)可以計算驅(qū)動輪轉(zhuǎn)過的角度,因此可以得到運動的路程

pYYBAGQ_UIGAYna2AAAdxfpg4DU802.jpg

式中,nl1、nl2分辨表示左輪在時間dt前后采集的左輪編碼器讀數(shù),nr1、nr2分辨表示右輪在時間dt前后采集的右輪編碼器讀數(shù)。

所以,將公式(17)和(18)相結(jié)合,僅需要定期采集編碼器讀數(shù),即可更新里程計中的位姿信息,而速度信息也是可以根據(jù)公式(2)和(3),結(jié)合運動學模型計算出來。而在實際應用中,編碼器采集頻率和里程計更新頻率保持一致(或整數(shù)倍),這樣更利于計算,減少重復計算帶來的精度損失和時間消耗。

從前面的公式可以看出,要得到更準確的里程計參數(shù),需要對差速驅(qū)動機器人的輪直徑和輪間距進行校準。

其他的機器人里程計模型也可以參考兩輪差速驅(qū)動機器人案例,做進一步化簡,減少重復計算。

04

結(jié)論及展望

本文主要從編碼器原理介紹、輪速計算及位姿計算等方面分析了輪式移動機器人的通用里程計模型,并以兩輪差速驅(qū)動機器人的里程計計算為案例,詳細分析了兩輪差速驅(qū)動機器人運動規(guī)律及其位姿變換的等效思想,最后給出了簡化后的兩輪差速驅(qū)動機器人里程計模型。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3529

    瀏覽量

    133261
  • 移動機器人
    +關(guān)注

    關(guān)注

    2

    文章

    753

    瀏覽量

    33478
  • SLAM
    +關(guān)注

    關(guān)注

    23

    文章

    405

    瀏覽量

    31710
  • IMU
    IMU
    +關(guān)注

    關(guān)注

    6

    文章

    293

    瀏覽量

    45537
  • orb
    orb
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    9873

原文標題:輪式移動機器人里程計分析

文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于自行車速度里程計的設(shè)計?求大神指點?。?!

    誰能幫幫小弟我! 十分感謝! 要求:用c語言編寫個自行車速度里程計! 基于芯片AT89C51,用霍爾元件測速度!用lcd1602顯示最好!不要求報警!能有個開關(guān)暫停顯示!小弟的
    發(fā)表于 04-16 20:01

    求大神幫忙用c語言編寫個自行車速度里程計

    誰能幫幫小弟我! 十分感謝! 要求:用c語言編寫個自行車速度里程計! 基于芯片AT89C51,用霍爾元件測速度!用lcd1602顯示最好!小弟的qq411694253?。∏蟠笊窀呤种更c
    發(fā)表于 05-17 20:47

    如何去提高汽車里程計電路的抗干擾能力?

    里程計工作原理是什么?汽車里程計的受擾現(xiàn)象有哪些?
    發(fā)表于 05-19 07:26

    如何理解SLAM用到的傳感輪式里程計IMU、雷達、相機的工作原理與使用場景?精選資料分享

    (Odometry)視覺里程計(Visual Odometry)單目視覺里程計(monocular Visual Odometry)雙目視覺里程計(stereo Visual Odometry)視覺慣性
    發(fā)表于 07-27 07:21

    stm32電機驅(qū)動與編碼器讀取

    與ubuntu系統(tǒng)下的ROS串口DMA通信,傳輸?shù)妆P速度等信息第六節(jié) ROS計算和發(fā)布里程計目錄系列文章目錄前言、pid介紹二、pid簡單調(diào)整方法總結(jié)前言今天來為大家介紹底盤實際運動
    發(fā)表于 09-01 08:35

    請問如何理解SLAM用到的傳感輪式里程計IMU、雷達、相機的工作原理?

    請問如何理解SLAM用到的傳感輪式里程計IMU、雷達、相機的工作原理?
    發(fā)表于 10-09 08:52

    什么是編碼器 什么叫編碼器 編碼器什么意思

    什么是編碼器 什么叫編碼器 編碼器什么意思 第一種含義:編碼器是把角位移或直線位移轉(zhuǎn)換成電信號的一種
    發(fā)表于 12-18 00:13 ?1.5w次閱讀
    什么是<b class='flag-5'>編碼器</b> 什么叫<b class='flag-5'>編碼器</b> <b class='flag-5'>編碼器</b>什么意思

    自適應旋轉(zhuǎn)編碼器設(shè)計方案

    的粗/細問題的靈活解決方案。誰說必須使用微處理才能增加智能? 與普通面板安裝式電位的尺寸和形狀相仿,增量式旋轉(zhuǎn)編碼器提供了一種模擬電位
    發(fā)表于 11-16 15:58 ?1次下載
    自適應旋轉(zhuǎn)<b class='flag-5'>編碼器</b>設(shè)計<b class='flag-5'>方案</b>

    視覺里程計的詳細介紹和算法過程

    在導航系統(tǒng)中,里程計(odometry)是一種利用致動的移動數(shù)據(jù)來估算機器人位置隨時間改變量的方法。例如,測量輪子轉(zhuǎn)動的旋轉(zhuǎn)編碼器設(shè)備。里程計
    的頭像 發(fā)表于 08-08 14:21 ?2.6w次閱讀
    視覺<b class='flag-5'>里程計</b>的詳細<b class='flag-5'>介紹</b>和算法過程

    視覺語義里程計的詳細資料說明

    中,我們提出個新的視覺語義里程計(VSO)架構(gòu),使中期連續(xù)追蹤點使用語義。我們提出的框架可以很容易地集成到現(xiàn)有的直接和間接視覺里程計管道中。挑戰(zhàn)真實世界數(shù)據(jù)集的實驗表明,在自主駕駛環(huán)境下,通過整合我們的語義約束
    發(fā)表于 10-28 08:00 ?0次下載
    視覺語義<b class='flag-5'>里程計</b>的詳細資料說明

    基于單個全景相機的視覺里程計

    本文提出了一種新的直接視覺里程計算法,利用360度相機實現(xiàn)魯棒的定位和建圖。本系統(tǒng)使用球面相機模型來處理無需校正的等距柱狀圖像,擴展稀疏直接法視覺里程計(DSO,direct sparse odometry),從而實現(xiàn)全方位感知
    的頭像 發(fā)表于 12-14 14:53 ?734次閱讀

    輪式移動機器人里程計分析

    但凡涉及到可移動的機器人的導航系統(tǒng),大概率會涉及到里程計的計算,比如輪式移動機器人、無人機、無人艇,以及多足機器人等,而計算里程計方案也有很多種,比如基于編碼器
    的頭像 發(fā)表于 04-19 10:17 ?1677次閱讀

    介紹一種新的全景視覺里程計框架PVO

    論文提出了PVO,這是一種新的全景視覺里程計框架,用于實現(xiàn)場景運動、幾何和全景分割信息的更全面建模。
    的頭像 發(fā)表于 05-09 16:51 ?1660次閱讀
    <b class='flag-5'>介紹</b><b class='flag-5'>一種</b>新的全景視覺<b class='flag-5'>里程計</b>框架PVO

    編碼器控制的電位

    編碼器控制的電位
    的頭像 發(fā)表于 12-14 11:35 ?456次閱讀
    由<b class='flag-5'>編碼器</b>控制的電位<b class='flag-5'>計</b>

    編碼器的6常見問題

    編碼器一種非常有用的工具,能夠用于各種信息轉(zhuǎn)換任務。在使用編碼器時,有幾個常見的問題需要注意,并根據(jù)實際情況選擇合適的解決方案
    的頭像 發(fā)表于 01-22 14:57 ?1023次閱讀