Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

isDone

Estado de fin de procesamiento para el objeto SLAM visual estéreo

Desde R2025a

Descripción

done = isDone(vslam) devuelve un valor lógico que indica si el objeto SLAM visual estéreo ha terminado de procesar sus fotogramas. Un valor de true indica que el objeto está en un estado inactivo. Un valor de false indica que el objeto está procesando uno o más cuadros.

ejemplo

Ejemplos

contraer todo

Realice la localización y el mapeo visual simultáneo estereoscópico (vSLAM) utilizando los datos del Conjunto de datos de localización y mapeo a largo plazo UTIAS proporcionado por el Instituto de Estudios Aeroespaciales de la Universidad de Toronto. Puede descargar los datos a un directorio mediante un navegador web o ejecutando este código:

ftpObj = ftp("asrl3.utias.utoronto.ca");
tempFolder = fullfile(tempdir);
dataFolder = [tempFolder,'2020-vtr-dataset\UTIAS-In-The-Dark\'];
zipFileName = [dataFolder,'run_000005.zip'];
folderExists = exist(dataFolder,"dir");

Crea una carpeta en un directorio temporal para guardar el archivo descargado y extraer su contenido.

if ~folderExists  
    mkdir(dataFolder) 
    disp("Downloading run_000005.zip (818 MB). This download can take a few minutes.") 
    mget(ftpObj,"/2020-vtr-dataset/UTIAS-In-The-Dark/run_000005.zip",tempFolder);

    disp("Extracting run_000005.zip (818 MB) ...") 
    unzip(zipFileName,dataFolder); 
end

Crea dos objetos imageDatastore para almacenar las imágenes estéreo.

imgFolderLeft = [dataFolder,'\images\left\'];
imgFolderRight = [dataFolder,'\images\right\'];
imdsLeft = imageDatastore(imgFolderLeft);
imdsRight = imageDatastore(imgFolderRight);

Especifique los parámetros intrínsecos y la línea base de la cámara estéreo, y utilícelos para crear un objeto SLAM visual estéreo. La distancia focal, el punto principal y el tamaño de la imagen están en píxeles, y la línea de base está en metros.

focalLength = [387.777 387.777];  
principalPoint = [257.446 197.718];  
imageSize = [384 512];            
intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize);
baseline = 0.239965; 

vslam = stereovslam(intrinsics,baseline,MaxNumPoints=600, ...
    TrackFeatureRange=[30 120],SkipMaxFrames=5);

Procese cada par de imágenes estéreo y visualice las poses de la cámara y los puntos del mapa 3D.

for i = 1:numel(imdsLeft.Files)
    leftImage = readimage(imdsLeft,i);
    rightImage = readimage(imdsRight,i);
    addFrame(vslam,leftImage,rightImage);

    if hasNewKeyFrame(vslam)
        % Query 3-D map points and camera poses
        xyzPoints = mapPoints(vslam);
        [camPoses,viewIds] = poses(vslam);

        % Display 3-D map points and camera trajectory
        plot(vslam);
    end

    % Get current status of system
    status = checkStatus(vslam);
    
    % Stop adding frames when tracking is lost
    if status == uint8(0)
        break
    end
end 

Una vez procesados todos los fotogramas, reinicie el sistema.

while ~isDone(vslam)
    plot(vslam)
end

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 12 objects of type line, text, patch, scatter. This object represents Camera trajectory.

reset(vslam)

Argumentos de entrada

contraer todo

Objeto SLAM visual estéreo, especificado como un objeto stereovslam.

Historial de versiones

Introducido en R2025a

Consulte también

Objetos

Funciones