Skip to content

Python

首先下载PROTO文件

安装Python的依赖包

pip install grpcio grpcio-tools

使用proto文件生成Python接口文件

python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. robot.proto

执行完之后,会在当前目录生成robot_pb2_grpc.py和robot_pb2.py文件 其中robot_pb2_grpc.py内主要包括gRPC的相关结构和数据,robot_pb2.py内主要包括机器人相关的接口和数据结构

引入相关包

import grpc

robot_pb2_grpc
robot_pb2

首先建立RPC client实例

channel = grpc.insecure_channel("192.168.100.102:50051")
stub = robot_pb2_grpc.RobotServiceStub(channel)

其中ip和端口换成实际的RPC Server的IP和端口

尝试连接RPC Server,测试Server状态

resp = stub.ConnectRPC(robot_pb2.ReqVoid())
if resp.resp == "OK":
  print("连接成功")
else:
  raise Exception("RPC Server状态异常")

机械臂上电

stub.MoveStart()

此时如果一切正常可以听到机械臂上电的声音,然后执行机械臂运动(MoveA)

rob_pose = robot_pb2.Robpose(xyz=[1, 1, 1], kps=[1, 1, 1])
resp = stub.MoveA(robot_pb2.ReqMoveA(
        rjoint=robot_pb2.Robjoint(dof=6, angle=[0.6, 0.6, 0, 0, 0, 0, 0, 0, 0, 0]),
        rspeed=robot_pb2.Speed(dof=6, per_flag=2, tcp_flag=0, orl_flag=0, per=[10] * 10, tcp=50, orl=50),
        rzone=robot_pb2.Zone(zone_flag=1, zone_size=1),
        rtool=robot_pb2.Tool(robhold=1,tframe=rob_pose,
        payload=robot_pb2.PayLoad(m=1,cm=[1, 2, 3],ii=[1, 2, 1, 2, 1, 2, 1, 2, 1],ii2=[1, 2, 1, 2, 1, 2, 1, 2, 1])),
        wobj=robot_pb2.Wobj(robhold=1, uframe=rob_pose, oframe=rob_pose, ufprog=1, ufmec=1)
))

此时如果一切正常应该可以看到机械臂1轴、2轴在移动,然后执行机械臂下电

stub.MoveStop()