Lego Mindstorms NXT

**Lego Mindstorms NXT**は、2006年7月末に発売されたプログラム可能なロボットや他の機械、または対話システムを組むためのレゴ社の商品セットであるMINDSTORMSの改良型。

## 概要
キットはサーボモーター3個、タッチセンサー2個、光センサー1個、サウンドセンサー1個、超音波センサー1個とNXT「知能」ブロックを1個、7本の接続ケーブルとUSBインタフェースケーブルを含む577個の部品で構成される。知能ブロックは異なる振る舞いを可能にするマインドストームの"脳"である。キットには同様にNXTに作成したプログラムをダウンロード可能なグラフィカルプログラミング環境のNXT-Gを含む。ソフトウェアは同様にAlpha-Rex (人型ロボット)、Tri-Bot (自動車)、ロボアーム T-56 (ロボットアーム)と Spike (サソリ)の4形態のロボットに対応した命令を備える。

モーターは回転センサーが予め組み込まれたステッピングモーターで、従来のマインドストーム用モーターよりはるかに高性能である。しかしセンサー、モーターともに接続の方式が今までのようにブロックに線が埋め込まれているのではなく、ブロックの形を完全になくした専用のジャックとなった。機能が向上した分、従来のセンサー、モーターの複数同時接続はできなくなった。

NXTの知能ブロックは48MHzで動作する32ビットのARM7マイクロプロセッサーと4MHzで動作する8ビットのAtmel AVRマイクロプロセッサを持っている。ブロックは入力ポートを4個、出力ポートを3個、64×100ピクセルLCDマトリックスディスプレイを1個、USB 2.0ポートとBluetoothワイヤレス接続を持っている。ARM7プロセッサは256KiBのフラッシュメモリと64KiBのRAMへのアクセスを持つ一方で、第二のプロセッサは（別個の）4KiBのフラッシュと512バイトのRAMへのアクセスしかもたない。接続はデジタルで、センサーと使用できるモーターポートを拡張するマルチパックを加える事が出来る。I/Oソケットで使われるコネクタはRCXで使われていたものとデザインが異なり、RJ12コネクタに似たポートを使っている。ブロックには8kHzD/Aのラウドスピーカーが組み込まれている。ブロックはAAタイプのバッテリーを6つ使用する。アルカリ電池が推奨されているが、充電式電池でも動作する。旧型となってしまったRISシリーズに比べテクニック系の部品が大部分を占め、今までなかった新しいブロックの組み合わせや楽しみが増えた。

レゴマインドストームNXTセットは小売り版と教育用の2つのバージョンで出荷されている。教育用セットのNXTブロックは充電式電池と充電器を同梱している。しかし、このキットはプログラミングソフトを含んでおらず、別売りになっている。なお、個人用、教室用、サイト用でソフトウェアのライセンスが異なる。

教育用の商品は Lego Mindstorms for Schools と呼ばれており、タフツ大学で開発され ナショナルインスツルメンツのLabVIEWをエンジンとして使っているGUIベースのプログラミングソフトであるROBOLABが同梱されていた。現状では、教育用NXTはROBOLABまたはNXTソフトウェアのどちらかを選択して、別途購入する方式をとっている。教育用とは別に、同梱されているセンサーやブロックが異なる玩具用NXTがあるが、こちらはNXTソフトウェアが同梱されている。

いくつかの開発者キットが利用可能で、NXTに対応している。
* Software Developer Kit (SDK) -ホストUSBドライバの情報や実行可能なファイル形式、バイトコードのリファレンスを含んでいる。
* Hardware Developer Kit (HDK) -文書とNXTブロックとセンサーの概要を含んでいる。
* Bluetooth Developer Kit (BDK) -Bluetooth通信に使われているプロトコルの文書

2006年5月1日レゴは2006年8月までにNXT知能ブロックファームウェアがオープンソースとしてリリースされると公表したが、12月初頭まで利用できなかった。ファームウェアのソースはthe Hardware Developer's Kit、Software Developer's Kit、Bluetooth Developer's Kitと一緒にレゴのウェブサイトで見つけられる。

### NXTのブロック
* 32ビットARM7 主マイクロプロセッサ @48MHZ
** 256KB フラッシュメモリ
** 64KB RAM
* 8ビットAtmel AVR マイクロコントローラ @4MHZ
** 4KB フラッシュメモリ
** 512Bytes RAM
* 64×100 ピクセル 液晶ドットマトリクスディスプレイ
* ウィンドウズまたはマッキントッシュのパソコンでプログラミング可能
* ユーザーはNational Instruments社開発のLabVIEWを使った新しいソフトウェアを用いてプログラムを作成
* USB 2.0ポートを一つ搭載
* Bluetoothによって、NXTに無線でプログラムを転送ないしロボットの遠隔操作をする方法を提供(携帯電話やPDAでも可能)
* 4 input ports, 6-wire cable digital platform (One port includes a IEC 61158 Fieldbus Type
4/EN 50 170 (P-NET) compliant expansion port for future use)
* 3つの6線ケーブルデジタルプラットフォームの出力ポート
* サードパーティー開発の外部デバイスを使用可能にするデジタルワイヤインターフェイス

