高度な設定と最適化
この章を読みやすいHTMLページで表示します。
「操作マニュアル」の「高度な設定と最適化」の章を、HTMLページとして再現したものです。不明な点がありましたら、次を開いてください:この章だけの元のPDF(244〜300ページ)(左上にも固定表示)。目次:全章。
高度な設定は、システムを十分に使いこなせるようになってから使い始めてください。
問題が発生した場合は、ビーコンまたはモデムをUSBでPCに接続し、DEFAULT ボタンを使用してください。デバイスのアドレスはそのままで、ボードに「工場出荷時の設定」が書き込まれます。
無線プロファイルの互換性
このセクションでは、各製品のさまざまなHWバージョンを紹介します:
注:製品名の末尾の「-3」「-4」(例:Super-Beacon-3、Super-Beacon-4、Modem HW v5.1-3)は、デバイスのハードウェアバージョンを示します。現在提供しているのは、ハードウェアバージョン3とハードウェアバージョン4です。ハードウェアバージョンはデバイスのラベルに印字され、Dashboardにも表示されます。ハードウェアバージョンによって、対応する無線プロファイルが異なる場合があります。下の互換性表を参照してください。
38 Kbps | 100 Kbps | 200 Kbps | 400 Kbps * | 500 Kbps | |
Modem HW v4.9 | 対応 | 対応 | 非対応** | 非対応** | 対応 |
Modem HW v5.1 | 対応 | 対応 | 対応 | 対応 | 対応 |
Modem HW v5.1-3 | 対応 | 対応 | 対応 | 非対応** | 非対応** |
Super-Modem | 対応 | 対応 | 非対応** | 対応 | 対応 |
Super-Modem-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
Super-Modem-3 | 対応 | 対応 | 対応 | 非対応** | 非対応** |
Beacon Mini-RX | 対応 | 対応 | 非対応** | 対応 | 対応 |
Beacon Mini-RX-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
Beacon Mini-RX-3 | 対応 | 対応 | 対応 | 非対応** | 非対応** |
Super-Beacon | 対応 | 対応 | 非対応** | 対応 | 対応 |
Super-Beacon-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
Super-Beacon-3 | 対応 | 対応 | 対応 | 非対応** | 非対応** |
Super-Beacon-4 | 対応 | 対応 | 対応 | 対応 | 対応 |
Industrial Super-Beacon | 対応 | 対応 | 非対応** | 対応 | 対応 |
Industrial Super-Beacon-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
Industrial Super-Beacon-3 | 対応 | 対応 | 対応 | 非対応** | 非対応** |
Industrial Super-Beacon-4 | 対応 | 対応 | 対応 | 対応 | 対応 |
Industrial-RX | 対応 | 対応 | 非対応** | 対応 | 対応 |
Industrial-RX-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
Industrial-RX-3 | 対応 | 対応 | 対応 | 非対応** | 非対応** |
Industrial-RX-4 | 対応 | 対応 | 対応 | 対応 | 対応 |
Industrial-RX-4 with Omni | 対応 | 対応 | 対応 | 対応 | 対応 |
Beacon HW v4.9 | 対応 | 対応 | 非対応** | 非対応** | 対応 |
Beacon Mini-TX | 対応 | 対応 | 非対応** | 非対応** | 対応 |
Beacon Mini-TX-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
*日本では、500 kbpsの代わりに400 kbpsを使用します
**無線チップの構成上、今後も利用できません
太字かつ下線付きのものが、各デバイスのデフォルトの無線プロファイルです
さまざまな構成の例:
スターターセットを構成するデバイスはセットごとに異なります。お手元のデバイスの種類を確認してください。使用できる無線プロファイルは、デバイスの種類によって決まります
例1 – Modem HW v5.1とSuper-Beacon-2、4
38 Kbps | 100 Kbps | 200 Kbps | 400 Kbps * | 500 Kbps | |
Modem HW v5.1 | 対応 | 対応 | 対応 | 対応 | 対応 |
Super-Beacon-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
この表から、この構成では両方のデバイスがすべてのプロファイルに対応しているため、すべてのプロファイルを使用できることがわかります。
例2 – Modem HW v5.1とSuper-Beacon-3
38 Kbps | 100 Kbps | 200 Kbps | 400 Kbps * | 500 Kbps | |
Modem HW v5.1 | 対応 | 対応 | 対応 | 対応 | 対応 |
Super-Beacon-3 | 対応 | 対応 | 対応 | 非対応 | 非対応 |
この表から、この構成では38 kbpsと100 kbpsの無線プロファイルを使用できることがわかります。Super-Beacon-3が400 kbpsと500 kbpsに対応していないためです(プロセッサーの構成上、これらは利用できません)。
例3 – Modem HW v5.1-3とBeacon Mini-RX-3
38 Kbps | 100 Kbps | 200 Kbps | 400 Kbps * | 500 Kbps | |
Modem HW v5.1-3 | 対応 | 対応 | 対応 | 非対応 | 非対応 |
Beacon Mini-RX-3 | 対応 | 対応 | 対応 | 非対応 | 非対応 |
この表から、この構成では38 kbpsと100 kbpsの無線プロファイルを使用できることがわかります。Modem HW v5.1-3とBeacon Mini-RX-3が400 kbpsと500 kbpsに対応していないためです(プロセッサーの構成上、これらは利用できません)。
例4 – Modem HW v5.1、Super-Beacon-2、Beacon Mini-RX-3
38 Kbps | 100 Kbps | 200 Kbps | 400 Kbps * | 500 Kbps | |
Modem HW v5.1 | 対応 | 対応 | 対応 | 対応 | 対応 |
Super-Beacon-2 | 対応 | 対応 | 対応 | 対応 | 対応 |
Beacon Mini-RX-3 | 対応 | 現時点では非対応* | 対応 | 非対応 | 非対応 |
この表から、この構成では38 kbpsと100 kbpsの無線プロファイルを使用できることがわかります。Beacon Mini-RX-3が400 kbpsにも500 kbpsにも対応していないためです(プロセッサーの構成上、これらは利用できません)。
Super-ModemのWi-Fi設定
Wi-Fiを使って、座標を別のPCへストリーミングできます。この章では、その方法を説明します。詳しくは、次を参照してください:5.1章。
DashboardのWi-Fi設定メニュー
Super-ModemをUSBでPCに接続した状態で、設定バーの「Wi-Fi/UDP settings」を展開します。
- 使用する無線LANのWi-Fiネットワーク名とパスワードを入力し、「Write」ボタンを押します

