Moorebot Scout – As Linux as it can get! – Nicole Faerber 了解しました。以下に 全文の日本語訳 を、原文の構成を保持したまま丁寧に翻訳してお届けします。

Moorebot Scout – 可能な限り“Linuxらしい”ロボット!

最近、私は新しいおもちゃ「Moorebot Scout」を手に入れました。 Moorebot Scout は Kickstarter キャンペーンから始まりましたが、現在では Moorebot から直接、または一般的な販売店からも購入できます。私は eBay 経由でドイツの販売業者から購入しました。 Scout は手のひらより少し大きい程度で、重量はおそらく 350g くらいです。見た目は Anki の Cozmo や Vector のように可愛らしく作られているわけではありません。表情を表示するための画面はなく、Mecanum(メカナム)ホイールにより、どちらかというと「実用的」な外観です。 メカナムホイールはとてもクールで、ホイールの向きによってロボットを好きな方向に動かすことができる、とても賢い構造です!前後移動、左右旋回はもちろんですが、一番驚くべきはカニのように 真横へスライド移動 できることです!

データシート(技術仕様)

技術仕様も良い感じですが、特別珍しいものではありません。 一般的な「6 DoF IMU(6軸慣性計測ユニット)」が搭載されていますが、これは実際には 3軸加速度計+3軸ジャイロのことです。ST Microelectronics の LSM6DS3 が使われており、最近のスマートフォンにもほぼ標準的に入っているものなので、性能は想像できるでしょう。(将来バージョンでは LSM9DS1 を推奨したいですね。こちらには 3軸磁力計(コンパス)も付いています。) 少し珍しいのは TOF(Time of Flight)センサーです。これは「Scout が空中にどれだけ長く滞在できるか」を測るわけではありません(笑)。光パルスを発して反射光が戻ってくるまでの時間を測り、物体までの距離を計測するものです。これは本当にすごい! Scout に使われているのは ST Microelectronics の VL53L0X で、最大 2m までの距離を絶対値として測れます。これは、見た目は画面のように見えるカメラ窓の上に搭載されています。 カメラは最大 1080p の解像度を持ち、IR(赤外線)フィルタを無効化してナイトビジョンが使えます。カメラ下部には強力な IR LED が3つあり、暗所性能をさらに高めています。また、部屋の明るさを検知して昼モード/夜モードを切り替えるために、LITE-ON LTR-303 という光センサーもあります。 スピーカーとマイク、背面の4つのLED(バッテリーや充電状態を表示)、側面には電源ボタン+電源LED、反対側には WiFi モードスイッチとLEDがあります。 バッテリーについて言えば、Scout の大きな利点の一つです。電源セルは標準的な LiPo 18650 セルが使われています。つまり、バッテリーが消耗しても交換できますし、本体も接着ではなくネジ止めなのでアクセスしやすい構造です。

システム構成

システムは Rockchip の ARM64 SoC(正確な型番はまだ不明)により動作しています。1GB の LPDDR3 RAM と 16GB eMMC が搭載されています。CPU は 4つの ARM A7 コアで、最大 1.2GHz 動作です。WiFi は 802.11a/b/g/n のデュアルバンド(ac 非対応)。おそらく Bluetooth も入っていますが、デフォルトで無効で、まだ有効化方法は不明です。 機械構造は全体的に良く、しっかりした仕上がりですが…ホイールとギアボックスだけは問題があります。 メカナムホイールのローラーには軸とのガタがあり、ガタガタとクリック音がします。また、モーターとホイールの間のギアボックスには約 20度 のバックラッシュがあり、方向転換時にその分スリップします。これは精密な動作をほぼ不可能にします。

動作とナビゲーション

Scout はスマホアプリ(Android/iOS)から操作することを想定しています。カメラ映像のライブストリーミング、操作、巡回ルートの設定などができますが、巡回(パトロール)は大抵失敗します。 理由は「ナビゲーションの不正確さ」です。

移動距離や回転角が安定しないとナビゲーションは成立しない

例えば:
  • 2 歩前へ
  • 左に90度回転
  • 10歩進む
  • 右に45度回転
などと記録しても、動作誤差が大きければすぐ「迷子」になります。 暗闇で歩数と回転だけで部屋を歩こうとしても元の場所に戻れないのと同じです。 Scout の駆動系は不正確なので、距離や角度を基準にしたナビゲーションは不可能です。TOF センサーがあっても補正できません。 そのため Moorebot は最近、新モデルの Scout-E を発表しました。これは見た目はほとんど同じですが、メカナムホイールを「キャタピラ」に変えています。改善されるかは不明です。

カメラ+画像認識によるランドマークナビ

カメラを使い、画像認識でランドマークを手がかりにナビゲーションする方法は可能だと思います。人間も歩数ではなく、視覚的な手がかりで部屋の移動を判断します。 Scout でもこの方法は実現できるはずです。

Scout の本当の価値:内部構造の“オープンさ”

これこそが今回書いている理由です。 私は数年かけて色々なロボットをいじってきました。Nao、Anki Cozmo、Vector など。しかしこれらは内部は基本「ブラックボックス」でした。Vector は Android ベースの Linux ですが、ソースコードもシェルアクセスも不可能です。

しかし Scout は違う。

セットアップ後、SSH で直接ログインできるのです! パスワードは linaro
$ ssh linaro@linaro-alip
linaro@linaro-alip's password:
Linux linaro-alip 4.4.189 ...
どうでしょう?クールすぎませんか? Linux カーネル 4.4.189、ARM64。Debianベース。さらに簡単に root にもなれます。 そして apt も使える、本物の Debian ARM 環境です!

ロボットソフトウェアの本命:ROS

ロボット開発の世界では、Linux + ROS(Robot Operating System)が標準です。 Scout は 非常に低価格なのに、ROSロボットとして極めて扱いやすい プラットフォームです。
  • 多くのセンサー
  • 全方向メカナムドライブ(精度は低いが)
  • 映像と双方向音声
  • 価格は200ドル以下
  • SSHロック解除不要
  • Debian + ROS + OpenCV が標準搭載
これは教育・研究用途として理想的です。

プログラミング開始:ROS と Python

アプリ内に簡易的な Scratch がありますが、限界があります。 本気で開発したいなら ROS を使います。 ROS ではプログラムは「ノード」と「メッセージ」で構成されます。 例:PC の Python ノードから Scout の /cmd_vel トピックへ速度指令を送ると動きます。 PC 側では:
sudo apt install python3-rospy
export ROS_MASTER_URI=http://linaro-alip:11311
Scout に転送する必要すらありません。すべて PC からネットワーク越しに動かせます。 著者は PS3 ジョイコンで動かせる完全な Python3 コードも公開しています: https://github.com/nica-f/Scout-Python-JS-Move さらに C/C++ のネイティブ開発用にも公式の OSS リポジトリがあります: https://github.com/Pilot-Labs-Dev/Scout-open-source

総評(現時点)

Scout は Cozmo や Vector のような可愛さはありません。 メカナムホイールの精度も悪く、本格的なナビゲーションには限界があります。 しかし、

ソフトウェア構造が圧倒的に優れている。

  • Linux 完全アクセス
  • Debian
  • SSH / root
  • ROS / OpenCV
  • 200ドル以下
商用ロボットとしては断トツで “開発者に優しい” 構造で、ROS 学習やロボット開発のプラットフォームとして 10点満点中 9点 との評価です。