1.1小海龜仿真
ROS的核心概念不少,有節點、話題、消息、服務等,在實際機器人運行過程中,這些概念是如何體現的呢?
我們先來運行ROS系統一個經典的例程——小海龜。
請大家按照以下步驟進行操作。
1.首先,打開終端;
2.輸入以下命令行,啟動ROS Master:
$ roscore
3.啟動成功后,打開一個新終端,輸入以下命令行,啟動小海龜仿真器,啟動成功后,就會出現如圖1-1所示的小海龜仿真器界面:
$ rosrun turtlesim turtlesim_node
4.再打開一個新的終端,輸入以下命令行,啟動海龜控制節點,大家可以通過鍵盤上上下左右鍵來控制小海龜運動:
$ rosrun turtlesim turtle_teleop_key
注意:在控制海龜運動的過程中一定要保證turtle_teleop_key節點終端在界面最前端的,如果其他終端在最前面就沒有辦法被終端讀取到數據的。
小海龜功能是跑起來了,那這個例程是如何基于ROS的核心概念實現的呢?
接下來我們就分析一下例程背后的節點關系。
圖1-1 小海龜仿真器界面
圖1-2 啟動海龜仿真器節點
圖1-3 啟動海龜控制節點
這里我們將用到ROS中一個重要的可視化調試工具——rosgraph,用來顯示ROS運行中計算圖,我們可以從上帝視角看到所有節點的運行關系。
圖1-4 使用rqt_graph可視化工具查看系統中運行的計算圖
接著上一個小海龜的例程,我們再來打開一個終端,輸入以下命令行,啟動rosgraph:
$ rqt_graph
啟動完成后,即可看到如圖1-4所示的計算圖,這個界面會自動的監控當前運行的整個ROS系統,并且把里面的節點和節點間的關系動態的顯示出來,其中橢圓表示節點,中間的箭頭表示節點間的關系,箭頭上的內容表示話題。
在這個例程中,我們分別啟動了兩個節點,一個是海龜仿真器,我們可以把它當成是一個虛擬的機器人,另外一個是鍵盤控制,用來控制機器人前后左右運動,兩個節點在節點管理器的幫助下建立了數據通信,完成速度控制指令的傳輸。
1.2移動機器人運動控制
通過這個例程,我們需要理解節點在ROS中用來實現某些具體的功能,比如機器人的驅動、運動指令的發送等,節點之間可以通過話題將數據發送或接收。
小海龜畢竟是一個仿真的機器人,在實物機器人中是不是也類似呢,我們再來試一試。
接下來,我們來使用以下兩句命令行啟動LIMO機器人,并啟動鍵盤控制節點,類似控制小海龜前后左右運動一樣,我們也可以控制機器人運動。
$ roslaunch limo_base limo_base.launch $ roslaunch limo_bringup limo_teletop_keyboard.launch
再打開rosgraph工具看一下節點關系,我們可以直觀的發現,此時系統中運行了三個節點,如圖1-5所示。
圖1-5 使用rqt_graph可視化工具查看節點關系
第一個是和控制海龜運動相同的鍵盤控制節點teleop_keybord,用來讀取鍵盤的輸入鍵值,并封裝成cmd_vel這個速度話題發布出去。
第二個節點是類似小海龜仿真器一樣,用來驅動LIMO機器人的底盤控制節點limo_base_node,它會訂閱速度指令,當收到數據后,就會驅動機器人發生運動了。
從這張圖中,我們可以清晰的看到這兩個節點和他們之間的關系,更多節點也是類似,如果未來使用過程中某一環的數據沒收到,我們就可以快速定位原因了。
teleop_keybord:讀取鍵盤動作,發布速度控制指令
limo_base_node:機器人底盤控制節點,包含PID算法控制電機運動、訂閱/cmd_vel話題
以上案例實現的功能相對簡單,在一個實現眾多應用功能的復雜機器人系統中,節點和話題的數量都會很多,類似如圖1-6所示這樣,除了底層嵌入式運動控制器中需要實現的功能外,ROS環境下會通過一系列節點分別完成雷達、相機這些傳感器的驅動,發布數據話題后,上層的導航、建圖、圖像處理節點來訂閱并進行相應的算法處理,再傳輸到監控的計算機,給可視化節點做顯示。每個節點各司其職,在ROS Master這個節點管理器的統一協調下,有條不紊的完成各項任務。
整個ROS運行中的節點就像一個企業中不同部門的員工,每個人都有自己明確的工作,大家共同在CEO的組織下積少成多,合作完成一項非常復雜的任務。當然,每個人都不能掉隊,一旦掉隊就可能會影響最終任務的完成。
圖1-6 移動機器人運行結構分析
審核編輯:劉清
-
仿真器
+關注
關注
14文章
1020瀏覽量
84183 -
移動機器人
+關注
關注
2文章
778瀏覽量
33753 -
ROS
+關注
關注
1文章
281瀏覽量
17255
原文標題:【移動機器人原理與應用】3-移動機器人的運行架構
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論