- その後、「Wi-Fi/UDP settings」バーが緑色になり、ネットワーク名が表示されます。

- 座標のストリーミング先となるデバイスのUDP送信先IPアドレスとUDP送信先ポートを入力し、「Write」ボタンを押します。

- Wi-Fiの設定は以上で完了です。
静的IP
(Static IP)

IPアドレスをIPv4形式で入力し(IPv4アドレスの形式はx . x . x . xで、xはオクテットと呼ばれ、0〜255の10進数である必要があります)、Wi-Fi接続に使用するルーターのIPアドレスも入力します。「Write」ボタンを押します:


静的IPの設定は完了です。
時分割多元接続(TDMA)シーケンス
IAでのみ適用されます。
超音波周波数は8種類しかないため、大規模なマップを構築する場合や、超音波信号が互いに干渉する場合には、TDMAを使用する必要があります。TDMAでは、サブマップが順番に信号を発信するため、固定ビーコンに同じ周波数を使うサブマップ同士でも一緒に動作できます。なお、更新レートはTDMAシーケンスの数に応じて低下します。TDMAなしの基本更新レートが8 Hzの場合、TDMAシーケンスが3つあると8/3 Hzになります。
同じ周波数セットのサブマップが重なる場合は、TDMAを使用する必要があります。
より一般的には、任意のサブマップXについて、Xのサービスエリア内のどの地点においても、次の条件をすべて同時に満たす他のサブマップのビーコンが存在してはなりません:
- Xが使用する周波数のうち1つ以上で動作する
- Xと同じTDMAスロットで送信する
- Xに属するビーコンよりもその地点の近くにある
サブマップ内で動作するモバイルビーコンは、そのサブマップから発信されたものと解釈されうる信号を、他のサブマップから受信してはなりません。この要件は、周波数の再利用とビーコン間の空間的な位置関係の両方を考慮した適切なTDMAスケジューリングによって満たす必要があります。
TDMAとは信号を順番に発信するモードで、固定ビーコンごとに、発信サイクルの番号と、シーケンスが繰り返されるまでのサイクルの総数を定義します。
例1:

例えば、開けたエリアにある100×100 mのマップは55個のサブマップで構成されており、サブマップの縦の列は同一ですが、それぞれ異なるTDMAループで動作します。この例では、シーケンス内のTDMAの順番ごとに異なる色を使っています。TDMA 1(赤)のサブマップが最初に、TDMA 2(緑)のサブマップが2番目に、TDMA 3(青)のサブマップが3番目に発信します:

さらに、このマップは6×11 = 66台の固定ビーコンで構成されています。つまり、各周波数のビーコン11台ずつがサブマップにまとめられています:19-31 kHz、31-45 kHz、45-19 kHz、19-37 kHz、37-25 kHz。
TDMAを有効にする方法(両方のサブマップで同じ周波数を使用する、2つのサブマップによる小規模な設定例):
固定ビーコンを、次のマニュアルのTDMAの章に従って設置します:配置マニュアル。
2つのサブマップを設定します。次の項目を確認します:距離テーブル、高さなど。サービスゾーンを描画します(詳細はサブマップ機能の説明を参照)。
固定ビーコンでは、TDMAスロット数とTDMAスロットの2つのオプションを選択する必要があります。選択できるTDMAスロットは、選んだ総スロット数によって決まります。ビーコンごとに、総スロット数と、そのビーコンが信号を発信するTDMAスロットを選択します。
モバイルビーコンを起動します。
マップ全体を固定します。これで使用できます。
位置が飛ぶ場合は、固定ビーコンに正しいTDMAスロットが選択されているか確認してください。また、サブマップ自体が正しいかどうかも確認してください(距離テーブル、高さなど)
更新レートを上げる
更新頻度は、主に次の2つのパラメーターに左右されます:
1) 無線プロファイル
2) 部屋の広さ(トラッキングエリア)
トラッキングの更新レートを調整する必要がある場合は、次の手順を行います:
1) 無線プロファイル:
利用できる無線プロファイルは、38 kbps、153 kbps、500 kbpsの3つです:
38 kbps は最も低速ですが、より長い距離をカバーできます
153 kbps – 中程度の速度で、中程度の距離に対応します(デフォルト)
500 kbps は最も高速ですが、通信距離は短くなります
したがって、更新レートを上げるには、500 kbpsへの切り替えをお勧めします。
方法:
各システムデバイス(モデムを含む)の設定バーで、「Radio profile」パラメーター(無線プロファイル)を500 kbps(または必要な値)に変更します。設定バーはDashboard画面の右側にあります。
ヒント:ビーコンとの接続を失わないよう、モデムより先にビーコンのプロファイルを変更してください。こうすることで、リモートで変更できます
2) 部屋の広さ(トラッキングエリア)
更新レートは、トラッキング距離(固定ビーコンとモバイルビーコンの間の距離)にも線形に依存します:
長い距離 – 低い更新レート
短い距離 – 高い更新レート
部屋が10x10 mの場合は、最大距離の設定を変更します。これにより、システムの測定距離が設定した最大値までに制限されます。
方法:
サブマップの設定を開きます(サブマップのアイコンをクリック)
最大距離の値をメートル単位で変更します(デフォルトは20)
ヒント:極端に小さな値は入力せず、1〜2 mの余裕を持たせてください。また、トラッキングエリアが狭い場合は20 mのままにしないでください。慎重に調整してください
詳しくはこちら:位置更新レートを上げるには?
位置更新のレイテンシを低減する
実際のレイテンシは、多くの要因に左右されます:
- IAかNIAか
- モデムからかビーコンからか
- IMUセンサーフュージョンか、通常の超音波のみか
- 無線プロファイル
- 実際に得られる更新レート
- 平均化やReal-time playerの有効/無効
範囲は次のとおりです:
約12 ms:IMUフュージョンを有効にし、平均化をまったく行わずに、モバイルビーコンからUSB経由でデータを取得する場合
約150 ms:30 mのサブマップで、超音波の更新レートが7 Hz、平均化なしの場合
約2秒:(b)と同じ設定で、Real-Time Playerを16に設定した場合。つまり、新しい値を出力する前に、最大16個の過去の測定値を考慮します
遅延に影響するもの:


