Skip to content

EV3-G API GyroSensor#387

Merged
dwalton76 merged 2 commits intoev3dev:developfrom
dwalton76:ev3g-gyro
Oct 1, 2017
Merged

EV3-G API GyroSensor#387
dwalton76 merged 2 commits intoev3dev:developfrom
dwalton76:ev3g-gyro

Conversation

@dwalton76
Copy link
Copy Markdown
Collaborator

No description provided.

@dwalton76
Copy link
Copy Markdown
Collaborator Author

For issue #362

@dwalton76
Copy link
Copy Markdown
Collaborator Author

This isn't ready yet, when I run the following:

robot@evb[bin]# cat gyro.py 
#!/usr/bin/env python3

from ev3dev.auto import GyroSensor
from pprint import pformat
import logging
import sys
import time


# logging
logging.basicConfig(level=logging.DEBUG,
                    format="%(asctime)s %(levelname)5s: %(message)s")
log = logging.getLogger(__name__)


gy = GyroSensor()
#gy.reset()

while True:
    print("angle %s" % gy.angle)
    print("rate %s" % gy.rate)
    (angle, rate) = gy.rate_and_angle
    print("rate %s, angle %s" % (rate, angle))
    time.sleep(1)
robot@evb[bin]# 

We get a TimeoutError when trying to set the mode

robot@evb[bin]# ./gyro.py 
Traceback (most recent call last):
  File "./gyro.py", line 20, in <module>
    print("angle %s" % gy.angle)
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post72-py3.5.egg/ev3dev/core.py", line 2622, in angle
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post72-py3.5.egg/ev3dev/core.py", line 2091, in mode
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post72-py3.5.egg/ev3dev/core.py", line 291, in set_attr_string
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post72-py3.5.egg/ev3dev/core.py", line 251, in _set_attribute
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post72-py3.5.egg/ev3dev/core.py", line 275, in _raise_friendly_access_error
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post72-py3.5.egg/ev3dev/core.py", line 247, in _set_attribute
TimeoutError: [Errno 110] Connection timed out
robot@evb[bin]# 

I haven't seen this issue on any other sensor....can someone with a gyro sensor try the patch in this PR and see if you get the same behavior?

Comment thread ev3dev/core.py Outdated
return self.value(0)

@property
def direct(self):
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs for direct?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably be _direct. I don't expect that it would be used normally, if at all.

@dlech
Copy link
Copy Markdown
Member

dlech commented Sep 29, 2017

Check dmesg. It could be driver issues, e.g. ev3dev/ev3dev#671

@dwalton76
Copy link
Copy Markdown
Collaborator Author

If I scroll back in dmesg a bit I see

[61668.755196] lego-port port5: Removed device 'evb-ports:in1:ev3-uart-host'
[61668.791500] lego-sensor sensor1: Unregistered 'lego-ev3-color' on 'evb-ports:in1'.
[61674.595972] lego-port port5: Added new device 'evb-ports:in1:ev3-uart-host'
[61675.805044] lego-sensor sensor3: Registered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62443.728409] lego-port port5: Removed device 'evb-ports:in1:ev3-uart-host'
[62443.758598] lego-sensor sensor3: Unregistered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62446.498956] lego-port port5: Added new device 'evb-ports:in1:ev3-uart-host'
[62447.703095] lego-sensor sensor4: Registered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62450.322760] tty ttyS4: Reconnected due to: Bad message size
[62858.070862] lego-port port5: Removed device 'evb-ports:in1:ev3-uart-host'
[62858.102750] lego-sensor sensor4: Unregistered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62859.440963] lego-port port5: Added new device 'evb-ports:in1:ev3-uart-host'
[62860.651662] lego-sensor sensor5: Registered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62953.283531] lego-port port5: Removed device 'evb-ports:in1:ev3-uart-host'
[62953.315735] lego-sensor sensor5: Unregistered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62954.734148] lego-port port5: Added new device 'evb-ports:in1:ev3-uart-host'
[62955.943074] lego-sensor sensor6: Registered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62958.562963] tty ttyS4: Reconnected due to: Bad message size
[62962.504001] lego-port port5: Removed device 'evb-ports:in1:ev3-uart-host'
[62962.530208] lego-sensor sensor6: Unregistered 'lego-ev3-gyro' on 'evb-ports:in1'.
[62965.264427] lego-port port5: Added new device 'evb-ports:in1:ev3-uart-host'
[62966.470619] lego-sensor sensor7: Registered 'lego-ev3-gyro' on 'evb-ports:in1'.

