ROS 导航栈中机器人的初始姿态

initial pose of robot in ROS navigation stack

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

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

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