Skip to content
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

The published odom_rf2o will not change ([rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated) #17

Open
tianb03 opened this issue Nov 23, 2018 · 15 comments

Comments

@tianb03
Copy link

tianb03 commented Nov 23, 2018

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

@tianb03
Copy link
Author

tianb03 commented Nov 23, 2018

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..

@tianb03
Copy link
Author

tianb03 commented Nov 26, 2018

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!

@tianb03
Copy link
Author

tianb03 commented Nov 26, 2018

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

@tianb03 tianb03 changed the title The published Twist is not transformed (calculation of lin_speed problem) The published odom_rf2o will not change ([rf2o] ERROR: Eigensolver couldn't find a solution. Pose is not updated) Nov 27, 2018
@tianb03
Copy link
Author

tianb03 commented Nov 29, 2018

reset back to commit ecae84c 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]

@abylikhsanov
Copy link

Did you figure out?

@tianb03
Copy link
Author

tianb03 commented Dec 20, 2018

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.

@mrsp
Copy link

mrsp commented Jan 22, 2019

Having the same issue.
Looks like it doesn't work at all.

@mrsp
Copy link

mrsp commented Jan 22, 2019

Hello again the issue is that rf2o does not ignore the INF measurements.

@mbudris
Copy link

mbudris commented Jan 29, 2019

So have you got it right mrsp?

@olivebardoza
Copy link

olivebardoza commented Feb 1, 2019

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.

@HaoQChen
Copy link

ssue is that rf2o does not ignore the INF measurements.

Did you find a solution for the INF

@HaoQChen
Copy link

#14 (comment) this work for me

@tianb03
Copy link
Author

tianb03 commented Aug 21, 2019

https://github.com/tianb03/rf2o_laser_odometry
Solved both of the INF and Pose transformation problems.

@LiuLimingCode
Copy link

https://github.com/tianb03/rf2o_laser_odometry
Solved both of the INF and Pose transformation problems.

thanks, it solved my problem

@zhang159560293
Copy link

https://github.com/tianb03/rf2o_laser_odometry
Solved both of the INF and Pose transformation problems.

thanks ,solved my problem,too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants