Today in class we presented our work thus far to the entire morning session of PoE, and received feedback.
Yesterday we went adventuring to hobby stores to find hardware to improve our hexbot. In addition to wanting to find hardware without waiting for it to ship, we were able to look at existing methods for interfacing with servos, and get some ideas for how we could make our final hexbot nicer. After getting quite distracted but striking out at the first stop, we were successful in finding all of the bearings we needed as well as linkages to replace or small laser cut pieces which have thus far been the source of a lot of slop in our system.
We're preparing for tomorrow's sprint review, and it's just hit us that we're 3/8ths of the way through this project. Remember those nice, ambitious goals for an all-terrain, self-charging, person-following hexbot? We're NOT going to be able to reach them. Our goal for the next sprint is now a walking hexbot. In this sprint we learned what we don't want our project to become. In the final sprint, we still want to accomplish one of those stretch goals. We're split between handling terrain and navigating to a beacon. The challenge in handling terrain would be almost entirely in the code, assuming our servos are strong enough to lift the hexbot over the obstacles (which we're not sure about.) Seeking a beacon would require integrating a sensor and making the code figure out the direction to go. In other news, we burned out a servo. There was a lot of smoke. We're still waiting for the servos we ordered to ship, and we already got a video of the three-joint leg moving, so it's not the end of the world.
As we build a second leg, Jayce has been hard at work in the brains of the hexbot. Our lookup tables aren't matched to the length of our first prototype leg, so we're doing a lot of trigonometry in MATLAB.
Our walk function consists of a series of points for the end of the leg to hit in sequence, in the form of an array of angles fed to the servos. To generate that array, we're using some code we found online translated into MATLAB. We input the desired path (moving directly backward at floor height until the maximum angle is reached, then lifting and returning to the initial position) and the script provides the servo angles at each point. Aaaand our website is live! It's still in progress (and a bit silly), like the rest of this project, but thanks to Weebly it's nice enough to show to people. Just don't press any buttons yet.
We have a reserved address for the class at http://poe.olin.edu/2015/hexbots/ but we're going to need to transfer the files manually, or else spend some of our budget to make Weebly let us use an external domain. For now, the newest version of the website remains at [wherever this is.] I'd include pictures of this progress, but if you're reading this blog just look around you. Since we've been provided with OnShape Pro for this project, we decided to take the opportunity and learn to use OnShape. We imported the leg model from SolidWorks, and proceeded to have a lot of fun figuring out how to use the controls. With three of us editing the same assembly at once, the Google Docs-like collaboration got fairly chaotic.
Because we aren't sure how to laser-cut from an Onshape file, and it doesn't have motion analysis and FEA, we were reluctant to continue using it. But after a couple of CADing parties, we decided it would be useful to know anyway. And as long as there aren't three people editing the same part, the ease of collaboration really is helpful.
This marks the end of the first sprint. This one was only a week instead of the usual two, but we're proud of our progress. We achieved our goal of a real, wiggling leg, though we can't move the tip in a straight line on the ground yet. The professors gave us a few tips:
Jayce and Rebecca laser-cut the parts of the first leg out of MDF, and we all assembled it, using servos available in the PoE lab. We've also begun work on the code to move the leg. We control the leg by telling each of the three servos to move to a given angle. We'll be able to control the speed as well, but we're not worried about this at this moment. At first glance, moving θ would work to make our robot walk, but each the contact point of each leg would be moving in an arc. To avoid foot slippage, the end of each leg needs to move directly backward relative to the body, which means the other angles will need to get involved. This requires a surprising amount of math. All that culminated in a series of equations that translate between the angles θ,Ψ, and φ and the x-y-z position of the end of the leg relative to the body, as well as the following matrix that converts between spherical and cartesian rates of motion for the leg. We can find the rates of change of θ,Ψ, and φ based on the rates of change of d, θ, and γ. Translating this into Arduino code is going to be tough. None of us have done much math in Arduino/C++, but we found this library for dealing with matrices in Arduino: http://playground.arduino.cc/Code/MatrixMath
Wish us luck! Our first sprint is underway, and we're aiming to have a working, wiggling leg by this Friday. We spent the weekend making sketches and prototypes of leg linkages. Though there are lots of single-motor leg linkages, we agreed to give each leg three degrees of freedom to allow our hexbot to intelligently climb over obstacles. As it turns out, there are a lot of ways to connect three servos and three sticks. In deciding between them, we considered the amount of energy the servos would be using while the robot stood still, as well as the ability of the leg to move to the positions required for walking. Most of the designs were similarly spiderlike, only changing the order of the rotations. We chose Rocco's, because it followed pattern of other robots' leg linkages, as well as being already CADed.
Day One. We've formed a team united by a shared love of hexbots. Hexbots are versatile little bugs, and there's a million and one things we could do with them, so we appropriated a whiteboard and began brainstorming. That's a lot of ideas. By excellence voting on what we'd actually want to build, we narrowed it down to some goals and features. And from there, we distilled a plan.
|
Archives
December 2015
Categories
|