cmvr-head-client/main.py

42 lines
960 B
Python
Raw Permalink Normal View History

2026-08-05 16:42:59 +08:00
import statistics
import time
import erpc
from servo_service import client
PORT = "COM8"
BAUD = 115200
N = 180
JOINT_COUNT = 48
def main():
xport = erpc.transport.SerialTransport(PORT, BAUD)
client_mgr = erpc.client.ClientManager(xport, erpc.basic_codec.BasicCodec)
api = client.servo_serviceClient(client_mgr)
angles = [0.0] * JOINT_COUNT
while True:
costs_ms = []
for _ in range(N):
t0 = time.perf_counter()
api.moveJ(angles)
t1 = time.perf_counter()
costs_ms.append((t1 - t0) * 1000.0)
print(f"N={N}")
print(f"avg = {statistics.mean(costs_ms):.3f} ms")
print(f"min = {min(costs_ms):.3f} ms")
print(f"max = {max(costs_ms):.3f} ms")
if N >= 2:
print(f"p50 = {statistics.median(costs_ms):.3f} ms")
print(f"p95 ~= {sorted(costs_ms)[int(0.95 * (N - 1))]:.3f} ms")
if __name__ == "__main__":
main()