class_docstr: Base class for all 3D objects with a geometry and that can participate in physics simulation.
  
  Attributes:
    scale (vec3d): By how much the object is scaled along each of the 3 cardinal directions.
  
    velocity (vec3d): Vector of velocities along (X, Y, Z).
    angular_velocity (vec3d): Angular velocity of the object around the X, Y, and Z axis.
  
    static (bool): Whether this object is considered static or movable (default) by
                   the physics simulation.
    mass (float): Mass of the object in kg.
    friction (float): Friction coefficient used for physics simulation of this object
                      (between 0 and 1).
    restitution (float): Restitution (bounciness) coefficient used for physics simulation of this
                         object (between 0 and 1).
  
    bounds (Tuple[vec3d, vec3d]): An axis aligned bounding box around the object relative to its
                                  center, but ignoring any scaling or rotation.
  
    material (Material): Material assigned to this object.
  
    segmentation_id (int): The integer id that will be used for this object in segmentation maps.
                           Can be set to None, in which case the segmentation_id will correspond to
                           the index of the object within the scene.
code: def _valid_bounds(self, proposal):
      lower, upper = proposal["value"]
      for l, u in zip(lower, upper):
          if l > u:
              raise tl.TraitError(
                  f"lower bound cannot be larger than upper bound ({lower} !<= {upper})"
              )
      return lower, upper
  
imports: import itertools
  import numpy
  import pyquaternion
  import traitlets
  from typing import Optional, Union, Tuple
  from kubric.core import traits
  from kubric.core import assets
  from kubric.core import materials
  from kubric.kubric_typing import ArrayLike
label_desc: Use image node_id 4 for calling the PhysicalObject obj's underlying member method code with example usage: obj._valid_bounds(proposal) and returns: lower,  upper