CHG: sensor info are not longer needed when adding a track to a tracklist

This commit is contained in:
hwinkel
2023-06-07 23:21:36 +02:00
parent f02dd84f4e
commit bbbd5b96df
6 changed files with 86 additions and 5 deletions

View File

@@ -32,7 +32,7 @@ namespace Entities {
std::string SensorName;
bool isActive;
SimCore::Identifier SensorID;
std::shared_ptr<WHISPER::InternalUDPSender> SensorSender;
// std::shared_ptr<WHISPER::InternalUDPSender> SensorSender;
};
struct EffectorClientData

View File

@@ -28,6 +28,8 @@ namespace TrackList
SimCore::Identifier getTrackID(SimCore::ObjectSource source);
void addTrack(std::shared_ptr<SimCore::Track> track);
void addTrack(std::shared_ptr<SimCore::Track> track,SensorData sensorData);
std::shared_ptr<TracklistItem> getTrack(SimCore::Identifier TrackID);
@@ -45,6 +47,7 @@ namespace TrackList
void tracklistSanitizer();
void addNewTrack(std::shared_ptr<SimCore::Track> track,SensorData sensorData);
void addNewTrack(std::shared_ptr<SimCore::Track> track);
std::map<std::string, std::shared_ptr<TracklistItem>> TrackList_;

View File

@@ -32,6 +32,7 @@ namespace TrackList {
{
public:
TracklistItem(std::shared_ptr<SimCore::Track> track,SensorData sensorData);
TracklistItem(std::shared_ptr<SimCore::Track> track);
SimCore::Identifier getID();
@@ -56,10 +57,13 @@ namespace TrackList {
void updateTrack(std::shared_ptr<SimCore::Track> track,SensorData sensorData);
void updateTrack(std::shared_ptr<SimCore::Track> track);
bool checkIfSensorIDIsIn(SimCore::Identifier SensorTrackID);
bool isSensorIDKnown(SimCore::Identifier);
void addSensorDataToSensorList(SensorData sensorData);
private:
@@ -90,7 +94,6 @@ namespace TrackList {
bool isSensorinSensorlist(SensorData sensorData);
void addSensorDataToSensorList(SensorData sensorData);

View File

@@ -15,6 +15,13 @@ namespace TrackList {
updateTrack(track,sensorData);
addSensorDataToSensorList(sensorData);
}
TracklistItem::TracklistItem(std::shared_ptr<SimCore::Track> track):trackID_(track->getIdentifier())
{
updateTrack(track);
}
SimCore::Identifier TracklistItem::getID()
@@ -86,7 +93,7 @@ namespace TrackList {
{
auto trackKind = track->getTrackkind();
if (trackKind == SimCore::TrackKind::RADAR_TRACK) {
if (trackKind == SimCore::TrackKind::RADAR_TRACK | trackKind == SimCore::TrackKind::GROUND_TRUTH_TRACK) {
std::shared_ptr<SimCore::RadarTrack> radarTrack = std::dynamic_pointer_cast<SimCore::RadarTrack>(track);
position_ = radarTrack->getPostion();
@@ -103,6 +110,27 @@ namespace TrackList {
addSensorDataToSensorList(sensorData);
}
}
void TracklistItem::updateTrack(std::shared_ptr<SimCore::Track> track )
{
auto trackKind = track->getTrackkind();
if (trackKind == SimCore::TrackKind::RADAR_TRACK | trackKind == SimCore::TrackKind::GROUND_TRUTH_TRACK) {
std::shared_ptr<SimCore::RadarTrack> radarTrack = std::dynamic_pointer_cast<SimCore::RadarTrack>(track);
position_ = radarTrack->getPostion();
range_ = radarTrack->getRange();
bearing_ = radarTrack->getBearing();
course_ = radarTrack->getCourse();
speed_ = radarTrack->getSpeed();
lastUpdateTimestamp_ = std::chrono::steady_clock::now();
}
}

View File

@@ -67,6 +67,44 @@ namespace TrackList
addNewTrack( track, sensorData);
}
}
}
}
/// @brief
/// @param track
void TrackList::addTrack(std::shared_ptr<SimCore::Track> track)
{
auto AllIDs = getAllIDs();
// std::unique_lock<std::mutex> lock(mutex_);
// lock.unlock();
if (AllIDs.size() == 0) {
addNewTrack( track);
}
else
{
for (auto ID:AllIDs) {
// std::lock_guard<std::mutex> lock(mutex_);
auto TracklistItem = TrackList_.find(ID.serialize());
if (TracklistItem != TrackList_.end()) {
TracklistItem->second->updateTrack(track);
}
else
{
// lock.unlock();
addNewTrack( track);
}
}
@@ -88,6 +126,15 @@ namespace TrackList
TrackList_.emplace(id,item);
}
void TrackList::addNewTrack(std::shared_ptr<SimCore::Track> track)
{
std::lock_guard<std::mutex> lock(mutex_);
auto item = std::make_shared<TracklistItem>( track);
std::string id = track->getIdentifier().serialize();
TrackList_.emplace(id,item);
}
std::shared_ptr<TracklistItem> TrackList::getTrack(SimCore::Identifier TrackID)
{