ROS機器人操做系統在機器人應用領域很流行,依託代碼開源和模塊間協做等特性,給機器人開發者帶來了很大的方便。咱們的機器人「miiboo」中的大部分程序也採用ROS進行開發,因此本文就重點對ROS基礎知識進行詳細的講解,給不熟悉ROS的朋友起到一個拋磚引玉的做用。本章節主要內容:html
1.ROS是什麼python
2.ROS系統總體架構nginx
3.在ubuntu16.04中安裝ROS kineticdjango
4.如何編寫ROS的第一個程序hello_worldubuntu
5.編寫簡單的消息發佈器和訂閱器centos
7.理解tf的原理數據結構
9.熟練使用rvizdom
(1)機器人中的座標系
一個機器人系統中一般會有多個三維參考座標系,並且這些座標系之間的相對關係隨時間推移會變化。這裏舉一個實際的機器人應用場景例子,來講明這種關係和變化:
全局世界座標系:一般爲激光slam構建出來的柵格地圖的座標系map。
機器人底盤座標系:一般爲機器人底盤的座標系base_footprint。
機器人上各部件本身的座標系:好比激光雷達、imu等傳感器本身的座標系base_laser_link、imu_link。
這些座標系之間的關係有些是靜態的、有些是動態的。好比當機器人底盤移動的過程當中,機器人底盤與世界的相對關係map->base_footprint就會隨之變化;而安裝在機器人底盤上的激光雷達、imu這些傳感器與機器人底盤的相對關係base_footprint->base_laser_link、base_footprint->imu_link就不會隨之變化。其實,這個很好理解。
如圖25中,map->base_footprint會隨着底盤的移動而變化,即動態座標系關係。
(圖25)動態座標系關係
如圖26中,base_footprint->base_laser_link、base_footprint->imu_link不會隨着底盤的移動而變化,即靜態座標系關係。
(圖26)靜態座標系關係
(2)機器人座標關係工具tf
因爲座標及座標轉換在機器人系統中很是重要,特別是機器人在環境地圖中自主定位和導航、機械手臂對物體進行復雜的抓取任務,都須要精確的知道機器人各部件之間的相對位置及機器人在工做環境中的相對位置。所以ROS專門提供了tf這個工具用於簡化這些工做。
tf可讓用戶隨時跟蹤多個座標系的關係,機器人各個座標系之間的關係是經過一種樹型數據結構來存儲和維護的,即tf tree。藉助這個tf tree,用戶能夠在任意時間將點、向量等數據的座標在兩個座標系中完成座標值變換。
如圖27,爲一個自主導航機器人的tf tree結構圖。圓圈中是座標系的名稱,箭頭表示兩個座標系之間的關係,箭頭上會顯示該座標關係的發佈者、發佈速率、時間戳等信息。
(圖27)一個自主導航機器人的tf tree結構圖
(3)使用tf
使用tf分爲兩個部分,廣播tf變換、監聽tf變換。
廣播tf變換:
ROS網絡中的節點能夠向系統廣播座標系之間的變換關係。好比負責機器人全局定位的amcl節點會廣播map->odom的變換關係,負責機器人局部定位的輪式里程計計算節點會廣播odom->base_footprint的變換關係,機器人底盤上安裝的傳感器與底盤的變換關係能夠經過urdf機器人模型進行廣播(urdf將在後面實際機器人中進行講解)。每一個節點的廣播均可以直接將變換關係插入tf tree,不須要進行同步。經過多個節點廣播座標變換的關係,即可以實現tf tree的動態維護。
關於廣播tf變換的具體程序實現,請直接參考ROS官方教程http://wiki.ros.org/tf/Tutorials
監聽tf變換:
ROS網絡中的節點能夠從系統監聽座標系之間的變換關係,並從中查詢所須要的座標變換。好比要知道機器人底盤當前在柵格地圖座標系下的什麼地方,就能夠經過監聽map->base_footprint來實現,好比要知道機器人底盤座標系上的某個座標點在世界座標系下的座標是多少,就能夠經過監聽map->base_footprint,並經過map->base_footprint這個變換查詢出變換後的座標點取值。
關於監聽tf變換的具體程序實現,請直接參考ROS官方教程http://wiki.ros.org/tf/Tutorials
------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技術交流羣,一塊兒討論學習^_^
關於咱們:
視頻教程: