はじめまして、ソフトウェアエンジニアの齊藤です。
会社内で、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アプリを使った遠隔操縦の流れは以下のなっています。
- WebアプリからゲームパッドAPIを叩いて、コントローラの操作を読み取る
- 読み取った結果をVIM4上のROSノードに送る
- コントローラの操作を
cmd_vel
トピックに変換 - TurtleBot3 BurgerのROSパッケージが
cmd_vel
トピックを受け取ってロボットが動く
作成したデスクトップアプリはこちらです。VIM4のIPアドレスを指定したり、OAK-D-Pro Wの映像を確認できるようになっています。
動いている様子
次は、Khadas VIM4 × Luxonis OAK-D-Pro W × TurtleBot3 Burgerで自律移動を行ってみたいと思います。