gmcl node crashes when after increase the update rate
Alcatrazee opened this issue · comments
I was using gmcl to localize my robot to replace the amcl, it works fine in the beginning, and it feels much better than amcl, however, when I decrease the parameter: update_min_d to be 0.001, and update_min_a to be 0.001( for I wish the pose to converge quickly) as I did to my amcl parameters, it crashes when I run the amcl_omni.launch, after multiple times of updating, I tried the combination of those algorithms but it all just got the same crashes, and also, I've set all the odom_alphax parameters 10 times lower. P.S. I was using a differential robot with two lidar, I cannot use the motion model of diff because my robot will move backward, and when it did moving backward in a low speed, the gmcl( so does amcl) doesn't update, only the omni model works in slow speed and fast speed. So what is the problem of this crashes? I really wish to use this new techneq to improve my robot's localization ability and relocalization ability. Thanks
Hello Alcatrazee, Thanks for your feedback.. I have tried the "update_min_d := 0.001, and update_min_a := 0.001" in a simulation and they worked just fine... The crash might be because of buffering overflow due to lack of processing power, since you also use 2 Lidars. As advice I would recommend either decreasing the ”laser_max_beams” parameter or decreasing ”max_particles” parameter.
Instead of decreasing odom_alphax parameters try to set "odom_model_type" to "diff-corrected" or "omni-corrected" this might also fix your problem.
As a standard, differential drive mobile robots cannot move backward. When they want to go the opposite way they do a 180° degree turn and move forward. That's the reason you are not receiving any motion update.
I hope my comment was helpful and wish you a nice day.
Hi, thanks for your comment, I'm not pretty sure the reason of the crashes is lack of processing power, I've checked the cpu use with command "htop", and it never reached 100% for all cores, so does the memory( my on-board computer is using a i5 6th processor and 32GB of memory, 512GB of SSD).
I've rolled back the odom_alphax back the the default value , they also works fine, so I will leave this parameters in default value.
I've realized that I don't really need such a high update rate, so now I've set the update_min_d to be 0.1 and update_min_a to be 0.1, the crashes never happen again, so I guess the crashes might be due to the buffering overflow. I think it's ok to use the default value of "laser_max_beams" and "max_particles".
I understand a differential drive robot is unable to move backward, the strange thing is that when I go backward in a fast speed, the motion updates, but when I move backward in a low speed (<0.1m/s), it won't update, which is weird.
Anyway, your comments helps a lot, thanks.
I am glad that everything worked fine with you… Do not hesitate to open another issue when you encounter any problem.