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.

move

Mover mapa en el marco mundial

Desde R2019b

Descripción

move(map,moveValue) mueve el origen local del mapa a una ubicación absoluta, moveValue, en el marco mundial, y actualiza los límites del mapa. Los valores de movimiento se truncan según la resolución del mapa. De forma predeterminada, las regiones recién reveladas están configuradas en map.DefaultValue.

ejemplo

move(map,moveValue,Name=Value) especifica opciones adicionales especificadas por uno o más argumentos de nombre-valor.

Ejemplos

contraer todo

Este ejemplo muestra cómo mover un mapa egocéntrico local y sincronizarlo con un mapa mundial más grande. Este proceso emula un vehículo que conduce en un entorno y obtiene actualizaciones sobre los obstáculos en las nuevas áreas.

Cargar mapas de ejemplo. Cree un mapa de ocupación a partir del ternaryMap.

load exampleMaps.mat
map = occupancyMap(ternaryMap);
show(map)

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

Crea un mapa local más pequeño.

mapLocal = occupancyMap(ternaryMap(end-200:end,1:200));
show(mapLocal)

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

Siga una ruta planificada en el mapa mundial y actualice el mapa local a medida que mueve su marco local.

Especifique las ubicaciones de las rutas y trácelas en el mapa.

path = [100 100
        100 250
        200 250
        300 250];
show(map)
hold on
plot(path(:,1),path(:,2))
hold off

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 2 objects of type image, line.

Cree un bucle para moverse entre puntos según la resolución del mapa. Divide la diferencia entre puntos por la resolución del mapa para ver cuántos movimientos incrementales puedes hacer.

for i = 1:length(path)-1
    moveAmount = (path(i+1,:)-path(i,:))/map.Resolution;
    for j = 1:abs(moveAmount(1)+moveAmount(2))
        moveValue = sign(moveAmount).*map.Resolution;
        move(mapLocal,moveValue,"MoveType","relative")
        syncWith(mapLocal,map) 
        show(mapLocal)
        drawnow limitrate
    end
end

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains an object of type image.

Argumentos de entrada

contraer todo

Representación de mapa, especificada como un occupancyMap, mapLayer, multiLayerMap o signedDistanceMap .

Valor de movimiento del origen del mapa local, especificado como un vector [x y] . De forma predeterminada, el valor es una ubicación absoluta a la que mover el origen local en el marco mundial. Utilice el par nombre-valor MoveType para especificar un movimiento relativo.

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.

Antes de R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: MoveType="relative"

Tipo de movimiento, especificado como "absolute" o "relative". Para movimientos relativos, especifique un vector relativo [x y] para moveValue basado en su marco local actual.

Tipos de datos: char | string

Valor de relleno para ubicaciones reveladas debido a los límites del mapa desplazados, especificado como 0 o 1.

Mapa secundario para sincronizar, especificado como un objeto occupancyMap . Cualquier ubicación revelada basada en el movimiento se actualiza con valores en este mapa utilizando las coordenadas mundiales.

Capacidades ampliadas

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

Historial de versiones

Introducido en R2019b

expandir todo