ADD: rework the Trackmessages and added/changed protos for the messages;

This commit is contained in:
Henry Winkel
2023-02-16 17:18:17 +01:00
parent 982b701032
commit fa03be0435
44 changed files with 6088 additions and 725 deletions

View File

@@ -0,0 +1,69 @@
#include "SimCore/Identifier.hpp"
#include "WHISPER/Messages/Message.hpp"
#include <SimCore/SimCore.hpp>
#include <memory>
#include <string>
#include <thread>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <SimCore/Templates/Entity.hpp>
// SimCore::Identifier OwnID, SimCore::Identifier ParentID, SimCore::SensorKinds SensorKind,std::uint32_t GroundTruthPort, std::uint32_t ParentPort,std::string ParentIPAddress
class Ship : public SimCore::Entity
{
public:
Ship(SimCore::Identifier OwnID,
std::string EntityName,
WHISPER::SourceType ownType,
SimCore::Identifier ParentID,
SimCore::EntityKind EntityKind,
std::uint32_t GroundTruthPort,
std::uint32_t CommandPort,
std::string CommandIPAddress):
Entity( OwnID,EntityName,ownType, ParentID, EntityKind, GroundTruthPort, CommandPort, CommandIPAddress)
{
}
private:
void specificPhysicsCalculations(std::chrono::milliseconds::rep duration) override
{
LOG_S(INFO)<<"calculating every " << duration << "milliseconds";
};
void specificReloadCharacteristicts() override
{
LOG_S(INFO)<<"loading specifications";
};
};
SCENARIO("Testing the SimCore Sensor")
{
GIVEN("different Attributes for a Track in different forms")
{
SimCore::Identifier IDParent(0,1,false);
SimCore::Identifier ID1(0,2,false);
Ship Ship(ID1,"FGS Hamburg",WHISPER::SourceType::SHIP,IDParent,SimCore::EntityKind::SURFACE,8000,8001,"127.0.0.1");
Ship.start();
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
Ship.stop();
WHEN("constructing Track Object with data")
{
THEN("check if Track attributes are correct")
{
// REQUIRE(testOperator == true);
} //THEN
} // WHEN
} // GIVEN
} //SCENARIO

View File

