M-Blocks: Self-Reconfigurable Modular Robots