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

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù)

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

以下所有內(nèi)容均為高翔大神所注的《自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù)》中的內(nèi)容

2D SLAM

  • 作者實(shí)現(xiàn)了一個(gè)2D 的ICP,包含了點(diǎn)到線的處理方式
  • 實(shí)現(xiàn)了一個(gè)似然場(chǎng)法的配準(zhǔn),介紹了相關(guān)公式,使用了高斯牛頓法和g2o進(jìn)行求解,其中g(shù)2o中有對(duì)核函數(shù)的使用

3D SLAM

ICP

  • 實(shí)現(xiàn)了一個(gè)并發(fā)的ICP配準(zhǔn)
  • 實(shí)現(xiàn)了點(diǎn)到面的ICP
  • 實(shí)現(xiàn)了點(diǎn)到線的ICP
  • 點(diǎn)到線的ICP的結(jié)果與點(diǎn)到點(diǎn)的ICP相當(dāng),略差于點(diǎn)到面的、在三中算法中,點(diǎn)到面的ICP在精度和效率上都具有一定優(yōu)勢(shì),明顯快于PCL的內(nèi)置版本,單其單次迭代中計(jì)算量明顯大于原始ICP

NDT

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人

本書(shū)各配準(zhǔn)算法與PCL的對(duì)比

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人

增量式NDT

需要解決兩個(gè)問(wèn)題:

  1. 每個(gè)體素內(nèi)的高斯參數(shù)如何改變
  2. 如何維護(hù)不斷增加的體素

高斯分布的增量更新

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人

體素的增量維護(hù)

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人

融合導(dǎo)航

1. EKF和優(yōu)化的關(guān)系

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人

2. 組合導(dǎo)航eskf中的預(yù)測(cè)部分,主要是F矩陣的構(gòu)建

template <typename S>
bool ESKF<S>::Predict(const IMU& imu) {
    assert(imu.timestamp_ >= current_time_);

    double dt = imu.timestamp_ - current_time_;
    if (dt > (5 * options_.imu_dt_) || dt < 0) {
        // 時(shí)間間隔不對(duì),可能是第一個(gè)IMU數(shù)據(jù),沒(méi)有歷史信息
        LOG(INFO) << "skip this imu because dt_ = " << dt;
        current_time_ = imu.timestamp_;
        return false;
    }

    // nominal state 遞推
    VecT new_p = p_ + v_ * dt + 0.5 * (R_ * (imu.acce_ - ba_)) * dt * dt + 0.5 * g_ * dt * dt;
    VecT new_v = v_ + R_ * (imu.acce_ - ba_) * dt + g_ * dt;
    SO3 new_R = R_ * SO3::exp((imu.gyro_ - bg_) * dt);

    R_ = new_R;
    v_ = new_v;
    p_ = new_p;
    // 其余狀態(tài)維度不變

    // error state 遞推
    // 計(jì)算運(yùn)動(dòng)過(guò)程雅可比矩陣 F,見(jiàn)(3.47)
    // F實(shí)際上是稀疏矩陣,也可以不用矩陣形式進(jìn)行相乘而是寫(xiě)成散裝形式,這里為了教學(xué)方便,使用矩陣形式
    Mat18T F = Mat18T::Identity();                                                 // 主對(duì)角線
    F.template block<3, 3>(0, 3) = Mat3T::Identity() * dt;                         // p 對(duì) v
    F.template block<3, 3>(3, 6) = -R_.matrix() * SO3::hat(imu.acce_ - ba_) * dt;  // v對(duì)theta
    F.template block<3, 3>(3, 12) = -R_.matrix() * dt;                             // v 對(duì) ba
    F.template block<3, 3>(3, 15) = Mat3T::Identity() * dt;                        // v 對(duì) g
    F.template block<3, 3>(6, 6) = SO3::exp(-(imu.gyro_ - bg_) * dt).matrix();     // theta 對(duì) theta
    F.template block<3, 3>(6, 9) = -Mat3T::Identity() * dt;                        // theta 對(duì) bg

    // mean and cov prediction
    dx_ = F * dx_;  // 這行其實(shí)沒(méi)必要算,dx_在重置之后應(yīng)該為零,因此這步可以跳過(guò),但F需要參與Cov部分計(jì)算,所以保留
    cov_ = F * cov_.eval() * F.transpose() + Q_;
    current_time_ = imu.timestamp_;
    return true;
}

