Main Content

show

Visualize capsule approximation of rigid body tree

Since R2022b

    Description

    show(capapprox) shows the collision capsule approximation superimposed on the original collision geometries of the corresponding rigid body tree in the home configuration of the rigid body tree.

    show(capapprox,config) shows the collision capsule approximation superimposed on the original collision geometries of the corresponding rigid body tree with the specified joint configuration config.

    example

    show(capapprox,Parent=ax) specifies the parent axes handle ax to plot capsule-approximated rigid body tree.

    ax = show(capapprox,___) returns the axes handle ax containing the capsule-approximated rigid body tree plot.

    Examples

    collapse all

    Load a robot into the workspace and visualize it.

    robotIRB = loadrobot("abbIrb120");
    show(robotIRB);

    Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 24 objects of type patch, line. These objects represent base_link, base, link_1, link_2, link_3, link_4, link_5, link_6, tool0, link_1_mesh, link_2_mesh, link_3_mesh, link_4_mesh, link_5_mesh, link_6_mesh, base_link_mesh.

    Create a capsule approximation of the robot, and visualize the capsule-approximated robot model.

    capsIRB = capsuleApproximation(robotIRB);
    figure
    show(capsIRB,homeConfiguration(capsIRB.RigidBodyTree));

    Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 31 objects of type patch, line. These objects represent base_link, base, link_1, link_2, link_3, link_4, link_5, link_6, tool0, link_1_mesh, link_2_mesh, link_3_mesh, link_4_mesh, link_5_mesh, link_6_mesh, base_link_mesh, link_1_coll_mesh, link_2_coll_mesh, link_3_coll_mesh, link_4_coll_mesh, link_5_coll_mesh, link_6_coll_mesh, base_link_coll_mesh.

    Use the getCapsules function to see if the end effector, "tool0", has any collision capsules. Because tool0 is just a frame, it has no collision mesh to approximate as a collision capsule.

    capsulesTool = getCapsules(capsIRB,"tool0")
    capsulesTool =
    
      1x0 empty cell array
    

    Add a capsule to tool0, at a position 0.15 meters along the x-axis, with a radius of 0.15 and a length of 0.

    addCapsule(capsIRB,"tool0",[0.15 0],trvec2tform([0.15 0 0]))
    show(capsIRB,homeConfiguration(capsIRB.RigidBodyTree));

    Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 32 objects of type patch, line. These objects represent base_link, base, link_1, link_2, link_3, link_4, link_5, link_6, tool0, link_1_mesh, link_2_mesh, link_3_mesh, link_4_mesh, link_5_mesh, link_6_mesh, base_link_mesh, link_1_coll_mesh, link_2_coll_mesh, link_3_coll_mesh, link_4_coll_mesh, link_5_coll_mesh, link_6_coll_mesh, base_link_coll_mesh, tool0_coll_mesh.

    Again check tool0 for a collision capsule, and verify the properties of the detected capsule.

    capsulesTool = getCapsules(capsIRB,"tool0")
    capsulesTool = 1x1 cell array
        {1x1 collisionCapsule}
    
    
    capsulesTool{1}
    ans = 
      collisionCapsule with properties:
    
        Radius: 0.1500
        Length: 0
          Pose: [4x4 double]
    
    

    Remove the capsule from the base link. Then, reduce the collision capsule size of tool0, and move it -0.05 meters from the previous position along the x-axis.

    removeCapsule(capsIRB,"base_link",1)
    updatePose(capsIRB,"tool0",trvec2tform([-0.05 0 0]),1)
    updateGeometry(capsIRB,"tool0",[.1 0.01],1)
    show(capsIRB,homeConfiguration(capsIRB.RigidBodyTree));

    Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 31 objects of type patch, line. These objects represent base_link, base, link_1, link_2, link_3, link_4, link_5, link_6, tool0, link_1_mesh, link_2_mesh, link_3_mesh, link_4_mesh, link_5_mesh, link_6_mesh, base_link_mesh, link_1_coll_mesh, link_2_coll_mesh, link_3_coll_mesh, link_4_coll_mesh, link_5_coll_mesh, link_6_coll_mesh, base_link_coll_mesh, tool0_coll_mesh.

    Input Arguments

    collapse all

    Capsule approximation of a rigid body tree, specified as a capsuleApproximation object.

    Rigid body tree robot model configuration, specified as an n-element row vector, in radians. n is the number of movable joints in the rigid body tree model.

    Example: [pi 0 pi/2 0 0] is a configuration for a rigid body tree with five movable joints.

    Parent axes graphic handle, specified as an Axes object.

    Output Arguments

    collapse all

    Axes graphic handle, returned as an Axes object.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2022b

    See Also

    Objects