URDF:機器人建模方法
ROS是機器人操作系統(tǒng),當然要給機器人使用啦,不過在使用之前,還得讓ROS認識下我們使用的機器人,如何把一個機器人介紹給ROS呢?
為此,ROS專門提供了一種機器人建模方法——URDF(Unified Robot Description Format,統(tǒng)一機器人描述格式),用來描述機器人外觀、性能等各方面屬性。
機器人的組成
建模描述機器人的過程中,我們自己需要先熟悉機器人的組成和參數(shù),比如機器人一般是由硬件結構、驅(qū)動系統(tǒng)、傳感器系統(tǒng)、控制系統(tǒng)四大部分組成,市面上一些常見的機器人,無論是移動機器人還是機械臂,我們都可以按照這四大組成部分進行分解。
-
硬件結構 就是底盤、外殼、電機等實打?qū)嵖梢钥吹降脑O備;
-
驅(qū)動系統(tǒng) 就是可以驅(qū)使這些設備正常使用的裝置,比如電機的驅(qū)動器,電源管理系統(tǒng)等;
-
傳感系統(tǒng) 包括電機上的編碼器、板載的IMU、安裝的攝像頭、雷達等等,便于機器人感知自己的狀態(tài)和外部的環(huán)境;
-
控制系統(tǒng) 就是我們開發(fā)過程的主要載體了,一般是樹莓派、電腦等計算平臺,以及里邊的操作系統(tǒng)和應用軟件。
機器人建模的過程,其實就是按照類似的思路,通過建模語言,把機器人每一個部分都描述清楚,再組合起來的過程。
URDF
ROS中的建模方法叫做URDF,全稱是統(tǒng)一機器人描述格式,不僅可以清晰描述機器人自身的模型,還可以描述機器人的外部環(huán)境,比如這里的桌子,也可以算作一個模型。
URDF模型文件使用的是XML格式,右側就是一個機器人的URDF描述,乍看上去,有點像網(wǎng)頁開發(fā)的源代碼,都是由一系列尖括號包圍的標簽和其中的屬性組合而成。
如何使用這樣一個文件描述機器人呢?比如這個機械臂,大家可以看下自己的手臂,我們的手臂是由大臂和小臂組成,他們獨自是無法運動的,必須通過一個手肘關節(jié)連接之后,才能通過肌肉驅(qū)動,產(chǎn)生相對運動。
在建模中,大臂和小臂就類似機器人的這些獨立的剛體部分,稱為連桿Link,手肘就類似于機器人電機驅(qū)動部分,稱為關節(jié)joint。
所以在URDF建模過程中,關鍵任務就是通過這里的和,理清楚每一個連桿和關節(jié)的描述信息。
連桿Link的描述
標簽用來描述機器人某個剛體部分的外觀和物理屬性,外觀包括尺寸、顏色、形狀,物理屬性包括質(zhì)量、慣性矩陣、碰撞參數(shù)等。
以這個機械臂連桿為例,它的link描述如下:
link標簽中的name表示該連桿的名稱,我們可以自定義,未來joint連接link的時候,會使用到這個名稱。
link里邊的部分用來描述機器人的外觀,比如:
表示幾何形狀,里邊使用調(diào)用了一個在三維軟件中提前設計好的藍色外觀,就是這個stl文件,看上去和真實機器人是一致的
表示坐標系相對初始位置的偏移,分別是x、y、z方向上的平移,和roll、pitch、raw旋轉(zhuǎn),不需要偏移的話,就全為0。
第二個部分,描述碰撞參數(shù),里邊的內(nèi)容似乎和一樣,也有和,看似相同,其實區(qū)別還是比較大的。
部分重在描述機器人看上去的狀態(tài),也就是視覺效果;
部分則是描述機器人運動過程中的狀態(tài),比如機器人與外界如何接觸算作碰撞。在這個機器人模型中,藍色部分是通過來描述的。
在實際控制過程中,這樣復雜的外觀在計算碰撞檢測時,要求的算力較高,為了簡化計算,我們將碰撞檢測用的模型簡化為了綠色框的圓柱體,也就是里邊描述的形狀。
坐標系偏移也是類似,可以描述剛體質(zhì)心的偏移。
如果是移動機器人的話,link也可以用來描述小車的車體、輪子等部分。
關節(jié)Joint描述
機器人模型中的剛體最終要通過關節(jié)joint連接之后,才能產(chǎn)生相對運動。
URDF中的關節(jié)有六種運動類型。
continuous,描述旋轉(zhuǎn)運動,可以圍繞某一個軸無限旋轉(zhuǎn),比如小車的輪子,就屬于這種類型。
revolute,也是旋轉(zhuǎn)關節(jié),和continuous類型的區(qū)別在于不能無限旋轉(zhuǎn),而是帶有角度限制,比如機械臂的兩個連桿,就屬于這種運動。
prismatic,是滑動關節(jié),可以沿某一個軸平移,也帶有位置的極限,一般直線電機就是這種運動方式。
fixed,固定關節(jié),是唯一一種不允許運動的關節(jié),不過使用還是比較頻繁的,比如相機這個連桿,安裝在機器人上,相對位置是不會變化的,此時使用的連接方式就是Fixed。
Floating是浮動關節(jié),第六種planar是平面關節(jié),這兩種使用相對較少。
在URDF模型中,每一個link都使用這樣一段xml內(nèi)容描述,比如關節(jié)的名字叫什么,運動類型是哪一種。
parent標簽:描述父連桿;
child標簽:描述子連桿,子連桿會相對父連桿發(fā)生運動;
origin:表示兩個連桿坐標系之間的關系,也就是圖中紅色的向量,可以理解為這兩個連桿該如何安裝到一起;
axis表示關節(jié)運動軸的單位向量,比如z等于1,就表示這個旋轉(zhuǎn)運動是圍繞z軸的正方向進行的;文章來源:http://www.zghlxwxcb.cn/news/detail-789883.html
limit就表示運動的一些限制了,比如最小位置,最大位置,和最大速度等。文章來源地址http://www.zghlxwxcb.cn/news/detail-789883.html
到了這里,關于ros2 基礎學習 15- URDF:機器人建模方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!