Real-Time Player:Dashboard側 (対象:NIA)
Real Time Player:モバイルビーコン側 (対象:IA)
モデムの「Window of averaging」と「Distance filter」の設定 (対象:NIA)
モバイルビーコンの「Prefiltration coefficient」と「Ultrasonic filtering」の設定 (対象:IA)
レイテンシを下げる方法:
次の機能をオフにします:Real-Time Player(対象:IA と NIA)
次を変更します:「Window of averaging」と「Distance filter」の設定値を0に(NIAの場合):
選択:Modem -> Window of averaging(右側のタブ) -> 0を入力
選択:Modem -> Distance filter(右側のタブ) -> 0を入力
次を変更します:「Prefiltration coefficient」と「Ultrasonic filtering」の設定値を0に(IAの場合):
モバイルビーコンを選択し、次へ移動します:Ultrasound -> Prefiltration coefficient -> 0を入力
モバイルビーコンを選択し、次へ移動します:Ultrasound -> Ultrasonic filtering -> 0を入力
完了です。レイテンシが低減されます
詳しくはこちら:位置更新レートを上げるには?
ビーコンの配置方法
音を伝えやすい長い物体の上にビーコンを設置しない
ごくまれですが、例外的な状況で起こることがあります。
ビーコン(固定・モバイル)は、基板やケースから空気以外の媒体を通じて取り付け面へ超音波のエネルギーが直接伝わらない場所に設置することが推奨されます。例えば、長い水平の金属パイプにビーコンをしっかり固定すると、次のような現象が起こることがあります:
- ビーコンから発せられた音が、金属パイプに直接伝わります。
- 金属内部の伝搬損失は、空気中よりもはるかに小さくなります。さらに、パイプが低損失の導波路として働くことがあります。
- パイプが十分に硬く、十分に長い場合、受信側のビーコンが想定より早く、つまり距離を空気中の音速で割った時間より早く信号を受信するという異常な現象が起こることがあります。これは、金属中の音速が空気中の音速よりもはるかに速いためです。また、金属中の超音波の損失は空気中より少ないため、空気中を伝わってきた実際の信号よりも強く見えることさえあります。
- ビーコンは、比較的柔らかいものや、音を伝えにくいものの上に設置するのが良い方法です。
適切な超音波カバレッジが得られるようにビーコンを配置します。1台のビーコンは、少なくとも2台のビーコンとの間に見通し(超音波が直接届く経路)が確保されている必要があります。遮蔽物による影や壁などの影響を避けるため、天井の下に設置するようにしてください。
影響を軽減する方法はいくつかあります:
- モバイルビーコンはノイズ源の近くに置いても問題ありませんが、固定ビーコンは超音波を受信する側なので、ノイズ源から離して設置してください。一方、モバイルビーコンは超音波を発信する側です
ビーコンの配置について詳しくはこちら:高精度屋内測位システムの精度を高めるには
オシロスコープの使用

