Skip to content

Commit 342fd7e

Browse files
committed
更新文档
1 parent f1aea00 commit 342fd7e

File tree

9 files changed

+217
-71
lines changed

9 files changed

+217
-71
lines changed

LinkerHand/config/setting.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
VERSION: 1.3.6 # 重构核心源码,支持动捕手套速度
22
LINKER_HAND: # 手部配置信息
33
LEFT_HAND:
4-
EXISTS: True # 是否存在左手
4+
EXISTS: False # 是否存在左手
55
TOUCH: True # 是否有压力传感器
66
JOINT: L10 # 左手关节数 L7/L10/L20/L25/L25_v2
77
NAME: # 无论l10还是l20 joint name都是20个
@@ -27,9 +27,9 @@ LINKER_HAND: # 手部配置信息
2727
- joint60
2828

2929
RIGHT_HAND:
30-
EXISTS: False # 是否存在右手
30+
EXISTS: True # 是否存在右手
3131
TOUCH: False # 是否有压力传感器
32-
JOINT: L25 # 右手关节数量
32+
JOINT: L10 # 右手关节数量
3333
NAME: # 无论l10还是l20 joint name都是20个
3434
- joint71
3535
- joint72
-27 Bytes
Binary file not shown.

LinkerHand/core/linker_hand_l10_can.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def send_frame(self, frame_property, data_list):
6161
self.bus.send(msg)
6262
except can.CanError as e:
6363
print(f"Failed to send message: {e}")
64-
time.sleep(0.002)
64+
time.sleep(0.005)
6565

6666
def set_joint_positions(self, joint_angles):
6767
"""将10个关节的位置设置(joint_angles: 10个数值的列表)。"""

LinkerHand/core/linker_hand_l20_can.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ def get_current_status(self):
240240
self.send_command(0x03,[])
241241
self.send_command(0x04,[])
242242
return self.x01 + self.x02 + self.x03 + self.x04
243-
def get_force(self):
244-
return [self.normal_force,self.tangential_force , self.tangential_force_dir , self.approach_inc]
243+
#def get_force(self):
244+
#return [self.normal_force,self.tangential_force , self.tangential_force_dir , self.approach_inc]
245245
def get_speed(self):
246246
'''获取当前电机速度'''
247247
self.send_command(0x05, [0])

LinkerHand/core/linker_hand_l7_can.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def send_frame(self, frame_property, data_list):
4343
self.bus.send(msg)
4444
except can.CanError as e:
4545
print(f"Failed to send message: {e}")
46-
time.sleep(0.001)
46+
time.sleep(0.005)
4747

4848
def set_joint_positions(self, joint_angles):
4949
"""将10个关节的位置设置(joint_angles: 10个数值的列表)。"""

LinkerHand/linker_hand_api.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
Author: HJX
33
Date: 2025-04-01 14:09:21
44
LastEditors: Please set LastEditors
5-
LastEditTime: 2025-04-11 09:19:15
6-
FilePath: /Linker_Hand_SDK_ROS/src/linker_hand_sdk_ros/scripts/LinkerHand/linker_hand_api.py
5+
LastEditTime: 2025-04-15 14:11:58
6+
FilePath: /LinkerHand_Python_SDK/LinkerHand/linker_hand_api.py
77
Description:
88
symbol_custom_string_obkorol_copyright:
99
'''
@@ -85,14 +85,6 @@ def _get_tangential_force_dir(self):
8585
def _get_approach_inc(self):
8686
'''# 获取接近度'''
8787
self.hand.get_approach_inc()
88-
89-
def get_force(self):
90-
'''获取所有压感数据'''
91-
self._get_approach_inc()
92-
self._get_normal_force()
93-
self._get_tangential_force()
94-
self._get_tangential_force_dir()
95-
return self.hand.get_force()
9688

9789
def set_speed(self,speed=[100]*5):
9890
'''# 设置速度'''
@@ -101,7 +93,7 @@ def set_speed(self,speed=[100]*5):
10193
def set_joint_speed(self,speed=[100]*5):
10294
'''设置速度by topic'''
10395
self.hand.set_speed(speed=speed)
104-
def set_torque(self, torque=[]):
96+
def set_torque(self, torque=[180] * 5):
10597
'''设置最大扭矩'''
10698
ColorMsg(msg=f"设置最大扭矩为{torque}", color="green")
10799
return self.hand.set_torque(torque=torque)
@@ -116,15 +108,19 @@ def set_current(self, current=[]):
116108
def get_version(self):
117109
'''获取版本'''
118110
return self.hand.get_version()
111+
119112
def get_current(self):
120113
'''获取当前电流'''
121114
return self.hand.get_current()
115+
122116
def get_state(self):
123117
'''获取当前关节状态'''
124118
return self.hand.get_current_status()
119+
125120
def get_speed(self):
126121
'''获取速度'''
127122
return self.hand.get_speed()
123+
128124
def get_joint_speed(self):
129125
speed = self.hand.get_speed()
130126
if self.hand_joint == "L7":
@@ -136,6 +132,15 @@ def get_joint_speed(self):
136132
elif self.hand_joint == "L25":
137133
return speed
138134

