Khadas VIM4 × Luxonis OAK-D-Pro W × TurtleBot3 Burgerで遠隔操縦

はじめまして、ソフトウェアエンジニアの齊藤です。
会社内で、VIM4とOAK-D-Pro Wを動かしたので、TurtleBot3 Burgerと組み合わせて遠隔操縦するところまでやってみました!

簡単な機材紹介

VIM4は、Khadas Technologyが開発しているシングルボードコンピュータです。 OOWOWと呼ばれるソフトウェアが組み込まれていて、ボード単体で内蔵のeMMCにOSが書き込めるのでとても便利です。

OAK-D-Pro Wは、Luxonisが開発しているNN処理に特化したチップが載っているカメラです。 OAK-D-Pro Wには、左右にモノカメラとIR LED、中心にカラーカメラが搭載されていて、USBで接続されたPCからDepthAI APIを使用して各カメラモジュールを動かすことができます。

TurtleBot3 Burgerは、ROBOTISが開発しているオープンソースの移動ロボットプラットフォームです。 今回は、このTurtleBot3 Burgerを少し改造して、VIM4とOAK-D-Pro Wを取り付けています。

↓ 改造後のTurtleBot3 Burger

やっていること

操縦用の映像配信

OAK-D-Pro Wの各カメラの映像を配信するROSノードを自前で作成しました。 また、これらの映像をWebアプリでも見れるように、web_video_serverというパッケージを使って、映像をWebアプリへストリーミングできるようにしています。

遠隔操縦

今回はROSを使う構成にしたので、VIM4上のUbuntu 20.04にROS Noeticを導入しています。 また、ROSの環境がないパソコンにコントローラを接続して、そこから遠隔操縦がしたかったので、 ゲームパッドAPIを叩いてROSに送るWebアプリを作成しました。

Webアプリの開発には、Rust製のTauriというフレームワークを使用していて、Electronのようにデスクトップアプリとして動かすことができます。 細かいところは省きますが、Webアプリを使った遠隔操縦の流れは以下のなっています。

  1. WebアプリからゲームパッドAPIを叩いて、コントローラの操作を読み取る
  2. 読み取った結果をVIM4上のROSノードに送る
  3. コントローラの操作をcmd_velトピックに変換
  4. TurtleBot3 BurgerのROSパッケージがcmd_velトピックを受け取ってロボットが動く

作成したデスクトップアプリはこちらです。VIM4のIPアドレスを指定したり、OAK-D-Pro Wの映像を確認できるようになっています。

動いている様子

次は、Khadas VIM4 × Luxonis OAK-D-Pro W × TurtleBot3 Burgerで自律移動を行ってみたいと思います。