Skip to main content

Robotic core for the PATHOS project.

Project description

╭────╮        ╭╮
│╭─╮ │        ╰╯
│╰─╯╭╯╭────╮  ╭╮  ╭────╮╭────╮
│╭─╮╰╮│╭──╮│  ││  │╭──╮││╭──╮│
│╰─╯ ││╰───╮  ││  ││  │││╰──╯│
╰────╯╰────╯  ╰╯  ╰╯  ╰╯╰───╮│
                        ╭───╯│
                        ╰────╯

Being

Block based Python middle ware library for the PATHOS project. Developed at RAUC. Makes it possible to steer motors via CAN / CanOpen and process sensor data. Controllable via a web user interface.

PATHOS

PATHOS 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 the Autonomous Systems Lab at ETHZ.

PATHOS was initiated by the Indo-Danish art duo Pors & Rao during an artist residency at the Wyss Zurich in 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 Started

Prerequisites

Being can be installed via the setup.py

python setup.py install

or via PyPi (check latest version).

pip install being

Development enviroment can be set up with

python setup.py develop

Running the tests with

python3 setup.py test

Platform and Supported Hardware

Being 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 the Linear Motion Module. We will integrate more motors from different vendors in the near future.

Primer

Block Network

Being provides various blocks which can be connected with each other (e.g. Motor, Sensor, Network blocks). There are two types of connections: value and message based. 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 a connect() method which can be used for making connections. Note that the | operator has been overloaded to make it possible to chain multiple blocks in series.

# Pipe operator
a | 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 the awake(*blocks) function. This will continuously execute the block network and start up the web server for the web user interface.

Example Being

A small example being, based on the one from the ÉCAL workshop (without sensor input which is only available on the Raspberry PI).

#!/usr/local/python3
from being.behavior import Behavior
from being.being import awake
from being.motion_player import MotionPlayer
from being.motors import Motor
from being.resources import manage_resources


with manage_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)

A Behavior block tells a MotionPlayer which motions to play. Motions are multi dimensional splines which will be stored in a content directory next to the program. The MotionPlayer blocks samples the currently playing spline and outputs the values to two Motor blocks (CAN IDs 1 and 2). This will also startup a web UI which can be accessed under localhost:8080.

Further Being Programs

Please 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 Style

PEP8 / Google flavored. With the one exception for variable and argument names (camelCase). Function and in methods are snake_case().

Workshops

  • Tutorial videos for the workshop Being at ÉCAL can be found here.

Authors

Original Idea & User Interface

  • Søren Pors

Acknowledgments

  • Prof. Einar Nielson

  • Ilia Sergachev

  • Dr. Philipp Reist

  • Prof. Roland Siegwart

Supporters

  • Faulhaber Minimotor Sa

  • Gebert Ruef Foundation

  • Google Cultural Institute

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

being-0.3.4.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

being-0.3.4-py3.9.egg (2.0 MB view details)

Uploaded Source

being-0.3.4-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

Details for the file being-0.3.4.tar.gz.

File metadata

  • Download URL: being-0.3.4.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for being-0.3.4.tar.gz
Algorithm Hash digest
SHA256 fbc6e4c07b086075fd17f90fed91df8a8162606f0c6b4d80f2273a629bf1d62e
MD5 c3003f3597db177e2caed47fdb1e916e
BLAKE2b-256 b732859f9c346346398760b7dc7e232ba0b2664a2963e4ce679ad2b6fa0c9c10

See more details on using hashes here.

File details

Details for the file being-0.3.4-py3.9.egg.

File metadata

  • Download URL: being-0.3.4-py3.9.egg
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for being-0.3.4-py3.9.egg
Algorithm Hash digest
SHA256 316bb780969bb90c1b36342a2b95f5136d1a4c119095e86b740bd78efd2b20bc
MD5 0c7d0478f9c555b16a8c4325f2684516
BLAKE2b-256 062fbd57f8ef51cce40c73d9209655a4e5200fd2b5676ecdf1e2b7d051d22342

See more details on using hashes here.

File details

Details for the file being-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: being-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for being-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2c6ef73aab4905d33eb8551724a54b30c6d23e294e050f683f5bcd26811cdfa6
MD5 3040e21c673d667f612934e63cb46c9e
BLAKE2b-256 a81f5f054d69d5b9e444170e20df7cc8bad8a0ccb054d5e913c4a66e543eb77a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page