摘要
ROS機器人操作系統在機器人應用領域很流行,依托代碼開源和模塊間協作等特性,給機器人開發者帶來了很大的方便。我們的機器人“miiboo”中的大部分程序也采用ROS進行開發,所以本文就重點對ROS基礎知識進行詳細的講解,給不熟悉ROS的朋友起到一個拋磚引玉的作用。本章節主要內容:
9.熟練使用rviz
(1)rviz整體界面
(圖29)rviz整體界面
rviz是ROS自帶的圖形化工具,可以很方便的讓用戶通過圖形界面開發調試ROS。操作界面也十分簡潔,如圖29,界面主要分為上側菜單區、左側顯示內容設置區、中間顯示區、右側顯示視角設置區、下側ROS狀態區。
(2)添加顯示內容
(圖30)設置Global Options
如圖30,啟動rviz界面后,首先要對Global Options進行設置,Global Options里面的參數是一些全局顯示相關的參數。其中的Fixed Frame參數是全局顯示區域依托的坐標系,我們知道機器人中有很多坐標系,坐標系之間有各自的轉換關系,有些是靜態關系,有些是動態關系,不同的Fixed Frame參數有不同的顯示效果,在導航機器人應用中,一般將Fixed Frame參數設置為map,也就是以map坐標系作為全局坐標系。值得注意的是,在機器人的tf tree里面必須要有map坐標系,否則該選項欄會包error。至於Global Options里面的其他參數可以不用管,默認就行了。
(圖31)添加地圖顯示
如圖31,在機器人導航應用中,我們常常需要用rviz觀察機器人建立的地圖,在機器人發布了地圖到主題的情況下,我們就可以通過rviz訂閱地圖相應主題(一般是/map主題)來顯示地圖。訂閱地圖的/map主題方法很簡單,首先點擊rviz界面左下角[add]按鈕,然后在彈出的對話框中選擇[By topic],最后在列出的topic名字中找到我們要訂閱的主題名字/map,最后點擊[OK]就完成了對/map主題的訂閱。訂閱成功后,會在rviz左側欄中看到Map項,並且中間顯示區正常顯示出地圖。
(圖32)添加tf顯示
如圖32,在機器人導航應用中,除了觀察地圖外,我們常常還需要觀察機器人在地圖中的位置以及各個坐標系的關系是否工作正常,這個時候就需要通過rviz來顯示tf。和上面添加顯示主題的方法類似,這里添加TF這個類型主題就可以了。說明一下,添加主題可以按主題類型查找,也可以按主題名稱查找。上面添加地圖主題就是按主題名稱查找的,這里添加tf主題是按主題類型查找的。
(圖33)添加里程計顯示
如圖33,我們可以通過rviz訂閱里程計來觀察機器人的運動軌跡(圖中紅色箭頭連接起來的軌跡)。和上面添加顯示主題的方法類似,這里添加/odom這個主題就可以了。這里特別說明一點,我們需要去掉左側欄中Odometry里面Covariance項后面后面的勾,也就是在Odometry顯示中不啟用Covariance信息。Covariance是描述里程計誤差的協方差矩陣,如果啟用Covariance來描述Odometry將導致顯示效果很難看,所以建議去掉。
(圖34)添加機器人位置粒子濾波點顯示
如圖34,在機器人導航中,通常采用AMCL粒子濾波來實現機器人的全局定位。通過rviz可以顯示全局定位的例子點。和上面添加顯示主題的方法類似,這里添加/particlecloud這個主題就可以了。
(圖35)添加激光雷達顯示
如圖35,機器人SLAM和導航中用到的核心傳感器激光雷達數據,我們可以通過rviz顯示激光雷達數據(圖中紅色點組成的輪廓)。和上面添加顯示主題的方法類似,這里添加/scan這個主題就可以了。
(圖36)添加攝像頭顯示
如圖36,rviz還可以訂閱攝像頭發布的主題,這樣在rviz上就可以實現遠程視頻監控了。和上面添加顯示主題的方法類似,這里添加/usb_cam/image_raw這個主題就可以了。
通過上面的實例,我們已經知道在rviz中訂閱需要顯示的主題了,被訂閱的主題會在rviz左側欄中列出,並且主題的顯示與否是相互獨立的,可以通過勾選的方式決定是否顯現該主題,主題項下拉條目中有很多參數可以設置,這些參數決定顯示的風格等等,可以根據需要進行設置。其他一些不常用的主題訂閱實例沒有給出,有需要可以依葫蘆畫瓢在rviz中進行訂閱顯示就行了。
(3)主界面中常用按鈕
(圖37)rviz顯示配置保存
在上面的添加顯示內容的實例中,我們在rviz中添加了很多主題顯示項,並對各顯示項的參數做了相應的設置。為了下次啟動rviz時,能直接顯示這些內容和風格,我們需要將當前的rviz顯示風格以配置文件的方式保存,下次啟動rviz后只需要載入這個配置文件就能進入相應的顯示風格。很簡單,點擊rviz左上角[file]菜單,在下拉中選擇[Save Config As],在彈出來的對話框中給配置文件取一個名字(我取名為my_cfg1),然后直接Save,my_cfg1.rviz配置文件會被保存到系統中rviz的默認目錄。下次啟動rviz后,通過點擊rviz左上角[file]菜單,在下拉中選擇[Open Config],打開相應的配置文件就行了。如圖37。
(圖38)機器人初始位置設定與導航目標設定
在機器人導航中,當機器人剛啟動的時候,機器人位置往往需要人為給定一個大概的估計位置,這樣有利於AMCL粒子濾波中粒子點的快速收斂。如圖38,點擊[2D Pose Estimate]按鈕,然后在地圖中找到機器人大致的位置后再次點擊鼠標左鍵並保持按下狀態,拖動鼠標來指定機器人的朝向,最后松手就完成對機器人初始位置的設定了。其實就是兩步,先指定機器人的位置,再指定機器人的朝向。我們可以在地圖中指定導航目標點,讓機器人自動導航到我們的指定的位置。通過[2D Nav Goal]按鈕就可以完成。操作步驟和機器人初始位置的設定是類似的,就不累述了。
(圖39)獲取地圖中指定點的坐標值
有時候我們需要知道地圖中某個位置的坐標值,比如我們獲取地圖中各個位置的坐標值並填入巡邏軌跡中,讓機器人按照指定巡邏路線巡邏。通過[Publish Point]按鈕就可以知道地圖中的任意位置的坐標值,點擊[Publish Point]按鈕,然后將鼠標放置到想要獲取坐標值的位置,rviz底部顯示欄中就會出現相應的坐標值。
(4)rviz啟動方法
首先需要啟動roscore,然后啟動rviz,命令如下:
#打開終端,輸入下面命令
roscore
#再打開一個終端,輸入下面命令
rviz
后記
------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技術交流群,一起討論學習^_^
關於我們:
視頻教程: