在ros下實現節點編程,實現一個節點發送消息,另一個節點接收。實現方式有多種,可以直接在命令窗口創建工作空間包以及節點,用catkin_make進行編譯,添加.bash路徑,然后執行rosrun package node_name 。這種方式對於一個ROS初學者來說容易出錯,而且很多網上的教程中出現了不同的問題,比如需要修改CMakeLists.txt和package.xml中的內容,相當繁瑣。為了避免不必要的麻煩,初學者可以應用IDE進行節點編程,達到一定的水平后,再用上面的方式去實現。下面就介紹一下roboware 軟件實現helloword的發送和接收。
這個例子是在ROS能正常運行的情況下進行的,所以為了不必要的麻煩,最好先跑跑小烏龜的例子。
1.下載安裝roboware.
去官網下載地址:http://www.roboware.me/#/home
選擇Studio v1.2.64bit deb 下載 。如果是32位機選擇v.2.0 32bit deb版本。
傻瓜式安裝,一直下一步。安裝好以后如下所示:
2.創建工作區
打開軟件后,選擇新建工作區,這里要選擇一個文件夾,這里最后選擇主文件夾。然后在名稱:robot
robot 即為新建的工作空間名稱。建好之后后出現一個src文件夾,和一個CMakeLists.txt文件。
3.新建ROS包
右鍵src文件夾選擇“新建ROS包”在名稱欄:test
建好之后會出現一個test文件夾,下有一個SRC文件夾。
4.新建ROS節點
右鍵test文件夾,選擇新建C++ROS節點。在名稱:test
建好之后文件內有兩個.cpp文件,一個是test_pub.cpp ,用於發送helloworld 信息,稱為發送者。 另一個是test_sub.cpp用於接收信息,稱為訂閱者。
5.點擊左上角的錘子編譯文件,ROS節點界面會出現test節點。看到100%說明編譯成功。
以上就完成了整個工程的編譯,這部分內容一般不會出現什么問題,接下來就要執行了,問題就來了。
6.打開ROS master
roscore
7.rosrun執行節點
rosrun test test_pub
分析其原因可能是因為在安裝ROS時已經創建了工作空間,新建的工作空間和之前的不同,所以需要將新建的工作空間的路徑添加到bashrc文件中。
於是執行下面的步驟:新開一個終端輸入下面的命令打開文件bashrc
gedit .bashrc
在新建工作空間的devel 文件下找到setup.bash文件,查看其路徑將其路徑添加到bashrc文件的末尾,具體如下:
然后關閉所有終端,重新打開終端執行
roscore
再打開一個終端:
rosrun test test_pub
出現:
這里實現了發送
8.執行接收節點
rosrun test test_sub
出現same name的問題。
這是我們在創建節點時沒有修改cpp文件中初始化文件名導致的。
將名稱改為test_pub和test_sub
保存,重新編譯。然后將所以終端全部關閉,重新執行打開master和發送、接收
可以實現接收了。