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