LoginSignup
0
0

More than 3 years have passed since last update.

ns3でns3RandomWalk2dMobilityModelのエラーを解決

Last updated at Posted at 2019-05-13

ns3とは

ns3とはネットワークの実験を手軽にするためのものである。

エラーについて

無線通信の実験をする際に起こったエラーである。
しっかりとリファレンス読めばこんな簡単な問題にはぶつからなかったのかもしれないが...英語が苦手のため読み間違えたみたい...
みなさんは気をつけてください。

プログラム一部抜粋
  uint32_t size;
  size = 100
  nodes.Create (size);
  MobilityHelper mobility;
  mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
                                 "MinX", DoubleValue (0.0),
                                 "MinY", DoubleValue (0.0),
                                 "DeltaX", DoubleValue (50),
                                 "DeltaY", DoubleValue (50),
                                 "GridWidth", UintegerValue (10),
                                 "LayoutType", StringValue ("RowFirst"));
  mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
                             "Bounds", RectangleValue (Rectangle (0, 50, 0, 50)));
  mobility.Install (nodes);
エラー内容
assert failed. cond="m_bounds.IsInside (position)", file=../src/mobility/model/random-walk-2d-mobility-model.cc, line=168
terminate called without an active exception

上記のプログラムを簡単に説明すると
SetPositonAllocatorによる格子状10×10に50m間隔に均等に並べる処理を行っている。
SetMoblityModelによる移動方法を記載しそれに応じた処理を行う。
問題なのがSetMoblityModelで使ったns3::RandomWalk2dMobilityModelである
このエラーが起きた原因は、ノードの初期配置の範囲と移動の範囲のズレによるものである。
初期値の設定では、

パラメータ
ノード数 100
一列のノードの数 10
ノードの間隔(x軸) 50
ノードの間隔(y軸) 50

上記のパラメータでは
x軸の最大=ノードの間隔(x軸)*一列のノードの数=50*10=500
y軸の最大=ノードの間隔(y軸)*一列のノードの数=50*10=500
最大値をこの値以上にすればエラーは出ないはず

修正

修正案
mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
                             "Bounds", RectangleValue (Rectangle (0, 50, 0, 50)));
/*
mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
                             "Bounds", RectangleValue (Rectangle (x軸最小値,x軸最大値,y軸最小値,y軸最大値)));
修正↓
*/
mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
                             "Bounds", RectangleValue (Rectangle (0, 500, 0, 500)));

変更すると動くと思うのでやってみてください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0