Today was mostly focused on gathering failure recovery data for my SO-101 robot arm, along with some troubleshooting after a few command-line mistakes.
In the cover image above, you can see one of the failure scenarios I’m intentionally creating (sorry about the picture quality, the camera I use for recording isn't very good): the block slipping out of the gripper, followed by the robot recovering and picking it back up. These recovery demonstrations are a key part of my project: teaching the policy not just how to succeed, but how to fix mistakes when things go wrong.
I also ran into some self-inflicted problems today. For example, I accidentally labeled my recovery dataset as block_stacking_recovery instead of just block_stacking. This created an extra task in the dataset, which turned out to be surprisingly annoying to fix. Deleting individual bad episodes wasn’t too bad (just manually removing the right parquet files and the code associated with them in the project's json files), but cleaning up the extra task required more digging through the command line.
There doesn't seem to be a manual way to remove an extra task within the HuggingFace website, so I had to delve into the linux command line to remove the task and its associated files via Git, which I didn't have a very good time with, but I guess lesson learned: Make sure that I'm using the correct names for everything before sending any commands in the terminal.
All in all, it was a productive (if slightly frustrating) day of data collection. I’m starting to see how important high-quality recovery data is going to be for making the policy more robust, and what I learned about deleting unwanted data today is definitely going to come up in the future as I go further into my data collection.