マインドストームNXTを動かすために、環境構築と、「2秒前進して止まる」という簡単なプログラムを作成しました。このプログラムを応用して、モータのパワーとタイマの時間を組み合わせると、ロボットを時間で制御することができるようになります。1)forward.c、2)forward.h、3)forward.cfg、4)makefile)で構成されていました。それぞれ詳しく見ていきましょう。1)forward.cには、タスク(tsk0)の実装が記述されています。マインドストームNXTの左右のモータを順方向に回転させています。パワーをマイナスにして逆回転させることもできます。systick_wait_ms(ミリ秒数)という関数は、実行中のタスクを、指定したミリ秒数だけ待たせます。タスク(tsk0)は、これらの組み合わせによって、2秒前進して止まるという動きを実現しています。タスク(tsk0)が宣言されています。3)forward.cfgには、タスク(tsk0)を実行するタイミングや優先度、最大スタックサイズなどを記述して、これを元にタスクを生成しています。「2秒前進して止まる」プログラムでは、プログラムを実行したときに、タスク(tsk0)を実行可能状態(TA_ACT)にして、タスクの優先度を最高優先度(1)に設定しています。スタックサイズは、1024バイトにしています。3)forward.cfg)を指定し、コンパイルして生成されるファイル名(forward_jsp)を定義しています。これにより、forward.cに記述されているタスクがforward.cfgファイルで定義されている方法によって生成されます。このようにnxtJSP環境でのC言語プログラムは、ソースファイルとヘッダファイルだけでは成り立たず、静的コンフィギュレーションファイルとの関係にも注意する必要があります。各ファイルの関係は図1-2をご覧ください。※本記事で紹介しているソースファイルはここからダウンロードできます→(sample_code_090610.zip)。解凍したzipファイルの中の「forward」フォルダを参照ください。リモコンロボットか自律型ロボットかロボットを制御する方法は2つあります。1つ目は、リモコンやラジコンのように人間の判断によってコントロールする方法、2つ目は、ロボット自身が判断して自律型でコントロールする方法です。制御ループの中に、人間の判断が入っているかいないかという点が大きな違いです。ロボットなら、自律型制御にしたいですよね。モータをタイマ制御で動かすだけでは「自律型」とは言えません。外界の情報を取得し、その情報を元にロボット自身が判断をして、自分自身をコントロールできるようにする必要があります。そのためには、センサーを使う必要があります。マインドストームNXTには、タッチセンサー、光センサー、音センサー、超音波センサーが含まれていますが、まずは光センサーを使ってみましょう。アフレル(株)アフレル所属。システム開発の経験を積んだ後に、ロボットを使った教育教材の開発や指導に従事。子供から大人まで、いかに楽しく学んでもらえるか悩みながら、日々、精進中。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。