But when I unplug/plug the sensor I see

[99132.268283] lego-port port5: Removed device 'evb-ports:in1:ev3-uart-host'
[99132.300579] lego-sensor sensor7: Unregistered 'lego-ev3-gyro' on 'evb-ports:in1'.
[99133.758601] lego-port port5: Added new device 'evb-ports:in1:ev3-uart-host'
[99134.968876] lego-sensor sensor8: Registered 'lego-ev3-gyro' on 'evb-ports:in1'.

and then run

robot@evb[bin]# ./gyro.py 
angle 43
rate 0
rate 0, angle 0
Traceback (most recent call last):
  File "./gyro.py", line 20, in <module>
    print("angle %s" % gy.angle)
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post73-py3.5.egg/ev3dev/core.py", line 2622, in angle
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post73-py3.5.egg/ev3dev/core.py", line 2091, in mode
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post73-py3.5.egg/ev3dev/core.py", line 291, in set_attr_string
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post73-py3.5.egg/ev3dev/core.py", line 251, in _set_attribute
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post73-py3.5.egg/ev3dev/core.py", line 275, in _raise_friendly_access_error
  File "/usr/local/lib/python3.5/dist-packages/python_ev3dev-0.8.0.post73-py3.5.egg/ev3dev/core.py", line 247, in _set_attribute
TimeoutError: [Errno 110] Connection timed out
robot@evb[bin]# 

but I got no new output in dmesg when I ran gyro.py

Comment thread ev3dev/core.py Outdated
attribute.write(value)
else:
attribute.write(value.encode())

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could drop the raw parameter and just say

if isinstance(value, str):
    value = value.encode()
attribute.write(value)

@dlech
Copy link
Copy Markdown
Member

dlech commented Sep 29, 2017

I'm not seeing a TimeoutError on EV3. Are you still running on EVB?

@dwalton76
Copy link
Copy Markdown
Collaborator Author

I'm seeing it on both. My EV3 is running

robot@ev3alt[ev3dev-lang-python]# ev3dev-sysinfo 
Image file:         ev3dev-stretch-ev3-generic-2017-09-01
Kernel version:     4.9.49-ev3dev-1.5.1-ev3
Brickman:           0.10.0
ev3devKit:          0.5.2
Board:              board0
BOARD_INFO_HW_REV=7
BOARD_INFO_MODEL=LEGO MINDSTORMS EV3
BOARD_INFO_ROM_REV=6
BOARD_INFO_SERIAL_NUM=0016533F8FD1
BOARD_INFO_TYPE=main
robot@ev3alt[ev3dev-lang-python]# 

@dwalton76
Copy link
Copy Markdown
Collaborator Author

@dlech can you try a few different gyros and see if you see this with any of them? I think mine is an older one, maybe that is a factor.

@dlech
Copy link
Copy Markdown
Member

dlech commented Oct 1, 2017

What is mfg code stamped on the sensor?

@dlech
Copy link
Copy Markdown
Member

dlech commented Oct 1, 2017

Sure enough. I just got the TimeoutError with an 19N3 sensor (mfg 19th week of 2013)

@dlech
Copy link
Copy Markdown
Member

dlech commented Oct 1, 2017

Would you mind open an issue for this? It's definitely a kernel driver issue. The code hasn't changed in 3 years, so I'm kind of surprised that no one has noticed before.

@dwalton76
Copy link
Copy Markdown
Collaborator Author

Mine is 03N3

@dwalton76
Copy link
Copy Markdown
Collaborator Author

Opened ev3dev/ev3dev#975

@dwalton76
Copy link
Copy Markdown
Collaborator Author

Any objections to merging this PR? I'll test it more later once the kernel issue is fixed.

@dwalton76 dwalton76 merged commit 1d61fee into ev3dev:develop Oct 1, 2017
@dwalton76 dwalton76 deleted the ev3g-gyro branch October 2, 2017 00:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants