初めてのGPU付き公式TurtleBot3 - Limeとそのアプリケーションについて

## TurtleBot3 Lime誕生
TurtleBot3 Lime(以下Lime)は、TurtleBot3 Waffleをベースとし、
* Raspberry PiをJetson Orin Nanoに換装
* ６自由度アーム付加
* Realsense depthカメラ付加
* 大型移動ホイールに換装
* 大容量モバイルバッテリ２個に換装
  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154442/dd7796b2-a141-4760-a82d-fc782302dcd4.png)

などを行ったモデルで、TurtleBot3 FriendsとしてOpen Roboticsより公式認定されています。今のところROBOTIS　Japanより日本限定販売です。

　このTurtleBot3モデルは、明確に、次世代ロボットの方向性を示しています。たとえば、ロボット本体側にエッジGPUやカメラがあり、この特性を最大限に活かせば、いわゆる物理AIの技術をいろいろ試すことができます。

　そのようなことを念頭におき、オープンソース団体momoi.orgが、そのアプリケーションプログラムの開発を進めています。具体的には、
* LimeSimulDemo: [Behavior Treeを用いたLimeアプリケーション例のGithub](https://github.com/momoiorg-repository/LimeSimulDemo)    
ROS2 Humble ベースのGazebo Classicによるシミュレーションなので、試すのに実機は不要です。また、ほぼそのまま実機にも適用可能です。
* NVIDIA Isaac Sim上でLimeを動かすためのdocker定義(近く公開予定)  
LimeをOmniverseによるデジタルツイン中で動かすためのUSD定義を含むdocker定義リポジトリLimeIsaacDemoを準備中です。近く公開します。実機は不要ですが、PC側にそれなりのグラボが必要になります。
* Isaac ROSを用いたLimeアプリケーション例（予定）  
上記のLimeSimulDemoの枠組みに、Isaac ROSにある画像処理等に関する深層学習アルゴリズムを付加したサンプルコードを開発中です。

があります。

## LimeSimulDemo概要
　LimeSimulDemoは、Behavior Treeに基づく、Limeのようなモバイルアームの統合アプリケーションの構築例です。ここではまだ深層学習は用いていませんが、Behavior Treeと、カメラを用いたビジュアルフィードバックによる、pick & place等を実装しています。また、必要に応じて、深層学習アルゴリズムを簡単に導入できるようにしています。

　全体は、一つのdockerに統合されており、実行は簡単です。詳細は、[momoi.orgのlime説明サイト](https://momoi.org/?yada_wiki=limedemo) を御覧ください。

　アプリケーションは、Pythonで書かれており、momoi.orgで開発したライブラリを使用して汎用的な作りになっています。
* Pytwbライブラリ  
ROSのモジュール管理や、Behavior Tree定義のXMLパーサ等を含んでいます。
* Ros_actorライブラリ  
スレッド割当を自動的に行うことにより、非同期処理を簡単に記述できるようにするライブラリです。ROS通信の仮想化も行います。

これらを用い、サンプルのBehavior Treeが実装されています。コーラ缶の探索(bt_search)、接近とピッキング(bt_catch)等が含まれています。

## LimeSimulDemoの今後
LimeSimulDemoは、さらに、いろいろな深層学習アルゴリズムを別のdockerで実行し、ROS通信を行うことにより、Behavior Treeレベルで統合できるようになっています。特に、Isaac ROSの利用例を公開する予定です。

　現在、Isaac Simに関する、Limeベースのチュートリアルを準備中です。これにともなって、LimeをOmniverse中で動かすためのUSD定義も行っており、Omniverseが実現するデジタルツイン環境中でも動くようになっています。これを用いることにより、さらに、Isaac Labのサンプルも動くようにする予定です。

Isaac Simによるシミュレーションによって生成される画像は驚くほど高精度なので、そのまま深層学習の学習データとして使用し、後に実機で検証を行うような使い方も可能です。

このように、LimeSimulDemoのプログラム構造は、Limeに限らず、いろいろなROSベースのロボットに物理AIを適用する際の基盤として利用可能です。momoi.orgでは、Limeを用い、このような物理AI開発エコシステム全体の検証を行います。

## 利用例
Limeは、本年度後期から、複数大学で講義や演習に用いられる予定です。実機とIsaac Simによるシミュレーションの双方の形式で用いることができ、さらに深層学習アルゴリズムを簡単に追加できるので、物理AIの開発、検証に適しています。

LimeSimulDemoはJetson Orin AGXが付加されたHSRロボットにも移植されており、すでに、RoboCupの東京工科大学チームでisaac ROSとともに使用されています。

また、Limeは、センサ利用の検証等、ロボットハードウェア開発基盤としても利用できます。たとえば、グリッパに感圧センサを付けて実用的な把持機構の実現の検討にも用いることができます。

これらの実施を支援する有償の講習プログラムも外部企業から提供される予定です。

## momoi.orgについて
　momoi.orgは、おもに、ロボットのソフトウェアを開発することを目的としたオープンソース団体です。今回ご紹介したLime関連の活動だけでなく、複数のロボットを用い、大学や企業とも連携して、物理AIの実装を進めます。アルゴリズムの開発や公開の基盤として利用するのに最適だと思います。興味のある方はぜひ活動にご参加ください。

　具体的には、今後の活動として、以下のものを含む、いろいろなものが計画されています。
* Limeを用いた事例の開発：　物理AIだけでなく、センサ活用等も試みます
* LeRobot関連活動：　自分で作れる双腕ロボットの試行とアプリ開発を行います
* デジタルツイン活用：　ロボットの活動環境自体の構築例として、仮想工場を開発しています。近く、[NVIDIA学生アンバサダーのワークショップイベント](https://docs.google.com/forms/d/e/1FAIpQLSfelRry7uV09gVjUXO5ozwFYi5MAJQ9VQnztMPfljy6ILU-TA/viewform)で詳細を発表します

## 関連リンク
* [ROBOTIS e-Shop](https://e-shop.robotis.co.jp/product.php?id=531)  
  TurtleBot3 Limeの販売ページです
* [momoi.orgサイト](https://momoi.org/)  
* [Lime関連講習](https://i4labo.jp/services/)  
  株式会社i4laboによるLime関連講習（有償）紹介ページです