code: def connect(self, port=None, options=None):
          
  
          self._driver.connect(port=port)
          self.fw_version = self._driver.get_fw_version()
  
          # the below call to `cache_instrument_models` is relied upon by
          # `Session._simulate()`, which calls `robot.connect()` after exec'ing a
          # protocol. That protocol could very well have different pipettes than
          # what are physically attached to the robot
          self.cache_instrument_models()
docs: Connects the robot to a serial port.
  
          Parameters
          ----------
          port : str
              OS-specific port name or ``'Virtual Smoothie'``
          options : dict
              if :attr:`port` is set to ``'Virtual Smoothie'``, provide
              the list of options to be passed to :func:`get_virtual_device`
  
          Returns
          -------
          ``True`` for success, ``False`` for failure.
  
          Note
          ----
          If you wish to connect to the robot without using the OT App, you will
          need to use this function.
  
          Examples
          --------
  
          >>> from opentrons import robot # doctest: +SKIP
          >>> robot.connect() # doctest: +SKIP