Main Content

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

syncWith

Synchroniser la carte avec la carte superposée

Depuis R2019b

Description

exemple

mat = syncWith(map,sourcemap) met à jour map avec les données d'un autre objet occupancyMap , sourcemap. Les emplacements dans map qui se trouvent également dans sourcemap sont mis à jour. Toutes les autres cellules de map conservent leurs valeurs actuelles.

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 à partir du 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.

Créez une carte locale plus petite.

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.

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 = [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.

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(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.

Arguments d'entrée

réduire tout

Représentation cartographique, spécifiée comme un occupancyMap, mapLayer, multiLayerMap ou signedDistanceMap .

Données de carte source, spécifiées comme un objet occupancyMap, mapLayer, multiLayerMap ou signedDistanceMap .

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

développer tout