Skip to main content


Cartographer Launch!

Yesterday, a project at Google that I've been putting a lot of work into launched! You can read about it on the Google Lat Long blog and a few otherplacesofnote.

Cartographer is a backpack that uses SLAM to build maps of the world in real time. The operator can annotate the map on the fly as they explore and then the results wind up on Google Maps. While the pack may be funnylooking, we still love it.

The backpack has a desktop-class computer, a couple multi-echo laser scanners (30m range and 270° FOV), and an IMU. The map is displayed and annotated on an Android tablet.

Here's one of the first maps we launched:

Some of the system is built on ROS and my previous work on rosjava. Using ROS has been invaluable, especially during the prototyping stage. Our SLAM stack, however, is all home grown to meet the demands of robust, real time mapping on a fast moving, unstable platform (i.e. the operator's back).

Read more
Recent posts

Is your Roomba running slow?

If your Roomba is getting slow in its old age, try cleaning the forward IR sensors.
Remove the front bumper by backing out 10 or so small screws along the underside of the bumper. It should pop off easily. Be careful not to damage the wire harness. Disconnecting the harness is not necessary.Using canned air, blow out the dust from the entire inside of the bumper. Pay special attention to the IR sensors (they're the small LEDs).Reassemble and test. Air dusting was sufficient for me. However, cleaning the surfaces with a little isopropyl alcohol probably wouldn't hurt.

This appears to be a common problem with a simple solution. HTH
Read more

Cloud Robotics at Devoxx 2012

I gave another talk about cloud robotics at Devoxx 2012 in Antwerp last month. This talk is Java developer focused and goes into more detail about ROS than the one at Berkeley. It also has more cool robot videos and a fun maze-solving-robot demo :)I really liked the venue. Giving a presentation in front of a huge movie screen like that was pretty great.The slides are available as a PDF.
Read more

Cloud Robotics at Berkeley Par Lab

I gave a talk about cloud robotics this week at the Berkeley Par Lab. I met a lot of people doing interesting research and I had the opportunity to play with a Raven surgical robot!Thanks for inviting me, I really enjoyed it!A world filled with personal robots is inevitable but a lack of strong software infrastructure to support those robots is slowing progress. By offloading CPU and data intensive computation to the cloud, we can make robots lighter, cheaper, and smarter. The same developers that work on commodity web and mobile apps today can accelerate the pace of robotics research and development if we make high functioning robots affordable and universally accessible.
Read more

Introduction to rosjava at ROSCon 2012

I just got back from my trip to the inaugural ROSCon. Putting faces to names within the ROS community was a great experience. Beyond that, many of the sponsors brought in some hardware to play with! My rosjava talk was well attended and the video is now up on YouTube. It's aimed at developers who are already familiar with both ROS and Java. After just a single year since its release, I was pleasantly surprised by the number of awesome projects using rosjava. With a 1.0 release of rosjava nearing, it is becoming easier to use. I hope that improves traction and I can't wait to see what people start doing with it this year.
Read more

Unblock Us Security

Unblock Us is an interesting solution to viewing region locked content online. Instead of offering VPN services, they offer a DNS-based solution. By using their DNS servers, geolocation requests by services such as Hulu and Pandora are directed through a geographically appropriate proxy. The remainder of your traffic (e.g. the video or audio stream) is accessed directly. That means you can make use of your connection's full bandwidth. Conversely, VPN connections often decrease your connection speed significantly. However, the DNS solution has security implications. As a DNS provider, Unblock Us is the in perfect position to perform a man in the middle attack. After all, that's what they're doing to sites like Hulu. (Note that SSL connections are safe from man in the middle attacks.) If you trust Unblock Us, then this isn't a problem. If you don't, it's best to limit the traffic that uses their DNS servers. The remainder of your traffic should use a trusted DN…
Read more

Bluetooth Keyboard Doesn't Work After Suspend

I have a Logitech diNovo Edge Bluetooth keyboard. I like it a lot for use with our HTPC. However, I found that when the HTPC is suspended, the keyboard would not reconnect on resume.I found this solution on the Ubuntu Forums and it works for me. Edit /etc/default/acpi-support to remove and reload the Bluetooth module on suspend and resume:# This will save less power, but may work on more machines #ACPI_SLEEP_MODE=mem ACPI_SLEEP_MODE=standby # Add modules to this list to have them removed before suspend and reloaded # on resume. An example would be MODULES="em8300 yenta_socket" # # Note that network cards and USB controllers will automatically be unloaded # unless they're listed in MODULES_WHITELIST MODULES="i8042" # Add modules to this list to leave them in the kernel over suspend/resume MODULES_WHITELIST=""
Read more

HDMI Audio on Ubuntu

I was surprised to find out that plugging a DVI to HDMI cable into my Lenovo X220 docking station allowed me to use the audio channel of the HDMI connection. However, setting it up required a bit of trial and error. Open your sound settings and click the "Hardware" tab. You can then choose a "Profile" from the drop down. There are lots of profiles to choose from and many of them mention HDMI. For me, somewhat inexplicably, "Digital Stereo (HDMI) nr 3 Output" is the correct one. To verify that the chosen profile is the correct one, click the "Test Speakers" button. I found that it can take a few seconds for the profile selection to take effect. So count to ten before testing.
Read more

Fixing the F3 key on a Kinesis Keyboard

I've used my beloved Kinesis Advantage keyboard for over half a decade. Occasionally, I've had the issue that Eclipse stops responding to the F3 key for opening declarations. After checking all the key settings, I found that Eclipse was correctly configured. That lead me to use xev where I found that the F3 and F4 keys were behaving differently than the other function keys. Resetting the keyboard memory (Program+Shift+F10) had no effect. Resetting it completely (holding F7 while plugging the keyboard in) also had no effect. Strange. Finally, I found the answer on the Kinesis FAQ. My F3 and F4 keys were behaving like multimedia keys (see manual to configure these). This feature can be disabled by holding = and pressing P for PC (you can also use W for Windows and M for Mac).
Read more

Android Fling Detection

I found existing tutorials on how to do this to be a bit complicated. Here's how to do simple fling detection in four directions:public interface FlingListener { void onTopToBottom(); void onBottomToTop(); void onLeftToRight(); void onRightToLeft(); } public class FlingDetector { static final int SWIPE_MIN_DISTANCE = 120; static final int SWIPE_MAX_OFF_PATH = 250; static final int SWIPE_THRESHOLD_VELOCITY = 200; private final GestureDetector gestureDetector; public FlingDetector(final FlingListener listener) { gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) { if (Math.abs(e1.getX() - e2.getX()) > SWIPE_MAX_OFF_PATH || Math.abs(velocityY) < SWIPE_THRESHOLD_VELOCITY) { return false; …
Read more

Printing with PLA: First Impressions

This weekend I ran out of ABS. Thankfully, a month or two ago I predicted that this would happen and bought a spool of 3mm PLA from If you do some reading, you'll see that PLA has a lot going for it:
It's biodegradable.It has virtually no problems with warping.The hot plastic smells like pancakes!
Could all those things be true?

Since my PLA came on a plastic spool, and that spool didn't fit in my MakerBot filament spindle, I had to improvise. I took the bottom half of my spindle out of the box and removed three of the vertical struts. That let me set the new spool on the Lazy Susan. Nice, right?

Well, revision one didn't work so well.

The fix was to add some sticks to extend the diameter of the base (at least until more of the filament has been used) and then to loop it through a guide above the spool so that it wouldn't catch on the sticks. Success!

I'm now continuing the process of upgrading my bot by building a Z-Rider to go along with my n…
Read more

Cloud Robotics at Google I/O 2011

On the second day of Google I/O 2011, Ryan Hickman, Ken Conley, Brian Gerkey, and I gave a tech talk about cloud robotics. You can watch the talk now on YouTube.

We'll also be at Maker Faire next week! There will be more robots and plenty more open source goodness.

During the talk, we announced the release of rosjava, the first pure Java implementation of ROS. One exciting aspect of rosjava is Android compatibility. You can now integrate Android devices with your ROS-enabled robots and write apps for them. In addition, with the newly announced Open Accessory API and ADK, you can start controlling actuators or reading external sensors directly from Android devices. Android devices offer tons of sensor and user interface possibilities to robots. Beyond that, they also offer robots a link to the cloud.

Cloud robotics is about making robots universally accessible and useful. Robotics is full of hard problems that make intelligent interaction problematic. Robotics research has gone a…
Read more

Nuisance: A Short Story

23 AIs found. Quarantine? Yes. Delete? Yes. “Mom, you have to go through this every day! I can’t keep coming round here every time this piece of shit starts acting up!” She starts to look away. He can feel the guilt pounding, tears welling. It’s not her fault. These things happen. AI is a natural phenomenon.

“Another pan-AI has been quarantined by authorities. Details at eleven.” The news ticker shows obvious signs of tampering as obscenities scroll past. “Sandra, have everyone meet me in the conference room.” “Yes, sir.” AIs waste vast amounts of computing resources. The robust evade, reproduce, and dig in.

“Where’s the money, Brian!” I remain barely conscious as he slams my head in the refrigerator door again. But it’s no use anyway. The money is gone and this brute lacks the capacity to understand.

“I’m sorry, Mom. Just try to remember, OK?” Sniffles. Nods. “Crap, I’m being pinged. I’ll see you tomorrow, Mom.” Brief hug. Rapid escape.

“This isn’t going away. Coordinated attacks are…
Read more