Skip to main content

motor-drive-layer

Python bindings for the Motor-Drive-Layer native C++ Damiao motor driver.

The package loads the bundled C ABI library through Python ctypes and exposes SocketCAN, SocketCAN-FD, Damiao serial bridge, and optional DM_Device transports. Published wheels cover Linux x86_64/ARM64, macOS Intel/Apple Silicon, and Windows x64. The serial transport is cross-platform; SocketCAN transports remain Linux-only.

DM-USB2FDCAN Dual works with its original dual_app firmware through Controller.from_dm_device(device="usb2canfd-dual", channel=0, bitrate=1_000_000, data_bitrate=5_000_000). CH0 and CH1 are independently selectable, old positional arguments remain compatible, and the loader probes both vendor v1.0 and v1.1 ABIs. Install the separate vendor runtime with motor-drive-layer-install-dm-device --download or set MOTOR_DM_DEVICE_LIB.

Use Motor.request_fresh_state(timeout_ms=50) when the caller must wait for a newly requested feedback frame. For multiple motors, Controller.request_feedback_all(timeout_ms=50) sends every request with the configured TX pacing and waits against one shared deadline; a timeout reports the missing motor IDs. The lower-level request_feedback(), get_state(), and poll_feedback_once() methods remain non-blocking asynchronous/cache operations.

For synchronized multi-channel control, ControllerGroup([ch0, ch1]) creates one persistent native worker per Controller. send_pos_vel([...]) and send_mit([...]) dispatch typed PosVelCommand or MitCommand values across their owning controllers, overlap independent TX pacing waits, and return after every controller finishes. Errors retain the controller/channel, motor ID, and native reason.

The wheel includes py.typed and .pyi declarations for editor completion and static type checking. The main public APIs are:

  • Controller(...), from_socketcanfd(...), from_dm_serial(...), and from_dm_device(...).
  • Controller.add_damiao_motor(...), enable_all(), disable_all(), request_feedback_all(), set_tx_gap_us(), shutdown(), and close_bus().
  • ControllerGroup(...), send_pos_vel(...), and send_mit(...) for persistent native multi-controller dispatch.
  • Motor.enable(), disable(), ensure_mode(), all four control-mode send methods, fresh/cached feedback methods, typed register access, parameter aliases, and store_parameters().
  • MitCommand, PosVelCommand, MotorState, FeedbackStats, Mode, register metadata/constants, and SDK exception classes.

Motor is a logical child of its creating Controller. After the parent closes, motor operations raise CallError; motor.close() can still release the handle. Both classes support context managers. Leaving a Motor context only frees its handle, while leaving a Controller context attempts to disable all motors before closing the bus.

See the project README for build instructions, architecture, configuration, safety guidance, and examples.

This package is distributed under the MIT License. The optional DM_Device vendor runtime is distributed separately and may have its own license terms.

Metadata

Release files for motor-drive-layer 0.5.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for motor-drive-layer 0.5.8
File
motor_drive_layer-0.5.8-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
motor_drive_layer-0.5.8-py3-none-manylinux_2_35_x86_64.whl Python 3 none Linux glibc 2.35+ x86-64 Details
motor_drive_layer-0.5.8-py3-none-manylinux_2_35_aarch64.whl Python 3 none Linux glibc 2.35+ ARM64 Details
motor_drive_layer-0.5.8-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
motor_drive_layer-0.5.8-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 645.6 kB

Release files / motor_drive_layer-0.5.8-py3-none-win_amd64.whl

Download URL motor_drive_layer-0.5.8-py3-none-win_amd64.whl
Size 138.3 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
20dff43f6d9d286298e5f1bebb8100acc8214c4561d51e691937e5f7af557bb6
BLAKE2b-256 checksum
How to use checksums
a972f12cb3ea5e09f8d7dd4d92b4c64d5941079e239d65bdb40661fa4b6cae89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / motor_drive_layer-0.5.8-py3-none-manylinux_2_35_x86_64.whl

Download URL motor_drive_layer-0.5.8-py3-none-manylinux_2_35_x86_64.whl
Size 146.2 kB
Tags Linux glibc 2.35+ x86-64 Python 3
SHA-256 checksum
How to use checksums
4d9324fcff98fa9ccdc69cd85855db399563368b4edc8a4ce2eaf04c736bcd7c
BLAKE2b-256 checksum
How to use checksums
93652c97ce7b2019ba518bcea72d6641ca96bf93573cfc6c3eb04e52c9dee357
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / motor_drive_layer-0.5.8-py3-none-manylinux_2_35_aarch64.whl

Download URL motor_drive_layer-0.5.8-py3-none-manylinux_2_35_aarch64.whl
Size 136.6 kB
Tags Linux glibc 2.35+ ARM64 Python 3
SHA-256 checksum
How to use checksums
bf128968984912e48c11640c7a27487c8181a048d281bf5bb9a47bc900bf0c2c
BLAKE2b-256 checksum
How to use checksums
94a811870257ed501346394da397c677d8d915777608e7ca0c3c33418ca2c5a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / motor_drive_layer-0.5.8-py3-none-macosx_11_0_x86_64.whl

Download URL motor_drive_layer-0.5.8-py3-none-macosx_11_0_x86_64.whl
Size 114.6 kB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
6e4bce096ad9e07f654120a7d3024cfcdd3f27d57fb5cd57f87bfe2c108c922b
BLAKE2b-256 checksum
How to use checksums
f082c48da59a9d40069266076a42caa7d5ef6bcef6f84adb926d4f04f0a84ded
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / motor_drive_layer-0.5.8-py3-none-macosx_11_0_arm64.whl

Download URL motor_drive_layer-0.5.8-py3-none-macosx_11_0_arm64.whl
Size 109.8 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0b839764cd7c6aad460d525586926dfb905888e9c546d4315e614c98449c5d17
BLAKE2b-256 checksum
How to use checksums
80ff866614674bab3c24eec55b6997cb0dd139b3b515a8e71844b3146966107f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

0.25.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.5

2 release files

0.22.3

2 release files

0.22.2

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.9

2 release files

0.12.8

2 release files

0.12.7

2 release files

0.12.6

2 release files

0.12.5

2 release files

0.12.4

2 release files

0.12.3

2 release files

0.12.2

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.1

1 release file

0.11.0

1 release file

0.10.30

1 release file

0.10.29

1 release file

0.10.28

1 release file

0.10.27

1 release file

0.10.26

1 release file

0.10.25

1 release file

0.10.14

1 release file

0.10.9

2 release files

0.10.8

2 release files

0.10.7

3 release files

0.10.6

2 release files

0.10.5

1 release file

0.10.4

1 release file

0.10.3

1 release file

0.10.2

1 release file

0.10.1

2 release files

0.10.0

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.9

1 release file

0.8.8

1 release file

0.8.7

1 release file

0.8.5

5 release files

0.8.4

5 release files

0.8.3

5 release files

0.8.2

5 release files

0.7.9

5 release files

0.7.7

5 release files

0.7.6

5 release files

0.7.5

5 release files

0.7.4

5 release files

0.7.3

1 release file

0.7.0

1 release file

0.6.2

5 release files

0.6.1

5 release files

0.6.0

5 release files

0.5.11

2 release files

0.5.10

2 release files

0.5.9

5 release files

This release

0.5.8 This release

5 release files

0.5.7

5 release files

0.5.6

5 release files

0.5.4

5 release files

0.5.3

5 release files

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page