【网络仿真】ns-3安装可视化工具PyViz&NetAnim_pyviz qt-程序员宅基地

技术标签: 自动驾驶  python  c++  

1 PyViz

官方文档

1.1 引言

NS-3 PyViz is a live simulation visualizer, meaning that it uses no trace files. It can be most useful for debugging purposes, i.e. to figure out if mobility models are what you expect, where packets are being dropped, etc. There’s also a builtin interactive python console that can be used to debug the state of the running objects. Although it is mostly written in Python, it works both with Python and pure C++ simulations.

NS-3 PyViz是在线模拟仿真可视化工具,使用python编写,在python和c++环境中都可以使用。
使用Pyviz工具可以更加直观的看出节点间通信的效果。

1.2 安装

在ns-3的3.10版本之后,ns-3中包括了PyViz。(因此不需要单独下载,只需要配置一下就可以了)

sudo ./waf configure --build-profile=debug --enable-example --enable-tests --with-pybindgen=/home/jnbai/tarballs/ns-allinone-3.29/pybindgen-0.17.0.post58+ngcf00cc0 --enable-sudo

若有错误提示:PyViz visualizer : not enabled (Missing python modules: pygraphviz),执行以下:

#3.29:
sudo pip3 install pygraphviz
sudo ./waf configure --build-profile=debug --enable-example --enable-tests --with-pybindgen=/home/jnbai/tarballs/ns-allinone-3.29/pybindgen-0.17.0.post58+ngcf00cc0 --enable-sudo

#3.30:
sudo apt-get install python-pydot python-pydot-ng graphviz graphviz-dev
sudo pip3 install pygraphviz

若有错误提示:No visualization support (No module named _gi_cairo).
No visualization support (No module named _gi_cairo).
Traceback (most recent call last):
File “”, line 2, in
File “/home/w/tarballs/ns-allinone-3.29/ns-3.29/src/visualizer/visualizer/core.py”, line 1847, in start
import sys
RuntimeError: maximum recursion depth exceeded while calling a Python object
安装gi.cairo即可解决:

sudo apt-get install gi.cairo

成功!
测试一下:

#在ns-3.XX目录下:
cp examples/tutorial/first.cc scratch
./waf --run first --vis

在这里插入图片描述

2 NetAnim

官方文档

NetAnim is an offline animator based on the Qt toolkit. It currently animates the simulation using an XML trace file collected during simulation. The first version was developed by George F Riley.

参考安装教程

先安装三个插件:


sudo apt-get install qt4-qmake # 安装工具
sudo apt-get purge libqt4-opengl-dev # 绘图工具(用这个命令可能出错sudo apt-get install libqt4-dev)
sudo apt-get install libxml2-dev # netanim读取程序生成的xml文件,离线展示动画

安装:

cd ns-allinone-3.xx
cd netanim-3.xxx
make clean
qmake NetAnim.pro
make

启动:

./NetAnim

出现界面:
在这里插入图片描述
运行:

cp examples/tutorial/first.cc scratch
chmod 777 scratch/first.cc
vim scratch/first.cc

修改scratch/first.cc文件:

//加头文件
#include "ns3/netanim-module.h"
//在Simulator::Run();前面加这三句
//生成文件名为first.xml的xml格式的追踪文件
AnimationInterface anim("first.xml");
//AnimationInterface需要设置所有节点的位置,通过SetConstantPosition(Ptr<Node> n,double x, double y);在移动模型中设置节点静态位置的x、y坐标
anim.SetConstantPosition(nodes.Get(0), 1.0, 2.0);//描述节点0的坐标
anim.SetConstantPosition(nodes.Get(1), 2.0, 3.0);//描述节点1的坐标

其他可选语句:

//设置记录节点位置的周期,默认为250ms
anim.SetMobilityPollInterval(Seconds(1))//设置动画记录内容在仿真过程中的开始和结束时间
anim.SetStartTime(Seconds(150));
anim.SetStopTime(Seconds(150));

//使用构造函数,使每个动画XML文件仅可包含50000个数据分组,如果动画接口捕获了150000个分组,使用以下构造函数将捕获的记录分成3个XML文件
AnimationInterface anim("first.xml",50000);

//设置XML文件记录包括元数据,用来提供更好的统计和过滤,如TCP序号、源节点和目的节点的IP地址等。启用该特性会导致XML记录文件增大,建议WIMAX仿真不要用
anim.EnablePacketMetadate(true);

保存退出。

# (普通用户)在ns-3.xx文件下,编译程序
sudo ./waf --run scratch/first
# 在netanim文件夹下重新启动
# 注:在超级用户sudo下可能用以下语句不显示界面,因此在普通用户下执行
./NetAnim

在netanim界面中点击open->first.xml->play

成功!
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bajiaoyu517/article/details/116352675

智能推荐

RPC论文翻译(Implementing Remote Procedure Calls)_rpc英文文献-程序员宅基地

文章浏览阅读1.7k次。总述:Remote procedure calls (RPC) appear to be a useful paradig m for providing communication across anetwork between programs written in a high-level language. This paper describes a package providinga remote procedure call facility, the options that f_rpc英文文献

GPS轨迹飘点处理(原创)_gps抖动处理算法-程序员宅基地

