Trossen Dynamixel High Thread Banner
Page 5 of 20 FirstFirst 12345678915 ... LastLast
Results 41 to 50 of 197

Thread: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

  1. #41
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 12:06 AM
    Hash79 has just posted



    Xevel, In that case I will provide YOU with some more data Wednesday evening if Sparkfun doesn't beat me to it!!

    I am going to check for test modes and see if i can fake the encoder signal so we don't need to rotate the module and i can just face it at an object and increase/decrease distance to get some highly controlled data from it. Once the data makes sense we'll let it rotate and see if everything stays the same. It shouldn't be very difficult with one to play with and experiment, its not like Neato is trying to hide the data.

    I am pretty sure Sparkfun will post some better dumps before Thursday though!

    -Hash
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  2. #42
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 12:49 AM
    shimniok has just posted


    Quote Originally Posted by Nammo
    From the SparkFun logical analyzer screenshot, it's an 8n1 serial UART. That means you really only have 92160 bits to play with. You can see there are delays between each 32-bit data burst so they're not even using the whole channel.
    It decodes as 115200 8N1 with the saleae logic analyzer software. There are definitely periods of no data between the 32 bit bursts. Xevel's x-y plot shows a 1446 byte periodicity of the data. And there's 6 bytes between every 360 bytes sent. That all suggests 4 bytes sent per degree. And the device supposedly completes 10 sweeps per second... seems like there's a fact or assumption that's off somewhere.
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  3. #43
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 1:38 AM
    Xevel has just posted


    Quote Originally Posted by shimniok
    It decodes as 115200 8N1 with the saleae logic analyzer software. There are definitely periods of no data between the 32 bit bursts. Xevel's x-y plot shows a 1446 byte periodicity of the data. And there's 6 bytes between every 360 bytes sent. That all suggests 4 bytes sent per degree. And the device supposedly completes 10 sweeps per second... seems like there's a fact or assumption that's off somewhere.
    I measure around 0.196 s between two "sync" commands => ~5Hz. Yet, I saw by looking with the logic analyzer software that sometimes, the frequency goes up, eliminating the resting time between two "packet" of four bytes (in one of the shielded dumps). I haven't verified the numbers, but I think this increase in speed still does not double the frequency.
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  4. #44
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 1:49 AM
    shimniok has just posted


    Quote Originally Posted by Xevel
    I measure around 0.196 s between two "sync" commands => ~5Hz. Yet, I saw by looking with the logic analyzer software that sometimes, the frequency goes up, eliminating the resting time between two "packet" of four bytes (in one of the shielded dumps). I haven't verified the numbers, but I think this increase in speed still does not double the frequency.
    I noticed some of that too. Without doing more coding to filter out all the real syncs, I plotted the time between every occurrence of 5A and I found the times are all over the place. Sometimes nearly 200ms. Maybe the 10Hz assumption is wrong. Anyway, I guess this is secondary to the question of the other two bytes if they aren't part of a 32-bit long word. I wonder if there's any relationship or pattern that can be seen between the two... I'm about done for tonight, so... guess I'll have to read the forum tomorrow to find out
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  5. #45
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 2:17 AM
    Xevel has just posted


    Ok I have written a little Python script to do the same thing.
    Next stop : making it read on the serial port and update its visualization accordingly. As I still don't have the robot (^^'), I will just try to spoof the lidar with an Arduino, making it output the recorded data at the right rate.

    Here is the code for you to test in demo mode (using a file). This appli is nearly identical in functionality to the .net appli I posted earlier, except that it will work on all plateforms (Win/Lin/Mac) with VPython (http://vpython.org/index.html) installed.
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  6. #46
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 2:25 AM
    Xevel has just posted


    Quote Originally Posted by shimniok
    I noticed some of that too. Without doing more coding to filter out all the real syncs, I plotted the time between every occurrence of 5A and I found the times are all over the place. Sometimes nearly 200ms. Maybe the 10Hz assumption is wrong. Anyway, I guess this is secondary to the question of the other two bytes if they aren't part of a 32-bit long word. I wonder if there's any relationship or pattern that can be seen between the two... I'm about done for tonight, so... guess I'll have to read the forum tomorrow to find out

    Well be careful not to plot for any "5A", they appear as part of the transmitted data sometimes...
    As the module has an optical encoder integrated, it should be capable of determining it's instantaneous speed (with some interpolation, but the assumption that the speed does not vary much on a 32th of rotation can hold, I think) and put this info with the distance data... the question is : is it really something they would want to put 360 times per rotation ?

    I though that the last two bytes of the "sync" command could be an indication of the current speed (it does not vary much during one turn on normal operation, but this could be interesting at startup or to detect hardware defects), but I haven't compared the correlation between the time between two "sync" and this value...
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  7. #47
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 7:36 AM
    Xevel has just posted


    Ok this version seem to work.

    In the archive, you will find the python visualizer, as well as the arduino sketch that spoofs a lidar (using a few full revolutions, because I only had an old Duemilanove(with 16k of flash) available).

    How to make the program work :

    - install VPython
    - install PySerial
    - open XV-11_test.py in VIDLE (installed with VPython)
    - set your COM port
    - F5 to run. Maintain left+right mouse button + move the mouse up and down to zoom.

    How to make an arduino spoof the lidar:

    - program LidarSpoofing on your arduino (works even with older Atmega168 based boards), and update your com port

    How to extract your data to give them to the spoofer (from a Saleae Logic Scan, the long and secure way):
    - Open the session in Saleae Logic
    - Choose "Analyser" > "Async Serial", set the correct channel and check "Use Autobaud"
    - click the "Export Analyser Data" of the analyser you just created, save to a file
    - copy the content (or just part of it) into an OpenOffice Calc spreadsheet, choose the comma as separator
    - discard the column containing the time, and the headers if any
    - save the spreadsheet in .CSV format
    - select the part you want to use, copy it into the LidarSpoofing/data.pde file, replacing the current data, and update the number of sample (equal to the number of lines you selected). Be careful not to copy too much, the arduino has limited flash memory.

    - program the arduino with this sketch, then run the python script. The last scan will probably be messed up, but it should go back to normal at the next revolution.


    I can't really get further until some nice people release new data ^^
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  8. #48
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 11:46 AM
    FJ_Sanchez has just posted



    I think that 5th byte is something like turn speed. I have compared interval between headers and the value of the 5th byte in the header. The left graph is a plot of value of the interval, the right graph is the plot of the different values of the 5th byte.

    Last edited by Tyberius; 11-24-2010 at 02:07 PM.
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  9. #49
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 12:25 PM
    shimniok has just posted


    Oh, btw, I should have mentioned... I just want to contribute to Xevel's (or whoever else's) success just because it's fun to play with the data and find patterns -- I'm _not_ trying for the prize, just contributing to the fun if I can.

    FWIW, after the A55A, the next long is always C000 in every file sample.

    The next long after that is 0xD191 (%1101000110010001) but the least significant byte varies a little as stated. The value of the bytes isn't quite as tightly related to the delay between syncs as I was expecting:

    Image Needs to be fixed, please PM me updated link

    (I've scaled down the axes which eliminated three or so obvious outliers, but this is the bulk of the no shield run data points for sync)

    Would be nice to look at the output stream if someone manually varied the spin speed with their finger.

    Hash79 -- can you make the data available to us all?

    Xevel -- what tool are you using for graphing the polar chart and the youtube vid (cool vid btw, nice work!)
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

  10. #50
    Join Date
    Dec 2007
    Location
    Trossen Robotics
    Posts
    3,111
    Images
    933
    Rep Power
    109

    Re: The Open Lidar Project - Hack the Neato XV-11 Lidar for a $200 Bounty!

    Tue 11/23/2010 12:44 PM
    FJ_Sanchez has just posted


    But you can check my plots and see the big similarity between both. Also it looks like a PI algorithm controlling speed, what also makes sense... I'd bet it's something speed related...
    Andrew Alter
    Trossen Robotics
    Join the Robotic Combat Revolution @ Mech Warfare!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •