Skip to content
Xevel edited this page Nov 24, 2010 · 25 revisions

Welcome to the NXV11 wiki!

Here are some stuff about the lidar on the Neato Robotics XV-11 vacuum cleaner.

The data on this page and in the provided code are not based on official information, so take everything with a grain of salt...

See https://sites.google.com/site/chenglung/home/xv-11-open-lidar-project-matlab-script too for a matlab version with it's own improvements !

Data format

The periodicity of the data is 1446 bytes.

It is organized as follow :

5A A5 00 C0 XX D1 <data>

where XX is a varying number, often around 0x9E and it could represent an information about the current rotation speed of the module. FJ_Sanchez posted interesting data about this.

<data> is composed of 360 group of 4 bytes, organized like this :

byte 0 : <distance 7:0>

byte 1 : <"invalid data" flag> <some other flag> <distance 13:8>

byte 2 : <some value 7:0>

byte 3 : <some value 11:8>

As chenglung points out, the distance information is very probably in mm, and coded on 13 or 14 bits. This would put the tests made by Sparkfun in a room of around 3.3m x 3.9m (11ft x 13 ft ?), which seems reasonable to me. 13 bits should be enough if the sensor is destined to work up to 6m. This needs some tests...

The bit 7 of byte 1 seems to indicate that data could not be read.

It's interesting to see that when this bit is set, the second byte is always 80, and the values of the first byte seem to be only 02, 03, 21, 25, 35 or 50... When it's 21, then the whole block is 21 80 XX XX, but for all the other values it's the data block is YY 80 00 00 maybe it's a code to say what type of error ? (35 is preponderant, 21 seems to be when the beam is interrupted by the supports of the cover)

The bit 6 of byte 1 is sometimes set.... yet I still can't make sense of what it could indicate, as it can be set on some samples of a suite of valid data...

Bits 5 and 4 are always 0 on the data I looked at...

Byte 2 and 3 look like the LSB and MSB of a value, in which only the 10 first bits seems to be used... Or, maybe byte 2 is an other data and byte 3 is a bunch of flags...

Currently, my guess is that byte 2 is an indication of quality data (maybe on 7 bits), and byte 3 has some flags telling something about what aspect of this data is to be trusted...

Clone this wiki locally