- Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
\
добиться чистого позиционирования
(1) Поскольку карта обычной карты картографа публикуется картографом, следующим образом
rostopic info /map
Type: nav_msgs/OccupancyGrid
Publishers:
* /cartographer_occupancy_grid_node
Поэтому выпуск карты нужно заменить на
<node name="map_server" pkg="map_server" type="map_server"
args="/home/lx/carto_ws/map/2d-1.yaml" />
удалить оригинал
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
Это изменено в файле запуска, который запускает отображение картографа.
(2) Открытое чистое позиционирование
Измените параметры конфигурации файла lua.
TRAJECTORY_BUILDER.pure_localization_trimmer = {
max_submaps_to_keep = 3, //Максимальное количество сохраняемых подкарт, режим позиционирования позиционируется по подкартам, но нужны только текущая и предыдущая подкарты, здесь ставлю 2
}
POSE_GRAPH.optimize_every_n_nodes = 20 //Каждые 20 допустимых кадров есть подграф, и после создания подграфа требуется обнаружение с обратной связью.
Принцип чистого позиционирования
Чисто позиционированное дерево ТФ
Карта tf для следа на картинке - это фактическая поза робота.
Оптимизация для чистого позиционирования
Чистое позиционирование имеет как минимум две траектории
Чистая локализация отличается от картографирования. Во-первых, мы ожидаем меньшей задержки для локального и глобального SLAM. Во-вторых, глобальный SLAM обычно находит очень большое количество взаимных ограничений между замороженной траекторией в виде карты и текущей траекторией.
Если вы используете pure_localization в , submaps.resolution должно соответствовать разрешению используемой вами подкарты .pbstream. Использование другого разрешения в настоящее время не проверено и может работать не так, как ожидалось.
POSE_GRAPH.optimize_every_n_nodes нужно уменьшить, тогда частоту оптимизации увеличить
Уменьшение global_sampling_ratio снижает глобальную частоту дискретизации, а уменьшение limited_builder.sampling_ratio уменьшает частоту дискретизации общих ограничений. Поэтому объем расчета уменьшается
Чтобы запустить чистое позиционирование, submaps.resolution должно совпадать с разрешением подкарт в .pbstream.
Релевантная информация
Прикладная адаптация режима чистого позиционирования Cartographer на низкопроизводительных процессорах