Today, we found out why the hexbot's legs oscillate when it's sitting still.
Servos convert the PWM input into a desired angle. One advantage of digital servos over analog ones is that they always correct toward the desired angle with full power, rather than proportional. They aren't weaker when correcting for small angles. So when our hexbot is sitting still, bumping a leg even slightly from its position will induce a full-power burst of correction until the servo is again at the correct position. Since we have relatively heavy legs on low-friction bearings, the leg's momentum carries it past the zero point, and the servo corrects full-power in the opposite direction, inducing oscillation. As we've said before, in order to make programming complicated behaviors easier, we're moving all but the PWM control code to a Raspberry Pi. This has the added benefit of saving us the trouble of generating lookup tables for every behavior in MATLAB.
Rocco gave us a crash course in making devices communicate using ROS topics. The Raspberry Pi will be generating an array of 18 servo angles every timestep and publishing it to a ROS topic. The Arduino will be checking that topic for the latest numbers and converting them to PWM output for the servos. To generate the angles, the Raspberry Pi will be referencing a simpler lookup table. It consists of a list of the x, y, and z positions of the foot relative to the body servo of one of the legs at every timestep. That step can then be shifted in space to represent the position of each foot, and indexed to find the desired position at any given timestep. From there, the Pi uses the reverse-kinematic trigonometric equations we derived to determine the angles of each servo. Since we have more experience with Python coding, we are able to use classes and functions across multiple files, and take advantage of ROS's real-time capabilities.
We built a six legged robot that is able to maneuver on it's own power source. We are working on making it follow people around (via a beacon).
Today was another day we let the hex walk on its own. With the changes to the underside of the second leg linkage, the bot has a new failure point. It breaks around the bearing in the second linkage and the crack extends though the rest of the linkage. You can see what this looks like below. While this was most often the failure point, we also saw a different failure point. The third leg linkage, the curved one, broke while the HExBOT was walking. We think this is because that leg was curved and dragged around the carpet. We believe that this is because the hexbody sags when walking-which makes it think that the position for air is on the ground. To fix these problems we plan to: 1) Coat the legs in epoxy 2) Curve the third linkage such that there is more material around the hole 3) Create an offset to account for the sag. We also plan to move the legs an 1/8 " up so that the push rods "hub" doesn't hit the base plate. Off to make more changes. See our robot try to conquer the world only to get crushed below. |
Archives
December 2015
Categories
|