MCX-06GR




MCX-06GR 概要

2006 JMCR横須賀大会 車庫入れ競技用ロボット
・リニアイメージセンサを用いたラインセンサ基板を採用
・指定モータ 1輪1モータの後輪駆動
・Maxon 19:1ギアヘッドモータ + 64:20ギア + 擬似アッカーマンリンクの操舵系
・走行モータ用 昇圧電源システム (NiCd 8本 → 15V)
・1.5ミリ厚 アルミシャシー/ギアボックス




MCX-06GR スペック
サイズ 全長 490mm, 全幅 160mm, ホイールベース 148mm
重量 820g (NiCd電池×8搭載時)
タイヤ ラジコン用ホイール+スポンジ+シリコンシート
走行モータ 高校生指定モータ(RC260RA18130)×2
駆動方式 RWD
転舵方式 擬似アッカーマンリンク
使用センサ リニアイメージセンサ(TSL1410R) ×1
+ 3mm高輝度赤LED OSHR3131P ×6
+ PSoCマイコン 29466×1
を用いたラインセンサ基板を前後に各1つ
使用マイコン H8/3048F-ONE
バッテリー ニッカド電池×8 (昇圧15V、降圧5V)
その他

EEPROM、ロータリーエンコーダ搭載




ロボットの履歴と解説

2006年 JMCR横須賀大会における特別競技 ”車庫入れ競技” に参加するためのロボットという位置付けで、新規技術へのチャレンジ・実用化と完走の双方を目指して製作したロボットが、MCX-06GR です。

製作開始時機は大会二ヶ月前、作業時間も限られていましたが、リニアイメージセンサの採用という新たなチャレンジ要素を中心に作業を進めました。当初の見込みよりもセンサの実用化に時間がかかったり、プリント基板化する予定だったメイン基板を急遽ユニバーサル基板で新たに設計・製作する手間が発生したりして、全体として十分に練られた構成とすることはできませんでしたが、今回のロボットの構成ブロック図と特徴的なところを以下に示します。

 

メイン基板 構成ブロック図:


センサ基板 構成ブロック図

ハードウェア要素 選択理由/コメント等
リニアイメージセンサを使用したラインセンサ基板 以前に他の方のブログなどで"リニアイメージセンサ"の名前を目にしていましたが、海外の電子部品通販サイトである mouser.com で偶然 TSL1410R という型番のリニアイメージセンサを見つけました。これまで使ったことがない類のセンサですが、データシートを見るとライントレースに使えそうだし面白そうだと思ったので、採用を決めました。

TSL1410R は 1280ピクセル/400DPI 、81.28mm の検出範囲を持ち、反射量に比例したピクセル毎のアナログ出力を入力クロックに同期する形で、シリアルまたはパラレル( 2出力を並列) 出力の形で取得することが可能です。1回の全範囲パラレル読み出しには 641クロック+指定の蓄積時間が必要になりますが、クロック周波数が最大 8MHzと高いので、かなり高速な信号取得が可能です。今回はクロック周波数を控えめに 3MHz としていますが、約 0.44ms の周期で読み出しを繰り返すことができます。

一方で、MHz帯のクロックを用いた処理を H8マイコンで他の処理と共に行うことは難しく、他のハードウェアによる支援は不可欠です。本来の用途であるはずの多諧調スキャニングを行うのであれば、高速な A/DコンバータとFPGA等を組み合わせることになると思いますが、今回の目的はライン位置の検出、具体的には 81.28mm あるセンサのどこにセンターラインの中央があるのかを正確に測ることです。この目的をどうすれば簡単に果たせるか、と考えた過程で候補に挙がったのが PSoCマイコンです。

PSoCマイコンは内部にディジタルブロックとアナログブロックという汎用性のあるブロックを複数持ち、ディジタル側にはカウンタ、タイマ、PWM出力、バッファ等、アナログ側には可変ゲインアンプ/コンパレータ/差動アンプ等の機能を高い自由度で割り当てられる、とても便利なマイコンです。周辺機能の構成と数を任意に変えられるという点を活かし、 1チップで所望の機能を実現するためのアイデアを試されるという点でも面白みがあります。

