0
Raspberry Pi+Mono を
使ってLEGOを制御
増田 智明(@moonmile)
.NET ラボ Micorosft MVP C#
Moonmile Solutions
自己紹介
 増田 智明 masdua@moonmile.net
 執筆業&プログラマ
 C#によるiOS, Android, Windowsアプリケーション開発入門
 逆引き大全 Visual C# 2013, Visual Basic...
「ハルロック」西餅 著
http://www.moae.jp/comic/harurock/1/1
 つい最近知った。
 電子工作の基礎な話が出てきます。
 PIC
 Raspberry Pi
 Arduino
 モーニング連載
目的
 Mono(.NET Framwork)を使っても、機器制御が簡単にできるよ
 組み込みはC言語のイメージが強いが、今となっては手軽とはいえない。
 C言語のライブラリを Python を使う例が多い。
 日本では Python ...
機器の組み合わせパターン
 機器の直接制御
 自走型のロボットを直接制御
 自走型のロボットを自律制御
直結
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
...
Raspberry Piでロボット制御をやる意味
 自走&自立型のロボットの構築
 センサーは、Arduinoを通して制御可能?
 LEGO Mindstorms EV3 のセンサーを利用
 赤外線センサー、3軸センサー、 超音波センサ...
Raspberry Pi でロボット制御をやる準備
 Raspberry Pi
 Linux(Debian)
 Mono(.net framework)
 モーター制御
 自走は車で行う(二足歩行は別に)
 I2Cモジュールでサーボ...
制御するプログラム言語
 Linux 上で、Mono を動かす
 apt-get install mono-complete で、簡単インストール
 シリアルポートへの読み書き(C言語経由)
 Bluetoothの読み込み(ファイルスト...
Raspberry Pi - BrickPi で LEGO のモーターを
制御
 Raspberry Pi に差し込むだけで動作する。
 http://www.dexterindustries.com/BrickPi/
 BrickPi ...
Raspberry Pi で Bluetooth コントローラを使
う
 標準で /dev/input/js がある。
 これを System.IO.BinaryStream で読み込んで、モーターを制御している
 PS3 Dualsto...
ロボットを遠隔操作する
 HTTP経由で BrickPiNet を制御すればOK
 簡易 HTTP サーバー
 https://github.com/moonmile/BrickPiNet/tree/master/example/WebB...
ロボットのアームを制御する
 RasPi からアームを動かす
 BrickPi -> LEGO でもアームが動くが、ここでは RasPi から直接行う。
 RasPi -> I2C モジュール → サーボモータ
 で動作させるのだが、I...
ロボットからセンサーのフィードバックを受
ける
 BrickPi 経由で超音波センサーを使う
 変換器が必要なのが分かって、現在購入中。
自走&自立型のロボットを作れると工作の幅
が広がる
 ロボットからモーターを制御する
 ロボットからアーム(サーボ)を制御する
 ロボット付属のセンサーからフィードバックを受ける
 ★ロボット内で、フィードバックを前処理できる
 ★ロ...
参考文献
 Rasberry Pi http://www.raspberrypi.org/
 BrickPi http://www.dexterindustries.com/BrickPi/
 LEGO Mindstorms EV3 ht...
Upcoming SlideShare
Loading in...5
×

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

2,285

Published on

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

Published in: Software
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,285
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
21
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×