机器人在ROS导航栈中的初始姿势。

问题描述 投票:0回答:1

我有一个比较简单的问题,就是导航栈中机器人姿势的初始化。在环境中做了一个SLAM,并从map_server中以所需的分辨率和大小保存静态地图,最后从静态地图服务器中提供后,我无法正确初始化我的机器人姿势。虽然,初始化可以用RVIZ(2D姿态估计选项),但显然是不准确的,因为我是用手做的。这有第二个缺点,即当我使用位置(move_base_trajectory主题)跟踪而不是速度跟踪(cmd_vel主题)时,有一个当前位置的偏移,我应该在我的低级控制器中手动补偿。有没有其他合适的(自动)姿势初始化方法?PS:我正在使用激光雷达扫描主题来馈送costmap功能.我也测试了机器人的初始化与hector_slam堆栈相当准确,但是,与此同时,我得到了第二个地图,这干扰了第一个地图和姿势关联不工作。我想应该有一个更合适的方法,我正在加载我的静态地图在启动文件中,和我的静态地图yaml文件。

<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
c++ navigation ros robotics pose
1个回答
0
投票

使用 AMCL 用于在预建地图中进行定位。

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

© www.soinside.com 2019 - 2024. All rights reserved.