sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
appli_ffSubscriber.py
Go to the documentation of this file.
1 # flake8: noqa
2 from dynamic_graph import plug
3 from dynamic_graph.ros import RosSubscribe
4 from dynamic_graph.sot.core import SOT
5 from dynamic_graph.sot.core.meta_tasks_kine import (
6  MetaTaskKine6d,
7  MetaTaskKineCom,
8  gotoNd,
9 )
10 from dynamic_graph.tracer_real_time import TracerRealTime
11 
13  addTrace,
14  create_com_trajectory_generator,
15  dump_tracer,
16 )
17 
18 robot.timeStep = robot.device.getTimeStep()
19 dt = robot.timeStep
20 robot.comTrajGen = create_com_trajectory_generator(dt, robot)
21 
22 robot.subscriber = RosSubscribe("base_subscriber")
23 robot.subscriber.add("vector", "position", "/sot/base_link/position")
24 robot.subscriber.add("vector", "velocity", "/sot/base_link/velocity")
25 
26 # --- COM
27 robot.taskCom = MetaTaskKineCom(robot.dynamic)
28 robot.dynamic.com.recompute(0)
29 robot.taskCom.featureDes.errorIN.value = robot.dynamic.com.value
30 robot.taskCom.task.controlGain.value = 10
31 
32 # --- CONTACTS
33 # define contactLF and contactRF
34 robot.contactLF = MetaTaskKine6d(
35  "contactLF", robot.dynamic, "LF", robot.OperationalPointsMap["left-ankle"]
36 )
37 robot.contactLF.feature.frame("desired")
38 robot.contactLF.gain.setConstant(100)
39 robot.contactLF.keep()
40 locals()["contactLF"] = robot.contactLF
41 
42 robot.contactRF = MetaTaskKine6d(
43  "contactRF", robot.dynamic, "RF", robot.OperationalPointsMap["right-ankle"]
44 )
45 robot.contactRF.feature.frame("desired")
46 robot.contactRF.gain.setConstant(100)
47 robot.contactRF.keep()
48 locals()["contactRF"] = robot.contactRF
49 
50 robot.sot = SOT("sot")
51 robot.sot.setSize(robot.dynamic.getDimension())
52 plug(robot.sot.control, robot.device.control)
53 plug(robot.comTrajGen.x, robot.taskCom.featureDes.errorIN)
54 
55 robot.sot.push(robot.contactRF.task.name)
56 robot.sot.push(robot.contactLF.task.name)
57 robot.sot.push(robot.taskCom.task.name)
58 robot.device.control.recompute(0)
59 
60 # --- TRACER
61 robot.tracer = TracerRealTime("zmp_tracer")
62 robot.tracer.setBufferSize(80 * (2**20))
63 robot.tracer.open("/tmp", "dg_", ".dat")
64 robot.device.after.addSignal("{0}.triger".format(robot.tracer.name))
65 robot.device.after.addSignal(
66  "{0}.position".format(robot.subscriber.name)
67 ) # force recalculation
68 robot.device.after.addSignal(
69  "{0}.velocity".format(robot.subscriber.name)
70 ) # force recalculation
71 
72 addTrace(robot.tracer, robot.dynamic, "com")
73 addTrace(robot.tracer, robot.subscriber, "position")
74 addTrace(robot.tracer, robot.subscriber, "velocity")
75 
76 robot.tracer.start()
create_entities_utils
sot_talos_balance.create_entities_utils.create_com_trajectory_generator
def create_com_trajectory_generator(dt, robot)
Definition: create_entities_utils.py:120
sot_talos_balance.create_entities_utils.addTrace
def addTrace(tracer, entity, signalName)
Definition: create_entities_utils.py:402