29 #ifndef HECTOR_POSE_ESTIMATION_SUBSTATE_H
30 #define HECTOR_POSE_ESTIMATION_SUBSTATE_H
53 template <
int _VectorDimension,
int _CovarianceDimension>
class initializer;
83 template <
int _VectorDimension,
int _CovarianceDimension = _VectorDimension>
92 typedef Block<State::Covariance,CovarianceDimension,CovarianceDimension>
CovarianceBlock;
118 template <
typename OtherSubState> Block<const State::Covariance,CovarianceDimension,OtherSubState::CovarianceDimension>
getCrossVariance(
const OtherSubState &other)
const {
return Block<const State::Covariance,CovarianceDimension,OtherSubState::CovarianceDimension>(state_.getCovariance(), covariance_index_, covariance_index_, getCovarianceDimension(), other.getCovarianceDimension()); }
119 template <
int Size> VectorBlock<const Vector, Size>
getSegment(
IndexType start)
const {
return VectorBlock<const Vector, Size>(state_.getVector(), index_ +
start); }
125 template <
typename VectorType> VectorBlock<VectorType,VectorDimension>
segment(VectorType &vector) {
return VectorBlock<VectorType,VectorDimension>(vector, index_, getVectorDimension()); }
126 template <
typename MatrixType> Block<MatrixType,CovarianceDimension,CovarianceDimension>
block(MatrixType &matrix) {
return Block<MatrixType,CovarianceDimension,CovarianceDimension>(matrix, covariance_index_, covariance_index_, getCovarianceDimension(), getCovarianceDimension()); }
127 template <
typename MatrixType,
typename OtherSubState> Block<MatrixType,CovarianceDimension,OtherSubState::CovarianceDimension>
block(MatrixType &matrix,
const OtherSubState &other) {
return Block<MatrixType,CovarianceDimension,OtherSubState::CovarianceDimension>(matrix, covariance_index_, other.getCovarianceIndex(), getCovarianceDimension(), other.getCovarianceDimension()); }
128 template <
typename MatrixType> Block<MatrixType,CovarianceDimension,MatrixType::ColsAtCompileTime>
rows(MatrixType &matrix) {
return Block<MatrixType,CovarianceDimension,MatrixType::ColsAtCompileTime>(matrix, covariance_index_, 0, getCovarianceDimension(), matrix.cols()); }
129 template <
typename MatrixType> Block<MatrixType,MatrixType::RowsAtCompileTime,CovarianceDimension>
cols(MatrixType &matrix) {
return Block<MatrixType,MatrixType::RowsAtCompileTime,CovarianceDimension>(matrix, 0, covariance_index_, matrix.rows(), getCovarianceDimension()); }
131 extern template class SubState_<Dynamic,Dynamic>;
138 , dimension_(vector_dimension)
139 , covariance_dimension_(covariance_dimension)
151 template <
int _VectorDimension,
int _CovarianceDimension>
161 template <
int _VectorDimension,
int _CovarianceDimension>
166 template <
int _VectorDimension,
int _CovarianceDimension>
168 return addSubState<_VectorDimension, _CovarianceDimension>(0, name);
171 template <
int _VectorDimension,
int _CovarianceDimension>
174 if (!name.empty()) substate = getSubState<_VectorDimension, _CovarianceDimension>(name);
178 substates_.push_back(boost::static_pointer_cast<SubState>(substate));
189 #endif // HECTOR_POSE_ESTIMATION_SUBSTATE_H