实验三 Gmapping建图
體驗(yàn)內(nèi)容
使用gmapping方法利用turtlebot底盤移動(dòng)信息和激光雷達(dá)數(shù)據(jù)進(jìn)行建圖。
1. 安裝一些依賴包
sudo apt-get install ros-melodic-move-base*
sudo apt-get install ros-melodic-map-server*
sudo apt-get install ros-melodic-amcl*
sudo apt-get install ros-melodic-navigation*
sudo apt-get install ros-melodic-openslam-gmapping
2. 新建launch文件及其配置文件
(1)rplidar_gmapping.launch.xml
在turtlebot_ws/src/turtlebot_apps/turtlebot_navigation/launch/includes/gmapping/目錄下新建文件rplidar_gmapping.launch.xml
<launch><arg name="scan_topic" default="scan" /><arg name="base_frame" default="base_footprint"/><arg name="odom_frame" default="odom"/><node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"><param name="base_frame" value="$(arg base_frame)"/><param name="odom_frame" value="$(arg odom_frame)"/><param name="map_update_interval" value="0.01"/><param name="maxUrange" value="4.0"/><param name="maxRange" value="5.0"/><param name="sigma" value="0.05"/><param name="kernelSize" value="3"/><param name="lstep" value="0.05"/><param name="astep" value="0.05"/><param name="iterations" value="5"/><param name="lsigma" value="0.075"/><param name="ogain" value="3.0"/><param name="lskip" value="0"/><param name="minimumScore" value="30"/><param name="srr" value="0.01"/><param name="srt" value="0.02"/><param name="str" value="0.01"/><param name="stt" value="0.02"/><param name="linearUpdate" value="0.05"/><param name="angularUpdate" value="0.0436"/><param name="temporalUpdate" value="-1.0"/><param name="resampleThreshold" value="0.5"/><param name="particles" value="8"/><!--<param name="xmin" value="-50.0"/><param name="ymin" value="-50.0"/><param name="xmax" value="50.0"/><param name="ymax" value="50.0"/>make the starting size small for the benefit of the Android client's memory...--><param name="xmin" value="-1.0"/><param name="ymin" value="-1.0"/><param name="xmax" value="1.0"/><param name="ymax" value="1.0"/><param name="delta" value="0.05"/><param name="llsamplerange" value="0.01"/><param name="llsamplestep" value="0.01"/><param name="lasamplerange" value="0.005"/><param name="lasamplestep" value="0.005"/><remap from="scan" to="$(arg scan_topic)"/></node>
</launch>
(2)rplidar_gmapping_demo.launch
在turtlebot_ws/src/turtlebot_apps/turtlebot_navigation/launch/目錄下新建文件rplidar_gmapping_demo.launch
<launch><!-- 2D_laser --><arg name="2D_laser" default="rplidar"/><include file="$(find rplidar_ros)/launch/rplidar.launch"></include><!-- Gmapping --><arg name="custom_gmapping_launch_file" default="$(find turtlebot_navigation)/launch/includes/gmapping/$(arg 2D_laser)_gmapping.launch.xml"/><include file="$(arg custom_gmapping_launch_file)"/><!-- Move base --><include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml"/></launch>
(3)修改rplidar.launch
對(duì)turtlebot_ws/src/rplidar_ros/launch目錄下的文件rplidar.launch進(jìn)行修改,添加一句
<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0.0 0.0 1.0 0.0 base_link laser 100"/>
注意要添加在前一個(gè)
</node>后面,并且注意空格。
3. 運(yùn)行
roscore
roslaunch turtlebot_bringup minimal.launch
roslaunch turtlebot_navigation rplidar_gmapping_demo.launch
rviz
將map數(shù)據(jù)Add進(jìn)來,并選擇好話題。
啟動(dòng)鍵盤控制,可以看到rviz程序中顯示的地圖在發(fā)生變化。
roslaunch turtlebot_teleop keyboard_teleop.launch
查看tf樹和graph圖
rosrun rqt_tf_tree rqt_tf_tree
rqt_graph
得到一張如下圖所示的建圖結(jié)果。
此時(shí)分析一下工作中的節(jié)點(diǎn)和信息流
保存地圖的操作如下,將得到一張圖片和一個(gè)地圖配置文件。
rosrun map_server map_saver -f <path>
作業(yè)內(nèi)容
一、rosbag
自學(xué)rosbag,理解時(shí)間戳概念,寫出rosbag的相關(guān)指令,利用rosbag儲(chǔ)存的信息和gmapping,完成建圖。
在控制turtlebot執(zhí)行運(yùn)動(dòng)和建圖之前,首先打開一個(gè)終端運(yùn)行
rosbag record -a
錄制完成后,在該終端按Ctrl+C結(jié)束錄制,生成了數(shù)據(jù)包。
斷開turtlebot、激光雷達(dá)與計(jì)算機(jī)的連接,重新開啟終端,執(zhí)行
roscore
roslaunch turtlebot_navigation rplidar_gmapping_demo.launch
rviz
rosbag play <filename>.bag
二、在gazebo中實(shí)現(xiàn)gmapping
使用中國(guó)大學(xué)慕課網(wǎng)《機(jī)器人操作系統(tǒng)入門》課程的仿真環(huán)境,其代碼的位置為:
Kinetic:https://github.com/DroidAITech/ROS-Academy-for-Beginners/tree/kinetic
Melodic:https://github.com/DroidAITech/ROS-Academy-for-Beginners/tree/melodic
創(chuàng)建工作空間,將上面鏈接中下載的代碼放入src目錄中,進(jìn)行編譯即可。
可能會(huì)遇到cmake報(bào)錯(cuò),提示qt出現(xiàn)問題,需要安裝qt,參考:
- https://blog.csdn.net/x356982611/article/details/71169940
- https://blog.csdn.net/weixin_41477306/article/details/95743555
成功編譯后,運(yùn)行
roscore
roslaunch robot_sim_demo robot_spawn.launch
roslaunch slam_sim_demo gmapping_demo.launch
roslaunch slam_sim_demo view_slam.launch
可以使用rviz中2D Nav Goal工具指定目標(biāo)位姿,使機(jī)器人運(yùn)動(dòng)起來。
總結(jié)
以上是生活随笔為你收集整理的实验三 Gmapping建图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实验一 编程 Hello World
- 下一篇: 自主移动机器人导论