3. 以下是速度量測(cè),主要是H矩陣的構(gòu)建

template <typename S>
bool ESKF<S>::ObserveWheelSpeed(const Odom& odom) {
    assert(odom.timestamp_ >= current_time_);
    // odom 修正以及雅可比
    // 使用三維的輪速觀測(cè),H為3x18,大部分為零
    Eigen::Matrix<S, 3, 18> H = Eigen::Matrix<S, 3, 18>::Zero();
    H.template block<3, 3>(0, 3) = Mat3T::Identity();

    // 卡爾曼增益
    Eigen::Matrix<S, 18, 3> K = cov_ * H.transpose() * (H * cov_ * H.transpose() + odom_noise_).inverse();

    // velocity obs
    double velo_l = options_.wheel_radius_ * odom.left_pulse_ / options_.circle_pulse_ * 2 * M_PI / options_.odom_span_;
    double velo_r = options_.wheel_radius_ * odom.right_pulse_ / options_.circle_pulse_ * 2 * M_PI / options_.odom_span_;
    double average_vel = 0.5 * (velo_l + velo_r);

    VecT vel_odom(average_vel, 0.0, 0.0);
    VecT vel_world = R_ * vel_odom;

    dx_ = K * (vel_world - v_);//v_是狀態(tài)遞推后的速度

    // update cov
    cov_ = (Mat18T::Identity() - K * H) * cov_;

    UpdateAndReset();
    return true;
}

4. 以下是GPS的量測(cè),主要任然是H矩陣的構(gòu)建

template <typename S>
bool ESKF<S>::ObserveGps(const GNSS& gnss) {
    /// GNSS 觀測(cè)的修正
    assert(gnss.unix_time_ >= current_time_);

    if (first_gnss_) {
        R_ = gnss.utm_pose_.so3();
        p_ = gnss.utm_pose_.translation();
        first_gnss_ = false;
        current_time_ = gnss.unix_time_;
        return true;
    }

    assert(gnss.heading_valid_);
    ObserveSE3(gnss.utm_pose_, options_.gnss_pos_noise_, options_.gnss_ang_noise_);
    current_time_ = gnss.unix_time_;

    return true;
}

template <typename S>
bool ESKF<S>::ObserveSE3(const SE3& pose, double trans_noise, double ang_noise) {
    /// 既有旋轉(zhuǎn),也有平移
    /// 觀測(cè)狀態(tài)變量中的p, R,H為6x18,其余為零
    Eigen::Matrix<S, 6, 18> H = Eigen::Matrix<S, 6, 18>::Zero();
    H.template block<3, 3>(0, 0) = Mat3T::Identity();  // P部分
    H.template block<3, 3>(3, 6) = Mat3T::Identity();  // R部分(3.66)

    // 卡爾曼增益和更新過(guò)程
    Vec6d noise_vec;
    noise_vec << trans_noise, trans_noise, trans_noise, ang_noise, ang_noise, ang_noise;

    Mat6d V = noise_vec.asDiagonal();
    Eigen::Matrix<S, 18, 6> K = cov_ * H.transpose() * (H * cov_ * H.transpose() + V).inverse();

    // 更新x和cov
    Vec6d innov = Vec6d::Zero();
    innov.template head<3>() = (pose.translation() - p_);          // 平移部分
    innov.template tail<3>() = (R_.inverse() * pose.so3()).log();  // 旋轉(zhuǎn)部分(3.67)

    dx_ = K * innov;
    cov_ = (Mat18T::Identity() - K * H) * cov_;

    UpdateAndReset();
    return true;
}

IMU預(yù)積分

  • 書(shū)中有IMU預(yù)積分所有的公式推導(dǎo),包括了預(yù)積分計(jì)算公式,預(yù)積分相較于狀態(tài)量的雅克比矩陣公式,誤差傳播公式等等

學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù),學(xué)習(xí),自動(dòng)駕駛,機(jī)器人文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-787804.html

/**
 * IMU 預(yù)積分器
 *
 * 調(diào)用Integrate來(lái)插入新的IMU讀數(shù),然后通過(guò)Get函數(shù)得到預(yù)積分的值
 * 雅可比也可以通過(guò)本類(lèi)獲得,可用于構(gòu)建g2o的邊類(lèi)
 */
class IMUPreintegration {
   public:
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    /// 參數(shù)配置項(xiàng)
    /// 初始的零偏需要設(shè)置,其他可以不改
    struct Options {
        Options() {}
        Vec3d init_bg_ = Vec3d::Zero();  // 初始零偏
        Vec3d init_ba_ = Vec3d::Zero();  // 初始零偏
        double noise_gyro_ = 1e-2;       // 陀螺噪聲,標(biāo)準(zhǔn)差
        double noise_acce_ = 1e-1;       // 加計(jì)噪聲,標(biāo)準(zhǔn)差
    };

    IMUPreintegration(Options options = Options());

    /**
     * 插入新的IMU數(shù)據(jù)
     * @param imu   imu 讀數(shù)
     * @param dt    時(shí)間差
     */
    void Integrate(const IMU &imu, double dt);

    /**
     * 從某個(gè)起始點(diǎn)開(kāi)始預(yù)測(cè)積分之后的狀態(tài)
     * @param start 起始時(shí)時(shí)刻狀態(tài)
     * @return  預(yù)測(cè)的狀態(tài)
     */
    NavStated Predict(const NavStated &start, const Vec3d &grav = Vec3d(0, 0, -9.81)) const;

    /// 獲取修正之后的觀測(cè)量,bias可以與預(yù)積分時(shí)期的不同,會(huì)有一階修正
    SO3 GetDeltaRotation(const Vec3d &bg);
    Vec3d GetDeltaVelocity(const Vec3d &bg, const Vec3d &ba);
    Vec3d GetDeltaPosition(const Vec3d &bg, const Vec3d &ba);

   public:
    double dt_ = 0;                          // 整體預(yù)積分時(shí)間
    Mat9d cov_ = Mat9d::Zero();              // 累計(jì)噪聲矩陣
    Mat6d noise_gyro_acce_ = Mat6d::Zero();  // 測(cè)量噪聲矩陣

    // 零偏
    Vec3d bg_ = Vec3d::Zero();
    Vec3d ba_ = Vec3d::Zero();

    // 預(yù)積分觀測(cè)量
    SO3 dR_;
    Vec3d dv_ = Vec3d::Zero();
    Vec3d dp_ = Vec3d::Zero();

    // 雅可比矩陣
    Mat3d dR_dbg_ = Mat3d::Zero();
    Mat3d dV_dbg_ = Mat3d::Zero();
    Mat3d dV_dba_ = Mat3d::Zero();
    Mat3d dP_dbg_ = Mat3d::Zero();
    Mat3d dP_dba_ = Mat3d::Zero();
};

