Raspberry pi+mono を使ってlegoを制御
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Raspberry pi+mono を使ってlegoを制御

  • 1,114 views
Uploaded on

Raspberry Pi に Mono をインストールして、LEGO Mindestorms EV3 のモーターをロボット制御します。

Raspberry Pi に Mono をインストールして、LEGO Mindestorms EV3 のモーターをロボット制御します。

More in: Software
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,114
On Slideshare
1,037
From Embeds
77
Number of Embeds
3

Actions

Shares
Downloads
3
Comments
0
Likes
1

Embeds 77

https://twitter.com 60
http://www.slideee.com 16
http://s.deeeki.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Raspberry Pi+Mono を 使ってLEGOを制御 増田 智明(@moonmile) .NET ラボ Micorosft MVP C# Moonmile Solutions
  • 2. 自己紹介  増田 智明 masdua@moonmile.net  執筆業&プログラマ  C#によるiOS, Android, Windowsアプリケーション開発入門  逆引き大全 Visual C# 2013, Visual Basic 2013  逆引き大全 iPhone/iPad アプリ開発  作って覚える iPhone/iPad アプリ入門
  • 3. 「ハルロック」西餅 著 http://www.moae.jp/comic/harurock/1/1  つい最近知った。  電子工作の基礎な話が出てきます。  PIC  Raspberry Pi  Arduino  モーニング連載
  • 4. 目的  Mono(.NET Framwork)を使っても、機器制御が簡単にできるよ  組み込みはC言語のイメージが強いが、今となっては手軽とはいえない。  C言語のライブラリを Python を使う例が多い。  日本では Python をあつかう人が少ないのが難点  C# でもよいのでは?  画像解析とロボット制御の組み合わせをやってみたい  ロボット制御を C# から  画像解析 OpenCV + .NET Framework
  • 5. 機器の組み合わせパターン  機器の直接制御  自走型のロボットを直接制御  自走型のロボットを自律制御 直結 Wi-Fi/Bluetooth Wi-Fi/Bluetooth 直結
  • 6. 具体的な機器  ノートPCの利用  スマートフォンの利用  自律パターン Raspberry Pi  シリアル制御 Arduino  LEGO Mindstorms EV3  コントローラーの利用
  • 7. 機器からフィードバックが必要か?  温度センサーの解析の仕組み  温度センサーの値を取得するのみ  ロボットアームの制御の仕組み  アームの位置を誰が検知するのか?  サーボの位置だけで決められる?  ロボットが移動したとき  誰がロボット位置を知るのか?  誰が次の位置を示せるのか?  どうやって次の位置を示すのか?
  • 8. 機器を直接制御  PICプログラミング(ROMに書き込み)  どれもチップと制御機器(センサーなど)が直結している。  チップとPCが近い場所にある  基盤設計により小さくできる  小さな箱に組み入れる  回路を組む必要があるので、私には手におえない。
  • 9. 汎用プログラムで制御  Arduinoでプログラミング  .NET Micro frameworkでプログラミング  LEGO Mindstorems  開発環境が、CやC#で用意されている。  PICよりも簡単にできる
  • 10. 汎用OSで制御  Raspberry Pi  ミニPC  Android pc  実行環境にOSが入っているので、実は言語を問わない。  OS特有の機能を使える  機器が大き目になる
  • 11. 自走型ロボットを制御を考える  ロボットとPCは無線で接続  無線LAN, Bluetooth制御  無線先を機器そのものにする。機器にWi-Fiなどが必要  制御するのは、コントローラで。  ロボットが視界から外れると動けない
  • 12. 自走型ロボットにカメラを付ける  自走型ロボットにカメラを付ける  各種センサーを付けた自走型ロボット  制御は人間がリアルタイムでやる  Wi-Fiが届かなかったどきはどうする?  有線LANによるマニピュレータ方式  遠隔操作などはこれ
  • 13. 自走&自立型ロボットを制御  ロボット自身がセンサーを判断する  ラインを動くロボットなどがそれ  同時に遠隔操作を可能にする  ロボットの位置情報  ロボットの視界カメラ
  • 14. Raspberry Pi – Model B Wi-Fi Bluetooth 専用カメラ モジュール BrickPi I2C接続 専用液晶 ディスプレイ Linux/Raspbian Debian互換 CPU ARM 700MHz 512MB 私のは初期ロットなので256MB
  • 15. Raspberry Piでロボット制御をやる意味  自走&自立型のロボットの構築  センサーは、Arduinoを通して制御可能?  LEGO Mindstorms EV3 のセンサーを利用  赤外線センサー、3軸センサー、 超音波センサーなど  センサーによるフィードバックを Raspberry Pi 内で判断する  自己制御プログラム  C#やF#を使ってロジックを組む  TDD、Visual Studio、Xamarin Studio の利用  母艦PCと通信する  Raspberry Piと母艦PCで通信する(Wi-Fi)  通信量を制限できる  前処理済みのカメラデータなど
  • 16. Raspberry Pi でロボット制御をやる準備  Raspberry Pi  Linux(Debian)  Mono(.net framework)  モーター制御  自走は車で行う(二足歩行は別に)  I2Cモジュールでサーボ制御  センサー制御  Arduino経由でシリアル制御?  LEGO Mindstorms EV3 のセンサーを 流用  コントローラー  PS3 Dualstock 3 コントローラー  Wii コントローラー?  Arduinoのコントローラー?  スマートフォン  ノートPCなど
  • 17. 制御するプログラム言語  Linux 上で、Mono を動かす  apt-get install mono-complete で、簡単インストール  シリアルポートへの読み書き(C言語経由)  Bluetoothの読み込み(ファイルストリーム経由)  センサー読み取りを制御する → C#  通信は HTTP → 簡易 HTTP サーバを作成  クライアント  ノートPC -> C#  スマートフォン -> Xamarin.iOS/Android で C# を使う
  • 18. Raspberry Pi - BrickPi で LEGO のモーターを 制御  Raspberry Pi に差し込むだけで動作する。  http://www.dexterindustries.com/BrickPi/  BrickPi のサンプルは C, Python なので、C# で使えるようにした。  https://github.com/moonmile/BrickPiNet
  • 19. Raspberry Pi で Bluetooth コントローラを使 う  標準で /dev/input/js がある。  これを System.IO.BinaryStream で読み込んで、モーターを制御している  PS3 Dualstock を使ってロボット制御ができる。  http://github.com/moonmile/BrickPiNet/blob/master/src/BrickPiNet/BPiJoystick. cs  Welcome to QtSixA!  DualShock3コントローラー  http://qtsixa.sourceforge.net/
  • 20. ロボットを遠隔操作する  HTTP経由で BrickPiNet を制御すればOK  簡易 HTTP サーバー  https://github.com/moonmile/BrickPiNet/tree/master/example/WebBrick  iPhone/Android用クライアント  https://github.com/moonmile/BrickPiNet/tree/master/example/WebBrickClient
  • 21. ロボットのアームを制御する  RasPi からアームを動かす  BrickPi -> LEGO でもアームが動くが、ここでは RasPi から直接行う。  RasPi -> I2C モジュール → サーボモータ  で動作させるのだが、I2C モジュールを買い忘れてた orz  購入済み。プログラミング途中
  • 22. ロボットからセンサーのフィードバックを受 ける  BrickPi 経由で超音波センサーを使う  変換器が必要なのが分かって、現在購入中。
  • 23. 自走&自立型のロボットを作れると工作の幅 が広がる  ロボットからモーターを制御する  ロボットからアーム(サーボ)を制御する  ロボット付属のセンサーからフィードバックを受ける  ★ロボット内で、フィードバックを前処理できる  ★ロボット内で、フィードバックを内部処理して、モーターを制御する  ロボットから母艦へ通信(Wi-Fi)する  ★母艦からロボットへ指令(HTTP経由)を出せる  ソフトウェア開発者(私)としては、★部分が重要
  • 24. 参考文献  Rasberry Pi http://www.raspberrypi.org/  BrickPi http://www.dexterindustries.com/BrickPi/  LEGO Mindstorms EV3 http://education.lego.com/ja-jp/preschool-and- school/secondary/mindstorms-education-ev3  Arduiono http://www.arduino.cc/  meArm http://www.phenoptix.com/products/mearm-pocket-sized-robot-arm  FEZ Spider https://www.ghielectronics.com/docs/170/fez-spider  「ハルロック」http://www.moae.jp/comic/harurock/1/1