Category:Cognitao
From Cogniteam
Contents
CogniTAO
CogniTAO is a collection of decision making tools that include
- A pure C++ Cx11 executive for (Windows 10, Linux Debian, Intel / ARM support)
- Finite State Machines
- Hierarchical State Machines
- Behavior Trees
- BDI models
- A Web monitoring and visualization tool in pure Javascript
- A teamwork controller
- A real-time planner
Simple task in CogniTAO (Synchronous execution)
class TaskTrue: public Task{
public:
virtual void run() {
std::cout << "." << std::flush;
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
setReturn(true);
}
};
Task preemption in CogniTAO (Asynchronous execution)
Below is an example of task preemption while the task is busy waiting.
Busy waiting for completion is not a requirement, the task will end only once it's stopped
so returning from a run method and asynchronously setting it's return value and ending the task is perfectly fine.
class TaskIdle: public TaskThread
{
public:
// Function to be executed by thread function
void run()
{
// Check if thread is requested to stop ?
while (stopRequested == false)
{
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
}
};
Behaviors in CogniTAO
Behavior tree support is for Sequencer / Selector / Parallel.
More logic flow controllers can be easily defined.
Behavior is an extension wrapper for Task, that sets it's return value at the end of the action.
class BehaviourTrue : public Behaviour
{
public:
virtual bool action(){
std::cout << "." << std::flush;
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
return true;
}
};
World model access in CogniTAO
The world model is a thread-safe global container for predicate data.
WM::setVar("EVENT","E2");
XML plan definition support CogniTAO
Simple SCXML support
<state initial="A">
<state id="A">
<state initial="a1">
<state id="a1">
<transition event="COIN_A" target="a2"/>
</state>
<state id="a2">
</state>
</state>
<transition event="CHANGE_M" target="B"/>
</state>
<state id="B">
<state initial="b1">
<state id="b1">
<transition event="COIN_B" target="b2"/>
</state>
<state id="b2">
</state>
</state>
<transition event="UNCHANGE_M" target="A"/>
</state>
</state>
Behaviour Tree XML support
<plan>
<seq name="S">
<sel name="S1">
<seq name="S2">
<tsk name="Test1" />
<tsk name="Test2" />
</seq>
<tsk name="Test3" />
</sel>
<sel name="S3">
<seq name="S4">
<tsk name="Test4" />
<tsk name="Test5" />
</seq>
<tsk name="Test6" />
</sel>
<sel name="S5">
<seq name="S6">
<tsk name="Test7" />
<tsk name="Test8" />
</seq>
<tsk name="Test9" />
</sel>
</seq>
</plan>
This category currently contains no pages or media.