I completed an Undergraduate Research Project in the MIT d’Arbeloff lab to automatically manipulate objects with gantry cranes, for use in environments such as a Boeing warehouse. Cranes are underactuated and hard to control. My specific goal was to autonomously hook onto a fixture.
I wrote up the analysis of this project here.
Hook Design
I brainstormed 16 possible hook design ideas, because this structure would be the foundation of the hooking strategy. I narrowed down to 3 potential candidates, which I tested physically. I learned that the simplest one was most effective, and I added some more features to make it more stable.
Code
I cleaned up the codebase immensely by making utilities for common code patterns. I put those utilities in a public python package so that other projects in the lab could make use of them. The package exposes a Coord
class that represents an Affine coordinate, or homogeneous coordinate. It represents a complete pose, and can be manipulated very readably. I also cleaned up the ROS setup so that it was more tightly integrated and could be started from a single command.
Results
The final system used computer vision to find the target to hook to. It then moved the gantry crane to the correct location using a PID control loop and an IR positioning system, and attached onto the target object by moving the hook across a target. It detects that the hook is properly caught by measuring current draw on the winch. This detection was finicky due to noise in the current readings, and the O-drive motor controllers did not expose more legible sensor data. In the future, this detection would be done with IMU feedback from the hook itself.