Bing 3

Discussions regarding building a walking robot at home. Most of the robots participating at Robo-One competitions are custom fabricated.
134 postsPage 9 of 91 ... 5, 6, 7, 8, 9
134 postsPage 9 of 91 ... 5, 6, 7, 8, 9

Post by Humanoido » Tue Feb 27, 2007 10:13 am

Post by Humanoido
Tue Feb 27, 2007 10:13 am

Very nice video and informative.
Outstanding job building this humanoid.
You are to be greatly congratulated!
Why not try lowering the center of gravity
and have the knees bent somewhat... it
should do something to improve stability
and decrease rocking time, plus improve
walking. Just a thought...

Humanoido
Very nice video and informative.
Outstanding job building this humanoid.
You are to be greatly congratulated!
Why not try lowering the center of gravity
and have the knees bent somewhat... it
should do something to improve stability
and decrease rocking time, plus improve
walking. Just a thought...

Humanoido
Humanoido offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 574
Joined: Tue Dec 05, 2006 1:00 am
Location: Deep in the Heart of Asia

Post by DerekZahn » Tue Feb 27, 2007 4:11 pm

Post by DerekZahn
Tue Feb 27, 2007 4:11 pm

Hi, thanks for the suggestion!

For now I'm just studying the stability and balance issue to see what might be done about it by reacting actively to imbalances. A lot of you have done nice work using gyros in your bots, and I'll probably end up doing something similar to what you guys have already done, but I'll get there at my own slow pace. It's fun to think about!

The Robo-one competitors use the "crouch walking" techinique to improve stability, but it's not very "realistic" in the sense of mimicking the way humans walk. It got so bad that they had to change the rules to limit the amount of knee bending that was permissible while walking. Some of the robots (like King Kizer) seem to still crouch down in that odd way when doing some attacks which is apparently not banned.

The latest "unrealistic" walking idea that the Robo-one bots seem to use is what I call "crab walking". Fast side-stepping appears to be more stable than fast normal walking (probably because the large front-back foot base can more effectively kill the forward momentum at the end of walking). So these bots tend to turn their sides toward the direction they want to go, then quickly crab-walk toward their target. It's kind of comical at first but after seeing it all the time I find it a bit irritating. I think it will be much harder for the Robo-one folks to ban crab-walking so we're probably stuck with it.

Both in the case of bent knees and side-stepping, I prefer to try for a more reasonable gait. I'm still a long way from taking any steps, so I can be an idealistic dreamer!
Hi, thanks for the suggestion!

For now I'm just studying the stability and balance issue to see what might be done about it by reacting actively to imbalances. A lot of you have done nice work using gyros in your bots, and I'll probably end up doing something similar to what you guys have already done, but I'll get there at my own slow pace. It's fun to think about!

The Robo-one competitors use the "crouch walking" techinique to improve stability, but it's not very "realistic" in the sense of mimicking the way humans walk. It got so bad that they had to change the rules to limit the amount of knee bending that was permissible while walking. Some of the robots (like King Kizer) seem to still crouch down in that odd way when doing some attacks which is apparently not banned.

The latest "unrealistic" walking idea that the Robo-one bots seem to use is what I call "crab walking". Fast side-stepping appears to be more stable than fast normal walking (probably because the large front-back foot base can more effectively kill the forward momentum at the end of walking). So these bots tend to turn their sides toward the direction they want to go, then quickly crab-walk toward their target. It's kind of comical at first but after seeing it all the time I find it a bit irritating. I think it will be much harder for the Robo-one folks to ban crab-walking so we're probably stuck with it.

Both in the case of bent knees and side-stepping, I prefer to try for a more reasonable gait. I'm still a long way from taking any steps, so I can be an idealistic dreamer!
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by DerekZahn » Tue Feb 27, 2007 9:07 pm

Post by DerekZahn
Tue Feb 27, 2007 9:07 pm

A friend of mine just gave me a link to this page, which has a very cool video on it that amazingly illustrates some of the balancing stuff that I've been thinking about over the last few days:

http://paulgraham.com/anybots.html