135+
def get_force(self):
136+
'''获取法向压力、切向压力、切向压力方向、接近感应数据'''
137+
self._get_normal_force()
138+
self._get_tangential_force()
139+
self._get_tangential_force_dir()
140+
self._get_approach_inc()
141+
return self.hand.get_force()
142+
143+
139144
def get_torque(self):
140145
'''获取当前最大扭矩'''
141146
return self.hand.get_torque()
@@ -177,4 +182,5 @@ def set_disable(self):
177182

178183

179184
if __name__ == "__main__":
180-
hand = LinkerHandApi()
185+
hand = LinkerHandApi(hand_type="right", hand_joint="L10")
186+

README.md

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,8 @@ LinkerHand Python SDK
6060

6161

6262

63-
- #### Import
64-
```python
65-
from LinkerHand.linker_hand_api import LinkerHandApi
66-
# Initialize API for L10 left hand
67-
hand = LinkerHandApi(hand_joint="L10",hand_type="left")
68-
# Initialize API for L10 right hand
69-
hand = LinkerHandApi(hand_joint="L10",hand_type="right")
70-
```
71-
72-
73-
- #### Move
74-
```python
75-
hand.finger_move(...)
76-
```
77-
78-
- #### Set
79-
```python
80-
hand.set_speed(...)
81-
```
82-
83-
- #### Get
84-
```python
85-
hand.get_force()
86-
hand.get_speed()
87-
hand.get_state()
88-
```
63+
## API Document
64+
[Linker Hand API for Python Document](linker_hand/doc/API-Reference.md)
8965

9066

9167

README_CN.md

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
# LinkerHand-Python-SDK
23

34
## Overview
@@ -66,32 +67,8 @@ LinkerHand Python SDK
6667

6768

6869

69-
- #### Import
70-
```python
71-
from LinkerHand.linker_hand_api import LinkerHandApi
72-
# 初始化API L10 左手
73-
hand = LinkerHandApi(hand_joint="L10",hand_type="left")
74-
# 初始化API L10 右手
75-
hand = LinkerHandApi(hand_joint="L10",hand_type="right")
76-
```
77-
78-
79-
- #### Move
80-
```python
81-
hand.finger_move(...)
82-
```
83-
84-
- #### Set
85-
```python
86-
hand.set_speed(...)
87-
```
88-
89-
- #### Get
90-
```python
91-
hand.get_force()
92-
hand.get_speed()
93-
hand.get_state()
94-
```
70+
## API 说明文档
71+
[Linker Hand API for Python Document](linker_hand/doc/API-Reference.md)
9572

9673

9774

