<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def future_get_sensor(self, name, update=None):
 """Get the sensor object. Check if we have information for this sensor, if not connect to server and update (if allowed) to get information. Parameters name : string Name of the sensor. update : bool or None, optional True allow inspect client to inspect katcp server if the sensor is not known. Returns ------- Sensor created by :meth:`sensor_factory` or None if sensor not found. Notes ----- Ensure that self.state.data_synced == True if yielding to future_get_sensor from a state-change callback, or a deadlock will occur. """

        obj = None
        exist = yield self.future_check_sensor(name, update)
        if exist:
            sensor_info = self._sensors_index[name]
            obj = sensor_info.get('obj')
            if obj is None:
                sensor_type = katcp.Sensor.parse_type(
                    sensor_info.get('sensor_type'))
                sensor_params = katcp.Sensor.parse_params(
                    sensor_type,
                    sensor_info.get('params'))
                obj = self.sensor_factory(
                    name=name,
                    sensor_type=sensor_type,
                    description=sensor_info.get('description'),
                    units=sensor_info.get('units'),
                    params=sensor_params)
                self._sensors_index[name]['obj'] = obj
                self._sensor_object_cache[name] = obj

        raise tornado.gen.Return(obj)