Planar Contact Force Block: Model planar contacts
You can use the Planar Contact Force block to model contacts that happen in a single plane. In some cases, you can simplify a 3-D contact problem to a planar contact problem and use the Planar Contact Force block to reduce the computational cost.
The block works similarly to the Spatial Contact Force block and uses the built-in penalty method or custom normal and friction force laws to model a contact. The block can measure quantities during contact, such as contact forces, contact frame, and penetration depth of two geometries. In R2023b, the block can model contacts between these geometry pairs:
Disk and disk
Disk and line segment
Disk and point
Disk and 2-D point cloud
Local Solver: Use discrete solvers for simulations that include Simscape Multibody models
You can now specify the global solver of a simulation that includes Simscape™ Multibody™ models as discrete solvers if the multibody models use the Simscape Multibody local solver. Using the local solver can increase the efficiency of a simulation. For example, you can specify a different time step for a multibody model of the simulation to reduce computations. In certain cases, if the global solver is implicit, using the local solver can reduce the computations for a multibody model even if all the solvers have the same step size.
You can switch one or more multibody models in the same simulation to use the local solver. To use a local solver, you can connect the multibody model to a dedicated Solver Configuration block and select the Use local solver check box under the Multibody section. The solver and step size in each Solver Configuration block are specific to the connected multibody model and can vary from model to model. The step size of the global solver must be the smallest among all the solvers in a simulation.
A multibody model that uses a local solver appears to the global Simulink® solver as if it has discrete states. The local solver updates the states once per local time step.
The local solvers are explicit and fixed-step:
First-order explicit formula
Second-order explicit formula
Third-order explicit formula
Fourth-order explicit formula
Fifth-order explicit formula
Eighth-order explicit formula
The local solvers use the same mathematical equations as their corresponding
ode solvers, such as ode1,
ode5, and ode8.
Line Segment Block: Create 2-D line segments
The Line Segment block creates a line segment along the x-axis of the reference frame of the block. The midpoint of the line segment is located at the origin of the reference frame.
Spatial Contact Force Block Enhancements: Sense contact quantities for point clouds and grid surfaces and measure penetration depth
You can now use input forces to model contacts for point clouds and grid surfaces with other geometries and sense the corresponding contact quantities. For the valid geometry pairs, see the description of the Spatial Contact Force. When one of the geometries is a point cloud, the signals of the input forces must be arrays that specify forces for every point in the cloud, and the measured contact quantities are arrays that contain information for every point in the cloud.
You can use the Spatial Contact Force block to measure the penetration depth between two contact geometries. The value equals the overlap distance when two geometries collide and equals zero when the geometries are not in contact.
Transform Sensor Block Enhancement: Output vector measurements for translation, velocity, acceleration, angular velocity, and angular acceleration
You can now use the Transform Sensor block to output vectors for the measurements of the translation, velocity, acceleration, angular velocity, and angular acceleration. The vector outputs contain the x, y, and z components.
Magic Formula Tire Force and Torque Block Enhancement: Use Contact Signal parameter to determine if the tire contacts a geometry
You can now use the Contact Signal parameter to determine
whether the tire contacts a geometry, such as a plane. When the contact happens the
parameter equals 1, otherwise the parameter equals
0 and all sensed outputs, such as the tire force, tire
torque, and slip angle, become zero.
Point Cloud Block Enhancement: Create 2-D point cloud
To create a 2-D point cloud, enter an N-by-2 matrix for the Coordinates Matrix parameter of the Point Cloud block. The 2-D point cloud is on the xy-plane of the reference frame. Each row of the matrix specifies the Cartesian coordinates of a point with respect to the reference frame of the block. An error occurs if the matrix has any repeated rows. You can use the unique function to remove repeated rows from an input matrix.
File Solid Block Enhancement: Import assemblies
You can now import assemblies to the File Solid block from various CAD formats. The File Solid block represents the imported assembly as a single rigid body with the default pose recorded in the CAD file. The block ignores all the constraints and assumes that the whole geometry has one density. The block can obtain the density from the CAD file if the densities of all the parts are the same. If the assembly file does not have a density or has multiple densities, you must explicitly specify the inertia properties for the assembly.
Simulink Interface for Siemens MF-Tyre/MF-Swift Tire Model Enhancement: Use the tire model for prior releases
The Simulink Interface for Siemens® MF-Tyre®/MF-Swift Tire Model add-on is backward compatible with the Simscape Multibody version 7.4 and after. To download and use the tire model, see Simulink Interface for Siemens MF-Tyre/MF-Swift Tire Model: Use the tire model.
Example Updates: Open examples from the documentation or command line
As of R2023b, you must use openExample to open Simscape
Multibody example models from the command line. You can still access the example
models from the documentation. For instance, to open the Assembling Parts into a Four Bar Mechanism example from the command line,
enter:
openExample('sm/FourBarExample')
| Example Name | R2023a and Before | R2023b |
|---|---|---|
| Backhoe | sm_backhoe | BackhoeExample |
| Rotational Interface : Electrically Operated Bread Slicer | sm_bread_slicer | ElectricalInterfaceExample |
| Using the Spatial Contact Force Block - Bumper Car | sm_bumper_car | SpatialContactForceBusExample |
| Block and Tackle with Four Pulleys | sm_cable_block_and_tackle | BlockAndTackleExample |
| Pulley Mechanism Right Angle Drive | sm_cable_drive_right_angle | RightAngleDriveExample |
| Elevator | sm_cable_elevator | ElevatorExample |
| Cable Robot | sm_cable_robot | CableRobotExample |
| Cable Driven Space Manipulator | sm_cable_space_manipulator | SpaceManipulatorExample |
| Tower Crane With Trolley and Hoist | sm_cable_tower_crane | TowerCraneExample |
| Cable-Driven XY Table with Cross Base | sm_cable_xytable_cross | CrossSlideTableExample |
| Using the Point-On-Curve Block Flapping Wing Mechanism | sm_cam_flapping_wing | PointOnCurveExample |
| Full Vehicle on Four Post Testrig | sm_car_4post_testrig | FourPostTestrigExample |
| Vehicle Dynamics - Car with Heave and Roll | sm_car_heave_roll | HeaveRollCarExample |
| Using the Common Gear Block - Cardan Gear Mechanism | sm_cardan_gear | ExternalCommonGearExample |
| Fairground Carousel Ride | sm_carousel | CarouselExample |
| Inverted Double Pendulum on a Sliding Cart | sm_cart_double_pendulum | InvertedDoublePendulumExample |
| Collision Course | sm_collision_course | VariableModeJointRecirculationExample |
| Creating a Complex Part | sm_compound_body | CompoundBodyExample |
| Assembling Parts into a Double Pendulum | sm_double_pendulum | DoublePendulumExample |
| Double Pendulum in Simulink and Simscape Multibody | sm_double_pendulum_sl | DoublePendulumSimulinkComparisonExample |
| Double Wishbone Suspension | sm_double_wishbone_suspension | DoubleWishboneExample |
| Drop and Catch | sm_drop_and_catch | VariableModeJointContactExample |
| Hydraulic Interface - Dump Trailer with Hydraulic Cylinder | sm_dump_trailer | HydraulicInterfaceExample |
| Flexible Dipper Arm | sm_flexible_dipper_arm | ReducedOrderFlexibleSolidExample |
| Forklift | sm_forklift | ForkliftExample |
| Assembling Parts into a Four Bar Mechanism | sm_four_bar | FourBarExample |
| Creating Frames Using Rigid Transforms | sm_frame_tree | RigidTransformFrameTreeExample |
| Ball on Grid Surface | sm_grid_surface_ball | PointCloudContactExample |
| Four Bar Mechanism Imported from a CAD Assembly | sm_import_four_bar | ImportedFourBarExample |
| Humanoid Robot | sm_import_humanoid_urdf | ImportedURDFExample |
| Modeling A Robot Using STEP Files | sm_import_robot_stepfiles | ImportedRobotArmExample |
| Stewart Platform with Controller | sm_import_stewart_platform | ImportedStewardPlatformExample |
| Using the Lead Screw Joint Block - Linear Actuator | sm_linear_actuator | LeadScrewJointExample |
| Pick and Place Robot Using Forward and Inverse Kinematics | sm_pick_and_place_robot | PickAndPlaceRobotExample |
| Sensing Composite Forces and Torques in Joints - Potter's Wheel | sm_potters_wheel | CompositeForcesAndTorquesExample |
| Modeling Constant Velocity Joints - Power Take-Off Shaft | sm_pto_shaft | ConstantVelocityJointExample |
| Package Delivery Quadcopter | sm_quadcopter | QuadcopterExample |
| Translational Interface : Radial Engine with Gas Force Model | sm_radial_engine | TranslationalInterfaceExample |
| 3-Roll Robotic Wrist Mechanism | sm_robotic_wrist | BevelGearConstraintExample |
| Creating a Simple Part | sm_simple_body | SimpleBodyExample |
| Single Pendulum in Simulink and Simscape Multibody | sm_single_pendulum_sl | SinglePendulumSimulinkComparisonExample |
| Using the Worm and Gear Constraint Block - Solar Tracker | sm_solar_tracker | WormAndGearConstraintExample |
| Stewart Platform | sm_stewart_platform | StewartPlatformExample |
| Independent Suspension System Templates | sm_suspension_templates | VehicleSuspensionTemplatesExample |
| Using the Common Gear Block | sm_testrig_common_gear | InternalCommonGearExample |
| Lead Screw with Friction | sm_testrig_lead_screw_friction | LeadScrewJointWithFrictionExample |
| Configuring Dynamic Cameras - Vehicle Slalom | sm_vehicle_slalom | DynamicCamerasExample |
| Computing Actuator Torques Using Inverse Dynamics | sm_welding_robot | InverseDynamicsExample |
| Using the Rack-Pinion Block - Windshield Wiper Mechanism | sm_windshield_wiper | RackAndPinionExample |
| Airplane Wing Landing Gear | sm_wing_landing_gear | LandingGearExample |
| Modeling Self-Locking Worm and Gear Constraints - Worm Jack | sm_worm_jack | SelfLockingWormAndGearConstraintExample |
Featured Examples
Variable Mode Joint Recirculation - Collision Course — Learn how to create a recirculating system.
Using Modal Reduction in Flexible Bodies to Improve Simulation Performance — Learn how to use modal reduction for performance acceleration in models with flexible bodies.
Functionality being removed or changed
Behavior change for Spatial Contact Force blocks with non-scalar outputs
Behavior change
An inconsistent dimensions error appears if you compile a model that has a Spatial Contact Force block that outputs a non-scalar signal directly to any Simscape block except the PS-Simulink Converter block.
To avoid the error, use a PS Signal Specification block to connect each non-scalar output signal of the Spatial Contact Force block with the corresponding Simscape blocks and explicitly specify the dimension of the output signal.