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.
Files changed (99) hide show
  1. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/PKG-INFO +5 -4
  2. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/pyproject.toml +9 -4
  3. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/setup.py +3 -2
  4. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/__init__.py +54 -0
  5. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/connector.py +153 -0
  6. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/2xc430_w250.model +70 -0
  7. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/2xl430_w250.model +70 -0
  8. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/dynamixel.model +61 -0
  9. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/h42_20_s300_ra.model +84 -0
  10. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/h54_100_s500_ra.model +84 -0
  11. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/h54_200_s500_ra.model +84 -0
  12. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/m42_10_s260_ra.model +84 -0
  13. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/m54_40_s250_ra.model +84 -0
  14. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/m54_60_s250_ra.model +84 -0
  15. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/mx_106.model +75 -0
  16. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/mx_28.model +71 -0
  17. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/mx_64.model +75 -0
  18. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ph42_020_s300.model +87 -0
  19. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ph54_100_s500.model +87 -0
  20. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ph54_200_s500.model +87 -0
  21. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/pm42_010_s260.model +87 -0
  22. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/pm54_040_s250.model +87 -0
  23. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/pm54_060_s250.model +87 -0
  24. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/rh_p12_rn.model +80 -0
  25. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m181.model +75 -0
  26. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m181_fw52.model +75 -0
  27. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m288.model +75 -0
  28. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_m288_fw52.model +75 -0
  29. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t181.model +75 -0
  30. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t181_fw52.model +75 -0
  31. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t288.model +75 -0
  32. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc330_t288_fw52.model +75 -0
  33. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc430_w150.model +70 -0
  34. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xc430_w240.model +70 -0
  35. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd430_t210.model +74 -0
  36. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd430_t350.model +74 -0
  37. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd540_t150.model +80 -0
  38. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xd540_t270.model +80 -0
  39. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_v210.model +74 -0
  40. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_v350.model +74 -0
  41. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_w210.model +74 -0
  42. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh430_w350.model +74 -0
  43. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_v150.model +80 -0
  44. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_v270.model +80 -0
  45. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_w150.model +80 -0
  46. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xh540_w270.model +80 -0
  47. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl320.model +46 -0
  48. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m077.model +75 -0
  49. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m077_fw52.model +75 -0
  50. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m288.model +75 -0
  51. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl330_m288_fw52.model +75 -0
  52. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xl430_w250.model +70 -0
  53. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm430_w210.model +74 -0
  54. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm430_w350.model +74 -0
  55. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm540_w150.model +80 -0
  56. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xm540_w270.model +80 -0
  57. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw430_t200.model +73 -0
  58. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw430_t333.model +73 -0
  59. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw540_h260.model +73 -0
  60. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw540_t140.model +73 -0
  61. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/xw540_t260.model +73 -0
  62. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_a051.model +115 -0
  63. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_a099.model +115 -0
  64. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_b001.model +115 -0
  65. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_m001.model +115 -0
  66. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_r051.model +115 -0
  67. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym070_210_r099.model +115 -0
  68. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_a051.model +115 -0
  69. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_a099.model +115 -0
  70. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_b001.model +115 -0
  71. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_m001.model +115 -0
  72. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_r051.model +115 -0
  73. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table/ym080_230_r099.model +115 -0
  74. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/control_table.py +108 -0
  75. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/data_types.py +81 -0
  76. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/dynamixel_error.py +113 -0
  77. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/group_executor.py +186 -0
  78. dynamixel_sdk-4.0.2/src/dynamixel_easy_sdk/motor.py +404 -0
  79. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk.egg-info/PKG-INFO +5 -4
  80. dynamixel_sdk-4.0.2/src/dynamixel_sdk.egg-info/SOURCES.txt +94 -0
  81. dynamixel_sdk-4.0.2/src/dynamixel_sdk.egg-info/requires.txt +4 -0
  82. dynamixel_sdk-4.0.2/src/dynamixel_sdk.egg-info/top_level.txt +2 -0
  83. dynamixel_sdk-3.8.4/src/dynamixel_sdk.egg-info/SOURCES.txt +0 -19
  84. dynamixel_sdk-3.8.4/src/dynamixel_sdk.egg-info/requires.txt +0 -1
  85. dynamixel_sdk-3.8.4/src/dynamixel_sdk.egg-info/top_level.txt +0 -1
  86. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/LICENSE.txt +0 -0
  87. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/README.txt +0 -0
  88. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/setup.cfg +0 -0
  89. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/__init__.py +0 -0
  90. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_bulk_read.py +0 -0
  91. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_bulk_write.py +0 -0
  92. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_sync_read.py +0 -0
  93. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/group_sync_write.py +0 -0
  94. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/packet_handler.py +0 -0
  95. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/port_handler.py +0 -0
  96. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/protocol1_packet_handler.py +0 -0
  97. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/protocol2_packet_handler.py +0 -0
  98. {dynamixel_sdk-3.8.4 → dynamixel_sdk-4.0.2}/src/dynamixel_sdk/robotis_def.py +0 -0
  99. {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: 3.8.4
4
- Summary: Dynamixel SDK 3. python package
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 = "3.8.4"
8
- description = "Dynamixel SDK 3. python package"
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='3.8.4',
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 3. python package',
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