ceres-solver 不常用函数记录
SetParameterBlockConstant()
// 函数原型
void ceres::Problem::SetParameterBlockConstant(const double *values)
//Hold the indicated parameter block constant during optimization.
函数作用:将传入的指针所指参数块设置为常量,在优化过程中不变。
HasParameterBlock()
// 函数原型
bool ceres::Problem::HasParameterBlock(const double *values) const;
// Is the given parameter block present in this problem or not?
函数作用:确定传入指针所指的参数块是否已经加入到待求解问题中?
我的应用:加入了一大堆外方位元素观测值,最后想将固定序号的几个观测值设置为常量,但是在构建待求解问题的过程中可能由于精度不高而去掉了某些外方位元素,这时如果直接设置为常量块,ceres会报错。
所以先用该方法判断要设置为常量的参数块是否存在,如果存在才调用SetParameterBlockConstant()
SetParameterLowerBound()\SetParameterUpperBound()
// 函数原型
void ceres::Problem::SetParameterLowerBound(double *values, int index, double lower_bound)
void ceres::Problem::SetParameterUpperBound(double *values, int index, double upper_bound)
//Set the lower/upper bound for the parameter at position "index".
函数作用:为指定参数块的指定位置参数设置上下界,在优化时将保证其值不超界。