エコー
外部ノイズも同じように見えます。そのため、超音波しきい値はこの値より下、例えば-500〜-2000に設定します
基準ビーコンの番号を入力して、Enterを押します
テストするビーコンを選択します
超音波信号の立ち上がり
トリガー(赤線)
発信カウンター
超音波信号を正しく検出する
この章は主にHW v4.9ビーコンに関するものです。Super-BeaconとIndustrial Super-Beaconは、ノイズ除去と正確な信号検出のための高性能デジタルマイクを搭載しています。とはいえ、信号検出に問題がある場合は、どのビーコンを使用していても本章をお読みください
これらの推奨事項は、NIAにのみ適用されます
Marvelmind屋内ナビゲーションシステムは、超音波信号に独自のマルチ周波数方式を採用し、さらに外部ノイズを抑えるための追加フィルタリングも行っています。そのため、よくあるノイズ源に対しても比較的高い耐性があります。ただし、外部ノイズが強すぎる場合、ノイズ源が近すぎる場合、または19、25、31、37、45 kHzに近い周波数で連続した信号やホワイトノイズを発している場合は、システムの機能に影響が出ることがあります。
外部ノイズが大きい場合は、その発生源を特定してください。よくある発生源は次のとおりです:
超音波式の空間監視・動体検知アラームシステム
超音波を使用する他のロボット
駐車支援センサー(パークトロニック)
非常に強いホワイトノイズやインパルスノイズの発生源(エアガン、エアプレス、カッター、掃除機など)
ドローン/マルチコプターのローター
この場合に有効な対処法:
影響を受けているビーコンを特定します。通常は、ノイズ源に最も近いビーコンです。それらの位置を変えてみてください
影響を受けている固定ビーコンのゲインを手動で下げ、モバイルビーコンからの信号の振幅が1000〜1800になるようにします。これで信号対雑音比(S/N比)が最も良くなります。ゲインを上げすぎないでください。ノイズは増幅される一方で目的の信号は飽和してしまい、S/N比が悪化します
ビーコン間の距離を手動で入力します。詳細:距離テーブル
ゲイン設定は、非常に非線形な場合があります。4000から3000まではほとんど変化しませんが、2500付近から(HWバージョンによっては1200付近から)ゲインが急激に下がり始めます。ゲインを手動で設定すれば、S/N比が最も高くなる最適なゲインを見つけることができ、非常に厳しい外部条件下でもシステムを動作させられます。
マップの構築後は、モバイルビーコンだけが超音波を発し、固定ビーコンは発しません。そのため、モバイルビーコンがノイズ源にどれだけ近いかは問題になりません。しかし、固定ビーコンがノイズ源にどれだけ近いかは重要です。固定ビーコンの位置はこの点を考慮して選び、ノイズ源から離して設置してください。
システム精度の評価
距離測定の精度:
- Marvelmindのナビゲーションシステムは、正しい超音波の速度(音速)を使用していれば、ビーコン間の距離を±2 cmの精度で測定できます。
- 超音波の速度は、温度、気圧、湿度によって変わります。その他の要因の影響はごくわずかです。
- 主な要因は温度です。-20〜+50 °Cの温度範囲では、超音波の速度は約0.6 m/(s·°C)変化します。これにより、距離の誤差は約(0.6 / 340) × 100% ≈ 0.17%/°Cとなります。つまり、温度設定が正しくないことによる距離測定の絶対誤差は、温度誤差1 °Cにつき、ビーコン間の実際の距離の0.17%になります。例えば、距離が30 mで温度誤差が5 °Cの場合、誤差は0.85% × 30 ≈ 0.25 mになります。Marvelmindシステムでは、システム設定で気温を設定できます。
位置測定の精度:
- Marvelmindシステムは、三辺測量アルゴリズムを用いて距離から位置を計算します。位置計算の誤差は、距離測定の誤差と、固定ビーコンとモバイルビーコンの相対的な位置関係(ジオメトリ)に関係します
- 基本的な
三辺測量の式は、次の記事に掲載されています:三辺測量(Wikipedia) - ご覧のとおり、モバイルビーコンの位置 X、Y、Z は、3台の固定ビーコンの位置から計算されます。固定ビーコンの位置は次の値で与えられます:d、i、 j。記事では、式を簡単にするため、ビーコンの1つを(0,0)の位置に移動しています。次の X と Yの式では、d と j が分母になっています。つまり、d と j, a の値が小さいと、その値のわずかな誤差が大きな位置誤差を生じる可能性があります
- 記事にあるビーコンの図をご覧ください。簡単に言えば、3台のビーコンのうち1台が他の2台を結ぶ線の近くにあると、モバイルビーコンの位置特定の誤差が大きくなるということです
例:
d= 10, i= 5, j= 0.1, r1= 7, r2= 7, r3= 4.8 とします
すると、x= 5, y= 2.4375, z = 4.25
j=0.101(誤差0.1 cm)とすると、x= 5, y= -0.06, z= 4.89
Yに大きな誤差が生じているのがわかります
Zについての別の例です。モバイルビーコンが固定ビーコンの平面に比較的近い位置にあるとします:
d= 8, i= 4, j= 6, r1= 5.02, r2= 5.02, r3= 3.01
この場合、X=4, Y= 3.01169, Z= 0.36 となります
r3= 3.0(誤差1 cm)とすると、X=4, Y= 3.016, Z= 0.44 となります。Zの誤差は約8 cmです
また、r1= 5, r2= 5, r3= 3 の場合、Zは0になります。このように、平面の近くでは、距離のわずかな変化がZの値を大きく変化させます。
精度について詳しくはこちら:絶対精度と相対精度
加速度センサーのキャリブレーション
IMU搭載ビーコンの加速度センサーをキャリブレーションするには、次の手順を行います:
- モバイルビーコンをUSBでDashboardに接続します
- ビーコンにIMUが搭載されていることを確認します。「View / Accelerometer」メニュー と 「view/gyro data」を開きます。IMUが搭載されていれば、モバイルビーコンを動かす(手で回す)と、これらのウィンドウのグラフに角速度と加速度が表示されます。
加速度とジャイロデータのウィンドウを閉じます。
キャリブレーションウィンドウを開きます:View / calibrate the accelerometer- キャリブレーションでは、X、Y、Zの3軸それぞれについて、自由落下(地球の重力)のデータを測定します。これらの計算結果から、表に「Zero」として示される補正オフセットと、「K」として示される補正係数が記憶されます
- ウィンドウ右下のスイッチは AutoFill の位置にしておきます
- キャリブレーションを開始する前に、リセットボタン(ウィンドウ上部)をクリックして、現在のキャリブレーション結果をゼロにします
キャリブレーションの手順:ビーコンを手でゆっくりと、急に動かさないように6つの姿勢に順に向け、各姿勢で1〜2秒間静止させます:
開始姿勢 – ビーコンをテーブルに置き、アンテナを上に向けます(キャリブレーション Z +)
ビーコンを裏返し、アンテナを下に向けます(キャリブレーション Z-)
ビーコンを立て、センサーRX1をテーブル側に向けます(キャリブレーション Y +)
ビーコンを立て、センサーRX3をテーブル側に向けます(キャリブレーション Y-)
ビーコンを立て、センサーRX2をテーブル側に向けます(キャリブレーション X +)。USBコネクターが邪魔にならないよう、ケーブルが下に垂れるようにビーコンをテーブルの端に置いてもかまいません
ビーコンを立て、センサーRX5をテーブル側に向けます(キャリブレーション X-)
- 各測定で、加速度センサーの読み取り値はZeroとKで補正されます。
6点(7.1 … 7.6)の測定が終わったとき、加速度センサーが正常であれば、Zeroは0に近く、Kは1に近い値になります。スクリーンショットをご覧ください。
そうならない場合は、7.1 … 7.6のいずれかの手順を抜かしていないか確認してください。 - 結果を保存するには、次をクリックします:Calibrate。
正しい
北の 方位を 得る ための 設定
場合によっては、MarvelmindシステムからのNMEA出力のために、マップの北の向きを正しく合わせる必要があります。例えば、マルチコプターに搭載したPixhawkのナビゲーションデータ源としてMarvelmindのモバイルビーコンを使用する場合、マルチコプターのヨーを正しく制御するには、正しい北の方位が必要です。Marvelmindシステムは北を自動的に判別できないため、マップを構築して固定した後に、ユーザーが補正を行う必要があります。補正方法は次の2つです:
方法1
下のスクリーンショットのように、DashboardでMarvelmindのマップを回転させます
こちらもご覧いただけます:ヘルプ動画
方法2
Pixhawk側で、Mission PlannerまたはAPM Plannerから角度補正(スクリーンショットに示した角度)を入力します
パラメーター「BCN_ORIENT_YAW」を参照してください。リンク:ArduPilot
Marvelmind API
Marvelmind APIライブラリは、Marvelmind Dashboardソフトウェアで使用されているライブラリで、ユーザーのソフトウェアにインターフェースを提供します。APIは、MS Windows向けにはダイナミックリンクライブラリ(DLL)、Linux(x86およびARMプラットフォーム)向けには共有ライブラリとして提供されます。APIはUSB(仮想シリアルポート)経由でモデムに接続し、モデムとの通信プロトコルを実装しています。
ソフトウェアパッケージには、APIライブラリに加えてCのサンプルソフトウェアも含まれています。これはAPIのテストに使用したもので、すべてのAPI関数の呼び出しを含んでいます。
このサンプルは、ユーザーのソフトウェア開発のベースとして、またAPIライブラリのインターフェース(ファイル「marvelmind_api.c」)を他のプログラミング言語に移植する際のベースとして使用できます。
詳しくは、以下のリンクをご覧ください:
- Marvelmindインターフェース(第10章)
- GitHub
動作確認済み:
1. MS Windows 10、CPU:Intel Core i5
2. Ubuntu 20.04、CPU:Intel Core i5
3. Raspbian(2018-11-13-raspbian-stretch-full)、プラットフォーム:Raspberry Pi 3 Model B+

