Submit Search
Upload
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
•
4 likes
•
7,673 views
Hisaya Okada
Follow
How to Hack Roomba
Read less
Read more
Technology
Report
Share
Report
Share
1 of 24
Download now
Download to read offline
Recommended
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
PostgreSQLとpython
PostgreSQLとpython
Soudai Sone
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
PEP8を読んでみよう
PEP8を読んでみよう
2bo 2bo
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Yuya Unno
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
Recommended
One - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
t-sin
PostgreSQLとpython
PostgreSQLとpython
Soudai Sone
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
PEP8を読んでみよう
PEP8を読んでみよう
2bo 2bo
Inquisitor -Common Lispに文字コード判定を-
Inquisitor -Common Lispに文字コード判定を-
t-sin
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Yuya Unno
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
t-sin
Exgettextの話
Exgettextの話
k1complete
Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -
fusha_san
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
Tetsuya Morimoto
Gensim
Gensim
saireya _
boost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan
LLdeade Python Language Update
LLdeade Python Language Update
Atsushi Shibata
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Yuya Unno
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
Introduction to cython
Introduction to cython
Atsuo Ishimoto
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
Neo4jとProlog
Neo4jとProlog
Jun Iio
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
Tatsuya Tojima
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
TensorFlow White Paperを読む
TensorFlow White Paperを読む
Yuta Kashino
Cython ことはじめ
Cython ことはじめ
gion_XY
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
Masaki Yamakawa
天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しよう
Hiroki Yato
ロボット用マイコンボードを設計してみた
ロボット用マイコンボードを設計してみた
Bizan Nishimura
Magic Ring Buffer
Magic Ring Buffer
Takeshi Fujiwara
More Related Content
What's hot
Exgettextの話
Exgettextの話
k1complete
Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -
fusha_san
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
Tetsuya Morimoto
Gensim
Gensim
saireya _
boost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan
LLdeade Python Language Update
LLdeade Python Language Update
Atsushi Shibata
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Yuya Unno
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
Introduction to cython
Introduction to cython
Atsuo Ishimoto
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
Neo4jとProlog
Neo4jとProlog
Jun Iio
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
Tatsuya Tojima
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
TensorFlow White Paperを読む
TensorFlow White Paperを読む
Yuta Kashino
Cython ことはじめ
Cython ことはじめ
gion_XY
What's hot
(18)
Exgettextの話
Exgettextの話
Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
Gensim
Gensim
boost::shared_ptr tutorial
boost::shared_ptr tutorial
LLdeade Python Language Update
LLdeade Python Language Update
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Cython intro prelerease
Cython intro prelerease
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
Introduction to cython
Introduction to cython
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Neo4jとProlog
Neo4jとProlog
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
TensorFlow White Paperを読む
TensorFlow White Paperを読む
Cython ことはじめ
Cython ことはじめ
Similar to 掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
Masaki Yamakawa
天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しよう
Hiroki Yato
ロボット用マイコンボードを設計してみた
ロボット用マイコンボードを設計してみた
Bizan Nishimura
Magic Ring Buffer
Magic Ring Buffer
Takeshi Fujiwara
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
Shigeo Ueda
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
Yasuhiro Ishii
Cvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 half
tomoaki0705
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumilab
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
M Hagiwara
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Yasuhiro Ishii
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Yukari Sakurai
1万件超の登録を実現したBotノウハウからマッシュアップまで
1万件超の登録を実現したBotノウハウからマッシュアップまで
Masao Takaku
W3C Web of Thing Interest Group 最新状況
W3C Web of Thing Interest Group 最新状況
Device WebAPI Consortium
I2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御する
Hirokazu Nishio
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Toshiki Tsuboi
Similar to 掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
(16)
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しよう
ロボット用マイコンボードを設計してみた
ロボット用マイコンボードを設計してみた
Magic Ring Buffer
Magic Ring Buffer
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
Cvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 half
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
Why did I become a ruby committer
Why did I become a ruby committer
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
1万件超の登録を実現したBotノウハウからマッシュアップまで
1万件超の登録を実現したBotノウハウからマッシュアップまで
W3C Web of Thing Interest Group 最新状況
W3C Web of Thing Interest Group 最新状況
I2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御する
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
1.
掃除をさせるだけではもったいない 「ルンバ」の魅力と攻略法 玲 / @Plemling138
2.
自己紹介 岡田 修弥
a.k.a. 玲 仙台電波高専(今の仙台高専広瀬キャンパス)卒 豊橋技術科学大学大学院 情報・知能工学専攻 博士前期課程1年 TwitterID: @Plemling138 HP: http://blog.hsy.me/ 2015/12/20 2
3.
アイスブレイク 在学生 or
卒業生? 2015/12/20 3
4.
アイスブレイク ルンバ持ってる(家にある)人! https://en.wikipedia.org/wiki/IRobot#/media/File:IRobot_Roomba_780.jpg http://www.wired.com/2012/09/irobot-roomba-650/ 2015/12/20 4
5.
ルンバは「ロボット掃除機」? ルンバをロボットとして見ると… センサいっぱい 車輪ついてて動き回る バッテリ積んでる なんかピコピコ言ってる ボタン一つで勝手に掃除してくれる たまにケーブルにひっかかるのはご愛嬌 これだけ付いて39,800円~!お買い得!! 2015/12/20
5
6.
ルンバは 「ロボット屋さんが作ったお掃除ロボット」 製造元のiRobot社は日本ではお掃除ロボットのイメージが強いが、 ビジネス向け製品や軍事用ロボットまで手掛ける ガチなロボット屋さん http://www.irobot.com/For-the-Home/Vacuum-Cleaning/Roomba.aspx http://www.irobot.com/For-Business/RP-VITA.aspx http://www.irobot.com/For-Defense-and-Security/Robots/510- PackBot.aspx#Military Roomba InTouch Vita (院内回診ロボット) PackBot (軍用ロボット) 2015/12/20
6
7.
ルンバを「お掃除ロボット」の呪縛から 解き放とう! - Let’s Hack
Roomba!! -
8.
なんのために? ルンバをベースとしてロボットを開発する →製作コストを削減できる ルンバをより便利に使い倒せる →アプリからの制御、ソーシャルサービスとの連携等 2015/12/20 8
9.
なんのために? ルンバをベースとしてロボットを開発する →製作コストを削減できる ルンバをより便利に使い倒せる →アプリからの制御、ソーシャルサービスとの連携等 でも、ハックって悪いことなんじゃ…? 2015/12/20 9
10.
安心してください リファレンスはすべて公開されていますよ! 2015/12/20 10 http://www.oricon.co.jp/news/2063618/photo/2/
11.
3ステップでHack! 2015/12/20 11 http://www.amazon.com/iRobot-530-Roomba-Vacuuming- Robot/dp/B000UU7TZE はがす! 天板カバーを外します
カバー本体や爪を 折らないように注意! つなぐ! シリアルポートがボタン の脇に出現! リファレンスに従って PCやマイコン等と接続 しましょう たたく! 対応するAPIコマンドを 各種言語で叩く! 楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
12.
詳細:はがす! シリアルポートは天板カバー下にあるので、これを外します 隙間からマイナスドライバーで周りにこじっていくと外れます
冬場は樹脂が硬く割れやすいので暖めながらやると良いです 2015/12/20 12
13.
詳細:つなぐ! カバーをはがすとCLEANボタン横にシリアルポートが現れます オフィシャルのケーブルもありますが… 入手困難です(研究用キットやiRobot
Create 2に付属?) 市販プラグとUSB-シリアル変換アダプタやXbeeと組み合わせたり、 ジャンパワイヤを直挿ししても大丈夫です ピンアサインは魔導書(後述)に書いてあります 2015/12/20 13
14.
詳細:つなぐ! カバーをはがすとCLEANボタン横にシリアルポートが現れます オフィシャルのケーブルもありますが… 入手困難です(研究用キットやiRobot
Create 2に付属?) 市販プラグとUSB-シリアル変換アダプタやXbeeと組み合わせたり、 ジャンパワイヤを直挿ししても大丈夫です ピンアサインは魔導書(後述)に書いてあります 2015/12/20 14
15.
詳細:たたく! 魔導書(後述)に従って使用したいコマンドをプログラムから 送信します シリアル通信が簡単にできる言語をおすすめします Arduinoなど、既にライブラリが開発されている言語もあります フルスクラッチしてもそれほどコストはかかりません…たぶん 2015/12/20
15
16.
魔導書 Roomba Open
Interface(OI) Specificationsのこと http://irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Int erface_Spec.pdf シリアルポートのピンアサインや コマンド一覧がすべて書かれて います ただし、全編英語です 英語が得意な高専生の皆さんなら 大丈夫ですよね!! 2015/12/20 16
17.
魔導書 シリアルポートの規格・仕様 制御モードの設定方法
コマンドの内容(概要) 走行用アクチュエータの制御 LEDの制御 お掃除コマンド 音楽の演奏(!) センサデータの取得 2015/12/20 17
18.
開発のしかた(ざっくり) シリアルポート通信用のコードを書きます 割と読みやすい(と思う)ので、ここではC#.NETで書きます 2015/12/20 18 class
RoombaControl { SerialPort RoombaPort; public RoombaControl() { RoombaPort = new SerialPort(); //接続COMポートの設定。 RoombaPort.PortName = SerialPort.GetPortNames()[0]; Console.WriteLine("Port:" + RoombaPort.PortName); //ボーレートなどの設定 RoombaPort.BaudRate = 115200; //ボーレート(115200bps) RoombaPort.DataBits = 8; //データビット(8ビット) RoombaPort.Parity = Parity.None; //パリティなし RoombaPort.StopBits = StopBits.One; //ストップビットなし RoombaPort.Handshake = Handshake.None; //ハンドシェイクなし RoombaPort.Encoding = Encoding.ASCII; //エンコードはASCII方式 //RoombaPort.DataReceived += new SerialDataReceivedEventHandler(RoombaPort_DataReceived); } public int connect() { if (RoombaPort == null) return -1; try { RoombaPort.Open(); RoombaPort.DtrEnable = true; RoombaPort.RtsEnable = true; this.sendCommand(new byte[1] { 130 }); //最初からSAFEモードへ } catch (Exception e) { return -2; } return 0; } public int close() { if (RoombaPort == null) return -1; try { //ポートを閉じる前にOFFモードへ移行 this.sendCommand(new byte[1] { 133 }); RoombaPort.Close(); } catch (Exception e) { return -2; } return 0; }
19.
開発のしかた(ざっくり) シリアルポート通信用のコードを書きます 割と読みやすい(と思う)ので、ここではC#.NETで書きます 2015/12/20 19 public
int sendCommand(byte[] data) { if (RoombaPort == null) return -1; try { RoombaPort.Write(data, 0, data.Length); } catch (Exception e) { return -2; } return 0; } public byte[] receiveData(int recvBytes) { byte[] buf = new byte[recvBytes + 1]; RoombaPort.Read(buf, 0, recvBytes); return buf; } public int Drive(int DriveMode, short leftSpeed, short rightSpeed) { byte[] data = new byte[5]; data[0] = (byte)(DriveMode & 0xFF); data[1] = (byte)((rightSpeed & 0xFF00) >> 8); data[2] = (byte)(rightSpeed & 0x00FF); data[3] = (byte)((leftSpeed & 0xFF00) >> 8); data[4] = (byte)(leftSpeed & 0x00FF); return sendCommand(data); } public int changePowerLEDColor(byte Color, byte Brightness) { byte[] data = new byte[4]; data[0] = (byte)139; data[1] = 0; data[2] = (byte)Color; data[3] = Brightness; return sendCommand(data); }
20.
ちょっとだけTips 最初にモード指定をする必要があります OFF/Passive/Safe/Full の4状態があります デフォルトではPassiveモードになりアクチュエータが使えないため、 基本的にはSafeモードでコマンドを叩きます Fullモードを使用する際は暴走に注意してください
駆動モードは3種類の指定方法があります Drive(速度と半径を指定する) Drive Direct(左の車輪と右の車輪の速度をそれぞれ直接指定) Drive PWM(左の車輪と右の車輪の出力レートを指定) サンプルコードでは各コマンドをユーザが指定し、値を整形して コマンドとして送信しています 2015/12/20 20
21.
実際に動かしてみよう! 2015/12/20 21 private static
void moveRoomba() { RoombaControl Roomba = new RoombaControl(); if (Roomba.connect() < 0) Console.WriteLine("Failed to connect Roomba!!"); else Console.WriteLine("Roomba Control Start!!"); Roomba.changePowerLEDColor(0, 255); Roomba.changePowerLEDColor(128, 255); Roomba.changePowerLEDColor(255, 255); Roomba.Drive(137, 100, 100); //100mm/sで前進 Roomba.Drive(137, 0, 0); Roomba.Drive(137, -100, -100); //100mm/sで後退 Roomba.Drive(137, 0, 0); Roomba.Drive(137, -100, 100); //左旋回 Roomba.Drive(137, 0, 0); Roomba.Drive(137, 100, -100); //右旋回 Roomba.Drive(137, 0, 0); Roomba.sendCommand(new byte[] { 135 }); } ※実際はsleepを各命令間に挟んでいます
22.
アイデアは無限大! SNS経由でお掃除命令を送ったり… WebカメラやKinectで得られた情報を基に制御したり…
音楽を演奏させたり… 公式ハック用キットも市販されています(iRobot Create 2) 輸入モノなので市販品より高めですが…(6万円弱?) 2015/12/20 22
23.
まとめ ルンバをただ使うのはもったいない! ルンバは「電気屋さんで買えるハッカブルデバイス」 自分好みの動きや機能を追加できる! ロボットのプラットフォームとしても使える!
ルンバのハックは超簡単! リファレンスが公開されているのでハックとは言えない!? プログラムを書いて動かすスキルより蓋を外すほうが大変? もっとルンバを活用しようぜ! 2015/12/20 23
24.
参考資料 「Roomba Hack」などで検索すると役に立つ情報がいっぱい出てきます
参考になりそうなページ Roomba 500 Open Interface(OI) Specification http://irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec. pdf ArduinoからRoombaをSoftware Serialで動かす http://qiita.com/DUxCA/items/36a13e68722c51c72927 趣味で作るロボット用ソフトウェア:ルンバの制御について http://hyakuren-soft.sakura.ne.jp/hobby_robot_sdk/about_roomba_page.html ROS(ロボット制御用OS)での動かし方(英語) http://wiki.ros.org/roomba_500_series お掃除しないルンバをプログラミングして自分だけのロボットが作れる プラットフォーム「iRobot Create 2」が発売開始 http://gigazine.net/news/20141211-irobot-create-2/ 2015/12/20 24
Download now