diff --git a/CAD/youBot.slx b/CAD/youBot.slx
index dcb0f16..099474c 100644
Binary files a/CAD/youBot.slx and b/CAD/youBot.slx differ
diff --git a/CAD/youBot_damping.slx b/CAD/youBot_damping.slx
index 490681e..67281db 100644
Binary files a/CAD/youBot_damping.slx and b/CAD/youBot_damping.slx differ
diff --git a/Libraries/CFL_Core/Libraries/Contact_Forces_Lib.slx b/Libraries/CFL_Core/Libraries/Contact_Forces_Lib.slx
index b5ae370..aa54cee 100644
Binary files a/Libraries/CFL_Core/Libraries/Contact_Forces_Lib.slx and b/Libraries/CFL_Core/Libraries/Contact_Forces_Lib.slx differ
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Block_NotchCircle.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Block_NotchCircle.m
index 04b9fa0..80ba765 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Block_NotchCircle.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Block_NotchCircle.m
@@ -17,7 +17,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Block_NotchCircle(2,1,0.7,45,0.2,'plot')
-% Copyright 2012-2022 The MathWorks, Inc.
+% Copyright 2012-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Box.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Box.m
index b125794..440b5fb 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Box.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Box.m
@@ -16,7 +16,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Box(10,5,'plot')
-% Copyright 2013-2022 The MathWorks, Inc.
+% Copyright 2013-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Circles.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Circles.m
index ef64505..a3873c3 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Circles.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Circles.m
@@ -19,7 +19,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Cam_Circles(4,3,5,1,0,'plot')
-% Copyright 2012-2022 The MathWorks, Inc.
+% Copyright 2012-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Roller_Curve.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Roller_Curve.m
index 66eb8d0..9dbd731 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Roller_Curve.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Cam_Roller_Curve.m
@@ -18,7 +18,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Cam_Roller_Curve([sind(1:4:360)' 1.5*cosd(1:4:360)'],0.2,'Outside','plot')
-% Copyright 2017-2022 The MathWorks, Inc.
+% Copyright 2017-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Custom.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Custom.m
index fcc443f..751ae4f 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Custom.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Custom.m
@@ -2,7 +2,7 @@ function Extr_Data_Custom(xy_data)
%Extr_Data_Custom Plot custom extrusion data.
% This function plots x-y data for a custom extrusion.
-% Copyright 2012-2022 The MathWorks, Inc.
+% Copyright 2012-2023 The MathWorks, Inc.
% Plot diagram to show parameters and extrusion
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ellipse.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ellipse.m
index ba9370c..934c70e 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ellipse.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ellipse.m
@@ -17,7 +17,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Ellipse(5,2,60,315,1,'plot')
-% Copyright 2012-2022 The MathWorks, Inc.
+% Copyright 2012-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Frustum_Conical.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Frustum_Conical.m
index 48a0a68..bfb1f9f 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Frustum_Conical.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Frustum_Conical.m
@@ -16,7 +16,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Frustum_Conical(5,60,4,4,'plot')
-% Copyright 2017-2022 The MathWorks, Inc.
+% Copyright 2017-2023 The MathWorks, Inc.
% Default data to show diagram
showplot = 'n';
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Link2Hole.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Link2Hole.m
index f42a4c4..195a28b 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Link2Hole.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Link2Hole.m
@@ -15,7 +15,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Link2Hole(10,5,2,'plot')
-% Copyright 2012-2022 The MathWorks, Inc.
+% Copyright 2012-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_LinkHoles.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_LinkHoles.m
index ee6f7d1..80dd9af 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_LinkHoles.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_LinkHoles.m
@@ -17,7 +17,7 @@
% add 'plot' as the final argument
% >> Extr_Data_LinkHoles(10,5,1,3,'plot')
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ring.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ring.m
index a51f881..bddd308 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ring.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_Ring.m
@@ -16,7 +16,7 @@
% add 'plot' as the final argument
% >> Extr_Data_Ring(10,5,45,315,'plot')
-% Copyright 2012-2022 The MathWorks, Inc.
+% Copyright 2012-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_TriangleRounded_Holes.m b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_TriangleRounded_Holes.m
index 97557a0..7b1a191 100644
--- a/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_TriangleRounded_Holes.m
+++ b/Libraries/CFL_Core/Libraries/Extrusions/Extr_Data_TriangleRounded_Holes.m
@@ -19,7 +19,7 @@
% add 'plot' as the final argument
% >> Extr_Data_TriangleRounded_Holes(6,4,0.33,1,2,'plot')
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
% Default data to show diagram
if (nargin == 0)
diff --git a/Libraries/CFL_Core/Libraries/Help/Box_to_Belt_Contact.m b/Libraries/CFL_Core/Libraries/Help/Box_to_Belt_Contact.m
index 3356166..ab4a871 100644
--- a/Libraries/CFL_Core/Libraries/Help/Box_to_Belt_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Box_to_Belt_Contact.m
@@ -6,7 +6,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact.m b/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact.m
index 5a0a7bd..b8a8193 100644
--- a/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact.m
@@ -4,7 +4,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxB_Corners.m b/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxB_Corners.m
index 7b58be3..a7e4a95 100644
--- a/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxB_Corners.m
+++ b/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxB_Corners.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxF_Corners.m b/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxF_Corners.m
index 4f18b49..ec4a47e 100644
--- a/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxF_Corners.m
+++ b/Libraries/CFL_Core/Libraries/Help/Box_to_Box_Contact_Forces_BoxF_Corners.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Circle_to_Circle_Contact.m b/Libraries/CFL_Core/Libraries/Help/Circle_to_Circle_Contact.m
index 36a6544..b8023ed 100644
--- a/Libraries/CFL_Core/Libraries/Help/Circle_to_Circle_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Circle_to_Circle_Contact.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Circle_to_Finite_Line_Contact.m b/Libraries/CFL_Core/Libraries/Help/Circle_to_Finite_Line_Contact.m
index 6404e98..343b673 100644
--- a/Libraries/CFL_Core/Libraries/Help/Circle_to_Finite_Line_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Circle_to_Finite_Line_Contact.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Circle_to_Ring_Contact.m b/Libraries/CFL_Core/Libraries/Help/Circle_to_Ring_Contact.m
index 598f82f..026284b 100644
--- a/Libraries/CFL_Core/Libraries/Help/Circle_to_Ring_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Circle_to_Ring_Contact.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Contact_Forces_Library_Use.m b/Libraries/CFL_Core/Libraries/Help/Contact_Forces_Library_Use.m
index 7de874d..41a76a7 100644
--- a/Libraries/CFL_Core/Libraries/Help/Contact_Forces_Library_Use.m
+++ b/Libraries/CFL_Core/Libraries/Help/Contact_Forces_Library_Use.m
@@ -1,6 +1,6 @@
%% Using the Simscape Multibody Contact Forces Library
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Face_to_Plane_Contact.m b/Libraries/CFL_Core/Libraries/Help/Face_to_Plane_Contact.m
index 5a21d3d..7eafb8f 100644
--- a/Libraries/CFL_Core/Libraries/Help/Face_to_Plane_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Face_to_Plane_Contact.m
@@ -7,7 +7,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Force_Laws.m b/Libraries/CFL_Core/Libraries/Help/Force_Laws.m
index 0df583f..b66303e 100644
--- a/Libraries/CFL_Core/Libraries/Help/Force_Laws.m
+++ b/Libraries/CFL_Core/Libraries/Help/Force_Laws.m
@@ -4,7 +4,7 @@
% . It applies for 2D and 3D contact forces.
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Friction_Laws.m b/Libraries/CFL_Core/Libraries/Help/Friction_Laws.m
index c5d1259..d7fd7cc 100644
--- a/Libraries/CFL_Core/Libraries/Help/Friction_Laws.m
+++ b/Libraries/CFL_Core/Libraries/Help/Friction_Laws.m
@@ -4,7 +4,7 @@
% . It applies for 2D and 3D contact forces.
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Sphere_in_Sphere_Contact.m b/Libraries/CFL_Core/Libraries/Help/Sphere_in_Sphere_Contact.m
index 2333ac7..e921b98 100644
--- a/Libraries/CFL_Core/Libraries/Help/Sphere_in_Sphere_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Sphere_in_Sphere_Contact.m
@@ -6,7 +6,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Belt_Contact.m b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Belt_Contact.m
index 1cb8518..b537506 100644
--- a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Belt_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Belt_Contact.m
@@ -6,7 +6,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Cone_Contact.m b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Cone_Contact.m
index f93167d..a317daa 100644
--- a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Cone_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Cone_Contact.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Plane_Contact.m b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Plane_Contact.m
index cb346f7..bce6b5c 100644
--- a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Plane_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Plane_Contact.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Sphere_Contact.m b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Sphere_Contact.m
index 38d9c9c..d85d23b 100644
--- a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Sphere_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Sphere_Contact.m
@@ -4,7 +4,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Tube_Contact.m b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Tube_Contact.m
index 37a5d22..ef56b55 100644
--- a/Libraries/CFL_Core/Libraries/Help/Sphere_to_Tube_Contact.m
+++ b/Libraries/CFL_Core/Libraries/Help/Sphere_to_Tube_Contact.m
@@ -5,7 +5,7 @@
%
% This is part of the
%
-% Copyright 2014-2022 The MathWorks, Inc.
+% Copyright 2014-2023 The MathWorks, Inc.
diff --git a/Libraries/CFL_Core/Libraries/Help/html/Box_to_Belt_Contact.html b/Libraries/CFL_Core/Libraries/Help/html/Box_to_Belt_Contact.html
index 2608b96..f631f6c 100644
--- a/Libraries/CFL_Core/Libraries/Help/html/Box_to_Belt_Contact.html
+++ b/Libraries/CFL_Core/Libraries/Help/html/Box_to_Belt_Contact.html
@@ -66,7 +66,7 @@
-
Box to Belt Contact Forces (2D)
This block models planar contact forces between a box and a conveyor belt. The conveyor belt moves at the speed specified by the input signal in m/s.
This subsystem models planar contact forces the corners of the Base box and the faces of the Follower Box. It is used within the Box to Box Contact Force
This subsystem models planar contact forces the corners of the Base box and the faces of the Follower Box. It is used within the Box to Box Contact Force
This subsystem models planar contact forces the corners of the Follower box and the faces of the Base Box. It is used within the Box to Box Contact Force
This subsystem models planar contact forces the corners of the Follower box and the faces of the Base Box. It is used within the Box to Box Contact Force
This subsystem implements a contact force between a plane and a square face. The plane is assumed significantly larger than the face such that the edges will never intersect. The force is active above and below the plane and face.
This subsystem implements a contact force between a plane and a square face. The plane is assumed significantly larger than the face such that the edges will never intersect. The force is active above and below the plane and face.
The diagrams and text below describe the configurable friction force laws in the Simscape Multibody Contact Forces Library. It applies for 2D and 3D contact forces.
The diagrams and text below describe the configurable friction force laws in the Simscape Multibody Contact Forces Library. It applies for 2D and 3D contact forces.
This block implements a contact force between two spheres. The force acts to keep distance from frame SphB to SphF less than (inner radius SphB - radius SphF).
This block implements a contact force between two spheres. The force acts to keep distance from frame SphB to SphF less than (inner radius SphB - radius SphF).
This examples models a robotic arm and two conveyor belts. One conveyor belts bring blocks to the robot. The robot grabs the block, flips it over and transfers it to another conveyor belt which transports it away from the robot.
This example can be used to determine requirements for electrical and mechanical design, detect integration issues, design and test control logic, and optimize path planning.
The top level of the model contains hyperlinks that configure the model according to the test you wish to perform. The default test is for the entire system (robot arm and conveyor belts).
Box transfer tests can be run to determine the amount of power required for a specific manipulator trajectory.
Joint tests can be run to determine required motor torque and the forces that the bearings will experience.
Arm Subsystem
This subsystem includes the robot arm which was imported from CAD software, the joint actuators, and the environment surrounding the robot. Hyperlinks at this level configure the robot joints to use prescribed motion (Motion), or modeled as a connected electrical network (Motor). Motion actuation is typically used to determine torque requirements for the motor, and based on those requirements the motors in the electrical network can be selected.
This variant includes the robot arm joints which were imported from CAD. They have been configured to use prescribed motion, where the angle for the joint is specified by an input signal. The simulation calculates the torque required to produce this motion. The radial and axial forces for the motor bearings are also calculated for each joint. This information is useful to refine the requirements for the motor, gear boxes, and the mechanical requirements for the bearings.
This variant includes the electrical network which provides the power to actuate each joint. The joint definitions were imported from a CAD assembly.
The actuators can be configured to use prescribed motion and estimate the current draw (Ideal), or the joints can be driven by electrical motors (Motor). Clicking on the hyperlinks will change multiple motors at the same time. The motors can be configured individually (Ideal or Motor) by right-clicking on the block and overriding the subsystem variant. This permits very focused testing on individual joints or joint combinations.
This variant is used to determine the requirements for the electrical system. The joints are driven using prescribed motion, and the simulation calculates the torque required to produce this motion. The radial and axial forces for the motor bearings are also calculated for each joint. This information is useful to refine the requirements for the motor.
This variant also estimates the amount of electrical power required to produce this motion using the actuation torque. Each joint draws current from the power supply, making it possible to determine the requirements for power connections and the supply. The current estimation used here requires selecting a gear ratio, motor torque constant, and an armature resistance. The absolute value of the actuation torque is used because though the actuation torque can switch sign, current is always drawn from the power supply.
Forearm Motor Actuation, Motor Variant: Motor - Joint Interface
This variant actuates the robot arm joints using an electrical actuator. At this level, the connection between the motor and the robot joint is shown.
This variant does not use prescribed motion. Torque provided by the electrical model of the motor is applied to the joint. The rotational speed of the electrical motor and joint are forced to be identical during simulation to ensure that the physics is accurate.
Forearm Motor Actuation, Motor Variant: Motor Subsystem
This subsystem models the motor controller, motor drive circuit, motor, gearbox, and motor friction. Parameter values for the motor are taken directly from manufacturer data sheets (see model parameters).
Forearm Motor Actuation, Motor Variant: Motor Control
This subsystem implements the control system for the motor. A simple bang-bang controller based on position error is used. A deadzone prevents chattering in the system. More complex control algorithms can be substituted here.
This subsystem models the environment surrounding the robot arm. It includes two conveyor belts and a load.
Hyperlinks at this level configure the connection between the gripper and the load. Clicking on hyperlink Payload will assume the load is rigidly attached to the gripper. Hyperlinks Damping and Penalty each model a contact force between the gripper and the load at two levels of fidelity. Clicking on these hyperlinks adjusts variant subsystems Load and Gripper Force simultaneously to ensure the selected variants are compatible. These settings are selected based on the test that is performed. The only one that should be overriden manually is switching between variants Damper and Penalty for the Gripper Force subsystem when the Box variant is selected for the Load subsystem.
This subsystem models the conveyor belt, contact force between the box and the belt, and the light curtain at the end of the belt.
The conveyor belt is driven at speed vx. The motor driving the belt is not modeled. The rollers rotate to simply give a visual indication that the belt is on.
The contact force is active if the upper or lower surface of the belt encounters the bottom face of the box. The calculated normal force is used to model a sensor that will detect if a box is on the belt. This signal is sent to the supervisory logic controller for the system. The only difference between Belt In and Belt Out is in the contact force - in Belt Out, the contact force is modeled between the belt and the top face of the box.
The light curtain detects if the box is blocking any of its beams and sends a signal to the logic controller.
Transform Sensor EE measures the x-y-z position of the end effector and saves it to the workspace. This quantity is used for plotting purposes, both during normal desktop simulation and it is saved during the optimization tests to show the set of trajectories tested.
This subsystem shows the three variants for the gripper force. These variants are selected using the hyperlinks one level higher in the model or by using the hyperlinks at the top level that configure the test.
This subsystem models the contact force between the gripper and the box as a very stiff damper that is only active when the box is grasped by the gripper fingers. The force subsystem measures the displacement between a reference frame on the gripper and the box to determine if the gripper could grab the box. If it can, the damper becomes active.
This is an abstract representation of the force. The simplifying assumptions is computationally very efficient. It assumes the box will slip very, very slowly with respect to the gripper. It does not consider the exact geometry of the fingers or the gripper itself - a misaligned box can be grasped using this force.
There are two methods for measuring the velocity of the box along the normal of the gripper fingers. One measures it with respect to a reference frame on the gripper housing. The other takes the difference of relative velocity with respect to each finger, allowing the box to move relative to the gripper housing.
This subsystem models the contact force between the gripper and the box as a stiff spring-damper between multiple points on the gripper finger and a square surface on the box. This requires more computation, but is a more realistic way to model the contact force. It can model cases where the box and the gripper are misaligned.
This variant subsystem configures the inputs to the robot arm system. The variants are configured to permit unit testing of individual components of the system.
The Control variant implements the supervisory logic for the entire system. The Signals variant is an open loop test that can actuate any or all of the joints and the conveyor belts. The Splines variant is used to test trajectories for transferring the box from one belt to the other. The Control Belt variant permits closed loop testing of the conveyor belts and open loop testing of the robot arm.
This state chart implements the supervisory logic for the robot arm, robot gripper, and both conveyor belts. Information from sensors in the model come in as input signals, and outputs from the state chart will control movement of the robot arm and conveyor belts. During simulation, the state chart is animated to show the active state in each chart.
All four state charts are interconnected. Events in one state chart trigger actions in others. For example, in state chart BeltIn, when the light curtain on the belt is blocked, input BeltIn_LC=0. That condition permits the BeltIn state chart to transition to state BoxReady. As the BeltIn state chart transitions to state BoxReady, the belt will be turned off (BeltIn_En=0). The event GetBox will be broadcast to state chart Robot, which causes that state chart to transition from StartHome or Home to GoBeltIn. Entering state GoBeltIn sets output Way, which controls the commands sent to the robot joints.
This examples models a robotic arm and two conveyor belts. One conveyor belts bring blocks to the robot. The robot grabs the block, flips it over and transfers it to another conveyor belt which transports it away from the robot.
+
This example can be used to determine requirements for electrical and mechanical design, detect integration issues, design and test control logic, and optimize path planning.
The top level of the model contains hyperlinks that configure the model according to the test you wish to perform. The default test is for the entire system (robot arm and conveyor belts).
+
Box transfer tests can be run to determine the amount of power required for a specific manipulator trajectory.
+
Joint tests can be run to determine required motor torque and the forces that the bearings will experience.
+
Arm Subsystem
+
This subsystem includes the robot arm which was imported from CAD software, the joint actuators, and the environment surrounding the robot. Hyperlinks at this level configure the robot joints to use prescribed motion (Motion), or modeled as a connected electrical network (Motor). Motion actuation is typically used to determine torque requirements for the motor, and based on those requirements the motors in the electrical network can be selected.
This variant includes the robot arm joints which were imported from CAD. They have been configured to use prescribed motion, where the angle for the joint is specified by an input signal. The simulation calculates the torque required to produce this motion. The radial and axial forces for the motor bearings are also calculated for each joint. This information is useful to refine the requirements for the motor, gear boxes, and the mechanical requirements for the bearings.
This variant includes the electrical network which provides the power to actuate each joint. The joint definitions were imported from a CAD assembly.
+
The actuators can be configured to use prescribed motion and estimate the current draw (Ideal), or the joints can be driven by electrical motors (Motor). Clicking on the hyperlinks will change multiple motors at the same time. The motors can be configured individually (Ideal or Motor) by right-clicking on the block and overriding the subsystem variant. This permits very focused testing on individual joints or joint combinations.
This variant is used to determine the requirements for the electrical system. The joints are driven using prescribed motion, and the simulation calculates the torque required to produce this motion. The radial and axial forces for the motor bearings are also calculated for each joint. This information is useful to refine the requirements for the motor.
+
This variant also estimates the amount of electrical power required to produce this motion using the actuation torque. Each joint draws current from the power supply, making it possible to determine the requirements for power connections and the supply. The current estimation used here requires selecting a gear ratio, motor torque constant, and an armature resistance. The absolute value of the actuation torque is used because though the actuation torque can switch sign, current is always drawn from the power supply.
Forearm Motor Actuation, Motor Variant: Motor - Joint Interface
+
This variant actuates the robot arm joints using an electrical actuator. At this level, the connection between the motor and the robot joint is shown.
+
This variant does not use prescribed motion. Torque provided by the electrical model of the motor is applied to the joint. The rotational speed of the electrical motor and joint are forced to be identical during simulation to ensure that the physics is accurate.
Forearm Motor Actuation, Motor Variant: Motor Subsystem
+
This subsystem models the motor controller, motor drive circuit, motor, gearbox, and motor friction. Parameter values for the motor are taken directly from manufacturer data sheets (see model parameters).
Forearm Motor Actuation, Motor Variant: Motor Control
+
This subsystem implements the control system for the motor. A simple bang-bang controller based on position error is used. A deadzone prevents chattering in the system. More complex control algorithms can be substituted here.
This subsystem models the environment surrounding the robot arm. It includes two conveyor belts and a load.
+
Hyperlinks at this level configure the connection between the gripper and the load. Clicking on hyperlink Payload will assume the load is rigidly attached to the gripper. Hyperlinks Damping and Penalty each model a contact force between the gripper and the load at two levels of fidelity. Clicking on these hyperlinks adjusts variant subsystems Load and Gripper Force simultaneously to ensure the selected variants are compatible. These settings are selected based on the test that is performed. The only one that should be overriden manually is switching between variants Damper and Penalty for the Gripper Force subsystem when the Box variant is selected for the Load subsystem.
This subsystem models the conveyor belt, contact force between the box and the belt, and the light curtain at the end of the belt.
+
The conveyor belt is driven at speed vx. The motor driving the belt is not modeled. The rollers rotate to simply give a visual indication that the belt is on.
+
The contact force is active if the upper or lower surface of the belt encounters the bottom face of the box. The calculated normal force is used to model a sensor that will detect if a box is on the belt. This signal is sent to the supervisory logic controller for the system. The only difference between Belt In and Belt Out is in the contact force - in Belt Out, the contact force is modeled between the belt and the top face of the box.
+
The light curtain detects if the box is blocking any of its beams and sends a signal to the logic controller.
+
Transform Sensor EE measures the x-y-z position of the end effector and saves it to the workspace. This quantity is used for plotting purposes, both during normal desktop simulation and it is saved during the optimization tests to show the set of trajectories tested.
This subsystem shows the three variants for the gripper force. These variants are selected using the hyperlinks one level higher in the model or by using the hyperlinks at the top level that configure the test.
This subsystem models the contact force between the gripper and the box as a very stiff damper that is only active when the box is grasped by the gripper fingers. The force subsystem measures the displacement between a reference frame on the gripper and the box to determine if the gripper could grab the box. If it can, the damper becomes active.
+
This is an abstract representation of the force. The simplifying assumptions is computationally very efficient. It assumes the box will slip very, very slowly with respect to the gripper. It does not consider the exact geometry of the fingers or the gripper itself - a misaligned box can be grasped using this force.
+
There are two methods for measuring the velocity of the box along the normal of the gripper fingers. One measures it with respect to a reference frame on the gripper housing. The other takes the difference of relative velocity with respect to each finger, allowing the box to move relative to the gripper housing.
This subsystem models the contact force between the gripper and the box as a stiff spring-damper between multiple points on the gripper finger and a square surface on the box. This requires more computation, but is a more realistic way to model the contact force. It can model cases where the box and the gripper are misaligned.
This variant subsystem configures the inputs to the robot arm system. The variants are configured to permit unit testing of individual components of the system.
+
The Control variant implements the supervisory logic for the entire system. The Signals variant is an open loop test that can actuate any or all of the joints and the conveyor belts. The Splines variant is used to test trajectories for transferring the box from one belt to the other. The Control Belt variant permits closed loop testing of the conveyor belts and open loop testing of the robot arm.
This state chart implements the supervisory logic for the robot arm, robot gripper, and both conveyor belts. Information from sensors in the model come in as input signals, and outputs from the state chart will control movement of the robot arm and conveyor belts. During simulation, the state chart is animated to show the active state in each chart.
+
All four state charts are interconnected. Events in one state chart trigger actions in others. For example, in state chart BeltIn, when the light curtain on the belt is blocked, input BeltIn_LC=0. That condition permits the BeltIn state chart to transition to state BoxReady. As the BeltIn state chart transitions to state BoxReady, the belt will be turned off (BeltIn_En=0). The event GetBox will be broadcast to state chart Robot, which causes that state chart to transition from StartHome or Home to GoBeltIn. Entering state GoBeltIn sets output Way, which controls the commands sent to the robot joints.