openroberta / robertalab-ev3dev Goto Github PK
View Code? Open in Web Editor NEWroberta lab connector for ev3dev
License: Apache License 2.0
roberta lab connector for ev3dev
License: Apache License 2.0
When sending the message
Hello World!
using a bluetooth connection, the receiving brick gets (or at least has a string containig)
b'Hello World!'
as a message.
The additional characters do not depend on the string you send, it is always the prefix b'
and the suffix '
.
I did not find any reason for that in ev3.py.
My programs for testing this issue are here.
See ev3dev/ev3dev-lang-python#323 for some background
Current status:
Small text can be problematic in low light conditions.
The ShowText block uses Row/Col coordinates which makes it hard to mix text sizes.
We could add a DrawText command that takes x,y coordinates and a font from a list. Additionally we'd provide getFontHeight/getFontWidth 'Sensors' with the same font list.
When the robot generates the pairing code, it shows it on the screen. If the WiFi is unreliable, it may not yet be registered on the server, so when you try to enter it in the Lab you get an error.
If would be nice if we could have a string on the screen that starts eg "Connecting..." then changes to "Connected" when it's ready. This would save you repeated entering the code again and again until the server has it.
When using a usb connection either to a local server one needs to enter a new code each time.
The issue is that the http-push request will fail when the usb cable is pulled. The robot would need to keep retrying to connect using the same code. Also the server would need to re-allow the connection.
First step is the check if we can determine that the network is down, then we could keep trying. This is what we're getting:
Jan 21 20:54:04 ev3dev openrobertalab[581]: DEBUG:roberta.lab:URLError: URLError(gaierror(-2, 'Name or service not known'),)
Jan 21 20:54:04 ev3dev openrobertalab[581]: ERROR:roberta.lab:URLError: https://lab.open-roberta.org: [Errno -2] Name or service not known
Jan 21 20:54:04 ev3dev openrobertalab[581]: INFO:roberta.lab:network thread stopped
Jan 21 20:54:04 ev3dev openrobertalab[581]: INFO:roberta.lab:status changed: disconnected
Next we need to verify that the server lets us reconnect.
Could this be fixed by retrying with the same code until we connect successfully?
see entry_points and console_scripts at e.g.:
http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html
but be aware of
https://github.com/ninjaaron/fast-entry_points
Escape got renamed again from 'back' to 'backspace'.
Hi,
i have installed the ev3dev on my brick and use robertalab to program my robot.
Is there a posibility to use espeak oder play a ".wav" file with the robertalab?
It will be a cool feature :-)) especially for pupils.
def run():
if TRUE:
while not (hal.isKeyPressed('enter') == True) :
hal.setRegulatedMotorSpeed('B, 30)
causes
Feb 29 09:49:06 ev3dev openrobertalab[758]: Traceback (most recent call last):
Feb 29 09:49:06 ev3dev openrobertalab[758]: File "/usr/lib/python2.7/dist-packages/roberta/lab.py", line 210, in _exec_code
Feb 29 09:49:06 ev3dev openrobertalab[758]: compiled_code = compile(code, filename, 'exec')
Feb 29 09:49:06 ev3dev openrobertalab[758]: File "/home/robot/setRegulatedMotorSpeedTest.py", line 29
Feb 29 09:49:06 ev3dev openrobertalab[758]: hal.setRegulatedMotorSpeed('B, 30)
Feb 29 09:49:06 ev3dev openrobertalab[758]: ^
Feb 29 09:49:06 ev3dev openrobertalab[758]: SyntaxError: EOL while scanning string literal
Good evening. Finally open roberta works for me from the webbrowser :-) but now, if I try to run NEPOprog.py from the command line I get the following error and it doesn't work.
Thank you and regards
Antonio
File "NEPOprog.py", line 4, in
from roberta.ev3 import Hal
I'm using images that descend from the ev3dev-stretch-ev3-generic docker builds on ev3 bricks.
When starting robertlab I get a File not found
error since it tries to use /dev/input/by-path/platform-gpio-keys.0-event
, which apperently got replaced by /dev/input/by-path/platform-gpio_keys-event
.
Since both linked to /dev/input/event0
I can simply add that file, but then I get another error:
INFO:roberta:--- starting ---
INFO:roberta.lab:python path: /usr/bin:/usr/lib/python35.zip:/usr/lib/python3.5:/usr/lib/python3.5/plat-arm-linux-gnueabi:/usr/lib/python3.5/lib-dynload:/usr/local/lib/python3.5/dist-packages:/usr/lib/python3/dist-packages
INFO:roberta.lab:status changed: disconnected
Traceback (most recent call last):
File "/usr/bin/openrobertalab", line 41, in <module>
main()
File "/usr/bin/openrobertalab", line 36, in main
service = Service('/org/openroberta/Lab1')
File "/usr/lib/python3/dist-packages/roberta/lab.py", line 88, in __init__
self.hal.clearDisplay()
File "/usr/lib/python3/dist-packages/roberta/ev3.py", line 179, in clearDisplay
self.lcd.update()
File "/usr/lib/python3/dist-packages/ev3dev/core.py", line 3135, in update
self.mmap[:] = self._img.tobytes("raw", "1;IR")
IndexError: mmap slice assignment is wrong size
INFO:roberta:--- done ---
I asked @dlech about it who told me that OpenRoberta/ev3dev-lang-python
hasn't been updated for stretch yet and redirected me here.
Hi,
I installed ev3dev, updated all packaged and now brickman has a open robert lab option.
then I made a deb packaged from your rep and installed it on ev3dev
the systemd service refused to start but if running openroberta from shell it seems brickman is happy and connects and gives me a code.
Then I go to http://lab.open-roberta.org/# connect to robot with code, everything looks good. Then I write a simple program (drive forward for example) and click play. But clicking on play does not seem to do anything. nothing on the shell in ev3dev from openroberta script either. nothing interresting in lab.open-roberta.org log either.
clicking on show code shows some java code. Is there a way to see python code (I understood openroberta is supposed to send python code in this case.
am I missing something to make it work?
Thanks
Olivier
(I can make python scripts on ev3dev and run robot so that works, ut I would like to use open roberta for the kids)
This should be able to work on PiStorms and soon EVB as well. There are a few issues that need to be addressed though.
The first issue I ran into is that the path for the buttons is hard coded. I think it would be better to search by name rather than by path as paths may change in future versions anyway.
This is probably something that is best solved in ev3dev-lang-python, but robertalab-ev3dev will need to be adapted to use it.
With the current code we show the pairing code in the UI and send a push-request with 'cmd=register' and the pairing code to the server. If the robot is on a slow network, the user can enter the code already and then gets this warning from the openroberta lab:
Check if your robot is switched on and connected to the server.
We can't wait for the request to reach the server, since this is a http-push api where, we intentionall fire requests and keep them waiting at the server side. There is no hook for getting notified when the request was sent.
https://docs.python.org/3/library/urllib.request.html#module-urllib.request
A better wait would be to:
This way we know that we have connected in 1) and can show the token. See OpenRoberta/robertalab#32
See also #28.
Test if we can use down+center to set the TRUE=false (to cancel loops).
Maybe use the scope dicts:
https://github.com/OpenRoberta/robertalab-ev3dev/blob/develop/roberta/lab.py#L251
The infrared sensor in seek mode returns an array, however, in the code it is treated as a single value.
#5 gets me farther than I was, but now I am getting an error when trying to run a program. I presume this error is in the code that is sent from the lab.open-roberta.org server.
Dec 28 21:29:59 ev3dev openrobertalab[1261]: INFO:roberta.lab:status changed: executing
Dec 28 21:30:00 ev3dev openrobertalab[1261]: INFO:roberta.lab:code downloaded to: /home/robot/NEPOprog.py
Dec 28 21:30:00 ev3dev openrobertalab[1261]: ERROR:roberta.lab:Ooops:
Dec 28 21:30:00 ev3dev openrobertalab[1261]: Traceback (most recent call last):
Dec 28 21:30:00 ev3dev openrobertalab[1261]: File "/usr/lib/python2.7/dist-packages/roberta/lab.py", line 237, in run
Dec 28 21:30:00 ev3dev openrobertalab[1261]: exec(code, globals(), globals())
Dec 28 21:30:00 ev3dev openrobertalab[1261]: File "/home/robot/NEPOprog.py", line 4, in <module>
Dec 28 21:30:00 ev3dev openrobertalab[1261]: from roberta.ev3 import Hal,BlocklyMethods
Dec 28 21:30:00 ev3dev openrobertalab[1261]: ImportError: cannot import name BlocklyMethods
Dec 28 21:30:00 ev3dev openrobertalab[1261]: INFO:roberta.lab:status changed: registered
It looks like BlocklyMethods may have moved? I think it should be from roberta import BlocklyMethods
as a separate line.
The lab (lab.open-roberta.org, release 2.2.5, ev3dev) shows a "Attention - Server error" popup when starting a program that contains a message block, even a simple wait for connection
. The gui switches to a new project and all unsaved programming is lost.
When we are online, check if we can detect a local open roberta server. This would help using p2p-connections like usb/bt. We would e.g. do a mdns discovery on the robot and mdns announcements of local clients.
Ideally we'd just try to connect to :1999. On the machine that hosts the server:
$ ifconfig usb0
usb0 Link encap:Ethernet HWaddr 12:16:53:48:af:38
inet addr:172.16.243.1 Bcast:172.16.243.255 Mask:255.255.255.0
inet6 addr: fe80::1016:53ff:fe48:af38/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2917 (2.9 KB) TX bytes:10592 (10.5 KB)
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.243.0 0.0.0.0 255.255.255.0 U 1 0 0 usb0
On the ev3:
$ ifconfig usb0
usb0 Link encap:Ethernet HWaddr 02:16:53:48:af:38
inet addr:172.16.243.50 Bcast:172.16.243.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:8151 errors:0 dropped:220 overruns:0 frame:0
TX packets:6056 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2337065 (2.2 MiB) TX bytes:837457 (817.8 KiB)
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.243.1 0.0.0.0 UG 0 0 0 usb0
172.16.243.0 0.0.0.0 255.255.255.0 U 0 0 0 usb0
172.16.243.1 0.0.0.0 255.255.255.255 UH 0 0 0 usb0
So we could grab the gateway address for usbX or hciX and try to connect to :1999.
First step would be a local python prototype. If that works, we'd need changes in the UI to support a "discovered server" and changes on this module to run a thread an periodically run the discovery (the code from the previously mentioned prototype).
def run():
if BlocklyMethods.isEven(BlocklyMethods.randInt(1, 100)) :
hal.rotateDirectionAngle('C', 'B', False, 'right', 30, 45)
else:
hal.rotateDirectionAngle('C', 'B', False, 'left', 30, 45)
causes
Feb 29 09:09:59 ev3dev openrobertalab[363]: Traceback (most recent call last):
Feb 29 09:09:59 ev3dev openrobertalab[363]: File "/usr/lib/python2.7/dist-packages/roberta/lab.py", line 214, in _exec_code
Feb 29 09:10:00 ev3dev openrobertalab[363]: exec(compiled_code, scope)
Feb 29 09:10:00 ev3dev openrobertalab[363]: File "/home/robot/blocklyMethodsRandIntTest.py", line 59, in <module>
Feb 29 09:10:00 ev3dev openrobertalab[363]: main()
Feb 29 09:10:00 ev3dev openrobertalab[363]: File "/home/robot/blocklyMethodsRandIntTest.py", line 49, in main
Feb 29 09:10:00 ev3dev openrobertalab[363]: run()
Feb 29 09:10:00 ev3dev openrobertalab[363]: File "/home/robot/blocklyMethodsRandIntTest.py", line 27, in run
Feb 29 09:10:00 ev3dev openrobertalab[363]: if BlocklyMethods.isEven(BlocklyMethods.randInt(1, 100)) :
Feb 29 09:10:00 ev3dev openrobertalab[363]: AttributeError: 'module' object has no attribute 'isEven'
Copy of OpenRoberta/robertalab#72.
Need to add api to the python bindings to switch to gfxMode and txtMode. We can copy the code from
https://github.com/dlech/ev3dev-photo-booth/blob/master/ev3dev-photo-booth.py
We'll can switch to gfxMode before calling into the generated code.
Hi,
I'm using using the latest snapshot-ev3dev-jessie-ev3-generic-2017-02-08.img on EV3, with the SPIK3R robot.
If a motor is blocked (stalled) then robertalab hangs forever.
We are trying to find the range of movement, but each time it hangs. Is there a way not to have the connector hang forever?
The BlocklyMethods miss most of the list ops and a few others.
I and 1 and 0 and O look very similar (depending on the font). It might be best to just exclude these.
When pressing disconnect, the backend needs a while (up to 15 sec :/) to be actually off. We could disable the connect buttons until the disconnect happend.
Beep commands are blocking. Right now we can't cancel the program while a beep runs. This is problematic if the beep has a ridiculously long duration of e.g. 1000000 ms.
This is because we use wait() on the popen object:
https://github.com/OpenRoberta/robertalab-ev3dev/blob/develop/roberta/ev3.py#L242
(see https://docs.python.org/3/library/subprocess.html)
We can also poll() the status and terminate() the child if neccesary.
When this is implemented as an event. We cannot know the initial state of the service. It should be a property instead so the we can read the state at any time.
You still need an event when the property changes of course. For this, I suggest using org.freedesktop.DBus.Properties.PropertiesChanged
.
See http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties.
When catching exceptions, we'd like to map those to some exit code. This would allow us to show some helpful error in the UI.
See also OpenRoberta/robertalab#122
Hi. I am working in Windows 10 x64 with a openroberta local server (2.2.4).
Recently I have discovered any EV3 fails in connecting. I have test with the Open Roberta connector (updated in 2017.06.03).
I get:
You are trying to connect a robot of a different type as selected in the menu.
Please switch the robot type in the robot's menu and try to connect again!
However another bricks connect without troubles.
I have any research.
I have two EV3 bricks, I am using USB cable.
You are trying to connect a robot of a different type as selected in the menu.
Please switch the robot type in the robot's menu and try to connect again!
Here the openroberta server log:
LINK
I think It is remarkable the text:
token HKQGZN3T belongs to a robot of type ev3, client is set to ev3dev
There is at least one difference between the 'good' EV3 and the 'bad' units. The 'problematic' EV3s had/have a Netgear wifi dongle. The wifi was enabled and it worked perfectly but, casually, we don´t work with Open Roberta with those units... For that reason I had not detected this problem before.
However the wifi is disabled now. No dongle. The problem persists. No idea it it is related. I am going to test more deeply this way... but i need time.
DJuego
For instance;
i want to show the Gyro values in EV3 screen:
http://imgur.com/a/Y1d1w
I get the code:
[https://paste.ofcode.org/MLV6ttyg5VcRXHmamfHqua]
Now I spin the robot with my hands. The expected values are:
0.0
12.0
18.0
32.0
Now i stop. The final value must be 32.0
HOWEVER
I get:
0.0
12.0
18.0
32.0
Now i stop, and...
14.0
11.0
4.0
0.0
Why???
P.S: I have a fully upgraded ev3dev. (2017.03.18)
P.S: I have attached the XML file program in a .zip file. (2017.03.22)
NEPOprog.zip
I have the next code:
http://imgur.com/a/jBPtd
openrobertalab translate to the next python code:
http://paste.ofcode.org/3zkwC5v33ZRHdWTm7AJRdC
The EV3 behaviour is not expected. I expected:
When the touch sensor is pressed, the medium motor stops. However the program does not finish.
In any moment, when it the console up button is pressed, the program finish.
The EV3 behaviour i got:
The medium motor turn on a second and stop.
The touch sensor is not stop the medium motor.
The console up button is not stop the program.
Blank screen
I have to reboot the EV3 with ENTER+LEFT+BACK
The problem happen with motor B and C too.
My configuration is:
Medium motor (A)
Big motor (B)
Big motor (C)
Touch sensor (1)
Gyroscope sensor (2)
Light/colour sensor (3)
Ultrasonic sensor (4)
I am working with the 2017-01-25 fully updated. (2017-01-28)
I tried running openrobertalab.service on my FatcatLab EVB just to see what happens. It crashes because of #8. But, because systemd service tell it to always restart (Restart=always
), it creates an infinite loop of crashing. Fortunately, systemd is smart enough to see this and kill the loop eventually, but it left brickman thinking the service was still available because it restarted so many times so quickly.
See OpenRoberta/robertalab#680
We'll need to make the socket non-blocking and poll:
https://docs.python.org/3.3/howto/sockets.html#non-blocking-sockets
https://docs.python.org/3.3/library/socket.html#socket.socket.setblocking
or we can use a timeout:
https://docs.python.org/3.3/library/socket.html#socket.socket.settimeout
catch the timeout exception and loop, so that canceling works.
For reference the pybluez code: https://github.com/karulis/pybluez/
"Fehler im EV3
AttributeError
'NoneType' object has no attributes
Press any key"
This showed up on the screen when trying to run a simple motor program.
How to fix it?
I am running this on the latest version of ev3dev
Using any of the timer blocks leads to an error on the EV3 (both ev3dev and ev3lejos).
With ev3dev this error message is shown on the bricks display (just using a reset timer 1
block:
Fehler im EV3
KeyError
1
Press any key
The digit in the third line equals the timer number the block referres to.
Same issue on ev3lejos, but no error message is shown - the program simply crashes.
The web UI remembers the last code used. So, if you should become disconnected, the dbus service should provide the same code - at least for each D-Bus client. This way you don't have to type in a new code so often.
There are problems with indentation. For any unknown reason the programs are "corrupted"...
It is very problematic. :-(
This sample has been generated from a bigger "corrupted" program. The "corruption" remains...
http://i.imgur.com/gfoMj5W.png
This code is generated:
http://i.imgur.com/EWNWNk6.png
I attach the XML file.
I am working with a open roberta server local (2.2.3).
E.g. for the ultrasonic sensor with an object 5cm ahead, we return '50'. See we need to take 'decimals' into account:
http://www.ev3dev.org/docs/drivers/lego-sensor-class/ and http://python-ev3dev.readthedocs.org/en/latest/sensors.html#sensor
Right now the user can click connect and sees the pairing code, even though the server is not actually reachable. Somewhat related to #30 .
Maybe we can handle this on the brickman UI. Right now the NetworkController does not expose the online state though.
The robots sends its client library version along with the connection to the server. If the server is newer (server=1.4.X, client=1.3.X) it assumes that the client-libraries should be updated. The UI will suggest the user to update the libs and if the user chooses so, the server sends an update request to the robot.
This does not work for ev3dev:
Maybe we can do something along the lines of:
mkdir -p /tmp/sources.list.d/
# echo "deb http://ev3dev.org/debian jessie main" > /tmp/sources.list.d/ev3dev.list
grep "ev3dev.org" /etc/apt/sources.list > /tmp/sources.list.d/ev3dev.list
sudo chrt -b 0 apt-get update -o APT::List-Cleanup=0 \
-o Dir::Etc::sourcelist="/dev/null" \
-o Dir::Etc::sourceparts="/tmp/sources.list.d/"
sudo apt-get install -o APT::List-Cleanup=0 \
-o Dir::Etc::sourcelist="/dev/null" \
-o Dir::Etc::sourceparts="/tmp/sources.list.d/" \
--only-upgrade openrobertalab
We can also use this to check what would be upgraded (as suggested on http://unix.stackexchange.com/questions/19470/list-available-updates-but-do-not-install-them):
sudo chrt -b 0 apt-get --just-print upgrade \
-o APT::List-Cleanup=0 \
-o Dir::Etc::sourcelist="/dev/null" \
-o Dir::Etc::sourceparts="/tmp/sources.list.d/" \
| LANG=C perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}'
PROGRAM: libavahi-common-data INSTALLED: 0.6.31-5 AVAILABLE: 0.6.32-1ev3dev1
PROGRAM: libavahi-common3 INSTALLED: 0.6.31-5 AVAILABLE: 0.6.32-1ev3dev1
PROGRAM: libavahi-client3 INSTALLED: 0.6.31-5 AVAILABLE: 0.6.32-1ev3dev1
PROGRAM: libavahi-core7 INSTALLED: 0.6.31-5 AVAILABLE: 0.6.32-1ev3dev1
PROGRAM: avahi-daemon INSTALLED: 0.6.31-5 AVAILABLE: 0.6.32-1ev3dev1
PROGRAM: connman INSTALLED: 1.31-0ev3dev1 AVAILABLE: 1.32-0ev3dev1
PROGRAM: flash-kernel INSTALLED: 3.35ev3dev5 AVAILABLE: 3.35ev3dev8
PROGRAM: zram-init INSTALLED: 3.5ev3dev1 AVAILABLE: 3.5ev3dev2
the math/log block is not mapped correctly:
while not (hal.isPressed('1') || hal.isPressed('2')) :
...
When sending a program that does not use motors/sensors to an ev3 that has nothing connected, we still instantiate them in the robot config. This will throw an exception that we don't handle.
Exception AttributeError: "'MediumMotor' object has no attribute '_path'" in <bound method MediumMotor.del of <ev3dev.core.MediumMotor object at 0xb5dc9410>> ignored
Connect only one motor to the brick and try to send a program to drive a short distance.
robot@ev3dev:~$ python NEPOprog.py
Exception AttributeError: "'LargeMotor' object has no attribute '_path'" in <bound method LargeMotor.__del__ of <ev3dev.core.LargeMotor object at 0xb65f7d50>> ignored
Traceback (most recent call last):
File "NEPOprog.py", line 44, in <module>
main()
File "NEPOprog.py", line 33, in main
run()
File "NEPOprog.py", line 29, in run
hal.driveDistance('C', 'B', False, 'foreward', 30, 20)
File "/usr/lib/python2.7/dist-packages/roberta/ev3.py", line 353, in driveDistance
ml.run_to_rel_pos(speed_regulation_enabled='on',
AttributeError: 'NoneType' object has no attribute 'run_to_rel_pos'
NEPOprog.py:
#!/usr/bin/python
from __future__ import absolute_import
from roberta.ev3 import Hal
from roberta.BlocklyMethods import BlocklyMethods
from sets import Set
from ev3dev import ev3 as ev3dev
import math
TRUE = True
_brickConfiguration = {
'wheel-diameter': 5.6,
'track-width': 18.0,
'actors': {
'B':Hal.makeLargeMotor(ev3dev.OUTPUT_B, 'on', 'foreward', 'right'),
'C':Hal.makeLargeMotor(ev3dev.OUTPUT_C, 'on', 'foreward', 'left'),
},
'sensors': {
'1':Hal.makeTouchSensor(ev3dev.INPUT_1),
'2':Hal.makeGyroSensor(ev3dev.INPUT_2),
'3':Hal.makeColorSensor(ev3dev.INPUT_3),
'4':Hal.makeUltrasonicSensor(ev3dev.INPUT_4),
},
}
_usedSensors = Set([])
hal = Hal(_brickConfiguration, _usedSensors)
def run():
hal.driveDistance('C', 'B', False, 'foreward', 30, 20)
def main():
try:
run()
except Exception as e:
hal.drawText('Fehler im EV3', 0, 0)
hal.drawText(e.__class__.__name__, 0, 1)
if e.message:
hal.drawText(e.message, 0, 2)
hal.drawText('Press any key', 0, 4)
while not hal.isKeyPressed('any'): hal.waitFor(500)
raise
if __name__ == "__main__":
main()
Hi, I just got started with ev3dev and Open Roberta, so forgive me if I've missed something obvious or am reporting in the wrong place. I have the EV3 basic track3r robot, which in addition to the tracks has a medium motor on port A for controlling various tools. So one of the first things I tried was controlling that motor.
So I logged in to OpenRoberta and set up my robot so it has a medium motor on Port A on the Robot Settings page. I also switched to the expert mode in Open Roberta to be able to access the blocks that control motors directly.
Then I created a very basic Nepo program which simply has one block that turns the motor on port A for 1 turn on speed 30.
Trying to run that program on my EV3 gives this error both on the EV3 screen and in the systemd journal:
Jan 04 07:45:18 ev3dev openrobertalab[392]: ERROR:roberta.lab:Ooops:
Jan 04 07:45:18 ev3dev openrobertalab[392]: Traceback (most recent call last):
Jan 04 07:45:18 ev3dev openrobertalab[392]: File "/usr/lib/python3/dist-packages/roberta/lab.py", line 272, in _exec_code
Jan 04 07:45:18 ev3dev openrobertalab[392]: exec(compiled_code, scope)
Jan 04 07:45:18 ev3dev openrobertalab[392]: File "/home/robot/NEPOprog.py", line 33, in <module>
Jan 04 07:45:18 ev3dev openrobertalab[392]: main()
Jan 04 07:45:19 ev3dev openrobertalab[392]: File "/home/robot/NEPOprog.py", line 23, in main
Jan 04 07:45:19 ev3dev openrobertalab[392]: run()
Jan 04 07:45:19 ev3dev openrobertalab[392]: File "/home/robot/NEPOprog.py", line 19, in run
Jan 04 07:45:19 ev3dev openrobertalab[392]: hal.rotateRegulatedMotor('A', 30, 'rotations', 1)
Jan 04 07:45:19 ev3dev openrobertalab[392]: File "/usr/lib/python3/dist-packages/roberta/ev3.py", line 268, in rotateRegulatedMotor
Jan 04 07:45:19 ev3dev openrobertalab[392]: m = self.cfg['actors'][port]
Jan 04 07:45:19 ev3dev openrobertalab[392]: KeyError: 'A'
Jan 04 07:45:19 ev3dev openrobertalab[392]: INFO:roberta.lab:status changed: registered
The EV3 display says "Press any key" in addition to the KeyError.
I'm using the most recent ev3dev build (ev3dev-jessie-ev3-generic-2016-12-21) and the openrobertalab package is version 1.6.0+1.0.0.
I'd like to have one EV3 communicate with multiple other ones. The fundamental problem seems to me that there is no way to rename the devices in ev3dev without loosing the ability to connect to the brick in open-roberta lab.
I changed the hostname of each brick to different values (e.g. "robot01", "robot02", ...) by calling
sudo ev3dev-config
(tried sudo hostname robotXY
, too) via ssh and restarted them. I thought the hostname is the "robot name" I need to establish the BT connection.
But if the hostname is not "ev3dev" the lab does not connect to the robot, because the hostname string seems to be the identifier for the type of robot.
Is there any way to set the name for the BT connection without changing the hostname?
Good morning. After the last OpenRoberta update all I get is a white screen when trying to run any program from the openroberta web or offline server. I can access via ssh.
Thank you and regards
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.