Two words: Vestibular system
After having recently played through the HL2 series again, I spent a bit of time observing how the Striders (tripods) moved on three legs. It got me to wondering: why are modern attempts at getting a machine to balance on 2 or 3 legs so undeveloped? The best display of balance in a robot I've seen so far (on legs, mind you) has been in the Honda Asimo Robot, and even that seems to be very slow and calculated. The movement doesn't appear to be fluid or 'natural'. Here we are, trying so diligently to discover the missing component for awareness in a program, and we can't get the damn things to stand up straight, or to get up after they fall down anyways. There's always a nifty piece of technology I'm seeing in a game or film every now and then that can theoretically work in the real world, but doesn't exist due to lack of enthusiasm on part of potential developers or funding (I'll have to name some examples as I come upon them, but for the moment would prefer to leave this thread in the realm of balancing machines).
I want to pose a series of questions, and for the example we'll be using a theoretical strider.
Spoiler for Strider:
This thing would need to constantly shift its weight in order to remain upright while it moves with one leg at a time. A number of sensors that measure the weight being exerted on each leg, and the angle of the joints with respect to the hull and the ground could feed the input to the computer that would constantly be correcting the orientation of the legs to maintain a balanced center of gravity.
How will we program this?
-Are we going to be using multiple processors for individual components of the strider that speak to each other, or can one processor run the entire thing?
-What language are we using to do this (I know next to nothing about programming, and am willing to learn)?
How will we give it the ability to climb and descend inclines?
-What kind of visual sensors are we using?
-Can we allow it to perceive depth?
-Is echolocation a possibility for mapping 3-dimensional changes in the environment?
MECHANICS!
-What are the legs composed of? Are we using hydraulics for the joints, and if so, can we get the joints to overextend?
-Can we implement the use of heavy, heavy springs in the legs to give the machine a more natural "bounce" as it walks? Would this suffice as a form of shocks?
-The joint that merges the leg with the hull has a sort of 'ball and socket' type range of movement. How will we make that work?
Movement is all I wish to cover in the meantime. In the future I'd like to pursue giving the strider the ability to identify and differentiate between objects via visual means. I feel that giving it the ability to make out potential threats will allow it to avoid otherwise hazardous scenarios. For now, at least, we're worried about having it not just fall over and stay that way.If you have suggestions for how we'd have the strider stand upright again after having fallen over, let's hear it! I'm sure there are loads of other questions that need answering, and in due time they will surface.
You do not need to answer all of the questions. An in depth look at any one aspect of this theoretical machine will shed much light on how to build something similar in design.
Well then, what do think about this? Speak.
[EDIT]
A source of power for a life-size version might not be a bad thing to discuss either. I'd like to stay away from petrol, but I'll need to know if hydraulic pumps can be powered sufficiently enough from on-board batteries (and in the future, supercapacitors).
I know we have some engineers here, and I know there are some great ideas to be had.
Last edited by Invader; 03-28-2009 at 03:14 PM.

Two words: Vestibular system

Have a look at this:
http://www.engadget.com/2007/09/20/s...ee-legged-bot/
LD's: 43+
Advisor: LucidDreamGod
BigDog is the alpha male of the Boston Dynamics family of robots. It is a quadruped robot that walks, runs, and climbs on rough terrain and carries heavy loads. BigDog is powered by a gasoline engine that drives a hydraulic actuation system. BigDog's legs are articulated like an animal’s, and have compliant elements that absorb shock and recycle energy from one step to the next. BigDog is the size of a large dog or small mule, measuring 1 meter long, 0.7 meters tall and 75 kg weight.
BigDog has an on-board computer that controls locomotion, servos the legs and handles a wide variety of sensors. BigDog’s control system manages the dynamics of its behavior to keep it balanced, steer, navigate, and regulate energetics as conditions vary. Sensors for locomotion include joint position, joint force, ground contact, ground load, a laser gyroscope, and a stereo vision system. Other sensors focus on the internal state of BigDog, monitoring the hydraulic pressure, oil temperature, engine temperature, rpm, battery charge and others.
In separate trials, BigDog runs at 4 mph, climbs slopes up to 35 degrees, walks across rubble, and carries a 340 lb load.
BigDog is being developed by Boston Dynamics with the goal of creating robots that have rough-terrain mobility that can take them anywhere on Earth that people and animals can go. The program is funded by the Defense Advanced Research Project Agency (DARPA).
(\_ _/)
(='.'=)
(")_(")
Thaaaaaaaaank you for bringing that to my attention Ynot, that was remarkable! And that's exactly the sort of behavior I want to see these kinds of machines express. I remember a good few years ago I had seen the segment where this same robot was kicked in the side (and in the meantime had forgotten about it), which together with the way it slipped around on the icy ground made it look alive. I'm going to spend a bit of time poking around for more information on Big Dog, it's bloody inspiring.
@ DD: To convert that into mechanical sensors would be fantastic to use in conjunction with the robot's perceived 3D environment. I'm not sure what we'd use though for artificial semicircular canals. Perhaps we can use a ferro-fluid to fill makeshift hollow rings wrapped in wire, but I don't think the fluid would produce an outward magnetic field if it's taking the shape of a ring... It would act kind of like a magnet bent around and connected to itself, which wouldn't do much good. I'll have to think about it more.
Timothy Paradox, that Virginia Tech tripod is quite novel. It demonstrates a form of locomotion I've never seen before, although that wasn't what I was aiming for... I see how it represents bipedal movement though. I think, if a unit could be placed on top that would remain upright without having to be flipped above and beneath the hull of the robot, I could see more use for it. I'll think on that too.
And what do you think about using pneumatic artificial muscles for joint movement? I'm thinking this would be a nice option for very long legs, right next to hydraulics.
Just a side note,
but this is a perfect example of a real-time system
Front left leg gives way, balance is lost
There's a finite amount of time before the robot falls, possibly damaging it's cargo or itself
Corrective action must take place before this deadline
This deadline cannot be missed, even if that means an imperfect correction
(\_ _/)
(='.'=)
(")_(")

Ugh...that robo dog is creepy...
Reminds me of the hunters in HL2 ep 2.
LD's: 43+
Advisor: LucidDreamGod
Ynot, is that essentially supposed to equate to reflexive reaction from a program? And is the program supposed "know" how long it will take until it hits the ground, or does it just attempt to correct it's position as fast as it can process the information?
Righteous. I only just got around to finishing that about two days ago. The advisors were the stuff of nightmares.Originally Posted by Timothy Paradox
And,
Does anyone else know if there are currently any robotics projects going on that are utilizing the three-legged concept?

Uh, just to clear things up, the Strider isn't just a robot >_>
It's a synth. It has organs and stuff...and a brain!
Also, for the actually topic, I have nothing to add...
Oh, I know slayer. I'd love to be able to add my own brain matter to one with an uplink that would allow me full control, but we are at the moment limited to conventional technologies.![]()
I was asking for advice with technical knowhow that might shed some light on what might be necessary for the construction of a machine that can balance on three legs. I know we have some members that are much more familiar with electrical/computer engineering concepts than I am, and their knowledge would help me out greatly. If you also check out the main questions I ask in the original post, it reflects that I'm looking for information that other people can offer me.
Sorry, I didn't really read your original post.
So, here's my answers to your questions
(Note: while I'm interested in these sorts of things, I have no actual experience with robotics)
That thing is inherently unstable, It's centre of gravity is way off the ground
Ideally, you want something a lot shorter if you want it to have any sort of stability
Also, the length of the legs will be a huge problem, as the stresses imposed to the middle of the segments would be huge
You;d either need far thicker legs, or far shorter legs
Coupled with that. 3 legs are no good for stable momentum
take a look at nature. 2 legs or 4 legs
With 2 legs, the subject is constantly "falling forward" while in motion
each leg contact with the ground stabilises the fall, body momentum carries through and it begins to "fall forward" again.
This design is perfect for fast acceleration, changing direction quickly and general agility
however, top speed is not as fast as 4 legs can offer
With 4 legs, it gets a little more complicated, as there is different dynamics depending on speed
walking is very stable. There's no falling forward, as there is always 3 legs in ground contact for stability
Running however is entirely different (but I'll leave that for someone who knows more about horses....)
Rest of this assumes 4 legs, as it's the most stable at slow speeds
and you're limited in the number of counter balances you can employ to maintain stability
With a lot of trial and error....
The robot would need to understand it's own dimensions
simple facts like the length of each leg segment, and what would happen to the position of the foot if a joint higher up the leg was hinged.
You could do this dynamically using gyroscopes in each segment, but that's complicated and prone to go wrong, and may well take too long
it's probably safer to just pre-program in information about each segment's position relative to the others for all combinations of joint movement
Once the central CPU can determine where all the segments are, you can program in the basic act of walking
Left hind, left front, right hind, right front
You'd probably have a variety of sensors and simple detection circuits dotted around the joints and contact points of the limbs, with one central processing unit analysing and controlling the overall movement.
You may use multiple CPU's, each dedicated to a specific task
One to control joint movement
One to monitor overall stability
One to sense and interpret upcoming terrain
and possibly one to store and retrieve info on terrain encounters for future reference (see machine learning in next question)
Christ, not a clue
basic sensors and monitors will just be simple circuit logic
but the main CPU....
I think it's dependant on what you want the robot to do
Simplistic, non-learning navigation and movement could be done in a general purpose language
But learning how to overcome new terrain, and improving itself?
you may need a logic language like Prolog
You'd probably end up using a mixture of different languages and programming approaches
blimey, don't think I've ever spent this long on a post
I'll do the rest later
(\_ _/)
(='.'=)
(")_(")
I appreciate that you took the time to give me your input on the subject. There seem to be a few things I can clarify with respect to specific aspects of the machine, so let's begin.
I actually expect the finished product to be quite lightweight. Standing at, say, the average hight of a three story apartment building, it would be ideal for the tripod to weigh less than small two door car. I'd like to use something along the lines of carbon fiber for the legs. I still have some research to do on structural materials, but carbon fiber seems at present to be the way to go. Considering it's cost, though... That'll be figured out in due time. As far as being top-heavy, I'd like the machine's legs to have a wide range of motion, which is to say that it should have the ability to splay its legs apart from each other over such a distance to greatly improve stability whenever it's stationary.
The finished product will have significantly thicker legs though, I agree.
This crossed my mind as well, but upon observation of our example, the strider, it does appear to maintain a constant forward movement. It sways side to side momentarily it raises either of its forward legs. Granted, the movement doesn't appear efficient, but if it can be made to do the same thing in a real life example that would be perfect. I don't expect to make it run, so long as it can walk steadily.Originally Posted by Ynot
I'll try to get an example of what it's movement looks like, probably by frapsing it in game.
Pre-programming is the way I'd go with this. Trying to imagine how I can get a computer to understand it's position spatially with respect to itself and the ground though sounds like a real nightmare. It'll have to never exceed certain joint configurations in one leg if the other leg is oriented in whatever position it's in, to avoid attempts at moving one leg right through another one. I can see how that part would be programmed, with if/when statements.Originally Posted by Ynot
Is it possible to have it generate a 3d image of it's surroundings using a combination of cameras? Something the processor can comprehend and work with, maybe not unlike the AI in a three dimensional game world?
I want to avoid scripted movements, if possible. For movement I would instead preffer that the machine shifts it's center of gravity forward and then corrects the possition of it's legs with respect to the hull, while never actually reaching equilibrium again until it recieves some command to actually stop. I nottice that we walk in a similar fashion, by leaning forward first and then correcting the imbalance by moving our legs forward one after the other continuously until we decide to stop. If the main function of the machine is to correct and perform based on how it's balanced and positioned in space, it shoud also be able to perform over different types of terrain without having to be pre-programmed specifically for those types. Does that sound like a feasible option?Originally Posted by Ynot
To balance and manuever on three legs is the primary function. I think that by using a series of if/when statements in the program that operate on the input of the sensors will fullfil most of that. And a general purpose language would be what exactly, C++ or Java? I know there are other languages used specifically for robots, but the ones I've seen only perform scripted movements similar to what you'd see assembly robots in a car factory doing. Again, I'm pretty limited with my understanding of the different languages, and what the ideal language would be for my situation. So long as it can crunch the information quickly enough to give the machine a more natural reaction time (like Big Dog in the video you linked), I'd get straight to work on learning it.Originally Posted by Ynot
I recently picked up a book from the Sams series on C++ and started watching videos of a Stanford class on "Programming Methology", just to get my feet wet. It looks like something I'm going to enjoy getting into.
And again, thank you for the input, I look forward to hearing your part 2.![]()
Achievements:
Art
The ability to happily respond to any adversity is the divine.
Dream Journal Shaman Apprentice Chronicles
Ok, average car is about 2 tonnes (2000kg)
I just don't see something that size being workable, the forces involved in just supporting 2000kg are enough
but, if like the Half-Life striders, you're wanting the robot to squat and extend it's hull (say being able to lower it's hull from it's natural 3 storey height down to 1 storey, and back up to 3) being able to move such a weight vertically with any reasonable speed would be astronimical
Again going with the forces involved
If you have 2 legs in ground contact with 1 off ground, then a third of the hull's weight will be applying a angular (moment) force on the 2 legs
Not only will the 2 legs have to support the weight vertically, but also counteract angular force as well
You need some sort baseline to work off of
The robot needs to know how to walk in an ideal situation (flat ground, no obsticales)
It'll alter it's walking movements depending on specific circumstances (gradient, etc.) but you need a baseline
The programming will be quite complex
It won't be a single program, rather a suite of programs all running in parellel (and able to influence each other)
Coming up now
As above, you need a baseline
This is how we walk in an ideal situation
incline of 10 degrees = calculate changes in force = calculate change in movements to remain stable while moving = altered walking motion
Ah, surveying the land and interpreting. Probably the hardest part
Calculating movement based on known geography is easy(ish)
Translating the calculations into actual movement is easy
but getting terrain info into our system is difficult
We (humans) have it easy
We can look at terrain and determine whether it's easily passable even before we get there
We can even weigh up the pro's & con's on the quickest vs. safest route
We can extrapolate
Slugs will slither up to a rock, realise they can't go over it, and go around it
no forethought or extrapolation, but reacting only to the present
But our machine will have no actual "intellegence" at all
You have a whole heap of issues here
Simple depth perception is certainly possible, mimicing eyes with 2 cameras
(there's even a few algorithms floating about on the net)
But this assumes a lot of things,
like the robot magically "knows" what context these objects are in
Just picking a point and calculating it's distance is not the be all and end all
The robot will have to be able to determine what the object is, in relation to other terrain
The difference between an impassable wall, and a sloping floor, is purely a matter of gradiant
If you just look at the top of a slope, and work out it's distance away, how (programatically) do you differentiate that from the top of a wall?
One is passable (walk up the slope to the top)
One is not (bang into the wall)
The robot could very well spend all day, stationary, staring at an incline in the ground, crunching numbers, trying to determine if it's passable or not. Taking 2 steps then doing it all again.
There's a whole heap of problems with interpreting physical objects and terrain
Nyah, I'll skip this one
My first thought is using indirect motors (induction), rather than the use of hydraulics
(but only because I've never seen a self-moving machine use hydraulics)
When I think hydraulics, I think of slow, heavy lifting
not momentum
As above, I'd use motors
Induction motors would be good, as each segment would be free to move without directly affecting on the motor
Sensors could monitor the movement, determine whether we want this movement, and alter the motor to compensate
Nyah, I'll skip this one too
Last edited by Ynot; 04-07-2009 at 04:29 PM.
(\_ _/)
(='.'=)
(")_(")
is that big dog thing for real??watching it walk in the forest, seriously freaks me out!
it reminds me of a video I saw a while back that was supposedly an alien (two legged). its the rhythm of the legs that erked me. so mathematically precise. and not changing in rhythm. unlike living things, or in this case a dog. stopping and going, and changing his rhythm as he explores the world.
but then again, some eye witnesses claim that grays are bio-mechanical machines! (created by humans)
Thanks Xaq. I take it you might have seen the link Timothy Paradox posted up a little ways for the videos of the robot in operation. Still not what I'm aiming for, but everything is good to take into consideration.
Right, what I should have said was that I expect it to weigh significantly less than a tiny car.I'm expecting the legs to end up being most of the weight if they're carrying the motors, but after doing some looking into the artificial pneumatic muscles it might be a lot simpler to have one larger motor powering a pump in the hull. I can't make any real estimates just yet, as I don't know what my version of this thing will be equipped with.
Oh, and the whole deal with being able to squat like the HL2 striders... For the moment we can throw that idea away. That's a huge design challenge that's feasible but currently unnecessary. I don't think I'll need it to be hunting people hiding under balconies and freeway overpasses just yet.
Right, it really just boils down to having the robot 'expect' upcoming obstacles or changes in terrain elevation. We, for example, don't maintain a typical walking movement and then wait until we actually place our first foot on the hill to determine that we need to correct our movements. We correct for them before that first step onto the hill, which is what the machine will have to do (you already said that, too, so I'm just repeating you). If it can avoid tripping over low cables as well, hey, that would be fantastic. If the robot has no way of knowing, it could end up walking straight over a cliff before it even knows what's going on.Originally Posted by Ynot
I haven't yet figured out where I want the tripod's commands to move come from, whether they should be motivated by "this is the destination, find a passable route, get there" and it works by itself, or if it's direction should be remote operated: "I tell you the direction you need to go, you figure out how to walk on the terrain to move in that direction". For the moment I'm leaning towards remote operation. All it needs to do is just know how to walk right and maintain its balance on level surfaces, inclines, and uneven land. Once that's achieved, I'd go ahead for getting it to reach destinations on its own.Originally Posted by Ynot
That sounds like an entire project in itself. Do you think it might be ideal just to start with the bare basics by getting it to walk blindly on a flat surface, and then going from there? I mean, I can't yet imagine how I'd even implement a system that allows it to perceive a 3 dimensional environment. I suppose it's something I'll have to bring up in the appropriate future classes. And what you said about walls vs slopes, that's also why I thought a system based on echolocation would work as well, but whether or not that even exists artificially is beyond me. It would at least give it a very solid interpretation of close objects, assuming it's not interpreting a giant cloth banner as an impassable concrete wall.Originally Posted by Ynot
Would induction motors be able to operate long limbs with high torques being exerted on it? I understand how they function and know that they're used in industrial applications plenty. So long as they can support the weight of the machine at the joints, it sounds good enough to me.My first thought is using indirect motors (induction), rather than the use of hydraulics
(but only because I've never seen a self-moving machine use hydraulics)
Induction motors would be good, as each segment would be free to move without directly affecting on the motor
Or by their alien overlords. *nod*Originally Posted by Juroara
Bookmarks