Package: being
╭────╮        ╭╮
│╭─╮ │        ╰╯
│╰─╯╭╯╭────╮  ╭╮  ╭────╮╭────╮
│╭─╮╰╮│╭──╮│  ││  │╭──╮││╭──╮│
│╰─╯ ││╰───╮  ││  ││  │││╰──╯│
╰────╯╰────╯  ╰╯  ╰╯  ╰╯╰───╮│
                        ╭───╯│
                        ╰────╯BeingBlock based Python middle ware library for thePATHOSproject.
Developed atRAUC.
Makes it possible to steer motors via CAN / CanOpen and process sensor data.
Controllable via a web user interface.Documentation:https://being.readthedocs.ioSource code:https://github.com/rauc-lab/beingPATHOSPATHOS is a browser based animatronics platform for artists.
The 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.The 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.The middleware of PATHOS is called BEING.
We intend to grow and improve its programming and hardware library over time through a contribution model.
Its aim is to translate high level settings into nuanced hardware control and to stay platform independent while interfacing hardware as it comes and goes.The project is currently developed at the Robotics Aesthetics & Usability Center (RAUC) nested within theAutonomous Systems Labat ETHZ.PATHOS was initiated by the Indo-Danish art duo Pors & Rao during an artist residency at theWyss Zurichin early 2017.
The 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.Getting StartedPrerequisitesBeing can be installed via the setup.pypythonsetup.pyinstallor viaPyPi(check latest version).pipinstallbeingDevelopment enviroment can be set up withpythonsetup.pydevelopRunning the tests withpython3setup.pytestPlatform and Supported HardwareBeing has mainly be developed on macOS and Linux (Ubuntu, Raspberry Pi OS).
Although untested on Windows it should be possible to be run on there as well.
Let us know if you encounter any problems.Currently supported motor hardware modules are theLinear Motion Module.
We will integrate more motors from different vendors in the near future.PrimerBlock NetworkBeing provides various blocks which can be connected with each other (e.g. Motor, Sensor, Network blocks).
There are two types of connections:valueandmessagebased.
The former type provides a continuous stream of date while the latter discrete messages.
Payload can be any kind of Python object.The connections have aconnect()method which can be used for making connections.
Note that the|operator has been overloaded to make it possible tochainmultiple blocks in series.# Pipe operatora|b|c# Is equivalanet to:# >>> a.output.connect(b.input)# ... b.output.connect(c.input)Once a block network is defined it can be run with theawake(*blocks)function.
This will continuously execute the block network and start up the web server for the web user interface.Example BeingA small example being, based on the one from the ÉCAL workshop (without sensor input which is only available on the Raspberry PI).#!/usr/local/python3frombeing.behaviorimportBehaviorfrombeing.beingimportawakefrombeing.motion_playerimportMotionPlayerfrombeing.motorsimportMotorfrombeing.resourcesimportmanage_resourceswithmanage_resources():mot0=Motor(nodeId=1,length=0.100)mot1=Motor(nodeId=2,length=0.100)behavior=Behavior.from_config('behavior.json')mp=MotionPlayer(ndim=2)behavior.associate(mp)mp.positionOutputs[0].connect(mot0.input)mp.positionOutputs[1].connect(mot1.input)awake(behavior)ABehaviorblock tells aMotionPlayerwhich motions to play.
Motions are multi dimensional splines which will be stored in a content directory next to the program.
TheMotionPlayerblocks samples the currently playing spline and outputs the values to twoMotorblocks (CAN IDs 1 and 2).
This will also startup a web UI which can be accessed underlocalhost:8080.Further Being ProgramsPlease have a look at these other example programs:ecal_being.py: Being program for the ÉCAL workshop.run_dummy_being.py: Standalone being with two virtual dummy motors for development and testing purposes.Coding StylePEP8 / Google flavored.
With the one exception for variable and argument names (camelCase). Function and in methods aresnake_case().WorkshopsTutorial videos for the workshopBeing at ÉCALcan be foundhere.AuthorsAlexander Theler (RAUC,GitHub)Silvan Januth (Wyss Zurich)Original Idea & User InterfaceSøren PorsAcknowledgmentsProf. Einar NielsonIlia SergachevDr. Philipp ReistProf. Roland SiegwartSupportersFaulhaber Minimotor SaGebert Ruef FoundationGoogle Cultural Institute