PR2 is famous for (among many other things) folding laundry. Specifically, UC Berkeley’s PR2 demonstrated back in 2010 that it could take a pile of towels fresh out of the dryer and neatly fold and stack them. This took something like 20 minutes per towel, but the important thing was that it was completely autonomous: as a human, you could leave the robot by itself with a jumble of towels and washcloths, and then come back a few hours later and everything would be taken care of.
Since 2010, we’ve seen a few more isolated examples of PR2s folding things, but what we’ve been waiting for is a demonstration of a complete laundry cycle. And it looks like we’re now almost, almost there.
A big piece that’s been missing from the laundry cycle is the ability of the PR2 to do the first bit: picking up dirty clothes, taking them to the washer, and putting them in. In a video posted yesterday, Siddharth Srivastava and co-authors Shlomo Zilberstein, Abhishek Gupta, Pieter Abbeel, and Stuart Russell show that they’ve just about mastered these tasks:
Details can be found in their forthcoming paper “Tractability of Planning With Loops,” in the proceedings of the 2015 AAAI Conference on Artificial Intelligence.
This is obviously a huge step, but how close are we? Here’s what a laundry cycle is, as far as a robot is concerned:
- Locate dirty clothes
- Pick up dirty clothes
- Place dirty clothes in laundry basket
- Take laundry basket to washer
- Open washer door
- Place dirty clothes in washer
- Add soap
- Close washer door
- Program and start washer
- Transfer clothes to dryer
- Remove clothes from dryer
- Fold laundry or put laundry on hangers
- Put away laundry in dresser or closet
I’ve left out a few redundant steps, but that should be the gist of it. And here’s how close PR2 is (as far as has been made public) with commentary about what PR2 hasn’t quite mastered yet.
1. Locate dirty clothes: Mostly complete
PR2 does this in the new video, although it’s very easy and obvious where the dirty clothes are. It would be more complicated in a cluttered room where dirty clothes might be interspersed with clean clothes, or clothes-like things such as blankets. But, as a human, I have trouble with that too, so I feel like PR2 is exhibiting a reasonable amount of competence here.
2. Pick up dirty clothes: Sort of complete
Picking up clothes from a table? No problem. Picking up clothes from the floor? Not a chance. Unfortunately, PR2 cannot reach the floor, but this is a design issue with the robot itself, and not something that can be solved through programming (or by putting your dirty clothes into a hamper).
3. Place dirty clothes in laundry basket: Complete
If there’s one thing that robots have figured out how to do by now, it’s picking up a thing and putting it into a different thing.
4. Take laundry basket to washer: Complete
This is trickier than it might seem, because the robot has to be able to navigate while some of its sensors are occluded, and while holding an object that makes the robot bigger than it’s used to. Earlier work teaching PR2 to push a cart through cluttered environments suggests that these problems are either solved, or solvable. It also looks like the washer has a big fat QR code on it to help PR2 localize, but I’d happily plaster my washer with QR codes if it meant that a robot could do my laundry for me.
5. Open washer door: Complete
It’s hard to tell from the video, but it wouldn’t surprise me if the washer door has been slightly modified to make it easier for PR2 to locate and grip. This isn’t necessarily a big deal: PR2s in home environments are routinely given assistance with washcloths or towels wrapped around handles and drawer pulls to make them easier to manage. It’s also worth mentioning that PR2 likely cannot handle many common configurations of washers and dryers (like the top-loading variety), but that’s not the robot’s fault.
6. Place dirty clothes in washer: Complete
More putting things into other things!
7. Add soap: Complete?
I didn’t see this step in the video, but it’s just another round of putting something in something else, so let’s call it complete.
8. Close washer door: Complete
Weeeeell, it sort of looks like PR2 didn’t push hard enough in the video, but closing is usually easier than opening, because PR2 can just push against the door (no grasping needed). This one can also be called complete.
9. Program and start washer: Probably complete
You can either get PR2 to push buttons for this, or you can slightly modify the washer to be accessible via WiFi. Either way, it’s a relatively trivial problem to solve.
10. Transfer clothes to dryer: Not complete
This task is, at this point, possibly the most difficult for PR2. The issue is that PR2 has to reach into the washer and grasp every piece of clothing before transferring it to the dryer. PR2 has very limited reach with its arms, and it can’t see into the washer to know what to grasp, so it’s not as simple as just reversing the motion that puts stuff in. To be honest, I’m not sure how this is going to be sorted out, although some modifications to its wrist camera could be helpful.
11. Remove clothes from dryer: Not complete
Same issue here as with taking clothes out of the washer, assuming (as we did with the door opening tasks) that the washer and dryer are both front loading.
12. Fold laundry or put laundry on hangers: Complete
At the outset, this was likely the hardest problem for PR2 to autonomously solve, but at this point, the robot pretty well can handle the task. It’s even got some experience with hangers.
Short sleeved shirts!
Long sleeved shirts!
Shirts on hangers!
And of course, towels!
13. Put away laundry in dresser or closet: Not complete
I haven't seen this demonstrated yet, although my guess is that it would be easier than taking clothes out of a washer or dryer. It's a grasping and perception task that I bet PR2 wouldn’t have too much trouble with.
So, what's the upshot here? There are a few things to think about. First, PR2 is very, very close to being able to do an entire laundry cycle autonomously, from start to finish, and that’s amazing.
Second, some of the places where PR2 falls short are due to its design as a general purpose robot. As one of the first (if not the first) true general purpose robotic platforms with the reliability and sophistication necessary to perform a wide variety of tasks, it’s not reasonable to expect that its design would make it capable of doing everything flawlessly.
Finally, there are lots of opportunities throughout these laundry tasks (and in most household tasks) where small modifications to an environment that’s designed for humans can make a big difference by adding some features that are friendly to robots. For example, big fat door handles on washers and dryers. A few well-placed QR codes. Appliances that can be controlled wirelessly. None of these things are disruptive to humans, but they could make the difference between a robot being able to do laundry, or not.
[ UC Berkeley ]
Evan Ackerman is a senior editor at IEEE Spectrum. Since 2007, he has written over 6,000 articles on robotics and technology. He has a degree in Martian geology and is excellent at playing bagpipes.