Reference: Behavior Cloning for Manipulation

Hello, it’s time for my yearly post! The goal of this one is to be a handy reference for behavior cloning as applied to manipulation – something I’ve been spending quite a bit of time on over the past 6-9 months. The field has been progressing at an absurdly rapid pace of late (somehow we’re at a point where robots can do laundry), so I thought it’d be a good exercise to summarize where we’re at right now and how we got here (at least from my perspective and based on what I’ve read so far). I’m hoping this becomes a useful resource for any manipulation enthusiasts stumbling upon it, and of course, for future me as well!

[Read More]

Setting Up a Robotic Manipulator

Let’s take a look at how we can set up a framework for streamlined simulation and hardware control of a manipulator. The robot under consideration is Ufactory’s Lite6 manipulator and the simulation/setup tool used is Drake.

All the code used in this post can be found in my repo. But before we start, some explanations are in order.

Lite6?

The Lite6 is one of the more economical (not to be confused with cheap) manipulators one can buy, especially for personal research where you’re not going to be spending tens of thousands of dollars on some of the more well established robots out there. It’s well built, has surprisingly good specifications for the price point, and comes with an integrated controller. You can get a parallel and vacuum gripper for it, but also comes with hardware interfaces that can support custom grippers. The product is well supported and their API (python and C++) is easy to use. The main pain point is its parallel gripper, which can only open by 1.6 cm. This severely limits the type of objects you can pick/place, but luckily for us, pick and place is only a small part of robotic manipulation!

[Read More]