rf2o_laser_odometry
rf2o_laser_odometry copied to clipboard
The published odom_rf2o will not change ([rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated)
I have a rplidar laser scanner which is rotated by z axis 180 in degree. When I use rf2o to publish the odom calculated from /scan, with correct TF, the pose published has no problem but seems the Twist is not transformed. when moving forward (just started the program), the pose will be moving forward however the twist display a negative linear x velocity. It indicates that the Pose is well-transformed but the Twist not.
Could you please checkout the calculation of lin_speed from acu_trans?
Best regards, Tian Bo
I think this problem belongs to commit in May 2018. I update the program and got same problem as issue #15 , I add wait for transform, and however I changed it to hard-coded "laser", cos it seems the problem is given by last_scan.header.frame_id, now there is no ROS_ERROR but the output of odom_rf2o wont change at all ...
I will check if any configuration is wrong on our side recently..
for the lastest committed code, I found that there is a warning "[rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated".
What I can confirm is that I have a correct tf from laser to base_footprint. And my launch file is like
<launch>
<node pkg="rf2o_laser_odometry" type="rf2o_laser_odometry_node" name="rf2o_laser_odometry" output="screen">
<param name="laser_scan_topic" value="/scan"/> # topic where the lidar scans are being published
<param name="odom_topic" value="/odom_rf2o" /> # topic where tu publish the odometry estimations
<param name="publish_tf" value="false" /> # wheter or not to publish the tf::transform (base->odom)
<param name="base_frame_id" value="/base_footprint"/> # frame_id (tf) of the mobile robot base. A tf transform from the laser_frame to the base_frame is mandatory
<param name="odom_frame_id" value="/odom" /> # frame_id (tf) to publish the odometry estimations
<param name="init_pose_from_topic" value="" /> # (Odom topic) Leave empty to start at point (0,0)
<param name="freq" value="6.0"/> # Execution frequency.
<param name="verbose" value="true" /> # verbose
</node>
</launch>
The laser update freq is about 7Hz, static transform is published 100ms,about 10 Hz. Just updated my ros-kinetic-eigen* (I have no idea if this affects)
Output to terminal when launch
process[rf2o_laser_odometry-1]: started with pid [9691] [ INFO] [1543215319.642320743]: Initializing RF2O node... [ INFO] [1543215324.683821021]: Listening laser scan from topic: /scan [ INFO] [1543215324.684482522]: [rf2o] Got first Laser Scan .... Configuring node [ INFO] [1543215324.684942523]: [rf2o] Setting origin at: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 [ INFO] [1543215324.861894562]: [rf2o] execution time (ms): 10.252561 [ INFO] [1543215324.863217732]: [rf2o] LASERodom = [0.100000 0.000000 3.141593] [ INFO] [1543215324.863598857]: BASEodom = [0.000000 0.000000 0.000000] [ WARN] [1543215325.081378849]: [rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated [ WARN] [1543215325.240205521]: [rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated
I will keep trying to make it work also... Hope can get some hints from you also, many thanks!
I print out the eigenvalues and eigenvectors. It constantly got nan every five times, but the other four times seems have a solution. However, my rf2o still not working ...
The eigenvalues of A are: nan -nan nan The matrix of eigenvectors, V, is: nan -nan nan nan -nan nan nan -nan nan
[ WARN] [1543219837.595453058]: [rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated ^C[rf2o_laser_odometry-1] killing on exit The eigenvalues of A are: 1.61082e-06 1.1194e-05 3.41088e-05 The matrix of eigenvectors, V, is: 0.401996 -0.868613 0.289674 0.699669 0.495473 0.514752 -0.590646 -0.00425215 0.806919
The eigenvalues of A are: 3.24096e-05 7.61232e-05 0.000129969 The matrix of eigenvectors, V, is: -0.870699 -0.490767 -0.0321043 -0.456918 0.783041 0.421986 0.181958 -0.382092 0.906034
The eigenvalues of A are: 1.4926e-06 3.60596e-06 5.97853e-06 The matrix of eigenvectors, V, is: -0.9206 -0.219598 -0.322912 -0.274074 0.952369 0.133704 0.27817 0.21159 -0.936937
The eigenvalues of A are: 4.62975e-07 1.52684e-06 2.61454e-06 The matrix of eigenvectors, V, is: -0.94524 -0.231723 -0.229837 -0.320086 0.795757 0.514116 0.063762 0.559531 -0.826353
The eigenvalues of A are: nan -nan nan The matrix of eigenvectors, V, is: nan -nan nan nan -nan nan nan -nan nan
reset back to commit ecae84c5115a066669d36768378fff576c2f9fcd in May, and this will print the same error every five times, however the topic odom_rf2o will be updated... Only problem is still the Twist seems not transformed. Hope you can check where is the difference between these two commits, best regards,
[rf2o] COV_ODO: nan nan nan nan nan nan nan nan nan [rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated[ INFO] [1543475053.678198861]: [rf2o] execution time (ms): 35.715000 [ INFO] [1543475053.678497192]: [rf2o] LASERodom = [0.067019 -0.016295 2.999645] [ INFO] [1543475053.678634649]: BASEodom = [-0.031975 -0.002148 -0.141947]
[rf2o] COV_ODO: 7.87575e-06 -1.88562e-06 5.51346e-07 -1.88562e-06 1.51959e-05 -2.02471e-06 5.51346e-07 -2.02471e-06 2.20698e-05
[rf2o] COV_ODO: 2.13181e-06 -1.38481e-06 -3.67585e-07 -1.38481e-06 1.01409e-05 -1.0569e-06 -3.67585e-07 -1.0569e-06 7.14015e-06
[rf2o] COV_ODO: 5.27343e-07 -3.51168e-08 6.00924e-08 -3.51168e-08 7.74093e-07 -3.69015e-07 6.00924e-08 -3.69015e-07 1.30248e-06
[rf2o] COV_ODO: 2.91031e-08 -4.11138e-08 1.30695e-08 -4.11138e-08 5.87861e-08 -1.85578e-08 1.30695e-08 -1.85578e-08 1.63092e-07
[rf2o] COV_ODO: nan nan nan nan nan nan nan nan nan [rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated[ INFO] [1543475053.843922656]: [rf2o] execution time (ms): 34.749001 [ INFO] [1543475053.844198196]: [rf2o] LASERodom = [0.066973 -0.016204 2.999645] [ INFO] [1543475053.844342861]: BASEodom = [-0.032021 -0.002057 -0.141947]
Did you figure out?
Nope. I switched back to commit in May. and modified the code to generate a correct twist msg according to my hardware settings temporarily.
The latest code line 248 249
//8. Filter solution
if (!filterLevelSolution()) return false;
will return, but the previous one won't if filterLevelSolution return false.
However I remove the return, no change in pose either. give up.... waiting for the author to make an update.
Having the same issue. Looks like it doesn't work at all.
Hello again the issue is that rf2o does not ignore the INF measurements.
So have you got it right mrsp?
Facing the same issue here. Have a 200m planar range scan. I get very intermittent updates to the odometry output from rf2o. Most of the times it just outputs 0 twist for a moving robot. I can confirm that the Lidar data does not have inf or nan values.
I did reset back to commit ecae84c in May and still do not see any fix to the problem, still seeing 0 twist output and the Eigen warning messages.
ssue is that rf2o does not ignore the INF measurements.
Did you find a solution for the INF
https://github.com/MAPIRlab/rf2o_laser_odometry/issues/14#issuecomment-382436198 this work for me
https://github.com/tianb03/rf2o_laser_odometry Solved both of the INF and Pose transformation problems.
https://github.com/tianb03/rf2o_laser_odometry Solved both of the INF and Pose transformation problems.
thanks, it solved my problem
https://github.com/tianb03/rf2o_laser_odometry Solved both of the INF and Pose transformation problems.
thanks ,solved my problem,too