slam---mapping构图参数说明

 gmapping

<launch>
  <!-- 雷达话题 -->
  <arg name="scan_topic"  default="scan" />
  <!-- 机器人基座坐标系 -->
  <arg name="base_frame"  default="base_footprint"/>
  <!-- 里程计坐标系 -->
  <arg name="odom_frame"  default="odom_combined"/>

  <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)"/>

    <!-- 地图更新频率 deafult:5.0 地图更新的时间间隔(单位:seconds)。更新间隔越小,计算负荷越大。-->
    <param name="map_update_interval" value="0.01"/>

    <!-- 探测最大可用范围,光束可达范围 default:80.0 激光雷达最大可用距离。光束被裁减成这个值。 -->
    <param name="maxUrange" value="25.0"/>

    <!-- 传感器最大范围。如果在传感器距离范围内没有障碍物应该在地图上显示为自由空进。maxUrange<真实传感器最大距离范围<=maxRange -->
    <param name="maxRange" value="30.0"/>
######激光雷达实际探索最大行程距离为maxRange;当距离探测超出maxUrange时,别认为无效数据,舍弃不用#####

    <!-- endpoint匹配标准差 default:0.05 用作结束点匹配。-->
    <param name="sigma" value="0.05"/>

    <!-- 用于查找对应的kernel size default:1 在内核内寻找一个对应。-->
    <param name="kernelSize" value="3"/>

    <!-- 平移优化步长 default:0.05  平移的最优步长。-->
    <param name="lstep" value="0.05"/>

    <!-- 旋转优化步长 default:0.05  旋转的最优步长。-->
    <param name="astep" value="0.05"/>

    <!-- 扫描匹配迭代步数 default:5 扫描匹配的迭代次数。-->
    <param name="iterations" value="5"/>

    <!-- 用于扫描匹配概率的激光标准差 default:0.075 波束的sigma,用来计算似然估计。 -->
    <param name="lsigma" value="0.075"/>

    <!-- 似然估计为平滑采样影响使用的gain default3.0 评估似然的增益,用来平滑重采样的影响。 -->
    <param name="ogain" value="3.0"/>

    <!-- 每次扫描跳过的光束数 default:0 -->
    <param name="lskip" value="0"/>

    <!-- 为获得好的扫描匹配输出结果,用于避免在大空间范围使用有限距离的激光扫描仪(如5m)
         出现的jumping pose estimates问题。当Scores高达600,如果出现了该问题可以考虑设置50;default:0-->
    <param name="minimumScore" value="30"/>
    <!-- 平移时里程误差作为平均函数(rho/rho) default:0.1 -->
    <param name="srr" value="0.01"/>
    <!-- 平移时里程误差作为旋转函数(rho/theta) default:0.2 -->
    <param name="srt" value="0.02"/>
    <!-- 旋转时的里程误差作为平移函数(theta/rho) default:0.1 -->
    <param name="str" value="0.01"/>
    <!-- 旋转时的里程误差作为旋转函数(theta/theta) default:0.2 -->
    <param name="stt" value="0.02"/>
    <!-- 机器人平移这么远,处理一次扫描。 -->
    <param name="linearUpdate" value="0.05"/>
    <!-- 机器人旋转这个角度,处理一次扫描。 -->
    <param name="angularUpdate" value="0.0436"/>
    <!-- 如果最新扫描处理比更新慢,则处理1次扫描。该值为负数时候关闭基于时间的更新;default:-1.0 -->
    <param name="temporalUpdate" value="-1.0"/>
    <!-- 基于重采样门限的Neff default: 0.5 基于重采样阈值的Neff。-->
    <param name="resampleThreshold" value="0.5"/>

    <!-- 滤波器中粒子数目 default:30-->
    <param name="particles" value="8"/>

    <!-- 地图初始尺寸 default -100 -->
    <param name="xmin" value="-1.0"/>
    <!-- 地图初始尺寸 default: -100 -->
    <param name="ymin" value="-1.0"/>
    <!-- 地图初始尺寸 default: 100 -->
    <param name="xmax" value="1.0"/>
    <!-- 地图初始尺寸 default: 100 -->
    <param name="ymax" value="1.0"/>

    <!-- 地图分辨率 default:0.05 -->
    <param name="delta" value="0.05"/>

    <!-- 用于似然计算的平移采样距离  default: 0.01-->
    <param name="llsamplerange" value="0.01"/>
    <!-- 用于似然计算的平移采样步长 default: 0.01 -->
    <param name="llsamplestep" value="0.01"/>
    <!-- 用于似然计算的角度采样距离 default:0.005 -->
    <param name="lasamplerange" value="0.005"/>
    <!-- 用于似然计算的角度采样步长 default:0.005 -->
    <param name="lasamplestep" value="0.005"/>

    <remap from="scan" to="$(arg scan_topic)"/>

  </node>
