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

Post on 24-May-2015

2.067 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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-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経由)を出せる

ソフトウェア開発者(私)としては、★部分が重要

top related