Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

move

Déplacer la carte dans le cadre du monde

Depuis R2019b

Description

move(map,moveValue) déplace l'origine locale de la carte vers un emplacement absolu, moveValue, dans le cadre du monde, et met à jour les limites de la carte. Les valeurs de déplacement sont tronquées en fonction de la résolution de la carte. Par défaut, les régions nouvellement révélées sont définies sur map.DefaultValue.

exemple

move(map,moveValue,Name,Value) spécifie des options supplémentaires spécifiées par un ou plusieurs arguments de paire nom-valeur.

Exemples

réduire tout

Cet exemple montre comment déplacer une carte égocentrique locale et la synchroniser avec une carte du monde plus grande. Ce processus émule un véhicule circulant dans un environnement et obtient des mises à jour sur les obstacles dans les nouvelles zones.

Chargez des exemples de cartes. Créez une carte d'occupation binaire à partir du complexMap.

load exampleMaps.mat
map = binaryOccupancyMap(complexMap);
show(map)

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

Créez une carte locale plus petite.

mapLocal = binaryOccupancyMap(complexMap(end-20:end,1:20));
show(mapLocal)

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

Suivez un chemin prévu sur la carte du monde et mettez à jour la carte locale à mesure que vous déplacez votre cadre local.

Spécifiez les emplacements des chemins et tracez-les sur la carte.

path = [5 2
        8 2
        8 8
        30 8];
show(map)
hold on
plot(path(:,1),path(:,2))
hold off

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

Créez une boucle pour vous déplacer entre les points en fonction de la résolution de la carte. Divisez la différence entre les points par la résolution de la carte pour voir combien de mouvements incrémentiels vous pouvez effectuer.

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",map)
 
        show(mapLocal)
        drawnow limitrate
        pause(0.2)
    end
end

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

Arguments d'entrée

réduire tout

Représentation cartographique, spécifiée comme objet binaryOccupancyMap . Cet objet représente l'environnement du véhicule.

Valeur de déplacement d'origine de la carte locale, spécifiée comme vecteur [x y] . Par défaut, la valeur est un emplacement absolu vers lequel déplacer l'origine locale dans le cadre mondial. Utilisez la paire nom-valeur MoveType pour spécifier un mouvement relatif.

Arguments nom-valeur

Spécifiez des paires d'arguments facultatives sous la forme Name1=Value1,...,NameN=ValueN, où Name est le nom de l'argument et Value est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l'ordre des paires n'a pas d'importance.

Avant R2021a, utilisez des virgules pour séparer chaque nom et valeur, et mettez Name entre guillemets.

Exemple : 'MoveType','relative'

Type de déplacement, spécifié comme 'absolute' ou 'relative'. Pour les mouvements relatifs, spécifiez un vecteur [x y] relatif pour moveValue en fonction de votre cadre local actuel.

Remplissez la valeur pour les emplacements révélés en raison des limites de la carte décalées, spécifiées comme 0 ou 1.

Carte secondaire avec laquelle synchroniser, spécifiée comme objet binaryOccupancyMap . Tous les emplacements révélés en fonction du déplacement sont mis à jour avec les valeurs de cette carte en utilisant les coordonnées du monde.

Capacités étendues

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2019b