図1. USB経由でのMarvelmind APIへの接続例
PixhawkとMarvelmindモバイルビーコンの通信
Marvelmindのモバイルビーコンは、Pixhawk(およびNMEA0183プロトコルに従ってGPSを入力するその他のハードウェアやソフトウェア)に接続できます。GPSデータは、UARTおよびUSB(仮想UART)インターフェース経由で送信できます。詳しくは、次のドキュメントをご覧ください:PixHawkとMarvelmindの統合マニュアルと MarvelmindとPX4の統合。
ロボットへの経路送信

Dashboardからロボットに経路を送信できます
こちらをご覧ください:ヘルプ動画。
- DashboardはUSB経由でモデムにリクエストを送信します。
- Dashboardでこれらのリクエストを送信する手順は、2枚目のスクリーンショットに示しています。
このリクエストの形式は、モデムプロトコルのセクション8に記載されています:
モデムは、無線でモバイルビーコンにデータを送信します。使用プロトコル:当社の独自プロトコル- モバイルビーコンは、UART経由でロボットと通信します。モバイルビーコンは、次の文書のセクション2.3.1に従ってデータを送信します:プロトコル
- ロボットは、セクション2.3に示す応答パケットでデータの受信を確認する必要があります
- ロボット側のこの通信は、当社サイトのArduinoサンプルに実装されています。プロトコルからわかるように、ロボットがウェイポイントを要求する必要はありません。Dashboardからウェイポイントが送信されると、モバイルビーコンがウェイポイントを送ってきます。ただし、ロボットは各ウェイポイントの受信を、次のパケットで確認する必要があります:
- [0x03,0x47,0x01,0x02,0x00, <チェックサム2バイト>]
ロボットBoxieについて詳しくは、Marvelmind Boxie操作マニュアルをご覧ください
経路の送信方法:
システムを良好に動作させるための最も重要な要件は、適切な超音波カバレッジを確保することです。
各センサーの超音波ビームは約90度です。その範囲外では、送信出力と感度がかなり急激に低下します。超音波センサーの左右や背面からの信号は大きく減衰します。そのため、ロボットが移動するエリアに適切な超音波カバレッジを確保することが非常に重要です。
- マップの構築中に、固定ビーコンに対して適切な超音波カバレッジを確保することも非常に重要です
- モバイルビーコン(「hedgehog」または「hedge」)は、水平に設置するように設計されています
- モバイルビーコンには、水平方向のセンサーが4つと垂直方向のセンサーが1つあり、それぞれが自分のセクターをカバーします。これらを合わせて、水平方向に360度、上半球に180度をカバーします。下半球では信号が大きく減衰するため、その領域での超音波カバレッジは期待しないでください
- 固定ビーコンがモバイルビーコンより上にある場合は、モバイルビーコンをロボット上のできるだけ高い位置に取り付けることをお勧めします。これにより、他の物体や人などによる遮蔽を最小限に抑えられます。

モバイルビーコンの適切な配置例はこちら- ビーコンは水平に、かつ固定ビーコンへの経路を遮る可能性のある他の物体よりも高い位置に設置されています
- 無線信号の強度を管理する
- どのビーコン/モデムでも、RSSI(Dashboard => 右側のメニュー)は-25 dBmを超えてはなりません。超えると、システムが誤動作するおそれがあります
- モデムとビーコンの距離は、0.5〜1 m以上離すことをお勧めします。ビーコン同士は、必要なだけ近づけて設置できます。ビーコンがモデムに極端に近い場合は、ビーコンからアンテナを外してください。受信信号強度インジケーター(RSSI)を監視してください。RSSIは-25〜-70 dBmの範囲内である必要があります。-70 dBm未満でも動作しますが、パケットロスが発生することがあります。使用する帯域はISM帯(915 MHzまたは433 MHz)で、共存するシステムが多数あるため、無線接続の品質は外部からの干渉にも左右されます。
- 設定で、デフォルトの5ではなく30〜50周期(パルス)を使用します。次を選択します:
Ultrasound settings => Number of periods - 位置推定の誤差が大きい場合(1 mを超える誤差)は、内蔵のオシロスコープ(Dashboard => View)を使用して、どの固定ビーコンが妨害を受けているかを特定します
- システムに応じて、超音波のゲインを手動で下げます
特定の
トランスデューサー の 有効化と 無効化
トラッキング精度を高め、誤信号を防ぐため、ビーコンの不要なトランスデューサー、つまり壁に向けて信号を発信して反射を引き起こすものや、モバイルビーコンが存在しない方向に向いているものは、無効にすることをお勧めします(サブマップの設定手順中は除きます。トランスデューサーの無効化は、サブマップを設定した後に始めてください)。

