Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@
{
VelodyneStatus status;
const auto & ok = VelodyneStatus::OK;
const int32_t fov_tolerance_deg = 5;

std::string target_key = "config.returns";
auto current_return_mode_str = tree.get<std::string>(target_key);
Expand Down Expand Up @@ -167,13 +168,36 @@
<< std::endl;
}

target_key = "config.fov.start";
auto current_cloud_min_angle = tree.get<std::uint16_t>(target_key);
int setting_cloud_min_angle = sensor_configuration->cloud_min_angle;
// Velodyne only allows a maximum of 359 in the setting
if (setting_cloud_min_angle == 360) {
setting_cloud_min_angle = 359;
int setting_cloud_max_angle = sensor_configuration->cloud_max_angle;

Check warning on line 172 in nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp

View check run for this annotation

Codecov / codecov/patch

nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp#L172

Added line #L172 was not covered by tests

// FIXME: VLP16 has problems for timestamp. Whatch github issue #292

Check warning on line 174 in nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp

View workflow job for this annotation

GitHub Actions / spell-check-differential

Unknown word (Whatch)
// VLP16 timestamps are weird when pointcloud are filtered by filtered by same hardware fov as
// software fov. To improve this, we need to set the hardware fov wider than the software fov.
if (sensor_configuration->sensor_model == SensorModel::VELODYNE_VLP16) {
int angle_diff = (setting_cloud_max_angle - setting_cloud_min_angle + 360) % 360;

Check warning on line 178 in nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp

View check run for this annotation

Codecov / codecov/patch

nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp#L178

Added line #L178 was not covered by tests
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please define the angle we oversize by as a const int32_t fov_tolerance_deg = 5; and replace all 5s below by that constant.


if (
angle_diff == 0 || (angle_diff >= 360 - 2 * fov_tolerance_deg &&

Check warning on line 181 in nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp

View check run for this annotation

Codecov / codecov/patch

nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp#L181

Added line #L181 was not covered by tests
setting_cloud_min_angle < setting_cloud_max_angle)) {
setting_cloud_min_angle = 0;
setting_cloud_max_angle = 359;
} else {
setting_cloud_min_angle = (setting_cloud_min_angle - fov_tolerance_deg + 360) % 360;
setting_cloud_max_angle = (setting_cloud_max_angle + fov_tolerance_deg) % 360;

Check warning on line 187 in nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp

View check run for this annotation

Codecov / codecov/patch

nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp#L186-L187

Added lines #L186 - L187 were not covered by tests
if (setting_cloud_min_angle == 0 && setting_cloud_max_angle == 0) {
setting_cloud_max_angle = 359;
}
}
} else {
if (setting_cloud_min_angle == 360) setting_cloud_min_angle = 359;
if (setting_cloud_max_angle == 360) setting_cloud_max_angle = 359;
}
std::cout << "setting_cloud_min_angle: " << setting_cloud_min_angle << std::endl;
std::cout << "setting_cloud_max_angle: " << setting_cloud_max_angle << std::endl;

target_key = "config.fov.start";
auto current_cloud_min_angle = tree.get<std::uint16_t>(target_key);

Check warning on line 200 in nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp

View check run for this annotation

Codecov / codecov/patch

nebula_hw_interfaces/src/nebula_velodyne_hw_interfaces/velodyne_hw_interface.cpp#L200

Added line #L200 was not covered by tests
if (setting_cloud_min_angle != current_cloud_min_angle) {
status = set_fov_start(setting_cloud_min_angle);
if (status != ok) return status;
Expand All @@ -185,11 +209,6 @@

target_key = "config.fov.end";
auto current_cloud_max_angle = tree.get<std::uint16_t>(target_key);
int setting_cloud_max_angle = sensor_configuration->cloud_max_angle;
// Velodyne only allows a maximum of 359 in the setting
if (setting_cloud_max_angle == 360) {
setting_cloud_max_angle = 359;
}
if (setting_cloud_max_angle != current_cloud_max_angle) {
status = set_fov_end(setting_cloud_max_angle);
if (status != ok) return status;
Expand Down
Loading