NekoRMD is a Python library for controlling RMD series motors through a CAN interface. It provides a wide range of functions for motor control and monitoring.
Project description
NekoRMD python
TODO
- Position control
- Speed control
- New initialization algorithm (HIGH)
- Torque control
- Full telemetry getters support
- Write tests
- Translate the documentation into English and Ru
- Finish writing the remaining commands from the official documentation
- Publish in pip
- Many motors support (up to 3) using CAN
Installation
pip install neko-rmd
Configure CAN in your device: https://python-can.readthedocs.io/en/stable/installation.html
API
NekoRMD
The basic class for controlling RMD motors through a class object. When initializing in the constructor, it is mandatory to specify the CAN device address parameters and the motor type.
from NekoRMD.MotorType import MotorType
from NekoRMD.NekoRMD import NekoRMD
motor = NekoRMD(address=0x149, motor_type=MotorType.RMD8x_pro)
motor.setup()
- Initializes communication with the motor. Establishes a CAN connection with the motor and allows communication with it.
motor.init()
- Sends the command to turn on the motor.
Attention! After initializing the motor, it may not respond for 10 seconds! With a high degree of probability, your problems of non-fulfillment of motor commands are solved using time.sleep(10)
motor.restart()
- Перезагрузить мотор.
motor.wait(secunds=5)
- Задержка выполнения задач для конкретного мтора без блокировки других моторов и получения данных.
Control
motor.control.stop()
- Отправка команды остановки мотора.
motor.contol.freeze()
- Отправка команды заморозить мотор (мотор будет удерживать свою позицию).
motor.contol.unfreeze()
- Отправка команды разморозить мотор.
Speed control
motor.control.speed.set_speed(degrees_per_sec)
- Отправка команды управления мотором по скорости. Отправка аргумента 0 остановит мотор.
Position control
set_increment_position(self, max_speed, angle)
- Управление приращением позиции (многооборотный режим).
Параметры:
max_speed
(int): Максимальная скорость в RPM.angle
(int): Приращение угла в сотых долях градуса.
Пример:
motor.control.position.set_increment_position(max_speed=1000, angle=3600)
set_single_turn_position(self, direction, max_speed, angle)
- Управление положением на одном обороте.
Параметры:
direction
(int): Направление вращения (0x00 - по часовой стрелке, 0x01 - против часовой стрелки).max_speed
(int): Максимальная скорость в RPM.angle
(int): Угол управления в сотых долях градуса.
Пример:
motor.control.position.set_single_turn_position(0x01, 1000, 3800)
set_absolute_position(self, max_speed, angle)
- Управление абсолютной позицией (многооборотный режим).
Параметры:
max_speed
(int): Максимальная скорость в RPM.angle
(int): Абсолютный угол в сотых долях градуса.
Пример:
motor.control.position.set_absolute_position(max_speed=1000, angle=7200)
Получить текущую позиию мотора. Вернет timestamp, current_position
:
motor.control.position.get_position_data()
Вывод в консоль и логи позиции мотора:
motor.control.position.print_position_data(is_loop=True, subscriber="gRPC-monitor")
Torque control
Отправка команды управления моментом при 1 А:
motor.control.Torque.set_current(current = 1.0) # A
Telemetry
Получение данных экодера:
motor.telemetry.get_encoder()
Также возможно вывести в логи и консоль значения энкодера использовав метод print_encoder()
.
Получение значения PID:
motor.telemetry.get_PID()
Для вывода в консоль и логи используется метод print_PID()
.
Logs
Команду 8 byte CAN можно преобразовать в текстовое описание на EN-en и RU-ru языках вызвов методы класса logs
:
motor.logs.decode_motor_message(command)
Также для обработки и преобразования в текстовый формат ответов мотора можно использовать:
motor.logs.decode_motor_response(response)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nekormd-0.1.1.tar.gz
.
File metadata
- Download URL: nekormd-0.1.1.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e95f7dfc0b7416444a95163e256d28c1a149f4485482e4e1d4cce64994540206 |
|
MD5 | d58d97d02dc7564a08cb29b5cf4ed072 |
|
BLAKE2b-256 | 0980c3e7fe5492def2deb0a96ae55c7e483cd0f8fd6aab3a13c3495d49dd6736 |
File details
Details for the file NekoRMD-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: NekoRMD-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | edab2786621b486b469196877eb01d309c6deac0995d3b1e3a05ad3c9dc30214 |
|
MD5 | d31b627defbea1a7ec97875a81a8ac51 |
|
BLAKE2b-256 | d33c3b248c1fe56b8e6920d74b8303e9af3037a39e6c63e1ff07986ac12a1bfe |