@@ -1,7 +1,9 @@
#include "SimCore/Identifier.hpp"
#include "SimCore/IdentifierMaker.hpp"
#include <SimCore/Messages/Track.hpp>
#include <SimCore/Messages/GroundThruthTrack.hpp>
#include <WHISPER/Messages/Message.hpp>
#include <SimCore/SimCore.hpp>
#include <algorithm>
#include <memory>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
@@ -29,7 +31,8 @@ SCENARIO("Testing the SimCore Track")
std::shared_ptr<WHISPER::Message> msg = NULL;
std::shared_ptr<SimCore::Track> trackPtr = NULL;
std::shared_ptr<SimCore::GroundTruthTrack> trackPtr = NULL;
SimCore::Identifier parentID(0,1,false);
SimCore::IdentifierMaker IDMaker;
auto ID = IDMaker.getNewIdentifier(1,SimCore::ObjectSource::EXTERNAL);
@@ -39,24 +42,25 @@ SCENARIO("Testing the SimCore Track")
WHEN("constructing Track Object with data")
{
SimCore::Position pos( GeocentPos1(SimCore::GeocentricPosition::X), GeocentPos1(SimCore::GeocentricPosition::Y), GeocentPos1(SimCore::GeocentricPosition::Z));
SimCore::Track track(WHISPER::SourceType::SHIP,*ID.get());
SimCore::GroundTruthTrack track(WHISPER::SourceType::SHIP,*ID.get(),SimCore::TrackKind::GROUND_TRUTH_TRACK);
track.setCourse(course);
track.setSpeed(speed);
track.setPosition(GeocentPos1(SimCore::X),GeocentPos1(SimCore::Y),GeocentPos1(SimCore::Z));
if (track.getPostion() == pos) {
testOperator = true;
testOperator = true;
}
serializedMSG = track.serialize();
serializedMSG = track.buildMessage(parentID).serialize();
msg = std::make_shared<WHISPER::Message>(serializedMSG);
if (msg.get()->msgType_ == WHISPER::RAW_TRACK) {
trackPtr = std::make_shared<SimCore::Track>(serializedMSG);
if (msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK) {
trackPtr = std::make_shared<SimCore::GroundTruthTrack>(std::move(SimCore::GroundTruthTrack::unpack(*msg)));
}
std::string trackstring = track.serialize();
std::string trackstring = track.buildMessage(parentID).serialize();
SimCore::Track trackDeserialized(trackstring);
SimCore::GroundTruthTrack trackDeserialized = SimCore::GroundTruthTrack::unpack(*msg);
THEN("check if Track attributes are correct")
@@ -67,7 +71,7 @@ SCENARIO("Testing the SimCore Track")
REQUIRE(track.getSpeedinKnots() == knots);
REQUIRE(track.getPostion().getGeocentricPos() == pos.getGeocentricPos());
REQUIRE(msg.get()->msgType_ == WHISPER::RAW_TRACK);
REQUIRE(msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK);
REQUIRE(trackPtr->getSpeed() == speed);
REQUIRE(trackPtr->getPostion().getGeocentricPos() == GeocentPos1);
REQUIRE(trackPtr->getIdentifier().getNumber() > 0);

View File

@@ -11,6 +11,7 @@
SCENARIO("Testing the SimCore Track") {
GIVEN("different Attributes for a Track in different forms") {
SimCore::Identifier ParentID(0,1,false);
Eigen::Vector3d GeocentPos1;
GeocentPos1(SimCore::GeocentricPosition::X) = 3784014.333;
GeocentPos1(SimCore::GeocentricPosition::Y) = 899869.779;
@@ -23,41 +24,45 @@ SCENARIO("Testing the SimCore Track") {
SimCore::IdentifierMaker IDMaker;
std::shared_ptr<SimCore::Identifier> ID =
IDMaker.getNewIdentifier(0,SimCore::ObjectSource::INTERNAL);
IDMaker.getNewIdentifier(ParentID.getNumber(),SimCore::ObjectSource::INTERNAL);
LOG_S(INFO)<<"ID: " << ID->getNumber();
std::shared_ptr<SimCore::RadarTrack> RadartrackPtr =
std::make_shared<SimCore::RadarTrack>(1, WHISPER::SourceType::SENSOR, *ID.get());
std::make_shared<SimCore::RadarTrack>( WHISPER::SourceType::SENSOR, *ID.get());
RadartrackPtr->setPosition(pos);
RadartrackPtr->setBearing(90);
RadartrackPtr->setCourse(360);
RadartrackPtr->setRange(1000);
RadartrackPtr->setEnvironment(SimCore::ContactEnvironment::SURFACE);
RadartrackPtr->setEnvironment(SimCore::EntityKind::SURFACE);
bool isEqual = false;
WHEN("constructing Track Object with data") {
std::string serializedMSG = RadartrackPtr->serialize();
SimCore::RadarTrack radarTrack2(serializedMSG);
std::string serializedMSG = RadartrackPtr->buildMessage(ParentID).serialize();
SimCore::Identifier ID1(radarTrack2.getIdentifier());
auto tr0 = *RadartrackPtr.get();
SimCore::Identifier ID2(tr0.getIdentifier());
// SimCore::RadarTrack radarTrack2(serializedMSG);
LOG_S(INFO)<<"ID2 source: " << ID2.isExternal();
// SimCore::Identifier ID1(radarTrack2.getID());
// auto tr0 = *RadartrackPtr.get();
// SimCore::Identifier ID2(tr0.getID());
if (ID1 == ID2) {
isEqual = true;
}
// LOG_S(INFO)<<"ID21 source: " << ID1.isExternal();
// LOG_S(INFO)<<"ID2 source: " << ID2.isExternal();
// if (ID1 == ID2) {
// isEqual = true;
// }
THEN("check if Track attributes are correct") {
REQUIRE(RadartrackPtr->getIdentifier().getNumber() == 1);
REQUIRE(isEqual == true);
REQUIRE(radarTrack2.getIdentifier() == RadartrackPtr->getIdentifier());
REQUIRE(radarTrack2.getIdentifier().getNumber() == RadartrackPtr->getIdentifier().getNumber());
REQUIRE(radarTrack2.getPostion().getGeocentricPos() == RadartrackPtr->getPostion().getGeocentricPos());
// REQUIRE(RadartrackPtr->getID().getNumber() == 1);
// REQUIRE(isEqual == true);
// REQUIRE(radarTrack2.getID() == RadartrackPtr->getID());
// REQUIRE(radarTrack2.getID().getNumber() == RadartrackPtr->getID().getNumber());
// REQUIRE(radarTrack2.getPostion().getGeocentricPos() == RadartrackPtr->getPostion().getGeocentricPos());
} // THEN
} // WHEN

View File

@@ -5,7 +5,7 @@
#include <thread>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <SimCore/Sensor.hpp>
#include <SimCore/Templates/Sensor.hpp>
// SimCore::Identifier OwnID, SimCore::Identifier ParentID, SimCore::SensorKinds SensorKind,std::uint32_t GroundTruthPort, std::uint32_t ParentPort,std::string ParentIPAddress
class Radar : public SimCore::Sensor

78
tests/test_Trackstore.cpp Normal file
View File

@@ -0,0 +1,78 @@
#include "SimCore/Identifier.hpp"
#include "SimCore/IdentifierMaker.hpp"
#include "SimCore/Messages/GroundThruthTrack.hpp"
#include "SimCore/Messages/SensorTrack.hpp"
#include "SimCore/Messages/Track.hpp"
#include "SimCore/SimCore.hpp"
#include "WHISPER/Messages/Message.hpp"
#include <list>
#include <memory>
#include <string>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <SimCore/Messages/RadarTrack.hpp>
#include <loguru.hpp>
SCENARIO("Testing the SimCore Track")
{
GIVEN("different Attributes for a Track in different forms")
{
std::vector<std::shared_ptr<SimCore::Track>> trackstore;
SimCore::Identifier parentID(0,1,false);
SimCore::IdentifierMaker IDMaker;
auto ID1 = IDMaker.getNewIdentifier(1, SimCore::ObjectSource::INTERNAL);
auto ID2 = IDMaker.getNewIdentifier(1, SimCore::ObjectSource::INTERNAL);
auto track = std::make_shared<SimCore::RadarTrack>(WHISPER::SourceType::SENSOR,*ID1.get());
track->setSpeed(100);
trackstore.push_back(track);
auto track2 = std::make_shared<SimCore::GroundTruthTrack>(WHISPER::SourceType::SENSOR,*ID2,SimCore::TrackKind::OWN_TRACK);
track2->setSpeed(50);
trackstore.push_back(track2);
auto receivedTrack1 = trackstore[0];
auto receivedTrack2 = trackstore[1];
WHEN("constructing Track Object with data")
{
// auto rev = list.front();
// LOG_S(INFO)<<rev->msgType_;
// // auto track2 = dynamic_pointer_cast<SimCore::RadarTrack>(rev);
THEN("check if Track attributes are correct")
{
REQUIRE(trackstore.size() == 2);
REQUIRE(receivedTrack1->getTrackkind() == SimCore::TrackKind::RADAR_TRACK);
if (receivedTrack1->getTrackkind() == SimCore::TrackKind::RADAR_TRACK) {
auto radarTrackRecv1 = std::dynamic_pointer_cast<SimCore::RadarTrack>(receivedTrack1);
REQUIRE(radarTrackRecv1->getSpeed() == 100);
}
REQUIRE(receivedTrack2->getTrackkind() == SimCore::TrackKind::OWN_TRACK);
// REQUIRE(track12->getSpeed() == 100);
} //THEN
} // WHEN
} // GIVEN
} //SCENARIO