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

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

on

  • 604 views

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

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

Statistics

Views

Total Views
604
Views on SlideShare
536
Embed Views
68

Actions

Likes
1
Downloads
1
Comments
0

3 Embeds 68

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

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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