GithubHelp home page GithubHelp logo

guillaumezin / robertalab-ev3dev Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openroberta/robertalab-ev3dev

1.0 2.0 0.0 432 KB

roberta lab connector for ev3dev

License: Apache License 2.0

Python 100.00%

robertalab-ev3dev's Introduction

intro

A connector to use a LEGO Mindstorms EV3 running the ev3dev firmware (http://www.ev3dev.org) from the Open Roberta lab (http://lab.open-roberta.org). This is now included by default with ev3dev images (Thanks @dlech).

Step-by-step instruction to help you get ev3dev up and running can be found here (https://www.ev3dev.org/docs/getting-started/).

Important note for Step 1 of the manual: You have to download the ev3dev operating system for your EV3 robot via the following link: ev3dev - Github releases. Select there the file ev3dev-jessie-ev3-generic-2017-09-14.zip.

As soon as everything is installed, the connector is not enabled by default (to save memory), so you do have to enable it once:

  1. Connect to the LEGO brick using SSH: (Read this for the default password)
  1. On the brick run:
sudo systemctl unmask openrobertalab
sudo systemctl start openrobertalab

After running the commands above, it will start automatically after a reboot. You can turn it back off by running:

sudo systemctl stop openrobertalab.service
sudo systemctl mask openrobertalab.service

If the openrobertalab package is installed and the service is running, the Open Roberta Lab menu item in brickman will allow you to connect to an Open Roberta server. This is how the menu will look like:

Main Menu.

Once you selected the Open Roberta Lab menu item you'll get to this screen:

Open Roberta Lab.

This offers to connect to the public server as the first item, or to a custom server as a 2nd item. The 2nd choice is mostly for developers or for using a local server. When clicking connect, the screen will show a pairing code:

Pairing Code.

This code will have to be entered on the web-ui to establish the link. Once that has been done a beep-sequence on the EV3 confirms the link and this screen is shown:

Connected.

When a program contains an infinite loop, it can be killed by pressing the enter and down buttons on the ev3 simultaneously. If this is not enough to terminate the program, holding the back button for one second will kill it, but together with it the connector. The connector will restart automatically, but one needs to reconnect to the Open Roberta server again.

build status

Build Status Test Coverage

development

The package consist of two parts:

  1. roberta/lab.py: the connector to the open roberta lab
    • this is started as a systemd service at startup
    • it provides a dbus interface
    • the brickman ui uses dbus for the Open Roberta menu
  2. roberta/ev3.py: a hardware abstraction library
    • provides the implementation for the NEPO blocks in the program

prerequisites

python3-ev3dev python3-bluez python3-dbus python3-gi

dist

VERSION="1.3.2" python setup.py sdist

Resulting file is under ./dist/openrobertalab-${VERSION}.tar.gz

Now you can also build a debian package using debuild or debuild -us -us. The new package will be in the parent folder.

To build a release for the openroberta server run

rm roberta/*~
zip -r roberta.zip roberta -x roberta/test*.py -x *__pycache__*

upload to ev3

The easiest is to upload the debian package and install it.

scp ../openrobertalab_1.3.2-1_all.deb [email protected]:
ssh -t [email protected] "sudo dpkg --install openrobertalab_1.3.2-1_all.deb;"

Alternatively after changing single files you can do:

scp roberta/ev3.py [email protected]:
ssh -t [email protected] "sudo mv ev3.py /usr/lib/python3/dist-packages/roberta/; sudo systemctl restart openrobertalab"

Finally you can also upload through a local open roberta server (assuming your git checkout of the openroberta-lab is at the same parent dir):

mkdir -p ../openroberta-lab/RobotEV3/updateResources/ cp roberta.zip ../openroberta-lab/RobotEV3/updateResources/ev3dev/

configuration

The brickman ui will store configuration data under /etc/openroberta.conf. All configuration can be edited from the UI. If there is a need to manually change the configuration, it is advised to stop brickman.

Testing

python3 -m unittest discover roberta or nosetests. The test require python3-httpretty, but run without python3-ev3dev.

Logging

The service writes status to the system journal.

sudo journalctl -f -b0 -u openrobertalab

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.