7.Gazebo仿真環(huán)境搭建
寫(xiě)在前面
- 當(dāng)前平臺(tái)文章匯總地址:ROS2機(jī)器人從入門(mén)到實(shí)戰(zhàn)
- 獲取完整教程及配套資料代碼,請(qǐng)關(guān)注公眾號(hào)<魚(yú)香ROS>獲取
- 教程配套機(jī)器人開(kāi)發(fā)平臺(tái):兩驅(qū)版| 四驅(qū)版
- 為方便交流,搭建了機(jī)器人技術(shù)問(wèn)答社區(qū):地址 fishros.org.cn
本節(jié)我們要在Gazebo中建立一個(gè)測(cè)試的環(huán)境,其實(shí)也很簡(jiǎn)單,利用Gazebo的畫(huà)墻工具即可完成。
1. Gazebo的world介紹
world即世界,gazebo的world文件就是用于描述世界模型的,也就是環(huán)境模型。
Gazebo已經(jīng)為我們準(zhǔn)備了很多常用的物體模型,除了基礎(chǔ)的圓球,圓柱,立方體外的,其實(shí)還有飛機(jī)、汽車(chē)、房子等你現(xiàn)實(shí)中無(wú)法擁有的。
但是一開(kāi)始安裝Gazebo的時(shí)候并不會(huì)幫你下載好這些模型,需要我們手動(dòng)下載,萬(wàn)幸的是小魚(yú)已經(jīng)幫你封裝成了一行代碼下載指令,打開(kāi)終端,復(fù)制粘貼下面這句
cd ~/.gazebo && wget https://gitee.com/ohhuo/scripts/raw/master/gazebo_model.py && python3 gazebo_model.py
然后等待腳本運(yùn)行完成,當(dāng)然也不用等它完成,因?yàn)橐还灿?81個(gè)模型,是逐一下載并解壓到~/.gazebo/models/
目錄的。
此時(shí)再次打開(kāi)終端,輸入gazebo
,把選項(xiàng)卡切換到Insert
在Insert選項(xiàng)卡下可以看到一個(gè)目錄,以及目錄下的模型名稱,隨著下載腳本的不斷下載,這里的模型會(huì)越來(lái)越多。
隨手拖幾個(gè),搭建一個(gè)漂亮的環(huán)境出來(lái)~
每個(gè)成功的男人都有一輛車(chē),小魚(yú)也不例外
上面是Gazebo為我們準(zhǔn)備好的開(kāi)源模型,我們也可以通過(guò)Gazebo的工具來(lái)自己畫(huà)一個(gè)環(huán)境。
2. 通過(guò)建墻工具建立world
Gazebo左上角->Edit->Building Editor
接著可以看到這樣一個(gè)編輯界面
2.1 隨手畫(huà)墻
點(diǎn)擊左邊的Wall,你就可以在上方的白色區(qū)域進(jìn)行建墻了。
建完后還可以用選Add Color或者Add Texture,然后點(diǎn)擊下方墻,給墻添加顏色或者紋理。
2.2 從已有地圖畫(huà)墻
首先你要有一個(gè)地圖,小魚(yú)為你準(zhǔn)備了兩個(gè),兩個(gè)圖片都是800*600像素的。
打開(kāi)Gazebo->Gazebo左上角->Edit->Building Editor->左下方選Import
將上面兩個(gè)圖片存到本地,在這個(gè)界面選圖片,記著選Next
左邊選尺寸對(duì)應(yīng)關(guān)系
我們選擇默認(rèn)的,100像素/米。點(diǎn)擊OK(需要手動(dòng)將100改變一下才能點(diǎn)擊OK哦),之后就可以用圖片畫(huà)墻了。
注意:導(dǎo)入完圖片不會(huì)直接出來(lái)墻,圖片只是提供了墻的大概位置,需要你手動(dòng)用墻再將邊描一遍。
建完后點(diǎn)擊File->Exit,在退出的彈框中選Exit。
接著在Gazebo界面中就可以看到墻了,我們?cè)偈謩?dòng)添加幾個(gè)物體,就可以用于下面的導(dǎo)航使用了。
添加完,接著點(diǎn)擊File->SaveWorld,將文件保存到我們的fishbot_descrption的world下。
沒(méi)有world目錄的小伙伴可以先手動(dòng)創(chuàng)建下
點(diǎn)擊右上角Sace,在文件夾就可以看到這個(gè)world文件
3.啟動(dòng)時(shí)加載world
3.1 命令行加載World
加載world其實(shí)也很簡(jiǎn)單,可以先啟動(dòng)Gazebo,再手動(dòng)的加載文件,也可以在Gazebo啟動(dòng)時(shí)加載:
比如在前面加載ROS2插件基礎(chǔ)上再加載fishbot.world。
gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so 你的world文件目錄/fishbot.world
3.2 在launch中加載World
修改launch文件,將上面的命令行寫(xiě)到gazebo.launch.py
中即可。
gazebo_world_path = os.path.join(pkg_share, 'world/fishbot.world')
# Start Gazebo server
start_gazebo_cmd = ExecuteProcess(
cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so', gazebo_world_path],
output='screen')
最后記得修改setup.py文件,讓編譯后將world文件拷貝到install目錄下
添加一行
(os.path.join('share', package_name, 'world'), glob('world/**')),
添加完后
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
(os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')),
(os.path.join('share', package_name, 'urdf'), glob('urdf/**')),
(os.path.join('share', package_name, 'world'), glob('world/**')),
],
3.3 編譯測(cè)試
colcon build
source install/setup.bash
ros2 launch fishbot_description gazebo.launch.py
打開(kāi)RVIZ2看看雷達(dá)
4.總結(jié)
本節(jié)我們實(shí)現(xiàn)了在Gazebo中簡(jiǎn)單的搭建了一個(gè)環(huán)境,下節(jié)我們就開(kāi)始對(duì)SLAM建圖進(jìn)行介紹。
課后作業(yè):
- 將雷達(dá)的Decay Time修改成1000,然后遙控Fishbot在環(huán)境中走一圈,然后觀察雷達(dá)留下的點(diǎn)云形狀。
正確答案如下(小魚(yú)的環(huán)境):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-743547.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-743547.html
到了這里,關(guān)于【ROS2機(jī)器人入門(mén)到實(shí)戰(zhàn)】Gazebo仿真環(huán)境搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!