理解ROS节点---ROS学习第4篇
文章目錄
- 1.圖概念速覽
- 2.節(jié)點
- 3.客戶端庫
- 4.roscore
- 5.使用rosnode
- 6.使用rosrun
1.圖概念速覽
計算圖(Computation Graph)是一個由ROS進程組成的點對點網絡,它們能夠共同處理數據。ROS的基本計算圖概念有節(jié)點(Nodes)、主節(jié)點(Master)、參數服務器(Parameter Server)、消息(Messages)、服務(Services)、話題(Topics)和袋(Bages),它們都以不同的方式向圖(Graph)提供數據。
●節(jié)點:節(jié)點是一個可執(zhí)行文件,它可以通過ROS來與其他節(jié)點進行通信
●消息:訂閱或發(fā)布話題時所使用的ROS數據類型。
●話題:節(jié)點可以將消息發(fā)布到話題,或通過訂閱話題來接收消息。
●主節(jié)點:ROS的命名服務,例如幫助節(jié)點發(fā)現彼此。
●rosout:在ROS中相當于stdout/stderr(標準輸出/標準錯誤)。
●roscore:主節(jié)點+rosout+參數服務器。
2.節(jié)點
節(jié)點實際上只不過是ROS軟件包中的一個可執(zhí)行。ROS節(jié)點使用ROS客戶端庫與其他節(jié)點通信。節(jié)點可以發(fā)布或訂閱話題,也可以提供或使用服務。
3.客戶端庫
ROS客戶端庫可以讓用不同編程語言編寫的節(jié)點進行相互通信:
●rospy=Python客戶端庫
●roscpp=C++客戶端庫
4.roscore
roscore是你在運行所有ROS程序前首先要運行的命令
如果roscore運行后沒有初始化,很有可能是網絡配置的問題。參見網絡配置 - 單機器配置。添加鏈接描述
如果roscore不能初始化并提示缺少權限,可能是因為~/.ros目錄屬于root用戶(只有root用戶才能訪問),可以用以下命令遞歸地更改該目錄的所有權:
sudo chown -R <your_username> ~/.ros
5.使用rosnode
rosnode list命令活動的ROS節(jié)點
kandi@ubuntu:~$ rosnode list
/rosout
這表示當前只有rosout這個節(jié)點在運行。因為這個節(jié)點用于收集和記錄節(jié)點的調試輸出,所以它總是在運行的。而rosnode info命令返回的是某個節(jié)點的信息
這里可以看到rosout節(jié)點它發(fā)布了一個/rosout_agg話題。如果要看看其他節(jié)點,需要使用rosrun調出其他節(jié)點。
6.使用rosrun
rosrun可以讓你用報名執(zhí)行運行軟件包內的節(jié)點,如:
kandi@ubuntu:~$ rosrun turtlesim turtlesim_node
再通過rosnode list查看節(jié)點
kandi@ubuntu:~$ rosnode list
/rosout
/turtlesim
ROS有一個強大的功能,就是你可以通過命令行重新分配名稱,關閉turtlesim窗口以停止節(jié)點(或回到rosrun turtlesim的終端并按Ctrl+C)。現在讓我們重新運行它,但是這一次使用重映射參數來改變節(jié)點名稱:
rosrun turtlesim turtlesim_node __name:=you_turtle
再使用rosnode list查看被修改后的節(jié)點名是否能夠看到
kandi@ubuntu:~$ rosnode list
/rosout
/you_turtle
我們可以看到新的/you_turtle節(jié)點。使用rosnode的另一個指令,ping,來測試它是否正常
kandi@ubuntu:~$ rosnode ping you_turtle
rosnode: node is [/you_turtle]
pinging /you_turtle with a timeout of 3.0s
xmlrpc reply from http://ubuntu:40231/ time=0.559330ms
xmlrpc reply from http://ubuntu:40231/ time=0.422716ms
…
總結
以上是生活随笔為你收集整理的理解ROS节点---ROS学习第4篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rosdep init和rosdep u
- 下一篇: ROS工具篇