ROS导航-----slam_gmapping使用Log数据创建地图

ROS 2D地图构建教程
本文介绍如何利用ROS环境中的slam_gmapping功能包,结合tf变换和激光扫描数据,构建2D地图的方法。通过rviz可视化工具,观察地图构建过程,并最终使用map_saver工具保存地图。

    本文介绍了如何用记录的tf变换和激光扫描log数据建立2D地图。 在ROS的图形化模拟环境rviz中通过重放记录的数据作为机器人真实传感器采集的输入,来观测地图动态创建过程。


操作步骤如下:


1 slam_gmapping功能包安装

1.1 通过命令安装(较简单)

    sudo apt-get install ros-kinetic-slam-gmapping

1.2 源码安装

    你需要首先下载gmapping源码,然后编译并安装


2 获取记录数据bag包

1)从这里下载现存bag包

wget http://pr.willowgarage.com/data/gmapping/basic_localization_stage.bag

2)使用机器人创建自己的bag包

a)机器人安装激光器,确保可以发布变换数据,且可以遥控操作

b)启动扫描和变换数据记录

rosbag record -O mylaserdata /base_scan /tf
当前目录将创建一个名为mylaserdata_<DATE>-topic.bag的文件

c)让机器人动起来

d)kill掉rosbag用户可以看到记录文件已经创建

3 运行节点管理器master

roscore

4 设置参数,确保在任何节点使用前设定use_sim_time参数为true

rosparam set use_sim_time true

5运行slam_gmapping节点,它将在base_scan主题上监听激光扫描数据并创建地图

rosrun gmapping slam_gmapping scan:=base_scan

Note:在PR2上里程坐标系名字为odom_combined

命令为:

rosrun gmapping slam_gmapping scan:=base_scan _odom_frame:=odom_combined

6 在新终端使用模拟器rosbag启动bag包回放,将数据提供给slam_gmapping节点

rosbag play --clock basic_localization_stage.bag

7启动rviz,在左下方选择add,然后选择map,创建一副空地图;接着制定rviz的topic为/map可以监听到地图数据

rosrun rviz rviz

8 使用map_server功能包的map_saver保存新地图到磁盘(等rosbag结束后)

rosrun map_server map_saver

此时可以看到本地地图map.gpm已经生成,可以用图像浏览器(gimp, eog, gthumb, 等等)打开查看。






z@z-virtual-machine:~/qingzhou_simulation$ source devel/setup.bash z@z-virtual-machine:~/qingzhou_simulation$ roslaunch qingzhou_mapping gmapping.launch ... logging to /home/z/.ros/log/f032ca0a-ff3f-11ef-925f-59958740370c/roslaunch-z-virtual-machine-54496.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://z-virtual-machine:40941/ SUMMARY ======== PARAMETERS * /rosdistro: noetic * /rosversion: 1.17.0 * /slam_gmapping/angularUpdate: 0.5 * /slam_gmapping/astep: 0.05 * /slam_gmapping/base_frame: /base_link * /slam_gmapping/delta: 0.05 * /slam_gmapping/iterations: 5 * /slam_gmapping/kernelSize: 1 * /slam_gmapping/lasamplerange: 0.005 * /slam_gmapping/lasamplestep: 0.005 * /slam_gmapping/linearUpdate: 1.0 * /slam_gmapping/llsamplerange: 0.01 * /slam_gmapping/llsamplestep: 0.01 * /slam_gmapping/lsigma: 0.075 * /slam_gmapping/lskip: 0 * /slam_gmapping/lstep: 0.05 * /slam_gmapping/map_update_interval: 5.0 * /slam_gmapping/maxUrange: 10.0 * /slam_gmapping/minimumScore: 80 * /slam_gmapping/odom_frame: /odom * /slam_gmapping/ogain: 3.0 * /slam_gmapping/particles: 30 * /slam_gmapping/resampleThreshold: 0.5 * /slam_gmapping/sigma: 0.05 * /slam_gmapping/srr: 0.1 * /slam_gmapping/srt: 0.2 * /slam_gmapping/str: 0.1 * /slam_gmapping/stt: 0.2 * /slam_gmapping/temporalUpdate: 3.0 * /slam_gmapping/xmax: 10.0 * /slam_gmapping/xmin: -10.0 * /slam_gmapping/ymax: 10.0 * /slam_gmapping/ymin: -10.0 NODES / rviz (rviz/rviz) slam_gmapping (gmapping/slam_gmapping) ROS_MASTER_URI=http://localhost:11311 process[slam_gmapping-1]: started with pid [54510] process[rviz-2]: started with pid [54511] Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame odom (parent map) at time 235.577000 according to authority unknown_publisher at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp [ IN
03-13
shr@ubuntu:~/h_ws$ source ./devel/setup.bash shr@ubuntu:~/h_ws$ roslaunch nav1_demo nav1_slam.launch ... logging to /home/shr/.ros/log/6244a166-6b80-11f0-b6dc-81b09d21bbf9/roslaunch-ubuntu-43177.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://ubuntu:41347/ SUMMARY ======== PARAMETERS * /rosdistro: noetic * /rosversion: 1.17.4 * /slam_gmapping/angularUpdate: 0.5 * /slam_gmapping/astep: 0.05 * /slam_gmapping/base_frame: base_footprint * /slam_gmapping/delta: 0.05 * /slam_gmapping/iterations: 5 * /slam_gmapping/kernelSize: 1 * /slam_gmapping/lasamplerange: 0.005 * /slam_gmapping/lasamplestep: 0.005 * /slam_gmapping/linearUpdate: 1.0 * /slam_gmapping/llsamplerange: 0.01 * /slam_gmapping/llsamplestep: 0.01 * /slam_gmapping/lsigma: 0.075 * /slam_gmapping/lskip: 0 * /slam_gmapping/lstep: 0.05 * /slam_gmapping/map_update_interval: 5.0 * /slam_gmapping/maxUrange: 16.0 * /slam_gmapping/odom_frame: odom * /slam_gmapping/ogain: 3.0 * /slam_gmapping/particles: 30 * /slam_gmapping/resampleThreshold: 0.5 * /slam_gmapping/sigma: 0.05 * /slam_gmapping/srr: 0.1 * /slam_gmapping/srt: 0.2 * /slam_gmapping/str: 0.1 * /slam_gmapping/stt: 0.2 * /slam_gmapping/temporalUpdate: 3.0 * /slam_gmapping/xmax: 50.0 * /slam_gmapping/xmin: -50.0 * /slam_gmapping/ymax: 50.0 * /slam_gmapping/ymin: -50.0 * /use_sim_time: True NODES / joint_state_publisher (joint_state_publisher/joint_state_publisher) robot_state_publisher (robot_state_publisher/robot_state_publisher) rviz (rviz/rviz) slam_gmapping (gmapping/slam_gmapping) ROS_MASTER_URI=http://localhost:11311 process[slam_gmapping-1]: started with pid [43195] process[joint_state_publisher-2]: started with pid [43196] process[robot_state_publisher-3]: started with pid [43197] process[rviz-4]: started with pid [43198] [ERROR] [1753686908.406468864]: Could not find parameter robot_description on parameter server [robot_state_publisher-3] process has died [pid 43197, exit code 1, cmd /opt/ros/noetic/lib/robot_state_publisher/robot_state_publisher __name:=robot_state_publisher __log:=/home/shr/.ros/log/6244a166-6b80-11f0-b6dc-81b09d21bbf9/robot_state_publisher-3.log]. log file: /home/shr/.ros/log/6244a166-6b80-11f0-b6dc-81b09d21bbf9/robot_state_publisher-3*.log Traceback (most recent call last): File "/opt/ros/noetic/lib/joint_state_publisher/joint_state_publisher", line 42, in <module> jsp = joint_state_publisher.JointStatePublisher() File "/opt/ros/noetic/lib/python3/dist-packages/joint_state_publisher/__init__.py", line 145, in __init__ raise RuntimeError('The robot_description parameter is required and not set.') RuntimeError: The robot_description parameter is required and not set. [joint_state_publisher-2] process has died [pid 43196, exit code 1, cmd /opt/ros/noetic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher __log:=/home/shr/.ros/log/6244a166-6b80-11f0-b6dc-81b09d21bbf9/joint_state_publisher-2.log]. log file: /home/shr/.ros/log/6244a166-6b80-11f0-b6dc-81b09d21bbf9/joint_state_publisher-2*.log
最新发布
07-29
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值