PR

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

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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