隠居エンジニアのものづくり

自転車 電子工作 ラジコン ロボカップジュニア CAD レーザー加工機

ビデオカメラの活用

試合の様子をビデオカメラに取っているチームを良く見ますが、撮った動画をどれぐらい活用しているでしょうか。

ロボットの仕様策定や、動作確認、チューニングに活用する事で、性能向上や評価時間の短縮が期待できます。

と言うことで、活用例を紹介します。

 

試合動画の分析(目的を絞って見る)

RCJサッカーライトウェイトで世界大会優勝経験のあるチームに御協力頂いて、動画を分析したことがあります。

進行停止処理により中立点にボールが置かれた瞬間の”ロボット - ボール間距離”に注目します。

ゴール、ラインなどの長さ、ロボットの直径を20cmとして距離を推定します。

4試合の測定結果は以下の様になります。

f:id:Blackbox_crusher:20210120202415p:plain

これを頻度で表すと

f:id:Blackbox_crusher:20210120202734p:plain

ロボット2個分の距離40cm以内が全体の85%を占めることが分かります。

これを基に私のロボット(OB・OG・おやじ参加可能の大会用)は停止状態から最短時間で40cm先に到達可能なギヤ比120:1を選定しています。

 

性能評価(ビデオ編集ソフトの活用)

次にこのギヤ比120:1のロボットの性能評価を行います。

スタートボタンを押して3秒後にフルスロットル前進、0.3秒後に停止(ブレーキ)のプログラムを動作させます。

ビデオ編集ソフトで不要部分をカット(記録容量の低減・後で見返す時の時短)し、タイムコード(ここでは秒を選択)を挿入します。

守備側スタートを想定して30cm先にボールを置きます。

0.067秒にスタート、0.367秒に30cm到達、0.500秒停止、ブレーキ設定での制動距離はボール半分と分かります。

 

守備側は攻撃側の位置決定後にフォーメーションを決定できます。

ボールへの到達が0.3秒なら、常に主導権を握る斬新な戦術が展開できます。

ブロック大会の優勝チームと2台vs1台のハンデ戦エキシビションマッチを行った時に、互角に戦えたので戦術の有用性は示せたと思います。

動画もあるのですが世界大会終了まで公開しない約束をしていますので、大会終了後に記事にしたいと思います。

 

ハイスピードカメラの活用

カシオ HIGH SPEED EXILIMソニーDSC-RX100M4以降のHFR(ハイフレームレート)機能搭載機種、高機能スマホなどにもハイスピード撮影機能が搭載されるなど、プロ機材だったものが個人で扱える時代になりました。

ロボットの動作(ソフトのパラメータ評価も可能)、ユニットの動作確認・チューニングに威力を発揮します。

オレンジボール用のドリブラの評価を例にします。

電動ラジコンカーにおいてオイルダンパーは走行安定性を得るための重要アイテムです。

サスペンションのストローク、バネの強さ、タイヤの種類、路面状況などに対してオイルの硬さ調整を行います。

ロボットに応用する場合も同じで、製作したドリブラーの構造によってダンパーの取付位置やオイルの硬さを調整することによって安定した性能を得ることができます。

RCJ2009年大会で独立懸架サスペンションやオイルダンパーを搭載したロボットを確認しているので、意外と歴史の長い技術ですが、チューニング方法や評価方法には困っている様子です。

以下の動画は#200~#1000のオイルの評価結果です(960fps)。

#400が良い感じで#800がダメダメで#1000がまた良い感じです。

"実験としては失敗では?"と思った方多いのではないでしょうか。

ボールを弾き出してしまう原因とダンパーの作用を整理しておくと、面白い結果だったことが分かります。

原因は”ローターで加速されたボールがロボット自体にぶつかって跳ねる”です。

ダンパーの効果は

①ボールの加速と同時に押し上げられるローターユニットの上昇速度の低減

②ローターユニット上昇後の降下速度の低減

#400はボールの加速をある程度低減してボールの跳ね返りを小さくし、ローターユニットの降下速度はそれ程遅くないので、降下中のローターがボールをトラップする形になり、良好な結果となってます。

#800はよりボールの加速を低減しているのですが、ローターユニットの降下速度が遅くなりボールを触れなくなり、はじき出してしまいます。

#1000は十分にボールの加速を低減しているので、跳ね返りが殆ど起きない状態になっており、良好な結果となってます。

