Natescape
Got birds? Click Here!

coolness

what is it?

The FAQ
Sign up Do it

how does it work?

The Zoo

This is version 0.41, still in beta.
I still have a few bugs to work out.
But it's still pretty cool.


Please contact me if you have questions,
suggestions, feedback, or whatever.


What is it?

It's a virtual machine shop in which you can create complex mechanical contraptions, and bring them to life with built-in motors. The building blocks are all very simple - beams, joints, and oscillating motors - but you can combine them to produce complex models with complex movements.

It's kinda of like Lego, and kinda like Tinker toys, and kinda like an Erector set, but it's two dimensional and it has way cooler motors.

This is what you have to work with:

Beams
Beams are just sticks, basically. You can adjust their length, and you can connect them to other beams with joints.
Joints
Joints are like elbows. They can bend along one axis, though these do prefer to be at a particular angle (called the center angle). They're also driven by motors. Each joint bends back and forth as its motor drives it. You can adjust how much it bends, and you can change the timing of the back-and-forth motion.
Motors
These aren't normal motors like the ones that turn airplane propellors. They're oscillating motors, like the ones that make a car's windshield wipers move back and forth. There are two motors to choose from. The standard motor just waves back and forth, like those wipers. The intermittent motor waves in one direction, pauses, waves the other direction, pauses, and so on.
Models
A collection of beams and motorized joints is called a "model." Nothing special about that, I bring it up only so that when I talk about models later, you'll know I'm talking about joints and beams, not random people blessed with good looks.

Look at your leg for a moment, then continue reading.

OK. Your foot is a short beam. It's connected by a joint (your ankle) to your shin, which is just a longer beam. Your shin is by another joint (your knee) to another beam (your thigh), which is connected by another joint (your hip) to another beam (your spine).

Yes, I realize your spine is more like a long chain of joints and very short beams, but bear with me for a minute...

When you're walking, your hip moves like the standard motor. It swings forward, swings back, swings forward, swings back, and so on. Your knee, on the other hand, moves like the intermittent motor. It extends before you put your foot down... it stays extended while you step forward... it flexes as you pick your foot up... it stays flexed as you bring your foot forward... it extends as you put your foot down... and so on.

You see where I am going with this.

If you don't see where I am going with this, do the following:

  • Click here to open the robot editor
  • click the "load" button
  • wait for the list of models to fill in (takes a couple seconds)
  • click "human"
  • click "load"
  • click the "gravity on" button

  • Now you see what I'm talking about!

How does it work?

When you open the editor, you have a very simple model to begin with. The model view will show one thick beam (the root beam), with a joint at either end of it, and a short beam attached to each joint. The short beams are swinging back and forth because they're motorized.

Above the model you'll see a bunch of words. This is the tool bar, and pressing on different words makes different things happen. What each one does should be fairly obvious.

Below the model you'll see a couple of wavy lines... waving. This is the motor view. The wavy lines are the motors. You'll notice that the standard motor, on top, is just a simple sine wave. The intermittent motor, on the bottom, is stretched in places. The vertical lines in the motor view represent the points along the waves from which the joints take their movements. The little dots in the vertical lines indicate how much the motor will bend the joint - if the dot is at the top of the motor, the joint will swing 90 degrees to either side. If the dot is at the bottom of the motor, the joint will not swing at all.

To the left of all this you'll see two more views - the one on top is the tree view and it just lists all of the components in the model. The one on the bottom is the property view and it will show you a bit of information about whatever beam or joint happens to be selected. Click on something in the tree or model views, and you'll see.

Now let's get some work done.

To add a beam to the model, click "add joint" in the tool bar. The model will stop animating, and the mouse pointer will change to indicate that something is going on - you're carrying a new part over to the model. Position the mouse at the end of one of the model's legs, and click the left button. The model comes back to life, with a new joint. Do this again for the other leg. Note that you can only add joints to the ends of beams - you can't add a joint to a joint, because what good would that do?

Adding a beam to the model works the same way. Note that you can only add a beam to an existing joint - you can't just weld a new beam into the middle of another one. But, you can put a joint in the middle of a beam and attach a new beam to the joint, which has pretty much the same effect.

You can also carry parts over to the tree view and drop them there. The only difference is that a joint will be added to the middle of a beam, rather than to the end of a beam.