Pay particular attention to the ankles at the beginning of the video. That's obviously way more advanced than anything I'm planning to do, but it's fascinating anyway and I thought you all would enjoy it if you hadn't seen it yet.
A friend of mine just gave me a link to this page, which has a very cool video on it that amazingly illustrates some of the balancing stuff that I've been thinking about over the last few days:

http://paulgraham.com/anybots.html

Pay particular attention to the ankles at the beginning of the video. That's obviously way more advanced than anything I'm planning to do, but it's fascinating anyway and I thought you all would enjoy it if you hadn't seen it yet.
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by JonHylands » Tue Feb 27, 2007 9:34 pm

Post by JonHylands
Tue Feb 27, 2007 9:34 pm

Interesting. Maybe I'm kidding myself, but that's exactly what I'm planning on doing...

- Jon
Interesting. Maybe I'm kidding myself, but that's exactly what I'm planning on doing...

- Jon
JonHylands offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 512
Joined: Thu Nov 09, 2006 1:00 am
Location: Ontario, Canada

Post by DerekZahn » Tue Feb 27, 2007 10:03 pm

Post by DerekZahn
Tue Feb 27, 2007 10:03 pm

Me too :D

Well, not the super-advanced stuff like homemade gyroscopes, fancy motors, etc, but the basic concept at least (figure out where the bot will fall and try to make sure a foot is there to catch it).

I think you're off to a great start Jon!
Me too :D

Well, not the super-advanced stuff like homemade gyroscopes, fancy motors, etc, but the basic concept at least (figure out where the bot will fall and try to make sure a foot is there to catch it).

I think you're off to a great start Jon!
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by DerekZahn » Wed Feb 28, 2007 4:52 pm

Post by DerekZahn
Wed Feb 28, 2007 4:52 pm

It's time for Bing's first set of hardware tweaks. A bunch of issues have crept up that require a partial teardown to deal with -
    * Some of the brackets have come a bit loose from the servo horns
    * The foot pad attachment scheme is failing already and there's no way it can take the pounding, so I'm going to think about a better solution
    * The attachment of the torso turn servo to the upper torso is not as strong as I'd like
    * There are occasional intermittent losses of serial communication. Not often but troublesome enough to look into
    * The bizarre dual-IMU setup that I ended up with will be too hard to deal with when the torso is turned so I need to combine the best of both into the lower torso. That means the gyros from the upper torso and the accelerometers from the lower torso, so it all has to be torn apart.
    * One servo has become somewhat difficult to turn, and I need to check out what's wrong

So Bing will be torn apart for a while. I'm not surprised by this though I'd rather be making forward progress.

In the meantime I have a bunch of software stuff to work on. I'm going to let the 'balance' issue rattle around in my brain for a while and work on the next project:

So far I just have one "neutral pose" but actually I want to have a whole class of them, expressed in a way that I can specify the foot positions and angles, and torso height, and have the joint angles calculated automatically. More than that, I want to specify the foot positions in millimeters, which means that I need to figure out an Inverse Kinematics scheme to set the joint angles. If you haven't thought about how you'd do that, it actually is not a simple problem. In Bing's case it MIGHT be possible to find an analytic solution (making the computation easy), but so far I have not been able to figure one out, largely due to my rusty math skills but maybe because it isn't tractable. If I can't find such a solution I'll need another answer.

I have what I think is a good reason for wanting to specify exact foot positions like this -- it will allow me to keep the feet stationary and move the "robot zero" (and the center of mass) arbitrarily without the feet moving. I think this will be important for shifting weight as part of walking, and for killing momentum as part of balancing.

