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()