elephantrobotics / pymycobot

This is a python API for ElephantRobotics product.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

get_encoders() returns empty array

3110 opened this issue · comments

Describe the bug

  • set_encoders() definition is duplicated, so set_encoders() executes get_encoders() functionality.
  • get_encoder() returns empty array.

To Reproduce

In [1]: from pymycobot.mycobot import MyCobot
In [2]: mc = MyCobot("COM6")
In [3]: mc.set_encoders()
Out[3]: []

In [4]: for i in range(1, 7):
   ...:     print(i, mc.get_encoder(i))
   ...:
1 [913]
2 [415]
3 [416]
4 [2776]
5 [2667]
6 [2078]

Expected behavior

In [1]: from pymycobot.mycobot import MyCobot
In [2]: mc = MyCobot("COM6")
In [3]: mc.get_encoders()
Out[3]: [913, 415, 416, 2776, 2667, 2078]

Desktop:

  • myCobot-280(M5stack ver.)
    • AtomMain v3.2
    • minirobot v0.4
  • OS: Windows 11
    • Python v3.9.2
    • pymycobot v2.5.6

Thank you report. I have fixed it. Please try v2.5.7

This bug has not been fixed in v2.5.7. I think you have to implement some codes to parse the reply from the command GET_ENCODERS in MyCobot::_mesg.

Is ok get_encoder?

Yes, the get_encoder() bug (#20) has been fixed. Thanks.

@3110 I test the get_encoders(), seem is right?

─4─[~/P/e/pymycobot]─[main*]── ─ pytest -s tests/test_api.py::test_encoder                                                                 -- INS --
================================================================ test session starts ================================================================
platform darwin -- Python 3.9.4, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/zacharyzhang/Projects/elephantrobotics/pymycobot
collected 1 item                                                                                                                                    

tests/test_api.py 
1 : /dev/cu.wlan-debug - n/a
2 : /dev/cu.debug-console - n/a
3 : /dev/cu.Bluetooth-Incoming-Port - n/a
4 : /dev/cu.usbserial-0243F266 - CP2104 USB to UART Bridge Controller

Please input 1 - 4 to choice:4
/dev/cu.usbserial-0243F266


Please input baudrate (default: 115200):
115200

Wether DEBUG mode[Y/n] (default: no):n

[2075, 3640, 3806, 2334, 977, 639]

Umm, in my environment with v2.5.7, get_encoders() has still returned an empty array. It seems that you test on your local pymycobot , so do you commit your fix for this bug?

$ ipython
Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.20.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from pymycobot.mycobot import MyCobot

In [2]: mc = MyCobot("COM6")

In [3]: mc.get_encoders()
Out[3]: []  # expected [1174, 3668, 3770, 3747, 2687, 1561]

In [4]: for i in range(1, 8):
   ...:     print(i, mc.get_encoder(i))
   ...:
1 1174
2 3668
3 3770
4 3747
5 2687
6 1561
7 2069  # gripper

I confirm that this amendment was submitted long ago.
Can you try to install the source code? Is there a problem with the released package.

Though I try to install from the source code, the result is the same. I investigate more detail, and I find that AtomMain v3.2 does not reply to the GET_ENCODERS command. What version of AtomMain do you use?

It's really atom's problem. Did you try 3.1?

Though I try v3.1 and all versions available on myStudio, the results are the same...

Thank you for your feedback. We have now identified it as an atom problem. I use the version under development. It's OK. It's a problem with our release version.

Fixed in pymycobot 2.5.9.