实验三 Gmapping建图
體驗內容
使用gmapping方法利用turtlebot底盤移動信息和激光雷達數據進行建圖。
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
對turtlebot_ws/src/rplidar_ros/launch目錄下的文件rplidar.launch進行修改,添加一句
<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"/>
注意要添加在前一個
</node>后面,并且注意空格。
3. 運行
roscore
roslaunch turtlebot_bringup minimal.launch
roslaunch turtlebot_navigation rplidar_gmapping_demo.launch
rviz
將map數據Add進來,并選擇好話題。
啟動鍵盤控制,可以看到rviz程序中顯示的地圖在發生變化。
roslaunch turtlebot_teleop keyboard_teleop.launch
查看tf樹和graph圖
rosrun rqt_tf_tree rqt_tf_tree
rqt_graph
得到一張如下圖所示的建圖結果。
此時分析一下工作中的節點和信息流
保存地圖的操作如下,將得到一張圖片和一個地圖配置文件。
rosrun map_server map_saver -f <path>
作業內容
一、rosbag
自學rosbag,理解時間戳概念,寫出rosbag的相關指令,利用rosbag儲存的信息和gmapping,完成建圖。
在控制turtlebot執行運動和建圖之前,首先打開一個終端運行
rosbag record -a
錄制完成后,在該終端按Ctrl+C結束錄制,生成了數據包。
斷開turtlebot、激光雷達與計算機的連接,重新開啟終端,執行
roscore
roslaunch turtlebot_navigation rplidar_gmapping_demo.launch
rviz
rosbag play <filename>.bag
二、在gazebo中實現gmapping
使用中國大學慕課網《機器人操作系統入門》課程的仿真環境,其代碼的位置為:
Kinetic:https://github.com/DroidAITech/ROS-Academy-for-Beginners/tree/kinetic
Melodic:https://github.com/DroidAITech/ROS-Academy-for-Beginners/tree/melodic
創建工作空間,將上面鏈接中下載的代碼放入src目錄中,進行編譯即可。
可能會遇到cmake報錯,提示qt出現問題,需要安裝qt,參考:
- https://blog.csdn.net/x356982611/article/details/71169940
- https://blog.csdn.net/weixin_41477306/article/details/95743555
成功編譯后,運行
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工具指定目標位姿,使機器人運動起來。
總結
以上是生活随笔為你收集整理的实验三 Gmapping建图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实验一 编程 Hello World
- 下一篇: 自主移动机器人导论