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; std::string SensorName;
bool isActive; bool isActive;
SimCore::Identifier SensorID; SimCore::Identifier SensorID;
std::shared_ptr<WHISPER::InternalUDPSender> SensorSender; // std::shared_ptr<WHISPER::InternalUDPSender> SensorSender;
}; };
struct EffectorClientData struct EffectorClientData

View File

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

View File

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

View File

@@ -15,6 +15,13 @@ namespace TrackList {
updateTrack(track,sensorData); updateTrack(track,sensorData);
addSensorDataToSensorList(sensorData); addSensorDataToSensorList(sensorData);
}
TracklistItem::TracklistItem(std::shared_ptr<SimCore::Track> track):trackID_(track->getIdentifier())
{
updateTrack(track);
} }
SimCore::Identifier TracklistItem::getID() SimCore::Identifier TracklistItem::getID()
@@ -86,7 +93,7 @@ namespace TrackList {
{ {
auto trackKind = track->getTrackkind(); 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); std::shared_ptr<SimCore::RadarTrack> radarTrack = std::dynamic_pointer_cast<SimCore::RadarTrack>(track);
position_ = radarTrack->getPostion(); position_ = radarTrack->getPostion();
@@ -103,6 +110,27 @@ namespace TrackList {
addSensorDataToSensorList(sensorData); 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); 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);
} }
} }
@@ -87,6 +125,15 @@ namespace TrackList
std::string id = track->getIdentifier().serialize(); std::string id = track->getIdentifier().serialize();
TrackList_.emplace(id,item); 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) std::shared_ptr<TracklistItem> TrackList::getTrack(SimCore::Identifier TrackID)