def clear_tips(self):
        """
        If reset is called with a tip attached, the tip must be removed
        before the poses and _instruments members are cleared. If the tip is
        not removed, the effective length of the pipette remains increased by
        the length of the tip, and subsequent `_add_tip` calls will increase
        the length in addition to this. This should be fixed by changing pose
        tracking to that it tracks the tip as a separate node rather than
        adding and subtracting the tip length to the pipette length.
        """
        for instrument in self._instruments.values():
            if instrument.tip_attached:
                instrument._remove_tip(instrument._tip_length)
If reset is called with a tip attached, the tip must be removed
        before the poses and _instruments members are cleared. If the tip is
        not removed, the effective length of the pipette remains increased by
        the length of the tip, and subsequent `_add_tip` calls will increase
        the length in addition to this. This should be fixed by changing pose
        tracking to that it tracks the tip as a separate node rather than
        adding and subtracting the tip length to the pipette length.