Neato mini USB cable connection to laptopNow that we've got a pretty good handle on getting old Neato robot vacuums up and running, including talking to their brains via USB, it's time to dig into the software side and explore its potential. I could adapt my SGVHAK rover code to control a Neato, but I think it's more interesting to get my Neato up and running on ROS.

Unsurprisingly, there already exists a neato_robot ROS package for Neato. Equally unsurprisingly, it was maintained up to ROS Hydro and since abandoned. ROS releases are named alphabetically, meaning this code is three releases behind my installation of ROS Kinetic and a whopping five releases behind the current state of the art ROS Melodic.

But hey, it's all open source, if I want to get it to function all I need to do is roll up my sleeves and get to work. Since it's out of date, I think it'd be a bad idea to grab the pre built package. Instead I followed links to its source code repository (last updated October 2014) and cloned it into my local catkin workspace.

And continuing on the trend of not being surprised, this code did not work immediately. Publishing events to /cmd_vel topic did not elicit robot chassis movement, and subscribing to /odom or /base_scan received no data. Fortunately this node was written in Python, which I hope would be easier to debug than a ROS node written in C++. But either way, it's time to dig in and figure out what it is doing and how that differs from what it is supposed to be doing.