[組込み記事]
株式会社 オージス総研
オブジェクトテクノロジー・ソリューション部
堀口 修一
●ことのはじまりそれはとある日の、上司であるW氏と私の会話から始まりました。
------------------------------------------------------------------
W氏 : ちょっといいかな。 私 : はい、なんでしょう。 W氏 : 今、組込みトレーニングのテキストを作ってんだけど、その実習で使えそうなおもちゃを探して欲しいんだ。 私 : おもちゃで実習って、受講生がプログラミングまでするんですか? W氏 : そうそう、今回のテキストはかなり実践的にしてるので、できれば実装までやってもらいたいんだ。
ほら、マインドストームとかあったじゃん。私 : ほうほう。
(といいつつ、何か聞いたことあるけどそれって何?状態)W氏 : ハードは出来合いのものでいいんだけど、そいつを使ってテキストに則したモデルとコードの模範解答を作って欲しいんだ。 私 : モータークラスとかですか。ということは言語はC++が使えた方がいいですよね。 W氏 : そうだね。C言語だと別のところで苦労するから。 私 : あと、プログラムもROM化とかするんですか? W氏 : 組込みらしさがあった方がいいね。 私 : ふむふむ。
(でもそんな都合のいいものがこの世にあるんだろうか...)
ま、ちょっと空きを見て調査してみます。W氏 : 必要なら買っちゃってもいいから。
ま、いいおもちゃがなかったらなかったで仕方ないんだけど。
------------------------------------------------------------------ という具合で、「オブジェクト指向のできるおもちゃ」探しが始まったのでした。メカトロニクス出身の組込マー(組込みエンジニアの通称)としては、久しぶりにセンサーやモーターを扱えるという期待でいっぱいです。会社でも遊べそうですしね。
●ところでマインドストームって何?マインドストームがどういったものか良く分かっていなかったので、まずはWebで検索してみました。こんなに多くのページがあったとは!う〜ん、これは奥が深そうです。あえて一言で言うと
「LEGO社のプログラム可能な組立てブロック」
ってところでしょうか。そのマインドストームにもいくつか種類があり、自由にロボットが作れてプログラミングができるのは「基本セット」であることが判明。プログラミングの方法も、標準的なもの以外にもいくつかあるようです。8ビットCPUなのが少し不安ですが、とりあえず実習教材の候補に決定です。
これが「LEGO マインドストーム 基本セット」。無限の可能性を秘めています。
●まずは遊んでみなくては実はこの時点で、あまりの「楽しそうさ」に負けてしまい基本セットを自費購入してしまいました。オブジェクト指向への適用はこの際忘れて、童心に帰って遊んでみました(もちろん自宅でですよ)。ちなみにこの基本セットですが、対象年齢は12歳以上になっています。
その遊び方は以下の様になります。
1.組立てマイコンボードに相当するのがRCXと呼ばれる黄色いブロックです。このRCXを中心に、センサーやモーター、その他多数のブロックを接続していきロボットを組み立てていきます。ブロック同士をカチッとはめ合わせていくだけなのですが、結構はまります。
2.プログラミング
もちろん右側がRCX。でもそのうちマウスにされてしまうことは知らない... 基本セットに付属のプログラミング・ツールを使って、PC上でプログラムを作成します。だだし、プログラミングとはいってもいわゆる我々が行っているコーディングとは少し異なります。この付属ツールには、いわゆるサブルーチンやループがブロックの形をしたパーツとして用意されており、それらのブロックを画面上でガチャコンとつなげていくだけでプログラムが作れてしまうのです。ブロックに対するこだわり方はさすがです。
3.ダウンロード
標準的な開発環境 プログラミングが終了したら、PCからRCXに実行ファイルをダウンロードします。当然ですがROMは焼きません。赤外線通信を使って転送するので、付属の赤外線トランスミッターをPCに接続しておき、トランスミッターとRCXの受光部を向かい合わせに置きます。後はプログラミング・ツール内の「ダウンロード」ボタンをクリックするだけです。
4.実行
ダウンロード中... ダウンロード完了後、RCXの「Run」ボタンを押せばロボットが自律的に動き出します。でも一発で上手く動かないことが多いのは、実システムと同じですね。
以上が標準的な遊び方ですが、組立てが一番楽しく、かつ難しく感じました。付属のプログラミング・ツールは非常に完成度が高いのですが、あまり複雑なことはできません。その分、700個以上もあるブロックをいかに組合せてロボットを作るのか、が試行錯誤の繰り返しになりました。付属のテキストには3種類の組立てマニュアルがあるのですが、やはりオリジナル・ロボットを作ってみたいものです。Webで公開されているものも、プログラミングに関するものよりはオリジナル・ロボットや歯車などの組合せテクニック(これもイディオム?)に関するものが圧倒的に多いようです。
●プログラミング形態あれこれ思わず趣味に走ってしまいました。そろそろオブジェクト指向の可能性を探らなくては。
付属のプログラミング・ツールを使用したのではコーディングできないので、基本セットで現在可能なその他のプログラミング方法を探ってみました。主なものをまとめると以下の様になります。
- Visual Basicなどで使用できるOCXを使って、PCで制御する。
- シリアルデータを送信して、PCで制御する。
- NQC(Cライクの独自言語)を使用する。
- legOS(リアルタイムOS)を使用する。
詳細は省略しますが、a.とb.ではPC上で動くアプリケーションを作ることになるので、組込みらしさが出ないので不採用。c.のNQCですが、これはクラスの定義ができないのでやはり不採用。残るはd.のlegOSですが、これはなかなか良さそうです。
- オープンソースのRCX用リアルタイムOS
- GCCのC++クロスコンパイラが使用可能
- デバイスドライバも実装済み
- サンプルとして、センサークラスやモータークラスも実装
ただ、統合開発環境(IDE)やエミュレータはありませんし、言語もC++とはいえ Embedded C++ レベルです。でも実習教材としては十分でしょう。さっそく開発環境を構築して、サンプルプログラムを実行してみました。もちろんちゃんと動きましたが、2つのクラスと1つのタスクだけなのでオブジェクト指向としてはまだまだです。
<備考>現在公開されているlegOSは、基本セットのバージョン1.5用ですので、最新バージョン2.0の赤外線トランスミッター(USB接続)が使用できません。今後、基本セットとlegOSで遊んでみようと思われる方は以下のいずれかの対応が必要ですのでご注意下さい。
- 基本セット1.5の赤外線トランスミッター(RS-232C接続)を用意する。
(ただし、入手困難です。)- legOSに付属のダウンロードプログラムを、USB用に改造する。
- legOSが基本セット2.0に対応するのを待つ。
なおlegOS自体とアプリケーションは、RCXにダウンロードすればどちらのバージョンでも動作することを確認しています。
●果たしてオブジェクトは動くのかようやくマインドストームでオブジェクト指向する準備が整いました。次はオブジェクト指向にふさわしいロボットの選定です。が、これが苦労しました。基本セットのパッケージには、「ロボットアーム」や「キャンディソーター」、「セキュリティボット」などなど、楽しそうな完成写真が載っているのですが、その組立てマニュアルがどこにもありません。仕方なく付属テキストの「ローヴァーボット」、いわゆるマイクロマウスでプロトタイプを作ってみることにしました。黒線上を、光センサーとモーターを使ってトレースするという、あのヤツです。
LEGOマウス1号機 今回、新たに開発している組込み向けのトレーニング・テキストに従い、要求分析、分析、アーキテクチャメカニズム設計などの工程を行いましたが、このテキスト、かなり実践的な内容になっているので無理なく作業を進めることができました。ここは「オブジェクトの広場」ですので本来でしたらこのノウハウをお伝えしたいところなのですが、そうすると組込みトレーニングの値打ちがなくなってしまいます。ですのでここでは結論だけにさせていただきます。
「マインドストームでもオブジェクト指向による開発は十分可能です。」
●最後に「たかがマインドストームでそこまでやるか?」というご意見もあることでしょう。でもほとんどの組込みエンジニアの方は、実際に手とモノを動かしてみないと納得いかないのではないでしょうか。私の場合、理想論や抽象的な話だけ聞いていてもすぐ眠くなってしまいます。そういった意味で、「組込み+オブジェクト指向」のトレーニングでは実装まで行う必要がある、と常々思っていました。
また実際の組込みシステムはもっと複雑ですので、マインドストームのように簡単にはいかないかもしれません。でもいきなり実システムにオブジェクト指向を適用しても、うまくいかない方が多いと思います。まずは簡単なシステムを使って、オブジェクト指向のコツを掴んでおくと良いのではないでしょうか。
今回の実習教材開発は、単に市場にあるものを組合わせただけなのですが、組込みトレーニングを有効なものにすることが出来たと自負しています。遊びながら実務に役立てることができる、この楽しさを一人でも多くの悩める組込マーの方々にも味わっていただけたらと思います。
最後になりましたが、今回の教材開発にあたり、株式会社 永和システムマネジメントさんには大変お世話になりました。この場をお借りしてお礼申し上げます。ありがとうございました。
戦うオブジェクトたち 「give me four sensors」 「二つで十分ですよ」
●関連URLオフィシャルサイト
https://mindstorms.lego.com/japan/マインドストーム情報局
https://www.mi-ra-i.com/JinSato/MindStorms/日本語版RIS 2.0 速報レポート
https://www.osamu.nop.or.jp/mindstorms/ris2_0.htmlレゴマインドストーム・キャンプ
https://with.esm.co.jp/legocamp/legocamp.htmMINDSTORMS の内部情報
https://www.geocities.co.jp/Technopolis/6264/mindstorms/internal.htmlThe legOS Homepage
https://legos.sourceforge.netIntroduction to the legOS kernel
https://legos.sourceforge.net/docs/kerneldoc.pdflegOS解説
https://www.ylw.mmtr.or.jp/~arcadia/legos/index.htmllegOSのインストール
https://www.ylw.mmtr.or.jp/~arcadia/legos/legos_2.html#2オージス総研の組込みオブジェクト指向分析・設計トレーニング
https://www.ogis-ri.co.jp/otc/training/kumikomi-start.html
© 2001 OGIS-RI Co., Ltd. |
|