MoveIt WorkShop 2019に参加しました。

こんにちはShotaです。この記事はROS 2 Advent Calendar 2019の16日目の記事です。

ROS2 Advent Calendar 2019

お仕事でROSCon2019に参加し、続けてMoveIt Workshopにも参加しました。そこで得た情報を少しでも共有できればいいなと思います。

MoveIt2の話が(チョット)入ってるのでROS2 Advent Calendarに投稿してます。

ROSCon 2019って何?

ROSConは世界中のROS Developer(ROSを使う人とROS自体を開発する人)が集まるカンファレンスです。ROSに関わる技術発表会でもあり交流会でもあります。今年は10/31と11/1にマカオで開催されました。

ROSCon 2019 MACAU

ROSCon 2019
ROSCon 2019 MACAU

弊社はROSCon 2019のスポンサーです。企業展示ブースでは弊社の製品を展示していました。

アールティの出展ブース

ROSCon 2019がどんな様子だったのかは、ROS Japan ユーザーグループのROSCon2019参加報告会の資料をご覧ください。私の発表資料も投稿してあります。

ROS Japan UG #33 ROSCon2019参加報告会 [東京会場] – 資料一覧

ROS Japan UG #33 ROSCon2019参加報告会 [関西会場] – 資料一覧

MoveIt Workshopって何?

ROSCon2019 の次の日に開催されたMoveItの開発者とユーザが集まるワークショップです。

MoveItって何?

MoveIt Logo
https://github.com/ros-planning/moveit

MoveItはモーションプランニングを始めとした、ロボットを動かすための様々な機能を提供するフレームワークです。ROSで最も有名なパッケージかもしれません。

公式ページでは以下の機能が特徴として挙げられています。

  • Motion Planning
  • Manipulation
  • Inverse Kinematics
  • Control
  • 3D Perception
  • Collision Checking

弊社が販売しているアームロボットCRANE-X7ROSパッケージもMoveItを使っています。

https://github.com/rt-net/crane_x7_ros

CRANE-X7でMoveItを使った例

改めて、MoveIt Workshopって何?

MoveIt Workshopは今年初開催されたMoveIt開発者とユーザが集まるワークショップです。MoveItに関わるプレゼンやディスカッションが行われました。

MoveIt Workshop 2019 Macau

MoveItについては、ROS2対応(MoveIt2)がどのくらい進んでいるのか?MoveIt2にもう移行できるのか?と気になる方が多いと思います。私もCRANE-X7のROS2対応を考えると、MoveIt2のことが気になります。MoveIt2について何か情報を得られないかと思い、このワークショップに参加しました。(ROS 2 Advent Calendarに投稿した理由はMoveIt2について若干触れるからです。)

それでは、参加報告です。自分が気になったところを紹介します。

本題:MoveIt Workshop 参加報告

会場の様子

会場案内板

MoveIt WorkshopはROSConとは別の参加枠なので、参加申込みと参加費の支払いが必要でした。ROSConの次の日に開催されました。30人くらい参加していたと思います。ただ、途中で帰る人も多かったです(最終的に20人くらいになりました)。おそらく、ROSConへ参加する日程しか確保できなかったのでしょう。私はROSCon後も仕事があったので、参加できてラッキーでした。

WorkShop会場の様子

会場の後ろにはビデオカメラが設置されていました。発表資料と動画は後ほど公開すると聞きましたが、まだ連絡は来ていません。。。(聞き間違いだったかもしれません)

発表一覧

ワークショップは9:00 ~ 17:00 のフルタイムです。裏面にあるようにAWSPickNikがスポンサーです。

発表一覧(表)
発表一覧(裏)

Welcome

発表者はPickNikのDaveさん

  • MoveItは8歳です
    • (え?ほんとに?調べてみた↓)
$ git clone https://github.com/ros-planning/moveit && cd moveit
$ git log --reverse
moveitの最初のコミット
2011年!!!

MoveIt 2.0 Progress and Roadmap

発表者はPickNikのMikeさん

MoveIt2のロードマップ

