The Core Concepts of ByName Motion And Control

ASTER::Motion に関する説明書、共通操作手順、共通基本命令動作拡張命令について。

共通操作手順

オブジェクト・モーションコントロールを利用する手順について、以下で概ね共通化されています。

  1. モーションテンプレートを選択
  2. オブジェクト・インスタンスを選択
  3. インスタンスの集合に名前 ( Motion Group Name ) を付ける
  4. コントローラにパラメータを送信する

モーション・テンプレートについて

大別すると 5 種類のモーションテンプレートが選択できます。以下では Null 以外の動作テンプレートとその特徴について説明します。

  1. Null
  2. Horizontal | Vertical
  3. SineWave
  4. Orbital
  5. MoveTowards

Horizontal | Vertical


Horizontal | Vertical はとてもシンプルで分かりやすい、水平・垂直方向へ進む等速直線運動です、

  1. Horizontal :: Wrap
  2. Horizontal :: Flip
  3. Vertical :: Wrap
  4. Vertical :: Flip

「仮想壁」という概念があり、設定された座標を見えない壁と見做し、壁に接触した時の動作を Flip|Wrap から選択できます。Flip は移動量を反転、Wrap は進行方向の反対側壁までワープ。

Description of the image
Horizontal :: Flip and Wrap .. Blue Robot ToyBox


SineWave


Horizontal|Vertical に Sinewave を加えたモーション・テンプレートです。単純な縦横移動の派生ではなく、「群」に対してパラメータ設定できるという特徴を備えたモーションです。

  1. Horizontal :: Wrap :: Sinewave
  2. Horizontal :: Flip :: Sinewave
  3. Vertical :: Wrap :: Sinewave
  4. Vertical :: Flip :: Sinewave
Description of the image
Sinewave という動作はモーショングループという単位に対して「群」という概念を取り入れ、群れとして動かすためのパラメータ設定ができるという点において、この後説明する Orbital や MoveTowards の動作概念と共通しています。


Orbital


Orbital は「群」に加えて「ターゲット」という概念を持つ動作です。「仮想壁」は利用されません。

  1. Orbital :: OwnXy
  2. Orbital :: TgtXy

Orbital や MoveTowards は周回や追従 ( 追跡 ) など、自インスタンス以外のインスタンスをターゲットとして定め、ターゲット座標などを参照しながら移動を行います。

「周回の中心となるインスタンス」や「目標座標を持つインスタンス」など、先に示した共通操作手順に追加でターゲットに関する設定が必要になる場合があります。以下に Orbital::TgtXy の操作手順を例示します。

  1. モーションテンプレートを選択
  2. オブジェクト・インスタンスを選択
  3. 周回の中心となるターゲット・インスタンスを選択
  4. インスタンスの集合に名前 ( Motion Group Name ) を付ける
  5. コントローラにパラメータを送信する
Description of the image
Orbital は周回の中心座標を他インスタンス ( Target ) から取得しています。ターゲットの位置を常に参照し追従しながら周回する動作も作ることができ、単純な周回動作に加え複雑な軌道も描くことができます。
Description of the image
Orbital の移動は角速度で指定し、角度到達時のカスタムイベントを作ることもできます。


MoveTowards


これまで例示された「群」、「ターゲット」に加え「追跡者」という概念が追加され、ターゲット選択やその他の機能に対して豊富なユーティリティを提供するモーションテンプレートです。

  1. MoveTowards
  2. MoveTowards :: Swap
  3. MoveTowards :: RefVec
Description of the image
MoveTowards :: TgtArr
Description of the image
MoveTowards :: SwapEPs


共通基本命令


モーションテンプレートは共通化された基本命令を持っています。

モーションを持たない Null モーションは例外なので Stop や Sleep は機能しませんが、それ以外の全モーションで以下4つ、RejectDestroyStopSleep が利用できます。

基本命令は ByNameDirectly という二つの命令系統があり、必要に応じて開発者が選択できます。

Type Description
ByName モーションコントローラに対して Motion Group Name を使って指示を出す
Directly インスタンスを特定して指示を出す

基本命令 :: Reject

登録済みモーショングループを動作コントローラから登録抹消する基本命令です。

モーショングループ名を指定してグループ全体を登録抹消する ByName 系、選択されたインスタンスに絞って個別に登録抹消する Direct 系、二種類があります。

一定時間経過後に命令実行される Time-Bound 機能付き。

共通化された基本命令の中では最上位の命令、他命令の影響を一切受けない、命令発行後に Time-Bound 値など条件変更や実行の取り消しができない仕様。


基本命令 :: Destroy

単独で利用されることはない。インスタンスを破壊する命令。

Reject と Destroy を組み合わせた Reject + Destroy 命令で利用されます。

コントローラにモーションが登録されたインスタンスを、登録抹消前にインスタンスを破壊されるのはコントローラにとって都合が悪く、先に Reject し次いで破壊という命令がセットになったものです。


基本命令 :: Stop

モーションを一時停止 ( Stop ) する。

停止中の動作に対しては動作停止を解除する命令になります。

停止命令は Sleep と似ていますが、動作を再開する前提で一時停止する Sleep に対して Stop 命令は Sleep 命令を含めて動作停止することができる上位命令と位置付けられています。

ただし Reject 命令よりも下位なので Reject は Stop 命令で停止できません。


基本命令 :: Sleep

再開する前提でモーションを一時停止する命令。時間制限付きで停止と動作再開を繰り返し実行するため Repetition 値を持っているのが特徴。

時間制限付き Sleep は Orbital 系には機能しません。

Orbital に対しては角度単位で機能する専用の Sleep :: Angluar があります。

ただし Orbital は標準パラメータ設定に Sleep を取り込んでいるため、Sleep 命令を後から発行する機会はありません。

Sleep は Stop の下位命令なので Sleep 中の動作に Stop 命令を発行すると Sleep 命令も動作停止されます。Stop 中は Sleep のカウンタも停止するため、Stop 命令が解除されるまで Sleep 命令も機能停止します。



動作拡張命令


モーションは特性に応じて固有の「動作拡張命令」を持っています。

移動量を符号反転する Reverse Movement は Null と MoveTowards 以外に動作適用できます。

Sinewave と Orbital は「角速度」と「半径」という共通パラメータがあり、 それぞれ専用の動作拡張命令として GrowRadius を持っています。

Description of the image
Grow Radius for Sinewave
Description of the image
Grow Radius for Orbital


その他、Orbital 専用として Change Target 命令があります。

Description of the image
Change Target of Centre for Orbital