In the previous blog entry I described 3 methods to detect if vacuum suction cup is stuck to the surface:
- Add pressure sensor to each feet
- Try to lift a foot and observe motor current change
- Add microphone and listen for a pump noise change
This week I experimented with option 2 but ran into several problems. First of all lifting feet doesn't necessary need force depending on robot orientation. Imagine robot on ceiling or wall, i.e. sometimes force is needed to keep foot on the surface and sometimes force is needed to keep foot above the surface. Second problem is that 3D printed parts make robot quite flexible which means that the same commanded angle will not result in the same distance between foot and the surface, i.e. distance will depend on robot orientation. Third problem is that putting too much stress on Dynamixel servo motors puts them in fault mode and makes them uncontrollable without reset. Therefore I put current measurement approach on hold and thought of one more option.
Vacuum pump I use provides a motor speed feedback by sending six 5 volt pulses per revolution. It seems logical to assume that, depending on vacuum pressure, pump RPM would drop and should be a definite indicator that suction cup is firmly stuck to the surface. This seemed like a quick win solution. BeagleBone Blue has quadrature encoder inputs and quick googling 1, 2, 3 suggested that they can be reconfigured to read single pulses too. So I needed only few software tweaks and a voltage divider to convert 5V signal from pump to 3.3V signal accepted by BeagleBone Blue.
After few days of trial and error I had to admit defeat :( Officially I blame my 20th century test equipment:
In reality my electronics skills are lacking. Having an oscilloscope wouldn't hurt though. It is now definitely on my to buy list.