今回のライン位置検出という目的に対し、まずアナログのライン情報を 0,1 の2値に置き換えることにしました。黒が 0、灰と白は 1となるようにしますが、PSoCでは PGAで適度に増幅し CMPPRG で適度な閾値のコンパレータ出力を得るだけで内部完結します。次にコンパレータ出力について、センサ読み出し周期に同期したタイマ群で、左640ピクセル側で "最初に0→1に変化した位置(黒→灰)"、右640ピクセル側では "最初に1→0に変化した位置(灰→黒)"を確定します。 PSoCならこの部分も全てハードウェアで処理できます。

上の処理で 0→1、1→0 の位置が確定できないとき、それはセンサの下が一様であり変化が無いとき、つまり下にクロスラインがある状態か、完全にセンサが外れている状態です。この状態が左右のいずれか一方か、または両方かで、左右の分岐点と停止線を判定できます。マイコンカー競技であれば車線変更とクランクの要素を正しく見分けるための対策、つまりクランク前のラインで左右どちらかが先に反応してもすぐに車線変更状態に遷移しないための対策が必要ですが、車庫入れ競技では通常トレース時には分岐点しか存在せず、停止線の出る状況は車庫入れ区間のみであるので、判定のロジックは単純になります。

TSL1410Rの検出感度は、波長が800nmあたりでピークになり、赤外側では急速に落ち込みます。外乱光による2値化の誤りを避けるためにも、感度が高い波長でかつ輝度の高い (S/N比を稼げる) 光源が良いはずですが、入手しやすさと照らし具合の確認しやすさ、そして目新しさを考えて、赤色の高輝度LEDを使うことにしました。(秋葉原の秋月電子で売っていました) 本来の用途なら冷陰極線管のように一様な線光源であるべきで、LEDの場合でもなるべく広角の方が良いと思われますが、今回のLEDでもライン検出の性能には問題ありませんでした。ただ今回の基板は 1LEDあたり40mA程度も電流を流す形になっているため、これを減らすための検討が今後の課題になります。(時間がなく、この辺を最適化できませんでした)

また車庫入れ競技では後進もあるということで、前後をバス接続し、H8からの指令で前または後ろのセンサいずれか一方が動作&データ出力、他方はプルダウン出力の状態で待機という構成にしました。PSoCは内蔵抵抗によるプルアップとプルダウン、どちらでも任意で設定可能なので、こういう状況でも対応が楽です。

後方のセンサは固定式であり、後進の際は過去のドラッグカーと同じような構成になるといえます。ドラッグカー用固定センサとしても今回のセンサは検出幅が広いという点で良いセンサだと捉えています。自分の考える”固定センサ成立要件”はドラッグカーのページに書いていますが、今回のセンサはかなりまずい制御をしなければラインを検出範囲内に捉え続け、直進を維持することができるはずです。

SEVENを作る際に、ラインセンシングに対する思いとして「センサは白線位置検出のためだけに特化できることが理想で、センサのために操舵の自由度が制約を受けたりすることは理想的ではない」というものがありましたが、センサと操舵を切り離してもなお、アナログセンサの都合でセンサをライン上にキッチリと維持しなければならないという点にはロバスト性の低さという反理想を感じていました。

ライントレースロボットの本来の目的は、先にあるラインを正確に把握して、適切な操舵を行うことです。センサを正確にライン中央に維持することはどうでもいい、多少ずれてもラインの位置さえ分かれば、という点ではディジタルセンサに優位性を感じていましたし、今回のセンサはディジタルセンサの優位性に正確な位置情報という点も加わるのでは、と考えています。

自分として先に行ったのはセンサと操舵の分離ですが、自分の機械設計レベルでは機構をシンプルにして検出範囲が広く正確なセンサを使う方が、良い結果につながるかもしれません。クランクや車線変更などの走行でも引き込める範囲が広いことで安全マージンも広がりそう、センサ基板中央からズレた位置でライントレースすることでライン取りの自由度も広がりそう、・・と考えていくと、今後のロボットの製作コンセプトが開けてきました。今回のセンサを今回で終わりとせず、今後もっと掘り下げて進化させていくつもりです。
15V昇圧電源 大会ではドラッグカー HugeWheel2 に使用した昇圧回路をスイッチ電流を増大できる形に小変更して使用しました。
※電源ICは LM3488 を使用しています

しかし今回、過大になった車重とマブチな走行モータ2個に対して供給電流が十分ではなく、最大車速は 4m/s にも満たないものと思われます。(未確認)

過去のドラッグカー2台を含め、これまで用いた昇圧回路はいずれも単相の昇圧回路です。単相の構成では、スイッチFETをONしてインダクタにエネルギーを蓄積している間、負荷(モータ)への電流供給源は出力コンデンサだけです。結果的にはまず出力電流のリップルが非常に大きくなり、これに耐えうる定格リップル電流を備えた出力コンデンサ構成が必要となります。競技用ロボットとしては大量にコンデンサを載せるわけにもいかず、自ずと使えるコンデンサの品種も限定されますが、本当は出力リップルが小さい構成が良いはずです。また同様のことはバッテリ電流の供給にもあてはまり、インダクタの影響で出力側ほど変動はしないにせよ、バッテリから見れば負荷が常に安定しない状態に置かれているはずです。このことが妙に昇圧回路と相性の悪いNiCd電池があることの理由の一つかもしれません。

これらの問題を解決するために有効と考えたのが2相式の昇圧回路で、交互にスイッチFETをONすることで出力電流のリップル幅を低減でき、インダクタ/FET/SBDの数が倍増してもこれらのサイズを下げられたり、出力電流をアップできたりとメリットが多いと考え、メイン基板へのプリント基板の採用と共に導入しようと考えていました。

しかしスケジューリングのまずさからメイン基板のプリント基板化が間に合わなくなり、試みを確かめることはできておらず、未確認の課題として残っています。今後試作を行い、有効性を評価したいと考えています。
PSoCマイコン3個使用 前述の通り、前後センサ基板にPSoCマイコン(面実装) を各1個使い、更にメイン基板のPWM反転出力生成用、電源制御用としてもう一つPSoCマイコン(DIP) を導入しました。

メイン基板の面積が少なく、一つの石であれこれ済ませたいという感じでの導入ですが、ポートがかなり余っていたので操舵モータ駆動のPWM出力も PSoCから行うことにしました。H8のディジタルポートで操舵モータを回すという展では MCX04 と同じですが、今回は目標舵角ではなく、PWMのDuty値をH8から指示する形としています。

またH8のソフトウェアバグなど何らかの原因で一定の角度範囲を超えても Duty値が高止まりすることで操舵機構やモータが破壊されないように PSoC側でもポテンショメータの電圧を監視し、異常状態では支持値によらず Dutyをゼロに落とす処理を行っています。

PSoCは5本の信号でオンボード書き換えが可能であるため、センサ基板、メイン基板それぞれにピンを立てています。センサ基板については無駄な重量増となるため、今後は別の方法を検討する必要があります。
モータ駆動回路 今回のロボットは3個のモータを使っていますが、モータ駆動回路も同じ構成の回路を3つ使用し、駆動周波数のみ変える形にしてみました。

回路動作としては トラ技の2005年12月号に載っていた "リニアPWM駆動"(色々呼び名があるようです) に、自分として初めてチャレンジしました。モータ両端のPWM Duty比を変更することで4象限動作ができるというところが面白い、と考えてのチャレンジです。ただ駆動対象が指定モータだけではなく Maxonモータもあり、このモータを連続電流モードで動かすには高い駆動周波数が必要であるため、今回はHブリッジ駆動専用ICである HIP4082 を使用しました。電流モード駆動およびDISABLEによるフリー化が可能ですが、今回はDISABLE信号は使っていません。

今回は指定モータを32kHz、Maxonモータを200kHzで駆動しています。検討は十分ではないですが、指定モータへのこの駆動方法は効率が良いとは言えないようです。やはり ON-FREE または ON-BRAKE の駆動パターンで、低い周波数で駆動する形が良いでしょうか。

また今回、メイン基板のプリント基板化ができなかったことで集めていた面実装のFETも使えなくなり、手持ちのスルーホールFETで凌ぐことになりました。3回路とも IRLU2905 というNch FETでブリッジを組みましたが、ソフトウェアのミスで左後輪のFETを焼いてしまい、ここだけ使用FETが違うという妙な作りのまま大会に出ることになってしまいました。 ソフト的な補正をかける余裕もなく、単にスピードを落として偏りの影響が減るようにするだけの対応です。
擬似アッカーマンリンク 自分としては初のリンク式擬似アッカーマンリンクにチャレンジしよう、ということで、 このページに置いたファイルがベースの検討ファイルを作って妥当な各部の寸法を決め、構成部品を設計・製作しました。

結果として 寸法の計算違いは無かったものの、リンク部分にガタがあり、カーブでタイヤが内側に若干切り込むような動きが出ています。今回はラジコン用のピロボールを使ったリンクを使いましたが、余計な動きの無い別のリンク部品に変えた方が良いと思いました。(大会会場でも複数の方に指摘を頂きました)

自分のような機械素人が手を出すことでデメリットが増えている気もしますが、ホイールベースを詰めやすく、重量配分も前側に寄せやすいというメリットは享受することができました。
アルミシャシー/ギアボックス 昨年の横須賀まではずっと手加工でシャシーを加工していましたが、以降は他の方の協力も得て CNC加工によるアルミ部品を使うようになりました。個人的に金属を切るのはなんとも骨が折れるということでCFRP材を好んで使ってきましたが、今回は6mmのCFRP車軸を除いて全てアルミです。

部品の設計に当たっては、今後の特別競技にも使えるようにしようということで、リアギアボックスの組み合わせ方を変えられるようにしたり(モータが前後に並ぶパターン)、前輪側にもモータがある擬似アッカーマンリンクのFF/AWD に変更したりしやすいように考えて作りました。
タイヤ/ホイール 今回、一番手抜きになった部分かもしれません。シャシー側の坂道車検への対応に抜けがあったことで、部品もありあわせになり、真円度やタイヤ角の加工も不十分、高速走行はできないタイヤのまま大会に参加しました。しかし今のマイコンカー競技を考えるとタイヤは非常に重要なパーツになっているため、今後構成や作り方を十分に研究する必要があると考えています。

ソフトウェア要素 選択理由/コメント等
車庫入れ走行シーケンス ブログにも書いていますが、誰が考えても大体こうなるという内容です。
速度/加速度制御 HugeWheel2 で用いた速度/加速度の同時制御を改良して、前後双方の走行で制御ができるようにしました。ドラッグカーほどの高速走行への対応は不要と考え、200CPRのロータリエンコーダに変更し、制御周期を 256Hzとしています。

考え方は制御周期毎のエンコーダカウント値と制御目標値の直接比較によるフィードバック制御で、制御目標値の更新には、コンピュータグラフィックスにおける古典的直線描画アルゴリズムとして知られているブレゼンハムのアルゴリズムを使用しています。 本来は整数の加減算だけで任意の傾きの直線を描くためのものですが、ロボットでは少しずつ、しかし直線的に増加する制御目標値を生成するために使っています。
   

大会本番の結果は・・・こちら



トップページに戻る

車体設計/仮組み段階のひとコマ。後にこの設計では操舵用のリンク部周辺が坂道車検時に
コースに接触すると判明したので、 タイヤ径拡大等の対応を行いました。



アルミ部品。今回は設計のみ自分で行い、加工は他の方にお願いしました。
特別競技用として今後も使い回す予定です。