laser_scan_matcher limitation in x translation

asked 2021-06-17 03:25:21 -0600

simk0024 gravatar image

Hi developers,

I am trying to get robot's odometry via SICK TIM571 lidar and scan_tools/laser_scan_matcher from this site.

However, it is giving poor odemetry update when robot moving along x direction in a less feature place. In rviz, robot is not moving forward but the laserscan reading is moving backward. I saw there are people having similar issue, video reference here, but none have mentioned how to solve the problem.

Could it be solved via tweaking the parameter? Here is the launch file that i am using:


<node pkg="laser_scan_matcher"  type="laser_scan_matcher_node"  name="laser_scan_matcher_node" output="screen">

<!-- Coordinate frames -->
<param name="fixed_frame" value="map"/>
<param name="base_frame" value="base_footprint"/>

<!-- Motion prediction -->
<param name="use_imu" value="false"/>
<param name="use_odom" value="false"/>
<param name="use_vel" value="false"/>
<param name="stamped_vel" value="false"/>

<!-- Pointcloud input -->
<param name="use_cloud_input" value="false"/>
<!--param name="cloud_range_min" value="0.1"/>
<param name="cloud_range_max" value="50.0"/-->

<!-- Keyframes -->
<param name="kf_dist_linear" value="0.00"/> <!--0.1-->
<param name="kf_dist_angular" value="0.00"/><!--0.175-->

<!-- Output -->
<param name="publish_tf" value="true"/>
<param name="publish_pose" value="true"/>
<param name="publish_pose_stamped" value="false"/>
<param name="publish_pose_with_covariance" value="false"/>
 <param name="publish_pose_with_covariance_stamped" value="false"/>

<!-- Scan matching -->
<param name="max_iterations" value="20"/>
 <param name="max_correspondence_dist" value="0.3"/>
<param name="max_angular_correction_deg" value="10.0"/>
<param name="max_linear_correction" value="0.06"/>
<param name="epsilon_xy" value="0.000001"/>
<param name="epsilon_theta" value="0.000001"/>
<param name="outliers_maxPerc" value="0.85"/>

<!-- Scan matching (advanced) --> 
<param name="sigma" value="0.010"/>
<param name="use_corr_tricks" value="1"/>
<!--param name="restart" value="0"/>
<param name="restart_threshold_mean_error" value="0.01"/>
<param name="restart_dt" value="1.0"/>
<param name="restart_dtheta" value="0.1"/-->
<param name="clustering_threshold" value="0.4"/>
<param name="orientation_neighbourhood" value="30"/>
<param name="use_point_to_line_distance" value="1"/>

<param name="do_alpha_test" value="0"/>
<param name="do_alpha_test_thresholdDeg" value="20.0"/>
<param name="outliers_adaptive_order" value="0.7" />
<param name="outliers_adaptive_mul" value="2.0" />
<param name="do_visibility_test" value="0" />
<param name="outliers_remove_doubles" value="1" />
<param name="do_compute_covariance" value="1" />
<param name="debug_verify_trick" value="0" />
<param name="use_ml_weights" value="0" />
<param name="use_sigma_weights" value="0" />

<remap from="/scan" to="$(arg scan_topic)"/>
<remap from="/vel" to="$(arg vel_topic)"/>
<remap from="imu/data" to="$(arg imu_topic)" />



edit retag flag offensive close merge delete