この評価結果より#1500で組立てとても良い結果だったので評価動画が残ってないのが残念ですが、動画を注意深く解析する意義は御理解頂けたと思います。

 

youtu.be

オイルダンパーの有無比較が欲しい所ですね。

先ほどのドリブラと違うものですが、某ブロックのサマーキャンプへ持ち込む予定で模型屋さんで購入可能なタミヤ遊星ギヤボックスを用いて作ったドリブラです。

基本構造は同じですので、オイルダンパー有り無しの比較として下さい。

オイルダンパーの効果を理解して頂く為に作成したプレゼン資料に貼った動画(960fps)なので短いですが、最初のバウンドが振動状態で継続する症状が捉えられています。

バネのみでボールを押さえると必ず減衰振動します。

オイルダンパーはオイルの熱損で振動を低減(減衰振動抑制)する働きをしてくれます。

 

 

 

STRiDAにサイクルコンピューター取付の紆余曲折

頭の中にある事を、テキストにすると、整理されてアイデアがまとまる経験を度々します。

”あと30mmあれば”と書き終えた後、フェンダーの固定ネジの中間点にセンサを設置する場所があれば距離を詰めれるのでは?と思い付き早速フェンダーを取り外し、確認。

STRiDAあるある? - 隠居エンジニアのものづくり (hatenablog.com)

センサバンドを貫通させる角穴を追加工し、組立。

f:id:Blackbox_crusher:20210118222442j:plain

御覧の通り30mm距離を詰めて、マウントをステムに取り付ける事ができました。

 

※センサバンドはTopeak の余りにオリジナルエクステンダを追加した物でオリジナルではありません。

STRiDAあるある?

STRiDAサイクルコンピューターを付けようとCATEYE CC-VL820 VELO 9を購入しました。

センサとマグネットとの距離が標準品では全く届かない。

これは想定内でしたので、エクステンダーを設計・製作して無事5mm以内にセッティング完了。

後はマウントを好きな所に付ければOKと思ってマウントを持った瞬間、”あっ!”となりました。

f:id:Blackbox_crusher:20210117211659j:plain

何とケーブルの長さが足りません。

あと30mmあれば何とかステム取付ができたのですが・・・

STRiDAユーザーの皆さん気を付けましょう!

対策としてはワイヤレスもしくはリアホイール取付用ロングケーブルマウントがオプションで設定されている製品を選ぶ事が考えられます。

 

CATEYE CC-VL820 VELO 9の弁護をしておきます。

マウンテンバイクへの取付は余裕で出来ます。

STRiDAのホイール - ステム間距離がイレギュラーの様です。

I2Cのノイズ対策 その5(まとめ)

ロボットを設計・製作する手順としてまとめます。

●バッテリー、モータドライバ、マイコンボードの電源線を一点接地できるようにレイアウトする。

I2Cのノイズ対策 その2(一点接地編) - 隠居エンジニアのものづくり

マイコンボード-各センサ間の信号線は電源線と離して取り付ける。

I2Cのノイズ対策 その3(信号線のGND) - 隠居エンジニアのものづくり

※一点接地がキッチリできていて、電源・信号の分離ができていれば、I2Cバスにフィルタ回路を挿入する必要はないと思います。フィルタを正しく動作させる為にはパターンレイアウトのノウハウが必要ですので、場合によっては逆効果な場合もあります。

  

●I2Cセンサボードのプルアップ抵抗有無・値を確認し、I2Cバス上の全プルアップ抵抗の合成値を計算する。

(例えば、秋月のレーザー距離センサモジュール AE-VL35LOXはプルアップ抵抗が付いていません。センサボードによっては予めプルアップ抵抗が付いているものもあります。センサボードの回路図で確認してください。)

●I2Cバスに繋げる配線のトータルの長さを測り、配線長300mm当たり100pFと想定してバスの負荷容量を計算する。

●I2C通信速度を決める(ArduinoUNOのデフォールトは100kbps)

設計計算書によりRpの値、信号の立ち上がり特性を確認する。

※ファイルは共有になっていますのでローカルにコピーして使って下さい!

100kbps用設計計算書

400kbps用設計計算書

Rpの値が前出の”全プルアップ抵抗の合成値”より大きければOKです。

グラフの赤線より上が”High”となりますので赤線を青線が超える所が信号の立ち上がり時間になります。

短い時間で立ち上がる程、マージンが大きくなります。