上の図は、Super-Beacon上の各トランスデューサーの位置を示したものです。
特定のトランスデューサーを無効化または有効化するには、下部パネルで対象のビーコンを選択するか、ビーコンをUSBでコンピューターに接続します。右上に、トランスデューサー用のパネルがあります。

トランスデューサー(TX1…TX5)を押すと、無効化/有効化を切り替えられます。デフォルトでは、すべてのトランスデューサーが有効です。
次の章では、特定のトランスデューサーを有効にした設定例を紹介します。
トランスデューサーの設定:2Dとモバイルビーコンの例


上の例では、Hedgehog 7(モバイルビーコン)がBeacon 2とBeacon 3の間でトラッキングされています。
この場合、Beacon 2のTX3とTX5は不要です。TX3はモバイルビーコンが存在しない左側に信号を発信し、TX5は天井に向けて信号を発信するため、過剰な反射が生じて精度低下の原因となるからです。
Beacon 3も同様で、TX1とTX5が不要です。TX1とTX5はそれぞれ壁と天井に向けて信号を発信し、その反射によってトラッキングが不正確になる可能性があります。
ビーコンへの給電
ビーコンの種類によって、内蔵バッテリーまたは外部USB電源で給電します。詳しくは次をご覧ください:比較表
バッテリーの持続時間は動作モードによって異なり、数日から数か月(特殊な用途ではそれ以上)になります
詳しくはこちら:ビーコンの電源オプション
電源とLED

充電状態:
- 4.1 V – 4.2 V – 完全に満充電
3.6 V – 4 V – 十分に充電済み- 3.2 V – 3.6 V – 残量がかなり少ない
- 3.2 V – 完全に放電
詳しくはこちら:ビーコンの電源オプション
ライセンス:有効化の方法
モデム用とビーコン用では、ライセンスの種類が異なりますのでご注意ください。ビーコンのライセンスを有効化する場合は、対象のビーコンをDashboardに接続し、そのビーコン用のライセンスを選択します。モデムのライセンスの場合は、モデムを接続します。
ライセンスシステムを導入しました。追加機能を注文できます。追加機能は基本のDashboardでは利用できませんが、必要に応じて簡単に購入できます。一覧は次のページでご覧いただけます:jp.marvelmind.com -> 製品
注文方法:
次へ移動します:jp.marvelmind.com -> 製品- 必要な機能を選択します(例:MMSW0001:100 Hz NMEA0183)

- 注文します。
- 機能の代金を支払います(PayPalまたはその他の方法)。
- デバイスのCPU IDを指定してDashboardから機能を注文するか、デバイスのCPU IDをメールでお送りください:
Dashboard SWを開きます
ライセンスを注文するデバイスを、USBでDashboardに接続します
「Licenses → View/activate licenses」を開きます
購入したライセンスを選択します。
「Order licenses」を押します。
Dashboardがテキストを生成します
生成されたテキストを次のアドレスに送信します:info@marvelmind.com
当社でライセンスキーを生成し、メールでお送りします
ライセンスキーを、Dashboard/Licensesフォルダーに置きます:
デバイスをUSBでDashboardに接続します
次へ移動します:Licenses → View/activate licenses
「Open license key」を選択します
ライセンスファイルを選択します(複数のデバイスのライセンスがある場合は、CPU IDをよく確認してください)
Dashboardで機能が有効になります。
ドローン向け100 Hz NMEA0183
この機能を使用するには、次が必要です:MMSW0001 ライセンス。
Beacon HW v4.9-IMUでのみ動作します。
超音波 + IMUフュージョンに基づき、100 Hzの更新レートでNMEA0183形式の座標を出力します。ドローン向けの超高速GPSのエミュレーションです。
説明:
- 屋内「GPS」システムの通常の位置更新は超音波のみに基づいており、更新レートはシステムあたり通常4〜16 Hzです。超音波 + IMUフュージョンのデータも利用できますが、Marvelmindの内部形式であるため、PixHawkやArdupilotなど、NMEA0183(GPSのネイティブ形式)に対応するデバイスでは通常そのままでは受け付けられません
- この機能は、100 Hzの更新レートで出力される超音波 + IMUフュージョンの位置データをNMEA0183に変換し、超高速のGPS信号をエミュレートします
- この機能は、Beacon HW v4.9-IMUでのみ動作します。将来的にはSuper-BeaconやIndustrial Super-Beaconへの対応も考えられますが、具体的なロードマップはまだ決まっていません
NMEA0183
で $GPHDT 方 位パケットを 取得する
この機能を使用するには、次が必要です:MMSW0002 ライセンス。
この機能により、NMEA0183で$GPHDTパケット(方位)を取得できます。
位置+方向のためのペアードビーコン構成で動作します。詳しくは次をご覧ください:ペアードビーコンの章。
動画:
対応デバイス:
- Super-Beacon
- Beacon Mini-RX
- Industrial Super-Beacon
- Beacon Industrial-RX
PX4
向け UBX (u-blox) プロトコル
この機能を使用するには、次が必要です:MMSW0003 ライセンス。
この機能により、モバイルSuper-BeaconからUBX(u-blox)プロトコルでデータを出力できます。PX4スタックを搭載したPixHawkで使用します。また、屋内では機能しないことがあるu-bloxコンパスを、ペアードビーコンからの信号で置き換えることもできます。PixHawkは、I2C経由でu-bloxコンパスから方位データを受け取っているものとして動作します。
次のデバイスでのみ動作します:Super-Beacon。
詳しくは、ペアードビーコン章をご参照ください。
動画:
リンク:
- PixHawkとMarvelmindモバイルビーコンの通信
- ドローン
Advanced SW Pack
(拡張 ソフトウェアパック)
MMSW0005 – Marvelmind SWの中でも重要なライセンスの1つです。
詳しくはこちら:SW Pack 7.0/7.1 リリースノート
以前のバージョンのSW(7.200より前)では、ライセンスを有効化すると、SWのバージョンが7.0xxから7.1xxに変わりました。
バージョン7.200以降では、有効化されたライセンスはDashboardに「L」と表示されます
すべてのデバイスでライセンスMMSW0005が有効化されている場合、Dashboardのウィンドウタイトルで、Dashboardのバージョンの横に「L」と表示されます:

