(ros/navigation/gmapping)导航/建地图

概述

http://wiki.ros.org/gmapping

Gmapping包包含OpenSlam的Gmapping的一个ROS封装。Gmapping 的ROS节点slam_gmapping提供基于激光的SLAM(同时定位和创建地图)。依靠移动机器人收集的激光和位姿数据,使用slam_gmapping可以创建2维栅格地图。

外部文档

主要是一个第三方包。

硬件需求

使用slam_gmapping,需要移动机器人提供里程计数据,并且水平安装固定激光测距仪。slam_gmapping节点试图转换每个扫描输入数据到odom(里程计)tf坐标系。见"Required tf transforms"更多需要的转换。

例子

机器人用激光扫描发布创建地图在base_scan话题上:

 rosrun gmapping slam_gmapping scan:=base_scan

节点

slam_gmapping

节点slam_gmapping采用sensor_msgs/LaserScan消息,并且构建地图(nv_msgs/OccupancyGrid)。地图可以通过topic或service检索。

订阅话题

tf(tf/tfMessage)

转换需要涉及激光坐标系,基座坐标系和里程计坐标系。

scan(sensor_msgs/LaserScan)

从激光扫描创建地图

发布话题

map_metadata (nav_msgs/MapMetaData)

从这个话题获得地图数据,这个话题是被锁存的,并定期更新。

map (nav_msgs/OccupancyGrid)

从这个话题获得地图数据,这个话题是被锁存的,并定期更新。

~entropy (std_msgs/Float64)

机器人位姿分布熵的估计(值越高表示越大的不确定性)。

服务

dynamic_map(nav_msgs/GetMap)

调用这个服务来获取地图数据。

参数

http://wiki.ros.org/gmapping

· inverted_laser (string, default: "false")

(REMOVED in 1.1.1; transform data is used instead) 激光是朝上安装(扫描是逆时     针), 还 是朝下安装 (扫描是顺时针)?

· throttle_scans (int, default: 1)

激光雷达每扫描一周跳过多少扫描。

· base_frame (string, default: "base_link")

移动基座的坐标系。

· map_frame (string, default: "map")

地图坐标系。

· odom_frame (string, default: "odom")

里程计系统的坐标系。

· map_update_interval (float, default: 5.0)

地图更新的时间间隔(单位:seconds)。更新间隔越小,计算负荷越大。

· maxUrange (float, default: 80.0)

激光雷达最大可用距离。光束被裁减成这个值。

· sigma (float, default: 0.05)

用作结束点匹配。

· kernelSize (int, default: 1)

在内核内寻找一个对应。

· lstep (float, default: 0.05)

平移的最优步长。

· astep (float, default: 0.05)

旋转的最优步长。

· iterations (int, default: 5)

扫描匹配的迭代次数。

· lsigma (float, default: 0.075)

波束的sigma,用来计算似然估计。

· ogain (float, default: 3.0)

评估似然的增益,用来平滑重采样的影响。

· lskip (int, default: 0)

每次扫描跳过的波束。

· minimumScore (float, default: 0.0)

评价扫描匹配良好结果的最低分数。

· srr (float, default: 0.1)

平移函数在平移时的里程计误差 (rho/rho)。

· srt (float, default: 0.2)

旋转函数在平移时的里程计误差 (rho/theta)

· str (float, default: 0.1)

平移函数在旋转时的里程计误差 (theta/rho)

· stt (float, default: 0.2)

旋转函数在旋转时的里程计误差 (theta/theta)

· linearUpdate (float, default: 1.0)

机器人平移这么远,处理一次扫描。

· angularUpdate (float, default: 0.5)

机器人旋转这个角度,处理一次扫描。

· temporalUpdate (float, default: -1.0)

如果上一次扫描处理比更新时间长,处理一次扫描。值小于0,将会关闭更新相关    的时间。

· resampleThreshold (float, default: 0.5)

基于重采样阈值的Neff。

· particles (int, default: 30)

滤波器的粒子数。

· xmin (float, default: -100.0)

初始地图尺寸。

· ymin (float, default: -100.0)

初始地图尺寸。

· xmax (float, default: 100.0)

初始地图尺寸。

· ymax (float, default: 100.0)

初始地图尺寸。

· delta (float, default: 0.05)

处理参数 (地图的分辨率)。

· llsamplerange (float, default: 0.01)

似然的平移采样距离。

· llsamplestep (float, default: 0.01)

似然的平移采样步长。

· lasamplerange (float, default: 0.005)

似然的角度采样距离。

· lasamplestep (float, default: 0.005)

似然的角度采样步长。

· transform_publish_period (float, default: 0.05)

转换发布间隔,单位:seconds

· occ_thresh (float, default: 0.25)

Gmapping占用值的阈值。有大一些的占用值的单元格,被视为占用。

· maxRange (float)

