Skip to content

Commit 19a6690

Browse files
authored
Humble min laser range parameters (#713)
* ignore vscode folder in gitignore * add min_laser_range feature from parameters in laser_utils.cpp file * add info related to min_laser_range in README.MD and add sample parameters to all .yaml file in config folder * Update laser_utils.cpp, fix initial min_laser_range value from 25 to 0.0
1 parent 94cec98 commit 19a6690

8 files changed

Lines changed: 30 additions & 1 deletion

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
snap_ws/*
2+
.vscode/*

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ The following settings and options are exposed to you. My default configuration
248248

249249
`resolution` - Resolution of the 2D occupancy map to generate
250250

251+
`min_laser_range` - Minimum laser range to use for 2D occupancy map rasterizing
252+
251253
`max_laser_range` - Maximum laser range to use for 2D occupancy map rasterizing
252254

253255
`minimum_time_interval` - The minimum duration of time between scans to be processed in synchronous mode

config/mapper_params_lifelong.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ slam_toolbox:
4040
transform_publish_period: 0.02 #if 0 never publishes odometry
4141
map_update_interval: 5.0
4242
resolution: 0.05
43+
min_laser_range: 0.0 #for rastering images
4344
max_laser_range: 20.0 #for rastering images
4445
minimum_time_interval: 0.5
4546
transform_timeout: 0.2

config/mapper_params_localization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ slam_toolbox:
2323
transform_publish_period: 0.02 #if 0 never publishes odometry
2424
map_update_interval: 5.0
2525
resolution: 0.05
26+
min_laser_range: 0.0 #for rastering images
2627
max_laser_range: 20.0 #for rastering images
2728
minimum_time_interval: 0.5
2829
transform_timeout: 0.2

config/mapper_params_offline.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ slam_toolbox:
2121
transform_publish_period: 0.02 #if 0 never publishes odometry
2222
map_update_interval: 10.0
2323
resolution: 0.05
24+
min_laser_range: 0.0 #for rastering images
2425
max_laser_range: 20.0 #for rastering images
2526
minimum_time_interval: 0.5
2627
transform_timeout: 0.2

config/mapper_params_online_async.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ slam_toolbox:
2929
transform_publish_period: 0.02 #if 0 never publishes odometry
3030
map_update_interval: 5.0
3131
resolution: 0.05
32+
min_laser_range: 0.0 #for rastering images
3233
max_laser_range: 20.0 #for rastering images
3334
minimum_time_interval: 0.5
3435
transform_timeout: 0.2

config/mapper_params_online_sync.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ slam_toolbox:
2929
transform_publish_period: 0.02 #if 0 never publishes odometry
3030
map_update_interval: 5.0
3131
resolution: 0.05
32+
min_laser_range: 0.0 #for rastering images
3233
max_laser_range: 20.0 #for rastering images
3334
minimum_time_interval: 0.5
3435
transform_timeout: 0.2

src/laser_utils.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,28 @@ karto::LaserRangeFinder * LaserAssistant::makeLaser(const double & mountingYaw)
9999
karto::LaserRangeFinder_Custom, karto::Name("Custom Described Lidar"));
100100
laser->SetOffsetPose(karto::Pose2(laser_pose_.transform.translation.x,
101101
laser_pose_.transform.translation.y, mountingYaw));
102-
laser->SetMinimumRange(scan_.range_min);
102+
103+
double min_laser_range = 0.0;
104+
if (!node_->has_parameter("min_laser_range")) {
105+
node_->declare_parameter("min_laser_range", min_laser_range);
106+
}
107+
node_->get_parameter("min_laser_range", min_laser_range);
108+
109+
if (min_laser_range < 0) {
110+
RCLCPP_WARN(node_->get_logger(),
111+
"You've set minimum laser range to be negative,"
112+
"this isn't allowed so it will be set to (%.1f).", scan_.range_min);
113+
min_laser_range = scan_.range_min;
114+
}
115+
116+
if (min_laser_range < scan_.range_min) {
117+
RCLCPP_WARN(node_->get_logger(),
118+
"minimum laser range setting (%.1f m) exceeds the capabilities "
119+
"of the used Lidar (%.1f m)", min_laser_range, scan_.range_min);
120+
min_laser_range = scan_.range_min;
121+
}
122+
123+
laser->SetMinimumRange(min_laser_range);
103124
laser->SetMaximumRange(scan_.range_max);
104125
laser->SetMinimumAngle(scan_.angle_min);
105126
laser->SetMaximumAngle(scan_.angle_max);

0 commit comments

Comments
 (0)