{"id":16632718,"url":"https://github.com/rauc-lab/being","last_synced_at":"2025-10-30T04:30:33.200Z","repository":{"id":39798107,"uuid":"379185854","full_name":"rauc-lab/being","owner":"rauc-lab","description":"Block based middleware software for robotic art projects with web based UI","archived":false,"fork":false,"pushed_at":"2022-08-29T21:21:56.000Z","size":4154,"stargazers_count":1,"open_issues_count":10,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T06:24:16.395Z","etag":null,"topics":["art","framework","middleware","robotframework","robotics"],"latest_commit_sha":null,"homepage":"https://asl.ethz.ch/research/rauc.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rauc-lab.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-22T07:48:55.000Z","updated_at":"2022-01-26T16:56:13.000Z","dependencies_parsed_at":"2022-09-10T05:10:34.017Z","dependency_job_id":null,"html_url":"https://github.com/rauc-lab/being","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc-lab%2Fbeing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc-lab%2Fbeing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc-lab%2Fbeing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rauc-lab%2Fbeing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rauc-lab","download_url":"https://codeload.github.com/rauc-lab/being/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238930129,"owners_count":19554122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["art","framework","middleware","robotframework","robotics"],"created_at":"2024-10-12T05:09:56.590Z","updated_at":"2025-10-30T04:30:27.590Z","avatar_url":"https://github.com/rauc-lab.png","language":"Python","readme":".. parsed-literal::\n    ╭────╮        ╭╮              \n    │╭─╮ │        ╰╯              \n    │╰─╯╭╯╭────╮  ╭╮  ╭────╮╭────╮\n    │╭─╮╰╮│╭──╮│  ││  │╭──╮││╭──╮│\n    │╰─╯ ││╰───╮  ││  ││  │││╰──╯│\n    ╰────╯╰────╯  ╰╯  ╰╯  ╰╯╰───╮│\n                            ╭───╯│\n                            ╰────╯\n\nBeing\n=====\n\nBlock based Python middle ware library for the `PATHOS\n\u003chttps://pathos.ethz.ch\u003e`__ project.\nDeveloped at `RAUC \u003chttps://asl.ethz.ch/research/rauc.html\u003e`__.\nMakes it possible to steer motors via CAN / CanOpen and process sensor data.\nControllable via a web user interface.\n\n- **Documentation:** https://being.readthedocs.io\n- **Source code:** https://github.com/rauc-lab/being\n\n\nPATHOS\n------\n\nPATHOS is a browser based animatronics platform for artists.\nThe aim is to enable non-technical people to use robotics as an artistic medium of algorithmic motion and response, and over time allow this language to infuse visual culture at large.\n\nThe platform facilitates collaboration between engineer and non-engineer and emphasizes an architecture that safeguards the artist’s settings while supporting the life-cycle of a technology dependent artwork, from sketching to producing to repair to remake.\n\nThe middleware of PATHOS is called BEING.\nWe intend to grow and improve its programming and hardware library over time through a contribution model.\nIts aim is to translate high level settings into nuanced hardware control and to stay platform independent while interfacing hardware as it comes and goes.\n\nThe project is currently developed at the Robotics Aesthetics \u0026 Usability Center (RAUC) nested within the `Autonomous Systems Lab \u003chttps://asl.ethz.ch\u003e`__ at ETHZ.\n\nPATHOS was initiated by the Indo-Danish art duo Pors \u0026 Rao during an artist residency at the `Wyss Zurich \u003chttps://www.wysszurich.uzh.ch/projects/outreach-projects/pathos?tx_ogwyssteams_teamlist%5Baction%5D=show\u0026tx_ogwyssteams_teamlist%5Bcontroller%5D=Page\u0026tx_ogwyssteams_teamlist%5Bteamid%5D=266\u0026cHash=309fe1ed2ff78ac4cddd292a3f2b0d2e\u003e`__ in early 2017.\nThe frustrations they faced over a period of 19 years while working with lifelike physical animation and response informed the enabling of robotics as a performative medium.\n\n\nGetting Started\n---------------\n\n\nPrerequisites\n^^^^^^^^^^^^^\n\nBeing can be installed via the setup.py\n\n.. code-block:: bash\n\n    python setup.py install\n\n\nor via `PyPi \u003chttps://pypi.org/project/being/\u003e`__ (check latest version).\n\n.. code-block:: bash\n\n    pip install being\n\nDevelopment environment can be set up with\n\n.. code-block:: bash\n\n    python setup.py develop\n\nRunning the tests with\n\n.. code-block:: bash\n\n    python3 setup.py test\n\n\nPlatform and Supported Hardware\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nBeing has mainly be developed on macOS and Linux (Ubuntu, Raspberry Pi OS).\nAlthough untested on Windows it should be possible to be run on there as well.\nLet us know if you encounter any problems.\n\nCurrently supported motor hardware modules are the *Linear Motion Module*.\nWe will integrate more motors from different vendors in the near future.\n\n\nPrimer\n------\n\n\nBlock Network\n^^^^^^^^^^^^^\n\nBeing provides various blocks which can be connected with each other (e.g. Motor, Sensor, Network blocks).\nThere are two types of connections: *value* and *message* based.\nThe former type provides a continuous stream of date while the latter discrete messages.\nPayload can be any kind of Python object.\n\nThe connections have a `connect()` method which can be used for making connections.\nNote that the ``|`` operator has been overloaded to make it possible to *chain* multiple blocks in series.\n\n.. code-block:: python\n\n    # Pipe operator\n    a | b | c\n\n    # Is equivalanet to:\n    # \u003e\u003e\u003e a.output.connect(b.input)\n    # ... b.output.connect(c.input)\n\nOnce a block network is defined it can be run with the `awake(*blocks)` function.\nThis will continuously execute the block network and start up the web server for the web user interface.\n\n\nExample Being\n^^^^^^^^^^^^^\n\nA small example being, based on the one from the ÉCAL workshop (without sensor input which is only available on the Raspberry PI).\n\n.. code-block:: python\n\n    #!/usr/local/python3\n    from being.behavior import Behavior\n    from being.being import awake\n    from being.motion_player import MotionPlayer\n    from being.motors import Motor\n    from being.resources import manage_resources\n\n\n    with manage_resources():\n        mot0 = Motor(nodeId=1, length=0.100)\n        mot1 = Motor(nodeId=2, length=0.100)\n        behavior = Behavior.from_config('behavior.json')\n        mp = MotionPlayer(ndim=2)\n        behavior.associate(mp)\n        mp.positionOutputs[0].connect(mot0.input)\n        mp.positionOutputs[1].connect(mot1.input)\n        awake(behavior)\n\nA `Behavior` block tells a `MotionPlayer` which motions to play.\nMotions are multi dimensional splines which will be stored in a content directory next to the program.\nThe `MotionPlayer` blocks samples the currently playing spline and outputs the values to two `Motor` blocks (CAN IDs 1 and 2).\nThis will also startup a web UI which can be accessed under `localhost:8080 \u003chttp://localhost:8080\u003e`__.\n\n\nFurther Being Programs\n^^^^^^^^^^^^^^^^^^^^^^\n\nPlease have a look at these other example programs:\n\n* `ecal_being.py \u003chttps://github.com/rauc-lab/being/blob/master/ecal_being.py\u003e`__: Being program for the ÉCAL workshop.\n* `run_dummy_being.py \u003chttps://github.com/rauc-lab/being/blob/master/run_dummy_being.py\u003e`__: Standalone being with two virtual dummy motors for development and testing purposes.\n\n\nCoding Style\n------------\n\nPEP8 / Google flavored.\nWith the one exception for variable and argument names (`camelCase`). Function and in methods are `snake_case()`.\n\n\nWorkshops\n---------\n\n* Tutorial videos for the workshop *Being at ÉCAL* can be found `here \u003chttps://pathos.ethz.ch/ecal-workshop-2021.html\u003e`__.\n\n\nAuthors\n-------\n\n* Alexander Theler (`RAUC \u003chttps://asl.ethz.ch/research/rauc.html\u003e`__, `GitHub \u003chttps://github.com/atheler\u003e`__)\n* Silvan Januth (`Wyss Zurich \u003chttps://www.wysszurich.uzh.ch/technology-platforms/robotics-technologies?tx_ogwyssteams_teamlist%5Baction%5D=show\u0026tx_ogwyssteams_teamlist%5Bcontroller%5D=Page\u0026tx_ogwyssteams_teamlist%5Bteamid%5D=14\u0026cHash=fd397786f38a735838b306d7e9655ca9#c117\u003e`__)\n* Ilia Sergachev\n\n\nOriginal Idea \u0026 User Interface\n------------------------------\n\n* Søren Pors\n\n\nAcknowledgments\n---------------\n\n* Prof. Einar Nielson\n* Dr. Philipp Reist\n* Prof. Roland Siegwart\n\n\nSupporters\n----------\n\n* Faulhaber Minimotor Sa\n* Gebert Ruef Foundation\n* Google Cultural Institute\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frauc-lab%2Fbeing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frauc-lab%2Fbeing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frauc-lab%2Fbeing/lists"}