センサーを使ったロボットの自律制御

2009年6月10日(水)
軽部 禎文

プログラムの中身をのぞいてみよう

 前回は、教育用レゴ マインドストームNXTを動かすために、環境構築と、「2秒前進して止まる」という簡単なプログラムを作成しました。このプログラムを応用して、モータのパワーとタイマの時間を組み合わせると、ロボットを時間で制御することができるようになります。

 「2秒前進して止まる」プログラムは、4つのファイル( 1)forward.c、2)forward.h、3)forward.cfg、4)makefile)で構成されていました。それぞれ詳しく見ていきましょう。

 1)forward.cには、タスク(tsk0)の実装が記述されています。

ここではecrobot_set_motor_speed(出力ポート,パワー)という関数で、教育用レゴ マインドストームNXTの左右のモータを順方向に回転させています。
 また、パワーをマイナスにして逆回転させることもできます。systick_wait_ms(ミリ秒数)という関数は、実行中のタスクを、指定したミリ秒数だけ待たせます。タスク(tsk0)は、これらの組み合わせによって、2秒前進して止まるという動きを実現しています。

 2)forward.h には、タスク(tsk0)が宣言されています。

 3)forward.cfgには、タスク(tsk0)を実行するタイミングや優先度、最大スタックサイズなどを記述して、これを元にタスクを生成しています。
 「2秒前進して止まる」プログラムでは、プログラムを実行したときに、タスク(tsk0)を実行可能状態(TA_ACT)にして、タスクの優先度を最高優先度(1)に設定しています。スタックサイズは、1024バイトにしています。

●forward.cfgから抜粋
============
CRE_TSK(TSK0, { TA_HLNG | TA_ACT, TSK0, tsk0, 1, 1024, NULL });
============

 4)makefileでは、コンパイルするターゲットファイル名( 1)forward.c)と、タスクのカーネルオブジェクトを生成するときに参照する静的コンフィギュレーションファイル( 3)forward.cfg)を指定し、コンパイルして生成されるファイル名(forward_jsp)を定義しています。これにより、forward.cに記述されているタスクがforward.cfgファイルで定義されている方法によって生成されます。

 このようにnxtJSP環境でのC言語プログラムは、ソースファイルとヘッダファイルだけでは成り立たず、静的コンフィギュレーションファイルとの関係にも注意する必要があります。各ファイルの関係は図1-2をご覧ください。

※本記事で紹介しているソースファイルはここからダウンロードできます→(sample_code_090610.zip)。
 解凍したzipファイルの中の「forward」フォルダを参照ください。

 また、教育用レゴ マインドストームNXTを制御するための関数は、nxtOSEK/JSPをインストールしたフォルダ配下にあるecrobotというフォルダのecrobot_interface.h に宣言されています。

リモコンロボットか自律型ロボットか

 ロボットを制御する方法は2つあります。1つ目は、リモコンやラジコンのように人間の判断によってコントロールする方法、2つ目は、ロボット自身が判断して自律型でコントロールする方法です。制御ループの中に、人間の判断が入っているかいないかという点が大きな違いです。

 やはりロボットなら、自律型制御にしたいですよね。モータをタイマ制御で動かすだけでは「自律型」とは言えません。外界の情報を取得し、その情報を元にロボット自身が判断をして、自分自身をコントロールできるようにする必要があります。そのためには、センサーを使う必要があります。

 教育用レゴ マインドストームNXTには、タッチセンサー、光センサー、音センサー、超音波センサーが含まれていますが、まずは光センサーを使ってみましょう。

株式会社アフレル
(株)アフレル所属。システム開発の経験を積んだ後に、ロボットを使った教育教材の開発や指導に従事。子供から大人まで、いかに楽しく学んでもらえるか悩みながら、日々、精進中。
http://www.afrel.co.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています