У меня относительно простая проблема с инициализацией позы робота в стеке навигации. После выполнения SLAM в среде и сохранения карты stati c с map_server с желаемым разрешением и размером, и, наконец, после того, как она стала доступна на картографическом сервере stati c, я не могу правильно инициализировать позу своего робота. Хотя инициализация возможна с помощью RVIZ (опция оценки позы 2D), она явно неточна, поскольку я делаю это вручную. Это имеет второй недостаток, а именно, когда я использую отслеживание позиции (/ move_base_trajectory topi c) вместо отслеживания скорости (/ cmd_vel topi c), есть смещение текущей позиции, которое я должен вручную компенсировать в мой контроллер низкого уровня. Есть ли какой-либо другой правильный (автоматический c) подход к инициализации поз?
PS: я использую Lidar / scan topi c для подачи функциональных возможностей карты затрат. Я также проверил инициализацию робота со стеком hector_slam, что довольно точно, однако, с этим я получаю вторую карту, которая мешает первой и ассоциация поз не работает. Должен быть более правильный подход, я думаю. Я загружаю свою карту stati c в файл запуска:
<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"/>
, а мой файл stati c map yaml так же прост, как
image: mymap.pgm
resolution: 0.100000
origin: [-12.549999, -12.549999, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196