class_docstr: Torque-producing actuator.
  
  Explanation
  ===========
  
  A ``TorqueActuator`` is an actuator that produces a pair of equal and
  opposite torques on a pair of bodies.
  
  Examples
  ========
  
  To construct a torque actuator, an expression (or symbol) must be supplied
  to represent the torque it can produce, alongside a vector specifying the
  axis about which the torque will act, and a pair of frames on which the
  torque will act.
  
  >>> from sympy import symbols
  >>> from sympy.physics.mechanics import (ReferenceFrame, RigidBody,
  ...     TorqueActuator)
  >>> N = ReferenceFrame('N')
  >>> A = ReferenceFrame('A')
  >>> torque = symbols('T')
  >>> axis = N.z
  >>> parent = RigidBody('parent', frame=N)
  >>> child = RigidBody('child', frame=A)
  >>> bodies = (child, parent)
  >>> actuator = TorqueActuator(torque, axis, *bodies)
  >>> actuator
  TorqueActuator(T, axis=N.z, target_frame=A, reaction_frame=N)
  
  Note that because torques actually act on frames, not bodies,
  ``TorqueActuator`` will extract the frame associated with a ``RigidBody``
  when one is passed instead of a ``ReferenceFrame``.
  
  Parameters
  ==========
  
  torque : Expr
      The scalar expression defining the torque that the actuator produces.
  axis : Vector
      The axis about which the actuator applies torques.
  target_frame : ReferenceFrame | RigidBody
      The primary frame on which the actuator will apply the torque.
  reaction_frame : ReferenceFrame | RigidBody | None
      The secondary frame on which the actuator will apply the torque. Note
      that the (equal and opposite) reaction torque is applied to this frame.
code: def torque(self, torque):
      if hasattr(self, "_torque"):
          msg = (
              f"Can't set attribute `torque` to {repr(torque)} as it is "
              f"immutable."
          )
          raise AttributeError(msg)
      self._torque = sympify(torque, strict=True)
  
imports: from abc import ABC, abstractmethod
  from sympy import S, sympify
  from sympy.physics.mechanics.joint import PinJoint
  from sympy.physics.mechanics.loads import Torque
  from sympy.physics.mechanics.pathway import PathwayBase
  from sympy.physics.mechanics.rigidbody import RigidBody
  from sympy.physics.vector import ReferenceFrame, Vector
label_desc: Use image node_id 4 for calling the TorqueActuator obj's underlying member method code with example usage: obj.torque(torque) without return types