Search the site...

HEXbots
  • Home
  • Blog
  • About the Project
  • About the Team
  • Gallery
  • Budget
  • Systems Diagrams
    • Mechanical
    • Electrical
    • Code
  • Home
  • Blog
  • About the Project
  • About the Team
  • Gallery
  • Budget
  • Systems Diagrams
    • Mechanical
    • Electrical
    • Code

Our Blog

It Walks!

12/13/2015

 

The Wiggle

12/11/2015

 
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. 

Picture

All The Coding

12/9/2015

 
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 make major changes to the code

12/8/2015

 
Hi all-- resident blogger #3 reporting for duty! Hope you all have been enjoying watching us try to make our HExBOT and watch the little cutie take its first steps.

Maybe you even want to fund us...(acrylic instead of wood would be so great--alas we have run out of money. And can our servos even handle the weight?) 

Today we started a major overhaul of the code. We changed the math for the leg trajectory so that the changes in the coordinate system are smoother and make more sense. In this iteration we have 3 coordinate systems (or 2 coordinate transforms taking place). We have an i, j, k overall coordinate system whose origin is the center of the HExBOT body, an x, y, z coordinate system whose origin is the center of the servo horn and whose y is parallel to the "vertical" side of the hexagon, and an x2, y2, z2 coordinate system which is the previous coordinate system rotated by an angle theta.

This should make it easier to give each leg the same direction and have different, correct results happen. This way we can give each leg the same points for 24 different time steps and have it walk. 

More to come about the subtleties in another post!

Picture

Hero image

12/7/2015

 
Picture
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).

And then IT walks...AND Breaks

12/6/2015

 
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.
Picture
 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.

calibration chaos

11/20/2015

 
Picture
Over these past few days we've figured out just how difficult calibration can be. It also turns out that when calibration is not done correctly, things break. We've been using a lot of glue to fix joints as they break from going too far in one direction.
We have developed a system for the physical calibration that we're improving as we figure out more things. We unscrew the servo horn and remove it from the servo. We set the angle of the servo to 90 or 180 degrees depending on the joint. We attach the servo horn and screw it back on.
The code calibration has proven to be more complicated and more mind breaking. Between the servos, the Arduino, and the look up tables there are several conversions, offsets and different ranges of angles and values. We spent about an hour just trying to visually figure out what values determine what angles where for which ranges of motion.At this point I think we have a pretty good understanding of what the ranges and angles and conversions are but now and then it still happens that we think that we're going to make the servo move 20 degrees and it instead goes further, far enough to break the joint.

It's aliiiiiiive! 

11/18/2015

 
Today, our hexbot stood for the first time.
We also broke our sixth femur linkage. And then re-broke some of the others.
 As you can see in the image below, most of the force on the leg is transmitted through the coxa-femur joint (is there a trochanter in there somewhere? We're a bit fuzzy on our insect analogy.) It's connected to a very thin extension of wood that splits very easily along the grain. We've glued them all at least once now. For the final project, we'll be redesigning
Picture

AssemBling the Bot

11/14/2015

 
Once we got all the parts cut out...the fun started! It was assembly time for the HExBOT team. Watch a short time lapse of us assembling part of our bot below. 

Laser letdowns and perplexing pwm

11/11/2015

 
We laser cut the first few legs for our final hexbot out of 1/8" basswood. Or at least we tried to. The laser cutter didn't focus properly, and we were left with partially-cut pieces that needed to be sawed out by hand. It took an entire class period.
Picture
We've also been figuring out how to communicate with the servos through the servo shield rather than directly from the Arduino. While Arduino control uses the convenient Servo.write() function, the servo shield requires the program to specify the range of angles as well as the PWM pulse width. Calibrating the servos has been a bit of a challenge, because the servo horn has to be attached at an agnel that gives sufficient range of motion in the correct direction.  Then, in code, we need to determine and correct the offset from the zero point.
<<Previous

    Archives

    December 2015
    November 2015
    October 2015

    Categories

    All
    Check Ins

Create a free web site with Weebly