高博SLAM14讲ceres实战问题调试记录

        最近在学高博的14讲,跟着教程的实战内容自己敲代码,到ceres实战的部分遇到了问题。程序是用ceres解决一个最小二乘问题,来拟合曲线,程序编译运行都通过了,但是优化结果与预期有很大差异,如图:

 教程中优化结果应该接近a = 1, b = 2, c = 1,而我的结果是2 -1 1。

        于是用gdb调试程序,发现数据点的x值居然全部是0!

         于是看x生成的代码,发现问题:i是整形,100是整形,商会被强转为整形,于是得到一堆0。改为 i / 100.0,这时商是double类型,最后运行成功,结果正确。

         这次的错误虽然很基本,但是由此得到教训,程序出问题要勤调试,今后要多多提升自己debug能力。

猜你喜欢

转载自blog.csdn.net/qq_16759187/article/details/127656735
今日推荐