The CINDY Cognitive Architecture
Contents
Long-term Goal
CINDY stands for Circular Network Dynamics. As a project in developing a cognitive system, it is just beginning. It is based on several other cognitive architectures, especially the iCub cognitive architecture.
CINDY is a very early work-in-progress but the long-term goal is to design and implement of an emergent artificial cognitive system that builds on the principles of growth and development through circular causality, sharing many of the principles of the field of Systems Dynamics, Dynamical Systems Theory, and Enaction (e.g. positive feedback, circular causality, non-linearity, far-from equilibrium stability, endogenous change, structurally-determined dynamic patterns).
In the long-term, CINDY will feature:
- exogenous and endogenous attention (both overt and covert)
- joint perceptuo-motor representations (e.g. joint episodic-procedural memory)
- value-system driven development
- action selection based on internal simulation
Short-term Relevance
Right now, though, apart from some utility functions, it comprises just two prototype components that serve simply as examples of how a typical component in the architecture should be implemented. Over the coming months, I will add more components, some based on the original iCub cognitive architecture and some completely new. These will provide to the functionality expected in a cognitive architecture.
These prototype components can also be used as the basis for developing applications using the component-port-connector model of component-based software engineering. One of the prototypes features a graphic user interface (GUI) implemented using FLTK, while the other does not.
What to Do Next
The following sections will help you install the current implementation and run some test applications. It also provides a comprehensive overview of how to develop a new component for the architecture.
There are also a set of software engineering standards which have been adopted to make sure the software can be maintained in the long term. Please respect these standards if you are developing code that you intend to be integrated into the architecture.
These guides and standards were originally developed for the iCub in the RobotCub project and subsequently adapted for the DREAM project (see my website home page for links).
Developer Guides
Software Engineering Standards
- Standards for File Organization
- Standards for Internal Documentation
- Standards for Component Functionality
- Standards for Programming Style
- Standards for Programming Practice
Resources
D. Brugali and P. Scandurra. Component-Based Robotic Engineering (Part I). IEEE Robotics and Automation Magazine, pages 84–96, December 2009.
D. Brugali and A. Shakhimardanov. Component-Based Robotic Engineering (Part II). IEEE Robotics and Automation Magazine, pages 100–112, March 2010.
H. Bruyninckx, M. Klotzbu ̈cher, N. Hochgeschwender, G. Kraetzschmar, L. Gherardi, and D. Brugali. The BRICS component model: A model-based development paradigm for complex robotics software systems. In Proceedings of the 28th Annual ACM Symposium on Applied Computing, SAC ‘13, pages 1758–1764, New York, NY, USA, 2013. ACM.