</launch>
参数

~inverted_laser (string, default:"false"), (已经已出在 版本 1.1.1; 用transform data 替换它) 激光器是right side up (scans are ordered CCW),还是 upside down (scans are ordered CW)?

~throttle_scans (int, default: 1),处理的扫描数据门限,默认每次处理1个扫描数据(可以设置更大跳过一些扫描数据)

~base_frame (string, default:"base_link"),机器人基座坐标系

~map_frame (string, default:"map"),地图坐标系

~odom_frame (string, default:"odom"),里程计坐标系

~map_update_interval (float, default: 5.0),地图更新频率

~maxUrange (float, default: 80.0),探测最大可用范围,即光束能到达的范围。

~sigma (float, default: 0.05),endpoint匹配标准差

~kernelSize (int, default: 1),用于查找对应的kernel size

~lstep (float, default: 0.05),平移优化步长

~astep (float, default: 0.05),旋转优化步长

~iterations (int, default: 5),扫描匹配迭代步数

~lsigma (float, default: 0.075),用于扫描匹配概率的激光标准差

~ogain (float, default: 3.0),似然估计为平滑重采样影响使用的gain

~lskip (int, default: 0),每次扫描跳过的光束数.

~minimumScore (float, default: 0.0),为获得好的扫描匹配输出结果,用于避免在大空间范围使用有限距离的激光扫描仪(如5m)出现的jumping pose estimates问题。 当 Scores高达600+,如果出现了该问题可以考虑设定值50。

~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),Process a scan each time the robot rotates this far

~temporalUpdate (float, default: -1.0),如果最新扫描处理比更新慢,则处理1次扫描。该值为负数时候关闭基于时间的更新

~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),变换发布时间间隔.

~occ_thresh (float, default: 0.25),栅格地图栅格值 (i.e., set to 100 in the resultingsensor_msgs/LaserScan).

~maxRange (float),传感器最大范围。如果在传感器距离范围内没有障碍物应该在地图上显示为自由空间。 maxUrange < 真实传感器最大距离范围 <= maxRange.######激光雷达实际探索最大行程距离为maxRange;当距离探测超出maxUrange时,别认为无效数据,舍弃不用#####

hector_mapping

<!--1. sudo apt-get update -->
<!--2. sudo apt-get install qt4-default  -->
<!--3. sudo apt-get install ros-kinetic-hector-slam -->
<!--   sudo apt-get install ros-melodic-hector-slam -->
<!--4. rosrun map_server map_saver -f map -->
<launch>
  <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping"   output="screen">
    <param name="pub_map_odom_transform" value="true"/>
    <param name="map_frame" value="map" />
    <param name="base_frame" value="base_footprint" />
    <param name="odom_frame" value="odom_combined" />

 	<!-- Map size / start point -->
    <param name="map_resolution" value="0.050"/>
    <param name="map_size" value="1048"/>
    <param name="map_start_x" value="0.5"/>
    <param name="map_start_y" value="0.5" />
    <param name="map_multi_res_levels" value="2" />

    <!-- Map update parameters -->
    <param name="update_factor_free" value="0.4"/>
    <param name="update_factor_occupied" value="0.9" />   
    <param name="map_update_distance_thresh" value="0.4"/>
    <param name="map_update_angle_thresh" value="0.06" />
    <param name="laser_z_min_value" value = "-1.0" />
    <param name="laser_z_max_value" value = "1.0" />
  </node>

  <arg name="trajectory_source_frame_name" value="scanmatcher_frame"/>
	<arg name="trajectory_update_rate" default="4"/>
	<arg name="trajectory_publish_rate" default="0.25"/>

 
  <node pkg="hector_trajectory_server" type="hector_trajectory_server" name="hector_trajectory_server" output="screen">
	  <param name="target_frame_name" type="string" value="/map" />
	   <param name="source_frame_name" type="string" value="$(arg trajectory_source_frame_name)" />
	  <param name="trajectory_update_rate" type="double" value="$(arg trajectory_update_rate)" />
	  <param name="trajectory_publish_rate" type="double" value="$(arg trajectory_publish_rate)" />
  </node>

 
  <node pkg="hector_geotiff" type="geotiff_node" name="hector_geotiff_node" output="screen" launch-prefix="nice -n 15">
	  <remap from="map" to="/dynamic_map" />
	  <param name="map_file_path" type="string" value="$(find hector_geotiff)/maps" />
	  <param name="map_file_base_name" type="string" value="uprobotics" />
	  <param name="geotiff_save_period" type="double" value="0" />
	  <param name="draw_background_checkerboard" type="bool" value="true" />
	  <param name="draw_free_space_grid" type="bool" value="true" />
  </node>
     

 </launch>
