Skip to content

Commit 99936a3

Browse files
committed
Changed pose_helpers_ from vector to map
1 parent f5d36ea commit 99936a3

File tree

6 files changed

+20
-34
lines changed

6 files changed

+20
-34
lines changed

slam_toolbox/include/slam_toolbox/slam_toolbox_common.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class SlamToolbox
127127

128128
// helpers
129129
std::map<std::string,std::unique_ptr<laser_utils::LaserAssistant>> laser_assistants_;
130-
std::vector<std::unique_ptr<pose_utils::GetPoseHelper>> pose_helpers_;
130+
std::map<std::string,std::unique_ptr<pose_utils::GetPoseHelper>> pose_helpers_;
131131
std::unique_ptr<map_saver::MapSaver> map_saver_;
132132
std::unique_ptr<loop_closure_assistant::LoopClosureAssistant> closure_assistant_;
133133
std::unique_ptr<laser_utils::ScanHolder> scan_holder_;

slam_toolbox/src/experimental/slam_toolbox_lifelong.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,12 @@ void LifelongSlamToolbox::laserCallback(
7171
{
7272
// no odom info on any pose helper
7373
karto::Pose2 pose;
74-
bool found_odom = false;
75-
for(size_t idx = 0; idx < pose_helpers_.size(); idx++)
74+
if(pose_helpers_.find(base_frame_id) == pose_helpers_.end())
75+
return;
76+
else
7677
{
77-
found_odom = pose_helpers_[idx]->getOdomPose(pose, scan->header.stamp, scan->header.frame_id);
78-
if(found_odom)
79-
break;
78+
pose_helpers_[base_frame_id]->getOdomPose(pose, scan->header.stamp, base_frame_id);
8079
}
81-
if(!found_odom)
82-
return;
8380

8481
// ensure the laser can be used
8582
LaserRangeFinder* laser = getLaser(scan);

slam_toolbox/src/slam_toolbox_async.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,12 @@ void AsynchronousSlamToolbox::laserCallback(
3737
{
3838
// no odom info on any pose helper
3939
karto::Pose2 pose;
40-
bool found_odom = false;
41-
for(size_t idx = 0; idx < pose_helpers_.size(); idx++)
40+
if(pose_helpers_.find(base_frame_id) == pose_helpers_.end())
41+
return;
42+
else
4243
{
43-
// try compute odometry
44-
found_odom = pose_helpers_[idx]->getOdomPose(pose, scan->header.stamp, base_frame_id);
45-
if(found_odom)
46-
break;
44+
pose_helpers_[base_frame_id]->getOdomPose(pose, scan->header.stamp, base_frame_id);
4745
}
48-
if(!found_odom)
49-
return;
5046

5147
// Add new sensor to laser ID map, and to laser assistants
5248
{

slam_toolbox/src/slam_toolbox_common.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ SlamToolbox::SlamToolbox(ros::NodeHandle& nh)
5454
// Set up pose helpers for each robot
5555
for(size_t idx = 0; idx < base_frames_.size(); idx++)
5656
{
57-
pose_helpers_.push_back(std::make_unique<pose_utils::GetPoseHelper>(tf_.get(), base_frames_[idx], odom_frames_[idx]));
57+
pose_helpers_[base_frames_[idx]] = std::make_unique<pose_utils::GetPoseHelper>(tf_.get(), base_frames_[idx], odom_frames_[idx]);
5858
}
5959
scan_holder_ = std::make_unique<laser_utils::ScanHolder>(lasers_);
6060
map_saver_ = std::make_unique<map_saver::MapSaver>(nh_, map_name_);
@@ -86,9 +86,9 @@ SlamToolbox::~SlamToolbox()
8686
dataset_.reset();
8787
closure_assistant_.reset();
8888
map_saver_.reset();
89-
for(size_t idx = 0; idx < pose_helpers_.size(); idx++)
89+
for(std::map<std::string,std::unique_ptr<pose_utils::GetPoseHelper>>::iterator it = pose_helpers_.begin(); it != pose_helpers_.end(); it++)
9090
{
91-
pose_helpers_[idx].reset();
91+
it->second.reset();
9292
}
9393
for(std::map<std::string,std::unique_ptr<laser_utils::LaserAssistant>>::iterator it = laser_assistants_.begin(); it != laser_assistants_.end(); it++)
9494
{

slam_toolbox/src/slam_toolbox_localization.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,12 @@ void LocalizationSlamToolbox::laserCallback(
106106
{
107107
// no odom info on any pose helper
108108
karto::Pose2 pose;
109-
bool found_odom = false;
110-
for(size_t idx = 0; idx < pose_helpers_.size(); idx++)
109+
if(pose_helpers_.find(base_frame_id) == pose_helpers_.end())
110+
return;
111+
else
111112
{
112-
found_odom = pose_helpers_[idx]->getOdomPose(pose, scan->header.stamp, scan->header.frame_id);
113-
if(found_odom)
114-
break;
113+
pose_helpers_[base_frame_id]->getOdomPose(pose, scan->header.stamp, base_frame_id);
115114
}
116-
if(!found_odom)
117-
return;
118115

119116
// ensure the laser can be used
120117
LaserRangeFinder* laser = getLaser(scan);

slam_toolbox/src/slam_toolbox_sync.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,12 @@ void SynchronousSlamToolbox::laserCallback(
7070
{
7171
// no odom info on any pose helper
7272
karto::Pose2 pose;
73-
bool found_odom = false;
74-
for(size_t idx = 0; idx < pose_helpers_.size(); idx++)
73+
if(pose_helpers_.find(base_frame_id) == pose_helpers_.end())
74+
return;
75+
else
7576
{
76-
// try compute odometry
77-
found_odom = pose_helpers_[idx]->getOdomPose(pose, scan->header.stamp, base_frame_id);
78-
if(found_odom)
79-
break;
77+
pose_helpers_[base_frame_id]->getOdomPose(pose, scan->header.stamp, base_frame_id);
8078
}
81-
if(!found_odom)
82-
return;
8379

8480
// Add new sensor to laser ID map, and to laser assistants
8581
{

0 commit comments

Comments
 (0)