<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SLAM+語音機器人DIY系列:(三)感知與大腦——3.輪式里程計與運動控制

       溫馨提示

      本篇文章已經收錄在我最新出版的書籍《機器人SLAM導航核心技術與實戰》,感興趣的讀者可以購買紙質書籍來進行更加深入和系統性的學習,購買鏈接如下:

      摘要                                              

      在我的想象中機器人首先應該能自由的走來走去,然后應該能流利的與主人對話。朝著這個理想,我準備設計一個能自由行走,并且可以與人語音對話的機器人。實現的關鍵是讓機器人能通過傳感器感知周圍環境,并通過機器人大腦處理并輸出反饋和執行動作。本章節涉及到的傳感器有激光雷達、IMU、輪式里程計、麥克風、音響、攝像頭,和用于處理信息的嵌入式主板。關于傳感器的ROS驅動程序開發和在機器人上的使用在后面的章節會展開,本章節重點對機器人傳感器和嵌入式主板進行講解,主要內容:

      1.ydlidar-x4激光雷達

      2.帶自校準九軸數據融合IMU慣性傳感器

      3.輪式里程計與運動控制

      4.音響麥克風與攝像頭

      5.機器人大腦嵌入式主板性能對比

      6.做一個能走路和對話的機器人



      3.輪式里程計與運動控制             

      底盤提供輪式里程計與運動控制,是機器人SLAM建圖與避障導航的基礎。所以對底盤進行了解,和熟悉輪式里程計與運動控制的底層原理是很有益處的。這里以我們的miiboo機器人的底盤為例,對底盤上的輪式里程計和運動控制的原理進行分析。

      3.1.硬件概述                  

      20miiboo機器人底盤

      底盤主要由電機控制板和帶編碼器的減速電機構成,如圖20。電機控制板通過串口與機器人的大腦(如樹莓派3)相連接,通過接收大腦下發的控制指令,利用PID算法對電機進行控制;同時,采集電機上的編碼器數據發送給大腦,利用航跡推演算法得到底盤的里程計信息。

      3.2.輪式里程計與運動控制          

      21)輪式里程計與運動控制

      如圖21,為輪式里程計與運動控制的系統框圖。首先是機器人大腦發送控制命令,其實就是期望左、右電機達到的目標轉速,我們都知道在一個控制系統中,被控對象很難完全按照期望目標來運行,這就需要引入反饋對被控對象進行實時的閉環控制,讓被控對象盡量逼近期望目標,電機控制板主要就是用來實現這個過程。同時,電機控制板還負責對電機編碼信號進行采樣,將單位采樣時間(一般為10ms)內的編碼脈沖累計值作為里程數據發送給機器人大腦,機器人大腦利用航跡推演算法求解出里程計信息。

      通信協議:

      電機控制板與機器人大腦之間采用串口通信。電機左、右輪期望轉速被封裝到串口的字符串中,作為控制命令發送給電機控制板;單位時間(一般10ms)內采樣到的電機編碼脈沖累計值(等效為實際電機速度)作為里程數據,以同樣的方式被封裝到串口的字符串中發送給機器人大腦。可以看出,控制命令與里程數據遵循一樣的封裝協議,協議具體形式如圖22

      (圖22)通信協議

      電機控制:

      (圖23PID算法流程

      電機控制最常用的就是PID控制算法,如圖23PID算法流程。以電機轉速控制為例,r(t)就是給定的目標轉速,c(t)就是電機實際運行時的轉速,通過閉環反饋可以求得r(t)c(t)的偏差值e(t)PID控制算法中的比例(P)、積分(I)、微分(D)調節器利用e(t)生成新的控制量u(t)u(t)通過執行機構(電機驅動器)作用于被控對象(電機),電機的實際運行速度c(t)通過閉環反饋,進入下一次PID調節。就這樣,不斷的通過閉環反饋調節,使電機實際運行速度c(t)最終逼近給定的目標速度r(t)

      在連續和離散時間域上PID會有不同的表現形式,在連續時間域上積分、微分調節通過積分計算、微分計算實現,而在離散時間域上積分、微分調節通過累加和、差分計算實現。由于電機控制需要在程序上進行實現,所以需要采用離散域的PID。按照PID算法生成的調節量的形式,又可以分為位置式PID和增量式PID;位置式PID生成的u(t)為直接的控制量,增量式PID生成的Δu(t)是控制量的修正量,需要疊加上一次的u(t-1)才能作為控制量。離散形式的位置式與增量式PID數學表達如圖24

      (圖24)離散形式的位置式與增量式PID數學表達

      可以看出,利用位置PID的數學表達式經過簡單的變形就能得到增量PID的數學表達式。增量算法不需要做累加,控制量增量的確定僅與最近幾次誤差采樣值有關,計算誤差或計算精度問題,對控制量的計算影響較小。而位置算法要用到過去的誤差的累加值,容易產生大的累加誤差。增量式算法得出的是控制量的增量,例如閥門控制中、只輸出閥門開度的變化部分,誤動作影響小,必要時通過邏輯判斷限制或禁止本次輸出,不會嚴重影響系統的工作。而位置算法的輸出是控制量的全量輸出,誤動作影響大。增量型PID的程序實現,如如圖25。關于PID參數的整定,將放在后面的文章進行詳細講解。

      (圖25)增量型PID的程序實現

      差動兩輪底盤輪式里程計:

      輪式里程計是機器人底盤的重要組成部分,采用航跡推演算法對機器人的位姿進行估計,并對機器人當前的速度、旋轉速度、左右輪速度進行轉換。無論是機器人的定位導航還是普通的運動控制,都需要輪式里程計。

      (圖26)通過航跡推演計算里程計

      如圖26,為通過航跡推演計算里程計的過程。隨時間推移機器人底盤的實時位姿p1p2p3...pn連接起來就形成了機器人的航跡,考慮很短的時間內兩相鄰機器人位姿p1p2,在已知機器人位姿p1和機器人當前左右輪速度vlvr的條件下,利用微積分的思想可以推算出機器人在下一個時刻的位姿p2,通過這樣不斷的推演,就可以計算出機器人當前的位姿以及速度、角速度等信息,這就是所謂的航跡推演。關于航跡推演的具體數學推導和程序實現,將在后面的文章中進行展開講解。

      底盤電機控制板軟件框架:

      (圖27stm32電機控制板軟件架構

      如圖27,為stm32電機控制板軟件架構。底盤中的電機控制與里程數據采集的程序在stm32單片機上實現,TIM1定時器產生周期性的循環,循環中進行電機編碼器數據采集、PID計算、電機速度pwm控制,剩下的就是usart1串口與usart2串口跟機器人大腦之間的通信了,底盤debug接口是用于stm32程序開發階段使用的,所以在機器人正常運行的過程中只需要使用底盤控制接口。關于stm32部分的代碼和對應機器人大腦中ROS驅動代碼將在后面介紹。

      3.3.在機器人中使用底盤           

      通過前面的講解,我們已經對機器人底盤的用途及工作原理有了一定的了解,并且知道了電機控制和里程計的工作過程。這時候肯定很想知道如何在機器人中把底盤使用起來呢?其實很簡單,和激光雷達、IMU這些傳感器一樣,底盤也可以當做一個傳感器來使用,只不過不同之處是這個傳感器與機器人大腦是雙向交互的,機器人大腦向底盤發送控制命令,底盤反饋里程數據給機器人大腦。但是,不論交互的細節如何,只需要裝上底盤的ROS驅動包,上層算法只需要發布和訂閱相應的主題就能達到使用底盤的目的。

      28在機器人中使用底盤

      底盤通過串口與機器人相連接,機器人中通過運行底盤控制ROS驅動,來實現讀取串口的速度反饋,利用航跡推演算法計算得到里程計并發布到/odom這個主題;底盤控制ROS驅動訂閱/cmd_vel主題的運動控制數據,并轉換為速度控制指令通過串口發送給底盤。這樣機器人上的其它節點就可以通過發布/cmd_vel主題來對底盤進行控制,通過訂閱/odom主題獲取底盤的里程計。關于底盤控制ROS驅動、底盤里程計標定、底盤的debug,將在后面的章節中具體講解。

      后記                  

      ------SLAM+語音機器人DIY系列【目錄】快速導覽------

      第1章:Linux基礎

      1.Linux簡介

      2.安裝Linux發行版ubuntu系統

      3.Linux命令行基礎操作

      第2章:ROS入門

      1.ROS是什么

      2.ROS系統整體架構

      3.在ubuntu16.04中安裝ROS kinetic

      4.如何編寫ROS的第一個程序hello_world

      5.編寫簡單的消息發布器和訂閱器

      6.編寫簡單的service和client

      7.理解tf的原理

      8.理解roslaunch在大型項目中的作用

      9.熟練使用rviz

      10.在實際機器人上運行ROS高級功能預覽

      第3章:感知與大腦

      1.ydlidar-x4激光雷達

      2.帶自校準九軸數據融合IMU慣性傳感器

      3.輪式里程計與運動控制

      4.音響麥克風與攝像頭

      5.機器人大腦嵌入式主板性能對比

      6.做一個能走路和對話的機器人

      第4章:差分底盤設計

      1.stm32主控硬件設計

      2.stm32主控軟件設計

      3.底盤通信協議

      4.底盤ROS驅動開發

      5.底盤PID控制參數整定

      6.底盤里程計標

      第5章:樹莓派3開發環境搭建

      1.安裝系統ubuntu_mate_16.04

      2.安裝ros-kinetic

      3.裝機后一些實用軟件安裝和系統設置

      4.PC端與robot端ROS網絡通信

      5.Android手機端與robot端ROS網絡通信

      6.樹莓派USB與tty串口號綁定

      7.開機自啟動ROS節點

      第6章:SLAM建圖與自主避障導航

      1.在機器人上使用傳感器

      2.google-cartographer機器人SLAM建圖

      3.ros-navigation機器人自主避障導航

      4.多目標點導航及任務調度

      5.機器人巡航與現場監控

      第7章:語音交互與自然語言處理

      1.語音交互相關技術

      2.機器人語音交互實現

      3.自然語言處理云計算引擎

      第8章:高階拓展

      1.miiboo機器人安卓手機APP開發

      2.centos7下部署Django(nginx+uwsgi+django+python3)

       


       

      參考文獻

       

      [1] 張虎,機器人SLAM導航核心技術與實戰[M]. 機械工業出版社,2022.

       

       

       

       

      前言
      編程基礎篇
      第1章 ROS入門必備知識
      1.1 ROS簡介 2
      1.1.1 ROS的性能特色 2
      1.1.2 ROS的發行版本 3
      1.1.3 ROS的學習方法 3
      1.2 ROS開發環境的搭建 3
      1.2.1 ROS的安裝 4
      1.2.2 ROS文件的組織方式 4
      1.2.3 ROS網絡通信配置 5
      1.2.4 集成開發工具 5
      1.3 ROS系統架構 5
      1.3.1 從計算圖視角理解ROS架構 6
      1.3.2 從文件系統視角理解ROS架構 7
      1.3.3 從開源社區視角理解ROS架構 8
      1.4 ROS調試工具 8
      1.4.1 命令行工具 9
      1.4.2 可視化工具 9
      1.5 ROS節點通信 10
      1.5.1 話題通信方式 12
      1.5.2 服務通信方式 15
      1.5.3 動作通信方式 19
      1.6 ROS的其他重要概念 25
      1.7 ROS 2.0展望 28
      1.8 本章小結 28
      第2章 C++編程范式
      2.1 C++工程的組織結構 29
      2.1.1 C++工程的一般組織結構 29
      2.1.2 C++工程在機器人中的組織結構 29
      2.2 C++代碼的編譯方法 30
      2.2.1 使用g++編譯代碼 31
      2.2.2 使用make編譯代碼 32
      2.2.3 使用CMake編譯代碼 32
      2.3 C++編程風格指南 33
      2.4 本章小結 34
      第3章 OpenCV圖像處理
      3.1 認識圖像數據 35
      3.1.1 獲取圖像數據 35
      3.1.2 訪問圖像數據 36
      3.2 圖像濾波 37
      3.2.1 線性濾波 37
      3.2.2 非線性濾波 38
      3.2.3 形態學濾波 39
      3.3 圖像變換 40
      3.3.1 射影變換 40
      3.3.2 霍夫變換 42
      3.3.3 邊緣檢測 42
      3.3.4 直方圖均衡 43
      3.4 圖像特征點提取 44
      3.4.1 SIFT特征點 44
      3.4.2 SURF特征點 50
      3.4.3 ORB特征點 52
      3.5 本章小結 54
      硬件基礎篇
      第4章 機器人傳感器
      4.1 慣性測量單元 56
      4.1.1 工作原理 56
      4.1.2 原始數據采集 60
      4.1.3 參數標定 65
      4.1.4 數據濾波 73
      4.1.5 姿態融合 75
      4.2 激光雷達 91
      4.2.1 工作原理 92
      4.2.2 性能參數 94
      4.2.3 數據處理 96
      4.3 相機 100
      4.3.1 單目相機 101
      4.3.2 雙目相機 107
      4.3.3 RGB-D相機 109
      4.4 帶編碼器的減速電機 111
      4.4.1 電機 111
      4.4.2 電機驅動電路 112
      4.4.3 電機控制主板 113
      4.4.4 輪式里程計 117
      4.5 本章小結 118
      第5章 機器人主機
      5.1 X86與ARM主機對比 119
      5.2 ARM主機樹莓派3B+ 120
      5.2.1 安裝Ubuntu MATE 18.04 120
      5.2.2 安裝ROS melodic 122
      5.2.3 裝機軟件與系統設置 122
      5.3 ARM主機RK3399 127
      5.4 ARM主機Jetson-tx2 128
      5.5 分布式架構主機 129
      5.5.1 ROS網絡通信 130
      5.5.2 機器人程序的遠程開發 130
      5.6 本章小結 131
      第6章 機器人底盤
      6.1 底盤運動學模型 132
      6.1.1 兩輪差速模型 132
      6.1.2 四輪差速模型 136
      6.1.3 阿克曼模型 140
      6.1.4 全向模型 144
      6.1.5 其他模型 148
      6.2 底盤性能指標 148
      6.2.1 載重能力 148
      6.2.2 動力性能 148
      6.2.3 控制精度 150
      6.2.4 里程計精度 150
      6.3 典型機器人底盤搭建 151
      6.3.1 底盤運動學模型選擇 152
      6.3.2 傳感器選擇 152
      6.3.3 主機選擇 153
      6.4 本章小結 155
      SLAM篇
      第7章 SLAM中的數學基礎
      7.1 SLAM發展簡史 158
      7.1.1 數據關聯、收斂和一致性 160
      7.1.2 SLAM的基本理論 161
      7.2 SLAM中的概率理論 163
      7.2.1 狀態估計問題 164
      7.2.2 概率運動模型 166
      7.2.3 概率觀測模型 171
      7.2.4 概率圖模型 173
      7.3 估計理論 182
      7.3.1 估計量的性質 182
      7.3.2 估計量的構建 183
      7.3.3 各估計量對比 190
      7.4 基于貝葉斯網絡的狀態估計 193
      7.4.1 貝葉斯估計 194
      7.4.2 參數化實現 196
      7.4.3 非參數化實現 202
      7.5 基于因子圖的狀態估計 206
      7.5.1 非線性最小二乘估計 206
      7.5.2 直接求解方法 206
      7.5.3 優化方法 208
      7.5.4 各優化方法對比 218
      7.5.5 常用優化工具 219
      7.6 典型SLAM算法 221
      7.7 本章小結 221
      第8章 激光SLAM系統
      8.1 Gmapping算法 223
      8.1.1 原理分析 223
      8.1.2 源碼解讀 228
      8.1.3 安裝與運行 233
      8.2 Cartographer算法 240
      8.2.1 原理分析 240
      8.2.2 源碼解讀 247
      8.2.3 安裝與運行 258
      8.3 LOAM算法 266
      8.3.1 原理分析 266
      8.3.2 源碼解讀 267
      8.3.3 安裝與運行 270
      8.4 本章小結 270
      第9章 視覺SLAM系統
      9.1 ORB-SLAM2算法 274
      9.1.1 原理分析 274
      9.1.2 源碼解讀 310
      9.1.3 安裝與運行 319
      9.1.4 拓展 327
      9.2 LSD-SLAM算法 329
      9.2.1 原理分析 329
      9.2.2 源碼解讀 334
      9.2.3 安裝與運行 337
      9.3 SVO算法 338
      9.3.1 原理分析 338
      9.3.2 源碼解讀 341
      9.4 本章小結 341
      第10章 其他SLAM系統
      10.1 RTABMAP算法 344
      10.1.1 原理分析 344
      10.1.2 源碼解讀 351
      10.1.3 安裝與運行 357
      10.2 VINS算法 362
      10.2.1 原理分析 364
      10.2.2 源碼解讀 373
      10.2.3 安裝與運行 376
      10.3 機器學習與SLAM 379
      10.3.1 機器學習 379
      10.3.2 CNN-SLAM算法 411
      10.3.3 DeepVO算法 413
      10.4 本章小結 414
      自主導航篇
      第11章 自主導航中的數學基礎
      11.1 自主導航 418
      11.2 環境感知 420
      11.2.1 實時定位 420
      11.2.2 環境建模 421
      11.2.3 語義理解 422
      11.3 路徑規劃 422
      11.3.1 常見的路徑規劃算法 423
      11.3.2 帶約束的路徑規劃算法 430
      11.3.3 覆蓋的路徑規劃算法 434
      11.4 運動控制 435
      11.4.1 基于PID的運動控制 437
      11.4.2 基于MPC的運動控制 438
      11.4.3 基于強化學習的運動控制 441
      11.5 強化學習與自主導航 442
      11.5.1 強化學習 443
      11.5.2 基于強化學習的自主導航 465
      11.6 本章小結 467
      第12章 典型自主導航系統
      12.1 ros-navigation導航系統 470
      12.1.1 原理分析 470
      12.1.2 源碼解讀 475
      12.1.3 安裝與運行 479
      12.1.4 路徑規劃改進 492
      12.1.5 環境探索 496
      12.2 riskrrt導航系統 498
      12.3 autoware導航系統 499
      12.4 導航系統面臨的一些挑戰 500
      12.5 本章小結 500
      第13章 機器人SLAM導航綜合實戰
      13.1 運行機器人上的傳感器 502
      13.1.1 運行底盤的ROS驅動 503
      13.1.2 運行激光雷達的ROS驅動 503
      13.1.3 運行IMU的ROS驅動 504
      13.1.4 運行相機的ROS驅動 504
      13.1.5 運行底盤的urdf模型 505
      13.1.6 傳感器一鍵啟動 506
      13.2 運行SLAM建圖功能 506
      13.2.1 運行激光SLAM建圖功能 507
      13.2.2 運行視覺SLAM建圖功能 508
      13.2.3 運行激光與視覺聯合建圖功能 508
      13.3 運行自主導航 509
      13.4 基于自主導航的應用 510
      13.5 本章小結 511
      附錄A Linux與SLAM性能優化的探討
      附錄B 習題
      posted @ 2019-02-19 03:16  小虎哥哥愛學習  閱讀(12571)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欲色欲色天天天www| 正阳县| 国产成熟女人性满足视频| 天天躁日日躁狠狠躁中文字幕| www国产精品内射熟女| 日本高清在线播放一区二区三区| 久草热久草热线频97精品 | 九九热在线免费视频观看| 无人去码一码二码三码区| 一本大道无码av天堂| 午夜DY888国产精品影院| 亚洲精品乱码久久观看网| 男女男免费视频网站国产| 中文字幕理伦午夜福利片| 欧洲无码一区二区三区在线观看| 国产三级精品片| 美女自卫慰黄网站| 亚洲一区二区约美女探花| 国产精品中文字幕日韩| 狠狠躁夜夜躁人人爽天天69| 欧美日韩亚洲国产| 图片区 小说区 区 亚洲五月| 日韩精品亚洲专在线电影| 欧美人伦禁忌dvd放荡欲情| 国产精品一区在线蜜臀 | 2021久久精品国产99国产精品| 成人午夜国产内射主播| 新邵县| 67194熟妇在线观看线路| 中文字幕无码乱码人妻系列蜜桃| 中文字幕亚洲人妻系列| 国产精品老熟女露脸视频| 一区二区免费高清观看国产丝瓜| 桃花岛亚洲成在人线AV| 衡阳县| 在线中文字幕国产一区| 最新精品露脸国产在线| 无码伊人66久久大杳蕉网站谷歌| 国产精品不卡一区二区久久| 国产伦精区二区三区视频| www免费视频com|