传感器的最大距离。

需要的tf转换

<the frame attached to incoming scans> → base_link

通常是一个固定值, 由robot_state_publisher或 tf static_transform_publisher.定期广播。

base_link → odom

通常有里程计系统提供(例如,移动机器人的驱动)

提供的tf转换

map → odom

在地图坐标系中机器人位姿的当前估计。

http://wiki.ros.org/pr2_controllers/Tutorials/Using%20the%20base%20controller%20with%20odometry%20and%20transform%20information

email: [email protected]

时间: 2024-10-06 23:50:07

(ros/navigation/gmapping)导航/建地图的相关文章

ROS Navigation中的map_server地图包功能和使用

博客参考 http://wiki.ros.org/map_server 和 https://www.ncnynl.com/archives/201708/1897.html 1. 安装map_server sudo apt-get install ros-kinetic-map-server 2. 具体使用说明 map_server使得地图的数据变成 ros 的service 可以被调用.其中以两种方式存储.一个是yaml文件,他存储了数据的元数据.一个是image file   他编码了地图的

(ros/navigation) navigation导航中一些重要话题的来源和去路

(ros/navigation) navigation导航中一些重要话题的来源和去路,对理解程序有很大帮助 topic1:  cmd_vel Type: geometry_msgs/Twist Publishers: * /move_base Subscribers: * none topic2:  /move_base/NavfnROS/plan Type: nav_msgs/Path Publishers: * /move_base Subscribers: * /rviz topic3: 

(ros/navigation/slam_gmapping) map_server地图服务器

http://wiki.ros.org/map_server 概述 map_server提供map_server ROS节点,它提供地图数据作为一个ROS服务器.也提供map_saver命令行功能,能动态生成保存到文件中的地图. 地图格式 包中通过工具操作的地图是以成堆的文件存储的.YAML文件描述地图的元数据,并命名image文件.Image文件编码占用数据. Image 格式 Image 以对应单元的颜色描述世界中每个单元的占用状态.白色单元格表示自由,黑色单元格表示占用,两种颜色之间的单元

分析ROS Navigation Stack的原因

机器人导航是机器人所有其他功能的基础,手上现有的机器人导航框架已经基本完善,想要再进行性能以及效果上的提高需要很大的改动,因此参考ROS Navigation Stack,进行其代码结构以及思路的阅读,帮自己理清自己项目改进思路,经过几天的分析以及阅读,已经基本明确,接下来几天准备新导航代码的编写.

Roomblock: a Platform for Learning ROS Navigation With Roomba, Raspberry Pi and RPLIDAR(转)

What is this? "Roomblock" is a robot platform consists of a Roomba, a Raspberry Pi 2, a laser sensor(RPLIDAR) and a mobile battery. The mounting frame can be made by 3D printers. ROS navigation system enable to make a map of rooms and use it to

ROS中使用SLAM构建地图

安装gmapping软件包 使用gmapping操作之前,我们需要先用下面的命令安装gmapping: $ sudo apt install ros-melodic-gmapping ROS gmapping软件包是开源SLAM算法,该软件包包含一个名为slam_gmapping的节点,即SLAM算法. 该软件包利用激光扫描数据和移动机器人姿态辅助构建一个2D占据栅格地图. 为gmapping创建启动文件为gmapping创建启动文件时的主要任务是为slam_gmapping节点和move_ba

使用ros hector_mapping建地图

ros中建地图方式有两种: 首先1.首先下载hector_slam包到你工作空间的src下 命令: cd ~/catkin/src git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam.git cd .. catkin_make 在~/catkin_ws/src/hector_slam/hector_slam_launch/launch/新建一个demo.launch <?xml version="1.0"?&

(ros/navigation)how to build a map using logged data 怎样用记录的数据创建地图

1 how to build a map using logged data 怎样用记录的数据创建地图 描述:怎样用记录的转换和激光扫描数据创建二维地图. 创建地图 1.  如果作为源校验(相对于二进制安装),构建gmapping: rosmake gmapping 2. 获取一个包.有两个选择: 1 用机器人创建一个包 2 下载一个现有的包做测试 任何一种方式,都会得到一个包. 3. 启动核心 roscore 4. 在其他节点启动前,确保use_sim_time设置为true <pre nam

ROS中利用V-rep进行地图构建仿真

V-rep中显示激光扫描点  在VREP自带的场景中找到practicalPathPlanningDemo.ttt文件,删除场景中多余的物体只保留静态的地图.然后在Model browser→components→sensors中找到SICK TiM310 Fast激光雷达,拖入场景中: 打开脚本参数修改器,可以修改雷达扫描范围(默认为270°),是否显示雷达扫描线(true),以及最大探测距离(默认为4m)这三个参数.地图大小为5m×5m,我们将雷达最大探测距离改为2m 将激光雷达放到地图中任