I2Cのノイズ対策 その4(Rpの値 設計計算書の勧め) - 隠居エンジニアのものづくり

 

では、ロボット作りを楽しんで下さい。

 

 

 

 

 

I2Cのノイズ対策 その4(Rpの値 設計計算書の勧め)

I2Cのノイズマージン
プルアップされた信号線をGNDに引っ張ることでLowにする方式ですので"Low Level"が守られている事が重要となります。
各接続デバイスのノイズ・マージン(ヒステリシスを含む)はHigh側0.2VDD、Low側0.1VDD(I2Cバス仕様Ver2.1より引用)とLow側が厳しいことが分かります。
VIL(Low level Input Voltage) = 0.3×VDD
ですのでVDD = 3.3Vの場合0.99Vです。
VOL(Low level Output Voltage) = 0.4V これは規定ですのでデバイスが守らなくてはならない値です(規定を守れていないデバイスを見たことがあるので確認する事をお勧めします)。
VIL - VOL = 0.59V この電圧のノイズがあれば通信障害が起きます。
安全率2倍としても0.3V以下にノイズを低減する必要があります。

バスの容量400pFの規定があるので、配線長300mmの浮遊容量を100pFと想定し、プリント板パターンの浮遊容量を考慮するとI2Cバスに接続する配線は3本までになります。
方位センサなどモータから遠ざける目的がある場合以外は直近に配置する事をお勧めします。

※配線長300mmの想定は以下を御参照下さい。

 I2Cのノイズ対策 その2(一点接地編) - 隠居エンジニアのものづくり (hatenablog.com)

VIH(High level Input Voltage) = 0.7×VDD
ですのでVcc = 3.3Vの場合2.31Vです。
これを守るにはバスの容量とプルアップ抵抗からなる時定数による”立ち上がりのなまり”に注意が必要です。

I2Cバスは複雑に見えますが、プルアップ抵抗Rpの選定は意外とシンプルで”VDD”と”Lowレベル確保の安全率”の2値で決まります。
下図は設計計算書の例です。
色付きのセルVDDと安全率に値を入れるとRpが計算されます。
計算結果に最も近い値でかつ大きい値になる抵抗値をE系列より選ぶ所は手動ですが、後は自動的にVIHと信号の立ち上がりがプロットされます。

f:id:Blackbox_crusher:20210114201013j:plain
容量性負荷Cbを限界値の400pFにて計算した結果ですので、オシロスコープで信号波形観測をすればグラフより立ち上がりの良い状態になっているはずです。

 

プロトコルアナライザで1000パケット程度確認して”unknown”が発生してなければソフトウェアのI2Cバス通信手順を含めて基本動作は問題ありません。

f:id:Blackbox_crusher:20210114182649j:plain
プロトコルアナライザによるI2Cバス測定結果

 

本稿はデータシート・バス仕様書の内容掌握、エクセル、計測のスキルがあることを前提にしている部分がありますが、参考にして頂ければ幸いです。

 

I2Cのノイズ対策 その3(信号線のGND)

信号GNDの処理

マイコン基板-モータドライバ間の信号線(下図黄色の線)のGNDは?

"銅線は意外と重いのでGNDを省いて、信号線だけで接続!"としたい所ですよね。

サッカーライトウェイトのロボットで何例か見かけたのですが、絶対にしないでください。

この信号GNDを省くと信号線を流れる電流はモータドライバ→保護回路&電源分配→マイコン基板のルートを通る事になります。

つまり前出のノイズまみれのGND線を通過すると同時に、この経路が大きなループを作ります。

皆さんはEMI(周りの機器に悪い影響を与えない為に電磁波を出さないようにする規格)・EMS(外来ノイズの影響を受けにくいようにする規格)をクリアする必要はありませんが、大きなループは電磁波を効率良く飛ばすアンテナの作用と効率よくノイズを拾う作用をする、なかなかの厄介者です。

さて、モータドライバで生まれたノイズ君は、都合よくモータドライバ-保護回路&電源分配に留まってくれるでしょうか?

残念ながらノイズ君は道があれば信号線・電源線の区別なく遠慮なく通ろうとします。

そこで、”ごく少数の物好き”しか通らない様に信号線を”いばらの道”に仕立てます。

ただし、信号君から見ると快適な道に見えなければなりません。

この仕組みがフィルタです。

テーマがI2Cのノイズ対策ですので、”I2Cモータードライバ”を例題にします。