To change a joint's "motorization," you must find the joint's motor line in the motor view. When you create new joints, they all start out with the same motor settings, so you tend to get a pile of motor lines in the same place. You may need to drag a few out of the way to get to the one you want.

To move a motor line, just drag it around with the mouse. Moving the mouse up and down changes the motor's strength, and it can change the motor from one type to the other if you drag it far enough up or down. Moving the mouse side to side changes the motor's timing.

If you add enough beams and joints, and motorize them properly, you can create models that walk or run. Or do other things. It's all fun and games until someone loses an eye, you know.

F.A.Q.

Q: I just get a blank white window. What now?

A: Make sure your browser will allow you to run ActiveX controls. This is a security option in Internet Explorer. I do not recommend surfing the web with ActiveX fully enabled - at least set it to prompt you for permission before running an ActiveX control. Personally, I've set my browser to disable ActiveX on all sites except the few that I trust, like www.natew.com for example.

You might get a warning because this ActiveX control is not "signed." That's because it would cost me $400 per year to sign this software. That's just not gonna happen.

Q: What inspired this?

A: A bunch of things. I've always thought walking robots were pretty cool, and always wanted to build one, but I'm a lot better with software than I am with hardware, and I'm a lot more capable with a compiler than I am with a machine shop.

The idea first came to me years ago when I was studying neural networks in college. Some guy had a program that simulated an ant, sort of. I thought it would be more interesting to simulate the kinematics of the ant's legs than the behavior of the ant itself, so I started designing this thing. But, I was busting my ass at school and didn't have time or energy for this, so it just sat.

And then I saw sodaplay and thought "hey, someone's already done it, cool!"

And then I saw a picture of someone's bird-like legged robot for BattleBots, and was fascinated again. I started adding up the costs of lathes and mills, and was heading into despair when I realized that I didn't really need to build a walking robot, I just wanted to design one. If I was going to play with robots, I was going to have to do it in software.

So I went back to sodaplay and quickly realized that no matter how cool sodaplay is (and it is very very cool), I don't think in terms of "masses" and "springs." I think in terms of "beams" and "joints." If I was going to play with robots, I was going to do it in software and I was going to have to write that software myself.

So I designed it all out, and started coding. Of course, I designed it in 3D with adjustable-mass beams and additional motors to provide a sense of balance, and a readout to tell you how much torque each joint was generating, and had to scale back to a massless 2D world where there is no need for balance or torque. But now that I've got this much working, I'm ready to take on more complex physics (in the next revision of the software) and higher dimensions (in the next generation of the software).

Q: Why are models saved to the server, rather than on the local filesystem?


A: Partly because I want to know how many users I have and how much they use this, but mostly because I thought it would be an interesting challenge. It makes the zoo a bit more dynamic, that's the coolest part.

Q: Why ActiveX instead of Java?

A: Because C++ is my native tongue. This means I can get things done quickly with C++. If I were writing this in Java, I'd still be writing it, and you wouldn't be able to play with it yet.

Q: Where can I talk with other people who think walking robots are interesting?

A: At the walking robots forum, of course.

Q: Why is there no gravity?

A: Because real physics are more challenging than I expected. I'm working on it, but if you know of any freely available software for simulating two-dimensional constrained rigid body dynamics, please contact me. Linear algebra was my least favorite subject in college. I do not look forward to learning it all over again, and then some!

Zoo

The zoo serves two purposes: First, it's there to provide inspiration - to show you some of the things this is capable of. Second, it's there to provide more inspiration - if you come up with something cool, email me and I'll add your name and your creation to the zoo. The eternal admiration of your peers is sure to follow soon after.

Accessing the zoo is easy - click the "load" button and type "zoo" for a user name. The password doesn't matter.

Beasts currently in captivity:

human - a walking stick figure (it had to be done)
biped - egad! what happened to his upper body?
horse - well, kinda
quack - it walks like a duck
hexapod - a cross between a horse and an ant
hexapod_2 - an ant with humanoid ankles
raptor - it kinda looks like a dinosaur, if you watch it long enough...

Yes, these are pretty lame. Bear with me. I've been putting lots of time into developing the software, and not very much into actually building things with it.



Bugs

Future Features