Not All Serial Communication Captured with Neato XV11

asked 2013-11-22 20:06:49 -0600

meatspace_explorer gravatar image

updated 2014-01-28 17:06:38 -0600

ngrennan gravatar image

I've been trying to get a Neato XV11 up and running following the first part of Fergy's tutorial (1) and using the drivers updated for firmware 3.1 (2) by Vegelius (mine is running 3.2, but API looks the same). I was running into a problem I've seen a couple people have had "Waiting on transform from base_link to map to become available before running costmap, tf error: " that I thought was just my own misunderstanding of tf /ROS but have since figured out is related to topics not being published, I think because of a serial communications issue.

If I run the Neato node (roslaunch neato_node bringup.launch) immediately after I restart the base by holding down the power button, the LDS (lidar scanner) doesn't power up/spin, but messages are published to /odom, /base_scan (all ranges are 0) and other topics as expected. Navigation loads as well upon roslaunch neato_2dnav move_base.launch, and I can see the map distributed with the code in RViz. If I have picocom open before connecting, when I connect I see the commands getMotors and getScanRanges echoed back. All's well, expect my laser scanner isn't spinning. If I try to start a new connection from picocom to manually start the LDS rotation, neato_node errors out.

Fergy's tutorial (first link) notes this failure to spin as a common problem, and recommends restarting the node. However if I re-run the bringup.launch file, the LDS spins up but nothing is published on the aforementioned topics. There are no errors, except the aforementioned "Waiting on transform from base_link..." and "no laser scans published on base_scan." I suspect this has something to do with how Python (specifically in the driver code, neato_driver.py) is handling the serial port. If I run picocom on /dev/ttyUSB0, it flushes responses from the buffer upon opening that the python code is supposed to handle (scan ranges, sensor data), and continues to capture them thereafter. That doesn't seem right.

I'm not sure what approach to take: either 1) figure out how to get the LDS running while everything is publishing properly or 2) figure out why things aren't publishing upon restarting the node.

In case it's useful, I am running Hydro on a 2012 Macbook Air running Ubuntu 12.10. API command of the XV-11 work fine through picocom.

1) xv11hacking.wikispaces.com/Connecting+to+ROS

2) github.com/vegelius/neato_robot/commit/c8ad29d9c861f82d27729c569cedf62db42d3ace

edit retag flag offensive close merge delete

Comments

Hi, I have the same issu with the serial port. Did you manage to solve it? FYI, I'm using neato ros package wrote by Mike Ferguson, on Groovy, Ubuntu 12.10.

Boumy gravatar image Boumy  ( 2014-02-28 03:37:43 -0600 )edit

Not as of mid March, though I haven't had much time to work on it.

meatspace_explorer gravatar image meatspace_explorer  ( 2014-03-12 19:35:38 -0600 )edit