Not sure how long all this will take until a reassembled Bing will be running the new cool software features, but whenever it is, a video will be forthcoming!
It's time for Bing's first set of hardware tweaks. A bunch of issues have crept up that require a partial teardown to deal with -
    * Some of the brackets have come a bit loose from the servo horns
    * The foot pad attachment scheme is failing already and there's no way it can take the pounding, so I'm going to think about a better solution
    * The attachment of the torso turn servo to the upper torso is not as strong as I'd like
    * There are occasional intermittent losses of serial communication. Not often but troublesome enough to look into
    * The bizarre dual-IMU setup that I ended up with will be too hard to deal with when the torso is turned so I need to combine the best of both into the lower torso. That means the gyros from the upper torso and the accelerometers from the lower torso, so it all has to be torn apart.
    * One servo has become somewhat difficult to turn, and I need to check out what's wrong

So Bing will be torn apart for a while. I'm not surprised by this though I'd rather be making forward progress.

In the meantime I have a bunch of software stuff to work on. I'm going to let the 'balance' issue rattle around in my brain for a while and work on the next project:

So far I just have one "neutral pose" but actually I want to have a whole class of them, expressed in a way that I can specify the foot positions and angles, and torso height, and have the joint angles calculated automatically. More than that, I want to specify the foot positions in millimeters, which means that I need to figure out an Inverse Kinematics scheme to set the joint angles. If you haven't thought about how you'd do that, it actually is not a simple problem. In Bing's case it MIGHT be possible to find an analytic solution (making the computation easy), but so far I have not been able to figure one out, largely due to my rusty math skills but maybe because it isn't tractable. If I can't find such a solution I'll need another answer.

I have what I think is a good reason for wanting to specify exact foot positions like this -- it will allow me to keep the feet stationary and move the "robot zero" (and the center of mass) arbitrarily without the feet moving. I think this will be important for shifting weight as part of walking, and for killing momentum as part of balancing.

Not sure how long all this will take until a reassembled Bing will be running the new cool software features, but whenever it is, a video will be forthcoming!
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by eddymoore » Fri Mar 02, 2007 3:38 pm

Post by eddymoore
Fri Mar 02, 2007 3:38 pm

Can I highly recommend the book: "Introduction to robotics, mechanics and control" by John J Craig for all your Inverse Kinematics needs? It's a great book, helped me a lot with my hexapod, and addresses the maths in a more practical way than most other books.

As for

(figure out where the bot will fall and try to make sure a foot is there to catch it).


as a robotics proff and my university says, it's all about having good mathematical models that don't needs a ton of conditional clauses to operate (so no individual pre-programmed movements, no 'if you feel yourself falling to the left, do this' type stuff), the model should take care of it all. As fas as i can tell, Zero Moment Point seems to be currently the most elegant way of doing it.

All the best, this really is a top-shelf project!
Can I highly recommend the book: "Introduction to robotics, mechanics and control" by John J Craig for all your Inverse Kinematics needs? It's a great book, helped me a lot with my hexapod, and addresses the maths in a more practical way than most other books.

As for

(figure out where the bot will fall and try to make sure a foot is there to catch it).


as a robotics proff and my university says, it's all about having good mathematical models that don't needs a ton of conditional clauses to operate (so no individual pre-programmed movements, no 'if you feel yourself falling to the left, do this' type stuff), the model should take care of it all. As fas as i can tell, Zero Moment Point seems to be currently the most elegant way of doing it.

All the best, this really is a top-shelf project!
eddymoore offline
Newbie
Newbie
User avatar
Posts: 4
Joined: Wed Feb 14, 2007 1:00 am

Post by DerekZahn » Fri Mar 02, 2007 4:42 pm

Post by DerekZahn
Fri Mar 02, 2007 4:42 pm

Thanks for the book suggestion, I think a little schooling will come in handy.

Luckily, I believe I have solved the foot-placement problem analytically. The double knee joint was making it a bit complicated but now I just have to code it up and make sure I really got it right.
Thanks for the book suggestion, I think a little schooling will come in handy.

Luckily, I believe I have solved the foot-placement problem analytically. The double knee joint was making it a bit complicated but now I just have to code it up and make sure I really got it right.
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by DerekZahn » Fri Mar 09, 2007 7:15 pm

Post by DerekZahn
Fri Mar 09, 2007 7:15 pm

Bing's maintenance tasks are almost finished, and while I've been tweaking stuff I've also been thinking about what model to use for walking. I have a plan.

