Distributed Cooperative Control of Multi-agent Systems