After playing with my BRAT over the last few days, trying to make it as aligned as possible, and pulling few hairs in the process, I have managed to make it walk fairly well. However, I do have few questions:
Should I be able to make it walk completely straight with the analog 645 servos? By straight, I mean make it walk good 10 feet, and expect it to be a straight line? Using the basic autonomous program routines (with adjusted values of course), when using small stride, I am having hard time with it… It either turns left or right after a foot or so. Using the long stride, it is better, but still not perfect…
Turning is really problematic. Sometimes it works, sometimes it doesn’t, and no matter what I do, I can never predict how far the BRAT will turn. Again, is this something that if I do everything right, should work perfectly?
Every time I use the kick routine, the robot drags the foot and falls down. If I make the opposite ankle bend a little more so that the kick clears the ground, then everything else is off. Is there something I’m missing? Should I be adjusting something else besides the ankles?
even using digital servos my BRAT never really walked any great distance in a straight line. some of the things that contribute to this are
-small tolerances in the servos that accumulate
-mechanical in the form of gear slop
-electrical in the form of dead zone
-mechanical differences side to side might only be a couple tenths of a degree but accumulate over time and distance.
turning relies heavily on surface friction. even if you have the exact same load on each foot and centered the exact same way there are again small differences in surface friction and CoG of the mass that will make precision turns very difficult to achieve.
I didn’t do much with the canned routines as there wasn’t much available at the time… perhaps someone else can offer insight into the kick sequence.
here is something to consider… if you had a wheeled robot, put it on the floor, and told it to go 10ft straight out you would find that small differences in wheel diameter and any irregularities in the surface would throw off measurement techniques such as counting wheel encoder pulses. then if you told it to turn 90 degrees again you find that differences in friction and diameters would introduce small errors. what is needed are additional ways of establishing relative movement or absolute position. you use sensors such as ultrasonic, irpd, gyros, and gps together with your wheel encoders to gather an estimate of error and correct for it. it can be pretty complicated programming even for a 2-wheel robot.
the BRAT or any biped is 3D… there are no wheel encoders and another whole axis that can introduce uncertainty into your error calculations. you replace the encoders by using IK to position the feet rather than canned sequences so you have a calculated distance for each step. you can use an accelerometer to determine the orientation of your sensor platform to help adjust the values of the other sensors which at any given time are not necessarily flat and level to the surface you’re walking on. it is all pretty complicated but incredibly interesting programming if you get into it.
The properties you have control over are the sequence steps, and changes to the surface of the bottom of the feet. For example we added little round felt disks to the four corners of the feet to make it less slippery for our water bottle seek and destroy project. Even people have a hard time walking in a perfectly straight line with their eyes closed. As far as the steps in a sequence goes, Don’t be afraid to tweak the values and experiment. When we created the sequences we were not trying to make it walk a long distance in a straight line. I’m sure many improvements could be made. Good luck with the project.
Thanks for the replies! I certainly understand that there will be some differences in tolerances, slop, etc. I guess I just did not know what should my expectations be My only experience is with differential drive robots (Boe Bot and 3pi), and I can make them go pretty darn straight on my hardwood floor, to a point where accuracy has not been a concern for me. I know a biped is a completely different and much more complex beast, and that’s part of the fun. I just want to build a solid foundation, and go from there.
The problem I have with turning is that the BRAT (now I’m using the TV Plus brat code, to try something new, but it was the same way with the original autonomous code and adjusted servo values) will not really turn much while repeating the sequence over and over, then suddenly turn well, then not turn again. So in a span of 10-15 turn sequences, it might actually turn 1-2 times. I have readjusted all the servo mountings to be as symmetrical as I can get it, and my servo values seem to be straight. I think the next step is like you said Jim, to start playing with the code Maybe then I can have it kick well too…
I did add some thin self-adhesive felt, but to be honest on the hardwood floor its not doing much, besides being quieter. I will try some thicker one I think. I also need to solder the battery connectors, the cables keep popping out when BRAT falls. If I may make a suggestion for the 3rd edition of the Atom Board, maybe you can make the terminal connections bigger?
Anyway, this has been a lot of fun, and I’m looking forward to learning a lot.
Something that is thin and cheap for gripping is the rubbery mesh cloth that is sold in rolls for lining drawers and for putting under rugs. Dollartree store has rolls for $1. Stick to the bottom of the bot foot with two sided tape.
It sounds like from your original post that you have some tweaking to do. My brat does not walk in a perfect line but you can get better results tuning the walking gate to best fit your bot. There are other things that can cause your brat to “pull”. The feet should be parallel at zero (home) position, and the two “C” brackets for the leg need to be perfectly aligned. If they are out, one of the feet will be pointing in or out. Another problem I had is letting the foot drag when taking a step. I would pivot both feet when shifting the weight but the foot that is not on the ground I would move it so that it was level with the ground while taking a step. This allowed my bot to take better steps. If my foot dragged even a little it would twirl with the weight of the arms. If you look at my video on my website, you will see my foot go from about 45deg to 0 deg while taking a step. The foot is flat just when it is about to be set down on the surface.
Hey Mike, I will definitely put some videos of my BRAT walking, but I need to re-assemble the top of it again. I’ve been trying to put the IRPD, accelerometer and the Sharp GP2D12 IR sensor together and make it look cool, and I’m on my 5th version now I think this is the winner, just have to find time now… If only life didn’t get in the way of my hobbies!
I did notice that the feet are dragging just a little bit, I will play with that for sure. I also got some thin, adhesive rubber to try.
I’ve seen the videos before, they inspired me to go with BRAT to start with
Yes they were free but not royalty I dont think Shhhhhhh! You can do a search on Genre type “Ambient” music. You really have to dig around because there are lots of crazy stuff out there. Some are twisted, some are crazy, some are silly but some are good. They are good for background music.
Well, I have to admit that my BRAT moves great now, but the solution had nothing to do with my tuning skills… When assembling the bot, I guess I got confused between the assembly instructions and the TV Brat article I read, with how it says that the Atom chip should be pointing forward. To get to the point, I had the wires for left and right legs reversed. No wonder I could not understand why the get up from the front/get up from the back seemed reversed When playing with the 2-axis accelerometer, I finally had a stroke of intelligence, and realized what I have done. Needless to say, my BRAT now walks, turns, gets up, and all that. Even kicks great… And I can understand the motion too I have scratched my head many a time before, wondering why the bugger is not turning as in the video…
Anyway, while overall a very embarrassing mistake, I must say I have learned a lot about the kinematics, and about being careful with the assembly!