Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ロボットシステム学2015年第14回

2,568 views

Published on

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

Published in: Technology
  • Be the first to comment

ロボットシステム学2015年第14回

  1. 1. ロボットシステム学 第14回 上田隆一
  2. 2. 「ロボット」 • 人によって異なるものを想像 – メカ, 人工知能 – 学科外の人にどんな説明をしますか? • 全く違う想像をする人も – http://www.itmedia.co.jp/news/articles/1510/06/news08 3.html – これも学科外の人にどんな説明をしますか? – そもそも知ってましたか? 2016年1月20日 ロボットシステム学 2
  3. 3. 現在のロボットブーム • あらゆる意味でネットが絡んでいる – センサやアクチュエータがネットに接続される • これは本質的な話 • 今日も扱います – ウェブ等、アッパーレベルのソフトウェアを扱っていた人が ロボットをいじりだす • ロボットの購入や組み立てが簡単になってきた • この現象も歓迎すべき 2016年1月20日 ロボットシステム学 3
  4. 4. – 今までソフトウェア・インターネットを 追いかけていたウェブメディアがロボットを扱う • それを見てFacebookの住人が騒ぎ出す – 基本的にロボットの説明は研究者がするものだったが、 メディアで扱いが増えると「専門家」みたいな人が台頭してくる • ソフトウェアにはそういう人たちが多い – 私も専門でないのに何か書いたりしている • プレゼンスがないと仕事をとられる。困った。 2016年1月20日 ロボットシステム学 4
  5. 5. 我々はどう対処すべき? • 自分の専門はきっちりやるのは当然だが・・・ • ちゃんと分野外の人に説明できなければならない • その上で、もう少し目立っていくことが自身を守ることに – 最悪、ブームに火をつけて何も報われず消えていく 2016年1月20日 ロボットシステム学 5
  6. 6. もっと具体的に言うと • ソーシャルネットワークやネット上のサービスは きっちり使いこなす – 使ってないと何に注目が集まっているのか分からない • 流行には乗る必要もないが、時節に疎いのはまずい • ただし使うかどうかは本人次第なので・・・ – ウェブまわりの技術的な話をします – 技術から入って興味を持っていただければと 2016年1月20日 ロボットシステム学 6
  7. 7. 今回の内容 • ロボットとインターネット 2016年1月20日 ロボットシステム学 7
  8. 8. 実際のシステム • 例: AIBO(日記を書いて飼い主が閲覧) • http://togetter.com/li/792399 • 仕組み – センサーの値を解釈しておく – HTMLファイルを作っておく – ブラウザからAIBOにアクセスがあったら AIBOはWebサーバを通じてHTMLファイルを送る 2016年1月20日 ロボットシステム学 8
  9. 9. webサーバ • TCP80番/443番ポートでデータを待っている – 待つデータ: 基本的に「ファイルをくれ」という要求 – HTTP/HTTPSという方式 – telnet(1)を扱った時に使ってみました 2016年1月20日 ロボットシステム学 9 サーバ (普通のPC) ストレージ ウェブサーバ (プログラム) 80 443(暗号化) インターネット LAN PC タブレット 携帯電話
  10. 10. HTTP • 基本は人も読める文字列 • リクエスト/レスポンス、ヘッダ、ボディー • 例: クライアント→サーバ – リクエスト行 • GET(データくれ) • /misc/sample.txt(ファイル) • HTTP/1.0(どのHTTPか) – ヘッダ・ボディー • この場合は何もない 2016年1月20日 ロボットシステム学 10 uedamb:~ ueda$ telnet test.usptomo.com 80 Trying 133.242.187.106... Connected to test.usptomo.com. Escape character is '^]'. GET /misc/sample.txt HTTP/1.0
  11. 11. • 例: サーバ→クライアント – レスポンス行 • ステータス番号、補足 – ヘッダ • 項目: 内容 – ボディー • ファイルの中身 • ブラウザはHTML や画像をもらって 描画している 2016年1月20日 ロボットシステム学 11 HTTP/1.1 200 OK Date: Sat, 16 Jan 2016 13:56:50 GMT Server: Apache/2.4.7 (Ubuntu) Last-Modified: Sat, 16 Jan 2016 13:52:25 GMT ETag: "10-52973d470cfc2" Accept-Ranges: bytes Content-Length: 16 Connection: close Content-Type: text/plain あいうえお
  12. 12. CGI • 相手の要求によってはプログラムを動かす仕組み – ブラウザからWebサーバを持つロボットを動かす等が可能 • 原理的にはあまり難しい話ではない – セキュリティー的にはいろいろ難しい – CGIのようでCGIでないもの(mod-php等)もいろいろある 2016年1月20日 ロボットシステム学 12 サーバ(普通のPC) プログラム ウェブサーバ (プログラム) 要求 結果
  13. 13. 実例: 日経Linux 2016年2月号 • 次のような例(ビデオ) – ブラウザにリモコンを表示 – 矢印を押すとロボットが動く – 「撮影」を押すとロボットのカメラからブラウザに画像 2016年1月20日 ロボットシステム学 13 PC(ウェブブラウザ) Raspberry Pi (Webサーバロボットの 動作プログラムが動作) ・ブラウザで表示するGUI ・画像 操作
  14. 14. webサーバがブラウザに渡すもの • 画面表示 – HTML – CSS • プログラム – JavaScriptのコード(ブラウザで動くことに注意) • 画面の変更 • webサーバへリクエストを出す 2016年1月20日 ロボットシステム学 14
  15. 15. ブラウザからwebサーバへの要求 • この例ではJavaScriptからRaspberry Pi側の プログラムの起動が指示されている • 基本的には「送信」ボタンを押すと指示が飛ぶ 2016年1月20日 ロボットシステム学 15
  16. 16. webサーバ側の動き • リクエストのあったプログラムが動く – 普通のプログラムと同じ – ただしwebサーバが起動するので端末から 立ち上げるものとは少し異なるのでややこしい • パーミッション • ライブラリのパス等の設定 • コード(前ページのJavaScriptから呼ばれている) – https://github.com/ryuichiueda/NikkeiRaspiMouse/blob/mast er/201602/web/control.py 2016年1月20日 ロボットシステム学 16
  17. 17. データの受け渡し • GETとPOST • GET – クライアントはURLの後ろに?をつけて渡す – Webサーバが受け取ってQUERY_STRINGという環境変数へ – Webサーバから立ち上がったプログラムから環境変数を読む • POST – Webサーバ越しに標準入出力を使う – Webサーバから立ち上がったプログラムからは、 普通に標準入力を読むように使う 2016年1月20日 ロボットシステム学 17 注意: 常に変なデータが送られてくるかもしれないので インターネット上で試す場合にはそれ用の勉強を
  18. 18. Pythonの例 • CGIから動作するプログラム(CGIプログラムと呼ぶことにします) を作るにはcgiというモジュールを使う – 使用例: https://github.com/ryuichiueda/NikkeiRaspiMouse/blob/ma ster/201602/web/control.py • クライアントを作る時はurllib2やRequests等の ライブラリを利用 • これが動けばあとは普通のイベントドリブンの プログラムと変わらない 2016年1月20日 ロボットシステム学 18
  19. 19. クライアントへの返信 • CGIプログラムはクライアント(ブラウザ)に 返事をしないといけません – 返事がないとエラーに(503エラー等) • 返事はもちろんHTTP。標準出力に – ヘッダの前に変な出力をしてはいけません 2016年1月20日 ロボットシステム学 19 (中略)
  20. 20. クライアント側での受信 • サーバ側からの反応を待つ • データを受け取ったら何かする – ブラウザの場合は描画等 – 日経Linuxの例ではロボットがカメラで撮った 画像を表示している • https://github.com/ryuichiueda/NikkeiRaspiMouse/blo b/master/201602/web/main.js 2016年1月20日 ロボットシステム学 20

×