在機器人界中,三輪全向型底盤也具有非常廣泛的應(yīng)用,基于SLAMWARE的集成過程中,三輪全向型底盤也存在一定難度,為協(xié)助用戶集成,本文將做詳細(xì)說明。
目前,常見的三輪全向型底盤可分為兩種,一種是1個全向輪在前,2個在后(即下圖中的a),另一種是2個全向輪在前,1個在后(即下圖中的b)
在下面的內(nèi)容中,將針對這兩種常用底盤做一個說明。
1.機器人坐標(biāo)系
所有跟機器人運動有關(guān)的計算均在機器人坐標(biāo)系中進行:
如圖所示,機器人前進的正前方為x軸正方向,機器人左側(cè)為y軸正方向,機器人的中心點的地面為坐標(biāo)系的原點(O)
2.機器人運動控制指令
SLAMWARE Core模塊采用統(tǒng)一的全向速度指令來對機器人進行運動控制,其坐標(biāo)系如下:
機器人往前方移動的速度為Vx,往左方平移的速度為Vy,逆時針旋轉(zhuǎn)的角速度為ω。
同理,如果需要機器人向后移動,那么Vx為負(fù)值;向右移動,Vy為負(fù)值;順時針旋轉(zhuǎn),則ω為負(fù)值。
這些速度和角速度的計量單位均為公制單位,即分別為米每秒,和弧度每秒。
注意:角速度的單位是弧度每秒,而非角度每秒,在實際使用中,需要根據(jù)實際單位進行換算。
3.輪組速度定義
根據(jù)輪組布局不同,輪組的速度定義如下圖所示
Va,Vb和Vc分別表示各個輪子的線速度,以讓機器人發(fā)生逆時針旋轉(zhuǎn)的方向為正,單位依然是米每秒
4.機器人位移定義
SLAMWARE在向底盤下達運動指令的同時,需要底盤上報機器人輪組的位移信息。
該位移信息由三部分組成,分別是Dx,Dy,Dθ,定義如下:
同樣的,按照機器人的坐標(biāo)系,如果機器人向前移動了,則Dx為正,向左移動了,則Dy為正,逆時針旋轉(zhuǎn)了,則Dθ為正。
對應(yīng)的每個輪子上的線位移分別是La,Lb,Lc
針對傳統(tǒng)的兩輪差動式的底盤,可以直接使用
SLAMWARECORECB_CMD_GET_BASE_MOTOR_DATA
和SLAMWARECORECB_CMD_SET_BASE_MOTOR兩條指令來操作。
針對其他類型的機器人底盤,涉及到的指令主要是
SLAMWARECORECB_CMD_SET_V_AND_GET_DEADRECKON指令,即0x41指令。
它的請求報文的內(nèi)容是:
所以對應(yīng)的:
而這個指令的響應(yīng)報文如下:(由于歷史原因,響應(yīng)報文中dx ,dy的單位是mm, dtheta的單位是度)
對應(yīng)的代碼如下:
備注:所有公式中的R表示的是機器人的旋轉(zhuǎn)半徑,單位是米(也就是輪子距離機器人中心的距離)
1.速度分解
將SLAMWARE Core下發(fā)的速度指令分解到各個輪子上。
布局a:1個全向輪在前,2個全向輪在后
Va = Vy + R * ω
Vb = - Vx * cos(30°) - Vy * sin(30°) + R * ω
Vc = Vx * cos(30°) - Vy * sin(30°) + R * ω
布局b:2個全向輪在前,1個全向輪在后
Va = - Vy + R * ω
Vb = Vx * cos(30°) + Vy * sin(30°) + R * ω
Vc = -Vx * cos(30°) + Vy * sin(30°) + R * ω
2.里程累積
當(dāng)?shù)妆P收到上述指令以后,需要首先獲得三個輪子在上一次收到這條指令和這一次收到這條指令之間的線位移,分別記作Da,Db,Dc
布局a:1個全向輪在前,2個全向輪在后
Dθ = (Da + Db + Dc) / R / 3
Dx = (- Db * cos(30°) + Dc / cos(30°)) / 2
Dy = (- Db * sin(30°) - Dc / sin(30°) + Da) / 3
布局b:2個全向輪在前,1個全向輪在后
Dθ = (Da + Db + Dc) / R / 3
Dx = (Db / cos(30°) - Dc / cos(30°)) / 2
Dy = (-Da + Db / sin(30°) + Dc / sin(30°)) / 3
關(guān)鍵字:SLAMWARE,三轮全向型底盘,机器人底盘