戦術に限らずプログラムの書き換えを行わずに、パラメータの変更や値の調整などができると便利です。
私のロボットは、ロータリーディップスイッチを用いて起動時に0~15の値を読み取る仕組みになっています。
大変便利で、ハード確認の際にはモータドライバのパワーを0%~15%に割り振って、モータが無負荷で回転を開始するのが何パーセントか?駆動部(ギヤボックスを自作するので)が組み上がった時に起動パーセントを確認、比較して摩擦の大小を把握します。
プログラムの組み始めは、限界感度法で得た比例ゲインを中心値にして前後の値を確認するのに使うとチューニングがスピーディです。
試合では戦術を切り替えなる必要がないので、シュートのタイミングや角度の調整に使っています。
とは言え、”便利”に4ポート消費するほどの余裕はありません。
そこで、ロータリーディップスイッチを1ポート(アナログ)につなげる方法です。
R-2RラダーDACを用います。
R-2RラダーDACについては検索して頂くと色々記事がありますので、ここでは解説しません。
実際にプログラムで0~15の値を得るには”閾値”が重要になります。
先ずロータリーディップスイッチを0から順番にに切り替えながら、その時のA/D値を記録します。
この表の様に各スイッチポジションの中間値を計算して閾値とします。
同時にグラフにして”R-2RラダーDAC”の動作を確認しておく事をお勧めします。
プログラム例:
void Get_4bitRSW()
{
SensorValue = analogRead(Command_RSW); // アナログポートの読み取り
CommndValue = 0; // コマンド初期値
if (SensorValue > 921)
{
CommndValue = 15;
}
else if (SensorValue > 854)
{
CommndValue = 14;
}
else if (SensorValue > 788)
{
CommndValue = 13;
}
else if (SensorValue > 726)
{
CommndValue = 12;
}
以下省略
}
閾値を適切に設定すれば、正確に0~15を得ることができます。
サッカーオープン2022仕様(中央下側がR-2RラダーDAC回路)
※R-2RラダーDAC回路はコンプリメンタリ・コード用です。
R-2RラダーDAC回路に必要な面積はロータリーディップスイッチのひと回り大きい程度で、水色の枠で囲んだ部分です。
ちなみに黒色塗装銅張基板をレーザー加工機でパターン描きするので、シルクなどのオーバーラップ系のDRC警告は無視できるのでパターン引きは楽々です。
レーザー加工機でプリント基板を自作する方法 その1(ベクターデータ作成・試作確認) - 隠居エンジニアのものづくり
レーザー加工機でプリント基板を自作する方法 その2(エッチング編) - 隠居エンジニアのものづくり
2021ルールから
”ロボットは平面上に置かれた状態で、他のロボットを妨害する可能性のある可視光を発してはいけません。相手のロボットのビジョンシステムに干渉する可能性のある光を発する全ての部品は、隠されていないといけません。”
が追加されました。
”他チームのロボットの影響を受けていると主張するチームは、その証拠あるいは根拠をみせなければいけません。”
とありますが、少なくとも”PixyCam搭載ロボット”は”PixyMon”を用いて再現性良く簡単に根拠を示すことができます。
実際にPixyMonによる”干渉の証明”を行ってみ見ましたが、”目視でLEDを認識できればまずOUT”です。
ボールキャッチセンサなど外に光が漏れる光学センサはメカニカルに変更しました。
使用禁止になったら大変なラインセンサの対策についてはこちらを参照下さい。
ラインセンサについて (その2 サッカーリーグ編) - 隠居エンジニアのものづくり (hatenablog.com)
この様な”干渉に関する”ルール変更の状況を踏まえた2022仕様の基板はこんな感じです。
フェノール基板の色が相手ロボットのビジョンシステムの邪魔をしないようにエッチング後にベンジンで脱脂、320番のサンドペーパーで表面を荒らして、艶消し黒のラッカースプレーで塗装してあります。
LEDはデバッグ用で試合中は点灯しません。
ArduinoNano搭載のLEDは基板の動作確認が完了した後にテーピングで遮光します。
電源用コネクタはスイッチ用と間違わない様に赤染めのコネクタを使用していますが、ロボットに実装した時に、赤色が見えない工夫がしてあります。