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 0x91 and it may represent an information about the current rotation speed of the module. A guy I don't remember the pseudo posted interesting data about this, but all the posts on the Trossen Robotics forum disappeared before I could have more than a quick look... More on this later.

<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 data block is XX 80 00 00 , where I found XX being 02, 03, 21, 25, 35 or 50... 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