SLAM+語音機器人DIY系列:(四)差分底盤設計——6.底盤里程計標


摘要                                            

運動底盤是移動機器人的重要組成部分,不像激光雷達、IMU、麥克風、音響、攝像頭這些通用部件可以直接買到,很難買到通用的底盤。一方面是因為底盤的尺寸結構和參數是要與具體機器人匹配的;另一方面是因為底盤包含軟硬件整套解決方案,是很多機器人公司的核心技術,一般不會隨便公開。出於強烈的求知欲與學習熱情,我想自己DIY一整套兩輪差分底盤,並且將完整的設計過程公開出去供大家學習。說干就干,本章節主要內容:

1.stm32主控硬件設計

2.stm32主控軟件設計

3.底盤通信協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤里程計標



6.底盤里程計標                         

機器人底盤運行的精度是衡量底盤的重要指標。底盤精度受里程計的走直線誤差和轉角誤差影響。因此,需要對里程計的走直線和轉角進行標定,盡量減小誤差。miiboo機器人底盤的ROS驅動中已經寫好了相應的標定程序,跟里程計標定有關的文件主要有:

.../miiboo_bringup/launch/check_linear.launch為里程計走直線標定啟動文件

.../miiboo_bringup/launch/check_angular.launch為里程計轉角標定啟動文件

.../miiboo_bringup/launch/minimal.launch為設置標定參數及底盤控制啟動文件

下面是標定步驟過程。

第一步:

打開終端,給標定腳本賦予可執行權限

cd miiboo_bringup/scripts/
sudo chmod +x ./*

第二步:

連接好底盤DATA-uart2串口,啟動底盤

roslaunch miiboo_bringup minimal.launch

第三步:

設定前進1米的目標,對走直線進行標定

roslaunch miiboo_bringup check_linear.launch

測量底盤停止時實際走的直線距離M,按下面的規則調整里程計直線參數speed_ratio

如果M > 1米,增大speed_ratio

如果M < 1米,減小speed_ratio

里程計的參數存放在miiboo_bringup/launch/minimal.launch文件中,如圖53所示。

(圖53)里程計待標定參數

修改好參數后,需要保存,然后重新啟動一下底盤節點,這樣參數才能生效。

roslaunch miiboo_bringup minimal.launch

重復第三步的操作,直到走直線的誤差達到我們能接受的范圍(比如1%的誤差),則進入下一步。

第四步:

設定旋轉360度的目標,對轉角進行標定

roslaunch miiboo_bringup check_angular.launch

測量底盤停止旋轉時實際轉過的角度A,按下面的規則調整里程計轉角參數wheel_distance

如果A > 360度,減小wheel_distance

如果A < 360度,增大wheel_distance

上面已經講過,里程計的參數存放在miiboo_bringup/launch/minimal.launch文件中,如圖53所示。

修改好參數后,需要保存,然后重新啟動一下底盤節點,這樣參數才能生效。

roslaunch miiboo_bringup minimal.launch

重復第四步的操作,直到走轉角的誤差達到我們能接受的范圍(比如1%的誤差),則標定完成。

當然,有興趣的朋友可以閱讀miiboo_bringup/scripts/中的標定腳本源碼,結合航跡推演算法,理解里程計標定的整個原理。其實wheel_distance這個參數是編碼脈沖值與電機輪胎位移值的一個比例系數,簡單點說就是電機轉過一個編碼脈沖,這個時候電機輪胎走過多少距離;wheel_distance這個參數是左右兩個輪子的間距。有了這個認識后,我們可以在這兩個參數的理論值附近對參數進行微調,標定起來會更快。

后記                                            

------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)

----------------文章將持續更新,敬請關注-----------------

 

如果大家對博文的相關類容感興趣,或有什么技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流群,一起討論學習^_^

關於我們:

視頻教程:

 

https://www.bilibili.com/video/av61448040


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM