Import a CAD, URDF, or Robotics System Toolbox model
[
creates a Simscape Multibody model from a CAD, URDF, or Robotics System Toolbox
model.H
,dataFileName
]
= smimport(modelSource
)
modelSource
is the name of the file or object containing the
model or, for CAD import, an intermediate representation of it. CAD models must be
in XML files, URDF models in URDF files, and Robotics System Toolbox models in
RigidBodyTree
objects. XML files must conform to the Simscape Multibody XML schema and URDF files must conform to the URDF specification. A Robotics
System Toolbox license is required to create RigidBodyTree
objects.
H
is the model handle and dataFileName
is the name of the supporting file that, in imported CAD models, stores the numeric
values of block parameters—in a structure array populated with MATLAB variables
referenced in the blocks. The data file provides a mechanism to update the imported
model if the CAD model changes. Models imported from URDF files or
RigidBodyTree
objects do not rely on data files for block
parameters.
XML files can come from different sources. The smexportonshape
function converts Onshape CAD models into XML files
for import. The Simscape Multibody Link plug-in does the same for Autodesk
Inventor®, PTC®, and SolidWorks® CAD models. The plug-in is free to download. For other CAD
applications, and for multibody modeling tools of other types, the Simscape
Multibody XML schema makes it possible to create a custom model export app.
CAD, URDF, and RigidBodyTree
models all share the same components.
These are (i) rigid bodies, also known as parts in CAD models and links in URDF
models, and (ii) kinematic constraints, packaged, in some cases, as joints. Rigid
bodies import as Simulink subsystems with solid and Rigid
Transform blocks—the elemental components from which the
attributes of shape, inertia, color, and placement derive. Constraints map into
joint, gear, and other constraint blocks.
URDF models contain <link>
elements which in turn contain
<joint>
elements. Likewise, RigidBodyTree
objects contain RigidBody
objects which in turn contain
Joint
objects. This hierarchy changes with import into Simscape
Multibody. Joints become siblings to rigid bodies and feature not inside rigid body
subsystems but alongside them. Joint limits and home positions persist, the later as
position state targets, in the appropriate joint blocks.
Joint limits are imported from URDF and RigidBodyTree
models but not from CAD models. Reproduce the joint limits of CAD models
manually if you must—by enabling joint limits in the joint blocks and
setting the limit positions to appropriate values.
[
creates a Simscape Multibody model from a CAD, URDF, or Robotics System Toolbox
model with custom name or regenerates the data file of a previously imported CAD
model. Most name-value pair arguments apply only to CAD models. Use
H
,dataFileName
]
= smimport(modelSource
,Name,Value
)ImportMode
to regenerate parameter data files and
PriorDataFile
to catch inadvertent changes to the model,
such as the removal of a part or a change in its name.
Import a CAD model of a robotic arm. The model has been
exported in XML format using Simscape Multibody Link. The XML file is named
sm_robot.xml
and it is part of your Simscape Multibody
installation.
Import the model and store it in memory as Untitled
.
You can later change the name. As the model is in XML format, you can omit
the extension in its name.
smimport('sm_robot');
Update the diagram to assemble the model and visualize it in Mechanics Explorer. In the Modeling tab, click Update Model.
CAD models often assume the y-axis as the vertical axis while Simscape Multibody models assume the z-axis. As a result, the imported model appears sideways on the screen. Use the View convention drop-down list in Mechanics Explorer to correct for the difference in convention.
In the Mechanics Explorer tool strip, set the View Convention parameter to Y up (XY Front) and select a standard viewpoint, such as Isometric, shown below.
Selecting a standard view activates the new view convention. The model rotates to assume its orientation in the original CAD model.
Simulate the model. The robot arm lacks a control system and swings erratically under the pull of gravity. Build on the model by adding control systems to simulate useful tasks. Add internal mechanics to joints to dampen their motions and specify joint targets to change the initial arm pose.
Import the CAD model of the robotic arm and save it in the active folder with the
name robotto
. Name the parameter data file
robottos_data_file
.
smimport('sm_robot','ModelName','robotto',... 'DataFileName','robottos_data_file');
Regenerate the data file for the imported CAD model of the robotic arm. To avoid
overwriting the original data file, name the new file
robottos_new_data_file
.
smimport('sm_robot','ImportMode','dataFile','DataFileName',... 'robottos_new_data_file','PriorDataFile','robottos_data_file');
Point the imported model to the new data file and reinitialize the model workspace.
hws = get_param(bdroot,'modelworkspace'); hws.DataSource = 'MATLAB File'; hws.FileName = 'robotFileData'; hws.reload;
To do the same using Model Explorer, select the model and, in the Model Workspace pane, update the File Name parameter. Click Reinitialize from Source button to apply the change.
Import a URDF model of a humanoid robot. The model is named
sm_humanoid.urdf
and it is part of your Simscape
Multibody installation.
Import the model and store it in memory as Untitled
.
You can later change the name. As the model is in URDF format, the file
extension is required.
smimport('sm_humanoid.urdf');
Update the diagram to visualize the model in its initial configuration using Mechanics Explorer. In the Modeling tab, click Update Model.
Simulate the model. As with the robot arm, the humanoid robot lacks a control system and swings erratically under the pull of gravity. The shoulder line serves as the root body in the URDF model, and so it is fixed to the world frame after import.
Try modifying the model—for example, by removing the rigid
connection between the shoulder line and the world frame and by adding
control subsystems at the various joints. See the Humanoid Robot
featured example for a version of the model with basic motion controls. You
can open the example by entering sm_import_humanoid_urdf
at the MATLAB command prompt.
RigidBodyTree
ObjectImport a RigidBodyTree
object for an LBR iiwa
serial manipulator (manufactured by KUKA Robotics). The model features in the
Robotics System Toolbox installation as a URDF model named
iiwa14.urdf
.
Convert the URDF model into a RibidBodyTree
object.
iiwaRBT = importrobot('iiwa14.urdf');
A Robotics System Toolbox license is required to run
importrobot
.
Import the iiwaRST
object into Simscape
Multibody.
iiwaSM = smimport(iiwaRBT);
Update the diagram to visualize the model in its initial configuration using Mechanics Explorer. In the Modeling tab, click Update Model.
Simulate the model. As with the robot arm, the iiwa14
model lacks a control system and swings erratically under the pull of
gravity. Build on the model by adding control systems to simulate useful
tasks. Add internal mechanics to joints to dampen their motions and specify
joint targets to change the initial arm pose.