Days for development

電子工作や3Dプリンターを使った工作などの記録です。正確な情報を書くよう気を付けますがこの記事で発生した損失には一切責任を負いません

エンコーダの問題(評価方法の決定と補正方法)

おはようございます!

今回は重要な入力の一つエンコーダの値を評価、補正する方法を考えてみます。

1.評価方法

モーターをデューティ比10%,20%,50%で回します。

計測された0〜360度の値を時系列で並べ、近似直線を作成し、データと近似直線のR^2値が小さいほど良い補正であるとします。

2.補正方法

2.1 実験の前提条件

  • エンコーダ:AS5047D
  • 通信:SPI
  • サンプリングレート:3kHz
  • データ形式:絶対角度
  • 磁石:ネオジム磁石(N40)、リング型、Φ3xΦ1x2(mm)、片面2極

2.2 補正方法

今回は補正テーブル方式で補正をかけます。

具体的には

エンコーダの返す全ての値に1対1対応で真の角度とのズレを記載し、それを加算するだけです。

2.3 補正テーブルの作成方法

本当はロボット単体で自動補正ができると良いのですが、後回しにします。

  1. デューティ比20%ほどでモーターを回転させデータを取る
  2. エクセルにデータを入れ近似直線を作成
  3. 近似直線を理想値であると仮定して実測値との差を調べる
  4. 存在しないエンコーダの値の補正テーブル値は前後のテーブル値から近似する

再来週くらいには実験結果をかけるかな?

 

 

マウス制御工学始めます!(旧マイクロマウスの制御を論理立てて進めたい!)その1

(2018/05/11 23:46 タイトル変更)

こんにちは、こんばんは、

お久しぶりです。

ブログの更新が滞ってしまっていましたが書くネタが発生しましたのでここからは計算が関係する領域なので計算をブログまとめながら作業を進めます。

1.そもそもなにがしたいのか?

 目的を見誤っては正しい評価ができなくなって困るので目的を明示します。

マウスの制御を説明するうえで制御器の設計手順と制御の評価方法が明確 であること

 ことが必要だと思ったからです。

理由としては、

  1. エンコーダから読み取れる併進速度のPID制御では路面抵抗の差異を吸収できない
  2. PID制御に補正項を入れると正しく動くかもしれないが評価すべき条件が明瞭でなくなる
  3. 今後作るロボットに必ず必要な基本のプログラムになると思われるのでプログラムの作成における意思決定プロセスを明瞭にしたい(今後は自分の昔のやり方を再評価して軽微な変更を加えればよい状態にしたい)
  4. 人に説明できないロボットはもういらない。

こんな感じでしょうか?

2.マウスの制御における問題

2.1 得られるセンサー値

  • 左右タイヤのエンコーダーの値(3kHz)
  • 4つの壁センサーからのAD値
  • 車体の角速度(x,y,z)
  • 車体の角加速度(x,y,z)
  • バッテリーの電圧

2.2 それぞれのセンサー値の問題点

2.2.1 エンコーダ
  • 取れる絶対角が角度がずれているため補正テーブルなしで計測すると現実の走行速度が安定しない
2.2.2 壁センサー
  • センサーは入射した赤外線の強度に対して応答するので壁距離との1対1関係ではない
  • 赤外線LEDから発した光は車体と壁の相対的な角度によってセンサーに入射させる角度を変化させる
  • 会場の赤外線強度に応じて光センサーの値はオフセットを取っても補正できない(飽和している?)
2.2.3 角速度
  • 角速度の生値にはオフセットと値の重み補正が必要
  • 値の重み補正テーブルが作成しにくい
2.2.4 バッテリー電圧
  • 三端子レギュレータの電圧に依存している

今日はここまで

sugentem_n_52の製作過程を追う

最後の記事から時間が経ちました。

2017年の内に行動の詳細をひとまとめにしましょう。

クラシックマウスを1年行ったあとのハーフマウス1年目の足跡です。

