Delen via


Ankers maken en vinden met coarse-relokalisatie in C++/NDK

Azure Spatial Anchors kunnen worden gekoppeld aan een apparaat, positioneringssensorgegevens met de ankers die u maakt. Deze gegevens kunnen ook worden gebruikt om snel te bepalen of er ankers zich in de buurt van uw apparaat bevinden. Zie Coarse-relokalisatievoor meer informatie.

Vereisten

Om deze zelfstudie te voltooien, moet u ervoor zorgen dat u:

De provider voor vingerafdrukken van de sensor configureren

We beginnen met het maken en configureren van een provider voor vingerafdrukken van de sensor. De provider voor vingerafdrukken van de sensor zorgt ervoor dat de platformspecifieke sensoren op het apparaat worden afgelezen en dat de afleeswaarden worden geconverteerd naar een gebruikelijke weergave die door de sessie voor het ruimtelijk anker in de cloud wordt gebruikt.

Belangrijk

Controleer hier of de sensoren die u inschakelt, beschikbaar zijn op uw platform.

// Create the sensor fingerprint provider
std::shared_ptr<PlatformLocationProvider> sensorProvider;
sensorProvider = std::make_shared<PlatformLocationProvider>();

// Allow GPS
const std::shared_ptr<SensorCapabilities>& sensors = sensorProvider->Sensors();
sensors->GeoLocationEnabled(true);

// Allow WiFi scanning
sensors->WifiEnabled(true);

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

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

De sessie voor het ruimtelijk anker in de cloud configureren

De configuratie van de sessie voor het ruimtelijk anker in de cloud wordt later behandeld. Op de eerste regel wordt de sensorprovider voor de sessie ingesteld. Voortaan wordt elk anker dat tijdens de sessie wordt gemaakt, aan een reeks sensoraflezingen gekoppeld. Vervolgens worden voorwaarden voor het lokaliseren van nabije apparaten geïnstantieerd en vervolgens geïnitialiseerd zodat ze aan de toepassingsvereisten voldoen. Ten slotte krijgt de sessie de opdracht om sensorgegevens te gebruiken bij het lokaliseren van ankers door een watcher te maken op basis van de voorwaarden voor nabije apparaten.

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

// Configure the near-device criteria
auto nearDeviceCriteria = std::make_shared<NearDeviceCriteria>();
nearDeviceCriteria->DistanceInMeters(5.0f);
nearDeviceCriteria->MaxResultCount(25);

// Set the session's locate criteria
auto anchorLocateCriteria = std::make_shared<AnchorLocateCriteria>();
anchorLocateCriteria->NearDevice(nearDeviceCriteria);
cloudSpatialAnchorSession->CreateWatcher(anchorLocateCriteria);

Nadat de watcher is gemaakt, wordt de AnchorLocated-gebeurtenis voor elk aangevraagd anker geactiveerd. Deze gebeurtenis wordt geactiveerd wanneer er een anker wordt gelokaliseerd of als het anker niet kan worden gelokaliseerd. Als deze situatie zich voordoet, wordt de reden aangegeven in de status. Nadat alle ankers voor een watcher zijn verwerkt, gevonden of niet gevonden, wordt de LocateAnchorsCompleted-gebeurtenis geactiveerd. Er geldt een limiet van 35 id's per watcher.

Volgende stappen

In deze handleiding hebt u geleerd hoe u ankers kunt maken en vinden met behulp van sensors op het apparaat. Ga verder met de volgende handleiding voor meer informatie over coarse-relokalisatie.