システム内の1台以上のビーコンでライセンスが有効化されていない場合は、右側の情報ウィンドウにその旨が表示されます:

また、ライセンスが有効化された各ビーコンのファームウェアバージョンの横に「L」が表示されます:

ジオフェンスアラーム
SWライセンス MMSW0006 は、ジオフェンスゾーン違反用の専用ピンのサポートを有効にします。プロトコルで位置データのストリームを読み取る代わりに、ジオフェンスゾーンのルールに違反したとき、Super-Beaconの4X4コネクターのピン、モデムのピン、またはMini-RXの内部ピンを、タイムリセットのたびに自動的に「0」または「1」に切り替えられるようになりました。
対応ハードウェア:
- Super-Beacon
- Modem HW v5.1
- Mini-RX
この機能を使用するには、以下の手順に従ってください:
- 次の図に従って、アラームをデバイスに接続します:
Super-Beaconのジオフェンス用ピン配置図(ライセンスを有効化すると、SPIは使用できなくなります):
Modem HW v5.1のジオフェンス用ピン配置図:
Mini-RXのジオフェンス用ピン配置図:
Dashboardまたは無線でビーコンに接続し、設定バーの「Interfaces」を展開します:- 「Alarm pin function」パラメーターをオンにします:

- 下の表に従って、必要なアラームピンモードを選択します:

|
|
|
|
|
|
|
|
|
- ジオフェンスアラームの設定は完了です。
サブマップアイランド
機能
サブマップアイランド機能を使用するには、ライセンスMMSW0007 と、バージョン7.200以降のMarvelmind SWが必要です。
この機能により、モバイルビーコンごとに別々のサブマップを使用できます。
設定方法(2つのサブマップ、4台の固定ビーコン、2台のモバイルビーコンによる例):
4台の固定ビーコンをすべて起動します(ビーコンを左クリック):
2台をSubmap0に残し、残りの2台をSubmap1に移動します。これで2つの独立したサブマップができます。
サブマップを自由に移動します。サブマップを回転させるには、CTRLを押しながらマウスホイールを回します。
モバイルビーコンを起動します。マップ上に表示されます。- ライセンスが正しく有効化されていれば、モデムを選択した状態で「islands」モードを選択し、モバイルビーコンをサブマップに割り当てられます。
「Submaps islands」を有効にします。
「Submaps Islands」モードが有効な場合、ビーコンごとにサブマップを選択できます。
これで、モバイルビーコン12はSubmap 1で、モバイルビーコン9はSubmap 0で動作します。
各サブマップを固定し、マップを固定します。- サブマップアイランド機能の設定は完了です。
全
モバイルビーコン の 毎サ イクル更新
「All hedgehogs update every cycle」機能を使用するには、ライセンス MMSW0004(MF NIA)と MMSW0008、およびバージョン7.200以降のMarvelmind SWが必要です。
この機能は、MF NIAですべてのモバイルビーコンに同時に発信させます(互いに干渉しないことがわかっている場合に、更新レートを上げるため)。
使用方法:

- モデムを選択します:

設定バーで「All hedgehogs update every cycle」を有効にします。機能がオフの場合は「disabled」を左クリックします- これで、すべてのモバイルビーコンが毎サイクル更新されます。
超
音波 + IMU センサーフュージョン
この機能を使用するには、次が必要です:MMSW0009 ライセンス。
屋内測位システムやGPSの一般的な位置更新レートは約8〜16 Hzで、ほとんどの産業用途には十分ですが、すべての用途に十分というわけではありません。
位置更新レートを100 Hz以上に高める実用的な方法は、IMUと超音波のセンサーフュージョンを使用することです。これは、両方のデータソースの長所、つまりIMUの非常に速い更新レートと堅牢性、そして超音波測位システムの絶対座標とドリフトのなさを組み合わせたものです。
センサーフュージョンを用いた高速屋内測位システムの代表的な用途:
- 高速で移動する物体:カートや動きの速い産業機械
- 高速スポーツ:ハーフパイプのスキージャンプ、屋内バイクパーク、BMXコース、スケートパークなど
詳細情報:
現在、テスト済みでサポートされているのはIAのみです。NIAとMF NIAへの対応は今後予定されています。また、テスト済みでサポートされているハードウェアはSuper-BeaconとModem HW v5.1で、その他のハードウェアはご要望に応じて対応できる場合があります。
無線の代わりにRS485
この機能を使用するには、次が必要です:MMSW0010 ライセンス。
この機能により、ISM帯の無線の代わりにRS485有線インターフェースを使って、Super-Modemと固定設置のIndustrialビーコンを接続できます。無線接続が利用できない場合、干渉を受けやすい場合、または無線を使わずに秘匿する必要がある場合に有効です。
注:RS485モードを有効にするには、Dashboardでデバイスを選択して設定を開き、「Configuration → Communication → RS485 Instead of Radio」を選択します。詳しくは、MMSW0010 のライセンスページをご覧ください。
対応デバイス:

