Self-assembling multi-robot systems can, in theory, overcome the physical limitations of individual robots by connecting to each other to form particular physical structures (morphologies) relevant to specific tasks. Here, we show for the first time how robots in a real-world multi-robot system can autonomously self-assemble into and reconfigure between arbitrary morphologies. We use a distributed control paradigm. The robots are individually autonomous and homogeneous - they all independently execute the same control program. Inter-robot communication is visual and strictly local. We demonstrate our technique on real robots.