OverView

class OverView "Overview of MultiBody library"
    extends Modelica.Icons.Information;

    annotation (Documentation(info = "<html>\n<p>\nLibrary <strong>MultiBody</strong> is a <strong>free</strong> Modelica package providing\n3-dimensional mechanical components to model in a convenient way\n<strong>mechanical systems</strong>, such as robots, mechanisms, vehicles.\nA basic feature is that all components have <strong>animation</strong> information\nwith appropriate default sizes and colors. A typical screenshot of the\nanimation of a double pendulum is shown in the figure below, together\nwith its schematic.\n</p>\n\n<p>\n<img src=\"modelica://Modelica/Resources/Images/Mechanics/MultiBody/Examples/Elementary/DoublePendulumSmall.png\">\n\n<img src=\"modelica://Modelica/Resources/Images/Mechanics/MultiBody/UsersGuide/Tutorial/DoublePendulumDiagramSmall.png\" alt=\"double pendulum (diagram layer)\">\n</p>\n\n<p>\nNote, that all components - the coordinate system of the world frame,\nthe gravity acceleration vector, the revolute joints and the\nbodies - are visualized in the animation.<br>\nThis library replaces the long available ModelicaAdditions.MultiBody\nlibrary, since it is much more easier to use and more powerful.\nThe main features of the library are:\n</p>\n<ul>\n<li>About <strong>60 main components</strong>, i.e., joint, force, part,\n    body, sensor and visualizer components that are ready to use\n    and have useful default animation properties. One-dimensional\n    force laws can be defined with components of the Modelica.Mechanics.Rotational\n    and of the Modelica.Mechanics.Translational library and can be\n    connected via available flange connectors to MultiBody\n    components.</li>\n<li>About <strong>75 functions</strong> to operate in a convenient way on\n    orientation objects, e.g., to transform vector quantities between\n    frames, or compute the orientation object of a planar rotation.\n    The basic idea is to hide the actual definition of an <strong>orientation</strong>\n    by providing essentially an <strong>Orientation</strong> type together with\n    <strong>functions</strong> operating on instances of this type. Orientation\n    objects based on a 3x3 transformation matrix and on quaternions\n    are provided. As a side effect, the equations in all other\n    components are simpler and easier to understand.</li>\n<li> <strong>A World model</strong> has to be present in every model on top\n     level. Here the gravity field is defined (currently: no gravity,\n     uniform gravity, point gravity), the visualization of the\n     world coordinate system and default settings for animation.\n     If a world model is not present, it is automatically provided\n     together with a warning message.</li>\n<li><strong>Built-in animation properties</strong> of all components, such as\n    joints, forces, bodies, sensors. This allows an easy visual\n    check of the constructed model. Animation of every component\n    can be switched off via a parameter. The animation of a complete\n    system can be switched off via one parameter in the <strong>world</strong>\n    model. If animation is switched off, all equations related\n    to animation are removed from the generated code. This is especially\n    important for real-time simulation.</li>\n<li><strong>Automatic handling of kinematic loops</strong>.\n    Components can be connected together in a nearly arbitrary fashion.\n    It does not matter whether components are flipped. This does not\n    influence the efficiency. If kinematic loop structures occur,\n    this is automatically handled in an efficient way by a new\n    technique to transform a certain class of overdetermined sets of\n    differential algebraic equations symbolically to a system where\n    the number of equations and unknowns are the same (the user need\n    <strong>not</strong> cut loops with special cut-joints to construct a\n    tree-structure).</li>\n<li><strong>Automatic state selection from joints and bodies</strong>.\n    Most joints and all bodies have potential states. A Modelica\n    translator will use the generalized coordinates\n    of joints as states if possible. If this is not possible,\n    states are selected from body coordinates. As a consequence,\n    strange joints with 6 degrees of freedom are not necessary\n    to define a body moving freely in space. An advanced user\n    may select states manually from the <strong>Advanced</strong> menu of the\n    corresponding components or use a Modelica parameter modification\n    to set the \"stateSelect\" attribute directly.</li>\n<li> <strong>Analytic solution of kinematic loops</strong>. The non-linear\n    equations occurring in kinematic loops are solved <strong>analytically</strong>\n    for a large class of mechanisms, such as a 4 bar mechanism,\n    a slider-crank mechanism or a MacPherson suspension. This is performed\n    by constructing such loops with assembly joints JointXXX,\n    available in the Modelica.Mechanics.MultiBody.Joints package. Assembly joints consist\n    of 3 joints that have together 6 degrees of freedom, i.e., no\n    constraints.They do not have potential states. When the motion\n    of the two frame connectors are provided, a non-linear system of\n    equation is solved analytically to compute the motion of the 3 joints.\n    Analytic loop handling is especially important for real-time simulation.</li>\n<li> <strong>Line force components may have mass</strong>.\n     Masses of line force components are located on the line on which\n     the force is acting. They approximate the mass properties of\n     a real physical device by one or two point masses. For example,\n     a spring has often significant mass that has to be taken into\n     account. If masses are set to zero, the additional code to handle\n     these point masses is removed. If the masses are taken into\n     account, the calculation overhead is small (the reason is that\n     the occurring kinematic loops are analytically solved).</li>\n<li> <strong>Force components may be connected directly together</strong>, e.g.,\n     3-dimensional springs in series connection. Usually,\n     multi-body programs have the restriction that force components\n     can only be connected between two bodies. Such restrictions are\n     not present in the Modelica multi-body library, since it is\n     a fully object-oriented, equation based library. Usually, if\n     force components are connected directly together, non-linear\n     systems of equations occur. The advantage is often, that this\n     may avoid stiff systems that would occur if a small mass has\n     to be put in between the two force elements.</li>\n<li><strong>Initialization definition is available via menus</strong>.\n    Initialization of states in joints and bodies can be\n    performed in the parameter menu, <strong>without</strong> typing Modelica\n    statements. For non-standard initialization, the usual\n    Modelica commands can be used.</li>\n<li><strong>Multi-body specific error messages</strong>. Annotations\n    and assert statements have been introduced that provide\n    in many cases warning or error messages that are related\n    to the library components (and not to specific equations\n    as it is usual in Modelica libraries). This requires\n    appropriate tool support, as it is.</li>\n<li><strong>Inverse models</strong> of mechanical systems can be easily\n    defined by using motion generators, e.g.,\n    Modelica.Mechanics.Rotational.Position. Also, non-standard\n    inverse models can be generated, e.g., when elasticity is present\n    it might be necessary to differentiate equations several times.</li>\n</ul>\n</html>"));
end OverView;