We successfully implemented the probing motion for the sensing portion and received accurate spring constant readings to reflect rigidity. The weighing movement results in less accurate readings due to sensor noise, but we worked around that by sampling several data points.
For the planning portion, we used gathered data to set the correct course of action for the object. We also utilized a camera to read the AR tags to determine the location of the object and its destination. The robotic arm then went to that location and decided to push the test object when its z-score was greater than three. Otherwise, a pick and place took place.
The following videos demonstrate our complete implementation:
In this demo video, the robot first initiates probing motion to determine the object's deformability. Once it recognizes the object to be solid, the robot moves on to the weighing motion and tries to determine the object's weight. Seeing the object to be both heavy and solid, the final decision is made and the robot pushes the object to the destination.
Similar to the previous demo video, the robot starts out with the probing motion and recognizes a solid object. After weighing the object, however, the robot discovers the lightweight nature of the object and instead decides to pick and place it to its destination.
In this last demo video, the robot gets a low spring constant feedback from the probing motion, indicating a soft object. To this discovery, the robot decides to skip weighing it and directly tries to drag the object to the final destination.