The following sections provide some representative examples of the types of projects which the Psyclone platform has been in and how it uniquely benefitted the project in terms of speed of integration and by offering a production-ready, well tested commercial platform.
- Integration of third-party applications
- Grid data processing
- Agent-based simulation
- Interactive robots
When two or more otherwise incompatible software applications need to communicate with each other developers face the prospect of either implementing their own networking protocol or integrating an already existing product. Linking with third-party libraries are not always easy and configuring these to allow any number of data types to be transferred either using publish/subscribe mechanisms or asynchronous queries can take a long time.
Using the Psyclone platform and the CMSDK it is easy for third-party software projects to act as external components, communicating with each other via a distributed Psyclone platform. This platform can either just ask as a publish/subscribe conduit to allow the components to communicate directly with minimal latency or it could use a combination of pub/sub messaging, signalling and asynchronous queries to allow a richer and more multi-modal communication framework.
In addition, the Psyclone platforms offers realtime communication data monitoring via the PsyProbe web interface where the developers can keep track of the dataflow and content. And they can even add standard Psyclone modules and Psyclone contexts to allow the dataflow and the processing to be dynamically updated in realtime depending on the situation and data driven context.
The DataMessage object offers the ability to attach and send any amount of data along including large binary chunks and even a hierarchy of other DataMessages. Everything is timestamped and synchronised to the nearest microsecond even across multiple computers.
Because Psyclone modules can be written in either C++ or Python it allows developers to mix these languages in a single system. More languages are being added such as Java.
Finally, the Psyclone platform allows applications running on a mix of operating systems and bitness architectures to communicate without the usual hurdles which normally comes with multi-platform interactions.
Processing of data on a scalable grid architecture can be done as long as the application and algorithms fit with any one of the many architectures around such as Hadoop.
A single Psyclone system can be distributed onto any number of computers running a mixture of operating systems. It allows scaling by adding and removing nodes at runtime and manual and automatic load balancing by dynamically moving components to less busy computers.
It provides the PsyProbe web interface for remote non-interfering monitoring of data and custom component visualisation.
The algorithms can be written in any of the supported programming languages – currently C++ and Python 2 and 3 – and more languages are being added such as Java.
And the Psyclone contexts provide the ability to automatically and instantly update part of or the whole dataflow based on data, external dependencies and resource availability, and even allow modules to switch their processing algorithms entirely when in different contexts.
Agent-based simulation traditionally deal with simulating the behaviour or responses of a very large number of actors in a time synchronised system. Each actor or agent have their own internal state, but are usually spawned from identical or groups of identical seed objects.
Psyclone was designed to support large distributed simulations with both simple and complex agents. Specifically, Psyclone supports:
- Variable time step size – Global time signalling – also called conductor’s stick – allowing all agents to complete their processing before progressing to the next time step
- Spawning of tens or hundreds of modules with identical cranks, but with variable or random initial variable values (via parameters)
- Complex agents comprising a group of modules as a single entity, allowing the developer to create richer agents which makes use of Psyclone’s modular architecture and even using multiple programming languages
- Gradual development and integration with initial skeleton modules which over time gets implemented to provide richer and more complex functionality
- Non-interfering monitoring via the PsyProbe web interface with a view of the whole system and zooming into parts and even individual modules and dataflow
- Easy scalable platform to include any number of computers running any mix of supported OSes and bitness
- Mix agents programmed in different programming languages (C++ and Python for now, Java and others coming)
Creating interactive robots involves a mix of a large number of areas of research such as vision, speech, robotics, navigation as well as working within a limited amount of resources.
The CoCoMaps project, partially funded by the EU via the Echord++ project, used one independent Psyclone system per robot, distributed partly onboard the robot and partly on a larger server across a WiFi network. Each robot used the underlying ROS platform for low-level interaction with the robot and above that had a large number of modules and catalogs for state-of-the-art vision including face recognition, gaze and emotional response analysis, speech recognition and generation, role and task planning and execution, dialogue steering and management, virtual control panel interaction and joint search pattern navigation.
The cornerstone of the project was the Collaborative Cognitive Maps architecture, implemented by allowing the robots to communicate with each other in real time via a shared CCMCatalog object. Through this catalog each robot could publish, discuss and negotiate observations, roles and tasks with the other robots and the system specifically allows the robots to completely disagree or reach a partially-settled negotiated state.
To read more about the CoCoMaps project please visit: https://cmlabs.com/cocomaps