Skip to content

Commit 59e2d4f

Browse files
author
Nicolas Torres
committed
add metric to on_dynamic_joint_states
1 parent f926028 commit 59e2d4f

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

dynamic_state_router/dynamic_state_router/dynamic_state_router.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
from .forward_controller import ForwardControllersPool
3939
import reachy2_monitoring as rm
40+
import prometheus_client as pc
4041

4142
class TracedCommands:
4243
def __init__(self, traceparent="") -> None:
@@ -55,6 +56,9 @@ def __init__(self, node_name, controllers_file):
5556
self.logger = self.get_logger()
5657
self.tracer = rm.tracer(node_name)
5758
self.on_dynamic_joint_commands_counter = 0
59+
pc.start_http_server(10002)
60+
self.sum_joint_states = pc.Summary("dynamic_state_router_on_dynamic_joint_states_time",
61+
"Time spent during on_dynamic_joint_states callback")
5862

5963
self.freq, self.forward_controllers = ForwardControllersPool.parse(
6064
self.logger, controllers_file
@@ -335,26 +339,27 @@ def handle_regular_commands(self, commands):
335339
# Subscription: DynamicJointState cb
336340
def on_dynamic_joint_states(self, state: DynamicJointState):
337341
"""Retreive the joint state from /dynamic_joint_states."""
338-
if not self.joint_state_ready.is_set():
339-
for uid, name in enumerate(state.joint_names):
340-
self.joint_state[name] = {}
341-
self.joint_state[name]["name"] = name
342-
self.joint_state[name]["uid"] = uid
343-
344-
self.joint_command[name] = {}
345-
346-
for uid, (name, kv) in enumerate(
347-
zip(state.joint_names, state.interface_values)
348-
):
349-
for k, v in zip(kv.interface_names, kv.values):
350-
self.joint_state[name][k] = v
351-
352-
if not self.joint_state_ready.is_set():
353-
for name, state in self.joint_state.items():
354-
if "position" in state:
355-
state["target_position"] = state["position"]
356-
357-
self.joint_state_ready.set()
342+
with self.sum_joint_states.time():
343+
if not self.joint_state_ready.is_set():
344+
for uid, name in enumerate(state.joint_names):
345+
self.joint_state[name] = {}
346+
self.joint_state[name]["name"] = name
347+
self.joint_state[name]["uid"] = uid
348+
349+
self.joint_command[name] = {}
350+
351+
for uid, (name, kv) in enumerate(
352+
zip(state.joint_names, state.interface_values)
353+
):
354+
for k, v in zip(kv.interface_names, kv.values):
355+
self.joint_state[name][k] = v
356+
357+
if not self.joint_state_ready.is_set():
358+
for name, state in self.joint_state.items():
359+
if "position" in state:
360+
state["target_position"] = state["position"]
361+
362+
self.joint_state_ready.set()
358363

359364
def on_forward_position_controller_update(
360365
self, msg: Float64MultiArray, controller_name: str

0 commit comments

Comments
 (0)