自律型ロホ ットの走行制御フ ロク ラムの開発

平成 26 年度専攻科特別研究論文集
自律型ロボットの走行制御プログラムの開発
生産システム工学専攻 平等悠介
組み込みシステム技術は,現在,冷蔵庫などの家電製品や自動車など幅広い分野のシステムに搭載され
ており,人間の生活に欠かせない技術となっている.その分野の 1 つに「自律型ロボット」があり,これは
人間が随時コントロールするのではなく,自身が現在の状況を把握・分析し,次に取るべき行動を決める
ロボットのことである.
ライントレースする自律型ロボットの開発によって,組み込みシステムに関する技術教育を目指す ET
ソフトウェアデザインロボットコンテストがある.本研究では,そのコンテストで競技させる自律型ロボ
ットに正確なライントレースを行わせるために,光センサの値から照明の影響を除去してロボットを制御
するプログラムの開発を行った.また,確実な制御とライントレースの高速化のために,プログラムのマ
ルチタスク化を行った.
キーワード:自律型ロボット,光センサ,外乱光,マルチタスク
1. はじめに
2. ET ロボコン
組み込みシステムとは,人間が容易にできないこと
(1)コンテスト概要
を装置を使って実現するために,電化製品や機械など
ET ロボコンは日本の産業競争力に欠くことのでき
に組み込まれるコンピュータシステムのことである.
ない重要な「組み込みシステム」分野における技術教
近年,私たちの生活を支え,日本経済の発展を担って
育をテーマとしている.決められた同一の走行体
いる自動車,家電製品などのほとんどには組み込みシ
(LEGO Mindstorms™)に,UML(Unified Modeling
ステムが搭載されている.現在では,それらの機能や
Language)などで分析・設計したソフトウェアを搭
性能はハードウェアだけでなく,組み込みシステムに
載し,指定コースにおける自律型ロボットの走行タイ
搭載されるソフトウェア(組み込みソフトウェア)の品
ムを競うコンテストである.1)
質や性能に大きく依存し始めている.
筆者らは,組み込みシステム分野の 1 つである「自
(2)走行体
律型ロボット」の制御プログラムの開発を行い,
その一
使用する走行体は,図-1 に示す LEGO Mindstorms
環として ET ソフトウェアデザインロボットコンテス
NXT および LEGO ブロックを利用して組み立てられ
ト(以下 ET ロボコン)に参加してきた.そのコンテス
た二輪倒立振子ロボットである.走行体は手順通りに
トでは,ロボットがライントレースする必要があり,
組み立てられたもののみ使用可能で,競技者自身が用
ラインの正確な認識が重要となる.しかし,コンテス
意する.走行体に使用する LEGO Mindstorms NXT お
ト会場の照明が外乱光となり,光センサによる正しい
よび LEGO ブロックは,市販されているものをそのま
ラインの認識ができないことがわかった.そこで,本
ま使用することになっており,パーツの加工や改造な
研究では,外乱光の影響を抑え,正確なライントレー
どは禁止されている.2)
ス走行を行わせる制御プログラムをロボットに実装し
た.また,確実な制御とライントレースの高速化のた
(3)コース概要
めに,複数の処理を同時に動作しているように見せか
ET ロボコン 2013 では,2012 年度と同じく,黒線で
けるプログラムのマルチタスク化を行った.
描かれたレーン(20mm)をリアルタイムで検出しな
がら自律走行するライントレースレースを行った.図
-2 に示すようにフィールドには,アウトコースとイン
1
(1)理論
用いることができる光センサは,センサ自身に搭載
されている LED の光を測定点で反射させ,得られた反
射光から測定点の明るさを取得するという仕組みにな
っている.しかし,図-3 のように外からの光(外乱光)
も取得してしまうため,誤差が発生し,測定点の正確
な明るさが取得できない.そこで,まず LED を消すこ
とで外乱光の影響のみを取得する.そして,LED 点灯
時の測定値と,LED 消灯時の測定値の差分を取ること
で,誤差を取り除くことができ,正確なライントレー
スが実現できると考えた.
図-1 規定の走行体
3)
(2)光センサの特性
光センサの特性を明らかにするため,照度とライブ
ラリで用意されている関数から得られる光センサの出
力の値(以下,光センサ値と示す)の特性を測定した.
その結果を図-4 に示す.ここで黒及び白と示したライ
ンは蛍光灯下で 10 回のサンプルを取りその平均の光
センサの値を示している.
照度と光センサ値の関係が線形な特性な場合,照度
の差が同じであれば,光センサ値の差も同じであるた
め,差分を測定点の照度としてそのまま用いることが
図-2 ET ロボコン 2013 コース
2)
できる.しかし,実際の特性は図-4 の赤の曲線のよう
な特性であり,照度の差が同じでも,その照度によっ
コースの 2 本のレーンが引かれ,いずれにも通常走行
て光センサの値が異なるため,そのまま差分から測定
するベーシックコースと難所が設置されたボーナスコ
点の照度を求めることができない.この照度の特性を
ースがある.ボーナスコースでは,指定時間内に難所
対数表示にすると,図-5 のように線形的な特性となっ
をクリアする毎に規定のボーナスタイムを獲得できる. た.そこで光センサ値とこの特性の 1 次近似を用いて
2 回の走行 (インコース・アウトコース)を行い,両者の
点灯・消灯時の照度を求め,その差から測定点の照度
リザルトタイムの合計を競う.リザルトタイムはベー
を求めることによって外乱光を除去することが可能に
シックコースの走行タイムからボーナスタイムを差し
なると考えた.
引いたものである.
次に,この近似直線をもとに LED の点灯時と消灯時
の光センサ値の差分を求めるプログラムを作成し,こ
3.研究内容
の補正処理を行わない場合と比べて外乱光による影響
をどの程度軽減できるか検証した.
3. 1 外乱光除去法
検証の方法として,外乱光除去法を実装したロボッ
トと,外乱光除去を行わないロボットを白い紙の上に
2012 年度に ET ロボコンに出場したが,コース走行
直立させ,蛍光灯(約 550lx)及び太陽光(約 1700lx)
中に誤作動が発生し,完走できなかった.誤作動の原
の下で光センサ値を一定回数取得した.取得した値は
因は光センサの誤認知であり,これは大会の環境が開
Bluetooth 通信を用いてパソコンに送信させ,csv ファ
発環境と異なっていたことによるものであった.特に
イルとして出力させた.
結果を図-6 に示す.
図-6 より,
照明が光センサに対する外乱光となり,その影響が大
補正ありの場合は外乱光が弱いところから強いところ
きいことがわかった.しかし,光センサにカバーをつ
に移動しても値に大きな差はないと考えられ,外乱光
けるなど走行体の加工は禁止されている.そのため,
による影響を除去できることがわかった.
外乱光の影響を除去し,正確なライントレースを行う
プログラムの開発を行った.
(3)LED の点滅時間の検討
光センサの特性を対数表示にしたことで線形な特性
が得られ,外乱光の除去は可能になった.実際の競技
2
のときは,コース上で照明の影響が変化することが考
えられるため,
常に補正しながら走行する必要がある.
そこで,LED の点灯・消灯を 4ms ごとに繰り返しなが
らそれぞれの状態での光センサ値を取得してそれらの
差分を取り,ライントレースを行うプログラムを作成
し,実行させてみた.しかし,ラインをトレースする
ことができなかった.そこで,LED の点滅時間と得ら
れる光センサ値の関係を実験によって調べた.表-1 に
点滅時間と,その時に得られた補正値の関係を示す.
補正値とは,前述した外乱光除去法によって得られる
LED 点灯時と消灯時の光センサ値の差分のことであ
る.0 を出力するということは 2 つの状態でのセンサ
図-3 光センサの受光
値が全く同じであり,
点灯・消灯が行われていないか,
サンプリングが正確に行われていないことを示す.
表-1 の結果から点滅時間が速すぎると正確なセンサ
値を取得できず,ライントレースが行えないことがわ
かった.また,補正値の変化より点滅時間を 10ms 以
上にすると安定して白と黒を認識できることがわかっ
た.
一方,点滅時間が長すぎるとセンサ値の取得回数が
少なくなるため,走行経路のブレが大きくなってしま
い,走行タイムが大きくなることが考えられる.その
ため,ライントレースが可能で,かつ点滅時間を短く
することが必要となる.しかし,本ロボットの倒立振
子制御に用いている API(Application Programming
図-4 光センサの特性
Interface)では,モータへの出力に 4ms の待ち時間が
必要である.制御プログラムで採用しているシングル
タスクでは,待ち時間中は他の処理を行うことができ
ない.そこで,4ms の倍数の時間で LED を点灯・消灯
できるという制限の中で最適な点滅時間を求めた.
検証の方法として,外乱光除去法を実装したロボッ
トを直立させ,指定した点滅時間における補正値を 50
個取り,Bluetooth 通信を用いてその計算値をパソコン
に送り,グラフ化した.図-7 にその結果を示す.
検証の結果,8ms では補正値が不安定なため,この
図-5 光センサの特性(対数表示)
点滅時間ではライントレース走行が正常に行えないこ
とがわかった.16ms ではかなり安定していて,ライン
トレース走行が正常に行えるが,
点滅時間が長いため,
速度が遅くなる可能性が高い.よって,補正値が安定
で,かつ点滅時間が最も短い 12ms を点滅時間として
採用した.
(4)アルゴリズムの実装と検証
上記の検証を基に図-8 で示すアルゴリズムを実現
するプログラムを作成した.次に,図-9 に示すように
サンプルコースのラインの一部に強い外乱光(約 1300
図-6 外乱光除去の効果の検証結果
lx)を照射し,ロボットを 5 回走行させた.その結果,
外乱光除去法を実装していない通常のロボットは,外
3
表-1 各点滅時間のセンサ値補正結果
(a)外乱光の照度 0 lx
(b)外乱光の照度 1300 lx
図-9 サンプルコース
(a)通常走行
(b)外乱光除去実装
図-10 実行結果
乱光を照射した部分で図-10(a)のように 5 回ともコー
スアウトした.しかし,外乱光除去法を実装したロボ
ットは,5 回とも図-10(b)のように問題なく走行でき
図-7 各点滅時間の補正値サンプル(50 回)
た.この手法の有効性を確認できた一方,外乱光除去
法を実装したロボットは通常のロボットと比較して走
行経路のブレが大きいことが確認できた.そこで,図
-9(a)のように外乱光が入らない状態で外乱光除去法
を実装していない通常のロボットと外乱光除去法を実
装したロボットをそれぞれ 5 周走行させ,走行タイム
を測定した.その結果を図-11 に示す.図-11 から外乱
光除去法を実装したロボットは,実装していない通常
のロボットと比較して走行タイムが長くなることがわ
かった.また,走行経路のブレによりどの程度余分な
距離を走行しているのかを調べるため,5 周走行させ
たときのモータの回転数を取得した.その結果を表-2
に示す.この結果より外乱光除去のモータの回転数が
通常のモータの回転数よりも 2 回転だけ余分であるこ
とがわかる.モータの車輪の円周が約 13cm なので約
26cm 余分に走行していることになる.これはセンサ値
取得の待ち時間である 12ms の間,光センサ値が更新
されず,古い光センサ値でモータ制御が行われている
ことに起因すると考える.
3.2 マルチタスク
外乱光除去のための LED の点滅時間を 12ms とする
と走行経路のブレが大きく,走行タイムが遅くなるた
図-8 外乱光除去プログラムのアルゴリズム
め,より短い点滅時間を設定しなくてはならない.し
かし,シングルタスクでは API の関係上,4ms の倍数
でしか点滅時間を設定することができない.その問題
の解決策として,複数の処理が同時に行われるように
見せかけるマルチタスクを用いることが有効と考えた.
4
4ms
alarm1
4ms
4ms
10ms
alarm2
4ms
4ms
10ms
Run
Light
Task_bg
図-12 外乱光除去プログラムのタイムスケジュール
・Light
起動する毎に光センサの LED を点滅させ,セン
サ値を取得し,補正によって正確な照度を求める
図-11 外乱光除去と通常走行タイム比較
周期タスクである.10ms 毎に起動し,優先度は 2
に設定する.
表-2 5 周後のモータの回転数比較
・Task_bg
基本動作関数である.走行開始の処理及び各パ
ラメータを液晶に表示させるタスクである.周期
タスクではなく上記のタスクが処理を行っていな
これにより点滅時間を自由に設定できるため,点滅時
い時に起動する.優先度は 1 に設定する.
間をさらに短くすることによって,走行タイムの短縮
を図った.
周期タスクが 2 つあるので,2 つのアラームを定義
する必要がある.本実験で 4ms ごとに Run タスクを起
(1)理論
動させるアラーム(alarm1)と 10ms ごとに light を起動さ
NXT のプログラムをコンパイルする際には,OIL
せるアラーム(alarm2)を定義した.このプログラムの動
(OSEK Implementation Language)ファイルというプロ
作させたときのタイムスケジュールは図-12 のように
グラムの構造を設定する専用のファイルを作成する必
なる. シングルタスクの場合では LED を点滅させる
要がある.この OIL ファイルは実装部とアプリケーシ
のに 4ms の倍数という制限があったが,マルチタスク
ョン部に分かれており,アプリケーション部の設定を
にすることで図-12 のようにそのような制限がなくな
行うことでマルチタスクを実装することができる.
り,待ち時間という無駄な時間を使って補正処理を行
アプリケーション部では,カウンタとアラームの設
うことができる.
定を行う.カウンタは,プログラム実行時間をカウン
トするオブジェクトで,アラームはカウンタに貼り付
(3) マルチタスク化したことによる効果
けて用い,様々な動作をさせることが出来るオブジェ
定義したタスク及び設計したタイムスケジュールを
クトである.これらを用いることで,設定した時間毎
実装したプログラムを作成した.作成したプログラム
に指定のタスクを起動させること(このタスクを周期
をロボットにインストールし,
図-9(a)に示したサンプ
タスクと言う)ができ,
複数のタスクが同時に動作して
ルコースを 5 周走行させたときの走行タイムと,マル
いるように見せることができる.また,タスクに優先
チタスク未実装でかつ外乱光除去を行わない場合の走
度を設定することができる.優先度が低いタスクが動
行タイムを図-13 に示す.
作中に優先度の高いタスクが起動する場合,低い優先
この結果から,マルチタスクの実装により走行タイ
度のタスクの処理を中断し,高い優先度のタスクが実
ムを短くすることができたことが確認できる.
しかし,
行される.そのタスクの処理が終了すると元の低い優
点滅時間が 10ms と 4ms とではまだ走行タイムに差が
先度のタスクの処理が再開される.
あるため,今後はこの走行タイムをいかにして縮める
かが課題となると考えられる.
(2)実装したタスクの概要
4.まとめ
今回実装したタスクは以下の 3 つである.
・Run
倒立振子走行を行う周期タスクである.4ms 毎
本研究では,自律型ロボットのライントレース走行
に起動しなければ倒立振子制御が動作せず,転倒
制御プログラムの開発において,ロボットに搭載する
してしまうため,
優先度は最も高い 3 に設定する.
光センサが取得したセンサ値から外乱光の影響を取り
5
が長くなったため走行タイムが遅くなった.その問題
の解決策として,複数の処理を同時に行っているよう
に見せかけるマルチタスクを用いた.本研究では倒立
振子走行を行う Run タスクと,光センサを用いて明る
さを取得し,その取得したセンサ値を用いてラインを
判断する Light タスクの 2 つを周期タスクとして定義
し,実装した.その結果,点滅時間を短くすることに
成功し,シングルタスクの場合よりも走行タイムを短
縮することができた.
今回実装したプログラムは外乱光の影響を軽減し,
図-13 マルチタスク実装の走行タイム比較
正確なライントレースが行える反面,通常よりも走行
除くプログラム,また,マルチタスクを用いて異なる
タイムが長くなってしまっている.プログラムをマル
処理を並行に行うプログラムの開発を行った.
チタスク化したことにより,多少改善されているが,
外乱光の影響を取り除くプログラムは,光センサに
それでも通常時のタイムより長くなっている.
搭載されている LED を消灯させることで外乱光によ
よって,外乱光の影響を軽減しつつ,走行タイムが
るセンサ値を取得し,点灯させたときのセンサ値との
さらに短くなるアルゴリズムを開発し実装することが
差分を取ることで実装した.まず,光センサのセンサ
今後の課題となる.
値と明るさの指標である照度との特性を実際に検証し
た.この特性を考慮した結果,外乱光を除去すること
謝辞:本研究において熱心にご指導いただいた西仁司
に成功し,走行中に発生する明るさの変化の影響を軽
先生,青山義弘先生をはじめ,研究にご協力いただい
減することができた.
た全ての方々に厚くお礼申し上げます.
次に,LED を点滅させる時間の検討を行った.プロ
グラム上で短い点滅時間を設定すると,適切なセンサ
参考文献
値を取得できないことが分かった.一方,点滅時間を
1) ET ロボコン概要,http://www.etrobo.jp/2013/
長くすると制御の時間間隔が長くなり,走行タイムが
gaiyou/intro.php
遅くなることが考えられた.これらの結果を基にシン
2) ET ロボコン 2013:競技規約,http://www.etrobo.
グルタスクで実装したところ,外乱光の影響を抑えた
jp/2013/gaiyou/images/kiyaku/ETRC2013_dev_rules_1 .
走行が実現できた.しかし API の関係上,シングルタ
0.1.pdf
スクでは点滅時間が 4ms の倍数になるという制限が加
3) ET ロボコン 2012 実行委員会:ET ロボコン 2012 技
わるため,点滅時間を柔軟に設定できず,処理の間隔
術教育資料
DEVELOPMENT OF RUN CONTROL PROGRAM OF AUTONOMOUS ROBOT
Yusuke TAIRA, Production System Engineering Course
Broad range of products such as cars and home electronics are equipped with an embedded system.The
technology of embedded system is necessary to a human life at present.An autonomous robot is one of its
fields.This doesn’t need controls by person at any time.It grasps and analyzes the present situation, and it
decides performance.
There is a ET software design robot contest aiming at technical education about an embedded system by
development of an autonomous robot tracing a line.I have developed the control program of an autonomous
robot which outputs the value of the light sensor removing influence of illumination to trace a line correctly.A
program was multitask-ized to control this method correctly later.
Key Words:Autonomous robot, Light sensor, disturbance flash, multitask
6