Skip to content

GyroSensor.reset() failing on EV3 #676

@kutting

Description

@kutting
  • ev3dev version: 4.14.117-ev3dev-2.3.4-ev3
  • ev3dev-lang-python version:
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name Version Architecture Description
    +++-==========================-==================-==================-=========================================================
    ii micropython-ev3dev2 2.0.0-beta5 all Python language bindings for ev3dev for MicroPython
    ii python3-ev3dev 1.2.0 all Python language bindings for ev3dev
    ii python3-ev3dev2 2.0.0-beta5 all Python language bindings for ev3dev

The GyroSensor reset method is throwing an exception for me. I'm using an EV3 with a 01N7 gyro on port 2 (I've tried other ports as well). I run the following code:

#!/usr/bin/env micropython

from sys import stderr
from ev3dev2.sensor.lego import GyroSensor
from ev3dev2._platform.ev3 import INPUT_2

gyro = GyroSensor()

print("gyro mode: {0}, angle {1}".format(gyro.mode, gyro.angle), file=stderr)
gyro.reset()
print("gyro mode: {0}, angle {1}".format(gyro.mode, gyro.angle), file=stderr)

while gyro.angle != 0:
	print("gyro mode: {0}, angle {1}".format(gyro.mode, gyro.angle), file=stderr)

And I get something like this as a result:

gyro mode: GYRO-ANG, angle 42
gyro mode: GYRO-ANG, angle 42
gyro mode: GYRO-ANG, angle 42
    ...<98 identical lines snipped>...
gyro mode: GYRO-ANG, angle 42
gyro mode: GYRO-ANG, angle 42
Traceback (most recent call last):
  File "/home/robot/Samples/gyro_reset_test.py", line 14, in <module>
  File "ev3dev2/sensor/lego.py", line 596, in angle
  File "ev3dev2/sensor/__init__.py", line 280, in _ensure_mode
  File "ev3dev2/sensor/__init__.py", line 182, in mode
  File "ev3dev2/__init__.py", line 322, in set_attr_string
  File "ev3dev2/__init__.py", line 264, in _set_attribute
  File "ev3dev2/__init__.py", line 264, in _set_attribute
  File "ev3dev2/__init__.py", line 282, in _raise_friendly_access_error
  File "ev3dev2/__init__.py", line 36, in chain_exception
ValueError: One or more arguments were out of range or invalid, value b'GYRO-ANG'
----------
Exited with error code 1.

When I run the code again, it returns quickly and successfully because the gyro, in fact, has now been reset to 0. So I lift up the robot and turn it a little, and get the same broken result above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions