Main Content

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

predict

Predecir la covarianza de estado y error de estado

Desde R2021b

    Descripción

    predict(slamObj,controlInput) predice el estado y la covarianza del error de estado. predict utiliza la propiedad StateTransitionFcn del objeto ekfSLAM , slamObj y la entrada del controlador controlInput para predecir el estado.

    ejemplo

    predict(slamObj,controlInput,varargin) pasa todos los argumentos adicionales especificados en varargin a la propiedad subyacente StateTransitionFcn de slamObj.

    La primera entrada a StateTransitionFcn es la pose del paso de tiempo anterior, seguida de todos los argumentos definidos por el usuario en varargin.

    Ejemplos

    contraer todo

    Cargue un conjunto de datos de pista de carreras que contenga el estado inicial del vehículo, la covarianza del estado inicial del vehículo, la covarianza del ruido del proceso, la entrada de control, el tamaño del paso de tiempo, la medición, la covarianza de la medición y los valores de la puerta de validación.

    load("racetrackDataset.mat","initialState","initialStateCovariance", ...
         "processNoise","controllerInputs","timeStep", ...
         "measurements","measCovar","validationGate");

    Cree un objeto ekfSLAM con estado inicial, covarianza de estado inicial y ruido de proceso.

    ekfSlamObj = ekfSLAM("State",initialState, ...
                         "StateCovariance",initialStateCovariance, ...
                         "ProcessNoise",processNoise);

    Inicializa una variable para almacenar la pose.

    storedPose = nan(size(controllerInputs,1)+1,3);
    storedPose(1,:) = ekfSlamObj.State(1:3);

    Prediga el estado utilizando la entrada de control y el tamaño del paso de tiempo para la función de transición de estado. Luego, corrija el estado utilizando los datos de los puntos de referencia observados, la covarianza de medición y la puerta de validación para la función de asociación de datos.

    for count = 1:size(controllerInputs,1)
        % Predict the state
        predict(ekfSlamObj,controllerInputs(count,:),timeStep);
     
        % Get the landmarks in the environment
        observedLandmarks = measurements{count};
     
        % Correct the state
        if ~isempty(observedLandmarks)
            correct(ekfSlamObj,observedLandmarks, ...
                    measCovar,validationGate);
        end
      
        % Log the estimated pose
        storedPose(count+1,:) = ekfSlamObj.State(1:3);
    end

    Visualice el mapa creado.

    fig = figure;
    figAx = axes(fig);
    axis equal
    grid minor
    hold on
    plot(figAx,storedPose(:,1),storedPose(:,2),"g.-")
    landmarks = reshape(ekfSlamObj.State(4:end),2,[])';
    plot(figAx,landmarks(:,1),landmarks(:,2),"m+")
    plot(figAx,storedPose(1,1),storedPose(1,2),"k*")
    plot(figAx,storedPose(end,1),storedPose(end,2),"rd")
    legend("Robot trajectory","Landmarks","Start","End")

    Figure contains an axes object. The axes object contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot trajectory, Landmarks, Start, End.

    Argumentos de entrada

    contraer todo

    Objeto EKF SLAM, especificado como un objeto ekfSLAM .

    Entrada del controlador necesaria para propagar el estado desde el valor inicial hasta el valor final, especificado como un vector de elemento N.

    Nota

    La dimensión del ruido del proceso debe ser igual al número de elementos en controlInput.

    Tipos de datos: single | double

    Lista de argumentos de entrada de longitud variable, especificada como una lista separada por comas. Esta entrada se pasa directamente a la propiedad StateTransitionFcn de slamObj para evolucionar el estado. Cuando usted llama:

    predict(slamObj,controlInput,arg1,arg2)

    MATLAB® esencialmente llama al stateTransitionFcn como:

    stateTransitionFcn(pose(k-1),controlInput,arg1,arg2)

    Capacidades ampliadas

    Generación de código C/C++
    Genere código C y C++ mediante MATLAB® Coder™.

    Historial de versiones

    Introducido en R2021b

    Consulte también

    Objetos

    Funciones