### 部品
* 519個のレゴ・テクニックの部品（及びVisorakのpincersを含むバイオニクルの部品）
* 回転検出センサが組み込まれており、正確な制御の為のフィードバックがある3つのサーボモータ
* 超音波距離センサと移動センサ
* 音のパタンとトーン認識を備えたサウンドセンサ
* 光の強弱を感知する光センサ（教育用セットに同梱）
* 光の強弱と、色を識別できる色センサー（玩具用セットに同梱。色はセンサーの目の前のもののみ判別可能）
* タッチセンサ（プレス/リリース/衝突の感知）
* 別売りの方向を感知するコンパスセンサ（Hitechnic社製）
* 別売りの色彩を感知するカラーセンサ（Hitechnic社製）http://shop.lego.com/ByTheme/Product.aspx?p=MS1038&cn=17&d=70
* 別売りの赤外線センサー、加速度センサー、ジャイロセンサー（Hitechnic社製）等

## レゴ マインドストームNXT 2.x

2009年6月29日にver2.0発表、8月1日発売開始。パーツ数が619に増え、(センサーとモーターを含む)2個のタッチセンサーと1個の超音波センサーと新型の色センサーが導入された。NXT 2.0 は浮動小数点演算を使用するが、初期の型では整数演算を使用した。キットの値段はおよそUS$280だった。

2010年11月に、ソフトウェアがNXT 2.1にバージョンアップされた。

## プログラミング言語
; Actor-Lab
: 言語： 独自のフローチャート風の言語
; Ada Interface to MindStorms
: 言語： Ada
; brickOS
: 言語： C/C++https://brickos.sourceforge.net/
; GCC
: 言語： C/C++, Objective C, Fortran, Java, Ada among others
; GNU Toolchain for h8300
: 言語： C/C++, ASM
; LabVIEW Toolkit for NXT
: 言語： LabVIEW
: コメント： A toolkit for LabVIEW permitting development of custom native blocks for use in the Mindstorms NXT software.
; Lego.NET
: 言語： Anything that can compile to .NET, works best with C#http://www.dcl.hpi.uni-potsdam.de/research/lego.NET/
: コメント： コンパイラ無し。バイトコードをマシンの命令に変換する。
; leJOS
: 言語： Java
; librcx
: 言語： C/C++
: コメント： GCC用のライブラリ
; Logitech SDK
: 言語： Visual Basic, Visual C++
: コメント： Can be combined with an RCX control library such as spirit.ocx from the MindStorms SDK to make use of the Lego Cam
; NQC
: 言語： NQC, a C-like language
: コメント： 非オフィシャルの言語の中では、もっともよく使われている。
; Official MindStorms SDK
: 言語： Visual Basic, Visual C++, MindScript, LASM
: コメント： You don't need VB to use the VB features as MS Office comes with a cut down version of VB for making macros
; OnScreen
: 言語： A custom language which can be programmed directly on the RCX
; pbForth
: 言語： Forth
; PRO-BOT
: 言語： A kind of Visual Basic/spirit.ocx-based language
: コメント： Designed for robots which are in contact with the workstation at all times
; QuiteC
: 言語： C
: コメント： A library for use with GCC and comes with GCC for Windows.
; RCX Code
: 言語： RCX Code, a custom flowchart-based language
; ROBOLAB
: 言語： A flowchart language based on LabVIEW
: コメント： This is the programming environment offered to schools who use MindStorms, supports the Lego Cam
; SqLego
: 言語： Squeakhttp://minnow.cc.gatech.edu/squeak/2412
; TclRCX
: 言語： Tcl
; Terrapin Logo
: 言語： LOGO
; TinyVM
: 言語： Java
; The Transterpreter
: 言語： occam
; Vision Command
: 言語： RCX Code
: コメント： Lego Cam と一緒に使うオフィシャルのプログラミング言語
; XS
: 言語： Lisp
; LegoLog
: 言語： Prolog
: コメント： Uses an NQC program to interpret commands send from the pc running the Prolog code
; PBrickDev
: 言語： PBrickDev, a flowchart based language.
: コメント： Has more fuctionality than the RIS language, such as datalogs and subroutines/multithreading.

