目錄
一?環(huán)境場(chǎng)景搭建world
1.下載insert插件(該插件下會(huì)提供一些建好的場(chǎng)景,也可不下載)
2.環(huán)境搭建(自建)
3.保存環(huán)境
4.配置修改
5.啟動(dòng)環(huán)境
二?機(jī)器人模型URDF
1.模型創(chuàng)建的文件書(shū)寫(xiě)規(guī)范
2.檢查文件格式是否正確
3.啟動(dòng)模型
三?機(jī)器人在場(chǎng)景中運(yùn)動(dòng)
1.機(jī)器人放在場(chǎng)景中
2.為小車(chē)裝配傳感器,執(zhí)行器
3.讓小車(chē)在場(chǎng)景中運(yùn)動(dòng)
四?仿真二維激光SLAM開(kāi)源算法gmapping、cartographer、karto、hector
一?環(huán)境場(chǎng)景搭建world
1.下載insert插件(該插件下會(huì)提供一些建好的場(chǎng)景,也可不下載)
下載存放在主目錄下的.gazebo中(通過(guò)ctrl+h顯示.gazebo文件),命名為models。
2.環(huán)境搭建(自建)
通過(guò)Edit中的builiding命令,上為二維圖,下為三維圖。
3.保存環(huán)境
通過(guò)file中save?world?as,存放在功能包中的world文件夾下,該路徑專門(mén)用于存放自制環(huán)境world。
4.配置修改
修改啟動(dòng)該環(huán)境的launch文件,筆者命名為gazebo_world.launch。修改其中的world為你上一步驟保存的名字。
5.啟動(dòng)環(huán)境
搭建好環(huán)境后便可以通過(guò)launch文件單獨(dú)啟動(dòng)。(只查看環(huán)境)
roslaunch bingda_tutorials gazebo_world.launch
二?機(jī)器人模型URDF
1.模型創(chuàng)建的文件書(shū)寫(xiě)規(guī)范
/<robot>
/<link>(體)顏色/質(zhì)量/慣性/尺寸/形狀/碰撞
/<joint>(關(guān)節(jié))<type>(關(guān)節(jié)活動(dòng)方式) 需指定parent及child的link來(lái)進(jìn)行連接
對(duì)應(yīng)的解釋及使用說(shuō)明在官網(wǎng)鏈接:urdf/XML/link - ROS Wiki
2.檢查文件格式是否正確
check_urdf mybot.urdf //需要roscd定位在urdf目錄下,筆者文件名為mybot.urdf
顯示文件及機(jī)器人模型正確,并在展示了父子關(guān)系
?3.啟動(dòng)模型
(只啟動(dòng)機(jī)器人模型在rviz中顯示,該步驟只給自己看,沒(méi)有實(shí)際應(yīng)用意義)
啟動(dòng)之前,確保display_robot.launch文件中textfile的urdf文件名與第一步的文件名字對(duì)應(yīng)。
roslaunch bingda_tutorials display_robot.launch //啟動(dòng)機(jī)器人urdf模型,該launch文件關(guān)聯(lián)rviz,在rviz中顯示
在rviz中可以查看建模是否正確
三?機(jī)器人在場(chǎng)景中運(yùn)動(dòng)
1.機(jī)器人放在場(chǎng)景中
(1)通過(guò)gazebo_robot.launch文件實(shí)現(xiàn),按照書(shū)寫(xiě)語(yǔ)法,找到前兩節(jié)所建立的文件名:
gazebo_world.launch(環(huán)境模型launch文件)和mybot.urdf(機(jī)器人模型urdf文件)
<launch>
<include file="$(find bingda_tutorials)/launch/gazebo_world.launch"/>
<node name="spawn_model" pkg="gazebo_ros" type="spawn_model" args="-file $(find bingda_tutorials)/urdf/mybot.urdf -urdf -model robot_description" output="screen" />
</launch>
(2)啟動(dòng)該launch文件。顯示機(jī)器人已經(jīng)放在了場(chǎng)景中,但小車(chē)無(wú)法運(yùn)動(dòng)且無(wú)傳感器。
roslaunch bingda_tutorials gazebo_robot.launch
?雖然urdf文件在rviz中機(jī)器人為彩色,但在gazebo中無(wú)效不顯示顏色,需要按照gazebo的格式。
即.xacro文件來(lái)為.urdf文件進(jìn)行補(bǔ)充。(.xacro文件并不是非用不可,也可以單獨(dú)在urdf中完成)
?2.為小車(chē)裝配傳感器,執(zhí)行器
(1)xacro文件
.xacro文件與.urdf文件是相似的,多了開(kāi)頭的include語(yǔ)法,以及結(jié)尾的傳感器與執(zhí)行器的添加。
筆者習(xí)慣將仿真相關(guān)的配置單獨(dú)放在mybot.gazebo.xacro中,例如雷達(dá)的線束,差速控制,imu頻率......等,添加的方式通過(guò)gazebo中plugin載入的,ROS官網(wǎng)的gazebo有介紹到;將最后所有的配置鏈接到mybot.xacro中,也就是mybot.xacro純模型文件包含mybot.gazebo.xacro文件。
?(2)launch文件
在仿真的simulation_robot.launch文件中包含了兩個(gè)文件鏈接:
??? ——gazebo_world.launch//機(jī)器人環(huán)境模型——
??? ——mybot.xacro//機(jī)器人模型及傳感器執(zhí)行器的所有配置——
然后通過(guò)XML文件語(yǔ)法——spawn_model? 將創(chuàng)建好的機(jī)器人加載到環(huán)境模型中。
啟動(dòng)模型:
roslaunch bingda_tutorials simulation_robot.launch
可見(jiàn):小車(chē)已經(jīng)具有了顏色,傳感器,電機(jī)等。
3.讓小車(chē)在場(chǎng)景中運(yùn)動(dòng)
(1)啟動(dòng)鍵盤(pán)控制節(jié)點(diǎn):
rosrun teleop_twist_keyboard teleop_twist_keyboard.py //ros中自帶
PS:若沒(méi)有下載過(guò)鍵盤(pán)控制節(jié)點(diǎn)包,可通過(guò)以下命令下載:
sudo apt-get install ros-melodic-teleop-twist-keyboard//安裝鍵盤(pán)控制節(jié)點(diǎn)
(2)開(kāi)啟相機(jī)第一人稱跟蹤視角 :
rqt_image_view
(3) 開(kāi)啟rviz
rviz
rviz選擇基坐標(biāo)odom,添加雷達(dá)點(diǎn)云Lasercan中topic為/scan,機(jī)器模型model,TF關(guān)系。
3個(gè)窗口分別是:gazebo,image iew,rviz
四?仿真SLAM開(kāi)源算法gmapping、cartographer、karto、hector
(1)開(kāi)啟仿真環(huán)境:
roslaunch bingda_tutorials simulation_robot.launch //仿真環(huán)境+小車(chē)(Gazebo 下)
(2)開(kāi)啟gmapping算法:(添加? simulation:=true;此處也可修改為carto....等算法)
roslaunch robot_navigation gmapping.launch simulation:=true //啟動(dòng)SLAM中GMapping算法 true確保時(shí)間線的統(tǒng)一
(3)開(kāi)啟rviz界面:
roslaunch robot_navigation slam_rviz.launch //啟動(dòng)rviz界面
(4)開(kāi)啟鍵盤(pán)控制節(jié)點(diǎn):
rosrun teleop_twist_keyboard teleop_twist_keyboard.py //ros中自帶
?此時(shí)便可以肆意妄為的在你自己建立的環(huán)境中滿圖跑了,然后便可以看到gmapping的建圖效果:
?(5)保存地圖
roscd robot_navigation/maps/ //選擇目錄
rosrun map_server map_saver -f map//保存建好的圖指定名稱為map
PS:相關(guān)功能包下載:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-761304.html
1.放到src目錄下的bingda_tutorials功能包文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-761304.html
git clone https://gitee.com/bingda-robot/bingda_tutorials
到了這里,關(guān)于Ubuntu18.04 ROS melodic環(huán)境下,通過(guò)Gazebo軟件仿真SLAM算法的學(xué)習(xí)(gmapping/karto/cartographer/hector)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!