nxtOSEKとは(2009/01 更新)

 

 

nxtOSEKはオープンソースのLEGO MINDSTORMS NXT用開発/実行環境です。 nxtOSEKはleJOS NXJ というNXT用Java言語開発環境に含まれているC言語/アセンブリで記述されたI/Oドライバおよび、TOPPERSプロジェクトの成果物の一つである TOPPERS/ATK(旧名: OSEK) およびTOPPERS/JSPをNXT 内蔵のATMEL AT91SAM7S256に独自移植したRTOS等から構成されています。nxtOSEKでは次の主要機能を提供しています。

  • GCCツールチェインを使用したANSI C/C++言語開発環境
  • NXTのモータ、センサ等のデバイスに対するリアルタイム制御用C言語API
  • NXTのモータ、センサ等のデバイスに対するC++言語API(注記1)
  • 自動車電子制御用OS標準規格であるOSEK に対応したTOPPERS/ATKが提供するマルチタスクスケジューリング機能(注記2)
  • uITRON4.0 に対応したTOPPERS/JSPが提供するマルチタスクスケジューリング機能(注記3)
  • 高パフォーマンス/低メモリー消費
    (他のNXT用プログラミング言語はバーチャルマシンもしくはインタープリタを使用していますが、nxtOSEKではプログラムはネイティブに実行されます。またnxtOSEK実行環境のROM消費は最小で約10Kバイトとなります)
  • nxtOSEKプログラムのNXTへのアップロード方法として次の3つをサポート
    1. John Hansen氏およびSivan Toledo氏作成の拡張NXTファームウェアを使用したアップロード
       (複数nxtOSEKプログラムのアップロードが可能。ただし、nxtOSEKプログラム一つあたりROM+RAM <= 64Kbytes)
    2. NXT BIOSを使用したnxtOSEKプログラムのアップロード(ROM <= 224Kbytes、RAM <= 約50Kbytes)
    3. RAMへのnxtOSEKプログラムのアップロードおよび直接起動 (プログラムサイズ <= 64Kbytes、Flash書き込み無し)
  • ラジコン自動車や倒立2輪車両等の制御アプリケーションを含むサンプルプログラム

注記1: nxtOSEKのC++への対応およびC++APIの開発は、米国・ヤングスタウン州立大学のロバート・クレーマー教授 (Dr. Robert Kramer)がおこないました。

注記2:TOPPERS/ATKのNXTへの移植は、米国・カンザス州立大学の水野匡章教授
(masaaki@cis.ksu.edu)がおこないました。

注記3:TOPPERS/JSPのNXTへの移植は、もなみソフトウェア殿がおこないました。

プロジェクト名のnxtOSEKへの変更について(2008/05)

v2.01より、プロジェクト名をLEJOS OSEKからnxtOSEKへ変更しました。この変更はBrickOS (旧legOS)のような訴訟によるものではありません。LEJOS OSEKの普及に伴い、leJOS NXJのプロジェクトメンバーにLEJOS OSEKの問い合わせが多数寄せされていることなどを考慮して、このプロジェクトに対する誤認識を避けるためにおこなったものです。プロジェクト名の変更に伴い、ディスリビューション名もnxtOSEKに変更していますが、APIの互換性およびファイルの構成は従来通りですので、既存ユーザーの方は互換性を心配せずに最新機能をご利用いただけます。

注意:
LEGO社が公開しているLEGO MINDSTORMS NXT Hardware Developer Kitには次の注意書きが記されています。
Important note: When the NXT is disassembled or when third party firmware is used with the NXT, all warranties are rendered invalid

つまり、nxtOSEKに限らずLEGO社純正ファームウェア以外のファームウェアをNXTに使用した場合、LEGO社の製品保証を受けることができなくなる可能性があります。従ってnxtOSEKプロジェクトメンバーは、nxtOSEKを使用によって生じるいかなる問題について一切の責任を取らないことをあらかじめご了承ください。さらにnxtOSEK開発環境の構築にはいくつかのサードパーティ製ソフトウェアが必要になりますが、サードパーティ製ソフトウェアの入手および使用によって生じる、いかなる問題についても一切の責任を取らないことをあらかじめご了承ください。

 

Quick Look in nxtOSEK

RCX用倒立2輪車両であるLEGway等で著名なSteve Hassenplug氏が作成したNXT Programming Softwareに倣って、nxtOSEKの最新機能について紹介します。

機能
説明
プログラミング言語
nxtOSEK: ANSI C/C++ (GCC)
Embedded Coder Robot NXT: MATLAB & Simulinkを利用したモデルベース開発環境
ファームウェア
拡張NXTファームウェア
または
nxtOSEK NXT BIOS
統合開発環境
Eclipse CDT
Windows Windows XP SP2
Windows Vista (拡張NXTファームウェアおよびNXT BIOS使用時)

MAC OSX

No
Linux
動作実績あり (非公式)
イベント機能
Yes (例、OSEK Event機能)
マルチスレッド機能
Yes (例、OSEK プリエンプティブ/ノンプリエンプティブマルチタスク機能および排他制御機能)
Bluetooth通信 (NXTとPC) Yes (NXT GamePadを使用したラジコン操作およびデータロギング)
Bluetooth通信 (NXTとNXT) Yes (1 NXTと1 NXTのみ対応)
Bluetooth通信 (NXTとその他デバイス) 未テスト
I2C通信 Yes (例、超音波センサ、HiTechnic社製加速度センサ/カラーセンサ、LATTEBOX社製 NXTe RCサーボコントローラ...)
USB通信 Yes (ホスト側はLEGO Fantom driverを使用)
RCXセンサ サポート Yes
ファイルシステム 拡張NXTファームウェアのファイルシステム または NXT BIOS(シングルファイルシステム)
※nxtOSEK 2.01からはBMPファイルおよびWAVファイルの取り込みもサポートしています
浮動小数点 Yes
動的メモリ操作

Yes (ただし、非スレッドセーフ。また静的メモリ操作よりメモリ消費量が多くなります)
C: malloc/freeをサポート
C++: new/delete, smart pointerをサポート

データロギング Yes (ロギングデータはNXT GamePadによりCSVファイルとして保存)
NXTを動作させるために必要な学習 C/C++言語の習得
NXTを動作させることによって学習できること C/C++言語による組込みソフトウェアプログラミング
高パフォーマンスなアプリケーションの作成 Yes (アプリケーションはネイティブに実行される)
アプリケーション作成の容易さ ユーザースキルによる (C/C++プログラマにとっては新規言語の習得不要)
最新のプログラミングスキルの習得 Yes (組込みC/C++プログラミング、RTOS、制御アプリケーション)
(想定される)対象ユーザー 組込みソフトウェアエンジニア、 C/C++プログラマ
テストプログラム実行速度 (ループ数/分) 76K (各パラメータ毎に液晶表示更新の場合), 1864K (液晶表示無しの場合)
テストプログラム消費ROMメモリ (バイト) 18.7K (含むnxtOSEKファームウェア)
テストプログラム作成に要する時間 約30分

 

 

 

Home