硬件要求
hector_mapping
是基于激光雷达的SLAM的节点,不需要里程计信息,适用于运算能力差的计算机。该算法使用TF对scan数据进行坐标变换,所以雷达不必与指定的基帧相关进行固定,也不需要里程计。
API
hector_mapping
订阅的话题
scan
(sensor_msgs/LaserScan)
- 雷达scan的数据用于SLAM
syscommand
(std_msgs/String)
- 系统命令. 如果字符串等于“重置”,则地图和机器人姿势将重置为其初始状态。
发布的话题
map_metadata
(nav_msgs/MapMetaData)
- 定时的从话题中得到已经被锁存的地图数据
map
(nav_msgs/OccupancyGrid)
- 定时的从话题中得到已经被锁存的地图数据
slam_out_pose
(geometry_msgs/PoseStamped)
- 忽略协方差情况下的机器人位姿预测
poseupdate
(geometry_msgs/PoseWithCovarianceStamped)
- 高斯估计下的机器人位姿预测
服务
dynamic_map
(nav_msgs/GetMap)
- 调用此服务以获取地图数据
reset_map
(std_srvs/Trigger)
- 调用此服务重置地图,hector将从头开始一个全新的地图。请注意,这不会重新启动机器人的姿势,它将从上次录制的姿势重新启动。
pause_mapping
(std_srvs/SetBool)
- 调用此服务以停止/开始处理激光扫描
restart_mapping_with_new_pose
(hector_mapping/ResetMapping)
- 调用此服务以重置地图、机器人的姿势和恢复地图(如果暂停)
参数
~base_frame
(string
, default: base_link)
- T机器人基架的名称,用于定位和转换激光扫描数据的框架
~map_frame
(string
, default: map_link)
- 地图框的名称
~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)
- x 轴上 /map 框的原点 [0.0, 1.0] 相对于格网地图的位置。0.5 在中间
~map_start_y
(double
, default: 0.5)
- y 轴上 /map 框的原点 [0.0, 1.0] 相对于格网地图的位置。0.5 在中间。
~map_update_distance_thresh
(double
, default: 0.4)
- 执行地图更新的阈值 [m]。在地图更新发生之前,平台必须以米为单位行驶这么远,否则会经历自上次更新以来map_update_angle_thresh参数所描述的角度变化
~map_update_angle_thresh
(double
, default: 0.9)
- 执行地图更新的阈值 [rad]。在地图更新发生之前,平台必须经历自上次更新以来map_update_distance_thresh参数指定的角度变化,如此行程参数所描述的
~map_pub_period
(double
, default: 2.0)
- 地图发布周期 [s]
~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)
- 确定系统是否应发布地图>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)
- 确定是否应将要映射转换的扫描匹配器发布到 tf。帧名称由“tf_map_scanmatch_transform_frame_name”参数确定
~tf_map_scanmatch_transform_frame_name
(string
, default: scanmatcher_frame)
- 将扫描匹配器发布到映射转换时的帧名称,如上述参数中所述
所需的 tf 转换
<the frame attached to incoming scans>` → `base_frame
- 通常是一个固定值,由robot_state_publisher或
TF
static_transform_publisher定期发布
提供的 tf 转换
map → odom
- 机器人在地图框中姿势的当前估计值(仅在参数“pub_map_odom_transform”为真时提供)
hector_geotiff
geotiff_node
geotiff_node
是生成地理地图以及地理配准信息的节点
订阅的话题
syscommand
(std_msgs/String)
- 系统命令。如果字符串等于“savegeotiff”,则节点保存地理文件
参数
~map_file_path
(string
, default:"."
)
- 生成的地理地图将保存到路径
~map_file_base_name
(string
, default:"GeoTiffMap"
)
- 为生成的地理文件指定的基本名称。保存地图时,当前时间将追加到此基本名称中
~geotiff_save_period
(double
, default: 0.0)
- 定期自动保存地理文件的时间段(以秒为单位)。如果设置为 0.0,则禁用自动保存
~plugins
(string
, default:""
)
- 应为节点加载的插件名称的空格分隔列表。默认情况下,不加载任何内容
hector_trajectory_server
hector_trajectory_server
是一个节点,用于保存轨迹数据
订阅的话题
syscommand
(std_msgs/String)
- 系统命令。如果字符串等于“重置”,则清除保存的轨迹
trajectory
(nav_msgs/Path)
- 从这个锁定的主题中获取行进轨迹
服务
trajectory
(hector_nav_msgs/GetRobotTrajectory)
- 调用此服务以获取行驶轨迹
参数
~target_frame_name
(string
, default:"map"
)
- tf 目标帧的名称
~source_frame_name
(string
, default:"base_link"
)
- tf 源帧的名称
~trajectory_update_rate
(double
, default: 4.0)
- 保存轨迹的更新速率 [hz]
~trajectory_publish_rate
(double
, default: 0.25)
- 在“轨迹”主题上发布的轨迹的发布速率 [hz]
此处评论已关闭