Slide 1

Slide 1 text

ルンバを ハックする話 中 学 1 年 M E M E TA N ( 偽 名 )

Slide 2

Slide 2 text

⾃己紹介 • ものづくりが⼤好きな13歳です。 • 好きな食べ物はメロン、好きな飲み物はコーラとメロンソーダ、好きな 言語はJavaとC#、好きなマイコンはM5Stack、尊敬する⼈はイーロンマ スクとビルゲイツとスティーブジョブズ、将来乗りたい⾞はもちろんテ スラです。 • ソフトもハードも⼤好きで、去年は「未踏ジュニア」というのに採択さ れ、⾃作のノートパソコンを作りました。

Slide 3

Slide 3 text

今までに作ったものを紹介① 未 踏 ジ ュ ニ ア で 作 っ た 自 作 の ノ ー ト パ ソ コ ン ◆筐体は透明アクリル板を使用。 エンジニアカフェのレーザーカッターに かなりお世話になりました︕ ◆トラックパッドの部分にはラズパイを 接続した5インチタッチパネルを使用 しました。制御ソフトも⾃作しました。

Slide 4

Slide 4 text

今までに作ったものを紹介② Robloxの ゲ ー ム ◆Robloxというゲームプラットフォームの ゲームで遊ぶのが⼤好きです。 Robloxではたくさんのゲームが公開されて いて、開発環境も提供されているので ⾃分でゲームを作ることができます。 (言語はluaベース) ⼤⼈数で遊べる最新作 「おにごっこ」→ マイクラ風サンド ボックスゲーム 「Blockey」↓ ゴミ拾いゲーム 「Garbage Simulator」→ このほかにも沢山つくっています

Slide 5

Slide 5 text

ルンバのハック始めました • ルンバのハックが可能なことは小5のときから知っていてやりたかったが、 お⺟さんが許してくれませんでした。 • 最近になってやっとお⺟さんからルンバのハックの許可がおりました。 (理由としては僕の腕が認められたことと、ルンバが壊れていると思わ れていたため) →故障しているのではなくバッテリーが逝っていたのだけだったので Amazonで検索して互換品を購⼊ 純正品は1万円に対して互換品は90日保証もついて3000円︕お得です︕

Slide 6

Slide 6 text

ルンバを開ける • ネットの情報を参考にしながらやりました。 ※僕の家のルンバはルンバ500(結構古い機種)です。 • ルンバの一番上のふたを開けると接続できる部分が⾒えてきます。

Slide 7

Slide 7 text

ルンバに接続 • ルンバのハックのネット情報ではRaspberry piを接続するのが主流でし たが、ぼくはわけあってJetsonNanoを使うことにしました。 • Wi-Fiを使うためのドライバーなどセットアップしたところ、なぜか JetsonNanoが起動しなくなったので、SDカードにイメージを書き込みな おしたりして、やっと動かせるようになりました。 Jetson Nano シリアル コンバーター

Slide 8

Slide 8 text

ルンバをJetsonNanoから動かす • この動画ではPCの画面はリモートでつないだ JetsonNanoの画面です。 • https://github.com/martinschaef/roomba 上記で公開されているプログラムを使うと、そ れぞれの動作をキーボードに割り付けて操作す ることができます。 • しかしこのプログラムにはブラシを動かすプ ログラムは無かったので、⾃分でPythonで実 装して動かせるようにしました。

Slide 9

Slide 9 text

ルンバの仕様 • ルンバの仕様として詳細な情報がネット上に公開されていて、眺めるだ けでもとても面白いです。 https://www.usna.edu/Users/weaprcon/esposito/_files/roomba.matlab/Roomba_SCI.pdf https://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf https://www.irobotweb.com/~/media/MainSite/PDFs/About/STEM/Create/iRobot_Roomba_600_O pen_Interface_Spec.pdf 動き︓前後左右に動作 ブラシ(モーター)︓2か所 バキューム︓1か所 LED︓7か所 それぞれ外部から制御可能︕ センサーなどの⼊⼒も50個位あり、 値を取得可能。

Slide 10

Slide 10 text

webから実⾏できるようにしてみた • プログラムを作ってcurlコマンドで実⾏できるように しました。 • こうすることでwebブラウザから簡単に操作可能です。 • 操作用webサイトも作成しました。 ルンバ操作用webサイト 小さいですが前後左右に動くボタンがついてます 今はもっといろいろできるようになっています。 ルンバ制御コマンド

Slide 11

Slide 11 text