The basic walking model views a step as a gravity-assisted pivot about a stationary foot, while the other foot is then freed up to move to its new position. The pivot consists of a guided adaptive trajectory of the robot's center of mass with respect to the pivot foot's ground contact patch. A normal walking phase consists of four overlapping parts:
    The Landing - this is where the moving foot contacts the ground
    The Pivot - this is where the pivot foot has an opportunity to guide the center of mass a bit, primarily with the ankle and hip
    The Takeoff - energy is added to get the trajectory going in the desired direction
    The Swing - for a time, while the robot pivots on one foot, the takeoff foot will have no pressure on it. During that time, the foot needs to move to the location of its next landing.
In general, the center of mass will not pass over the pivot foot's contact patch, meaning that the robot is not stable and is falling. However, most steps will send the center of mass close to being over the contact patch -- being close to balance like that is a good way to buy time for the foot swing.

Before I work on that full step sequence, I want to focus on starting and stopping, which leads to the idea of a "half step" -- starting in one stable position, step to another one. The start offers an opportunity not available during a normal step -- a time when both feet are on the ground.

So: how to start a step? It looks like there are three available tools:
    1) Shifting the center of mass using both legs, by moving the hips around.
    2) Pushing off using the ankle joint
    3) Pushing off using the knees

Once Bing is fully reassembled, this will be my focus.
Bing's maintenance tasks are almost finished, and while I've been tweaking stuff I've also been thinking about what model to use for walking. I have a plan.

The basic walking model views a step as a gravity-assisted pivot about a stationary foot, while the other foot is then freed up to move to its new position. The pivot consists of a guided adaptive trajectory of the robot's center of mass with respect to the pivot foot's ground contact patch. A normal walking phase consists of four overlapping parts:
    The Landing - this is where the moving foot contacts the ground
    The Pivot - this is where the pivot foot has an opportunity to guide the center of mass a bit, primarily with the ankle and hip
    The Takeoff - energy is added to get the trajectory going in the desired direction
    The Swing - for a time, while the robot pivots on one foot, the takeoff foot will have no pressure on it. During that time, the foot needs to move to the location of its next landing.
In general, the center of mass will not pass over the pivot foot's contact patch, meaning that the robot is not stable and is falling. However, most steps will send the center of mass close to being over the contact patch -- being close to balance like that is a good way to buy time for the foot swing.

Before I work on that full step sequence, I want to focus on starting and stopping, which leads to the idea of a "half step" -- starting in one stable position, step to another one. The start offers an opportunity not available during a normal step -- a time when both feet are on the ground.

So: how to start a step? It looks like there are three available tools:
    1) Shifting the center of mass using both legs, by moving the hips around.
    2) Pushing off using the ankle joint
    3) Pushing off using the knees

Once Bing is fully reassembled, this will be my focus.
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by eddymoore » Fri Mar 09, 2007 11:46 pm

Post by eddymoore
Fri Mar 09, 2007 11:46 pm

I'm betting you shut the curtains (so the neighbours don't try and get you sectioned) before doing funny walks in circles around the room, pausing at various points and seeing in what direction you fall over. I love this hobby :)
I'm betting you shut the curtains (so the neighbours don't try and get you sectioned) before doing funny walks in circles around the room, pausing at various points and seeing in what direction you fall over. I love this hobby :)
eddymoore offline
Newbie
Newbie
User avatar
Posts: 4
Joined: Wed Feb 14, 2007 1:00 am

Post by DerekZahn » Tue Mar 13, 2007 3:48 am

Post by DerekZahn
Tue Mar 13, 2007 3:48 am

With Bing finally reassembled I can make some more progress. One thing I had to fix was the connection of the foot pads, which was quite inadequate to deal with the shear forces on the feet:

Image

bigger: http://happyrobots.com/badfeet.jpg

So I decided to make a spacer for the middle of the foot which would get screwed on through the four middle screws. The bottom plate is then securely fastened to that plate, in such a way that a little bit of pressure is put on all four sensors at all times. This reduces the range of the sensors and in other ways decreases their accuracy, but for rubustness it's worth it.

Image

bigger: http://happyrobots.com/goodfeet.jpg

For driving Bing around, I plan to use some sort of keypad to select actions, and a 6 degree of freedom input device called a "Space Navigator" for general directional input. It's a pretty nifty little device.

Image

bigger: http://happyrobots.com/snav.jpg

If you're curious, check it out at http://www.3dconnexion.com/

I have been tuning a parameterized set of "neutral poses", which are a reduced-dimensionality set of stable standing poses. The dimensions are:
    1: Foot angle. Both feet have the same outward angle.
    2: Foot spread. Both feet are spread horizontally by the same amount
    3: Foot forward/back. One foot forward, one foot back, by the same amount
    4: Height, or "crouchiness" (knee bending)

I attached those dimensions to four inputs on the Space Navigator so I can play with the different poses. Here's a video of the current result with bing upside down so the foot positions can be clearly seen. It's not quite perfect yet but getting close (the camera angle and tilt makes it look a little worse than it actually is):

phpBB [media]


Bigger: http://happyrobots.com/bing2.wmv

Now, the next step is another parameterized simplification -- starting with any one of these neutral poses, change the pose so that it is still stable and the feet stay in the same position. I want the degrees of freedom to be the location of robot zero along a line connecting the foot centers (which shifts weight from one foot to another), the angle of the torso, so the torso can "Twist", and the "crouchiness". I'm working on the math but it's not finished yet.

Just about three months to RoboGames!
With Bing finally reassembled I can make some more progress. One thing I had to fix was the connection of the foot pads, which was quite inadequate to deal with the shear forces on the feet:

Image

bigger: http://happyrobots.com/badfeet.jpg

So I decided to make a spacer for the middle of the foot which would get screwed on through the four middle screws. The bottom plate is then securely fastened to that plate, in such a way that a little bit of pressure is put on all four sensors at all times. This reduces the range of the sensors and in other ways decreases their accuracy, but for rubustness it's worth it.

Image

bigger: http://happyrobots.com/goodfeet.jpg

For driving Bing around, I plan to use some sort of keypad to select actions, and a 6 degree of freedom input device called a "Space Navigator" for general directional input. It's a pretty nifty little device.

Image

bigger: http://happyrobots.com/snav.jpg

If you're curious, check it out at http://www.3dconnexion.com/

I have been tuning a parameterized set of "neutral poses", which are a reduced-dimensionality set of stable standing poses. The dimensions are:
    1: Foot angle. Both feet have the same outward angle.
    2: Foot spread. Both feet are spread horizontally by the same amount
    3: Foot forward/back. One foot forward, one foot back, by the same amount
    4: Height, or "crouchiness" (knee bending)

I attached those dimensions to four inputs on the Space Navigator so I can play with the different poses. Here's a video of the current result with bing upside down so the foot positions can be clearly seen. It's not quite perfect yet but getting close (the camera angle and tilt makes it look a little worse than it actually is):

phpBB [media]


Bigger: http://happyrobots.com/bing2.wmv

Now, the next step is another parameterized simplification -- starting with any one of these neutral poses, change the pose so that it is still stable and the feet stay in the same position. I want the degrees of freedom to be the location of robot zero along a line connecting the foot centers (which shifts weight from one foot to another), the angle of the torso, so the torso can "Twist", and the "crouchiness". I'm working on the math but it's not finished yet.

Just about three months to RoboGames!
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by DerekZahn » Thu Mar 15, 2007 6:57 am

Post by DerekZahn
Thu Mar 15, 2007 6:57 am

The modeling and calibration are still just a bit off, but I have the parameterization that I described in the previous message. Starting with an arbitrary "neutral pose", I can use that Space Navigator thing to move Bing around in the three dimensions of "twist", "crouchiness" and "one foot to the other". Here's a video demonstrating, starting with the feet in an arbitrarily-chosen configuration:

phpBB [media]


bigger: http://happyrobots.com/bing3.wmv

