こんにちはShotaです。この記事はROS 2 Advent Calendar 2019の16日目の記事です。
お仕事でROSCon2019に参加し、続けてMoveIt Workshopにも参加しました。そこで得た情報を少しでも共有できればいいなと思います。
MoveIt2の話が(チョット)入ってるのでROS2 Advent Calendarに投稿してます。
- ROSCon 2019って何?
- MoveIt Workshopって何?
- 本題:MoveIt Workshop 参加報告
- 会場の様子
- 発表一覧
- Welcome
- MoveIt 2.0 Progress and Roadmap
- Constrained and Optimal Planning Using the OMPL
- Amazon RoboMaker
- Machine assembly with MoveIt – What is Hard for Newcomers and Non-Expert Users?
- The Industrial Trajectory Generation and Python API of pilz_industrial_motion
- Build Advanced Industrial Robot Usages with Intel OpenVINO and MoveIt
- Panel Discussion About MoveIt Ideal User
- まとめ
ROSCon 2019って何?
ROSConは世界中のROS Developer(ROSを使う人とROS自体を開発する人)が集まるカンファレンスです。ROSに関わる技術発表会でもあり交流会でもあります。今年は10/31と11/1にマカオで開催されました。
弊社はROSCon 2019のスポンサーです。企業展示ブースでは弊社の製品を展示していました。
ROSCon 2019がどんな様子だったのかは、ROS Japan ユーザーグループのROSCon2019参加報告会の資料をご覧ください。私の発表資料も投稿してあります。
ROS Japan UG #33 ROSCon2019参加報告会 [東京会場] – 資料一覧
ROS Japan UG #33 ROSCon2019参加報告会 [関西会場] – 資料一覧
MoveIt Workshopって何?
ROSCon2019 の次の日に開催されたMoveItの開発者とユーザが集まるワークショップです。
MoveItって何?
MoveItはモーションプランニングを始めとした、ロボットを動かすための様々な機能を提供するフレームワークです。ROSで最も有名なパッケージかもしれません。
公式ページでは以下の機能が特徴として挙げられています。
- Motion Planning
- Manipulation
- Inverse Kinematics
- Control
- 3D Perception
- Collision Checking
弊社が販売しているアームロボットCRANE-X7のROSパッケージもMoveItを使っています。
改めて、MoveIt Workshopって何?
MoveIt Workshopは今年初開催されたMoveIt開発者とユーザが集まるワークショップです。MoveItに関わるプレゼンやディスカッションが行われました。
MoveItについては、ROS2対応(MoveIt2)がどのくらい進んでいるのか?MoveIt2にもう移行できるのか?と気になる方が多いと思います。私もCRANE-X7のROS2対応を考えると、MoveIt2のことが気になります。MoveIt2について何か情報を得られないかと思い、このワークショップに参加しました。(ROS 2 Advent Calendarに投稿した理由はMoveIt2について若干触れるからです。)
それでは、参加報告です。自分が気になったところを紹介します。
本題:MoveIt Workshop 参加報告
会場の様子
MoveIt WorkshopはROSConとは別の参加枠なので、参加申込みと参加費の支払いが必要でした。ROSConの次の日に開催されました。30人くらい参加していたと思います。ただ、途中で帰る人も多かったです(最終的に20人くらいになりました)。おそらく、ROSConへ参加する日程しか確保できなかったのでしょう。私はROSCon後も仕事があったので、参加できてラッキーでした。
会場の後ろにはビデオカメラが設置されていました。発表資料と動画は後ほど公開すると聞きましたが、まだ連絡は来ていません。。。(聞き間違いだったかもしれません)
発表一覧
ワークショップは9:00 ~ 17:00 のフルタイムです。裏面にあるようにAWSとPickNikがスポンサーです。
Welcome
発表者はPickNikのDaveさん
- MoveItは8歳です
- (え?ほんとに?調べてみた↓)
$ git clone https://github.com/ros-planning/moveit && cd moveit
$ git log --reverse
- melodic-develブランチよりもmasterブランチは先に進んでいる。新機能も追加されている。
- 新機能の紹介
- MoveIt!対応ロボットは126台
- https://moveit.ros.org/robots/
- 弊社のCRANE-X7、Sciurus17もMoveItに対応しています
MoveIt 2.0 Progress and Roadmap
発表者はPickNikのMikeさん
- 現時点では、MoveIt2のアルファ版がリリースされている
- ベータ版は2020年のQ1リリースを目指している
- 公式ページ下部では、Eloquent 2.1 Betaは2020年2月1日リリースと書かれている
- ロードマップ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さん
- ROSパッケージ
- https://github.com/PilzDE/pilz_industrial_motion
- MoveIt用の軌道生成パッケージ
- ROS Wiki
- 3種類の補間方法で軌道を生成できる
- LIN(線形補間), PTP, CIRC(円形補間)
- Pilz CommandPlanner
- https://github.com/PilzDE/pilz_industrial_motion/tree/melodic-devel/pilz_trajectory_generation
- 台形速度プロファイル
- 衝突チェック
- command 同士を合体する (LIN-LIN)(線形補間-線形補間)
- 使用方法(実装方法)のチュートリアル
- https://github.com/PilzDE/pilz_industrial_motion/blob/kinetic-devel/pilz_robot_programming/Readme.rst
- r.move(Ptp(goal=…)) みたいな関数で軌道上を動かせる
Build Advanced Industrial Robot Usages with Intel OpenVINO and MoveIt
発表者はIntelのYuさん
- OpenVINOとは
- OpenVINO™ ツールキット
- インテルが提供する画像処理や機械学習用のツールキット
- 把持位置を検出するソフト
- https://github.com/atenpas/gpd
- ポイントクラウドから6軸の把持姿勢を検出する
- ROS2用の把持位置検出ライブラリ
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
「MoveItに対する意見や提案を付箋に書いて、それを集めてグループ分けして、グループごとにディスカッションしましょう」と、突然始まりました。一人一人に付箋が配られ、MoveItに対する思いを書き始めます。
付箋に記入したらそれを壁に貼ります。各々好きなところに貼ります。
貼り終わったら運営(PickNik)の人たちが付箋をグループ分けします。最終的に4つのグループに別れました。グループができたら参加者は好きなグループに集まり、そこでディスカッションをします。各グループに運営の人が配置されているので、その人がディスカッションをまとめてくれました。
私はDocumentation / usability のグループに参加しました。このグループにはこんな付箋が貼ってありました。
- MGI (Move Group Interface) のソースコード長すぎ!
- Cartesian planは静かに落ちる
- LIN, PTP, CIRCをMGIに追加しよう
- エンドエフェクタ / グリッパの定義が不明瞭
中でも私が気に入った付箋がこちらです。
ディスカッションのなかで、「MoveItを理解する上でいいサンプルがほしいよね」という話題になりました。そこで私はCRANE-X7 ROSパッケージのサンプルコードページを紹介しました。(これは宣伝です)
「ステップ バイ ステップで使い方を習得できるのがいいね」とPickNikの人に褒めてもらいました。やった。
ディスカッションが終わると、運営の人たちが各グループの意見をまとめて、Sticky-Note Sessionが終わりました。
まとめ
長くなりましたが、発表内容をかなり省略しています。プレゼン資料が公開されるといいですね!
まとめです。
- MoveItに新機能が追加された
- MoveIt2 は来年の2月にベータ版がでる!予定!
- 世の中にはMoveItを応用したパッケージがたくさんある