Software Architecture
The rationale behind this library is also simplifying the use of Soar via ROS2 while the API should remain as simple as possible. The challenges behind connecting Soar and ROS2 lies in the software architecture of Soar: synchronous callbacks and events. A detailed explanation of the Soar architecture is provided on their website in the Soar manual or the Soar Threading Model.
The user should only be required to do two things: Initialize the Soar kernel with an Agent and add adapted publisher, subscriber, services and clients afterwards. For each message/ topic, the conversion between Soar working memory elements (WMEs) and ROS2 message, or vice versa, types must be implemented manually.
The kernel is wrapped in a single class called
SoarRunner
. The main responsibility is to create, start and maintain the Soar kernel.Publisher, Subscribers, Service and Clients are added via a separate functions to the ROS2 node.