AGV
説明
AGV移動に関連するデータおよびメソッドが利用可能になります。
AGVクラスは、AGVネットワークに接続されたタスク実行者に関連付けられています。AGVはタスク実行者オブジェクトと同じではありません。言い換えると、AGVをタスク実行者自体に設定することはできません。
TaskExecuter te = current;
AGV agv = te; // RUN-TIME ERROR
代わりに、AGVは、タスク実行者と同一ではなく、タスク実行者に関連付けられます。特定のタスク実行者のAGVにアクセスするには、AGV()コンストラクターを使用します。
とはいえ、AGVクラスは実際にはtreenodeに格納されているため、treenodeとの間でキャストでき、as()キャストメソッドを使用してVariantなどとして渡すことができます。
return AGV(current).as(treenode);
さらに、トラブルシューティングの際、モデルの実行中にこの構造を確認したい場合、ツリー内のMODEL:/AGVNetwork>variables/agvs/<AGVNAME>でこの構造を確認できます。<AGVNAME>は確認したいAGVの名前です。
プロパティ
accumAheadAGV | 集積パス上にある次のAGVを取得します。 |
allocationPoints | AGVの未割り当ての割り当てポイントの現在のセットを表すAGV.AllocationPointの配列。 |
ampHours | AGVのバッテリーに残っているアンペア時間を数値で取得します。 |
batteryLevel | (残りアンペア時間)/(合計アンペア時間)の割合をパーセント単位で取得もしくは設定します。 |
currentCP | このAGVの現在のコントロールポイントを取得もしくは設定します。 |
currentTravelDist | AGVの現在の移動距離を取得します。 |
currentTravelPathSection | AGVが現在移動している移動パスセクションを取得します。 |
destination | AGVの現在目的地を取得します。 |
destinationCP | AGVの現在目的地のコントロールポイントを取得します。 |
finalDestinationCP | AGVの最終目的地のコントロールポイントを取得します。 |
isOrientedPathForward | AGVがパス上で「前」を向いているかどうかを取得または設定します。 |
object | このAGVでオブジェクトメソッドとプロパティが利用可能になります。 |
originCP | AGVの元のコントロールポイントを取得します。 |
overflowCP | AGVがトレーラーを押している場合、「オーバーフロー」するコントロールポイントを取得するか、そのようなコントロールポイントを設定します。 |
proximityState | AGVの現在の近接状態を取得します。 |
recentCP | 最後にagvのcurrentCPであったコントロールポイントを取得します。 |
resetCP | モデルがリセットされるときにAGVの接続先であるコントロールポイントを取得するか、AGVを接続するコントロールポイントを設定します。 |
speed | AGVの現在の速度を取得します。 |
te | このAGVでTaskExecuterメソッドとプロパティが利用可能になります。 |
trailers | このAGVにアタッチされている一連のトレーラーで構成されているAGV.Trailerの配列です。 |
travelPath | AGVの現在の移動オペレーションの移動パスを示すAGV.TravelPathSectionの配列。 |
traversalPoints | AGVに予定されている「通過」の現在のセットを表すAGV.AllocationPointの配列。 |
メソッド
addAllocationPoint | AGVのallocationPointsリストに新しい割り当てポイントを追加します。 |
attachTrailer | 特定のオブジェクトをAGV上のトレーラーとしてアタッチします。 |
coupleTrain | このAGVに対してトレーラーの輸送列をアタッチし、ネットワークジオメトリに基づいてギャップなどを自動計算します。 |
detachTrailer | AGVから特定のトレーラーをデタッチします。 |
getTrailer | ahead/behindパラメータに基づく特定のトレーラーを取得し、AGVドライバに対するランクを取得します。 |
redirect | 指定されたモードに応じて、AGVを新しい目的地にリダイレクトします。 |
setDestination | 目的地コントロールポイントを設定します。 |
startRecharge | AGVのバッテリーの充電を開始します。 |
stopRecharge | AGVのバッテリーの充電を停止します。 |
uncoupleTrain | このAGVからトレーラーの輸送列をデタッチし、独立したAGV輸送列を作成します。 |
コンストラクター
AGV | 指定したTaskExecuterに基づいて、AGVオブジェクトを構築します。 |
詳細
AGV.allocationPoints
readonly allocationPoints
説明
AGVの未割り当ての割り当てポイントの現在のセットを表すAGV.AllocationPointの配列。
トラブルシューティングの際、モデルの実行中にこの構造を確認したい場合、ツリー内のMODEL:/AGVNetwork>variables/agvs/<AGVNAME>/allocationPointsでこの構造を確認できます。<AGVNAME>は確認したいAGVの名前です。
AGV.currentTravelPathSection
readonly AGV.TravelPathSection currentTravelPathSection
説明
AGVが現在移動している移動パスセクションを取得します。
AGV.overflowCP
treenode overflowCP
説明
AGVがトレーラーを押している場合、「オーバーフロー」するコントロールポイントを取得するか、そのようなコントロールポイントを設定します。
一般的には、AGVがトレーラーを押している場合でのみ必要です。トレーラーを押している場合、これらのトレーラーはAGVの予定目的地を越えて押されることになります。そのため、overflowCPはAGVのトレーラーが「オーバーフロー」すべきAGVパスネットワーク上のポイントを定義します。
overflowCPの制御はユーザーによってのみ行われます。モデルがリセットされた場合のみ、自動でリセットされます。そのため、このプロパティを設定する場合、適用可能な動作を完了した後でこのプロパティを0にリセットする必要があります。適用可能な移動動作の後でリセットしなかった場合、異常なAGVパス移動動作が発生する恐れがあります。
agv.overflowCP = Model.find("ControlPoint5");
AGV.trailers
readonly trailers
説明
このAGVにアタッチされている一連のトレーラーで構成されているAGV.Trailerの配列です。
トレーラーは前方から後方に向けて順序付けされています。言い換えると、最前列のトレーラーが
agv.trailers[1]になり、最後列のトレーラーが
agv.trailers[agv.trailers.length].
AGV.travelPath
readonly travelPath
説明
AGVの現在の移動オペレーションの移動パスを示すAGV.TravelPathSectionの配列。
トラブルシューティングの際、モデルの実行中にこの構造を確認したい場合、ツリー内のMODEL:/AGVNetwork>variables/agvs/<AGVNAME>/travelPathでこの構造を確認できます。<AGVNAME>は確認したいAGVの名前です。
AGV.traversalPoints
readonly traversalPoints
説明
AGVに予定されている「通過」の現在のセットを表すAGV.AllocationPointの配列。
FlexScript APIの目的でのtraversalPointsは、割り当てが行われているものの割り当て解除は行われていない割り当てポイントのセットです。つまり、AGVの現在の割り当てを示します。詳細については、「AGV.TraversalPoint」を参照してください。
トラブルシューティングの際、モデルの実行中にこの構造を確認したい場合、ツリー内のMODEL:/AGVNetwork>variables/agvs/<AGVNAME>/traversalPointsでこの構造を確認できます。<AGVNAME>は確認したいAGVの名前です。
AGV.addAllocationPoint()
AGV.AllocationPoint addAllocationPoint( AGV.AllocatableObject object , double stopDist , double deallocDist , double arrivalDist ) |
パラメータ
object | 割り当てるオブジェクト。 |
deallocDist | 割り当てポイントのstopDist。 |
deallocDist | 割り当てポイントのtraversalDist。つまり、オブジェクトの割り当て解除を行うポイントです。 |
arrivalDist | 割り当てポイントのarrivalDist。 |
説明
AGVのallocationPointsリストに新しい割り当てポイントを追加します。
一般に、AGVのデフォルトの動作では、割り当てポイントがAGVの移動パスの一部として正しく追加されるため、通常はこのメソッドを使用する必要はありません。ただし、手動による割り当て追加が役立つケースもあります。たとえば、AGVの特定の空間構成が原因で移動パス上に理論上存在しないポイントを割り当てなければならないケースです。AGVの一部が本体から「はみ出し」、他のパスに侵入している場合、このAGVが他のAGVと衝突するのを回避するために、他のパス上の割り当てポイントを追加して、この状態を解決することがあります。
このメソッドは、AGVの移動オペレーションの定義された時間にのみ呼び出す必要があります。具体的に言うと、OnBuildTravelPathイベントが起動された後(またはこのトリガーの一部として)、かつ、OnPreAllocateの前に呼び出す必要があります。その他の時間に呼び出す場合、動作は保証されません。
AGV.attachTrailer()
attachTrailer( treenode trailer , double gap , int behind , int detachRule ) |
パラメータ
trailer | AGVにけん引されるオブジェクト |
gap | 次のトレーラーまたはAGVからのトレーラーの距離 |
behind | トレーラーの位置を設定します。0または1に設定でき、0は前方、1は後方を示します。 |
detachRule | AGVのデタッチモードを設定します。0または1に設定でき、0は手動、1は自動を示します。 |
説明
特定のオブジェクトをAGV上のトレーラーとしてアタッチします。
トレーラーを手動デタッチモードでアタッチする場合、トレーラーのデタッチにはdetachTrailer()を呼び出す必要があります。
agv.attachTrailer(trailerObj, 0.1, 1, 0);
AGV.coupleTrain()
coupleTrain( treenode trailer ) |
パラメータ
trailer | AGVに結合されるオブジェクトです。トレーラー自体がAGVであるか、AGVのトレーラーである場合、AGV輸送列全体がアタッチされます。 |
説明
このAGVに対してトレーラーの輸送列をアタッチし、ネットワークジオメトリに基づいてギャップなどを自動計算します。
coupleTrain()は、次に示すの主な違いを除けばattachTrailer()と同様です。
- attachTrailer()がAGVに単一のトレーラーをアタッチする一方で、coupleTrain()は他のAGV輸送列の一部であるトレーラーをすべてアタッチします(そのような輸送列があれば)。
- attachTrailer()ではトレーラーを前方と後方のどちらにアタッチすべきかやギャップ距離などのパラメータを定義する必要がありますが、coupleTrain()では反対に、それらのパラメータをAGVパスネットワークのトレーラー/輸送列の位置に基づいて自動で決定します。
トレーラーをAGVの輸送列に結合する際には、2通りのシナリオが想定されます。各シナリオは、次のように輸送列の結合に関する異なるロジックに影響を与えます。
- トレーラーが独立オブジェクトである場合 - トレーラーが他のAGV輸送列と関連付けられていない場合、AGVは単純な空間近接性を分析することでトレーラーを結合すべき場所を判断します。トレーラーの位置を取得して、その位置がAGVの前方と後方のどちらかを判断します。その後、その判断に基づいて空間近接性を再分析することで、トレーラーとAGVに関連付けられた最前列/最後列トレーラー間のギャップを決定します。さらに、トレーラーと関連付けられたAGV輸送列がないため、そのトレーラーをAGVにのみ結合して、他のオブジェクトには結合しません。
- トレーラー自体が他のAGVであるか、他のAGVのトレーラーである場合 - トレーラーが他のAGVの一部である場合、AGVはAGVパスネットワーク上の他のAGVとの自身の相対的な位置を分析することで結合パラメータを判断します。各AGVの終端間でパスネットワーク距離分析を行い、導き出した輸送列の終端間の最短パスを通して輸送列を結合することで、前方/後方属性やギャップなどを判断します。このアルゴリズムでは、輸送列方向のスイッチを必要としない1つ以上のパスを通じて、AGV終端同士はお互いに到達可能であると想定されています。言い換えると、ネットワーク上における輸送列のお互いへの近接性は、たとえば実際の状況でどのように輸送列を結合することを望むかといったように、「近くて直感的」である必要があります。異常なパスジオメトリで結合することは特定できない動作を引き起こします。
このメソッドをuncoupleTrain()と組み合わせて使用すると、操車場における車両の連結と非連結をシミュレートすることができます。
AGV.getTrailer()
AGV.Trailer getTrailer( int isBehind , int rankFromDriver ) |
パラメータ
isBehind | AGVの後方にあるトレーラーにアクセスしたい場合は1を、AGVの前方にあるトレーラーにアクセスしたい場合は0を指定します。 |
rankFromDriver | 1から始まる、AGVドライバからのトレーラーランクです。 |
説明
ahead/behindパラメータに基づく特定のトレーラーを取得し、AGVドライバに対するランクを取得します。
Object trailer = agv.getTrailer(1, 2).object;
AGV.redirect()
redirect( Object newDest , int mode ) |
パラメータ
newDest | AGVが移動する新しい目的地 |
mode | リダイレクト時に行うことを決定します。次の4つの値の1つを指定できます。 REDIRECT_AND_WAIT - 到着前にリダイレクトされていない場合、AGVはリダイレクトされるまで目的地で待機します。 REDIRECT_AS_FINAL - 目的地がAGVの新しい最終目的地になります。 REDIRECT_AND_CONTINUE_ON_ARRIVAL - AGVは中間目的地に到着した後で、最終目的地に移動を続けます。 REDIRECT_AND_CONTINUE_ON_PRE_ARRIVAL - AGVは中間目的地に事前に到着した後で、最終目的地に移動を続けます(減速して停止しません)。 |
説明
指定されたモードに応じて、AGVを新しい目的地にリダイレクトします。
agv.redirect(newDest, REDIRECT_AS_FINAL);
AGV.setDestination()
void setDestination( Object controlPoint , double pathOffset = 0 , Object relativeToTrailer = 0 , Variant agvBodyOffset = 0 ) |
パラメータ
controlPoint | 目的地として設定するコントロールポイント。 |
pathOffset | コントロールポイントから目的地までのパス沿いのオフセット距離。 |
relativeToTrailer | 目的地をトレーラー相対にします。 |
agvBodyOffset | 本体からのオフセット量、つまり、AGV.BodyOffsetの列挙値のいずれかを指定します。これは、2つの要素から成る配列の可能性もあります。最初の要素はAGV.BodyOffset列挙値のいずれかであり、第2の要素は追加のオフセット量です。 |
説明
目的地コントロールポイントを設定します。
agv.setDestination(Model.find("ControlPoint5"), 0, 0, AGV.BodyOffset.TrailerHeadEdge);
AGV.uncoupleTrain()
uncoupleTrain( treenode trailer , treenode newDriver = 0 ) |
パラメータ
trailer | 輸送列から結合を解除されるトレーラーです。 |
newDriver | 新しい「ドライバ」AGVになるオブジェクトです。このオブジェクトにAGVインスタンスがまだ関連付けられていない場合、AGVが作成されます。newDriverがパラメータとして渡されていないか、0である場合、最初のトレーラーパラメータが新しいドライバになります。 新しいドライバがTaskExecuterでない場合、そのドライバはパスネットワーク上のAGV輸送列の場所を保存するAGVデータだけを格納します。TaskExecuterとは異なり、オブジェクト移動タスクを付与することはできません。 |
説明
このAGVからトレーラーの輸送列をデタッチし、独立したAGV輸送列を作成します。
AGV(current).uncoupleTrain(AGV(current).trailers[1].object);
このメソッドをcoupleTrain()と組み合わせて使用すると、操車場における車両の連結と非連結をシミュレートすることができます。
AGV コンストラクター
AGV( treenode te , int assert = 0 ) |
パラメータ
te | AGVネットワークにAGVトラベラーとして接続されるTaskExecuterです。 |
assert | 1の場合、まだAGVネットワークに接続されていないタスク実行者は接続され、関連するAGVオブジェクトが作成されます。 |
戻り値
AGV | AGVオブジェクト |
説明
指定したTaskExecuterに基づいて、AGVオブジェクトを構築します。
AGVオブジェクトは、このメソッドの呼び出しでのみアクセスできます。タスク実行者から直接キャストするのは正しくありません。AGV agv = AGV(te); // correct
AGV agv = te; // incorrect