情報技術科 No.10 木村 怜
①研究の背景
昨年の先輩方の課題研究の発表を聞き、そのことを知った。興味が湧き調べてみると製作を進めていくとハードウェア、ソフトウェアの両面から技術を学べることにとても魅力を感じた。また、先生に勧められたこともありこの研究を始めることにした。
②仮説とねらい
ハードウェア、ソフトウェアの両面から技術を学ぶこと。また12月にある静岡県高校生ロボット競技大会で良い結果を修めること。
③研究内容
昨年までの研究のデータをもとに問題点を洗い出し、改良をしていく。
④技術的知識
- 自律制御ロボットの基礎知識(センサー制御)
- 3DCAD(PTC)、KiCADの仕様
- C言語の知識
⑤取り組んだ内容
ペアの村田さんと共にロボット製作を進めていく。
- 電子回路製作
- 車体・組み立て・配線
- プログラム
- 電子回路製作
昨年度の先輩方は、基板の不良が原因で大会を棄権するという結果になってしまった。そのため今年は、精度を高めることと基板の強度を上げることを重視し、kicadで基板の設計を行った後に外注することにした。
また、足りない基板は今までと同じように自分たちで製作を行った。部品をはんだ付けして基板が完成した。
- 車体・組み立て・配線
ロボットの車体の大部分はフィラメントを3Dプリンタで加工し作られている。
部品は下図のようにフィラメントが積み重なって形成されている。
この密度を走行中の負荷が大きい部分、そうでない部分ごとに変えることで、強度の調節・軽量化を行った。 出力をした部品を接着剤やねじなどを使って組み立てていく。モータなどの部品と基盤との電気や情報のやり取りを行うために配線を作成した。
- プログラム
駆動部とブロックをつかむ部分でCPUが分かれているため、同時進行で作業を効率的に行うことができる。ペアでプログラムを分け、私はメイン部分を担当した。 その中でもライントレースについて説明する。
ライントレースはセンサー基板を用いて行った。センサを二進数で管理しラインを読み取ると1、読み取らないと0になる。取得したセンサーの合計値によってモータの動きを管理している。
ライントレースには関数を用いた。引数に縦横など動作を決めるパターンとモータの速さを渡し、スイッチケース文でセンサーの値からパターン処理でモータの速さを決めている。車輪のモータを動かす関数にスイッチケース文からきた速さを渡し走らせ、最後に戻り値をみて正常に動作しているか確認を行っている。
⑥結果
- 大会
結果は1個しか置けなかった。大会本番で最初の縦トレースで修正の動作が行われなくなりブロックをつかむ地点までたどり着くことができなくなってしまった。
- 原因究明
大会の結果を踏まえて原因の予想を行った。
① コートの状態が練習と本番で違い、対応しきれないのではないか
② ライントレースのプログラムに抜けがあるのではないか
という2つの仮説を立てた。
まず①について検証を行った。練習で使っていたコートは車輪の跡など汚れてしまっていたところがあったため、きれいな状態のステンレステープと、ライントレース用の黒いビニールテープを用意して、縦トレースを行った際の変化を見ることにした。
結果からライントレースに大きな変化はなく、コートの状態などを除いても、ライントレースの精度が低いことが判明した。
次に②について検証を行った。大会で使用したライントレースのプログラムと横トレースの際に用いた修正動作の強いプログラムで精度に差があるか検証した。
その結果、速度が遅い場合はどちらも正常に動作したが、速度が速くなるとどちらも修正がうまくいかなくなった。
このことからライントレースのプログラムにぬけがあったのではなく、速度が速くなることによってセンサーがすり抜けてしまうのだろうと結論付けた。
これらの結果を踏まえて新たな仮説をたて、検証を行おうとしたが本番の環境に近づけることができず断念した。
⑦感想・考察
大会では残念な結果になってしまった。だが、三輪の特徴をより詳しく知れたことハードウェアとソフトウェアの知識、またスケジューリングの大切さ、コミュニケーションの大切さなど課題研究を通して学べたことは多いと感じる。これから社会にでてもなかなか味わうことのない貴重な経験をすることができた。この経験もいつか役に立つ時が来ればいいなと思う。