到了這里,關(guān)于學(xué)習(xí)記錄-自動(dòng)駕駛與機(jī)器人中的SLAM技術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ChatGPT +工業(yè)機(jī)器人/自動(dòng)駕駛控制器的一些嘗試

    ChatGPT +工業(yè)機(jī)器人/自動(dòng)駕駛控制器的一些嘗試

    ChatGPT 的功能目前已擴(kuò)展到機(jī)器人領(lǐng)域,可以用語(yǔ)言直觀控制如機(jī)械臂、無(wú)人機(jī)、家庭輔助機(jī)器人等的多個(gè)平臺(tái)。這會(huì)改變?nèi)藱C(jī)交互的未來(lái)形式嗎? 你可曾想過(guò)用自己的話告訴機(jī)器人該做什么,就像對(duì)人說(shuō)話那樣? 比如說(shuō),只要告訴你的家庭助理機(jī)器人「請(qǐng)幫我熱一下午餐」

    2023年04月08日
    瀏覽(25)
  • 機(jī)器人SLAM導(dǎo)航學(xué)習(xí)-All in one

    機(jī)器人SLAM導(dǎo)航學(xué)習(xí)-All in one

    參考引用 張虎,機(jī)器人SLAM導(dǎo)航核心技術(shù)與實(shí)戰(zhàn)[M]. 機(jī)械工業(yè)出版社,2022. 本博客未詳盡之處可自行查閱上述書(shū)籍 移動(dòng)機(jī)器人激光SLAM導(dǎo)航(文章鏈接匯總) 1. ROS 入門(mén)必備知識(shí) ROS學(xué)習(xí)筆記(文章鏈接匯總) 2. C++ 編程范式 《21天學(xué)通C++》讀書(shū)筆記(文章鏈接匯總) 3. OpenCV 圖像

    2024年02月16日
    瀏覽(45)
  • RPA自動(dòng)化中的機(jī)器人開(kāi)發(fā):如何開(kāi)發(fā)機(jī)器人軟件

    隨著工業(yè)4.0時(shí)代的到來(lái),企業(yè)對(duì)于提高生產(chǎn)效率、降低成本的需求越來(lái)越強(qiáng)烈,機(jī)器人自動(dòng)化技術(shù)作為其中的一部分,逐漸被廣泛應(yīng)用。機(jī)器人自動(dòng)化技術(shù)的其中一個(gè)分支——機(jī)器人軟件,對(duì)于機(jī)器人的開(kāi)發(fā)和應(yīng)用具有重要的推動(dòng)作用。本文旨在介紹如何進(jìn)行機(jī)器人軟件的開(kāi)

    2024年02月13日
    瀏覽(33)
  • ROS學(xué)習(xí)筆記08、機(jī)器人導(dǎo)航仿真(slam、map_server、amcl、move_base與導(dǎo)航消息介紹)

    ROS學(xué)習(xí)筆記08、機(jī)器人導(dǎo)航仿真(slam、map_server、amcl、move_base與導(dǎo)航消息介紹)

    馬上開(kāi)學(xué),目前學(xué)校很多實(shí)驗(yàn)室都是人工智能這塊,大部分都是和機(jī)器人相關(guān),然后軟件這塊就是和cv、ros相關(guān),就打算開(kāi)始學(xué)習(xí)一下。 本章節(jié)是虛擬機(jī)安裝Ubuntu18.04以及安裝ROS的環(huán)境。 學(xué)習(xí)教程:【Autolabor初級(jí)教程】ROS機(jī)器人入門(mén),博客中一些知識(shí)點(diǎn)是來(lái)源于趙老師的筆記

    2023年04月12日
    瀏覽(25)
  • [機(jī)器人相關(guān)學(xué)習(xí)記錄](méi) KUKA 的仿真工具

    [機(jī)器人相關(guān)學(xué)習(xí)記錄](méi) KUKA 的仿真工具

    KUKA Sim Pro v3.1.2 和 Workvisual 的區(qū)別 項(xiàng)目 KUKA Sim Pro v3.1.2 Workvisual 功能 專(zhuān)注于機(jī)器人仿真和編程 集成機(jī)器人仿真、編程和監(jiān)控 適用場(chǎng)景 適用于機(jī)器人研發(fā)、調(diào)試和教育 適用于機(jī)器人生產(chǎn)、調(diào)試、維修和管理 界面 簡(jiǎn)潔,側(cè)重于機(jī)器人仿真和編程操作 更為全面,包含機(jī)器人狀態(tài)

    2024年04月27日
    瀏覽(61)
  • 機(jī)器人SLAM與自主導(dǎo)航

    機(jī)器人SLAM與自主導(dǎo)航

    機(jī)器人技術(shù)的迅猛發(fā)展,促使機(jī)器人逐漸走進(jìn)了人們的生活,服務(wù)型室內(nèi)移動(dòng)機(jī)器人更是獲得了廣泛的關(guān)注。但室內(nèi)機(jī)器人的普及還存在許多亟待解決的問(wèn)題,定位與導(dǎo)航就是其中的關(guān)鍵問(wèn)題之一。在這類(lèi)問(wèn)題的研究中,需要把握三個(gè)重點(diǎn):一是地圖精確建模;二是機(jī)器人準(zhǔn)

    2024年02月08日
    瀏覽(24)
  • 機(jī)器人強(qiáng)化學(xué)習(xí)環(huán)境mujoco官方文檔學(xué)習(xí)記錄(一)——XML

    鑒于研究生課題需要,開(kāi)始在mujoco中配置仿真環(huán)境。而官方文檔中各種對(duì)象參數(shù)紛繁復(fù)雜,且涉及mujoco底層計(jì)算,不便于初學(xué)者進(jìn)行開(kāi)發(fā)設(shè)計(jì)。因此本文將MJCF模型的常用對(duì)象參數(shù)進(jìn)行總結(jié)。 本文檔僅供學(xué)習(xí)參考,如有問(wèn)題歡迎大家學(xué)習(xí)交流。 本章是MuJoCo中使用的MJCF建模語(yǔ)言

    2024年02月02日
    瀏覽(81)
  • 【RTB機(jī)器人工具箱學(xué)習(xí)記錄】軌跡規(guī)劃實(shí)例

    【RTB機(jī)器人工具箱學(xué)習(xí)記錄】軌跡規(guī)劃實(shí)例

    給定位置: 位姿插值: trinterp() trinterp(T0, T1, M) ? T0:初始變換矩陣 ? T1:結(jié)束變換矩陣 ? M: 線性插值軌跡動(dòng)畫(huà):(軌跡如上圖左所示) 五次多項(xiàng)式插值軌跡動(dòng)畫(huà):(軌跡如上圖右所示,和上面用mtraj遍歷方式的軌跡相同) 笛卡爾軌跡 ctraj() : TC = ctraj(T0, T1, N) ? T0:初始變

    2023年04月22日
    瀏覽(37)
  • 移動(dòng)機(jī)器人激光SLAM導(dǎo)航(五):Cartographer SLAM 篇

    移動(dòng)機(jī)器人激光SLAM導(dǎo)航(五):Cartographer SLAM 篇

    參考 Cartographer 官方文檔 Cartographer 從入門(mén)到精通 1.1 前置條件 推薦在剛裝好的 Ubuntu 16.04 或 Ubuntu 18.04 上進(jìn)行編譯 ROS 安裝:ROS學(xué)習(xí)1:ROS概述與環(huán)境搭建 1.2 依賴(lài)庫(kù)安裝 資源下載完解壓并執(zhí)行以下指令 https://pan.baidu.com/s/1LWqZ4SOKn2sZecQUDDXXEw?pwd=j6cf 1.3 編譯 本文只編譯 cartographer

    2024年02月21日
    瀏覽(19)
  • 機(jī)器人學(xué)|手機(jī)玻璃加工全自動(dòng)化——AGV+機(jī)器人+視覺(jué)解決方案(含雙目三維視覺(jué)SLAM建圖、MATLAB的AGV路徑規(guī)劃導(dǎo)航避障、六軸機(jī)械手臂建模與路徑規(guī)劃仿真,附帶源代碼)

    機(jī)器人學(xué)|手機(jī)玻璃加工全自動(dòng)化——AGV+機(jī)器人+視覺(jué)解決方案(含雙目三維視覺(jué)SLAM建圖、MATLAB的AGV路徑規(guī)劃導(dǎo)航避障、六軸機(jī)械手臂建模與路徑規(guī)劃仿真,附帶源代碼)

    文章目錄 前言 一、國(guó)內(nèi)外移動(dòng)操作機(jī)器人現(xiàn)狀 二、方案概述 三、主要部件BOM清單 1.差動(dòng)輪式AGV: 2.UR5系列機(jī)械臂 3.Cognex智能相機(jī) 4.加工臺(tái) 5.控制系統(tǒng) 6.電源和電纜 四、技術(shù)點(diǎn)及工作流程 五、計(jì)算自動(dòng)化方案與人工方案成本收回時(shí)間 1.自動(dòng)化方案成本分析: 2.人工方案成本

    2024年01月22日
    瀏覽(16)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包