This commit is contained in:
tankaitao 2025-08-25 17:35:39 +08:00
parent 49dd1c4248
commit bd79b8fbd1
2 changed files with 39 additions and 36 deletions

View File

@ -110,8 +110,8 @@ class BioHeadClient:
if not self.stream_active:
# 创建一个请求迭代器生成器
self.request_queue = []
self.response_iterator = self.stub.StreamExpression(self._stream_request_generator())
self.stream_active = True
self.response_iterator = self.stub.StreamExpression(self._stream_request_generator())
return CMVRErrorCode.CMVR_SUCCESS
except grpc.RpcError as e:
print(f"开始流式会话失败: {e}")
@ -129,6 +129,7 @@ class BioHeadClient:
else:
# 如果没有请求,等待一小段时间
time.sleep(0.01)
time.sleep(0.1)
def stream_expression(self, expression, is_eof=False):
"""流式控制表情"""

View File

@ -20,7 +20,7 @@ def test_biohead():
print("=== 测试仿生头功能 ===")
# 初始化客户端
client = CMVRGrpcClient("192.168.1.6:50051")
client = CMVRGrpcClient("192.168.1.222:50051")
if not client.is_connected():
print("连接服务器失败")
return
@ -30,37 +30,39 @@ def test_biohead():
# 创建表情
expression = FacialExpressionState()
# 设置眉毛,使用随机数并打印
expression.left_eyebrow_outside_y = random.uniform(0, 1)
expression.left_eyebrow_inside_y = random.uniform(0, 1)
expression.right_eyebrow_outside_y = random.uniform(0, 1)
expression.right_eyebrow_inside_y = random.uniform(0, 1)
print(f"眉毛设置: 左外 {expression.left_eyebrow_outside_y}, 左内 {expression.left_eyebrow_inside_y}, 右外 {expression.right_eyebrow_outside_y}, 右内 {expression.right_eyebrow_inside_y}")
# 设置眼睑,使用随机数并打印
expression.left_eye_upper_lid_y = random.uniform(0, 1)
expression.left_eye_lower_lid_y = random.uniform(0, 1)
expression.right_eye_upper_lid_y = random.uniform(0, 1)
expression.right_eye_lower_lid_y = random.uniform(0, 1)
print(f"眼睑设置: 左上 {expression.left_eye_upper_lid_y}, 左下 {expression.left_eye_lower_lid_y}, 右上 {expression.right_eye_upper_lid_y}, 右下 {expression.right_eye_lower_lid_y}")
# 设置眼球,使用随机数并打印
expression.left_eye_ball_x = random.uniform(0, 1)
expression.left_eye_ball_y = random.uniform(0, 1)
expression.right_eye_ball_x = random.uniform(0, 1)
expression.right_eye_ball_y = random.uniform(0, 1)
print(f"眼球设置: 左X {expression.left_eye_ball_x}, 左Y {expression.left_eye_ball_y}, 右X {expression.right_eye_ball_x}, 右Y {expression.right_eye_ball_y}")
# 设置嘴巴,使用随机数并打印
expression.upper_lip_y = random.uniform(0, 1)
expression.lower_lip_y = random.uniform(0, 1)
print(f"嘴巴设置: 上唇 {expression.upper_lip_y}, 下唇 {expression.lower_lip_y}")
# 设置下巴,使用随机数并打印
expression.jaw_x = random.uniform(0, 1)
expression.jaw_y = random.uniform(0, 1)
print(f"下巴设置: X {expression.jaw_x}, Y {expression.jaw_y}")
expression.jaw_x = 0.5
expression.jaw_y = 0.5
# # 设置眉毛,使用随机数并打印
# expression.left_eyebrow_outside_y = random.uniform(0, 1)
# expression.left_eyebrow_inside_y = random.uniform(0, 1)
# expression.right_eyebrow_outside_y = random.uniform(0, 1)
# expression.right_eyebrow_inside_y = random.uniform(0, 1)
# print(f"眉毛设置: 左外 {expression.left_eyebrow_outside_y}, 左内 {expression.left_eyebrow_inside_y}, 右外 {expression.right_eyebrow_outside_y}, 右内 {expression.right_eyebrow_inside_y}")
#
# # 设置眼睑,使用随机数并打印
# expression.left_eye_upper_lid_y = random.uniform(0, 1)
# expression.left_eye_lower_lid_y = random.uniform(0, 1)
# expression.right_eye_upper_lid_y = random.uniform(0, 1)
# expression.right_eye_lower_lid_y = random.uniform(0, 1)
# print(f"眼睑设置: 左上 {expression.left_eye_upper_lid_y}, 左下 {expression.left_eye_lower_lid_y}, 右上 {expression.right_eye_upper_lid_y}, 右下 {expression.right_eye_lower_lid_y}")
#
# # 设置眼球,使用随机数并打印
# expression.left_eye_ball_x = random.uniform(0, 1)
# expression.left_eye_ball_y = random.uniform(0, 1)
# expression.right_eye_ball_x = random.uniform(0, 1)
# expression.right_eye_ball_y = random.uniform(0, 1)
# print(f"眼球设置: 左X {expression.left_eye_ball_x}, 左Y {expression.left_eye_ball_y}, 右X {expression.right_eye_ball_x}, 右Y {expression.right_eye_ball_y}")
#
# # 设置嘴巴,使用随机数并打印
# expression.upper_lip_y = random.uniform(0, 1)
# expression.lower_lip_y = random.uniform(0, 1)
# print(f"嘴巴设置: 上唇 {expression.upper_lip_y}, 下唇 {expression.lower_lip_y}")
#
# # 设置下巴,使用随机数并打印
# expression.jaw_x = random.uniform(0, 1)
# expression.jaw_y = random.uniform(0, 1)
# print(f"下巴设置: X {expression.jaw_x}, Y {expression.jaw_y}")
# 设置表情
result = biohead.set_expression(expression)
@ -92,7 +94,7 @@ def test_biohead():
else:
print(f"{i+1}次流式睁眼失败,错误码: {result}")
time.sleep(0.5)
# 闭眼,使用随机数并打印
proto_expr.eyelid.left_upper_y = random.uniform(0, 1)
@ -107,7 +109,7 @@ def test_biohead():
else:
print(f"{i+1}次流式闭眼失败,错误码: {result}")
time.sleep(0.2)
# 结束流式会话
result = biohead.end_stream()
@ -465,7 +467,7 @@ def test_sensor_data_stream():
client.close()
print("\n=== 双向流传感器数据测试完成 ===")
if __name__ == "__main__":
# test_biohead()
test_biohead()
# test_camera()
# test_dexhand()
test_sensor_data_stream()
# test_sensor_data_stream()