定义了以下新函数 location_cellular_get(),用于测试蜂窝定位服务。

/**

* @brief Retrieve location with cellular location service.

*/

static void location_cellular_get(void)

{

int err;

struct location_config config;

enum location_method methods[] = {LOCATION_METHOD_CELLULAR};

location_config_defaults_set(&config, ARRAY_SIZE(methods), methods);

printk("Requesting cellular location...\n");

err = location_request(&config);

if (err) {

printk("Requesting location failed, error: %d\n", err);

return;

}

location_event_wait();

}

蜂窝定位服务的功耗结果与 Wi-Fi 定位服务非常相似。下图显示了蜂窝定位服务的 PPK2 测量结果。

 基于 SSID 的 Wi-Fi 定位

以下是测试的日志输出。该蜂窝定位服务请求的总功耗为 122.48 mC,精确度为 1708.0 m。

Requesting cellular location...

Got location:

method: Cellular

latitude: 59.920624

longitude: 10.689719

accuracy: 1708.0 m

date: 2023-09-04

time: 12:47:23.399 UTC

Google maps URL: https://maps.google.com/?q=59.920624,10.689719

基于 Wi-Fi 的定位服务

以下捕获使用 location_wifi_get 函数请求 Wi-Fi 定位服务。该事件的总功耗为 125.85mC,日志显示精确度为 30.0m。

 基于-ssid-的-wi-fi-定位

Got location:

method: Wi-Fi

latitude: 59.919015

longitude: 10.688577

accuracy: 30.0 m

date: 2023-09-04

time: 12:47:51.753 UTC

Google maps URL: https://maps.google.com/?q=59.919015,10.688577

使用 A-GPS 提供基于 GNSS 的定位服务

样本中的原始函数 location_gnss_low_accuracy_get() 用于 GNSS 定位服务请求,并启用了 A-GPS 辅助功能。低精度模式可让 GNSS 展示较宽松的固定接受标准,以节省功耗。GNSS 定位服务有三种精度模式:低精度、正常精度和高精度。精度越高,设备的耗电量就越大,但根据经验,我们知道所有精度模式的耗电量都高于 Wi-Fi 和蜂窝定位服务。在 GNSS 定位服务测量中,我们预计即使 GNSS 的低精度模式也会比 Wi-Fi 和蜂窝定位服务提供更好的定位精度,因此在测量中使用了低精度模式,我们可以看到 GNSS 与其他定位服务 “最接近 ”的功耗差异。结果确实证明了这一假设。A-GPS 数据只请求一次,以加快 TTFF 的速度。请注意,只要设备中的历书和星历数据仍然有效,就不需要 A-GPS 请求。

PPK2 测量结果显示,在没有 A-GPS 数据请求过程的情况下,该事件的总电荷量为 316.71mC,日志显示精度为 16.9m。

 基于-ssid-的-wi-fi-定位

Got location:

method: GNSS

latitude: 59.920928

longitude: 10.689040

accuracy: 16.9 m

date: 2023-09-04

time: 12:48:34.586 UTC

Google maps URL: https://maps.google.com/?q=59.920928,10.689040

结果

下面是我们在奥斯陆Nordic Semiconductor 办公室屋顶进行的功耗和精度测量结果。

nRF Cloud location service

Power consumption (mC)

Accuracy (m)

Cellular

122.48

1708.0

Wi-Fi

125.85

30.0

GNSS (low accuracy with A-GPS)

316.71 (A-GPS data request process is not included)

16.9

我们可以看到,这些测量结果正确反映了 “位置服务的定位精度和功耗 ”图中的内容。在一般情况下,Wi-Fi 是一种很好的定位服务方法,它能以较低的功耗获得很高的精度。

请注意,图表中的表格列出了不同定位服务的最佳精度;实际精度在实践中会有所不同。例如,在高楼环绕的城市中,由于反射和建筑物会干扰 GNSS 信号,GNSS 定位服务的精度可能比 Wi-Fi 低。根据应用需求选择正确的定位服务方法并通过测量评估实际定位精度和功耗非常重要。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