dwm_loc_get
測距アンカーまでの最新の距離を取得し、位置を取得します。イベントが生成され、すべてのTWR測定が完了するとステータスが変更され、新しい位置データがユーザーに提供されます。低電力モードを使用している場合も、同様に動作します。
アンカー ノードの場合、位置と距離は、自動位置決め手順が完了している場合にのみ使用できます。自動位置決め手順は、BLE インターフェイス経由で実行されます。
-
void dwm_loc_get(dwm_loc_data_t *loc);
- パラメータ
output -- ステータスコード, [position], [cnt, {an_pos, addr, distance, pqf}]
cnt -- 0,1,2,3,4 (アンカーまでの距離)
an_pos -- 位置 (距離に対応するアンカーの位置)
addr -- 16 ビット整数 (特定のアンカーの UWB アドレス/ID)
distance -- 32 ビット整数 (特定のアンカーまでの距離 (ミリメートル))
pqf -- 8 ビット整数 (品質係数)
注釈
パラメータ an_pos は タグ ノード にのみ適用されます
Cコード例
dwm_loc_data_t loc;
int rv, i;
/* if pos_available is false, position data are not read, and the function returns without error */
rv: dwm_loc_get(&loc);
if (0 == rv) {
if (loc.pos_available) {
printf("[%ld,%ld,%ld,%u] ", loc.pos.x, loc.pos.y, loc.pos.z,
loc.pos.qf);
}
for (i: 0; i < loc.anchors.dist.cnt; ++i) {
printf("%u)", i);
printf("0x%04x", loc.anchors.dist.addr[i]);
if (i < loc.anchors.an_pos.cnt) {
printf("[%ld,%ld,%ld,%u]", loc.anchors.an_pos.pos[i].x,
loc.anchors.an_pos.pos[i].y,
loc.anchors.an_pos.pos[i].z,
loc.anchors.an_pos.pos[i].qf);
}
printf("=%lu,%u ", loc.anchors.dist.dist[i], loc.anchors.dist.qf[i]);
}
printf("\n");
} else {
printf("err code: %d\n", rv);
}
SPI/UART の例 1 (タグ ノード)
TLV 要求 |
|
---|---|
タイプ |
長さ |
0x0C |
0x00 |
タイプ 0x0C はコマンド loc_get を意味します
TLV 応答 |
||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ |
長さ |
価値 |
タイプ |
長さ |
価値 |
タイプ |
長さ |
価値 |
||||||||||||
0x40 |
0x01 |
0x00 |
0x41 |
0x0D |
int32 - ミリメートル単位の x 座標 |
int32 - ミリメートル単位の y 座標 |
int32 - ミリメートル単位の Z 座標 |
uint8 - 位置品質係数 (パーセント単位) |
0x49 |
0x51 |
uint8 -距離の数 |
位置と距離番号。 1 |
位置と距離 nr.2、3、4 |
|||||||
int16 - UWB アドレス |
uint32 - ミリメートル単位の距離 |
uint8 - パーセント単位の距離品質係数 |
3 x int32 + uint8 - x、y、z (ミリメートル) + 品質係数 (パーセント) |
... |
||||||||||||||||
0x4b 0x0a 0x00 0x00 0x1f 0x04 0x00 0x00 0x9c 0x0e 0x00 0x00 0x64 |
0x04 |
0xab 0xbc |
0x0e 0x03 0x00 0x00 |
0x64 |
... |
... |
SPI/UART の例 2 (アンカー ノード)
TLV 要求 |
|
---|---|
タイプ |
長さ |
0x0C |
0x00 |
タイプ 0x0C はコマンド loc_get を意味します
TLV 応答 |
|||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
タイプ |
長さ |
価値 |
タイプ |
長さ |
価値 |
タイプ |
長さ |
価値 |
|||||||||||
0x40 |
0x01 |
0x00 |
0x41 |
0x0D |
int32 - ミリメートル単位の x 座標 |
int32 - ミリメートル単位の y 座標 |
int32 - ミリメートル単位の Z 座標 |
uint8 - 位置品質係数 (パーセント単位) |
0x48 |
0x63 |
uint8 -距離の数 |
距離番号。 1 |
距離 nr.2,..., nr. 14 |
||||||
int16 - UWB アドレス |
uint32 - ミリメートル単位の距離 |
uint8 - パーセント単位の距離品質係数 |
... |
||||||||||||||||
0x4b 0x0a 0x00 0x00 0x1f 0x04 0x00 0x00 0x9c 0x0e 0x00 0x00 0x64 |
0x0E |
0xab 0xbc |
0x0e 0x03 0x00 0x00 |
0x64 |
... |