Suke0811 / REMS

REMS
3 stars 0 forks source link

REMS (Robotics Educational Middleware System)

Currently, in early beta (v0.3.*)

PreRequirements

Install

Starting Ver.0.3.*

Pip install

pip install rems

Pip install Keyboard, Joystick and Async Modules

pip install rems[keyboard, joystick, async]

or

pip install rems[full]

Pip install from repo (as library)

pip install git+https://github.com/Suke0811/REMS.git@main

This installs Rems currently from a branch.

Pip install from repo (as an edible library)

pip install -e git+https://github.com/Suke0811/REMS.git@main

This installs Rems currently from a branch as edible.

Alternative methods (no pip)

clone https://github.com/Suke0811/REMS.git
pip install -r requirements.txt

This installs all requirements for you.

How to Run

Notes

Webots and aruco maker


Debugging

With Operator

You can do two ways:

Adding breakpoint() works for all situations, but not as convenient as IDE debuggers.

Operator(debug_mode=True) lets you use IDE debuggers (Pycarm_pydev), but this won't run robots in multi-process.

With LiteOperator

Process system

Files

kinematics
│   README.md
│   run_example.py                    (An example code)   
│
└───doc
│   │   function.md               (Software architecture)
│   │   summary.md                (Lab summary)
│
└───sim
    │   fromulation.py            (You need to modify)
    │   constants.py
    │   Operator.py 
    │
    └───inputs
    │     │   InputSystem         (Base class)
    │     │   FileInput.py
    │     │   Keyboard.py
    │     │   JoystickInput.py 
    │
    └───outputs
    │     │   OutputSystem        (Base class)
    │     │   FileOutput.py
    │     │   GraphOutput.py      (You need to implement)
    │     │   AnimationOutput.py  (You need to implement)
    │
    └───robots
    │     │   RobotSystem.py      (Base class)
    │     │   KinematicsModel.py  (Kinematics Model of differential drive)
    │     │   NOPModel.py         (Do nothing)
    │     │   WebotsModel.py      Webots implementation of differntial drive
    │     │   WebsocketConnection.py  Differential drive robot hardware 
    │ 
    └───PROCESS
          │   ProcessSystem.py    (Base class)
          │   TestProcess.py      (example showing how to create, submit and get callback from a job)