diff --git a/VirtualRobot/Robot.h b/VirtualRobot/Robot.h index 08fc8a28725eba78a5945d07a0bb6a3186f05147..f1abba9c39f96452502d1d2653835af4db01d310 100644 --- a/VirtualRobot/Robot.h +++ b/VirtualRobot/Robot.h @@ -370,6 +370,21 @@ namespace VirtualRobot */ virtual std::vector<SensorPtr> getSensors(); + template<class SensorType> + std::vector<boost::shared_ptr<SensorType>> getSensors() + { + std::vector<boost::shared_ptr<SensorType>> result; + std::vector<SensorPtr> sensors = getSensors(); + result.reserve(sensors.size()); + for(SensorPtr& sensor:sensors) + { + if(dynamic_cast<SensorType*>(sensor.get())) + { + result.emplace_back(boost::static_pointer_cast<SensorType>(sensor)); + } + } + return result; + } /*! Creates an XML string that defines the complete robot. Filenames of all visualization models are set to modelPath/RobotNodeName_visu and/or modelPath/RobotNodeName_colmodel. @see RobotIO::saveXML.