第32回信号処理シンポジウム「raspberry piとrosを使ったロボットシステム」

34
Raspberry PiとROSを 使ったロボットシステム 千葉工業大学 上田 隆一 第32回 信号処理シンポジウム in 盛岡

Upload: -

Post on 21-Jan-2018

509 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

Raspberry PiとROSを使ったロボットシステム

千葉工業大学 上田 隆一

第32回 信号処理シンポジウム in 盛岡

Page 2: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

本日の内容

• 1. 背景• Raspberry Pi Mouseと自著の意図

• 2. Rasberry Pi MouseとROS• 何ができるか?

• 3. コミュニティーについて

•まとめ

2017年11月9日 32nd SIP SYMPOSIUM 2

Page 3: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

1.背景ロボット開発のスタイルの変化

2017年11月9日 32nd SIP SYMPOSIUM 3

Page 4: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

aiboの発売

• 2017年11月1日発表• 2006年3月末に販売終了して以来

• 2006年と2017年の象徴的な違い• https://aibo.sony.jp/feature/basic.html

• 「クラウド」の文字

• 以前はAIBO内にウェブサーバ

• 利益の上げ方もハードウェア売り切りから変化

2017年11月9日 32nd SIP SYMPOSIUM 4

Page 5: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ロボットとインターネット

•サービスだけではない

•開発も• ここ数年で顕著

• 開発のための様々なサービスの登場• Gitホスティング、CIサービス、Slack・・・。

• Twitterも

• オープンソースソフトウェア• 逆運動学を解かなくてもマニピュレータが動く

• 確率や最適化の勉強をしなくてもセンサ情報統合

2017年11月9日 32nd SIP SYMPOSIUM 5

Page 6: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

どれだけ簡単になっているか?

•例: MoveIt!• マウスで手先の位置を指定

• 逆運動学計算

• その通りに動く

• 以前: 既存のソフト利用がそれなりに面倒• モデルを作る

• 他のソフトとつなぐ

• ⇒ROSに従ってやっていくと迷わずすぐにできる

2017年11月9日 32nd SIP SYMPOSIUM 6

by Yutaka Kondo

Page 7: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ソーシャルコーディング

• インターネット上でのコード公開と利用

• したことが全部パブリックに• GitHubを見てTwitterで採用

• 中途採用で起こり始めている

• 研究室レベルでも(細かい話ですが)• 学生が英語を書き出す, 互いに使用してフィードバック, 私のコードを手伝いしていると名前が残る

2017年11月9日 32nd SIP SYMPOSIUM 7

GitHub

Page 8: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ソーシャルメディア• 学生が何か作ったらすぐYouTubeにアップ

• Twitterでリンクをつけて発信

• 私が拡散

2017年11月9日 32nd SIP SYMPOSIUM 8

(論文との兼ね合いは難しい)

by Daisuke Sato by Yosuke Kato

Page 9: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

あらゆることの高速化

• 「昔からそんなことはできていた」• 問題はスピードと手軽さ

• 開発、情報伝達が効率化

• 電子メールすら「遅い」

• SNSを使う人はSNSを使う人としか仕事をしたくない

• 個人的な問題意識• 断絶は悲しい

• 機械系、ロボット系が情報系に侵食されるのは悲しい

• IoT

• 注意: 研究ではこういうものに頼らない段階が必ず存在2017年11月9日 32nd SIP SYMPOSIUM 9

Slack

Page 10: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

2. Raspberry Pi MouseとROS日頃から考えていたことをソフトウェアと書籍に反映

2017年11月9日 32nd SIP SYMPOSIUM 10

Page 11: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

Raspberry Pi Mouse

• アールティ社製

• 本体価格: 税込48,600円

• マイクロマウス型• 4つの距離センサ

• 2つのステップモータ

• Raspberry Piで制御• Linuxで制御

• 競技用迷路はちょっと厳しい

• そういう用途ではない

2016年12月17日 SI2016 11

Page 12: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

自身の関与

• 日経Linux誌で連載しないかとの話• アールティさんから話があったときはハードは完成済み

• 自身の頭の中• 「どうやったら1万台売れるかな?」

