? Gazebo是一個優(yōu)秀的功能強(qiáng)大開源物理環(huán)境仿真平臺,具備強(qiáng)大的物理引擎,高質(zhì)量的圖形渲染等優(yōu)異優(yōu)點(diǎn),可在機(jī)器人和周圍環(huán)境加入多種物理屬性,對機(jī)器人傳感器信息通過插件形式加入仿真,并以可視化的方式進(jìn)行顯示。通過終端命令“roscore”啟動ROS,重新打開一個終端,“rosrun gazebo_ros gazebo”啟動Gazebo界面。
5.1構(gòu)建仿真環(huán)境,仿真環(huán)境的構(gòu)建有兩種方法:
? <1>.直接插入模型,通過下載GitHub網(wǎng)站共享模型文件將其放置到.gazebo/models路徑下,終端輸入命令“git clong https:github.com/osrf/gazebo_models.git”進(jìn)行模型遠(yuǎn)程下載,模型較多,保持網(wǎng)絡(luò)流暢,建議連接手機(jī)熱點(diǎn)進(jìn)行下載,耐心等待,下載完成后在主目錄下生成gazebo_models文件,在usr/include/gazebo-9/gazebo目錄下打開終端輸入命令“sudo mkdir -p models”在gazebo目錄下生成models文件夾,Ctrl+alt+t重新打開終端,命令“sudo mv gazebo_models/ /usr/include/gazebo-9/gazebo/models”將下載的模型文件拷貝到.gazebo/models路徑下,啟動Gazebo,在左側(cè)模型列表中,在insert選項(xiàng)下選擇“Add Path”選項(xiàng),選中.gazebo/models目錄下的gazebo_models模型文件夾,點(diǎn)擊對話框右上角“open”,返回Gazebo界面在右側(cè)模型列表下產(chǎn)生一系列仿真環(huán)境模型,選擇適用模型放置在主顯示區(qū)中。
?
?
? <2>.Building Editor,使用Gazebo提供的Building Editor工具手動繪制地圖,在Gazebo左側(cè)選項(xiàng)欄中選擇“Edit”→“Building Editor”,可以打開如圖界面,選擇左側(cè)繪制選項(xiàng)在上側(cè)窗口鼠標(biāo)繪制,下側(cè)窗口實(shí)時顯示仿真環(huán)境。
5.2在Gazebo中機(jī)器人模型的導(dǎo)入
? 模型導(dǎo)入之前要為機(jī)器人模型添加Gazebo屬性,分別包括<1>.為link添加<gazebo>標(biāo)簽,僅包含material參數(shù)設(shè)置外觀顏色,默認(rèn)模型灰白色。<2>.添加傳動裝置,通過加入驅(qū)動機(jī)器人運(yùn)動的動力源調(diào)節(jié)兩輪驅(qū)動速度比例,進(jìn)而完成一系列動作,需要在模型中加入<transmission>元素使用ROS控制器驅(qū)動機(jī)器人,將傳動裝置與joint綁定。<3>.為使機(jī)器人完成在Gazebo中的運(yùn)動仿真,需要使用Gazebo控制器插件,幫助模型綁定ROS信息,完成傳感器的仿真輸出以及對電機(jī)的控制,Gazebo已經(jīng)提供了一個用于差速控制的插件libgazebo_ros_diff_drive.so,將其應(yīng)用到現(xiàn)有機(jī)器人模型上需要添加插件聲明。(添加Gazebo屬性的模型文件放置在源碼ros_exploring/robot_mrobot/mrobot_gazebo功能包文件夾下)? 為機(jī)器人添加完成一系列Gazebo屬性后,終端輸入命令“roslaunch mrobot_gazebo view_mrobot_gazebo.launch”通過launch啟動文件運(yùn)行Gazebo加載機(jī)器人模型,一切正常,外觀藍(lán)色的機(jī)器人模型成功加載到仿真環(huán)境中。
5.3控制機(jī)器人在Gazebo中運(yùn)動
? 機(jī)器人模型中已經(jīng)加入libgazebo_ros_diff_drive.so插件,在catkin_ws目錄下設(shè)置環(huán)境變量后終端輸入“rosrun teleop_twist_keyboard teleop_twist_keyboard.py”啟動鍵盤控制節(jié)點(diǎn)控制機(jī)器人在Gazebo中運(yùn)動,鍵盤按鍵同Rviz仿真,運(yùn)動過程中對于小型障礙物機(jī)器人可進(jìn)行推動,對于大型障礙物機(jī)器人將難以運(yùn)動。?
5.4傳感器仿真
? 在rviz+ArbotiX仿真環(huán)境中,機(jī)器人裝配的傳感器模型并無法獲取任何環(huán)境數(shù)據(jù),Gazebo提供了一系列傳感器插件獲取仿真環(huán)境傳感信息,以攝像頭模型為例,為攝像頭模型添加Gazebo插件,類似于機(jī)器人模型中的差速控制器插件,傳感器插件也需要在URDF文件中配置,復(fù)制mrobot_description中的傳感器模型到mrobot_gazebo包中,在攝像頭模型文件中添加兩個<gazebo>相關(guān)標(biāo)簽,第一個<gazebo>設(shè)置攝像頭模型material外觀,在第二個<gazebo>標(biāo)簽中,<sensor>標(biāo)簽包含傳感器各種屬性,<camera>標(biāo)簽具體描述攝像頭參數(shù),最后使用<plugin>標(biāo)簽加載攝像頭插件libgazebo_ros_camera.so,同時設(shè)置插件參數(shù)。(攝像頭插件配置完成的機(jī)器人模型文件mrobot_with_camera.urdf.xacro)? ? 攝像頭插件配置完成后,終端“roslaunch mrobot_gazebo view_mrobot_with_camera_gazebo.launch”在Gazebo加載配置了攝像頭的機(jī)器人模型,終端輸入命令“rqt_image_view”,在對話框中選擇仿真攝像頭發(fā)布的圖像話題/camera/image_raw,即可顯示攝像頭觀測到的圖像信息,同時配合鍵盤控制節(jié)點(diǎn)控制機(jī)器人運(yùn)動,可實(shí)現(xiàn)運(yùn)動過程中實(shí)時顯示攝像頭捕捉到的環(huán)境信息。
? 5.5SLAM建圖
? 由于機(jī)器人在Gazebo中使用激光雷達(dá)進(jìn)行SLAM仿真效果更好,最終建立的地圖幾乎和仿真環(huán)境一致,為方便后期仿真工作,因此此處也針對于激光雷達(dá)傳感器進(jìn)行操作。同樣采取類似于攝像頭傳感器的操作方式,在自定義完成激光雷達(dá)模型后添加激光雷達(dá)插件,其中<gazebo>標(biāo)簽中在<ray>標(biāo)簽中設(shè)置雷達(dá)參數(shù),使用<plugin>標(biāo)簽中加載激光雷達(dá)插件libgazebo_ros_laser.so,使模型在Gazebo環(huán)境中具有雷達(dá)的仿真功能。(激光雷達(dá)插件配置完成的機(jī)器人模型文件mrobot_with_rplidar.urdf.xacro)? ? 激光雷達(dá)插件配置完成后,終端“roslaunch mrobot_gazebo view_mrobot_with_laser_gazebo.launch”在Gazebo加載配置了激光雷達(dá)的機(jī)器人模型,終端打開Rviz查看激光雷達(dá)數(shù)據(jù),在rviz中設(shè)置“Fixed Frame”為“base_footprint”,在“add”中添加一個LaserScan類型的插件,修改插件訂閱話題為“/scan”,便可在Rviz界面中顯示激光雷達(dá)數(shù)據(jù)。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-760120.html
?文章來源:http://www.zghlxwxcb.cn/news/detail-760120.html
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
到了這里,關(guān)于機(jī)器人Gazebo仿真應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!