ロボットランサー出場マシン`Gungnir' 製作レポート

チーム名
京大機械研究会内 秀ちゃんラーメン同好会
メンバー
丸田一郎
柏本和俊

拡大表示

2003年度ロボットランサーに出場するために製作したロボット `Gungnir'(グングニル)の製作レポートです。

目標

最近の機械研では主にステッピングモーターを使用したマシンを作っているので、DCモーターを使ったマシンについての技術蓄積があんまりありません。
その他、機械研で未だ蓄積が無い技術を向上させる為に、以下のような目標を掲げて製作することにしました。

機体

車体

HPI社のmicroRS4というラジコンを殆んどそのまま使ってます。前輪と後輪の間隔が140mmの小さなマシンです。機械研内のロボットランサー出場マシンでは最小、大会でも小さい方に入っていたと思います。

タイヤ

ラジコンに標準装備のゴムのタイヤから、スポンジ製のタイヤに交換しました。

性能自体はゴム製の物が優れていたのですが、機械研で用意した試走台が半ば屋外にあった為に、ゴム製のタイヤでは2〜3周で砂埃が付着して滑りやすくなってしまうので止むなくスポンジ製のタイヤに替えました。

槍には菜箸を殆んどそのまま使っています。それなりに強くて軽くて安かったので…
写真にはありませんが、先端には保護用のスポンジが付いていました。

バンパー

センサーの前にスポンジを貼り付けたアルミ板が付いてます。これとセンサー部はビニールテープで固定されていて、大半の衝撃がここで吸収されます。これが無ければ何回本体が壊れていたことか…

クラッシュの度にバンパーは変形しましたが、本体が壊れたことはありませんでした。

制御回路

ラインセンサー

拡大表示

ラインセンサーを床面側から見た写真です。真ん中の基板がラインセンサー、左右の基板はコース上のマーカーを検知する為のセンサーです。

4つ並んでいる黒い素子が受光用のフォトトランジスタで、5つ並んでいる透明の素子が赤外線を発するLEDです。約2cm毎に並んだ4つのセンサーでラインの位置を検知します。

最初、指向角の鋭い素子(半値角10°程度)も使って実験を行ないましたが、指向角の広い素子(半値角30°程度)で間隔を広げたほうが滑らかな出力を得らることが分かったので、こちらを採用しました。

赤外LEDとフォトトランジスタは、一風変わったLEDスペーサーの使い方をして基板から浮かせて取り付けられています。これは赤外LEDとフォトトランジスタの形状の問題から、直接これらを基板に差すと光軸と基板の垂直が保ちにくい為です。

発光部はH8で点灯/消灯を制御出来るようになっていて、点灯時と消灯時の反射光量の差を使うことによって外乱光の影響を少なくしています。

受光部は調整用に半固定抵抗が付いていますが、結局一度も調整せずじまいでした。

ラインセンサーは床面から2cm程度の位置に固定されるように設計しましたが、1cm程度上下してもライントレースは出来ていたので、ライントレースにはそれ程リニアな出力は必要無いような印象を受けました。

マーカーセンサー

光変調型のICと高指向性の赤外LEDを使ったので、遠距離(〜7cmくらい)にあるマーカーを読むことが出来て隣接するラインセンサーに影響を与えません。

黒い四角の素子がフォトICのS7136で、その横に立っている銀色の円筒が赤外LED、手前の透明のLEDはセンサーチェック用の可視光LEDです。側面から調整出来る位置に感度調整用の可変抵抗が取り付けてあります。

ロータリーエンコーダ

まともなロータリーエンコーダは高いので、簡易版を自作しました。

モーターのエンドベル側に軸が少しはみ出していたので、そこに白黒に塗分けたプーリーをはめ込んでいます。

プーリーの上に反射型フォトインタラプタが取り付けてあり、これで白黒を読みとります。

出力はH8の割り込み端子に接続されています。割り込みの周期を計ることで大雑把な速度を算出し、分解能の低さをソフトウェアでカバーしています。

メイン基板

メイン基板の全体図です。秋月電子のH8/3067ボードを使用していますが、メモリーが512KByteに拡張されています。このマイコンボードは14年度の知能ロボコンチャレンジコース優勝マシン「たまちゃん」からの流用です。

