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

@@ -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);
}
}
@@ -87,6 +125,15 @@ namespace TrackList
std::string id = track->getIdentifier().serialize();
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)