Our project was able to line up pretty well with our design criteria. We can pick and place most dishes with good accuracy, we are able to handle multi-level racks, we support different dish types, placing a dish with another dish placed before also works, and in general the system is robust to most situations. However, as we stated in the introduction, there is always room for improvement like adding the quality of life features discussed before or making the system generalize better (plan for different racks, add more dish types, etc...). There were no major flaws or hacks outside of us having to recalibrate constantly for changing the hardware setup, this can be avoided by building our own stable setup.
Problem: Enforcing orientation constraints on IK planning would not work.
Experimenting: We experimented with breaking up large paths into small chunks, using Jacobians to help solve our IK problem with a FK solution, and more.
Solution: We ended up being able to force convergence on the planner through replanning for a predictable, near straight line path.
Problem: We need more delicate controls when handling dishes.
Experimenting: We started off tuning our simple PID controller but due to the issues with IK we already had a slow moving robot with non disruptive oscillations.
Solution: We adjusted our planning to allow for tighter orientation constraints for safer drops and multi rack support, we improved our controller so picks and places are more accurate, and we fine tuned the planner and overall pipeline to make the system generalize better.
Problem: Both the hardware and software in our vision pipeline ran into issues which led to bad pick and place.
Experimenting: To pin down the problems we went through each component and tested them. From our work we found ar_tags can be unreliable and minor camera movements or changes in setup can break the whole pipeline. The hardware can also be off-and-on faulty and labeling our own training data was too time consuming.
Solution: We tested different ar_tags to find ones that work better, improved our software to account for hardware misreadings, stabilized and recalibrated the camera often, and used pre labeled data for training to increase detection accuracy.