Days for development

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

モーターの速度制御〜その3〜

おはようございます。

昨日の続き

 

days-for-development.hatenablog.com

 今回は回転方向制御が発散した原因箇所の特定と対応を進めていきましょう。

 6.過去のソースコードの変更点

update_gyroの変化

はい。更新周期の変更と平滑化が入っています。

これを戻しました。

変更後です

7.変更後の動作

ひとまず大まかには発散していないので良しとしましょう。

8.変更までの経緯

 どうやら、回転方向の制御が怪しかったということで昨年からの変更点を戻しました。

しかし、サンプリング周期を戻すのは少し惜しかったので条件を少しずつ戻しました。

更新周期が3kHzで平滑化を削除した場合

発散しました。あまり変化がなくあまり関係がなかったのな?

更新周期1kHzで平滑化なし

これが上記の動画になります。

更新周期が早かったことが観測できる範囲では問題だったようです。割り込み内容が多すぎて計算しきれていなかったのでしょうか?

 

深追いはしないことにして

次は併進方向の発散の対処に移ります。では。

モータの速度制御について~その2~

こんにちは。

昨日、書いた記事の続きをやっていきましょう。

days-for-development.hatenablog.com

 

3.現象から考えられること(根本原因の考察)

3.1要求角速度0mm/s,要求速度0mm/sの場合

発散して回転し続けるので角速度PID制御がの何れかが発散していることは明確です。

対照実験として念のためPIDゲインをすべて0にした場合ロボットが動き出すことはなかったのでこれは確定でしょう。

では何が起きているのか、、、

  • 数値取得のバグ
  • I値の発散
  • Pゲインが大きすぎる
  • 制御周期とデータの取得タイミングの不適合
  • ジャイロとの通信ミス

が思いつきました。

3.2要求角速度0mm/s,要求速度0->800mm/s加速度10000mm/s/sの場合

角速度PIDと同様に併進速度PIDに問題があるようです。

  • 数値取得のバグ
  • I値の発散
  • エンコーダー補正テーブルの非連続性
  • Pゲインが大きすぎる
  • 制御周期とデータの取得タイミングの不適合
  • エンコーダとの通信ミス

実験後追記します。

2018/09/14 実験したので続きです

4.実験結果

ウーム...。この実験では回転方向はKi=0としているので発散してほしくはなかったのですが。加えて、エンコーダ補正を行っていないまま実験を行いました。ひとまず、発散時に急激にI値が大きくなっているところを確認しました。

では考察ですか。

5.実験結果からの考察

今年はマウスは基本的に去年のマウスの改修版なのでセンサーも同一でソースコードは流用品です。

ですので、最低でも

この程度は動くポテンシャルはあるはず。

機首角度の保持などは他の検証で正しく動いていることは確認済みなので

新規に手を加えた箇所が悪さをしているのでと思います。

次回、考察の続きから始めます。

では。

モータの速度制御について

どうもこんにちは。

進捗どうですか?私は不調です。

 新作マウスの速度制御が恐ろしく不調なので事実と考察を切り分け原因及び改善策を考えるために文章に書き起こします。

1.観測された現象(概略)

新作マウスの制御において何が不調なのか。

現状2つあります。

  • 併進速度制御の発散
  • 角速度制御の発散

2.観測された現象(詳細)

では発散した場合何が起こったのか。発散した条件が2つあるのでそれぞれにおいて確認します。

2.1要求角速度0deg/s,要求併進速度0mm/sの場合

 角速度が正から負に切り替わるタイミング(0:29)のタイミングで全く回転制御が働かないまま発散しています。動画が終わった後も回転し続けていました。

2.2 要求角速度0deg/s、要求速度0->800mm/s、加速度10000mm/s/s

 この動画では回転方向の制御が失敗していますがもう一つの事例では

f:id:days_for_development:20180911235132j:plain

初めからバックし始めるという状況です。制御もへったくれもないですね!!!

明日に考察を回します。おやすみなさい!!!

 

3dプリンタでロボットの外装を作ろう!

お久しぶりです。

最近、テストも終わりようやくマウスの整備に取り掛かり始めました。

では今回は、マウスの外装を作った話です。

なんで外装?

今年のロボットに外装を作っておいた理由については2つあります。

  1. 制御に失敗した場合、センサーが大きく歪む
  2. 流体力学的影響はどんなものか興味が出たため

です。

f:id:days_for_development:20180815093942j:image

センサーが曲がってしまうとセンサーAD値と距離の関係の近似曲線を作成し直す必要が生まれてしまい、開発の妨げになると思いました。

また、現行のマイクロマウスの多くは軽くして慣性力を減らし、吸引で仮想自重を増しタイヤのグリップを増して制御性を向上させています。

マイクロマウスは小さいが故に強引な手法も取れるのですが折角なので流体力学的特性を改善できたらより良い物が出来あがるかもしてないと考えてスカルプトで外装を製作することとしました。

3Dモデル

f:id:days_for_development:20180815094839j:image

主な形状はスプライン曲線で作成し、押し出しと対称で形を作りました。一応、fusion360でカーデザインを行なっていらっしゃる猿渡さんの形の作り方を真似て作りました。

もっとブラッシュアップしたかった!

(今回はデザインの向上が目的ではなく、早くハードウェアを固めてソフトウェアの再構築に取り組む為なので目的を履き違え無いようにしなければならないですが。)

3Dプリント

今回使用した機材はUP!です。素材はABS plusです。積層ピッチは0.15mmでした。

製作したモデルの厚みが1mmでしたのでサポートを取り外す時に一部もげてしまいました。

f:id:days_for_development:20180815095748j:image

大きく窪んだところ付近が一番わかりやすいと思います。

表面処理

タミヤのスーパーサーフェイサー L を使用しました。

表面が荒れていると空気抵抗が大きいと思われますので塗装、研磨を四度繰り返しました。

f:id:days_for_development:20180815100245j:image

外装はワンタッチで取り外すことができるようになっているので最終モデルはdmm.makeのMJFまたはナイロンで製作する予定です。

ではこれで何がわかる、評価できるのか?

評価できる事は主に2つ

  1. センサーが歪むか否か
  2. 最高速での直進時における安定性

センサーは歪まなければそれで良いですね。一つ課題をクリアした事になります。

問題は直進時の安定性です。外装をつけた状態と、外した状態で対照実験ができるはずです。また、流体シミュレータに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メモより