Closed Woodpecker0 closed 1 year ago
Hi @Woodpecker0, thank you for your thorough consideration. I believe there is a bug here, which I will fix as soon as possible. The system code has been rewritten from our experimental version; we are presently undergoing code review. Thank you once more for your attention to detail.
Thanks for your reply.
What's more, I also found that the yaw_pc always be 32.
yaw_pc, _ = phase_corr(DiSCO_candidate, DiSCO_current, device, corr2soft) print("yaw_pc:", yaw_pc)
@Woodpecker0 Thanks for your carefulness! I used the place descriptor to calculate the yaw, so the initial guess is wrong. I have fixed this bug using the Fourier spectrum and tested it. Thanks again for improving the code!
the loop detection is good when i apply you improvement ! I found a small bug later. it seems that the yaw_pc will never be negative or larger then 180, is it correct? ` if yaw_pc < cfg.num_sector//2: yaw_pc = (cfg.num_sector//2 - yaw_pc) / float(cfg.num_sector) 360. else: yaw_pc = (yaw_pc - cfg.num_sector//2) / float(cfg.num_sector) 360.
`
@Woodpecker0 That's really an embarrassing bug. I'm sorry for making this mistake. It should be only one line here: 'yaw_pc = (yaw_pc - cfg.num_sector//2) / float(cfg.num_sector) * 360'
In disco_ros/main.py ` yawpc, = phase_corr(DiSCO_candidate, DiSCO_current, device, corr2soft)
` It's seems degree. However, It's not same in euler2rot(), which is radians. If it's a bug, how can this loop detection work with this initial pose?