.. _main: ROS 2 Clips-Executive ===================== The |CX| offers an integration for CLIPS with the ROS ecosystem for developing knowledge-based applications. CLIPS +++++ `CLIPS`_ (C Language Integrated Production System) is a rule-based programming language designed for building expert systems. It was developed in the 1980s by NASA to provide a portable, efficient, and easy-to-use environment for developing knowledge-based applications. CLIPS uses a production rule system, where knowledge is represented as if-then rules. These rules operate on facts, which represent data or conditions in the system. The inference engine (based on the `Rete algorithm`_) matches rules against facts and executes the applicable rules based on a conflict resolution strategy. Once no rules can be activated anymore, the execution is halted. The documentation assumes a basic understanding of CLIPS. If you have never worked with CLIPS before, check out the documentation at `clipsrules.net `_ to get familiar with its functionalities. The :docsite:`clips_vendor` package provides a packaged version of CLIPS suitable for the ROS ecosystem (and is also used by the CLIPS-Executive). Overview ++++++++ The heart of the |CX| is the CLIPS Environment Manager node of the :docsite:`cx_clips_env_manager` package that allows creating and destroying CLIPS environments and extending these environments through dynamically loadable plugins (e.g., to inject C++ functions). Several plugins are provided out-of-the-box that enable interfacing with ROS as well as other useful features. See the :ref:`plugins` page for more information. Package Index ------------- The **cx_bringup** package provides example configurations of the CLIPS-Executive that serve as a good starting point for familiarization with the system. To further customize CLIPS, refer to the **cx_clips_env_manager** documentation for more details on plugin handling. You may also review **cx_example_plugin** as a template for writing custom plugins. Related Projects ---------------- This project is inspired by the original CLIPS-Executive from the `Fawkes robotics framework `_ (`GitHub `_), which is no longer actively being developed and will be archived soon (once a full transition to ROS is made). However, while the original CLIPS-Executive presents itself as a goal reasoning framework, this project focuses on generalized CLIPS usage foremost. It is mostly rewritten from scratch, including a different design philosophy, direct CLIPS 6.4 support via the clips_vendor provider (instead of relying on `clipsmm`_), as well as a more robust CLIPS extension management via plugins. All new code is released under Apache 2.0 license, while some optional modules that were derived from fawkes are licensed under the GPLv2+ license. .. toctree:: :hidden: getting_started/index.rst plugins/index.rst plugin_generator/index.rst tutorials/index.rst standards.rst __readme_include.rst