Things are far enough along now that I can start to think about the preliminaries of walking, which means programming some simple shifting and pushing motions and studying the results on my graphs and in the bot's behavior.

Now is when things start to get difficult!
The modeling and calibration are still just a bit off, but I have the parameterization that I described in the previous message. Starting with an arbitrary "neutral pose", I can use that Space Navigator thing to move Bing around in the three dimensions of "twist", "crouchiness" and "one foot to the other". Here's a video demonstrating, starting with the feet in an arbitrarily-chosen configuration:

phpBB [media]


bigger: http://happyrobots.com/bing3.wmv

Things are far enough along now that I can start to think about the preliminaries of walking, which means programming some simple shifting and pushing motions and studying the results on my graphs and in the bot's behavior.

Now is when things start to get difficult!
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Post by JonHylands » Thu Mar 15, 2007 1:45 pm

Post by JonHylands
Thu Mar 15, 2007 1:45 pm

Hey Derek,

So, are you doing IK for that, or some other kind of math?

Very cool stuff, btw.

- Jon
Hey Derek,

So, are you doing IK for that, or some other kind of math?

Very cool stuff, btw.

- Jon
JonHylands offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 512
Joined: Thu Nov 09, 2006 1:00 am
Location: Ontario, Canada

Post by DerekZahn » Thu Mar 15, 2007 3:51 pm

Post by DerekZahn
Thu Mar 15, 2007 3:51 pm

Hey Jon. It's nice that Bing is finally doing some movement, even if it isn't more than just wiggling around a bit so far.

Yes, the current stuff is all based around IK calculations for the leg. In a coordinate system centered on the hip rotation axis, I can specify a desired X and Y location for the foot center, a rotation angle for the foot, and a leg length. Then the joint angles are computed. A constraint for this purpose is that the foot should be parallel to the torso. A further constraint that makes the calculation go smoothly and provides a unique solution is that the line segment connecting the two knee joints is parallel to the line segment connecting the hip and ankle. That constraint turned all the geometry into nice right triangles and from there Pythagoras and simple trigonometry provided the answers.

Given that IK calculation for each leg, the three degrees of freedom illustrated in the video are simple geometric transformations of the foot positions, which then get changed to the leg-centric coordinate system and then the IK calculation gets run.

I skipped one step in that description -- I have another function that takes the foot X, Y, and angle, and returns a range of valid Z height values. Then the valid ranges for both legs are intersected to get the range for "crouchiness" given the other parameters. This cuts down the number of cases where the IK cannot find a solution.

Whew. Kind of a lot of effort just to wiggle around a bit but it's nice that it's completely flexible.
Hey Jon. It's nice that Bing is finally doing some movement, even if it isn't more than just wiggling around a bit so far.

Yes, the current stuff is all based around IK calculations for the leg. In a coordinate system centered on the hip rotation axis, I can specify a desired X and Y location for the foot center, a rotation angle for the foot, and a leg length. Then the joint angles are computed. A constraint for this purpose is that the foot should be parallel to the torso. A further constraint that makes the calculation go smoothly and provides a unique solution is that the line segment connecting the two knee joints is parallel to the line segment connecting the hip and ankle. That constraint turned all the geometry into nice right triangles and from there Pythagoras and simple trigonometry provided the answers.

Given that IK calculation for each leg, the three degrees of freedom illustrated in the video are simple geometric transformations of the foot positions, which then get changed to the leg-centric coordinate system and then the IK calculation gets run.

I skipped one step in that description -- I have another function that takes the foot X, Y, and angle, and returns a range of valid Z height values. Then the valid ranges for both legs are intersected to get the range for "crouchiness" given the other parameters. This cuts down the number of cases where the IK cannot find a solution.

Whew. Kind of a lot of effort just to wiggle around a bit but it's nice that it's completely flexible.
DerekZahn offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 141
Joined: Wed Mar 16, 2005 1:00 am
Location: Boulder CO, USA

Previous
Previous
134 postsPage 9 of 91 ... 5, 6, 7, 8, 9
134 postsPage 9 of 91 ... 5, 6, 7, 8, 9
cron