doc/API-Reference.md

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
2+
---
3+
4+
# Linker Hand Python API Documentation
5+
6+
## API Overview
7+
8+
This document provides a detailed overview of the Python API for the Linker Hand, including functions for controlling the hand's movements, retrieving sensor data, and setting operational parameters.
9+
10+
## Public API
11+
12+
### 设置速度
13+
```python
14+
def set_speed(self,speed=[100]*5)
15+
```
16+
**Description**:
17+
设置手部的运动速度。
18+
**Parameters**:
19+
- `speed`: 一个包含速度数据的 list,长度为5个元素对应每个关节的速度值,如何是L7则为7个元素,对应每个电机速度。
20+
21+
---
22+
23+
### 设置五根手指的转矩限制 - 力度
24+
```python
25+
def set_torque(self, torque=[180] * 5)
26+
```
27+
**Description**:
28+
设置手指的转矩限制或力度,用于控制抓取力度。
29+
**Parameters**:
30+
- `torque`: 一个包含力度数据的 list,长度为5个元素对应每个手指的力度值,如何是L7则为7个元素,对应每个电机力度值。
31+
32+
---
33+
34+
### 设置关节位置
35+
```python
36+
def finger_move(self,pose=[])
37+
```
38+
**Description**:
39+
设置关节的目标位置,用于控制手指的运动。
40+
**Parameters**:
41+
- `pose`: 一个包含目标位置数据的 float类型的list,L7长度为7个元素,L10长度为10个元素,L20长度为20个元素,L25长度为25个元素。
42+
43+
---
44+
45+
### 设置电机电流值
46+
```python
47+
def set_current(self, current=[])
48+
```
49+
**Description**:
50+
设置电机的电流值。
51+
**Parameters**:
52+
- `current`: 一个包含目标电流数据的 int类型list,长度为5个元素,当前只支持L20版本。
53+
54+
---
55+
56+
### 获取速度
57+
```python
58+
def get_speed(self)
59+
return [180, 200, 200, 200, 200]
60+
```
61+
**Description**:
62+
获取当前设置的速度值。提示:需设置关节位置后才能获取到速度值。
63+
64+
**Returns**:
65+
- 返回一个 list,包含当前的手指速度设置值。
66+
67+
---
68+
69+
### 获取当前关节状态
70+
```python
71+
def get_state(self)
72+
return [81, 79, 79, 79, 79, 79, 83, 76, 80, 78]
73+
```
74+
**Description**:
75+
获取当前关节的状态float类型的list信息。提示:需要设置关节位置后才能获取到状态信息,L7长度为7个元素,L10长度为10个元素,L20长度为20个元素,L25长度为25个元素。
76+
77+
**Returns**:
78+
- 返回一个 float类型的list,包含当前关节的状态数据。
79+
80+
---
81+
82+
### 获取法向压力、切向压力、切向方向、接近感应
83+
```python
84+
def get_force(self)
85+
return [[255.0, 0.0, 0.0, 77.0, 192.0], [82.0, 0.0, 0.0, 230.0, 223.0], [107.0, 255.0, 255.0, 31.0, 110.0], [255.0, 0.0, 20.0, 255.0, 255.0]]
86+
```
87+
**Description**:
88+
获取手部传感器的综合数据,包括法向压力、切向压力、切向方向和接近感应。
89+
**Returns**:
90+
- 返回一个二维list,其中每个子list包含不同类别的list压力数据[[法向压力],[切向压力],[切向压力方向],[接近感应]]。类别每一个元素对应拇指、食指、中指、无名指、小拇指
91+
92+
---
93+
94+
### 获取版本号
95+
```python
96+
def get_version(self)
97+
return [10, 6, 22, 82, 20, 17, 0]
98+
```
99+
**Description**:
100+
获取当前软件或硬件的版本号。
101+
**Returns**:
102+
- 返回一个字符串,表示当前的版本号。list元素依次表示:自由度\版本号\序号\左手76右手82\内部序列号
103+
104+
---
105+
--------------------------------------------------------------
106+
### 获取扭矩
107+
```python
108+
def get_torque(self)
109+
return [200, 200, 200, 200, 200]
110+
```
111+
**Description**:
112+
获取当前手指扭矩list信息。表示每根手指当前电机扭矩,支持L20、L25。
113+
114+
**Returns**:
115+
- 返回一个 float类型的list。
116+
117+
---
118+
119+
### 获取电机温度
120+
```python
121+
def get_temperature(self)
122+
return [41, 71, 45, 40, 50, 47, 58, 50, 63, 70]
123+
```
124+
**Description**:
125+
获取当前关节的电机温度。
126+
127+
**Returns**:
128+
- 返回一个 list数据,包含当前关节的电机温度。
129+
130+
---
131+
132+
### 获取电机故障码
133+
```python
134+
def get_fault(self)
135+
return [0, 4, 0, 0, 0, 0, 0, 0, 0, 0]
136+
```
137+
**Description**:
138+
获取当前关节电机故障,0表示正常 数字1电流过载 数字2温度过高 数字3编码错误 数字4过压/欠压。
139+
140+
**Returns**:
141+
- 返回一个 float类型的list,包含当前关节电机故障。
142+
143+
---
144+
145+
### 清除电机故障码
146+
```python
147+
def clear_faults(self)
148+
```
149+
**Description**:
150+
尝试清除电机故障,无返回值。只支持L20
151+
**Returns**:
152+
153+
---
154+
155+
## Example Usage
156+
157+
以下是一个完整的示例代码,展示如何使用上述 API:
158+
159+
```python
160+
161+
from LinkerHand.linker_hand_api import LinkerHandApi
162+
def main():
163+
# 初始化API hand_type:left or right hand_joint:L7 or L10 or L20 or L25
164+
linker_hand = LinkerHandApi(hand_type="left", hand_joint="L10")
165+
# 设置手指速度
166+
linker_hand.set_speed(speed=[120,200,200,200,200])
167+
# 设置手扭矩
168+
linker_hand.set_torque(torque=[200,200,200,200,200])
169+
# 获取手当前状态
170+
hand_state = linker_hand.get_state()
171+
# 打印状态值
172+
print(hand_state)
173+
174+
```
175+
176+
---
177+
178+
## Notes
179+
- 在使用 API 之前,请确保手部设备已正确连接并初始化。
180+
- 参数值(如速度、力度等)的具体范围和含义请参考设备的技术手册。
181+
182+
---
183+
184+
## Contact
185+
- 如果有任何问题或需要进一步支持,请联系 [[email protected]](mailto:[email protected])
186+
187+
---

0 commit comments

Comments
 (0)