void Transformer::pushDynamicTransformation(const transformer::TransformationType& tr)
{
    if(tr.sourceFrame == "" || tr.targetFrame == "")
	throw std::runtime_error("Dynamic transformation with empty target or source frame given");

    if(tr.time.isNull())
	throw std::runtime_error("Dynamic transformation without time given (or it is 1970 ;-P)");

    std::map<std::pair<std::string, std::string>, int>::iterator it = transformToStreamIndex.find(std::make_pair(tr.sourceFrame, tr.targetFrame));
    
    //we got an unknown transformation
    if(it == transformToStreamIndex.end()) {

	//create a representation of the dynamic transformation
	DynamicTransformationElement *dynamicElement = new DynamicTransformationElement(tr.sourceFrame, tr.targetFrame, aggregator, priority);
	
	int streamIdx = dynamicElement->getStreamIdx();
	
	transformToStreamIndex[std::make_pair(tr.sourceFrame, tr.targetFrame)] = streamIdx;
	
	LOG_DEBUG_S << "Registering new stream for transformation from " << tr.sourceFrame << " to " << tr.targetFrame << " index is " << streamIdx;
	
	//add new dynamic element to transformation tree
	transformationTree.addTransformation(dynamicElement);

	recomputeAvailableTransformations();
	
	it = transformToStreamIndex.find(std::make_pair(tr.sourceFrame, tr.targetFrame));
	assert(it != transformToStreamIndex.end());
    }

    //push sample
    aggregator.push(it->second, tr.time, tr);
}
Пример #2
0
void Transformer::setFrameMapping(const std::string& frameName, const std::string& newName)
{
    for(std::vector<Transformation *>::iterator transform = transformations.begin(); transform != transformations.end(); transform++)
    {
	(*transform)->setFrameMapping(frameName, newName);
    }
    recomputeAvailableTransformations();
}
Пример #3
0
void Transformer::pushStaticTransformation(const transformer::TransformationType& tr)
{
    if(tr.sourceFrame == "" || tr.targetFrame == "")
	throw std::runtime_error("Static transformation with empty target or source frame given");
    
    transformationTree.addTransformation(new StaticTransformationElement(tr.sourceFrame, tr.targetFrame, tr));
    recomputeAvailableTransformations();
}