     do: String.to_existing_atom(axis)
 
   defp assert_axis!(axis) do
-    # {:error, "unknown axis #{axis}"}
     raise("unknown axis #{axis}")
   end
 end

        {:error, "emergency_lock"}

      {:error, reason} ->
        FarmbotCore.Logger.error(
          1,
          "Movement failed. Retrying up to #{retries} more time(s)"
        )

        do_move_absolute(x, y, z, speed, retries - 1, [reason | errors])
    end
  end

  def calibrate(axis) do

    end
  end

  defp do_move_absolute(x, y, z, speed, errors) do
    with {:ok, speed_x} <- param_read(:movement_max_spd_x),
         {:ok, speed_y} <- param_read(:movement_max_spd_y),
         {:ok, speed_z} <- param_read(:movement_max_spd_z),