拡大表示

マイコンボードを取り外した図です。マイコンボードの下にはADコンバータやローパスフィルター、モータードライバーなどがあります。

拡大表示

裏面の図です、表に実装しきれなかったモータードライバが1つ実装されています。殆んどUEWで配線していますが、後から付け足した回路が多いので少しごちゃごちゃしています。

電源部

サイズの制約がキツくて複数のバッテリーを積めないので、一つの7.2Vの電池から必要な電圧を全て生成します。

初期の回路では電池の電圧が7.0V前後に下がっている時にモーターをフルパワーで回すと、電池の電圧が不足してマイコンにリセットが掛かりましたが、各部にダイオードやキャパシタ(D1とD2と10000μFと0.22Fかな?)を追加してバッテリー電圧が6.3V程度になるまで走れるようになりました。

メインモータードライバ

前進用のモーターを駆動する回路です。前進/ブレーキのみで逆進は出来ませんが、ランサーで逆進するのはありえないし、モーターにブレーキをかけるだけで既にタイヤがスリップする状態だったので、必要十分な構成だったと思います。

なるべく安全な回路を目指しました。MOSFETのゲート駆動の原理的にデューティー比が100%だとモーターが回らないので、プログラムの暴走や回路の異常によってマシン自体が暴走する確率が格段に減っています。

デューティー100%に出来ないのは何だか勿体無い気もしますが、実際のプログラムでは80%程度までしか使いませんでした。(それ以上はタイヤがスリップするから無意味)99%位までは十分に動くようなので、デューティーが100%にならないことによる不利は殆んど無いと思います。

ステアリング&槍用モータードライバ

ステアリングと槍の駆動にはラジコン用のサーボモーターから制御基板を取り外した物が使われています。これらのモーターを駆動する為の回路です。

uPD16805を使うことにより、電池の電圧全てをモーターの駆動に使います。電池がフル充電の時にuPD16805の定格をオーバーしている気がする辺りが反省点です。結局のところ、モーターが加熱して恐かったのでソフト内でデューティーを80%程度に制限していたので、6V程度に電圧を落して安全な回路を作るべきだったと思います。

ステアリング&槍用ADコンバータ&ローパスフィルター

実はH8のADコンバータを使うことも出来たのですが、二足歩行ロボットへの布石としてシリアル接続の8ch12bitADCであるMCP3208を使ってみました。

普通にH8と繋いで通信すると上位ビットと下位ビットがひっくり返るので、通信の前後でソフトウェアでこれを逆転しています。

ローパスフィルターは使い方が悪いのか作り方が悪いのか、思ったほどの効果を出していないです。無い方がマシではないかという疑惑すらあります。(^^;

制御プログラム

ライントレース部

500Hzの割り込みでラインセンサーの値を取り込み、得られたライン位置でステアリング角度をPD制御しています。

大雑把に考えると、比例成分はラインと車体の距離に、微分成分はラインと車体の角度に比例している気がします。高速走行時には位置のズレより角度のズレが重要であり、比例ゲインによって発振しやすくなるので、比例ゲインを下げて微分ゲインを上げることによって、振動すること無くラインをトレースします。

実際には高速トレースモードと、低速/カーブトレースモードの二種類の関数が用意してあって、それらを切り替えています。

低速/カーブモードではラインを見失った時に無条件に左に旋回することによって、カーブで少々大周りになってもラインに復帰することが出来るようになっています。

サーボ制御部

ステアリングと槍のモーターは、同じく500Hzの割り込みでPID制御しています。この部分は二足歩行ロボットからの流用です。

反省・感想

大会では概ね当初の予定通りの2500点を獲得して4位に入賞しました。さらなる成績の向上の為には、機械研内の試走台を改善することと、スリップしにくいタイヤを研究するのが妥当な方針のようです。

プログラムの作業が殆んど調整なので、この部分ではあんまり生産的な仕事が出来なかったのがちょっと不満です。

大会では色々なマシンが見れて面白かったですね。名古屋名物「ひつまぶし」も美味しかったし、いろいろ良い経験が出来たと思います。


機械研トップページに戻る