reset
Sintaxis
Descripción
Ejemplos
Realice la localización y el mapeo visual simultáneo monocular (vSLAM) utilizando los datos del TUM RGB-D Benchmark. Puede descargar los datos a un directorio temporal utilizando un navegador web o ejecutando este código:
baseDownloadURL = "https://cvg.cit.tum.de/rgbd/dataset/freiburg3/rgbd_dataset_freiburg3_long_office_household.tgz"; dataFolder = fullfile(tempdir,"tum_rgbd_dataset",filesep); options = weboptions(Timeout=Inf); tgzFileName = dataFolder+"fr3_office.tgz"; folderExists = exist(dataFolder,"dir"); % Create a folder in a temporary directory to save the downloaded file if ~folderExists mkdir(dataFolder) disp("Downloading fr3_office.tgz (1.38 GB). This download can take a few minutes.") websave(tgzFileName,baseDownloadURL,options); % Extract contents of the downloaded file disp("Extracting fr3_office.tgz (1.38 GB) ...") untar(tgzFileName,dataFolder); end
Crea un objeto imageDatastore
para almacenar todas las imágenes RGB.
imageFolder = dataFolder+"rgbd_dataset_freiburg3_long_office_household/rgb/";
imds = imageDatastore(imageFolder);
Especifique los parámetros intrínsecos de su cámara y utilícelos para crear un objeto SLAM visual monocular.
intrinsics = cameraIntrinsics([535.4 539.2],[320.1 247.6],[480 640]); vslam = monovslam(intrinsics,TrackFeatureRange=[30,120]);
Procese cada fotograma de la imagen y visualice las poses de la cámara y los puntos del mapa 3D. Tenga en cuenta que el objeto monovslam
ejecuta varias partes del algoritmo en subprocesos separados, lo que puede introducir una latencia en el procesamiento de un cuadro de imagen agregado mediante la función addFrame
.
for i = 1:numel(imds.Files) addFrame(vslam,readimage(imds,i)) if hasNewKeyFrame(vslam) % Display 3-D map points and camera trajectory plot(vslam); end % Get current status of system status = checkStatus(vslam); end
Grafique los resultados intermedios y espere hasta que se procesen todas las imágenes.
while ~isDone(vslam) if hasNewKeyFrame(vslam) plot(vslam); end end
Una vez procesadas todas las imágenes, puedes recopilar los puntos del mapa 3D finales y las poses de la cámara para un análisis posterior.
xyzPoints = mapPoints(vslam);
[camPoses,addedFramesIdx] = poses(vslam);
% Reset the system
reset(vslam)
Compare la trayectoria estimada de la cámara con la ground-truth para evaluar la precisión.
% Load ground truth gTruthData = load("orbslamGroundTruth.mat"); gTruth = gTruthData.gTruth; % Evaluate tracking accuracy mtrics = compareTrajectories(camPoses, gTruth(addedFramesIdx), AlignmentType="similarity"); disp(['Absolute RMSE for key frame location (m): ', num2str(mtrics.AbsoluteRMSE(2))]);
Absolute RMSE for key frame location (m): 0.20043
% Plot the absolute translation error at each key frame figure ax = plot(mtrics, "absolute-translation"); view(ax, [2.70 -49.20]);
Argumentos de entrada
Objeto SLAM visual, especificado como un objeto monovslam
.
Historial de versiones
Introducido en R2025a
Consulte también
Objetos
Funciones
checkStatus
|isDone
|addFrame
|poses
|mapPoints
|plot
|hasNewKeyFrame
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)