Momoi org ROS関連プロジェクト

本プロジェクトの目標は、ロボットを用いた価値創造を支援することにある。そのための方策として、

  • ROSの開発環境の実現、
  • ROSロボット向きの環境認知機構の実現、
  • 関連図書の出版および教育コンテンツ公開

を行っている。

出版されたROS関連図書

ROSロボットで学ぶ次世代のIoTアーキテクチャ

(コロナ社)

オープンソースコードの開発

すでに、いくつかのソフトウェアをGitHub上で公開している。

ROSアプリケーション用ミドルウェア(GitHub: actor_demo(利用例)ros_actor(本体開発))

pytwbに続いて、ROSのアプリケーション開発を容易に行えるようにするための機構として、ros_actorミドルウェアを開発した。これは、actor likeなプログラミングモデルをPython上で実現することにより、リアルタイム処理プログラムの記述の容易化を図ったものである。

actor_demoでは、アーム付きのTurtlebotを用いて、コーラ缶の探索、ピッキング、搬送とプレース等の作業を行うサンプルアプリケーションをros_actor上で作成し、公開している。

ROS開発環境(GitHub: pytwb_tutorial(利用)pytwb (本体開発))

ROSは、ROS2の登場により、ロボット本体の開発だけでなく、その利用に焦点が移りつつある。そこでは、必ずしもROSに詳しくない、別分野の専門家がROSを利用する機会が増えてくると予想される。そのような状況に対応し、別分野の専門家を対象とし、ROSを利用したシステムの開発ターンアラウンドタイムの短縮を可能にするツールの開発を行っている。

具体的には、

    • 教育:
      少ない負担で現実的なロボット制御が行えるようにすることが重要である。
    • 研究:
      研究は、ROS自体を対象として行うのではなく、ROSをツールとして実施され、それを実行する人もROSを深く理解しているとは限らない。
    • 製品企画やソルーションにおけるプロトタイピング:
      実際の製品開発においても、特にプロトタイピングにおいて、開発のターンアラウンドタイムを短縮することは重要である。

等での利用に適したツールの開発を目的としている。

最初に開発されたのが、pytwbである。これは、Pythonベースのbehavior treeによるROSアプリケーションの開発支援を主な目的としており、docker環境とVSCodeがあればすぐにROSアプリケーションが開発できるようになる。

behavior treeは、ますます複雑になりつつあるROSアプリケーションの骨格構造をわかりやすく、提示し、開発をより容易にする効果がある。また、behaviorの単位で分割してプログラム開発を行うことにより、部品化、再利用可能性が促進される利点を持つ。

pytwbは、Webアプリケーションにおけるruby on railsのように、ROSアプリケーション開発の定型化を図れるようにすることが一つの目的である。まず、behavior treeを用いることによってアプリケーションの全体構造の規格化が図れる。さらに、behavior treeを扱いやすくするために、pytwbは以下のような機能を加える。

  • Pythonベースであっても、XMLによるbehaviro tree記述を可能にする
  • いくつかのパラメータや依存関係の設定作業を自動化する
  • 通常のビルド手順との互換性を保ちながら、明示的なビルド手順を省略できるようにする(direct run)

定型化された手順でROSアプリケーションを開発できるようにすることがプロジェクトの最終的な目的であり、pytwbはその最初のツールである。現在、さらなるツールの改良、追加を行っている。

環境認識機能基盤の実現(GitHub: vector_map)

ロボットの制御では、環境中を行動し、そこから種々の情報を収集してより高度な行動がとれるようにすることが最終的な目標となる。そのためには、収集した情報を適切に整理できる状態空間の実現が重要になる。

たとえば、ROSのナビゲーションにおいては、占有格子形式による地図が用いられている。最近では、深層学習の発展により、これに加えて、sematic SLAMに見られるような、環境中に現れた対象物に関する形状や種類に関する意味情報を収集することが行われるようになり、上位の行動プランニング等に用いられている。意味情報を集約するためは、地図に付加することが適切であるが、占有格子形式では障害物の場所を点群によって表しており、壁や領域等、環境の構造に関する情報を欠いているために、情報を付与することが困難である。

そこで、本プロジェクトでは、情報を段階的に付与できる地図の実現を目的として、占有格子地図をさらに画像処理し、線分や部分曲線などの幾何学的な要素で地図を表現することにより、環境の構造に関する情報を保持することを可能にする機構を開発した。そこでは、部屋、通路などがPythonのオブジェクトの形式で表されるので、さらに情報を付加することが容易に行えるようになっている。

この地図機構はすでに実装されているので、今後、これに対象物に関する情報を付加して行動プランニングで利用できるようにする機構を加えてゆく予定である。

全体のデモ(GitHub: pytwb_demo)

pytwbとvector_mapを利用した、ROSアプリケーション例を作成した。複雑な行動を簡単に試せるので、学校や企業での研修に用いられている。