42 lines
960 B
Python
42 lines
960 B
Python
|
|
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()
|