文章浏览阅读1.8w次,点赞10次,收藏98次。当我们处理gps设备传过来的数据时,最让人头疼的事情莫过于设备定位异常所传输的异常点了,我们习惯的叫它为飘点。这些数据是设备层面的异常,目前没有什么有效的方法来减少设备发送的飘点。但是我们可以通过程序来过滤掉这些点。原理获取时间范围内(默认一天)设备的连续gps信息。 遍历这些信息,计算两个相邻点的距离,这个距离要根据实际情况确定 若距离大于可容忍距离。则证明该两个相邻点其中有..._gps抖动处理算法

docker 安装redis,以配置文件方式后台启动_docker 后台模式启动redis-程序员宅基地

文章浏览阅读992次。1.获取redis镜像docker pull redis 查看镜像docker images创建配置文件目录存放redis.conf,文件从官网下载。创建文件夹,新建配置文件贴入从官网下载的配置文件并修改mkdir /usr/local/redismkdir /usr/local/redis/data将下载下来的redis.conf复制到/usr/local/redis目录下vim /usr/local/redis/redis.conf修改启动默认配置(从上至下依次):b_docker 后台模式启动redis

C++使用CreateProcess执行cmd命令(实例演示)_c++ createprocess执行命令行语句-程序员宅基地

文章浏览阅读6.6k次。使用CreateProcess可以执行cmd命令,也可以执行一些可执行程序。//摘自msdn的示例代码#include #include #include void _tmain( int argc, TCHAR *argv[] ){ STARTUPINFO si; PROCESS_INFORMATION pi;_c++ createprocess执行命令行语句

解决 remote Support for password authentication was removed on August 13, 2021._remote: support for password authentication was re-程序员宅基地

文章浏览阅读2.2w次,点赞61次,收藏171次。解决 remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead._remote: support for password authentication was removed on august 13, 2021.

HDS拥抱HCI——注意,这指的可不是超融合基础设施-程序员宅基地

文章浏览阅读112次。HDS公司已经公布了日立内容智能方案(Hitachi Content Intelligence,简称HCI),这款软件专门负责立足于多种结构化与非结构化数据孤岛进行搜索与内容读取,随后对其加以分析。HDS公司指出,其可利用内容智能化方案解决输入数据井喷的问题HCI能够从各孤岛当中提取数据并将其引入工作流,从而通过多种方式加以处理。HCI的用户亦需..._hds hci

随便推点

[flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法-程序员宅基地

文章浏览阅读661次。一周时间快速阅读了400页的《javascript基础教程》,理解了主要概念。解决了一个很久之前的疑问。我的网站是使用flask框架搭建的,介绍flask web的一本著名的书(之前提到过)作者搭建个人博客时,向读者推荐了flask-bootstrap,flask_moment这两个库,前者能快速的解决前端样式问题,后者提供了时间戳功能。但在某种情况下,比如网络延迟或者运营商的问题,访问网..._bootstrap 速度慢 maxcdn

前端 音频/视频(Audio/Video)开始加载以及播放的过程_video.addeventlistener-程序员宅基地

文章浏览阅读1.7k次。前端 音频/视频(Audio/Video)开始加载以及播放的过程_video.addeventlistener

光盘显示0字节可用_教你怎么用光盘重装系统-程序员宅基地

文章浏览阅读2.2k次。怎么用光盘重装系统?很多小伙伴只会系统光盘安装系统的方法,除了系统光盘重装系统,还有硬盘安装、一键重装、U盘重装、Ghost重装系统等等方法,下面除了教你怎么用光盘重装系统之外,还给你介绍下一键重装系统的操作步骤。光盘重装系统图文首先安装前准备:保证电脑带有光驱功能,并且光驱处于正常状态以及系统光盘能够正常读取。1、首先系统光盘放入电脑光驱位置,等待电脑读取光盘成功后,就继续怎么用光盘重装系统了。..._光盘放入光驱显示可用字节为0

java 导出excel接口,Angularjs,post请求后台poi导出excel的接口,excel中显示[Object object]...-程序员宅基地

文章浏览阅读1.5k次。Angularjs1.6对接后台导出Excel的接口,代码:$http({url: 'http://localhost:8083/console/devices/poi',method: "POST",data: {"email": "官方邮箱"},headers: {'Content-type': 'application/json'},responseType: 'arraybuffer'})..._excelwriter [object object]

python测试3_Python小测试_3-程序员宅基地

文章浏览阅读6k次。第二周A......1.用simpleguitk创建的应用程序框架是由哪三部分组成的?标题·控制区域鼠标边框·画布键盘·状态区域背景区域选择区域2.假设在程序中已经导入simpleguitk,下列哪项对create_frame()函数的调用是正确的?(如果不肯定你的答案,先在PyCharm中测试,然后再作答)·frame=simpleguitk.create_frame(100,100,1..._导入simpleguitk图形界面开发包的语句是?_____(小写)

java数据签名几种_java接口签名(Signature)实现方案续-程序员宅基地

文章浏览阅读1.4k次。v一、前言由于之前写过的一片文章 (java接口签名(Signature)实现方案)收获了很多好评,此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数据进行签名。v二、签名规则1、线下分配appid和appsecret,针对不同的调用方分配不同的ap..._signature签名的方式

推荐文章

热门文章

相关标签