Come creare e individuare ancoraggi usando la rilocalizzazione grossolana in C++/WinRT

Gli ancoraggi nello spazio di Azure possono associare i dati dei sensori di posizionamento su dispositivo agli ancoraggi creati. Questi dati possono anche essere usati per determinare rapidamente se sono presenti ancoraggi vicini al dispositivo. Per altre informazioni, vedere Rilocalizzazione grossolana.

Prerequisiti

Per completare le procedure contenute in questa guida, verificare che siano soddisfatti i requisti seguenti:

Configurare il provider di impronte digitali dei sensori

Per iniziare, creare e configurare un provider di impronte digitali di sensori. Il provider di impronte digitali dei sensori leggerà i sensori specifici della piattaforma nel dispositivo e convertirà queste letture in una rappresentazione comune utilizzata dalla sessione di ancoraggi nello spazio nel cloud.

Importante

Assicurarsi di verificare qui se i sensori che si abilitano sono disponibili nella piattaforma.

// Create the sensor fingerprint provider
PlatformLocationProvider sensorProvider = PlatformLocationProvider();

// Allow GPS
SensorCapabilities sensors = sensorProvider.Sensors()
sensors.GeoLocationEnabled(true);

// Allow WiFi scanning
sensors.WifiEnabled(true);

// Populate the set of known BLE beacons' UUIDs
std::vector<winrt::hstring> uuids;
uuids.emplace_back("22e38f1a-c1b3-452b-b5ce-fdb0f39535c1");
uuids.emplace_back("a63819b9-8b7b-436d-88ec-ea5d8db2acb0");

// Allow the set of known BLE beacons
sensors.BluetoothEnabled(true);
sensors.KnownBeaconProximityUuids(uuids);

Configurare la sessione di ancoraggi nello spazio nel cloud

Verrà ora configurata la sessione di ancoraggi nello spazio nel cloud. Nella prima riga viene impostato il provider di sensori nella sessione. Da questo momento in poi, qualsiasi ancoraggio creato durante la sessione verrà associato a un set di letture del sensore. Viene quindi creata un'istanza dei criteri di localizzazione di dispositivi nelle vicinanze, che verrà inizializzata in base ai requisiti dell'applicazione. Infine, viene indicato alla sessione di usare i dati del sensore quando si individuano gli ancoraggi creando un watcher dai criteri di localizzazione dei dispositivi nelle vicinanze.

// Set the session's sensor fingerprint provider
cloudSpatialAnchorSession.LocationProvider(sensorProvider);

// Configure the near-device criteria
NearDeviceCriteria nearDeviceCriteria = NearDeviceCriteria();
nearDeviceCriteria.DistanceInMeters(5.0f);
nearDeviceCriteria.MaxResultCount(25);

// Set the session's locate criteria
anchorLocateCriteria = AnchorLocateCriteria();
anchorLocateCriteria.NearDevice(nearDeviceCriteria);
cloudSpatialAnchorSession.CreateWatcher(anchorLocateCriteria);

Dopo la creazione del Watcher, l'evento AnchorLocated viene attivato per ogni ancoraggio richiesto. Questo evento viene generato quando viene individuato un ancoraggio o se non è possibile individuarlo. Se si verifica questa situazione, il motivo verrà indicato nello stato. Dopo che tutti gli ancoraggi per un Watcher vengono elaborati, che siano stati trovati o no, viene generato l'evento LocateAnchorsCompleted. È previsto un limite di 35 identificatori per Watcher.

Passaggi successivi

In questa guida si è appreso come creare e individuare ancoraggi usando sensori su dispositivo. Per altre informazioni sulla rilocalizzazione grossolana, passare alla guida successiva.