def __init__(self): dynamic_reconfigure.server.Server( DataCollectionServerConfig, self.reconfig_cb) self.msg = {} self.topics = rospy.get_param('~topics', []) # validation for saving topics for topic in self.topics: required_fields = ['name', 'msg_class', 'fname', 'savetype'] for field in required_fields: if field not in topic: jsk_logfatal("Required field '{}' for topic is missing" .format(field)) sys.exit(1) self.params = rospy.get_param('~params', []) self.slop = rospy.get_param('~slop', 0.1) # validation for saving params for param in self.params: required_fields = ['key', 'fname', 'savetype'] for field in required_fields: if field not in param: jsk_logfatal("Required field '{}' for param is missing" .format(field)) sys.exit(1) self.server = rospy.Service('~save_request', Trigger, self.service_cb) self.subs = [] for topic in self.topics: msg_class = roslib.message.get_message_class(topic['msg_class']) sub = rospy.Subscriber(topic['name'], msg_class, self.sub_cb, callback_args=topic['name']) self.subs.append(sub)
def __init__(self): dynamic_reconfigure.server.Server( DataCollectionServerConfig, self.reconfig_cb) self.msg = {} self.topics = rospy.get_param('~topics', []) # validation for saving topics for topic in self.topics: required_fields = ['name', 'msg_class', 'fname', 'savetype'] for field in required_fields: if field not in topic: jsk_logfatal("Required field '{}' for topic is missing" .format(field)) sys.exit(1) self.params = rospy.get_param('~params', []) self.slop = rospy.get_param('~slop', 0.1) # validation for saving params for param in self.params: required_fields = ['key', 'fname', 'savetype'] for field in required_fields: if field not in param: jsk_logfatal("Required field '{}' for param is missing" .format(field)) sys.exit(1) if rospy.get_param('~with_request', True): self.subs = [] for topic in self.topics: msg_class = roslib.message.get_message_class(topic['msg_class']) sub = rospy.Subscriber(topic['name'], msg_class, self.sub_cb, callback_args=topic['name']) self.subs.append(sub) self.server = rospy.Service('~save_request', Trigger, self.service_cb) else: self.subs = [] for topic in self.topics: msg_class = roslib.message.get_message_class(topic['msg_class']) sub = message_filters.Subscriber(topic['name'], msg_class) self.subs.append(sub) self.sync = message_filters.TimeSynchronizer( self.subs, queue_size=rospy.get_param('~queue_size', 10)) self.sync.registerCallback(self.sync_sub_cb)
def test_jsk_logfatal(self, mock_get_name, mock_log): mock_get_name.return_value = '/spam' jsk_logfatal('spam') mock_log.assert_called_with('[/spam] [TestJSKLogXXX::test_jsk_logfatal] spam')
def __init__(self): dynamic_reconfigure.server.Server(DataCollectionServerConfig, self.reconfig_cb) self.msg = {} self.topics = rospy.get_param('~topics', []) # validation for saving topics for topic in self.topics: required_fields = ['name', 'msg_class', 'fname', 'savetype'] for field in required_fields: if field not in topic: jsk_logfatal( "Required field '{}' for topic is missing".format( field)) sys.exit(1) self.params = rospy.get_param('~params', []) self.slop = rospy.get_param('~slop', 0.1) # validation for saving params for param in self.params: required_fields = ['key', 'fname', 'savetype'] for field in required_fields: if field not in param: jsk_logfatal( "Required field '{}' for param is missing".format( field)) sys.exit(1) method = rospy.get_param('~method', 'request') if method not in ['request', 'timer', 'all', 'message_filters']: raise ValueError('Unexpected method: {}'.format(method)) use_message_filters = rospy.get_param('~message_filters', False) self.timestamp_save_dir = rospy.get_param('~timestamp_save_dir', True) self.wait_timer = rospy.get_param('~wait_timer', False) self.wait_save_request = rospy.get_param('~wait_save_request', False) if rospy.has_param('~with_request'): rospy.logwarn('Deprecated param: ~with_request, Use ~method') if not rospy.get_param('~with_request'): use_message_filters = True method = 'all' if method == 'message_filters': rospy.logwarn('Deprecated param: ~method: message_filters,' 'Use ~message_filters: true') use_message_filters = True method = 'all' # set subscribers self.subs = [] for topic in self.topics: msg_class = roslib.message.get_message_class(topic['msg_class']) if use_message_filters: sub = message_filters.Subscriber(topic['name'], msg_class) else: sub = rospy.Subscriber(topic['name'], msg_class, self.sub_cb, callback_args=topic['name']) self.subs.append(sub) # add synchoronizer if use_message_filters if use_message_filters: queue_size = rospy.get_param('~queue_size', 10) approximate_sync = rospy.get_param('~approximate_sync', False) if approximate_sync: slop = rospy.get_param('~slop', 0.1) self.sync = message_filters.ApproximateTimeSynchronizer( self.subs, queue_size=queue_size, slop=slop) else: self.sync = message_filters.TimeSynchronizer( self.subs, queue_size=queue_size) # set collecting method if method == 'request': if use_message_filters: self.sync.registerCallback(self.sync_sub_cb) self.server = rospy.Service('~save_request', Trigger, self.sync_service_cb) else: self.server = rospy.Service('~save_request', Trigger, self.service_cb) elif method == 'timer': duration = rospy.Duration(1.0 / rospy.get_param('~hz', 1.0)) self.start = False self.start_server = rospy.Service('~start_request', Trigger, self.start_service_cb) self.end_server = rospy.Service('~end_request', Trigger, self.end_service_cb) if use_message_filters: self.sync.registerCallback(self.sync_sub_cb) self.timer = rospy.Timer(duration, self.sync_timer_cb) else: self.timer = rospy.Timer(duration, self.timer_cb) else: assert method == 'all' if use_message_filters: self.sync.registerCallback(self.sync_sub_and_save_cb) else: rospy.logerr( '~use_filters: False, ~method: all is not supported') sys.exit(1)
def main(): rospy.init_node('fast_rcnn_caffenet') # get parameters try: model_name = rospy.get_param('~model') except KeyError as e: rospy.logerr('Unspecified rosparam: {0}'.format(e)) sys.exit(1) # FIXME: In CPU mode, there is no detections. if not cuda.available: jsk_logfatal('CUDA environment is required.') sys.exit(1) use_gpu = True # setup model PKG = 'jsk_perception' rp = rospkg.RosPack() data_path = osp.join(rp.get_path(PKG), 'trained_data') if model_name == 'vgg_cnn_m_1024': model = VGG_CNN_M_1024() chainermodel = osp.join(data_path, 'vgg_cnn_m_1024.chainermodel') elif model_name == 'vgg16': model = VGG16FastRCNN() chainermodel = osp.join(data_path, 'vgg16_fast_rcnn.chainermodel') else: rospy.logerr('Unsupported model: {0}'.format(model_name)) sys.exit(1) jsk_loginfo('Loading chainermodel') S.load_hdf5(chainermodel, model) if use_gpu: model.to_gpu() jsk_loginfo('Finished loading chainermodel') # assumptions target_names = [ '__background__', 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor', ] pixel_means = [102.9801, 115.9465, 122.7717] fast_rcnn = FastRCNN( model=model, target_names=target_names, pixel_means=pixel_means, use_gpu=use_gpu) rospy.spin()
def __init__(self): dynamic_reconfigure.server.Server( DataCollectionServerConfig, self.reconfig_cb) self.msg = {} self.topics = rospy.get_param('~topics', []) # validation for saving topics for topic in self.topics: required_fields = ['name', 'msg_class', 'fname', 'savetype'] for field in required_fields: if field not in topic: jsk_logfatal("Required field '{}' for topic is missing" .format(field)) sys.exit(1) self.params = rospy.get_param('~params', []) self.slop = rospy.get_param('~slop', 0.1) # validation for saving params for param in self.params: required_fields = ['key', 'fname', 'savetype'] for field in required_fields: if field not in param: jsk_logfatal("Required field '{}' for param is missing" .format(field)) sys.exit(1) method = rospy.get_param('~method', 'request') use_message_filters = rospy.get_param('~message_filters', False) self.timestamp_save_dir = rospy.get_param('~timestamp_save_dir', True) if rospy.has_param('~with_request'): rospy.logwarn('Deprecated param: ~with_request, Use ~method') if not rospy.get_param('~with_request'): use_message_filters = True method = None if method == 'message_filters': rospy.logwarn( 'Deprecated param: ~method: message_filters,' 'Use ~message_filters: true') use_message_filters = True method = None # set subscribers self.subs = [] for topic in self.topics: msg_class = roslib.message.get_message_class( topic['msg_class']) if use_message_filters: sub = message_filters.Subscriber( topic['name'], msg_class) else: sub = rospy.Subscriber( topic['name'], msg_class, self.sub_cb, callback_args=topic['name']) self.subs.append(sub) # add synchoronizer if use_message_filters if use_message_filters: queue_size = rospy.get_param('~queue_size', 10) approximate_sync = rospy.get_param('~approximate_sync', False) if approximate_sync: slop = rospy.get_param('~slop', 0.1) self.sync = message_filters.ApproximateTimeSynchronizer( self.subs, queue_size=queue_size, slop=slop) else: self.sync = message_filters.TimeSynchronizer( self.subs, queue_size=queue_size) # set collecting method if method == 'request': if use_message_filters: self.sync.registerCallback(self.sync_sub_cb) self.server = rospy.Service( '~save_request', Trigger, self.sync_service_cb) else: self.server = rospy.Service( '~save_request', Trigger, self.service_cb) elif method == 'timer': duration = rospy.Duration(1.0 / rospy.get_param('~hz', 1.0)) self.start = False self.start_server = rospy.Service( '~start_request', Trigger, self.start_service_cb) self.end_server = rospy.Service( '~end_request', Trigger, self.end_service_cb) if use_message_filters: self.sync.registerCallback(self.sync_sub_cb) self.timer = rospy.Timer(duration, self.sync_timer_cb) else: self.timer = rospy.Timer(duration, self.timer_cb) else: if use_message_filters: self.sync.registerCallback(self.sync_sub_and_save_cb) else: rospy.logerr( '~use_filters: False, ~method: None is not supported') sys.exit(1)
def main(): rospy.init_node("fast_rcnn_caffenet") # get parameters try: model_name = rospy.get_param("~model") except KeyError as e: rospy.logerr("Unspecified rosparam: {0}".format(e)) sys.exit(1) # FIXME: In CPU mode, there is no detections. if not cuda.available: jsk_logfatal("CUDA environment is required.") sys.exit(1) use_gpu = True # setup model PKG = "jsk_perception" rp = rospkg.RosPack() data_path = osp.join(rp.get_path(PKG), "trained_data") if model_name == "vgg_cnn_m_1024": model = VGG_CNN_M_1024() chainermodel = osp.join(data_path, "vgg_cnn_m_1024.chainermodel") elif model_name == "vgg16": model = VGG16FastRCNN() chainermodel = osp.join(data_path, "vgg16_fast_rcnn.chainermodel") else: rospy.logerr("Unsupported model: {0}".format(model_name)) sys.exit(1) jsk_loginfo("Loading chainermodel") S.load_hdf5(chainermodel, model) if use_gpu: model.to_gpu() jsk_loginfo("Finished loading chainermodel") # assumptions target_names = [ "__background__", "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor", ] pixel_means = [102.9801, 115.9465, 122.7717] fast_rcnn = FastRCNN(model=model, target_names=target_names, pixel_means=pixel_means, use_gpu=use_gpu) rospy.spin()
def test_jsk_logfatal(self, mock_log): jsk_logfatal('spam') mock_log.assert_called_with('[TestJSKLogXXX::test_jsk_logfatal] spam')