新人教育の参考資料や進捗がどうなのかを見つめ直す指標の参考にもなるかもしれないですね。

 1.マイクロマウス2016

私はマイクロマウス2016のマウスパーティにおいてハーフマウスを作るための情報収集を行いました。具体的には、

  • センサーの配置
  • 磁気式エンコーダの磁気漏れの話
  • ほかの大会参加者のハードウェア的な工夫
  • 設計の手順

 2.2016年

2.1 2016年12月

簡易的な目標の設定。

2017年度のマウス

・コンセプト

しっかり走れる

・目標(長期)

全日本ハーフクラシック決勝に出場

・目標(短期)

中部初心者で勝つ

*1

ハードウェアのスケッチ

ギア比の選定 -> 12:39

基板厚さ -> 0.6mm

基板設計(回路設計)開始(2016/12/19~2017/3/4)

3.2017年

3.1 2017年1月

ギヤボックス 10:39 に変更

先輩の回路図を見て必要な回路シンボルのライブラリを作成

*2

 3.2 2017年2月

三端子レギュレーターなどのパーツに関するメモ

f:id:days_for_development:20171230123210j:plain

f:id:days_for_development:20171230122343j:plain

f:id:days_for_development:20171230122418j:plain

書き込みにはGND電位の共有が必要です。

f:id:days_for_development:20171230123826j:plain

f:id:days_for_development:20171230122833j:plain

3.3 2017年3月

電通大プチコンの開催

2017/03/05

・回路図が仮完成

・ピン接続を要確認

2017/03/30

f:id:days_for_development:20171230124801j:plain

3.4 2017年5月

2017/05/24

・PCB発注

3.5 2017年6月

2017/06/03

・千石、秋月、AWS、rcロビン発注

2017/06/08

・半田付け

2017/06/10~11

・マウス合宿

フットプリントの登録ミスが発覚 -> 作り直し

 

2017/06/25

理科大プチコン

 クラシック機を使って線形近似の実験を行なった。

days-for-development.hatenablog.com

問題の多かったハーフマウスの再設計(コンセプト)

f:id:days_for_development:20171230130256j:plain 

 ここから初号機でソフト検証を行いつつ再設計をしようと計画する。

3.6 2017年8月

 

days-for-development.hatenablog.com

days-for-development.hatenablog.com

 そう、書き込めなかったのである!

諦めて次回作のパーツ選定などに移る。

3.7 2017年9月

・ハーフマウス弍号機の発注(elecrow)

 

・プログラムに着手開始

 

2017/09/13

・基板到着

f:id:days_for_development:20171230131744j:plain

 

2017/09/15

・3Dパーツ到着

 

f:id:days_for_development:20171230131913j:plain

2017/09/18

半田付け完了後、バッテリーの差し込み間違いで基板が死ぬ

f:id:days_for_development:20171230132159j:plain

2017/09/30

全日本学生大会

Isysのある方にマイコンピンの死亡しているかの判断基準を教えてもらった。助かりました。このすぐ後の配線ミスの発見に役に立ちます。

3.8 2017年10月

2017/10/09

f:id:days_for_development:20171230150448j:plain

2017/10/11

f:id:days_for_development:20171230150501j:plain

・PWMで要求したモーターパワーの出力に成功

youtu.be

2017/10/12

・ジャイロを使って姿勢制御を開始(失敗)

youtu.be

2017/10/13

・壁センサーから大まかな壁との距離の取得に成功

f:id:days_for_development:20171230135116j:plain

2017/10/14

・発振しているが大まかな制御は成功。

youtu.be

2017/10/15

・マイクロマウス東日本地区大会

直進するだけでした。

2017/10/16

スラローム走行実装

youtu.be

2017/10/23

・探索走行成功。但し、調整が甘い。

youtu.be

2017/10/29

・中部地区大会

ハーフマウスで初めて認定証をもらう。

大会後の最速走行。

youtu.be

3.9 2017年11月

2017/11/17

・後ろ壁当て実装

2017/11/18~19

・マイクロマウス2017

ハーフマウスエキスパート競技予選敗退

