卒業研究2 卒業論文 レゴマインドストームを用いた ライントレー...

40
2 レゴ マインド ストームを いた ライントレースマシン 大学 コミュニケーション 19 1 31

Upload: others

Post on 18-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

卒業研究 2 卒業論文レゴマインドストームを用いたライントレースマシンの実機調査

東海大学 電子情報学部 コミュニケーション工学科齋藤 彰宏

平成 19 年 1 月 31 日

目 次

1 はじめに 5

2 ライントレースマシン概要 6

2.1 走行体の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.1 RCX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.2 センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.3 モータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.4 IRタワー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 開発手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3 大会概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 基礎実験 12

3.1 基礎実験-目的- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 基礎実験 1-光センサ実験- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2.1 基礎実験 1-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2.2 基礎実験 1-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2.3 基礎実験 1-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.3 基礎実験 2-走行中のセンサ値- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3.1 基礎実験 2-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3.2 基礎実験 2-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3.3 基礎実験 2-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.4 基礎実験 3-センサの誤検出- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4.1 基礎実験 3-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4.2 基礎実験 3-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4.3 基礎実験 3-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.5 基礎実験 4-エッジチェンジ- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5.1 基礎実験 4-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5.2 基礎実験 4-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5.3 基礎実験 4-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.6 基礎実験のまとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4 実験 19

4.1 実験-目的- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2 実験-バッテリーと速度の関係実験- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.2.1 実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2.2 実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2.3 -考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2.4 グラフ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2.5 グラフ 1の結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2.6 グラフ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2.7 グラフ 2の結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1

5 Zクランク ~Zクランク概要~ 23

5.1 Zクランク概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.2 Zクランク攻略のアルゴニズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5.2.1 走行アルゴニズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6 Zクランク ~灰色検知~ 27

6.1 検知方法の選定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.1.1 灰色入口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.1.2 灰色出口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7 Zクランク ~実験~ 28

7.1 Z実験 1-第 1クランク- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287.1.1 Z実験 1-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287.1.2 Z実験 1-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287.1.3 Z実験 1-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

7.2 Z実験 2-第 2クランク- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2.1 Z実験 2-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2.2 Z実験 2-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2.3 実験 2-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

7.3 Z実験 3-タイマ制御- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.3.1 Z実験 3-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.3.2 Z実験 3-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.3.3 Z実験 3-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

7.4 Z実験 4-ステアリング角度調整- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.4.1 Z実験 4-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.4.2 Z実験 4-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.4.3 Z実験 4-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

7.5 Z実験 5-ジャンプ補正- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.5.1 Z実験 5-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.5.2 Z実験 5-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.5.3 Z実験 5-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

7.6 Z実験 6-Zクランク走行- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.6.1 Z実験 6-実験内容- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.6.2 Z実験 6-実験結果- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.6.3 Z実験 6-考察- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

7.7 Z実験-まとめ- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

8 まとめ 37

9 最後に 38

10 参考文献 39

2

図 目 次

