|Surveyor Robotics Journal|
Sat, 24 Jun 2006
SRV-1 autonomous wander mode and some new buttons
We've posted a test version of SRV-1 firmware along with an update to the SRV1 base station console (SRV1Console), which are downloaded from http://www.surveyor.com/srvdownload/index.html. The firmware and console updates are designed to work together, since some button definitions have been changed. You'll also see a classy new set of buttons on the console, courtesy of Ty at ThinkGeek.com.
Most of the buttons are obvious, but a couple of changes are enable/disable buttons for the IR obstacle detection, and enable/disable buttons for the autonomous wander mode.
The wander mode is interesting - the robot is navigating solely via the video sensor, and while it can get confused by reflective surfaces and lighting changes, it does produce some fun and occasionally impressive behaviors while exploring.
Basically, you orient the robot so that it's looking at a floor surface that defines the space in which it needs to be confined. By pressing the "wander on" button, image characteristics of the floor surface are captured, and the robot will move around, trying to stay within the space defined by that floor surface while not running into things. There's lots of opportunity to improve the image processing and motion algorithms, and it's a good idea to keep an eye on the SRV-1 while its wandering until there is confidence that it won't get itself into trouble, but we look forward to hearing how this works for others.
Here's a brief Quicktime video of the robot in "wander mode". It really is operating autonomously - click on the image to view.
Fri, 16 Jun 2006
SRV-1 firmware update
We've posted a minor update to the SRV-1 firmware, changing the function of the red triangles in the SRV1Console to increase/decrease motor speed, and changing the function of the little yellow and brown icons to turn on or off simple obstacle detection - the robot stops moving forward if it detects an object when this is activated.
The update can be downloaded from
though it should be saved as srv1.hex before uploading to the robot
notification feature added to SRV1Console
We have added the ability for messages from the SRV-1 robots to trigger HTTP actions, such as calls to email CGI's, message logs, etc. We haven't tried to hook up to an email CGI, though something like http://www.perlfect.com/articles/sendmail.shtml should work. However, we have added a simple echo server into SRV1Console's built-in WebcamSat server so that this feature can be tested.
First, download and install the latest SRV1Console distribution -
Then take a look at srv_notify.config in the main SRV1Console directory. At the moment, there's just a single entry -
The SRV-1 robot already generates a startup message, so we're just looking for the "SRV-1" string in that startup message. When it's detected by the SRV-1 console, an HTTP request is issued - in this case, it's http://localhost:8888/echo?msg=SRV1+startup+message
Through a browser, you can view the echoed messages here -
To clear the message list, use -
This is a really primitive example, but hopefully shows the possibility of this feature. Basically, by adding various messages to the SRV1 firmware (e.g. motion detect, low battery, stalled motor, etc), we can trigger useful notification messages. A representative srv_notify.config entry might look something like -
Fri, 09 Jun 2006
Windows .exe version of SRV1Console; change from javax.comm to RXTX
We now have a Windows executable version of SRV1Console, so the console can be launched with a double-click instead of having to open a DOS/CMD windows and typing a command line to launch Java. This latest version is still distributed in a zip file, though a Windows installer is planned for later in the month. Anyhow, grab it from -
and let us know if there are any problems.
We actually tried to create SRV1Console.exe earlier, but had problems connecting to the USB radio interface through javax.comm. However, after tracking down a similar problem with the Java on the Mac, we switched from javax.comm to the RXTX serial comm library on the PC, and found that using the Windows version of RXTX solved our .exe problem. It's nice when things like this work out.
The only downside is that the RXTX library is a bit more complicated to install on the Mac - you can find instructions in the INSTALL file in
as you have to run the installer, and then a shell script called fixperm.sh to create a mechanism of locking the serial devices. This is a bit of a pain, but once complete, the serial comm seems to be solid. There's probably a similar procedure for Linux, so more information can be found at http://www.rxtx.org
Wed, 07 Jun 2006
latest news ...
We've been really busy building and shipping robots since releasing the "tracked" version, especially after the SRV-1 got very visible coverage on www.engadget.com, so there hasn't been much time to write about various projects. However, we've caught up for the moment, waiting for a batch of USB radio boards to come from the PCB fabricators (we've moved beyond using the skillet for mounting the SMD components), so it seemed like a good time to update the robotics journal.
One of the production issues we've encountered has been with variation in stiffness of the tank treads - we've developed a procedure to pre-stretch the treads in advance of mounting on the robots, but we're also getting bids from fabricators to build our own treads and hubs. The basic design of the existing drive components is good, but we'd like a somewhat softer material for the treads, and we want to add a flat surface to the inside rim of the hub to host some reflective markings which can be used to add incremental wheel encoder functionality. Creating our own molds will be expensive, but should pay off in the long run.
Regarding wheel encoders, we've received a number of requests for this functionality, and have come up with a very low cost approach, as mentioned above, by marking the inner rims of the hubs with a reflective pattern and using an optical emitter/detector pair to catch the markings as they rotate by, taking advantage of the capture/counter registers on the ARM7. We'll be prototyping this setup next week, and plan to add the functionality to future circuit boards. We'll also look at the possibility of a retrofit kit for existing robots.
Other than that, we have a lot of work to do on the software. The next Java base station console update will include a "notification" feature, so that certain messages from the robots will trigger HTTP requests from the console. Notification examples might include CGI posts that would trigger the sending of emails, SMS or pages, browser alerts, etc, based on motion detection, object recognition, robot functional problems, etc. On the robot firmware side, we're working on development of some basic autonomous behaviors, as well as the framework for coordination of multiple robots through the IR data link. These are big tasks, but we'll hopefully be able to provide some of the basic components that enable others to build interesting applications.