Category:Cognitao
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)
<source lang="C++"> class TaskTrue: public Task{ public: virtual void run() { std::cout << "." << std::flush; std::this_thread::sleep_for(std::chrono::milliseconds(1000)); setReturn(true); } }; </source>
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. <source lang="C++"> 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)); } } }; </source>
Behaviors in CogniTAO
Behavior tree support is for Sequencer / Selector / Parallel. More logic flow controllers can be easily defined. <source lang="C++"> class BehaviourTrue : public Behaviour { public: virtual bool action(){ std::cout << "." << std::flush; std::this_thread::sleep_for(std::chrono::milliseconds(2000)); return true; } }; </source>
World model access in CogniTAO
<source lang="C++"> WM::setVar("EVENT","E2"); </source>
XML plan definition support CogniTAO
Simple SCXML support <source lang="C++"> <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> </source>
Behaviour Tree XML support <source lang="C++"> <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> </source>
This category currently contains no pages or media.