我在导航堆栈中初始化机器人姿势有一个相对简单的问题。在环境中执行 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