Jak vytvořit a najít kotvy pomocí hrubé relokalizace v C++/NDK
Azure Spatial Anchors může přidružit data snímačů na zařízení a jejich umístění k ukotvením, které vytvoříte. Tato data můžete také použít k rychlému určení, jestli jsou v blízkosti vašeho zařízení nějaké kotvy. Další informace najdete v tématu Přibližná relokalizace.
Požadavky
Pokud chcete dokončit tuto příručku, ujistěte se, že máte:
- Základní znalosti jazyka C++ a sady Android Native Development Kit
- Přečtěte si přehled služby Azure Spatial Anchors.
- Dokončili jsme jeden z 5minutových rychlých startů.
- Přečtěte si postup vytvoření a vyhledání ukotvení.
Konfigurace poskytovatele otisků prstů ze senzoru
Začneme vytvořením a konfigurací poskytovatele otisků prstů ze snímačů. Poskytovatel otisků prstů ze snímačů se postará o čtení snímačů specifických pro konkrétní platformu na vašem zařízení a o převod jejich hodnot na běžnou reprezentaci, kterou využívá relace cloudového prostorového ukotvení.
Důležité
Nezapomeňte zkontrolovat , jestli jsou senzory, které povolujete, dostupné na vaší 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);
Konfigurace relace prostorového ukotvení cloudu
V dalším kroku se postaráme o konfiguraci relace prostorového ukotvení cloudu. Na prvním řádku nastavíme poskytovatele senzoru v relaci. Od této chvíle bude každá kotva, která během relace vytvoříme, přidružená k sadě hodnot ze snímačů. Dále vytvoříme instanci kritéria hledání blízko zařízení a inicializujeme ji tak, aby odpovídala požadavkům aplikace. Nakonec dáváme relaci pokyn, aby při hledání ukotvení používala data snímačů, a to vytvořením sledovacího procesu na základě našich kritérií blízkých zařízením.
// 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);
Po vytvoření AnchorLocated
sledovacího procesu se událost aktivuje pro každé požadované ukotvení. Tato událost se aktivuje, když je umístěna kotva nebo pokud ukotvení nelze najít. Pokud k této situaci dojde, bude důvod uveden ve stavu . Po zpracování, nalezení nebo nenalezení všech ukotvení sledovacího LocateAnchorsCompleted
procesu se událost aktivuje. Existuje limit 35 identifikátorů na sledovací proces.
Další kroky
V této příručce jste se dozvěděli, jak vytvářet a umísťovat kotvy pomocí senzorů na zařízeních. Další informace o hrubé relokalizaci najdete v dalším průvodci.