Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/17:14/17
2024/05/16:22/24

2024/03/18より397/1407
人気モジュール
No.1: フォーラム 100
No.2: QualNet概要 3
No.3: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット80
No.2:Unknown OS1
No.3:Windows XP1

No.1:どっかの巡回ロボット71
No.2:Majestic-12巡回ロボット6
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   Mobility Models Implementation & Development
     node->mobilityDataの更新について
投稿するにはまず登録を

題名 投稿者 日時
   node->mobilityDataの更新について koichi 2008/9/22 18:47
     Re: node->mobilityDataの更新について hiro 2008/9/22 19:24
       Re: node->mobilityDataの更新について koichi 2008/9/25 15:21
     Re: node->mobilityDataの更新について ipoten 2008/9/26 16:51
       Re: node->mobilityDataの更新について koichi 2008/10/6 20:16
         Re: node->mobilityDataの更新について ipoten 2008/10/7 1:12
           Re: node->mobilityDataの更新について koichi 2008/10/7 15:49
             Re: node->mobilityDataの更新について koichi 2008/10/9 9:42
               Re: node->mobilityDataの更新について penguish 2008/10/9 9:55
                 Re: node->mobilityDataの更新について koichi 2008/10/9 10:07
           » Re: node->mobilityDataの更新について ipoten 2008/10/9 18:06
               Re: node->mobilityDataの更新について koichi 2008/10/9 19:48
                 Re: node->mobilityDataの更新について ipoten 2008/10/10 18:17
                   Re: node->mobilityDataの更新について koichi 2008/10/16 15:38
                     Re: node->mobilityDataの更新について mast 2008/10/16 16:12
                       Re: node->mobilityDataの更新について koichi 2008/10/27 15:27
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ipoten
投稿日時: 2008/10/9 18:06
一人前
登録日: 2005/7/12
居住地:
投稿: 102
Re: node->mobilityDataの更新について
こんにちは

引用:
一度、周期的に移動先を決定するように
書き換えて試してみます。
ちなみに、一定周期にする必要があると判断したのはどういう理由からでしょうか?

たとえばモビリティなしの状態から開始し、隣接ノードから情報を受け取ったときにだけ直後のモビリティイベントを追加するという方法は取れませんか?

試しにちょっとやってみました。
node1とnode2をキャンバス上に配置して、
node1 -> node2 にCBRアプリケーションで1秒間隔で定期パケットを送信します。
node2はパケットを受け取るごとに、X方向へ1メートル、
Y方向へ受信シーケンス番号分移動するように、
CBR Serverに下記のようなコードを追加してみました。
これでnode2は、CBRパケットを受信するごとに上に開いた放物線を描いて移動します。
(この場合は、滑らかな移動ではなく、1秒おきに次の座標にジャンプするようなイメージです。
もちろん方向やスピードを制御すればいろいろな動きをさせることができます。)

app_cbr.cpp / 関数 AppLayerCbrServer()
eventTypeのswitch文の case MSG_APP_FromTransport の最後のほうに、
例のEXTERNAL APIのコードを参考にして、以下のようなコードを書きました。
// !!! Dynamic Mobility TEST !!!
{
    // Schedule the mobility event for current simulation time + 1 nanosecond.
    // (This is the minimum time permitted by MOBILITY_InsertANewEvent().)
    clocktype mobilityEventTime = TIME_getSimTime(node) + 1;
    Coordinates coordinates;
    Orientation orientation;
    double speed = 0.0;
    MOBILITY_ReturnCoordinates(node, &coordinates);
    MOBILITY_ReturnOrientation(node, &orientation);
    coordinates.common.c1 += 1.0;                       // X方向に1m移動
    coordinates.common.c2 += (double)serverPtr->seqNo;  // Y方向に受信シーケンスナンバーm移動
    struct common_coordinates origin = node->partitionData->terrainData.origin.common;
    struct common_coordinates dimensions = node->partitionData->terrainData.dimensions.common;

    // 移動先がキャンバス範囲内であれば
    if (coordinates.common.c1 > origin.c1 && coordinates.common.c1 < origin.c1 + dimensions.c1 && 
        coordinates.common.c2 > origin.c2 && coordinates.common.c2 < origin.c2 + dimensions.c2) {
        assert(node->mobilityData->next->time == CLOCKTYPE_MAX);
        // 新しい位置へ移動
        MOBILITY_InsertANewEvent(
            node,
            mobilityEventTime,
            coordinates,
            orientation,
            speed);
    }
}

ここで大事なのは、
* 自ノードの最後のモビリティイベントが完了していること
* 登録するイベントが未来の時刻(少なくとも現在時刻+1 nanosec)であること
です。

参考になれば幸いです。
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT