Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ルンバをハックする話

27ec11888b9deb5c26ab4c85e97ec000?s=47 MEMETAN
February 19, 2021

 ルンバをハックする話

27ec11888b9deb5c26ab4c85e97ec000?s=128

MEMETAN

February 19, 2021
Tweet

Transcript

  1. ルンバを ハックする話 中 学 1 年 M E M E

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

    れ、⾃作のノートパソコンを作りました。
  3. 今までに作ったものを紹介① 未 踏 ジ ュ ニ ア で 作 っ

    た 自 作 の ノ ー ト パ ソ コ ン ◆筐体は透明アクリル板を使用。 エンジニアカフェのレーザーカッターに かなりお世話になりました︕ ◆トラックパッドの部分にはラズパイを 接続した5インチタッチパネルを使用 しました。制御ソフトも⾃作しました。
  4. 今までに作ったものを紹介② Robloxの ゲ ー ム ◆Robloxというゲームプラットフォームの ゲームで遊ぶのが⼤好きです。 Robloxではたくさんのゲームが公開されて いて、開発環境も提供されているので ⾃分でゲームを作ることができます。

    (言語はluaベース) ⼤⼈数で遊べる最新作 「おにごっこ」→ マイクラ風サンド ボックスゲーム 「Blockey」↓ ゴミ拾いゲーム 「Garbage Simulator」→ このほかにも沢山つくっています
  5. ルンバのハック始めました • ルンバのハックが可能なことは小5のときから知っていてやりたかったが、 お⺟さんが許してくれませんでした。 • 最近になってやっとお⺟さんからルンバのハックの許可がおりました。 (理由としては僕の腕が認められたことと、ルンバが壊れていると思わ れていたため) →故障しているのではなくバッテリーが逝っていたのだけだったので Amazonで検索して互換品を購⼊

    純正品は1万円に対して互換品は90日保証もついて3000円︕お得です︕
  6. ルンバを開ける • ネットの情報を参考にしながらやりました。 ※僕の家のルンバはルンバ500(結構古い機種)です。 • ルンバの一番上のふたを開けると接続できる部分が⾒えてきます。

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

    Nano シリアル コンバーター
  8. ルンバをJetsonNanoから動かす • この動画ではPCの画面はリモートでつないだ JetsonNanoの画面です。 • https://github.com/martinschaef/roomba 上記で公開されているプログラムを使うと、そ れぞれの動作をキーボードに割り付けて操作す ることができます。 •

    しかしこのプログラムにはブラシを動かすプ ログラムは無かったので、⾃分でPythonで実 装して動かせるようにしました。
  9. ルンバの仕様 • ルンバの仕様として詳細な情報がネット上に公開されていて、眺めるだ けでもとても面白いです。 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個位あり、 値を取得可能。
  10. webから実⾏できるようにしてみた • プログラムを作ってcurlコマンドで実⾏できるように しました。 • こうすることでwebブラウザから簡単に操作可能です。 • 操作用webサイトも作成しました。 ルンバ操作用webサイト 小さいですが前後左右に動くボタンがついてます

    今はもっといろいろできるようになっています。 ルンバ制御コマンド
  11. 作成したコマンドを紹介 • さきほどの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 : 中 間
  12. ドックに戻るプログラム • ドック(充電スポット)に戻るプログラムも作って みました。 • センサによってドックがどの位置にあるのか認識で きるので、ルンバを前後左右に動かしてドックの位 置に移動させます。おもしろいです︕

  13. ドックに戻るプログラムの動作 • ちゃんとドックに帰ってくれました︕ 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 ↑プログラムの一部
  14. 絶賛機能追加中です • webサイトからステータス確認したり各動作を⾏ったりできるようにし ています。 ステータス 前後移動、 左右回転 ドックに戻る 速度設定

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

    僕の部屋からリビングまで動かすことができた ら、リビングにいるお⺟さんに何か物を配達し たりすることもできるかもしれません。 @エンジニアカフェ
  16. ほかにやりたいこと • ラズパイ4を何個か用意出来たら、スパコンをつくってみたい • M5Stackのカメラでセキュリティシステムを作っているので拡張したい • ロボットアームを使ってみたい • 音楽も作ってみたい •

    少し前にM5Stackで作ったビデオとオーディオのストリーミングを改良し たい • VRのアプリを作りたい • レゴマインドストームを使いたい • 光造形の3Dプリンタがほしい • スマート体重計を作りたい • ドローンを拡張改造してみたい や り た い こ と ば か り で お ⾦ が あ り ま せ ん ︕ 笑
  17. ご清聴ありがとうございました。