作成したコマンドを紹介 • さきほどのcurlから実⾏できる⾃作コマンドの仕様をまとめてみまし た。(現在も拡張中) • もし⾒たい⼈がいるならプログラムをGitHubに公開したいなと思いま す。 { " C o n t r o l T y p e " : 0 , " B r u s h T y p e s " : [ ] , " M o v e m e n t " : { " D I R " : 0 , " R O T " : 0 } , " L E D " : { " C o l o r " : 0 , " P o w e r " : 0 , " D i r t " : 0 , " M a x " : 0 , " C l e a n " : 0 , " S p o t " : 0 , " S t a t u s " : 0 } } | | | | C o n t r o l T y p e | 中 に D I R と R O T の I N T の 値 が 必 須 L E D の 操 作 こ の 中 に あ る L E D が な い 機 種 も あ る 。 ( C o n t r o l T y p e 2 で 使 用 ) 0 : ブ ラ シ の 操 作 | D I R は 位 置 C o l o r P o w e r D i r t M a x C l e a n S p o t S t a t u s の I N T が 必 須 1 : 動 き | R O T は 角 度 C o l o r : 0 ~ 2 5 5 の 値 、 0 は 緑 色 , 2 5 5 は 赤 色 メ イ ン L E D の 操 作 の 値 の 一 つ 。 2 : L E D | ル ン バ を 移 動 さ せ る ( C o n t r o l T y p e 1 で 使 用 ) P o w e r : 0 ~ 2 5 5 の 値 、 0 は 無 効 、 2 5 5 で パ ワ ー 最 大 。 メ イ ン L E D 操 作 の 一 つ 。 操 作 す る ブ ラ シ 一 覧 ( C o n t r o l T y p e 0 で 使 用 ) D i r t : 0 / 1 の 値 、 0 無 効 1 有 効 D i r t L E D の 操 作 。 ( 青 色 ) 1 : S I D E ブ ラ シ M a x : 0 / 1 の 値 、 0 無 効 1 有 効 M a x L E D の 操 作 。 ( 赤 色 ) 2 : バ キ ュ ー ム C l e a n : 0 / 1 の 値 、 0 無 効 1 有 効 C l e a n L E D の 操 作 。 ( 赤 色 ) 3 : M A I N モ ー タ ー S p o t : 0 / 1 の 値 、 0 無 効 1 有 効 S p o t L E D の 操 作 。 ( 赤 色 ) # # こ こ か ら 特 殊 S t a t u s : 0 / 1 / 1 0 / 1 1 4 : ( 1 ) 必 須 S I D E ブ ラ シ を 反 転 さ せ る 0 : O F F 5 : ( 3 ) 必 須 M A I N ブ ラ シ を 反 転 さ せ る 1 : 赤 1 0 : 緑 1 1 : 中 間

Slide 12

Slide 12 text

ドックに戻るプログラム • ドック(充電スポット)に戻るプログラムも作って みました。 • センサによってドックがどの位置にあるのか認識で きるので、ルンバを前後左右に動かしてドックの位 置に移動させます。おもしろいです︕

Slide 13

Slide 13 text

ドックに戻るプログラムの動作 • ちゃんとドックに帰ってくれました︕ w h i l e ( T r u e ) : d a t a = s e l f . s e n s o r s ( [ I N F R A R E D _ B Y T E , C H A R G I N G _ S O U R C E S _ A V A I L A B L E ] ) i f d a t a [ C H A R G I N G _ S O U R C E S _ A V A I L A B L E ] ! = 0 : s e l f . g o ( 0 , 0 ) t i m e . s l e e p ( 1 ) d a t a = s e l f . s e n s o r s ( [ I N F R A R E D _ B Y T E , C H A R G I N G _ S O U R C E S _ A V A I L A B L E ] ) i f d a t a [ C H A R G I N G _ S O U R C E S _ A V A I L A B L E ] = = 0 : # # O o p s , I t ' s n o t c h a r g i n g ! T h i s h a p p e n s s o m e t i m e s . R e t r y : s e l f . g o ( - 2 0 , 0 ) t i m e . s l e e p ( 1 ) c o n t i n u e b r e a k i f d a t a [ I N F R A R E D _ B Y T E ] = = 0 : c o n t i n u e # N o I R D a t a r e c i v e d i f d a t a [ I N F R A R E D _ B Y T E ] = = 1 7 2 o r d a t a [ I N F R A R E D _ B Y T E ] = = 1 7 3 : # p r i n t ( " T i m e t o g o ! " ) s e l f . g o ( s p e e d , 0 ) # t i m e t o g o i f d a t a [ I N F R A R E D _ B Y T E ] = = 1 6 8 o r d a t a [ I N F R A R E D _ B Y T E ] = = 1 6 9 : s e l f . g o ( 0 , s p e e d ) # T o o R i g h t i f d a t a [ I N F R A R E D _ B Y T E ] = = 1 6 4 o r d a t a [ I N F R A R E D _ B Y T E ] = = 1 6 5 : s e l f . g o ( 0 , 0 - s p e e d ) # T o o L e f t ↑プログラムの一部

Slide 14

Slide 14 text

絶賛機能追加中です • webサイトからステータス確認したり各動作を⾏ったりできるようにし ています。 ステータス 前後移動、 左右回転 ドックに戻る 速度設定

Slide 15

Slide 15 text

ルンバの今後の野望 カメラを載せて画像を撮って機械学習をさせた いです。(JetsonNanoを使ったのも、そのため) 以前、エンジニアカフェで開催されていたAI カーの勉強会に参加していたのですが、ドン キーカーというラズパイを載せた⾞でコースを 走らせてその運転を学習させて、同じように走 らせるというおもしろいことをしました。 ぼくはこのルンバを使ってそれができたらいい なと思っています。 僕の部屋からリビングまで動かすことができた ら、リビングにいるお⺟さんに何か物を配達し たりすることもできるかもしれません。 @エンジニアカフェ

Slide 16

Slide 16 text

ほかにやりたいこと • ラズパイ4を何個か用意出来たら、スパコンをつくってみたい • M5Stackのカメラでセキュリティシステムを作っているので拡張したい • ロボットアームを使ってみたい • 音楽も作ってみたい • 少し前にM5Stackで作ったビデオとオーディオのストリーミングを改良し たい • VRのアプリを作りたい • レゴマインドストームを使いたい • 光造形の3Dプリンタがほしい • スマート体重計を作りたい • ドローンを拡張改造してみたい や り た い こ と ば か り で お ⾦ が あ り ま せ ん ︕ 笑

Slide 17

Slide 17 text

ご清聴ありがとうございました。