Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ioflo/ioflo
Automated Reasoning Engine and Flow Based Programming Framework
https://github.com/ioflo/ioflo
Last synced: about 1 month ago
JSON representation
Automated Reasoning Engine and Flow Based Programming Framework
- Host: GitHub
- URL: https://github.com/ioflo/ioflo
- Owner: ioflo
- License: other
- Created: 2013-10-07T19:00:19.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2024-04-24T16:32:42.000Z (8 months ago)
- Last Synced: 2024-04-24T19:12:58.153Z (8 months ago)
- Language: Python
- Size: 7.56 MB
- Stars: 152
- Watchers: 19
- Forks: 34
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - ioflo/ioflo - Automated Reasoning Engine and Flow Based Programming Framework (others)
README
![Logo](docs/images/ioflo_logo.png?raw=true)
#Ioflo
##Enabling The Programmable World
http://ioflo.com
## Getting Started
### Installation
``` bash
$ pip install ioflo
```
on OS X
``` bash
$ sudo pip install ioflo```
### Command Line
``` bash
$ ioflo -h
```
```textusage: ioflo [-h] [-V] [-v VERBOSE] [-c CONSOLE] [-p PERIOD] [-r] [-R]
[-n NAME] -f FILENAME [-b [BEHAVIORS [BEHAVIORS ...]]]
[-m PARSEMODE] [-U USERNAME] [-P PASSWORD] [-S [STATISTICS]]Runs ioflo. Example: ioflo -f filename -p period -v level -r -h -b
'mybehaviors.py'optional arguments:
-h, --help show this help message and exit
-V, --version Prints out version of ioflo.
-v VERBOSE, --verbose VERBOSE
Verbosity level.
-c CONSOLE, --console CONSOLE
File path name to console log file.
-p PERIOD, --period PERIOD
Period per skedder run in seconds.
-r, --realtime Run skedder at realtime.
-R, --retrograde Shift skedder timers when retrograde clock detected.
-n NAME, --name NAME Skedder name.
-f FILENAME, --filename FILENAME
File path to FloScript file.
-b [BEHAVIORS [BEHAVIORS ...]], --behaviors [BEHAVIORS [BEHAVIORS ...]]
Module name strings to external behavior packages.
-m PARSEMODE, --parsemode PARSEMODE
FloScript parsing mode.
-U USERNAME, --username USERNAME
Username.
-P PASSWORD, --password PASSWORD
Password.
-S [STATISTICS], --statistics [STATISTICS]
Profile and compute performance statistics. Put
statistics into file path given by optional argument.
Default statistics file path is
/tmp/ioflo/profile/NAME.```
Example:
Put the following into the file box1.flo
``` text
#example mission box1.flo
house box1
framer vehiclesim be active first vehicle_run
frame vehicle_run
do simulator motion uuvframer mission be active first northleg
frame northleg
set elapsed with 20.0
set heading with 0.0
set depth with 5.0
set speed with 2.5
go next if elapsed >= goalframe eastleg
set heading with 90.0
go next if elapsed >= goalframe southleg
set heading with 180.0
go next if elapsed >= goalframe westleg
set heading with 270.0
go next if elapsed >= goalframe mission_stop
bid stop vehiclesim
bid stop autopilot
bid stop meframer autopilot be active first autopilot_run
frame autopilot_run
do controller pid speed
do controller pid heading
do controller pid depth
do controller pid pitch```
To run
```bash
$ ioflo -v terse -f box1.flo```
Something like this should print on the console.
```bash
----------------------
Building ...
Building Houses for Skedder Skedder ...
Created house box1. Assigning registries, creating instances ...
Built house box1 with meta:
plan: Share {'value': 'Test'}
version: Share {'value': '0.7.2'}
platform: Share {'os': 'unix', 'processor': 'intel'}
period: Share {'value': 0.125}
real: Share {'value': False}
filepath: Share {'value': 'box1.flo'}
mode: Share {'value': []}
behaviors: Share {'value': []}
credentials: Share {'username': '', 'password': ''}
name: Share {'value': 'box1'}
Warning: Nonexistent goal share goal.heading ... creating anyway
Warning: Transfer into non-existent field 'value' in share goal.heading ... creating anyway
Warning: Nonexistent goal share goal.depth ... creating anyway
Warning: Transfer into non-existent field 'value' in share goal.depth ... creating anyway
Warning: Nonexistent goal share goal.speed ... creating anyway
Warning: Transfer into non-existent field 'value' in share goal.speed ... creating anyway
Ordering taskable taskers for house box1
Resolving house box1
Resolving framer vehiclesim
Resolving framer mission
Resolving framer autopilot
Tracing outlines for house box1
Tracing outlines for framer vehiclesim
Tracing outlines for framer mission
Tracing outlines for framer autopilotStarting mission from file box1.flo...
Starting Framer vehiclesim ...
To: vehiclesim< at 0.0
Starting Framer mission ...
To: mission< at 0.0
Starting Framer autopilot ...
To: autopilot< at 0.0
To: mission< at 20.0 Via: northleg (go next if elapsed >= goal) From: after 20.000
To: mission< at 40.0 Via: eastleg (go next if elapsed >= goal) From: after 20.000
To: mission< at 60.0 Via: southleg (go next if elapsed >= goal) From: after 20.000
To: mission< at 80.0 Via: westleg (go next if elapsed >= goal) From: after 20.000
Stopping autopilot in autopilot_run at 80.000
Stopping vehiclesim in vehicle_run at 80.125
Stopping mission in mission_stop at 80.125
No running or started taskers. Shutting down skedder ...
Total elapsed real time = 0.2099
Aborting all ready taskers ...
Aborting vehiclesim at 80.125
Tasker 'vehiclesim' aborted
Aborting mission at 80.125
Tasker 'mission' aborted
Aborting autopilot at 80.125
Tasker 'autopilot' aborted----------------------
```
### Documentation
github
https://github.com/ioflo/ioflo_manuals
#### License
APACHE 2.0#### Supported Python Versions
Python 3.7.4 +