wujihandpy 0.2.1__cp311-cp311-manylinux_2_28_x86_64.whl → 1.2.0b0.dev0__cp311-cp311-manylinux_2_28_x86_64.whl
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.
Potentially problematic release.
This version of wujihandpy might be problematic. Click here for more details.
- wujihandpy/__init__.py +2 -2
- wujihandpy/_core/__init__.pyi +521 -0
- wujihandpy/_core/filter.pyi +8 -0
- wujihandpy/_core/logging.pyi +65 -0
- wujihandpy/_core.cpython-311-x86_64-linux-gnu.so +0 -0
- wujihandpy/_version.py +3 -3
- {wujihandpy-0.2.1.dist-info → wujihandpy-1.2.0b0.dev0.dist-info}/METADATA +72 -36
- wujihandpy-1.2.0b0.dev0.dist-info/RECORD +17 -0
- wujihandpy/_core.pyi +0 -266
- wujihandpy-0.2.1.dist-info/RECORD +0 -16
- wujihandpy.libs/libwujihandcpp-443a855b.so +0 -0
- {wujihandpy-0.2.1.dist-info → wujihandpy-1.2.0b0.dev0.dist-info}/WHEEL +0 -0
- {wujihandpy-0.2.1.dist-info → wujihandpy-1.2.0b0.dev0.dist-info}/licenses/LICENSE +0 -0
wujihandpy/__init__.py
CHANGED
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import numpy
|
|
3
|
+
import numpy.typing
|
|
4
|
+
import typing
|
|
5
|
+
from . import filter
|
|
6
|
+
from . import logging
|
|
7
|
+
__all__: list[str] = ['Finger', 'Hand', 'IController', 'Joint', 'filter', 'logging']
|
|
8
|
+
class Finger:
|
|
9
|
+
def get_joint_actual_position(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
10
|
+
...
|
|
11
|
+
def get_joint_bus_voltage(self) -> numpy.typing.NDArray[numpy.float32]:
|
|
12
|
+
...
|
|
13
|
+
def get_joint_error_code(self) -> numpy.typing.NDArray[numpy.uint32]:
|
|
14
|
+
...
|
|
15
|
+
def get_joint_hardware_date(self) -> numpy.typing.NDArray[numpy.uint32]:
|
|
16
|
+
...
|
|
17
|
+
def get_joint_hardware_version(self) -> numpy.typing.NDArray[numpy.uint32]:
|
|
18
|
+
...
|
|
19
|
+
def get_joint_lower_limit(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
20
|
+
...
|
|
21
|
+
def get_joint_temperature(self) -> numpy.typing.NDArray[numpy.float32]:
|
|
22
|
+
...
|
|
23
|
+
def get_joint_upper_limit(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
24
|
+
...
|
|
25
|
+
def joint(self, index: typing.SupportsInt) -> Joint:
|
|
26
|
+
...
|
|
27
|
+
def read_joint_actual_position(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float64]:
|
|
28
|
+
...
|
|
29
|
+
def read_joint_actual_position_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float64]]:
|
|
30
|
+
...
|
|
31
|
+
def read_joint_actual_position_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
32
|
+
...
|
|
33
|
+
def read_joint_bus_voltage(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float32]:
|
|
34
|
+
...
|
|
35
|
+
def read_joint_bus_voltage_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float32]]:
|
|
36
|
+
...
|
|
37
|
+
def read_joint_bus_voltage_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
38
|
+
...
|
|
39
|
+
def read_joint_error_code(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.uint32]:
|
|
40
|
+
...
|
|
41
|
+
def read_joint_error_code_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.uint32]]:
|
|
42
|
+
...
|
|
43
|
+
def read_joint_error_code_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
44
|
+
...
|
|
45
|
+
def read_joint_hardware_date(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.uint32]:
|
|
46
|
+
...
|
|
47
|
+
def read_joint_hardware_date_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.uint32]]:
|
|
48
|
+
...
|
|
49
|
+
def read_joint_hardware_date_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
50
|
+
...
|
|
51
|
+
def read_joint_hardware_version(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.uint32]:
|
|
52
|
+
...
|
|
53
|
+
def read_joint_hardware_version_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.uint32]]:
|
|
54
|
+
...
|
|
55
|
+
def read_joint_hardware_version_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
56
|
+
...
|
|
57
|
+
def read_joint_lower_limit(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float64]:
|
|
58
|
+
...
|
|
59
|
+
def read_joint_lower_limit_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float64]]:
|
|
60
|
+
...
|
|
61
|
+
def read_joint_lower_limit_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
62
|
+
...
|
|
63
|
+
def read_joint_temperature(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float32]:
|
|
64
|
+
...
|
|
65
|
+
def read_joint_temperature_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float32]]:
|
|
66
|
+
...
|
|
67
|
+
def read_joint_temperature_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
68
|
+
...
|
|
69
|
+
def read_joint_upper_limit(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float64]:
|
|
70
|
+
...
|
|
71
|
+
def read_joint_upper_limit_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float64]]:
|
|
72
|
+
...
|
|
73
|
+
def read_joint_upper_limit_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
74
|
+
...
|
|
75
|
+
@typing.overload
|
|
76
|
+
def write_joint_control_mode(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
77
|
+
...
|
|
78
|
+
@typing.overload
|
|
79
|
+
def write_joint_control_mode(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
80
|
+
...
|
|
81
|
+
@typing.overload
|
|
82
|
+
def write_joint_control_mode_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
83
|
+
...
|
|
84
|
+
@typing.overload
|
|
85
|
+
def write_joint_control_mode_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
86
|
+
...
|
|
87
|
+
@typing.overload
|
|
88
|
+
def write_joint_control_mode_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
89
|
+
...
|
|
90
|
+
@typing.overload
|
|
91
|
+
def write_joint_control_mode_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
92
|
+
...
|
|
93
|
+
@typing.overload
|
|
94
|
+
def write_joint_current_limit(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
95
|
+
...
|
|
96
|
+
@typing.overload
|
|
97
|
+
def write_joint_current_limit(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
98
|
+
...
|
|
99
|
+
@typing.overload
|
|
100
|
+
def write_joint_current_limit_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
101
|
+
...
|
|
102
|
+
@typing.overload
|
|
103
|
+
def write_joint_current_limit_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
104
|
+
...
|
|
105
|
+
@typing.overload
|
|
106
|
+
def write_joint_current_limit_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
107
|
+
...
|
|
108
|
+
@typing.overload
|
|
109
|
+
def write_joint_current_limit_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
110
|
+
...
|
|
111
|
+
@typing.overload
|
|
112
|
+
def write_joint_enabled(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
113
|
+
...
|
|
114
|
+
@typing.overload
|
|
115
|
+
def write_joint_enabled(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
116
|
+
...
|
|
117
|
+
@typing.overload
|
|
118
|
+
def write_joint_enabled_async(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
119
|
+
...
|
|
120
|
+
@typing.overload
|
|
121
|
+
def write_joint_enabled_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
122
|
+
...
|
|
123
|
+
@typing.overload
|
|
124
|
+
def write_joint_enabled_unchecked(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
125
|
+
...
|
|
126
|
+
@typing.overload
|
|
127
|
+
def write_joint_enabled_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
128
|
+
...
|
|
129
|
+
@typing.overload
|
|
130
|
+
def write_joint_reset_error(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
131
|
+
...
|
|
132
|
+
@typing.overload
|
|
133
|
+
def write_joint_reset_error(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
134
|
+
...
|
|
135
|
+
@typing.overload
|
|
136
|
+
def write_joint_reset_error_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
137
|
+
...
|
|
138
|
+
@typing.overload
|
|
139
|
+
def write_joint_reset_error_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
140
|
+
...
|
|
141
|
+
@typing.overload
|
|
142
|
+
def write_joint_reset_error_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
143
|
+
...
|
|
144
|
+
@typing.overload
|
|
145
|
+
def write_joint_reset_error_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
146
|
+
...
|
|
147
|
+
@typing.overload
|
|
148
|
+
def write_joint_sin_level(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
149
|
+
...
|
|
150
|
+
@typing.overload
|
|
151
|
+
def write_joint_sin_level(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
152
|
+
...
|
|
153
|
+
@typing.overload
|
|
154
|
+
def write_joint_sin_level_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
155
|
+
...
|
|
156
|
+
@typing.overload
|
|
157
|
+
def write_joint_sin_level_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
158
|
+
...
|
|
159
|
+
@typing.overload
|
|
160
|
+
def write_joint_sin_level_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
161
|
+
...
|
|
162
|
+
@typing.overload
|
|
163
|
+
def write_joint_sin_level_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
164
|
+
...
|
|
165
|
+
@typing.overload
|
|
166
|
+
def write_joint_target_position(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
167
|
+
...
|
|
168
|
+
@typing.overload
|
|
169
|
+
def write_joint_target_position(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
170
|
+
...
|
|
171
|
+
@typing.overload
|
|
172
|
+
def write_joint_target_position_async(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
173
|
+
...
|
|
174
|
+
@typing.overload
|
|
175
|
+
def write_joint_target_position_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
176
|
+
...
|
|
177
|
+
@typing.overload
|
|
178
|
+
def write_joint_target_position_unchecked(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
179
|
+
...
|
|
180
|
+
@typing.overload
|
|
181
|
+
def write_joint_target_position_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
182
|
+
...
|
|
183
|
+
class Hand:
|
|
184
|
+
def __init__(self, serial_number: str | None = None, usb_pid: typing.SupportsInt = -1, usb_vid: typing.SupportsInt = 1155, mask: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_] | None = None) -> None:
|
|
185
|
+
...
|
|
186
|
+
def finger(self, index: typing.SupportsInt) -> Finger:
|
|
187
|
+
...
|
|
188
|
+
def get_firmware_date(self) -> numpy.uint32:
|
|
189
|
+
...
|
|
190
|
+
def get_firmware_version(self) -> numpy.uint32:
|
|
191
|
+
...
|
|
192
|
+
def get_handedness(self) -> numpy.uint8:
|
|
193
|
+
...
|
|
194
|
+
def get_input_voltage(self) -> numpy.float32:
|
|
195
|
+
...
|
|
196
|
+
def get_joint_actual_position(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
197
|
+
...
|
|
198
|
+
def get_joint_bus_voltage(self) -> numpy.typing.NDArray[numpy.float32]:
|
|
199
|
+
...
|
|
200
|
+
def get_joint_error_code(self) -> numpy.typing.NDArray[numpy.uint32]:
|
|
201
|
+
...
|
|
202
|
+
def get_joint_hardware_date(self) -> numpy.typing.NDArray[numpy.uint32]:
|
|
203
|
+
...
|
|
204
|
+
def get_joint_hardware_version(self) -> numpy.typing.NDArray[numpy.uint32]:
|
|
205
|
+
...
|
|
206
|
+
def get_joint_lower_limit(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
207
|
+
...
|
|
208
|
+
def get_joint_temperature(self) -> numpy.typing.NDArray[numpy.float32]:
|
|
209
|
+
...
|
|
210
|
+
def get_joint_upper_limit(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
211
|
+
...
|
|
212
|
+
def get_system_time(self) -> numpy.uint32:
|
|
213
|
+
...
|
|
214
|
+
def get_temperature(self) -> numpy.float32:
|
|
215
|
+
...
|
|
216
|
+
def read_firmware_date(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint32:
|
|
217
|
+
...
|
|
218
|
+
def read_firmware_date_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint32]:
|
|
219
|
+
...
|
|
220
|
+
def read_firmware_date_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
221
|
+
...
|
|
222
|
+
def read_firmware_version(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint32:
|
|
223
|
+
...
|
|
224
|
+
def read_firmware_version_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint32]:
|
|
225
|
+
...
|
|
226
|
+
def read_firmware_version_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
227
|
+
...
|
|
228
|
+
def read_handedness(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint8:
|
|
229
|
+
...
|
|
230
|
+
def read_handedness_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint8]:
|
|
231
|
+
...
|
|
232
|
+
def read_handedness_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
233
|
+
...
|
|
234
|
+
def read_input_voltage(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float32:
|
|
235
|
+
...
|
|
236
|
+
def read_input_voltage_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float32]:
|
|
237
|
+
...
|
|
238
|
+
def read_input_voltage_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
239
|
+
...
|
|
240
|
+
def read_joint_actual_position(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float64]:
|
|
241
|
+
...
|
|
242
|
+
def read_joint_actual_position_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float64]]:
|
|
243
|
+
...
|
|
244
|
+
def read_joint_actual_position_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
245
|
+
...
|
|
246
|
+
def read_joint_bus_voltage(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float32]:
|
|
247
|
+
...
|
|
248
|
+
def read_joint_bus_voltage_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float32]]:
|
|
249
|
+
...
|
|
250
|
+
def read_joint_bus_voltage_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
251
|
+
...
|
|
252
|
+
def read_joint_error_code(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.uint32]:
|
|
253
|
+
...
|
|
254
|
+
def read_joint_error_code_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.uint32]]:
|
|
255
|
+
...
|
|
256
|
+
def read_joint_error_code_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
257
|
+
...
|
|
258
|
+
def read_joint_hardware_date(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.uint32]:
|
|
259
|
+
...
|
|
260
|
+
def read_joint_hardware_date_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.uint32]]:
|
|
261
|
+
...
|
|
262
|
+
def read_joint_hardware_date_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
263
|
+
...
|
|
264
|
+
def read_joint_hardware_version(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.uint32]:
|
|
265
|
+
...
|
|
266
|
+
def read_joint_hardware_version_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.uint32]]:
|
|
267
|
+
...
|
|
268
|
+
def read_joint_hardware_version_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
269
|
+
...
|
|
270
|
+
def read_joint_lower_limit(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float64]:
|
|
271
|
+
...
|
|
272
|
+
def read_joint_lower_limit_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float64]]:
|
|
273
|
+
...
|
|
274
|
+
def read_joint_lower_limit_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
275
|
+
...
|
|
276
|
+
def read_joint_temperature(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float32]:
|
|
277
|
+
...
|
|
278
|
+
def read_joint_temperature_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float32]]:
|
|
279
|
+
...
|
|
280
|
+
def read_joint_temperature_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
281
|
+
...
|
|
282
|
+
def read_joint_upper_limit(self, timeout: typing.SupportsFloat = 0.5) -> numpy.typing.NDArray[numpy.float64]:
|
|
283
|
+
...
|
|
284
|
+
def read_joint_upper_limit_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.typing.NDArray[numpy.float64]]:
|
|
285
|
+
...
|
|
286
|
+
def read_joint_upper_limit_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
287
|
+
...
|
|
288
|
+
def read_system_time(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint32:
|
|
289
|
+
...
|
|
290
|
+
def read_system_time_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint32]:
|
|
291
|
+
...
|
|
292
|
+
def read_system_time_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
293
|
+
...
|
|
294
|
+
def read_temperature(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float32:
|
|
295
|
+
...
|
|
296
|
+
def read_temperature_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float32]:
|
|
297
|
+
...
|
|
298
|
+
def read_temperature_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
299
|
+
...
|
|
300
|
+
def realtime_controller(self, enable_upstream: bool, filter: filter.IFilter) -> IController:
|
|
301
|
+
...
|
|
302
|
+
@typing.overload
|
|
303
|
+
def write_joint_control_mode(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
304
|
+
...
|
|
305
|
+
@typing.overload
|
|
306
|
+
def write_joint_control_mode(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
307
|
+
...
|
|
308
|
+
@typing.overload
|
|
309
|
+
def write_joint_control_mode_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
310
|
+
...
|
|
311
|
+
@typing.overload
|
|
312
|
+
def write_joint_control_mode_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
313
|
+
...
|
|
314
|
+
@typing.overload
|
|
315
|
+
def write_joint_control_mode_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
316
|
+
...
|
|
317
|
+
@typing.overload
|
|
318
|
+
def write_joint_control_mode_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
319
|
+
...
|
|
320
|
+
@typing.overload
|
|
321
|
+
def write_joint_current_limit(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
322
|
+
...
|
|
323
|
+
@typing.overload
|
|
324
|
+
def write_joint_current_limit(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
325
|
+
...
|
|
326
|
+
@typing.overload
|
|
327
|
+
def write_joint_current_limit_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
328
|
+
...
|
|
329
|
+
@typing.overload
|
|
330
|
+
def write_joint_current_limit_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
331
|
+
...
|
|
332
|
+
@typing.overload
|
|
333
|
+
def write_joint_current_limit_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
334
|
+
...
|
|
335
|
+
@typing.overload
|
|
336
|
+
def write_joint_current_limit_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
337
|
+
...
|
|
338
|
+
@typing.overload
|
|
339
|
+
def write_joint_enabled(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
340
|
+
...
|
|
341
|
+
@typing.overload
|
|
342
|
+
def write_joint_enabled(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
343
|
+
...
|
|
344
|
+
@typing.overload
|
|
345
|
+
def write_joint_enabled_async(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
346
|
+
...
|
|
347
|
+
@typing.overload
|
|
348
|
+
def write_joint_enabled_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
349
|
+
...
|
|
350
|
+
@typing.overload
|
|
351
|
+
def write_joint_enabled_unchecked(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
352
|
+
...
|
|
353
|
+
@typing.overload
|
|
354
|
+
def write_joint_enabled_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.bool_], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
355
|
+
...
|
|
356
|
+
@typing.overload
|
|
357
|
+
def write_joint_reset_error(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
358
|
+
...
|
|
359
|
+
@typing.overload
|
|
360
|
+
def write_joint_reset_error(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
361
|
+
...
|
|
362
|
+
@typing.overload
|
|
363
|
+
def write_joint_reset_error_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
364
|
+
...
|
|
365
|
+
@typing.overload
|
|
366
|
+
def write_joint_reset_error_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
367
|
+
...
|
|
368
|
+
@typing.overload
|
|
369
|
+
def write_joint_reset_error_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
370
|
+
...
|
|
371
|
+
@typing.overload
|
|
372
|
+
def write_joint_reset_error_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
373
|
+
...
|
|
374
|
+
@typing.overload
|
|
375
|
+
def write_joint_sin_level(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
376
|
+
...
|
|
377
|
+
@typing.overload
|
|
378
|
+
def write_joint_sin_level(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
379
|
+
...
|
|
380
|
+
@typing.overload
|
|
381
|
+
def write_joint_sin_level_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
382
|
+
...
|
|
383
|
+
@typing.overload
|
|
384
|
+
def write_joint_sin_level_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
385
|
+
...
|
|
386
|
+
@typing.overload
|
|
387
|
+
def write_joint_sin_level_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
388
|
+
...
|
|
389
|
+
@typing.overload
|
|
390
|
+
def write_joint_sin_level_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
391
|
+
...
|
|
392
|
+
@typing.overload
|
|
393
|
+
def write_joint_target_position(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
394
|
+
...
|
|
395
|
+
@typing.overload
|
|
396
|
+
def write_joint_target_position(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
397
|
+
...
|
|
398
|
+
@typing.overload
|
|
399
|
+
def write_joint_target_position_async(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
400
|
+
...
|
|
401
|
+
@typing.overload
|
|
402
|
+
def write_joint_target_position_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64], timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
403
|
+
...
|
|
404
|
+
@typing.overload
|
|
405
|
+
def write_joint_target_position_unchecked(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
406
|
+
...
|
|
407
|
+
@typing.overload
|
|
408
|
+
def write_joint_target_position_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64], timeout: typing.SupportsFloat = 0.5) -> None:
|
|
409
|
+
...
|
|
410
|
+
class IController:
|
|
411
|
+
def __enter__(self) -> IController:
|
|
412
|
+
...
|
|
413
|
+
def __exit__(self, arg0: typing.Any, arg1: typing.Any, arg2: typing.Any) -> None:
|
|
414
|
+
...
|
|
415
|
+
def close(self) -> None:
|
|
416
|
+
...
|
|
417
|
+
def get_joint_actual_position(self) -> numpy.typing.NDArray[numpy.float64]:
|
|
418
|
+
...
|
|
419
|
+
def set_joint_target_position(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.float64]) -> None:
|
|
420
|
+
...
|
|
421
|
+
class Joint:
|
|
422
|
+
def get_joint_actual_position(self) -> numpy.float64:
|
|
423
|
+
...
|
|
424
|
+
def get_joint_bus_voltage(self) -> numpy.float32:
|
|
425
|
+
...
|
|
426
|
+
def get_joint_error_code(self) -> numpy.uint32:
|
|
427
|
+
...
|
|
428
|
+
def get_joint_hardware_date(self) -> numpy.uint32:
|
|
429
|
+
...
|
|
430
|
+
def get_joint_hardware_version(self) -> numpy.uint32:
|
|
431
|
+
...
|
|
432
|
+
def get_joint_lower_limit(self) -> numpy.float64:
|
|
433
|
+
...
|
|
434
|
+
def get_joint_temperature(self) -> numpy.float32:
|
|
435
|
+
...
|
|
436
|
+
def get_joint_upper_limit(self) -> numpy.float64:
|
|
437
|
+
...
|
|
438
|
+
def read_joint_actual_position(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float64:
|
|
439
|
+
...
|
|
440
|
+
def read_joint_actual_position_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float64]:
|
|
441
|
+
...
|
|
442
|
+
def read_joint_actual_position_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
443
|
+
...
|
|
444
|
+
def read_joint_bus_voltage(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float32:
|
|
445
|
+
...
|
|
446
|
+
def read_joint_bus_voltage_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float32]:
|
|
447
|
+
...
|
|
448
|
+
def read_joint_bus_voltage_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
449
|
+
...
|
|
450
|
+
def read_joint_error_code(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint32:
|
|
451
|
+
...
|
|
452
|
+
def read_joint_error_code_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint32]:
|
|
453
|
+
...
|
|
454
|
+
def read_joint_error_code_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
455
|
+
...
|
|
456
|
+
def read_joint_hardware_date(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint32:
|
|
457
|
+
...
|
|
458
|
+
def read_joint_hardware_date_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint32]:
|
|
459
|
+
...
|
|
460
|
+
def read_joint_hardware_date_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
461
|
+
...
|
|
462
|
+
def read_joint_hardware_version(self, timeout: typing.SupportsFloat = 0.5) -> numpy.uint32:
|
|
463
|
+
...
|
|
464
|
+
def read_joint_hardware_version_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.uint32]:
|
|
465
|
+
...
|
|
466
|
+
def read_joint_hardware_version_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
467
|
+
...
|
|
468
|
+
def read_joint_lower_limit(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float64:
|
|
469
|
+
...
|
|
470
|
+
def read_joint_lower_limit_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float64]:
|
|
471
|
+
...
|
|
472
|
+
def read_joint_lower_limit_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
473
|
+
...
|
|
474
|
+
def read_joint_temperature(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float32:
|
|
475
|
+
...
|
|
476
|
+
def read_joint_temperature_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float32]:
|
|
477
|
+
...
|
|
478
|
+
def read_joint_temperature_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
479
|
+
...
|
|
480
|
+
def read_joint_upper_limit(self, timeout: typing.SupportsFloat = 0.5) -> numpy.float64:
|
|
481
|
+
...
|
|
482
|
+
def read_joint_upper_limit_async(self, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[numpy.float64]:
|
|
483
|
+
...
|
|
484
|
+
def read_joint_upper_limit_unchecked(self, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
485
|
+
...
|
|
486
|
+
def write_joint_control_mode(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
487
|
+
...
|
|
488
|
+
def write_joint_control_mode_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
489
|
+
...
|
|
490
|
+
def write_joint_control_mode_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
491
|
+
...
|
|
492
|
+
def write_joint_current_limit(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
493
|
+
...
|
|
494
|
+
def write_joint_current_limit_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
495
|
+
...
|
|
496
|
+
def write_joint_current_limit_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
497
|
+
...
|
|
498
|
+
def write_joint_enabled(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
499
|
+
...
|
|
500
|
+
def write_joint_enabled_async(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
501
|
+
...
|
|
502
|
+
def write_joint_enabled_unchecked(self, value: bool, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
503
|
+
...
|
|
504
|
+
def write_joint_reset_error(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
505
|
+
...
|
|
506
|
+
def write_joint_reset_error_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
507
|
+
...
|
|
508
|
+
def write_joint_reset_error_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
509
|
+
...
|
|
510
|
+
def write_joint_sin_level(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
511
|
+
...
|
|
512
|
+
def write_joint_sin_level_async(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
513
|
+
...
|
|
514
|
+
def write_joint_sin_level_unchecked(self, value: typing.SupportsInt, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
515
|
+
...
|
|
516
|
+
def write_joint_target_position(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
517
|
+
...
|
|
518
|
+
def write_joint_target_position_async(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> typing.Awaitable[None]:
|
|
519
|
+
...
|
|
520
|
+
def write_joint_target_position_unchecked(self, value: typing.SupportsFloat, timeout: typing.SupportsFloat = 0.5) -> None:
|
|
521
|
+
...
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import typing
|
|
3
|
+
__all__: list[str] = ['Level', 'flush', 'set_log_level', 'set_log_path', 'set_log_to_console', 'set_log_to_file']
|
|
4
|
+
class Level:
|
|
5
|
+
"""
|
|
6
|
+
Members:
|
|
7
|
+
|
|
8
|
+
Trace
|
|
9
|
+
|
|
10
|
+
Debug
|
|
11
|
+
|
|
12
|
+
Info
|
|
13
|
+
|
|
14
|
+
Warn
|
|
15
|
+
|
|
16
|
+
Error
|
|
17
|
+
|
|
18
|
+
Critical
|
|
19
|
+
|
|
20
|
+
Off
|
|
21
|
+
"""
|
|
22
|
+
Critical: typing.ClassVar[Level] # value = <Level.Critical: 5>
|
|
23
|
+
Debug: typing.ClassVar[Level] # value = <Level.Debug: 1>
|
|
24
|
+
Error: typing.ClassVar[Level] # value = <Level.Error: 4>
|
|
25
|
+
Info: typing.ClassVar[Level] # value = <Level.Info: 2>
|
|
26
|
+
Off: typing.ClassVar[Level] # value = <Level.Off: 6>
|
|
27
|
+
Trace: typing.ClassVar[Level] # value = <Level.Trace: 0>
|
|
28
|
+
Warn: typing.ClassVar[Level] # value = <Level.Warn: 3>
|
|
29
|
+
__members__: typing.ClassVar[dict[str, Level]] # value = {'Trace': <Level.Trace: 0>, 'Debug': <Level.Debug: 1>, 'Info': <Level.Info: 2>, 'Warn': <Level.Warn: 3>, 'Error': <Level.Error: 4>, 'Critical': <Level.Critical: 5>, 'Off': <Level.Off: 6>}
|
|
30
|
+
def __eq__(self, other: typing.Any) -> bool:
|
|
31
|
+
...
|
|
32
|
+
def __getstate__(self) -> int:
|
|
33
|
+
...
|
|
34
|
+
def __hash__(self) -> int:
|
|
35
|
+
...
|
|
36
|
+
def __index__(self) -> int:
|
|
37
|
+
...
|
|
38
|
+
def __init__(self, value: typing.SupportsInt) -> None:
|
|
39
|
+
...
|
|
40
|
+
def __int__(self) -> int:
|
|
41
|
+
...
|
|
42
|
+
def __ne__(self, other: typing.Any) -> bool:
|
|
43
|
+
...
|
|
44
|
+
def __repr__(self) -> str:
|
|
45
|
+
...
|
|
46
|
+
def __setstate__(self, state: typing.SupportsInt) -> None:
|
|
47
|
+
...
|
|
48
|
+
def __str__(self) -> str:
|
|
49
|
+
...
|
|
50
|
+
@property
|
|
51
|
+
def name(self) -> str:
|
|
52
|
+
...
|
|
53
|
+
@property
|
|
54
|
+
def value(self) -> int:
|
|
55
|
+
...
|
|
56
|
+
def flush() -> None:
|
|
57
|
+
...
|
|
58
|
+
def set_log_level(value: Level) -> None:
|
|
59
|
+
...
|
|
60
|
+
def set_log_path(value: str) -> None:
|
|
61
|
+
...
|
|
62
|
+
def set_log_to_console(value: bool) -> None:
|
|
63
|
+
...
|
|
64
|
+
def set_log_to_file(value: bool) -> None:
|
|
65
|
+
...
|
|
Binary file
|
wujihandpy/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '
|
|
32
|
-
__version_tuple__ = version_tuple = (
|
|
31
|
+
__version__ = version = '1.2.0b0.dev0'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 2, 0, 'b0', 'dev0')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'ge3f1c9f42'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: wujihandpy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1.2.0b0.dev0
|
|
4
4
|
Summary: Python bindings for WujiHandCpp
|
|
5
5
|
Author-Email: Zihan Qin <zihanqin2048@gmail.com>
|
|
6
6
|
Maintainer-Email: Wuji Technology <support@pan-motor.com>
|
|
@@ -50,12 +50,26 @@ pip install wujihandpy
|
|
|
50
50
|
对于 Linux 用户,需要额外配置 udev 规则以允许非 root 用户访问 USB 设备,可在终端中输入:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0483",
|
|
53
|
+
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0483", MODE="0666"' |
|
|
54
54
|
sudo tee /etc/udev/rules.d/95-wujihand.rules &&
|
|
55
55
|
sudo udevadm control --reload-rules &&
|
|
56
56
|
sudo udevadm trigger
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
### 常见错误
|
|
60
|
+
|
|
61
|
+
若遇到报错 `Could not find a version that satisfies the requirement`,请尝试升级 pip:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
python3 -m pip install --upgrade pip
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
然后使用新的pip重新安装:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
python3 -m pip install wujihandpy
|
|
71
|
+
```
|
|
72
|
+
|
|
59
73
|
## 支持的 CPU 架构
|
|
60
74
|
|
|
61
75
|
- x86_64
|
|
@@ -103,8 +117,8 @@ hand = wujihandpy.Hand()
|
|
|
103
117
|
### 读数据
|
|
104
118
|
|
|
105
119
|
```python
|
|
106
|
-
def read_<dataname>(self) ->
|
|
107
|
-
def read_<dataname>(self) -> np.
|
|
120
|
+
def read_<dataname>(self) -> datatype
|
|
121
|
+
def read_<dataname>(self) -> np.ndarray[datatype] # For bulk-read
|
|
108
122
|
```
|
|
109
123
|
|
|
110
124
|
所有可使用的数据均定义在 `wujihandpy/_core.pyi` 中。
|
|
@@ -120,62 +134,70 @@ time = hand.read_system_time()
|
|
|
120
134
|
例如,读取第1个手指(食指),第0个关节的当前位置数据:
|
|
121
135
|
|
|
122
136
|
```python
|
|
123
|
-
position = hand.finger(1).joint(0).
|
|
137
|
+
position = hand.finger(1).joint(0).read_joint_actual_position()
|
|
124
138
|
```
|
|
125
139
|
|
|
140
|
+
关节角度为 `np.float64` 类型,单位为弧度,零点和正方向与 [URDF文件](https://github.com/Wuji-Technology-Co-Ltd/wujihand-urdf) 中定义的相同。
|
|
141
|
+
|
|
126
142
|
用一条指令读取多个数据也是可行的,这被称为**批量读 (Bulk-Read)**。
|
|
127
143
|
|
|
128
144
|
例如,以下指令读取整手所有(20个)关节的当前位置数据:
|
|
129
145
|
|
|
130
146
|
```python
|
|
131
|
-
positions = hand.
|
|
147
|
+
positions = hand.read_joint_actual_position()
|
|
132
148
|
```
|
|
133
149
|
|
|
134
|
-
进行批量读时,函数返回包含所有数据的 `np.
|
|
150
|
+
进行批量读时,函数返回包含所有数据的 `np.ndarray[np.float64]`:
|
|
135
151
|
|
|
136
152
|
```python
|
|
137
|
-
>>> np.set_printoptions(formatter={'int': lambda x: hex(x)})
|
|
138
153
|
>>> print(positions)
|
|
139
|
-
[[
|
|
140
|
-
[
|
|
141
|
-
[
|
|
142
|
-
[
|
|
143
|
-
[
|
|
154
|
+
[[ 0.975 0.523 0.271 -0.45 ]
|
|
155
|
+
[ 0.382 0.241 -0.003 -0.275]
|
|
156
|
+
[-0.299 0.329 0.067 -0.286]
|
|
157
|
+
[-0.122 0.228 0.315 -0.178]
|
|
158
|
+
[ 0.205 0.087 0.288 -0.149]]
|
|
144
159
|
```
|
|
145
160
|
|
|
146
161
|
`read` 函数会阻塞,直到读取完成。保证当函数返回时,读取一定成功。
|
|
147
162
|
|
|
148
163
|
### 写数据
|
|
149
164
|
|
|
150
|
-
写数据拥有类似的API,但多了一个参数用于传递目标值:
|
|
165
|
+
写数据拥有类似的 API,但多了一个参数用于传递目标值:
|
|
151
166
|
|
|
152
167
|
```python
|
|
153
|
-
def write_<dataname>(self,
|
|
154
|
-
def write_<dataname>(self, np.
|
|
168
|
+
def write_<dataname>(self, datatype)
|
|
169
|
+
def write_<dataname>(self, np.ndarray[datatype]) # For bulk-write
|
|
155
170
|
```
|
|
156
171
|
|
|
157
172
|
例如,写入单个关节的目标位置数据:
|
|
158
173
|
|
|
159
174
|
```python
|
|
160
|
-
hand.finger(1).joint(0).
|
|
175
|
+
hand.finger(1).joint(0).write_joint_target_position(0.8)
|
|
161
176
|
```
|
|
162
177
|
|
|
163
|
-
|
|
178
|
+
各关节的合法角度范围可通过以下 API 获取:
|
|
164
179
|
|
|
165
|
-
|
|
180
|
+
```python
|
|
181
|
+
upper = < Hand / Finger / Joint >.read_joint_upper_limit()
|
|
182
|
+
lower = < Hand / Finger / Joint >.read_joint_lower_limit()
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
若写入的角度超出合法范围,会被自动限幅至最高/最低值。
|
|
186
|
+
|
|
187
|
+
**批量写**数据也是可行的,例如,批量为第一个手指写入目标位置数据:
|
|
166
188
|
|
|
167
189
|
```python
|
|
168
|
-
hand.finger(1).
|
|
190
|
+
hand.finger(1).write_joint_target_position(0.8)
|
|
169
191
|
```
|
|
170
192
|
|
|
171
193
|
如果每个关节的目标值不同,可以传入一个包含所有目标值的 `np.array`:
|
|
172
194
|
|
|
173
195
|
```python
|
|
174
|
-
hand.finger(1).
|
|
196
|
+
hand.finger(1).write_joint_target_position(
|
|
175
197
|
np.array(
|
|
176
|
-
# J1
|
|
177
|
-
[
|
|
178
|
-
dtype=np.
|
|
198
|
+
# J1 J2 J3 J4
|
|
199
|
+
[0.8, 0.0, 0.8, 0.8],
|
|
200
|
+
dtype=np.float64,
|
|
179
201
|
)
|
|
180
202
|
)
|
|
181
203
|
```
|
|
@@ -187,23 +209,23 @@ hand.finger(1).write_joint_control_position(
|
|
|
187
209
|
读写函数均有对应的异步版本,函数名以 `_async` 作为后缀。
|
|
188
210
|
|
|
189
211
|
``` python
|
|
190
|
-
async def read_<dataname>_async(self) ->
|
|
191
|
-
async def read_<dataname>_async(self) -> np.
|
|
192
|
-
async def write_<dataname>_async(self,
|
|
193
|
-
async def write_<dataname>_async(self, np.
|
|
212
|
+
async def read_<dataname>_async(self) -> datatype
|
|
213
|
+
async def read_<dataname>_async(self) -> np.ndarray[datatype] # For bulk-read
|
|
214
|
+
async def write_<dataname>_async(self, datatype)
|
|
215
|
+
async def write_<dataname>_async(self, np.ndarray[datatype]) # For bulk-write
|
|
194
216
|
```
|
|
195
217
|
|
|
196
|
-
|
|
218
|
+
异步接口需 `await`;等待期间不阻塞线程/事件循环,返回时保证读/写已经成功。
|
|
197
219
|
|
|
198
220
|
### Unchecked 读/写
|
|
199
221
|
|
|
200
222
|
如果不关心读/写是否成功,可以使用 Unchecked 版本的读/写函数,函数名以 `_unchecked` 作为后缀。
|
|
201
223
|
|
|
202
224
|
```python
|
|
203
|
-
def read_<dataname>_unchecked(self) ->
|
|
204
|
-
def read_<dataname>_unchecked(self) ->
|
|
205
|
-
def write_<dataname>_unchecked(self,
|
|
206
|
-
def write_<dataname>_unchecked(self, np.
|
|
225
|
+
def read_<dataname>_unchecked(self) -> None
|
|
226
|
+
def read_<dataname>_unchecked(self) -> None # For bulk-read
|
|
227
|
+
def write_<dataname>_unchecked(self, datatype)
|
|
228
|
+
def write_<dataname>_unchecked(self, np.ndarray[datatype]) # For bulk-write
|
|
207
229
|
```
|
|
208
230
|
|
|
209
231
|
Unchecked 函数总是立即返回,不会阻塞,通常用于对实时性要求较高的场景。
|
|
@@ -213,20 +235,34 @@ Unchecked 函数总是立即返回,不会阻塞,通常用于对实时性要
|
|
|
213
235
|
如果希望获取以往读/写的结果,可以使用 `get` 系列函数:
|
|
214
236
|
|
|
215
237
|
```python
|
|
216
|
-
def get_<dataname>(self) ->
|
|
217
|
-
def get_<dataname>(self) -> np.
|
|
238
|
+
def get_<dataname>(self) -> datatype
|
|
239
|
+
def get_<dataname>(self) -> np.ndarray[datatype] # For bulk-read
|
|
218
240
|
```
|
|
219
241
|
|
|
220
242
|
`get` 系列函数同样不会阻塞,它总是立即返回最近一次读取到的数据,无论该数据来自 `read`、`async-read` 还是 `read-unchecked`。
|
|
221
243
|
|
|
222
244
|
如果尚未请求过该数据,或请求尚未成功,`get` 函数的返回值是未定义的(通常为0)。
|
|
223
245
|
|
|
246
|
+
### 实时控制
|
|
247
|
+
|
|
248
|
+
默认的读/写方式均带有缓冲池,积攒一段时间数据后才进行传输,最高读/写频率无法超过 100Hz。
|
|
249
|
+
|
|
250
|
+
对于需要流畅控制关节位置的场景,需使用 realtime_controller。
|
|
251
|
+
|
|
252
|
+
具体的控制示例可见 [example](example) 目录:
|
|
253
|
+
|
|
254
|
+
单向写:[realtime.py](example/4.realtime.py)
|
|
255
|
+
|
|
256
|
+
双向读/写:[realtime_duplex.py](example/5.realtime_duplex.py)
|
|
257
|
+
|
|
224
258
|
## 性能与优化
|
|
225
259
|
|
|
226
260
|
WujihandPy 在充分保证易用性的同时,尽可能优化了性能与效率。
|
|
227
261
|
|
|
228
262
|
我们强烈建议优先使用批量读/写以最大限度地发挥性能。
|
|
229
263
|
|
|
264
|
+
对于需要流畅控制关节位置的场景,请务必使用 realtime_controller。
|
|
265
|
+
|
|
230
266
|
## 许可证
|
|
231
267
|
|
|
232
|
-
本项目采用 MIT 许可证,详情见 [LICENSE](LICENSE) 文件。
|
|
268
|
+
本项目采用 MIT 许可证,详情见 [LICENSE](LICENSE) 文件。
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
wujihandpy/__init__.py,sha256=O6rhSCIkTvciLQraUMgmZjEaW7i5n40qQ6Z5oacN_rE,170
|
|
2
|
+
wujihandpy/_core.cpython-311-x86_64-linux-gnu.so,sha256=b7NXzp0P2QMN0NEDnF4kIN93JSraGLugBd2FgMTGM4M,1726817
|
|
3
|
+
wujihandpy/_version.py,sha256=L8uwUIZXTXLqLC4f-PzlcF2ERRcyX1GXwYycOjUEtRM,733
|
|
4
|
+
wujihandpy/_core/__init__.pyi,sha256=clN3slFGQ2tgm0pUYejcfsWvk1XmWVFM5qKwssmwZd8,29287
|
|
5
|
+
wujihandpy/_core/filter.pyi,sha256=dAkrbcYtfcM10eOQumdIvIoHo5ay3oUVOqIqAhFMv24,227
|
|
6
|
+
wujihandpy/_core/logging.pyi,sha256=nM87F9rV0BcpyiqD50WNJfAWICSmc45obMj5T1ZZQW0,1868
|
|
7
|
+
wujihandpy.libs/libblkid-a9167753.so.1.1.0,sha256=XVspUZDmtSMamCgSYDrDYNC-g6agPQCkqrDE0yb8sdY,356897
|
|
8
|
+
wujihandpy.libs/libmount-ec61bd71.so.1.1.0,sha256=8EmOB9QqeXTyAh0aE20fn-QVuG3vsF66wBcgZ6aX2V4,393873
|
|
9
|
+
wujihandpy.libs/libpcre2-8-516f4c9d.so.0.7.1,sha256=IcbljW_oKuAVlrAwKz8qtRZxfi1sQH_iKxPSoNpzsmU,547745
|
|
10
|
+
wujihandpy.libs/libselinux-d0805dcb.so.1,sha256=iYGaLO-LIy5-WEihMiXHpeJUXyq56DDqGU49JbpfTu4,195097
|
|
11
|
+
wujihandpy.libs/libudev-9765ffbd.so.1.6.11,sha256=32i9UQ4dXVdXAdwJfzJd7T9GMKvkkr42mIWW9mOGrI4,677489
|
|
12
|
+
wujihandpy.libs/libusb-1-1b307d35.0.so.0.2.0,sha256=5crhlK2KrW6d1ZRAWqh3dYy93CPE4KekXTbLeGGFIjw,126777
|
|
13
|
+
wujihandpy.libs/libuuid-95b83d40.so.1.3.0,sha256=Bj-_E8XyWfgC65o6pTuT9qLNcuA97EYDyCUUOfDR2q0,38041
|
|
14
|
+
wujihandpy-1.2.0b0.dev0.dist-info/METADATA,sha256=wD7UAAYV_YwyIceNAqqXe2cFWogLHzQLHjHJEl53FV8,8036
|
|
15
|
+
wujihandpy-1.2.0b0.dev0.dist-info/WHEEL,sha256=0nVYFYtHP36mg9PDPBgwu1BNnaNOMi9iSL0fSWdrzR4,118
|
|
16
|
+
wujihandpy-1.2.0b0.dev0.dist-info/RECORD,,
|
|
17
|
+
wujihandpy-1.2.0b0.dev0.dist-info/licenses/LICENSE,sha256=OLJ-MVXgwcjW8-kJ56ADWaMCCF39muljtSqRy74lr6M,1072
|
wujihandpy/_core.pyi
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
import numpy
|
|
3
|
-
import numpy.typing
|
|
4
|
-
import typing
|
|
5
|
-
__all__: list[str] = ['Finger', 'Hand', 'Joint']
|
|
6
|
-
class Finger:
|
|
7
|
-
def get_joint_position(self) -> numpy.typing.NDArray[numpy.int32]:
|
|
8
|
-
...
|
|
9
|
-
def joint(self, index: typing.SupportsInt) -> Joint:
|
|
10
|
-
...
|
|
11
|
-
def read_joint_position(self) -> numpy.typing.NDArray[numpy.int32]:
|
|
12
|
-
...
|
|
13
|
-
async def read_joint_position_async(self) -> numpy.typing.NDArray[numpy.int32]:
|
|
14
|
-
...
|
|
15
|
-
def read_joint_position_unchecked(self) -> None:
|
|
16
|
-
...
|
|
17
|
-
@typing.overload
|
|
18
|
-
def write_joint_control_mode(self, value: numpy.uint16) -> None:
|
|
19
|
-
...
|
|
20
|
-
@typing.overload
|
|
21
|
-
def write_joint_control_mode(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
22
|
-
...
|
|
23
|
-
@typing.overload
|
|
24
|
-
async def write_joint_control_mode_async(self, value: numpy.uint16) -> None:
|
|
25
|
-
...
|
|
26
|
-
@typing.overload
|
|
27
|
-
async def write_joint_control_mode_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
28
|
-
...
|
|
29
|
-
@typing.overload
|
|
30
|
-
def write_joint_control_mode_unchecked(self, value: numpy.uint16) -> None:
|
|
31
|
-
...
|
|
32
|
-
@typing.overload
|
|
33
|
-
def write_joint_control_mode_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
34
|
-
...
|
|
35
|
-
@typing.overload
|
|
36
|
-
def write_joint_control_position(self, value: numpy.int32) -> None:
|
|
37
|
-
...
|
|
38
|
-
@typing.overload
|
|
39
|
-
def write_joint_control_position(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
40
|
-
...
|
|
41
|
-
@typing.overload
|
|
42
|
-
async def write_joint_control_position_async(self, value: numpy.int32) -> None:
|
|
43
|
-
...
|
|
44
|
-
@typing.overload
|
|
45
|
-
async def write_joint_control_position_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
46
|
-
...
|
|
47
|
-
@typing.overload
|
|
48
|
-
def write_joint_control_position_unchecked(self, value: numpy.int32) -> None:
|
|
49
|
-
...
|
|
50
|
-
@typing.overload
|
|
51
|
-
def write_joint_control_position_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
52
|
-
...
|
|
53
|
-
@typing.overload
|
|
54
|
-
def write_joint_control_word(self, value: numpy.uint16) -> None:
|
|
55
|
-
...
|
|
56
|
-
@typing.overload
|
|
57
|
-
def write_joint_control_word(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
58
|
-
...
|
|
59
|
-
@typing.overload
|
|
60
|
-
async def write_joint_control_word_async(self, value: numpy.uint16) -> None:
|
|
61
|
-
...
|
|
62
|
-
@typing.overload
|
|
63
|
-
async def write_joint_control_word_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
64
|
-
...
|
|
65
|
-
@typing.overload
|
|
66
|
-
def write_joint_control_word_unchecked(self, value: numpy.uint16) -> None:
|
|
67
|
-
...
|
|
68
|
-
@typing.overload
|
|
69
|
-
def write_joint_control_word_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
70
|
-
...
|
|
71
|
-
@typing.overload
|
|
72
|
-
def write_joint_sin_level(self, value: numpy.uint16) -> None:
|
|
73
|
-
...
|
|
74
|
-
@typing.overload
|
|
75
|
-
def write_joint_sin_level(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
76
|
-
...
|
|
77
|
-
@typing.overload
|
|
78
|
-
async def write_joint_sin_level_async(self, value: numpy.uint16) -> None:
|
|
79
|
-
...
|
|
80
|
-
@typing.overload
|
|
81
|
-
async def write_joint_sin_level_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
82
|
-
...
|
|
83
|
-
@typing.overload
|
|
84
|
-
def write_joint_sin_level_unchecked(self, value: numpy.uint16) -> None:
|
|
85
|
-
...
|
|
86
|
-
@typing.overload
|
|
87
|
-
def write_joint_sin_level_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
88
|
-
...
|
|
89
|
-
class Hand:
|
|
90
|
-
def __init__(self, usb_vid: typing.SupportsInt = 1155, usb_pid: typing.SupportsInt = 22336) -> None:
|
|
91
|
-
...
|
|
92
|
-
def finger(self, index: typing.SupportsInt) -> Finger:
|
|
93
|
-
...
|
|
94
|
-
def get_firmware_date(self) -> numpy.uint32:
|
|
95
|
-
...
|
|
96
|
-
def get_firmware_version(self) -> numpy.uint32:
|
|
97
|
-
...
|
|
98
|
-
def get_input_voltage(self) -> numpy.float32:
|
|
99
|
-
...
|
|
100
|
-
def get_joint_position(self) -> numpy.typing.NDArray[numpy.int32]:
|
|
101
|
-
...
|
|
102
|
-
def get_mcu_temperature(self) -> numpy.float32:
|
|
103
|
-
...
|
|
104
|
-
def get_system_time(self) -> numpy.uint32:
|
|
105
|
-
...
|
|
106
|
-
def pdo_write_unchecked(self, arg0: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
107
|
-
...
|
|
108
|
-
def read_firmware_date(self) -> numpy.uint32:
|
|
109
|
-
...
|
|
110
|
-
async def read_firmware_date_async(self) -> numpy.uint32:
|
|
111
|
-
...
|
|
112
|
-
def read_firmware_date_unchecked(self) -> None:
|
|
113
|
-
...
|
|
114
|
-
def read_firmware_version(self) -> numpy.uint32:
|
|
115
|
-
...
|
|
116
|
-
async def read_firmware_version_async(self) -> numpy.uint32:
|
|
117
|
-
...
|
|
118
|
-
def read_firmware_version_unchecked(self) -> None:
|
|
119
|
-
...
|
|
120
|
-
def read_input_voltage(self) -> numpy.float32:
|
|
121
|
-
...
|
|
122
|
-
async def read_input_voltage_async(self) -> numpy.float32:
|
|
123
|
-
...
|
|
124
|
-
def read_input_voltage_unchecked(self) -> None:
|
|
125
|
-
...
|
|
126
|
-
def read_joint_position(self) -> numpy.typing.NDArray[numpy.int32]:
|
|
127
|
-
...
|
|
128
|
-
async def read_joint_position_async(self) -> numpy.typing.NDArray[numpy.int32]:
|
|
129
|
-
...
|
|
130
|
-
def read_joint_position_unchecked(self) -> None:
|
|
131
|
-
...
|
|
132
|
-
def read_mcu_temperature(self) -> numpy.float32:
|
|
133
|
-
...
|
|
134
|
-
async def read_mcu_temperature_async(self) -> numpy.float32:
|
|
135
|
-
...
|
|
136
|
-
def read_mcu_temperature_unchecked(self) -> None:
|
|
137
|
-
...
|
|
138
|
-
def read_system_time(self) -> numpy.uint32:
|
|
139
|
-
...
|
|
140
|
-
async def read_system_time_async(self) -> numpy.uint32:
|
|
141
|
-
...
|
|
142
|
-
def read_system_time_unchecked(self) -> None:
|
|
143
|
-
...
|
|
144
|
-
def write_global_tpdo_id(self, value: numpy.uint16) -> None:
|
|
145
|
-
...
|
|
146
|
-
async def write_global_tpdo_id_async(self, value: numpy.uint16) -> None:
|
|
147
|
-
...
|
|
148
|
-
def write_global_tpdo_id_unchecked(self, value: numpy.uint16) -> None:
|
|
149
|
-
...
|
|
150
|
-
@typing.overload
|
|
151
|
-
def write_joint_control_mode(self, value: numpy.uint16) -> None:
|
|
152
|
-
...
|
|
153
|
-
@typing.overload
|
|
154
|
-
def write_joint_control_mode(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
155
|
-
...
|
|
156
|
-
@typing.overload
|
|
157
|
-
async def write_joint_control_mode_async(self, value: numpy.uint16) -> None:
|
|
158
|
-
...
|
|
159
|
-
@typing.overload
|
|
160
|
-
async def write_joint_control_mode_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
161
|
-
...
|
|
162
|
-
@typing.overload
|
|
163
|
-
def write_joint_control_mode_unchecked(self, value: numpy.uint16) -> None:
|
|
164
|
-
...
|
|
165
|
-
@typing.overload
|
|
166
|
-
def write_joint_control_mode_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
167
|
-
...
|
|
168
|
-
@typing.overload
|
|
169
|
-
def write_joint_control_position(self, value: numpy.int32) -> None:
|
|
170
|
-
...
|
|
171
|
-
@typing.overload
|
|
172
|
-
def write_joint_control_position(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
173
|
-
...
|
|
174
|
-
@typing.overload
|
|
175
|
-
async def write_joint_control_position_async(self, value: numpy.int32) -> None:
|
|
176
|
-
...
|
|
177
|
-
@typing.overload
|
|
178
|
-
async def write_joint_control_position_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
179
|
-
...
|
|
180
|
-
@typing.overload
|
|
181
|
-
def write_joint_control_position_unchecked(self, value: numpy.int32) -> None:
|
|
182
|
-
...
|
|
183
|
-
@typing.overload
|
|
184
|
-
def write_joint_control_position_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.int32]) -> None:
|
|
185
|
-
...
|
|
186
|
-
@typing.overload
|
|
187
|
-
def write_joint_control_word(self, value: numpy.uint16) -> None:
|
|
188
|
-
...
|
|
189
|
-
@typing.overload
|
|
190
|
-
def write_joint_control_word(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
191
|
-
...
|
|
192
|
-
@typing.overload
|
|
193
|
-
async def write_joint_control_word_async(self, value: numpy.uint16) -> None:
|
|
194
|
-
...
|
|
195
|
-
@typing.overload
|
|
196
|
-
async def write_joint_control_word_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
197
|
-
...
|
|
198
|
-
@typing.overload
|
|
199
|
-
def write_joint_control_word_unchecked(self, value: numpy.uint16) -> None:
|
|
200
|
-
...
|
|
201
|
-
@typing.overload
|
|
202
|
-
def write_joint_control_word_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
203
|
-
...
|
|
204
|
-
@typing.overload
|
|
205
|
-
def write_joint_sin_level(self, value: numpy.uint16) -> None:
|
|
206
|
-
...
|
|
207
|
-
@typing.overload
|
|
208
|
-
def write_joint_sin_level(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
209
|
-
...
|
|
210
|
-
@typing.overload
|
|
211
|
-
async def write_joint_sin_level_async(self, value: numpy.uint16) -> None:
|
|
212
|
-
...
|
|
213
|
-
@typing.overload
|
|
214
|
-
async def write_joint_sin_level_async(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
215
|
-
...
|
|
216
|
-
@typing.overload
|
|
217
|
-
def write_joint_sin_level_unchecked(self, value: numpy.uint16) -> None:
|
|
218
|
-
...
|
|
219
|
-
@typing.overload
|
|
220
|
-
def write_joint_sin_level_unchecked(self, value_array: typing.Annotated[numpy.typing.ArrayLike, numpy.uint16]) -> None:
|
|
221
|
-
...
|
|
222
|
-
def write_pdo_enabled(self, value: numpy.uint8) -> None:
|
|
223
|
-
...
|
|
224
|
-
async def write_pdo_enabled_async(self, value: numpy.uint8) -> None:
|
|
225
|
-
...
|
|
226
|
-
def write_pdo_enabled_unchecked(self, value: numpy.uint8) -> None:
|
|
227
|
-
...
|
|
228
|
-
def write_pdo_interval(self, value: numpy.uint32) -> None:
|
|
229
|
-
...
|
|
230
|
-
async def write_pdo_interval_async(self, value: numpy.uint32) -> None:
|
|
231
|
-
...
|
|
232
|
-
def write_pdo_interval_unchecked(self, value: numpy.uint32) -> None:
|
|
233
|
-
...
|
|
234
|
-
class Joint:
|
|
235
|
-
def get_joint_position(self) -> numpy.int32:
|
|
236
|
-
...
|
|
237
|
-
def read_joint_position(self) -> numpy.int32:
|
|
238
|
-
...
|
|
239
|
-
async def read_joint_position_async(self) -> numpy.int32:
|
|
240
|
-
...
|
|
241
|
-
def read_joint_position_unchecked(self) -> None:
|
|
242
|
-
...
|
|
243
|
-
def write_joint_control_mode(self, value: numpy.uint16) -> None:
|
|
244
|
-
...
|
|
245
|
-
async def write_joint_control_mode_async(self, value: numpy.uint16) -> None:
|
|
246
|
-
...
|
|
247
|
-
def write_joint_control_mode_unchecked(self, value: numpy.uint16) -> None:
|
|
248
|
-
...
|
|
249
|
-
def write_joint_control_position(self, value: numpy.int32) -> None:
|
|
250
|
-
...
|
|
251
|
-
async def write_joint_control_position_async(self, value: numpy.int32) -> None:
|
|
252
|
-
...
|
|
253
|
-
def write_joint_control_position_unchecked(self, value: numpy.int32) -> None:
|
|
254
|
-
...
|
|
255
|
-
def write_joint_control_word(self, value: numpy.uint16) -> None:
|
|
256
|
-
...
|
|
257
|
-
async def write_joint_control_word_async(self, value: numpy.uint16) -> None:
|
|
258
|
-
...
|
|
259
|
-
def write_joint_control_word_unchecked(self, value: numpy.uint16) -> None:
|
|
260
|
-
...
|
|
261
|
-
def write_joint_sin_level(self, value: numpy.uint16) -> None:
|
|
262
|
-
...
|
|
263
|
-
async def write_joint_sin_level_async(self, value: numpy.uint16) -> None:
|
|
264
|
-
...
|
|
265
|
-
def write_joint_sin_level_unchecked(self, value: numpy.uint16) -> None:
|
|
266
|
-
...
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
wujihandpy/__init__.py,sha256=DO3xWg1FjXJAaT-Mp6uIXExK9_t-VVGX_o6J7FqRKic,149
|
|
2
|
-
wujihandpy/_core.cpython-311-x86_64-linux-gnu.so,sha256=iZXr8Wde8v8-8fB0SUk9bIk44uX0HUkQfK33OayHaKA,369841
|
|
3
|
-
wujihandpy/_core.pyi,sha256=HRg3hYg3Jqq66OnPwYnm7bmeCTa8xdu48Qc2aelgSOs,10985
|
|
4
|
-
wujihandpy/_version.py,sha256=L7FNNupNt3DNk5BEVAhGB1zDwhUSqafOGAfWjsowcNw,712
|
|
5
|
-
wujihandpy.libs/libblkid-a9167753.so.1.1.0,sha256=XVspUZDmtSMamCgSYDrDYNC-g6agPQCkqrDE0yb8sdY,356897
|
|
6
|
-
wujihandpy.libs/libmount-ec61bd71.so.1.1.0,sha256=8EmOB9QqeXTyAh0aE20fn-QVuG3vsF66wBcgZ6aX2V4,393873
|
|
7
|
-
wujihandpy.libs/libpcre2-8-516f4c9d.so.0.7.1,sha256=IcbljW_oKuAVlrAwKz8qtRZxfi1sQH_iKxPSoNpzsmU,547745
|
|
8
|
-
wujihandpy.libs/libselinux-d0805dcb.so.1,sha256=iYGaLO-LIy5-WEihMiXHpeJUXyq56DDqGU49JbpfTu4,195097
|
|
9
|
-
wujihandpy.libs/libudev-9765ffbd.so.1.6.11,sha256=32i9UQ4dXVdXAdwJfzJd7T9GMKvkkr42mIWW9mOGrI4,677489
|
|
10
|
-
wujihandpy.libs/libusb-1-1b307d35.0.so.0.2.0,sha256=5crhlK2KrW6d1ZRAWqh3dYy93CPE4KekXTbLeGGFIjw,126777
|
|
11
|
-
wujihandpy.libs/libuuid-95b83d40.so.1.3.0,sha256=Bj-_E8XyWfgC65o6pTuT9qLNcuA97EYDyCUUOfDR2q0,38041
|
|
12
|
-
wujihandpy.libs/libwujihandcpp-443a855b.so,sha256=kKiTjxycyISQ-CcfzGkZ2hcVYMqApjU7jmd7PocynOU,68809
|
|
13
|
-
wujihandpy-0.2.1.dist-info/METADATA,sha256=n4G89h62p-vq-HiSIF7hNpuSDIiaa6axAUwmtdIYWj0,7084
|
|
14
|
-
wujihandpy-0.2.1.dist-info/WHEEL,sha256=0nVYFYtHP36mg9PDPBgwu1BNnaNOMi9iSL0fSWdrzR4,118
|
|
15
|
-
wujihandpy-0.2.1.dist-info/RECORD,,
|
|
16
|
-
wujihandpy-0.2.1.dist-info/licenses/LICENSE,sha256=OLJ-MVXgwcjW8-kJ56ADWaMCCF39muljtSqRy74lr6M,1072
|
|
Binary file
|
|
File without changes
|
|
File without changes
|