37 Top-level library routines we expose to the end-user 40 from __future__
import with_statement
42 from builtins
import int
45 import roslib.packages
52 Find ROS resource inside of a package. 54 @param pkg: ROS package name 56 @param resource: resource filename 59 val = roslib.packages.find_resource(pkg, resource)
63 raise rospy.ROSException(
"cannot find resource")
67 def __init__(self, filename):
68 self.filename = filename
69 self._fp = open(filename,
'w')
71 def append(self, msg):
75 if self._fp
is not None:
81 if isinstance(obj, roslib.message.Message):
90 Load single message from YAML dictionary representation. 92 @param type_: Message class 93 @type type_: class (Message subclass) 94 @param filename: Name of YAML file 98 if yaml_str.strip() ==
'':
101 msg_dict = yaml.load(yaml_str)
102 if not isinstance(msg_dict, dict):
104 raise ValueError(
"yaml file [%s] does not contain a dictionary" % filename)
106 raise ValueError(
"yaml string does not contain a dictionary")
108 roslib.message.fill_message_args(m, [msg_dict])
114 Load single message from YAML dictionary representation. 116 @param type_: Message class 117 @type type_: class (Message subclass) 118 @param filename: Name of YAML file 121 with open(filename,
'r') as f: 127 Load messages from YAML list-of-dictionaries representation. 129 @param type_: Message class 130 @type type_: class (Message subclass) 131 @param filename: Name of YAML file 135 yaml_doc = yaml.load(yaml_str)
137 for msg_dict
in yaml_doc:
138 if not isinstance(msg_dict, dict):
140 raise ValueError(
"yaml file [%s] does not contain a list of dictionaries" % filename)
142 raise ValueError(
"yaml string does not contain a list of dictionaries")
144 roslib.message.fill_message_args(m, msg_dict)
151 Load messages from YAML list-of-dictionaries representation. 153 @param type_: Message class 154 @type type_: class (Message subclass) 155 @param filename: Name of YAML file 158 with open(filename,
'r') as f: 164 convert value to YAML representation 165 @param val: to convert to string representation. Most likely a Message. 167 @param indent: indentation 169 @param time_offset: if not None, time fields will be displayed 170 as deltas from time_offset 171 @type time_offset: Time 173 if type(msg)
in [int, float, str, bool]:
176 elif isinstance(msg, rospy.Time)
or isinstance(msg, rospy.Duration):
177 if time_offset
is not None and isinstance(msg, rospy.Time):
178 msg = msg-time_offset
180 return '\n%ssecs: %s\n%snsecs: %s' % (indent, msg.secs, indent, msg.nsecs)
182 elif type(msg)
in [list, tuple]:
185 return str(list(msg))
187 if type(msg0)
in [int, float, str, bool]
or \
188 isinstance(msg0, rospy.Time)
or isinstance(msg0, rospy.Duration)
or \
189 isinstance(msg0, list)
or isinstance(msg0, tuple):
191 return str(list(msg))
193 indent = indent +
' ' 194 return "["+
','.join([roslib.message.strify_message(v, indent, time_offset)
for v
in msg])+
"]" 195 elif isinstance(msg, rospy.Message):
198 '\n'.join([
'%s%s: %s' % (
199 indent, f, roslib.message.strify_message(getattr(msg, f),
' ' + indent, time_offset))
for f
in msg.__slots__])
200 return '\n'.join([
'%s%s: %s' % (indent, f, roslib.message.strify_message(getattr(msg, f),
' ' + indent, time_offset))
for f
in msg.__slots__])