.. Being documentation master file, created by ================ Welcome to Being ================ .. image:: images/pathos\ logo.png :alt: PATHOS logo Robotic middleware library for easy to use robotic projects. .. _GitHub: https://github.com/rauc-lab/being Being enables engineers and programmers to quickly build robotic programs. Abstracting away most of the low-level heavy lifting when working with motors and sensors. The emphasis lies with slim, high-level programs which operate on *behavior* and *character* to capture the expressive intent of artists. An integrated web interface makes the resulting applications accessible and formable at runtime. Key Features ============ - Connected block logic - CAN based motor controllers - Spline based motion curves - Web based user interface Library Installation ==================== .. code-block:: bash pip install being The following third-party libraries are optional: - `RPi.GPIO `_ for accessing Raspberry Pi GPIO - `PyAudio `_ for audio streams. Python bindings for PortAudio which needs to be installed separately. These can be installed manually or by using `extras`: .. code-block:: bash pip install being[rpi, audio] Getting Started =============== Our first being with one dummy motor. This will create a ``content`` directory in the current working directory where the motion curves will be stored. .. code-block:: python from being.awakening import awake from being.motion_player import MotionPlayer from being.motors.blocks import DummyMotor # Create blocks mp = MotionPlayer() motor = DummyMotor(length=0.1) # Make connections mp.positionOutputs[0].connect(motor.input) # Run being awake(mp) Now inspect the web-based user interface under ``_. Going Further ============= - Core :doc:`concepts` of Being - :doc:`manuals` of the frontend widgets - A couple of quick :doc:`tutorials` and examples - Common pitfalls :doc:`faq` - :doc:`guides` for extending being - Programming reference :doc:`api-reference` Source Code =========== This project is hosted on GitHub_. Dependencies ============ This project uses the usual suspects of the scientific Python stack. Some additional third party libraries for HTTP server, CAN/CanOpen and different configuration formats with round trip preservation. The Python Raspberry Pi library `RPi.GPIO `_ is an optional dependency for accessing the GPIO on a Raspberry Pi which is not available on non Raspberry PI platforms. The frontend uses pure JavaScript and is directly hosted by an aiohttp web server from within Being. No additional JavaScript frameworks needed. Documentation ------------- Some *non-Python* dependencies are needed for building the documentation: - Node.js with the `JSDoc `_ package - `Graphviz `_ Python bindings and additional packages can be installed with .. code-block:: bash pip install -r docs/requirements.txt .. warning:: The `sphinx-js `_ package has a pinned version of Jinja2 which is in conflict with the version needed by Being. Upgrade Jinja2 after intalling the documentation requirements or reinstall the Being requirements. Developing ========== When downloading the source code it is easiest to install Being as a development project. .. code-block:: bash $ python3 setup.py install develop The tests can then be run with .. code-block:: bash $ python3 setup.py test Contributing ============ Coding style is mostly compatible with `Google Python Style Guide `_ with one exception: `camelCase `_ for variables, arguments and attributes. `snake_case `_ for functions, methods and properties. Authors and License =================== The ``being`` package is written by Alexander Theler and is licensed under the MIT license. Feel free to use and improve this project. Table of Contents ================= .. toctree:: :maxdepth: 2 :caption: Contents: concepts manuals tutorials faq guides api-reference Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`