edgeResidualErrors
Descripción
devuelve los errores residuales para cada borde en el gráfico de pose con las estimaciones del nodo de pose actual. El orden de los errores residuales coincide con el orden de los ID de borde en resErrorVec
= edgeResidualErrors(poseGraphObj
)poseGraph
.
Ejemplos
Optimice y recorte los cierres de bucles para gráficos de pose 2D
Optimice un gráfico de pose en función de los nodos y las restricciones de los bordes. Recorte el bucle cerrado en función de los errores residuales de sus bordes.
Cargue el conjunto de datos que contiene un gráfico de pose 2D. Inspeccione el objeto poseGraph
para ver el número de nodos y cierres de bucle.
load grid-2d-posegraph.mat pg disp(pg)
poseGraph with properties: NumNodes: 120 NumEdges: 193 NumLoopClosureEdges: 74 LoopClosureEdgeIDs: [120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 ... ] (1x74 double) LandmarkNodeIDs: [1x0 double]
Traza el gráfico de pose con las identificaciones desactivadas. Las líneas rojas indican cierres de bucle identificados en el conjunto de datos. Las poses en el gráfico deben seguir un patrón de cuadrícula, pero muestran evidencia de variación con el tiempo.
show(pg,'IDs','off'); title('Original Pose Graph')
Optimice el gráfico de pose usando la función optimizePoseGraph
. De forma predeterminada, esta función utiliza el solver "builtin-trust-region"
. Debido a que el gráfico de pose contiene algunos cierres de bucle incorrectos, el gráfico de pose resultante en realidad no es deseable.
pgOptim = optimizePoseGraph(pg); figure; show(pgOptim);
Observe los errores residuales de los bordes del gráfico de pose original. Los valores de error atípicos grandes al final indican cierres de bucle incorrectos.
resErrorVec = edgeResidualErrors(pg);
plot(resErrorVec);
title('Edge Residual Errors by Edge ID')
Ciertos cierres de bucle deben recortarse del gráfico de pose en función de su error residual. Utilice la función trimLoopClosures
para recortar estos cierres de bucle incorrectos. Establezca el umbral máximo y de truncamiento para los parámetros del recortador. Este umbral se establece en función de la precisión de la medición y debe ajustarse a su sistema.
trimParams.MaxIterations = 100; trimParams.TruncationThreshold = 25; solverOptions = poseGraphSolverOptions;
Utilice la función trimLoopClosures
con los parámetros del recortador y las opciones del solver .
[pgNew, trimInfo, debugInfo] = trimLoopClosures(pg,trimParams,solverOptions);
A partir de la salida trimInfo
, trace los cierres de bucle eliminados del gráfico de pose optimizado. Al trazar con el gráfico de errores residuales anterior, puede ver que se eliminaron los grandes cierres de bucles de errores.
removedLCs = trimInfo.LoopClosuresToRemove; hold on plot(removedLCs,zeros(length(removedLCs)),'or') title('Edge Residual Errors and Removed Loop Closures') legend('Residual Errors', 'Removed Loop Closures') xlabel('Edge IDs') ylabel('Edge Residual Error') hold off
Muestre el nuevo gráfico de pose con los cierres de bucle defectuosos recortados.
show(pgNew,"IDs","off");
Argumentos de entrada
poseGraphObj
— Gráfico de pose
poseGraph
objeto | poseGraph3D
objeto
Gráfico de pose, especificado como un objeto poseGraph
o poseGraph3D
.
Argumentos de salida
resErrorVec
— Errores residuales de borde para el gráfico de pose
vector de escalares positivos
Errores residuales de borde para el gráfico de pose, especificados como un vector de escalares positivos.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Utilice esta sintaxis al construir objetos poseGraph
o poseGraph3D
para la generación de código:
poseGraph = poseGraph('MaxNumEdges',maxEdges,'MaxNumNodes',maxNodes)
especifica un límite superior en el número de bordes y nodos permitidos en el gráfico de pose al generar código. Este límite solo es necesario al generar código.
Historial de versiones
Introducido en R2020b
Consulte también
Funciones
Objetos
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)