//		public FieldLimiter (T value)
//		{
//			return limit ( value );
//		}

		public void init (NodeHandle nh, string field = "")
		{
			float fmin = float.NegativeInfinity;
			float fmax = float.PositiveInfinity;
			double dmin = double.NegativeInfinity;
			double dmax = double.PositiveInfinity;

			bool isDouble = typeof (T) == typeof (double);

			string prefix = !string.IsNullOrEmpty ( field ) ? field + "/" : "";
			if ( nh.hasParam ( prefix + "max" ) || nh.hasParam ( prefix + "min" ) )
			{
				object posinf = isDouble ? dmax : fmax;
				object neginf = isDouble ? dmin : fmin;
				nh.param<T> ( prefix + "max", ref max_, (T) posinf );
				nh.param<T> ( prefix + "min", ref min_, (T) neginf );
//				nh.param<T>(prefix + "max", ref max_, numeric_limits<T>::infinity());
//				nh.param<T>(prefix + "min", ref min_, -max_);
				ROS.Info ("Limits " + nh.getNamespace () + "/" + field + " initialized " + field + " with min " + min_ + " and max " + max_);
			}
		}