• ハードウェア、性能一辺倒の人たちへのアピール

• ドキュメント

• オープンソース

• コミュニティー(コミュニティーで利用されているツール)

2017年11月9日 32nd SIP SYMPOSIUM 12

Page 13: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

アプリケーション

構想• ロボットプログラミング以上のものを未経験者に体験する機会の提供• アプリケーションの上下も扱う

• 定番ツールの使用からコミュニティーへの入り口を作る

• テキストがあると売れることを示す

2017年11月9日 32nd SIP SYMPOSIUM 13

GitHub(コードの管理)

Travis CI(テスト)

ROS(ミドルウェア)

Linux, device driver(低レイヤー)

ハードウェア

Page 14: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

書籍について

• 2017年4月発売

• Raspberry PiとROS• 流行りもの

• 研究者としては乗っかるだけだと非常に恥

• 実はこれも扱っている• GitHub

• Travis CI

• シェルスクリプト

• デバイスドライバの書き方

• ただ、今日はROSの話が中心2017年11月9日 32nd SIP SYMPOSIUM 14

ROSを知りたければむしろその上下を!と素直に記述

Page 15: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ソフトウェアの構成: カーネル以下のレイヤ

• 専用のデバイスドライバの作成を依頼• Unix系OSの教科書通りのインタフェース

• 「なんでもファイル」

• 任意のプログラミング言語が利用可能

• ROS化がスムーズにできた

2017年11月9日 32nd SIP SYMPOSIUM 15

Page 16: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ソフトウェアの構成: ROSのレイヤ

• ROS: robot operating system

• 歴史、コントリビュータ• http://www.ros.org/history/

• http://www.ros.org/contributors/

• 何か?• ロボットのためのミドルウェア

• (主に)Linux上で動作

2017年11月9日 32nd SIP SYMPOSIUM 16

Page 17: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ROSのインストール

• Ubuntuが標準• 14.04にはROS Indigo Igloo

• 16.04にはROS Kinetic Kame

• パッケージをいくつかAPTやpipでインストール• まだ洗練されていない印象

• シェルスクリプトを公開しています• https://github.com/ryuichiueda/ros_setup_scripts_

Ubuntu16.04_server

2017年11月9日 32nd SIP SYMPOSIUM 17

Page 18: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ROSの構成

•本体: プロセス間通信をつかさどる• ここで言うプロセス: ROSノードと呼ばれる機能ごとに独立したプログラム• プロセス同士をpublish-subscribeモデルやサービスでつなぐ

• XML-RPC等を利用

• 通信するデータに型

•周辺• ビルドシステム、パッケージ管理、テストツール、・・・

2017年11月9日 32nd SIP SYMPOSIUM 18

Page 19: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

デバイスドライバ

ラズパイマウスにおけるROSの役割

• デバイスドライバのラッパー• より抽象化された入出力インタフェースの提供

• 追加されたセンサの即時利用• カメラ, LIDAR用

ROSパッケージ

• 機能の拡張• 画像処理、地図生成、自己位置推定

2017年11月9日 32nd SIP SYMPOSIUM 19

ハードウェア(ロボット本体)

ハードウェア(USB機器など)

Linuxカーネル

ROS

距離センサノード

モータノード

カメラノード・・・

通信

Page 20: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ROSの利用例

•上: 画像処理(OpenCV)

•下: SLAM

•いずれも100行程度コードを追加しただけ

2017年11月9日 32nd SIP SYMPOSIUM 20

Page 21: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

ソフトウェアの管理

• ROSパッケージ• 特定の機能を提供するソフトウェアの一単位

• そのままGitHubのリポジトリであることが多い

• ROSノード• プロセスに相当

• 他のノードと通信し合う

• roslaunch• どのノードを立ち上げるか管理

• 複数のパッケージを連携2017年11月9日 32nd SIP SYMPOSIUM 21

Page 22: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

データの流れ: ROSトピック• 「メッセージ」が非同期に流れる• pub-subモデル

• ノード間で授受

• トピックは木構造で管理• ディレクトリに似た構造

• 主要なセンサはAPTでソフトウェアをインストールするとそのまま利用可能• USBカメラ $ sudo apt install ros-kinetic-cv-camera

