01 前言
當(dāng)我們想在gazebo中仿真一個(gè)比較逼真的機(jī)器人時(shí),光有機(jī)器人的樣子是遠(yuǎn)遠(yuǎn)不夠的,一個(gè)真實(shí)的機(jī)器人往往附帶著各種各樣的傳感器,比如用來估計(jì)機(jī)器人位置的編碼器、IMU;用來感知外部環(huán)境的攝像頭、雷達(dá)等等,如果我們想自己在電腦中完全復(fù)現(xiàn)出一個(gè)逼真的傳感器,這是很難得一件事,幸運(yùn)的是gazebo為我們提供了用來仿真?zhèn)鞲衅鞯牟寮畛S玫挠邢鄼C(jī)、kinect、激光雷達(dá)等等,這極大地方便了用戶在仿真環(huán)境中機(jī)器人的構(gòu)建。
本文以三種常見且難度中等的傳感器仿真為例,介紹如何在gazebo中搭建我們自己的傳感器模型。
02RGB相機(jī)
1.urdf建模
相機(jī)的urdf模型還是分為三部分,視覺模型、碰撞模型、慣性模型,在前面的文章中簡要介紹了關(guān)于urdf建模的知識,在相機(jī)的建模中,我們簡單的將它建模為一個(gè)盒子(box),然后賦予它一些真實(shí)的特性。
然后我們使用xacro格式的建模方法,將傳感器單獨(dú)列為一個(gè)文件,然后在主文件中調(diào)用它。
2.gazebo物理特性
在gazebo中的顏色顯示和在rviz中的顏色顯示有所不同,在上述視覺模型中設(shè)定的"black"顏色顯示,只能顯示在rviz中,因此我們先通過以下代碼,設(shè)置模型在gazebo中的顏色。
< gazebo reference="${prefix}_link" >
< material >Gazebo/Black< /material >
< /gazebo >
下面這一部分給出相機(jī)的參數(shù),這些參數(shù)可以根據(jù)現(xiàn)實(shí)生活中我們購買的相機(jī)參數(shù)填入
下面將我們的相機(jī)鏈接到插件庫,實(shí)現(xiàn)真正的相機(jī)仿真
相關(guān)的仿真教程可以在gazebo官網(wǎng)教程找到
03 深度相機(jī)
1.urdf建模
kinect是ROS中常用的深度相機(jī),在gazebo建模中我們將它建模為一個(gè)盒子,但是由于kinect模型的通用性,作為微軟的一個(gè)品牌,人們?yōu)槠渑渲昧四P弯秩疚募?/p>
仍然使用了xacro文件格式,然后在主文件中調(diào)用它
2.gazebo物理特性
第一部分仍然是根據(jù)我們購買的相機(jī)參數(shù)填入它們,其實(shí)現(xiàn)在比較流行的一種建模方法是使用.sdf文件,比如kinect的官方教程中就是根據(jù)提供的sdf再進(jìn)行建模
然后再鏈接到插件庫,進(jìn)行更詳細(xì)的設(shè)置
最后附上了gazebo中使用kinect的教程和如何制作自己sdf模型的教程
04 激光雷達(dá)
1.urdf建模
在激光雷達(dá)建模部分,我們將其建模為一個(gè)圓柱體,通過固定關(guān)節(jié)(fixed)連接在機(jī)器人上方,描述了它的視覺模型、慣性模型以及碰撞模型
2.gazebo物理特性
在官方教程中,說以下參數(shù)都是不說自明的,其實(shí)根據(jù)我們真實(shí)的雷達(dá)參數(shù)進(jìn)行修改即可,我對它們進(jìn)行簡單解釋。
其中,這一條如果為真,則在 gpu 激光器的掃描區(qū)域內(nèi)可以看到半透明的激光射線
< visualize >false< /visualize >
然后我們將雷達(dá)鏈接到插件庫
最后,我們在主文件中,調(diào)用我們寫好的傳感器文件,然后建立關(guān)節(jié)將他們與我們的主體連接起來即可。
05 差速驅(qū)動
在我們的移動機(jī)器人中電機(jī)關(guān)節(jié)往往需要搭配減速器使用,而且通常需要對其進(jìn)行PID控制,ROS為我們提供了差速驅(qū)動插件,以及傳動機(jī)構(gòu)的配置。
1.傳動機(jī)構(gòu)
ROS中的傳動機(jī)構(gòu)主要是在urdf文件中,通過transmission標(biāo)簽體現(xiàn),這一部分其實(shí)是屬于ros提供的通用硬件接口ros_control,有幾種類型的transmission可以使用,如:TransmissionInfo、TransmissionLoader、SimpleTransmission等,我們常用的就是SimpleTransmission,transmission標(biāo)簽分為兩部分-joint和actuator。
joint部分主要是針對要設(shè)置的關(guān)節(jié),hardwareInterface標(biāo)簽指定的是關(guān)節(jié)空間的接口類型。
actuator部分主要是針對驅(qū)動器部分進(jìn)行設(shè)置,mechanicalReduction標(biāo)簽指定關(guān)節(jié)/執(zhí)行器傳動裝置處的機(jī)械減速;hardwareInterface標(biāo)簽指定的是關(guān)節(jié)空間的接口類型。
關(guān)于接口類型的更多說明參考ros的官方解釋。
2.差速驅(qū)動插件
差速驅(qū)動插件也是通過plugin標(biāo)簽鏈接到相應(yīng)的差速驅(qū)動庫,下面對它的一些參數(shù)進(jìn)行了解釋。
06 總結(jié)
本文介紹了ROS仿真中常用的三種傳感器-RGB相機(jī)、Kinect深度相機(jī)、激光雷達(dá)的仿真建模方式以及其中參數(shù)的含義,最后介紹了SLAM中常見的載體-移動機(jī)器人的差速驅(qū)動器建模方式,并簡單介紹了ros_control硬件接口中關(guān)節(jié)的傳動機(jī)構(gòu)的配置。
-
傳感器
+關(guān)注
關(guān)注
2552文章
51331瀏覽量
755461 -
機(jī)器人
+關(guān)注
關(guān)注
211文章
28582瀏覽量
207814 -
編碼器
+關(guān)注
關(guān)注
45文章
3656瀏覽量
134969 -
仿真
+關(guān)注
關(guān)注
50文章
4113瀏覽量
133820 -
ROS
+關(guān)注
關(guān)注
1文章
279瀏覽量
17042
發(fā)布評論請先 登錄
相關(guān)推薦
評論