LEGO Mindstorms NXT による ビジュアルフィードバック制御

LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
作成:初版
橋本研究室
2015/11/16
LEGO Mindstorms NXT による
ビジュアルフィードバック制御
初版
中京大学
工学部
橋本研究室
作成者:有賀治樹,北村友香
【注】本資料は,橋本研究室所属学生による実習作品であり,記載内容に関する質問等には回答できま
せんので予めご了承ください.また,記載内容の信頼性,および記載内容に基づいて製作・試作された
ソフトウェア,ハードウェア等の動作に関しては,一切責任を負いません.
1 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
概要
本手順書は,LEGO Mindstorms NXT を用いてビジュアルフィードバック制御をおこなうための手順
を記したものである.この手順書における,ビジュアルフィードバック制御の構成を図 1 に示す.PC で
の画像処理結果をもとにして生成したモータ制御信号を NXT に送信し,NXT が動作するという一連の流
れを繰り返す.
PC では画像処理プログラム,NXT ではモータ制御プログラムを実行し,両プログラム間で通信をおこ
なうモジュールを設けることによって,ビジュアルフィードバック制御をおこなう.図 2 に NXT と PC
の動作の流れを示す.
カメラ
PC
カメラ画像
制御信号
図 1. ビジュアルフィードバック制御の構成
PCの動作
NXTの動作
PC動作を初期化
画像取り込み
画像処理
ロボット動作を初期化
Bluetooth
通信
PCからの信号を待つ
NO
モーター動作信号を生成
信号をロボット側に送信
wait
信号が来たか?
YES
動作終了させるか?
信号に従ってモーターを動作
YES
終了
図 2. ビジュアルジードバック制御の流れ
2 / 19
NO
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
(1)インストールマニュアル
1. 必要物品
① PC(OS は windows7)
② Microsoft Visual Studio 2010(以下 VS)
③ LEGO Mindstorms NXT2.0 一式
④ Web カメラ
⑤ USB Bluetooth Dongle(以下 BD)
なお,Web カメラと BD については,以下の製品で動作を確認済み.
Web カメラ:HD Webcam C270
http://www.logicool.co.jp/ja-jp/webcam-communications/webcams
BD:F9847 Bluetooth Dongle
http://lego.wikia.com/wiki/F9847_Bluetooth_Dongle
2. ソフトウェアの事前準備
① PC に VS をインストール
※VS2008,VS2010 でのみ動作確認済み.
② OpenCV のダウンロード
下記のサイトの「opencv-win」の「2.3.1」の「OpenCV-2.3.1-win-superpack.exe」を
クリックし,ダウンロード.
http://sourceforge.net/projects/opencvlibrary/files/?source=navbar
③ OpenCV のインストール
1. 保存された「OpenCV-2.3.1-win-superpack.exe」をクリックし,実行.
2. すべての質問にデフォルトで回答し,インストール.
④ VS で OpenCV-2.3.1 を使用できるようにパスなどを設定
詳しい設定方法は,下記のサイトを参照.
http://imagingsolution.net/program/opencv/opencv2-3-1-downlaod-install/
https://c5155196669c564620ef9c12a25f195f52ea786c.googledrive.com/host/0By7jP
ChnijtHSlp1QnlYanNhOE0/opencv231/index.html
⑤ BricxCC(Bricx Comand Center)のダウンロード
下記のサイトの「bricxcc_setup_3389.exe」をクリックし,ダウンロード.
http://sourceforge.net/projects/bricxcc/files/bricxcc/bricxcc%203.3.8.9/
⑥ BricxCC のインストール
保存された「bricxcc_setup_3389.exe」をクリックし,実行.
図 3 の画面の「実行」を選択.
図 4 の画面の「Next」を選択していくとインストールが完了する.
(Yes と NO を選択する場合は Yes を選択する)
3 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
図3
図4
⑦ Fantom Driver のダウンロード
下記のサイトの「NXT_USB_Driver_120.zip」
(図 5 赤枠)をクリックし,ダウンロード.
http://www.robotc.net/support/troubleshooting/fantom-driver.php
⑧ Fantom Driver のインストール
1. 保存された「NXT_USB_Driver_120.zip」を解凍.
2. 解凍したフォルダ内の「setup.exe」をクリックし,実行.
3. 図 6 の「next」を選択していくとインストールが完了する.
4 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
図 5
図 6
⑨ BD(PC)と NXT との接続の設定
PC に BD を接続し,NXT との接続を確認.詳細は(4)に記載
5 / 19
橋本研究室
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
(2)NXT によるビジュアルフィードバック制御の実行手順
図 7 に LEGO Mindstorms NXT を用いたビジュアルフィードバック制御の手順を示す.Step1~
Step6 に従って,PC および NXT のプログラムを起動させることによって,ビジュアルフィードバ
ック制御を実現できる.以下に Step1~Step6 の詳細な手順を示す.
開始
Step1
COMポート番号の確認
Step2
Microsoft Visual Studioの起動
Step3
PCプログラムの修正
Step4
PCプログラムの実行
Step5
NXTの起動とプログラムの実行
Step6
NXTとPCプログラムの終了
終了
図7
6 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
Step 1. COM ポート番号の確認
図 8 のように USB Bluetooth Dongle を PC に接続する.
図8
Bluetooth Dongle を接続すると,タスクバーの右にあるインジケーターに Bluetooth デバイスの
アイコンが生成される(図 9 の赤枠)
.このアイコンを左クリックする.
※アイコンが生成されない場合は,コントロールパネル->ハードウェアとサウンド->デバイスとプリン
ター->Bluethooth デバイスをクリックする.
図9
Bluetooth デバイスの表示(図 10 の赤枠)を選択する.
図 10
7 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
接続している NXT のデバイスが表示されるので,右クリックしプロパティを選択する.
※Bluetooth による PC と NXT の接続は,
(4)で説明.
図 11
「ハードウェア」タブを選択し,COM ポート番号を確認する.
この COM ポート番号を PC のプログラムで使用するためメモしておく.
(図 12 の場合は COM8)
図 12
8 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
Step 2.
橋本研究室
Microsoft visual studio の起動
「Microsoft Visual Studio 2010」を起動する.
事前に作成したソリューションファイルを立ち上げる.
Step 3.
PC プログラムの修正
立ち上げたソリューションファイルの「ソースファイル」を右クリックし,
「追加」の「既存の項目」を
クリックし,実行したいソースファイルを追加する.
図 13
ソースコードの COM ポートの設定部分(図 14 の赤枠)の COM ポート番号を Step1 でメモした番号に
変更する.
※COM ポートの設定が間違っていると実行時にエラーが発生する.
図 14
9 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
Step 4.
PC プログラムの実行
「ビルド」→「ソリューションのビルド」をクリックしビルドする.
図 15
ビルドに成功していたら,
「デバッグ」→「デバッグなしで実行」をクリックする.
図 16
10 / 19
橋本研究室
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
Step 5. NXT の起動とプログラムの実行
1. LEGO Mindstorms NXT の決定ボタン(図 17)を押し,NXT を起動させる.起動させると図 17 の
右図の起動画面が表示される.
図 17. NXT の各ボタンの名称と起動画面
2. 「My Files」を選択し,決定ボタンを押す.これにより,図 18 の画面が表示される.
図 18
3. 「Software files」を選択し,決定ボタンを押す.これにより,図 19 の画面が表示される.
図 19
11 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
4. 実行したいプログラムを選択し,決定ボタンを押す.
(図 19 では LEGO1)これにより,図 20 の画
面が表示されるので,続けてもう一度決定ボタンを押すことで,NXT のプログラムが起動する.
図 20
Step 6. NXT と PC プログラムの終了
NXT の戻るボタン(図 17)を押すことでプログラムが停止する.
※長押しすると,電源が切れるので注意すること.
PC のプログラムの終了条件が設定されていない場合は,Ctrl キーと“C”を同時に押すことでプログラム
を停止させる.
12 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
(3)NXT と PC のプログラムの作成
PC と NXT で通信を実現するためのプログラムについて説明する.各プログラムの作成方法を以下に示
す.
NXT のプログラム作成
NXT で動作するプログラムは,BricxCC というソフトウェアを使い nxc という言語を用いて作成する.
(1)でインストールした BricxCC を起動する.
BricxCC を起動する際に NXT と接続するため,あらかじめ Bluetooth で PC と NXT を接続しておく
か,USB で NXT と PC を直接つないでおく必要がある.
※Bluetooth での PC と NXT の接続方法は(4)を参照.
BricxCC を起動させると図 21 の画面が表示される.Port(図 21 の左上)で接続したい NXT を選択
し,Brik Type(図 21 の右上)を NXT に変更した上で OK ボタンを押す.これにより BricxCC が起
動する(図 22)
.
※USB 接続の場合は,Port は usb を選択する.
図 21
図 22
File の New を選択すると新しいソースファイルが開くので,ここでプログラムを開発する.開発言
語は,基本的に C 言語に似ている. BricxCC での開発言語については,以下のサイトを参照.
http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html
13 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
プログラムを作成後,NXT にプログラムを転送する.主要な操作をおこなうボタンを図 23 に示す.
コンパイル
転送
実行
停止
図 23
図 24 に NXT のサンプルコードを示す.
サンプルコードでは,NXT のポート A,B につながれたモータを Bluetooth 経由で得られた制御信号
の速度で回転させる.GetBTInputBuffer( )を使うことで,PC から Bluetooth 経由で送られた制御信
号を取得できる.関数の詳細は,下記のサイトを参照.
http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/index.html
NXT のポートB のモータを
speed_left の速度で回す関数
Bluetooth 経由でデータを
取得する関数
NXTの画面に x を
表示する関数
並列タスクを
処理する関数
図 24
14 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
PC のプログラム作成
PC で動作するプログラムは,VS を使用して作成する.
VS を起動し,図 25 の赤枠で示した「新しいプロジェクト」を選択する.
図 25
「新しいプロジェクト」を選択すると,図 26 の画面が表示される.図 26 の赤枠で示した「Win32
コンソールアプリケーションを」選択し,新規プロジェクトの名前を入力した後,「OK」を押す.
図 26
15 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
図 27 のウィンドウが立ち上がるので,
「次へ」を選択する.
図 27
図 28 の赤枠で示した「空のプロジェクト」にチェックし,右下の「完了」ボタンを押す.
図 28
以上の処理により,プロジェクトの作成が完了する.
16 / 19
橋本研究室
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
次に新しいソースファイルを作成する.
プロジェクトを作成すると図 29 のようにソリューション エクスプローラが立ち上げるので,
「ソース
ファイル」を右クリックし,
「追加」→「新しい項目」を選択する.
図 29
図 30 の「C++ファイル(.cpp)
」を選択し,ファイル名を入力して「追加」を押す.
図 30
これらの処理により,新しいソースファイルの作成が完了.
17 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
このソースファイルにプログラムを書いていく.
図 31 に NXT との通信をおこなうためのサンプルコードを示す.
20 行目の CreateFileA( )で Bluetooth と接続しているポートを開き,42 行目の WriteFile( )でデータ
を送信する.サンプルコードでは,100 という値を送信している.buffer という配列が 150 個の要素
を持っているのは,150 個ぐらいの要素を持つデータを一度に送ると NXT でデータを受け取る際の
ミスが少なかったためである.
図 31
18 / 19
LEGO MindstormsNXT によるビジュアルフィードバック実験システム開発資料
Copyright:中京大学工学部
橋本研究室
(4)NXT と PC の接続
NXT と PC の接続の手順
①PC と NXT を起動させる.
②NXT の左右の矢印ボタンを使い,
「Bluetooth」→「On/Off」→「On」の順番で決定ボタンを押
すことで NXT の Bluetooth 通信機能をオンにする.
③BD を PC に接続するとデスクトップの右下に Bluetooth のアイコン(図 9)が表示されるので右
クリックし,
「Bluetooth デバイスの追加」を選ぶ.
※Bluetooth が接続されるまでに時間がかかることがある.
④PC 側に NXT が表示されるのでそれをダブルクリックする.(図 11)
※通信したい NXT が表示されない場合の対処方法
NXT と PC との距離が遠い → NXT と PC を近づける.
すでに接続している → 「Bluetooth デバイスの表示」で確認し,接続を切り,
① からやり直す.
⑤NXT の画面に図 32 の表示が出るので,そのまま決定ボタンを押す.
図 32
⑥PC の画面に図 33 の表示が出るので,1234 とキーボードで入力し,
「次へ」を押す.
図 33
これらの処理によって,接続が完了.
19 / 19