moveit2 – GitHub

  • 現時点では、MoveIt2のアルファ版がリリースされている
  • ベータ版は2020年のQ1リリースを目指している
  • ロードマップ1 – Straight Port to ROS2
    • 今はここにいる
    • まずはROS2で動くようにしよう、という感じ
  • ロードマップ2 – Realtime Support
    • センサー入力による閉ループ駆動
      • 例:Visual servo
    • Global plannerとLocal plannerを切り分ける
      • Global(例:衝突回避の計算)は30Hz周期で駆動
      • Local(例:IKの計算)は300Hz周期で駆動
    • コントローラにゼロメモリコピーの仕組みを実装
  • ロードマップ3 – Fully Leverage ROS2
    • ROS2 のライフサイクルの機能を使う
    • pluginlibをROS 2のcomponentsに移行する

Constrained and Optimal Planning Using the OMPL

発表者はPickNikのMarkさん

  • OMPLはMotion Planning Library
    • MoveItのモーションプランニングに使われている
    • MoveItでは、プラグインとして他のライブラリをプランニングに使うこともできる
  • MoveItよりユーザ数が多い
  • プランナーをベンチマークできる環境がある

Amazon RoboMaker

発表者はAmazonのAdamさん

Machine assembly with MoveIt – What is Hard for Newcomers and Non-Expert Users?

発表者はOMRON SINIC XのFelixさん

  • Amazon Robotics challenge とWRSの競技の紹介
  • WRSについては製品組み立てチャレンジを紹介
  • WRSで使用したソースコードを公開

The Industrial Trajectory Generation and Python API of pilz_industrial_motion

発表者はPilzのChristianさん

Build Advanced Industrial Robot Usages with Intel OpenVINO and MoveIt

発表者はIntelのYuさん

Panel Discussion About MoveIt Ideal User

議長と4人の登壇者がディスカッションしました

  • Rob Coleman – PickNik Robotics(議長)
  • Gijs van der Hoorn – TU Delft (登壇者)
  • Michael Ferguson – Botnuvo Inc. (登壇者)
  • Mark Moll – PickNik Robotics (登壇者)
  • Kei Okada – University of Tokyo (登壇者)

↓以下議題(一部抜粋)

  • Moveitはどんなユーザに使われるべき?
    • Everyone
  • どのようにMoveItを変えていくべき?
    • 安定性の向上
    • APIを維持して安定性と新機能のバランスを取る
    • ユーザの初体験を簡単に
  • アカデミア、インダストリアルのバランスをどうとるべき?
    • MoveitCommanderはビギナーに適しているので、このAPIは残すべき
  • Moveitのこれからは、何にフォーカスすべき?
    • メンテナンスを続けるべき
    • モーションプランの可視化
    • 深層学習と制御

Sticky-note session

突然のSticky-Note Session

「MoveItに対する意見や提案を付箋に書いて、それを集めてグループ分けして、グループごとにディスカッションしましょう」と、突然始まりました。一人一人に付箋が配られ、MoveItに対する思いを書き始めます。

付箋に記入したらそれを壁に貼ります。各々好きなところに貼ります。

壁に付箋を貼る参加者

貼り終わったら運営(PickNik)の人たちが付箋をグループ分けします。最終的に4つのグループに別れました。グループができたら参加者は好きなグループに集まり、そこでディスカッションをします。各グループに運営の人が配置されているので、その人がディスカッションをまとめてくれました。

Core Planning
API / High Level Interface
Applications / Industry / Specialties
Documentation / usability

私はDocumentation / usability のグループに参加しました。このグループにはこんな付箋が貼ってありました。

  • MGI (Move Group Interface) のソースコード長すぎ!
  • Cartesian planは静かに落ちる
  • LIN, PTP, CIRCをMGIに追加しよう
  • エンドエフェクタ / グリッパの定義が不明瞭

中でも私が気に入った付箋がこちらです。

URDF / xacro is not very nice to write

ディスカッションのなかで、「MoveItを理解する上でいいサンプルがほしいよね」という話題になりました。そこで私はCRANE-X7 ROSパッケージのサンプルコードページを紹介しました。(これは宣伝です

CRANE-X7 ROS サンプルコード集

ステップ バイ ステップで使い方を習得できるのがいいね」とPickNikの人に褒めてもらいました。やった。

ディスカッションが終わると、運営の人たちが各グループの意見をまとめて、Sticky-Note Sessionが終わりました。

まとめ

長くなりましたが、発表内容をかなり省略しています。プレゼン資料が公開されるといいですね!

まとめです。

  • MoveItに新機能が追加された
  • MoveIt2 は来年の2月にベータ版がでる!予定!
  • 世の中にはMoveItを応用したパッケージがたくさんある