Skip to content

Commit b1aabf4

Browse files
authored
Merge pull request #241 from furushchev/add-published-at
append _meta.published_at for stamped messages
2 parents 2c2bd05 + 193f97f commit b1aabf4

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

‎mongodb_store/scripts/message_store_node.py‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
Provides a service to store ROS message objects in a mongodb database in JSON.
66
"""
77

8+
import genpy
89
import rospy
910
import mongodb_store_msgs.srv as dc_srv
1011
import mongodb_store.util as dc_util
@@ -15,9 +16,12 @@
1516
from mongodb_store_msgs.msg import StringPair, StringPairList, Insert
1617
from bson.objectid import ObjectId
1718
from datetime import *
19+
from tf2_msgs.msg import TFMessage
20+
1821

1922
MongoClient = dc_util.import_MongoClient()
2023

24+
2125
class MessageStore(object):
2226
def __init__(self, replicate_on_write=False):
2327

@@ -116,8 +120,21 @@ def insert_ros_srv(self, req):
116120

117121

118122
# try:
119-
meta['inserted_at'] = datetime.utcfromtimestamp(rospy.get_rostime().to_sec())
123+
stamp = rospy.get_rostime()
124+
meta['inserted_at'] = datetime.utcfromtimestamp(stamp.to_sec())
120125
meta['inserted_by'] = req._connection_header['callerid']
126+
if hasattr(obj, "header") and hasattr(obj.header, "stamp") and\
127+
isinstance(obj.header.stamp, genpy.Time):
128+
stamp = obj.header.stamp
129+
elif isinstance(obj, TFMessage):
130+
if obj.transforms:
131+
transforms = sorted(obj.transforms,
132+
key=lambda m: m.header.stamp, reverse=True)
133+
stamp = transforms[0].header.stamp
134+
135+
meta['published_at'] = datetime.utcfromtimestamp(stamp.to_sec())
136+
meta['timestamp'] = stamp.to_nsec()
137+
121138
obj_id = dc_util.store_message(collection, obj, meta)
122139

123140

0 commit comments

Comments
 (0)