第32回信号処理シンポジウム「raspberry piとrosを使ったロボットシステム」
TRANSCRIPT
Raspberry PiとROSを使ったロボットシステム
千葉工業大学 上田 隆一
第32回 信号処理シンポジウム in 盛岡
本日の内容
• 1. 背景• Raspberry Pi Mouseと自著の意図
• 2. Rasberry Pi MouseとROS• 何ができるか?
• 3. コミュニティーについて
•まとめ
2017年11月9日 32nd SIP SYMPOSIUM 2
1.背景ロボット開発のスタイルの変化
2017年11月9日 32nd SIP SYMPOSIUM 3
aiboの発売
• 2017年11月1日発表• 2006年3月末に販売終了して以来
• 2006年と2017年の象徴的な違い• https://aibo.sony.jp/feature/basic.html
• 「クラウド」の文字
• 以前はAIBO内にウェブサーバ
• 利益の上げ方もハードウェア売り切りから変化
2017年11月9日 32nd SIP SYMPOSIUM 4
ロボットとインターネット
•サービスだけではない
•開発も• ここ数年で顕著
• 開発のための様々なサービスの登場• Gitホスティング、CIサービス、Slack・・・。
• Twitterも
• オープンソースソフトウェア• 逆運動学を解かなくてもマニピュレータが動く
• 確率や最適化の勉強をしなくてもセンサ情報統合
2017年11月9日 32nd SIP SYMPOSIUM 5
どれだけ簡単になっているか?
•例: MoveIt!• マウスで手先の位置を指定
• 逆運動学計算
• その通りに動く
• 以前: 既存のソフト利用がそれなりに面倒• モデルを作る
• 他のソフトとつなぐ
• ⇒ROSに従ってやっていくと迷わずすぐにできる
2017年11月9日 32nd SIP SYMPOSIUM 6
by Yutaka Kondo
ソーシャルコーディング
• インターネット上でのコード公開と利用
• したことが全部パブリックに• GitHubを見てTwitterで採用
• 中途採用で起こり始めている
• 研究室レベルでも(細かい話ですが)• 学生が英語を書き出す, 互いに使用してフィードバック, 私のコードを手伝いしていると名前が残る
2017年11月9日 32nd SIP SYMPOSIUM 7
GitHub
ソーシャルメディア• 学生が何か作ったらすぐYouTubeにアップ
• Twitterでリンクをつけて発信
• 私が拡散
2017年11月9日 32nd SIP SYMPOSIUM 8
(論文との兼ね合いは難しい)
by Daisuke Sato by Yosuke Kato
あらゆることの高速化
• 「昔からそんなことはできていた」• 問題はスピードと手軽さ
• 開発、情報伝達が効率化
• 電子メールすら「遅い」
• SNSを使う人はSNSを使う人としか仕事をしたくない
• 個人的な問題意識• 断絶は悲しい
• 機械系、ロボット系が情報系に侵食されるのは悲しい
• IoT
• 注意: 研究ではこういうものに頼らない段階が必ず存在2017年11月9日 32nd SIP SYMPOSIUM 9
Slack
2. Raspberry Pi MouseとROS日頃から考えていたことをソフトウェアと書籍に反映
2017年11月9日 32nd SIP SYMPOSIUM 10
Raspberry Pi Mouse
• アールティ社製
• 本体価格: 税込48,600円
• マイクロマウス型• 4つの距離センサ
• 2つのステップモータ
• Raspberry Piで制御• Linuxで制御
• 競技用迷路はちょっと厳しい
• そういう用途ではない
2016年12月17日 SI2016 11
自身の関与
• 日経Linux誌で連載しないかとの話• アールティさんから話があったときはハードは完成済み
• 自身の頭の中• 「どうやったら1万台売れるかな?」
• ハードウェア、性能一辺倒の人たちへのアピール
• ドキュメント
• オープンソース
• コミュニティー(コミュニティーで利用されているツール)
2017年11月9日 32nd SIP SYMPOSIUM 12
アプリケーション
構想• ロボットプログラミング以上のものを未経験者に体験する機会の提供• アプリケーションの上下も扱う
• 定番ツールの使用からコミュニティーへの入り口を作る
• テキストがあると売れることを示す
2017年11月9日 32nd SIP SYMPOSIUM 13
GitHub(コードの管理)
Travis CI(テスト)
ROS(ミドルウェア)
Linux, device driver(低レイヤー)
ハードウェア
書籍について
• 2017年4月発売
• Raspberry PiとROS• 流行りもの
• 研究者としては乗っかるだけだと非常に恥
• 実はこれも扱っている• GitHub
• Travis CI
• シェルスクリプト
• デバイスドライバの書き方
• ただ、今日はROSの話が中心2017年11月9日 32nd SIP SYMPOSIUM 14
ROSを知りたければむしろその上下を!と素直に記述
ソフトウェアの構成: カーネル以下のレイヤ
• 専用のデバイスドライバの作成を依頼• Unix系OSの教科書通りのインタフェース
• 「なんでもファイル」
• 任意のプログラミング言語が利用可能
• ROS化がスムーズにできた
2017年11月9日 32nd SIP SYMPOSIUM 15
ソフトウェアの構成: ROSのレイヤ
• ROS: robot operating system
• 歴史、コントリビュータ• http://www.ros.org/history/
• http://www.ros.org/contributors/
• 何か?• ロボットのためのミドルウェア
• (主に)Linux上で動作
2017年11月9日 32nd SIP SYMPOSIUM 16
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
ROSの構成
•本体: プロセス間通信をつかさどる• ここで言うプロセス: ROSノードと呼ばれる機能ごとに独立したプログラム• プロセス同士をpublish-subscribeモデルやサービスでつなぐ
• XML-RPC等を利用
• 通信するデータに型
•周辺• ビルドシステム、パッケージ管理、テストツール、・・・
2017年11月9日 32nd SIP SYMPOSIUM 18
デバイスドライバ
ラズパイマウスにおけるROSの役割
• デバイスドライバのラッパー• より抽象化された入出力インタフェースの提供
• 追加されたセンサの即時利用• カメラ, LIDAR用
ROSパッケージ
• 機能の拡張• 画像処理、地図生成、自己位置推定
2017年11月9日 32nd SIP SYMPOSIUM 19
ハードウェア(ロボット本体)
ハードウェア(USB機器など)
Linuxカーネル
ROS
距離センサノード
モータノード
カメラノード・・・
通信
ROSの利用例
•上: 画像処理(OpenCV)
•下: SLAM
•いずれも100行程度コードを追加しただけ
2017年11月9日 32nd SIP SYMPOSIUM 20
ソフトウェアの管理
• ROSパッケージ• 特定の機能を提供するソフトウェアの一単位
• そのままGitHubのリポジトリであることが多い
• ROSノード• プロセスに相当
• 他のノードと通信し合う
• roslaunch• どのノードを立ち上げるか管理
• 複数のパッケージを連携2017年11月9日 32nd SIP SYMPOSIUM 21
データの流れ: 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
その他の通信
• ROSサービス• ノード間で手続きを呼び出し
• actionlib• 呼び出した手続きを監視、中断可能に
• ROSトピックの集合
2017年11月9日 32nd SIP SYMPOSIUM 23
CIサービスでのテスト
• CI(continuous integration)サービス• インターネット上でコードをビルド、テストして本番環境に反映するためのもの
• テストに慣れるととても開発がスムーズに
• よく個人で行われる使い方• GitHubにコードをpush→自動でテスト→GitHub上にテストの可否を表示
• 問題: ロボットをネット上でどうテストするか?• 海外だと結構本気で取り組んでいるようである
2017年11月9日 32nd SIP SYMPOSIUM 24
rosbagを使ったテストの例
• rosbag• トピックをタイムスタンプ付きで記録する仕組み/コマンド
• タイムスタンプ付きで再生
• →ロボットがなくてもノードの動作確認が可能
2017年11月9日 32nd SIP SYMPOSIUM 25
3. コミュニティーについてスムーズに情報を得て仕事に活かすために
2017年11月9日 32nd SIP SYMPOSIUM 26
モノだけ見ていても・・・
• ROSの話を聞いてROSの動作しか興味がないとあまり展開がない
•インターネットがあってのROS• ソフトウェアのダウンロード
• 情報交換
2017年11月9日 32nd SIP SYMPOSIUM 27
情報の流通経路
•イベント• ROSCon
• ROS勉強会(ROS Japan UG)
•日常• メーリングリスト
• Twitter, その他SNS
• GitHub, その他Gitホスティングサービス
2017年11月9日 32nd SIP SYMPOSIUM 28
事例1: ROS勉強会
• 1,2ヶ月に1度の頻度(最近はもっと頻繁)で開催
• 様々な形式• 各個人の発表を聞く形式
• 準備されたロボットのソフトを開発(ハッカソン、もくもく会)
2017年11月9日 32nd SIP SYMPOSIUM 29
https://www.facebook.com/RaspberryPiMouse/posts/1638512519506163
事例2: シェル芸勉強会(注意: ROS無関係)
•一日中シェルの使い方を学ぶ• 午前: コマンドなどの使い方
• 午後: ワンライナーの問題を解く• Twitter上に解答が溢れる
• 夜: LT(lightning talk大会)
2017年11月9日 32nd SIP SYMPOSIUM 30
コミュニティーとの付き合い方
• 価値観を理解する• 企業の人が集まるところに大学の評価方法を持ち込んではならない• 「無意識に権威主義を持ち込んでいる」という自身の経験
• 活発なコミュニティーは合理的• 連絡はTwitterでのツイートが多い
• オファーもTwitter(全く失礼ではない)
• 電子メール, ダイレクトメッセージは嫌がられる
• 馴染まなくても良い• 違う立場で情報を出し入れすることが重要
2017年11月9日 32nd SIP SYMPOSIUM 31
あると良い知識
•知っていると価値観が理解できる
• オープンソースの歴史• 「フリーソフトウェア」と「オープンソースソフトウェア」の違いは?
• ライセンスと著作権• 違いは?
2017年11月9日 32nd SIP SYMPOSIUM 32
入り口
• GitHubのissueが最も簡単• 例:https://github.com/ryuichiueda/raspimouse
_book_info/issues• ここは日本語OK(になってしまっている)のでぜひ
2017年11月9日 32nd SIP SYMPOSIUM 33
まとめ
• ソフトウェア開発のスピード感• 電子メールでさえ効率が悪いとみなされる
• 合理的
• Raspberry Pi Mouse + ROS• ハードからコミュニティーまで
• インターネットを強く意識
2017年11月9日 32nd SIP SYMPOSIUM 34