Giter Club home page Giter Club logo

pyadept's Introduction

pyadept

AsyncIO-based library for communication with Adept robot controllers.

The library supports creation of high-level robot control nodes and their integration into distributed publish-subscribe systems based on ZeroMQ. The AsyncIO backend allows for flexible composition of multiple communication-heavy coroutines to form a single robot control node.

Robot applications written with pyadept interact with a robot based on the Adept V+ platform running the code from AdeptServer.

Workflow

The intended workflow is based on treating the robot controller as a service. The first stage is to enable high power for the robot and start the AdeptServer's server V+ program on the robot controller side. After this, a Python program based on pyadept can be launched and used for high-level system coordination.

Abstractions

Robot commands are defined as classes in the pyadept.rcommands module. They construct immutable instances providing the functionality of correct generation of the corresponding messages via the the get_messages method. It returns a tuple of byte strings, each finalized with the delimiter sequence "\r\n".

The pyadept.rprotocol module consists of classes, functions and coroutines realizing the communication logic of a pyadept-baseds program, as well as tools for data capture during system operation.

pyadept.rprotocol.RobotClient provides coroutine methods connect (establishing the connection with the server), as well as cmdexec and cmdexec_joined (providing execution of commands). The two latter methods accept one on more instances of robot commands and initiate communication with the V+ server using AsyncIO's StreamWriter/StreamReader pair. Several commands supplied to cmdexec are handled one-by-one: each command's messages are sent to the server, and the corresponding responses are awaited before proceeding to the next command. Conversely, cmdexec_joined combines messages from the supplied commands into a single sequence, and sends all of them in one run.

pyadept.rprotocol.ProtobufCommunicator uses AsyncIO-compatible ZeroMQ primitives to announce a Protobuf-based request event and wait for the corresponding Protobuf-based response in the context of a publish/subscribe system.

References

Please refer to the following research paper for more information about pyadept and AdeptServer:

  • Semeniuta, O. and Falkman, P. (2019) ‘Event-driven industrial robot control architecture for the Adept V+ platform’, PeerJ Computer Science, 5, e207. doi: 10.7717/peerj-cs.207.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.