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で自律移動を行ってみたいと思います。

このブログについて

Work Robotics Tech Blogをご覧いただきありがとうございます。

はじめに

 このブログは 株式会社ワークロボティクス (以下、弊社)の運営する技術関連の情報共有を目的としたブログです。 弊社は主に、ロボット本体・関連部品・ソフトウェアの開発を行っており、 人とともに働くロボットの社会実装を目標に、それらの技術を次世代に伝えることで、社会をより良くし続けたいと考えています。 (詳しくは弊社ホームページをご覧ください)

このブログの目的

 業務で得られた知見を発信する場として使用したいと考えております。 弊社では、ロボットのハードウェア・ソフトウェア両方を開発しており、特にソフトウェアに関してはROS(Robot Operating System)を活用した開発やOSSオープンソースソフトウェア)化を積極的に取り組んでおります。 それらの開発で得られた知見の中には、社内の人だけではなく、世の中に公開することで誰かの役に立つ情報も多くあります。 このブログは、そのような情報を公開し、同じような問題で悩んでいる方の助けになるような存在になることを目指していきます。

さいごに

積極的に技術情報を発信していきたいと思いますので、今後ともよろしくお願いいたします。