Skip to content
Snippets Groups Projects
Commit 609583d8 authored by Guilhem Saurel's avatar Guilhem Saurel
Browse files

review example-3

parent 60a0993e
No related branches found
No related tags found
1 merge request!4review details
#!/usr/bin/env python3 #!/usr/bin/env python3
import numpy as np import time
from manager import QueueClient import numpy as np
from task import Task,TaskParameters
import example_robot_data as robex
import pinocchio as pin import pinocchio as pin
from manager import QueueClient
from task import Task, TaskParameters
class Boss(QueueClient): class Boss(QueueClient):
def run(self, qs,vqs,aqs): def run(self, qs, vqs, aqs):
# create some tasks # create some tasks
for i,[q,v,a] in enumerate(zip(qs,vqs,aqs)): for i, [q, v, a] in enumerate(zip(qs, vqs, aqs)):
self.tasks.put(Task(i,q,v,a)) self.tasks.put(Task(i, q, v, a))
# Wait for the results # Wait for the results
results = [] results = []
for _ in range(len(qs)): for _ in qs:
result = self.results.get() result = self.results.get()
print(f'got result {result.identifier} of processed in {result.time:.3f}s : ') print(f'got result {result.identifier} of processed in {result.time:.3f}s : ')
results.append(result) results.append(result)
print('Got all {tasks} results !') print('Got all {tasks} results !')
if __name__ == '__main__': if __name__ == '__main__':
import time
# Allocate data to be proceeded. # Allocate data to be proceeded.
NDATA = 20 NDATA = 20
qs = np.array([ pin.randomConfiguration(TaskParameters.robot.model) for _ in range(NDATA) ]) qs = np.array([pin.randomConfiguration(TaskParameters.robot.model) for _ in range(NDATA)])
vqs = np.random.rand(NDATA,TaskParameters.robot.model.nv)*2-1 vqs = np.random.rand(NDATA, TaskParameters.robot.model.nv) * 2 - 1
aqs = np.random.rand(NDATA,TaskParameters.robot.model.nv)*2-1 aqs = np.random.rand(NDATA, TaskParameters.robot.model.nv) * 2 - 1
start = time.perf_counter() start = time.perf_counter()
Boss().run(qs,vqs,aqs) Boss().run(qs, vqs, aqs)
total = time.perf_counter() - start total = time.perf_counter() - start
print( f'Completed in {total:.3f} secs') print(f'Completed in {total:.3f} secs')
import time import time
import pinocchio as pin
import numpy as np import numpy as np
import pinocchio as pin
import example_robot_data as robex import example_robot_data as robex
class TaskParameters: class TaskParameters:
'''Common information to all tasks, to be allocated by each minion and the boss. ''' '''Common information to all tasks, to be allocated by each minion and the boss. '''
robotname = 'ur5' robotname = 'ur5'
robot = robex.load(robotname) robot = robex.load(robotname)
class Task: class Task:
def __init__(self, identifier,q,v,a): def __init__(self, identifier, q, v, a):
self.identifier = identifier self.identifier = identifier
self.q = q.copy() self.q = q.copy()
...@@ -23,8 +26,8 @@ class Task: ...@@ -23,8 +26,8 @@ class Task:
def work(self): def work(self):
start = time.perf_counter() start = time.perf_counter()
for i in range(1000000): for i in range(1_000_000):
pin.rnea(TaskParameters.robot.model,TaskParameters.robot.data,self.q,self.v,self.a) pin.rnea(TaskParameters.robot.model, TaskParameters.robot.data, self.q, self.v, self.a)
self.tau[:] = TaskParameters.robot.data.tau self.tau[:] = TaskParameters.robot.data.tau
self.time = time.perf_counter() - start self.time = time.perf_counter() - start
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment