Wednesday, November 7, 2012

Hidden Neato menu in newer 2.6 firmware!

Anyone who has updated their Neato firmware will notice a new message is returned when you enter " Help" when connected to the robots USB port.  Entering Help with a space before it used to return an extended hidden help menu with a lot more commands!  When Neato released the 2.6 firmware update (or maybe earlier?) they removed the " Help" and instead you got this response...

Nice try, but I'm not falling for that one again! :P

Some commands such as "SetStreamFormat" let you actually SEE what the robot is doing while driving around and mapping the environment internally.  Some of the guys on Trossen Robotics forum (Chunk) have made really good progress using the output from this command!  Sadly this is one of the commands removed from the 2.6 firmware version.  But not for long!!

If you just press and hold the orange Start button and Back button at the same time for 4 seconds the robot will reboot into a different firmware that includes all those previous commands!  Below is a capture from the on-board 4 pin serial port that shows debug data while the XV-11 is booting.  

This capture is of the normal reboot (just holding the orange Start button for 4 seconds)

Neato Robotics XV-11/XEB V11:16:01
Copyright (c) 2006-2010 Neato Robotics, Inc

Loading installed application
Starting app
NEROSConfigErr: BlowerType=-1 (Expected 0
ConfigErr: BrushMotorType=-1 (Expected 0
ConfigErr: SideBrushType=-1 (Expected 0
FCB Invalid! Configurations may need to be initialized.

 Build 15840 Nov 14 2011 16:09:19

Init A2D
Configure power to STANDBY.
Power On reset: 8 :Software
DEBUG compile

Edison Design Group compiler

Init Pushbuttons.Finished halInit();
Sending GetVersion...
RCVD: ''
Finished LDS getversion cmd in 5 ms
LDS reports build , we need build 15295 (size=16512)
Stop LDS driver to prevent contention
Finished LDSBurn.
Sending GetVersion...
RCVD: ''
Finished LDS getversion cmd in 4 ms
mmcReset Error

PH-drvrInit:Ignoring detected battery type because XV11.

PH-drvrStart:vacuumType(): Invalid SCB blower value. How did we get here?!

This capture is after holding the Start and Back buttons for 4 seconds.

Neato Robotics XV-11/XEB V11:16:01
Copyright (c) 2006-2010 Neato Robotics, Inc

Loading factory application
Starting app
NEROS Build 12882:12959 Jul 26 2010 22:38:28

Init A2D
Configure power to STANDBY.
Power On reset: 8 :Software
DEBUG compile

Edison Design Group compiler
Enabling USB-CDC ...

Crashblock file: @ 0
Crashblock fn:
Crashblock TOS:0x00000000
Crashblock watchvalues:

Init Pushbuttons.Finished halInit();
                                    mmcReset Error


It appears this may be a secondary firmware loaded as a failsafe in case a USB firmware upgrade fails.  This would make tech support easier as you have a firmware to revert too in case something goes wrong.  You can see from the dates in each print out that they are completely different builds.

Any questions?  :)

Thanks to Theo Deyle for e-mailing me and inspiring me to work on this some more!  Hopefully his own hacks will be posted soon as well!

Sunday, June 3, 2012

$10 Series Elastic Actuator!

Series Elastic Actuators will be showing up in more and more robotics designs meant for public use.  For the home hacker they can be very useful as well.  Check out the videos below and then start researching robotic arms and walking robots.  Chances are they are using SEA's!

Intro and demo video showing the low cost SEA operating.

A more detailed look at the SEA and the components used to build it.

Cool website with an Open SEA design

BADASS 7 degrees of freedom robotic arm using SEA's
Hizook post on the 7 DOF arm with Video!

Design and Analysis of Series Elasticity in Closed-loop Actuator Force Control
Series Elastic Actuators

Friday, January 20, 2012

Neato LIDAR Schematic!

A small first step to an open source LIDAR based off of the Neato XV-11 LIDAR...

Below is a first revision schematic of the Neato XV-11 LIDAR Piccolo board.  It was created by hand and I will post a video later explaining how it was done for the curious.  For the seasoned veterans just take a look at the schematic.

Some components were easy to identify and others were not so easy.  The transistors are basically a best guess based off of the minimal identifying marks on the SMT package.  I am not 100% sure how the laser diode control circuit works at this point so I will take some measurements of a live module to test my assumptions.  Based off what I know so far the cathode of the laser module is pulsed to power the laser and it is held slightly above 0V and then lowered closer to 0V momentarily to rapidly turn the laser on and off.

Stay tuned for a video explaining the whole process along with more details.  See CAD file at the bottom of page for raw schematic which was done using TinyCAD...  FREEWARE!!

Saturday, November 26, 2011

Laser Pulse Analysis

I have seen on a few forums where people discuss safety issues related to the laser used in a LIDAR. How long can the laser be powered on, etc. Mostly concerning eye safety so you don't go blind!

I setup a test with the Neato LIDAR so I could measure the laser pulse while the LIDAR assumed it was rotating at 300 RPM. Using a microcontroller (msp430F1232) I simulated the pulse train that is normally received by the Piccolo Board from the slot sensor. This meant I could connect the scope to the LIDAR and take some measurements.

Here are a few pictures of my test setup and from my notebook on what I found.  Keep in mind until I determine more about the laser module this information is incomplete.  I'm just getting warmed up!

The test setup...  Black box above the breadboard is used to supply the 3.3V for the Neato Piccolo board and supply the simulated rotation signal.  The small red board on the breadboard is a FTDI board feeding data from the LIDAR into my PC.  

Laser is pulsed on for 200uS and off for 350uS while operated at a simulated 300RPM.

Scope probe in the back of the module measuring laser feedback photodiode.  Wires from the Piccolo Board are soldered to a header which is placed in the breadboard.

Some information about the LDS HORIZ BOARD which the Piccolo board and module above mounts too.  Pulse train shown at the top, notice the start is a half long pulse followed by 14 full length pulses.  This is how the module determines its rotational speed and makes adjustments to the motor speed which is spinning the module.

Observational data about the laser pulse, maximum and minimum rotational speeds that the laser will operate, etc.

Friday, November 25, 2011

Further Disassembly and Analysis...

Check out the video for detailed shots of the innards...