国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】開源:ceres和g2o非線性優(yōu)化庫配置使用

這篇具有很好參考價(jià)值的文章主要介紹了【C++】開源:ceres和g2o非線性優(yōu)化庫配置使用。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??★,°:.☆( ̄▽ ̄)/$:.°★ ??
這篇文章主要介紹ceres和g2o非線性優(yōu)化庫配置使用。
無專精則不能成,無涉獵則不能通?!簡⒊?/font>
歡迎來到我的博客,一起學(xué)習(xí),共同進(jìn)步。
喜歡的朋友可以關(guān)注一下,下次更新不迷路??

??1. 項(xiàng)目介紹

ceres項(xiàng)目Github地址:https://github.com/ceres-solver/ceres-solver

g2o項(xiàng)目Github地址:https://github.com/RainerKuemmerle/g2o

Ceres Solver和g2o都是用于求解非線性最小二乘問題的C++庫,主要用于圖優(yōu)化等領(lǐng)域。它們有一些共同點(diǎn),但也有一些區(qū)別。

Ceres Solver:

  • Ceres Solver是一個(gè)功能強(qiáng)大的C++庫,專門用于求解大規(guī)模稀疏和稠密非線性最小二乘問題。
  • 它支持各種類型的誤差函數(shù),如光束法平差、非線性回歸、SLAM、視覺定位等。
  • Ceres Solver提供了多種優(yōu)化算法,包括LM(Levenberg-Marquardt)、GN(Gauss-Newton)等,并且可根據(jù)問題特點(diǎn)進(jìn)行自定義優(yōu)化策略。
  • 它具有靈活的接口和標(biāo)準(zhǔn)化的問題表示方式,可以輕松地與其他庫進(jìn)行集成。
  • Ceres Solver支持自動求導(dǎo),可以通過使用用戶提供的誤差函數(shù)的解析梯度或數(shù)值微分來計(jì)算導(dǎo)數(shù)。
  • Ceres Solver是開源的,遵循BSD許可證。

g2o:

  • g2o是一個(gè)通用的C++庫,用于求解圖優(yōu)化問題,例如視覺SLAM、3D重建、機(jī)器人運(yùn)動估計(jì)等。
  • g2o支持稀疏矩陣和濾波器算法,并提供了靈活的接口和模塊化設(shè)計(jì)。
  • 它支持多種頂點(diǎn)和邊類型,并允許用戶自定義頂點(diǎn)、邊類型和優(yōu)化策略。
  • g2o提供了多種優(yōu)化算法,如GN(Gauss-Newton)、LM(Levenberg-Marquardt)等。
  • g2o也是開源的,遵循BSD許可證。

Ceres Solver和g2o在SLAM、機(jī)器人運(yùn)動估計(jì)等領(lǐng)域得到了廣泛應(yīng)用。

??2. 環(huán)境配置

下面進(jìn)行環(huán)境配置:

ceres:

# 安裝依賴
sudo apt install cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev -y
# ceres-1.14
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar -zxvf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build && cd build
cmake .. && make
sudo make install

編譯:g++ -o main main.cpp -lceres -lglog && ./main

g2o:

# 安裝依賴
sudo apt-get install libeigen3-dev libsuitesparse-dev qt5-qmake libqglviewer-dev-qt5
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build && cd build
cmake .. && make
sudo make install

??3. 使用說明

下面進(jìn)行使用分析:

ceres:

構(gòu)建代價(jià)函數(shù)Cost_Functor:

// 定義一個(gè)實(shí)例化時(shí)才知道的類型T
template <typename T>

// 運(yùn)算符()的重載,用來得到殘差fi
bool operator()(const T* const x, T* residual) const {
     residual[0] = T(10.0) - x[0];
     return true;
   }

構(gòu)建最小二乘問題problem:

Problem problem;
CostFunction* cost_function = new AutoDiffCostFunction<CostFunctor, 1, 1>(new CostFunctor);
problem.AddResidualBlock(cost_function, NULL, &x);

求解器參數(shù)配置Solver:

Solver::Options options;
options.linear_solver_type = ceres::DENSE_QR;
options.minimizer_progress_to_stdout = true;
Solver::Summary summary;
Solve(options, &problem, &summary);
cout << summary.BriefReport() << "\n";//輸出優(yōu)化的簡要信息

用Ceres Solver庫解決一個(gè)簡單的非線性最小二乘問題示例:

#include <iostream>
#include <ceres/ceres.h>

// 代價(jià)函數(shù)類定義
struct CostFunctor {
  template <typename T>
  bool operator()(const T* const x, T* residual) const {
    // 定義目標(biāo)函數(shù):f(x) = 10 - x
    residual[0] = T(10.0) - x[0];
    return true;
  }
};

int main(int argc, char** argv) {
  // 初始化問題
  ceres::Problem problem;

  // 添加一個(gè)殘差塊
  double initial_x = 5.0;  // 初始值
  ceres::CostFunction* cost_function =
      new ceres::AutoDiffCostFunction<CostFunctor, 1, 1>(new CostFunctor);
  problem.AddResidualBlock(cost_function, nullptr, &initial_x);

  // 配置求解器選項(xiàng)
  ceres::Solver::Options options;
  options.linear_solver_type = ceres::DENSE_QR;
  options.minimizer_progress_to_stdout = true;

  // 求解問題
  ceres::Solver::Summary summary;
  ceres::Solve(options, &problem, &summary);

  // 打印結(jié)果
  std::cout << summary.BriefReport() << "\n";
  std::cout << "Final x = " << initial_x << "\n";

  return 0;
}

【C++】開源:ceres和g2o非線性優(yōu)化庫配置使用,# c++開源項(xiàng)目學(xué)習(xí),c++,開源,開發(fā)語言

以上。文章來源地址http://www.zghlxwxcb.cn/news/detail-634367.html

