I was wondering if anyone might be able to help me out with a question or two.
I have designed and built a quadruped, 9DOF total. The problem I have run into is the programming.
I am running a microcontroller with imbedded linux, and doing my programming in C++.
I have written code that does my IK for one leg. basically, I can enter what coordinate I want the end at, and it gived me angles for the two joints.
I am a bit stuck after this. I don’t know how to create the Gait, or I suppose even more basic, I need to be able to move the legs together.
I know you there are some pretty complex spreadsheet and different controllers, but I thought perhaps someone could still shead some light.
Basically I need to know what to do next. What are the steps involved, I need to get the legs to move coordinated, then be able to create steps, make it turn, etc…
Thanks for any help you can offer, I’ve been searching the forums for a long time and cannot find much usefull information about Quads, or the steps to create programming.
His code is parameter driven, and you can tailor it for 4 legs. Xan has a write-up on how the gait can be set.
You basically want a creep-gait, keeping 3 legs on the floor as much as possible. You rotate through the legs, lifting and moving one forward 1/4 of the distance per cycle, and the others back 1/4. So in a full rotation (full cycle of the gait) you get 1 distance.
9DOF! might have problems turning, due to lack of DOF i would be interested in seeing this. im guessing you have two per leg and maybe one for a camera or sensor?
it is possible to get omni-directional gait using 2dof per leg but you may find it will look a bit “stop ‘n’ start” while walking.
2DOF per leg gives you something more like a “tracked vehicle” drive. I don’t think you can get omni-directional moves (translation), just simple turns. The older SSC32 had this built in.
yeah its almost like driving a tank.
for this 'like you said, you would need to use Creep gait. i beleive that with the system gscustoms is using this would be the only gait that would work. the other quad gaits would course it to fall over.
Actually, and I need more tests to verify this, but I don’t think the insect-type spayed leg stances help.
I think I’m seeing that a long, narrow foot layout is desirable. think of a horse, or a cat. Otherwise, without any body shifts, the two support triangles (and their for/aft mirror images) are two far apart laterally, and the 'bot falls over sideways. Again, I have only suspicions at this point, based on some simple tests.
He’d be creeping, alright! I’ll bet Zenta could shed some light, he’s got his quad walking a bit.
Sorry for not being clear in my description, I will take pictured and post them this evening, but in the meanwhile here are a few images from my model. The final quad has changed a bit as far as linkage and such, but overall it’s the same…
The small platform is for the webcam.
Basically there are two servos per leg, and a middle servo for rotation. to walk it essentialy alternates moving the COG, forming alternating triangles.
When the COG is centered on three legs, the CENTER servo rotates the body and it lifts the leg that is outside of the triangle…the leg servos then advances the tip of the leg and then the CENTER servo rotates down and completes the lift. Then I adjusts the legs to modify the COG triangle for the next leg to lift. While the 1 leg is in the air, the other 3 are also moving the body forward.
so it lifts basically LeftRear then RightFront then RightRear then LeftFront… if i remember correctly off the top of my head.
I have made it walk by simply recording servo positions that I set manually in order to verify it will walk, and it does, but I need to create code that makes it smooth and coordinated. so when I advance the 3 grounded legs, they all move together, etc…and I need some sort of control input!
The advantage of this design is that the leg servos essentially bear little weight, it is all on the vertical bearings of the legs. The center servo carries a ton of weight, but one beefy servo is more economical than 9!
I borrowed the concept from a professor in Japan that I came across online a long time ago.
very nice. 8)
there has been some discussion about using a single rotation within the body using a servo to shift the COG. nicely done. looks impressive.
2 DOF leg posted a lot of constraint on quad gait. There are some move which it cannot perform. But for your design, the additional middle servo will help a lot.
Just a few concern, the last portion on the leg is a bit too thin, will that be a problem? I wonder what the spring for? With this design, you can’t allow too much twist at the torso, this will move the effector/foot position.
It will be a limited gait, but fully mobile, and relatively fast as well, due to the limited strain on the servos.
The leg tips are thin, but with the two pieces with the braces between is actually very strong. The material it is made of is pretty forgiving and will bend before breaking. The springs were just on the model while I was prototyping contact sensors. although I did kind of like the look of it when in has some bounce in its steps!
As far as the torso twist it looks like it should not be an issue. I ran into a problem in my design when I had my pieces laser cut where a mounting point for the center servo linkage was too close to the center of the torso. This caused the servo to rotate its full range while not producing any rotation of the body or lifting legs.
After 2 different servos I’ve got a powerfull enough one in there, and there is a sprocket on the center shaft as well as the servo, with a 1/4" chain connecting them, which solved this issue!
Once I get some time I will post some new pictures, I’ve spent the last 3 days creating my C# code. I finally have my leg IK complete, all my comunication code and as of tonight an Xbox 360 controller tied into the mix!
GS Customs-- like many have said this is a super design. The one thing I would add is that the layout you have is built to have two legs on the ground at a time, not alternating tripods as some have suggested.
I think it is a great idea to have most of your lifting done by a central powerful motor. The biggest issue is probably balance, because if you don’t keep centered you will have an alternating tripod gait-- but with two point of the tripod always being either the front or back legs. And then you won’t get ground clearance.
There is an idea in biologically inspired robots called “central pattern generation”. You can google papers on it. It is not based on inverse kinematics, but the idea that biological walking patterns are based on propagating a single wave form. Every joint amplifies or dampens that wave form, phase shifts it or inverts it. It’s actually a lot simpler and when you get it to work you can easily accelerate, amplify motions certain motions smoothly, and reverse seamlessly.
If you have video or picture of your robot I would love to see it. It looks like a great design and I would love to help you make it work. I am ok with software but I can’t engineer to save my life.
Actually, now that I think about it you could do alternating tripods I guess. But you still will need to have very good balance to get each leg to have good ground clearance.