Upload
moonmile
View
2.067
Download
4
Embed Size (px)
DESCRIPTION
Raspberry Pi に Mono をインストールして、LEGO Mindestorms EV3 のモーターをロボット制御します。
Citation preview
Raspberry Pi+Mono を使って LEGO を制御
増田 智明( @moonmile ).NET ラボ Micorosft MVP C#
Moonmile Solutions
自己紹介
増田 智明 [email protected]
執筆業&プログラマ 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-FiBluetooth
専用カメラモジュール
BrickPiI2C 接続
専用液晶ディスプレイ
Linux/RaspbianDebian 互換
CPU ARM700MHz 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