到了這里,關(guān)于【C++】開源:ceres和g2o非線性優(yōu)化庫配置使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 最小二乘問題和非線性優(yōu)化

    最小二乘問題和非線性優(yōu)化

    轉(zhuǎn)載自此處,修正了一點(diǎn)小錯(cuò)誤。 在求解 SLAM 中的最優(yōu)狀態(tài)估計(jì)問題時(shí),我們一般會得到兩個(gè)變量,一個(gè)是由傳感器獲得的實(shí)際觀測值 z boldsymbol{z} z ,一個(gè)是根據(jù)目前估計(jì)的狀態(tài)量和觀測模型計(jì)算出來的預(yù)測值 h ( x ) h(boldsymbol{x}) h ( x ) 。求解最優(yōu)狀態(tài)估計(jì)問題時(shí)通常我們

    2024年02月13日
    瀏覽(21)
  • matlab使用教程(22)—非線性優(yōu)化函數(shù)的設(shè)置

    matlab使用教程(22)—非線性優(yōu)化函數(shù)的設(shè)置

    ????????可以使用由 optimset 函數(shù)創(chuàng)建的 options 結(jié)構(gòu)體來指定優(yōu)化參數(shù)。然后,可以將 options 作為輸入傳遞給優(yōu)化函數(shù),例如,通過使用以下語法調(diào)用 fminbnd x = fminbnd(fun,x1,x2,options) ????????或使用以下語法調(diào)用 fminsearch x = fminsearch(fun,x0,options) ????????例如,要顯示算

    2024年02月11日
    瀏覽(20)
  • 非線性最優(yōu)化問題求解器Ipopt介紹

    Ipopt(Interior Point OPTimizer) 是求解大規(guī)模非線性最優(yōu)化問題的求解軟件??梢郧蠼馊缦滦问降淖顑?yōu)化問題的(局部)最優(yōu)解。 m i n ? x ∈ R n ??? f ( x ) s . t . g L ≤ g ( x ) ≤ g U x L ≤ x ≤ x U (0) underbrace{min}_ {x in R?} , , , f(x) \\\\ s.t. g_L ≤ g(x) ≤ g_U \\\\ x_L ≤ x ≤ x_U tag{0} x ∈ R

    2024年01月20日
    瀏覽(25)
  • 自學(xué)SLAM(8)《第四講:相機(jī)模型與非線性優(yōu)化》作業(yè)

    自學(xué)SLAM(8)《第四講:相機(jī)模型與非線性優(yōu)化》作業(yè)

    小編研究生的研究方向是視覺SLAM,目前在自學(xué),本篇文章為初學(xué)高翔老師課的第四次作業(yè)。 現(xiàn)實(shí)?活中的圖像總存在畸變。原則上來說,針孔透視相機(jī)應(yīng)該將三維世界中的直線投影成直線,但是當(dāng)我們使???和魚眼鏡頭時(shí),由于畸變的原因,直線在圖像?看起來是扭曲的

    2024年02月05日
    瀏覽(26)
  • 詳細(xì)介紹如何使用Ipopt非線性求解器求解帶約束的最優(yōu)化問題

    詳細(xì)介紹如何使用Ipopt非線性求解器求解帶約束的最優(yōu)化問題

    ?? 本文中將詳細(xì)介紹如何使用Ipopt非線性求解器求解帶約束的最優(yōu)化問題,結(jié)合給出的帶約束的最優(yōu)化問題示例,給出相應(yīng)的完整的C++程序,并給出詳細(xì)的解釋和注釋,以及編譯規(guī)則等 ?? 一、Ipopt庫的安裝和測試 ?? 本部分內(nèi)容在之前的文章《Ubuntu20.04安裝Ipopt的流程介

    2024年02月08日
    瀏覽(41)
  • 線性方程組AX=b,AX=0以及非線性方程組的最小二乘解(解方程組->優(yōu)化問題)

    線性方程組AX=b,AX=0以及非線性方程組的最小二乘解(解方程組->優(yōu)化問題)

    超定方程組無解是因?yàn)榉匠探M包含了過多的約束條件,無法滿足所有的約束條件,在這種情況下,方程組的某些方程必然是矛盾的,也就是說,他們描述的條件是不兼容的,無法同時(shí)滿足。 所以求解超定方程組其實(shí)是一個(gè)擬合問題,其基本思想是最小化所有方程的誤差平方和

    2024年02月08日
    瀏覽(22)
  • 計(jì)算機(jī)視覺與深度學(xué)習(xí) | 非線性優(yōu)化理論:圖優(yōu)化、高斯牛頓法和列文伯格-馬夸爾特算法

    ===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 計(jì)算機(jī)視覺與深度學(xué)習(xí) | SLAM國內(nèi)外研究現(xiàn)狀 計(jì)算機(jī)視覺與深度學(xué)習(xí) | 視覺慣性SLAM的基礎(chǔ)理論 計(jì)算機(jī)

    2024年02月08日
    瀏覽(20)
  • MATLAB 之 非線性方程數(shù)值求解、最優(yōu)化問題求解和常微分方程初值問題的數(shù)值求解

    MATLAB 之 非線性方程數(shù)值求解、最優(yōu)化問題求解和常微分方程初值問題的數(shù)值求解

    非線性方程的求根方法很多,常用的有牛頓迭代法,但該方法需要求原方程的導(dǎo)數(shù),而在實(shí)際運(yùn)算中這一條件有時(shí) 是不能滿足的,所以又出現(xiàn)了弦截法、二分法等其他方法。 在 MATLAB 中,非線性方程的求解和最優(yōu)化問題往往需要調(diào)用最優(yōu)化工具箱來解決。優(yōu)化工具箱提供了一

    2024年02月08日
    瀏覽(27)
  • 【Matlab算法】L-M法求解非線性最小二乘優(yōu)化問題(附L-M法MATLAB代碼)

    博主 一頭小山豬 目前已開放所有文章:小山豬——經(jīng)典算法專欄 活動地址:CSDN21天學(xué)習(xí)挑戰(zhàn)賽 L-M法 (Levenberg-Marquardt法)原理 當(dāng)矩陣 ( J k ) T J k left(J_{k}right)^{T} J_{k} ( J k ? ) T J k ? 為病態(tài)矩陣時(shí),用G-N算法可能得不到正確的解,甚至當(dāng) ( J k ) T J k left(J_{k}right)^{T} J_{k} ( J

    2024年02月02日
    瀏覽(30)
  • 【視覺SLAM入門】5.2. 2D-3D PNP 3D-3D ICP BA非線性優(yōu)化方法 數(shù)學(xué)方法SVD DLT

    【視覺SLAM入門】5.2. 2D-3D PNP 3D-3D ICP BA非線性優(yōu)化方法 數(shù)學(xué)方法SVD DLT

    前置事項(xiàng): 該問題描述為:當(dāng)我們知道n 個(gè) 3D 空間點(diǎn)以及它們的投影位置時(shí),如何估計(jì)相機(jī)所在的位姿 1.1.1 DLT(直接線性變換法) 解決的問題:已知空間點(diǎn) P = ( X , Y , Z , 1 ) T P = (X, Y, Z, 1)^T P = ( X , Y , Z , 1 ) T 和它投影點(diǎn) x 1 = ( u 1 , v 1 , 1 ) T x_1 = (u_1, v_1, 1)^T x 1 ? = ( u 1 ? , v 1

    2024年02月12日
    瀏覽(88)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包