exponenta event banner

addCollision

Добавление геометрии столкновения к жесткому телу

Описание

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

пример

addCollision(body,collisionObj) добавляет объект геометрии столкновения к жесткому телу, указанному как один из следующих объектов столкновения:

В этом синтаксисе используется 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');

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

Итеративно добавьте цилиндр столкновения к каждому кузову. Пропустить некоторые тела для этой конкретной модели, так как они перекрываются и всегда сталкиваются с концевым эффектором (тело 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
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

Входные аргументы

свернуть все

Жесткое тело, указанное как 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 input, эта функция применяет указанное преобразование к Pose свойство указанного объекта столкновения для преобразования вершин столкновения в каркас жесткого тела.

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2020b