diff --git a/src/dynamic_graph/sot/dynamics/humanoid_robot.py b/src/dynamic_graph/sot/dynamics/humanoid_robot.py
index d721b3a12de493ab5a1edaf6fb185c53e9832d6f..8a805ae07949f245f9c5791315eb77a198ef8e4e 100755
--- a/src/dynamic_graph/sot/dynamics/humanoid_robot.py
+++ b/src/dynamic_graph/sot/dynamics/humanoid_robot.py
@@ -372,13 +372,11 @@ class AbstractHumanoidRobot (object):
                 transformation,
                 signalName)
 
-        # Initialize tracer.
-        self.initializeTracer()
-
     def addTrace(self, entityName, signalName):
-        self.autoRecomputedSignals.append(
-            '{0}.{1}'.format(entityName, signalName))
-        addTrace(self, self.tracer, entityName, signalName)
+        if self.tracer:
+            self.autoRecomputedSignals.append(
+                '{0}.{1}'.format(entityName, signalName))
+            addTrace(self, self.tracer, entityName, signalName)
 
     def initializeTracer(self):
         if not self.tracer:
@@ -441,13 +439,14 @@ class AbstractHumanoidRobot (object):
         """
         Stop and destroy tracer.
         """
-        self.tracer.dump()
-        self.tracer.stop()
-        self.tracer.close()
-        self.tracer.clear()
-        for s in self.autoRecomputedSignals:
-            self.device.after.rmSignal(s)
-        self.tracer = None
+        if self.tracer:
+            self.tracer.dump()
+            self.tracer.stop()
+            self.tracer.close()
+            self.tracer.clear()
+            for s in self.autoRecomputedSignals:
+                self.device.after.rmSignal(s)
+            self.tracer = None
 
     def reset(self, posture = None):
         """