[scans,poses] = scansAndPoses(slamObj) возвращает сканирования, используемые объектом LidarSLAM, когда lidarScan возражает, наряду с их связанными положениями [x y theta] из базового графика положения slamObj.
[scans,poses] = scansAndPoses(slamObj,nodeIDs) возвращает сканирования и позирует определенным идентификаторам узла. Чтобы получить идентификаторы узла, смотрите базовый объект PoseGraph в slamObj для идентификаторов узла.
Используйте объект LidarSLAM итеративно добавлять и сравнить сканирования лазерного дальномера и создать оптимизированный график положения траектории робота. Чтобы получить карту заполнения от связанных положений и сканирований, используйте функциюbuildMap.
Загрузите данные и настроенный алгоритм SLAM
Загрузите массив ячеек объектов lidarScan. Сканирования лазерного дальномера были собраны в гараже на роботе Husky® от ClearPath Robotics®. Как правило, лоцируйте сканирования, взяты в высокой частоте, и каждое сканирование не нужно для SLAM. Поэтому вниз выберите сканирования путем выбора только каждого 40-го сканирования.
Чтобы настроить алгоритм SLAM, задайте область значений лазерного дальномера, сопоставьте разрешение, порог закрытия цикла и поисковый радиус. Настройте эти параметры для своего определенного робота и среды. Создайте объект LidarSLAM с этими параметрами.
Используя цикл for, добавьте сканирования в объект SLAM. Объект использует сканирование, соответствующее, чтобы сравнить каждое добавленное сканирование с ранее добавленными единицами. Чтобы улучшить карту, объект оптимизирует график положения каждый раз, когда это обнаруживает закрытие цикла. Каждые 10 сканирований, отобразите сохраненные положения и сканирования.
for i = 1:numel(scans)
addScan(slamObj,scans{i});
if rem(i,10) == 0
show(slamObj);
endend
Просмотрите карту заполнения
После добавления всех сканирований к объекту SLAM создайте карту robotics.OccupancyGrid путем вызова buildMap со сканированиями и положениями. Используйте то же разрешение карты и макс. область значений, которую вы использовали с объектом SLAM.
Лоцируйте объект SLAM, заданный как объект LidarSLAM. Объект содержит параметры алгоритма SLAM, данные о датчике, и базовый график положения раньше создавал карту.
nodeIDs Идентификаторы узла из графика положения положительное целое число
Идентификаторы узла из графика положения, заданного как положительное целое число. Узлы добавляются к графику положения с последовательными идентификационными номерами. Чтобы получить идентификаторы узла, смотрите базовый объект PoseGraph в slamObj для идентификаторов узла.
Позируйте каждому сканированию, возвращенному как n-by-3 матрица векторов [x y theta]. Каждая строка является положением, которое соответствует сканированию в scans.
Расширенные возможности
Генерация кода C/C++ Генерация кода C и C++ с помощью MATLAB® Coder™.
Используйте этот синтаксис при построении объектов LidarSLAM для генерации кода:
slamObj= robotics.LidarSLAM(mapResolution,maxLidarRange,maxNumScans) указывает, что верхняя граница на количестве принятых сканирований позволила при генерации кода. maxNumScans является положительным целым числом. Этот предел сканирования только требуется при генерации кода.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.