44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import os
|
|
import time
|
|
import argparse
|
|
|
|
from numpy import argmax, mean
|
|
|
|
from pypot.robot import from_json
|
|
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('-l', '--log-file',
|
|
type=str, required=True)
|
|
parser.add_argument('-N', type=int, required=True)
|
|
parser.add_argument('-c', '--config',
|
|
type=str, required=True)
|
|
args = parser.parse_args()
|
|
|
|
bp = args.log_file
|
|
if os.path.exists(bp):
|
|
raise IOError('File already exists: {}'.format(bp))
|
|
|
|
robot = from_json(args.config)
|
|
|
|
# We keep the controller with most motors connected
|
|
motors = [len(c.motors) for c in robot._controllers]
|
|
c = robot._controllers[argmax(motors)]
|
|
|
|
print('Using controller with motors {}'.format([m.id for m in c.motors]))
|
|
c = c.controllers[1]
|
|
|
|
dt = []
|
|
for _ in range(args.N):
|
|
start = time.time()
|
|
c.get_present_position_speed_load(c.motors)
|
|
end = time.time()
|
|
dt.append(end - start)
|
|
|
|
# We'll use raw file instead of numpy because of pypy
|
|
with open(bp, 'w') as f:
|
|
f.write(str(dt))
|
|
|
|
print('Done in {}ms'.format(mean(dt) * 1000))
|