RESEARCH IN OMNeT++

RESEARCH IN OMNeT++, In this research section we are going to discuss about the profiling aquatic approach in robotic sensor network.

Robotic sensor network:

The robotic sensors collaboratively profile the characteristics of a diffusion process including source location, discharged substance amount, and its evolution over time

Features of robotic sensor network:

  • Make a independent decision.
  • It searches for the target until the robot finds the target.
  • Avoid computational costs associated with sophisticated decision making.
  • Each of which has a hierarchy of behaviors.
  • Target signal is present but some sensors is in range which means it’ll traverse the network towards a target some hops away.
  • Once target is found and surroundings explored, sensors close enough to receive the target signal should be marked by the network.

 

Architecture-of-Robotic-Sensor-Network
Architecture-of-Robotic-Sensor-Network

Research areas on robotic sensor network:

  • System robustness.
  • Power management.
  • System security.
  • Decision making.
  • Communication.
  • Message routing.
  • Role assignment.

 

Sample code for robotic sensor network:

 

[code lang=”js”]
simsignal_t WirelessMacBase::packetSentToLowerSignal = registerSignal("packetSentToLower");
simsignal_t WirelessMacBase::packetReceivedFromLowerSignal = registerSignal("packetReceivedFromLower");
simsignal_t WirelessMacBase::packetSentToUpperSignal = registerSignal("packetSentToUpper");
simsignal_t WirelessMacBase::packetReceivedFromUpperSignal = registerSignal("packetReceivedFromUpper");

void RoboSense::initialize(int stage)
{
MACBase::initialize(stage);

if (stage==0)
{
upperLayerIn = findGate("upperLayerIn");
upperLayerOut = findGate("upperLayerOut");
lowerLayerIn = findGate("lowerLayerIn");
lowerLayerOut = findGate("lowerLayerOut");
}
}

void RoboSense::handleMessage(cMessage *msg)
{
if (!isOperational)
{
handleMessageWhenDown(msg);
return;
}

if (msg->isSelfMessage())
handleSelfMsg(msg);
else if (msg->getArrivalGateId()==upperLayerIn)
{
if (!msg->isPacket())
handleCommand(msg);
else
{
emit(packetReceivedFromUpperSignal, msg);
handleUpperMsg(PK(msg));
}
}
else if (msg->getArrivalGateId()==lowerLayerIn)
{
emit(packetReceivedFromLowerSignal, msg);
handleLowerMsg(PK(msg));
}
else
throw cRuntimeError("Message ‘%s’ received on unexpected gate ‘%s’", msg->getName(), msg->getArrivalGate()->getFullName());}
[/code]