Main Content

clearCollision

Eliminar todas las geometrías de colisión asociadas

Descripción

ejemplo

clearCollision(body) elimina todas las geometrías de colisión asociadas a un objeto de cuerpo rígido especificado.

Ejemplos

contraer todo

Cargue un modelo de robot y modifique las mallas de colisión. Borre las mallas de colisión existentes, añada primitivas de objeto de colisión simples y compruebe si determinadas configuraciones se encuentran en colisión.

Cargar un modelo de robot

Cargue un modelo de robot preconfigurado en el área de trabajo mediante la función loadrobot. Este modelo ya tiene mallas de colisión especificadas para cada cuerpo. Itere a través de todos los elementos del cuerpo rígido y borre las mallas de colisión existentes. Confirme que las mallas existentes hayan desaparecido.

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

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

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

{"String":"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.","Tex":[],"LaTex":[]}

Añadir colisiones en forma de cilindros

Añada iterativamente una colisión en forma de cilindro a cada cuerpo. Omita algunos cuerpos para este modelo concreto, pues se solapan y siempre colisionan con el efector final (cuerpo 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');

{"String":"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.","Tex":[],"LaTex":[]}

Comprobar si existen colisiones

Genere una serie de configuraciones aleatorias. Compruebe si el robot está en colisión en cada una de las configuraciones. Visualice las configuraciones que presenten una colisión.

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

{"String":"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.","Tex":"Collision Detected","LaTex":[]}

Argumentos de entrada

contraer todo

Cuerpo rígido, especificado como un objeto rigidBody.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2020b