One of our recent projects at Cape Cod Makers has been attempting to design a robot leg that can sense a bit of the world around it. Currently we have a Hexapod robot (6 legged walking robot) which can walk on flat surfaces. However if you wanted to build a robot to move on flat surfaces, a wheeled robot is a much better choice. It’s faster, easier to control, and much more power efficient (i.e. fuel efficient). There is a big reason why we drive cars instead of six legged mechs to work. Where a walking robot really outperforms is on uneven terrain. Take the simple case of walking up stairs. A wheeled robot has no chance of going up stairs while we ourselves are proof that walking robots can succeed. A walking robot needs to handle uneven terrain. Unfortunately when we try to walk our hexapod on uneven terrain it generally ends in absolute failure. As it walks, it moves its legs to positions that would be touching the ground on a flat surface, but are often hanging in mid-air when walking on an uneven surface. The problem is that the robot can’t sense when a leg is supporting its weight or not. It also can’t tell if a leg is stuck on terrain while trying to move. Our goal is to develop a Leg Controller which can use feedback from the leg to better control it.
Our robot legs are composed of three 3D printed parts, a hip, femur, and tibia. These are connected using servos as the joints. Two of the servos work together to create a hip joint (one providing rotation for the leg, the other raising and lowering the femur), while the last servo connects the femur to the tibia creating a knee joint. To provide feedback we have connected the power for each each servo through a high-side current sensor and used modified servos that provide a analog feedback from the internal potentiometer of the servo. The current sensors let you know if a servo is being blocked by something, like the ground or some obstruction, while the analog feedback tells you the actual angle the servo is at as opposed to the angle it is being directed to achieve. Connecting these sensors and the servos is a PIC18F24K22 8-bit microprocessor which handles driving the servos, communicating with the current sensors, and reading the analog feedback signals with its ADC. Now the real challenge begins as we try to tie the sensor information with the servo control to create something a bit smarter….
If you have any questions or suggestions we would love to hear them, or come to one of our meetups to see the leg in action!