ETロボコン2009

ETロボコン2009、挑戦記(3)

Cで行う二輪倒立振子とライントレースの制御

上口翔子 @IT MONOist編集部 2009/6/23

組み込み技術者の育成をテーマにしたETソフトウェアデザインロボットコンテスト(愛称:ETロボコン)。本連載では、11月に開催されるチャンピオンシップ大会までの各取り組みを随時レポートする。(編集部)

- PR -

 前回予告したとおり、今回はETロボコン事務局から配布されている二輪倒立振子のサンプルプログラムを実行してみたいと思います。サンプルプログラムは、ジャイロセンサと光センサを使用して、バランスを取りながら黒線上をライントレースするというものです(スタートスイッチにはタッチセンサを使用します)。

 まずは下準備として、センサやモータと本体をつなぐ各ポートの配線を行います。 NXTには3つの入力ポート(A〜C)と4つの出力ポート(1〜4)が用意されていますので(画像1を参照してください)、今回はジャイロセンサと光センサ、タッチセンサを入力ポートに、左右のモータを出力ポートに配線しました。

画像1 NXTに用意されているI/Oポート

画像2 配線後のNXT

 配線が完了し、これで準備OKです(ETロボコンキットで用意されいてるコードを使用したのですが、長さの調整を行わなかったために少々不格好な状態になってしまいました)。

 前回と同じ手順で、サンプルプログラムをビルドし、NXTに転送します。

 ETロボコン事務局から提供されているコメントによると、プログラム実行後にタッチセンサを押すと、ライントレースを開始するようです。早速実行してみます。


画像3 実行手順 NXTを起動 → プログラムからsample.cを選択 → 実行(Run)

 ……。

 すると、おかしなことにNXTがまったく動きません……。LEDが点灯しているようなのでプログラムはうまく実行されているようなのですが、何か問題があるようです。

 そこでサンプルプログラムのソースコードをもう一度よく見直すと、どうやらジャイロセンサと光センサの値を環境に合わせて変える必要がありそうです。ここでいう環境とは、加速度0のときのジャイロセンサのオフセット値、黒いライン上を走行しているときに光センサの値、ラインを外れたときの光センサの値の3点です。

サンプルプログラムで設定されているパラメータ値
現在はジャイロセンサの値が610、黒いライン上のときのセンサ値が700、ラインを外れたときのセンサ値が500に設定されています

 現在の環境に合わせた各センサ値を知るには、また別のプログラムを作るか、サンプルプログラムに、追加する必要がありそうです……と、そんなことを考えていると、ちょうど同じ疑問を持っていた参加者の方からETロボコンのメーリングリスト(参加者のみ閲覧可能なメーリングリスト)に、その解決策が含まれた情報が提供されていました。

 そのメールによると、どうやら前回実行したhelloworldプログラムが、さきほどのセンサ値を表示するプログラムのようです。前回は配線をしていなかったので、数値は表示されていませんでしたが、配線後にあらためて実行すると、ジャイロセンサの値・光センサの値と、まさに欲しかった情報(各センサの値)を確認することができます。

 実行してみました。

画像4 配線後にhelloworldプログラムを実行した様子
画像左が黒いライン上のとき、右がラインを外れたときのセンサ値

 表示されたセンサ値によると、ジャイロセンサの値が約600、黒いライン上のときのセンサ値が約730、ラインを外れたときのセンサ値が約540でした。この値を参考に、サンプルプログラムを書き換え、再度実行してみます。

 すると……!

サンプルプログラム実行の様子


 今後こそNXTが動きました。ライントレースも順調に行っています。


 >>さらに正確なセンサ値を得るために


  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -