名称 MIRS1203 トラブルシューティング
番号 MIRS1203-RPRT-0007

最終更新日:2013.2.14

版数 最終更新日 作成 承認 改訂記事
A01 2013.2.14 遠藤祐太朗 荻原淑樹
田中優斗 廣野湧也
初版

目次




1.はじめに


本ドキュメントは、MIRS1203のトラブルシューティングについて記したドキュメントである。

2.問題点

  • ソフト

  • パラメータ調整に困ったら

  • アボート:画像認識近辺の処理や、モータ関連でアボートが発生してしまい止まってしまう。なにかの関数のオーバーフローが起こっていたと考えられる。

  • セグメンテーション違反:ファイルディスクリプタのプログラムのミスが原因。

  • 小型化により画像認識ができない:機体の小型化により、DBを正面にとらえることが難しくなったため、画像認識の成功率が激減。

  • バック走行、回転中に突っかかると止まらない:(通路走行ではない、)直進、バック、回転の関数の終了条件をロータリーエンコーダの値のみにしていたため。

  • ロータリーエンコーダの値がたまに取得できなくなる:原因不明

  • ロータリーに時計回りに侵入すると復帰できない:右の壁沿いに進むプログラムであるため、ロータリー進入時に、まれに左方向に進んでしまうと、時計回りに回り始めてしまい抜けられなくなってしまう。




  • エレキ

  • IO_ERROR:IO_ERRORが生じた


  • ロータリーエンコーダの値の不良:ロータリーエンコーダが車輪を正転させても後転させても値が増え続けた。


  • 片側のモータの速度が遅い、もしくは回転しない:片方のモーターが回転しないことが多々あった。


  • 超音波センサ:半固定抵抗をどちらに回しても、errしか出ないという問題が生じた。


  • 基板加工用のデータ:超音波センサのmitデータは工作室の基盤加工機ではすべての加工ができない。 超音波センサボードmitデータ(標準)


  • CPU:CPUが機械的に落ちる問題が生じた。



  • メカ

  • 車輪が滑る: ステップをこえられないなどの不具合。


  • 駆動系を構成するねじの緩み: MIRSを動かすとねじが緩んできてしまった。


  • タッチセンサが反応しないことがある。

  • シャーシの加工中にシャーシが割れてしまう

  • 走行中の振動によってタッチセンサが反応してしまう。


  • 3.解決策

  • ソフト

  • パラメータ調整
    ⇒MIRS1203は通路走行にPD制御を用いている。以下にP,Dの値を変化させたときの挙動の変化を示す。
  • 入力、出力の関係
  • 入力は、左右の超音波センサの値の差分。また出力は左右のモーターのパワーとしている。

    調整することで変わる挙動 値を大きくしすぎたとき 値を小さくしすぎたとき
    P 目標値に近づくまでの速さ フラフラする 補正が効かなくなる
    D 傾いた時の調整の速さ 回転し始める 壁に当たる
  • アボート
    ⇒画像処理を繰り返し行ったり、カメラを取り付けずに、画像処理をしようとするとアボートが頻発する。そこで、アボートが発生したら、画像処理の回数を減らす。
      読めなかったら、右に行くなどのプログラムを追加し、画像処理をあまり行わないようにすれば、起こさなくすることができる。
     なお、モータの関数を繰り返し呼び出すことによって、アボートが発生することもある。motor_testプログラムなどを文字列検索をかけるなどして注意深く見直しながら、抜いてしまった処理を追加する。


  • セグメンテーション違反
    ⇒おもに、fprintfなどファイルポインタを使うとき、ファイルポインタをopen、closeする必要がある。そこでopenとcloseの間に間違って、もう1回openを書いてしまうとセグメンテーション違反になる。
    いろいろな処理に飛ぶようにすると、誤って2度宣言してしまうとことが多く、fprintfを使用するときは、必ず近くでopenとcloseを行うように心がける。


  • 画像認識ができない
    ⇒MIRSを小型化すると、DBを正面にとらえることが難しくなってしまい、DBの数字を正確に読み取るのが難しくなる。
     解決策として
    1.通路走行がきれいに行えるように、パラメータの微調整を行う。
    2.片側だけ読めた時の処理は入れずに、両側の数字が読めた時だけ、指定の方向に曲がるようにする。
    3.画像処理をしない
     等があげられる。


  • バック走行中、回転中に突っかかると止まらない
    ⇒関数の1ループごとに変数iを加算していき、ロータリーエンコーダの値が目標値を超えたときと、変数iが一定数以上になった時に関数を終了させるようにした。

    ※デメリットとして、モーターのパワーが落ちてしまうと、回転が終了する前にループから抜けてしまい、指定した角度よりも小さな角度で回転をやめてしまうことがある。ループの回数を多くすれば、このトラブルは防ぐことができるが、復帰も遅くなってしまうため、トレードオフになってしまう。


  • ロータリーエンコーダの値がたまに取得できなくなる
    ⇒ロータリーエンコーダの値が一定時間変わらなくなったら、強制的にmotor_restartをかけてプログラムを始めから再開できるようにした。これにより、ごく稀に起きるI/Oエラーにもmotor_restartがかかり、走行を再開できるようになった。

    ※デメリットとして、通路走行中、壁などに当たりモータの回転が停止してしまうとmotor_restartが何度もかかり、復帰するのが遅くなってしまう。


  • ロータリーに時計回りに侵入すると復帰できない
    ⇒過去60ループ分のロータリーエンコーダの微分値の左右差を記憶しておき、その平均が一定数以下になったらロータリーを逆走していると判断。逆走を判断後に180度回転し、走行を再開するようにした。これによりロータリーを逆走した判断ができるようになった。なお(入口から出てしまうことがないようにロータリーを7/8周逆走した時点で180度回転するように調整した。)60ループという数は、7/8周するために必要なプログラムのループ回数である。
    ロータリー逆回り認識プログラムを参照

    ※デメリットとして、モータのパワーが低下すると7/8周よりも早く、180度回転を始めてしまう。そこで、同じバッテリーを使い続けるなどの対策が必要になる。




  • エレキ

  • IO_ERROR
    ⇒MCBとDBとを繋ぐコードの接触不良によることが主なため、コードを直接基板にはんだ付けした。はんだ付けした後のコードは、ホットボンドで固めて、補強した。
    また、それらを端子台によって接続した。



    図1 モータコントロールボードの端子




    図2 端子台

  • ※デメリットとして、コネクタがないので解体が難しくなる。この改良を行う場合は、メカが完全に完成して、解体することがなくなってから行ったほうがよい。


  • ロータリーエンコーダの値の不良
    ⇒多くは、トランジスタが死んでいたことが原因である。チェック方法としては、ベース←エミッタ導通があると壊れているので、 トランジスタの両端にテスターをあて、どちらの方向でも導通があったら壊れている可能性が高い。
     ※どちらも導通していたからと言って、100%トランジスタが壊れているわけではなく、基板の導通の可能性もあるので、外してから、再度導通チェックをしたほうがよい。




  • 図3 モータコントロールボード

    青い丸のトランジスタに問題がある場合:ロータリーエンコーダの値がマイナスにしか変化しない。
    赤い丸のトランジスタに問題がある場合:ロータリーエンコーダの値がプラスにしか変化しない。

  • 片側のモータの速度が遅い、もしくは回転しない
    ⇒原因はHブリッジとの接触が悪いことだったため、直付けした。


  • ※デメリットとして、ICチップが焼けたとき外しにくくなることがあげられる。この改良により、接触不良の問題は解決したが、注意が必要である
  • 超音波センサ
    ⇒超音波センサは本来、直接波のみをカットし、反射波で距離を測定するが、反射波もカットしてしまうとエラーになってしまう。ここは、半固定抵抗を回すことによって調整できるが、壊れているとどちらに回しても、エラーしか返ってこない。



    図4 超音波センサボードの波形

    この画像は2つとも、超音波で距離を測定した後の受信波形である。下にあるものが、純粋な受信波形。上にあるものが、ある電位(閾値)よりも波形が大きかったときの出力を表している。左では、半固定抵抗によって調整できる閾値が小さいため、本来検出しなくてはならない反射波以外に、直接波もとってしまっていることがわかる。しかし右の図では、うまく直接波をカットできていることがわかる。閾値の調整は半固定抵抗で行うことができ、エラーしか返ってこない場合は、半固定抵抗を新しく付け替えることによって改善できることが多い。


  • 基板加工機のデータ
    ⇒超音波センサをつくるとき、ミリングの前で加工が止まってしまうが、もう一度、原点を変えずにミリングを行うことで加工ができる。


  • CPU
    ⇒導通チェックにより、2か所の導通不良を発見した。
           (i)電源ボードとの接触不良。これは、CPUと電源ボードとをつなぐケーブルを作り直し、解決した。
           (ii)ヒューズソケット内のバネの錆による接触不良。やすりを使い、バネの錆を落とし解決した。


  • メカ

  • 車輪が滑る
    ⇒車輪は、アルミを削り出したままになっており、非常に滑りやすい。そこで、ゴム製のシートを両面テープで張り付けて対応した。ゴム製のシートにより、ステップやシーソーの攻略が可能になった。しかしながら、走行と同時に、ゴムシートが滑りやすくなってきてしまい、定期的な交換が必要になる。


  • 駆動系を構成するねじの緩み
    ⇒考えられる車輪の緩む箇所は3つある。

    1.モータと、プーリー(輪ゴムがついてるもの)の緩み
    2.プーリーとタイヤを保持する6角ハブシャフトの緩み
    3.車輪を固定するナットの緩み

    以上、3か所が緩む可能性がある。このうち、2に関してはほとんど緩むことはないので、1と3に関する対処法を示す。
    1に関する対処
    イモねじの形状的に、モータの軸を点で押さえているだけなので、新しくねじ山を切り、先が平らになっているねじで締めつけるようにした。



    図5 ハブ形状

    3に関する対処
    標準の車輪では、先端のM4のねじで車輪を保持しているだけなので、とてもがたつきやすい。そこで、車輪を新たに自作し、6角形の部分でタイヤを保持するようにした。
    これにより、タイヤを保持するために使用するねじを、1つ減らすことができ、メンテナンス性の向上ができる。



    図6 車輪形状



  • バンパーの変更
    ⇒バンパーよりもタイヤが外側に出ていることが原因なので、バンパーを少し外側に出すことで解決できる。しかし、外側にバンパーがせり出す形になるので、壁に当たりやすくなる欠点がある。
    青:追加する部分




  • 図7 バンパー形状



  • シャーシの加工中にシャーシが割れてしまう
    ⇒シャーシを作るうえで、アクリル板は硬く、穴あけ中に割れてしまうことが多い。これは、小さめのドリルから順番にゆっくり穴をあけていけばある程度は防ぐことができる。 しかし、アクリル板は注意していても割れやすいので、シャーシの素材にはPET樹脂や、塩化ビニール板を使うことをおすすめする。


  • 走行中の振動によってタッチセンサが反応してしまう。
    ⇒バンパーが、走行中の振動によってパカパカ、外側に開いてしまうのが原因である。そのため3つのバンパーを、すべてセロハンテープでつなぐことで、無駄な開閉を抑え、誤動作を防ぐことがわかる。
    黒:バンパー
    青:テープ




  • 図8 バンパー改良


    図9 バンパー改良写真





    MIRS1203ドキュメント管理台帳