class_docstr: An idealized rigid body.
  
  Explanation
  ===========
  
  This is essentially a container which holds the various components which
  describe a rigid body: a name, mass, center of mass, reference frame, and
  inertia.
  
  All of these need to be supplied on creation, but can be changed
  afterwards.
  
  Attributes
  ==========
  
  name : string
      The body's name.
  masscenter : Point
      The point which represents the center of mass of the rigid body.
  frame : ReferenceFrame
      The ReferenceFrame which the rigid body is fixed in.
  mass : Sympifyable
      The body's mass.
  inertia : (Dyadic, Point)
      The body's inertia about a point; stored in a tuple as shown above.
  potential_energy : Sympifyable
      The potential energy of the RigidBody.
  
  Examples
  ========
  
  >>> from sympy import Symbol
  >>> from sympy.physics.mechanics import ReferenceFrame, Point, RigidBody
  >>> from sympy.physics.mechanics import outer
  >>> m = Symbol('m')
  >>> A = ReferenceFrame('A')
  >>> P = Point('P')
  >>> I = outer (A.x, A.x)
  >>> inertia_tuple = (I, P)
  >>> B = RigidBody('B', P, A, m, inertia_tuple)
  >>> # Or you could change them afterwards
  >>> m2 = Symbol('m2')
  >>> B.mass = m2
code: def frame(self, F):
      if not isinstance(F, ReferenceFrame):
          raise TypeError(
              "RigidBody frame must be a ReferenceFrame object."
          )
      self._frame = F
  
imports: from sympy import Symbol, S
  from sympy.physics.vector import ReferenceFrame, Dyadic, Point, dot
  from sympy.physics.mechanics.body_base import BodyBase
  from sympy.physics.mechanics.inertia import inertia_of_point_mass, Inertia
  from sympy.utilities.exceptions import sympy_deprecation_warning
label_desc: Use image node_id 4 for calling the RigidBody obj's underlying member method code with example usage: obj.frame(F) without return types