参数:

~base_frame (string, default: base_link) ,机器人基本坐标系的名称。这是用于定位和用于激光扫描数据的变换
~map_frame (string, default: map_link) ,map 坐标系的名称。
~odom_frame (string, default: odom) ,里程坐标系的名称。
~map_resolution (double, default: 0.025) ,地图分辨率[m]。 这是网格单元边缘的长度。
~map_size (int, default: 1024) ,地图的大小[每个轴的单元格数量]。 地图是正方形的并且具有(map_size * map_size)网格单元。
~map_start_x (double, default: 0.5) ,/map的原点[0.0,1.0]在x轴上相对于网格图的位置。 0.5在中间。
~map_start_y (double, default: 0.5) ,/map的原点[0.0,1.0]在y轴上相对于网格图的位置。 0.5在中间。
~map_update_distance_thresh (double, default: 0.4) ,执行地图更新的阈值[m]。平台必须以米为单位计算,在地图上一次更新起算到直行距离达到参数值之后再更新。
~map_update_angle_thresh (double, default: 0.9) ,执行地图更新的阈值[rad]。平台必须以米为单位计算,在地图上一次更新起算到转动达到参数值之后再更新。
~map_pub_period (double, default: 2.0) ,地图发布周期
~map_multi_res_levels (int, default: 3) ,地图多分辨率网格级数。
~update_factor_free (double, default: 0.4) ,用于更新范围[0.0,1.0]中的空闲单元格的地图更新修改器。 值0.5表示没有变化。
~update_factor_occupied (double, default: 0.9) ,用于在范围[0.0,1.0]中更新被占用单元的地图更新修改器。 值0.5表示没有变化。
~laser_min_dist (double, default: 0.4) ,系统使用的激光扫描端点的最小距离[m]。 距离此值更近的扫描端点将被忽略。
~laser_max_dist (double, default: 30.0) ,系统使用的激光扫描端点的最大距离[m]。 超出此值的扫描端点将被忽略。
~laser_z_min_value (double, default: -1.0) ,相对于激光扫描器框架的最小高度[m],用于系统使用的激光扫描端点。 低于此值的扫描端点将被忽略。
~laser_z_max_value (double, default: 1.0) ,相对于激光扫描仪框架的最大高度[m],用于系统使用的激光扫描终点。 高于此值的扫描端点将被忽略。
~pub_map_odom_transform (bool, default: true) ,确定map-> odom转换是否应该由系统发布。
~output_timing (bool, default: false) ,通过ROS_INFO处理每个激光扫描的输出时序信息。
~scan_subscriber_queue_size (int, default: 5) ,扫描订阅器的队列大小。 如果日志文件以比实时速度更快的速度回放到hector_mapping,则应将此值设置为高值(例如50)。
~pub_map_scanmatch_transform (bool, default: true) ,确定scanmatcher到map的转换是否发布到TF.坐标名通过tf_map_scanmatch_transform_frame_name参数确定。
~tf_map_scanmatch_transform_frame_name (string, default: scanmatcher_frame) ,发布scanmatcher到map转换的坐标名。

参考:ROS与SLAM入门教程-hector_mapping参数介绍 - 创客智造 (ncnynl.com)https://www.ncnynl.com/archives/201702/1367.html

 karto_mapping

<!--1. sudo apt-get update -->
<!--2. sudo apt-get install ros-kinetic-slam-karto -->
<!--   sudo apt-get install ros-melodic-slam-karto -->


<launch>

  <node pkg="slam_karto" type="slam_karto" name="slam_karto" output="screen">
    <remap from="scan" to="scan"/>
    <param name="odom_frame" value="odom_combined"/>
    <param name="map_update_interval" value="25"/>//地图更新间隔
    <param name="resolution" value="0.025"/>//分辨率
  </node>

</launch>

map.yaml

image: map.pgm #图像路径,此处为相对路径
resolution: 0.050000  #每个像素点对应的实际距离(米)
origin: [-15.200000, -12.700000, 0.000000]  #地图的位姿:X方向偏移-15.2;Y方向偏移-12.7;角度旋转:0.000
negate: 0
occupied_thresh: 0.65  #障碍物判断阈值
free_thresh: 0.196       #空闲阈值

negate:0        #显示是否取反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值