code: async def move_rel(self, mount: top_types.Mount, delta: top_types.Point,
                         speed: float = None):
          
          if not self._current_position:
              raise MustHomeError
  
          await self._cache_and_maybe_retract_mount(mount)
  
          z_axis = Axis.by_mount(mount)
          try:
              target_position = OrderedDict(
                  ((Axis.X,
                    self._current_position[Axis.X] + delta.x),
                   (Axis.Y,
                    self._current_position[Axis.Y] + delta.y),
                   (z_axis,
                    self._current_position[z_axis] + delta.z))
                  )
          except KeyError:
              raise MustHomeError
          await self._move(target_position, speed=speed)
docs: Move the critical point of the specified mount by a specified
          displacement in a specified direction, at the specified speed.
          'speed' sets the speed of all axes to the given value. So, if multiple
          axes are to be moved, they will do so at the same speed