0
$\begingroup$

Rosanswers logo

I use hector SLAM and Neato xv-11 LIDAR. There is problem that the map will jump when the location jumps even the robot doesn't move. (I have a picture of this but has not enough points to attach). I had played with some of the parameters, and even tried to stop publishing the slam_out_pose message when this pose (the location) change too much, some time it works, but it never works all the way.

The jumping mostly happens when there is warning "SearchDir angle change too large".

The neato Lidar ranges from 0.15m to 6m. I had tested it and it has some invalid data, anyway, I think it should survive with that.

I have no knowledge of SLAM. It seems I am just looking for lucky as I go around the code blindly. Looking forward your help.

Thanks.

Tao Wang


Originally posted by wt70707 on ROS Answers with karma: 11 on 2017-01-17

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I have had experience with Neato lidar dropping bytes if it is spinning too quickly. More to the point, if it is not spinning smoothly or too quickly. It uses 115200 baud on the serial port output, and at 5Hz spin rate it has virtually no extra bandwidth. If spinning at 5Hz but not spinning smoothly, there will be places in the rotation that it is actually rotating too quickly for the output to keep up...so you lose bytes, and the data stream get corrupted. This may part of the issue.

I corrected this initially by doing error checking on the data stream, but eventually had to just slow it down.

Try it again with the Neato rotation slowed down, or with a different RPM controller. If you have a way to inspect the data stream, you should try that as well to see if anything is missing.

How are you controlling the spin rate?


Originally posted by billy with karma: 1850 on 2017-01-17

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by wt70707 on 2017-01-17:
Hello Billy, there is tool to set the speed with the Teensyduino controller. I had ever change it to 200rpm, but it makes it worse. Here is the link to the tool: https://www.getsurreal.com/products/xv-lidar-controller/xv-lidar-controller-quick-test?v=47e5dceea252

Comment by wt70707 on 2017-01-17:
We also consider to inspect the data stream, but from the test, the dropping bytes can be anywhere, so I can't just discard "single" data. And for each rotation of 360 degrees, all exist "bad data", so I can't discard the whole 360 points of each rotation also.

Comment by billy on 2017-01-17:
If the lidar isn't working then it's hard to help with the mapping. Can you post one revolution of the data stream using HEX or DEC from the input of the UART. Preferably with a space between packets. Each packet starts with 'FA' or 250 and is 22 bytes long.

Moderators: I know. We're off topic.

Comment by wt70707 on 2017-01-18:
I put two column of data in the answer: one is 4hz(240rpm) and one is 5hz(300rpm). The format for each column is: A,{Angle},{Distance in mm},{Signal Strength}. I got it using Arduino tools.

Comment by fyi on 2019-05-22:
did you solve this? @wt70707

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.