Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Pythonでルンバをハックしてみた Koki Miura(@k_miura_io)
Slide 2
Slide 2 text
自己紹介 • 三浦 耕生(こうき) • バックエンドエンジニア • 鯱.py 運営 • JAWS UG名古屋&神戸 運営 • Cloudflare Meetup 名古屋 運営 @k_miura_io koki.miura05
Slide 3
Slide 3 text
Discordの参加お待ちしております! https://discord.gg/AJ99S4mp9T
Slide 4
Slide 4 text
今から3年ぐらい前、ハドフで発見
Slide 5
Slide 5 text
しかし、ずっと使ってなかった • ルンバ自体は持ってたけどそもそも使ってなかった • リビングに犬がいて何かいたずらされないか心配 だった
Slide 6
Slide 6 text
一人暮らしを始める ※画像はイメージです
Slide 7
Slide 7 text
自宅のルンバが大活躍 • 長年放置しててバッテリーが死んでたが、Amazonの 互換バッテリーに交換してあっさり動いた • 自分のデスク意外はものが散らかってなくて割と広々し ているのでかなりのびのびと動いてくれてリビングの掃 除をする手間が省けた
Slide 8
Slide 8 text
こいつの出番だ!
Slide 9
Slide 9 text
やってみた
Slide 10
Slide 10 text
Roomba Open Interface(ROI) • iRobotが定義したルンバを制御するためのソフト ウェアインターフェース • 移動だけじゃなくて、センサーデータの取得やコマ ンドを呼び出すなど一連の制御ができる • Mini-DINポートを使ってPCやマイコンとシリアル通 信を行う https://edu.irobot.com/learning- library/create-2-oi-spec
Slide 11
Slide 11 text
iRobotの教育向けプロダクト • 昔からiRobotはルンバをベースにした教育用ロ ボットとしてCreateというロボットを製造していた • 掃除機能が無い代わりに空いたスペースに ArduinoをRaspberry Piを突っ込む想定 • 過去のロボットにまつわる論文を見ているとCreate を使用した事例をよく見かけるぐらい研究用途でも 使われている
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
このケーブルが何者なのかはわからずw
Slide 14
Slide 14 text
出るのはだいたいこれ
Slide 15
Slide 15 text
気を取り直して…
Slide 16
Slide 16 text
ハードウェア • iRobot Model # 4822(USBシリアルケーブル) • Roomba 760 • Raspberry Pi 3 Model A+
Slide 17
Slide 17 text
PyRoombaAdapter • ROIをPythonで扱いやすいよ うに抽象化したライブラリ • 内部ではPySerialを使ってい るのでその感覚でポート指定 すれば簡単に動かせそう https://github.com/AtsushiSakai/PyRoombaAdapter
Slide 18
Slide 18 text
とりあえず動かす
Slide 19
Slide 19 text
動かしてみた
Slide 20
Slide 20 text
何か音楽を流す • send_song_cmdで自由にメロディを流すことができる • MIDIに対応しており、音階はMIDIのノートナンバーを 指定する • ノートナンバーとその音の長さをリスト形式でやるス タイル
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
ミュージックホーン を再現してみる
Slide 23
Slide 23 text
鳴らしてみる
Slide 24
Slide 24 text
ルンバのボタン操作をする • send_buttons_cmdメソッドを使うことでROI経 由でボタンを押すような操作を実行できる • 引数で押したいボタンを指定することでそ の操作を実行できる • ボタンは1/6秒押した時と同じ挙動を再現 するらしい
Slide 25
Slide 25 text
ミュージックホーン を鳴らしてホーム ベースに戻る
Slide 26
Slide 26 text
動かしてみる
Slide 27
Slide 27 text
今回のブログ https://bit.ly/4jqrQ5r
Slide 28
Slide 28 text
やたらスターをつけてもらえたw
Slide 29
Slide 29 text
読者数が急に 増えたw
Slide 30
Slide 30 text
公式でピックアップ してもらったw
Slide 31
Slide 31 text
まとめ • ジャンクで見つけたケーブルが見事に機能してルンバをハックできた • iRobotのインターフェースが良くできていてプログラムで自由にルンバ を操作できる仕組みが整っていた • PyRoombaAdapter結構便利
Slide 32
Slide 32 text
END