![]() MATLAB provides a way to integrate components written in C, which we used to get access to the Delta robot Vicon software already came with MATLAB-friendly interface, which I wrote a simple wrapper for. The software that gets the data about ball position, controls the robot, and does all the calculations was written in MATLAB. Both of these things happened several times before I got the robot to move as I'd like it to. ![]() One of its advantages is that, while it is possible to break this robot by applying force in the wrong way or at the wrong time, the worst thing that can happen is that it breaks apart or the belts get stretched. Its main disadvantage for ball bouncing is that it has a limited workspace (a cylinder approximately 1ft/32cm in diameter and about 8in/20cm high) and the end effector on which the paddle is mounted has no tilt. The robot that we used is a Delta Haptic robot, which is a small, fast and powerful robot. ![]() Now with the ball in hands and the paddle attached to the robot (Alex Simpkins, a postdoc in our research group, helped with the latter part and with many other things on this project), I was ready to do some bouncing. After short practice I was able to cover a ball in 3-4 hours (this is what graduate students like me are being paid to do). After that the process was simple: print the projection, transfer it to the tape, carefully cut the tape, attach the tape to the ball. Here is the sinusoidal sphere projection for 24 segments (may not work in IE without canvas support) and the code (you can change the parameters to get a different patters: s sets the number of segments and r sets the radius in mm). As the tape I had was too narrow to have the entire projection printed on it, so I stacked those projections to fill as much tape as possible. It turned out that there was no ready-to-use projection for the ping-pong ball and the number of segments I wanted to have, so I ended up creating a simple script that draws the projection I need so that I can print it. After a bit of experimenting I settled on 24 segments. The sinusoidal projection looked like the best option, but there was still a question about how many segments are enough (use too few and you get rough surface and edges, use too many and you get too much work to do). The geodesic dome projection was too much work. The soccer ball projection didn't work as the tape does not stretch enough to cover the sphere. Using random patches didn't work as they were poorly detected by cameras and, because of uneven edges, the ball was bouncing randomly. To do it you have several choices (other than using more or less random patches to cover the ball): (1) use a truncated icosahedron (soccer ball projection), (2) use geodesic dome or geodesic sphere projections, and (3) use a sinusoidal projection with a large number of segments. The crux of the problem is that you need to take a flat sheet of the reflective tape and transform it into a curved sphere. To fix that, I covered it with reflective tape, which was an interesting problem to solve. The ping-pong ball we wanted to work with has a surface very different from a marker and doesn't reflect enough light to be reliably tracked. ![]() They are sufficiently good for our purposes, but unfortunately require use of markers to track. The cameras we used produced by Vicon and are frequently used for motion capture experiments (when you want to record and analyze how humans/robots move or use various objects). The processing done by the cameras is very fast (up to 240Hz) for this particular experiment the frequency was set to 120Hz (which means we get new data every ~8.3ms). There are seven cameras mounted around the workspace (mostly on the ceiling, that's why you don't see them in the video) in such a way that they get a good view of the workspace and the objects that are being tracked even when the view is obstructed for several of the cameras (for example, by me moving around). The cameras do all the difficult work to track the ball in the workspace. ![]()
0 Comments
Leave a Reply. |