SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
掃除をさせるだけではもったいない
「ルンバ」の魅力と攻略法
玲 / @Plemling138
自己紹介
 岡田 修弥 a.k.a. 玲
 仙台電波高専(今の仙台高専広瀬キャンパス)卒
 豊橋技術科学大学大学院 情報・知能工学専攻
博士前期課程1年
 TwitterID: @Plemling138
 HP: http://blog.hsy.me/
2015/12/20 2
アイスブレイク
 在学生 or 卒業生?
2015/12/20 3
アイスブレイク
 ルンバ持ってる(家にある)人!
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
ルンバは「ロボット掃除機」?
 ルンバをロボットとして見ると…
センサいっぱい
車輪ついてて動き回る
バッテリ積んでる
なんかピコピコ言ってる
ボタン一つで勝手に掃除してくれる
たまにケーブルにひっかかるのはご愛嬌
 これだけ付いて39,800円~!お買い得!!
2015/12/20 5
ルンバは
「ロボット屋さんが作ったお掃除ロボット」
製造元の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
ルンバを「お掃除ロボット」の呪縛から
解き放とう!
- Let’s Hack Roomba!! -
なんのために?
ルンバをベースとしてロボットを開発する
→製作コストを削減できる
ルンバをより便利に使い倒せる
→アプリからの制御、ソーシャルサービスとの連携等
2015/12/20 8
なんのために?
ルンバをベースとしてロボットを開発する
→製作コストを削減できる
ルンバをより便利に使い倒せる
→アプリからの制御、ソーシャルサービスとの連携等
でも、ハックって悪いことなんじゃ…?
2015/12/20 9
安心してください
リファレンスはすべて公開されていますよ!
2015/12/20 10
http://www.oricon.co.jp/news/2063618/photo/2/
3ステップでHack!
2015/12/20 11
http://www.amazon.com/iRobot-530-Roomba-Vacuuming-
Robot/dp/B000UU7TZE
はがす!
 天板カバーを外します
 カバー本体や爪を
折らないように注意!
つなぐ!
 シリアルポートがボタン
の脇に出現!
 リファレンスに従って
PCやマイコン等と接続
しましょう
たたく!
 対応するAPIコマンドを
各種言語で叩く!
楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
詳細:はがす!
 シリアルポートは天板カバー下にあるので、これを外します
 隙間からマイナスドライバーで周りにこじっていくと外れます
 冬場は樹脂が硬く割れやすいので暖めながらやると良いです
2015/12/20 12
詳細:つなぐ!
 カバーをはがすとCLEANボタン横にシリアルポートが現れます
 オフィシャルのケーブルもありますが…
入手困難です(研究用キットやiRobot Create 2に付属?)
市販プラグとUSB-シリアル変換アダプタやXbeeと組み合わせたり、
ジャンパワイヤを直挿ししても大丈夫です
ピンアサインは魔導書(後述)に書いてあります
2015/12/20 13
詳細:つなぐ!
 カバーをはがすとCLEANボタン横にシリアルポートが現れます
 オフィシャルのケーブルもありますが…
入手困難です(研究用キットやiRobot Create 2に付属?)
市販プラグとUSB-シリアル変換アダプタやXbeeと組み合わせたり、
ジャンパワイヤを直挿ししても大丈夫です
ピンアサインは魔導書(後述)に書いてあります
2015/12/20 14
詳細:たたく!
 魔導書(後述)に従って使用したいコマンドをプログラムから
送信します
 シリアル通信が簡単にできる言語をおすすめします
Arduinoなど、既にライブラリが開発されている言語もあります
フルスクラッチしてもそれほどコストはかかりません…たぶん
2015/12/20 15
魔導書
 Roomba Open Interface(OI)
Specificationsのこと
http://irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Int
erface_Spec.pdf
 シリアルポートのピンアサインや
コマンド一覧がすべて書かれて
います
ただし、全編英語です
英語が得意な高専生の皆さんなら
大丈夫ですよね!!
2015/12/20 16
魔導書
 シリアルポートの規格・仕様
 制御モードの設定方法
 コマンドの内容(概要)
走行用アクチュエータの制御
LEDの制御
お掃除コマンド
音楽の演奏(!)
センサデータの取得
2015/12/20 17
開発のしかた(ざっくり)
 シリアルポート通信用のコードを書きます
割と読みやすい(と思う)ので、ここでは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;
}
開発のしかた(ざっくり)
 シリアルポート通信用のコードを書きます
割と読みやすい(と思う)ので、ここでは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);
}
ちょっとだけTips
 最初にモード指定をする必要があります
OFF/Passive/Safe/Full の4状態があります
デフォルトではPassiveモードになりアクチュエータが使えないため、
基本的にはSafeモードでコマンドを叩きます
Fullモードを使用する際は暴走に注意してください
 駆動モードは3種類の指定方法があります
Drive(速度と半径を指定する)
Drive Direct(左の車輪と右の車輪の速度をそれぞれ直接指定)
Drive PWM(左の車輪と右の車輪の出力レートを指定)
サンプルコードでは各コマンドをユーザが指定し、値を整形して
コマンドとして送信しています
2015/12/20 20
実際に動かしてみよう!
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を各命令間に挟んでいます
アイデアは無限大!
 SNS経由でお掃除命令を送ったり…
 WebカメラやKinectで得られた情報を基に制御したり…
 音楽を演奏させたり…
 公式ハック用キットも市販されています(iRobot Create 2)
輸入モノなので市販品より高めですが…(6万円弱?)
2015/12/20 22
まとめ
 ルンバをただ使うのはもったいない!
 ルンバは「電気屋さんで買えるハッカブルデバイス」
自分好みの動きや機能を追加できる!
ロボットのプラットフォームとしても使える!
 ルンバのハックは超簡単!
リファレンスが公開されているのでハックとは言えない!?
プログラムを書いて動かすスキルより蓋を外すほうが大変?
もっとルンバを活用しようぜ!
2015/12/20 23
参考資料
 「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

Más contenido relacionado

La actualidad más candente

Exgettextの話
Exgettextの話Exgettextの話
Exgettextの話k1complete
 
Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -fusha_san
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半Tetsuya Morimoto
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorialNU_Pan
 
LLdeade Python Language Update
LLdeade Python Language UpdateLLdeade Python Language Update
LLdeade Python Language UpdateAtsushi Shibata
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Yuya Unno
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会虎の穴 開発室
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
 
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜Kosaku Ono
 
Neo4jとProlog
Neo4jとPrologNeo4jとProlog
Neo4jとPrologJun Iio
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Takayuki Shimizukawa
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialTatsuya Tojima
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読むYuta Kashino
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめgion_XY
 

La actualidad más candente (18)

Exgettextの話
Exgettextの話Exgettextの話
Exgettextの話
 
Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -Dentoo lt 4 - octave の旋律 -
Dentoo lt 4 - octave の旋律 -
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
 
Gensim
GensimGensim
Gensim
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
 
LLdeade Python Language Update
LLdeade Python Language UpdateLLdeade Python Language Update
LLdeade Python Language Update
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
 
Neo4jとProlog
Neo4jとPrologNeo4jとProlog
Neo4jとProlog
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読む
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめ
 

Similar a 掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public

インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギインメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギMasaki Yamakawa
 
天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しよう天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しようHiroki Yato
 
ロボット用マイコンボードを 設計してみた
ロボット用マイコンボードを設計してみたロボット用マイコンボードを設計してみた
ロボット用マイコンボードを 設計してみたBizan Nishimura
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようShigeo Ueda
 
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼうYasuhiro Ishii
 
Cvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 halfCvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 halftomoaki0705
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumilab
 
Why did I become a ruby committer
Why did I become a ruby committerWhy did I become a ruby committer
Why did I become a ruby committerMasaya TARUI
 
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークOpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークM Hagiwara
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519Yasuhiro Ishii
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんYukari Sakurai
 
1万件超の登録を実現したBotノウハウからマッシュアップまで
1万件超の登録を実現したBotノウハウからマッシュアップまで1万件超の登録を実現したBotノウハウからマッシュアップまで
1万件超の登録を実現したBotノウハウからマッシュアップまでMasao Takaku
 
W3C Web of Thing Interest Group 最新状況
W3C Web of Thing Interest Group 最新状況W3C Web of Thing Interest Group 最新状況
W3C Web of Thing Interest Group 最新状況Device WebAPI Consortium
 
I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御するHirokazu Nishio
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 

Similar a 掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public (16)

インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギインメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
 
天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しよう天気予報ガジェットを作りな がら、Pythonを勉強しよう
天気予報ガジェットを作りな がら、Pythonを勉強しよう
 
ロボット用マイコンボードを 設計してみた
ロボット用マイコンボードを設計してみたロボット用マイコンボードを設計してみた
ロボット用マイコンボードを 設計してみた
 
Magic Ring Buffer
Magic Ring BufferMagic Ring Buffer
Magic Ring Buffer
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
 
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
20130804 OSC京都 Raspberry Piに何かつないで遊ぼう
 
Cvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 halfCvim saisentan 半精度浮動小数点数 half
Cvim saisentan 半精度浮動小数点数 half
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
 
Why did I become a ruby committer
Why did I become a ruby committerWhy did I become a ruby committer
Why did I become a ruby committer
 
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワークOpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
 
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
 
1万件超の登録を実現したBotノウハウからマッシュアップまで
1万件超の登録を実現したBotノウハウからマッシュアップまで1万件超の登録を実現したBotノウハウからマッシュアップまで
1万件超の登録を実現したBotノウハウからマッシュアップまで
 
W3C Web of Thing Interest Group 最新状況
W3C Web of Thing Interest Group 最新状況W3C Web of Thing Interest Group 最新状況
W3C Web of Thing Interest Group 最新状況
 
I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御する
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 

掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public