1 使用した走行体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 RCX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 赤外線センサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 モータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 IRタワー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 開発手順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 コース図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 エッジチェンジ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 フローチャート (エッジチェンジ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1710 電圧-速度関係 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2011 電圧-速度関係 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2212 Zクランク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 フローチャート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 Zクランク走行図 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615 GRAYマーカー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2716 第 2クランク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2917 フローチャート (角度調整) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3218 フローチャート (クランクジャンプ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3

表 目 次

1 RCX仕様表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 ボーナスタイムの条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 光センサ値測定 (センサ Sa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 光センサ値測定 (センサ Sb ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 光センサ値測定 (センサ Sc) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 光センサ値測定 (センサ Sd) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 走行中のセンサ値の変化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 センサの誤検出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 エッジチェンジ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1610 バッテリーと速度の関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1911 総電圧と秒速の関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112 第 1クランク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2813 第 2クランク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2914 タイマ制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3015 角度調整 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3116 ジャンプ補正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3317 Zクランク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4

1 はじめに

・現在の組込みシステムは,日本の産業競争力に欠くことの出来ない極めて重要な分野となってきている.組込みシステムとは,パソコンを始め,エアコンや冷蔵庫,テレビなど家の中にあるものだけでも,相当の数のコンピュータ制御を使用した製品があり,このようなコンピュータ制御を行う技術の中に,組込みシステム技術は使われているのである.しかし ,現状では組込みシステムに関わる技術者の人手不足が問題となってきているのである.その原因の一つとして,組込み技術者を育成するシステムが確立していないことという点が挙げられる.そんな中で,去年の 7月に,ETソフトウェアロボットコンテスト (通称 ETロボコン)が開催された.ETソフトウェアロボットコンテスト (通称ETロボコン)とは,組込みシステム技術教育をテーマとして開催している数少ない教育の場となっているのである.ETロボコンは,今年で 5回目を迎えたコンテストで,2002年より毎年開催されている.この大会は,レゴマインドストームというレゴ社より市販されているキットを使用したタイムトライヤルで

順位を競う競技とその課程を UMLモデリングを使用して表現する競技を行なう大会である.

今回は,この大会で使用したレゴマインドストームを利用したライントレースマシンについての実験を中心

に作業をした.具体的には,この走行体の性能を調べる実験や ETロボコンで走行することが出来なかった Zクランクコースを走行するプログラムの作成をメインに行った.

5

2 ライントレースマシン概要

2.1 走行体の概要

・走行体には、図 4のような LEGO社から市販されている LEGO Mindstormsというロボットキットを用いて組み立て使用した. LEGO Mindstormsとは,コンピュータが内蔵されている RCXと呼ばれるブロックやセンサ,ギアなどいろいろな部品で自由に動くロボットを作ることができるキ¿ットである.また,レゴブロックを使用しているので,ロボットの形を自在に変えることができる. これにより,歯車機構やリンク機構などの機械的機構の学習もでき,コンピュータが内蔵されている RCXにプログラムを覚えさせることで,動きを自由に変えることができる点が特徴である.

○走行体の特徴

LEGO Mindstormsには,OSを載せることが可能であり,Cや javaといったプログラミング言語でプログラムを記述し ,そのプログラムを走行体上で動作させることにより走行体を制御することが可能となる.その OSとしては,LegOS・brickOS・lejOSなどが公開されている.

今回は,C言語または C++言語を利用しようと考えており,対応しているOSには,LegOSと brickOSの2つが候補として挙がった.その中で,LegOSの後継的な位置付けにあり,最新でもある brickOSを用いることにした.

そして,brickOSを選んだ最も大きい理由としては,brickOSにはさまざまな API機能を使用することにより,走行体を制御することが出来るからである.その一例としては,brickOSのモータ制御用 APIを用いると,各モータの回転させるスピードを変化させることが可能になり,細かな制御まで行うことが出来るようになる.

図 1: 使用した走行体

6

○走行体に付いている主要な部品について以下で説

明する.

2.1.1 RCX

・RCXとは,レゴマインドストームで一番特徴的なものであり,図 2のようなコンピュータが内蔵されている大きなブロックである.RCXは 8ビットのマイクロコンピュータを内蔵しており,走行体の頭脳のような役割を果たす.この RCXにコンピュータで作成したプログラムを転送することで,自由に動かすことが出来る.RCXのようなH8コンピュータには,16KbyteのROMと 32Kbyteの RAMを搭載している.16Kbyteの ROMには,RCXのメインオペレーティングシステムであるファームウェアをダウンロードする

ための初期プログラムが入ってる

この初期プログラムは,電池が無くなっても消えません.32Kbyteの RAMには,ファームウェアと自分たちで作成したプログラムが使用するが,揮発性メモリなので,十分な電力が無くなると内容が消えてしまうので注意が必要である.RCXには,灰色の入力ポートが 3つある.ここには,周りの状況を判断するためのセンサを接続する.入力ポートに接続されたセンサからは,3msecごとに値を取得します.取得する値は 0-5Vの範囲である.

RCXを動かすために必要な電圧は,9V-6.7Vである.RCXは,6.3V以下になるとビープ音を鳴らして電池がないことを教えてくれる.

図 2: RCX

マイクロプロセッサ 8ビットマイコン H8/3292動作周波数 16MHz

10bitA/Dコンバータ× 8

メモリ プロセッサ内蔵 ROM 16KbRAM 32Kb

インタフェース Input Port× 3Output Port× 3

IR Transmitter Receiver× 1LCD Display× 1

電源 単 3乾電池 6本・

10V・2.5φ ACアダプタ

表 1: RCX仕様表

7

2.1.2 センサ

・レゴマインドストームでは,光センサとタッチセンサ,温度センサ,角度センサの 4種類のセンサをつなげることができる.それぞれのセンサは,測定する対象が異なるので,何を測定するのか目的に応じて複数使うことによって,より複雑な動きをさせることができる.今回の実験では,ライントレースをすることに必要な光センサとタッチセンサの 2種類を使用した.

○光センサ

光センサには,発光ダイオードと受光素子がついており,発光ダイオードから光が出力され,その反射光を受光素子が検出する. 受光素子は,光の強さに応じた電圧を発生させ,この電圧の変化を読み取ることで,明るさの値を検出できる. 測定値は,0から 100までの値を表示することでき,明るい時には 100に近く,暗い時には 0に近い値を検出する. 今回の作業の中では,0から1000まで表示することができる低位 APIも使用することにより,より正確に値を検知できるようにした.

○タッチセンサ

タッチセンサは,物がぶつかるとボタンがつぶれた状態になり,何かにぶつかっているのか知ることができる.また,タッチセンサ押している状態とそうでないときの状態を利用して,スイッチのような役割として使用することもできる.タッチセンサの内部には,金属端子が 2つと導電ゴムが 1つある.タッチセンサが押されてない時には,金属端子が接触していないため,抵抗値は無限大です.タッチセンサが押されている時には,導線ゴムが押されて,2つの金属端子がつながり,抵抗値は約 500オームになる.RCXは,抵抗の変化に対応する電圧の変化を読み取り,タッチセンサが押されている状態か判断する.

この 2つのセンサが目のような役割をし ,情報を取得することで,2つの各モータを動かしコースを検知し走行することができるようになる.

この他の温度センサ,角度センサについて以下で説明する.

○温度センサ

温度センサとは,温度が測定することができるセンサである.先端にある金属の部分が突き出ておりこの部分で温度

を測定する.この温度センサでは,-20度から 50度までの温度を測定することができる.しかし ,この温度センサは耐水性がないため,主に気温を測ることに使用します.

○角度センサ

角度センサは,センサの穴に通したシャフトがどれだけ回転するか測定することが出来るセンサである.シャフトを 1回転させると値が 16変化する.つまり,値が 1変化すると 22.5度回転したことになる.角度センサが検出した値から何度回転したかを知るこ

とが出来る.

図 3: 赤外線センサ

8

2.1.3 モータ

・モータは,ロボットの動きの源となっている. このモータを,RCXの出力ポートにつなぎ ,RCXのプログラムから出された命令に従って動作する.走行体には 2つのモータがついており,走行体のステアリングを動作させるステアリングモータと前後に動

作させる前後駆動モータがある.各モータの回転方向は,プログラムで指定することで順回転方向と逆回転方向へ回転させることが出来る.また,各モータのスピードは,0~255の間の数値を指定することができる.

図 4: モータ

2.1.4 IRタワー

・IRタワーは,コンピュータに接続し ,コンピュータで作成したプログラムを赤外線を使って RCXに転送する装置である.通信を行うことにより,RCXにプログラムを転送し ,自在に動かすことが出来るようになる.プログラムの受信を行うための赤外線ポートが,RCXの上部についている.コンピュータからプログラムを転送するには,IRタワーをパソコンの RS-232Cポートにつなげて使います.IRタワーと RCXは,赤外線を使って通信を行うだけでなく,RCXの赤外線ポート側からデータを送信することもできる.RCXと IRタワーは,2400bit/secの津信速度で,スタートビットが 1,データが 8ビット,パリティビット 1,ストップビット 1のデータを,38kHzに変調した赤外線で通信を行う.通信を行う時は,RCXと IRタワーの距離は,0.5m以内で角度は 35度以内に置いて使用する.

図 5: IRタワー

9

2.2 開発手順

レゴマインドストームでは,以下のような手順を繰り返すことで,思いどおりのロボットとプログラムを作成していきます.

○走行体の作成

いろんな部品を使用して走行体を作成していきます.モータやセンサも使用し,走行体の骨格を作っていく.ここで,センサは入力ポートに,モータなどは出力ポートに接続することに注意します.

○プログラムの作成

走行体を制御するプログラムを作ります.センサの情報をもとに,モータを動かしたり止めたり,どのようにすれば,自分の思い通りに走行体が動くかどうかを試行錯誤しながらプログラムを作成していき

ます.

○プログラム転送

コンピュータにつながっている IRタワーを使用し,コンピュータで作ったプログラムを RCXに転送して走行体に記憶させます.IRタワーがコンピュータに確実につながっていることを確認して,RCXの電源を入れた後に,プログラムの転送を行います.

○実際に動作させる

走行体を実際に動かしてみる.走行体が自分の思い通りの動きをするのか確かめます.思い通りに動かない場合には,プログラムを修正して,走行体の動作を再確認する.

図 6: 開発手順

10

2.3 大会概要

ETロボコンは,組込みソフトウェア分野における技術教育をテーマに 2002年より毎年開催されている. この大会は,技術教育をテーマにしているため,参加者には開発環境や UMLモデリングについて学ぶことができる基礎教育会が行われる.

ETロボコンは大きく分けて,UMLモデリング部門とタイムトライアル部門の2つに分かれて行われる.そして,各部門の上位入賞チームが 11月の中旬に行われるチャンピオンシップ大会に出場することができる.まず,UMLモデリング部門について簡単に説明をする.UMLモデリング部門では,UML等で分析・設計したソフトウェアの技術を競うコンテストであり,その中から優秀作品が選ばれるのである.

次に,タイムトライヤル部門について説明する.タイムトライヤル部門とは,走行体を用いて決められたコースを走行し ,そのタイムを競い合う競技である.今回は,図 18のようなコースが用意されており,インコースとアウトコースをそれぞれ2周ずつ走行する.2周した合計タイムからボーナスタイムを引いた総合

タイムで順位が決定する.ボーナスタイムとは、条件を満たすことにより得られ

るもので.走行タイムから引かれる. ボーナスタイムの内容は、表 2にまとめた.

表 2: ボーナスタイムの条件内容 ボーナスタイム

中間ゲート通過 5秒

ゴールゲート通過 5秒

Zクランク攻略 10秒

ゴール後,50cm以内で停止 5秒

このため,コース内にある点線コース・Zクランクなどの近道や坂道等の難所を攻略することが順位を上

げるポイントとなる. また、各難所の前後にある灰色検知も重要な要素となる.各難所について説明する.

• 点線コース

間隔 30mmごとの点線になっており,通過するとショートカットになる.

• Zクランク

Zの字を反転させた形のコースになっており,途中にあるゲートを通過すると攻略したと¿してボーナスポイントがもらえる.

• 坂道コース

最終コーナー後から、上り勾配が約 4%、下り勾配が約 2%の山形の坂道になっている.

図 7: コース図

11

3 基礎実験

3.1 基礎実験-目的-

まず,走行体の特徴を知らないことには実験を進めていくことが出来ないので各走行体やセンサについて

調べる実験を行った. 調べる内容は,走行体の光センサの性能を調べる実験を行った. 光センサの性能を調べる実験では,4台ある走行体の違いを調べるため,それぞれ走行体と光センサを Sa~Sdとして,走行体が停止時のセンサ値・センサの高さによるセンサ値・タッ

チセンサの性能について実験した.

3.2 基礎実験 1-光センサ実験-

3.2.1 基礎実験 1-実験内容-

光センサの取得する値をマシン,光センサ A~Dをそれぞれ調べる.走行体 Aには,光センサ Aを,走行体 Bには,光センサ B,とそれぞれアルファベットに対応させて行うこととした. 光センサには,通常APIと低位APIの両方を用いて実験を行う.また,センサと地面との高さによるセンサ値の変化について調べるために光センサと地面との距離が

0cm,0.5cm,1.0cm,1.5cm,2.0cmの時の値を調べる.

3.2.2 基礎実験 1-実験結果-

表 3: 光センサ値測定 (センサ Sa)

高さ 白 (通常) 白 (低位) 灰 (通常) 灰 (低位) 黒 (通常) 黒 (低位)

0.0 48 690~693 41~42 739~745 37~38 768~773

0.5 49 693~699 41 741~743 37 772~775

1.0 45~46 706~711 40 757~761 35 787~790

1.5 43~44 721~726 37~38 769~775 33~34 798~801

2.0 41~42 727~734 35~36 773~780 32~33 803~809

3.2.3 基礎実験 1-考察-

表 3,表 4,表 5,表 6のような結果となった. 実験の結果,センサ Sa~Sd はそれぞれ個体差があり数値が

違うものの,白・灰・黒の差や,各色の範囲はセンサとも同じような値となった.また,センサと地面との高さを調べた結果,高さが地面から 0cmと 0.5cmの時には対して値に差は無いが,2cmとなると差が出て来てしまい,0cmの時の灰色と同じ¿値が出て来てしまっている。

また,センサの高さが高くなるにつれて,白・灰・黒のそれぞれの境界値も狭くなっている.このことから,坂道の頂上付近などの走行中にセンサと地面との距離が変化する所では対処が必要になって

くる.

12

表 4: 光センサ値測定 (センサ Sb )

高さ 白 (通常) 白 (低位) 灰 (通常) 灰 (低位) 黒 (通常) 黒 (低位)

0.0 39~40 757~761 31 814~818 26~27 845~848

0.5 37~38 768~773 30 819~824 25~26 848~857

1.0 34~35 784~791 27~28 836~843 23~24 865~871

1.5 32~34 795~802 26~27 839~849 22~23 870~875

2.0 31~33 806~814 25~26 841~851 21~22 875~883

表 5: 光センサ値測定 (センサ Sc)

高さ 白 (通常) 白 (低位) 灰 (通常) 灰 (低位) 黒 (通常) 黒 (低位)

0.0 42 742~745 33~34 800~804 29 829~834

0.5 41 745~750 33~34 795~801 28~29 833~838

1.0 38~39 762~769 31~32 815~819 26 849~853

1.5 35~36 779~783 29~30 825~831 24~25 861~865

2.0 33~35 793~803 27~28 835~841 23~25 869~875

表 6: 光センサ値測定 (センサ Sd)

高さ 白 (通常) 白 (低位) 灰 (通常) 灰 (低位) 黒 (通常) 黒 (低位)

0.0 41~42 743~751 34~35 790~796 31~32 817~822

0.5 41~42 738~744 32~33 787~795 30~31 813~821

1.0 38~39 762~766 32~33 800~807 27~28 832~838

1.5 36~37 770~781 29~31 814~819 25~27 841~849

2.0 34~36 783~790 28~30 822~829 24~27 850~863

13

3.3 基礎実験 2-走行中のセンサ値-

・基礎実験 1では,走行体の赤外線センサが停止した状態での測定であった.よって,走行体が走行中では,停止した状態と変化があるのか調べることにした.

3.3.1 基礎実験 2-実験内容-

そこで走行体A~Dの 4機と各赤外線センサを用いて,布製テストコース上の白・黒・灰の上を走行させながらセンサ値のログを取得し ,センサ値にどのような変化があるのかを調べた.また,光センサ値は,通常 APIと低位 APIを両方使用し ,首振りは行っておらず首は固定した状態とした.この時の,走行体の駆動モータの値は 255とした.

3.3.2 基礎実験 2-実験結果-

表 7: 走行中のセンサ値の変化各走行体 線 取得値 低位 API

走行体 A 白 48~50 679~701センサ Sa 黒 35~37 767~796

灰 40~42 740~746

走行体 B 白 32~34 750~786センサ Sb 黒 22~24 838~863

灰 25~26 818~829

走行体 C 白 36~39 747~786センサ Sc 黒 24~26 843~869

灰 29~30 824~830

走行体 D 白 35~38 758~796センサ Sd 黒 25~27 836~860

灰 28~29 820~829

3.3.3 基礎実験 2-考察-

実験結果を表 7に示す. 各走行体による値の違いはあるものの,各走行体とも白,黒,灰上の光センサ値の変化範囲は,最小で 2,最大で 4であった.基礎実験 1で得た結果と比較すると,赤外線センサが取得する範囲が走行中の方が多少広くなったが,その誤差は十分に小さいといえる.また,光センサ値を低位 APIにした結果も,最小で 6,最大で 39となり,上記と同様な結果となった.したがって,平坦な場所を走行する場合においては,光センサの値の大きなずれは生じないといえる.

14

3.4 基礎実験 3-センサの誤検出-

基礎実験 1では,赤外線センサが取得する値の範囲について調べた.走行体が,エッジ走行をしている時には,ステアリングがものすごい速さで動作しているので,赤外線センサが取得する値に変化があるのか分からなかった.そこで,ここでは走行体が実際に走行中に赤外線センサが値を取得した時に,誤って違う値を取得することがあるのかどうか調べる実験を行うことにした.もし ,センサが誤検出するようなことがあれば,これからアルゴニズム作成していく時に重要になってくる.

3.4.1 基礎実験 3-実験内容-

走行体が走行中に,赤外線センサが取得する値に,誤検出はないかどうか調べる実験を行った.調べる方法は,走行体がエッジ走行をしている時に,赤外線センサが値を 512個取得するそのうち,指定した範囲以外の数値が出て来た場合には,誤検出があったと判断し誤検出があった場合には,走行体にその値を記録させ合計で何回値を検出したの

か調べた.また,その結果から赤外線センサが誤検出する割合を求めた.実験には,走行体と赤外線センサともに A~Dあるうちの Aを使用した.誤検出であると判断する材料には,基礎実験 1で行われた結果を元にして,取得する値が,773以上である時か 690以下である時を誤検出であるとした.そして,駆動モータ・ステアリングモータともに 255の値で測定した.

3.4.2 基礎実験 3-実験結果-

表 8: センサの誤検出走行体 検出した回数 誤検出する割合

マシン A 14 3%センサ Sa

3.4.3 基礎実験 3-考察-

表 8のような結果となった. この結果より,赤外線センサが誤って違う値を検出した数は,14回となりこれを割合にして表すと,3%であるということが分かった.また,ここで誤検出と取得したほとんどが,指定した範囲から飛び抜けた値ではなく,ほとんど変わらない値なのでステアリングが動いていた分ステアリングが停

止時より,取得する値の範囲が広くなってしまうことがわかる.よって,走行体が走行中に誤検出する割合は少ないといえるので,あまり気にせず実験を行っていくこととした.

15

3.5 基礎実験 4-エッジチェンジ-

この実験では,Zクランクを走行する時に,必要とされるエッジチェンジという機能を作成した.

図 8: エッジチェンジ

○エッジチェンジ機能の説明

エッジチェンジとは,走行体がエッジ走行をしている時に,今走行している側のエッジとは逆側のエッジを走行するようにすることである.例えば,図 8のように,左側の白色と黒色の境界線を識別しながらエッジ走行していたとすると,右側の白色と黒色の境界線を識別して走行するようにすることで

ある.

○エッジチェンジの動作の流れをフローチャートで

表した.

3.5.1 基礎実験 4-実験内容-

エッジチェンジ機能を作成する時に,ただ普通に走行体が走行している側のエッジとは逆のエッジを読む

ように指示を出すと,指示を出した時の赤外線センサの位置によって,動作がうまくいかない時があった.そこで,エッジチェンジの指示を出す前に,赤外線センサが黒色のラインの中心から,エッジチェンジをする方向へくるように指示を出すことで,誤作動しないようにした.実際には,エッジチェンジを開始する前に,ステアリングモータをエッジチェンジする方向へ回転させるよう

に指示を出し ,そこから待機命令を出し一定時間経過後にエッジチェンジするようにした.ここでは,待機命令を出す時間を変化させ,ベストな時間を調べた.

3.5.2 基礎実験 4-実験結果-

表 9: エッジチェンジ時間 (ms) 結果 コメント

10 × センサの位置に左右される

50 △ まれに失敗する

80 ○ 成功

100 △ 成功するが走行がぶれる

3.5.3 基礎実験 4-考察-

表 9のようになった.この結果より,待機命令を出す時間は,80msがベストであることが分かる.これよりも時間を長くしてしまうと,走行体がぶれてしまい走行が不安定になってしまうからである.

16

図 9: フローチャート (エッジチェンジ)

17

3.6 基礎実験のまとめ

基礎実験を行うことにより,走行体の性能や特徴を把握することができた.まずは,基礎実験 1である.この結果より,赤外線センサの性能を調べるための実験では,それぞれ個体差がある中から白,黒,灰,の境界値が 1番はっきりとしている赤外線センサは Aであることが分かった.よって,これから先はこの赤外線センサと走行体を使用して実験を進めていくことに決めた.基礎実験 2では,基礎実験 1の結果は走行体が停止中だったのに対して,走行中は赤外線センサの取得する値に変化があるか調べた.その結果,平坦な場所を走行する場合においては,光センサの値の大きなずれは生じないということが分かっ

た.次に,基礎実験 3である.この結果より,走行体が走行中に赤外線センサが取得する値は,誤検出する割合が少ないので無視できるといえる.しかし ,プログラムを作成していく上で,同じ色を連続して取得するような指示を出す時には,まれに誤検出をする可能性が 0ではないので,連続で取得する回数を少なくするなどの注意が必要になってくる.最後は, 基礎実験 4であるが,ここで作成したエッジチェンジの機能は,Zクランクを走行する時の手段として,有効的に利用したい.

18

4 実験

4.1 実験-目的-

走行体を走らせてく上で,どのくらいのスピードで走行させるのかが重要になってくる. スピードが速すぎると急なカーブでコースアウトしてしまうし,スピードが遅いといいタイムを出すことができない. そこで,自分が出したい最適なスピードをいつでも出せるよう

にするため,電圧と速度の関係を調べる実験を行うことにした. また,その結果を秒速で出すことにより分かりやすくした.

4.2 実験-バッテリーと速度の関係実験-

4.2.1 実験内容-

走行体のスピードとバッテリーとの関係を調べる実

験を行った.測定方法は,3mの直線コースを用意し ,駆動モータの設定値が 255,230,200,150の時を,それぞれ 3回づつ測定しその平均を求めた. 求めた電圧は,走行体を動作させるために必要な電池 6本のうち 1本の電圧を測定して,電圧が 1.50,1.45,1.40,1.35,1.30,1.25,1.20の時を調べた. また,マシンの首振りは行わないこととした.

4.2.2 実験結果-

4.2.3 -考察-

実験結果を表 10に示す. この結果より,予想されたように電圧が下がるにつれてスピードも落ちていって

いることが分かる.

表 10: バッテリーと速度の関係

バッテリー スピード 1回目 2回目 3回目 平均

255 3’55 3’56 3’59 3’571,50 230 3’58 3’58 3’53 3’56

200 3’88 3’95 4’15 3’99150 5’45 5’39 5’45 5’43

255 4’19 4’19 4’33 4’241,45 230 4’17 4’19 4’16 4’17

200 4’52 4’56 4’69 4’59150 5’72 5’89 5’70 5’77

255 4’38 4’40 4’51 4’431,40 230 4’50 4’55 5’09 4’58

200 5’04 5’06 4’59 5’03150 6’20 6’35 6’23 6’26

255 4’69 4’56 4’53 4’591,35 230 4’89 4’92 4’99 4’93

200 5’49 5’52 5’33 5’45150 6’62 6’72 6’66 6’67

255 5’42 5’49 5’53 5’481,30 230 5’96 6’03 5’92 5’97

200 6’86 6’73 6’92 6’84150 10’69 10’79 10’32 10’6

255 6’56 6’33 6’39 6’431,25 230 7’19 7’22 7’20 7’20

200 8’82 8’59 8’89 8’77150 18’65 19’01 19’09 18’92

255 6’36 6’36 6’49 6’401,20 230 7’12 7’32 7’55 7’33

200 9’06 9’19 9’09 9’11150 18’35 17’52 18’23 18’03

19

4.2.4 グラフ 1

先の実験で得た表 10より,電圧と速度の関係を各タイムの平均をもとにしてグラフを作成した.

図 10: 電圧-速度関係 1

4.2.5 グラフ 1の結果

・図 10より,バッテリに対するマシンのスピードは,多少ばらつきはあるものの近似値線を取ってみると比

例関係になっていることが分かる.

20

4.2.6 グラフ 2

表 10の実験で得た値を利用し,走行体の走行タイムを秒速に変換し ,電圧を走行体に搭載されている電池1本分で調べるのではなく走行体全体の総電圧に変換することにした.これにより,求めたい速度がすぐに導き出すことができるようにした.すると,下のような表になる.

表 11: 総電圧と秒速の関係総電圧 (V) 255 230 200 150

9.0 0’84 0’84 0’75 0’55

8.7 0’71 0’72 0’65 0’52

8.4 0’68 0’66 0’60 0’48

8.1 0’65 0’61 0’55 0’45

7.8 0’55 0’50 0’44 0’28

7.5 0’47 0’42 0’34 0’16

7.2 0’47 0’41 0’33 0’16

表 11を元にして,グラフを作成すると,次のようなグラフになる.

4.2.7 グラフ 2の結果

グラフにしてみると,図 10のようになった.この結果より,総電圧に対する速度の関係は比例の関係で減っていってることが分かる.

4.3 まとめ

・この実験から,走行体の電圧と速度との関係が分かった.この結果を見てみると,走行体の駆動モータの速度が255,230,200である時は,どの直線も同じような傾きでスピードが減少していってることが分かるが,駆動モータの速度が 150の時だけ直線の傾きが激しく速度が落ちていくのが早くなっている.これは,駆動モータの回転速度が遅いとパワーがうまく伝わらずに歯車が回転しにくくなるからだと思われ

ます.この結果を利用することで,求めたい速度が瞬時に導き出せるようになった.

21

図 11: 電圧-速度関係 2

22

5 Zクランク ~Zクランク概要~

5.1 Zクランク概要

・Zクランクとは,ETソフトウェアコンテストの大会の中で,コースの難所として用意されていたコースのことである.Zクランクコースは図のように,ちょうど Zの字を反転させた形をしている.Zクランクに進入すると,Zクランクの中腹部にある黒色のラインに向かって外巻きのラインになっていて,中腹部のラインからは,次のクランクが内巻きのラインになっている.よって,Zクランクにある一つ目と二つ目のクランクでは,曲がる角度がそれぞれ違っているのである.

また,Zクランクに入る前の入口と Zクランクの出口のところには,灰色のマーカーが Zクランクを挟むように配置されてあり,このマーカーを検知することでZクランクがあることを識別できるようになっている.灰色マーカーの長さは,入口と出口の両方とも 20cmであり,メインフレームとの分岐前後でそれぞれ 15cm,5cmとなっている.ETロボコン大会では,Zクランクは絶対に通らないといけないわけではなく,Zクランクの進入口は黒色のラインの左側から進入するようになっているので,Zクランク走行するチームは左側のエッジを検知しながら走

行し ,Zクランクを通りたくないチームは,コースの右側のエッジを検知しながらエッジ走行をすることで,Zクランクを回避できるようになっていた.この大会では, クランクの中央にゲートが設置してあり,これを通過するとボーナスタイムが 10秒もらえるようになっていた.よって,この大会でタイムの上位を狙うには,Zクランクを走破し ,ボーナスタイムを得ることが重要となっていた.

図 12: Zクランク

・ETロボコン大会本番では,Zクランクコースに挑戦したチームは少なく,Zクランクに挑戦したチームの中で,コースを走破したチームはさらに少なかった.Zクランクを走破することが出来たチームの走行をみてみると,タイマで制御しているチームや,バック走行を利用してラインを認識しながら走行しているチーム

など ,走行する方法は各チームごとに違いがあった.自分たちが参加したチームは,Zクランク走行用のプログラムを作成していなかったため,Zクランクコースを通らずに通常コースを走行した.そこで,今回は,大会では作成出来なかった Zクランクコースを走行できるプログラムを作成することを目標

として実験を行った.

23

5.2 Zクランク攻略のアルゴニズム

まず,プログラムを作成して実験を行っていく前にどのように Zクランクを攻略すればよいか考えた.すると,いくつか Zクランク走行をするアルゴニズムが思いついたので,そのなかで,どの方法を利用し作成するのか考えるところから始めた.

Zクランクを走行していく方法としては,まず,Zクランクの手前にある灰色を検知する.灰色を検知後に,Zクランク走行モードに切替えて,Zクランク走行プログラムが作動するようにした.その後の動き方で 2通りの案が出てきた.1つ目は,Zクランクをタイマで制御しながら走行していく方法で,2つ目の案は,タイマ制御を使用せずに,Zクランクに入るまでの走行の軌跡などから曲り角があ

ることを検知して Zクランクを走行していく方法が案として出てきた.その中で,1つ目の案であるタイマで制御しながら走行していく方法の方は,灰色検知を認識することができるとあとは指定した動きをしながらの走行になるので,Zクランクを走行していくことが出来ると判断し ,タイマ制御を使用して走行するアルゴニズムで作成してい

くことにした.

5.2.1 走行アルゴニズム

・このアルゴニズムは,走行体をタイマで制御しながら Zクランクを攻略する方法である.以下に,Zクランク走行モードで走行する動作について説明する.

○アルゴニズムの動作説明

1. まず,Zクランクの入口にある灰色マーカーを検知するところから始まる.

2. その後,第1クランクの手前でマシンを停止させる.

3. マシンをジャンプさせるため,マシンのステアリングを指定した角度にする.

4. ジャンプを開始し ,Zクランクの中腹にあるラインを検知し ,エッジ走行をする.

5. エッジ走行しているラインのエッジを変えるため,エッジチェンジを行う.

6. その後,第 2クランクの手前でマシンを停止させる.

7. また,ジャンプさせるために,マシンのステアリングを指定した角度にする.

8. マシンのジャンプを開始し ,Zクランクの最後のラインを検知し ,エッジ走行をする.

9. 最後に,エッジチェンジをして.ラインのインコース側のラインをエッジ走行するようにして,通常走行に戻り,Zクランク走行を終了する.

・次に,このアルゴニズムの動作を分かりやすくするためにフローチャートで表示する.すると以下のような図になった.

24

図 13: フローチャート (Zクランク)

25

図 14: Zクランク走行図

26

6 Zクランク ~灰色検知~

・Zクランクのコースには,入口と出口の 2箇所に,灰色のマーカーがある.今回のアルゴニズムでは,走行体がエッジ走行をしながら Zクランクの入口に進入してきて,灰色のマーカーを検知することで,走行体が Zクランク走行モードに切り替わり,Zクランクを走行していく.よって,灰色検出が確実にできるかどうかが重要なポイントとなってくる.ここでは,どのように方法で灰色を検知していくのか考え,プログラムを作成した.

図 15: GRAYマーカー

6.1 検知方法の選定

・基礎実験の結果を調べてみると,走行体が通常のラインをエッジ走行しているときでも,黒線と白線の境界地では灰色の値を示すことがあるので,単純に,センサが灰色の値を検出したら Zクランク走行モードになるでは,検知の精度が高いものができない.

そこで,走行体の赤外線センサが灰色のマーカー上にきた時に,センサが灰色の値を連続して取得する回数によって灰色のマーカー上であるか判断することにし

た.次に,Zクランクの入口と出口の灰色の検知方法を分けて考えた.

6.1.1 灰色入口

・Zクランクの入口の灰色マーカーを検知して,Zクランク走行モードに切り替わるのだが,赤外線センサが灰色の値を何回連続して取得した時を,灰色マーカー上にいると判断させるのか考えた.センサが連続して取得する回数を少なくすると,通常のラインをエッジ走行している時に誤認識してしまう

可能性がある.また,反対に,赤外線センサが連続して取得する回数を多くするとセンサが取得しきれなくなり,失敗する.そこで,実際に調査してみると通常ライン走行中に灰色の値を誤認識した時でも連続では,多くても 10回程度であった.よって,今回の灰色検知では 20回灰色の値を連続して取得した時を灰色であると判断することにした.

6.1.2 灰色出口

・Zクランクの出口では,入口と同じような方法で灰色検知をして Zクランク走行モードを終了させ通常走行モードに切替えるようにする方法があるが,この方法では,Zクランクの終りで検知出来ないことがあるかもしれない.そこで,確実に Zクランク走行モードを終了させ通常のエッジライン走行にするために,出口では Zクランク走行モードが終了次第,通常走行モードに戻るようにして,Zクランク出口での灰色検知は行わないことにした.

27

7 Zクランク ~実験~

・Zクランクコースには,曲がり角であるクランクが 2つあり,このクランクをどのように曲がるかが重要である.また,2つのクランクは曲がる角度が違うため,それぞれ第 1クランク,第 2クランクとして分けて考えることにした.他にも,Z クランクを走行するアルゴニズムを細分化し ,それぞれの動作を確認する実験を行った.具体的には,第 1クランク・第 2クランクの実験のほかに,走行体を制御する時間を調べるためにタイマ制御に関する実験や,クランクでジャンプする成功率を高めるためのジャンプ補正の実験,ジャンプする際の角度を決める角度補正の実験を行った.そして,最後に全ての動作を結合させて Zクランクを走行することが出来るのか実験を行った.

7.1 Z実験 1-第 1クランク-

7.1.1 Z実験 1-実験内容-

・第 1クランクでは,Zクランクの入口にある灰色のマーカーを検知した後に,どの位置で走行体を停止させるかが重要である.そこで,クランクの手前ではどの位置で走行体を停止させ,ステアリングの角度は,どの角度で走行体がジャンプを開始するのがベストであるか調べる実験を行っ

た.実験方法は,クランクの手前から 10cm,15cm,20cm,25cmの時とステアリングの角度をラインから赤外線センサ

までの距離を 2cm,3cm,4cmとした場合について調べた.走行体の駆動モータ・ステアリングモータの値は,それぞれ駆動モータが 200で,ステアリングモータが 255として測定をすることにした.また,その時の走行体の動作をコメントとして記入した.

7.1.2 Z実験 1-実験結果-

表 12: 第 1クランク距離 角度 結果 コメント

10 2 × 進入角度がきつい

3 ○ 成功

4 ○ 成功

15 2 × 進入角度がきつい

3 ○ 成功

4 △ 届かない時がある

20 2 ○ 成功

3 △ 届かない時がある

4 × 届かない

25 2 △ 届かない時がある

3 × 届かない

4 × 届かない

7.1.3 Z実験 1-考察-

・表 12のような結果となった.この結果を見てみると,走行体とクランクとの距離は10cm~20cmの時が成功しやすく,ステアリングの角度は 3か 4にするといいことが分かる.しかし ,これではジャンプの成功率がいいとは言えないので,改良が必要である.走行体が,ジャンプに失敗する原因をみてみると,大きく分けて 2通りのパターンがあった.1つは, ステアリングの角度が浅いと中腹部のラインに直角のような形で進入してしまいラインに沿って走

行することが出来なくなる場合と,2つめが,その逆で角度が深すぎて中腹部のラインに届かない場合であっ

た.よって,このことを考慮してプログラムを作成していかなければならない.

28

7.2 Z実験 2-第 2クランク-

7.2.1 Z実験 2-実験内容-

第 2 クランクの実験では,Z実験 1の時と同じようにクランクの手前ではどの位置で停止して,ステアリングの角度はどの角度がベストであるか調べる実験を

行った.実験方法も,Z 実験 1 と同様に, クランクの手前から10cm,15cm,20cm,25cmの時と,ステアリングの角度を赤外線センサからラインまでの距離が 2cm,3cm,4cmとした場合について調べた.走行体の駆動モータ・ステアリングモータの値は,それぞれ駆動モータが 200で,ステアリングモータが 255として測定をすることにした.また,その時の走行体の動作をコメントとして記入した.

図 16: 第 2クランク

7.2.2 Z実験 2-実験結果-

表 13: 第 2クランク距離 角度 結果 コメント

10 2 △ 進入角度がきつい

3 △ 進入角度がきつい

4 ○ 成功

15 2 △ 進入角度がきつい

3 ○ 成功

4 △ 届かない時がある

20 2 ○ 成功

3 ○ 成功

4 × 届かない

25 2 △ 届かない時がある

3 × 届かない

4 × 届かない

7.2.3 実験 2-考察-

実験の結果,表 13のようになった.この結果より, マシンとクランクとの距離は,10cm~20cmでステアリングの角度は,2~4がいいことが分かる.実験 1の第 1クランクの実験と比べてみると,クランクの角度が第 2クランクの方が内側に巻きながらのラインになっているため,第 1クランクの時よりも成功する割合が多くなっていることが分かる.そして,失敗した時の動作について調べると,第 2クランク実験でも Z実験 1と同じように,ステアリングの角度が浅いと中腹部のラインに直角のような形で進入

してしまいラインに沿って走行することが出来なくな

る場合と,その逆で角度が深すぎて中腹部のラインに届かない場合の 2通りのパターンがあった.よって,第 2クランクの時も,このことを考慮してプログラムを作成していかなければならない.

29

7.3 Z実験 3-タイマ制御-

・Zクランク走行をする時に重要になってくる機能にタイマ制御がある.今回のアルゴニズムでは,Zクランクの入口にある灰色マーカーを検知した後,第 1クランクの前で停止する時,その後,走行体がジャンプを開始し中腹部の黒色ラインに着地をした後に第 2クランク手前で停止する時や,エッジチェンジを開始する時などで使用される.よって,タイマが正確でないと Zクランク走行がずれてしまい失敗の原因になってしまうのである.タイマをかける方法は,以下の方法とした.

○タイマ制御の方法

今回,Z クランク走行をする際にタイマをかける方法は,走行体が走行中に赤外線センサで値を取得する回数を利用して,判断することにした.

7.3.1 Z実験 3-実験内容-

今回の実験では,赤外線センサが指定した回数の値を取得したら,動作を停止させるようなプログラムを利用した.赤外線センサがそれぞれ,1000,2000,3000,4000,5000回,値を取得した時に,動作が終了して停止するまでに何秒かかったのかを調べた.各 3回づつ調べて,その平均を求めた.また,ステアリングモータの値は 255として行った.

7.3.2 Z実験 3-実験結果-

表 14: タイマ制御回数 時間 (1回目) 2回目 3回目 平均

1000 0’50 0’49 0’53 0’51

2000 1’39 1’30 1’23 1’31

3000 2’06 1’93 1’83 1’94

4000 2’59 2’54 2’53 2’56

5000 3’03 3’19 2’93 3’05

7.3.3 Z実験 3-考察-

実験を行った結果,表 14のようになった.この結果より,ばらつきはあるものの,赤外線センサの取得する回数が 1000回で約 0.5秒かかっていることが分かる.このことを利用し,Zクランクコース走行のプログラムを作成する時に,タイマ制御をかける部分の参考として使用する.

30

7.4 Z実験 4-ステアリング角度調整-

・今回のアルゴニズムでは,Zクランクに進入した後に走行体を停止させ,ステアリングの角度を決めて走行体をジャンプさせて走行する.よって,走行体のステアリングの角度が正確に停止できるようにすることが重要になってくる.ステアリングの角度が正確に制御できないと,走行体がジャンプを開始した際にどこに進んでいくか分から

なくなってしまうからである.そこで,ステアリングの角度を正確に停止できるアルゴニズムを考え,次のようにすることにした.

○角度調整アルゴニズムの説明

まず,通常のエッジ走行をしている時にステアリングを停止させても,その時のセンサの位置がバラバラになってしまい,どこにいるか分からないので次の指示が出せなくなってしまう.そこで,どの位置にセンサがあろうとステアリングを停止させる指示を出す時を固定させることにより,正確にセンサを止められるようにした.今回は,センサが角度調整を開始した時に白色を検知していたら,そのまま検知を続けていき始めて黒色を検知した時にステアリングを停止させ,角度調整を開始した時に黒色を検知していたら,そのまま白色を検知し ,その後,始めて黒色を検知した時にステアリングを停止させることにした.よって,どの位置から角度調整を始めても同じ位置でステアリングの停止命令を出せるようにした.また,角度の度合はステアリングを停止させる時に,待機命令を出すことにより,自在に角度を調整出来るようにした.

・角度調整の流れをフローチャートで説明する.

7.4.1 Z実験 4-実験内容-

この実験では, ステアリングの角度調整を開始する時に,待機命令を 100ms,50ms,40ms,30ms,10ms,と出した時に,黒ラインからステアリングに付いているセンサまでの距離が何 cmになるのか調べた.それぞれ 3回づつ調べその平均を求めた.この時の,ステアリングモータの値は,255とした.

7.4.2 Z実験 4-実験結果-

表 15: 角度調整待機時間 距離 (1回目) 2回目 3回目 平均

10 -0.5 -0.5 -0.5 -0.5

20 0.5 0.6 0.5 0.5

30 1.5 1.5 1.5 1.5

40 2.5 2.5 2.5 2.5

50 3.0 3.0 3.0 3.0

80 4.0 4.0 4.0 4.0

100 4.5 5.0 5.0 4.8

7.4.3 Z実験 4-考察-

表 15より,3回ずつ測定した結果,各値がほぼ同じになっていることから角度調整のアルゴニズムは,機能してるといえる.また,各待機時間に対するステアリングの角度が分かったので,この結果を参考にしてクランクをジャンプする時の角度調整として利用できる.

31

図 17: フローチャート (角度調整)

32

7.5 Z実験 5-ジャンプ補正-

・今回の Zクランクのアルゴニズムでは,クランクをジャンプして走行していくのだが,Z実験 1や Z実験 2のような結果では,成功率はけっして高いとはいえない.そこで,ただステアリングの角度を調整してジャンプするだけではなく,ジャンプした時により確実に Zクランクの中腹部のラインに着地出来るように補正をか

けることにした.その方法は,次のようにした.

○ジャンプ補正の方法

走行体が Zクランクに進入して,停止し角度調整をした後,走行体はジャンプを開始するが,Z実験 1の結果をみると中腹にある黒のラインを検出出来ずに失敗し

ていることが多い.そこで,ラインに届かなかった時にステアリングを逆回転させ,確実に Zクランクの中腹部にある黒のラインを検出できるようにした.よって,走行体がジャンプを開始して,ある程度経過しても黒のラインを検知出来なかった時は,ラインに届かなかった時であると判断し ,ステアリングを逆回転させるようにした.クランクジャンプの流れをフローチャートで表した.

7.5.1 Z実験 5-実験内容-

第 1クランクをジャンプ補正を付けたマシンで走行させ,成功率が向上しているかどうか調べる.実験方法は,クランクからマシンの距離が,10cm,15cm,20cm,25cmの時にステアリング角度を 3cm,4cmとした時の動作を調べた.また,その時の様子をコメントとして記入した.

7.5.2 Z実験 5-実験結果-

表 16: ジャンプ補正距離 角度 結果 コメント

10 3 △ 進入角度がきつい

4 ○ 成功

15 3 ○ 成功

4 ○ 成功

20 3 ○ 成功

4 ○ 成功

25 3 ○ 成功

4 ○ 成功

7.5.3 Z実験 5-考察-

表 16のような結果となった.ジャンプ補正を加えたことで,中腹部の黒ラインを検出しやすくなり,かなりの確率で成功するようになった.成功する範囲も,クランクとの距離が 10cm~25cmの間が成功しやすくなっていて,ステアリング角度も,3,4ならば成功するという結果になり幅広くなっているこ

とが分かる.

33

図 18: フローチャート (クランクジャンプ)

34

7.6 Z実験 6-Zクランク走行-

・今まで行ってきた Z実験 1,2,3,4,5では,Zクランク走行を各部分ごとに分けて,その動作を確認する実験を行った.ここでは各実験で,それぞれ動作の確認が出来たので,実際に全てのプログラムを接合させ 1つのプログラムを作成し ,Z クランクを走行できるのか調べる実験を行った.Zクランクを走行していく上で,走行体がジャンプを開始する位置やステアリングの角度は,今まで行ってきた Z実験 1,2,3,4,5の結果を利用して値を決めた.また,この他に灰色検知機能も一緒に接合させ,Zクランクに進入する前から,Zクラン走行が終了するまでの一連の動作をチェック出来るようにした.

7.6.1 Z実験 6-実験内容-

Zクランクのコースを走行させ,Zクランク走行モードで Zクランクを走行することが出来るかどうか調べた.Zクランクのコースには,実際と同じ大きさの紙のコースを用意してその上を走行させた.今までの実験で得た値を利用して,ステアリングの角度が 3,4の場合について調べ,各クランクと走行体との距離が,第 1クランクが 15cm,20cm,25cmで,第 2クランクが 10cm,15cm,20cmの時について調べた.また,走行体の動作をコメントとして記述した.走行体の駆動モータ・ステアリングモータの値は,駆動モータが 200で,ステアリングモータが 255として実験を行った.

7.6.2 Z実験 6-実験結果-

表 17: Zクランク

距離 (第 1) 距離 (第 2) 角度 結果 コメント

15 10 3 △ 第 1クランクで失敗4 ○ 成功

15 3 ○ 成功

4 △ 第 2クランクで失敗20 3 △ 第 2クランクで失敗

4 × 第 2クランクで失敗

20 10 3 ○ 成功

4 ○ 成功

15 3 ○ 成功

4 ○ 成功

20 3 ○ 成功

4 △ 第 2クランクで失敗

25 10 3 × 第 2クランクで失敗4 △ 第 2クランクで失敗

15 3 ○ 成功

4 ○ 成功

20 3 ○ 成功

4 ○ 成功

35

7.6.3 Z実験 6-考察-

表 17のような結果となった.結果をみてみると,多少の失敗はあるものの Zクランクを成功する割合は高いものとなった.失敗した時の動作をみると,第 1クランクは走行することが出来るのだが,中腹部のラインに着地した時の走行体の場所に,その後の動作が決ってしまい失敗してしまった.しかし ,第 1クランクと走行体の距離が 20cmの時は,安定した結果が得られているので,この値で走行させればいいことが分かる.この値を,最終的なプログラムで使用することがよい.

7.7 Z実験-まとめ-

・Z実験 1,2,3,4,5では,Zクランク走行の動きを部分ごとに分けて,その動作を確認する実験を行った.これのより,各動作を行なった時の詳しい状況を知ることが,どのような対処をすればよいのか知ることが出来た.その結果を元にして,Zクランク走行用に作成した全てのプログラムを接合してプログラムを完成させた.Z実験 6では,そのプログラムを使用し ,Zクランクを走行することが出来るか調べた.その結果をみると,Zクランクを走行することが出来る最適とされる値が求まった.そして,このプログラムを,Zクランクで走行させると,かなりの確率で Zクランクを完走することができた.

36

8 まとめ

・走行体の特性を調べるために基礎実験を行い,ETロボコン大会では時間が足りずに作成することが出来

なかった Zクランクを走行するプログラム作成に関する実験を行ってきました.

基礎実験では,赤外線センサの性能を知るために,走行体が停止時や走行時に赤外線が取得する値を調べた.そこから,赤外線センサの値を元にして,その後の実験に役立てることが出来た.また, 走行体の電圧-速度の関係を調べる実験を行い,バッテリー特性を知ることが出来ました.

Zクランクに関する実験では,Zクランクを走行する時の動作を細分化して,細かく分けて実験を行うことで,各動作を細かくチェックすることが出来るようにした.その結果,各部分での動作が確認できてスムーズに実験を進めていくことが出来ました.そして,各動作の確認が終了し,すべての動作を結合させることで,Zクランク走行プログラムを作成した.Zクランクのプログラムは最終的に走らせてみると,うまく走行することが出来ていた.

37

9 最後に

・今回,私は,前期も含めて約 1年にわたり,レゴマインドストームのライントレースマシンに携わってき

ました.1年間の前期では,ETロボコン大会の出場に向けて,作業を行ってきました.作業開始した頃は,知識が無く分からないことが多かったが ET ロボコン大会に向けて勉強してきたことで,C言語や C++言語などプログラミング言語から始まり,UMLモデリングなどの設計について学ぶことができた.ETロボコン大会の結果をみると,UMLモデリング部門では,UML図の説明の仕方が思うように書けなかったが,タイムトライヤル部門では,2回挑戦したうちの1回を完走することができて,当初の目標を達成出来たことが印象に残っています.また,後期に入っても,レゴマインドストームを使用し ,前期に出来なかった実験を行ってきました.1年間を通して,走行体の基礎実験から特殊実験まで実際に走行体を動かしながら作業をすることで,組込み技術というものに触れることができたと思います.そして,走行体にどのような動作をさせるか考え,プログラムの作成を行い,そのテストをするという開発手順を一通り体験することができました.この経験を活かして,今後につなげていきたい.

38

10 参考文献

参考文献

[1] ETロボコンhttp://www.etrobo.jp/

[2] LEGOMINDSTORMhttp://mindstorms.lego.com/

[3] 株式会社永和システムマネジメント著実習 ロボットと情報技術 REALシリーズ C言語編 テクニカルガイド

39