The Python Restricted Industrial (PyRI) Open Source Teach Pendant is designed to provide a simple, high-level programming environment for Open-Source ecosystems like Robot Raconteur and ROS. The objective is to allow engineers who are not software experts to access the powerful capabilities of these ecosystems. It provides a simple programming environment using Blockly, Restricted Python, and a top-level state machine. The Python Restricted Industrial Python dialect is a simplified subset of Python intended to be easier to use for novice programmers, to be more robust, and to be more verifiable than standard Python. This project also includes plans for a prototype teach pendant and runtime cabinet based on a Raspberry Pi, Surface Tablet, and NUC.
Demo video: https://www.youtube.com/watch?v=9KSYgGpG8mk
Get started with PyRI by installing from using pip from a private package server. See Documentation for the available documentation. It is highly recommended that the Robot Raconteur training simulator be installed and used to learn to use the software.
To install, run the following commands in a new directory. Only tested on Windows. Python 3.9 x64 is required.
c:\python39\python -m venv venv
venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install --extra-index-url=https://pyri-project.github.io/pyri-package-server/ pyri-core pyri-cli pyri-device-manager pyri-devices-states pyri-program-master pyri-robotics pyri-robotics-motion-program pyri-sandbox pyri-variable-storage pyri-vision pyri-webui-server pyri-webui-resources
pyri-cli webui-install --extra-index-url=https://pyri-project.github.io/pyri-package-server/ pyri-robotics-browser pyri-webui-browser pyri-vision-browser pyri-robotics-motion-program-browser
PyRI is now installed. To run, execute:
pyri-core --db-file=my_project.db
Use Firefox or Chrome to open http://localhost:8000 to see the user interface.
The PyRI software is designed to work with Robot Raconteur device drivers, and Robot Raconteur proxy services for ROS devices. See https://github.com/robotraconteur/robotraconteur-directory for a directory of available drivers.
To install the training simulator, see https://github.com/robotraconteur-contrib/robotraconteur_training_sim/blob/master/README.md . It is highly recommended that the training simulator be used to learn the PyRI software.
- WebUI Interface Documentation: InterfaceMenuDocumentation.md
- User Programming Guide: user_programming_guide.md
- Teach Pendant Construction Instructions: TeachPendantConstructionInstructions.md
Blocks and Functions Reference:
- Standard Blockly Blocks: standard_blocks.md
- Util: util_blocks_functions.md
- Globals: globals_blocks_functions.md
- Time: time_blocks_functions.md
- Linalg: linalg_blocks_functions.md
- Geometry: geometry_blocks_functions.md
- Robotics: robot_blocks_functions.md
- Vision: vision_blocks_functions.md
- Tesseract: tesseract_blocks_functions.md
Development Reference:
- Software Architecture: pyri_software_architecture.md
- Development Environment Setup: development_env_setup.md
- Extension Development Guide: plugin_development.md
- PyRI Dialect Specification: pyri_dialect_specification.md
The pyri-core
package contained in this repository contains the pyri-core
service. This service is used to launch the other microservices that make up the teach pendant runtime. See pyri_software_architecture.md for more information on how this works.
Command line example:
pyri-core --db-file=my_project.db
Command line arguments:
Option | Type | Required | Description |
---|---|---|---|
--db-file= |
File | Either --db-file or --db-url |
The file to store the user database in using SQLite format |
--db-url= |
SQLAlchemy URL | Either --db-file or --db-url |
The SQLAlchemy URL of the database to use |
--no-add-default-devices |
Flag | No | Disable adding default devices to a new project database |
The database file to store the user program must be specified as --db-file
or --db-url
. The --db-url
option can use an arbitrary database supported by SQLAlchemy. Other extension packages may add additional command line options to pyri-core
. Check the documentation for each package for more information.
PyRI currently consists of the following packages:
pyri-common
: https://github.com/pyri-project/pyri-commonpyri-variable-storage
: https://github.com/pyri-project/pyri-variable-storagepyri-device-manager
: https://github.com/pyri-project/pyri-device-managerpyri-devices-states
: https://github.com/pyri-project/pyri-devices-statespyri-sandbox
: https://github.com/pyri-project/pyri-sandboxpyri-webui-server
: https://github.com/pyri-project/pyri-webui-serverpyri-webui-browser
: https://github.com/pyri-project/pyri-webui-browserpyri-core
: https://github.com/pyri-project/pyri-corepyri-program-master
: https://github.com/pyri-project/pyri-program-master
Optional packages
pyri-robotics
: https://github.com/pyri-project/pyri-roboticspyri-robotics-browser
: https://github.com/pyri-project/pyri-robotics-browserpyri-vision
: https://github.com/pyri-project/pyri-visionpyri-vision-browser
: https://github.com/pyri-project/pyri-vision-browserpyri-tesseract-planning
: https://github.com/pyri-project/pyri-tesseract-planningpyri-tesseract-planning-browser
: https://github.com/pyri-project/pyri-tesseract-planning-browser
Additional developer tools:
pyri-example-plugin
: https://github.com/pyri-project/pyri-example-pluginpyri-scripts
: https://github.com/johnwason/pyri-scripts (development scripts and examples to trial components)
Teach Pendant Device:
- CAD files and drawings: https://github.com/pyri-project/pyri-teach-pendant-device
This work was supported in part by Subaward No. ARM-TEC-19-01-F-24 from the Advanced Robotics for Manufacturing ("ARM") Institute under Agreement Number W911NF-17-3-0004 sponsored by the Office of the Secretary of Defense. ARM Project Management was provided by Christopher Adams. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of either ARM or the Office of the Secretary of Defense of the U.S. Government. The U.S. Government is authorized to reproduce and distribute reprints for Government purposes, notwithstanding any copyright notation herein.
This work was supported in part by the New York State Empire State Development Division of Science, Technology and Innovation (NYSTAR) under contract C160142.
PyRI is developed by Rensselaer Polytechnic Institute, Wason Technology, LLC, and contributors.