Appearance
gesture_switch/left
Description:
tex
左手手势切换服务ROS Type: Service
Data Type: hand/Gesture
Version:
- 1.0.0: added
Cli: rosservice call zj_humanoid/hand/gesture_switch/left "gesture_name: ['RESET']"
Example:
python
def test_gesture_switch_left(gesture_name, *, name=f"{PREFIX}/gesture_switch/left"):
"""
左手手势切换服务
Parameters
----------
gesture_name : list[str]
手势名称列表
Notes
-----
控制左手执行指定手势。支持的手势包括:
RESET、ROCK、ONE、TWO、THREE、FOUR等
手势名称大小写不敏感
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call zj_humanoid/hand/gesture_switch/left "gesture_name: ['RESET']"
"""
rospy.wait_for_service(name)
try:
gesture_service = rospy.ServiceProxy(name, Gesture)
req = GestureRequest()
req.gesture_name = gesture_name
resp = gesture_service(req)
print(f"Service call to {name}")
print(f"Request: gesture_name={gesture_name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsegesture_switch/right
Description:
tex
调用右手手势切换服务ROS Type: Service
Data Type: hand/Gesture
Version:
- 1.0.0: added
Cli: rosservice call zj_humanoid/hand/gesture_switch/right "gesture_name: ['RESET']"
Example:
python
def test_gesture_switch_right(gesture_name, *, name=f"{PREFIX}/gesture_switch/right"):
"""
调用右手手势切换服务
Parameters
----------
gesture_name : list[str]
手势名称列表
Notes
-----
控制右手执行指定手势。支持的手势包括:
RESET、ROCK、ONE、TWO、THREE、FOUR等
手势名称大小写不敏感
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call zj_humanoid/hand/gesture_switch/right "gesture_name: ['RESET']"
"""
rospy.wait_for_service(name)
try:
gesture_service = rospy.ServiceProxy(name, Gesture)
req = GestureRequest()
req.gesture_name = gesture_name
resp = gesture_service(req)
print(f"Service call to {name}")
print(f"Request: gesture_name={gesture_name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsegesture_switch/dual
Description:
tex
调用双手手势切换服务ROS Type: Service
Data Type: hand/Gesture
Version:
- 1.0.0: added
Cli: rosservice call zj_humanoid/hand/gesture_switch/dual "gesture_name: ['RESET', 'ROCK']"
Example:
python
def test_gesture_switch_dual(gesture_name, *, name=f"{PREFIX}/gesture_switch/dual"):
"""
调用双手手势切换服务
Parameters
----------
gesture_name : list[str]
手势名称列表,索引0为左手,索引1为右手
Notes
-----
同时控制左右手执行指定手势。
gesture_name数组中索引0为左手,索引1为右手
支持的手势包括:RESET、ROCK、ONE、TWO、THREE、FOUR等
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call zj_humanoid/hand/gesture_switch/dual "gesture_name: ['RESET', 'ROCK']"
"""
rospy.wait_for_service(name)
try:
gesture_service = rospy.ServiceProxy(name, Gesture)
req = GestureRequest()
req.gesture_name = gesture_name
resp = gesture_service(req)
print(f"Service call to {name}")
print(f"Request: gesture_name={gesture_name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsejoint_switch/left
Description:
tex
调用左手关节控制服务ROS Type: Service
Data Type: hand/HandJoint
Version:
- 1.0.0: added
Cli: rosservice call zj_humanoid/hand/joint_switch/left "q: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]"
Example:
python
def test_joint_switch_left(q, *, name=f"{PREFIX}/joint_switch/left"):
"""
调用左手关节控制服务
Parameters
----------
q : list[float]
关节角度数组,顺序为[拇指弯曲,拇指摆动,食指弯曲,中指弯曲,无名指弯曲,小指弯曲],单位:弧度
Notes
-----
控制左手各关节运动到指定角度。
关节角度会被限制在安全范围内,超出限位的数据会被自动限制并提示
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call zj_humanoid/hand/joint_switch/left "q: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]"
"""
rospy.wait_for_service(name)
try:
joint_service = rospy.ServiceProxy(name, HandJoint)
req = HandJointRequest()
req.q = q
resp = joint_service(req)
print(f"Service call to {name}")
print(f"Request: q={q}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsejoint_switch/right
Description:
tex
调用右手关节控制服务ROS Type: Service
Data Type: hand/HandJoint
Version:
- 1.0.0: added
Cli: rosservice call zj_humanoid/hand/joint_switch/right "q: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]"
Example:
python
def test_joint_switch_right(q, *, name=f"{PREFIX}/joint_switch/right"):
"""
调用右手关节控制服务
Parameters
----------
q : list[float]
关节角度数组,顺序为[拇指弯曲,拇指摆动,食指弯曲,中指弯曲,无名指弯曲,小指弯曲],单位:弧度
Notes
-----
控制右手各关节运动到指定角度。
关节角度会被限制在安全范围内,超出限位的数据会被自动限制并提示
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call zj_humanoid/hand/joint_switch/right "q: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]"
"""
rospy.wait_for_service(name)
try:
joint_service = rospy.ServiceProxy(name, HandJoint)
req = HandJointRequest()
req.q = q
resp = joint_service(req)
print(f"Service call to {name}")
print(f"Request: q={q}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsejoint_switch/dual
Description:
tex
调用双手关节控制服务ROS Type: Service
Data Type: hand/HandJoint
Version:
- 1.0.0: added
Cli: rosservice call zj_humanoid/hand/joint_switch/dual "q: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]"
Example:
python
def test_joint_switch_dual(left_q, right_q, *, name=f"{PREFIX}/joint_switch/dual"):
"""
调用双手关节控制服务
Parameters
----------
left_q : list[float]
左手关节角度数组,顺序为[拇指弯曲,拇指摆动,食指弯曲,中指弯曲,无名指弯曲,小指弯曲]
right_q : list[float]
右手关节角度数组,顺序为[拇指弯曲,拇指摆动,食指弯曲,中指弯曲,无名指弯曲,小指弯曲]
Notes
-----
同时控制双手各关节运动到指定角度。
双手关节数组会被合并为12个元素的数组发送给服务
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call zj_humanoid/hand/joint_switch/dual "q: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]"
"""
rospy.wait_for_service(name)
try:
joint_service = rospy.ServiceProxy(name, HandJoint)
req = HandJointRequest()
# 合并左右手关节角度为一个12元素数组
req.q = left_q + right_q
resp = joint_service(req)
print(f"Service call to {name}")
print(f"Request: left_q={left_q}, right_q={right_q}")
print(f"Combined q={req.q}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsejoint_states
Description:
tex
订阅手部关节状态数据ROS Type: Topic/Publish
Data Type: sensor_msgs/JointState
Version:
- 1.0.0: added
Cli: rostopic echo /zj_humanoid/hand/joint_states
Example:
python
def test_sub_joint_states(*, name=f"{PREFIX}/joint_states"):
"""
订阅手部关节状态数据
Notes
-----
订阅手部所有关节的位置状态,包括左右手各6个关节:
拇指弯曲、拇指摆动、食指弯曲、中指弯曲、无名指弯曲、小指弯曲
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rostopic echo /zj_humanoid/hand/joint_states
"""
def callback(msg):
print(f"hand joint states | {msg}")
rospy.Subscriber(name, JointState, callback)
print(f"Subscribing to {name}")
rospy.sleep(2)finger_pressures/left
Description:
tex
订阅左手指尖压力传感器数据ROS Type: Topic/Publish
Data Type: hand/PressureSensor
Version:
- 1.0.0: added
Cli: rostopic echo /zj_humanoid/hand/finger_pressures/left
Example:
python
def test_sub_finger_pressures_left(*, name=f"{PREFIX}/finger_pressures/left"):
"""
订阅左手指尖压力传感器数据
Notes
-----
接收左手指尖压力传感器数据,压力值顺序为:
[大拇指, 食指, 中指, 无名指, 小拇指] 单位为0.1N
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rostopic echo /zj_humanoid/hand/finger_pressures/left
"""
def callback(msg):
# print(msg)
print(f"hand finger pressures left | {msg}")
rospy.Subscriber(name, PressureSensor, callback)
print(f"Subscribing to {name}")
rospy.sleep(2)finger_pressures/right
Description:
tex
订阅右手指尖压力传感器数据ROS Type: Topic/Publish
Data Type: hand/PressureSensor
Version:
- 1.0.0: added
Cli: rostopic echo /zj_humanoid/hand/finger_pressures/right
Example:
python
def test_sub_finger_pressures_right(*, name=f"{PREFIX}/finger_pressures/right"):
"""
订阅右手指尖压力传感器数据
Notes
-----
接收右手指尖压力传感器数据,压力值顺序为:
[大拇指, 食指, 中指, 无名指, 小拇指] 单位为0.1N
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rostopic echo /zj_humanoid/hand/finger_pressures/right
"""
def callback(msg):
print(f"hand finger pressures right | {msg}")
rospy.Subscriber(name, PressureSensor, callback)
print(f"Subscribing to {name}")
rospy.sleep(2)wrist_force_sensor/left
Description:
tex
订阅左手腕力传感器数据ROS Type: Topic/Publish
Data Type: geometry_msgs/WrenchStamped
Version:
- 1.0.0: added
Cli: rostopic echo /zj_humanoid/hand/wrist_force_sensor/left
Example:
python
def test_sub_wrist_force_sensor_left(*, name=f"{PREFIX}/wrist_force_sensor/left"):
"""
订阅左手腕力传感器数据
Notes
-----
接收左手腕力传感器数据,包括力和力矩的三轴分量
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rostopic echo /zj_humanoid/hand/wrist_force_sensor/left
"""
def callback(msg):
print(f"hand wrist force sensor left | {msg}")
rospy.Subscriber(name, WrenchStamped, callback)
print(f"Subscribing to {name}")
rospy.sleep(2)wrist_force_sensor/right
Description:
tex
订阅右手腕力传感器数据ROS Type: Topic/Publish
Data Type: geometry_msgs/WrenchStamped
Version:
- 1.0.0: added
Cli: rostopic echo /zj_humanoid/hand/wrist_force_sensor/right
Example:
python
def test_sub_wrist_force_sensor_right(*, name=f"{PREFIX}/wrist_force_sensor/right"):
"""
订阅右手腕力传感器数据
Notes
-----
接收右手腕力传感器数据,包括力和力矩的三轴分量
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rostopic echo /zj_humanoid/hand/wrist_force_sensor/right
"""
def callback(msg):
print(f"hand wrist force sensor right | {msg}")
rospy.Subscriber(name, WrenchStamped, callback)
print(f"Subscribing to {name}")
rospy.sleep(2)wrist_force_sensor/left/zero
Description:
tex
调用左手腕力传感器零位校准服务ROS Type: Service
Data Type: std_srvs/Trigger
Version:
- 1.0.0: added
Cli: rosservice call /hand/wrist_force_sensor/left/zero "{}"
Example:
python
def test_zero_wrist_force_sensor_left(*, name=f"{PREFIX}/wrist_force_sensor/left/zero"):
"""
调用左手腕力传感器零位校准服务
Notes
-----
对左手腕力传感器进行零位校准,
清除当前传感器偏置,将当前力和力矩读数设为零点
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call /hand/wrist_force_sensor/left/zero "{}"
"""
rospy.wait_for_service(name)
try:
zero_service = rospy.ServiceProxy(name, Trigger)
req = TriggerRequest()
resp = zero_service(req)
print(f"Service call to {name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsewrist_force_sensor/right/zero
Description:
tex
调用右手腕力传感器零位校准服务ROS Type: Service
Data Type: std_srvs/Trigger
Version:
- 1.0.0: added
Cli: rosservice call /hand/wrist_force_sensor/right/zero "{}"
Example:
python
def test_zero_wrist_force_sensor_right(*, name=f"{PREFIX}/wrist_force_sensor/right/zero"):
"""
调用右手腕力传感器零位校准服务
Notes
-----
对右手腕力传感器进行零位校准,
清除当前传感器偏置,将当前力和力矩读数设为零点
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call /hand/wrist_force_sensor/right/zero "{}"
"""
rospy.wait_for_service(name)
try:
zero_service = rospy.ServiceProxy(name, Trigger)
req = TriggerRequest()
resp = zero_service(req)
print(f"Service call to {name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsefinger_pressures/left/zero
Description:
tex
调用左手指尖压力传感器零位校准服务ROS Type: Service
Data Type: std_srvs/Trigger
Version:
- 1.0.0: added
Cli: rosservice call /hand/finger_pressures/left/zero "{}"
Example:
python
def test_zero_finger_pressures_left(*, name=f"{PREFIX}/finger_pressures/left/zero"):
"""
调用左手指尖压力传感器零位校准服务
Notes
-----
对左手指尖压力传感器进行零位校准,
清除当前传感器偏置,将当前读数设为零点
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call /hand/finger_pressures/left/zero "{}"
"""
rospy.wait_for_service(name)
try:
zero_service = rospy.ServiceProxy(name, Trigger)
req = TriggerRequest()
resp = zero_service(req)
print(f"Service call to {name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return Falsefinger_pressures/right/zero
Description:
tex
调用右手指尖压力传感器零位校准服务ROS Type: Service
Data Type: std_srvs/Trigger
Version:
- 1.0.0: added
Cli: rosservice call /hand/finger_pressures/right/zero "{}"
Example:
python
def test_zero_finger_pressures_right(*, name=f"{PREFIX}/finger_pressures/right/zero"):
"""
调用右手指尖压力传感器零位校准服务
Notes
-----
对右手指尖压力传感器进行零位校准,
清除当前传感器偏置,将当前读数设为零点
Version
-------
- 1.0.0: added
Cli Examples
------------
$ rosservice call /hand/finger_pressures/right/zero "{}"
"""
rospy.wait_for_service(name)
try:
zero_service = rospy.ServiceProxy(name, Trigger)
req = TriggerRequest()
resp = zero_service(req)
print(f"Service call to {name}")
print(f"Response: success={resp.success}, message='{resp.message}'")
return resp.success
except rospy.ServiceException as e:
print(f"Service call failed: {e}")
return False