下図はフィルタの挿入位置と電源GND、信号GNDの位置関係を示しています。

f:id:Blackbox_crusher:20210114225151j:plain

フィルタの特性です。

f:id:Blackbox_crusher:20210114225424j:plain

400kbpsの信号をストレスなく通過させて、ノイズを阻止する境目の周波数を約1MHz(信号周波数200kHzの5倍)に設定しています。

66pFの容量負荷が追加になりますので全体で400pFを超えない様に注意が必要です。

ちなみに4.7μHはチップインダクタの最大値です。

 

後は、プルアップ抵抗(Rp)の選定方法です。

 

 

 

 

I2Cのノイズ対策 その2(一点接地編)

ノイズ対策が難しいのは、最終的にはケースバイケースとなってしまう所ではないでしょうか。
つまり、この方法で全て解決と言う”王道”が存在しないと言うことです。
ですが、ケースを絞り込めば”ある程度の王道”を示す事はできます。

と言うことで、ロボカップジュニアにフォーカスして絞り込みを行います。
 レスキューチャレンジの場合、300mm×300mmのマスの中で行動できる事が要件ですので、この寸法を超えることはありません。
旋回することを考慮すると、250mm×250mm以下のロボットになると思います。
 サッカーチャレンジの場合、直径220mmもしくは180mmを超えられないレギュレーションになってます。
●ロボットのサイズは200mm×200mm
マイコン制御
●アナログセンサ:マイコン内臓A/Dコンバータ
●デジタルセンサ:マイコン内臓I2Cインターフェース
●モータ駆動:HブリッジPWM制御 全モータ駆動時10A
このケースについて考えます。

ロボット自身が発生するノイズはモータのコミテータとブラシ間で発生するスバーク、モータドライバで発生するPWMによるパルス電流です。
先ず、これらのノイズを抑える必要があります。
●モータ:モータの金属ケースと端子間にコンデンサを付けて、最短距離でスパークノイズを処理します。

f:id:Blackbox_crusher:20210113212057j:plain

電動ラジコンカー用モータのパスコン


●一点接地で配線する。

一点接地の話は何処(出前授業とか)でやっても”ポカーン”と言うリアクションになるので具体例と図で説明します。
配線やパターンは”0Ω”ではありません。
上下や部品の回避で若干の遠回りを想定して200mm×200mmのロボット内の最大配線長を300mmとします。
AWG26で配線すると約0.04Ωになります。
0.1Ω程度あると考ておいた方がノイズに対する意識が高まりますし、概略計算(暗算?)し易いのでお勧めです。

と言うことで配線の抵抗を0.1Ωと仮定します。
モータドライバはフルパワー時は10A流れっぱなし、停止時は0Aですが、その間のパワーは数μs~数百μs程度の周期でON-OFFを繰り返しています。
この電流の変化が配線抵抗によってノイズに化けます。
発生自体は物理現象なので止められないのですが、マイコンから見えなくする工夫はできます。

メイン基板と各種サブ基板を設計して、スタックコネクタなどで合体させる配線方法(メカ的にはメンテナンス性が良く、素敵性能は高いのですが・・・)や電源をメイン基板からモータドライバ基板へ渡り配線するなど共通インピーダンスを持つ配線方法が下図になります。

 PWM ON時

f:id:Blackbox_crusher:20210113212826j:plain

 

PWM OFF時

f:id:Blackbox_crusher:20210113213018j:plain

この様にマイコンのGNDに1Vのノイズが発生します。

 

メイン基板とモータドライバ基板を、個別に配線する方法が下図(一点接地)になります。

 PWM ON時

f:id:Blackbox_crusher:20210113214829j:plain

 

PWM OFF時

f:id:Blackbox_crusher:20210113214933j:plain

配線方法の基本を守るだけで大幅にノイズを減らすことができます。


RCJ仕様ロボット2020モデルの配線例

保護回路兼電源分配基板とマイコン基板が見える所まで分解してあります。

モータドライバは履帯の中(スプロケットホイールとアイドラーホイールの間にレイアウト)にあるので追記してあります。

電源線と信号線は束ねたり、平行に並べた状態にならない様に配線のレイアウトも考慮した機構設計をしてあります。

もちろんI2Cの通信に全くトラブルはありません。

f:id:Blackbox_crusher:20210113230832j:plain

 

I2Cの規格に触れた内容は別の機会にします。