• 測域センサ $ sudo apt install ros-kinetic-urg-node2017年11月9日 32nd SIP SYMPOSIUM 22

Page 23: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

その他の通信

• ROSサービス• ノード間で手続きを呼び出し

• actionlib• 呼び出した手続きを監視、中断可能に

• ROSトピックの集合

2017年11月9日 32nd SIP SYMPOSIUM 23

Page 24: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

CIサービスでのテスト

• CI(continuous integration)サービス• インターネット上でコードをビルド、テストして本番環境に反映するためのもの

• テストに慣れるととても開発がスムーズに

• よく個人で行われる使い方• GitHubにコードをpush→自動でテスト→GitHub上にテストの可否を表示

• 問題: ロボットをネット上でどうテストするか?• 海外だと結構本気で取り組んでいるようである

2017年11月9日 32nd SIP SYMPOSIUM 24

Page 25: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

rosbagを使ったテストの例

• rosbag• トピックをタイムスタンプ付きで記録する仕組み/コマンド

• タイムスタンプ付きで再生

• →ロボットがなくてもノードの動作確認が可能

2017年11月9日 32nd SIP SYMPOSIUM 25

Page 26: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

3. コミュニティーについてスムーズに情報を得て仕事に活かすために

2017年11月9日 32nd SIP SYMPOSIUM 26

Page 27: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

モノだけ見ていても・・・

• ROSの話を聞いてROSの動作しか興味がないとあまり展開がない

•インターネットがあってのROS• ソフトウェアのダウンロード

• 情報交換

2017年11月9日 32nd SIP SYMPOSIUM 27

Page 28: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

情報の流通経路

•イベント• ROSCon

• ROS勉強会(ROS Japan UG)

•日常• メーリングリスト

• Twitter, その他SNS

• GitHub, その他Gitホスティングサービス

2017年11月9日 32nd SIP SYMPOSIUM 28

Page 29: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

事例1: ROS勉強会

• 1,2ヶ月に1度の頻度(最近はもっと頻繁)で開催

• 様々な形式• 各個人の発表を聞く形式

• 準備されたロボットのソフトを開発(ハッカソン、もくもく会)

2017年11月9日 32nd SIP SYMPOSIUM 29

https://www.facebook.com/RaspberryPiMouse/posts/1638512519506163

Page 30: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

事例2: シェル芸勉強会(注意: ROS無関係)

•一日中シェルの使い方を学ぶ• 午前: コマンドなどの使い方

• 午後: ワンライナーの問題を解く• Twitter上に解答が溢れる

• 夜: LT(lightning talk大会)

2017年11月9日 32nd SIP SYMPOSIUM 30

Page 31: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

コミュニティーとの付き合い方

• 価値観を理解する• 企業の人が集まるところに大学の評価方法を持ち込んではならない• 「無意識に権威主義を持ち込んでいる」という自身の経験

• 活発なコミュニティーは合理的• 連絡はTwitterでのツイートが多い

• オファーもTwitter(全く失礼ではない)

• 電子メール, ダイレクトメッセージは嫌がられる

• 馴染まなくても良い• 違う立場で情報を出し入れすることが重要

2017年11月9日 32nd SIP SYMPOSIUM 31

Page 32: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

あると良い知識

•知っていると価値観が理解できる

• オープンソースの歴史• 「フリーソフトウェア」と「オープンソースソフトウェア」の違いは?

• ライセンスと著作権• 違いは?

2017年11月9日 32nd SIP SYMPOSIUM 32

Page 33: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

入り口

• GitHubのissueが最も簡単• 例:https://github.com/ryuichiueda/raspimouse

_book_info/issues• ここは日本語OK(になってしまっている)のでぜひ

2017年11月9日 32nd SIP SYMPOSIUM 33

Page 34: 第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」

まとめ

• ソフトウェア開発のスピード感• 電子メールでさえ効率が悪いとみなされる

• 合理的

• Raspberry Pi Mouse + ROS• ハードからコミュニティーまで

• インターネットを強く意識

2017年11月9日 32nd SIP SYMPOSIUM 34