11-24-2006

Been a while, but I have not forgotten this project. I recently got the motion deteciton code for the camera all working, then promptly fried the camera while trying to hook it into the robot's power system. Oh well. No big changes in a while. Changes will begin when I finally get my CNC Mill working correctly, and can make an analog converter board and a proper power supply.

2-26-2006

Sensors Sensors arrived earlier this week. I spent some time yesterday afternoon building brackets and mounting up the IR sensors.
Sensor Bracket Here is what I came up with. It's a piece of aluminum angle cut to size with a pair of tin snips, and drilled as needed.
Mounted Here is a picture of the bracket with the sensor mounted on it.
Sensors Placed Here are all six sensors placed on the robot chassis. Note that in this picture, the chassis is upside down.
Sensor Done Here is one of the sensors, mounted and turned right-side up. There are six of these sensors, one between each pair of legs.

These sensors have a minimum sensing distance of about 8 cm. This shouldn't be a problem though. As you can see from the mountings, the sensors visible distance will start about at the pont that the lgs end. So, the robot will be unable to sense distances less than the radius of it's own legs.

I don't yet have the sensors connected to anything, as I don't have any A/Ds to hook them to yet.

The camera also came in, but I have yet to decide how to mount it. It's significantly larger than I expected. I may have to disassemble the housing that it came in in order to reduce it's profile. We shall see.

2-20-2006

Untill my sensors arrive, I've been working on software.

While wandering the web, I came across Andy Lippitt's page. His project is very similar to mine, with the exception that he is farther along with his than I am. His software and hardware are similar to mine to such a degree that I could almost just use his software without modification. As such, I am shamelessly using one of his ideas. :-)

One of the differences between his and mine is that he is currently switching to digital OpenServos. That's a great idea. I think I'll take it too :-). The OpenServo project sounds very cool. OpenServos would solve many of my problems, such as ground contact detection and determining actual servo position. It also fits in wonderfully with my other plans to set up my sensors with I2C.

Render

Andy has created a very nice control that uses DirectX to render the Hexapod's current state. I have modified it enough to work with my software. It's a very nice control, and since I know nothing about DirectX, it has saved me tons of trouble. Thanks Andy!

Once my code has reached a more stable state, I will put it up so that others can benefit from it as I did from Andy's.

2-16-2006

Let's discuss sensors.

I need to give this robot some way to detect it's environment. Hopefully before it falls down the stairs and gets busted into little pieces. To that end, I figure I need to add proximity sensors. I've ordered several Sharp GP2D12s.

GP2D12

These sensors are capable of giving range to any object up to 30 cm away. I'm plannin to put them between the robot's decks, facing outward from each side (between the legs).

They are analog sensors, so I will have to do something to convert the analog values they give to digital. Maybe I will create some kind of analog to digital conversion device. I shall call it..... The ANALOGDIGITOMATICALIZER!!! Or, I could just buy some A/D converters. :-) I will need to design and build a custom A/D board. And before I can do that, I will need to actually settle on an interface spec. I'm thinking that I will go wi.th I2C. But before I can really do that, I will have to get together the necessary hardware to do I2C development.

Camera

I also ordered a camera for the bot. The camera is a standard 802.11 webcam. For the moment, my plan is to use it simply so I can see where the robot is going when it's out of line of sight.

For the future, I'm thinking image recogniton.

I have discovered what was causing my robot to slowly turn left. It turns out that some of the screws were loose in the leg that it was pulling towards. After tightening up all the screws in all the legs, things work much better. It walks smoothly in all directions now.

Robot walking smoothly (1.74 Mb)

2-12-2006

I now have it translating in all directions. It can translate nicely and evenly. The only catch is that it seems to slowly rotate to the left (counter-clockwise) whenever moving. It's kind of odd, and I'm not sure what causes it yet.

Now, I really need to create a better GUI for it. so far, it's just been buttons and sliders to test functionality.

I suppose I ought to talk a bit about the software. It's all written in C#. It's all highly object oriented. Here's a quick breakdown:

2-10-2006

In this picture, the robot is up on a stack of boxes while I try to get it walking. As you can see, I got my WiPort working. It's an incredibly cool device. I can now control the bot via 802.11b. It is actually manufactured by Lantronix, but WiBots produces a very handy breakout board that gives access to all the ports (2 serial, I2C, ethernet, GPIO). So far, the default firmware it comes with has served my purposes, but I suspect I will eventually end up tinkering with it.

The WiPort represents my decision on the "onboard/offboard" computing dilemma I mentioned. I'm gonna put all high-level stuff on a regular computer. I will probably end up putting some simple stuff on the WiPort, such as motor comms.

Got it walking with a variety of gaits. Forward only so far. I'm working on getting it to translate smoothly in any direction.

Here are some videos of my hexapod moving:

1-29-2006

Huzzah. Today my servo controller arrived. You might notice my innovative and entirely original battery system. Honestly! I planned it that way! Nooooo, I didn't just go to Home Depot and buy the cheapest thing I could find then hack it to bits with a Dremel tool........ Now, all that's left to keep it tethered is the serial cable. I'm thinking that I will see about using a WiPort to control it.

I've been giving some thought to the control archetecture. I have yet to decide if it's going to have a brain onboard, or if I will just do all the processing on a regular computer. The total autonomy of an onboard brain is cool, but it would increase power drain, and be more expensive. Using a computer would also allow me to do significantly more complex tasks, like video processing and speech recognition.

Decisions, Decisions.

1-26-2006


Indicated in this picture is an issue I noticed while assembling my hexapod. While assembling the legs, I discovered that if I were to put a screw in the hole on the right, it would critically constrain the leg's movement. As a result, for now, I have left the screw out.


My assembled hexapod.

Another note: while assembling, the instructions indicate that three of the legs should be built as mirror images of the others. It seems to me that this is a bad idea. When you do this, the servos on three of the legs rotate in the opposite direction of the servos in the other legs. For example, if the knee joints are all commanded to, 45 degrees, then they will not all move in the same radial direction (out), rather half will moe one way (out) and the other half will move in the opposite direction (in). This can be fixed either in hardware by making all the legs the same, or in software, by reversing the directions sent to those three legs.


My cat, derisively inspecting the new invader

Note: If you are using a browser that does not like CSS2 (such as Internet Explorer < 7), then this page will not render correctly for you.

Firefox 2