-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ICP covariance calculation failure. #51
Comments
Hi @nethdeco - thanks for testing out LOCUS. The covariance is not strictly needed in LOCUS, rather it is required when combined with LAMP where we do global pose-graph optimization. https://github.com/NeBula-Autonomy/LAMP Hence for a short-term solution, change the parameter I don't think that error you are seeing will actually stop locus, it will just return zeros in the covariance, but we need to look more closely. Let me know if that short term fix I mention is enough for now, otherwise we'll push harder to go into the issue in more details. Cheers, Ben |
Thank you for the solution posted. Sorry for the bit delayed reply. I have tested what you suggested. I was able to get a result with 3 ---> odometry integration. In order to get the result I had to set b_integrate_interpolated_odom & b_pub_odom_on_timer to false. During the execution i also got following messages. Dropped 39 scans over 5s --> drop rate is 7.8 scans/s If seems the node is dropping frames. Somehow Still i could not integrate the IMU data. |
this may be connected to the fact that the step of Locus (in the LidarCallback function) has some problems with the optimization of two scans or the map (more likely). We have this flag
maybe something in your robot description, try to run
if imu is not expressed in base_link then set
in |
Hi, thank you publicly sharing your work.
I have tested your default data sets and they have been working fine. Then I have been trying to integrate the system with one of our robots which is a 2 wheel differential driven robot with two casters with a Velodyne VLP-16 and an IMU running at 20Hz. We were testing in a warehouse which is a n50m X 30m environment.
But this time I get an error ""Failed to find eigen values when computing ICP covariance. " which seems the localization is failing. Is there any pointers to fix this issue.
The rosbag file can be downloaded from here
sensors.yaml file is as follows.
velodyne: name: velodyne parent: arch position: x: -0.17 y: 0.0 z: 0.50 orientation: r: 0.0 p: 0.0 y: 3.14 rate: 10 topic_name: velodyne_points vn100: name: vn100 parent: arch topic_name: imu/data position: x: 0.20 y: 0.00 z: 0.23 orientation: r: 0 p: 0 y: 1.571 rate: 20
localization parameters are as follows.
localization: registration_method: gicp compute_icp_covariance: true icp_covariance_method: 1 icp_max_covariance: 0.01 compute_icp_observability: false tf_epsilon: 0.00001 corr_dist: 0.5 iterations: 25 transform_thresholding: true max_translation: 1.0 max_rotation: 1.0 enable_timing_output: false normal_search_radius: 10 recompute_covariance_local_map: false recompute_covariance_scan: false
robot description
<xacro:include filename="$(find sensor_description)/urdf/sensors/VLP-16.urdf.xacro" />
<xacro:VLP-16
parent="${sensor_props['velodyne']['parent']}"
name="${sensor_props['velodyne']['name']}"
topic="${sensor_props['velodyne']['topic_name']}"
hz="${sensor_props['velodyne']['rate']}"
samples="440"
noise="0.016"
gpu="true">
</xacro:VLP-16>
<xacro:include filename="$(find sensor_description)/urdf/sensors/imu_vn100.urdf.xacro"/>
<xacro:vn100
robot_namespace="$(arg robot_namespace)"
name="${sensor_props['vn100']['name']}"
topic_name="${sensor_props['vn100']['topic_name']}"
hz="${sensor_props['vn100']['rate']}"
parent="imu_link">
</xacro:vn100>
Lo_settings has been updated to match the frames of the datalogs.
`frame_id:
fixed: $(arg robot_namespace)/map
base: $(arg robot_namespace)/base_link
imu: imu_link
bd_odometry: odom
artifacts_in_global: true
frame_conversions:
b_convert_imu_to_base_link_frame: true`
The text was updated successfully, but these errors were encountered: