Пояснительная записка(21.06) новая (1214932), страница 8
Текст из файла (страница 8)
$node_(87) set Y_ 988.36
$node_(87) set Z_ 0
$ns_ at 0.0 "$node_(87) setdest 1761.5 988.36 0.00"
$node_(88) set X_ 2298.08
$node_(88) set Y_ 950.67
$node_(88) set Z_ 0
$ns_ at 0.0 "$node_(88) setdest 2298.08 950.67 0.00"
$node_(89) set X_ 2111.03
$node_(89) set Y_ 575.51
$node_(89) set Z_ 0
$ns_ at 0.0 "$node_(89) setdest 2111.03 575.51 0.00"
$node_(90) set X_ 1626.37
$node_(90) set Y_ 1135.45
$node_(90) set Z_ 0
$ns_ at 0.0 "$node_(90) setdest 1626.37 1135.45 0.00"
$ns_ at 1.0 "$node_(0) setdest 76.69 -0.52 1.83"
$ns_ at 1.0 "$node_(1) setdest 2015.64 1400.35 1.38"
$ns_ at 1.0 "$node_(2) setdest 568.49 614.95 1.35"
$ns_ at 1.0 "$node_(3) setdest 2179.34 799.92 1.93"
$ns_ at 1.0 "$node_(4) setdest 1697.52 933.14 2.36"
$ns_ at 1.0 "$node_(5) setdest 1995.48 1355.44 1.86"
$ns_ at 1.0 "$node_(6) setdest 1777.59 1381.27 1.84"
Из представленной структуры следует, для инициализации узла используется код по типу:
$node_(L) set X_ XXX
$node_(L) set Y_ YYY
$node_(L) set Z_ ZZZ
$ns_ at T "$node_(L) setdest XXX YYY SSS",
где L – уникальный идентификатор узла, T – время в секундах определяющее момент размещения узла в нужной позиции с точностью до десятых секунд, XXX, YYY – координаты в которые будет помещён узел по осям X, Y соответственно, ZZZ – отображает положение по оси Z и обычно принимается равным нулю при симуляциях, а SSS в общем случае – скорость с которой узел двигается в указанные координаты, с учётом того что узел в данном случае инициализируется, скорость установлена на 0.
Для задания движения узла используется следующая команда:
$ns_ at T "$node_(L) setdest XXX YYY SSS",
в которой все обозначения совпадают с аналогичными для команды инициализации узла.
Важно отметить, что для корректности работы симулятора с созданным файлом движения узлов, необходимо, чтобы команды внутри файла имели структуру с постепенно возрастающим временем T, либо не изменяющимся. Так, например, если после команды с временем 40,1 с. написать команду время в которой задано меньше 40,1, то симулятор не сможет корректно интерпретировать эти команды и узлы будут двигаться не так как задано в файле движения.
Таким образом, такой файл можно сделать самостоятельно, однако для упрощения процесса рекомендуется написать небольшое приложение которое будет генерировать файл движения для этого сценария, помимо упрощения генерации одного сценария линии, это также позволит обеспечить легкость изменения конфигурации сценария, ведь согласно поставленной задаче необходимо провести симуляцию для четырёх сценариев магистрали, в которых будет установлена разная скорость движения узлов. Для начала следует составить схему создаваемой магистрали, эта схема представлена на рисунке 17.
Рисунок 17 – Схема магистрали и расположения на ней узлов
Далее выполнить задание базовых переменных. Это точки для начала магистрали по осям X и Y. После этого необходимо вычислить шаг по оси X как отношение длины участка к количеству узлов. Шаг по оси Y, отвечает за ширину магистрали, а также за расстояние между машинами, и, в данном случае, принимается равным 20 м.
Далее в цикле производится инициализация узлов, согласно схеме. После инициализации необходимо определить момент поворота, он вычисляется по следующей формуле:
где
– время поворота,
– длина магистрали,
– скорость узла,
– порядковый номер узла,
– шаг по оси X.
Также необходимо определить длительность поворота по формуле:
После завершения поворота машины возвращаются в исходную позицию, но уже на другой полосе, время начала для возврата определяется как
.
Стоит учесть, что момент поворота для каждого узла индивидуален, в связи с этим осуществлять вывод непосредственно в цикле невозможно. Для вывода данных о поворотах, необходимо после выполнения основного цикла задать ещё один в котором будут последовательно перебираться все элементы, и после будет выводиться элемент с наименьшей меткой времени, иначе как говорилось ранее симулятор не сможет считать данные файла движения.
Теперь можно перейти непосредственно к написанию кода. Созданный код представлен в приложении А, а интерфейс приложения можно наблюдать на рисунке 18.
Рисунок 18 – Интерфейс приложения для создания файла движения магистрали
Теперь достаточно указать в интерфейсе приложения требуемые значения скорости и сгенерировать файлы движения для симулятора. Стоит отметить что сгенерировать таким образом файл для стационарных узлов не получится, однако учитывая, что узлы не движутся и потому время поворота для них рассчитывать не нужно, достаточно сгенерировать файл с любой скоростью и осуществить удаление участков отвечающих за движение узлов. Таким образом сгенерировано 4 файла движения для каждой скорости, предполагаемой к использованию в симуляции.
2.2.3.2 Подготовка карты города
Процесс создания карты города значительно сложнее процесса создания магистрали. Получение файла движения для NS3, который бы отображал движение некоторого трафика в городе потребует выполнения следующих этапов:
– обзор симуляторов дорожного трафика, с выбором одного из них для дальнейшей работы;
– получение данных об участке карты выбранном для симуляции;
– выполнение конвертации выбранного участка в формат симулятора трафика;
– изменение параметров карты на необходимые;
– генерация трафика;
– получение файла мобильности.
2.2.3.2.1 Обзор симуляторов дорожного трафика
Существует большое количество симуляторов, позволяющих генерировать трафик на дорогах. Однако на данный момент на официальном сайте документации NS3 [ CITATION Док \l 1049 ], приведён список из трёх симуляторов трафика, поддерживающих формат файла мобильности NS3:
– BonnMotion;
– SUMO;
– TraNS.
BonnMotion – это программное обеспечение, написанное на Java, приспособленное для создания и анализа сценариев движения и часто используется в качестве инструмента для исследования характеристик сетей VANET. Созданные сценарии движения можно экспортировать в несколько сетевых симуляторов, таких как ns-2, ns-3, GloMoSim/QualNet и некоторых других. BonnMotion разработан совместно группой коммуникационных систем Боннского университета в Германии, группой Toilers Горного университета Колорадо в США и группой распределённых систем Оснабрюкского университета в Германии. Данным симулятором движения поддерживаются несколько моделей движения, а именно:
– модель случайного перемещения между точками;
– модель случайной перемещения;
– модель Гаусса-Маркова;
– модель Манхэттенской сетки;
– модель района бедствия;
– модель случайно сгенерированных улиц;
– и другие.
TraNS (Traffic and Network Simulation Environment) – это инструмент с графическим интерфейсом, который объединяет симулятор сети NS2 с симулятором трафика SUMO (Simulation of Urban MObility) для создания реалистичных симуляций VANET.
Существует также TraNSLite – урезанная версия TraNS, подходящая для быстрого создания файлов движения для NS2/NS3 на основе SUMO.
SUMO – это портативный пакет для детального моделирования дорожного движения с открытым исходным кодом, в котором может использоваться очень большое количество машин, которые впоследствии составят сеть VANET. Его можно использовать в большинстве существующих на данный момент операционных систем, например, Windows, Linux и так далее. Благодаря портативности и бесплатной лицензии GNU General public license SUMO стал очень популярным и наиболее широко используемым симулятором движения для автомобильных сетей. Сейчас он развился в полнофункциональный набор средств моделирования дорожного трафика, использующий собственные форматы данных для описания дорог и утилиты для задания движения машин. Основными достоинствами SUMO является то, что он работает на основе OpenGL, имеет свободную лицензию, открытый исходный код, обеспечивает легкость в настройке симуляции, имеет много портативных библиотек, поддерживает различные форматы импорта, может обеспечивать движение без столкновений машин между собой и большое количество примеров карт, вместе с хорошей документацией.
Таким образом далее для генерации файла движения NS3 будет использоваться симулятор движения SUMO, так как он не требует установки за счёт портативности, обладает хорошей документацией, объясняющей разные аспекты его использования, а также имеет широкий набор утилит и прост в использовании.
2.2.3.2.2 Работа с симулятором движения
Для начала следует загрузить SUMO. Учитывая, что работа проводится в ОС Linux, установку также следует осуществлять версии для этой системы. При первоначальной проверке выяснилось, что SUMO имеется по умолчанию в каталоге приложений Linux, что показано на рисунке 19. Поэтому для установки достаточно нажать кнопку загрузки.
Рисунок 19 – SUMO в каталоге приложений Linux
SUMO, может воссоздать цифровую карту некоторой области, используя данные о ней полученные с сервиса OpenStreetMap.org. Этот сервис предоставляет возможность просмотра карт различных мест по всему миру, его основным отличием от аналогов, является то что любой пользователь может свободно редактировать данные в картах, изменяя типы улиц, исправляя логические ошибки при составлении карты, которые могли быть допущены ранее и многое другое.
В качестве города для подготовки карты выбран участок города Ноттингем размеров 2000x1200 м, приведённый на рисунке 20. Для получения данных в цифровом виде о выделенном участке с сайта «OpenStreetMap.org», достаточно нажать кнопку «Экспорт» и участок в данный момент присутствующий на экране будет экспортирован в формате «.osm».
Рисунок 20 – Участок города Ноттингем выбранный для проведения симуляции
После получения данных о карте можно осуществить их конвертацию в формат используемый для работы в SUMO. Для этого достаточно воспользоваться командой:
netconvert --osm-files map.osm --output-file map.net.xml
После выполнения команды будет сгенерирован файл карты в формате .xml. При этом будут использованы настройки SUMO по умолчанию, что подразумевает возможное несоответствие требуемым параметрам для симуляции. Приведённая выше команда использует файл несущий информацию о типах дорог с различными параметрами для них, такими как скорость, количество полос, приоритет наличие одностороннего движения, а также определение трафика, которому запрещено использовать дорогу. Учитывая, что для симуляции требуется различные значения скоростей, необходимо сделать копию этого файла и поместить в каталог с конвертируемой картой для возможности задания своих настроек, а также для сохранения оригинальных настроек симулятора движения. Для этого следует сначала изучить структуру файла со стандартными настройками. Файл с настройками по умолчанию находится по адресу «SUMO_HOME/data/typemap/osmNetconvert.typ.xml», где SUMO_HOME – это путь к каталогу SUMO. Структура файла настроек для дорог представлена ниже:
<types xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/types_file.xsd">
<type id="highway.motorway" numLanes="2" speed="44.44" priority="13" oneway="true" disallow="pedestrian bicycle moped rail rail_urban rail_electric tram ship"/>
<type id="highway.motorway_link" numLanes="1" speed="22.22" priority="12" oneway="true" disallow="pedestrian bicycle moped rail rail_urban rail_electric tram ship"/>
<type id="highway.trunk" numLanes="2" speed="27.78" priority="11" oneway="false" disallow="pedestrian bicycle rail rail_urban rail_electric tram ship"/>