手動距離測定用API
この機能を使用するには、次が必要です:MMSW0011 ライセンス。
この機能により、APIコマンドを使って、ビーコン間の距離を手動で測定できます。
システムの通常の使用では、動作は次の2つのモードに分かれています:
- 固定ビーコンのマップを構築する
- 固定ビーコンのマップを使って、モバイルビーコンの位置を測定する
モード1では、システムが自動的かつ継続的に距離テーブル(サブマップ内の固定ビーコン間)を構築します。これは、ユーザーがサブマップを固定するか、距離テーブルの距離が正しいことを確認して確定するまで続きます。
手動距離測定用APIを使うと、システム内のビーコンと他の任意のビーコンとの間で、手動で測定ができます。この機能では、サブマップはもう存在しないことを前提としています。任意のビーコンから任意のビーコンまでの距離を測定できます。
対応デバイス:
- Super-Beacon
- Industrial Super-Beacon-Plastic
- Beacon Industrial-RX
- Beacon Mini-RX
- Modem HW v5.1
- Super-Modem
位置更新
レート の ブースト
この機能を使用するには、次が必要です:MMSW0012 ライセンス。
この機能は、位置更新の間隔を最適化(最小化)します。その結果、位置更新レートが20〜100%向上します。向上の幅は初期構成によって異なります:Marvelmind屋内測位システムの位置更新レートとユーザーデータ転送レートの表。
これは、通常は高度なテレメトリーとデータ転送に使われるタイムスロットをなくすことで実現しています。そのため、高度なテレメトリー(例えば、マップを固定した後に新しいビーコンを起動するなど)やユーザーペイロードのデータ転送は利用できません。マップを固定した後は、構成を変更できません。その代わり、より高い位置更新レートを実現できます。
この機能とあわせて他の推奨事項もすべて実施すると、40 Hz以上の高い位置更新レートを小さなサブマップで実現できます。
詳しくは次をご覧ください:
対応デバイス:
- Super-Beacon
- Industrial Super-Beacon-Plastic
- Beacon Industrial-RX
- Beacon Mini-RX
- Modem HW v5.1
- Super-Modem
対応アーキテクチャ:
この機能を使用するには、次が必要です:MMSW0013 ライセンス。
この機能により、モバイルビーコンをバーチャルペンとして使い、ディスプレイやプロジェクターに軌跡を描くことができます。モバイルビーコンを約±90°回すと、消去したり、軌跡を残さずに移動したりできます。
対応デバイス:
- Super-Beacon
- Industrial Super-Beacon-Plastic
- Beacon Industrial-RX
- Beacon Mini-RX
- Omni-Microphone-IP67
- External Microphone-IP67
- Modem HW v5.1
- Super-Modem
対応アーキテクチャ:
推奨構成:
インフラとして:
- 2 x Super-Beacon:周波数の異なるもの(例:31 kHzと45 kHz)を、スクリーン上方の壁に設置
- 1 x Modem HW v5.1:Dashboardまたはコンピューターに接続するコントローラーとして
「バーチャルペン」として:
- 1 x Super-Beacon + Omni-Microphone-IP67(はんだ付け不要)または
- 1 x Super-Beacon + External Microphone-IP67(はんだ付けが必要)または
- 1 x Mini-RX + Omni-Microphone-IP67(はんだ付けが必要)または
- 1 x Mini-RX + External Microphone-IP67(はんだ付けが必要)
なお、External Microphone-IP67 または Omni-Microphone-IP67 が「ペン先」となり、簡単に描画できます。
次の機能との併用をお勧めします:位置更新レートのブースト(更新レートをできるだけ高く、レイテンシをできるだけ低くして、快適に描画するため)。
詳しくは次をご覧ください:
- 位置更新レートを上げ、レイテンシを下げるには?
- Marvelmind屋内測位システムの位置更新レートとユーザーデータ転送レートの表
UDP経由の
Marvelmind API
この機能を使用するには、次が必要です:MMSW0014 ライセンス。
Super-Modemは、UDP経由のMarvelmind APIにも対応しています。将来的には、Dashboard経由で、システム全体をTCPまたはUDPで利用できるようになる予定です。
こちらからMarvelmind APIの章をご覧いただけます。

詳しい手順はこちら(第10章)
サブマップの自動セルフキャリブレーション
この機能には、ライセンス MMSW0015 が必要です。
サブマップは、そのビーコン間の距離を定期的に測定し、ユーザーが手動で入力した基準距離と比較して、キャリブレーション係数を算出します。この係数は、そのサブマップおよび他のサブマップでのトラッキングに使用できます。
基準サブマップで得られた係数は、より正確なトラッキングのために他のサブマップへ送信されます。複数の基準サブマップの間で温度が異なる場合などに備えて、基準サブマップは必要なだけ設定できます。基準でないサブマップは、任意の基準サブマップを参照できます。
また、セルフキャリブレーションの間隔も調整できます。値を大きくすると係数の調整頻度が下がり、逆に値を小さくすると調整頻度が上がりますが、システムの負荷も大きくなります。

図4. 基準サブマップ3に基づく絶対キャリブレーション

図1. 基準サブマップ0に基づく絶対キャリブレーション
この機能を有効にする手順は以下のとおりです:
モデムで MMSW0015 ライセンスを有効化します(サブマップごとに1つ)
基準サブマップを選択し、「Self-calibration」を有効にします
基準サブマップでは、「Get calibration from submap」の値を、そのサブマップ自身の番号にします(例:基準サブマップの番号が0なら、「Get calibration from submap」= 0)
必要に応じて「Self-calibration interval」を変更します
基準サブマップ内のビーコンペア間の絶対距離(実際に測った距離)を入力します

係数が更新され、使用できる状態になります
基準でないサブマップを選択し、「Calibration source」を「from submap」に変更して、番号を基準サブマップの番号に変更します

これで、サブマップ1は基準サブマップ0の絶対距離係数を参照します。1つの基準サブマップは、いくつのサブマップからでも参照できます。
UDPストリーミング
この機能を使用するには、次が必要です:MMSW0016 ライセンス。
この機能により、データをUDPでストリーミングできます。
対応デバイス:
- Super-Modem:Super-ModemからWi-Fi経由のUDPで直接ストリーミング(ネイティブUDPストリーミング)
- Modem HW v5.1:Dashboardから任意のIPネットワーク(例:Wi-FiやEthernet)経由でストリーミング
詳細情報:
Boxieの電源を入れ、1分間待ちます
経路とポイントを設定します(Shift+マウス左ボタンのクリックでポイントを作成し、ポイントをクリックすると削除します):
適切な超音波カバレッジ
ライセンス