Я использую ROS и пытаюсь изменить размер сетки занятости карты, чтобы она соответствовала диаметру робота D (мой робот имеет форму цилиндра), то есть любой размер ячейки сетки будет DX D. IМожно предположить, что диаметр робота будет больше, чем исходное разрешение ячейки сетки, и что если новый размер ячейки не делится на исходный размер ячейки, я могу «выбросить» то, что осталось от исходных ячеек.Когда я подумал обо всех краевых случаях, я подумал, что мои шаги должны быть примерно такими: 1) Найти, сколько исходных ячеек вписывается в диаметр, и округлить до ближайшего целого числа.мы назовем это фактором.2) Цикл по новым ячейкам сетки размера D, чтобы определить, должны ли новые ячейки быть заняты или нет: а) Тогда, если решил, что на первой итерации я должен зацикливаться на ячейках первого фактора X фактора исходной сетки, иесли я найду одну занятую ячейку, то (0,0) новая D-ячейка будет занята, если нет, то свободна.но я заметил, что для (0,1) новой D-ячейки во второй итерации мне нужно также проверить ячейку с числовым множителем и число ячеек после нее.И здесь я просто снова и снова пытался изящно написать этот сложный вложенный цикл и потерпел неудачу.Я хотел бы получить обзор моего мышления и некоторую помощь в написании этого вложенного цикла.
Вот числовой пример: диаметр моего робота составляет 1,6 метра.Моя оригинальная высота сетки 10 метров.Моя оригинальная ширина сетки 10 метров.Мое исходное разрешение сетки составляет 0,5 метра.
Мой коэффициент будет: округляться вверх (1,6 / 0,5) = 4. Мой новый порядок сетки D будет округляться вниз (10 / 1,6) = 6. Это означает 6 X6 ячеек сетки.- для ячейки (0,0) D я переберу исходные ячейки от (0,0) до (3,3), если одна из занятых я помечу эту ячейку D как занятую, в противном случае она не будет занята.- для ячейки (0,1) D я переберу исходные ячейки от (3,0) до (7,4).
и т. д., что означает, что у меня есть проблемы с первым и последнимстроки и столбцы.
Спасибо!