## 参考文献
* Bagnall, Brian. ''Maximum LEGO® NXT: Building Robots with Java Brains'' Variant Press. 2007. ISBN 0-9738649-1-5
* Bagnall, Brian. *Core LEGO® Mindstorms* Prentice-Hall PTR. 2002. ISBN 0-13-009364-5
* Baum, Dave. *Definitive Guide to LEGO® MINDSTORMS*, 2nd ed. Apress. 2002. ISBN 1-59059-063-5.
* Erwin, Benjamin. *Creative Projects with LEGO® Mindstorms* (book and CD-ROM). Addison-Wesley. 2001. ISBN 0-201-70895-7.
* Ferrari et al. *Building Robots With LEGO® Mindstorms: The Ultimate Tool for Mindstorms Maniacs*. Syngress. 2001. ISBN 1-928994-67-9.
* Gindling, J., A. Ioannidou, J. Loh, O. Lokkebo, and A. Repenning., "LEGOsheets: A Rule-Based Programming, Simulation and Manipulation Environment for the LEGO Programmable Brick," Proceeding of Visual Languages, Darmstadt, Germany, IEEE Computer Society Press, 1995, pp.&nbsp;172–179.
* Breña Moral, Juan Antonio. *Develop LeJOS programs Step by Step*, "https://www.juanantonio.info/lejos-ebook/
* LEGO MINDSTORMS NXTオレンジブック ISBN 9784839921866
* LEGO MINDSTORMS NXTグレーブック ISBN 9784839923013
* Joe NagataのLEGO MINDSTORMS NXT歩行ロボット製作入門 ISBN 9784274205668
* 入門LEGO MINDSTORMS NXT ISBN 9784797338256
* 実践ロボットプログラミング ISBN 9784764903784
* LabVIEWで学ぶ〈最新〉LEGO Mindstorms NXT入門 ISBN 9784774146553
* 知的LEGO Mindstorms NXTプログラミング入門 電子工作Hi‐Techシリーズ ISBN 9784789818957
* 「Kinect」×「Mindstorms NXT」「ロボット」プログラミング I/O BOOKS ISBN  9784777517602

## 脚注

## 関連項目
* シーモア・パパート - 著名なコンピュータ科学者・心理学者で、MINDSTORMSの開発者の一人。MINDSTORMSの名は、彼の著作『マインドストーム—子供、コンピューター、そして強力なアイデア』から名付けられた。
* :en:FIRST Lego League
* :en:RoboCup Junior
* :en:Legoscript
* :en:Vex
* :en:Big Trak
* iRobot Create (iRobot)
* ETソフトウェアデザインロボットコンテスト
* WRO(World Robot Olympiad)
* レゴ

## 外部リンク

マインドストーム NXTの公式サイト：

* Official Lego Mindstorms (NXT)
* Official Robotics Invention System
* Lego Mindstorms公式サイト(日本語)

様々なリソースとポータル：
* bNXT collects resources on Lego Mindstorms NXT
* LEGO-robotics - A summary of information and links about many aspects of Mindstorms
* Carnegie Mellon's Robotics Academy
* LEGO Engineering - Resource for Educators on RCX & NXT
* DCC for the RCX – Mark Riley's LDCC firmware for the RCX
* nxtasy.org - Fresh NXT news and user community
* LEGO Mindstorms NXT Robots - Lego Mindstorms NXT Robots
* LEGO Mindstorms Sensor Input Page - Lego Mindstorms Sensor Input Page

プログラミング言語とOS：
* Tufts University's ROBOLAB page
* leJOS - Java for the RCX Brick
* BrickOS alternative firmware for the RCX
* National Instruments LabVIEW NXT Toolkit
* The NQC programming language for the RCX
* The NBC programming language for the NXT
* The Transterpreter (occam runtime system)
* XS: Lisp on Lego Mindstorms
* Robotics Academy's RobotC (NXT & RCX C-Based Programming)
* BricX Control Center, Multi language and OS IDE for Windows
* Perl Direct Commands Interface to the NXT
* RoboDNA offers Free PC Based Robotic Dashboards for the Lego NXT
* NXT#- .NET library for the Lego NXT
* NXTMOTE: TinyOS on NXT
* ruby-nxt is a Ruby interface for controlling the Lego Mindstorms NXT via Bluetooth

サードパーティの拡張デバイス：
* NXT Sensors from HiTechnic
* Sensors and interfaces from mindsensors.com

チュートリアル：
* A multimedia tutorial for the NXT-G graphical language
* Preparing QuiteC on Windows

日本における技術サポート：

* アフレル Afrel (日本語)

マインドストーム NXT のリンク：
* National Instruments NXT softwares
* Wired Magazine: Geeks in Toyland – Behind the scenes of the Mindstorms NXT User Panel
* Mindstorms NXT Wiki
* Short review with movie and screenshots

## 脚注
### 注釈