В этом примере показаны три способа получения rigidBodyTree модель с данными о столкновениях. Для просмотра более подробных примеров проверки на наличие самостоятельных столкновений или обнаружения столкновений в среде см. следующие другие примеры:
Проверка собственных столкновений манипулятора с помощью сетей коллизий
Проверка на наличие столкновений окружающей среды с манипуляторами
Планирование и выполнение траекторий без столкновений с помощью манипулятора KINOVA Gen3
Поток операций выбора и размещения с использованием потока состояний для MATLAB
Многие роботы поставляются с коллизионными сетками или примитивами, указанными в файле Unified Robot Definition Format (URDF).
Робот KUKA ® IIWA поставляется с набором коллизионных сеток, которые представляют собой упрощенные версии визуальных сеток. Позвоните вimportrobotдля создания функции rigidBodyTree из файла URDF. Задайте формат вывода для конфигураций "column".
iiwa = importrobot("iiwa14.urdf"); iiwa.DataFormat = "column";
Визуально осмотрите коллизионные сети робота.
show(iiwa,"Visuals","off","Collisions","on");

Укажите конфигурацию, имеющую самовлияние. 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");

addCollision функция позволяет добавлять объекты столкновения к любому жесткому телу робота в качестве основных форм (коробка, сфера, цилиндр). С помощью этих геометрий столкновений можно построить весь робот, но это, как правило, менее точно, чем определения сетки с более высокой точностью .
В этом примере обратите внимание, что у загруженной модели робота 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");
