【レポート】ロボット開発の変化 ROS2への移行か、ROS1のままか?#OPN201 #reinvent

本記事は現地時間2019/12/2-6で行われてたre:Invent 2019のセッション「OPN201 - Change is coming to robotics development: The shift to ROS 2」のレポートとなります。
2019.12.30

こんにちはCX事業本部のさかじです。 本記事は現地時間2019/12/2-6で行われてたre:Invent 2019のセッション「OPN201 - Change is coming to robotics development: The shift to ROS 2」のレポートとなります。

OPN201 - Change is coming to robotics development: The shift to ROS 2

As more robots move from research and academia into real production use, we’ve seen an accelerated adoption of ROS 2 (Robot Operating System). What’s driving this shift from ROS 1 to ROS 2? What was missing from ROS 1? What makes ROS 2 more commercially capable? In this session, you learn how the design, development, and features of ROS 2 change the landscape for all robot lovers.

より多くのロボットが研究や学界から実際の生産用途に移行するにつれて、ROS 2(Robot Operating System)の採用が加速していることがわかりました。 ROS 1からROS 2へのこのシフトの原動力は何ですか? ROS 1には何が欠けていましたか? ROS 2の商用化を促進するものは何ですか? このセッションでは、ROS 2の設計、開発、機能がすべてのロボット愛好家のランドスケープをどのように変えるかを学びます。

スピーカー

  • Alejandra Olvera-Novack

Youtube

スライド

スライド

ROSとは?

Robot Operating System (ROS) とは、ロボット用のソフトウェアプラットフォームである。ROSはその名に「Operating System」を含むが、Microsoft WindowsやiOSのようなコンピュータのオペレーティングシステム (OS) ではなく、既存のOS上で動くミドルウェアやソフトウェアフレームワークの一種であり、「メタオペレーティングシステム」 (meta-operating system) とも説明される。

Wikipediaより
https://ja.wikipedia.org/wiki/Robot_Operating_System

アジェンダ

  • ROSとは?ROSは何ができるか
  • ROS1とROS2の同じこと
  • ROS2とROS2の違い
  • だれがROS2へポーティングすべきか
  • だれがROS1のままで良く、ROS2へ移行を急ぐ必要がないか
  • Rover RoboticsがROS2を移植する価値が判断した理由

はじめに

  • 介助犬(カネラ)を飼っている
  • 想像以上に大変だった
    • 旅行に行くときの荷物の用意
    • トイレの心配、特に旅先
  • カネラはいろんなことを助けてくれる
  • カネラを見ているとロボット工学を考えることがある
  • 映画のようなロボットではなく医療ロボットなど
  • ロボット工学を支援しているのはROS

ROSとは?ROSは何ができるか

  • OSとあるがミドルウェア
  • "publish/subscribeフレームワーク

ROSについて

  • publish/subscribeフレームワーク
  • オープンソース
  • 最大のエコシステム
  • 最大のアクティブなコミュニティ
  • 研究、商用で頻繁に使われている

ROS2について

  • 信頼性、セキュリティを念頭においた商用設計
  • オープンソース Apach2.0ライセンス
  • Open DDS(Data Distribution Service)準拠
  • Amazon, Intel, Bosch Microsoft, LG Electronics, Toyota Instituteなどのサポート

ROSのできること

  • Javascript, Pythonのパッケージが用意されている
  • センサー(LIDAR, depth camera)
  • アルゴリズム
  • シミュレータ
  • デバッグツール
  • ロギング、テストツール 数々のツールなどのエコシステムが用意されている

ROS1とROS2の同じこと

  • node, messages, publishers, subscribersは変更ない
  • コマンドライン、グラフィカルツールも変更なし
    • RViz
      • 3Dビジュアライザー
      • センサーデータの可視化
    • rqt
      • ROSのソフトウェアフレームワーク
      • GUI
    • Gazebo
      • 3Dダイナミックシミュレータ