youtu.be

4.最後に

去年の行動を振り返ると夏休みなどがあまり進捗が埋めていない期間であることやソフトウェアに時間を割いていないことなどが露呈した。年末から作業を進めた行かねばならないだろう。

皆さんはどんな一年でしたかね?振り返って見てはいかがだろうか?

それではよいお年を。

*1:メモより 

*2:2017/01/12メモより

マイクロマウスの再設計〜ハードウェアコンセプト〜

マイコンが死亡したこと、半田付けが困難な箇所が存在することなどを考えてマウスの第2弾を設計することとなりました。今回はハードウェアについて書き記します。備忘録的要素が強いので退屈かもしれませんが、もし初めてマウスの設計を行う方はこんな失敗がありうることを知っているといいマウスが設計できるかもしれません。

1.問題点の洗い出し

  1. 電位を調べる時、手元が狂うと短絡してしまう
  2. テスターがあてにくい
  3. CNC加工を頼みにくい
  4. エンコーダー固定用基板の端子が半田付けしにくい
  5. モーター用電源ラインが細い
  6. MPU6500の内側ベタがあるせいで配線しにくい

2.改善案

 問題点の洗い出しの各番号に対応させています。

  1. GND, 3.3Vは離して置くべきである
  2. テストパットがあるべき
    テストパットはbattery+, GND, 3.3V, MD端子, PC7, MISO, MOSIが挙げられる。
  3. 3Dプリンターでの製作を前提にする方がいい。
  4. 基板片面にフットプリントを集約すべき。
  5. 配線をモータードライバから行い、配線の太さを確保する。
  6. フットプリントの登録を変更する。

3.まとめ

 ハーフマウスの第一弾は動作しないという悲しい結果になってしまったが反省を生かした次なるマウスの設計を行う。

マイコンに書き込めない?その2

お盆いかがお過ごしですか?

開発を推し進めるのもいいですよね。

前回の記事、

マイコンに書き込めない?その1 - Days for development

の続きです。読んでいない人は先にこちらを見てもらえると嬉しいです。

 1.電源電流を調べてみた

私の他にrx631マイコンで書き込めない人をブログ等で調べてみるとこのような書き込みに行きあたりました。

前回は電源周りのデバッグ(レギュレータやスイッチ等の素子を外して直接結線)したところで終わりました。
この状態で安定化電源を繋いだところ、ブートモードに設定したところ、電流が40mA近く流れました!

引用元:ハーフマウス研修 その6~プログラム書き込み~ | RT MicroMouse

なるほど、ブートモードはこのくらい電流が流れるのか。

というわけで安定化電源を借りてバッテリーがわりに繋いで電流を測りました。

f:id:days_for_development:20170811060301p:image

電源入れて10mAは流れたようですがmaekenさんのマウスの1/4程度しか流れていません。

2.書き込めないことに対する結論

端子の電位、クロック発振が正常であり、マイコンの消費電流が少ない以上マイコンが起動していない、死んでいると判断。原因究明はここで打ち切りとし、RTさんのRX631ボードを用いてプログラムの進捗を生むことにします。

3.おまけ

RT製RX631ボードで検証したところ、書き込みは成功したので回路に対する私の理解とその配線は間違っていないようでした。

f:id:days_for_development:20170812121514j:image 

マイコンに書き込めない?その1

ゆるゆると進行中のハーフマウスの進捗と問題が発生したのでそのトラブルシューティングを書き留めます。ひとまず、治っていないので途中経過になります。

1.Renesas Flash Programmerで書き込んでみた。

マウス合宿で指摘された水晶発振子のフットプリントとP-chFETの修正を終え、書き込んでみた。

”デバイスから応答がありません”

なんてこった...。

 

f:id:days_for_development:20170809015025j:plain

2.自分で確認した回路状態

2-2.回路の接続状態

f:id:days_for_development:20170809013729j:image

  • 水晶発振子は各端子がXTAL, GND, EXTALと導通。
  • マイコンの電源端子はすべて導通を確認。設計通り導通している。
  • もちろん、書き込み時はバッテリーで電源供給を行った。

