0

我在导航堆栈中初始化机器人姿势有一个相对简单的问题。在环境中执行 SLAM 并从 map_server 以所需的分辨率和大小保存静态地图,并最终从静态地图服务器提供后,我无法正确初始化我的机器人姿势。虽然可以使用 RVIZ(2D 姿态估计选项)进行初始化,但显然是不准确的,因为我是手动完成的。这有第二个缺点,即当我使用位置(/move_base_trajectory 主题)跟踪而不是速度跟踪(/cmd_vel 主题)时,我应该在低级控制器中手动补偿当前位置的偏移量。还有其他适当的(自动)姿势初始化方法吗?
PS:我正在使用 Lidar /scan 主题来提供成本地图功能。我还用 hector_slam 堆栈测试了机器人的初始化,但是非常准确,我得到了第二张地图,它干扰了第一个地图并且姿势关联不起作用。我猜应该有更合适的方法。我在启动文件中加载我的静态地图:

<master auto="start"/>
 <!-- Run the map server --> 
    <node name="map_server" pkg="map_server" type="map_server" args="$(find my_robot_name_2dnav)/mymap.pgm 0.1"/>

我的静态地图 yaml 文件很简单

image: mymap.pgm
resolution: 0.100000
origin: [-12.549999, -12.549999, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
4

1 回答 1

2

在预建地图中使用AMCL进行本地化。

您必须指定对初始机器人位置的估计,这可以通过 Rviz 或通过将其指定为参数来完成。初始位置不必精确,即使它不是很精确,AMCL 也会随着时间的推移细化位置。

于 2020-04-24T02:25:06.987 回答