ROS1とROS2の違い

  • 本セッションは初心者向けなので深く掘り下げない
  • サンプルスクリプト
    • ROS : C++
    • ROS2 : Python
  • C++は多くのロボット工学に使用されている
  • ROSはC makeプロジェクト
  • ROS2はPythonをサポート
  • 商用に対応するセキュリティ
  • DDSのサポート
  • Catkin_makeはColconに置き換え
  • Launch files にXMLファイルを使用できない
  • プラットフォーム
    • ROS1 : UbuntuのみでCIテスト済み
    • ROS2 : Ubuntu16.04(LTS), Mac OS X Elcapitan, Windows 10
  • ほとんどの人がC++かPythonを使っている
  • 言語
    • C++
      • ROS1 : C++03ターゲット
      • ROS2 : C++11, C++14(間も無くC++17)
    • Python
      • ROS1 : Python2
      • ROS2 : 最新のPython3.5

ROS2の設計の概要

ROS2 graphの概念

  • Nodes
    • 他のノードと通信するエンティティ
  • Messages
    • Publish/Subscribe時に使用されるデータ
  • Topics
    • Topicへpublish, 同様にTopicへSubscribeしてメッセージを受け取れる
  • Discovery
    • nodesが互いに対話する方法を決定する自動プロセス

ROSのメカニズム

  • node同士がデータを交換
  • Publisherはデータを送信
  • SubscriberのNodeは受け取りたいデータを受信するためにSubscribeするためにTopicを追加
  • 今回の例は/docs

DDSとは?

  • Data Distribution Servieceの略
  • DDSとは複雑なネットワークプログラミングを簡素化するネットワークミドルウェア
  • Node間でデータ、イベント、コマンドを送受信するためのPub/SUbパターンで実装する

ROS2のDDS

  • 利点
    • 維持するコードが少ない
    • スステムレベルのドキュメント
    • 推奨ユースケース
    • API
    • など

もっと深く知るためには

DDSを使用するための詳しい説明はこちらに
http://design.ros2.org/articles/ros_on_dds.htm

だれがROS2へポーティングすべきか

  • 大企業(大企業から資金提供受けている研究開発グループ)
    • 技術的夫妻を削減するため、ROS2を検討を進める
    • ROS1の経験を持つ人をプロジェクトへ参加させる
  • ロボティクススタートアップ
    • 技術的夫妻を削減するため、ROS2を検討を進める
    • ROS1の経験を持つ人をプロジェクトへ参加させる
  • ロボティクスOEM
    • ROS2 Dashingは LTSリリース
    • 業界サポート: Amazon Intel, MicrosoftはROS2開発に多大なリソースを投入

だれがROS1のままで良く、ROS2へ移行を急ぐ必要がないか

  • 学生(ROS1を使うことを学んでいる人)
    • ROS1とROS2の概念の多くは同じであるためROS1を学ぶことであとでROS2を学べる
  • 教授(ROSを教えている)
    • ROS2にはまだ良いオンラインカリキュラムがない
    • リソースはドキュメントがメイン
    • 常に変更が発生している
  • 研究者(ROSを論文に公開する人)
    • ROS2の新機能紹介ではなければROS1を使用してもよいでしょう

Rover RoboticsがROS2を移植する価値が判断した理由

Rover Robotics

https://roverrobotics.com/

  • 警察や考案ロボットへROSとオープンソースソフトウェアの互換性を持たせた
  • ロボットを現代のラップトップやスマートフォンと同じぐらいの手頃な価格にしたい
  • 2WDのローバーは屋内の使用に優れている
  • このローバーは100kgまで処理できる
  • 防水などタフなハードウェアが必要

Rover Robotics : ROS2を移植する理由

  • 信頼性
  • ROS2を開発している大企業がある
  • ROS2に起きている大きなパラダイムシフト
  • Rover boticsのブログ https://blog.roverrobotics.com/

もっと深く知るためには

  • Here are the docs for ROS 2 concepts: https://index.ros.org/doc/ros2/Concepts/Overview-of-ROS-2-concepts
  • Changes between ROS 1 and ROS 2: http://design.ros2.org/articles/changes.html
  • ROS 2 on DDS: http://design.ros2.org/articles/ros_on_dds.html

最後に

AWS RoboMakerでも使われているミドルウェアROSのバージョンアップすべきかどうかの判断材料が満載の内容でした。介助犬のカネラは途中で寝てしまいました。本編とは関係ないのですが、自分の仕事ではない時には大勢の前でもリラックスできるんですね。これはロボットとは違い温かみがありますね。