exponenta event banner

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

В этом примере показаны три способа получения 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");

Проверка наличия самоколесов в указанной конфигурации

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