運動底盤是移動機器人的重要組成部分,不像激光雷達、IMU、麥克風、音響、攝像頭這些通用部件能夠直接買到,很難買到通用的底盤。一方面是由於底盤的尺寸結構和參數是要與具體機器人匹配的;另外一方面是由於底盤包含軟硬件整套解決方案,是不少機器人公司的核心技術,通常不會隨便公開。出於強烈的求知慾與學習熱情,我想本身DIY一整套兩輪差分底盤,而且將完整的設計過程公開出去供你們學習。說幹就幹,本章節主要內容:html
1.stm32主控硬件設計python
2.stm32主控軟件設計nginx
3.底盤通訊協議算法
4.底盤ROS驅動開發django
5.底盤PID控制參數整定ubuntu
6.底盤裏程計標centos
機器人底盤運行的精度是衡量底盤的重要指標。底盤精度受里程計的走直線偏差和轉角偏差影響。所以,須要對里程計的走直線和轉角進行標定,儘可能減少偏差。miiboo機器人底盤的ROS驅動中已經寫好了相應的標定程序,跟里程計標定有關的文件主要有:網絡
.../miiboo_bringup/launch/check_linear.launch爲里程計走直線標定啓動文件架構
.../miiboo_bringup/launch/check_angular.launch爲里程計轉角標定啓動文件ide
.../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基礎
第2章:ROS入門
第3章:感知與大腦
第4章:差分底盤設計
第5章:樹莓派3開發環境搭建
第6章:SLAM建圖與自主避障導航
2.google-cartographer機器人SLAM建圖
第7章:語音交互與天然語言處理
第8章:高階拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章將持續更新,敬請關注-----------------
若是你們對博文的相關類容感興趣,或有什麼技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流羣,一塊兒討論學習^_^
關於咱們:
視頻教程: