I wanted to build a walker, but the time to construct it in was very short, so I went for a design that did not require any complex mechanics or software. I devised a design which would always be balanced. This is how I arrived at the design of Jim Struts feet, long enough so that he was balanced front and back, and a foot on the ground all the time on each side.
To make the software simple I decided that the two left legs would be independent of the two right legs and that steering would be like a tank.
To keep a foot on the ground all the time on one side of Jim, the legs on just the left or just the right, would work together, and follow the sequence in the table below.
The software sets the points in the above table as targets and then activates the hydraulic cylinders until the cylinders sensors have achieved that position. When both the inner and outer legs have met the target the next set of targets is set for the legs. To walk backwards the sequence is stepped through in reverse.
The original sequence was a square, which meant the main body of Jim would stop moving forward twice during the walking cycle. The result of this was Jim would rock backwards and forwards lifting one end of the feet off the ground by up to 10cm. The sequence 3:9, 4:10, 5:11 stopped the rocking by nearly keeping the forward motion at a constant rate.
It should be noted that the path length of the foot on the ground and the foot in the air are different. Because the hydraulic rams move at a constant rate there will be pauses in the motion of the foot on the ground as the leg in the air catches up. As the hydraulic solenoids are very slow (50mS), the hydraulic valve can be electrically operated faster than it can mechanically respond, hence it only partially closes, so the motion appears relatively smooth.
Time did not permit it, but it was intended that walking points 6,7,8 would have a correction to them to compensate for the arc the leg follows when moving backwards and forward. This would have kept the body at a constant height while walking. During the competition we kept the step length relatively short so that this correction was not required.
Jim Struts has three microcontroller's on him, one PIC 16C57 for decoding the receiver data and overall management of Jim Struts and two 16C73's for the leg management. One 73 would control the left legs and the other the right legs. Four of the 73's Analogue to Digital convertors are used to give an x-y 8 bit absolute position of the outer and inner legs.
The receiver chip would repeatedly send the receiver data to the leg management chips, each on their own data bus. The data to each chip was altered slightly so that identical software could be run in each of the leg management chips, this meant I only had to develop one set of leg management software.
The transmitter broadcasts twelve groups of data each one byte long, the four upper bits held the group number and the four lower bits held that groups data. These groups of data are constantly transmitted in sequence. The groups carried the following commands/data:-
Left Outer leg manual control
Left Inner leg manual control
Right Outer leg manual control
Right Inner leg manual control
Switch Bank 1 (Special functions)
Switch Bank 2 (Special functions)
HEX 1 Step length
HEX 2 Step length Mid-Point
HEX 3 Step height
HEX 4 Step Height Mid-Point
HEX 5 Tilt (Left to Right)
The walking targets for the walking sequence were held in a look up table which the walking sequence routines would look up as required. These values were recalculated whenever the walking parameters HEX 1-5 were changed.
The 4 bit data in the walking parameters are used as the upper four bits for the walking targets. All the walking targets are calculated with simple divide by 2, add or subtract, no time consuming multiplications or divisions...
The special function switches were to give automated forms of attack. Time did not permit this and the only function we had programmed for the competition were:-
All legs at maximum height
All legs at minimum height
Stop the internal combustion engine
The remote control unit is based around a LPRS Transmiter and a 16C57 Pic Chip. The switches on the control panel are scaned in turn using 74HCT245 chips for selecting the switches to a 8 bit data bus read by the Pic Chip.
The remote control only transmits switch position information, the switch information is interperated on Jim Struts.
We have been asked a number of time if we had any problems with Radio Frequency interference. The only real problems we had was when the aerial on the transmitter would partially fall out of it's connector, and during the competition where we stood too close to a metal vertical bar in the control booth. To reduce the potential interference from the computers we mounted all the electronics in a aluminium box and used screened cable to and from every thing except the batteries. All the screens were made off in the computer box only. A spare core in the cables to the hydraulic solenoids was used to provide a earth to the hydraulics metalwork via the solenoid. The receiver is about the size of a match box and so we mounted it in a eddy box with just the antenna protruding, and a cable back to the computer box. The cable carried data to the computer and power from the computer box, with the screen made off at both ends. The receiver eddy box was mounted as far from the computer box as possible. The eddy box can be seen in the leg chamber at the bottom left hand side of the picture which shows the insides of Jim with the old engine.
Additionally the receiver software rejected any data which either failed a parity test or errors in the start and stop bits.
We have had a number of problems with Jim Struts which without a major rebuild can not be cured, and prior to the Robotwars competition, if cured we would not have been ready for the competition.
Legs The leg with the front to back hydraulic cylinder driving it, is about a five to one lever. The original hydraulic pressure was designed to be sufficient to lift Jim Struts' full weight on one leg. However, we had not taken into account the arc of the leg lifting the body during the backwards or forwards motion (in the worst case this requires about 0.8 of the body weights force). The problem is further exaggerated by the five to one lever, making the force required by the cylinder to be about four times the body weight in force. To get around this, we compromised by increasing the pressure, but not as much as a factor of four, and reduced the rate of oil flow (hence Jim Struts is not as fast as originally designed), and only took small steps.
Inequality Oil pressure requirements As a consequence of the above problem, when more than one cylinder operates at the same time, the one with the least force acting against it operates first. In itself, this was not a problem since the software would shut off valves as a target was met allowing the other cylinders to catch up. However, when there is a high load on one cylinder and nearly no load on another (i.e. foot off the ground) then occasionally a cylinder will work in reverse to what is required, by pushing high pressure oil from the loaded ram into the high pressure line and then into the low loaded cylinder. This problem could be easily cured with stop valves in the high pressure side going into the hydraulic valves. We had the stop valves but did not fit them because of their weight, it would have added about 2-3kgm to Jim Struts weight.
If you think there should be some other technical detail on these pages please EMail me at our contact address and I will then consider adding it:-