addCollision

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

Описание

addCollision(body,type,parameters) добавляет геометрия столкновения заданного типа type и геометрические параметры parameters к заданному твердому телу body.

пример

addCollision(body,collisionObj) добавляет геометрический объект столкновения в твердое тело bodyВ виде одного из этих объектов столкновения:

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

addCollision(___,tform) задает преобразование для геометрии столкновения относительно системы координат тела в дополнение к любой комбинации входных параметров от предыдущих синтаксисов.

Примеры

свернуть все

Загрузите модель робота и измените сетки столкновения. Очистите существующие сетки столкновения, добавьте простые примитивы объекта столкновения и проверяйте, являются ли определенные настройки в столкновении.

Загрузите модель робота

Загрузите предварительно сконфигурированную модель робота в рабочую область с помощью loadrobot функция. Этой модели уже задали сетки столкновения для каждого тела. Выполните итерации через все элементы твердого тела и очистите существующие сетки столкновения. Подтвердите, что существующих сеток не стало.

robot = loadrobot('kukaIiwa7','DataFormat','column');

for i = 1:robot.NumBodies
    clearCollision(robot.Bodies{i})
end

show(robot,'Collisions','on','Visuals','off');

Figure contains an axes object. The axes object contains 21 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.

Добавьте цилиндры столкновения

Итеративно добавляйте цилиндр столкновения к каждому телу. Пропустите некоторые тела для этой определенной модели, как они перекрываются и всегда сталкиваются с исполнительным элементом конца (тело 10).

collisionObj = collisionCylinder(0.05,0.25);

for i = 1:robot.NumBodies
    if i > 6 && i < 10
        % Skip these bodies.
    else
        addCollision(robot.Bodies{i},collisionObj)
    end
end

show(robot,'Collisions','on','Visuals','off');

Figure contains an axes object. The axes object contains 28 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_ee_kuka_coll_mesh.

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

Сгенерируйте серию случайных настроек. Проверяйте, является ли робот в столкновении в каждой настройке. Визуализируйте каждую настройку, которая имеет столкновение.

figure
rng(0) % Set random seed for repeatability.
for i = 1:20
    config = randomConfiguration(robot);
    isColliding = checkCollision(robot,config);
    if isColliding
        show(robot,config,'Collisions','on','Visuals','off');
        title('Collision Detected')
    else
        % Skip non-collisions.
    end
end

Figure contains an axes object. The axes object with title Collision Detected contains 28 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_ee_kuka_coll_mesh.

Входные параметры

свернуть все

Твердое тело в виде rigidBody объект.

Тип геометрии для геометрии столкновения в виде строкового скаляра. Заданный тип определяет формат parameters входной параметр.

  • "box" x, y, z

  • "cylinder"[radius length]

  • "sphere"radius

  • "mesh"n-by-3 матрица вершин или STL или имени файла ДАУ как строка

Типы данных: char | string

Параметры геометрии столкновения в виде числового вектора, числовой матрицы или строкового скаляра. type введите определяет формат этого значения.

  • "box" x, y, z

  • "cylinder"[radius length]

  • "sphere"radius

  • "mesh"n-by-3 матрица вершин или STL или имени файла ДАУ как строка

Типы данных: single | double | char | string

Геометрический объект столкновения в виде collisionBox, collisionCylinder, collisionSphere, или collisionMesh объект.

Преобразование геометрии столкновения в виде гомогенного преобразования 4 на 4. Если определение столкновения возражает для collisionObj введите, эта функция применяет заданное преобразование к Pose свойство заданного столкновения возражает, чтобы преобразовать вершины столкновения в систему координат твердого тела.

Типы данных: single | double

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2020b