Получите данные о столкновении для проверки столкновения манипулятора

Этот пример показывает три способа получить rigidBodyTree модель с данными о столкновении. Чтобы увидеть больше углубленных примеров, которые проверяют на самоконфликты или обнаружение столкновения окружения, смотрите эти другие примеры:

Импорт URDF

Многие роботы приходят с сетками столкновения или примитивами, заданными в файле 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");

Для просмотра документации необходимо авторизоваться на сайте