2-3.回路上の各接点における電位

書き込み装置のスイッチがONの時

  • PC7端子: 0.0V
  • MD端子: 3mV
  • Battery: 4.2V
  • 3端子レギュレータVout: 3.28V
  • RES#: 3.286V

OFFの時

  • MD端子:3.28V
  • RES#: 3.286V

どうやら、配線は間違ってないらしい。

3.考えられる原因と対応策

原因1 クリスタルの故障

f:id:days_for_development:20170809013810j:image

これはオシロスコープを用いて発振しているか調べる必要がある。発振していないようであればもう一個セラロックを使う。

  • XTAL: 1.6V(一定)
  • EXTAL: 1.5V(sin波)

発振が確認できました。壊れてないようです。

原因2 マイコンの故障

f:id:days_for_development:20170809013903j:image

これはもう最悪。ヒートガンで剥がさないといけない。一度回路をショートさせてしまったときにマイコンが壊れたのかもしれない。

原因3 書き込み基板の不調

ハーフマウスの為に新しく買った書き込み基板なので動作確認が出来ていないのです。(ただ、comポートは認識してるのでこれはあまりないかな)

普段使っているクラシックマウスの書き込み装置も使えないことがわかったので原因がここじゃないことが判明しました。

 4.ここまでのまとめ

電源電圧やMD端子とPC7端子の電位、水晶発振子の発振が確認されたので残る可能性は配線ミスくらいしか思い当たらない。再度、回路とユーザーズマニュアルのにらめっこだろう。

次回、その2に続きます。

マイコンに書き込めない?その2 - Days for development

 

壁距離センサに線形近似を導入しよう

こんにちは。今回は理科大プチコンからクラシックマウスに導入した近似について記録しておこうと思います。

1.導入した経緯

 私は6月のマウス合宿に参加したのですが、その最終日にプチコンに参加しました。あまり調整をせずに本番で動かしたのですが、センサーの閾値と参考値がおかしかったようです。マウスが壁に近寄りすぎた挙句、モーターが脱調して壁にぶつかったしまいました。以前から壁センサーの数値が距離と比例していないことには気が付いていたのですが初めて大会で完走できない事態に直面した為ようやく組み込むことを決意しました。

2.近似を導入する前の問題点

 センサー値が壁に近づくにつれて値が加速度的に増えることは閾値調整の時に把握していました。このセンサーの生データをそのままP制御に持ち込むことで起こった問題は2つです。

  1. ゲインを大きくすると壁から1㎝の地点から中心まで復帰する前に脱調が起こる。
  2. センサーの参考値付近では距離の変化に対してセンサー値の変動が小さく、補正があまり効果を果たさない。

 要するに中心から左右15㎜ほどでしか、中心からずれてもまともな補正がかかるこ

とを期待できないという事態なのです。

3.近似について

3-1.センサー値の特性

 手始めに4つすべてのセンサーに対して距離とセンサー値の関係のデータを取ってみました。

f:id:days_for_development:20170802135917j:plain

点がセンサーの実測値、点線が採用した近似曲線です。横軸はセンサーの電圧(mV), 縦軸はロボットと壁の距離(mm)です。ここから導入すべき数式を算出しました。(写真中の数式)

3-2.近似関数に導入

引数にセンサー値をとる関数を作成しました。返り値は数式の計算結果です。後はこれまでセンサー値で行なっていた比例制御の引数を関数に変更すれば実装完了!

4.結果

以下の性能向上が確認できました。

  1. 壁から1cmほどの位置から走り始めても脱調が起こらなくなった。(補正量が壁付近で必要以上に大きくなりすぎないから)
  2. ゲイン調整が比較的楽に。(脱調しないので)
  3. 壁に近づいても脱調しない。(壁に近づいても比例制御のerror(差分)が急に大きくならないから。)

今度は、ステッピングモーターを使ったマウスでは壁切れ補正をしましょうかね。

以上。