Cognition
through thought, experience, and the senses.
Introduction
The Cognition stack is one of the five high-level components of the Autopilot Inference. It is responsible for interpreting the information from the other functionalities - Perception, Navigation, Interaction, and Ordination - and using it to gain an understanding of the environment and the task it is executing. This information is used for advanced reasoning, such as inferring an internal representation of the real world or making high-level decisions on task execution capability. The Cognition stack also provides status information back to the user, such as task progress and the whereabouts of the robot. Furthermore, it supports the other functionalities (Perception, Navigation, Interaction, Ordination) by making relevant operational information available, such as maps, paths, polygons, and poses, and how they are linked to the tasks and behaviors that the robot is executing.
Capabilities
The capabilities that the cognition stack provides have been designed to support the robot in storing operational relevant data as knowledge, and then reason with that, for example for navigation. These capabilities of the cognition stack often support the capabilities of the other stacks, i.e., ordination, perception, navigation and interaction, or they support in the feedback that the robot provides to a user (via the user interface).
Knowledge representation is a capability of the robot to design and organize information in a way that its computer may create crosslinks between them, thereby being the enabler of (machine) understanding. Ontologies are a key concept in knowledge representations. Within such solutions knowledge is often divided into two parts, the first one being generalizing knowledge concepts (known as the T-box in OWL), while the second part are the actual instances implying their presence in current environment of the robot. The illustration below depicts an example of actual instances related to a floorplan, where a room, such as 'patio', is decomposed into walls and doors. And if the same door is part of two different rooms, then it creates a route between those rooms.
The above ontology is merely an illustration and not implemented in the Origin one. Instead, tThe actual (knowledge) concepts that are structured by the ontology of the cognition stack are: Job, Task, Behavior, Constraint, Policy, Artifact (Aruco marker, Waypoint), Map, Path, Polygon, Pose ad Coordinate System.
Knowledge reasoning is a capability of the robot to assess the knowledge structure, i.e., the general knowledge concepts and actual instances, to further enrich the robot's knowledge about the real world. Symbolic reasoning, such as route planning, task planning and first order logic, are among the typical methods one may find in reasoning about knowledge. The example of Hierarchical Task Planning, depicted below, illustrates a decision tree on how to decompose a main task, i.e., whether to use method 1 (if preconditions are met) or whether to use method 2 (if those preconditions are met).
In the current implementation of the cognition stack there is only rule-based reasoning implemented in the Origin One to decompose a task into primitive tasks and further into behaviors.
Managing knowledge and information is a capability in which the robot is able to manage different pieces of information, i.e., data concepts, obtained from different sources. One source is the user, which shares information about jobs, tasks, constraints and policies, as well as information about Aruco markers and waypoints. Another source of information is the robot itself, which is processing its sensor data in order to gain enriched information about to robot’s current environment. Different pieces of information should be related to each other, i.e., put in context, in order to give actual meaning to all the information that is available in the robot. The example illustrated below first depicts a new path that was recorded by the robot at time T1, which is saved into the knowledge-, or data-, base of the Cognition stack with some unique ID="p3". So when a user makes makes a request to see all paths available on the robot, then it will receive the information of this new path "p3". Then, at time T2, the user defined a new job of one GoTo task that is constrained in the sense that the robot must follow the path that is know to the robot with the ID = "p3". The database is therefore updated with this new task, that was given ID="t6", and with a new constraint linking the task to the path. So that the robot will know how the user wants to execute the task.