要求已經在Linux系統中安裝一個學習用的ros軟件包例子:
sudo apt-get install ros-indigo-ros-tutorials
ROS圖形概念概述
- nodes:節點,一個節點即為一個可執行文件,可以通過ROS和其他節點進行通信;
- messages:消息,當訂閱或者發布一個topic時使用的數據類型;
- topics:話題,節點可以發布信息到topics或者從topics那里訂閱信息;
- master:節點管理器,ROS的name service,提供服務,例如讓不同的節點可以找到彼此;
- rosout:等價於ROS中的stdout/stderr;
- roscore:master+rosout+parameter service(參數服務器)。
ROS客戶端庫函數允許使用不同的編程語言進行編程通信:
- rospy:Python client library
- roscpp:C++ client library
[1]roscore 在運行所有ROS程序前首先要運行的命令
//打開一個新終端
roscore &
[2]rosnode 顯示當前運行的ROS節點信息,其中rosnode list
命令列出了正在運行的節點名稱。
//打開一個人新終端
$ rosnode list
/rosout
系統中只有一個節點rosout在運行,它將一直運行並收集和記錄節點的調試輸出。
[3]rosnode info
返回一個特定節點的節點信息,事實上由它發布 /rosout_agg。
rosnode info /rosout
[4]rosrun命令允許你直接通過軟件包名稱運行軟件包當中的節點(不需要知道軟件包的所在路徑,但必須是在ROS的搜索目錄范圍之內)。
使用方法:
rosrun [package_name] [node_name]
我們現在運行軟件包turtlesim中的turtlesim_node節點:
rosrun turtlesim turtlesim_node
檢驗:在一個新窗口中:
$ rosnode list /rosout /turtlesim
[5]在命令行中重新分配名字
$ rosrun turtlesim turtlesim_node __name:=my_turtlesim $ rosnode list /my_turtlesim /rosout
[6]命令rosnode ping
:
$ rosnode ping /my_turtlesim rosnode: node is [/my_turtlesim] pinging /my_turtlesim with a timeout of 3.0s xmlrpc reply from http://ubuntu:33201/ time=0.409842ms xmlrpc reply from http://ubuntu:33201/ time=1.335144ms xmlrpc reply from http://ubuntu:33201/ time=1.242876ms xmlrpc reply from http://ubuntu:33201/ time=1.311064ms xmlrpc reply from http://ubuntu:33201/ time=1.254082ms
總結
- roscore=ros+core,master(為ROS提供名稱服務)+rosout(stdout/stderr)+parameter server。所以在使用ROS的時候的第一件事就是運行roscore來啟動這些服務;
- rosnode=ros+node,ROS tool to get information about a node;
- rosrun=ros+run,runs a node from a given package。