@@ -82,7 +82,7 @@ class DBwLock():
8282
8383 sample_db may be a valid dictionary that can be preloaded into
8484 the object (useful for debugging, see sample_db.py) """
85- def __init__ (self , sample_db = None ):
85+ def __init__ (self , sample_db = None , ros_node = None ):
8686 if sample_db is not None :
8787 assert isinstance (sample_db , dict )
8888 # For ROS2, we can't deepcopy Time objects, so we'll just assign directly
@@ -92,6 +92,7 @@ def __init__(self, sample_db=None):
9292 else :
9393 self .db = {}
9494 self .lock = threading .Lock ()
95+ self .ros_node = ros_node
9596
9697 def add_modify_data (self , dbm ):
9798 """ Insert new stuff into the db. Use the header as message index """
@@ -106,7 +107,10 @@ def add_modify_data(self, dbm):
106107 if dbm .topic_id not in self .db [dbm .robot_id ]:
107108 self .db [dbm .robot_id ][dbm .topic_id ] = {}
108109 if dbm .header in self .db [dbm .robot_id ][dbm .topic_id ]:
109- raise Exception ("database: Header Collision Detected" )
110+ if self .ros_node is not None :
111+ self .ros_node .get_logger ().error ("Database - Header Collision Detected. " + "You may want to decrease your publish rate into MOCHA" )
112+ else :
113+ raise Exception ("database: Header Collision Detected" )
110114 self .db [dbm .robot_id ][dbm .topic_id ][dbm .header ] = dbm
111115 self .lock .release ()
112116 return dbm .header
0 commit comments