Add animated plot for satellite positions

This commit is contained in:
Tim Schubert 2020-08-17 11:52:53 +02:00
parent d145337d6c
commit f8804533cc
3 changed files with 67 additions and 1 deletions

View file

@ -0,0 +1,41 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
#include "ns3/core-module.h"
#include "ns3/mobility-module.h"
#include "ns3/leo-module.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("LeoCircularOrbitTracingExample");
void CourseChange (std::string context, Ptr<const MobilityModel> position)
{
Vector pos = position->GetPosition ();
Ptr<const Node> node = position->GetObject<Node> ();
std::cout << Simulator::Now () << "," << node->GetId () << "," << pos.x << "," << pos.y << "," << pos.z << "," << position->GetVelocity ().GetLength() << std::endl;
}
int main(int argc, char *argv[])
{
NodeContainer c;
c.Create (600);
MobilityHelper mobility;
mobility.SetPositionAllocator ("ns3::LeoCircularOrbitPostionAllocator",
"NumOrbits", IntegerValue (6),
"NumSatellites", IntegerValue (100));
mobility.SetMobilityModel ("ns3::LeoCircularOrbitMobilityModel",
"Altitude", DoubleValue (1200.0),
"Inclination", DoubleValue (80.0),
"Precision", TimeValue (Minutes (1)));
mobility.Install (c);
Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
MakeCallback (&CourseChange));
std::cout << "Time,Satellite,x,y,z,Speed" << std::endl;
Simulator::Stop (Minutes (60.0));
Simulator::Run ();
Simulator::Destroy ();
}

View file

@ -1,4 +1,10 @@
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
def build(bld): def build(bld):
pass if not bld.env['ENABLE_EXAMPLES']:
return;
obj = bld.create_ns3_program('leo-circular-orbit-trace',
['core', 'leo', 'mobility'])
obj.source = 'leo-circular-orbit-tracing-example.cc'

View file

@ -0,0 +1,19 @@
set datafile separator comma
set key autotitle columnheader
set terminal gif animate
set output 'output.gif'
unset xtics
unset ytics
unset ztics
unset border
set hidden3d
unset key
set view equal xyz
n=600
do for [j=0:100] {
set title 'time '.j
splot 'somefile' using 3:4:5:2 every ::(j*n)::((j+1)*n)
}