UWBボード4枚で卓上ロボットの位置を数cmの誤差で測るソフト

卓上のフィールドを動く小型ロボットの位置を、UWB(超広帯域無線と呼ばれる、電波が届くまでの時間から距離を測れる無線方式)で測るソフトが「UWB Localisation for Tabletop Robots」として公開された。作ったのはHetao Lu氏で、大学の工学系の卒業研究として開発した。同氏はREADMEで、小型ロボットが自律して動き、ほかのロボットを追いかけたり避けたりするには、確かな位置が必要だと説明している。

使うのは、Ai-Thinkerの開発ボード「BU03」4枚だ。同氏は1枚を位置を知りたいタグにし、残る3枚を基準点として一辺86.6cmの正三角形に置く。ボードのファームウェアには手を加えず、メーカーのものをそのまま使っている。基準点の1枚をUSBでPCにつなぎ、PC側のPythonプログラムが3つの距離から位置を計算して、ブラウザーに表示する。

同氏によると、初期の試験では、短い距離で測った生の距離には偏りがあり、受信が途切れることもあった。そこで同氏は記録したデータを使って処理を段階的に作り込んだ。処理は急な飛び値を保留する距離のフィルター、基準点ごとの補正、位置の計算、動きの追跡、表示用の平滑化の5段階からなる。基準点ごとの補正には傾きの異なる2本の直線をつないだ式を当てた。同氏は、位置の計算と追跡の方法について、GitHubで公開されているDipFlip氏の実装を参考にしたと明記している。

プログラムは条件を満たした位置だけを画面に出す。計算した位置と測った距離との食い違いが許容範囲に収まったときに表示を更新し、更新は毎秒5回を基準にしている。元になった測定が0.4秒より古くなった位置は、画面から消す。

直径1mの円形の配置で9カ所にタグを置いた試験では、静止時の位置の誤差(二乗平均平方根誤差)は1.55〜6.79cmだった。タグを手に持って基準点の近くから中心へ動かした試験では、測定の更新1回分(フレーム)のうち78.32%で位置を表示できた。移動の計測はロボットに載せず、手に持ったタグで行っている。

リポジトリには、実験で記録した20本のデータが、ボードから受け取ったバイト列のまま収められている。ハードウェアがなくても、記録を再生して同じ処理を確かめられる。動かすにはPython 3.11以降が必要で、同氏はコードとデータをMITライセンスで公開している。

関連情報

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!

最新記事

YouTube / PodCast

【PR】読んで役立つ注目記事

目次