tinymovr/Tinymovr

Unable to use CLI/python api to set external encoder

Opened this issue · 2 comments

Hi,
I'm trying to get my TinyMovr M5.1 setup with an external encoder (AS5047) but i'm running into serveral issues.

I first installed the studio using python3.12. The studio opens but when I go to select the encoder only Internal and Hal are presented as options.
I then tried following the Example given in the docs to External AS5047 Sensors which I assumed was instructing me to use the python api.

I copied the example code from the Integrating page

import can
from tinymovr.bus_router import init_router
from tinymovr.config import get_bus_config, create_device

params = get_bus_config(["canine", "slcan_disco"], bitrate=1000000)
init_router(can.Bus, params)
tm = create_device(node_id=1)

tm.controller.calibrate()

This code fails immediatly as the init_router function requires a logger parameter. After searching for ages to find out what that parameter should be (Hint it should be pythons built in logger initialized with the configure_logging function)

I then tried to use the code from the AS5047 example to setup the external encoder and calibrate.

tm.sensors.setup.external_spi.type = tm.sensors.setup.external_spi.type.AS5047
tm.sensors.select.commutation_sensor.connection = tm.sensors.select.commutation_sensor.connection.EXTERNAL_SPI
tm.sensors.select.position_sensor.connection = tm.sensors.select.position_sensor.connection.EXTERNAL_SPI
tm.calibrate()

But that doesn't work either.

Traceback (most recent call last):
  File "c:\Users\Omelia\repos\tinymovr\calibrate.py", line 12, in <module>
    tmx.sensors.setup.external_spi.type = tmx.sensors.setup.external_spi.type.AS5047
                                          ^^^^^^^^^^^
  File "C:\Users\Omelia\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\avlos\definitions\remote_node.py", line 48, in __getattr__
    raise AttributeError(__name)
AttributeError: sensors

I then realised their was the tinymovr_cli that I hadn't tried but that wasn't working for me either.
It finds my tinymovr (tm1) but everything I type results in errors

In [1]: tm1

File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\avlos\definitions\remote_attribute.py:62, in RemoteAttribute.str_dump(self)
     61 def str_dump(self):
---> 62     return "{0} [{1}]: {2:.6g}".format(
     63         self.name,
     64         self.dtype.nickname,
     65         self.get_value(),
     66     )

ValueError: Unknown format code 'g' for object of type 'str'
In[2]: tmx.sensors.setup.external_spi.type = tmx.sensors.setup.external_spi.type.AS5047
File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\avlos\definitions\remote_node.py:48, in RemoteNode.__getattr__(self, _RemoteNode__name)
     46         return attr
     47 except KeyError:
---> 48     raise AttributeError(__name)

AttributeError: sensors

I also tried with python3.10 on a linux machine to see if it was python3.12/windows 11 that was causing the problems but no to avail.

Any help would be appreciated.

Hi,

Apologies for the late reply. I'm looking into this and will reply to you very soon.

We fixed the logger and object print issues in the latest Tinymovr Studio release (2.3.2):
https://pypi.org/project/tinymovr/

please use pip install --upgrade tinymovr

We also improved the documentation to refer to tm1 insteda of tmx with a note for applying to other nodes in the bus.