This project is about autonomous robotic control using Neuroevolution. In particular, it is concerned with solving the inverted pendulum problem using a neural network controller developed with a genetic algorithm (GA), in a physically simulated 3D environment. The inverted pendulum is a classic problem in dynamics and control theory and widely used as benchmark for testing control algorithms. It is possible to generate a recurrent neural control system which achieves the required stability of the pendulum. While the focus of the project is to create a working controller, the primary objective here is to put together a research platform for robotic control systems and machine learning.
The neural controller is ‘evolved’ using the NeuroEvolution of Augmenting Topologies (NEAT) technique developed by Ken Stanley, director of the Evolutionary Complexity Research Group (EPlex) at the University of Central Florida. The experiment uses a realistic physical model of a real robot – the CoroBot system from Coroware Inc. Microsoft Robotics Developer Studio (MRDS) is used to program and implement the simulation scenario.
The resulting application is of parallel and distributed nature whose overall architecture consists of a GA and simulator components, loosely coupled, communicating asynchronously via message passing based on a web services model , which can be executed remotely to one another and are both multi-core scalable . This is made possible by leveraging the Concurrency and Coordination Runtime (CCR) and Decentralized Software Services (DSS) programming models, which are both part of the MRDS infrastructure.
Technology: .NET 3.5 Sp1, C# 3.0, WPF, XNA, Microsoft Robotics Developer Studio, Concurrency and Coordination Runtime, Decentralized Software Services, Microsoft Robotics Developer Studio, Recurrent Neural Network, Genetic Algorithm (NEAT), Nunit.