Skip to main content

Python library to ease with roboteq motor driver programming

Project description

PyRoboteq

Python library to ease with roboteq motor driver programming

Installation

You can install them using pip install PyRoboteq

Or, just clone the repository and import from the 'PyRoboteq' directory

Requirements

Tested Controllers: SDC2130, SBL2360T The library may work on additional roboteq controllers but it is not guaranteed

To make sure your motor controller will work, you'll need the following:

  • Installed PySerial module (imported as 'serial')
  • Connection to the motor controller via serial communication (USB)

Usage

Setup

Import the PyRoboteq package

from PyRoboteq import RoboteqHandler

The PyRoboteq library includes a set of commands which you can use, including a comment describing the use of the command (Work in Progress). To use the commands add the following line

from PyRoboteq import roboteq_commands as cmds

Connection

To connect to the controller you'll have to make a controller object, and additionally connect to it. The RoboteqHandler() constructor additionally supports two parameters which can ease with the development.

  • The debug_mode parameter, which prints out any information sent or received to and from the controller, and any exceptions received.
  • The exit_on_interrupt. By default, the pyroboteq will ignore any exceptions to make sure minor interruptions wont crash your robot. this can be averted by adding the exit_on_interrupt parameter to exit when any interruption is received.
controller = RoboteqHandler(debug_mode = True, exit_on_interrupt = False)  # Create the controller object

The connect() method allows the library to connect to the controller, you must specifiy the port. The library works both on linux and windows.

is_connected = controller.connect("COM9") # connect to the controller (COM9 is an example for windows)

Sending Commands

Afterwards, what you will have to do is to simply write a command to the motors, if you have the SDC2130 dual series, you'll be able to communicat with 2 motors

if __name__ == "__main__":
    while True:
        controller.dual_motor_control(100, 100) # Send command to the controller

To send a message to the controller, use the send_command()

controller.send_command(EM_STOP) # this will send 0 argument command for emergency stop
controller.send_command(REL_EM_STOP) # send this command to release it
controller.send_command(SET_SPEED, 1, 1000) # send 'set speed' command to channel 1 (first argument) with the value of up to 1000 RPM (second argument)

As you can notice, you do not have to use all the arguments, check the manual to see how many arguments you need to use. The library will construct a command depending on how many arguments you give.

Even though send_command supports this, you can more preferablly send a raw string to the controller using the send_raw_command() method.

controller.send_raw_command("!M 200 200") # additionaly, you can send a raw string.

Reading Commands

Sending commands to the controller is cool, but it would be much cooler, if the controller could also return you its very beneficial data. For this, you can use the read_value() method. The method has 2 parameters, the read command, and optionally a parameter. some commands will give you multiple data, like controller voltage, which will give you voltage from 3 different points of the controller. It is recommended that you read the manual to see what each value means.

controller_volts = controller.read_value(cmds.READ_VOLTS) # receive voltages from the controller
>>> "V= 12:16:5" # Without a parameter, the controller returns 3 channels, (internal, battery, 5v output) respectively
controller_volts = controller.read_value(cmds.READ_VOLTS, 2)
>>> "V= 16" # This way, the controller will return only the value of channel 2 (battery voltage)

Same command can be sent using a raw string:

controller_volts = controller.read_value("?V", 2)
>>> "V=16"

Examples

The PyRoboteq library comes with little examples which you can run right away.

To access the examples head to the "examples" directory inside the "PyRoboteq" directory.

More information

For more information please refer to the manual listed here

License

MIT License

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

PyRoboteq-0.1.0.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

PyRoboteq-0.1.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file PyRoboteq-0.1.0.tar.gz.

File metadata

  • Download URL: PyRoboteq-0.1.0.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for PyRoboteq-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f70a35e0ef61f8f0e375073b23fb038d86292ef07fc626e24de97a13ef37ca4e
MD5 7e10ab4d5ad517b7e42ecb54477222fc
BLAKE2b-256 eded94e7a6f1c2a71317c2ba680f21118eb4a01e5ccd789cdba7f09a80046c1d

See more details on using hashes here.

File details

Details for the file PyRoboteq-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: PyRoboteq-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for PyRoboteq-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d8efafc1e0f68fbfedeadc4da3986efe0ecf58b3cbe081374291c102824507e
MD5 4f785da780469005eaed61c41f5f4846
BLAKE2b-256 7073923afda8e5bf30ae577dc0b2a30791a1f94c29c348f26c50c786dbcb857e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page