Here are some demos of the robot successfully performing the cable insertion task.
Base goal: One end of the cable attached (Videos at 2x Speed)
The robot performs an insertion with one end of the cable attached. Notice that when it lays the cable over the channel, it is not a perfect overlap, so it isn't able to fit the cable on its first pass. We added the second pass to account for cases like this, and by the end of the second pass the cable is fully fitted.
This works well in the end!
The robot performs another insertion with one end of the cable attached. In this case, the second pass is not necessary, but we found that having a second pass greatly increases the likelihood of a perfect fit, and made that the default functionality.
This also works well!
Stretch goal: No end of the cable attached (Videos at 2x Speed)
The robot performs an insertion with neither end of the cable attached, achieving one of our stretch goals. The robot has to perform cable endpoint detection and channel endpoint detection twice in this case, and must ensure that it doesn't pull the arms so far that the cable slips out of grasp.
This was a stretch goal that we did not anticipate being able to do initially yet it works flawlessly!
Post Presentation Update: Robustness to Channel Orientation + Detect if Rope is Properly Fit Before New Pass
(Videos at 4x Speed)
Taking the feedback after the presentation, we did tests to show that our algorithms are robust to the channel orientation. We also adapted our actuation code such that rather than do two passes of the actuation sequence, we check using the depth camera to see if we have an acceptable fit and only rerun the actuation sequence if the fit is not acceptable.
Our final results surpassed our initial expectations, while meeting our design criteria.
We encountered multiple particular difficulties:
Figuring out how to minimize the probability of false positives in edge detection
Our CV consists of a various stages for robustness but this also increases the stages to error in, leading to a substantial amount of code for self-correcting.
We put extensive effort into ensuring our solution was robust, but there are still flaws. Our main hack consisted of utilizing foam to disperse force as the Yumi Robot will E-Stop (Emergency Stop) if it encounters any obstacle. This meant that we could not push down and drag directly as one would think is the common solution but instead had to close our grippers and push down at every point in a uniform discretized interval. If we had additional time, we would make the grippers rotate to perfectly orient to be parallel, and explore using a rolling motion to fit the cable into the channel.