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

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

Импорт URDF

Много роботов идут с сетками столкновения или примитивами, заданными в файле Объединенного формата определения робота (URDF).

Робот KUKA® IIWA идет с набором сеток столкновения, которые являются упрощенными версиями визуальных сеток. Вызовите importrobotфункция, чтобы сгенерировать rigidBodyTree объект из файла URDF. Установите выходной формат для настроек к "column".

iiwa = importrobot("iiwa14.urdf");
iiwa.DataFormat = "column";

Визуально смотрите сетки столкновения робота.

show(iiwa,"Visuals","off","Collisions","on");

Figure contains an axes object. The axes object contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

Проверяйте на самостолкновения в заданной настройке

Задайте настройку, которая имеет сам столкновение. 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");

Figure contains an axes object. The axes object contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

Загрузка предоставленные модели

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");

Figure contains an axes object. The axes object contains 29 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh.

Добавление отдельного столкновения Obects

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");

Figure contains an axes object. The axes object contains 32 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh, iiwa_link_0_coll_mesh, iiwa_link_1_coll_mesh, iiwa_link_2_coll_mesh, iiwa_link_3_coll_mesh, iiwa_link_4_coll_mesh, iiwa_link_5_coll_mesh, iiwa_link_6_coll_mesh, iiwa_link_7_coll_mesh, iiwa_link_ee_kuka_coll_mesh.