parameters: (self, axes: Optional[List[Axis]] = None)
docstring: Home the entire robot and initialize current position.
          :param axes: A list of axes to home. Default is `None`, which will
                       home everything.
docstring_summary: Home the entire robot and initialize current position.
          :param axes: A list of axes to home. Default is `None`, which will
                       home everything.
docstring_tokens: Home the entire robot and initialize current position . : param axes : A list of axes to home . Default is None which will home everything .
function: async def home(self, axes: Optional[List[Axis]] = None):
          """Home the entire robot and initialize current position.
          :param axes: A list of axes to home. Default is `None`, which will
                       home everything.
          """
          await self._wait_for_is_running()
          self._reset_last_mount()
          # Initialize/update current_position
          checked_axes = axes or [ax for ax in Axis]
          gantry = [ax for ax in checked_axes if ax in Axis.gantry_axes()]
          smoothie_gantry = [ax.name.upper() for ax in gantry]
          smoothie_pos = {}
          plungers = [ax for ax in checked_axes if ax not in Axis.gantry_axes()]
  
          async with self._motion_lock:
              if smoothie_gantry:
                  smoothie_pos.update(await self._backend.home(smoothie_gantry))
                  self._current_position = self._deck_from_smoothie(smoothie_pos)
              for plunger in plungers:
                  await self._do_plunger_home(axis=plunger, acquire_lock=False)
function_tokens: async def home ( self , axes : Optional [ List [ Axis ] ] = None ) : await self . _wait_for_is_running ( ) self . _reset_last_mount ( ) # Initialize/update current_position checked_axes = axes or [ ax for ax in Axis ] gantry = [ ax for ax in checked_axes if ax in Axis . gantry_axes ( ) ] smoothie_gantry = [ ax . name . upper ( ) for ax in gantry ] smoothie_pos = { } plungers = [ ax for ax in checked_axes if ax not in Axis . gantry_axes ( ) ] async with self . _motion_lock : if smoothie_gantry : smoothie_pos . update ( await self . _backend . home ( smoothie_gantry ) ) self . _current_position = self . _deck_from_smoothie ( smoothie_pos ) for plunger in plungers : await self . _do_plunger_home ( axis = plunger , acquire_lock = False )