dynamixel-sdk 3.8.4__tar.gz → 4.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/PKG-INFO +5 -4
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/pyproject.toml +9 -4
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/setup.py +3 -2
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/__init__.py +54 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/connector.py +153 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/2xc430_w250.model +70 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/2xl430_w250.model +70 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/dynamixel.model +61 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/h42_20_s300_ra.model +84 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/h54_100_s500_ra.model +84 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/h54_200_s500_ra.model +84 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/m42_10_s260_ra.model +84 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/m54_40_s250_ra.model +84 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/m54_60_s250_ra.model +84 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/mx_106.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/mx_28.model +71 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/mx_64.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ph42_020_s300.model +87 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ph54_100_s500.model +87 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ph54_200_s500.model +87 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/pm42_010_s260.model +87 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/pm54_040_s250.model +87 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/pm54_060_s250.model +87 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/rh_p12_rn.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m181.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m181_fw52.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m288.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m288_fw52.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t181.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t181_fw52.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t288.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t288_fw52.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc430_w150.model +70 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc430_w240.model +70 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd430_t210.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd430_t350.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd540_t150.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd540_t270.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_v210.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_v350.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_w210.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_w350.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_v150.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_v270.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_w150.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_w270.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl320.model +46 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m077.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m077_fw52.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m288.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m288_fw52.model +75 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl430_w250.model +70 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm430_w210.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm430_w350.model +74 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm540_w150.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm540_w270.model +80 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw430_t200.model +73 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw430_t333.model +73 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw540_h260.model +73 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw540_t140.model +73 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw540_t260.model +73 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_a051.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_a099.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_b001.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_m001.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_r051.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_r099.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_a051.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_a099.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_b001.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_m001.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_r051.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_r099.model +115 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table.py +108 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/data_types.py +81 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/dynamixel_error.py +113 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/group_executor.py +186 -0
- dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/motor.py +404 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk.egg-info/PKG-INFO +5 -4
- dynamixel_sdk-4.0.2/src/dynamixel_sdk.egg-info/SOURCES.txt +94 -0
- dynamixel_sdk-4.0.2/src/dynamixel_sdk.egg-info/requires.txt +4 -0
- dynamixel_sdk-4.0.2/src/dynamixel_sdk.egg-info/top_level.txt +2 -0
- dynamixel_sdk-3.8.4/src/dynamixel_sdk.egg-info/SOURCES.txt +0 -19
- dynamixel_sdk-3.8.4/src/dynamixel_sdk.egg-info/requires.txt +0 -1
- dynamixel_sdk-3.8.4/src/dynamixel_sdk.egg-info/top_level.txt +0 -1
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/LICENSE.txt +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/README.txt +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/setup.cfg +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/__init__.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_bulk_read.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_bulk_write.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_sync_read.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_sync_write.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/packet_handler.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/port_handler.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/protocol1_packet_handler.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/protocol2_packet_handler.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/robotis_def.py +0 -0
- {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk.egg-info/dependency_links.txt +0 -0
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dynamixel-sdk
|
|
3
|
-
Version:
|
|
4
|
-
Summary: Dynamixel SDK
|
|
3
|
+
Version: 4.0.2
|
|
4
|
+
Summary: Dynamixel SDK 4. python package
|
|
5
5
|
Home-page: https://github.com/ROBOTIS-GIT/DynamixelSDK
|
|
6
|
-
Author: Leon Jung, Wonho Yun
|
|
7
|
-
Author-email: Leon Jung <rwjung@robotis.com>, Wonho Yun <ywh@robotis.com>
|
|
6
|
+
Author: Leon Jung, Wonho Yun, Hyungyu Kim
|
|
7
|
+
Author-email: Leon Jung <rwjung@robotis.com>, Wonho Yun <ywh@robotis.com>, Hyungyu Kim <kimgf@robotis.com>
|
|
8
8
|
License: Apache 2.0
|
|
9
9
|
Project-URL: Homepage, https://github.com/ROBOTIS-GIT/DynamixelSDK
|
|
10
10
|
Requires-Python: >=3.6
|
|
11
11
|
Description-Content-Type: text/plain
|
|
12
12
|
License-File: LICENSE.txt
|
|
13
13
|
Requires-Dist: pyserial
|
|
14
|
+
Requires-Dist: importlib_resources; python_version < "3.9"
|
|
14
15
|
Dynamic: author
|
|
15
16
|
Dynamic: home-page
|
|
16
17
|
Dynamic: license-file
|
|
@@ -4,16 +4,18 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dynamixel-sdk"
|
|
7
|
-
version = "
|
|
8
|
-
description = "Dynamixel SDK
|
|
7
|
+
version = "4.0.2"
|
|
8
|
+
description = "Dynamixel SDK 4. python package"
|
|
9
9
|
readme = "README.txt"
|
|
10
10
|
license = { text = "Apache 2.0" }
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "Leon Jung", email = "rwjung@robotis.com" },
|
|
13
|
-
{ name = "Wonho Yun", email = "ywh@robotis.com" }
|
|
13
|
+
{ name = "Wonho Yun", email = "ywh@robotis.com" },
|
|
14
|
+
{ name = "Hyungyu Kim", email = "kimgf@robotis.com" }
|
|
14
15
|
]
|
|
15
16
|
dependencies = [
|
|
16
|
-
"pyserial"
|
|
17
|
+
"pyserial",
|
|
18
|
+
'importlib_resources; python_version < "3.9"'
|
|
17
19
|
]
|
|
18
20
|
requires-python = ">=3.6"
|
|
19
21
|
urls = { Homepage = "https://github.com/ROBOTIS-GIT/DynamixelSDK" }
|
|
@@ -23,3 +25,6 @@ package-dir = {"" = "src"}
|
|
|
23
25
|
|
|
24
26
|
[tool.setuptools.packages.find]
|
|
25
27
|
where = ["src"]
|
|
28
|
+
|
|
29
|
+
[tool.setuptools.package-data]
|
|
30
|
+
"dynamixel_easy_sdk.control_table" = ["*.model"]
|
|
@@ -6,6 +6,7 @@ import platform
|
|
|
6
6
|
authors_info = [
|
|
7
7
|
('Leon Jung', 'rwjung@robotis.com'),
|
|
8
8
|
('Wonho Yun', 'ywh@robotis.com'),
|
|
9
|
+
('Hyungyu Kim', 'kimhg@robotis.com'),
|
|
9
10
|
]
|
|
10
11
|
|
|
11
12
|
authors = ', '.join(author for author, _ in authors_info)
|
|
@@ -13,11 +14,11 @@ author_emails = ', '.join(email for _, email in authors_info)
|
|
|
13
14
|
|
|
14
15
|
setup(
|
|
15
16
|
name='dynamixel_sdk',
|
|
16
|
-
version='
|
|
17
|
+
version='4.0.2',
|
|
17
18
|
packages=['dynamixel_sdk'],
|
|
18
19
|
package_dir={'': 'src'},
|
|
19
20
|
license='Apache 2.0',
|
|
20
|
-
description='Dynamixel SDK
|
|
21
|
+
description='Dynamixel SDK 4. python package',
|
|
21
22
|
long_description=open('README.txt').read(),
|
|
22
23
|
url='https://github.com/ROBOTIS-GIT/DynamixelSDK',
|
|
23
24
|
author=authors,
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
################################################################################
|
|
5
|
+
# Copyright 2025 ROBOTIS CO., LTD.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
################################################################################
|
|
19
|
+
|
|
20
|
+
# Author: Hyungyu Kim
|
|
21
|
+
|
|
22
|
+
from .connector import Connector
|
|
23
|
+
from .control_table import ControlTable
|
|
24
|
+
from .data_types import (
|
|
25
|
+
CommandType,
|
|
26
|
+
ControlTableItem,
|
|
27
|
+
Direction,
|
|
28
|
+
OperatingMode,
|
|
29
|
+
ProfileConfiguration,
|
|
30
|
+
StagedCommand,
|
|
31
|
+
StatusRequest,
|
|
32
|
+
)
|
|
33
|
+
from .dynamixel_error import DxlError
|
|
34
|
+
from .dynamixel_error import DxlRuntimeError
|
|
35
|
+
from .dynamixel_error import getErrorMessage
|
|
36
|
+
from .group_executor import GroupExecutor
|
|
37
|
+
from .motor import Motor
|
|
38
|
+
|
|
39
|
+
__all__ = [
|
|
40
|
+
'Connector',
|
|
41
|
+
'ControlTable',
|
|
42
|
+
'CommandType',
|
|
43
|
+
'ControlTableItem',
|
|
44
|
+
'Direction',
|
|
45
|
+
'OperatingMode',
|
|
46
|
+
'ProfileConfiguration',
|
|
47
|
+
'StagedCommand',
|
|
48
|
+
'StatusRequest',
|
|
49
|
+
'DxlError',
|
|
50
|
+
'DxlRuntimeError',
|
|
51
|
+
'getErrorMessage',
|
|
52
|
+
'GroupExecutor',
|
|
53
|
+
'Motor',
|
|
54
|
+
]
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
################################################################################
|
|
5
|
+
# Copyright 2025 ROBOTIS CO., LTD.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
################################################################################
|
|
19
|
+
|
|
20
|
+
# Author: Hyungyu Kim
|
|
21
|
+
|
|
22
|
+
from typing import List
|
|
23
|
+
import serial
|
|
24
|
+
|
|
25
|
+
from dynamixel_easy_sdk.dynamixel_error import DxlError
|
|
26
|
+
from dynamixel_easy_sdk.dynamixel_error import DxlRuntimeError
|
|
27
|
+
from dynamixel_easy_sdk.group_executor import GroupExecutor
|
|
28
|
+
from dynamixel_easy_sdk.motor import Motor
|
|
29
|
+
from dynamixel_sdk import PacketHandler
|
|
30
|
+
from dynamixel_sdk import PortHandler
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Connector:
|
|
34
|
+
|
|
35
|
+
PROTOCOL_VERSION = 2.0
|
|
36
|
+
_packet_handler = None
|
|
37
|
+
|
|
38
|
+
def __init__(self, port_name: str, baud_rate: int):
|
|
39
|
+
self._port_handler = PortHandler(port_name)
|
|
40
|
+
if Connector._packet_handler is None:
|
|
41
|
+
Connector._packet_handler = PacketHandler(Connector.PROTOCOL_VERSION)
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
if not self._port_handler.setBaudRate(baud_rate):
|
|
45
|
+
raise DxlRuntimeError('Invalid baudrate specified')
|
|
46
|
+
except serial.SerialException as e:
|
|
47
|
+
errno = getattr(e, 'errno', None)
|
|
48
|
+
if errno == 2:
|
|
49
|
+
raise DxlRuntimeError(f'Port "{port_name}" does not exist') from e
|
|
50
|
+
elif errno == 16:
|
|
51
|
+
raise DxlRuntimeError(DxlError.SDK_COMM_PORT_BUSY) from e
|
|
52
|
+
else:
|
|
53
|
+
raise DxlRuntimeError('Failed to open port') from e
|
|
54
|
+
except Exception as e:
|
|
55
|
+
raise DxlRuntimeError('Failed to open port') from e
|
|
56
|
+
|
|
57
|
+
def createMotor(self, motor_id: int) -> Motor:
|
|
58
|
+
model_number = self.ping(motor_id)
|
|
59
|
+
return Motor(motor_id, model_number, self)
|
|
60
|
+
|
|
61
|
+
def createAllMotors(self, start_id: int = 0, end_id: int = 252) -> List[Motor]:
|
|
62
|
+
if not (0 <= start_id <= 252 and 0 <= end_id <= 252 and start_id <= end_id):
|
|
63
|
+
raise DxlRuntimeError('ID must be between 0 and 252, and start_id <= end_id')
|
|
64
|
+
|
|
65
|
+
motor_ids = self.broadcastPing()
|
|
66
|
+
motors = []
|
|
67
|
+
for motor_id in motor_ids:
|
|
68
|
+
if start_id <= motor_id <= end_id:
|
|
69
|
+
motors.append(self.createMotor(motor_id))
|
|
70
|
+
return motors
|
|
71
|
+
|
|
72
|
+
def createGroupExecutor(self):
|
|
73
|
+
return GroupExecutor(self)
|
|
74
|
+
|
|
75
|
+
def _checkError(self, dxl_comm_result, dxl_error):
|
|
76
|
+
if dxl_comm_result != DxlError.SDK_COMM_SUCCESS:
|
|
77
|
+
raise DxlRuntimeError(DxlError(dxl_comm_result))
|
|
78
|
+
if dxl_error != DxlError.SDK_COMM_SUCCESS:
|
|
79
|
+
raise DxlRuntimeError(DxlError(dxl_error))
|
|
80
|
+
|
|
81
|
+
def read1ByteData(self, motor_id: int, address: int) -> int:
|
|
82
|
+
value, dxl_comm_result, dxl_error = Connector._packet_handler.read1ByteTxRx(
|
|
83
|
+
self._port_handler,
|
|
84
|
+
motor_id,
|
|
85
|
+
address)
|
|
86
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
87
|
+
return value
|
|
88
|
+
|
|
89
|
+
def read2ByteData(self, motor_id: int, address: int) -> int:
|
|
90
|
+
value, dxl_comm_result, dxl_error = Connector._packet_handler.read2ByteTxRx(
|
|
91
|
+
self._port_handler,
|
|
92
|
+
motor_id,
|
|
93
|
+
address)
|
|
94
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
95
|
+
return value
|
|
96
|
+
|
|
97
|
+
def read4ByteData(self, motor_id: int, address: int) -> int:
|
|
98
|
+
value, dxl_comm_result, dxl_error = Connector._packet_handler.read4ByteTxRx(
|
|
99
|
+
self._port_handler,
|
|
100
|
+
motor_id,
|
|
101
|
+
address)
|
|
102
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
103
|
+
return value
|
|
104
|
+
|
|
105
|
+
def write1ByteData(self, motor_id: int, address: int, value: int):
|
|
106
|
+
dxl_comm_result, dxl_error = Connector._packet_handler.write1ByteTxRx(
|
|
107
|
+
self._port_handler,
|
|
108
|
+
motor_id,
|
|
109
|
+
address,
|
|
110
|
+
value)
|
|
111
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
112
|
+
|
|
113
|
+
def write2ByteData(self, motor_id: int, address: int, value: int):
|
|
114
|
+
dxl_comm_result, dxl_error = Connector._packet_handler.write2ByteTxRx(
|
|
115
|
+
self._port_handler,
|
|
116
|
+
motor_id,
|
|
117
|
+
address,
|
|
118
|
+
value)
|
|
119
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
120
|
+
|
|
121
|
+
def write4ByteData(self, motor_id: int, address: int, value: int):
|
|
122
|
+
dxl_comm_result, dxl_error = Connector._packet_handler.write4ByteTxRx(
|
|
123
|
+
self._port_handler,
|
|
124
|
+
motor_id,
|
|
125
|
+
address,
|
|
126
|
+
value)
|
|
127
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
128
|
+
|
|
129
|
+
def reboot(self, motor_id: int):
|
|
130
|
+
dxl_comm_result, dxl_error = Connector._packet_handler.reboot(self._port_handler, motor_id)
|
|
131
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
132
|
+
|
|
133
|
+
def ping(self, motor_id: int) -> int:
|
|
134
|
+
model_number, dxl_comm_result, dxl_error = Connector._packet_handler.ping(
|
|
135
|
+
self._port_handler,
|
|
136
|
+
motor_id)
|
|
137
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
138
|
+
return model_number
|
|
139
|
+
|
|
140
|
+
def broadcastPing(self) -> List[int]:
|
|
141
|
+
ids, dxl_comm_result = Connector._packet_handler.broadcastPing(self._port_handler)
|
|
142
|
+
self._checkError(dxl_comm_result, DxlError.SDK_COMM_SUCCESS)
|
|
143
|
+
return ids
|
|
144
|
+
|
|
145
|
+
def factoryReset(self, motor_id: int, option: int):
|
|
146
|
+
dxl_comm_result, dxl_error = Connector._packet_handler.factoryReset(
|
|
147
|
+
self._port_handler,
|
|
148
|
+
motor_id,
|
|
149
|
+
option)
|
|
150
|
+
self._checkError(dxl_comm_result, dxl_error)
|
|
151
|
+
|
|
152
|
+
def closePort(self):
|
|
153
|
+
self._port_handler.closePort()
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
[type info]
|
|
2
|
+
name value
|
|
3
|
+
value_of_zero_radian_position 2048
|
|
4
|
+
value_of_max_radian_position 4095
|
|
5
|
+
value_of_min_radian_position 0
|
|
6
|
+
min_radian -3.14159265
|
|
7
|
+
max_radian 3.14159265
|
|
8
|
+
|
|
9
|
+
[unit info]
|
|
10
|
+
Data Name value unit Sign Type
|
|
11
|
+
Present Velocity 0.0239691227 rad/s signed
|
|
12
|
+
Goal Velocity 0.0239691227 rad/s signed
|
|
13
|
+
|
|
14
|
+
[control table]
|
|
15
|
+
Address Size Data Name
|
|
16
|
+
0 2 Model Number
|
|
17
|
+
2 4 Model Information
|
|
18
|
+
6 1 Firmware Version
|
|
19
|
+
7 1 ID
|
|
20
|
+
8 1 Baud Rate
|
|
21
|
+
9 1 Return Delay Time
|
|
22
|
+
10 1 Drive Mode
|
|
23
|
+
11 1 Operating Mode
|
|
24
|
+
12 1 Secondary(Shadow) ID
|
|
25
|
+
13 1 Protocol Type
|
|
26
|
+
20 4 Homing Offset
|
|
27
|
+
24 4 Moving Threshold
|
|
28
|
+
31 1 Temperature Limit
|
|
29
|
+
32 2 Max Voltage Limit
|
|
30
|
+
34 2 Min Voltage Limit
|
|
31
|
+
36 2 PWM Limit
|
|
32
|
+
44 4 Velocity Limit
|
|
33
|
+
48 4 Max Position Limit
|
|
34
|
+
52 4 Min Position Limit
|
|
35
|
+
63 1 Shutdown
|
|
36
|
+
64 1 Torque Enable
|
|
37
|
+
65 1 LED
|
|
38
|
+
68 1 Status Return Level
|
|
39
|
+
69 1 Registered Instruction
|
|
40
|
+
70 1 Hardware Error Status
|
|
41
|
+
76 2 Velocity I Gain
|
|
42
|
+
78 2 Velocity P Gain
|
|
43
|
+
80 2 Position D Gain
|
|
44
|
+
82 2 Position I Gain
|
|
45
|
+
84 2 Position P Gain
|
|
46
|
+
88 2 Feedforward 2nd Gain
|
|
47
|
+
90 2 Feedforward 1st Gain
|
|
48
|
+
98 1 Bus Watchdog
|
|
49
|
+
100 2 Goal PWM
|
|
50
|
+
104 4 Goal Velocity
|
|
51
|
+
108 4 Profile Acceleration
|
|
52
|
+
112 4 Profile Velocity
|
|
53
|
+
116 4 Goal Position
|
|
54
|
+
120 2 Realtime Tick
|
|
55
|
+
122 1 Moving
|
|
56
|
+
123 1 Moving Status
|
|
57
|
+
124 2 Present PWM
|
|
58
|
+
126 2 Present Load
|
|
59
|
+
128 4 Present Velocity
|
|
60
|
+
132 4 Present Position
|
|
61
|
+
136 4 Velocity Trajectory
|
|
62
|
+
140 4 Position Trajectory
|
|
63
|
+
144 2 Present Input Voltage
|
|
64
|
+
146 1 Present Temperature
|
|
65
|
+
168 2 Indirect Address 1
|
|
66
|
+
224 1 Indirect Data 1
|
|
67
|
+
168 2 Indirect Address Write
|
|
68
|
+
224 1 Indirect Data Write
|
|
69
|
+
578 2 Indirect Address Read
|
|
70
|
+
634 1 Indirect Data Read
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
[type info]
|
|
2
|
+
name value
|
|
3
|
+
value_of_zero_radian_position 2048
|
|
4
|
+
value_of_max_radian_position 4095
|
|
5
|
+
value_of_min_radian_position 0
|
|
6
|
+
min_radian -3.14159265
|
|
7
|
+
max_radian 3.14159265
|
|
8
|
+
|
|
9
|
+
[unit info]
|
|
10
|
+
Data Name value unit Sign Type
|
|
11
|
+
Present Velocity 0.0239691227 rad/s signed
|
|
12
|
+
Goal Velocity 0.0239691227 rad/s signed
|
|
13
|
+
|
|
14
|
+
[control table]
|
|
15
|
+
Address Size Data Name
|
|
16
|
+
0 2 Model Number
|
|
17
|
+
2 4 Model Information
|
|
18
|
+
6 1 Firmware Version
|
|
19
|
+
7 1 ID
|
|
20
|
+
8 1 Baud Rate
|
|
21
|
+
9 1 Return Delay Time
|
|
22
|
+
10 1 Drive Mode
|
|
23
|
+
11 1 Operating Mode
|
|
24
|
+
12 1 Secondary(Shadow) ID
|
|
25
|
+
13 1 Protocol Type
|
|
26
|
+
20 4 Homing Offset
|
|
27
|
+
24 4 Moving Threshold
|
|
28
|
+
31 1 Temperature Limit
|
|
29
|
+
32 2 Max Voltage Limit
|
|
30
|
+
34 2 Min Voltage Limit
|
|
31
|
+
36 2 PWM Limit
|
|
32
|
+
44 4 Velocity Limit
|
|
33
|
+
48 4 Max Position Limit
|
|
34
|
+
52 4 Min Position Limit
|
|
35
|
+
63 1 Shutdown
|
|
36
|
+
64 1 Torque Enable
|
|
37
|
+
65 1 LED
|
|
38
|
+
68 1 Status Return Level
|
|
39
|
+
69 1 Registered Instruction
|
|
40
|
+
70 1 Hardware Error Status
|
|
41
|
+
76 2 Velocity I Gain
|
|
42
|
+
78 2 Velocity P Gain
|
|
43
|
+
80 2 Position D Gain
|
|
44
|
+
82 2 Position I Gain
|
|
45
|
+
84 2 Position P Gain
|
|
46
|
+
88 2 Feedforward 2nd Gain
|
|
47
|
+
90 2 Feedforward 1st Gain
|
|
48
|
+
98 1 Bus Watchdog
|
|
49
|
+
100 2 Goal PWM
|
|
50
|
+
104 4 Goal Velocity
|
|
51
|
+
108 4 Profile Acceleration
|
|
52
|
+
112 4 Profile Velocity
|
|
53
|
+
116 4 Goal Position
|
|
54
|
+
120 2 Realtime Tick
|
|
55
|
+
122 1 Moving
|
|
56
|
+
123 1 Moving Status
|
|
57
|
+
124 2 Present PWM
|
|
58
|
+
126 2 Present Load
|
|
59
|
+
128 4 Present Velocity
|
|
60
|
+
132 4 Present Position
|
|
61
|
+
136 4 Velocity Trajectory
|
|
62
|
+
140 4 Position Trajectory
|
|
63
|
+
144 2 Present Input Voltage
|
|
64
|
+
146 1 Present Temperature
|
|
65
|
+
168 2 Indirect Address 1
|
|
66
|
+
224 1 Indirect Data 1
|
|
67
|
+
168 2 Indirect Address Write
|
|
68
|
+
224 1 Indirect Data Write
|
|
69
|
+
578 2 Indirect Address Read
|
|
70
|
+
634 1 Indirect Data Read
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Number Name
|
|
2
|
+
30 mx_28.model
|
|
3
|
+
311 mx_64.model
|
|
4
|
+
321 mx_106.model
|
|
5
|
+
350 xl320.model
|
|
6
|
+
1000 xh430_w350.model
|
|
7
|
+
1001 xd430_t350.model
|
|
8
|
+
1010 xh430_w210.model
|
|
9
|
+
1011 xd430_t210.model
|
|
10
|
+
1020 xm430_w350.model
|
|
11
|
+
1030 xm430_w210.model
|
|
12
|
+
1040 xh430_v350.model
|
|
13
|
+
1050 xh430_v210.model
|
|
14
|
+
1060 xl430_w250.model
|
|
15
|
+
1070 xc430_w150.model
|
|
16
|
+
1080 xc430_w240.model
|
|
17
|
+
1090 2xl430_w250.model
|
|
18
|
+
1100 xh540_w270.model
|
|
19
|
+
1101 xd540_t270.model
|
|
20
|
+
1110 xh540_w150.model
|
|
21
|
+
1111 xd540_t150.model
|
|
22
|
+
1120 xm540_w270.model
|
|
23
|
+
1130 xm540_w150.model
|
|
24
|
+
1140 xh540_v270.model
|
|
25
|
+
1150 xh540_v150.model
|
|
26
|
+
1160 2xc430_w250.model
|
|
27
|
+
1170 xw540_t260.model
|
|
28
|
+
1180 xw540_t140.model
|
|
29
|
+
1190 xl330_m077.model
|
|
30
|
+
1200 xl330_m288.model
|
|
31
|
+
1210 xc330_t181.model
|
|
32
|
+
1220 xc330_t288.model
|
|
33
|
+
1230 xc330_m181.model
|
|
34
|
+
1240 xc330_m288.model
|
|
35
|
+
1270 xw430_t333.model
|
|
36
|
+
1310 xw540_h260.model
|
|
37
|
+
2000 ph42_020_s300.model
|
|
38
|
+
2010 ph54_100_s500.model
|
|
39
|
+
2020 ph54_200_s500.model
|
|
40
|
+
2100 pm42_010_s260.model
|
|
41
|
+
2110 pm54_040_s250.model
|
|
42
|
+
2120 pm54_060_s250.model
|
|
43
|
+
4000 ym070_210_m001.model
|
|
44
|
+
4010 ym070_210_b001.model
|
|
45
|
+
4020 ym070_210_r051.model
|
|
46
|
+
4030 ym070_210_r099.model
|
|
47
|
+
4040 ym070_210_a051.model
|
|
48
|
+
4050 ym070_210_a099.model
|
|
49
|
+
4120 ym080_230_m001.model
|
|
50
|
+
4130 ym080_230_b001.model
|
|
51
|
+
4140 ym080_230_r051.model
|
|
52
|
+
4150 ym080_230_r099.model
|
|
53
|
+
4160 ym080_230_a051.model
|
|
54
|
+
4170 ym080_230_a099.model
|
|
55
|
+
35074 rh_p12_rn.model
|
|
56
|
+
43289 m42_10_s260_ra.model
|
|
57
|
+
46097 m54_40_s250_ra.model
|
|
58
|
+
46353 m54_60_s250_ra.model
|
|
59
|
+
51201 h42_20_s300_ra.model
|
|
60
|
+
53769 h54_100_s500_ra.model
|
|
61
|
+
54025 h54_200_s500_ra.model
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
[type info]
|
|
2
|
+
name value
|
|
3
|
+
value_of_zero_radian_position 0
|
|
4
|
+
value_of_max_radian_position 303750
|
|
5
|
+
value_of_min_radian_position -303750
|
|
6
|
+
min_radian -3.14159265
|
|
7
|
+
max_radian 3.14159265
|
|
8
|
+
|
|
9
|
+
[unit info]
|
|
10
|
+
Data Name value unit Sign Type
|
|
11
|
+
Present Velocity 0.0010471976 rad/s signed
|
|
12
|
+
Goal Velocity 0.0010471976 rad/s signed
|
|
13
|
+
Present Current 1.0 raw signed
|
|
14
|
+
Goal Current 1.0 raw signed
|
|
15
|
+
|
|
16
|
+
[control table]
|
|
17
|
+
Address Size Data Name
|
|
18
|
+
0 2 Model Number
|
|
19
|
+
2 4 Model Information
|
|
20
|
+
6 1 Firmware Version
|
|
21
|
+
7 1 ID
|
|
22
|
+
8 1 Baud Rate
|
|
23
|
+
9 1 Return Delay Time
|
|
24
|
+
10 1 Drive Mode
|
|
25
|
+
11 1 Operating Mode
|
|
26
|
+
12 1 Secondary ID
|
|
27
|
+
20 4 Homing Offset
|
|
28
|
+
24 4 Moving Threshold
|
|
29
|
+
31 1 Temperature Limit
|
|
30
|
+
32 2 Max Voltage Limit
|
|
31
|
+
34 2 Min Voltage Limit
|
|
32
|
+
36 2 PWM Limit
|
|
33
|
+
38 2 Current Limit
|
|
34
|
+
40 4 Acceleration Limit
|
|
35
|
+
44 4 Velocity Limit
|
|
36
|
+
48 4 Max Position Limit
|
|
37
|
+
52 4 Min Position Limit
|
|
38
|
+
56 1 External Port Mode 1
|
|
39
|
+
57 1 External Port Mode 2
|
|
40
|
+
58 1 External Port Mode 3
|
|
41
|
+
59 1 External Port Mode 4
|
|
42
|
+
63 1 Shutdown
|
|
43
|
+
512 1 Torque Enable
|
|
44
|
+
513 1 LED Red
|
|
45
|
+
514 1 LED Green
|
|
46
|
+
515 1 LED Blue
|
|
47
|
+
516 1 Status Return Level
|
|
48
|
+
517 1 Registered Instruction
|
|
49
|
+
518 1 Hardware Error Status
|
|
50
|
+
524 2 Velocity I Gain
|
|
51
|
+
526 2 Velocity P Gain
|
|
52
|
+
528 2 Position D Gain
|
|
53
|
+
530 2 Position I Gain
|
|
54
|
+
532 2 Position P Gain
|
|
55
|
+
536 2 Feedforward 2nd Gain
|
|
56
|
+
538 2 Feedforward 1st Gain
|
|
57
|
+
546 1 Bus Watchdog
|
|
58
|
+
548 2 Goal PWM
|
|
59
|
+
550 2 Goal Current
|
|
60
|
+
552 4 Goal Velocity
|
|
61
|
+
556 4 Profile Acceleration
|
|
62
|
+
560 4 Profile Velocity
|
|
63
|
+
564 4 Goal Position
|
|
64
|
+
568 2 Realtime Tick
|
|
65
|
+
570 1 Moving
|
|
66
|
+
571 1 Moving Status
|
|
67
|
+
572 2 Present PWM
|
|
68
|
+
574 2 Present Current
|
|
69
|
+
576 4 Present Velocity
|
|
70
|
+
580 4 Present Position
|
|
71
|
+
584 4 Velocity Trajectory
|
|
72
|
+
588 4 Position Trajectory
|
|
73
|
+
592 2 Present Input Voltage
|
|
74
|
+
594 1 Present Temperature
|
|
75
|
+
600 2 External Port Data 1
|
|
76
|
+
602 2 External Port Data 2
|
|
77
|
+
604 2 External Port Data 3
|
|
78
|
+
606 2 External Port Data 4
|
|
79
|
+
168 2 Indirect Address 1
|
|
80
|
+
634 1 Indirect Data 1
|
|
81
|
+
168 2 Indirect Address Write
|
|
82
|
+
634 1 Indirect Data Write
|
|
83
|
+
296 2 Indirect Address Read
|
|
84
|
+
698 1 Indirect Data Read
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
[type info]
|
|
2
|
+
name value
|
|
3
|
+
value_of_zero_radian_position 0
|
|
4
|
+
value_of_max_radian_position 501923
|
|
5
|
+
value_of_min_radian_position -501923
|
|
6
|
+
min_radian -3.14159265
|
|
7
|
+
max_radian 3.14159265
|
|
8
|
+
|
|
9
|
+
[unit info]
|
|
10
|
+
Data Name value unit Sign Type
|
|
11
|
+
Present Velocity 0.0010471976 rad/s signed
|
|
12
|
+
Goal Velocity 0.0010471976 rad/s signed
|
|
13
|
+
Present Current 1.0 raw signed
|
|
14
|
+
Goal Current 1.0 raw signed
|
|
15
|
+
|
|
16
|
+
[control table]
|
|
17
|
+
Address Size Data Name
|
|
18
|
+
0 2 Model Number
|
|
19
|
+
2 4 Model Information
|
|
20
|
+
6 1 Firmware Version
|
|
21
|
+
7 1 ID
|
|
22
|
+
8 1 Baud Rate
|
|
23
|
+
9 1 Return Delay Time
|
|
24
|
+
10 1 Drive Mode
|
|
25
|
+
11 1 Operating Mode
|
|
26
|
+
12 1 Secondary ID
|
|
27
|
+
20 4 Homing Offset
|
|
28
|
+
24 4 Moving Threshold
|
|
29
|
+
31 1 Temperature Limit
|
|
30
|
+
32 2 Max Voltage Limit
|
|
31
|
+
34 2 Min Voltage Limit
|
|
32
|
+
36 2 PWM Limit
|
|
33
|
+
38 2 Current Limit
|
|
34
|
+
40 4 Acceleration Limit
|
|
35
|
+
44 4 Velocity Limit
|
|
36
|
+
48 4 Max Position Limit
|
|
37
|
+
52 4 Min Position Limit
|
|
38
|
+
56 1 External Port Mode 1
|
|
39
|
+
57 1 External Port Mode 2
|
|
40
|
+
58 1 External Port Mode 3
|
|
41
|
+
59 1 External Port Mode 4
|
|
42
|
+
63 1 Shutdown
|
|
43
|
+
512 1 Torque Enable
|
|
44
|
+
513 1 LED Red
|
|
45
|
+
514 1 LED Green
|
|
46
|
+
515 1 LED Blue
|
|
47
|
+
516 1 Status Return Level
|
|
48
|
+
517 1 Registered Instruction
|
|
49
|
+
518 1 Hardware Error Status
|
|
50
|
+
524 2 Velocity I Gain
|
|
51
|
+
526 2 Velocity P Gain
|
|
52
|
+
528 2 Position D Gain
|
|
53
|
+
530 2 Position I Gain
|
|
54
|
+
532 2 Position P Gain
|
|
55
|
+
536 2 Feedforward 2nd Gain
|
|
56
|
+
538 2 Feedforward 1st Gain
|
|
57
|
+
546 1 Bus Watchdog
|
|
58
|
+
548 2 Goal PWM
|
|
59
|
+
550 2 Goal Current
|
|
60
|
+
552 4 Goal Velocity
|
|
61
|
+
556 4 Profile Acceleration
|
|
62
|
+
560 4 Profile Velocity
|
|
63
|
+
564 4 Goal Position
|
|
64
|
+
568 2 Realtime Tick
|
|
65
|
+
570 1 Moving
|
|
66
|
+
571 1 Moving Status
|
|
67
|
+
572 2 Present PWM
|
|
68
|
+
574 2 Present Current
|
|
69
|
+
576 4 Present Velocity
|
|
70
|
+
580 4 Present Position
|
|
71
|
+
584 4 Velocity Trajectory
|
|
72
|
+
588 4 Position Trajectory
|
|
73
|
+
592 2 Present Input Voltage
|
|
74
|
+
594 1 Present Temperature
|
|
75
|
+
600 2 External Port Data 1
|
|
76
|
+
602 2 External Port Data 2
|
|
77
|
+
604 2 External Port Data 3
|
|
78
|
+
606 2 External Port Data 4
|
|
79
|
+
168 2 Indirect Address 1
|
|
80
|
+
634 1 Indirect Data 1
|
|
81
|
+
168 2 Indirect Address Write
|
|
82
|
+
634 1 Indirect Data Write
|
|
83
|
+
296 2 Indirect Address Read
|
|
84
|
+
698 1 Indirect Data Read
|