Al Green





ビデオテープの時代に一度みたきり、また見たいと思いつつ忘れていたビデオがあったのでメモ。
スポンサーサイト

VS-RC003への自動復帰システム仕込み②


前回準備した自動復帰システムでは、SELECT+START同時押しによるデフォルトの脱力オンオフが使えなくなっていました。
そこで、今回はその機能を復活させるための仕込みを行いたいと思います。




原理としては、脱力スイッチのオンオフを判定するフラグを別途独自に設定するというだけです。
それを参照して全サーボオンなのか全サーボオフなのかを分岐させていきます。




【モーションの作成】

<脱力スイッチモーション>
・脱力フラグ用のユーザー変数を準備。例ではv[68]をフラグとし、1なら脱力フラグがON、0なら脱力フラグがOFF。

[START]
01:脱力フラグv[68]を判定。1なら今脱力状態なので全サーボオン→02へ、逆に0なら脱力→03へ
02:v[251]=1 #強制サーボオン
→v[68}=0 #脱力フラグを下ろす
   →2秒(120step)程度で、構え(通常の立ち姿)のモーションを実行
   →[END]
03:v[251]=0 #強制サーボオフ
→v[68}=1 #脱力フラグを立てる
   →0.1秒(6step)程度で、全サーボオフのモーションを実行 #念のため
    →2秒(114step)程度で、全サーボオフのモーションを実行 #念のため
    →[END]

※全サーボオフのモーションは、全サーボのモーションスライダの左ボックスをアンチェックで作れます。

<アイドリングモーション>
01:脱力フラグv[68]を判定。
 →0ならv[251]=1 #強制サーボオン
  →1ならv[251]=0 #脱力

【操作マップの設定】

<脱力スイッチモーション>
 ・全モーションの先頭に配置。
 ・再生条件SELECT+START
 ・受入×無効、割込○有効、Idling割込○有効

<アイドリングモーション>
 ・「登録モーション設定」の「アイドリングモーションの設定」に設定。




以上の方法を、前回の自動復帰システムと合成すればできあがりだと思います。
脱力モーションの信号を送った後で通信断絶してしまうと、復帰ができなくなりますが、確率は低いと思うので問題ないかと思います。
脱力信号受け取りから一定の秒数後に自己判断でサーボオンして立ち上がるという設定も可能ですが、勝手に動くということから触れる人への危険を伴うことになるため、その機能はあきらめ、試合よりも安全を優先するのがビルダーとしてのモラルかなと思います。




また別の方法として、常にオンにするのではなく、電源投入時のみ、v[251]=1→起き上がりモーション始動とする方法もあります。
そちらの方がシンプルですが、ロボットの設計によっては、脱力時のサーボ位置の都合からあらぬ回転方向経由でポジションに戻ろうとして起き上がれなくなるということもありえます。常時オンに設定しておくことで現状復帰できる可能性を高くしておけるというわけです。

テーマ : 自然科学
ジャンル : 学問・文化・芸術

VS-RC003への自動復帰システム仕込み①


ロボットに通信断絶トラブル等からの自動復帰を仕込みます。
OneShotの関くんやゼノさんに伺ったテクニックをちょっとだけアレンジしたまとめ記事です。
(先週一度アップしたんですが、上書き消去してしまったため、書き直しました。)




自動復帰は下記の2つの機能を持ちます。競技での使用が前提です。

① 常時サーボオン状態に設定にすることで、不慮のCPUリセットからもサーボオン状態になれる。
② 倒れた時に、通信断絶状態でも起き上がることができる。


通信断絶トラブル自体の解決はできないのですが、一定の条件化で通信トラブルによる競技終了を回避できます。
特にロボワンの試合で有効です。相手の攻撃がヒットした直後のダウン中は、立ち上がるまでタイムがとれない(カウントダウン終了までに立てなければKOとなる)ため、ダウンと同時に通信断絶した場合には、通常はそのまま負けが確定してしまいます。
しかしロボットが起き上がりまでを自己判断で行うことができれば、立ち上がった後にタイムを宣言し、ピットで通信回復を行う事ができるというわけです。




基本となる考え方と構造です。
VS-RC003はSELECT+STARTのボダンを押下することで、変数v[251]の内容が0と1で切り替わり、この変数の内容に応じて、全サーボのオンオフが反映される仕組みになっています。
この変数v[251]の制御方法をいじることで、通信状況によらず自動復帰できるようにします。


【基本設定】
・各モーションのアイドリング割り込みを基本的にすべて有効にする。
・使用できる変数を一つ準備する。(今回の例ではV[69]を使用しています。)


【モーションの内容】

<アイドリングモーション>
[START]
01: V[69]=0 #自力復帰タイマー用カウンタ
02: V[69]+=1 #自力復帰タイマー用カウンタに+1
03: v[69]>300 yes→<起き上がりモーション実行>→[END]
04: v[251]=1 #全サーボ電源強制ON
05: 02に戻る #アイドリングモーション中はカウントアップでループ。各モーションはボタン入力割り込みにより実行。

※<起き上がりモーション>はアイドリングモーションのプログラム内に書くか、
 変数だけ設定してENDし、変数参照でモーション実行するようにする。

<脱力モーション>
基本姿勢のプログラムスライダーのボタンをすべてアンチェックし、
脱力解除のボタン(任意に設定)が押下されるまでループする設定にする。


【ボタンの設定】
START+SELECTボタンでの脱力が無効になりますので、代替手段を用意します。
脱力を有効にする一番手っ取り早い方法は、脱力用のボタンを別途設定し、
前述のモーションに入るようにしておくことかと思います。




基本はこれだけでOKです。
試合中に通信不良に陥りギブアップ!という後継は時折見かけますが、自動復帰を仕込んでおけば活路を見出せます。
まだ1ダウン目であれば、復帰からのタイム宣言で合計2ダウン。
2ダウン目の通信不良であっても、ポイントで同点以上かつ試合終了間際であれば、時間切れのポイントリードによる勝利もしくは延長戦での仕切り直しに持ち込むめる可能性を残せます。

ちなみにゼムネスでは自動復帰判定後、立ち状態・転倒姿勢の裏表を自動判別するモーションを再生するようにしているので、立った状態で10秒放置しても暴れずに首をちょっと振る程度になっています。
このように、各自カスタマイズすると便利度がアップすると思います。
上手く調整すれば、SELECT+STARTの機能を変更せずにそのまま使い続けることもできると思います。

テーマ : 自然科学
ジャンル : 学問・文化・芸術

プロフィール

二名川(ニナガワ)

Author:二名川(ニナガワ)
ホビーロボットをレトロゲームが発展したものと捉えて楽しく遊び倒します。
子供が夢を見ている時間帯に稼働します。

宣伝:電子出版しました。
「コンソロイド ガイドブック」
46107_CONSOLOID_GUID_FACE_200.jpg





■作成中の機体
汎用ヒト型決戦遊具 ~RX計画~
RX-7.5 ゼロタンク
RRf-0.6 ゼニィ
RXM-7.9 ゼムネス
RX-7.5R 量産型ゼロタンク
RX-7.5Fp ファミタンク仮設1号
RX-7.7 ゼロキャノン
RX-7.8 ゼログレイ
SMS-0.1 ゼロライナー
以下続く

ブログ内検索
最近の記事
最近のコメント
カテゴリ
月別アーカイブ
リンク