def registration_svr(
    source: Union[np.ndarray, o3.geometry.PointCloud],
    target: Union[np.ndarray, o3.geometry.PointCloud],
    tf_type_name: str = "rigid",
    maxiter: int = 1,
    tol: float = 1.0e-3,
    opt_maxiter: int = 50,
    opt_tol: float = 1.0e-3,
    callbacks: List[Callable] = [],
    **kwargs: Any,
):
    """Support Vector Registration.

    Args:
        source (numpy.ndarray): Source point cloud data.
        target (numpy.ndarray): Target point cloud data.
        tf_type_name (str, optional): Transformation type('rigid', 'nonrigid')
        maxitr (int, optional): Maximum number of iterations for outer loop.
        tol (float, optional): Tolerance for termination of outer loop.
        opt_maxitr (int, optional): Maximum number of iterations for inner loop.
        opt_tol (float, optional): Tolerance for termination of inner loop.
        callback (:obj:`list` of :obj:`function`, optional): Called after each iteration.
            `callback(probreg.Transformation)`

    Returns:
        probreg.Transformation: Transformation from source to target.
    """
    cv = lambda x: np.asarray(x.points if isinstance(x, o3.geometry.PointCloud) else x)
    if tf_type_name == "rigid":
        svr = RigidSVR(cv(source), **kwargs)
    elif tf_type_name == "nonrigid":
        svr = TPSSVR(cv(source), **kwargs)
    else:
        raise ValueError("Unknown transform type %s" % tf_type_name)
    svr.set_callbacks(callbacks)
    return svr.registration(cv(target), maxiter, tol, opt_maxiter, opt_tol)
Support Vector Registration.

    Args:
        source (numpy.ndarray): Source point cloud data.
        target (numpy.ndarray): Target point cloud data.
        tf_type_name (str, optional): Transformation type('rigid', 'nonrigid')
        maxitr (int, optional): Maximum number of iterations for outer loop.
        tol (float, optional): Tolerance for termination of outer loop.
        opt_maxitr (int, optional): Maximum number of iterations for inner loop.
        opt_tol (float, optional): Tolerance for termination of inner loop.
        callback (:obj:`list` of :obj:`function`, optional): Called after each iteration.
            `callback(probreg.Transformation)`

    Returns:
        probreg.Transformation: Transformation from source to target.
    
probreg/l2dist_regs.py