守谷工房の製作品3へ
守谷工房
Topへ
・
Mindstorms NXT挑戦1(2022.6.10)
Lego Mindstorms
をご存じでしょうか。
レゴブロック
から派生した
プログラミング可能な一連の学習支援教材です。機構部品や能動
部品、プロセッサに接続できるセンサーなどを含みます。ホビーセット、
エキスパートビルダーセット、テクニックなどのシリーズを経て1998年に
RCX、2006年にNXT、2013年に現行のEV3へと発展しています。
RCX~EV3とは、ブロック体の中にプロセッサが組み込まれた機構
制御の中心モジュールで、EV3にはメモリ64MBが実装された
ARM9
が搭載されています。写真は工房保有のブロック体(NXT
インテリジェントブロック)で、販売・サポートとも既に終了しています。
NXTのプロセッサは
ARM7
、256KBのフラッシュメモリと
64KBのRAM、さらにコプロセッサ
Atmel AVR
を内蔵します。
テクニックのシリーズで、大きなIFボックスを介して
LOGO言語
で制御していた頃と隔世の感があります。
RCXに付属するプログラミングアプリ
ROBOLAB
です。初期のNXTにも同梱されていたものです。
Mindstormsに付属するアクチュエータやセンサーを
制御し、GUI操作で簡単にプログラムを作成できます。
その後、NXT用に開発されたプログラミングアプリです。
現在も
LEGO Education
からダウンロード可能です。
各種ユーザーマニュアルも
こちら
や
こちら
からダウンロード可能です。
詳細は分かりませんが、NXT関連製品の中に、C言語、C#、
Java、mrubyによるプログラミングを可能にするガイドブックが
存在します。汎用言語を導入することにより、GUIベースアプリ
では到底不可能な、複雑な制御を記述することができるでしょう。
そして、NXTには写真のような各種のセンサーが付属します。
タッチ、サウンド、光、超音波に加え、オプションでカラー、温度、
距離、IRシーク、コンパス、あげく加速度、
ジャイロ
まで揃って
います。汎用言語と豊富なセンサーを組み合わせることで、
教育用にとどまらず
研究・開発目的
にも応用できるでしょう。
実際ネット上を検索してみると、多くの大学、工学部で
制御の実験・実習に利用されていることが分かります。
京都大学工学部電気電子工学科のサマーキャンプ、
立命館大学理工学部の電子情報工学演習など。
城西国際大学メディア学部では、
Microsoft Robotics
Developer Studio
による制御が検討されています。
九州工業大学システム創成情報工学科では、
NXTによるものづくり入門実習が試行されています。
こちらは
沼津工業高等専門学校電子制御工学科
のWEBページです。
同校牛丸先生(教授)の研究室では、制御工学の実験・実習にNXTを
活用されています。制御プログラムの開発環境として
brickOS
、
NQC
、
RobotC
、そして
nxtOSEK
を導入・整備され、学生向けにWEB版の
優れたチュートリアルを提供されています。牛丸先生の教材に倣い、
制御工学を取り入れたNXTの本格的な制御に挑戦したいと思います。
NXTの制御内容を汎用言語を用いて記述する環境は、
沼津工専
で
紹介されているだけでもいくつかの選択肢があります。これらの中から
nxtOSEK
を組み込んだ環境を取り上げることにします。
OSEK
とは、
ドイツ自動車産業が規定した自動車電子制御(ECU)用OSの業界
標準仕様で、この
OSEK
に準拠したNXT用OSが
nxtOSEK
(だそう)
です。C/C++言語による開発環境を提供し、NXTのアクチュエータ、
各センサーを制御するAPIが含まれています。チュートリアルの項目を
眺めると、「Ⅲ.実践編」にライントレースの事例があり、2値制御から
P制御、PD制御、さらにPID制御と発展していきます。何と制御工学の
威力を、NXTで試してみることができるわけです、チャレンジしましょう。
チュートリアルの最初は、
nxtOSEK
を
動作させる環境を構築する作業です
。
Windows上に疑似UNIX環境を構築
する方法として、
Cygwin
を導入します。
CygwinのWEBサイト
からインストーラをダウンロード
します。
setup-X86 64.exe
が推奨されていますが、
ARM用コンパイラが32ビットのため
setup-X86.exe
を使用します。
インストーラを起動します。ほとんど
「次へ」を押していくだけです。
必要なモジュールを、インターネットから
その都度ダウンロードするよう指定します。
インストールフォルダを指定します。
「C:¥cygwin」のままなので「次へ」。
ダウンロードファイルの保存先を指定します。デフォルトの
ユーザフォルダのままでは使いにくいので変更します。
インターネット接続に使用するプロキシの選択
ですが、システムの設定にお任せで「次へ」。
モジュールのダウンロードサイトを選びます。いくつか
試してみましたが多少スピードが異なる程度です。
各FTPサイトのディレクトリから必要
ファイルのダウンロードが開始されます。
Cygwin
に組み込むパッケージを選ぶため、
ここでそのメニューが表示されます。
チュートリアルには
Devel
カテゴリから
make
、
gcc-
common
、
g++
を選択するよう指示されています。
ですが、
Cygwin
のバージョンが異なるせいか
名前が一致するパッケージを見つけられません。
gcc-common
の代わりに
gcc-core
を、
g++
の代わりに
gcc-g++
を選びます。
当時のバージョンに準拠しているので、仕様が変更
されているようです。一応インストール完了です。
チュートリアルの指示に沿って、次に
GNU ARM
をインストールします。
GNU ARM
は、
GCC
(GNU Compiler Collection)に含まれる
ARM7
(ATMEL AT91SAM7S256)コアプロセッサに対応するコンパイラで、
bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4.exe
は32ビット版です。
インストーラを起動するとセット
アップウィザードが表示されます。
ほとんど
Next
を押して
いくだけで簡単です。
Cygwin
からパスを通しやすくするため、セット
アップフォルダを
C:¥cygwin
下に変更します。
Select Components
の画面で
Big Endrian
のチェックを外します。
また、
Little Endian
内
Floating
Point Unit
のチェックも外します。
スタートメニューフォルダの有無と
フォルダを置くディレクトリを指定します。
Select Additional Tasls
の画面で、
Install
Cygwin DLL
のチェックを外します(インストール済)。
必要な設定が完了し、実際に
インストールが実行されます。
インストール完了時、
Add the executable directory
the PATH valuable
のチェックは必要ないそうです。
C:cygwin
下に
GNUARM
フォルダが作成されています。
Windows環境に慣れた感覚では、聞き覚えの無い用語や
システム構成に戸惑うばかりです。現時点で何を作業して
いるのか見失うこともしばしばです。次に、NXTを制御する
本体である
nxtOSEK
をインストールします
。
v214b3
が
最新バージョンと表示されていますが、
v218
をDLします。
インストールと言っても圧縮ファイルを
フォルダを指定して展開するだけです。
Cygwin
からのディレクトリ移動がしやすい
よう、
C:¥Cygwin
下に展開します。
まだ
NXT Drive
r、
NeXTTool
、
拡張ファームウェア
等々
インストールが続きますが、一度
Cygwin
を起動してみます。
問題なく起動しプロンプトが表示されます。
正常にインストールされているようです。
cd
コマンドにより
nxtOSEK
フォルダに移動します。
nxtOSEKインストール時に、CやC++の
サンプルプログラムが用意されています。
samples_c/helloworld
に移動
します。有名なテストプログラムです。
make
コマンドを組込み済なのでビルド処理(コンパイル)され
実行ファイル
helloworld_OSEK.rxe
ができるはずですが、
何やら・・どころか
全く訳の分からない
状況です。画面一杯に
メッセージ(多分エラーコメント)が表示され、実行ファイルが
生成された気配はありません。コメントを理解できれば問題の
原因や対処方法が分るでしょうけれど、そもそも
LinuxOS
の
操作方法を最低限理解もせず、チュートリアルに頼っての環境
構築などそもそも無謀です。さて、無謀のままでメッセージの
解読に挑むか、最初からセットアップをやり直すか、心機一転
LinuxOS
の操作方法から学ぶか、どれもお先が暗いです。
守谷工房の製作品3へ
守谷工房
Topへ