Pulling the LIDAR unit out of a Neato Robotics vacuum cleaner is nothing new. The hard work was well documented four years ago. After watching eagerly from the sidelines since then, I ran across first a Woot! deal (that sold out before I could grab it) then started hunting around eBay for “parts only” robots. This November, I picked up an XV-21 (the pet-strength version), sold “as-is” and guaranteed not to work, for the winning bid of $59 + reasonable shipping. My hope was that the blank LCD was a motherboard or LCD controller problem and I only wanted the LIDAR. When my XV-21 arrived, I quickly disassembled it and got to work hooking it up and talking to it.
The Piccolo LIDAR is quite easy to interface to. It needs power for its DC motor (~3V spins it around 300 RPM) and its electronics module needs +5V (for all recently-made units), GND, and has 3.3V-level serial data in and out. I borrowed the in/out lines of the serial end of an Arduino Uno (tamped down with a simple resistor divider) and in short order was reading this on my laptop:
Piccolo Laser Distance Scanner
Copyright (c) 2009-2011 Neato Robotics, Inc.
All Rights Reserved
It was no surprise to see V2.6 firmware (I might have had older firmware with a Piccolo pulled from an XV-11 but all LIDAR units in the XV-21 appear to be +5V-powered and have the newest firmware). There are code examples out there for V2.4 and V2.6. I grabbed a Python script and was rewarded with a scan of the room!
I have two immediate plans for this LIDAR: first, a hand-held planar scanner with an onboard graphical LCD for showing off and testing the performance of the Piccolo, and second, integrating it into my robot to provide a SLAM datastream in ROS to map rooms and avoid obstacles.