Gaobo SLAM14 セレス講義実戦問題デバッグ記録

        最近、Gaobo の第 14 回講義を勉強し、チュートリアルの実際の内容に従って自分でコードを入力したところ、セレの実戦部分で問題が発生しました。プログラムは ceres を使用して最小二乗問題を解き、曲線に適合させます。プログラムはコンパイルされて正常に実行されますが、最適化の結果は、次の図に示すように、予想されるものとは大きく異なります。

 チュートリアルの最適化結果は a = 1、b = 2、c = 1 に近いはずですが、私の結果は 2 -1 1 です。

        そこで、gdb を使用してプログラムをデバッグしたところ、データ ポイントの x 値がすべて 0 であることがわかりました。

 

         そこで、x によって生成されたコードを調べたところ、問題が見つかりました。i はシェーピング、100 はシェーピング、そして商工会議所はシェーピングを強制されているため、大量の 0 が発生します。i / 100.0 に変更すると、このときの商は double 型になり、最終的に演算は成功し、正しい結果が得られます。

         今回のミスは非常に初歩的なミスでしたが、プログラムに問題がある場合は頻繁にデバッグする必要があることを教訓にし、今後はデバッグ能力を向上させなければなりません。

 

おすすめ

転載: blog.csdn.net/qq_16759187/article/details/127656735