Этот пример показывает три способа получить rigidBodyTree
модель с данными о столкновении. Чтобы увидеть больше углубленных примеров, которые проверяют на самоконфликты или обнаружение столкновения окружения, смотрите эти другие примеры:
Многие роботы приходят с сетками столкновения или примитивами, заданными в файле Unified Robot Definition Format (URDF).
Робот KUKA ® IIWA поставляется с набором коллизионных сеток, которые являются упрощенными версиями визуальных сеток. Вызовите importrobot
функция для генерации rigidBodyTree
объект из файла URDF. Установите формат выхода для строений на "column"
.
iiwa = importrobot("iiwa14.urdf"); iiwa.DataFormat = "column";
Визуально осмотрите сетки столкновения робота.
show(iiwa,"Visuals","off","Collisions","on");
Задайте строение, у которого есть собственное столкновение. The checkCollision
функция указывает, сталкивается ли робот с собой в конкретном строении. Визуализация строения.
config = [0 -pi/4 pi 0.9*pi 0 -pi/2 0]'; checkCollision(iiwa,config)
ans = logical
1
show(iiwa,config,"Visuals","off","Collisions","on");
Robotics System Toolbox™ предоставляет общие модели роботов с данными о столкновениях, к которым обращаются с помощью loadrobot
функция.
kukaIiwa14 = loadrobot("kukaIiwa14","DataFormat","column"); checkCollision(kukaIiwa14,config)
ans = logical
1
config = [0 -pi/4 pi 0.9*pi 0 -pi/2 0]';
Визуализируйте робота с видимыми сетками столкновения.
show(kukaIiwa14,config,"Visuals","off","Collisions","on");
The addCollision
функция позволяет вам добавить объекты столкновения к любому твердому телу робота в виде основных форм (коробка, сфера, цилиндр). Можно было бы создать всего робота с этими геометриями столкновения, но это, как правило, менее точно, чем более высокие определения mesh точности .
В данном примере заметьте, что на загруженной модели робота IIWA отсутствует захват. Добавьте захват из примитивов столкновения к iiwa_link_ee
тело на роботе.
addCollision(iiwa.Bodies{end},"cylinder",[0.06,0.05]) addCollision(iiwa.Bodies{end},"box",[0.02,0.02,0.15],trvec2tform([0.03,0,0.05])) addCollision(iiwa.Bodies{end},"box",[0.02,0.02,0.15],trvec2tform([-0.03,0,0.05]))
Визуализируйте робота. Заметьте, что захват присоединен.
show(iiwa,"Visuals","off","Collisions","on");