
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
Driver、NeXTTool、拡張ファームウェア等々
インストールが続きますが、一度Cygwinを起動してみます。
|

問題なく起動しプロンプトが表示されます。
正常にインストールされているようです。
|

cdコマンドによりnxtOSEK
フォルダに移動します。
|

nxtOSEKインストール時に、CやC++の
サンプルプログラムが用意されています。
|

samples_c/helloworldに移動
します。有名なテストプログラムです。
|

makeコマンドを組込み済なのでビルド処理(コンパイル)され
実行ファイルhelloworld_OSEK.rxeができるはずですが、
|

何やら・・どころか全く訳の分からない状況です。画面一杯に
メッセージ(多分エラーコメント)が表示され、実行ファイルが
生成された気配はありません。コメントを理解できれば問題の
原因や対処方法が分るでしょうけれど、そもそもLinuxOSの
操作方法を最低限理解もせず、チュートリアルに頼っての環境
構築などそもそも無謀です。さて、無謀のままでメッセージの
解読に挑むか、最初からセットアップをやり直すか、心機一転
LinuxOSの操作方法から学ぶか、どれもお先が暗いです。
|
守谷工房の製作品3へ
守谷工房Topへ
|